Skip to content

Instantly share code, notes, and snippets.

@misaka00251
Created December 9, 2017 13:08
Show Gist options
  • Save misaka00251/91dba86cca6c99d85ec178daa487db40 to your computer and use it in GitHub Desktop.
Save misaka00251/91dba86cca6c99d85ec178daa487db40 to your computer and use it in GitHub Desktop.
Full.txt
This file has been truncated, but you can view the full file.
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'-u', u'PRIVATE', u'-p', u'PRIVATE', u'-f', u'137+251', u'https://www.youtube.com/watch?v=OUdXMoY6fLY', u'--dump-pages']
[debug] Encodings: locale UTF-8, fs UTF-8, out None, pref UTF-8
[debug] youtube-dl version 2017.12.02
[debug] Python version 2.6.6 - Linux-2.6.32-642.el6.x86_64-x86_64-with-centos-6.9-Final
[debug] exe versions: ffmpeg 2.6.8, ffprobe 2.6.8
[debug] Proxy map: {}
[youtube] Downloading login page
[youtube] Dumping request to https://accounts.google.com/ServiceLogin?disable_polymer=true
PCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iZW4iIGRpcj0ibHRyIj48aGVhZD48YmFzZSBocmVmPSJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vIj48c2NyaXB0IGRhdGEtaWQ9Il9nZCIgbm9uY2U9Ik9rdlJGWkJuTnNhZUtTeDgzbVcwa3pCRzVKNCI+d2luZG93LldJWl9nbG9iYWxfZGF0YSA9IHsiT2V3Q0FkIjoiJS5ALlwieHNyZlwiLG51bGwsW1wiXCJdXG4sXCJBRm9hZ1VWR0htOE1zakZubTJ3Wjg3LWRIYjB2aVlyTzB3OjE1MTI4MjQ3NjE2MjNcIl1cbiIsIlF6eGl4YyI6IlMxMjc2MDgxOTQ5OjE1MTI4MjQ3NjE2MDkwMDAiLCJ0aHlraGQiOiJBSG1vN2ZZVVU5MXUzS0ZIUmxXanNDMUc4VTNEQVRvWmxlNlJuXzJkSk9hckRMN2FWZ1M3LTRJcmtTVUpiaXhvQklaOGRNelZkMEkxUzRfZmo5MkhheEVpLW4zVThfLV83STdLIiwidzJidEFlIjoiJS5ALm51bGwsbnVsbCxcIlwiLGZhbHNlLG51bGwsbnVsbCx0cnVlXVxuIn07PC9zY3JpcHQ+PG1ldGEgY2hhcnNldD0idXRmLTgiLz48bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiLz48bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii8vd3d3Lmdvb2dsZS5jb20vZmF2aWNvbi5pY28iLz48bm9zY3JpcHQ+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPWh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9TZXJ2aWNlTG9naW4/Y29udGludWU9aHR0cHMlM0ElMkYlMkZhY2NvdW50cy5nb29nbGUuY29tJTJGTWFuYWdlQWNjb3VudCZhbXA7cmlwPTEmYW1wO25vamF2YXNjcmlwdD0xIj48c3R5bGUgbm9uY2U9Ik9rdlJGWkJuTnNhZUtTeDgzbVcwa3pCRzVKNCI+Ym9keXtvcGFjaXR5OjA7fTwvc3R5bGU+PC9ub3NjcmlwdD48dGl0bGU+U2lnbiBpbiAtIEdvb2dsZSBBY2NvdW50czwvdGl0bGU+PG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+PHNjcmlwdCBub25jZT0iT2t2UkZaQm5Oc2FlS1N4ODNtVzBrekJHNUo0Ij4oZnVuY3Rpb24oSCkge0guY2xhc3NOYW1lPSJDTWdUWGMiO30pKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7PC9zY3JpcHQ+PHNjcmlwdCBub25jZT0iT2t2UkZaQm5Oc2FlS1N4ODNtVzBrekJHNUo0Ij4vKiBBbnRpLXNwYW0uIFdhbnQgdG8gc2F5IGhlbGxvPyBDb250YWN0IChiYXNlNjQpIFltOTBaM1ZoY21RdFkyOXVkR0ZqZEVCbmIyOW5iR1V1WTI5dCAqL0Z1bmN0aW9uKCd2YXIgej1mdW5jdGlvbih4LG4sUil7aWYoIm9iamVjdCI9PShuPXR5cGVvZiB4LG4pKWlmKHgpe2lmKHggaW5zdGFuY2VvZiBBcnJheSlyZXR1cm4iYXJyYXkiO2lmKHggaW5zdGFuY2VvZiBPYmplY3QpcmV0dXJuIG47aWYoIltvYmplY3QgV2luZG93XSI9PShSPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4KSxSKSlyZXR1cm4ib2JqZWN0IjtpZigiW29iamVjdCBBcnJheV0iPT1SfHwibnVtYmVyIj09dHlwZW9mIHgubGVuZ3RoJiYidW5kZWZpbmVkIiE9dHlwZW9mIHguc3BsaWNlJiYidW5kZWZpbmVkIiE9dHlwZW9mIHgucHJvcGVydHlJc0VudW1lcmFibGUmJiF4LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJzcGxpY2UiKSlyZXR1cm4iYXJyYXkiO2lmKCJbb2JqZWN0IEZ1bmN0aW9uXSI9PVJ8fCJ1bmRlZmluZWQiIT10eXBlb2YgeC5jYWxsJiYidW5kZWZpbmVkIiE9dHlwZW9mIHgucHJvcGVydHlJc0VudW1lcmFibGUmJiF4LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJjYWxsIikpcmV0dXJuImZ1bmN0aW9uIn1lbHNlIHJldHVybiJudWxsIjtlbHNlIGlmKCJmdW5jdGlvbiI9PW4mJiJ1bmRlZmluZWQiPT10eXBlb2YgeC5jYWxsKXJldHVybiJvYmplY3QiO3JldHVybiBufSxCPWZ1bmN0aW9uKHgsbixSLGMpe3RyeXtmb3IoYz0wOzc5NjY5Mzg3NDg4IT1jOyl4Kz0objw8NF5uPj4+NSkrbl5jK1JbYyYzXSxjKz0yNDg5NjY4MzU5LG4rPSh4PDw0Xng+Pj41KSt4XmMrUltjPj4+MTEmM107cmV0dXJuW3g+Pj4yNCx4Pj4xNiYyNTUseD4+OCYyNTUseCYyNTUsbj4+PjI0LG4+PjE2JjI1NSxuPj44JjI1NSxuJjI1NV19Y2F0Y2goUyl7dGhyb3cgUzt9fSx0PWZ1bmN0aW9uKHgsbixSLGMpeyhSPWYoeCksYz1mKHgpLGUpKHgsYyxXKHguUihSKSxuKSl9LE09ZnVuY3Rpb24oeCxuLFIsYyxTLEEpe3JldHVybiBmdW5jdGlvbigpe3ZhciBQPWMmMSxZPVs2LG4sUix2b2lkIDAsUyxBLGFyZ3VtZW50c107aWYoYyYyKXZhciBEPShPKHgsWSksZykoeCx0cnVlLGZhbHNlLGZhbHNlKTtlbHNlIFAmJnguVC5sZW5ndGg/Tyh4LFkpOlA/KE8oeCxZKSxnKHgsdHJ1ZSxmYWxzZSxmYWxzZSkpOkQ9SSh4LFkpO3JldHVybiBEfX0sST1mdW5jdGlvbih4LG4sUixjLFMpe2lmKDE9PShSPSh4LkY9ZmFsc2UsbilbMF0sUikpeC5HPTI1LHguYShuKTtlbHNlIGlmKDI9PVIpe2M9bltSPW5bMV0sM107dHJ5e3guSj1mYWxzZSxTPXguYShuKX1jYXRjaChBKXtRKHgsQSksUz14Lm99UiYmUihTKSxjLnB1c2goUyl9ZWxzZSBpZigzPT1SKXguYShuKTtlbHNlIGlmKDQ9PVIpeC5hKG4pO2Vsc2UgaWYoNT09Uil4Lko9ZmFsc2Usbj1uWzFdLG4oKTtlbHNlIGlmKDY9PVIpcmV0dXJuIFM9blsyXSx3KHgsMjQwLG5bNl0pLHcoeCwxNjEsUykseC5hKG4pfSxnPWZ1bmN0aW9uKHgsbixSLGMsUyxBKXtpZigwPT14LlQubGVuZ3RoKXJldHVybiBBO2lmKFM9MD09eC5LKXguJD14Lk4oKTtyZXR1cm4oQT11KHgsUixjKSxTKSYmKFI9eC5OKCkteC4kLFI8KG4/MTA6MCl8fDA+PXguRy0tfHx4LmIucHVzaCgyNTQ+PVI/UjoyNTQpKSxBfSxXPWZ1bmN0aW9uKHgsbixSLGMpe2ZvcihjPW4tMSxSPVtdOzA8PWM7Yy0tKVJbbi0xLWNdPXg+PjgqYyYyNTU7cmV0dXJuIFJ9LEc9ZnVuY3Rpb24oeCxuKXt0cnl7VSh0aGlzLHgsbil9Y2F0Y2goUil7USh0aGlzLFIpfX0sTz0oRy5wcm90b3R5cGUubT1mdW5jdGlvbih4LG4sUixjKXtSPShjPShSPShuPXgmNCx4Jj0zLGYpKHRoaXMpLGYpKHRoaXMpLHRoaXMuUihSKSksbiYmKFI9bSgoIiIrUikucmVwbGFjZSgvXFxyXFxuL2csIlxcbiIpKSkseCYmZSh0aGlzLGMsVyhSLmxlbmd0aCwyKSksZSh0aGlzLGMsUil9LGZ1bmN0aW9uKHgsbil7eC5ULnNwbGljZSgwLDAsbil9KSxLPWZ1bmN0aW9uKHgsbixSLGMpe2ZvcihjPShSPWYoeCksMCk7MDxuO24tLSljPWM8PDh8Zih4KTt3KHgsUixjKX0sWD0oRy5wcm90b3R5cGUuUkg9ZnVuY3Rpb24oeCxuLFIpe2lmKDM9PXgubGVuZ3RoKXtmb3IoUj0wOzM+UjtSKyspbltSXSs9eFtSXTtmb3IoeD1bMTMsOCwxMywxMiwxNiw1LDMsKFI9MCwxMCksMTVdOzk+UjtSKyspblszXShuLFIlMyx4W1JdKX19LGZ1bmN0aW9uKHgsbixSKXtyZXR1cm4oKFI9eC5SKDM2KSx4LmYmJlI8eC5mLmxlbmd0aCk/KHcoeCwzNix4LmYubGVuZ3RoKSxxKHgsbikpOncoeCwzNixuKSxUKSh4LFIpfSkscT0oRy5wcm90b3R5cGUuST17fSxmdW5jdGlvbih4LG4peygoeC5BLnB1c2goeC5zLnNsaWNlKCkpLHgucylbMzZdPXZvaWQgMCx3KSh4LDM2LG4pfSksZT0oRy5wcm90b3R5cGUuTj0oRy5wcm90b3R5cGUuVGg9ZnVuY3Rpb24oeCxuLFIsYyxTKXtmb3IoUz1jPTA7Uzx4Lmxlbmd0aDtTKyspYys9eC5jaGFyQ29kZUF0KFMpLGMrPWM8PDEwLGNePWM+PjY7cmV0dXJuIGM9KGMrPWM8PDMsY149Yz4+MTEseD1jKyhjPDwxNSk+Pj4wLG5ldyBOdW1iZXIoeCYoMTw8biktMSkpLGNbMF09KHg+Pj5uKSVSLGN9LHdpbmRvdy5wZXJmb3JtYW5jZXx8e30pLm5vdz9mdW5jdGlvbigpe3JldHVybiB0aGlzLlcrKHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKXwwKX06ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9LGZ1bmN0aW9uKHgsbixSLGMsUyxBKXtmb3IoeD0oKChTPXguUihuKSwxNDU9PW4pPyhuPWZ1bmN0aW9uKHgsbixSLGMpe2lmKFMuaSE9KG49Uy5sZW5ndGgsUj1uLTQ+PjMsUikpe1I9KChjPVsoUy5pPVIsMCksMCwwLEFdLFIpPDwzKS00O3RyeXtTLmg9QihDKFMsUiksQyhTLFIrNCksYyl9Y2F0Y2goayl7dGhyb3cgazt9fVMucHVzaChTLmhbbiY3XV54KX0sQT14LlIoMTUwKSk6bj1mdW5jdGlvbih4KXtTLnB1c2goeCl9LGMpJiZuKGMmMjU1KSxjPTAsUikubGVuZ3RoO2M8eDtjKyspbihSW2NdKX0pLG09KEcucHJvdG90eXBlLlI9ZnVuY3Rpb24oeCxuKXtpZihuPXRoaXMuc1t4XSx2b2lkIDA9PT1uKXRocm93IFYodGhpcywzMCwwLHgpLHRoaXMuSTtyZXR1cm4gbigpfSxmdW5jdGlvbih4LG4sUixjLFMpe2ZvcihjPVI9KG49W10sMCk7Yzx4Lmxlbmd0aDtjKyspUz14LmNoYXJDb2RlQXQoYyksMTI4PlM/bltSKytdPVM6KDIwNDg+Uz9uW1IrK109Uz4+NnwxOTI6KDU1Mjk2PT0oUyY2NDUxMikmJmMrMTx4Lmxlbmd0aCYmNTYzMjA9PSh4LmNoYXJDb2RlQXQoYysxKSY2NDUxMik/KFM9NjU1MzYrKChTJjEwMjMpPDwxMCkrKHguY2hhckNvZGVBdCgrK2MpJjEwMjMpLG5bUisrXT1TPj4xOHwyNDAsbltSKytdPVM+PjEyJjYzfDEyOCk6bltSKytdPVM+PjEyfDIyNCxuW1IrK109Uz4+NiY2M3wxMjgpLG5bUisrXT1TJjYzfDEyOCk7cmV0dXJuIG59KSx3PShHLnByb3RvdHlwZS5hPWZ1bmN0aW9uKHgsbixSLGMsUyl7aWYoND09KG49eFswXSxuKSl7eD14WzFdO3RyeXtmb3IoYz1uPShSPWF0b2IoeCkseD1bXSwwKTtjPFIubGVuZ3RoO2MrKylTPVIuY2hhckNvZGVBdChjKSwyNTU8UyYmKHhbbisrXT1TJjI1NSxTPj49OCkseFtuKytdPVM7dGhpcy5mPXh9Y2F0Y2goQSl7Vih0aGlzLDE3LEEpfVQodGhpcyl9ZWxzZSBpZigxPT1uKVI9eFsyXSxTPXhbMV0sUi5wdXNoKHRoaXMuUigxMDApLmxlbmd0aCx0aGlzLlIoMTQ1KS5sZW5ndGgsdGhpcy5SKDg3KS5sZW5ndGgsdGhpcy5SKDk0KSksdGhpcy5KPVMsdyh0aGlzLDE2MSx4WzNdKSx0aGlzLnNbNTJdJiZYKHRoaXMsdGhpcy5SKDUyKSk7ZWxzZXtpZigyPT1uKXtpZih4PSgoNDwoNDwobj0oMDwoUz0oUj14WzJdLHg9Vyh0aGlzLlIoMTAwKS5sZW5ndGgrMiwyKSx0aGlzLlIoMTA0KSksUykubGVuZ3RoJiZlKHRoaXMsMTAwLFcoUy5sZW5ndGgsMikuY29uY2F0KFMpLDE1KSxTPXRoaXMuUigyMikmNTExLFMtPXRoaXMuUigxMDApLmxlbmd0aCs1LHRoaXMuUigxNDUpKSxuKS5sZW5ndGgmJihTLT1uLmxlbmd0aCszKSwwPFMmJmUodGhpcywxMDAsVyhTLDIpLmNvbmNhdChkKFMpKSwxMCksbikubGVuZ3RoJiZlKHRoaXMsMTAwLFcobi5sZW5ndGgsMikuY29uY2F0KG4pLDE1MyksUz1kKDIpLmNvbmNhdCh0aGlzLlIoMTAwKSksU1sxXT1TWzBdXjMsU1szXT1TWzFdXnhbMF0sUylbNF09U1sxXV54WzFdLHdpbmRvdykuYnRvYSl7Zm9yKGM9MCxuPSIiO2M8Uy5sZW5ndGg7Yys9ODE5MiluKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsUy5zbGljZShjLGMrODE5MikpO3g9eChuKS5yZXBsYWNlKC9cXCsvZywiLSIpLnJlcGxhY2UoL1xcLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX1lbHNlIHg9dm9pZCAwO2lmKHgpeD0iISIreDtlbHNlIGZvcihuPTAseD0iIjtuPFMubGVuZ3RoO24rKyljPVNbbl1bdGhpcy5sXSgxNiksMT09Yy5sZW5ndGgmJihjPSIwIitjKSx4Kz1jO3JldHVybigodGhpcy5SKDEwMCkubGVuZ3RoPVJbMF0sdGhpcykuUigxNDUpLmxlbmd0aD1SWzFdLHRoaXMpLlIoODcpLmxlbmd0aD1SWzJdLFM9eCx3KHRoaXMsOTQsUlszXSksU31pZigzPT1uKVgodGhpcyx4WzFdKTtlbHNlIGlmKDY9PW4pcmV0dXJuIFgodGhpcyx4WzFdKX19LEcucHJvdG90eXBlLmFIPWZ1bmN0aW9uKHgsbixSLGMsUyxBKXtmb3IoQT0oUj1bXSxjPTApO0E8eC5sZW5ndGg7QSsrKWZvcihTPVM8PG58eFtBXSxjKz1uOzc8YzspYy09OCxSLnB1c2goUz4+YyYyNTUpO3JldHVybiBSfSxmdW5jdGlvbih4LG4sUil7aWYoMzY9PW58fDIzOT09bilpZih4LnNbbl0peC5zW25dW3gubF0oUik7ZWxzZSB4LnNbbl09eC5YKFIpO2Vsc2UgaWYoMTAwIT1uJiYxNDUhPW4mJjg3IT1uJiYxMDQhPW58fCF4LnNbbl0peC5zW25dPXgudyhSLHguUik7MTY1PT1uJiYoeC5qPXZvaWQgMCx3KHgsMzYseC5SKDM2KSs0KSl9KSxiPWZhbHNlLGQ9KEcucHJvdG90eXBlLkVkPWZ1bmN0aW9uKHgsbixSLGMpe2Zvcig7Ui0tOykzNiE9UiYmMjM5IT1SJiZuLnNbUl0mJihuLnNbUl09bltjXShuW3hdKFIpLHRoaXMpKTtuW3hdPXRoaXN9LGZ1bmN0aW9uKHgsbil7Zm9yKG49W107eC0tOyluLnB1c2goMjU1Kk1hdGgucmFuZG9tKCl8MCk7cmV0dXJuIG59KSxWPWZ1bmN0aW9uKHgsbixSLGMsUyl7KChSPShuPVsoUz14LlIoMjM5KSxuKSxTPj44JjI1NSxTJjI1NV0sdm9pZCAwIT1jJiZuLnB1c2goYyksMD09eC5SKDEwNCkubGVuZ3RoJiYoeC5zWzEwNF09dm9pZCAwLHcoeCwxMDQsbikpLGM9IiIsUiYmKFIubWVzc2FnZSYmKGMrPVIubWVzc2FnZSksUi5zdGFjayYmKGMrPSI6IitSLnN0YWNrKSkseCkuUig5NCksMzxSKSYmKGM9Yy5zbGljZSgwLFItMyksUi09Yy5sZW5ndGgrMyxjPW0oYy5yZXBsYWNlKC9cXHJcXG4vZywiXFxuIikpLGUoeCwxNDUsVyhjLmxlbmd0aCwyKS5jb25jYXQoYyksMTIpKSx3KSh4LDk0LFIpfSxUPWZ1bmN0aW9uKHgsbixSLGMsUyxBLFApe3guSysrO3RyeXtmb3IoUz0oYz01MDAxLHZvaWQgMCksQT0wLFI9eC5mLmxlbmd0aDsoLS1jfHx4LkwpJiYoQT14LlIoMzYpKTxSOyl0cnl7dyh4LDIzOSxBKSxQPWYoeCksKFM9eC5SKFApKSYmUy5jYWxsP1MoeCk6Vih4LDIxLDAsUCkseC5GPXRydWUsRSh4LDAsMil9Y2F0Y2goWSl7WSE9eC5JJiYoeC5SKDIyNyk/Vih4LDIyLFkpOncoeCwyMjcsWSkpfWN8fFYoeCwzMyl9Y2F0Y2goWSl7dHJ5e1YoeCwyMixZKX1jYXRjaChEKXtRKHgsRCl9fXJldHVybiBSPXguUigxNjEpLG4mJncoeCwzNixuKSx4LkstLSxSfSxVPWZ1bmN0aW9uKHgsbixSLGMsUyl7Zm9yKCgoKHguSz0wLHgpLkc9MjUseC5GPWZhbHNlLFM9MCx4Lnc9ZnVuY3Rpb24oeCxuLFIsYyxTLGspe3JldHVybiBrPShSPShjPShTPWZ1bmN0aW9uKCl7cmV0dXJuIGMoKX0sZnVuY3Rpb24oKXtyZXR1cm4gY1tSLk8rKFNbUi5nXT09PW4pLSFrW1IuZ11dfSksdGhpcyksUi5hKSxTW1IubF09ZnVuY3Rpb24oeCl7Y1tSLlldPXh9LFNbUi5sXSh4KSx4PVN9LHguQj1mYWxzZSxjPVtdLHgpLlg9ZnVuY3Rpb24oeCxuLFIpe3JldHVybiBSPWZ1bmN0aW9uKCl7cmV0dXJuIHh9LG49ZnVuY3Rpb24oKXtyZXR1cm4gUigpfSxuW3RoaXMubF09ZnVuY3Rpb24obil7eD1ufSxufSx4KS5NPTAseC5iPVtdOzEyOD5TO1MrKyljW1NdPVN0cmluZy5mcm9tQ2hhckNvZGUoUyk7KCgoKCgoKCgoKFM9KCgoKCgoKCgoKCgoKCgoKCgoKHgucz1bXSx3KHgsMzYsMCksdyh4LDIzOSwwKSx4KS5XPSgod2luZG93LnBlcmZvcm1hbmNlfHx7fSkudGltaW5nfHx7fSkubmF2aWdhdGlvblN0YXJ0fHwwLHcpKHgsMjI0LGZ1bmN0aW9uKHgsbixSLGMpe2lmKG49eC5BLnBvcCgpKXtmb3IoUj1mKHgpOzA8UjtSLS0pYz1mKHgpLG5bY109eC5zW2NdO25bMTA0XT14LnNbMTA0XSxuWzk0XT14LnNbOTRdLHgucz1ufWVsc2Ugdyh4LDM2LHguZi5sZW5ndGgpfSksdykoeCwyMTgsZnVuY3Rpb24oeCl7Syh4LDEpfSksdykoeCwyMzcsZnVuY3Rpb24oKXt9KSx3KHgsOSxmdW5jdGlvbih4KXt4LkomJkooeCwwKX0pLHcoeCwyMjcsMjYzKSx4LlQ9W10sdykoeCw4MyxmdW5jdGlvbih4LG4pe0UoeCwxLDUpfHwobj1IKHgpLHcoeCxuLkgsbi5ELmFwcGx5KG4uWixuLlYpKSl9KSx3KSh4LDc0LGZ1bmN0aW9uKHgsbixSKXsobj0obj1mKHgpLFI9Zih4KSx4KS5zW25dJiZ4LlIobiksdykoeCxSLG4pfSksdykoeCwyNDEsZnVuY3Rpb24oeCxuLFIpe1I9KG49Zih4KSxmKHgpKSx3KHgsUiwiIit4LlIobikpfSksdykoeCwxMDQsW10pLHcpKHgsMTg3LHgpLHcpKHgsMTY1LDApLHcpKHgsMTExLFopLHcpKHgsMjUwLGZ1bmN0aW9uKHgsbixSKXswIT0oUj0obj1mKHgpLGYoeCkpLHguUihuKSkmJncoeCwzNix4LlIoUikpfSksdykoeCw5MCwwKSx3KHgsMTQyLGZ1bmN0aW9uKHgsbixSLGMpeyhjPShSPShuPWYoeCksZih4KSksZih4KSksdykoeCxjLHguUihuKT4+Uil9KSx3KSh4LDE5MCxmdW5jdGlvbih4LG4sUixjLFMsayl7aWYoIUUoeCwxLDI1NSkpe2lmKFI9KFM9KGM9KFI9KG49Zih4KSxmKSh4KSxmKSh4KSxmKHgpKSxuPXguUihuKSx4LlIoUikpLGM9eC5SKGMpLHg9eC5SKFMpLCJvYmplY3QiPT16KG4pKXtmb3IoayBpbiBTPVtdLG4pUy5wdXNoKGspO249U31mb3Ioaz0oUz0wLG4ubGVuZ3RoKTtTPGs7Uys9YylSKG4uc2xpY2UoUyxTK2MpLHgpfX0pLHcoeCwxNDUsZCg0KSksdykoeCwzNCxmdW5jdGlvbih4KXt0KHgsMSl9KSx4LkE9W10sdyh4LDE3MSxmdW5jdGlvbih4KXt0KHgsNCl9KSx3KSh4LDEwMCxbMTY1LDAsMF0pLHcpKHgsMTYxLHt9KSx4Lko9ZmFsc2Usdyh4LDI0LGZ1bmN0aW9uKHgsbixSKXsoUj0obj1mKHgpLGYpKHgpLHcpKHgsUix4LlIoUikreC5SKG4pKX0pLHcpKHgsNDQsZnVuY3Rpb24oeCxuLFIpe0UoeCwxLDUpfHwobj1mKHgpLFI9Zih4KSx3KHgsUixmdW5jdGlvbih4KXtyZXR1cm4gZXZhbCh4KX0oeC5SKG4pKSkpfSksdyh4LDE3MixmdW5jdGlvbih4LG4sUixjKXsoYz0oUj0obj1mKHgpLGYpKHgpLGYoeCkpLFI9eC5SKFIpLG49eC5SKG4pLHcpKHgsYyxuW1JdKX0pLHcoeCwxNTAsMCksdyh4LDQ3LGZ1bmN0aW9uKHgsbixSLGMsUyl7Uj0oUz0oYz0oUj0obj1mKHgpLGYoeCkpLHgpLlIoZih4KSkseCkuUihmKHgpKSx4LlIoUikpLHcoeCxuLE0oeCxSLGMsUykpfSksUi5TKXx8ZnVuY3Rpb24oKXt9LHcoeCwxMjYsZnVuY3Rpb24oeCxuLFIsYyl7Yz0oUj0obj1mKHgpLGYoeCkpLGYoeCkpLHcoeCxjLCh4LlIobilpbiB4LlIoUikpKzApfSksdykoeCwyMDIsZnVuY3Rpb24oeCxuLFIsYyl7KG49Zih4KSxSPWYoeCksYz1mKHgpLHgpLlIobilbeC5SKFIpXT14LlIoYyl9KSx3KSh4LDE3OSxmdW5jdGlvbih4LG4sUixjLFMpe2ZvcihSPShuPWYoeCksRih4KSksUz0wLGM9W107UzxSO1MrKyljLnB1c2goZih4KSk7dyh4LG4sYyl9KSx3KHgsNzcsZnVuY3Rpb24oeCxuLFIsYyxTKXtmb3IoUj0obj1bXSxmKHgpKSxjPTA7YzxSO2MrKylTPWYoeCksbi5wdXNoKHguUihTKSk7Uj1mKHgpLHcoeCxSLGZ1bmN0aW9uKHgsUil7eC5LKys7dHJ5e2ZvcihSPTA7UjxuLmxlbmd0aDtSKyspKDAsbltSXSkoeCl9ZmluYWxseXt4LkstLX19KX0pLHcpKHgsMjM2LGZ1bmN0aW9uKHgsbil7bj14LlIoZih4KSkscSh4LG4pfSksdykoeCw0MSxmdW5jdGlvbih4KXtLKHgsMil9KSx3KHgsODcsW10pLHcoeCwyMjksZnVuY3Rpb24oeCxuLFIsYyl7Uj0obj1mKHgpLGYoeCkpLGM9Zih4KSx3KHgsYyx4LlIobil8fHguUihSKSl9KSx3KHgsMjMyLGZ1bmN0aW9uKHgsbixSLGMpe249KFI9KG49Zih4KSxmKSh4KSxjPWYoeCkseC5SKG4pPT14LlIoUikpLHcoeCxjLCtuKX0pLHgpLmZCPWZ1bmN0aW9uKHgsbil7KChuLnB1c2goeFswXTw8MjR8eFsxXTw8MTZ8eFsyXTw8OHx4WzNdKSxuKS5wdXNoKHhbNF08PDI0fHhbNV08PDE2fHhbNl08PDh8eFs3XSksbikucHVzaCh4WzhdPDwyNHx4WzldPDwxNnx4WzEwXTw8OHx4WzExXSl9LHcpKHgsMTksZnVuY3Rpb24oeCxuLFIpe249KFI9KG49Zih4KSxmKSh4KSx4LlIobikpLHcoeCxSLHoobikpfSksdykoeCwxMjUsZnVuY3Rpb24oeCl7eC5tKDQpfSksdyh4LDQwLGZ1bmN0aW9uKHgsbil7KG49Zih4KSx4PXguUihuKSx4KVswXS5yZW1vdmVFdmVudExpc3RlbmVyKHhbMV0seFsyXSxmYWxzZSl9KSx3KHgsMTg2LGZ1bmN0aW9uKHgpe0soeCw0KX0pLHcoeCwyMiwwKSx3KSh4LDI1MyxmdW5jdGlvbih4LG4sUixjLFMpe2M9KG49KG49Zih4KSxSPWYoeCksYz1mKHgpLHguUihuKSksUz14LlIoZih4KSksUj14LlIoUikseC5SKGMpKSwwIT09biYmKGM9TSh4LGMsUywxLG4sUiksbi5hZGRFdmVudExpc3RlbmVyKFIsYyxiKSx3KHgsOTAsW24sUixjXSkpfSksdyh4LDk0LDIwNDgpLHcoeCwxMjAsZnVuY3Rpb24oeCxuLFIsUyxOLGsscCl7aWYoKFM9KFI9KG49Zih4KSxGKHgpKSwiIikseCkuc1syMTVdKWZvcihOPXguUigyMTUpLHA9Ti5sZW5ndGgsaz0wO1ItLTspaz0oaytGKHgpKSVwLFMrPWNbTltrXV07ZWxzZSBmb3IoO1ItLTspUys9Y1tmKHgpXTt3KHgsbixTKX0pLHcpKHgsMjIyLGZ1bmN0aW9uKHgsbixSLGMsUyxrLHApe0UoeCwxLDUpfHwobj1IKHgpLFM9bi5ELGM9bi5aLFI9bi5WLHA9Ui5sZW5ndGgsMD09cD9rPW5ldyBjW1NdOjE9PXA/az1uZXcgY1tTXShSWzBdKToyPT1wP2s9bmV3IGNbU10oUlswXSxSWzFdKTozPT1wP2s9bmV3IGNbU10oUlswXSxSWzFdLFJbMl0pOjQ9PXA/az1uZXcgY1tTXShSWzBdLFJbMV0sUlsyXSxSWzNdKTpWKHgsMjIpLHcoeCxuLkgsaykpfSksbiYmIiEiPT1uLmNoYXJBdCgwKSk/KHgubz1uLFMoKSk6KFI9ISFSLlMseC5KPVIseC5mPVtdLE8oeCxbNCxuXSksTyh4LFs1LFNdKSxnKHgsZmFsc2UsUix0cnVlKSl9LGY9ZnVuY3Rpb24oeCxuLFIpe2lmKG49eC5SKDM2KSwhKG4gaW4geC5mKSl0aHJvdyBWKHgsMzEpLHguSTtyZXR1cm4oKCh2b2lkIDA9PXguaiYmKHguaj1DKHguZixuLTQpLHgudj12b2lkIDApLHgudikhPW4+PjMmJih4LnY9bj4+MyxSPVswLDAsMCx4LlIoMTY1KV0seC5DPUIoeC5qLHgudixSKSksdykoeCwzNixuKzEpLHguZltuXSleeC5DW24lOF19LEU9ZnVuY3Rpb24oeCxuLFIpe2lmKDA+PXguTXx8MTx4Lkt8fCF4LkYmJjA8bnx8MCE9ZG9jdW1lbnQuaGlkZGVufHx4Lk4oKS14LiQ8eC5NLVIpcmV0dXJuIGZhbHNlO3JldHVybih4LkI9dHJ1ZSxKKSh4LG4pLHRydWV9LEY9ZnVuY3Rpb24oeCxuKXtyZXR1cm4gbj1mKHgpLG4mMTI4JiYobj1uJjEyN3xmKHgpPDw3KSxufSx5PWZ1bmN0aW9uKHgpe2lmKHguTSl7aWYoIXguQilyZXR1cm4gZmFsc2U7eC5CPWZhbHNlfWVsc2UgaWYoMTA+eC5OKCkteC4kKXJldHVybiBmYWxzZTtyZXR1cm4gMCE9ZG9jdW1lbnQuaGlkZGVuP2ZhbHNlOnRydWV9LEM9ZnVuY3Rpb24oeCxuKXtyZXR1cm4geFtuXTw8MjR8eFtuKzFdPDwxNnx4W24rMl08PDh8eFtuKzNdfSxKPWZ1bmN0aW9uKHgsbil7bj14LlIoMzYpLW4sdyh4LDM2LHguZi5sZW5ndGgpLHguVC5wdXNoKFszLG5dKX0sUT0oRy5wcm90b3R5cGUuc2Q9ZnVuY3Rpb24oeCxuLFIsYyl7dHJ5e2M9eFsobisyKSUzXSx4W25dPXhbbl0teFsobisxKSUzXS1jXigxPT1uP2M8PFI6Yz4+PlIpfWNhdGNoKFMpe3Rocm93IFM7fX0sZnVuY3Rpb24oeCxuKXt4Lm89KCJFOiIrbi5tZXNzYWdlKyI6IituLnN0YWNrKS5zbGljZSgwLDIwNDgpfSksdT0oKEcucHJvdG90eXBlLk89MzUsRy5wcm90b3R5cGUpLlU9ZnVuY3Rpb24oeCxuLFIpe3JldHVybihuXj1uPDwxMyxuXj1uPj4xNywobj0obl5uPDw1KSZSKXx8KG49MSkseClebn0sZnVuY3Rpb24oeCxuLFIsYyxTKXtmb3IoO3guVC5sZW5ndGg7KXtpZihSJiZuJiZ5KHgpKXtTPXgseC5QKGZ1bmN0aW9uKCl7ZyhTLGZhbHNlLG4sZmFsc2UpfSk7YnJlYWt9Yz0oUj10cnVlLGM9eC5ULnBvcCgpLEkpKHgsYyl9cmV0dXJuIGN9KSxIPSgoRy5wcm90b3R5cGUuYz1mdW5jdGlvbih4LG4sUixjLFMsQSl7aWYodGhpcy5vKXJldHVybiB0aGlzLm87dHJ5e0E9W10sUz1bXSxjPSEheCxPKHRoaXMsWzEsYyxTLG5dKSxPKHRoaXMsWzIseCxTLEFdKSxnKHRoaXMsZmFsc2UsYyx0cnVlKSxSPUFbMF19Y2F0Y2goUCl7USh0aGlzLFApLFI9dGhpcy5vLHgmJngoUil9cmV0dXJuIFJ9LEcpLnByb3RvdHlwZS5ZPTM2LGZ1bmN0aW9uKHgsbixSLGMsUyxBKXtmb3IoQT0oUz0oKFI9KG49e30sZih4KSksbikuSD1mKHgpLG4uVj1bXSxjPWYoeCktMSxmKSh4KSwwKTtBPGM7QSsrKW4uVi5wdXNoKGYoeCkpO2ZvcihuLkQ9eC5SKFIpLG4uWj14LlIoUyk7Yy0tOyluLlZbY109eC5SKG4uVltjXSk7cmV0dXJuIG59KSxaPSgoRy5wcm90b3R5cGUuTD0oRy5wcm90b3R5cGUubD0idG9TdHJpbmciLGZhbHNlKSxHKS5wcm90b3R5cGUuZz0iY2FsbGVyIix0aGlzKSxyPSgoRy5wcm90b3R5cGUuUD1aLnJlcXVlc3RJZGxlQ2FsbGJhY2s/ZnVuY3Rpb24oeCl7cmVxdWVzdElkbGVDYWxsYmFjayh4LHt0aW1lb3V0OjR9KX06Wi5zZXRJbW1lZGlhdGU/ZnVuY3Rpb24oeCl7c2V0SW1tZWRpYXRlKHgpfTpmdW5jdGlvbih4KXtzZXRUaW1lb3V0KHgsMCl9LFouYm90Z3VhcmQpfHwoWi5ib3RndWFyZD17fSksWi5ib3RndWFyZCk7ci5yS089ZnVuY3Rpb24oeCxuLFIpeyhSPW5ldyBHKHgse1M6bn0pLHRoaXMpLmludm9rZT1mdW5jdGlvbih4LG4sQSl7cmV0dXJuKEE9Ui5jKG4mJngsQSkseCYmIW4pJiZ4KEEpLEF9fSxyLmJnPWZ1bmN0aW9uKHgsbixSKXtyZXR1cm4geCYmeC5zdWJzdHJpbmcmJihSPXJbeC5zdWJzdHJpbmcoMCwzKV0pP25ldyBSKHguc3Vic3RyaW5nKDMpLG4pOm5ldyByLnJLTyh4LG4pfTt0cnl7ci51fHwod2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZnVuY3Rpb24oKXt9LGIpLHIudT0xKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCxPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtiPXtwYXNzaXZlOnRydWV9fX0pKX1jYXRjaCh4KXt9OycpKCk7PC9zY3JpcHQ+PHNjcmlwdCBub25jZT0iT2t2UkZaQm5Oc2FlS1N4ODNtVzBrekJHNUo0Ij52YXIgdmlld1BhdGhQcmVmaXggPSAnOmZsb3dcLzp2ZXJzaW9uXC8nOzwvc2NyaXB0PjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+PCEtLVtpZiBsdCBJRSA5XT48c2NyaXB0PnZhciBlbHMgPSBbJ2NvbnRlbnQnLCAnZm9vdGVyJywgJ3NlY3Rpb24nXTsgZm9yICh2YXIgaSA9IDA7IGkgPCBlbHMubGVuZ3RoOyBpKyspIHtkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsc1tpXSk7fTwvc2NyaXB0PjwhW2VuZGlmXS0tPjxzdHlsZSBub25jZT0iT2t2UkZaQm5Oc2FlS1N4ODNtVzBrekJHNUo0Ij4vKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBUaGluJyksIGxvY2FsKCdSb2JvdG8tVGhpbicpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvdHk5ZGZ2TEF6aXdkcVEyZEhveWpwaFRiZ1ZxbDhuREpwd25yRTI3bXViMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gVGhpbicpLCBsb2NhbCgnUm9ib3RvLVRoaW4nKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L2ZyTlYzME9hWWRsRlJ0SDJWblpaZGhUYmdWcWw4bkRKcHduckUyN211YjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gVGhpbicpLCBsb2NhbCgnUm9ib3RvLVRoaW4nKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L2d3VkpERVJOMkFtejM5d3JTb1o3RnhUYmdWcWw4bkRKcHduckUyN211YjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIFRoaW4nKSwgbG9jYWwoJ1JvYm90by1UaGluJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9hWk1zd3BvZFllVmh0UnZ1QUJKV3ZCVGJnVnFsOG5ESnB3bnJFMjdtdWIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIFRoaW4nKSwgbG9jYWwoJ1JvYm90by1UaGluJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9WdlhVR0taWGJIdFhfU19WQ1RMcEdoVGJnVnFsOG5ESnB3bnJFMjdtdWIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIFRoaW4nKSwgbG9jYWwoJ1JvYm90by1UaGluJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9lN01lVkF5dm9nTXFGd3dsNjFQS2hCVGJnVnFsOG5ESnB3bnJFMjdtdWIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDEwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gVGhpbicpLCBsb2NhbCgnUm9ib3RvLVRoaW4nKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4LzJ0c2QzOTd3THhqOTZxd0h5TklreFBlc1pXMnhPUS14c05xTzQ3bTU1REEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIyMTIsIFUrMjIxNTsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC8wZUM2ZmwwNmx1WEVZV3BCU0p2WENCSnRuS0lUcHBPSV9JdmNYWEROcnNjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9GbDR5MFFkT3h5eVRIRUdNWFg4a2NSSnRuS0lUcHBPSV9JdmNYWEROcnNjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4Ly1MMTRKazA2bTZwVUhCLTVtWFFRblJKdG5LSVRwcE9JX0l2Y1hYRE5yc2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L0kzUzF3c2dTZzlZQ3VyVjZQVWtUT1JKdG5LSVRwcE9JX0l2Y1hYRE5yc2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvTllEV0JkRDRnSXEyNkc1WFliSHNGQkp0bktJVHBwT0lfSXZjWFhETnJzYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9QcnUzM3FqU2hwWlNtRzN6NlZZd25SSnRuS0lUcHBPSV9JdmNYWEROcnNjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvSGdvMTNrLXRmU3BuMHFpMVNGZFVmVnRYUmE4VFZ3VElDZ2lybkpobVZKdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjIxMiwgVSsyMjE1Owp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIFJlZ3VsYXInKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9lazRnelotR2VYQVBjU2JIdENlUUlfZXNaVzJ4T1EteHNOcU80N201NURBLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBSZWd1bGFyJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvbUVydkxCWWdfY1hHM3JMdlVzS1RfZmVzWlcyeE9RLXhzTnFPNDdtNTVEQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBSZWd1bGFyJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvLTJuMnAtX1kwOHNnNTdDTldRZktOdmVzWlcyeE9RLXhzTnFPNDdtNTVEQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gUmVndWxhcicpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L3UwVE9wbTA4Mk1Oa1M1SzBRNHJocXZlc1pXMnhPUS14c05xTzQ3bTU1REEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gUmVndWxhcicpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L05kRjlNdG5PcEx6by1ub01vRzBtaVBlc1pXMnhPUS14c05xTzQ3bTU1REEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gUmVndWxhcicpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L0ZjeDdXd3Y4T3pUNzFBM0UxWE9BanZlc1pXMnhPUS14c05xTzQ3bTU1REEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBSZWd1bGFyJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvQ1dCMFhZQThiem8wa1NUaFgwVVR1QS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjIxMiwgVSsyMjE1Owp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvWkxxS2VlbFliQVRHNjBFcFpCU0R5eEp0bktJVHBwT0lfSXZjWFhETnJzYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9vSGkzMGt3UVd2cENXcUFoekhjQ1NCSnRuS0lUcHBPSV9JdmNYWEROcnNjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvckd2SGRKbnIybDc1cWIwWU5EOU55Qkp0bktJVHBwT0lfSXZjWFhETnJzYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9teDlVY2s2dUI2M1ZJS0ZZbkVNWHJSSnRuS0lUcHBPSV9JdmNYWEROcnNjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvbWJtaHByTUg2OVppNmVFUEJZVkZoUkp0bktJVHBwT0lfSXZjWFhETnJzYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L29PZUZ3Wk5sclRlZnpMWW1sVlYxVUJKdG5LSVRwcE9JX0l2Y1hYRE5yc2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L1J4WkpkbnplbzNSNXpTZXhnZThVVVZ0WFJhOFRWd1RJQ2dpcm5KaG1WSncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIyMTIsIFUrMjIxNTsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoLy9mb250cy5nc3RhdGljLmNvbS9zL3JvYm90by92MTgvNzdGWEZqUmJHek40YUNyU0ZobGgzaEp0bktJVHBwT0lfSXZjWFhETnJzYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L2lzWi13YkNYTktBYm5qbzZfVHdIVGhKdG5LSVRwcE9JX0l2Y1hYRE5yc2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L1VYNmk0SnhRRG0zZlZUYzFDUHV3cWhKdG5LSVRwcE9JX0l2Y1hYRE5yc2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9qU04yQ0dWRGJjVnlDbmZKZmpTZGZCSnRuS0lUcHBPSV9JdmNYWEROcnNjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC9Qd1pjLVliSUw0MTR3QjlyQjFJQVBSSnRuS0lUcHBPSV9JdmNYWEROcnNjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3Mvcm9ib3RvL3YxOC85N3VhaHhpcVpSb25jQmFDRUkzYVd4SnRuS0lUcHBPSV9JdmNYWEROcnNjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC8vZm9udHMuZ3N0YXRpYy5jb20vcy9yb2JvdG8vdjE4L2QtNklZcGxPRm9jQ2FjS3p4d1hTT0Z0WFJhOFRWd1RJQ2dpcm5KaG1WSncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIyMTIsIFUrMjIxNTsKfQo8L3N0eWxlPjxzdHlsZSBub25jZT0iT2t2UkZaQm5Oc2FlS1N4ODNtVzBrekJHNUo0Ij4udzR4cnpme2Rpc3BsYXk6aGlkZGVufS5WSXBnSmQtVFVvNkhiey1tb3otYm94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpO2JveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjoxcHggc29saWQgI2FjYWNhYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjMzMyk7b3V0bGluZTowO3Bvc2l0aW9uOmFic29sdXRlfS5YS1NmbS1TeDlLd2N7LW1vei1ib3gtc2hhZG93OjAgNHB4IDE2cHggcmdiYSgwLDAsMCwuMik7Ym94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsLjIpO2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7b3V0bGluZTowO3Bvc2l0aW9uOmFic29sdXRlfS5WSXBnSmQtVFVvNkhiLXhKNUhuZiwuWEtTZm0tU3g5S3djLXhKNUhuZntiYWNrZ3JvdW5kOiNmZmY7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfWRpdi5WSXBnSmQtVFVvNkhiLXhKNUhuZixkaXYuWEtTZm0tU3g5S3djLXhKNUhuZntmaWx0ZXI6YWxwaGEob3BhY2l0eT03NSk7LW1vei1vcGFjaXR5Oi43NTtvcGFjaXR5Oi43NX0uWEtTZm0tU3g5S3dje2NvbG9yOiMwMDB9LlhLU2ZtLVN4OUt3Yy1yNG5rZXtjb2xvcjojMDAwO2N1cnNvcjpkZWZhdWx0O2ZvbnQtd2VpZ2h0Om5vcm1hbDtsaW5lLWhlaWdodDoyNHB4O21hcmdpbjowIDAgMTZweH0uWEtTZm0tU3g5S3djLXI0bmtlLVR2RDlQY3toZWlnaHQ6MTFweDtvcGFjaXR5Oi43O3BhZGRpbmc6MTdweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjExcHh9LlhLU2ZtLVN4OUt3Yy1yNG5rZS1UdkQ5UGM6YWZ0ZXJ7Y29udGVudDonJztiYWNrZ3JvdW5kOnVybCgvL3NzbC5nc3RhdGljLmNvbS91aS92MS9kaWFsb2cvY2xvc2UteC5wbmcpO3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDoxMXB4O3dpZHRoOjExcHg7cmlnaHQ6MTdweH0uWEtTZm0tU3g5S3djLXI0bmtlLVR2RDlQYzpob3ZlcntvcGFjaXR5OjF9LlhLU2ZtLVN4OUt3Yy1iTjk3UGN7bGluZS1oZWlnaHQ6MS40ZW07d29yZC13cmFwOmJyZWFrLXdvcmR9LlhLU2ZtLVN4OUt3Yy1jNnhGcmQgYnV0dG9uey1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCNmNWY1ZjUsI2YxZjFmMSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCNmNWY1ZjUsI2YxZjFmMSk7Ym9yZGVyOjFweCBzb2xpZCAjZGNkY2RjO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpO2NvbG9yOiM0NDQ7Y3Vyc29yOmRlZmF1bHQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDpib2xkO2hlaWdodDoyOXB4O2xpbmUtaGVpZ2h0OjI3cHg7bWFyZ2luOjAgMTZweCAwIDA7bWluLXdpZHRoOjcycHg7b3V0bGluZTowO3BhZGRpbmc6MCA4cHh9LlhLU2ZtLVN4OUt3Yy1jNnhGcmQgYnV0dG9uOmhvdmVyey1tb3otYm94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwwLjEpO2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTtib3JkZXI6MXB4IHNvbGlkICNjNmM2YzY7Y29sb3I6IzMzM30uWEtTZm0tU3g5S3djLWM2eEZyZCBidXR0b246YWN0aXZley1tb3otYm94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwwLjEpO2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTtib3JkZXI6MXB4IHNvbGlkICNjNmM2YzY7Y29sb3I6IzMzMzstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfS5YS1NmbS1TeDlLd2MtYzZ4RnJkIGJ1dHRvbjpmb2N1c3tib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmV9LlhLU2ZtLVN4OUt3Yy1jNnhGcmQgYnV0dG9uW2Rpc2FibGVkXXstbW96LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDojZmZmO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXI6MXB4IHNvbGlkICNmM2YzZjM7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMDUpO2NvbG9yOiNiOGI4Yjh9LlhLU2ZtLVN4OUt3Yy1jNnhGcmQgLlZJcGdKZC1sZERWRmUtSklidVFje2JhY2tncm91bmQtY29sb3I6IzRkOTBmZTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpO2JvcmRlcjoxcHggc29saWQgIzMwNzllZDtjb2xvcjojZmZmfS5YS1NmbS1TeDlLd2MtYzZ4RnJkIC5WSXBnSmQtbGREVkZlLUpJYnVRYzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMzNTdhZTg7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KTtib3JkZXI6MXB4IHNvbGlkICMyZjViYjc7Y29sb3I6I2ZmZn0uWEtTZm0tU3g5S3djLWM2eEZyZCAuVklwZ0pkLWxkRFZGZS1KSWJ1UWM6YWN0aXZle2JhY2tncm91bmQtY29sb3I6IzM1N2FlODtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpO2JvcmRlcjoxcHggc29saWQgIzJmNWJiNztjb2xvcjojZmZmOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwwLjMpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4zKX0uWEtTZm0tU3g5S3djLWM2eEZyZCAuVklwZ0pkLWxkRFZGZS1KSWJ1UWM6Zm9jdXN7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZmZmO2JvcmRlcjpyZ2JhKDAsMCwwLDApIHNvbGlkIDFweDtvdXRsaW5lOjFweCBzb2xpZCAjNGQ5MGZlO291dGxpbmU6cmdiYSgwLDAsMCwwKSAwfS5YS1NmbS1TeDlLd2MtYzZ4RnJkIC5WSXBnSmQtbGREVkZlLUpJYnVRY1tkaXNhYmxlZF17LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6IzRkOTBmZTtjb2xvcjojZmZmO2ZpbHRlcjphbHBoYShvcGFjaXR5PTUwKTtvcGFjaXR5Oi41fS50azNONmUtTzByM0dkLC50azNONmUtTWNmTmxmLC50azNONmUtb3N0VVp7d2lkdGg6NTEycHh9LnFnZ3J6YntiYWNrZ3JvdW5kOiMwMDA7bGVmdDowO29wYWNpdHk6LjY7cG9pbnRlci1ldmVudHM6YXV0bztwb3NpdGlvbjpmaXhlZDt0b3A6MDt6LWluZGV4OjV9LmFmd1JpYyAuWEtTZm0tU3g5S3djLWJOOTdQYywuWEtTZm0tU3g5S3djLWJOOTdQYyAqe291dGxpbmU6bm9uZX0uZnVxQXZme2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdy15OmF1dG87cGFkZGluZzoyNHB4IDI0cHggMjhweH0uanZlSVBlOmFmdGVye2NsZWFyOmJvdGg7Y29udGVudDonJztkaXNwbGF5OnRhYmxlfWh0bWwuS3RKVTFjLC5LdEpVMWMgYm9keXtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZX0uWEtTZm0tU3g5S3dje2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtib3JkZXI6bm9uZTtwYWRkaW5nOjA7cG9pbnRlci1ldmVudHM6YXV0bzt6LWluZGV4OjZ9LlhLU2ZtLVN4OUt3Yy1jNnhGcmR7bWFyZ2luLXRvcDowO3BhZGRpbmc6MCAxNnB4IDE2cHh9LlhLU2ZtLVN4OUt3Yy1iTjk3UGN7YmFja2dyb3VuZDpub25lfS5YS1NmbS1TeDlLd2MtcjRua2V7YmFja2dyb3VuZDpub25lO2ZvbnQtc2l6ZToyMHB4fS50azNONmUtTGdic1Nley1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHg7Y3Vyc29yOmRlZmF1bHQ7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6Ym9sZDt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLXJpZ2h0OjE2cHg7aGVpZ2h0OjI3cHg7bGluZS1oZWlnaHQ6MjdweDttaW4td2lkdGg6NTRweDtvdXRsaW5lOjA7cGFkZGluZzowIDhweH0udGszTjZlLUxnYnNTZS1abWRrRXstbW96LWJveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpO2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpfS50azNONmUtTGdic1NlLWdrNlNNZHstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4xKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMSl9LnRrM042ZS1MZ2JzU2UgLnRrM042ZS1MZ2JzU2UtUkpMYjlje21hcmdpbi10b3A6LTNweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnRrM042ZS1MZ2JzU2UtVjY3YUdje21hcmdpbi1sZWZ0OjVweH0udGszTjZlLUxnYnNTZS1yb1Z4d2N7bWluLXdpZHRoOjM0cHg7cGFkZGluZzowfS50azNONmUtTGdic1NlLXZoYWFGZi1MSzV5dSwudGszTjZlLUxnYnNTZS12aGFhRmYtcXdVOE1le3otaW5kZXg6MX0udGszTjZlLUxnYnNTZS12aGFhRmYtTEs1eXUudGszTjZlLUxnYnNTZS1PV0I2TWV7ei1pbmRleDowfS50azNONmUtTGdic1NlLWJhcnhpZS50azNONmUtTGdic1NlLXZoYWFGZi1MSzV5dSwudGszTjZlLUxnYnNTZS1iYXJ4aWUudGszTjZlLUxnYnNTZS12aGFhRmYtcXdVOE1le3otaW5kZXg6Mn0udGszTjZlLUxnYnNTZS12aGFhRmYtTEs1eXU6Zm9jdXMsLnRrM042ZS1MZ2JzU2UtdmhhYUZmLXF3VThNZTpmb2N1cywudGszTjZlLUxnYnNTZS1abWRrRS50azNONmUtTGdic1NlLXZoYWFGZi1MSzV5dSwudGszTjZlLUxnYnNTZS1abWRrRS50azNONmUtTGdic1NlLXZoYWFGZi1xd1U4TWV7ei1pbmRleDozfS50azNONmUtTGdic1NlLXZoYWFGZi1MSzV5dXttYXJnaW4tbGVmdDotMXB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7LW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS50azNONmUtTGdic1NlLXZoYWFGZi1xd1U4TWV7bWFyZ2luLXJpZ2h0OjA7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjA7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS50azNONmUtTGdic1NlLnRrM042ZS1MZ2JzU2UtT1dCNk1lOmFjdGl2ZXstbW96LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9LnRrM042ZS1MZ2JzU2UtbjJ0bzBley1tb3otYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0udGszTjZlLUxnYnNTZS1uMnRvMGUudGszTjZlLUxnYnNTZS1abWRrRSwudGszTjZlLUxnYnNTZS1uMnRvMGUudGszTjZlLUxnYnNTZS1KYmJRYWMtaTV2dDZlLnRrM042ZS1MZ2JzU2UtWm1ka0V7LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO2NvbG9yOiMzMzN9LnRrM042ZS1MZ2JzU2UtbjJ0bzBlOmFjdGl2ZSwudGszTjZlLUxnYnNTZS1uMnRvMGUudGszTjZlLUxnYnNTZS1abWRrRTphY3RpdmV7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTtiYWNrZ3JvdW5kOiNmOGY4Zjh9LnRrM042ZS1MZ2JzU2UtbjJ0bzBlLnRrM042ZS1MZ2JzU2UtZ2s2U01kLC50azNONmUtTGdic1NlLW4ydG8wZS50azNONmUtTGdic1NlLUpiYlFhYy1pNXZ0NmUudGszTjZlLUxnYnNTZS1nazZTTWR7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2NvbG9yOiMzMzN9LnRrM042ZS1MZ2JzU2UtbjJ0bzBlLnRrM042ZS1MZ2JzU2UtYmFyeGllLC50azNONmUtTGdic1NlLW4ydG8wZS50azNONmUtTGdic1NlLUpiYlFhYy1pNXZ0NmUudGszTjZlLUxnYnNTZS1iYXJ4aWV7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2VlZSwjZTBlMGUwKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsI2VlZSwjZTBlMGUwKTtib3JkZXI6MXB4IHNvbGlkICNjY2M7Y29sb3I6IzMzM30udGszTjZlLUxnYnNTZS1uMnRvMGU6Zm9jdXN7b3V0bGluZTpub25lfS50azNONmUtTGdic1NlLW4ydG8wZS50azNONmUtTGdic1NlLUpiYlFhYy1pNXZ0NmV7b3V0bGluZTpub25lfS50azNONmUtTGdic1NlLW4ydG8wZS50azNONmUtTGdic1NlLU9XQjZNZXtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZjNmM2YzO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjA1KTtjb2xvcjojYjhiOGI4fS50azNONmUtTGdic1NlLW4ydG8wZSAudGszTjZlLUxnYnNTZS1SSkxiOWN7b3BhY2l0eTouNTV9LnRrM042ZS1MZ2JzU2UtbjJ0bzBlLnRrM042ZS1MZ2JzU2UtYmFyeGllIC50azNONmUtTGdic1NlLVJKTGI5YywudGszTjZlLUxnYnNTZS1uMnRvMGUudGszTjZlLUxnYnNTZS1nazZTTWQgLnRrM042ZS1MZ2JzU2UtUkpMYjljLC50azNONmUtTGdic1NlLW4ydG8wZS50azNONmUtTGdic1NlLVptZGtFIC50azNONmUtTGdic1NlLVJKTGI5Y3tvcGFjaXR5Oi45fS50azNONmUtTGdic1NlLW4ydG8wZS50azNONmUtTGdic1NlLU9XQjZNZSAudGszTjZlLUxnYnNTZS1SSkxiOWN7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MzMpO29wYWNpdHk6LjMzM30udGszTjZlLUxnYnNTZS1uMnRvMGV7YmFja2dyb3VuZDpub25lO2JvcmRlcjowOy1tb3otYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojNDI4NWY0O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtmbG9hdDpyaWdodDttYXJnaW46MDtwYWRkaW5nOjZweCAxM3B4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udGszTjZlLUxnYnNTZS1uMnRvMGU6YWN0aXZlLC50azNONmUtTGdic1NlLW4ydG8wZS50azNONmUtTGdic1NlLVptZGtFOmFjdGl2ZSwudGszTjZlLUxnYnNTZS1uMnRvMGU6Zm9jdXMsLnRrM042ZS1MZ2JzU2UtbjJ0bzBlLnRrM042ZS1MZ2JzU2UtWm1ka0U6Zm9jdXN7LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQtY29sb3I6cmdiYSg1MSwxMDMsMjE0LDAuMTIpO2JvcmRlcjowO2NvbG9yOiM0Mjg1ZjR9LnRrM042ZS1MZ2JzU2UtbjJ0bzBlLnRrM042ZS1MZ2JzU2UtSmJiUWFjLWk1dnQ2ZSwudGszTjZlLUxnYnNTZS1uMnRvMGUudGszTjZlLUxnYnNTZS1abWRrRSwudGszTjZlLUxnYnNTZS1uMnRvMGUudGszTjZlLUxnYnNTZS1KYmJRYWMtaTV2dDZlLnRrM042ZS1MZ2JzU2UtWm1ka0V7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MH0ucHZSanBjLC5wdlJqcGM6YWN0aXZle2NvbG9yOiM0Mjg1ZjR9Lll5V2I5ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOnRvcCBsZWZ0O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4O21pbi1oZWlnaHQ6NDBweDtwYWRkaW5nLWxlZnQ6NTZweDtwYWRkaW5nLXRvcDo4cHh9Lng2dUNIYntiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgY2VudGVyO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MjRweCAyNHB4O21pbi1oZWlnaHQ6MjRweDtwYWRkaW5nLWxlZnQ6NTZweDtwYWRkaW5nLXRvcDo4cHh9LkFVM296ZHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjEwMH1Aa2V5ZnJhbWVzIHF1YW50dW1XaXpCb3hJbmtTcHJlYWR7MCV7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoLjIpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSguMil9dG97LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKX19QGtleWZyYW1lcyBxdWFudHVtV2l6SWNvbkZvY3VzUHVsc2V7MCV7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMS41KTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMS41KTtvcGFjaXR5OjB9dG97LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDIpO29wYWNpdHk6MX19QGtleWZyYW1lcyBxdWFudHVtV2l6UmFkaWFsSW5rU3ByZWFkezAley1tb3otdHJhbnNmb3JtOnNjYWxlKDEuNSk7dHJhbnNmb3JtOnNjYWxlKDEuNSk7b3BhY2l0eTowfXRvey1tb3otdHJhbnNmb3JtOnNjYWxlKDIuNSk7dHJhbnNmb3JtOnNjYWxlKDIuNSk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIHF1YW50dW1XaXpSYWRpYWxJbmtGb2N1c1B1bHNlezAley1tb3otdHJhbnNmb3JtOnNjYWxlKDIpO3RyYW5zZm9ybTpzY2FsZSgyKTtvcGFjaXR5OjB9dG97LW1vei10cmFuc2Zvcm06c2NhbGUoMi41KTt0cmFuc2Zvcm06c2NhbGUoMi41KTtvcGFjaXR5OjF9fS5PMFdSa2Z7LW1vei11c2VyLXNlbGVjdDpub25lOy1tb3otdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyAuMXM7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyAuMXM7Ym9yZGVyOjA7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7bWluLXdpZHRoOjRlbTtvdXRsaW5lOm5vbmU7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt6LWluZGV4OjB9LkE5anlhZHtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxNnB4fS56WmhuWWV7LW1vei10cmFuc2l0aW9uOmJveC1zaGFkb3cgLjI4cyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSk7dHJhbnNpdGlvbjpib3gtc2hhZG93IC4yOHMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpO2JhY2tncm91bmQ6I2RmZGZkZjstbW96LWJveC1zaGFkb3c6MCAycHggMnB4IDAgcmdiYSgwLDAsMCwwLjE0KSwwIDNweCAxcHggLTJweCByZ2JhKDAsMCwwLDAuMTIpLDAgMXB4IDVweCAwIHJnYmEoMCwwLDAsMC4yKTtib3gtc2hhZG93OjAgMnB4IDJweCAwIHJnYmEoMCwwLDAsMC4xNCksMCAzcHggMXB4IC0ycHggcmdiYSgwLDAsMCwwLjEyKSwwIDFweCA1cHggMCByZ2JhKDAsMCwwLDAuMil9LnpaaG5ZZS5xczQxcWV7LW1vei10cmFuc2l0aW9uOmJveC1zaGFkb3cgLjI4cyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSk7dHJhbnNpdGlvbjpib3gtc2hhZG93IC4yOHMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpOy1tb3otdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC44czt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjhzOy1tb3otYm94LXNoYWRvdzowIDhweCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMTQpLDAgM3B4IDE0cHggMnB4IHJnYmEoMCwwLDAsMC4xMiksMCA1cHggNXB4IC0zcHggcmdiYSgwLDAsMCwwLjIpO2JveC1zaGFkb3c6MCA4cHggMTBweCAxcHggcmdiYSgwLDAsMCwwLjE0KSwwIDNweCAxNHB4IDJweCByZ2JhKDAsMCwwLDAuMTIpLDAgNXB4IDVweCAtM3B4IHJnYmEoMCwwLDAsMC4yKX0uZTNEdXViLC5lM0R1dWIgYSwuZTNEdXViIGE6aG92ZXIsLmUzRHV1YiBhOmxpbmssLmUzRHV1YiBhOnZpc2l0ZWR7YmFja2dyb3VuZDojNDI4NWY0O2NvbG9yOiNmZmZ9LkhROHlmLC5IUTh5ZiBhe2NvbG9yOiM0Mjg1ZjR9LlV4dWJVLC5VeHViVSBhe2NvbG9yOiNmZmZ9LlpGcjYwZHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5PMFdSa2YudTNiVzRlIC5aRnI2MGR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMTIpfS5VeHViVS51M2JXNGUgLlpGcjYwZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4zMCl9LmUzRHV1Yi51M2JXNGUgLlpGcjYwZHtiYWNrZ3JvdW5kLWNvbG9yOiMyZjc5ZjV9LkhROHlmLnUzYlc0ZSAuWkZyNjBke2JhY2tncm91bmQtY29sb3I6cmdiYSg2NiwxMzMsMjQ0LDAuMTQ5KX0uVndlNFZiey1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgwKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2UsdmlzaWJpbGl0eSAwcyBlYXNlIC4ycyx0cmFuc2Zvcm0gMHMgZWFzZSAuMnM7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLHZpc2liaWxpdHkgMHMgZWFzZSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gMHMgZWFzZSAuMnM7YmFja2dyb3VuZC1zaXplOmNvdmVyO2xlZnQ6MDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt2aXNpYmlsaXR5OmhpZGRlbn0uTzBXUmtmLnFzNDFxZSAuVndlNFZiey1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDIuMik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDIuMik7b3BhY2l0eToxO3Zpc2liaWxpdHk6dmlzaWJsZX0uTzBXUmtmLnFzNDFxZS5NOUJnNGQgLlZ3ZTRWYnt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSksb3BhY2l0eSAuMnMgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSksb3BhY2l0eSAuMnMgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpfS5PMFdSa2YuajduSVpiIC5Wd2U0VmJ7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTt2aXNpYmlsaXR5OnZpc2libGV9Lm9HNVNyYiAuVndlNFZiLC56WmhuWWUgLlZ3ZTRWYntiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgZmFydGhlc3Qtc2lkZSxyZ2JhKDAsMCwwLDAuMTIpLHJnYmEoMCwwLDAsMC4xMikgODAlLHJnYmEoMCwwLDAsMCkgMTAwJSl9LkhROHlmIC5Wd2U0VmJ7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGZhcnRoZXN0LXNpZGUscmdiYSg2NiwxMzMsMjQ0LDAuMjUxKSxyZ2JhKDY2LDEzMywyNDQsMC4yNTEpIDgwJSxyZ2JhKDY2LDEzMywyNDQsMCkgMTAwJSl9LmUzRHV1YiAuVndlNFZie2JhY2tncm91bmQtaW1hZ2U6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBmYXJ0aGVzdC1zaWRlLCMyYTU2YzYsIzJhNTZjNiA4MCUscmdiYSg0Miw4NiwxOTgsMCkgMTAwJSl9LlV4dWJVIC5Wd2U0VmJ7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGZhcnRoZXN0LXNpZGUscmdiYSgyNTUsMjU1LDI1NSwwLjMwKSxyZ2JhKDI1NSwyNTUsMjU1LDAuMzApIDgwJSxyZ2JhKDI1NSwyNTUsMjU1LDApIDEwMCUpfS5PMFdSa2YuUkRQWkV7LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO2NvbG9yOnJnYmEoNjgsNjgsNjgsMC41MDIpO2N1cnNvcjpkZWZhdWx0O2ZpbGw6cmdiYSg2OCw2OCw2OCwwLjUwMil9LnpaaG5ZZS5SRFBaRXtiYWNrZ3JvdW5kOnJnYmEoMTUzLDE1MywxNTMsMC4xMDIpfS5VeHViVS5SRFBaRXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuNTAyKTtmaWxsOnJnYmEoMjU1LDI1NSwyNTUsMC41MDIpfS5VeHViVS56WmhuWWUuUkRQWkV7YmFja2dyb3VuZDpyZ2JhKDIwNCwyMDQsMjA0LDAuMTAyKX0uQ3dhSzl7cG9zaXRpb246cmVsYXRpdmV9LlJ2ZUp2ZHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46LjVlbX0uQzBvVmZje2xpbmUtaGVpZ2h0OjIwcHg7bWluLXdpZHRoOjg4cHh9LkMwb1ZmYyAuUnZlSnZke21hcmdpbjo4cHh9LlpwNXFXZC51M2JXNGV7LW1vei1ib3gtc2hhZG93OjAgNnB4IDEwcHggMCByZ2JhKDAsMCwwLDAuMTQpLDAgMXB4IDE4cHggMCByZ2JhKDAsMCwwLDAuMTIpLDAgM3B4IDVweCAtMXB4IHJnYmEoMCwwLDAsMC4yKTtib3gtc2hhZG93OjAgNnB4IDEwcHggMCByZ2JhKDAsMCwwLDAuMTQpLDAgMXB4IDE4cHggMCByZ2JhKDAsMCwwLDAuMTIpLDAgM3B4IDVweCAtMXB4IHJnYmEoMCwwLDAsMC4yKX0uRktGNm1jLC5GS0Y2bWM6Zm9jdXN7ZGlzcGxheTpibG9jaztvdXRsaW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LkZLRjZtYzp2aXNpdGVke2ZpbGw6aW5oZXJpdDtzdHJva2U6aW5oZXJpdH0uYUNQMGxke2NvbG9yOiNkYjQ0Mzc7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxNnB4O3BhZGRpbmctcmlnaHQ6MzJweH0uZjFpUGZje291dGxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZX0uZjFpUGZjOmhvdmVyLC5mMWlQZmM6dmlzaXRlZHtjb2xvcjppbmhlcml0fS5sVUhTUntvdXRsaW5lOm5vbmV9Ym9keXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6cmdiYSgwLDAsMCwuODcpO2RpcmVjdGlvbjpsdHI7Zm9udC1mYW1pbHk6J1JvYm90bycsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyMHB4O21hcmdpbjowO3BhZGRpbmc6MH1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KXsudWM4MUZme2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLWhlaWdodDoxMDB2aDtwb3NpdGlvbjpyZWxhdGl2ZX0udWM4MUZmOmJlZm9yZSwudWM4MUZmOmFmdGVye2JveC1mbGV4OjE7ZmxleC1ncm93OjE7Y29udGVudDonJztkaXNwbGF5OmJsb2NrO2hlaWdodDoyNHB4fS51YzgxRmY6YmVmb3Jle21pbi1oZWlnaHQ6MzBweH0udWM4MUZmOmFmdGVye21pbi1oZWlnaHQ6MjRweH0udWM4MUZmLndLQmw4YzphZnRlcnttaW4taGVpZ2h0OjY0LjhweH19aDF7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjMycHg7bWFyZ2luOjB9aDJ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjIwcHg7bWFyZ2luLWJvdHRvbTowfWgze2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoyMHB4fWEsYTpob3ZlcixhOnZpc2l0ZWQsYVtocmVmXS51Qk9nbixidXR0b25bdHlwZT1idXR0b25dLnVCT2due2NvbG9yOiM0Mjg1ZjQ7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3V0bGluZTpub25lfWFbaHJlZl0udUJPZ24sYnV0dG9uW3R5cGU9YnV0dG9uXS51Qk9nbntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcH1hW2hyZWZdLnVCT2duOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfWJ1dHRvblt0eXBlPWJ1dHRvbl0udUJPZ246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9YVtocmVmXS51Qk9nbjphZnRlcixidXR0b25bdHlwZT1idXR0b25dLnVCT2duOmFmdGVye2JhY2tncm91bmQ6cmdiYSg2NiwxMzMsMjQ0LC4yNik7LW1vei1ib3JkZXItcmFkaXVzOjJweDtib3JkZXItcmFkaXVzOjJweDtib3R0b206LTJweDtjb250ZW50OicnO2xlZnQ6LTNweDtvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTNweDt0b3A6LTJweDt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzO3otaW5kZXg6LTF9YVtocmVmXS51Qk9nbjpmb2N1czphZnRlcixidXR0b25bdHlwZT1idXR0b25dLnVCT2duOmZvY3VzOmFmdGVye29wYWNpdHk6MX0uTEp0UG9je2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YmFja2dyb3VuZDojZmZmO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9LndLQmw4YyAuTEp0UG9je21pbi1oZWlnaHQ6MTAwdmh9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LndLQmw4YyAuTEp0UG9je21pbi1oZWlnaHQ6MH0uTEp0UG9jLC5iZGY0ZGN7dHJhbnNpdGlvbjouMnN9LkxKdFBvY3tmbGV4LXNocmluazowO2JhY2tncm91bmQ6I2ZmZjstbW96LWJveC1zaGFkb3c6MCAycHggMnB4IDAgcmdiYSgwLDAsMCwwLjE0KSwwIDNweCAxcHggLTJweCByZ2JhKDAsMCwwLDAuMTIpLDAgMXB4IDVweCAwIHJnYmEoMCwwLDAsMC4yKTtib3gtc2hhZG93OjAgMnB4IDJweCAwIHJnYmEoMCwwLDAsMC4xNCksMCAzcHggMXB4IC0ycHggcmdiYSgwLDAsMCwwLjEyKSwwIDFweCA1cHggMCByZ2JhKDAsMCwwLDAuMik7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvO21pbi1oZWlnaHQ6MDt3aWR0aDo0NTBweH0uTEp0UG9jLnBtVnJwZHt3aWR0aDo0NTBweH19QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LnBtVnJwZCAuYmRmNGRje2hlaWdodDphdXRvO21pbi1oZWlnaHQ6NTAwcHh9fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKXsuTEp0UG9jLk5MV3g2Ynt3aWR0aDo0NTBweH0uTkxXeDZiIC5iZGY0ZGN7aGVpZ2h0OmF1dG87bWluLWhlaWdodDo1MDBweH19LkxKdFBvYyAuYzhERDAsLkxKdFBvYyAuSWRBcXRme3Bvc2l0aW9uOmZpeGVkfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5MSnRQb2MgLmM4REQwLC5MSnRQb2MgLklkQXF0Zntwb3NpdGlvbjphYnNvbHV0ZX19LmM4REQwe3otaW5kZXg6NX0uSWRBcXRme3otaW5kZXg6NH0uYmRmNGRje2JveC1mbGV4OjE7ZmxleC1ncm93OjE7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjI0cHggMjRweCAzNnB4fS5iZGY0ZGMuT1JjRjFie292ZXJmbG93OnZpc2libGU7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxfS5PUmNGMWIgLlJGanVTYntvdmVyZmxvdzp2aXNpYmxlfS5PUmNGMWIgLm1iZWtiZSwuT1JjRjFiIC5pVWU2UGR7dHJhbnNmb3JtOm5vbmV9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo0NTBweCl7LmJkZjRkY3twYWRkaW5nOjQ4cHggNDBweCAzNnB4fX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KXsuYmRmNGRje2hlaWdodDphdXRvO21pbi1oZWlnaHQ6NTAwcHg7b3ZlcmZsb3cteTphdXRvfX0uYnhQQVlke21hcmdpbjphdXRvIC0yNHB4fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDUwcHgpey5ieFBBWWR7bWFyZ2luOmF1dG8gLTQwcHh9fS5rNlpqOGR7cGFkZGluZy1sZWZ0OjI0cHg7cGFkZGluZy1yaWdodDoyNHB4fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDUwcHgpey5rNlpqOGR7cGFkZGluZy1sZWZ0OjQwcHg7cGFkZGluZy1yaWdodDo0MHB4fX0uVXM3Zldle2JvcmRlcjowIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDowIDI0cHg7Ym94LXNpemluZzpib3JkZXItYm94fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDUwcHgpey5VczdmV2V7Ym9yZGVyLWxlZnQtd2lkdGg6NDBweDtib3JkZXItcmlnaHQtd2lkdGg6NDBweH19LlZZTWFwZXtiYWNrZ3JvdW5kOiNmZmY7Ym90dG9tOjA7ZGlyZWN0aW9uOmx0cjtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7ei1pbmRleDoxfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5WWU1hcGV7YmFja2dyb3VuZDojZTBlMGUwfX0uVllNYXBlIHN2Z3tkaXNwbGF5Om5vbmU7aGVpZ2h0OjEwMCU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KXsuVllNYXBlIHN2Z3tkaXNwbGF5OmJsb2NrfX0uY3lGbG5ie2NvbG9yOiMzMzY3ZDY7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLXRvcDoyNHB4fS5SUlAwb2N7ZGlyZWN0aW9uOmx0cjt0ZXh0LWFsaWduOmxlZnR9LmZ5WWFxZXt3aGl0ZS1zcGFjZTpub3dyYXB9LmpNTXhDe2NvbG9yOiNkYjQ0Mzd9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo0NTBweCl7LnF5UDRYZXt3aWR0aDo0NTBweH19LnVjODFGZn4ublk1b0RkLC51YzgxRmZ+Lm5ZNW9EZCAuanZlSVBle2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnVjODFGZn4ublk1b0Rkey1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHg7Y29sb3I6Izc1NzU3NTtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjU7bWluLWhlaWdodDoyNDBweDt3aWR0aDoyODBweH0udWM4MUZmfi5uWTVvRGQubkRtdVNie3dpZHRoOmF1dG99LnVjODFGZn4ublk1b0RkIC5qRTVycmZ7Y29sb3I6IzIxMjEyMTtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo1MDA7bWFyZ2luLWJvdHRvbToyNHB4fS51YzgxRmZ+Lm5ZNW9EZCAuejJaOTV7Y29sb3I6I2Y0NDMzNn0udWM4MUZmfi5uWTVvRGQgLmpFNXJyZjplbXB0eXttYXJnaW46MH0udWM4MUZmfi5uWTVvRGQgLmZ1cUF2Zntib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO3BhZGRpbmc6MjRweCAyNHB4IDEycHh9LnVjODFGZn4ublk1b0RkIC5qRTVycmY6ZW1wdHl+LlJVb3I1e2ZvbnQtc2l6ZToxNnB4fS51YzgxRmZ+Lm5ZNW9EZCAuUlVvcjU+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0udWM4MUZmfi5uWTVvRGQgLlJVb3I1PjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udWM4MUZmfi5uWTVvRGQgLmp2ZUlQZXthbGlnbi1pdGVtczpmbGV4LWVuZDtwYWRkaW5nOjAgMTZweCAxMnB4O3RleHQtYWxpZ246cmlnaHR9LnVjODFGZn4ublk1b0RkLm5EbXVTYiAuanZlSVBle2JhY2tncm91bmQ6I2ZhZmFmYTtkaXNwbGF5OmJsb2NrO3BhZGRpbmctYm90dG9tOjA7cG9zaXRpb246cmVsYXRpdmV9LnVjODFGZn4ublk1b0RkIC54ODFUMmV7LW1vei1ib3JkZXItcmFkaXVzOjJweDtib3JkZXItcmFkaXVzOjJweDtwYWRkaW5nOjEycHh9LnVjODFGZn4ublk1b0RkIC54ODFUMmU6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMTIpfS5JTUgxdmN7Y29sb3I6IzQyODVmNDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6NnB4IDA7cG9zaXRpb246cmVsYXRpdmV9LlVNeGQzYyAuSU1IMXZje3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uSU1IMXZjOmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoNjYsMTMzLDI0NCwuMjYpOy1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHg7Ym90dG9tOjZweDtjb250ZW50OicnO2xlZnQ6LTE2cHg7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi0xNnB4O3RvcDo2cHg7dHJhbnNpdGlvbjpvcGFjaXR5IC4yczt6LWluZGV4Oi0xfS5JTUgxdmM6Zm9jdXM6YmVmb3Jle29wYWNpdHk6MX0uanlIRUhke2Rpc3BsYXk6bm9uZX0uUW5yY3hie2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym90dG9tOjA7ZGlzcGxheTpub25lO2xlZnQ6MDtwb3NpdGlvbjpmaXhlZDtyaWdodDowO3RvcDowO3otaW5kZXg6MX0uUHd5aHV7bWFyZ2luLXRvcDoyNnB4fS5ZWTBuRWV7ZGlzcGxheTpub25lfS5YbXFYemR7aGVpZ2h0OjE4cHg7bWFyZ2luLWxlZnQ6NnB4O3dpZHRoOjE4cHh9LnJGck5NZXstbW96LXVzZXItc2VsZWN0Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3V0bGluZTpub25lO3BhZGRpbmctYm90dG9tOjhweDt3aWR0aDoyMDBweH0uYUNzSm9ke2hlaWdodDo0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOnRvcH0uYVhCdEl7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoxNHB4fS5YYjloUHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7Ym94LWZsZXg6MTtmbGV4LWdyb3c6MTtmbGV4LXNocmluazoxO21pbi13aWR0aDowJTtwb3NpdGlvbjpyZWxhdGl2ZX0uQTM3VVpley1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MjRweDtsaW5lLWhlaWdodDoyNHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5xZ2NCM2N7cGFkZGluZy1yaWdodDoxMnB4fS5zeHlZamR7cGFkZGluZy1sZWZ0OjEycHh9Lndoc09uZHtib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtkaXNwbGF5OmJsb2NrO2ZvbnQ6NDAwIDE2cHggUm9ib3RvLFJvYm90b0RyYWZ0LEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2hlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7bWFyZ2luOjA7bWluLXdpZHRoOjAlO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7ei1pbmRleDowfS53aHNPbmQ6aW52YWxpZCwud2hzT25kOi1tb3otc3VibWl0LWludmFsaWQsLndoc09uZDotbW96LXVpLWludmFsaWR7LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5JMFZKNGQ+Lndoc09uZDo6LW1zLWNsZWFyLC5JMFZKNGQ+Lndoc09uZDo6LW1zLXJldmVhbHtkaXNwbGF5Om5vbmV9Lmk5bHJwe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjEyKTtib3R0b206LTJweDtoZWlnaHQ6MXB4O2xlZnQ6MDttYXJnaW46MDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0uT2FiRE1ley1tb3otdHJhbnNmb3JtOnNjYWxlWCgwKTt0cmFuc2Zvcm06c2NhbGVYKDApO2JhY2tncm91bmQtY29sb3I6IzQyODVmNDtib3R0b206LTJweDtoZWlnaHQ6MnB4O2xlZnQ6MDttYXJnaW46MDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0uckZyTk1lLmswdFdqIC5pOWxycCwuckZyTk1lLmswdFdqIC5PYWJETWV7YmFja2dyb3VuZC1jb2xvcjojZDUwMDAwO2hlaWdodDoycHh9Lndoc09uZFtkaXNhYmxlZF17Y29sb3I6cmdiYSgwLDAsMCwwLjM4KX0ud2hzT25kW2Rpc2FibGVkXX4uaTlscnB7YmFja2dyb3VuZDpub25lO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCByZ2JhKDAsMCwwLDAuMzgpfS5PYWJETWUuWTJaeXBmey1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpQYXBlcklucHV0UmVtb3ZlVW5kZXJsaW5lIC4zcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO2FuaW1hdGlvbjpxdWFudHVtV2l6UGFwZXJJbnB1dFJlbW92ZVVuZGVybGluZSAuM3MgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKX0uckZyTk1lLnUzYlc0ZSAuT2FiRE1ley1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpQYXBlcklucHV0QWRkVW5kZXJsaW5lIC4zcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO2FuaW1hdGlvbjpxdWFudHVtV2l6UGFwZXJJbnB1dEFkZFVuZGVybGluZSAuM3MgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKTstbW96LXRyYW5zZm9ybTpzY2FsZVgoMSk7dHJhbnNmb3JtOnNjYWxlWCgxKX0uckZyTk1lLnNkSnJKYz4uYUNzSm9ke3BhZGRpbmctdG9wOjI0cHh9LkF4T3lGY3stbW96LXRyYW5zZm9ybS1vcmlnaW46Ym90dG9tIGxlZnQ7dHJhbnNmb3JtLW9yaWdpbjpib3R0b20gbGVmdDstbW96LXRyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpOy1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixib3R0b20sdHJhbnNmb3JtO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYm90dG9tLHRyYW5zZm9ybTtjb2xvcjpyZ2JhKDAsMCwwLDAuMzgpO2ZvbnQ6NDAwIDE2cHggUm9ib3RvLFJvYm90b0RyYWZ0LEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjNweDtsZWZ0OjA7d2lkdGg6MTAwJX0ud2hzT25kOm5vdChbZGlzYWJsZWRdKTpmb2N1c34uQXhPeUZjLC53aHNPbmRbYmFkaW5wdXQ9InRydWUiXX4uQXhPeUZjLC5yRnJOTWUuQ0RFTFhiIC5BeE95RmMsLnJGck5NZS5kTGdqOGIgLkF4T3lGY3stbW96LXRyYW5zZm9ybTpzY2FsZSguNzUpIHRyYW5zbGF0ZVkoLTM5cHgpO3RyYW5zZm9ybTpzY2FsZSguNzUpIHRyYW5zbGF0ZVkoLTM5cHgpfS53aHNPbmQ6bm90KFtkaXNhYmxlZF0pOmZvY3Vzfi5BeE95RmN7Y29sb3I6IzQyODVmNH0uckZyTk1lLmswdFdqIC53aHNPbmQ6bm90KFtkaXNhYmxlZF0pOmZvY3Vzfi5BeE95RmN7Y29sb3I6I2Q1MDAwMH0ubmRKaTVke2NvbG9yOnJnYmEoMCwwLDAsMC4zOCk7Zm9udDo0MDAgMTZweCBSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt0b3A6MnB4O2xlZnQ6MDt3aGl0ZS1zcGFjZTpub3dyYXB9LnJGck5NZS5DREVMWGIgLm5kSmk1ZHtkaXNwbGF5Om5vbmV9LkswWThTZXtmb250OjQwMCAxMnB4IFJvYm90byxSb2JvdG9EcmFmdCxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtoZWlnaHQ6MTZweDttYXJnaW4tbGVmdDphdXRvO3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctdG9wOjhweDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6LjM7d2hpdGUtc3BhY2U6bm93cmFwfS5yRnJOTWUuVHljOUp7cGFkZGluZy1ib3R0b206NHB4fS5kRU9PYWIsLm92bmZ3ZTpub3QoOmVtcHR5KXtmbGV4OjEgMSBhdXRvO2ZvbnQ6NDAwIDEycHggUm9ib3RvLFJvYm90b0RyYWZ0LEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO21pbi1oZWlnaHQ6MTZweDtwYWRkaW5nLXRvcDo4cHh9LkxYUlBoe2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleH0ub3ZuZndle3BvaW50ZXItZXZlbnRzOm5vbmV9LmRFT09hYntjb2xvcjojZDUwMDAwfS5vdm5md2V7b3BhY2l0eTouM30uckZyTk1lLmswdFdqIC5vdm5md2UsLnJGck5NZTpub3QoLmswdFdqKSAub3ZuZndlOm5vdCg6ZW1wdHkpKy5kRU9PYWJ7ZGlzcGxheTpub25lfUBrZXlmcmFtZXMgcXVhbnR1bVdpelBhcGVySW5wdXRSZW1vdmVVbmRlcmxpbmV7MCV7LW1vei10cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2FsZVgoMSk7b3BhY2l0eToxfXRvey1tb3otdHJhbnNmb3JtOnNjYWxlWCgxKTt0cmFuc2Zvcm06c2NhbGVYKDEpO29wYWNpdHk6MH19QGtleWZyYW1lcyBxdWFudHVtV2l6UGFwZXJJbnB1dEFkZFVuZGVybGluZXswJXstbW96LXRyYW5zZm9ybTpzY2FsZVgoMCk7dHJhbnNmb3JtOnNjYWxlWCgwKX10b3stbW96LXRyYW5zZm9ybTpzY2FsZVgoMSk7dHJhbnNmb3JtOnNjYWxlWCgxKX19LnVJWlFOY3t3aWR0aDoxMDAlfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey51SVpRTmMgLnpIUWtCZntmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9LnVJWlFOYyAuc25CeWFje2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNzU3NTc1fX0udUlaUU5jIC5JczdGaGJ7b3BhY2l0eToxO3BhZGRpbmctdG9wOjhweH0udUlaUU5jIC5NUUwzT2J7cGFkZGluZy1sZWZ0OjZweDtwYWRkaW5nLXJpZ2h0OjB9LktLZGxCZC5DREVMWGIuWXVJSThiIC5NUUwzT2J7b3BhY2l0eTowfS5vZzNvWmMgLnpIUWtCZiwub2czb1pjIC5NUUwzT2J7ZGlyZWN0aW9uOmx0cjt0ZXh0LWFsaWduOmxlZnR9LktLZGxCZCAuekhRa0Jme3RleHQtYWxpZ246bGVmdH0uZlJwVkVme2NvbG9yOiMyMTIxMjE7ZGlyZWN0aW9uOmx0cjtkaXNwbGF5OmlubGluZS1ibG9ja30udUlaUU5jIC5SeHNHUGU6ZW1wdHl7ZmxleDpub25lO21pbi1oZWlnaHQ6MDtwYWRkaW5nLXRvcDowfS5KUGRSNmJ7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTstbW96LXRyYW5zaXRpb246bWF4LXdpZHRoIC4ycyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSksbWF4LWhlaWdodCAuMnMgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpLG9wYWNpdHkgLjFzIGxpbmVhcjt0cmFuc2l0aW9uOm1heC13aWR0aCAuMnMgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpLG1heC1oZWlnaHQgLjJzIGN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKSxvcGFjaXR5IC4xcyBsaW5lYXI7YmFja2dyb3VuZDojZmZmZmZmO2JvcmRlcjowOy1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHg7LW1vei1ib3gtc2hhZG93OjAgOHB4IDEwcHggMXB4IHJnYmEoMCwwLDAsMC4xNCksMCAzcHggMTRweCAycHggcmdiYSgwLDAsMCwwLjEyKSwwIDVweCA1cHggLTNweCByZ2JhKDAsMCwwLDAuMik7Ym94LXNoYWRvdzowIDhweCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMTQpLDAgM3B4IDE0cHggMnB4IHJnYmEoMCwwLDAsMC4xMiksMCA1cHggNXB4IC0zcHggcmdiYSgwLDAsMCwwLjIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXgtaGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjEwMCU7b3BhY2l0eToxO291dGxpbmU6bm9uZTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoyMDAwfS5YdmhZMWR7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvfS5KQVBxcGV7ZmxvYXQ6bGVmdDtwYWRkaW5nOjE2cHggMH0uSlBkUjZiLnFqVEVCey1tb3otdHJhbnNpdGlvbjpsZWZ0IC4ycyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSksbWF4LXdpZHRoIC4ycyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSksbWF4LWhlaWdodCAuMnMgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpLG9wYWNpdHkgLjA1cyBsaW5lYXIsdG9wIC4ycyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSk7dHJhbnNpdGlvbjpsZWZ0IC4ycyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSksbWF4LXdpZHRoIC4ycyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSksbWF4LWhlaWdodCAuMnMgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpLG9wYWNpdHkgLjA1cyBsaW5lYXIsdG9wIC4ycyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSl9LkpQZFI2Yi5qVndtTGJ7bWF4LWhlaWdodDo1NnB4O29wYWNpdHk6MH0uSlBkUjZiLm9YeEtxZnstbW96LXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmV9Lno4ME0xe2NvbG9yOiMyMjI7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztvdXRsaW5lOm5vbmU7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MCAyNHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS51eVl1VmJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDo0MHB4O2hlaWdodDo0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcH0uak83aDNje2JveC1mbGV4OjE7ZmxleC1ncm93OjE7bWluLXdpZHRoOjB9LkpQZFI2Yi5lNUVtamMgLno4ME0xe3BhZGRpbmctbGVmdDo2NHB4fS5KUGRSNmIuQ2JsVG1mIC56ODBNMXtwYWRkaW5nLXJpZ2h0OjQ4cHh9LlBDZE9JYntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2hlaWdodDo0MHB4O2xlZnQ6MjRweDtvcGFjaXR5Oi41NDtwb3NpdGlvbjphYnNvbHV0ZX0uejgwTTEuUkRQWkUgLlBDZE9JYntvcGFjaXR5Oi4yNn0uejgwTTEuRndSN1Bje2JhY2tncm91bmQtY29sb3I6I2VlZWVlZX0uejgwTTEuUkRQWkV7Y29sb3I6I2I4YjhiODtjdXJzb3I6ZGVmYXVsdH0uejgwTTEuTjJScEJlOjpiZWZvcmV7LW1vei10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTstbW96LXRyYW5zZm9ybS1vcmlnaW46bGVmdDt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQ7Y29udGVudDoiXDAwMDBhMCI7ZGlzcGxheTpibG9jaztib3JkZXItcmlnaHQ6MnB4IHNvbGlkICMyMjI7Ym9yZGVyLWJvdHRvbToycHggc29saWQgIzIyMjtoZWlnaHQ6MTZweDtsZWZ0OjI0cHg7b3BhY2l0eTouNTQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEzJTt3aWR0aDo3cHg7ei1pbmRleDowfS5KUGRSNmIuQ2JsVG1mIC56ODBNMS5OMlJwQmU6OmJlZm9yZXtsZWZ0OmF1dG87cmlnaHQ6MTZweH0uejgwTTEuUkRQWkU6OmJlZm9yZXtib3JkZXItY29sb3I6I2I4YjhiODtvcGFjaXR5OjF9LmFCQmpiZHtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlfS56ODBNMS5xczQxcWU+LmFCQmpiZHstbW96LWFuaW1hdGlvbjpxdWFudHVtV2l6Qm94SW5rU3ByZWFkIC4zcyBlYXNlLW91dDthbmltYXRpb246cXVhbnR1bVdpekJveElua1NwcmVhZCAuM3MgZWFzZS1vdXQ7YW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkcztiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBmYXJ0aGVzdC1zaWRlLCNiZGJkYmQsI2JkYmRiZCA4MCUscmdiYSgxODksMTg5LDE4OSwwKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgZmFydGhlc3Qtc2lkZSwjYmRiZGJkLCNiZGJkYmQgODAlLHJnYmEoMTg5LDE4OSwxODksMCkgMTAwJSk7YmFja2dyb3VuZC1zaXplOmNvdmVyO29wYWNpdHk6MTt0b3A6MDtsZWZ0OjB9LkowWGxaZXtjb2xvcjppbmhlcml0O3BhZGRpbmc6MCA2cHggMCAxZW19LmE5Y2FTY3tjb2xvcjppbmhlcml0O2RpcmVjdGlvbjpsdHI7cGFkZGluZzowIDZweCAwIDFlbX0ua0N0WXdle2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xMik7bWFyZ2luOjdweCAwfS5CMmw3bGN7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xMik7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjQ4cHh9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo4NDBweCl7LkpBUHFwZXtwYWRkaW5nOjhweCAwfS56ODBNMXtwYWRkaW5nOjAgMTZweH0uSlBkUjZiLmU1RW1qYyAuejgwTTF7cGFkZGluZy1sZWZ0OjQ4cHh9LlBDZE9JYntsZWZ0OjEycHh9fUBrZXlmcmFtZXMgcHJpbWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZXswJXstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xNDUuMTY2NjExJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTE0NS4xNjY2MTElKX0yMCV7LW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNSwwLC43MDE3MzIsLjQ5NTgxOSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjUsMCwuNzAxNzMyLC40OTU4MTkpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTE0NS4xNjY2MTElKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTQ1LjE2NjYxMSUpfTU5LjE1JXstbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4zMDI0MzUsLjM4MTM1MiwuNTUsLjk1NjM1Mik7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjMwMjQzNSwuMzgxMzUyLC41NSwuOTU2MzUyKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC02MS40OTUxOTElKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNjEuNDk1MTkxJSl9dG97LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCg1NS40NDQ0NDYlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCg1NS40NDQ0NDYlKX19QGtleWZyYW1lcyBwcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2V7MCV7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgxNDUuMTY2NjExJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTQ1LjE2NjYxMSUpfTIwJXstbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC41LDAsLjcwMTczMiwuNDk1ODE5KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNSwwLC43MDE3MzIsLjQ5NTgxOSk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgxNDUuMTY2NjExJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTQ1LjE2NjYxMSUpfTU5LjE1JXstbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4zMDI0MzUsLjM4MTM1MiwuNTUsLjk1NjM1Mik7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjMwMjQzNSwuMzgxMzUyLC41NSwuOTU2MzUyKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDYxLjQ5NTE5MSUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDYxLjQ5NTE5MSUpfXRvey1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTU1LjQ0NDQ0NjElKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTUuNDQ0NDQ2MSUpfX1Aa2V5ZnJhbWVzIHByaW1hcnktaW5kZXRlcm1pbmF0ZS1zY2FsZXswJXstbW96LXRyYW5zZm9ybTpzY2FsZVgoLjA4KTt0cmFuc2Zvcm06c2NhbGVYKC4wOCl9MzYuNjUley1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjMzNDczMSwuMTI0ODIwLC43ODU4NDQsMSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjMzNDczMSwuMTI0ODIwLC43ODU4NDQsMSk7LW1vei10cmFuc2Zvcm06c2NhbGVYKC4wOCk7dHJhbnNmb3JtOnNjYWxlWCguMDgpfTY5LjE1JXstbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4wNiwuMTEsLjYsMSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjA2LC4xMSwuNiwxKTstbW96LXRyYW5zZm9ybTpzY2FsZVgoLjY2MTQ3OSk7dHJhbnNmb3JtOnNjYWxlWCguNjYxNDc5KX10b3stbW96LXRyYW5zZm9ybTpzY2FsZVgoLjA4KTt0cmFuc2Zvcm06c2NhbGVYKC4wOCl9fUBrZXlmcmFtZXMgYXV4aWxpYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlezAley1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE1LDAsLjUxNTA1OCwuNDA5Njg1KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTUsMCwuNTE1MDU4LC40MDk2ODUpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTU0Ljg4ODg5MSUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01NC44ODg4OTElKX0yNSV7LW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMzEwMzMwLC4yODQwNTgsLjgsLjczMzcxMik7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjMxMDMzMCwuMjg0MDU4LC44LC43MzM3MTIpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTE3LjIzNjk3OCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xNy4yMzY5NzglKX00OC4zNSV7LW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwuNjI3MDM1LC42LC45MDIwMjYpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LC42MjcwMzUsLjYsLjkwMjAyNik7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgyOS40OTcyNzQlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyOS40OTcyNzQlKX10b3stbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwNS4zODg4OTElKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDUuMzg4ODkxJSl9fUBrZXlmcmFtZXMgYXV4aWxpYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2V7MCV7LW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTUsMCwuNTE1MDU4LC40MDk2ODUpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNSwwLC41MTUwNTgsLjQwOTY4NSk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCg1NC44ODg4OTElKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCg1NC44ODg4OTElKX0yNSV7LW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMzEwMzMwLC4yODQwNTgsLjgsLjczMzcxMik7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjMxMDMzMCwuMjg0MDU4LC44LC43MzM3MTIpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTcuMjM2OTc4JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTcuMjM2OTc4JSl9NDguMzUley1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsLjYyNzAzNSwuNiwuOTAyMDI2KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwuNjI3MDM1LC42LC45MDIwMjYpOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTI5LjQ5NzI3NCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0yOS40OTcyNzQlKX10b3stbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDUuMzg4ODkxJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwNS4zODg4OTElKX19QGtleWZyYW1lcyBhdXhpbGlhcnktaW5kZXRlcm1pbmF0ZS1zY2FsZXswJXstbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yMDUwMjgsLjA1NzA1MSwuNTc2NjEwLC40NTM5NzEpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yMDUwMjgsLjA1NzA1MSwuNTc2NjEwLC40NTM5NzEpOy1tb3otdHJhbnNmb3JtOnNjYWxlWCguMDgpO3RyYW5zZm9ybTpzY2FsZVgoLjA4KX0xOS4xNSV7LW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTUyMzEzLC4xOTY0MzIsLjY0ODM3NCwxLjAwNDMxNSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE1MjMxMywuMTk2NDMyLC42NDgzNzQsMS4wMDQzMTUpOy1tb3otdHJhbnNmb3JtOnNjYWxlWCguNDU3MTA0KTt0cmFuc2Zvcm06c2NhbGVYKC40NTcxMDQpfTQ0LjE1JXstbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yNTc3NTksLjAwMzE2MywuMjExNzYyLDEuMzgxNzkwKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMjU3NzU5LC4wMDMxNjMsLjIxMTc2MiwxLjM4MTc5MCk7LW1vei10cmFuc2Zvcm06c2NhbGVYKC43Mjc5NjApO3RyYW5zZm9ybTpzY2FsZVgoLjcyNzk2MCl9dG97LW1vei10cmFuc2Zvcm06c2NhbGVYKC4wOCk7dHJhbnNmb3JtOnNjYWxlWCguMDgpfX1Aa2V5ZnJhbWVzIGJ1ZmZlcmluZ3t0b3t0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTBweCl9fUBrZXlmcmFtZXMgYnVmZmVyaW5nLXJldmVyc2V7dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9fUBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUtaWV7MCV7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfXRvey1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSl9fUBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUtcmV2ZXJzZS1pZXswJXstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfXRvey1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX19LnNad2Q3Y3toZWlnaHQ6NHB4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApOy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IDI1MG1zIGxpbmVhcjt0cmFuc2l0aW9uOm9wYWNpdHkgMjUwbXMgbGluZWFyO3dpZHRoOjEwMCV9LncyemNMY3twb3NpdGlvbjphYnNvbHV0ZX0ueGNOQkhjLC5NeXZoSSwubDNxNXhle2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9LncyemNMY3stbW96LXRyYW5zZm9ybS1vcmlnaW46dG9wIGxlZnQ7dHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdDstbW96LXRyYW5zaXRpb246LW1vei10cmFuc2Zvcm0gMjUwbXMgZWFzZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyNTBtcyBlYXNlfS5NeXZoSXstbW96LXRyYW5zZm9ybS1vcmlnaW46dG9wIGxlZnQ7dHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdDstbW96LXRyYW5zaXRpb246LW1vei10cmFuc2Zvcm0gMjUwbXMgZWFzZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyNTBtcyBlYXNlOy1tb3otYW5pbWF0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9LmwzcTV4ZXstbW96LWFuaW1hdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS53MnpjTGN7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2hlaWdodDoxMDAlOy1tb3otdHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdDt0cmFuc2Zvcm0tb3JpZ2luOnRvcCBsZWZ0O3RyYW5zaXRpb246dHJhbnNmb3JtIDI1MG1zIGVhc2U7d2lkdGg6MTAwJX0uVEtWUlViey1tb3otdHJhbnNmb3JtOnNjYWxlWCgwKTt0cmFuc2Zvcm06c2NhbGVYKDApfS5zVW9lbGR7dmlzaWJpbGl0eTpoaWRkZW59LmwzcTV4ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnhjTkJIY3tiYWNrZ3JvdW5kLXNpemU6MTBweCA0cHg7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7YmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHZlcnNpb24lM0QlMjcxLjElMjclMjB4bWxucyUzRCUyN2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyNyUyMHhtbG5zJTNBeGxpbmslM0QlMjdodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyNyUyMHglM0QlMjcwcHglMjclMjB5JTNEJTI3MHB4JTI3JTIwZW5hYmxlLWJhY2tncm91bmQlM0QlMjduZXclMjAwJTIwMCUyMDUlMjAyJTI3JTIweG1sJTNBc3BhY2UlM0QlMjdwcmVzZXJ2ZSUyNyUyMHZpZXdCb3glM0QlMjcwJTIwMCUyMDUlMjAyJTI3JTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyN25vbmUlMjBzbGljZSUyNyUzRSUzQ2NpcmNsZSUyMGN4JTNEJTI3MSUyNyUyMGN5JTNEJTI3MSUyNyUyMHIlM0QlMjcxJTI3JTIwZmlsbCUzRCUyNyUyM2U2ZTZlNiUyNyUyRiUzRSUzQyUyRnN2ZyUzRScpO3Zpc2liaWxpdHk6aGlkZGVufS5zWndkN2MuQjZWaHFlIC5NeXZoSXstbW96LXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmV9LnNad2Q3Yy5CNlZocWUgLlRLVlJVYnstbW96LWFuaW1hdGlvbjpwcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlIDJzIGluZmluaXRlIGxpbmVhcjthbmltYXRpb246cHJpbWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZSAycyBpbmZpbml0ZSBsaW5lYXJ9LnNad2Q3Yy5CNlZocWUgLlRLVlJVYj4ubDNxNXhley1tb3otYW5pbWF0aW9uOnByaW1hcnktaW5kZXRlcm1pbmF0ZS1zY2FsZSAycyBpbmZpbml0ZSBsaW5lYXI7YW5pbWF0aW9uOnByaW1hcnktaW5kZXRlcm1pbmF0ZS1zY2FsZSAycyBpbmZpbml0ZSBsaW5lYXJ9LnNad2Q3Yy5CNlZocWUgLnNVb2VsZHstbW96LWFuaW1hdGlvbjphdXhpbGlhcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUgMnMgaW5maW5pdGUgbGluZWFyO2FuaW1hdGlvbjphdXhpbGlhcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUgMnMgaW5maW5pdGUgbGluZWFyO3Zpc2liaWxpdHk6dmlzaWJsZX0uc1p3ZDdjLkI2VmhxZSAuc1VvZWxkPi5sM3E1eGV7LW1vei1hbmltYXRpb246YXV4aWxpYXJ5LWluZGV0ZXJtaW5hdGUtc2NhbGUgMnMgaW5maW5pdGUgbGluZWFyO2FuaW1hdGlvbjphdXhpbGlhcnktaW5kZXRlcm1pbmF0ZS1zY2FsZSAycyBpbmZpbml0ZSBsaW5lYXJ9LnNad2Q3Yy5CNlZocWUuaWVyaTdjIC5sM3E1eGV7LW1vei10cmFuc2Zvcm06c2NhbGVYKDAuNDUpO3RyYW5zZm9ybTpzY2FsZVgoMC40NSl9LnNad2Q3Yy5CNlZocWUuaWVyaTdjIC5zVW9lbGR7LW1vei1hbmltYXRpb246bm9uZTthbmltYXRpb246bm9uZTt2aXNpYmlsaXR5OmhpZGRlbn0uc1p3ZDdjLkI2VmhxZS5pZXJpN2MgLlRLVlJVYnstbW96LWFuaW1hdGlvbjppbmRldGVybWluYXRlLXRyYW5zbGF0ZS1pZSAycyBpbmZpbml0ZSBlYXNlLW91dDthbmltYXRpb246aW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUtaWUgMnMgaW5maW5pdGUgZWFzZS1vdXR9LnNad2Q3Yy5CNlZocWUuaWVyaTdjIC5US1ZSVWI+LmwzcTV4ZSwuc1p3ZDdjLkI2VmhxZS5pZXJpN2MgLnNVb2VsZD4ubDNxNXhley1tb3otYW5pbWF0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9LnNad2Q3Yy5qdWhWTSAudzJ6Y0xjLC5zWndkN2MuanVoVk0gLk15dmhJe3JpZ2h0OjA7LW1vei10cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciByaWdodDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciByaWdodH0uc1p3ZDdjLmp1aFZNIC5US1ZSVWJ7LW1vei1hbmltYXRpb24tbmFtZTpwcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2U7YW5pbWF0aW9uLW5hbWU6cHJpbWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlfS5zWndkN2MuanVoVk0gLnNVb2VsZHstbW96LWFuaW1hdGlvbi1uYW1lOmF1eGlsaWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlO2FuaW1hdGlvbi1uYW1lOmF1eGlsaWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlfS5zWndkN2MuanVoVk0uaWVyaTdjIC5US1ZSVWJ7LW1vei1hbmltYXRpb24tbmFtZTppbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlLWllO2FuaW1hdGlvbi1uYW1lOmluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2UtaWV9LnNad2Q3Yy5xZHVsa2V7b3BhY2l0eTowfS5zWndkN2Muaks3bW9jIC5zVW9lbGQsLnNad2Q3Yy5qSzdtb2MgLlRLVlJVYiwuc1p3ZDdjLmpLN21vYyAuc1VvZWxkPi5sM3E1eGUsLnNad2Q3Yy5qSzdtb2MgLlRLVlJVYj4ubDNxNXhley1tb3otYW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkO2FuaW1hdGlvbi1wbGF5LXN0YXRlOnBhdXNlZH0uc1p3ZDdjLkQ2VFVpIC54Y05CSGN7LW1vei1hbmltYXRpb246YnVmZmVyaW5nIDI1MG1zIGluZmluaXRlIGxpbmVhcjthbmltYXRpb246YnVmZmVyaW5nIDI1MG1zIGluZmluaXRlIGxpbmVhcjt2aXNpYmlsaXR5OnZpc2libGV9LnNad2Q3Yy5ENlRVaS5qdWhWTSAueGNOQkhjey1tb3otYW5pbWF0aW9uOmJ1ZmZlcmluZy1yZXZlcnNlIDI1MG1zIGluZmluaXRlIGxpbmVhcjthbmltYXRpb246YnVmZmVyaW5nLXJldmVyc2UgMjUwbXMgaW5maW5pdGUgbGluZWFyfS5SWkJ1SWJ7aGVpZ2h0OjRweDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJX0uQU51SWJie2JhY2tncm91bmQ6I2ZhZmFmYTtib3R0b206MDtsZWZ0OjA7b3BhY2l0eTouNTtvdXRsaW5lOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJX0uZmN0SXJke2hlaWdodDoyNHB4fS5TU0Jzd3toZWlnaHQ6MzdweDtvdmVyZmxvdzp2aXNpYmxlO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE5OHB4fS5xWnAzMWUgc3Zne2Rpc3BsYXk6YmxvY2t9LmxlcWxqY3t0cmFuc2Zvcm0tb3JpZ2luOjkuMDVweCA5LjNweH0uYnoxYjlke3RyYW5zZm9ybS1vcmlnaW46MjUuMTVweCAxMi42NXB4fS5pYXRUTXt0cmFuc2Zvcm0tb3JpZ2luOjM4LjE1cHggMTIuNjVweH0ueEQ1NVdke3RyYW5zZm9ybS1vcmlnaW46NTAuOXB4IDE1LjM1cHh9LnNPRU9Ve3RyYW5zZm9ybS1vcmlnaW46NTkuNXB4IDkuNHB4fS5aMG1yent0cmFuc2Zvcm0tb3JpZ2luOjY3LjVweCAxMi42NXB4fS5DTWdUWGMgLnFacDMxZS5lTE5UMWQsLlB4cFBUZSAueWhGeTZke29wYWNpdHk6MH0uQnQ0QmVie2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0udU9HUzN7ZGlzcGxheTpibG9jaztoZWlnaHQ6MjRweDtvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MjRweH0udU9HUzMuR1ZZNGtle2Rpc3BsYXk6aW5saW5lLWJsb2NrO29wYWNpdHk6MTtwb3NpdGlvbjpzdGF0aWN9LkdWWTRrZSsuR1ZZNGtle21hcmdpbi1sZWZ0OjIwcHh9LnVPR1MzOmFmdGVye2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgbm8tcmVwZWF0IGxlZnQgdG9wO2JhY2tncm91bmQtc2l6ZToxNDRweCAyNHB4O2NvbnRlbnQ6Jyc7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5NS2p0TGN7bGVmdDotMi45NXB4O3RvcDotMi43cHh9LmxrRjBCZiAuTUtqdExjOmFmdGVye2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IDB9LlloUkpsZntsZWZ0OjEzLjE1cHg7dG9wOi42NXB4fS5ZaFJKbGY6YWZ0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjRweCAwfS56VG5LUmJ7bGVmdDoyNi4xNXB4O3RvcDouNjVweH0uelRuS1JiOmFmdGVye2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggMH0ubGtGMEJmIC56VG5LUmI6YWZ0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9Lkc1Y1Q3YntsZWZ0OjM4LjlweDt0b3A6My4zNXB4fS5HNWNUN2I6YWZ0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAwfS5MSHZKWntsZWZ0OjQ3LjVweDt0b3A6LTIuNnB4fS5MSHZKWjphZnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IDB9LmlXV1F5ZSAueWhGeTZkLC5pV1dReWUgLnVPR1Mze29wYWNpdHk6MH0uaVdXUXllIC5NS2p0TGN7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDIwLjk1cHgsMi43cHgsMCl9LmlXV1F5ZSAuWWhSSmxme3RyYW5zZm9ybTp0cmFuc2xhdGUzZCg0NC44NXB4LC0wLjY1cHgsMCl9LmlXV1F5ZSAuelRuS1Jie3RyYW5zZm9ybTp0cmFuc2xhdGUzZCg3MS44NXB4LC0wLjY1cHgsMCl9LmlXV1F5ZSAuRzVjVDdie3RyYW5zZm9ybTp0cmFuc2xhdGUzZCg5OS4xcHgsLTMuMzVweCwwKX0uaVdXUXllIC5MSHZKWnt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTMwLjVweCwyLjZweCwwKX0udHNvQ2FiIC55aEZ5NmR7b3BhY2l0eTowfS50c29DYWIgLmxlcWxqY3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMi45NXB4LDAsMCkgc2NhbGUoMCl9LnRzb0NhYiAuYnoxYjlke3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgyNi44NXB4LDAsMCkgc2NhbGUoMCl9LnRzb0NhYiAuaWF0VE17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDUzLjg1cHgsMCwwKSBzY2FsZSgwKX0udHNvQ2FiIC54RDU1V2R7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDgxLjFweCwwLDApIHNjYWxlKDApfS50c29DYWIgLnNPRU9Ve3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMTIuNXB4LDAsMCkgc2NhbGUoMCl9LnRzb0NhYiAuWjBtcnp7dHJhbnNmb3JtOnNjYWxlKDApfS50c29DYWIgLnVPR1Mze29wYWNpdHk6MTt0cmFuc2l0aW9uOjMwMG1zIGN1YmljLWJlemllciguNCwwLC4yLDEpfS50c29DYWIgLk1LanRMY3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMi45NXB4LDIuN3B4LDApO3RyYW5zaXRpb24tZGVsYXk6MG1zfS50c29DYWIgLlloUkpsZnt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjYuODVweCwtMC42NXB4LDApO3RyYW5zaXRpb24tZGVsYXk6MzMwbXN9LnRzb0NhYiAuelRuS1Jie3RyYW5zZm9ybTp0cmFuc2xhdGUzZCg1My44NXB4LC0wLjY1cHgsMCk7dHJhbnNpdGlvbi1kZWxheTo2NjBtc30udHNvQ2FiIC5HNWNUN2J7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDgxLjFweCwtMy4zNXB4LDApO3RyYW5zaXRpb24tZGVsYXk6OTkwbXN9LnRzb0NhYiAuTEh2Slp7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDExMi41cHgsMi42cHgsMCk7dHJhbnNpdGlvbi1kZWxheToxMzIwbXN9QGtleWZyYW1lcyBDbGltYXhFbGVtZW50MXswJSx0b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfTUwJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwycHgsMCl9fUBrZXlmcmFtZXMgQ2xpbWF4RWxlbWVudDJ7MCUsdG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX01MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTJweCwwKX19QGtleWZyYW1lcyBDbGltYXhFbGVtZW50M3swJSx0b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfTUwJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMnB4LDApfX1Aa2V5ZnJhbWVzIENsaW1heEVsZW1lbnQ0ezAlLHRve3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9NTAle3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDE4cHgsMCl9fUBrZXlmcmFtZXMgQ2xpbWF4RWxlbWVudDV7MCUsdG97dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX01MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMjRweCwwKX19LmVQaTB6ZiAueWhGeTZkLC5lUGkwemYgLnVPR1Mze3RyYW5zaXRpb246MjAwbXMgY3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LmVQaTB6ZiAueWhGeTZkIHBhdGgsLmVQaTB6ZiAudU9HUzM6YWZ0ZXJ7YW5pbWF0aW9uLWR1cmF0aW9uOjIwMG1zO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LmVQaTB6ZiAueWhGeTZke29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX0uZVBpMHpmIC51T0dTM3tvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlKC40KX0uZVBpMHpmIC5sZXFsamMsLmVQaTB6ZiAuTUtqdExje3RyYW5zaXRpb24tZGVsYXk6MG1zfS5lUGkwemYgLmxlcWxqYyBwYXRoLC5lUGkwemYgLk1LanRMYzphZnRlcnthbmltYXRpb24tbmFtZTpDbGltYXhFbGVtZW50MTthbmltYXRpb24tZGVsYXk6MG1zfS5lUGkwemYgLmJ6MWI5ZCwuZVBpMHpmIC5ZaFJKbGZ7dHJhbnNpdGlvbi1kZWxheTozMG1zfS5lUGkwemYgLmJ6MWI5ZCBwYXRoLC5lUGkwemYgLlloUkpsZjphZnRlcnthbmltYXRpb24tbmFtZTpDbGltYXhFbGVtZW50MjthbmltYXRpb24tZGVsYXk6MzBtc30uZVBpMHpmIC5pYXRUTSwuZVBpMHpmIC56VG5LUmJ7dHJhbnNpdGlvbi1kZWxheTo2MG1zfS5lUGkwemYgLmlhdFRNIHBhdGgsLmVQaTB6ZiAuelRuS1JiOmFmdGVye2FuaW1hdGlvbi1uYW1lOkNsaW1heEVsZW1lbnQzO2FuaW1hdGlvbi1kZWxheTo2MG1zfS5lUGkwemYgLnhENTVXZCwuZVBpMHpmIC5HNWNUN2J7dHJhbnNpdGlvbi1kZWxheTo5MG1zfS5lUGkwemYgLnhENTVXZCBwYXRoLC5lUGkwemYgLkc1Y1Q3YjphZnRlcnthbmltYXRpb24tbmFtZTpDbGltYXhFbGVtZW50NDthbmltYXRpb24tZGVsYXk6OTBtc30uZVBpMHpmIC5zT0VPVSwuZVBpMHpmIC5MSHZKWnt0cmFuc2l0aW9uLWRlbGF5OjEyMG1zfS5lUGkwemYgLnNPRU9VIHBhdGgsLmVQaTB6ZiAuTEh2Slo6YWZ0ZXJ7YW5pbWF0aW9uLW5hbWU6Q2xpbWF4RWxlbWVudDU7YW5pbWF0aW9uLWRlbGF5OjEyMG1zfS5lUGkwemYgLlowbXJ6e3RyYW5zaXRpb246MTAwbXMgMjgwbXMgY3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LmRDZ0dEZSAueWhGeTZke29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm5vbmV9LnVPR1MzOmFmdGVye2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBU0FBQUFBd0NBWUFBQUN4SXFldkFBQVB4RWxFUVZSNDJ1M2RmV3hkWlIwSDhQdVh4RCtNYXhhalFmK1kvVU0zQkt5ck1XRTAwTEdTc1Jla0cxU0lHQjJCTkRnSVFySkpoS2xsbWJwaEJnVm1zaTZLQTh6R09vUUZHR00ybFE0MklYZzNTOXphcWV0dHAxdm5JcnQ5MGIzZzNCNmY3OWw5YnAvNzlIay81OXg3MnA0bitXVjN0N2YzM3A3ejNNLzVQYi9uT2VkbU1tbExXOXJTTnBYYnVYLzBrK0dYbnljbmYzUS82Yjk5VVJDNGpmdndzM1FMcFMxdGFZc0ZIa0RUdDdoZUgvZmRuVUtrYVJkR1I4alpydCtSMFUxUGtWTXI3aVhIdjdNdzJHNkRjNzhTQkc3alB2d01qOEZqOFR2cGxwdWNyYnI3V1BXTXc2dXlOUEw0ZDg3Z2hxWjBxd2dOSDRLK3hnWWpQa2NXMUJVRHY1TnV1ZEp0ZUhMMVEwVm9YQU1ncGR0MEVyWjlwUDJ5YkZmZkovKzJrckFvUUZTYmJoeUdqeW5ya1FDVUlqUzIvWkRSK01JakJwNHIzYTUrN2VudUZ3ZzUrRTJ2dVBqM1ZoSVRRSGthaEVmb3NtTXJnbjgvTTd5Nm5VSlVuZmdOKzhiUi9lU0cxMzlNcm01L3dEbG1iYjFQR1hjLzFtU1YrZWdRbXFyRE1memR5RnFpZ2tlV0VhVkRYZnMyT0RnWTlPbGRIYmNSMHQzb0YrZnpKQWFBQ0FzZ0JIejQrTVRJRC9QVkkrdld6aHBZVzVWWWZHUjRmUDQzOTRTT2JOT05UdmpJQUVKTmFLcDE5cEUzWGlxcDY4UVZlSTAwRzdKcmkxOWZmZW1ndW5VcHliOS9peGRBRjQ0OEV2MjJ6bzRCcEVJb003UVNFUFZSaUpvVHQyR1IrY1FCa0NuNzJUKy9qcng2N2RWQjRMWU1uMklXMUg5a3lueElVRGlPR3g0eEFGNUtqTHJ0T2ZibmtzL0d0bDIzZTJkQkYwY1Brc2dCRWhESzlJd2hCSHo0b01PeUxJV29JVEViTjY3czU3bmx0eWdCNnJ6K3EyVDFsVE5MQWhDcEFNSVV2YzNmUWg5VVE2T1JSZ3NORExxN3VDQVJCZitjcllYWHdtdldoTWJuNTQrVUhSL1VoSHhteVU0Lyt3VEozZldOWU44TURRMGxKazdtUHd6ZUU1WjNES3ovYVNRZmRySFVnUDd0bXdXaEhoUUxRQktFUkh3RWlOcG5EajlSblVpQUVNMmR6eERJangyS3dHM2NwMFBuczgvZlZRelY4QXZaam9nUEMveE1CcEJ1R0ZiNDhPK0lFSml3Z2ZmU09CRXluekQ0c0RWY0NPeWZvUk1uS2c4UWZROTRMM3pmQ1l2UXhrTzdwSDA5VEJaRS92VWFpUVVnUjRSUUg2SVFyWjB6dUtFcVVRQmhvN09kK3Q2SkQ0TEFiUlRpY0RTd0FhaDN5VHdwUU1oMFZBQ3BzaUQ4bmdLZnpRbUNSNHpOTGpXZnNKRGs3NytqdUM0b1RuelFrUG53QUxGQVBhbFMrR0FieXZwTzdyYWJ2RC9zbzJjdWFFY0VpU2hJaXdBNUlzUWdxbGg5U055b3lIS3dRM3NIK3drS2IreCszT2IvWDFhQTZGQk9nazlMZ3ZGaDBXSXoyK1ZhY01iak1Wd2JmZmN0WlNjKzIvdEJzQkJSOXR4aDhFR1Q0Y092YWk5ck5pVEplc1R3L1R2WHZMOVJYK2ZjdXRRTm5UOHRMRVprMC9JeWdEd1FLa0NVcGNPeWhvb0NoS0VXZHF3Sm0wb093ZWgvWmt3QWZGaE0wMjEvMTZsMm9PS0NCeDdMRCsvQzRvT0dnd3VQRHJJTU1jcVJEZUUxRGkyK1hvc1A2bzIrMCs0MmZkNDZDK0x3S2NhWjR5UTJnRHdSS250OVNOeWdxUGNnKytIdnc4N2c0NVhEZTdYNElJSWl0R0lHVEZhRXhuMnFUblQ0dVYrS0FDMmJRQUF0VTJZcDlBUGtOR1ZPc3hydjRRVE5sakJNaStLMERBQ0VBNHdLSHhaWXVSMUxOa1Nma3ordFI0ZlA5bXV1OVBwN2JRL0E5Uzk5MjY0Z0xRSG9RdS95ZUFFS2dWQ2hQdFJHSWFxcU9FRElpbGlnQStCZkUwREJOTHhtdlk4NERhODdpb2tmdk1MczAwUUJxRlZaek4wNG5aeGNXR05WcjBuU29rRUFoTmk5YUs0V0lCWURlOStKREI4OGwyN2RHSUwxTGVEakE1Q3NmK3ZDV0pDV1pUOXNLSGFxazhRS1VBaUV1UHJRdzRrWWdySDZrRGd6SU9LRGNGMklxTUlIUjFsSi9hZHJBZ0hVSmR2dUZ3ZTNrdk9kSHd0aTZJNDZiZWFUdEJYTERDQ0drQTFFb2JNaFpEMzBPVXo5aG1VOWZQaE11N3VXSDVSWmtBYWZJTUpPeS9kWUFCUVNJYmFRa1daRFRiRURwQ3BDWThFaTdoTnhrdUZqTXd5ekJRaEhQQWxBM1JNZElIUThCcEFPb1NTdVZPWUJZZ2k5OCtUanhpR1piemFFMzhIdjZ2b1AzZ2ZlQXcvUFc5ZCtLWWdvcHQyTkMyOVJrQVlvTHZpd0NETXRENERLaEZDaFB0U3g1ZGlTMnRnQVFxaW00VzJ6SDhTMmQra082R3NvWGk3Q0J4L1YrcDlJWUJnWUlLU3hzU3dJalh2LzUvTWwrTEFRaDJRb1VDZHhaYkFJRUdMZnZuMmtjL3Mya20xdWxzSVRMRW90Qk5ibTJHWkRlS3lwLytBMU96czdTVGFiTFE3ckdUNHVBR0hhM1hmaExUNFh5R3FkOFdIaE95M1BBQ29UUW91TzN0cEhzclJmSDdtOGpXUnJxMklCaUdWQ3BvV0lKbndRU0UxOUFVSW5qUTBnMXJxNkNKa3hvNndBOGNNdkhVSmhpczdsQmlpWHl3VUFBQUprSWlwOFdHQXRrUzRid3Q4ZUxISzB5SHFBSDE2N3A2ZW5CQjVYZ0V3TGJWV0J0VUxGdnVtRFQ1aHBlUjZnbUJFcTRqTVdlUXJSdzdFQTVETGxQZzZmM0lJaVFJamhleFk3QXlUT2ZNVUdFR3V0cllSTW0xWVdnSEJTb2dvZ0ZwaXh5aVMweVFCaU02UU1JWllOeWZBUnN5RWM0TUprUFF3ZklPZ0xrRGp4NGhJNE9CY1BMcWM2dlFEeW5wWVhBWW9Kb1FDZmZTWDRqTVdSeS90b05KVU5JQ00rQWtESWdsUkhNNS9WcTdFQWhEWThUTWl5WmZFUHdXaG5Nd0hrYzBTY3UrWTBpVEx1L2RXbzlEMWc3WTBZL0RJTmdCQU15U2dRKzFhdlVtWkJmRGFFakFlQjJ5Wjg4Sng4MWdONEVIaHRYNEJRNDVSTnBKZ0M5ZEJ4QjVqZTVWNEFlVTNMeXdDS0dLRWlQaXFBRUQwQlJCMDBhbU1EU0Zkd0xzR0hpN04vYlNSL09iaUxaTnZhaXFkVm1BQkNXbDBSZ0ZqcjdpYWt2ajQrZ0xLMVpvQThwbWVqQm1qaDQvL3hBb2hIaUs4TktSR3luS2dJc2g0OGw1RDFNSHg4QWNJbGFYUjlXeGQ0elhIN2wyWXl2bG1RODM1WEFSUVJRZ0UrblFWOGRBQXhoQzVCMUJZNVFLSHdLWFNZOTc3L1BTTStlTXpPblRzckN4QnJtemRIVWg4UzMvLzVQWjgyQXVSVGxJd2FJSVF2UUF3aE1Sdnl4VWZNZWhnKzRtdjZBSVFhamc4K09GVkQ5WnpJWUgwUmlneWdrQWdWOFhFRkNKSDdlSlpDVkJVS0lKdWRZSXNQcXczdzA2bXlvUmVPY0lrQmlBM0xXbG9pUFIzRGhBL0NaemdkQjBDWUdmSUZDQUVvU2lBU3N5RlQxdE4wb3pIcmtRSDA5cHdyaW1HYWR2ZkJCNThQYlIrbEJ4RHZMR2h3cS8zK3p4a0E4a1NvQkI4ZmdDNGgxR1FOa005T1VPRnpvWDlwTUo3bk8xOHg2RkJNTi9RQ1BpbEFrd2NnS1VMMFFJUk1WM1hDTWdzOGhoV2ErYXhIaFE4RGlNZEhCeENiZHZmcCt6Z2R5YlEvc0w3SHV5QnRtd0VEb0lnUmVtamQ5ajdTWEJzZW9KNk1HU0Rmc2E4T0gxejFEYk1aYkdxV0QzUkFGS1JsSzU0WlBva0JhTWVPS1Q4RWl3SWdFU0hXRDNBd2txMld4MzM0bWFyUXJBc1JIeDFBbUhiMzZmdFlLVzI3VDRLTDB0dUFjMkJlU1ZoZnZwVUJGQkZDQVQ1ekdrZ1FQRUx1QUhYUURLZ3FGb0JzOEdFaFE0Z1ZwTVhzSjVpK0xVUmFoTzZjOERVZ0UwSnNXTTdYQm4yeUhwOE1DTlB1dmdkZkxNeTEzU2Y0UExqaVV3eWJhWGtlb0pBSWxlQWpJdVFDVURaalg0U09DaC9VZk5CSlpJdktSSVJ3WkVQNnpmREJiUjZmaWdHRTRkYURENmJUOEJITWdya2d4QTVLUVVocVBiYjR1QUFrbTNhM0NkbTB1NmxwcCtWVitDQUxzcG1XRndIeVJBajRuUHZhZkRJT0lJYVFEVURaVE1mUTJ4bTNhZmlvOEdsdXk1STdONHlRdnVPalZnamhTTWZQZkZVY29JUXRSTVFaMXE0ZGZWUG5mNGx0ck4vNVVXenJnR3dRTW9VclBDNURzRERUN2xnMDZicGZsQVZwRFQ0c2pKbXdEQ0JIaEJnK0xMUUl5ZUhwby9ENExVU01DaDhjTFJIV0NISERNTnl1R0VBNEZhT21KakduWWh6ZVBaM1V2ZGhJWm0rNU5UajVONjdWeks4ZE9HOEVDRWpGQVpDSUVKL3ArR1E5cmdENUZwNHhZK2E3dmNkTnkxdmdFMFIzb3g5QWxnaUorRGdpbEtmd2hEc1ZJMHA4WEJBQ01zVkxLQWo0bEFXZ0JKNk11bWYzVlVWOEVOLzkvV094QWRUeTIzTkdnSUNVN0hjUExxd2pZcmdnb1FJbkxENDJBQUdSVHozN3JTQ2luSGEzeW9Sd25wZ3RQSHdXcEp1VzF3RmtRQWo0bks1ZFFHUUFtUkNpOExUUkNIOHlhdFQ0dUNERUx1bkpWc3p5WVFCbzBsMk9BNWR6WVBEdzBYSDBENUVqbE0zOXozc0dMQXFBRUt3dnlFQnlmUzUyd2pUQ0JCQVdEektBWENDcWZtWVZxZjlCUDFuNjVPbXlCNGJNM2dEbDlQaXdzRVhvNk96Nmp0TWJwMGQzT1k0NDhMRkZDSmZiUUhnQU5QRXZTRWJIOW16SXBjSUhnVXQrSHZ2M1B5TkZDTFVkMy9wUFdJREVFMDhaUXI3QjQyTURFT3Z6SWtJNmpENjNjVG1wZStDUDVMb1Z2ZVNHTlVQR2ZxK0wrVDhiTlliTlRLUVRRQUpDeTllL1hJS1BDU0hFeU95YnNoU2Y2QzlZNzNKV084SVdIeHVFY01ZN20vbHdCR2hTWEpKVkhIS3A0dVpYbDBlR2tNM1FDNkU3NnZvQ3BMdnVUeGgwWEFIQ0lrSVZRTEtZK1pOZmhBYklCaDRaUG04ZU9CTU5RTGt4ZkNnbUFJWFlJRVFmbDZmd3hQZVZQYWJyK1lUQng0UVFPb3gwblJBTkEwQ1Q0cUwwR0Y2WjhPRXpJWmYxSjdKVnY3YjRZSitwaGwrMkFJbERLcHVMajRYRnh4WWdOQ3dtdE1HSHozNENnQjRkakFVZUdUNzQzSGhOd3l1Q3g4ZUVFSDVHNFZuYmU4VzhlQzlLSHhjKzRzWVZFZUk3alF3aEEwRFRKc3ZYOHFEUWJJc1FBalVNSFE0cTZMQitwWDdkMGREWmp3b2dWVEZaTnVUeVJjaUVqd3RBd053R29DOC91cVVJRUdwQUNGTVc1SUtPREI0VytMeEVCUkR3K2ZDcW13bENoMUFCbm5ZS1QzbStscWNjK1BnZ1pKeFJtQ1JmVElpaEZiSWJGNFR3ZUVDRUQ1RUtJMHpoLy9yUUsrVE9OMWVXL3E0Qklld2pFM0EyQU5sbVBiWUkyZURqQWhBYVVOYmhnOEx6T0h4b0JvUndSY1lWSDZ2c3h4SWdIaDhWUWdWNHNoU2U4bjR4b1FtZmtVTmZ0OGJIWm9QYkltUTFyVGxKdnByWlpTaW1xaEVCR2dSdW0wQzdidE5UeW82UEdUTFQrOFc2SHgxQXJsbVBMR3pCTVFHaysySkN3T2FTL1RCOGdxQlpVQnp3bUdZZ1hRR1M0U01pUkcvbktUeVYrV3BtYk9pdytMaHVmSnNwZXV1MUZaa01WbXJ0U0JBOGVDK05ydnZoNmU0WFFpSGtHa0FJSHlLWG9SZHJ1R1NxQ3FBb3Y0QXdDb0R3WG5WL0MwNUlOUldleGV3blRCWVV4UkRZRmlBZFBvVUFQR3YzVmpkVVpTclZ3dUFUWnVPYkVQSmE2SlhKMUJSQWFpbk1sSFZ4RWRtME9oZXRoZGZDYTlhRTNSY1lWcFVUSVJSaTJaQU1CV3FYOTRvUE5qSWhmQWtnSXN6aXdiQ0xGdmxnMXdOQzVtUENoeFhuVllWblpmYmprUVdGUFFIWUZTRGdNemhyaVJJZkNrOTc5eGZuVjJjcTNWenhpWHFjcTVvZHkwelJWdTVNQ09HS3oyUnIvT3BvTWZ2UkFtVElnbnhPQURaT3Uxc0F4UEJod2NQVE4zTlJsc0xUa0ppTkgxdzBTWU5QWEVVMkhVS1pLZDVRRTNJdFRQc0d3TXVrTFRnL2pDODhHN01mTGd0aUVmYnFBMWoxN1B6R0RmaXdvUEQwVVhpYUU3bnhnUkRnWWZqd0c3VWN3UkNTWGVCN3FqYk1qcmxPMGJzV3JzT3NLNXBzRFdmSWk0Vm4wL0FyS25pOHN4OEJJQmsrQTE5WWtxZndWTGJPazdhSm5RMkpVK2xoQXBrVnNoN1h0VVJUb2FFd3oyYy9QRUo4bUVEeVBRaDd2ZWtjeVROOEtEWUFoOEZES0R6dEZKN3FkTSttTFhSRHRvS015SGRvQnNTd0xpaUZaNUsxM0VmdFBENEkxSGtvUExYcHhrbGI1QTJBQUNOa01RQkpYUGVEMjdnUFA4T3NHczU3aXZwazFyUWxwMTNUdnIrYVpqb29MR09vQlhpYTBxMlN0clNsTFcxcFMxdmEwcGFVOW44aEl4R3pNQVR6cWdBQUFBQkpSVTVFcmtKZ2dnPT0pfS5Sd0JuZ2N7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy1tb3otZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS40O3BhZGRpbmc6MCAyNHB4IDE0cHh9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo0NTBweCl7LlJ3Qm5nY3twYWRkaW5nLWxlZnQ6NDBweDtwYWRkaW5nLXJpZ2h0OjQwcHh9fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5Sd0JuZ2N7aGVpZ2h0OjE2LjhweDtwYWRkaW5nOjI0cHggMCAwO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9fS51N2xhbmR7aGVpZ2h0OjE2LjhweDttYXJnaW46OHB4IDB9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LnU3bGFuZHttYXJnaW46MH19LlRrVTBYYy5Ua1UwWGN7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDttYXJnaW46LThweCAwIDAgLTE2cHh9LlRrVTBYYyAuQ2UxWTFje292ZXJmbG93OnZpc2libGU7cmlnaHQ6OHB4O3RvcDoxNHB4O3dpZHRoOmF1dG99LlRxdVhBe2JvcmRlci1jb2xvcjpjdXJyZW50Q29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDo0cHggNHB4IDAgNHB4O2hlaWdodDowO3dpZHRoOjB9LnU3bGFuZCAuQjlJckpie2NvbG9yOiMyMTIxMjF9LkJnemdtZHtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjhweCAtMTZweDtwYWRkaW5nOjB9LmwwejNVYy5YV0F3OSAuQmd6Z21ke3BhZGRpbmctYm90dG9tOjI0cHh9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LkJnemdtZHttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXRvcDowfX0uQmd6Z21kIGxpe2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjowfS5CZ3pnbWQgYXstbW96LWJvcmRlci1yYWRpdXM6MnB4O2JvcmRlci1yYWRpdXM6MnB4O2NvbG9yOiM3NTc1NzU7cGFkZGluZzo2cHggMTZweDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzfS5CZ3pnbWQgYTpmb2N1c3tiYWNrZ3JvdW5kOiNlZWVlZWV9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LkJnemdtZCBhOmZvY3Vze2JhY2tncm91bmQ6I2UwZTBlMH19LmpndnVBYnstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1vei10cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzO3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3M7Ym9yZGVyOjA7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDtjb2xvcjojNDQ0O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXJ9LmlqMHh5e2NvbG9yOiNmZmY7ZmlsbDojZmZmfS5qZ3Z1QWIudTNiVzRle2JhY2tncm91bmQtY29sb3I6cmdiYSgxNTMsMTUzLDE1MywwLjQpfS5pajB4eS51M2JXNGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIwNCwyMDQsMjA0LDAuMjUxKX0ua1JveXR7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDApO3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gMCBsaW5lYXIgLjJzLG9wYWNpdHkgLjJzIGVhc2U7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMCBsaW5lYXIgLjJzLG9wYWNpdHkgLjJzIGVhc2U7YmFja2dyb3VuZC1zaXplOmNvdmVyO2xlZnQ6MDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt2aXNpYmlsaXR5OmhpZGRlbn0uamd2dUFiLnFzNDFxZSAucnkza1hkIC5rUm95dHt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO29wYWNpdHk6MTt2aXNpYmlsaXR5OnZpc2libGV9LmpndnVBYiAua1JveXR7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGZhcnRoZXN0LXNpZGUscmdiYSgxNTMsMTUzLDE1MywwLjQpLHJnYmEoMTUzLDE1MywxNTMsMC40KSA4MCUscmdiYSgxNTMsMTUzLDE1MywwKSAxMDAlKX0ubGh0akpkIC5rUm95dHtiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgZmFydGhlc3Qtc2lkZSxyZ2JhKDE1MywxNTMsMTUzLDAuNCkscmdiYSgxNTMsMTUzLDE1MywwLjQpIDgwJSxyZ2JhKDE1MywxNTMsMTUzLDApIDEwMCUpfS5pajB4eSAua1JveXR7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGZhcnRoZXN0LXNpZGUscmdiYSgyMDQsMjA0LDIwNCwwLjI1MSkscmdiYSgyMDQsMjA0LDIwNCwwLjI1MSkgODAlLHJnYmEoMjA0LDIwNCwyMDQsMCkgMTAwJSl9LmxodGpKZC5SRFBaRXtjb2xvcjpyZ2JhKDY4LDY4LDY4LDAuNTAyKTtmaWxsOnJnYmEoNjgsNjgsNjgsMC41MDIpO2N1cnNvcjpkZWZhdWx0fS5pajB4eS5SRFBaRXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuNTAyKTtmaWxsOnJnYmEoMjU1LDI1NSwyNTUsMC41MDIpfS5qZ3Z1QWIuUkRQWkV7LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO2NvbG9yOnJnYmEoNjgsNjgsNjgsMC41MDIpO2N1cnNvcjpkZWZhdWx0fS52Uk1Hd2Z7cG9zaXRpb246cmVsYXRpdmV9LmUyQ3VGZXtib3JkZXItY29sb3I6cmdiYSg2OCw2OCw2OCwwLjQpIHRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6NnB4IDZweCAwIDZweDtoZWlnaHQ6MDt3aWR0aDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjVweDt0b3A6MTVweH0uQ2VFQnR7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoyNHB4O292ZXJmbG93OmhpZGRlbn0ubmNGSGVkey1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IC4xcyBsaW5lYXI7dHJhbnNpdGlvbjpvcGFjaXR5IC4xcyBsaW5lYXI7YmFja2dyb3VuZDojZmZmZmZmO2JvcmRlcjowOy1tb3otYm94LXNoYWRvdzowIDhweCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMTQpLDAgM3B4IDE0cHggMnB4IHJnYmEoMCwwLDAsMC4xMiksMCA1cHggNXB4IC0zcHggcmdiYSgwLDAsMCwwLjIpO2JveC1zaGFkb3c6MCA4cHggMTBweCAxcHggcmdiYSgwLDAsMCwwLjE0KSwwIDNweCAxNHB4IDJweCByZ2JhKDAsMCwwLDAuMTIpLDAgNXB4IDVweCAtM3B4IHJnYmEoMCwwLDAsMC4yKTtvcGFjaXR5OjA7b3V0bGluZTpub25lO292ZXJmbG93OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoyMDAwfS5qZ3Z1QWIuaVdPNXRkIC5uY0ZIZWR7b3BhY2l0eToxfS5Nb2NHOGN7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiMyMjI7aGVpZ2h0OjA7bGlzdC1zdHlsZTpub25lO291dGxpbmU6bm9uZTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDoyNHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdDt3aGl0ZS1zcGFjZTpub3dyYXB9Lk1vY0c4Yy5SRFBaRXtjb2xvcjojYjhiOGI4O3BvaW50ZXItZXZlbnRzOm5vbmU7Y3Vyc29yOmRlZmF1bHR9Lk1vY0c4Yy5ERWgxUntjb2xvcjpyZ2JhKDAsMCwwLDAuNTQpfS5qZ3Z1QWIuZTVFbWpjIC5Nb2NHOGN7cGFkZGluZy1sZWZ0OjQ4cHh9LnJ5M2tYZCAuTW9jRzhjLktLanZYYntoZWlnaHQ6YXV0bztwYWRkaW5nLWJvdHRvbTo4cHg7cGFkZGluZy10b3A6OHB4fS5VbGd1OSAuTW9jRzhjOm5vdCguS0tqdlhiKXt3aWR0aDowO2JvcmRlcjowO21hcmdpbjowO3Bvc2l0aW9uOnJlbGF0aXZlO29wYWNpdHk6LjAwMDE7cGFkZGluZzowO3RvcDotOTk5OTlweDtwb2ludGVyLWV2ZW50czpub25lfS5uY0ZIZWQgLk1vY0c4Y3tjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6YXV0bztwYWRkaW5nLXJpZ2h0OjI2cHg7cGFkZGluZy1ib3R0b206OHB4O3BhZGRpbmctdG9wOjhweH0ubmNGSGVkIC5Nb2NHOGMuS0tqdlhie2JhY2tncm91bmQtY29sb3I6I2VlZWVlZTtib3JkZXItc3R5bGU6ZG90dGVkO2JvcmRlci13aWR0aDoxcHggMDtwYWRkaW5nLWJvdHRvbTo3cHg7cGFkZGluZy10b3A6N3B4fS5NV1FGTGV7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2hlaWdodDoyMXB4O2xlZnQ6MTJweDtvcGFjaXR5Oi41NDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDphdXRvO3RvcDo1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjIxcHh9Lm5jRkhlZCAuTW9jRzhjLktLanZYYiAuTVdRRkxle3RvcDo0cHh9LmpndnVBYi5SRFBaRSAuTVdRRkxlLC5Nb2NHOGMuUkRQWkUgLk1XUUZMZXtvcGFjaXR5Oi4yNn0ubmNGSGVkLnFzNDFxZT4uTW9jRzhjLktLanZYYj4ua1JveXR7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTtvcGFjaXR5OjE7dmlzaWJpbGl0eTp2aXNpYmxlfS5WT1VVOWV7Ym9yZGVyLXRvcDowO2hlaWdodDowO21hcmdpbjowO292ZXJmbG93OmhpZGRlbn0ubmNGSGVkIC5WT1VVOWV7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwwLjEyKTttYXJnaW46N3B4IDB9Lm1BVzJJYnt3aWR0aDo2NHB4fS5ZdUh0amMgLktLanZYYiAudlJNR3dme3Zpc2liaWxpdHk6aGlkZGVufS5ZdUh0amMgLk1vY0c4Y3twYWRkaW5nLWxlZnQ6NDhweDtwYWRkaW5nLXJpZ2h0OjEycHh9LlJGanVTYntvdmVyZmxvdzpoaWRkZW59Lm1iZWtiZXtmb250LXNpemU6LjFweDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt3aGl0ZS1zcGFjZTpub3dyYXB9LmlVZTZQZHtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjE0cHg7cGFkZGluZzoyNHB4IDAgMDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt2ZXJ0aWNhbC1hbGlnbjp0b3A7d2hpdGUtc3BhY2U6bm9ybWFsO3dpZHRoOjEwMCV9Lm1iZWtiZS5oQWZnaWN7LW1vei10cmFuc2l0aW9uOi1tb3otdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllcigwLjQsMC4wLDAuMiwxKX0ubWJla2JlLlFzamRDYnt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfS5tYmVrYmUuR0VjbDBje3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwJSwwLDApfVtkaXI9cnRsXSAubWJla2JlLkdFY2wwY3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApfS5SQ3VtMGM+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uUkN1bTBjPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0ua0trVTNke3BhZGRpbmc6MTZweCAwIDB9LmtLa1UzZCBoMiwua0trVTNkIHB7cGFkZGluZy1ib3R0b206M3B4O3BhZGRpbmctdG9wOjFweDttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXRvcDowfS5wb0YwYntoZWlnaHQ6MjV2aDttaW4taGVpZ2h0OjExMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5wb0YwYntoZWlnaHQ6MTUwcHh9fS5CYlRUcGQucG9GMGJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmNldmR4Y3toZWlnaHQ6MjV2aDttaW4taGVpZ2h0OjExMHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTQzJSwtMyUpO3otaW5kZXg6M31AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KXsuY2V2ZHhje2hlaWdodDoxNTBweH19LkJiVFRwZCAuY2V2ZHhje3RyYW5zZm9ybTpub25lfS5GcGhUOGV7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmdiYSgyMzMsMjMzLDIzMywwKSAwJSxyZ2JhKDIzMywyMzMsMjMzLDApIDYyLjIyJSxyZ2JhKDIzMywyMzMsMjMzLDEpIDQwLjIyJSxyZ2JhKDIzMywyMzMsMjMzLDApIDEwMCUpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZ2JhKDIzMywyMzMsMjMzLDApIDAlLHJnYmEoMjMzLDIzMywyMzMsMCkgNjIuMjIlLHJnYmEoMjMzLDIzMywyMzMsMSkgNDAuMjIlLHJnYmEoMjMzLDIzMywyMzMsMCkgMTAwJSk7aGVpZ2h0OjEwMCU7bGVmdDowO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6Mn0uRnBoVDhlOmFmdGVyLC5GcGhUOGU6YmVmb3Jle2NvbnRlbnQ6Jyc7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTttaW4td2lkdGg6MTEwcHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTEwJTt0cmFuc2Zvcm06cm90YXRlKC0xMDRkZWcpO3dpZHRoOjI1dmg7ei1pbmRleDoyfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5GcGhUOGU6YWZ0ZXIsLkZwaFQ4ZTpiZWZvcmV7d2lkdGg6MTUwcHh9fS5GcGhUOGU6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHJnYmEoMjQzLDI0MywyNDMsMCkgMCUscmdiYSgyNDMsMjQzLDI0MywuOSkgMTAwJSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHJnYmEoMjQzLDI0MywyNDMsMCkgMCUscmdiYSgyNDMsMjQzLDI0MywuOSkgMTAwJSk7Ym90dG9tOi0xMCV9LkZwaFQ4ZTphZnRlcntiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZ2JhKDI1NSwyNTUsMjU1LDApIDAlLHJnYmEoMjU1LDI1NSwyNTUsLjkpIDEwMCUpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZ2JhKDI1NSwyNTUsMjU1LDApIDAlLHJnYmEoMjU1LDI1NSwyNTUsLjkpIDEwMCUpO2JvdHRvbTotODAlfS5zZllVbWJ7cGFkZGluZy1ib3R0b206MDtwYWRkaW5nLXRvcDoxNnB4fS5wYnFvTXt0ZXh0LWluZGVudDotMXB4fS5GZ2JaTGR7cGFkZGluZy1ib3R0b206M3B4O3BhZGRpbmctdG9wOjFweDttYXJnaW46MH0uRmdiWkxkOmFmdGVye2NsZWFyOmJvdGg7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlfS5pYXJtZmN7ZmxvYXQ6bGVmdDtoZWlnaHQ6MjBweDttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6MjBweH1pbWcuaWFybWZjey1tb3otYm9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyLXJhZGl1czo1MCV9LkZnYlpMZHtwb3NpdGlvbjpyZWxhdGl2ZX0uaWxFaGR7bWFyZ2luLWxlZnQ6MzZweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ucjVpM29ke3BhZGRpbmctcmlnaHQ6MzJweH0uS0VhdnNiLm1VYkNjZXtoZWlnaHQ6MjRweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDotMnB4O3dpZHRoOjI0cHh9QG1lZGlhIChob3Zlcil7LktFYXZzYjpob3ZlciAuTWJoVXpkey1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpJY29uRm9jdXNQdWxzZSAuN3MgaW5maW5pdGUgYWx0ZXJuYXRlO2FuaW1hdGlvbjpxdWFudHVtV2l6SWNvbkZvY3VzUHVsc2UgLjdzIGluZmluaXRlIGFsdGVybmF0ZTtoZWlnaHQ6MTAwJTtsZWZ0OjUwJTt0b3A6NTAlO3dpZHRoOjEwMCU7dmlzaWJpbGl0eTp2aXNpYmxlfX0ubVViQ2Nley1tb3otdXNlci1zZWxlY3Q6bm9uZTstbW96LXRyYW5zaXRpb246YmFja2dyb3VuZCAuM3M7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4zcztib3JkZXI6MDstbW96LWJvcmRlci1yYWRpdXM6NTAlO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDo0OHB4O291dGxpbmU6bm9uZTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NDhweDt6LWluZGV4OjB9Lm1VYkNjZT4uVHBRbTlke2hlaWdodDo0OHB4O3dpZHRoOjQ4cHh9LllZQnhwZnstbW96LWJvcmRlci1yYWRpdXM6MDtib3JkZXItcmFkaXVzOjA7b3ZlcmZsb3c6dmlzaWJsZX0uZkt6N09ke2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7ZmlsbDpyZ2JhKDAsMCwwLDAuNTQpfS5wOU53dGV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjc0OSk7ZmlsbDpyZ2JhKDI1NSwyNTUsMjU1LDAuNzQ5KX0uZkt6N09kLnUzYlc0ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC4xMil9LnA5Tnd0ZS51M2JXNGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIwNCwyMDQsMjA0LDAuMjUxKX0uWVlCeHBmLnUzYlc0ZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5WVEJhN2J7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDApO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZSx2aXNpYmlsaXR5IDBzIGVhc2UgLjJzLHRyYW5zZm9ybSAwcyBlYXNlIC4yczt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2UsdmlzaWJpbGl0eSAwcyBlYXNlIC4ycywtd2Via2l0LXRyYW5zZm9ybSAwcyBlYXNlIC4ycztiYWNrZ3JvdW5kLXNpemU6Y292ZXI7bGVmdDowO29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3Zpc2liaWxpdHk6aGlkZGVufS5ZWUJ4cGYudTNiVzRlIC5WVEJhN2J7LW1vei1hbmltYXRpb246cXVhbnR1bVdpekljb25Gb2N1c1B1bHNlIC43cyBpbmZpbml0ZSBhbHRlcm5hdGU7YW5pbWF0aW9uOnF1YW50dW1XaXpJY29uRm9jdXNQdWxzZSAuN3MgaW5maW5pdGUgYWx0ZXJuYXRlO2hlaWdodDoxMDAlO2xlZnQ6NTAlO3RvcDo1MCU7d2lkdGg6MTAwJTt2aXNpYmlsaXR5OnZpc2libGV9Lm1VYkNjZS5xczQxcWUgLlZUQmE3YnstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO29wYWNpdHk6MTt2aXNpYmlsaXR5OnZpc2libGV9Lm1VYkNjZS5xczQxcWUuTTlCZzRkIC5WVEJhN2J7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpLG9wYWNpdHkgLjJzIGN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpLG9wYWNpdHkgLjJzIGN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKX0ubVViQ2NlLmo3bklaYiAuVlRCYTdiey1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDIuMik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDIuMik7dmlzaWJpbGl0eTp2aXNpYmxlfS5mS3o3T2QgLlZUQmE3YntiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgZmFydGhlc3Qtc2lkZSxyZ2JhKDAsMCwwLDAuMTIpLHJnYmEoMCwwLDAsMC4xMikgODAlLHJnYmEoMCwwLDAsMCkgMTAwJSl9LnA5Tnd0ZSAuVlRCYTdie2JhY2tncm91bmQtaW1hZ2U6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBmYXJ0aGVzdC1zaWRlLHJnYmEoMjA0LDIwNCwyMDQsMC4yNTEpLHJnYmEoMjA0LDIwNCwyMDQsMC4yNTEpIDgwJSxyZ2JhKDIwNCwyMDQsMjA0LDApIDEwMCUpfS5tVWJDY2UuUkRQWkV7Y29sb3I6cmdiYSgwLDAsMCwwLjI2KTtmaWxsOnJnYmEoMCwwLDAsMC4yNik7Y3Vyc29yOmRlZmF1bHR9LnA5Tnd0ZS5SRFBaRXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuNTAyKTtmaWxsOnJnYmEoMjU1LDI1NSwyNTUsMC41MDIpfS54aktpTGJ7cG9zaXRpb246cmVsYXRpdmU7dG9wOjUwJX0ueGpLaUxiPnNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9Lkd0Z2xBZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlOy1tb3otZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLXRvcDozMnB4O21pbi1oZWlnaHQ6NDhweH0uWlZieUlmIC5HdGdsQWV7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5PWmxpUiwuQUl1OGh7Ym94LWZsZXg6MTtmbGV4LWdyb3c6MX0uT1psaVJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5BSXU4aHt0ZXh0LWFsaWduOmxlZnR9LkhqMmpsZnt3aGl0ZS1zcGFjZTpub3dyYXB9LkhqMmpsZi5oalBmZHtiYWNrZ3JvdW5kOiM5ZTllOWU7Y29sb3I6I2ZmZn0ubUZGMkVie2Rpc3BsYXk6bm9uZX0uZEtWY1EgLnNuQnlhY3ttYXJnaW46OHB4IDE2cHh9Lk9abGlSIC5IajJqbGYuWmYyT3dme2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDttYXJnaW4tcmlnaHQ6MTZweH0uUFJnbThlIC5IajJqbGYuWmYyT3dmIC51Qk9nbntkaXNwbGF5Om5vbmV9LlhkU3liZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpub25lO29wYWNpdHk6LjU0fS5QUmdtOGUgLlhkU3liZXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXh9LnliOUtVe2Rpc3BsYXk6bm9uZX0uUmZqNENme2RpcmVjdGlvbjpsdHJ9LlJmajRDZiAuaUhkNXlie3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MTJweH0uUmZqNENmLlJmajRDZiAuekhRa0Jme3RleHQtYWxpZ246bGVmdH0uWWxvemt7Zm9udC1zaXplOjEycHg7bWFyZ2luOjAgOHB4fS5UbmYzSGR7bWFyZ2luOjAgLThweH0uVG5mM0hkIC5hQ1AwbGR7bWluLWhlaWdodDoxNnB4O3BhZGRpbmc6MCA4cHh9LlRuZjNIZCAuYUNQMGxkOmVtcHR5e2Rpc3BsYXk6bm9uZX0uVFp3SWtle2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjAgOHB4O3ZlcnRpY2FsLWFsaWduOnRvcDt3aWR0aDozMy4zMzMzMzMzMzMzMzMzMzMlfS5UWndJa2UgLk9XTzc5Y3ttYXJnaW4tYm90dG9tOjB9LlRad0lrZSAuUnhzR1BlLC5UWndJa2UgLmdhREd1YnttaW4taGVpZ2h0OjA7cGFkZGluZzowfS5WWkNKa2UgLlRad0lrZXt3aWR0aDo1MCV9Lk9XTzc5Y3tsaW5lLWhlaWdodDoyNHB4O291dGxpbmU6bm9uZTtwYWRkaW5nLXRvcDoyNHB4O3RleHQtYWxpZ246c3RhcnR9LlVwQmMxZHtoZWlnaHQ6NDBweDtwb3NpdGlvbjpyZWxhdGl2ZX0uR0RXcXBie2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym90dG9tOjVweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bGVmdDowO3BhZGRpbmctcmlnaHQ6MjBweDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46bGVmdCBib3R0b207d2lkdGg6MTAwJX0uSGdLY0tje2NvbG9yOnJnYmEoMCwwLDAsMC4zOCk7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDpub3JtYWw7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3doaXRlLXNwYWNlOm5vd3JhcH1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KXsuSGdLY0tje2NvbG9yOiM3NTc1NzU7Zm9udC1zaXplOjE0cHh9fS5YcU04U2R7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSk7dHJhbnNmb3JtOnNjYWxlKC43NSkgdHJhbnNsYXRleSgtMzlweCl9LlhxTThTZCAuSGdLY0tje292ZXJmbG93OnZpc2libGV9Lk5nOXJpZCAuSGdLY0tje2NvbG9yOiM0Mjg1ZjR9Lmt1VkdjYntwYWRkaW5nOjA7cG9zaXRpb246cmVsYXRpdmU7dG9wOjE0cHh9Lk45clZrZSwuTjlyVmtlOmFjdGl2ZSwuTjlyVmtlOmZvY3Vzey1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6IzAwMDtmb250OmluaGVyaXQ7aGVpZ2h0OjI0cHg7bGluZS1oZWlnaHQ6MjRweDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Jlc2l6ZTpub25lO3dpZHRoOjEwMCV9Lk45clZrZSBvcHRpb246ZW1wdHl7ZGlzcGxheTpub25lfS54cmk5ZWN7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsMC4zOCkgdHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDo2cHggNnB4IDAgNnB4O2JvdHRvbToxMHB4O2hlaWdodDowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6NXB4O3dpZHRoOjB9LlJ1YVpXZXtiYWNrZ3JvdW5kOiNlMGUwZTA7Ym90dG9tOjA7aGVpZ2h0OjFweDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0uSWU2dmRme2JhY2tncm91bmQ6I2M1MzkyOX0uR212S3Rje2JhY2tncm91bmQ6IzQyODVmNDtoZWlnaHQ6MnB4fS5nYURHdWJ7Y29sb3I6I2M1MzkyOTtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctdG9wOjRweDttaW4taGVpZ2h0OjE2cHh9LnppVEdFe2Rpc3BsYXk6bm9uZX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KXsualE5T0VmIC56SFFrQmZ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5qUTlPRWYgLnNuQnlhY3tmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7Y29sb3I6Izc1NzU3NX19LmpROU9FZiAuekhRa0Jme3RleHQtYWxpZ246bGVmdH0ualE5T0VmIC5JczdGaGJ7b3BhY2l0eToxO3BhZGRpbmctdG9wOjhweH0ualE5T0VmIC5SeHNHUGU6ZW1wdHl7ZmxleDpub25lO21pbi1oZWlnaHQ6MDtwYWRkaW5nLXRvcDowfS5BeWo2U2N7bWFyZ2luLWJvdHRvbTo1cHh9LmE3ZENHYiwubGw0cm5je2NvbG9yOnJnYmEoMCwwLDAsMC42NSl9LnlBbzhDZXtkaXNwbGF5Om5vbmV9LmZaQTdEYz4uUDdnbDNie3dpZHRoOjEwMCV9LnN1ZHA3ZXt3aWR0aDoxMDAlO21hcmdpbi10b3A6NXB4fS5hR1RQQmIubVViQ2Nle2hlaWdodDoyNHB4O3RvcDotM3B4O3dpZHRoOjI0cHh9LkpaNWxaYy5EUHZ3WWMsLkVIRG5XLkRQdndZY3tjb2xvcjpyZ2JhKDAsMCwwLDAuNjUpO21hcmdpbi1sZWZ0Oi0xMnB4O21hcmdpbi10b3A6LTEycHg7cGFkZGluZzoxMnB4fS55eXZRcWR7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LkwxTTR2e2ZpbGw6cmdiYSgwLDAsMCwwLjY1KX0uZlpBN0RjIC5FSERuVywuZlpBN0RjLmVPMlpmZCAuSlo1bFpje2Rpc3BsYXk6bm9uZX0uZlpBN0RjLmVPMlpmZCAuRUhEbld7ZGlzcGxheTppbmxpbmUtYmxvY2t9LkRQdndZY3tmb250LWZhbWlseTonTWF0ZXJpYWwgSWNvbnMgRXh0ZW5kZWQnO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDtmb250LXNpemU6MjRweDtsaW5lLWhlaWdodDoxO2xldHRlci1zcGFjaW5nOm5vcm1hbDt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jazt3b3JkLXdyYXA6bm9ybWFsO2RpcmVjdGlvbjpsdHJ9aHRtbFtkaXI9InJ0bCJdIC5zbThzQ2Z7LW1vei10cmFuc2Zvcm06c2NhbGVYKC0xKTt0cmFuc2Zvcm06c2NhbGVYKC0xKTtmaWx0ZXI6RmxpcEh9LlFNZVJHZjphZnRlcntjbGVhcjpib3RoO2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZX0uSXd4N0Nke2Zsb2F0OmxlZnQ7bGluZS1oZWlnaHQ6MjRweDttYXJnaW46MCAxNnB4IDAgMDt3aWR0aDo1NnB4fS5UWkhZN2Q6YmVmb3Jle3RvcDotMjJweH0uVFpIWTdkIC5lMkN1RmV7dG9wOjEwcHh9LlRaSFk3ZCAucnkza1hkIC5LS2p2WGJ7cGFkZGluZy1ib3R0b206MnB4O3BhZGRpbmctdG9wOjB9LmdSRTd4YnttYXJnaW4tbGVmdDo3MnB4fS5OVEI3c2Z7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5YTnlmUGJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2JveC1mbGV4OjE7ZmxleC1ncm93OjE7LW1vei1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcH0uTEswaTl7d2lkdGg6MTAwJX0ua1ROcmlme2ZvbnQtc2l6ZToxMnB4O3dpZHRoOjEwMCV9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7Lk5UQjdzZi5EYlFuSWUgLkxLMGk5e2JveC1mbGV4OjE7ZmxleC1ncm93OjE7d2lkdGg6LW1vei1jYWxjKDUwJSAtIDhweCk7d2lkdGg6Y2FsYyg1MCUgLSA4cHgpfS5OVEI3c2YuRGJRbkllIC5MSzBpOTpmaXJzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MTZweH0uTlRCN3NmLkRiUW5JZSAua1ROcmlmey1tb3otYm94LW9yZGluYWwtZ3JvdXA6MTtvcmRlcjoxfX0uV0JDb3Nle3BhZGRpbmctdG9wOjI4cHh9LkpJenFuZSwuZU8yWmZkIC55N1Q0THtkaXNwbGF5OmlubGluZS1ibG9jaztvcGFjaXR5Oi42NX0uZU8yWmZkIC5JTVZmaWYsLnk3VDRMe2Rpc3BsYXk6bm9uZX0uSXFLZEFke3Bvc2l0aW9uOnJlbGF0aXZlfS5JcUtkQWQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uSXFLZEFkPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uVmtScWplLC5FQUNhZWIsLldIZ0xRZXttYXJnaW46MTJweCAwfS5Wa1JxamU+OmZpcnN0LWNoaWxkLC5XSGdMUWU+OmZpcnN0LWNoaWxkLC52ZEU3T2M+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uVmtScWplPjpsYXN0LWNoaWxkLC5XSGdMUWU+Omxhc3QtY2hpbGQsLnZkRTdPYz46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnNJem5UZXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfS5QV29mZWUgLnNJem5UZXtwYWRkaW5nLXRvcDoxcHg7cG9zaXRpb246cmVsYXRpdmV9LlBXb2ZlZSAuc0l6blRlOmJlZm9yZXtib3JkZXItdG9wOjFweCBzb2xpZCAjZDVkNWQ1O2NvbnRlbnQ6Jyc7aGVpZ2h0OjA7bGVmdDo3MnB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjB9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo0NTBweCl7LlBXb2ZlZSAuc0l6blRlOmJlZm9yZXtsZWZ0Ojg4cHh9fS5QV29mZWUgLkM1dUFGY3twb3NpdGlvbjpyZWxhdGl2ZX0uUFdvZmVlIC5DNXVBRmM6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2Q1ZDVkNTtib3R0b206MDtjb250ZW50OicnO2hlaWdodDowO2xlZnQ6NzJweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDUwcHgpey5QV29mZWUgLkM1dUFGYzphZnRlcntsZWZ0Ojg4cHh9fS5UbnZPQ2V7cGFkZGluZy1ib3R0b206MTNweDtwYWRkaW5nLXRvcDoxM3B4fS5UbnZPQ2Vbcm9sZT0iYnV0dG9uIl17Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4yc30uVG52T0NlOmZvY3Vze2JhY2tncm91bmQ6I2VlZWVlZTtvdXRsaW5lOjB9QG1lZGlhIChob3Zlcil7LlRudk9DZVtyb2xlPSJidXR0b24iXTpob3ZlcntiYWNrZ3JvdW5kOiNlZWVlZWV9fS5UbnZPQ2U6YWZ0ZXJ7Y2xlYXI6Ym90aDtjb250ZW50OicnO2Rpc3BsYXk6dGFibGV9LndEemp1Y3tmbG9hdDpsZWZ0O2hlaWdodDoyNHB4O21hcmdpbjotMnB4IDAgMDtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MjRweH0ud0R6anVjIHN2Z3toZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS52ZEU3T2N7bWFyZ2luOjAgMCAwIDQ4cHh9LnZkRTdPYyBwe21hcmdpbjo0cHggMH0udmRFN09jIC5pRUVxY2V7ZGlzcGxheTpibG9jaztmb250LXN0eWxlOml0YWxpYzttYXJnaW46MH0uY2pFSGple2NvbG9yOiM3NTc1NzV9LkVBQ2FlYntwYWRkaW5nLWJvdHRvbTo2cHg7cGFkZGluZy1sZWZ0OjQ4cHg7cG9zaXRpb246cmVsYXRpdmV9LkVBQ2FlYiBsaXtsaXN0LXN0eWxlOm5vbmV9LkVBQ2FlYiBsaStsaXttYXJnaW4tdG9wOjEycHh9LnE0VVl4YntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O291dGxpbmU6MDtwYWRkaW5nOjA7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjEwMCV9LnE0VVl4YjpiZWZvcmV7YmFja2dyb3VuZDojZWVlZWVlOy1tb3otYm9yZGVyLXJhZGl1czoycHggMCAwIDJweDtib3JkZXItcmFkaXVzOjJweCAwIDAgMnB4O2JvdHRvbTotNnB4O2NvbnRlbnQ6Jyc7bGVmdDotMTZweDtvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTI0cHg7dG9wOi02cHg7dHJhbnNpdGlvbjpvcGFjaXR5IC4yczt6LWluZGV4Oi0xfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDUwcHgpey5xNFVZeGI6YmVmb3Jle3JpZ2h0Oi00MHB4fX0ucTRVWXhiOmZvY3VzOmJlZm9yZXtvcGFjaXR5OjF9QG1lZGlhIChob3Zlcil7LnE0VVl4Yjpob3ZlcjpiZWZvcmV7b3BhY2l0eToxfX0ucGdnUTVlOmJlZm9yZSwudzZWVEhkOmFmdGVye2NvbnRlbnQ6bm9uZX0uWHJhUTNie3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctYm90dG9tOjEwcHg7cGFkZGluZy10b3A6MTBweH0uaFBjTzFjey1tb3otYm9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjM2cHg7bWFyZ2luOjA7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjM2cHh9LmhQY08xYyBpbWd7bWF4LWhlaWdodDoxMDAlO21heC13aWR0aDoxMDAlfS5mM0dJUXttYXJnaW4tbGVmdDo2MHB4O3BhZGRpbmc6MH0uZmxFU3VlIC5mM0dJUXtwYWRkaW5nLXJpZ2h0OjMycHh9LndwVzFjYiwuYkx6STNle2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjI1fS5mM0dJUSBwe21hcmdpbjowfS51Umh6YWV7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LktseFh4ZHtjb2xvcjojNzU3NTc1O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtc3R5bGU6aXRhbGljfS5mbEVTdWUgLmJMekkzZXt2aXNpYmlsaXR5OmhpZGRlbn0uYkx6STNlIC5oUGNPMWN7YmFja2dyb3VuZDojZmZmO21hcmdpbjowfS5iTHpJM2UgLmYzR0lRe3BhZGRpbmc6OHB4IDB9LlhRb1dyYnttYXJnaW46MzB2aCAwIDE3cHg7cGFkZGluZy1sZWZ0OjYwcHh9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LlhRb1dyYnttYXJnaW4tdG9wOjEyN3B4fX0uWFFvV3JiOmJlZm9yZXtib3JkZXItdG9wOjFweCBzb2xpZCAjZDVkNWQ1O2NvbnRlbnQ6Jyc7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTI3cHg7bWFyZ2luLXJpZ2h0Oi0yNHB4fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDUwcHgpey5YUW9XcmI6YmVmb3Jle21hcmdpbi1yaWdodDotNDBweH19LmFzRzhDYi5hc0c4Q2J7aGVpZ2h0OjI0cHg7b3BhY2l0eTowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLWxlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDoxMHB4O3dpZHRoOjI0cHh9LmZsRVN1ZSAuYXNHOENie29wYWNpdHk6MX0ucEZRRXlie2JhY2tncm91bmQ6I2ZmZjstbW96LWJvcmRlci1yYWRpdXM6MnB4O2JvcmRlci1yYWRpdXM6MnB4Oy1tb3otYm94LXNoYWRvdzowIDZweCAyMHB4IDAgcmdiYSgwLDAsMCwwLjE5KTtib3gtc2hhZG93OjAgNnB4IDIwcHggMCByZ2JhKDAsMCwwLDAuMTkpO2xpc3Qtc3R5bGU6bm9uZTttaW4td2lkdGg6MTEycHg7b3V0bGluZTpub25lO3BhZGRpbmc6OHB4IDA7d2lkdGg6MTY4cHg7ei1pbmRleDo0fS55UWFKUXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyk7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO3BhZGRpbmc6MTRweH0ueTA1VW0gLnlRYUpROmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjEyKX0ud1pybU5je21hcmdpbjphdXRvO21heC13aWR0aDozODBweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lndacm1OYyAuS0UzdlB7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXJ9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDozMjBweCl7Lndacm1OYyAuS0UzdlAuQUY4Z25me2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHJnYmEoMjU1LDI1NSwyNTUsMCkgMCUscmdiYSgyNTUsMjU1LDI1NSwxKSAxMCUscmdiYSgyNTUsMjU1LDI1NSwxKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmdiYSgyNTUsMjU1LDI1NSwwKSAwJSxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwJSxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwMCUpO21hcmdpbi10b3A6NDUlO3otaW5kZXg6Mn19LndsTXVXYnstbW96LWJvcmRlci1yYWRpdXM6NTAlO2JvcmRlci1yYWRpdXM6NTAlO292ZXJmbG93OmhpZGRlbn0ud1pybU5jIC53bE11V2J7aGVpZ2h0OjY0cHg7bWFyZ2luOjAgYXV0byA4cHg7d2lkdGg6NjRweH0ud2xNdVdiIHN2Zywud2xNdVdiIGltZ3tkaXNwbGF5OmJsb2NrO2hlaWdodDo2NHB4O3dpZHRoOjY0cHh9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDozMjBweCl7Lndacm1OYyAuZXNJUDJkLkFGOGduZiAud2xNdVdiLC53WnJtTmMgLmVzSVAyZC5BRjhnbmYgLnlqbmdXYnt0cmFuc2Zvcm06dHJhbnNsYXRleSgtMzJweCl9fS53WnJtTmMgLmFOMWxLYntmb250LXNpemU6MTZweH0uc3Q4TU17d29yZC1icmVhazpicmVhay1hbGx9LnBPT3lWe2Rpc3BsYXk6bm9uZX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KXsucE9PeVZ7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtsZWZ0OjEyJTttYXJnaW4tdG9wOjEyJTtwb3NpdGlvbjphYnNvbHV0ZTtwYWRkaW5nOjM4JSAwO3RvcDowO3dpZHRoOjc2JTt6LWluZGV4OjF9LnVRTGh4e2JvcmRlcjozcHggZGFzaGVkICNlZmVmZWY7LW1vei1ib3JkZXItcmFkaXVzOjUwJTtib3JkZXItcmFkaXVzOjUwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7bGVmdDowO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LnVRTGh4PmRpdiwudVFMaHg6YmVmb3JlLC51UUxoeDphZnRlcntiYWNrZ3JvdW5kOiNmZmY7LW1vei1ib3JkZXItcmFkaXVzOjZweDtib3JkZXItcmFkaXVzOjZweDstbW96LWJveC1zaGFkb3c6MCAwIDEycHggcmdiYSgwLDAsMCwuMik7Ym94LXNoYWRvdzowIDAgMTJweCByZ2JhKDAsMCwwLC4yKTtoZWlnaHQ6NDhweDtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7d2lkdGg6NDhweH0udVFMaHg6YmVmb3JlLC51UUxoeDphZnRlcntjb250ZW50OicnfS51UUxoeDpiZWZvcmV7bGVmdDowO3RvcDo1MCV9LnVRTGh4PmRpdjpudGgtY2hpbGQoMSl7bGVmdDoxNC42NCU7dG9wOjE0LjY0JX0udVFMaHg+ZGl2Om50aC1jaGlsZCgyKXtsZWZ0OjUwJTt0b3A6MH0udVFMaHg+ZGl2Om50aC1jaGlsZCgzKXtsZWZ0Ojg1LjM2JTt0b3A6MTQuNjQlfS51UUxoeDphZnRlcntsZWZ0OjEwMCU7dG9wOjUwJX0udVFMaHg+ZGl2LnVPR1Mze2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDtvcGFjaXR5OjF9LnVRTGh4PmRpdi51T0dTMzphZnRlcntib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO2JhY2tncm91bmQtc2l6ZToyMTZweCAzNnB4O2hlaWdodDphdXRvO21hcmdpbjo2cHg7d2lkdGg6YXV0b30uSzdCa2Q6YWZ0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAwfS5vVHNzTTphZnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNnB4IDB9LkJ3QzByYzphZnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMDhweCAwfS5UczBjdGM6YWZ0ZXJ7YmFja2dyb3VuZDpub25lfX0uaDJNS2Fke2ZvbnQtc2l6ZToxMnB4O21hcmdpbi10b3A6MzJweH0ueVh4Q3lle3doaXRlLXNwYWNlOm5vd3JhcH0ucnNGUnQgLk1RTDNPYntvcGFjaXR5OjB9LkY5MHJmY3tkaXNwbGF5OmlubGluZS1ibG9ja30uT0xiZDZle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nOjB9Lk9MYmQ2ZSBsaXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLWxlZnQ6MTVweH0udWhsVHNme2NvbG9yOiMzMzY3ZDY7bWFyZ2luLWJvdHRvbTo4cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGlzdC1zdHlsZTpub25lfS51aGxUc2Y6aG92ZXJ7Y29sb3I6IzMzNjdkNjtjdXJzb3I6cG9pbnRlcn0udWhsVHNmOmFjdGl2ZSBzcGFuLC51aGxUc2Y6Zm9jdXMgc3BhbntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNTEsMTAzLDIxNCwwLjEyKTtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjJweDttYXJnaW46LTNweDtwYWRkaW5nOjNweH0uVm1PcEdle2JhY2tncm91bmQ6I2ZmZjtib3R0b206MDtkaXJlY3Rpb246bHRyO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt6LWluZGV4OjF9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LlZtT3BHZXtiYWNrZ3JvdW5kOiNlMGUwZTB9fS5WbU9wR2Ugc3Zne2Rpc3BsYXk6bm9uZTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5WbU9wR2Ugc3Zne2Rpc3BsYXk6YmxvY2t9fS5SQVloMWV7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kOiNmZmY7bWF4LXdpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5SQVloMWUuTFpnUVhle21pbi1oZWlnaHQ6MTAwdmh9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LlJBWWgxZS5MWmdRWGV7bWluLWhlaWdodDowfS5SQVloMWUsLnhrZlZGe3RyYW5zaXRpb246LjJzfS5SQVloMWV7ZmxleC1zaHJpbms6MDtiYWNrZ3JvdW5kOiNmZmY7LW1vei1ib3gtc2hhZG93OjAgMnB4IDJweCAwIHJnYmEoMCwwLDAsMC4xNCksMCAzcHggMXB4IC0ycHggcmdiYSgwLDAsMCwwLjEyKSwwIDFweCA1cHggMCByZ2JhKDAsMCwwLDAuMik7Ym94LXNoYWRvdzowIDJweCAycHggMCByZ2JhKDAsMCwwLDAuMTQpLDAgM3B4IDFweCAtMnB4IHJnYmEoMCwwLDAsMC4xMiksMCAxcHggNXB4IDAgcmdiYSgwLDAsMCwwLjIpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgYXV0bzttaW4taGVpZ2h0OjA7d2lkdGg6NDUwcHh9LlJBWWgxZS5xbW1sUmR7d2lkdGg6NDUwcHh9fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5SQVloMWUucW1tbFJkIC54a2ZWRntoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OjUwMHB4fX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KSBhbmQgKG9yaWVudGF0aW9uOmxhbmRzY2FwZSl7LlJBWWgxZS52N3VzWWJ7d2lkdGg6NDUwcHh9LlJBWWgxZS52N3VzWWIgLnhrZlZGe2hlaWdodDphdXRvO21pbi1oZWlnaHQ6NTAwcHh9fS54a2ZWRntib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjI0cHggMjRweCAzNnB4fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NDUwcHgpey54a2ZWRntwYWRkaW5nOjQ4cHggNDBweCAzNnB4fX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KXsueGtmVkZ7aGVpZ2h0OmF1dG87bWluLWhlaWdodDo1MDBweDtvdmVyZmxvdy15OmF1dG99fS54a2ZWRi5ubkd2amZ7b3ZlcmZsb3c6dmlzaWJsZTtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LkRSUzdGZXtvdmVyZmxvdzpoaWRkZW59LnhrZlZGLm5uR3ZqZiAuRFJTN0Zle292ZXJmbG93OnZpc2libGV9LnB3V3J5Zntmb250LXNpemU6LjFweDt0cmFuc2Zvcm06dHJhbnNsYXRleigwKTt3aGl0ZS1zcGFjZTpub3dyYXB9Lld4d2R1ZntkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTRweDtwYWRkaW5nOjI0cHggMCAwO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3ZlcnRpY2FsLWFsaWduOnRvcDt3aGl0ZS1zcGFjZTpub3JtYWw7d2lkdGg6MTAwJX0ueGtmVkYubm5HdmpmIC5wd1dyeWYsLnhrZlZGLm5uR3ZqZiAuV3h3ZHVme3RyYW5zZm9ybTpub25lfS5wd1dyeWYuaEFmZ2lje3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0ucHdXcnlmLlFzamRDYnt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfS5wd1dyeWYuR0VjbDBje3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwJSwwLDApfVtkaXI9cnRsXSAucHdXcnlmLkdFY2wwY3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApfS5qWGVEbmMgaDF7cGFkZGluZy1ib3R0b206MDtwYWRkaW5nLXRvcDoxNnB4O2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjMzMzM7bWFyZ2luLWJvdHRvbTowO21hcmdpbi10b3A6MH0ualhlRG5jIGgxLnk3N3pxZXt0ZXh0LWluZGVudDotMXB4fS5ZNGRJd2QsLmNiU0RTZXtwYWRkaW5nLWJvdHRvbTozcHg7cGFkZGluZy10b3A6MXB4O21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjB9Llk0ZEl3ZHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS40Mjg2fS5jYlNEU2V7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O21pbi1oZWlnaHQ6MjRweH0uT003WnNle2JveC1mbGV4OjE7ZmxleC1ncm93OjF9LmE5Y3JpY3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ubGZqanlle2ZsZXgtc2hyaW5rOjA7ZGlzcGxheTpibG9ja30uWG1Hb2FkIGgyLC5YbUdvYWQgcHtwYWRkaW5nLWJvdHRvbTozcHg7cGFkZGluZy10b3A6MXB4O21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjB9LlhtR29hZCBoMntmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS40Mjg2fS5uREtLWmMudTNiVzRley1tb3otYm94LXNoYWRvdzowIDZweCAxMHB4IDAgcmdiYSgwLDAsMCwwLjE0KSwwIDFweCAxOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwwIDNweCA1cHggLTFweCByZ2JhKDAsMCwwLDAuMik7Ym94LXNoYWRvdzowIDZweCAxMHB4IDAgcmdiYSgwLDAsMCwwLjE0KSwwIDFweCAxOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwwIDNweCA1cHggLTFweCByZ2JhKDAsMCwwLDAuMil9Lm5ES0taYyAuc25CeWFje21hcmdpbjo4cHh9Lm5ES0taYy5lTE5UMWR7ZGlzcGxheTpub25lfS56UUpWM3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlOy1tb3otZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tdG9wOjMycHg7bWluLWhlaWdodDo0OHB4O3BhZGRpbmctYm90dG9tOjIwcHh9LnFoRkxpZSwuS3dkejdie2JveC1mbGV4OjE7ZmxleC1ncm93OjF9LnFoRkxpZXt0ZXh0LWFsaWduOnJpZ2h0fS5Ld2R6N2J7dGV4dC1hbGlnbjpsZWZ0fS5ETDBRVGIsLk5hT0drY3t3aGl0ZS1zcGFjZTpub3dyYXB9LkRMMFFUYiAuc25CeWFje21hcmdpbjo4cHggMTZweH0uTmFPR2tjIC5zbkJ5YWN7Zm9udC13ZWlnaHQ6NDAwO3RleHQtdHJhbnNmb3JtOm5vbmV9LlQ4emQ4ZXttYXJnaW4tdG9wOjI2cHh9LlI0M1hpZntkaXNwbGF5Om5vbmV9LmdJbjlHY3toZWlnaHQ6MThweDttYXJnaW4tbGVmdDo2cHg7d2lkdGg6MThweH0uS1NjenZkLktTY3p2ZHtib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5LU2N6dmR7d2lkdGg6MTAwJX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjYwMXB4KXsuS1NjenZkIC56SFFrQmZ7Zm9udC1zaXplOjE0cHh9LktTY3p2ZCAuc25CeWFje2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM3NTc1NzV9fS5LU2N6dmQgLklzN0ZoYntvcGFjaXR5OjE7cGFkZGluZy10b3A6OHB4fS51eWFlYmQgLnpIUWtCZiwudXlhZWJkIC5NUUwzT2J7ZGlyZWN0aW9uOmx0cjt0ZXh0LWFsaWduOmxlZnR9LktTY3p2ZCAuUnhzR1BlOmVtcHR5e2ZsZXg6bm9uZTttaW4taGVpZ2h0OjA7cGFkZGluZy10b3A6MH0udkhWR3ViIC5NUUwzT2J7cGFkZGluZy1sZWZ0OjZweDtwYWRkaW5nLXJpZ2h0OjB9LkxNYWJHYi5DREVMWGIuSUVEZUtiIC5NUUwzT2J7b3BhY2l0eTowfS5YQTB6aGJ7Y29sb3I6IzIxMjEyMTtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5nUXRZc2J7bWFyZ2luOmF1dG87bWF4LXdpZHRoOjM4MHB4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0uZ1F0WXNiIC5FR2g5ZmV7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXJ9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDozMjBweCl7LmdRdFlzYiAuRUdoOWZle2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHJnYmEoMjU1LDI1NSwyNTUsMCkgMCUscmdiYSgyNTUsMjU1LDI1NSwxKSAxMCUscmdiYSgyNTUsMjU1LDI1NSwxKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmdiYSgyNTUsMjU1LDI1NSwwKSAwJSxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwJSxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwMCUpO21hcmdpbi10b3A6NDUlO3otaW5kZXg6Mn19Lm5VVEE2ZXtvdmVyZmxvdzpoaWRkZW59LnpXNXZyZiAublVUQTZle2Zsb2F0OmxlZnQ7aGVpZ2h0OjM2cHg7bWFyZ2luLXJpZ2h0OjI0cHg7d2lkdGg6MzZweH0uZ1F0WXNiIC5uVVRBNmV7aGVpZ2h0OjY0cHg7bWFyZ2luOjAgYXV0byA4cHg7d2lkdGg6NjRweH0uckUyQXJmIC5uVVRBNmV7ZmxvYXQ6bGVmdDtoZWlnaHQ6MjBweDttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6MjBweH0ublVUQTZlIHN2ZywublVUQTZlIGltZ3stbW96LWJvcmRlci1yYWRpdXM6NTAlO2JvcmRlci1yYWRpdXM6NTAlO2Rpc3BsYXk6YmxvY2t9LnpXNXZyZiAublVUQTZlIHN2Zywuelc1dnJmIC5uVVRBNmUgaW1ne21heC1oZWlnaHQ6MTAwJTttYXgtd2lkdGg6MTAwJX0uZ1F0WXNiIC5uVVRBNmUgc3ZnLC5nUXRZc2IgLm5VVEE2ZSBpbWd7aGVpZ2h0OjY0cHg7d2lkdGg6NjRweH0uckUyQXJmIC5uVVRBNmUgc3ZnLC5yRTJBcmYgLm5VVEE2ZSBpbWd7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweH1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KXsuZ1F0WXNiIC5uVVRBNmUsLmdRdFlzYiAuSFdJZUtke3RyYW5zZm9ybTp0cmFuc2xhdGV5KC0zMnB4KX19LnpXNXZyZiAuSFdJZUtke21hcmdpbi1sZWZ0OjYwcHh9LnJFMkFyZiAuSFdJZUtke21hcmdpbi1sZWZ0OjM2cHg7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnpXNXZyZiAucmlkZGtje2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuMjV9LmdRdFlzYiAucmlkZGtje2ZvbnQtc2l6ZToxNHB4fS50bzBjZHtkaXJlY3Rpb246bHRyO3RleHQtYWxpZ246bGVmdDt3b3JkLWJyZWFrOmJyZWFrLWFsbH0uZXhMRDZke2Rpc3BsYXk6bm9uZX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KXsuZXhMRDZke2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7bGVmdDoxMiU7bWFyZ2luLXRvcDoxMiU7cG9zaXRpb246YWJzb2x1dGU7cGFkZGluZzozOCUgMDt0b3A6MDt3aWR0aDo3NiU7ei1pbmRleDoxfS5PaTlSVmN7Ym9yZGVyOjNweCBkYXNoZWQgI2VmZWZlZjstbW96LWJvcmRlci1yYWRpdXM6NTAlO2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtsZWZ0OjA7aGVpZ2h0OjEwMCU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJX0uT2k5UlZjPmRpdiwuT2k5UlZjOmJlZm9yZSwuT2k5UlZjOmFmdGVye2JhY2tncm91bmQ6I2ZmZjstbW96LWJvcmRlci1yYWRpdXM6NnB4O2JvcmRlci1yYWRpdXM6NnB4Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCByZ2JhKDAsMCwwLC4yKTtib3gtc2hhZG93OjAgMCAxMnB4IHJnYmEoMCwwLDAsLjIpO2hlaWdodDo0OHB4O3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt3aWR0aDo0OHB4fS5PaTlSVmM6YmVmb3JlLC5PaTlSVmM6YWZ0ZXJ7Y29udGVudDonJ30uT2k5UlZjOmJlZm9yZXtsZWZ0OjA7dG9wOjUwJX0uT2k5UlZjPmRpdjpudGgtY2hpbGQoMSl7bGVmdDoxNC42NCU7dG9wOjE0LjY0JX0uT2k5UlZjPmRpdjpudGgtY2hpbGQoMil7bGVmdDo1MCU7dG9wOjB9Lk9pOVJWYz5kaXY6bnRoLWNoaWxkKDMpe2xlZnQ6ODUuMzYlO3RvcDoxNC42NCV9Lk9pOVJWYzphZnRlcntsZWZ0OjEwMCU7dG9wOjUwJX0uT2k5UlZjPmRpdi51T0dTM3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7b3BhY2l0eToxfS5PaTlSVmM+ZGl2LnVPR1MzOmFmdGVye2JveC1mbGV4OjE7ZmxleC1ncm93OjE7YmFja2dyb3VuZC1zaXplOjIxNnB4IDM2cHg7aGVpZ2h0OmF1dG87bWFyZ2luOjZweDt3aWR0aDphdXRvfS5IT2tEWGQ6YWZ0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAwfS5sZTU5NmM6YWZ0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMzZweCAwfS5lZmxnRjphZnRlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMDhweCAwfS5aT3VYQjphZnRlcntiYWNrZ3JvdW5kOm5vbmV9fS5KNUJuVWR7Y29sb3I6Izc1NzU3NTtmb250LXNpemU6MTJweDtmb250LXN0eWxlOml0YWxpY30udkk1M0Nme2ZvbnQtd2VpZ2h0OjQwMDttaW4td2lkdGg6MDt0ZXh0LXRyYW5zZm9ybTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0udkk1M0NmLnUzYlc0ZXstbW96LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9LnZJNTNDZiAuc25CeWFje21hcmdpbjowfS5jazZQOHtwYWRkaW5nLWJvdHRvbTozcHg7cGFkZGluZy10b3A6OXB4fS5zNUlwMGM+LkJsYk5HZXt3aWR0aDoxMDAlfS55MWJCcGR7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjVweH0uWkVJUUJlLm1VYkNjZXtoZWlnaHQ6MjRweDt0b3A6LTNweDt3aWR0aDoyNHB4fS5pU3RpU2QuRFB2d1ljLC5IemNMN2IuRFB2d1lje2NvbG9yOnJnYmEoMCwwLDAsMC42NSk7bWFyZ2luLWxlZnQ6LTEycHg7bWFyZ2luLXRvcDotMTJweDtwYWRkaW5nOjEycHh9Lm5LNklKe2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyNHB4O3dpZHRoOjI0cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5WaEtJN2N7ZmlsbDpyZ2JhKDAsMCwwLDAuNjUpfS5zNUlwMGMgLkh6Y0w3YiwuczVJcDBjLmVPMlpmZCAuaVN0aVNke2Rpc3BsYXk6bm9uZX0uczVJcDBjLmVPMlpmZCAuSHpjTDdie2Rpc3BsYXk6aW5saW5lLWJsb2NrfS51VmNjamR7LW1vei11c2VyLXNlbGVjdDpub25lOy1tb3otdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSk7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSk7Ym9yZGVyOjEwcHggc29saWQgcmdiYSgwLDAsMCwwLjU0KTstbW96LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaXppbmc6Y29udGVudC1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LWhlaWdodDowO21heC13aWR0aDowO291dGxpbmU6bm9uZTtvdmVyZmxvdzp2aXNpYmxlO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt6LWluZGV4OjB9LnVWY2NqZC5aZGhONWJ7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC43MCl9LnVWY2NqZC5aZGhONWJbYXJpYS1kaXNhYmxlZD0idHJ1ZSJde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuMzApfS51VmNjamRbYXJpYS1kaXNhYmxlZD0idHJ1ZSJde2JvcmRlci1jb2xvcjojYmRiZGJkO2N1cnNvcjpkZWZhdWx0fS51SE1rNmJ7LW1vei10cmFuc2l0aW9uOmFsbCAuMXMgLjE1cyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO3RyYW5zaXRpb246YWxsIC4xcyAuMTVzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSk7LW1vei10cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSxib3JkZXItcmFkaXVzO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtLGJvcmRlci1yYWRpdXM7Ym9yZGVyOjhweCBzb2xpZCB3aGl0ZTtsZWZ0Oi04cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi04cHh9W2FyaWEtY2hlY2tlZD0idHJ1ZSJdPi51SE1rNmIsW2FyaWEtY2hlY2tlZD0ibWl4ZWQiXT4udUhNazZiey1tb3otdHJhbnNmb3JtOnNjYWxlKDApO3RyYW5zZm9ybTpzY2FsZSgwKTt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4xcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpOy1tb3otYm9yZGVyLXJhZGl1czoxMDAlO2JvcmRlci1yYWRpdXM6MTAwJX0uQjZWaHFlIC5UQ0E2cWR7bGVmdDo1cHg7dG9wOjJweH0uTjJScEJlIC5UQ0E2cWR7bGVmdDoxMHB4Oy1tb3otdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTstbW96LXRyYW5zZm9ybS1vcmlnaW46MDt0cmFuc2Zvcm0tb3JpZ2luOjA7dG9wOjdweH0uVENBNnFke2hlaWdodDoxMDAlO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0ucnE4TXdiey1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpQYXBlckFuaW1hdGVDaGVja01hcmtPdXQgLjJzIGZvcndhcmRzO2FuaW1hdGlvbjpxdWFudHVtV2l6UGFwZXJBbmltYXRlQ2hlY2tNYXJrT3V0IC4ycyBmb3J3YXJkcztjbGlwOnJlY3QoMCwyMHB4LDIwcHgsMCk7aGVpZ2h0OjIwcHg7bGVmdDotMTBweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwcHg7d2lkdGg6MjBweH1bYXJpYS1jaGVja2VkPSJ0cnVlIl0+LnJxOE13YixbYXJpYS1jaGVja2VkPSJtaXhlZCJdPi5ycThNd2J7LW1vei1hbmltYXRpb246cXVhbnR1bVdpelBhcGVyQW5pbWF0ZUNoZWNrTWFya0luIC4ycyAuMXMgZm9yd2FyZHM7YW5pbWF0aW9uOnF1YW50dW1XaXpQYXBlckFuaW1hdGVDaGVja01hcmtJbiAuMnMgLjFzIGZvcndhcmRzO2NsaXA6cmVjdCgwLDIwcHgsMjBweCwyMHB4KX1AbWVkaWEgcHJpbnR7W2FyaWEtY2hlY2tlZD0idHJ1ZSJdPi5ycThNd2IsW2FyaWEtY2hlY2tlZD0ibWl4ZWQiXT4ucnE4TXdie2NsaXA6YXV0b319LkI2VmhxZSAuTWJVVE5je2Rpc3BsYXk6bm9uZX0uTWJVVE5je2JvcmRlcjoxcHggc29saWQgI2ZmZjtoZWlnaHQ6NXB4O2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZX0uQjZWaHFlIC5JaTZjVmN7d2lkdGg6OHB4O3RvcDo3cHh9Lk4yUnBCZSAuSWk2Y1Zje3dpZHRoOjExcHh9LklpNmNWY3tib3JkZXI6MXB4IHNvbGlkICNmZmY7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHh9LlBrZ2pCZnstbW96LXRyYW5zZm9ybTpzY2FsZSgyLjUpO3RyYW5zZm9ybTpzY2FsZSgyLjUpOy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgZWFzZTt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBlYXNlO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjIpOy1tb3otYm9yZGVyLXJhZGl1czoxMDAlO2JvcmRlci1yYWRpdXM6MTAwJTtoZWlnaHQ6MjBweDtsZWZ0Oi0xMHB4O29wYWNpdHk6MDtvdXRsaW5lOi4xcHggc29saWQgdHJhbnNwYXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwcHg7d2lkdGg6MjBweDt6LWluZGV4Oi0xfS5aZGhONWIgLlBrZ2pCZntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4yKX0ucXM0MXFlPi5Qa2dqQmZ7LW1vei1hbmltYXRpb246cXVhbnR1bVdpelJhZGlhbElua1NwcmVhZCAuM3M7YW5pbWF0aW9uOnF1YW50dW1XaXpSYWRpYWxJbmtTcHJlYWQgLjNzO2FuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHM7b3BhY2l0eToxfS5pOXhmYmI+LlBrZ2pCZntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwxNTAsMTM2LDAuMil9LnUzYlc0ZT4uUGtnakJmey1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpSYWRpYWxJbmtGb2N1c1B1bHNlIC43cyBpbmZpbml0ZSBhbHRlcm5hdGU7YW5pbWF0aW9uOnF1YW50dW1XaXpSYWRpYWxJbmtGb2N1c1B1bHNlIC43cyBpbmZpbml0ZSBhbHRlcm5hdGU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwwLjIpO29wYWNpdHk6MX1Aa2V5ZnJhbWVzIHF1YW50dW1XaXpQYXBlckFuaW1hdGVDaGVja01hcmtJbnswJXtjbGlwOnJlY3QoMCwwLDIwcHgsMCl9dG97Y2xpcDpyZWN0KDAsMjBweCwyMHB4LDApfX1Aa2V5ZnJhbWVzIHF1YW50dW1XaXpQYXBlckFuaW1hdGVDaGVja01hcmtPdXR7MCV7Y2xpcDpyZWN0KDAsMjBweCwyMHB4LDApfXRve2NsaXA6cmVjdCgwLDIwcHgsMjBweCwyMHB4KX19LlQ4cVZJZntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOjEycHg7Y3Vyc29yOnBvaW50ZXJ9LktjZlVQZXtib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO3BhZGRpbmctbGVmdDoxNnB4fS5pSzQ3cGZ7dHJhbnNmb3JtOnRyYW5zbGF0ZXgoLTJweCkgc2NhbGUoLjgpfS5pSzQ3cGYuTjJScEJle2JvcmRlci1jb2xvcjojNDI4NWY0fS5pSzQ3cGYuaTl4ZmJiPi5NYmhVemQsLmlLNDdwZi51M2JXNGU+Lk1iaFV6ZHtiYWNrZ3JvdW5kLWNvbG9yOiNhMWMyZmF9LkJXWG1Xe2NvbG9yOiNkYjQ0Mzd9Lng5ajI3ZXttYXJnaW4tdG9wOjEwcHh9Yy13aXp7Y29udGFpbjpsYXlvdXQgc3R5bGV9Yy13aXo+Yy1kYXRhe2Rpc3BsYXk6bm9uZX1jLXdpei5yRVRTRHtjb250YWluOm5vbmV9LmVzMGV4e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0uZXMwZXguRzAzaUtie2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5lczBleC5EaWRtYWN7ZmxleC1kaXJlY3Rpb246cm93fS5lczBleC5YUE8yOGR7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9LmVzMGV4LkgxSjl4ZntmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmpNelllZS5xczQxcWV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3otaW5kZXg6MTtvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwKTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXR9LmpNelllZXtvcGFjaXR5OjA7ei1pbmRleDowO3RyYW5zZm9ybTpyb3RhdGUoMjI1ZGVnKTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXR9LmVzMGV4Pi5xamhHa3twb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmluaGVyaXQ7ZmxleC1kaXJlY3Rpb246aW5oZXJpdDtvcGFjaXR5OjA7ei1pbmRleDoxO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZS1vdXR9LmVzMGV4LkRpZG1hYz4ucWpoR2t7bGVmdDo2NHB4fS5lczBleC5HMDNpS2I+LnFqaEdre3JpZ2h0OjY0cHh9LmVzMGV4LlhQTzI4ZD4ucWpoR2t7Ym90dG9tOjY0cHh9LmVzMGV4LkgxSjl4Zj4ucWpoR2t7dG9wOjY0cHh9LmVzMGV4Pi5xamhHay5lTE5UMWR7ZGlzcGxheTpub25lfS5lczBleD4ucWpoR2suRlZLekFie29wYWNpdHk6MTt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2UtaW59LlhIc243ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7Ym9yZGVyOm5vbmU7LW1vei1ib3JkZXItcmFkaXVzOjUwJTtib3JkZXItcmFkaXVzOjUwJTtib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNoYWRvdzowIDZweCAxMHB4IDAgcmdiYSgwLDAsMCwwLjE0KSwwIDFweCAxOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwwIDNweCA1cHggLTFweCByZ2JhKDAsMCwwLDAuMik7Ym94LXNoYWRvdzowIDZweCAxMHB4IDAgcmdiYSgwLDAsMCwwLjE0KSwwIDFweCAxOHB4IDAgcmdiYSgwLDAsMCwwLjEyKSwwIDNweCA1cHggLTFweCByZ2JhKDAsMCwwLDAuMik7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDojZmZmO2hlaWdodDo1NnB4O291dGxpbmU6bm9uZTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NTZweDt6LWluZGV4OjQwMDB9LkhhWGRwYntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4yKTtib3R0b206MDtkaXNwbGF5Om5vbmU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjB9LlhIc243ZTpob3ZlcnstbW96LWJveC1zaGFkb3c6MCA4cHggMTBweCAxcHggcmdiYSgwLDAsMCwwLjE0KSwwIDNweCAxNHB4IDJweCByZ2JhKDAsMCwwLDAuMTIpLDAgNXB4IDVweCAtM3B4IHJnYmEoMCwwLDAsMC4yKTtib3gtc2hhZG93OjAgOHB4IDEwcHggMXB4IHJnYmEoMCwwLDAsMC4xNCksMCAzcHggMTRweCAycHggcmdiYSgwLDAsMCwwLjEyKSwwIDVweCA1cHggLTNweCByZ2JhKDAsMCwwLDAuMil9LlhIc243ZTpob3ZlciAuSGFYZHBie2Rpc3BsYXk6YmxvY2t9LlhIc243ZS5xczQxcWV7LW1vei1ib3gtc2hhZG93OjAgMTJweCAxN3B4IDJweCByZ2JhKDAsMCwwLDAuMTQpLDAgNXB4IDIycHggNHB4IHJnYmEoMCwwLDAsMC4xMiksMCA3cHggOHB4IC00cHggcmdiYSgwLDAsMCwwLjIpO2JveC1zaGFkb3c6MCAxMnB4IDE3cHggMnB4IHJnYmEoMCwwLDAsMC4xNCksMCA1cHggMjJweCA0cHggcmdiYSgwLDAsMCwwLjEyKSwwIDdweCA4cHggLTRweCByZ2JhKDAsMCwwLDAuMil9LlhIc243ZS5xczQxcWUgLkhhWGRwYntkaXNwbGF5OmJsb2NrfS5YSHNuN2UuUkRQWkV7YmFja2dyb3VuZDpyZ2JhKDE1MywxNTMsMTUzLDAuMTAyKTstbW96LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7Y29sb3I6cmdiYSg2OCw2OCw2OCwwLjUwMik7Y3Vyc29yOmRlZmF1bHQ7ZmlsbDpyZ2JhKDY4LDY4LDY4LDAuNTAyKX0uWEhzbjdlLlJEUFpFOmhvdmVye29wYWNpdHk6MX0uWEhzbjdlLlJEUFpFIC5IYVhkcGJ7ZGlzcGxheTpub25lfS5YSHNuN2U6Zm9jdXN7LW1vei1ib3gtc2hhZG93OjAgOHB4IDEwcHggMXB4IHJnYmEoMCwwLDAsMC4xNCksMCAzcHggMTRweCAycHggcmdiYSgwLDAsMCwwLjEyKSwwIDVweCA1cHggLTNweCByZ2JhKDAsMCwwLDAuMik7Ym94LXNoYWRvdzowIDhweCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMTQpLDAgM3B4IDE0cHggMnB4IHJnYmEoMCwwLDAsMC4xMiksMCA1cHggNXB4IC0zcHggcmdiYSgwLDAsMCwwLjIpfS5YSHNuN2U6Zm9jdXMgLkhhWGRwYntkaXNwbGF5OmJsb2NrfS5JcDh6ZmN7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjE2cHg7bGVmdDoxNnB4O3dpZHRoOjI0cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZS1pbi1vdXR9LklwOHpmYy5lTE5UMWR7b3BhY2l0eTowO3Zpc2liaWxpdHk6aGlkZGVuO3RyYW5zZm9ybTpyb3RhdGUoMjI1ZGVnKTt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZS1pbi1vdXR9LklwOHpmYy5SZXFBamJ7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlLWluLW91dH0uZFVSdGZie2hlaWdodDo0MHB4O3dpZHRoOjQwcHh9LmRVUnRmYiAuSXA4emZje3RvcDo4cHg7bGVmdDo4cHh9LkhScDd2ZnstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLHZpc2liaWxpdHkgMHMgZWFzZSAuMnMsdHJhbnNmb3JtIDBzIGVhc2UgLjJzO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZSx2aXNpYmlsaXR5IDBzIGVhc2UgLjJzLC13ZWJraXQtdHJhbnNmb3JtIDBzIGVhc2UgLjJzO2JhY2tncm91bmQtaW1hZ2U6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBmYXJ0aGVzdC1zaWRlLHJnYmEoMjA0LDIwNCwyMDQsMC4yNTEpLHJnYmEoMjA0LDIwNCwyMDQsMC4yNTEpIDgwJSxyZ2JhKDIwNCwyMDQsMjA0LDApIDEwMCUpO2JhY2tncm91bmQtc2l6ZTpjb3ZlcjtsZWZ0OjA7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7dmlzaWJpbGl0eTpoaWRkZW59LlhIc243ZS5xczQxcWU+LkhScDd2ZnstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO29wYWNpdHk6MTt2aXNpYmlsaXR5OnZpc2libGV9LlhIc243ZS5xczQxcWUuTTlCZzRkPi5IUnA3dmZ7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpLG9wYWNpdHkgLjJzIGN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpLG9wYWNpdHkgLjJzIGN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKX0uWEhzbjdlLmo3bklaYj4uSFJwN3Zmey1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDIuMik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDIuMik7dmlzaWJpbGl0eTp2aXNpYmxlfS5zYnN4cWJ7cG9pbnRlci1ldmVudHM6bm9uZTstbW96LXRyYW5zaXRpb246b3BhY2l0eSAuMTVzIGN1YmljLWJlemllcigwLjQsMC4wLDAuMiwxKSAuMTVzO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGN1YmljLWJlemllcigwLjQsMC4wLDAuMiwxKSAuMTVzO2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjpmaXhlZDtyaWdodDowO3RvcDowO29wYWNpdHk6MDt6LWluZGV4OjUwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuNTAyKX0uc2JzeHFiLmlXTzV0ZHtwb2ludGVyLWV2ZW50czphbGw7LW1vei10cmFuc2l0aW9uOm9wYWNpdHkgLjA1cyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSk7dHJhbnNpdGlvbjpvcGFjaXR5IC4wNXMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpO29wYWNpdHk6MX0uZmIwZzZ7cG9zaXRpb246cmVsYXRpdmV9LmM3ZnA1YnstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1vei10cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzO3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3M7Ym9yZGVyOjA7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDtjb2xvcjojNDQ0O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDttaW4td2lkdGg6ODhweDtvdXRsaW5lOm5vbmU7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyfS5oaGNPbWN7Y29sb3I6I2ZmZjtmaWxsOiNmZmZ9Lkp2dFgyZXstbW96LXRyYW5zaXRpb246Ym94LXNoYWRvdyAuMjhzIGN1YmljLWJlemllcigwLjQsMC4wLDAuMiwxKTt0cmFuc2l0aW9uOmJveC1zaGFkb3cgLjI4cyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSk7YmFja2dyb3VuZDojZGZkZmRmOy1tb3otYm94LXNoYWRvdzowIDJweCAycHggMCByZ2JhKDAsMCwwLDAuMTQpLDAgM3B4IDFweCAtMnB4IHJnYmEoMCwwLDAsMC4xMiksMCAxcHggNXB4IDAgcmdiYSgwLDAsMCwwLjIpO2JveC1zaGFkb3c6MCAycHggMnB4IDAgcmdiYSgwLDAsMCwwLjE0KSwwIDNweCAxcHggLTJweCByZ2JhKDAsMCwwLDAuMTIpLDAgMXB4IDVweCAwIHJnYmEoMCwwLDAsMC4yKX0uckdNZTFle2JhY2tncm91bmQ6IzQyODVmNDtjb2xvcjojZmZmfS5KdnRYMmUucXM0MXFley1tb3otdHJhbnNpdGlvbjpib3gtc2hhZG93IC4yOHMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpO3RyYW5zaXRpb246Ym94LXNoYWRvdyAuMjhzIGN1YmljLWJlemllcigwLjQsMC4wLDAuMiwxKTstbW96LXRyYW5zaXRpb246YmFja2dyb3VuZCAuOHM7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC44czstbW96LWJveC1zaGFkb3c6MCA4cHggMTBweCAxcHggcmdiYSgwLDAsMCwwLjE0KSwwIDNweCAxNHB4IDJweCByZ2JhKDAsMCwwLDAuMTIpLDAgNXB4IDVweCAtM3B4IHJnYmEoMCwwLDAsMC4yKTtib3gtc2hhZG93OjAgOHB4IDEwcHggMXB4IHJnYmEoMCwwLDAsMC4xNCksMCAzcHggMTRweCAycHggcmdiYSgwLDAsMCwwLjEyKSwwIDVweCA1cHggLTNweCByZ2JhKDAsMCwwLDAuMil9LnJHTWUxZS5xczQxcWV7YmFja2dyb3VuZDojMzM2N2Q2fS5KdnRYMmUuUkRQWkV7YmFja2dyb3VuZDpyZ2JhKDE1MywxNTMsMTUzLDAuMTAyKX0uZzRqVVZjey1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC4xMjIpO2JvdHRvbTowO2xlZnQ6MDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowfS5GUzRoZ2QudTNiVzRle2JhY2tncm91bmQtY29sb3I6cmdiYSgxNTMsMTUzLDE1MywwLjQpfS5oaGNPbWMudTNiVzRle2JhY2tncm91bmQtY29sb3I6cmdiYSgyMDQsMjA0LDIwNCwwLjI1MSl9LnJHTWUxZS51M2JXNGUgLmc0alVWY3tvcGFjaXR5OjF9LmxWWXhtYnstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7LW1vei10cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2U7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlO2JhY2tncm91bmQtc2l6ZTpjb3ZlcjtsZWZ0OjA7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7dmlzaWJpbGl0eTpoaWRkZW59LmM3ZnA1Yi5pV081dGQ+LmxWWXhtYnt0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO29wYWNpdHk6MTt2aXNpYmlsaXR5OnZpc2libGV9LmM3ZnA1Yi5qN25JWmI+LmxWWXhtYnstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgyLjIpO3Zpc2liaWxpdHk6dmlzaWJsZX0uYzdmcDViPi5sVll4bWJ7YmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGZhcnRoZXN0LXNpZGUscmdiYSgxNTMsMTUzLDE1MywwLjQpLHJnYmEoMTUzLDE1MywxNTMsMC40KSA4MCUscmdiYSgxNTMsMTUzLDE1MywwKSAxMDAlKX0uRlM0aGdkLmlXTzV0ZD4ubFZZeG1ie2JhY2tncm91bmQtaW1hZ2U6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBmYXJ0aGVzdC1zaWRlLHJnYmEoMTUzLDE1MywxNTMsMC40KSxyZ2JhKDE1MywxNTMsMTUzLDAuNCkgODAlLHJnYmEoMTUzLDE1MywxNTMsMCkgMTAwJSl9LmhoY09tYy5pV081dGQ+LmxWWXhtYntiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgZmFydGhlc3Qtc2lkZSxyZ2JhKDIwNCwyMDQsMjA0LDAuMjUxKSxyZ2JhKDIwNCwyMDQsMjA0LDAuMjUxKSA4MCUscmdiYSgyMDQsMjA0LDIwNCwwKSAxMDAlKX0uRlM0aGdkLlJEUFpFe2NvbG9yOnJnYmEoNjgsNjgsNjgsMC41MDIpO2ZpbGw6cmdiYSg2OCw2OCw2OCwwLjUwMik7Y3Vyc29yOmRlZmF1bHR9LmhoY09tYy5SRFBaRXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuNTAyKTtmaWxsOnJnYmEoMjU1LDI1NSwyNTUsMC41MDIpfS5jN2ZwNWIuUkRQWkV7LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO2NvbG9yOnJnYmEoNjgsNjgsNjgsMC41MDIpO2N1cnNvcjpkZWZhdWx0fS5JM0VuRntwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MTZweH0uTmxXcmtie2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHh9LkpSdHlzYnstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1vei10cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzO3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3M7Ym9yZGVyOjA7LW1vei1ib3JkZXItcmFkaXVzOjUwJTtib3JkZXItcmFkaXVzOjUwJTtjb2xvcjojNDQ0O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6IzQ0NDtoZWlnaHQ6NDhweDtvdXRsaW5lOm5vbmU7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjQ4cHg7ei1pbmRleDowfS5KUnR5c2IuUkRQWkV7Y3Vyc29yOmRlZmF1bHR9LlpEU3Mxe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC43NDkpO2ZpbGw6cmdiYSgyNTUsMjU1LDI1NSwwLjc0OSl9Lld6d3JYYi51M2JXNGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1MywxNTMsMTUzLDAuNCl9LlpEU3MxLnUzYlc0ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjA0LDIwNCwyMDQsMC4yNTEpfS5OV2xmM2V7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDApOy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZTtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7bGVmdDowO29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3Zpc2liaWxpdHk6aGlkZGVufS5KUnR5c2IuaVdPNXRkPi5OV2xmM2V7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBjdWJpYy1iZXppZXIoMC4wLDAuMCwwLjIsMSk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTtvcGFjaXR5OjE7dmlzaWJpbGl0eTp2aXNpYmxlfS5KUnR5c2IuajduSVpiPi5OV2xmM2V7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMi4yKTt2aXNpYmlsaXR5OnZpc2libGV9Lld6d3JYYi5pV081dGQ+Lk5XbGYzZXtiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgZmFydGhlc3Qtc2lkZSxyZ2JhKDE1MywxNTMsMTUzLDAuNCkscmdiYSgxNTMsMTUzLDE1MywwLjQpIDgwJSxyZ2JhKDE1MywxNTMsMTUzLDApIDEwMCUpfS5aRFNzMS5pV081dGQ+Lk5XbGYzZXtiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgZmFydGhlc3Qtc2lkZSxyZ2JhKDIwNCwyMDQsMjA0LDAuMjUxKSxyZ2JhKDIwNCwyMDQsMjA0LDAuMjUxKSA4MCUscmdiYSgyMDQsMjA0LDIwNCwwKSAxMDAlKX0uV3p3clhiLlJEUFpFe2NvbG9yOnJnYmEoNjgsNjgsNjgsMC41MDIpO2ZpbGw6cmdiYSg2OCw2OCw2OCwwLjUwMil9LlpEU3MxLlJEUFpFe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC41MDIpO2ZpbGw6cmdiYSgyNTUsMjU1LDI1NSwwLjUwMil9Lk1oWFhjY3tsaW5lLWhlaWdodDo0NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5MdzdHSGR7bWFyZ2luOjhweDtkaXNwbGF5OmlubGluZS1ibG9ja30uZWRoR1Njey1tb3otdXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jaztvdXRsaW5lOm5vbmU7cGFkZGluZy1ib3R0b206OHB4fS5ScEM0TmV7bWluLWhlaWdodDoxLjVlbTtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjp0b3B9LlBjOUdjZXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy10b3A6MTRweH0uS0h4ajhie2JveC1mbGV4OjE7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO2Rpc3BsYXk6YmxvY2s7Zm9udDo0MDAgMTZweCBSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7aGVpZ2h0OjI0cHg7bWluLWhlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7bWFyZ2luOjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtyZXNpemU6bm9uZTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLXdyYXA6YnJlYWstd29yZDt6LWluZGV4OjA7b3ZlcmZsb3cteTp2aXNpYmxlO292ZXJmbG93LXg6aGlkZGVufS5LSHhqOGIuVmhXTjJje3RleHQtYWxpZ246Y2VudGVyfS5lZGhHU2MuZG03WVRjIC5LSHhqOGJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjg3KX0uZWRoR1NjLnUzYlc0ZS5kbTdZVGMgLktIeGo4Yntjb2xvcjojZmZmfS56MG9TcGZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMTIpO2hlaWdodDoxcHg7bGVmdDowO21hcmdpbjowO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS5lZGhHU2MuZG03WVRjPi5ScEM0TmU+Lnowb1NwZntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4xMil9LkJmdXJ3YnstbW96LXRyYW5zZm9ybTpzY2FsZVgoMCk7dHJhbnNmb3JtOnNjYWxlWCgwKTtiYWNrZ3JvdW5kLWNvbG9yOiM0Mjg1ZjQ7aGVpZ2h0OjJweDtsZWZ0OjA7bWFyZ2luOjA7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9LmVkaEdTYy5rMHRXaj4uUnBDNE5lPi56MG9TcGYsLmVkaEdTYy5rMHRXaj4uUnBDNE5lPi5CZnVyd2J7YmFja2dyb3VuZC1jb2xvcjojZDUwMDAwO2hlaWdodDoycHh9LmVkaEdTYy5rMHRXai5kbTdZVGM+LlJwQzROZT4uejBvU3BmLC5lZGhHU2MuazB0V2ouZG03WVRjPi5ScEM0TmU+LkJmdXJ3YntiYWNrZ3JvdW5kLWNvbG9yOiNmZjZlNmV9LmVkaEdTYy5SRFBaRSAuS0h4ajhie2NvbG9yOnJnYmEoMCwwLDAsMC4zOCl9LmVkaEdTYy5SRFBaRT4uUnBDNE5lPi56MG9TcGZ7YmFja2dyb3VuZDpub25lO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCByZ2JhKDAsMCwwLDAuMzgpfS5CZnVyd2IuWTJaeXBmey1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpQYXBlcklucHV0UmVtb3ZlVW5kZXJsaW5lIC4zcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO2FuaW1hdGlvbjpxdWFudHVtV2l6UGFwZXJJbnB1dFJlbW92ZVVuZGVybGluZSAuM3MgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKX0uZWRoR1NjLnUzYlc0ZT4uUnBDNE5lPi5CZnVyd2J7LW1vei1hbmltYXRpb246cXVhbnR1bVdpelBhcGVySW5wdXRBZGRVbmRlcmxpbmUgLjNzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSk7YW5pbWF0aW9uOnF1YW50dW1XaXpQYXBlcklucHV0QWRkVW5kZXJsaW5lIC4zcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpOy1tb3otdHJhbnNmb3JtOnNjYWxlWCgxKTt0cmFuc2Zvcm06c2NhbGVYKDEpfS5lZGhHU2MuRlBZSGtiPi5ScEM0TmV7cGFkZGluZy10b3A6MjRweH0uZnFwNmhkey1tb3otdHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdDt0cmFuc2Zvcm0tb3JpZ2luOnRvcCBsZWZ0Oy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0yMnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTIycHgpOy1tb3otdHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSk7dHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSk7LW1vei10cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLHRvcCx0cmFuc2Zvcm07dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcix0b3AsdHJhbnNmb3JtO2NvbG9yOnJnYmEoMCwwLDAsMC4zOCk7Zm9udDo0MDAgMTZweCBSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHg7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTt3aWR0aDoxMDAlfS5lZGhHU2MudTNiVzRlPi5ScEM0TmU+LmZxcDZoZCwuZWRoR1NjLkNERUxYYj4uUnBDNE5lPi5mcXA2aGR7LW1vei10cmFuc2Zvcm06c2NhbGUoLjc1KTt0cmFuc2Zvcm06c2NhbGUoLjc1KTt0b3A6MTZweH0uZWRoR1NjLmRtN1lUYz4uUnBDNE5lPi5mcXA2aGR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjM4KX0uZWRoR1NjLnUzYlc0ZT4uUnBDNE5lPi5mcXA2aGQsLmVkaEdTYy51M2JXNGUuZG03WVRjPi5ScEM0TmU+LmZxcDZoZHtjb2xvcjojNDI4NWY0fS5GMXBPQmV7Y29sb3I6cmdiYSgwLDAsMCwwLjM4KTtmb250OjQwMCAxNnB4IFJvYm90byxSb2JvdG9EcmFmdCxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206M3B4O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5lZGhHU2MuZG03WVRjIC5GMXBPQmV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjM4KX0uZWRoR1NjLkNERUxYYj4uUnBDNE5lPi5GMXBPQmV7ZGlzcGxheTpub25lfS5TMUJVeWZ7Zm9udDo0MDAgMTJweCBSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7aGVpZ2h0OjE2cHg7bWFyZ2luLWxlZnQ6YXV0bztwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXRvcDo4cHg7cG9pbnRlci1ldmVudHM6bm9uZTt0ZXh0LWFsaWduOnJpZ2h0O2NvbG9yOnJnYmEoMCwwLDAsMC4zOCk7d2hpdGUtc3BhY2U6bm93cmFwfS5lZGhHU2MuZG03WVRjPi5TMUJVeWZ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjM4KX0uZWRoR1NjLndyeHlie3BhZGRpbmctYm90dG9tOjRweH0udjZvZFRiLC5ZRWxaWDpub3QoOmVtcHR5KXtmbGV4OjEgMSBhdXRvO2ZvbnQ6NDAwIDEycHggUm9ib3RvLFJvYm90b0RyYWZ0LEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO21pbi1oZWlnaHQ6MTZweDtwYWRkaW5nLXRvcDo4cHh9LmVkaEdTYy53cnh5YiAuakU4TlVje2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleH0uWUVsWlh7cG9pbnRlci1ldmVudHM6bm9uZX0udjZvZFRie2NvbG9yOiNkNTAwMDB9LmVkaEdTYy5kbTdZVGMgLnY2b2RUYntjb2xvcjojZmY2ZTZlfS5ZRWxaWHtvcGFjaXR5Oi4zfS5lZGhHU2MuazB0V2ogLllFbFpYLC5lZGhHU2M6bm90KC5rMHRXaikgLllFbFpYOm5vdCg6ZW1wdHkpKy52Nm9kVGJ7ZGlzcGxheTpub25lfUBrZXlmcmFtZXMgcXVhbnR1bVdpelBhcGVySW5wdXRSZW1vdmVVbmRlcmxpbmV7MCV7LW1vei10cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2FsZVgoMSk7b3BhY2l0eToxfXRvey1tb3otdHJhbnNmb3JtOnNjYWxlWCgxKTt0cmFuc2Zvcm06c2NhbGVYKDEpO29wYWNpdHk6MH19QGtleWZyYW1lcyBxdWFudHVtV2l6UGFwZXJJbnB1dEFkZFVuZGVybGluZXswJXstbW96LXRyYW5zZm9ybTpzY2FsZVgoMCk7dHJhbnNmb3JtOnNjYWxlWCgwKX10b3stbW96LXRyYW5zZm9ybTpzY2FsZVgoMSk7dHJhbnNmb3JtOnNjYWxlWCgxKX19LlJXenhsey1tb3otdXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jaztvdXRsaW5lOm5vbmU7d2lkdGg6MjAwcHh9Lkt6TlBnY3twb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjp0b3B9LkpHcHR0e2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleH0uSHZuOWZie2JveC1mbGV4OjE7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO2Rpc3BsYXk6YmxvY2s7Zm9udDo0MDAgMTZweCBSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bWFyZ2luOjA7bWluLXdpZHRoOjAlO291dGxpbmU6bm9uZTtwYWRkaW5nOi4xMjVlbSAwO3otaW5kZXg6MH0uSFNsdUdiPi5Idm45ZmI6Oi1tcy1jbGVhciwuSFNsdUdiPi5Idm45ZmI6Oi1tcy1yZXZlYWx7ZGlzcGxheTpub25lfS5TUGNCUmN7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMTIpO2hlaWdodDoxcHg7bWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOjEwMCV9LmtQQndEYnstbW96LXRyYW5zZm9ybTpzY2FsZVgoMCk7dHJhbnNmb3JtOnNjYWxlWCgwKTtiYWNrZ3JvdW5kLWNvbG9yOiMwM2E5ZjQ7aGVpZ2h0OjJweDttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6MTAwJX0uUld6eGwuUkRQWkUgLkh2bjlmYntjb2xvcjpyZ2JhKDAsMCwwLDAuMzgpfS5SV3p4bC5SRFBaRT4uS3pOUGdjPi5TUGNCUmN7YmFja2dyb3VuZDpub25lO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCByZ2JhKDAsMCwwLDAuMzgpfS5rUEJ3RGIuWTJaeXBmey1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpTaW1wbGVJbnB1dFJlbW92ZVVuZGVybGluZSAuM3MgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKTthbmltYXRpb246cXVhbnR1bVdpelNpbXBsZUlucHV0UmVtb3ZlVW5kZXJsaW5lIC4zcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpfS5SV3p4bC51M2JXNGU+Lkt6TlBnYz4ua1BCd0Riey1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpTaW1wbGVJbnB1dEFkZFVuZGVybGluZSAuM3MgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKTthbmltYXRpb246cXVhbnR1bVdpelNpbXBsZUlucHV0QWRkVW5kZXJsaW5lIC4zcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpOy1tb3otdHJhbnNmb3JtOnNjYWxlWCgxKTt0cmFuc2Zvcm06c2NhbGVYKDEpfS5CWXlSN2V7Y29sb3I6cmdiYSgwLDAsMCwwLjM4KTtmb250OjQwMCAxNnB4IFJvYm90byxSb2JvdG9EcmFmdCxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uUld6eGwuQ0RFTFhiPi5Lek5QZ2M+LkJZeVI3ZXtkaXNwbGF5Om5vbmV9QGtleWZyYW1lcyBxdWFudHVtV2l6U2ltcGxlSW5wdXRSZW1vdmVVbmRlcmxpbmV7MCV7LW1vei10cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2FsZVgoMSk7b3BhY2l0eToxfXRvey1tb3otdHJhbnNmb3JtOnNjYWxlWCgxKTt0cmFuc2Zvcm06c2NhbGVYKDEpO29wYWNpdHk6MH19QGtleWZyYW1lcyBxdWFudHVtV2l6U2ltcGxlSW5wdXRBZGRVbmRlcmxpbmV7MCV7LW1vei10cmFuc2Zvcm06c2NhbGVYKDApO3RyYW5zZm9ybTpzY2FsZVgoMCl9dG97LW1vei10cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2FsZVgoMSl9fS5NaDBOTmJ7YmFja2dyb3VuZC1jb2xvcjojMzIzMjMyO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaGFkb3c6MCA2cHggMTBweCAwIHJnYmEoMCwwLDAsMC4xNCksMCAxcHggMThweCAwIHJnYmEoMCwwLDAsMC4xMiksMCAzcHggNXB4IC0xcHggcmdiYSgwLDAsMCwwLjIpO2JveC1zaGFkb3c6MCA2cHggMTBweCAwIHJnYmEoMCwwLDAsMC4xNCksMCAxcHggMThweCAwIHJnYmEoMCwwLDAsMC4xMiksMCAzcHggNXB4IC0xcHggcmdiYSgwLDAsMCwwLjIpO2NvbG9yOiNmZmY7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LXNpemU6MTRweDtsZWZ0OjA7bWluLWhlaWdodDo0OHB4O3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDEwMCUpO3Zpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6OTk5OTl9Lk02dEh2ey1tb3otYm94LWFsaWduOmNlbnRlcjtib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21pbi1oZWlnaHQ6aW5oZXJpdDtwYWRkaW5nOjB9LmFHSkUxYntib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7bGluZS1oZWlnaHQ6bm9ybWFsO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjE0cHggMjRweDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3dvcmQtYnJlYWs6YnJlYWstd29yZH0ueDk1cXple2FsaWduLXNlbGY6Y2VudGVyO2NvbG9yOiNlZWZmNDE7Ym94LWZsZXg6MDtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO2Zsb2F0OnJpZ2h0O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtmb250LXdlaWdodDo1MDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO3BhZGRpbmc6MTRweCAyNHB4fS5LWVpuOWJ7YmFja2dyb3VuZC1jb2xvcjojNDI4NWY0fS5taXNUVGV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NDgxcHgpey5NaDBOTmJ7bWluLXdpZHRoOjI4OHB4O21heC13aWR0aDo1NjhweDstbW96LWJvcmRlci1yYWRpdXM6MnB4O2JvcmRlci1yYWRpdXM6MnB4fS5NcDJaMGJ7bGVmdDoyNHB4O21hcmdpbi1yaWdodDoyNHB4O3JpZ2h0OmF1dG99LlZjQzhGY3tsZWZ0OjUwJTtyaWdodDphdXRvO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwxMDAlKX0uTXAyWjBiLm1pc1RUZXtib3R0b206MjRweH0uVmNDOEZjLm1pc1RUZXtib3R0b206MDt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsMCl9Lk02dEh2e3BhZGRpbmc6MH0uYUdKRTFie3BhZGRpbmctcmlnaHQ6MjRweH19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7LnhiZ0k2ZSAuYUdKRTFiLC54YmdJNmUgLng5NXF6ZXtwYWRkaW5nLWJvdHRvbToyNHB4O3BhZGRpbmctdG9wOjI0cHh9fUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NDgxcHgpIGFuZCAobWF4LXdpZHRoOjU2OHB4KXsuTWgwTk5ie21heC13aWR0aDo5MCV9fUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NTY5cHgpey5NaDBOTmJ7bWF4LXdpZHRoOjU2OHB4fX0uVXgxT217bGlzdC1zdHlsZS10eXBlOm5vbmU7cGFkZGluZy1sZWZ0OjB9LlV4MU9tIGxpe2xpbmUtaGVpZ2h0OjIwcHg7bWFyZ2luLWJvdHRvbTo4cHh9Lmk5NEpsY3ttYXJnaW4tYm90dG9tOjhweH1ib2R5LGlucHV0LHRleHRhcmVhLHNlbGVjdCxidXR0b257Y29sb3I6IzIxMjEyMTtmb250LWZhbWlseTpyb2JvdG8sYXJpYWwsc2Fucy1zZXJpZn1ib2R5e2JhY2tncm91bmQ6I2ZmZjtkaXJlY3Rpb246bHRyO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDI4NjttYXJnaW46MDtwYWRkaW5nOjB9LkgyU29GZSwuSDJTb0ZlOmJlZm9yZSwuSDJTb0ZlOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH0uSDJTb0ZlICosLkgyU29GZSAqOmJlZm9yZSwuSDJTb0ZlICo6YWZ0ZXJ7Ym94LXNpemluZzppbmhlcml0fUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5IMlNvRmV7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4taGVpZ2h0OjEwMHZoO3Bvc2l0aW9uOnJlbGF0aXZlfS5IMlNvRmU6YmVmb3JlLC5IMlNvRmU6YWZ0ZXJ7Ym94LWZsZXg6MTtmbGV4LWdyb3c6MTtjb250ZW50OicnO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjI0cHh9LkgyU29GZTpiZWZvcmV7bWluLWhlaWdodDozMHB4fS5IMlNvRmU6YWZ0ZXJ7bWluLWhlaWdodDoyNHB4fS5IMlNvRmUuTFpnUVhlOmFmdGVye21pbi1oZWlnaHQ6NjRweH19LkgyU29GZX4ublk1b0RkLC5IMlNvRmV+Lm5ZNW9EZCAuanZlSVBle2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LkgyU29GZX4ublk1b0Rkey1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHg7Y29sb3I6Izc1NzU3NTtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjU7bWluLWhlaWdodDoyNDBweDt3aWR0aDoyODBweH0uSDJTb0Zlfi5uWTVvRGQubkRtdVNie3dpZHRoOmF1dG99LkgyU29GZX4ublk1b0RkIC5qRTVycmZ7Y29sb3I6IzIxMjEyMTtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo1MDA7bWFyZ2luLWJvdHRvbToyNHB4fS5IMlNvRmV+Lm5ZNW9EZCAuejJaOTV7Y29sb3I6I2Y0NDMzNn0uSDJTb0Zlfi5uWTVvRGQgLmpFNXJyZjplbXB0eXttYXJnaW46MH0uSDJTb0Zlfi5uWTVvRGQgLmZ1cUF2Zntib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO3BhZGRpbmc6MjRweCAyNHB4IDEycHh9LkgyU29GZX4ublk1b0RkIC5qRTVycmY6ZW1wdHl+LlJVb3I1e2ZvbnQtc2l6ZToxNnB4fS5IMlNvRmV+Lm5ZNW9EZCAuUlVvcjU+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uSDJTb0Zlfi5uWTVvRGQgLlJVb3I1PjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uSDJTb0Zlfi5uWTVvRGQgLmp2ZUlQZXthbGlnbi1pdGVtczpmbGV4LWVuZDtwYWRkaW5nOjAgMTZweCAxMnB4O3RleHQtYWxpZ246cmlnaHR9LkgyU29GZX4ublk1b0RkLm5EbXVTYiAuanZlSVBle2JhY2tncm91bmQ6I2ZhZmFmYTtkaXNwbGF5OmJsb2NrO3BhZGRpbmctYm90dG9tOjA7cG9zaXRpb246cmVsYXRpdmV9LkgyU29GZX4ublk1b0RkIC54ODFUMmV7LW1vei1ib3JkZXItcmFkaXVzOjJweDtib3JkZXItcmFkaXVzOjJweDtwYWRkaW5nOjEycHh9LkgyU29GZX4ublk1b0RkIC54ODFUMmU6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMTIpfS5Wd0N3e2Rpc3BsYXk6bm9uZX0ueTNzT1IgZGl2e2RpcmVjdGlvbjpsdHI7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjEwMCV9LkpPbEpIe2NvbG9yOiNjNTM5Mjk7ZGlzcGxheTpibG9ja30uY0llTG5ke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Y29sb3I6dHJhbnNwYXJlbnQ7aGVpZ2h0OjFweDtvdXRsaW5lOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4fS5BSkNCVXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjojZTBlMGUwO2JvcmRlci13aWR0aDowIDAgMnB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LXNpemU6MTZweDtoZWlnaHQ6NDhweDtsaW5lLWhlaWdodDoyNHB4O21hcmdpbi1ib3R0b206MTZweDttYXJnaW4tcmlnaHQ6MTZweDtvdXRsaW5lOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NDhweH0uQUpDQlU6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uY0llTG5kOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9ue21hcmdpbjowfS5jSWVMbmQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257bWFyZ2luOjB9LkFKQ0JVOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9ue21hcmdpbjowfS5BSkNCVTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnttYXJnaW46MH0uamRnRzF7Ym9yZGVyLWNvbG9yOiMzMzY3ZDZ9LmlUdm1NY3tib3JkZXItY29sb3I6I2M1MzkyOX0uZVFyYnlle2ZvbnQtc2l6ZToyNHB4fS54cXVYVWR7Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MTJweH0uejEybUx7b3BhY2l0eTouNX0uWFdyZ3Zle2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjIwcHg7bWFyZ2luOmF1dG87d2lkdGg6MjBweH0uYkJ5bWNke2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LlZuUW81Ynt3aWR0aDo0NTBweH0ucUh5SnBie292ZXJmbG93LXg6YXV0b30uc0F5cmFme2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDtmb250LXNpemU6MTJweDtjdXJzb3I6cG9pbnRlcn0uT0ZrNVNie2JveC1mbGV4OjE7ZmxleC1ncm93OjE7cGFkZGluZy1sZWZ0OjE2cHh9LmhFZDZoZXt0cmFuc2Zvcm06dHJhbnNsYXRleCgtMnB4KSBzY2FsZSguOCl9LmhFZDZoZS5OMlJwQmV7Ym9yZGVyLWNvbG9yOiM0Mjg1ZjR9LmhFZDZoZS5pOXhmYmI+Lk1iaFV6ZCwuaEVkNmhlLnUzYlc0ZT4uTWJoVXpke2JhY2tncm91bmQtY29sb3I6I2ExYzJmYX0uTGRGNGIgLmNuRDdYY3tvcGFjaXR5Oi4zO3BvaW50ZXItZXZlbnRzOm5vbmV9LkxkRjRiIC5HdGdsQWV7bWFyZ2luLXRvcDowfWJ1dHRvblt0eXBlPWJ1dHRvbl0ud2o3aExie21hcmdpbi10b3A6MTZweH0uc3dJMVRje2JhY2tncm91bmQtY29sb3I6I2QzZDNkMztib3JkZXI6NXB4IHNvbGlkICNkM2QzZDM7LW1vei1ib3JkZXItcmFkaXVzOjUwJTtib3JkZXItcmFkaXVzOjUwJTtmb250LXNpemU6MjBweDtmb250LXdlaWdodDpib2xkO2hlaWdodDo1MHB4O2xpbmUtaGVpZ2h0OjUwcHg7bWFyZ2luOjEwcHggYXV0bzt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6NTBweH0uTHZhVkZlLmZDdUpNZHtkaXNwbGF5Om5vbmV9Lk9xY2FoYntjb2xvcjojNDI4NWY0O2N1cnNvcjpwb2ludGVyfS5GeTBYYmV7YmFja2dyb3VuZDp1cmwoJy8vc3NsLmdzdGF0aWMuY29tL2kxOG4vZmxhZ3MvNDh4MzIvbm9iZXZlbC8zNWI2Yjc0Y2RhZWFlYTY1OGIxNWQ5ZmIyYWVjOWY1MC9mbGFncy5wbmcnKSBuby1yZXBlYXQgMCAwO2JhY2tncm91bmQtc2l6ZToyNHB4IDM4NTlweDt3aWR0aDoyNHB4O2hlaWdodDoxNnB4O292ZXJmbG93OmhpZGRlbn0ucWNseHpiey1tb3otYm94LWFsaWduOmNlbnRlcjtib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ucjVpU3Jkey1tb3otYm94LWFsaWduOmVuZDtib3gtYWxpZ246ZW5kO2FsaWduLWl0ZW1zOmZsZXgtZW5kO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDBweDtsaW5lLWhlaWdodDoxNnB4O3BhZGRpbmctcmlnaHQ6MTJweDt3aWR0aDo2NHB4fS5yNWlTcmQubFBHcTFje21hcmdpbi10b3A6MjRweH0uQ08xbExie2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7cGFkZGluZy1sZWZ0OjhweH0uYUNqWnVjIC51TFgycHtoZWlnaHQ6MjRweDtvcGFjaXR5OjE7d2lkdGg6MjRweH0ucjVpU3JkIC5lVTgwOWR7dG9wOjE0cHh9LmlDYnNsZHtmb250LXNpemU6MTJweDttYXJnaW4tdG9wOjB9LmxxQnl6ZCAuUnhzR1BlOmVtcHR5e2ZsZXg6bm9uZTttaW4taGVpZ2h0OjA7cGFkZGluZy10b3A6MH0uRzJKS1N7d2lkdGg6MTAwJX0ucXFZUVdley1tb3otYm94LWFsaWduOnN0YXJ0O2JveC1hbGlnbjpzdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtYm94O2Rpc3BsYXk6LW1vei1pbmxpbmUtYm94O2Rpc3BsYXk6LW1zLWlubGluZS1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1pbmxpbmUtZmxleDtkaXNwbGF5OmlubGluZS1mbGV4fS5SU0pvNGV7Ym94LWZsZXg6MTtmbGV4LWdyb3c6MTt3aWR0aDoxODhweH0uUlNKbzRlIC56SFFrQmZ7ZGlyZWN0aW9uOmx0cn0uem1DOHlie3RyYW5zZm9ybTp0cmFuc2xhdGUoLTE4JSwtMyUpfS5uTTBVNmJ7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtd2VpZ2h0OmJvbGR9LnhVUkpZZSwuZjRvaXZke2Rpc3BsYXk6bm9uZX0uUXh4dUhje2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW46NDhweCAxNnB4fS5hMWJJWGV7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtjb2xvcjojNDI4NWY0O21hcmdpbjo4cHh9Lk43Z0hKYnt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xOCUsLTMlKX0ubTZBemRle2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDstbW96LWZsZXgtd3JhcDp3cmFwO2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5oN3h4UWV7d2lkdGg6MTAwJX0uaDd4eFFlOmZpcnN0LWNoaWxkey1tb3otYm94LW9yZGluYWwtZ3JvdXA6MTtvcmRlcjoxfS5oN3h4UWU6bnRoLWNoaWxkKDIpey1tb3otYm94LW9yZGluYWwtZ3JvdXA6MztvcmRlcjozfS5tNkF6ZGUgLnpIUWtCZnt0ZXh0LWFsaWduOmxlZnR9Lld5NUh6ZXtmb250LXNpemU6MTJweDstbW96LWJveC1vcmRpbmFsLWdyb3VwOjI7b3JkZXI6Mjt3aWR0aDoxMDAlfS5YRXRkc2R7LW1vei1ib3gtb3JkaW5hbC1ncm91cDo0O29yZGVyOjR9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7Lm02QXpkZS5EYlFuSWUgLmg3eHhRZXtib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO3dpZHRoOi1tb3otY2FsYyg1MCUgLSA4cHgpO3dpZHRoOmNhbGMoNTAlIC0gOHB4KX0ubTZBemRlLkRiUW5JZSAuaDd4eFFlOmZpcnN0LWNoaWxke21hcmdpbi1yaWdodDoxNnB4fS5tNkF6ZGUuRGJRbkllIC5YRXRkc2R7d2lkdGg6MTAwJX0ubTZBemRlLkRiUW5JZSAuV3k1SHpley1tb3otYm94LW9yZGluYWwtZ3JvdXA6NTtvcmRlcjo1fX0uVkpMaEVle2NvbG9yOiM0Mjg1ZjR9LmtueTM5YntsaXN0LXN0eWxlLXBvc2l0aW9uOmluc2lkZTtwYWRkaW5nOjB9LmtueTM5YiBsaXttYXJnaW4tYm90dG9tOjVweH0uZm1NZ0N7YmFja2dyb3VuZDp1cmwoJy8vc3NsLmdzdGF0aWMuY29tL2FjY291bnRzL21hcmMvYWN0aW9uX21lbnUucG5nJykgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZToxMHB4IDIwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjIwcHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjEwcHh9LkNHVDVCZHtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MjRweDt2ZXJ0aWNhbC1hbGlnbjpib3R0b207d2lkdGg6MjRweH0ueXp0WXRme2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyNHB4O3ZlcnRpY2FsLWFsaWduOmJvdHRvbTt3aWR0aDoyNHB4O2Rpc3BsYXk6bm9uZX0uVkpMaEVlLC55enRZdGZ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNOUFRyY3tkaXNwbGF5Om5vbmV9LkVGUWpNYyBpbnB1dHtmb250LWZhbWlseTptb25vc3BhY2V9LnVxQ2VLZHt0cmFuc2Zvcm06dHJhbnNsYXRlKDE1cHgsLTIwcHgpO3otaW5kZXg6Mn0uZ2Y3WnNje3RyYW5zZm9ybTp0cmFuc2xhdGUoMjRweCwwcHgpfS5EdE1LV2V7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtOSUsLTMlKX0udHpjNUlke21heC1oZWlnaHQ6MjMwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMzElLC0zJSl9LnFyYWNuZntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO291dGxpbmU6bm9uZX0ucXJhY25mOmFjdGl2ZSwucXJhY25mOmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjEyKTtib3JkZXItcmFkaXVzOjJweDttYXJnaW46LTZweDtwYWRkaW5nOjZweH0uUWR4Ulpje2Zsb2F0OmxlZnQ7aGVpZ2h0OjQ0cHg7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjM2cHh9Lm5EbXVTYiAuanZlSVBle2JvcmRlci10b3A6MXB4IHNvbGlkICNlMGUwZTA7cGFkZGluZy1ib3R0b206MH0ubkRtdVNiIC5qdmVJUGUgLnRrM042ZS1MZ2JzU2UtbjJ0bzBle3BhZGRpbmctYm90dG9tOjEycHg7cGFkZGluZy10b3A6MTJweH0udkpwMUlje2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6bm9uZTt3aWR0aDoxMDAlfS5laVF4RnttYXJnaW46LTI0cHggMCAtMzJweCAtMjRweH0uVWtYcE9ie2JhY2tncm91bmQ6dXJsKC8vc3NsLmdzdGF0aWMuY29tL2FjY291bnRzL3VpL3Byb2dyZXNzX3NwaW5uZXJfY29sb3JfMjBkcF80eC5naWYpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO2JhY2tncm91bmQtc2l6ZTozNnB4fS5LVkpvbGZ7ZGlzcGxheTpub25lfS5uVEhMOGMsLmhYZXNKZXt3aGl0ZS1zcGFjZTpub3dyYXB9Lm8ydDdEYntmb250LXNpemU6MTNweH0uWEJyOGlie2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9LnR0Z0toZTpmb2N1cywudHRnS2hlOmhvdmVye2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y3Vyc29yOmRlZmF1bHR9LkFuVE1qYntjb2xvcjojNDI4NWY0fS5xbHFPZWV7Zm9udC1zaXplOjEycHh9LnpKS0lWey1tb3otdXNlci1zZWxlY3Q6bm9uZTstbW96LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpOy1tb3otYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNpemluZzpjb250ZW50LWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MjBweDtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjIwcHg7ei1pbmRleDowfS5TQ1d1ZGV7LW1vei1hbmltYXRpb246cXVhbnR1bVdpelBhcGVyQW5pbWF0ZVNlbGVjdE91dCAuMnMgZm9yd2FyZHM7YW5pbWF0aW9uOnF1YW50dW1XaXpQYXBlckFuaW1hdGVTZWxlY3RPdXQgLjJzIGZvcndhcmRzO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Y3Vyc29yOnBvaW50ZXJ9W2FyaWEtY2hlY2tlZD0idHJ1ZSJdPi5TQ1d1ZGV7LW1vei1hbmltYXRpb246cXVhbnR1bVdpelBhcGVyQW5pbWF0ZVNlbGVjdEluIC4ycyAuMXMgZm9yd2FyZHM7YW5pbWF0aW9uOnF1YW50dW1XaXpQYXBlckFuaW1hdGVTZWxlY3RJbiAuMnMgLjFzIGZvcndhcmRzfS50NW5Sb3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDstbW96LWJvcmRlci1yYWRpdXM6NTAlO2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjpzb2xpZCAycHg7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsMC41NCl9Lk4yUnBCZSAudDVuUm97Ym9yZGVyLWNvbG9yOiMwMDk2ODh9LndFSXBxYntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlOy1tb3otYm9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjVweCBzb2xpZCAjMDA5Njg4O3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gZWFzZSAuMjhzO3RyYW5zaXRpb246dHJhbnNmb3JtIGVhc2UgLjI4czt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDApfVthcmlhLWNoZWNrZWQ9InRydWUiXSAud0VJcHFie3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSl9LnpKS0lWW2FyaWEtZGlzYWJsZWQ9InRydWUiXXtjdXJzb3I6ZGVmYXVsdDtwb2ludGVyLWV2ZW50czpub25lfVthcmlhLWRpc2FibGVkPSJ0cnVlIl1bYXJpYS1jaGVja2VkPSJ0cnVlIl0gLndFSXBxYixbYXJpYS1kaXNhYmxlZD0idHJ1ZSJdIC50NW5Sb3tib3JkZXItY29sb3I6cmdiYSgwLDAsMCwwLjI2KX0uazVjdkdley1tb3otdHJhbnNmb3JtOnNjYWxlKDMpO3RyYW5zZm9ybTpzY2FsZSgzKTstbW96LXRyYW5zaXRpb246b3BhY2l0eSAuMTVzIGVhc2U7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgZWFzZTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC4yKTstbW96LWJvcmRlci1yYWRpdXM6MTAwJTtib3JkZXItcmFkaXVzOjEwMCU7aGVpZ2h0OjIwcHg7bGVmdDowO29wYWNpdHk6MDtvdXRsaW5lOi4xcHggc29saWQgdHJhbnNwYXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoyMHB4O3otaW5kZXg6LTF9LnFzNDFxZT4uazVjdkdley1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpSYWRpYWxJbmtTcHJlYWQgLjNzO2FuaW1hdGlvbjpxdWFudHVtV2l6UmFkaWFsSW5rU3ByZWFkIC4zczthbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzO29wYWNpdHk6MX0uaTl4ZmJiPi5rNWN2R2V7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwwLjIpfS51M2JXNGU+Lms1Y3ZHZXstbW96LWFuaW1hdGlvbjpxdWFudHVtV2l6UmFkaWFsSW5rRm9jdXNQdWxzZSAuN3MgaW5maW5pdGUgYWx0ZXJuYXRlO2FuaW1hdGlvbjpxdWFudHVtV2l6UmFkaWFsSW5rRm9jdXNQdWxzZSAuN3MgaW5maW5pdGUgYWx0ZXJuYXRlO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDE1MCwxMzYsMC4yKTtvcGFjaXR5OjF9QGtleWZyYW1lcyBxdWFudHVtV2l6UGFwZXJBbmltYXRlU2VsZWN0SW57MCV7aGVpZ2h0OjA7d2lkdGg6MH10b3toZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfX1Aa2V5ZnJhbWVzIHF1YW50dW1XaXpQYXBlckFuaW1hdGVTZWxlY3RPdXR7MCV7aGVpZ2h0OjA7d2lkdGg6MH10b3toZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfX0uQWhkREF7bWFyZ2luLXJpZ2h0OjMycHh9LlNLZjlGZntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LlNLZjlGZisuU0tmOUZme21hcmdpbi10b3A6MjRweH0uRUNJM0Vke2ZsZXgtc2hyaW5rOjB9LkVDSTNFZCAuTWJoVXpke2JhY2tncm91bmQtY29sb3I6cmdiYSg2NiwxMzMsMjQ0LDAuMil9LkVDSTNFZCAublFPckViLC5FQ0kzRWQuTjJScEJlIC5JZDVWMXtib3JkZXItY29sb3I6IzQyODVmNH0uWTBaamNle21hcmdpbi1sZWZ0OjI0cHh9LlkwWmpjZSBwe21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjB9LlJIWTQzY3tjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxMnB4fS5FNmJFWWR7ZGlzcGxheTpub25lfS5DTWdUWGMgLkU2YkVZZHtkaXNwbGF5OmJsb2NrfS5peHF3NWV7Zm9udC13ZWlnaHQ6NTAwfS5rZHd0RXttYXJnaW4tdG9wOjMwcHh9LkhkZ2tvY3tjb2xvcjpyZ2JhKDAsMCwwLC41NCl9LnFoYmpUZHttYXJnaW4tdG9wOjB9LnduWGxEY3stbW96LWJvcmRlci1yYWRpdXM6OXB4O2JvcmRlci1yYWRpdXM6OXB4O2hlaWdodDoxOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoxOHB4fS5zQXEyZmR7bWFyZ2luLWxlZnQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmJxVjdSZHt3aWR0aDoxMDAlfS5DRnRuQmMsLlBybFM1e3BhZGRpbmctcmlnaHQ6MTRweH0uYmVjeERje2Rpc3BsYXk6bm9uZX0uVXNLQXRje21hcmdpbi10b3A6MzVweDtwb3NpdGlvbjpyZWxhdGl2ZX0uR1FnQjRke2Zsb2F0OmxlZnQ7d2lkdGg6MTQwcHg7aGVpZ2h0OmF1dG87bWFyZ2luLXJpZ2h0OjIwcHh9Lmd1TzJuZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC45KTtwYWRkaW5nOjYwcHg7cG9zaXRpb246YWJzb2x1dGV9LnZINkExZXtmb250LXNpemU6MThweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MX0uZHhYRU1le2NvbG9yOiM3Nzc3Nzc7bWFyZ2luLWJvdHRvbTowfS5ZZDA1aWV7d2hpdGUtc3BhY2U6bm93cmFwfS5rNjRRMGJ7d2hpdGUtc3BhY2U6bm93cmFwfS5qejVmeGR7ZGlzcGxheTp0YWJsZTtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjIycHggMCAyNHB4O3BhZGRpbmc6MDt3aWR0aDoxMDAlfS5PaEpzcXtkaXNwbGF5OnRhYmxlLXJvd30uRkRqaUFke2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjp0b3A7d2lkdGg6MjRweH0uUTFZRmxlLC5Hdk0xRmR7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ub05RdVpke2Rpc3BsYXk6dGFibGUtY2VsbDtwYWRkaW5nOjNweCAyNHB4IDIxcHggMjRweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnlqbWRoY3tkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246dG9wO3dpZHRoOjI0cHh9LlNBcGFKe2ZvbnQtc2l6ZToxMnB4O21hcmdpbjowIDAgMzZweCAwfS5TQXBhSiBoMntsaW5lLWhlaWdodDoyNHB4fS5TQXBhSiBwe2NvbG9yOiM5ZTllOWU7bGluZS1oZWlnaHQ6MS40O21hcmdpbi10b3A6NHB4fS5NQ3oyVGN7bWFyZ2luOjA7d2hpdGUtc3BhY2U6cHJlLWxpbmV9LmhBVzlaZXttaW4taGVpZ2h0OjQ4cHg7dGV4dC1hbGlnbjpyaWdodH0uek93NFNke21hcmdpbi1sZWZ0OjhweH0uRDdUWHVle2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleH0udDhKWXR7Ym94LWZsZXg6MTtmbGV4LWdyb3c6MTtwYWRkaW5nLWxlZnQ6MjBweH0uQkdod3lkLk4yUnBCZXtib3JkZXItY29sb3I6IzQyODVmNH0uQkdod3lkLmk5eGZiYj4uTWJoVXpkLC5CR2h3eWQudTNiVzRlPi5NYmhVemR7YmFja2dyb3VuZC1jb2xvcjojYTFjMmZhfS5qVTdnZGR7bWluLWhlaWdodDo0OHB4O3RleHQtYWxpZ246cmlnaHR9LlRxVTN2e21hcmdpbi1sZWZ0OjhweH0udjZDb2Jke2ZvbnQtc2l6ZToxMnB4fS5EcmlZMGR7bWFyZ2luLXJpZ2h0OjMycHh9LnhyckVNe2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleH0ueHJyRU0rLnhyckVNe21hcmdpbi10b3A6MjRweH0uSlNacFJle2ZsZXgtc2hyaW5rOjB9LkpTWnBSZSAuTWJoVXpke2JhY2tncm91bmQtY29sb3I6cmdiYSg2NiwxMzMsMjQ0LDAuMil9LkpTWnBSZSAublFPckViLC5KU1pwUmUuTjJScEJlIC5JZDVWMXtib3JkZXItY29sb3I6IzQyODVmNH0uTTkwYThje21hcmdpbi1sZWZ0OjI0cHh9Lk05MGE4YyBwe21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjB9LlB4Nm5le2NvbG9yOiM2MTYxNjE7Zm9udC1zaXplOjEycHh9Lmp2YnRje2ZvbnQtc2l6ZToxMnB4O21hcmdpbi10b3A6MH0udEk5Zmpke2NvbG9yOnJnYmEoMCwwLDAsLjU0KTtmb250LXNpemU6MTJweDttYXJnaW4tYm90dG9tOjA7bGluZS1oZWlnaHQ6MThweH0uT2ptTnJie21hcmdpbi10b3A6MH0uQ1hJS3dje2Rpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NTAwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5TTTZHemJ7Zm9udC1zaXplOjEycHg7cGFkZGluZzoxNnB4IDA7dGV4dC1hbGlnbjpsZWZ0fS5SRmlvRmR7Zm9udC13ZWlnaHQ6NTAwfS5DOThTZGN7bWFyZ2luLXJpZ2h0OjMycHh9Lk1FVGtEZntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9Lk1FVGtEZisuTUVUa0Rme21hcmdpbi10b3A6MjRweH0uQXhqZG9le2ZsZXgtc2hyaW5rOjB9LkF4amRvZSAuTWJoVXpke2JhY2tncm91bmQtY29sb3I6cmdiYSg2NiwxMzMsMjQ0LDAuMil9LkF4amRvZSAublFPckViLC5BeGpkb2UuTjJScEJlIC5JZDVWMXtib3JkZXItY29sb3I6IzQyODVmNH0uc3hYY0pke21hcmdpbi1sZWZ0OjI0cHh9LnN4WGNKZCBwe21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjB9LklVa1ZhY3tjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxMnB4fS51dWs3dHtmb250LXNpemU6MTJweDtwYWRkaW5nOjE2cHggMDt0ZXh0LWFsaWduOmxlZnR9LnBrbHVCZHt3aGl0ZS1zcGFjZTpub3dyYXB9LndqaEZlZHtmb250LXN0eWxlOml0YWxpY30uTVkxVXFje2ZvbnQtc2l6ZToxMnB4O21hcmdpbi10b3A6MH0uVnBGbDJke21hcmdpbi10b3A6MzJweH0uUTNkS0x7bWFyZ2luLWJvdHRvbToxMHB4O3RleHQtYWxpZ246Y2VudGVyfS5RVzFmM2R7d2lkdGg6MTAwJX1bY2xhc3N+PSJfZ29vZ2xlLWFjY291bnQiXXtmb250LXN0eWxlOml0YWxpY306bGFuZyhhcikgW2NsYXNzfj0iX2dvb2dsZS1hY2NvdW50Il0sOmxhbmcoamEpIFtjbGFzc349Il9nb29nbGUtYWNjb3VudCJdLDpsYW5nKGtvKSBbY2xhc3N+PSJfZ29vZ2xlLWFjY291bnQiXSw6bGFuZyh6aCkgW2NsYXNzfj0iX2dvb2dsZS1hY2NvdW50Il17Zm9udC1zdHlsZTpub3JtYWx9W2NsYXNzfj0iX215LWFjY291bnQiXXtmb250LXN0eWxlOml0YWxpY306bGFuZyhhcikgW2NsYXNzfj0iX215LWFjY291bnQiXSw6bGFuZyhqYSkgW2NsYXNzfj0iX215LWFjY291bnQiXSw6bGFuZyhrbykgW2NsYXNzfj0iX215LWFjY291bnQiXSw6bGFuZyh6aCkgW2NsYXNzfj0iX215LWFjY291bnQiXXtmb250LXN0eWxlOm5vcm1hbH1bY2xhc3N+PSJfd2FhIl0sW2NsYXNzfj0iX25hYyJde2ZvbnQtd2VpZ2h0OjUwMH1bY2xhc3N+PSJfcHJpbWFyeS1vcHRpb24tbGFiZWwiXXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OmxhbmcoYXIpIFtjbGFzc349Il9wcmltYXJ5LW9wdGlvbi1sYWJlbCJdLDpsYW5nKGphKSBbY2xhc3N+PSJfcHJpbWFyeS1vcHRpb24tbGFiZWwiXSw6bGFuZyhrbykgW2NsYXNzfj0iX3ByaW1hcnktb3B0aW9uLWxhYmVsIl0sOmxhbmcoemgpIFtjbGFzc349Il9wcmltYXJ5LW9wdGlvbi1sYWJlbCJde3RleHQtdHJhbnNmb3JtOm5vbmV9W2NsYXNzfj0iX3NlY29uZGFyeS1vcHRpb24tbGFiZWwiXXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OmxhbmcoYXIpIFtjbGFzc349Il9zZWNvbmRhcnktb3B0aW9uLWxhYmVsIl0sOmxhbmcoamEpIFtjbGFzc349Il9zZWNvbmRhcnktb3B0aW9uLWxhYmVsIl0sOmxhbmcoa28pIFtjbGFzc349Il9zZWNvbmRhcnktb3B0aW9uLWxhYmVsIl0sOmxhbmcoemgpIFtjbGFzc349Il9zZWNvbmRhcnktb3B0aW9uLWxhYmVsIl17dGV4dC10cmFuc2Zvcm06bm9uZX1bY2xhc3N+PSJfcHJpdmFjeS1jaGVja3VwIl17Zm9udC1zdHlsZTppdGFsaWN9OmxhbmcoYXIpIFtjbGFzc349Il9wcml2YWN5LWNoZWNrdXAiXSw6bGFuZyhqYSkgW2NsYXNzfj0iX3ByaXZhY3ktY2hlY2t1cCJdLDpsYW5nKGtvKSBbY2xhc3N+PSJfcHJpdmFjeS1jaGVja3VwIl0sOmxhbmcoemgpIFtjbGFzc349Il9wcml2YWN5LWNoZWNrdXAiXXtmb250LXN0eWxlOm5vcm1hbH1bY2xhc3N+PSJfbXV0ZS1hZCJde2ZvbnQtc3R5bGU6aXRhbGljfTpsYW5nKGFyKSBbY2xhc3N+PSJfbXV0ZS1hZCJdLDpsYW5nKGphKSBbY2xhc3N+PSJfbXV0ZS1hZCJdLDpsYW5nKGtvKSBbY2xhc3N+PSJfbXV0ZS1hZCJdLDpsYW5nKHpoKSBbY2xhc3N+PSJfbXV0ZS1hZCJde2ZvbnQtc3R5bGU6bm9ybWFsfS5vTk55dGN7YmFja2dyb3VuZC1jb2xvcjojZWVlO2NvbG9yOnJnYmEoMCwwLDAsMC44Nyk7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDttYXJnaW4tYm90dG9tOjMwcHg7cGFkZGluZzoxMnB4fS5vTk55dGMgcHttYXJnaW46MH0udFZkVWRje2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luLWJvdHRvbToxMHB4O21hcmdpbi10b3A6MzFweH0uT21ZOTlje2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7bWFyZ2luLWJvdHRvbToxMHB4O21hcmdpbi10b3A6MTZweH0uSWVzaWIgW2NsYXNzfj0iX2dvb2dsZS1hY2NvdW50Il17Zm9udC1zdHlsZTpub3JtYWw7d2hpdGUtc3BhY2U6bm93cmFwfS5xTHVHTWIgW2NsYXNzfj0iX3dhYSJde2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0Om5vcm1hbH06bGFuZyhhcikgLnFMdUdNYiBbY2xhc3N+PSJfd2FhIl0sOmxhbmcoamEpIC5xTHVHTWIgW2NsYXNzfj0iX3dhYSJdLDpsYW5nKGtvKSAucUx1R01iIFtjbGFzc349Il93YWEiXSw6bGFuZyh6aCkgLnFMdUdNYiBbY2xhc3N+PSJfd2FhIl17Zm9udC1zdHlsZTpub3JtYWx9LklQYWZ3ZT5wOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uSVBhZndlPnA6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjI5cHh9LklQYWZ3ZSBoMntmb250LXdlaWdodDpib2xkfS5JUGFmd2UgaDN7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoyMHB4fS5JUGFmd2Ugb2wsLklQYWZ3ZSB1bHtwYWRkaW5nLWxlZnQ6MTZweH0uSVBhZndlIG9se2ZvbnQtd2VpZ2h0OmJvbGR9LklQYWZ3ZSBvbD5saT5wLC5JUGFmd2Ugb2w+bGk+ZGl2e2ZvbnQtd2VpZ2h0Om5vcm1hbH0uSVBhZndlIGxpe3BhZGRpbmctbGVmdDo0cHh9LllsZkhGZXttYXJnaW4tcmlnaHQ6NjRweDtwYWRkaW5nOjE0cHggMH0uWWxmSEZlIHB7bWFyZ2luOjB9LlZqTjgwe21hcmdpbjoyNHB4IDAgNnB4fS5od3NZSj5wOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uQ2Vnc1RiIFtjbGFzc349Il93YWEiXVtjbGFzc349Il9zdHlsZTIiXXtmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpub3JtYWx9OmxhbmcoYXIpIC5DZWdzVGIgW2NsYXNzfj0iX3dhYSJdW2NsYXNzfj0iX3N0eWxlMiJdLDpsYW5nKGphKSAuQ2Vnc1RiIFtjbGFzc349Il93YWEiXVtjbGFzc349Il9zdHlsZTIiXSw6bGFuZyhrbykgLkNlZ3NUYiBbY2xhc3N+PSJfd2FhIl1bY2xhc3N+PSJfc3R5bGUyIl0sOmxhbmcoemgpIC5DZWdzVGIgW2NsYXNzfj0iX3dhYSJdW2NsYXNzfj0iX3N0eWxlMiJde2ZvbnQtc3R5bGU6bm9ybWFsfS5UemVvdWQgc3BhbltjbGFzc349Il93YWEiXSwuVHplb3VkIHNwYW5bY2xhc3N+PSJfbmFjIl17Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6bm9ybWFsfTpsYW5nKGFyKSAuVHplb3VkIHNwYW5bY2xhc3N+PSJfd2FhIl0sOmxhbmcoamEpIC5UemVvdWQgc3BhbltjbGFzc349Il93YWEiXSw6bGFuZyhrbykgLlR6ZW91ZCBzcGFuW2NsYXNzfj0iX3dhYSJdLDpsYW5nKHpoKSAuVHplb3VkIHNwYW5bY2xhc3N+PSJfd2FhIl0sOmxhbmcoYXIpIC5UemVvdWQgc3BhbltjbGFzc349Il9uYWMiXSw6bGFuZyhqYSkgLlR6ZW91ZCBzcGFuW2NsYXNzfj0iX25hYyJdLDpsYW5nKGtvKSAuVHplb3VkIHNwYW5bY2xhc3N+PSJfbmFjIl0sOmxhbmcoemgpIC5UemVvdWQgc3BhbltjbGFzc349Il9uYWMiXXtmb250LXN0eWxlOm5vcm1hbH0uZVV4YlRkLndUY0lqZHttYXJnaW4tdG9wOjUzcHh9LmNlS1RRZXtvdXRsaW5lOm5vbmV9LndUY0lqZCAuY2VLVFFle3BhZGRpbmctYm90dG9tOjQ4cHh9LlphRmFWZXtkaXNwbGF5Om5vbmV9LktjUG1aYntjdXJzb3I6cG9pbnRlcjtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTIpO3Bvc2l0aW9uOnJlbGF0aXZlOy1tb3otdXNlci1zZWxlY3Q6bm9uZX0uS2NQbVpiOmhvdmVye291dGxpbmU6bm9uZX0ud1RjSWpkLktjUG1aYjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2Y1ZjVmNX0ud1RjSWpkLktjUG1aYjpob3ZlcisuWmFGYVZlKy53VGNJamQuS2NQbVpie2JvcmRlci10b3A6MXB4IHNvbGlkICNmNWY1ZjV9LndUY0lqZC5LY1BtWmI6aG92ZXIrLlphRmFWZSsuRkZtcEZle2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmNWY1ZjV9Lm13ZXZnZntkaXNwbGF5OmlubGluZS1ibG9ja30ud1RjSWpkIC5td2V2Z2Z7bWFyZ2luLXJpZ2h0OjgwcHg7cGFkZGluZzoyNHB4IDAgMjRweCA0MHB4fS5LaVZWcWIgLm13ZXZnZntjb2xvcjojNDI4NWY0O2ZvbnQtc2l6ZToxNnB4O21hcmdpbi1yaWdodDo2NHB4O3BhZGRpbmc6MTRweCAwIDIwcHggMjRweH0uU1RGRndle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjQwcHg7dG9wOjUwJTttYXJnaW4tdG9wOi0xN3B4fS5LaVZWcWIgLlNURkZ3ZXtyaWdodDoxNnB4O21hcmdpbi10b3A6LTIycHh9LmQxZUJkYntoZWlnaHQ6MzVweDt3aWR0aDozNXB4fS5xcWRSZSwuQ3ZhczVke3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtsZWZ0OjZweDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6N3B4fS53TTI1d3tiYWNrZ3JvdW5kLWNvbG9yOiM0Mjg1ZjQ7LW1vei1ib3JkZXItcmFkaXVzOjUwJTtib3JkZXItcmFkaXVzOjUwJTtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LktpVlZxYiAud00yNXd7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ud00yNXcgLkN2YXM1ZHtkaXNwbGF5Om5vbmV9Lm56dWJ5ZHtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm56dWJ5ZCAucXFkUmV7ZGlzcGxheTpub25lfS5GRm1wRmV7bWFyZ2luOjB9LktpVlZxYiAuRkZtcEZle2Rpc3BsYXk6bm9uZX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOjEwMjRweCksb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpLG9ubHkgc2NyZWVuIGFuZCAobWF4LWhlaWdodDo3MDBweCl7LndUY0lqZCAubXdldmdme21hcmdpbi1yaWdodDo2NHB4O3BhZGRpbmc6MjBweCAwIDIwcHggMjRweH0ud1RjSWpkIC5TVEZGd2V7cmlnaHQ6MjRweH19Lml2ckU1PnA6Zmlyc3QtY2hpbGR7bWFyZ2luLWJvdHRvbToyNHB4O21hcmdpbi10b3A6MH0uaXZyRTUgb2wsLml2ckU1IHVse3BhZGRpbmctbGVmdDoxNnB4fS5pdnJFNSBsaXtwYWRkaW5nLWxlZnQ6NHB4fS5pdnJFNSBocntib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTIpO21hcmdpbi10b3A6MH0uYkpCaHVle2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6Ym9sZH0uWXBlN05le2JvcmRlcjowO3dpZHRoOjEwMCV9LlhHaWFhYntmb250LXNpemU6MTRweH0uc2RJV3Nie3doaXRlLXNwYWNlOm5vd3JhcH0uckRrSnB7cGFkZGluZzo4cHggMH0uckRrSnA+aW1ne2Zsb2F0OmxlZnQ7aGVpZ2h0OjQ4cHg7d2lkdGg6NDhweH0uckRrSnA+cHttYXJnaW46MCAwIDAgNjRweH0uTGhje2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweH0uZGZ4R3Fme21hcmdpbjoyNHB4IDB9LllnZXJUYntsaW5lLWhlaWdodDoyMHB4fS5ZZ2VyVGI+aW1ne2Zsb2F0OmxlZnQ7aGVpZ2h0OjI0cHg7bWFyZ2luOjEycHggMDt3aWR0aDoyNHB4fS5ZZ2VyVGI6OmJlZm9yZXtjb250ZW50OiIiO2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBUUFBQUJLZnZWekFBQUFVMGxFUVZSNEFXT2dCeGdGSFBoRU1JRVh3Mk1HSFJRUlBhQ0lCMjROR3huK003d0Nha0VvZncwVTJZRFBRVHVnV2hES2Q0QWNSVUFMVUtFdW1uTENXdENVRTlhQ1VFNmtGcGh5b3JVQTRTQUdvd0FBYlN3ZUQ2Q21jVDhBQUFBQVNVVk9SSzVDWUlJPSkgMCAwIHJlcGVhdDtmbG9hdDpyaWdodDtoZWlnaHQ6MjRweDttYXJnaW46MTJweCAwO29wYWNpdHk6LjU0O3dpZHRoOjI0cHh9LmhLMlV4Y3ttYXJnaW46MCA0OHB4fS5xOXBTa2N7bGluZS1oZWlnaHQ6NDhweDttYXJnaW46MH0ucGtLQ2Vje2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZToxMnB4O21hcmdpbjotNnB4IDAgMH0ualBvWkpmOjpiZWZvcmV7dHJhbnNmb3JtOnNjYWxlWSgtMSl9LmpQb1pKZiAucGtLQ2Vje2Rpc3BsYXk6YmxvY2t9LlpuVDRwYywuRGNOcm5ke3doaXRlLXNwYWNlOm5vd3JhcH0ucnFPQ2lmPnAsLnJxT0NpZj51bCwucnFPQ2lmPmRpdnttYXJnaW46MTZweCAwIDB9LnJxT0NpZiBbZGF0YS1zdHlsZT0iaGVhZGluZyJde2ZvbnQtd2VpZ2h0OmJvbGR9LnJxT0NpZiBwe21hcmdpbi10b3A6MH0ucnFPQ2lmIHVse3BhZGRpbmctbGVmdDoxOHB4fS51a2xPcmJ7ZGlzcGxheTpibG9jazttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvO21hcmdpbi10b3A6MTZweDttYXJnaW4tYm90dG9tOjI0cHg7bWF4LXdpZHRoOjIxNnB4O3dpZHRoOjEwMCV9LkU4cjgyYnttYXJnaW4tdG9wOjI0cHh9LkdCSUFqZntsaW5lLWhlaWdodDoxOHB4O21hcmdpbjoxOHB4IDB9LmU3N0FmZXstbW96LWJvcmRlci1yYWRpdXM6OXB4O2JvcmRlci1yYWRpdXM6OXB4O2hlaWdodDoxOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoxOHB4fS5YUmJPQnttYXJnaW4tbGVmdDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uS1hUbHVje2JhY2tncm91bmQtcG9zaXRpb246MCAzcHg7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtYXR0YWNobWVudDpzY3JvbGw7cGFkZGluZy1ib3R0b206MTFweH0uUkI5MG1ke2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoyNHB4O21hcmdpbjowO3BhZGRpbmctbGVmdDo0OHB4fS5KcWk5cWR7Y29sb3I6cmdiYSgwLDAsMCwuNTQpO21hcmdpbjowO21pbi1oZWlnaHQ6MjVweDtwYWRkaW5nLWJvdHRvbTo1cHg7cGFkZGluZy1sZWZ0OjQ4cHh9LnBOMkhjZXttYXJnaW46MTVweCAwO3BhZGRpbmctdG9wOjE1cHh9Lm5Xb0hDY3tmb250LXdlaWdodDo0MDA7Y29sb3I6I2U1NTM0MH0uWkhjWGRle2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tdG9wOjE2cHg7bWFyZ2luLWJvdHRvbToyNHB4O21heC13aWR0aDoyMTZweDt3aWR0aDoxMDAlfS5RQzhrdGZ7dGV4dC1hbGlnbjpjZW50ZXJ9LkxzU3dHZnstbW96LXVzZXItc2VsZWN0Om5vbmU7Ym94LXNpemluZzpjb250ZW50LWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MjBweDtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjM3cHg7ei1pbmRleDowfS5Mc1N3R2ZbYXJpYS1kaXNhYmxlZD0idHJ1ZSJde2N1cnNvcjpkZWZhdWx0fS5FN1FkWXstbW96LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4zcyBlYXNlO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4zcyBlYXNlO2JvcmRlcjoxMHB4IHNvbGlkICNmYWZhZmE7LW1vei1ib3JkZXItcmFkaXVzOjEwMCU7Ym9yZGVyLXJhZGl1czoxMDAlO3Bvc2l0aW9uOmFic29sdXRlOy1tb3otYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLDAsMCwwLjQpO2JveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsMC40KX1bYXJpYS1jaGVja2VkPSJ0cnVlIl0gLkU3UWRZe2JvcmRlci1jb2xvcjojMDA5Njg4fVthcmlhLWRpc2FibGVkPSJ0cnVlIl0gLkU3UWRZe2JvcmRlci1jb2xvcjojYmRiZGJkfS5yYnNZOGJ7dHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuMDZzIGVhc2U7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjA2cyBlYXNlfS5Mc1N3R2YuTjJScEJlPi5yYnNZOGJ7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKDE3cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMTdweCl9LkxzU3dHZi5CNlZocWU+LnJic1k4YnstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUoOC41cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGUoOC41cHgpfS5oaDR4S2Z7LW1vei10cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuM3MgZWFzZTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuM3MgZWFzZTtib3JkZXI6N3B4IHNvbGlkICNiOWI5Yjk7LW1vei1ib3JkZXItcmFkaXVzOjdweDtib3JkZXItcmFkaXVzOjdweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6M3B4O3dpZHRoOjIzcHh9W2FyaWEtY2hlY2tlZD0idHJ1ZSJdPi5oaDR4S2Z7Ym9yZGVyLWNvbG9yOnJnYmEoMCwxNTAsMTM2LDAuNTAyKX1bYXJpYS1kaXNhYmxlZD0idHJ1ZSJdPi5oaDR4S2Z7Ym9yZGVyLWNvbG9yOiNiOWI5Yjl9W2FyaWEtY2hlY2tlZD0ibWl4ZWQiXSAuRTdRZFl7Ym9yZGVyLWNvbG9yOiNmNGI0MDB9W2FyaWEtY2hlY2tlZD0ibWl4ZWQiXSAuaGg0eEtme2JvcmRlci1jb2xvcjojZTBlMGUwfVthcmlhLWNoZWNrZWQ9Im1peGVkIl0gLllHRndre2xlZnQ6OC41cHh9LllHRndrey1tb3otdHJhbnNmb3JtOnNjYWxlKDIuNSk7dHJhbnNmb3JtOnNjYWxlKDIuNSk7LW1vei10cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBlYXNlLGxlZnQgLjNzIGVhc2U7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgZWFzZSxsZWZ0IC4zcyBlYXNlO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjIpOy1tb3otYm9yZGVyLXJhZGl1czoxMDAlO2JvcmRlci1yYWRpdXM6MTAwJTtoZWlnaHQ6MjBweDtsZWZ0OjA7b3BhY2l0eTowO291dGxpbmU6LjFweCBzb2xpZCB0cmFuc3BhcmVudDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwcHg7ei1pbmRleDotMX0ucXM0MXFlPi5ZR0Z3a3stbW96LWFuaW1hdGlvbjpxdWFudHVtV2l6UmFkaWFsSW5rU3ByZWFkIC4zczthbmltYXRpb246cXVhbnR1bVdpelJhZGlhbElua1NwcmVhZCAuM3M7YW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkcztvcGFjaXR5OjF9W2FyaWEtY2hlY2tlZD0idHJ1ZSJdPi5ZR0Z3a3tsZWZ0OjE3cHh9Lmk5eGZiYj4uWUdGd2t7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwwLjIpfS51M2JXNGU+LllHRndrey1tb3otYW5pbWF0aW9uOnF1YW50dW1XaXpSYWRpYWxJbmtGb2N1c1B1bHNlIC43cyBpbmZpbml0ZSBhbHRlcm5hdGU7YW5pbWF0aW9uOnF1YW50dW1XaXpSYWRpYWxJbmtGb2N1c1B1bHNlIC43cyBpbmZpbml0ZSBhbHRlcm5hdGU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTUwLDEzNiwwLjIpO29wYWNpdHk6MX0uT0Z3bGFke21hcmdpbjowIDAgMTBweH0uVVljMXNje2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5YYUJDd2R7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4O21hcmdpbi1ib3R0b206MjRweH0uRWlDMll7LW1vei1ib3gtZmxleDowIDAgYXV0bztmbGV4OjAgMCBhdXRvO21hcmdpbi1yaWdodDoyNHB4fS5FaUMyWS5UMGhOUnttYXJnaW4tdG9wOjEwcHh9LnFLTllNZXtkaXNwbGF5OmlubGluZS1ibG9jazstbW96LWJveC1mbGV4OjAgMSAxMDAlO2ZsZXg6MCAxIDEwMCV9LnFLTllNZSBoMywucUtOWU1lIHB7bWFyZ2luOjB9LnhBUDJue21heC1oZWlnaHQ6MjRweDttYXgtd2lkdGg6MjRweH0uS1ZrY1Nke2JhY2tncm91bmQ6MCAxMnB4LzI0cHggbm8tcmVwZWF0IHNjcm9sbDtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjAgMCAwIDQ4cHh9LnRWQWxrY3tiYWNrZ3JvdW5kOnVybCgiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2ljb25zL21hdGVyaWFsL3N5c3RlbS9zdmcva2V5Ym9hcmRfYXJyb3dfcmlnaHRfMjRweC5zdmciKSByaWdodCAxMnB4LzIwcHggbm8tcmVwZWF0IHNjcm9sbDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTIpO3BhZGRpbmc6MTJweCA0MHB4IDEycHggMH0uS1ZrY1NkLlo4ZXlrYj4udFZBbGtje2JhY2tncm91bmQtaW1hZ2U6dXJsKCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9pbWFnZXMvaWNvbnMvbWF0ZXJpYWwvc3lzdGVtL3N2Zy9rZXlib2FyZF9hcnJvd19kb3duXzI0cHguc3ZnIil9LktWa2NTZC5aOGV5a2I+LnRWQWxrY1thcmlhLWV4cGFuZGVkPSJ0cnVlIl17YmFja2dyb3VuZC1pbWFnZTp1cmwoImh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9pY29ucy9tYXRlcmlhbC9zeXN0ZW0vc3ZnL2tleWJvYXJkX2Fycm93X3VwXzI0cHguc3ZnIik7Ym9yZGVyLWJvdHRvbTpub25lfS5XNnJiemIgLktWa2NTZDpsYXN0LW9mLXR5cGU+LnRWQWxrY3tib3JkZXItYm90dG9tOm5vbmV9LkJ2TjBuY3ttYXJnaW46MH0uT0N0Ulhje2NvbG9yOnJnYmEoMCwwLDAsLjU0KTttYXJnaW46MH0uS1ZrY1NkLlo4ZXlrYiAuSDJiWkxkLC5LVmtjU2QuWjhleWtiIFthcmlhLWV4cGFuZGVkPSJ0cnVlIl0gLmppWGpEZntkaXNwbGF5Om5vbmV9LktWa2NTZC5aOGV5a2IgW2FyaWEtZXhwYW5kZWQ9InRydWUiXSAuSDJiWkxke2Rpc3BsYXk6YmxvY2t9Llc2cmJ6YntkaXNwbGF5Om5vbmV9LktWa2NTZC5aOGV5a2IgW2FyaWEtZXhwYW5kZWQ9InRydWUiXSsuVzZyYnpie2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xMik7ZGlzcGxheTpibG9ja30ucVVjZXJme21hcmdpbjoxNnB4IDAgMH0uVE1pQzJ7LW1vei1ib3gtYWxpZ246Y2VudGVyO2JveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6aG9yaXpvbnRhbDtib3gtb3JpZW50Omhvcml6b250YWw7ZmxleC1kaXJlY3Rpb246cm93O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtib3JkZXItdG9wOjFweCBzb2xpZCAjZThlOGU4O2N1cnNvcjpwb2ludGVyO21hcmdpbi1ib3R0b206LTFweH0uTEFvbEggLlRNaUMye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlOGU4ZTh9LmUzNkJze2JveC1mbGV4OjA7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDtwYWRkaW5nOjAgMzJweCAwIDE0cHh9LlhvM05jYiAuZTM2QnN7ZmlsbDojMDA5Njg4fS5lMXJsMGIgLmUzNkJze2ZpbGw6Izc1NzU3NX0uUFhnbW1ie2JveC1mbGV4OjE7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtmbGV4LWJhc2lzOjA7Zm9udDo0MDAgMTZweCBSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MjRweDtvdmVyZmxvdy14OmhpZGRlbjtwYWRkaW5nOjEycHggMH0uWG8zTmNiIC5QWGdtbWJ7Y29sb3I6IzAwOTY4OH0uZTFybDBiIC5QWGdtbWJ7Y29sb3I6IzIxMjEyMX0uZDJSYVlie2JveC1mbGV4OjA7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDttYXJnaW46MDtwYWRkaW5nOjB9LnU3QkxKYywuS05pSVdie2ZpbGw6cmdiYSgwLDAsMCwwLjU0KX0uTEFvbEggLktOaUlXYiwuakdUNTdiIC51N0JMSmN7ZGlzcGxheTpub25lfS54SE9ZeHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZThlOGU4O2NvbG9yOnJnYmEoMCwwLDAsMC44Nyk7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90byxSb2JvdG9EcmFmdCxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtsaW5lLWhlaWdodDoyMnB4O3BhZGRpbmc6MCAxNnB4IDE2cHggMTZweDttYXJnaW4tYm90dG9tOi0xcHh9LkxBb2xIIC54SE9ZeHtkaXNwbGF5Om5vbmV9W2Rpcj0icnRsIl0gLm5PdnF0ZXt0cmFuc2Zvcm06c2NhbGVYKC0xKX0uZzZFbG5le3BhZGRpbmc6OHB4IDB9Lmc2RWxuZT5pbWd7ZmxvYXQ6bGVmdDtoZWlnaHQ6NDhweDt3aWR0aDo0OHB4fS5nNkVsbmU+cHttYXJnaW46MCAwIDAgNjRweH0uaXVCeVJ7Y29sb3I6cmdiYSgwLDAsMCwwLjU0KTtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNHB4fS5iNEQwUGR7cGFkZGluZzo4cHggMH0uaEh3VUFme21hcmdpbi1sZWZ0OjE2cHg7cGFkZGluZy1sZWZ0OjhweH0uRGhyWHVje3BhZGRpbmc6MTBweCAwIDEwcHggNHB4fS5YQ21TNmN7Y29sb3I6cmdiYSgwLDAsMCwuNTQpO2ZvbnQ6MTVweDtsaW5lLWhlaWdodDoyMnB4fS5KZ1laMntwYWRkaW5nOjhweCAwfS5KZ1laMj5pbWd7ZmxvYXQ6bGVmdDtoZWlnaHQ6NDhweDt3aWR0aDo0OHB4fS5KZ1laMj5we21hcmdpbjowIDAgMCA2NHB4fS5qeEcyRmN7Y29sb3I6cmdiYSgwLDAsMCwwLjU0KTtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNHB4fS5HaEwxM2V7cGFkZGluZzo4cHggMH0uV09tN2R7bWFyZ2luLWxlZnQ6MTZweDtwYWRkaW5nLWxlZnQ6OHB4fS5VUHJvemZ7cGFkZGluZzoxMHB4IDAgMTBweCA0cHh9LmtvYnFZYntjb2xvcjpyZ2JhKDAsMCwwLC41NCk7Zm9udDoxNXB4O2xpbmUtaGVpZ2h0OjIycHh9LlJSYjd2e2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7cGFkZGluZzozOHB4IDE2cHggMTZweCAxNnB4fS5SUmI3diAuTjFTdlBke3BhZGRpbmctbGVmdDozNHB4fS54MkxDa2R7ZGlzcGxheTpub25lfS5EZFZKQWR7bWFyZ2luOi0xNnB4fS5oTVVNOGN7bWFyZ2luLWxlZnQ6LTRweDttYXJnaW4tcmlnaHQ6LTRweH1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ1MHB4KXsuaE1VTThje21hcmdpbi1sZWZ0Oi0yNHB4O21hcmdpbi1yaWdodDotMjRweH19LnNONUhxYi5OMlJwQmUsLlBjaVBjZC5OMlJwQmUgLmVzcG1zYiwuZGRvcDFkIC5uUU9yRWIsLmRkb3AxZCAuSWQ1VjEsLmRkb3AxZC5OMlJwQmUgLklkNVYxe2JvcmRlci1jb2xvcjojNDI4NWY0fS5zTjVIcWIuTjJScEJlLlJEUFpFLC5QY2lQY2QuUkRQWkUgLmVzcG1zYiwuZGRvcDFkLk4yUnBCZS5SRFBaRSAublFPckViLC5kZG9wMWQuUkRQWkUgLklkNVYxe2JvcmRlci1jb2xvcjojYmRiZGJkfS5QY2lQY2QuTjJScEJlPi5NTFBHN3tib3JkZXItY29sb3I6cmdiYSg2NiwxMzMsMjQ0LDAuNTAyKX0uUGNpUGNkLmk5eGZiYj4uTWJoVXpkLC5QY2lQY2QudTNiVzRlPi5NYmhVemQsLnNONUhxYi5pOXhmYmI+Lk1iaFV6ZCwuc041SHFiLnUzYlc0ZT4uTWJoVXpkLC5kZG9wMWQuaTl4ZmJiPi5NYmhVemQsLmRkb3AxZC51M2JXNGU+Lk1iaFV6ZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjYsMTMzLDI0NCwwLjIpfS5CZkxOc2QsLk1iUDRBe2Rpc3BsYXk6dGFibGV9LmNaMkRhYywuTjFTdlBkLC51aENyTCwuWFpzMmlie2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjp0b3B9Lk4xU3ZQZCwuWFpzMmlie3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctdG9wOjFweH0uQmZMTnNkKy5CZkxOc2QsLk1iUDRBKy5NYlA0QXttYXJnaW4tdG9wOjEycHh9LkJmTE5zZC5laEttWSAuQzJvNU8uUkRQWkUsLk1iUDRBLmVoS21ZIC5DMm81Ty5SRFBaRXtjb2xvcjpyZ2JhKDAsMCwwLDAuMjYpfS5CZkxOc2QuSmo2TGFlIC5zTjVIcWJ7Ym9yZGVyLWNvbG9yOiNkYjQ0Mzd9LkJmTE5zZC5KajZMYWUgLnNONUhxYj4uTWJoVXpke2JhY2tncm91bmQtY29sb3I6cmdiYSgyMTksNjgsNTUsMC4yKX0uREFGR2l7Y29sb3I6I2RiNDQzNztkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDo4cHh9LkJmTE5zZC5KajZMYWUgLkRBRkdpe2Rpc3BsYXk6YmxvY2t9LlAza0lqZntmb250LXNpemU6MjFweDtmb250LXdlaWdodDo1MDA7bWFyZ2luOjA7cGFkZGluZzoyMnB4IDAgMCAwfS5NZXhYdWV7Y29sb3I6cmdiYSgwLDAsMCwwLjU0KTtmb250LWZhbWlseTpSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwO3BhZGRpbmc6MDttYXJnaW46OHB4IDAgMCAwfS5IblkxWmJ7Y29sb3I6cmdiYSgwLDAsMCwwLjg3KTtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLFJvYm90b0RyYWZ0LEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjIycHh9LlkwNEF6e2ZvbnQtd2VpZ2h0OjUwMH0uRVFEYW5le2ZvbnQtc3R5bGU6aXRhbGljfS56SUdxOGR7cGFkZGluZzoxNnB4IDE2cHggMCAxNnB4fS55eHA0dmJ7cGFkZGluZzo4cHggMTZweCAyMHB4IDE2cHh9LmFsR25NYntkaXNwbGF5OmJsb2NrfS5aYm1LRGJ7cGFkZGluZzo4cHggMH0uUWlTOFdie21hcmdpbi1sZWZ0OjE2cHg7cGFkZGluZy1sZWZ0OjhweH0ucTZ2Yzhie3BhZGRpbmc6MTBweCAwIDEwcHggNHB4fS5mQ0M0dmJ7cGFkZGluZzoyMHB4IDE2cHggMH0ucDBKSjhie3dpZHRoOjEwMCV9LmU1UVdMLC5KR1hkNGIud2xIb29jIC5wMEpKOGJ7ZGlzcGxheTpub25lfS5KR1hkNGIud2xIb29jIC5lNVFXTHtkaXNwbGF5OmJsb2NrfS5zZGpIc2IubVViQ2Nle2hlaWdodDoyNHB4O3RvcDotM3B4O3dpZHRoOjI0cHh9Lk1JV1JsYntjb2xvcjpyZ2JhKDAsMCwwLDAuNjUpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyNHB4O21hcmdpbi1sZWZ0Oi0xMnB4O21hcmdpbi10b3A6LTEycHg7cGFkZGluZzoxMnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoyNHB4fS5mdGRGUWJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwMCU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5kS2N4eWV7ZGlzcGxheTpibG9ja30uaXdDQVd7Y29sb3I6IzIxMjEyMTtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTRweDtwYWRkaW5nLWxlZnQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1wWlRpZHtjb2xvcjojMDAwO2ZvbnQtc2l6ZToxNnB4O3BhZGRpbmc6MnB4IDB9LnFQY1FPe2NvbG9yOiM3NTc1NzU7Zm9udC1zaXplOjEzcHh9LnBOUU9QYntjb2xvcjojNzU3NTc1O2ZvbnQtc2l6ZToxNHB4O3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0Om5vcm1hbH0uQU1JNXl7Y29sb3I6IzAwMDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6ODlweDt3aWR0aDoxMDAlfS55a0dnS2N7Y29sb3I6IzAwMDtmb250LXNpemU6MTZweDtwYWRkaW5nOjJweCAwfS5NY3c0MHtjb2xvcjojMDAwO2ZvbnQtc2l6ZToxNnB4O3BhZGRpbmc6MnB4IDB9Lmh2eTVlZXttYXJnaW4tdG9wOjI0cHh9LmdEZ2RJZHtmbG9hdDpsZWZ0O2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9LkRLa1ZNYnttYXJnaW46MCAwIDAgNDBweH0ubHRaYnlme2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDttYXJnaW4tYm90dG9tOjI0cHh9Lmh3OXBxZnstbW96LWJveC1mbGV4OjAgMCBhdXRvO2ZsZXg6MCAwIGF1dG87bWFyZ2luLXJpZ2h0OjI0cHg7bWFyZ2luLXRvcDoxMHB4fS52UjZGOXtkaXNwbGF5OmlubGluZS1ibG9jazstbW96LWJveC1mbGV4OjAgMSAxMDAlO2ZsZXg6MCAxIDEwMCV9LnZSNkY5Pi5lbWRQb2R7bWFyZ2luLXRvcDoxMHB4O2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0udlI2Rjk+LnMyeHVZe21hcmdpbjowO2NvbG9yOnJnYmEoMCwwLDAsLjU0KTtmb250OjE1cHh9LmZmNGtNY3ttYXgtd2lkdGg6MTAwJX0uQ0VUWFBjIC50ajBzZiwuQ0VUWFBjIC51Z2M0bWUsLkNFVFhQYy5XWDRqeGIgLmhaVVp4ZCwuQ0VUWFBjLldYNGp4YiAuc3BaOGZje2Rpc3BsYXk6bm9uZX0uQ0VUWFBjLldYNGp4YiAudGowc2YsLkNFVFhQYy5XWDRqeGIgLnVnYzRtZXtkaXNwbGF5OmJsb2NrfS5UOTB6VHtmb250LXNpemU6MTJweDttYXJnaW4tdG9wOjB9LmxZT2JwYnt3aGl0ZS1zcGFjZTpub3dyYXB9LnpiMXJue2hlaWdodDozMnB4O21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDozMnB4fS5PUnRlOWR7YmFja2dyb3VuZDpuby1yZXBlYXQgc2Nyb2xsIGxlZnQvNTBweDtoZWlnaHQ6NTBweDtwYWRkaW5nLWxlZnQ6NjBweH0ueDY3OTVie2NvbG9yOnJnYmEoMCwwLDAsLjg3KTtsaW5lLWhlaWdodDoyNXB4fS5LZjlaM2J7bGluZS1oZWlnaHQ6MjVweH0uRUttVjFie2NvbG9yOiMzMzY3ZDY7bWFyZ2luLWJvdHRvbTo4cHh9LkVLbVYxYjpob3Zlcntjb2xvcjojMzM2N2Q2O2N1cnNvcjpwb2ludGVyfS5FS21WMWI6YWN0aXZlIHNwYW4sLkVLbVYxYjpmb2N1cyBzcGFue2JhY2tncm91bmQtY29sb3I6cmdiYSg1MSwxMDMsMjE0LDAuMTIpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6MnB4O21hcmdpbjotM3B4O3BhZGRpbmc6M3B4fS5rbnhXZmN7bGlzdC1zdHlsZTpub25lO3BhZGRpbmc6MH0uY3QwNTFje2Rpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NTAwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5NdllPSWV7Zm9udC1zaXplOjEycHg7cGFkZGluZy10b3A6OHB4O2xpbmUtaGVpZ2h0OjE4cHh9LkVqUlo1Y3ttYXJnaW4tdG9wOjB9LmR3MTI3Y3tjb2xvcjpyZ2JhKDAsMCwwLC41NCk7Zm9udC1zaXplOjEycHg7bWFyZ2luLWJvdHRvbTowO2xpbmUtaGVpZ2h0OjE4cHh9LkROQkgwZXtmb250LXNpemU6MTZweH0uT0FlVVNie2ZvbnQtc3R5bGU6aXRhbGljfS5LMkNzNmR7cGFkZGluZy10b3A6MzJweH0uRlhVYm5ie2Zsb2F0OmxlZnQ7aGVpZ2h0OjI0cHg7b3BhY2l0eTouNjU7d2lkdGg6MjRweDtwYWRkaW5nOjRweCAwIDAgNnB4fS5NWDg5UWV7ZGlzcGxheTpibG9jaztwYWRkaW5nLWxlZnQ6NDZweH0ueTUxQzRie2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjE3NnB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87d2lkdGg6MTc2cHh9LmpkSVZGY3twYWRkaW5nOjE2cHggMCA1NnB4fS5udjdQbWR7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTc2cHg7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztwYWRkaW5nOjE2cHggMDt3aWR0aDoxNzZweH0ueHZpamxje2ZvbnQtc2l6ZToxMnB4fS5sakNiTWV7bWFyZ2luLXJpZ2h0OjMycHh9LkwydXpOe2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleH0uTDJ1ek4rLkwydXpOe21hcmdpbi10b3A6MjRweH0uakFER0h7ZmxleC1zaHJpbms6MH0uakFER0ggLk1iaFV6ZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjYsMTMzLDI0NCwwLjIpfS5qQURHSCAublFPckViLC5qQURHSC5OMlJwQmUgLklkNVYxe2JvcmRlci1jb2xvcjojNDI4NWY0fS5KNWJQOWN7bWFyZ2luLWxlZnQ6MjRweH0uSjViUDljIHB7bWFyZ2luLWJvdHRvbTowO21hcmdpbi10b3A6MH0ueEpraW9me2NvbG9yOiM3NTc1NzU7Zm9udC1zaXplOjEycHh9Lnlya0lpZXt3aGl0ZS1zcGFjZTpub3dyYXB9LkJMdkdvYnttYXJnaW4tdG9wOjB9LmlOQXJDZT5wLC5pTkFyQ2U+dWwsLmlOQXJDZT5kaXZ7bWFyZ2luOjE2cHggMCAwIDB9LmlOQXJDZSBbZGF0YS1zdHlsZT0iaGVhZGluZyJde2ZvbnQtd2VpZ2h0OmJvbGR9LmlOQXJDZSBwe21hcmdpbi10b3A6MH0uaU5BckNlIHVse3BhZGRpbmctbGVmdDoxOHB4fS5GUXZxdmV7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0uTkYxVFNle2ZvbnQtd2VpZ2h0OmJvbGR9Lm8xTWlMe21hcmdpbi10b3A6OHB4fS5vMU1pTD5we21hcmdpbi10b3A6MH0uUkZMdjRje2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDttYXJnaW46MjRweCAwIDB9LmFndVVGY3tmbGV4LXNocmluazowfS5hZ3VVRmMgLk1iaFV6ZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjYsMTMzLDI0NCwwLjIpfS5hZ3VVRmMgLm5RT3JFYiwuYWd1VUZjLk4yUnBCZSAuSWQ1VjF7Ym9yZGVyLWNvbG9yOiM0Mjg1ZjR9LkZlYTZSZHttYXJnaW4tbGVmdDoyNHB4fS5IT0M3eGZ7bWFyZ2luLXRvcDoyNHB4fS5FTXRYSGZ7bWFyZ2luLXRvcDozMnB4fS56MFRBb2V7Zm9udC1zaXplOjE0cHh9Lm5jMkpte2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uQTJuMnBle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXdlaWdodDpib2xkO21hcmdpbi1sZWZ0OjE2cHh9LlNEUThFZHtwb3NpdGlvbjpyZWxhdGl2ZX0uZUxVWGxke2Rpc3BsYXk6YmxvY2t9LmVMVVhsZD46Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5lTFVYbGQ+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfUBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6NjAxcHgpey5lTFVYbGR7bWF4LWhlaWdodDo0MDBweDtvdmVyZmxvdzphdXRvO3Njcm9sbC1iZWhhdmlvcjpzbW9vdGh9fS5NcUtoQ2R7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlOy1tb3otZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoxNnB4IDB9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LmJFRnBkZCAuTXFLaENke29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzfS5XajFMWWIgLk1xS2hDZHtvcGFjaXR5OjF9fS5NcUtoQ2QgLmp5U0NqZntib3gtZmxleDowO2ZsZXgtZ3JvdzowfS5xTllBbGR7bWluLXdpZHRoOjA7dHJhbnNmb3JtOnRyYW5zbGF0ZXgoLThweCl9LnBiTFhCZHtkaXNwbGF5Om5vbmV9QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo2MDFweCl7LnBiTFhCZHtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmdiYSgyNTUsMjU1LDI1NSwwKSAwJSxyZ2JhKDI1NSwyNTUsMjU1LDEpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwMCUpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO2hlaWdodDo0OHB4O29wYWNpdHk6MTtwYWRkaW5nLXRvcDo4cHg7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7dG9wOjM1MnB4O3RyYW5zaXRpb246b3BhY2l0eSAuMnM7d2lkdGg6MTAwJX0uV2oxTFliIC5wYkxYQmR7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmV9LnBiTFhCZDpiZWZvcmV7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztjb250ZW50OicnO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoyOHB4O3dpZHRoOjEwMCV9LmVybTNRZXtiYWNrZ3JvdW5kLWNvbG9yOiM0Mjg1ZjQ7aGVpZ2h0OjQwcHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NDBweH19LnRWTmllZS1IOXREdHtiYWNrZ3JvdW5kLWNvbG9yOiMyMTIxMjE7Ym9yZGVyLXdpZHRoOjA7Y29sb3I6I2ZmZmZmZjtmb250LWZhbWlseTpSb2JvdG87Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjEuNmVtO21hcmdpbjowO3BhZGRpbmc6MDt0ZXh0LWFsaWduOmNlbnRlcn0udFZOaWVlLWNPUUJPZS1CZURtQWMgLnRWTmllZS10RUUyQWMsLnRWTmllZS14RlFxV2UtdEVFMkFje2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlfS50Vk5pZWUtYzZ4RnJkLWhhQWNsZntjbGVhcjpib3RoO2NvbG9yOiNmZmZmZmY7bWFyZ2luOjAgYXV0bztvdmVyZmxvdzpoaWRkZW47dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjMzLjZlbX0udFZOaWVlLUxJTU5KYi1oYUFjbGZ7YmFja2dyb3VuZC1jb2xvcjojMzYzNjM2O3dpZHRoOjEwMCV9LnRWTmllZS1LNGVmZmYtSklidVFjLUxnYnNTZXstbW96LWJvcmRlci1yYWRpdXM6LjFlbTtib3JkZXItcmFkaXVzOi4xZW07ZmxvYXQ6bGVmdDttYXJnaW4tYm90dG9tOi41ZW07cGFkZGluZzouMmVtIC44ZW19LnRWTmllZS1rNzdJaWYtSklidVFjLUxnYnNTZXstbW96LWJvcmRlci1yYWRpdXM6LjFlbTtib3JkZXItcmFkaXVzOi4xZW07bWFyZ2luLWJvdHRvbTouNWVtO3BhZGRpbmc6LjJlbSAuOGVtO2Zsb2F0OnJpZ2h0fS50Vk5pZWUtazc3SWlmLUpJYnVRYy1MZ2JzU2UudFZOaWVlLVhwbkRDZSwudFZOaWVlLUs0ZWZmZi1KSWJ1UWMtTGdic1NlLnRWTmllZS1YcG5EQ2V7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyODI4Mjh9LnRWTmllZS1MSU1OSmJ7Y2xlYXI6Ym90aDtoZWlnaHQ6OGVtO21hcmdpbjowIGF1dG87b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6LjRlbTt3aWR0aDozMy42ZW19LnRWTmllZS14dnI1SC1aQ1pwZC1uMHRnV2ItaGFBY2xme2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEyKTtoZWlnaHQ6MS42ZW07b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6LjRlbX0udFZOaWVlLXh2cjVILVpDWnBkLWhhQWNsZntjbGVhcjpib3RoO2NvbG9yOiNmZmZmZmY7Zm9udC1zaXplOjFlbTttYXJnaW46MCBhdXRvO292ZXJmbG93OmhpZGRlbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6MzMuNmVtfS50Vk5pZWUteHZyNUgtY2x6NElje2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMTIpO2Rpc3BsYXk6aW5saW5lO21hcmdpbi1yaWdodDoxLjVlbTttYXJnaW4tbGVmdDoxLjVlbX0udFZOaWVlLXh2cjVILW1KU0RrLXF3VThNZXtvdmVyZmxvdzpoaWRkZW47dGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6aW5saW5lLWJsb2NrOy1tb3otYm9yZGVyLXJhZGl1czoxZW07Ym9yZGVyLXJhZGl1czoxZW07cGFkZGluZzowIC43ZW19LnRWTmllZS14dnI1SC1tSlNEay1MSzV5dXt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtYmxvY2s7LW1vei1ib3JkZXItcmFkaXVzOjFlbTtib3JkZXItcmFkaXVzOjFlbTtwYWRkaW5nOjAgLjdlbTtmb250LXNpemU6MWVtfS50Vk5pZWUteHZyNUgtbUpTRGstcXdVOE1lLnRWTmllZS1YcG5EQ2UsLnRWTmllZS14dnI1SC1tSlNEay1MSzV5dS50Vk5pZWUtWHBuRENle2JhY2tncm91bmQ6cmdiYSg2NiwxMzMsMjQ0LC4yKTtmb250LXdlaWdodDo1MDB9LnRWTmllZS1MSU1OSmIgLnRWTmllZS1jT1FCT2UtQmVEbUFje2Zsb2F0OmxlZnR9LnRWTmllZS1MSU1OSmIgLnRWTmllZS1TZlFMUWItTEs1eXUteHFsZkdie2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7ZmxvYXQ6bGVmdDt3aWR0aDoxMmVtfS50Vk5pZWUtTElNTkpiIC50Vk5pZWUtU2ZRTFFiLXF3VThNZS14cWxmR2J7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9LnRWTmllZS1MSU1OSmIgLnRWTmllZS1TZlFMUWItcXdVOE1lLXhxbGZHYi50Vk5pZWUtbjVBYVNke3BhZGRpbmc6MCAuMmVtO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjdlbX0udFZOaWVlLUxJTU5KYiAudFZOaWVlLVNmUUxRYi1xd1U4TWUteHFsZkdiLnRWTmllZS1pSzc3NWJ7cGFkZGluZzowIC4yZW07dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTZlbX0udFZOaWVlLUxJTU5KYiAudFZOaWVlLVNmUUxRYi1xd1U4TWUteHFsZkdiLnRWTmllZS1XWDFSbWZ7cGFkZGluZzowIC4yZW07dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MjMuNDVlbX0udFZOaWVlLUxJTU5KYiAudFZOaWVlLVNmUUxRYi1jR01JMmIteHFsZkdie2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEyKX0udFZOaWVlLUxJTU5KYiAudFZOaWVlLWNPUUJPZS1BRjVmaC1CZURtQWMudFZOaWVlLW5LMmtZYntwYWRkaW5nOjAgLjJlbTt3aWR0aDo0ZW19LnRWTmllZS1MSU1OSmIgLnRWTmllZS1MSU1OSmItb0tkTTJjIC50Vk5pZWUtY09RQk9lLUFGNWZoLUJlRG1BYy1MZ2JzU2V7dGV4dC1hbGlnbjpyaWdodDt3aWR0aDoxMDAlfS50Vk5pZWUtTElNTkpiIC50Vk5pZWUtYjB0NzBiLUw2Y1RjZXtkaXNwbGF5Om5vbmV9LnRWTmllZS1MSU1OSmItb0tkTTJjIC50Vk5pZWUtdEVFMkFje2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7LW1vei1ib3JkZXItcmFkaXVzOjUwJTtib3JkZXItcmFkaXVzOjUwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6I2ZmZmZmZjtmb250LXNpemU6MWVtO2hlaWdodDoyZW07bGluZS1oZWlnaHQ6MmVtO21hcmdpbjowIDAgMCAuMmVtO3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZTt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MmVtfS50Vk5pZWUtTElNTkpiLW9LZE0yYyAudFZOaWVlLVhwbkRDZXstbW96LWJvcmRlci1yYWRpdXM6NTAlO2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZmZmZmZmO2ZvbnQtc2l6ZToxZW07aGVpZ2h0OjJlbTtsaW5lLWhlaWdodDoyZW07bWFyZ2luOjAgMCAwIC4yZW07dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoyZW19LnRWTmllZS1MSU1OSmItb0tkTTJjIC50Vk5pZWUteEZRcVdlLXRFRTJBY3tiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Oy1tb3otYm9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyLXJhZGl1czo1MCU7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOiNmZmZmZmY7Zm9udC1zaXplOjFlbTtoZWlnaHQ6MmVtO2xpbmUtaGVpZ2h0OjJlbTttYXJnaW46MCAwIDAgLjJlbTt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2U7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjJlbX0udFZOaWVlLUxJTU5KYiAudFZOaWVlLUxJTU5KYi1vS2RNMmMgLnRWTmllZS1jT1FCT2UtQUY1ZmgtQmVEbUFjLUxnYnNTZS50Vk5pZWUtdEVFMkFjey1tb3otYm9yZGVyLXJhZGl1czozZW07Ym9yZGVyLXJhZGl1czozZW07Zm9udC1zaXplOi44ZW07bWFyZ2luOi4yZW0gMDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDo0LjZlbX0udFZOaWVlLUxJTU5KYiAudFZOaWVlLWNPUUJPZS1BRjVmaC1CZURtQWMtTGdic1NlLnRWTmllZS10RUUyQWMudFZOaWVlLWF1c3dqZC1iMHQ3MGItTGdic1Nle2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS50Vk5pZWUtTElNTkpiIC50Vk5pZWUtY09RQk9lLUFGNWZoLUJlRG1BYy1MZ2JzU2UudFZOaWVlLXRFRTJBYy50Vk5pZWUtYXVzd2pkLWIwdDcwYi1MZ2JzU2UudFZOaWVlLVhwbkRDZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjYsMTMzLDI0NCwuMil9LnRWTmllZS1MSU1OSmIgLnRWTmllZS1pSzc3NWIgLnRWTmllZS1MSU1OSmItb0tkTTJjIC50Vk5pZWUtdEVFMkFje3RleHQtYWxpZ246Y2VudGVyfS50Vk5pZWUtdXdFMklkLUlUNWRKZCAudFZOaWVlLUxJTU5KYi1vS2RNMmMgLnRWTmllZS10RUUyQWMsLnRWTmllZS11d0UySWQtSVQ1ZEpkIC50Vk5pZWUtTElNTkpiLW9LZE0yYyAudFZOaWVlLVhwbkRDZXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnRWTmllZS1MSU1OSmIgLnRWTmllZS1MSU1OSmItb0tkTTJje2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmF1dG87bWFyZ2luLWJvdHRvbTowO292ZXJmbG93OmhpZGRlbn0udFZOaWVlLUxJTU5KYi1vS2RNMmMgLnRWTmllZS1YcG5EQ2V7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDY2LDEzMywyNDQsLjIpOy1tb3otYm9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyLXJhZGl1czo1MCU7Zm9udC13ZWlnaHQ6NTAwfS50Vk5pZWUtTElNTkpiIC50Vk5pZWUtTElNTkpiLW9LZE0yYyAudFZOaWVlLU5tendNYiwudFZOaWVlLUxJTU5KYiAudFZOaWVlLUxJTU5KYi1vS2RNMmMgLnRWTmllZS1mb3pQc2YsLnRWTmllZS1MSU1OSmIgLnRWTmllZS1MSU1OSmItb0tkTTJjIC50Vk5pZWUtdXdFMklke2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtvdmVyZmxvdzpoaWRkZW47dGV4dC1pbmRlbnQ6LTk5OTlweH0udFZOaWVlLUxJTU5KYiAudFZOaWVlLUxJTU5KYi1vS2RNMmMgLnRWTmllZS1ObXp3TWIsLnRWTmllZS1MSU1OSmIgLnRWTmllZS1MSU1OSmItb0tkTTJjIC50Vk5pZWUtZm96UHNmLC50Vk5pZWUtTElNTkpiIC50Vk5pZWUtTElNTkpiLW9LZE0yYyAudFZOaWVlLXV3RTJJZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcn0uU3ZHZk57YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpub25lO2xlZnQ6MDttaW4taGVpZ2h0OjEwMHZoO3BhZGRpbmc6MCAyMHB4IDIwcHggMjBweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6MTAwfS5STTl1bGZ7dmlzaWJpbGl0eTpoaWRkZW47cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo1MDAwO2NvbG9yOiNmZmY7cG9pbnRlci1ldmVudHM6bm9uZX0uUjhxWWxjey1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDk3LDk3LDk3LDAuOTAyKTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlKDAsMC41KTt0cmFuc2Zvcm0tb3JpZ2luOmluaGVyaXR9LkFabmlsY3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nOjVweCA4cHggNnB4O29wYWNpdHk6MH0uUk05dWxmLnFzNDFxZSAuUjhxWWxje29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSwxKX0uUk05dWxmLnFzNDFxZSAuQVpuaWxje29wYWNpdHk6MX0uUk05dWxmLkFYbTVqYyAuQVpuaWxje2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6OHB4IDE2cHh9LlJNOXVsZi51NWxGSmV7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm07dHJhbnNpdGlvbi1kdXJhdGlvbjoyMDBtczt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4yNCwxLDAuMzIsMSl9LlJNOXVsZi51NWxGSmUgLlI4cVlsY3t0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtO3RyYW5zaXRpb24tZHVyYXRpb246NTBtcywyMDBtczt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXIsY3ViaWMtYmV6aWVyKDAuMjQsMSwwLjMyLDEpfS5STTl1bGYudTVsRkplIC5BWm5pbGN7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tZHVyYXRpb246MTUwbXM7dHJhbnNpdGlvbi1kZWxheTo1MG1zO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLDAsMC42LDEpfS5STTl1bGYueEN4b3J7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tZHVyYXRpb246NzBtczt0cmFuc2l0aW9uLWRlbGF5OjBtczt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXJ9LmQxZGxuZSwuQXg0Qjh7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWZsZXg6MTtmbGV4OjF9Lkw2SjBQY3stbW96LWJveC1mbGV4OjE7ZmxleDoxfS52NXlMSCwudjV5TEggLmQxZGxuZSwudjV5TEggLkF4NEI4e2Rpc3BsYXk6aW5saW5lfS5CQk9BMWN7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjRweDtib3R0b206MXB4O2xlZnQ6MXB4O3JpZ2h0OjFweDtvdmVyZmxvdy14OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZGlzcGxheTpub25lfS5MNkowUGMuZ2U2cGRlIC5CQk9BMWN7ZGlzcGxheTpibG9ja30udTNXVmRje3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7bGVmdDowO3otaW5kZXg6MTtvdXRsaW5lOm5vbmU7b3ZlcmZsb3cteTphdXRvfS51M1dWZGNbZGF0YS1jaGlsZGNvdW50PSIwIl0sLnUzV1ZkY1tkYXRhLWV4cGFuZGVkPSJmYWxzZSJde2Rpc3BsYXk6bm9uZX0uQ2lnZnRme3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMjRweH0uQXg0Qjh7cG9zaXRpb246cmVsYXRpdmV9LnlOVnRQY3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTtvcGFjaXR5Oi4zfS5BeDRCOCwueU5WdFBje2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdH0uQXg0Qjg6Oi1tcy1jbGVhcntkaXNwbGF5Om5vbmV9LmQxZGxuZSwuQXg0QjgsLnlOVnRQY3toZWlnaHQ6MTAwJX0udW1OaHhme292ZXJmbG93LXg6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5Na2pPVGJ7Y3Vyc29yOmRlZmF1bHR9LlZPRUl5ZiwuVk9FSXlmIC5qQm1scywub0t1Yktle2ZvbnQ6NDAwIDE2cHggUm9ib3RvLFJvYm90b0RyYWZ0LEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiMyMjJ9LlZPRUl5ZntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MzRweDtsaW5lLWhlaWdodDozNHB4fS5Jak1abXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6YXV0bztsaW5lLWhlaWdodDphdXRvfS5WT0VJeWYgLlpBR3ZqZHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowIDFweDtvdXRsaW5lOm5vbmV9Lm9LdWJLZSwuVk9FSXlmIC5aQUd2amR7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MCAxNnB4fS5WT0VJeWYgLmpCbWxze2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjhweCAwO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMik7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOy1tb3otYm9yZGVyLXJhZGl1czowIDAgMnB4IDJweDtib3JkZXItcmFkaXVzOjAgMCAycHggMnB4Oy1tb3otYm94LXNoYWRvdzowIDhweCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMTQpLDAgM3B4IDE0cHggMnB4IHJnYmEoMCwwLDAsMC4xMiksMCA1cHggNXB4IC0zcHggcmdiYSgwLDAsMCwwLjIpO2JveC1zaGFkb3c6MCA4cHggMTBweCAxcHggcmdiYSgwLDAsMCwwLjE0KSwwIDNweCAxNHB4IDJweCByZ2JhKDAsMCwwLDAuMTIpLDAgNXB4IDVweCAtM3B4IHJnYmEoMCwwLDAsMC4yKX0ub0t1Yktle2xpbmUtaGVpZ2h0OjQwcHh9Lm9LdWJLZVthcmlhLXNlbGVjdGVkPSJ0cnVlIl17YmFja2dyb3VuZC1jb2xvcjojZWVlZWVlfS5vS3ViS2UuUkRQWkV7Y29sb3I6cmdiYSgwLDAsMCwwLjM4KX0uU21YdHlle21hcmdpbjo3cHggMDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGFkYWRhfS5ENEQzM2J7b3ZlcmZsb3cteDpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LmdEYmtPZXtkaXNwbGF5OmlubGluZS1ibG9ja30uZzVPNk1le2JhY2tncm91bmQtY29sb3I6IzAwOTY4ODtjb2xvcjojZmZmO3BhZGRpbmc6MTRweCAyNHB4fS5nNU82TWUgLnlobHo2ZXtoZWlnaHQ6YXV0b30uZ2hxU3Vme2ZvbnQtc2l6ZToyMDAlO2ZvbnQtd2VpZ2h0OmJvbGR9Lk93SlN2YnthbGlnbjpjZW50ZXI7ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlfS55aGx6NmV7ZGlzcGxheTp0YWJsZS1yb3c7aGVpZ2h0OjQwcHh9LldoUWZIYntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlO21pbi13aWR0aDo0MHB4fS5GbU5QcWZ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMwMDB9LkxlYUlOZHt0ZXh0LWFsaWduOmNlbnRlcn0ubmF0b1J7dGV4dC1hbGlnbjpyaWdodH0uRnVaWmNme2ZpbGw6bm9uZTttYXJnaW4tdG9wOjZweDtzdHJva2U6cmdiYSgwLDAsMCwwLjU0KTtzdHJva2Utd2lkdGg6Mn0uQjZXM3Z7dmVydGljYWwtYWxpZ246bWlkZGxlfS5wd1h0TWJ7d2lkdGg6MmVtO2hlaWdodDoyZW07LW1vei1ib3JkZXItcmFkaXVzOjUwJTtib3JkZXItcmFkaXVzOjUwJTt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXJ9LmhBVXM5ZXt0ZXh0LWFsaWduOmNlbnRlcjtoZWlnaHQ6MmVtfS5wd1h0TWIuZUZ4Z2tme2JhY2tncm91bmQtY29sb3I6IzAwOTY4ODtjb2xvcjojZmZmfS5wd1h0TWIuR0RvYkhke2N1cnNvcjpkZWZhdWx0O2NvbG9yOnJnYmEoMCwwLDAsMC4zOCl9LnB3WHRNYi5GMjYyWWV7Y29sb3I6IzAwOTY4OH0uaEFVczllLlRySjBUY3tmb250LXNpemU6MTUwJTtmbG9hdDpjZW50ZXI7Y29sb3I6IzAwOTY4OH0uQ1loYXBme2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjQwMDtwYWRkaW5nOjhweCAxNnB4IDE2cHg7b3V0bGluZTpub25lfS5xaEVOcGJ7Y29sb3I6IzllOWU5ZX0uZzVPNk1lLmtySHFIYntiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjF9LkZtTlBxZi5rckhxSGJ7YmFja2dyb3VuZC1jb2xvcjojNDI0MjQyO2NvbG9yOiNmZmZ9LkZ1WlpjZi5rckhxSGJ7ZmlsbDojNDI0MjQyO3N0cm9rZTojZmZmfS5wd1h0TWIua3JIcUhiLmVGeGdrZntjb2xvcjojMDAwfS5wd1h0TWIua3JIcUhiLkYyNjJZZSwuaEFVczllLmtySHFIYi5UckowVGN7Y29sb3I6I2IyZGZkYn0ubGxoRU1key1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpIC4xNXM7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpIC4xNXM7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuNTAyKTtib3R0b206MDtsZWZ0OjA7b3BhY2l0eTowO3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjA7dG9wOjA7ei1pbmRleDo1MDAwfS5sbGhFTWQuaVdPNXRkey1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IC4wNXMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpO3RyYW5zaXRpb246b3BhY2l0eSAuMDVzIGN1YmljLWJlemllcigwLjQsMC4wLDAuMiwxKTtvcGFjaXR5OjF9Lm1qQU5kY3t0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC40cyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjRzIGN1YmljLWJlemllcigwLjQsMC4wLDAuMiwxKTstbW96LWJveC1hbGlnbjpjZW50ZXI7Ym94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDtib3gtb3JpZW50OnZlcnRpY2FsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtib3R0b206MDtsZWZ0OjA7cGFkZGluZzowIDUlO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjB9Lngzd1dnZSwuT05KaGx7ZGlzcGxheTpibG9jaztoZWlnaHQ6M2VtfS5lRVBlZ2U+Lngzd1dnZSwuZUVQZWdlPi5PTkpobHtib3gtZmxleDoxO2ZsZXgtZ3JvdzoxfS5KOU5maXtmbGV4LXNocmluazoxO21heC1oZWlnaHQ6MTAwJX0uZzNWSWxkey1tb3otYm94LWFsaWduOnN0cmV0Y2g7Ym94LWFsaWduOnN0cmV0Y2g7YWxpZ24taXRlbXM6c3RyZXRjaDtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtb3JpZW50OnZlcnRpY2FsO2JveC1vcmllbnQ6dmVydGljYWw7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3RyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjIyNXMgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4yMjVzIGN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKTtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LW1vei1ib3JkZXItcmFkaXVzOjJweDtib3JkZXItcmFkaXVzOjJweDstbW96LWJveC1zaGFkb3c6MCAxMnB4IDE1cHggMCByZ2JhKDAsMCwwLDAuMjQpO2JveC1zaGFkb3c6MCAxMnB4IDE1cHggMCByZ2JhKDAsMCwwLDAuMjQpO21heC13aWR0aDoyNGVtO291dGxpbmU6bm9uZTtvdmVyZmxvdzpoaWRkZW59LnZjdWczZCAuZzNWSWxke3BhZGRpbmc6MH0uZzNWSWxkLmtkQ2RxY3t0cmFuc2l0aW9uOi13ZWJraXQtdHJhbnNmb3JtIC4xNXMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMSwxKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzIGN1YmljLWJlemllcigwLjQsMC4wLDEsMSl9LlVwOHZILkNBd0lDZXt0cmFuc2Zvcm06c2NhbGUoMC44KX0uVXA4dkgua2RDZHFje3RyYW5zZm9ybTpzY2FsZSgwLjkpfS5FNFA2eC5DQXdJQ2UsLkU0UDZ4LmtkQ2RxY3t0cmFuc2Zvcm06dHJhbnNsYXRlWSg1MCUpfS52RGM4SWMuQ0F3SUNle3RyYW5zZm9ybTpzY2FsZSgwLjgpIHRyYW5zbGF0ZVkoMTAwJSl9LlhJSjlBYz4ueDN3V2dlLC5YSUo5QWM+Lk9OSmhsLC5IaG9FQmU+Lngzd1dnZXtib3gtZmxleDoxO2ZsZXgtZ3JvdzoxfS5IaG9FQmU+Lk9OSmhse2JveC1mbGV4OjI7ZmxleC1ncm93OjJ9Lk5ldnRkYz4ueDN3V2dle2JveC1mbGV4OjA7ZmxleC1ncm93OjB9Lk5ldnRkYz4uT05KaGwsLnQ4VnR2Pi54M3dXZ2V7Ym94LWZsZXg6MTtmbGV4LWdyb3c6MX0udDhWdHY+LmczVklsZHtib3gtZmxleDoyO2ZsZXgtZ3JvdzoyfS50OFZ0dj4uT05KaGx7Ym94LWZsZXg6MTtmbGV4LWdyb3c6MX0udmN1ZzNkey1tb3otYm94LWFsaWduOnN0cmV0Y2g7Ym94LWFsaWduOnN0cmV0Y2g7YWxpZ24taXRlbXM6c3RyZXRjaDtwYWRkaW5nOjB9LnZjdWczZD4uZzNWSWxke2JveC1mbGV4OjI7ZmxleC1ncm93OjI7LW1vei1ib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXJhZGl1czowO2xlZnQ6MDtyaWdodDowO21heC13aWR0aDoxMDAlfS52Y3VnM2Q+Lk9OSmhsLC52Y3VnM2Q+Lngzd1dnZXtib3gtZmxleDowO2ZsZXgtZ3JvdzowO2hlaWdodDowfS50T3JOZ2R7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4O2ZsZXgtc2hyaW5rOjA7Zm9udDo1MDAgMjBweCBSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7cGFkZGluZzoyNHB4IDI0cHggMjBweCAyNHB4fS52Y3VnM2QgLnRPck5nZHtkaXNwbGF5Om5vbmV9LlROY3ppYntib3gtcGFjazpqdXN0aWZ5O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZsZXgtc2hyaW5rOjA7LW1vei1ib3gtc2hhZG93OjAgM3B4IDRweCAwIHJnYmEoMCwwLDAsMC4yNCk7Ym94LXNoYWRvdzowIDNweCA0cHggMCByZ2JhKDAsMCwwLDAuMjQpO2JhY2tncm91bmQtY29sb3I6IzQ1NWE2NDtjb2xvcjp3aGl0ZTtkaXNwbGF5Om5vbmU7Zm9udDo1MDAgMjBweCBSb2JvdG8sUm9ib3RvRHJhZnQsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWZ9LnZjdWczZCAuVE5jemlie2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleH0uUE5lbnpme2JveC1mbGV4OjE7ZmxleC1ncm93OjE7ZmxleC1zaHJpbms6MTtvdmVyZmxvdzpoaWRkZW47d29yZC13cmFwOmJyZWFrLXdvcmR9LlROY3ppYiAuUE5lbnpme21hcmdpbjoxNnB4IDB9LlZZN0pRZHtoZWlnaHQ6MH0uVE5jemliIC5WWTdKUWQsLnRPck5nZCAuYlpXSWdke2Rpc3BsYXk6bm9uZX0uUjZMZnRlIC5XdHc4SHtmbGV4LXNocmluazowO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOi0xMnB4IC02cHggMCAwfS5QYm5HaGV7Ym94LWZsZXg6MjtmbGV4LWdyb3c6MjtmbGV4LXNocmluazoyO2Rpc3BsYXk6YmxvY2s7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90byxSb2JvdG9EcmFmdCxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtwYWRkaW5nOjAgMjRweDtvdmVyZmxvdy15OmF1dG99LldoZTh1YiAuUGJuR2hle3BhZGRpbmctdG9wOjI0cHh9LmhGRXFOYiAuUGJuR2hle3BhZGRpbmctYm90dG9tOjI0cHh9LnZjdWczZCAuUGJuR2hle3BhZGRpbmc6MTZweH0uWGZwc1Zle2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6ZmxleDtmbGV4LXNocmluazowO2JveC1wYWNrOmVuZDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7cGFkZGluZzoyNHB4IDI0cHggMTZweCAyNHB4fS52Y3VnM2QgLlhmcHNWZXtkaXNwbGF5Om5vbmV9Lk9sbGJXZXtib3gtcGFjazplbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO2Rpc3BsYXk6bm9uZX0udmN1ZzNkIC5PbGxiV2V7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWFsaWduOnN0YXJ0O2JveC1hbGlnbjpzdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O21hcmdpbjowIDE2cHh9LmtIc3NkYy5PMFdSa2YuQzBvVmZjLC5YZnBzVmUgLk8wV1JrZi5DMG9WZmN7bWluLXdpZHRoOjY0cHh9LmtIc3NkYysua0hzc2Rje21hcmdpbi1sZWZ0OjhweH0uVE5jemliIC5rSHNzZGN7Y29sb3I6I2ZmZjttYXJnaW4tdG9wOjEwcHh9LlROY3ppYiAuV3R3OEh7bWFyZ2luOjRweCAyNHB4IDRweCAwfS5UTmN6aWIgLmtIc3NkYy51M2JXNGUsLlROY3ppYiAuV3R3OEgudTNiVzRle2JhY2tncm91bmQtY29sb3I6cmdiYSgyMDQsMjA0LDIwNCwwLjI1MSl9LlROY3ppYiAua0hzc2RjPi5Wd2U0VmIsLlROY3ppYiAuV3R3OEg+LlZUQmE3YntiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgZmFydGhlc3Qtc2lkZSxyZ2JhKDI1NSwyNTUsMjU1LDAuMzApLHJnYmEoMjU1LDI1NSwyNTUsMC4zMCkgODAlLHJnYmEoMjU1LDI1NSwyNTUsMCkgMTAwJSl9LlROY3ppYiAua0hzc2RjLlJEUFpFLC5UTmN6aWIgLld0dzhILlJEUFpFe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC41MDIpO2ZpbGw6cmdiYSgyNTUsMjU1LDI1NSwwLjUwMil9c2VudGluZWx7fQovKiMgc291cmNlVVJMPS9hY2NvdW50cy9zdGF0aWMvXy9zcy9rPWdhaWEuZ2FpYWZlX2dsaWYuLXduaTE1ams0ZXc0ZC5MLkY0Lk8vYW09Z2dKQUFBQUFBQUtnUVJBQ3dHd0FLQUtKaFFJL2Q9MC9ycz1BQmtxYXgxYTdkeTV4UWx0aHpRT2JybU1ac1JBekljY2t3ICovPC9zdHlsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbm9uY2U9Ik9rdlJGWkJuTnNhZUtTeDgzbVcwa3pCRzVKNCI+d2luZG93Wydjc3NMb2FkZWQnXSA9IHRydWU7PC9zY3JpcHQ+PHNjcmlwdCBub25jZT0iT2t2UkZaQm5Oc2FlS1N4ODNtVzBrekJHNUo0Ij52YXIgX0ZfanNVcmwgPSAnaHR0cHM6XC9cL3NzbC5nc3RhdGljLmNvbVwvYWNjb3VudHNcL3N0YXRpY1wvX1wvanNcL2tceDNkZ2FpYS5nYWlhZmVfZ2xpZi5lbi5HZGhOR3lkTFVITS5PXC9tXHgzZGdsaWZiLGlkZW50aWZpZXIsdW5rbm93bmVycm9yXC9hbVx4M2RnZ0pBQUFBQUFBS2dRUkFDd0d3QUtBS0poUUlcL3J0XHgzZGpcL2RceDNkMVwvcnNceDNkQUJrcWF4MDU1TVhFMU9xT3V0Q1NTeXNWbnN2aVhtdWJIZyc7LyogX0dsb2JhbFByZWZpeF8gKi8KdGhpcy5fRz10aGlzLl9HfHx7fTsoZnVuY3Rpb24oXyl7dmFyIHdpbmRvdz10aGlzOwovKiBfTW9kdWxlXzpnbGlmYiAqLwp0cnl7CnZhciBkYSxhYWEsZmEsYmFhLGlhLGNhYSxrYSxvYSxxYSxyYSxzYSxlYWEsdWEsdGEsdmEseWEsemE7ZGE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uYWE7YmEoYixhLm8pO2IuZj1hLmY7bnVsbCE9YS5jJiZjYShiLGEuYyk7cmV0dXJuIGIudG9TdHJpbmcoKX07YWFhPWZ1bmN0aW9uKGEpe3ZhciBiPWEueTM7ZWEoYSkmJihiPWEuaGY/IWEuaGYuZmF0YWw6dm9pZCAwKTtyZXR1cm4gYn07ZmE9ZnVuY3Rpb24oKXt9O2JhYT1mdW5jdGlvbihhLGIpe3RoaXMuaGQ9bmV3IGZhO3RoaXMuZj1bXTt0aGlzLmM9bmV3IGZhO3RoaXMua2V5PWI7dGhpcy5hPW5ldyBmYTt0aGlzLmI9ITA7dGhpcy5vPSExO3RoaXMubm9kZU5hbWU9YTt0aGlzLnRleHQ9bnVsbH07aWE9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBoYShhLmV2ZW50LGEuYSxhLmEsYS5zb3VyY2UpfTsKY2FhPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP09iamVjdC5jcmVhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBifTtpZigiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mKWthPU9iamVjdC5zZXRQcm90b3R5cGVPZjtlbHNle3ZhciBsYTthOnt2YXIgZGFhPXtFRDohMH0sbmE9e307dHJ5e25hLl9fcHJvdG9fXz1kYWE7bGE9bmEuRUQ7YnJlYWsgYX1jYXRjaChhKXt9bGE9ITF9a2E9bGE/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsfW9hPWthOwpfLnBhPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9Y2FhKGIucHJvdG90eXBlKTthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2lmKG9hKW9hKGEsYik7ZWxzZSBmb3IodmFyIGMgaW4gYilpZigicHJvdG90eXBlIiE9YylpZihPYmplY3QuZGVmaW5lUHJvcGVydGllcyl7dmFyIGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiLGMpO2QmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGMsZCl9ZWxzZSBhW2NdPWJbY107YS4kPWIucHJvdG90eXBlfTtxYT0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXthIT1BcnJheS5wcm90b3R5cGUmJmEhPU9iamVjdC5wcm90b3R5cGUmJihhW2JdPWMudmFsdWUpfTsKcmE9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdz09PXRoaXM/dGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5nbG9iYWwmJm51bGwhPXdpbmRvdy5nbG9iYWw/d2luZG93Lmdsb2JhbDp0aGlzO3NhPWZ1bmN0aW9uKCl7c2E9ZnVuY3Rpb24oKXt9O3JhLlN5bWJvbHx8KHJhLlN5bWJvbD1lYWEpfTtlYWE9ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4ianNjb21wX3N5bWJvbF8iKyhifHwiIikrYSsrfX0oKTt1YT1mdW5jdGlvbigpe3NhKCk7dmFyIGE9cmEuU3ltYm9sLml0ZXJhdG9yO2F8fChhPXJhLlN5bWJvbC5pdGVyYXRvcj1yYS5TeW1ib2woIml0ZXJhdG9yIikpOyJmdW5jdGlvbiIhPXR5cGVvZiBBcnJheS5wcm90b3R5cGVbYV0mJnFhKEFycmF5LnByb3RvdHlwZSxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGEodGhpcyl9fSk7dWE9ZnVuY3Rpb24oKXt9fTsKdGE9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gdmEoZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX0pfTt2YT1mdW5jdGlvbihhKXt1YSgpO2E9e25leHQ6YX07YVtyYS5TeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3JldHVybiBhfTtfLnhhPWZ1bmN0aW9uKGEpe3VhKCk7dmFyIGI9YVt3aW5kb3cuU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6dGEoYSl9O3lhPWZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9cmE7YT1hLnNwbGl0KCIuIik7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtlIGluIGN8fChjW2VdPXt9KTtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmcWEoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfX07CnphPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSAndGhpcycgdmFsdWUgZm9yIFN0cmluZy5wcm90b3R5cGUuIitjKyIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTtpZihiIGluc3RhbmNlb2YgUmVnRXhwKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuIitjKyIgbXVzdCBub3QgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24iKTtyZXR1cm4gYSsiIn07eWEoIkFycmF5LnByb3RvdHlwZS5maW5kIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGEsYyl7YTp7dmFyIGI9dGhpcztiIGluc3RhbmNlb2YgU3RyaW5nJiYoYj1TdHJpbmcoYikpO2Zvcih2YXIgZT1iLmxlbmd0aCxmPTA7ZjxlO2YrKyl7dmFyIGs9YltmXTtpZihhLmNhbGwoYyxrLGYsYikpe2E9azticmVhayBhfX1hPXZvaWQgMH1yZXR1cm4gYX19KTsKeWEoIlN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYSxjKXt2YXIgYj16YSh0aGlzLGEsImVuZHNXaXRoIik7YSs9IiI7dm9pZCAwPT09YyYmKGM9Yi5sZW5ndGgpO2M9TWF0aC5tYXgoMCxNYXRoLm1pbihjfDAsYi5sZW5ndGgpKTtmb3IodmFyIGU9YS5sZW5ndGg7MDxlJiYwPGM7KWlmKGJbLS1jXSE9YVstLWVdKXJldHVybiExO3JldHVybiAwPj1lfX0pO3lhKCJTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGgiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYSxjKXt2YXIgYj16YSh0aGlzLGEsInN0YXJ0c1dpdGgiKTthKz0iIjt2YXIgZT1iLmxlbmd0aCxmPWEubGVuZ3RoO2M9TWF0aC5tYXgoMCxNYXRoLm1pbihjfDAsYi5sZW5ndGgpKTtmb3IodmFyIGs9MDtrPGYmJmM8ZTspaWYoYltjKytdIT1hW2srK10pcmV0dXJuITE7cmV0dXJuIGs+PWZ9fSk7CnZhciBBYT1mdW5jdGlvbihhLGIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKX07eWEoIk9iamVjdC5pcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihhLGMpe3JldHVybiBhPT09Yz8wIT09YXx8MS9hPT09MS9jOmEhPT1hJiZjIT09Y319KTt5YSgiQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGEsYyl7dmFyIGI9dGhpcztiIGluc3RhbmNlb2YgU3RyaW5nJiYoYj1TdHJpbmcoYikpO3ZhciBlPWIubGVuZ3RoO2ZvcihjPWN8fDA7YzxlO2MrKylpZihiW2NdPT1hfHxPYmplY3QuaXMoYltjXSxhKSlyZXR1cm4hMDtyZXR1cm4hMX19KTt5YSgiU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihhLGMpe3JldHVybi0xIT09emEodGhpcyxhLCJpbmNsdWRlcyIpLmluZGV4T2YoYSxjfHwwKX19KTsKeWEoIlByb21pc2UiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt0aGlzLmE9bnVsbH1mdW5jdGlvbiBjKGEpe3JldHVybiBhIGluc3RhbmNlb2YgZT9hOm5ldyBlKGZ1bmN0aW9uKGIpe2IoYSl9KX1pZihhKXJldHVybiBhO2IucHJvdG90eXBlLmI9ZnVuY3Rpb24oYSl7bnVsbD09dGhpcy5hJiYodGhpcy5hPVtdLHRoaXMubygpKTt0aGlzLmEucHVzaChhKX07Yi5wcm90b3R5cGUubz1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5mKGZ1bmN0aW9uKCl7YS5nKCl9KX07dmFyIGQ9cmEuc2V0VGltZW91dDtiLnByb3RvdHlwZS5mPWZ1bmN0aW9uKGEpe2QoYSwwKX07Yi5wcm90b3R5cGUuZz1mdW5jdGlvbigpe2Zvcig7dGhpcy5hJiZ0aGlzLmEubGVuZ3RoOyl7dmFyIGE9dGhpcy5hO3RoaXMuYT1bXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtkZWxldGUgYVtiXTt0cnl7YygpfWNhdGNoKEEpe3RoaXMuYyhBKX19fXRoaXMuYT1udWxsfTtiLnByb3RvdHlwZS5jPQpmdW5jdGlvbihhKXt0aGlzLmYoZnVuY3Rpb24oKXt0aHJvdyBhO30pfTt2YXIgZT1mdW5jdGlvbihhKXt0aGlzLmE9MDt0aGlzLmY9dm9pZCAwO3RoaXMuYj1bXTt2YXIgYj10aGlzLm8oKTt0cnl7YShiLnJlc29sdmUsYi5yZWplY3QpfWNhdGNoKHApe2IucmVqZWN0KHApfX07ZS5wcm90b3R5cGUubz1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7cmV0dXJuIGZ1bmN0aW9uKGQpe2N8fChjPSEwLGEuY2FsbChiLGQpKX19dmFyIGI9dGhpcyxjPSExO3JldHVybntyZXNvbHZlOmEodGhpcy53YSkscmVqZWN0OmEodGhpcy5jKX19O2UucHJvdG90eXBlLndhPWZ1bmN0aW9uKGEpe2lmKGE9PT10aGlzKXRoaXMuYyhuZXcgVHlwZUVycm9yKCJBIFByb21pc2UgY2Fubm90IHJlc29sdmUgdG8gaXRzZWxmIikpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGUpdGhpcy5lYShhKTtlbHNle2E6c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJvYmplY3QiOnZhciBiPW51bGwhPWE7YnJlYWsgYTtjYXNlICJmdW5jdGlvbiI6Yj0KITA7YnJlYWsgYTtkZWZhdWx0OmI9ITF9Yj90aGlzLmphKGEpOnRoaXMuZyhhKX19O2UucHJvdG90eXBlLmphPWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMDt0cnl7Yj1hLnRoZW59Y2F0Y2gocCl7dGhpcy5jKHApO3JldHVybn0iZnVuY3Rpb24iPT10eXBlb2YgYj90aGlzLkxhKGIsYSk6dGhpcy5nKGEpfTtlLnByb3RvdHlwZS5jPWZ1bmN0aW9uKGEpe3RoaXMudygyLGEpfTtlLnByb3RvdHlwZS5nPWZ1bmN0aW9uKGEpe3RoaXMudygxLGEpfTtlLnByb3RvdHlwZS53PWZ1bmN0aW9uKGEsYil7aWYoMCE9dGhpcy5hKXRocm93IEVycm9yKCJDYW5ub3Qgc2V0dGxlKCIrYSsiLCAiK2J8Iik6IFByb21pc2UgYWxyZWFkeSBzZXR0bGVkIGluIHN0YXRlIit0aGlzLmEpO3RoaXMuYT1hO3RoaXMuZj1iO3RoaXMuaSgpfTtlLnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5iKXtmb3IodmFyIGE9dGhpcy5iLGI9MDtiPGEubGVuZ3RoOysrYilhW2JdLmNhbGwoKSxhW2JdPW51bGw7CnRoaXMuYj1udWxsfX07dmFyIGY9bmV3IGI7ZS5wcm90b3R5cGUuZWE9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vKCk7YS5BcChiLnJlc29sdmUsYi5yZWplY3QpfTtlLnByb3RvdHlwZS5MYT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMubygpO3RyeXthLmNhbGwoYixjLnJlc29sdmUsYy5yZWplY3QpfWNhdGNoKEEpe2MucmVqZWN0KEEpfX07ZS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9mdW5jdGlvbihiKXt0cnl7ZChhKGIpKX1jYXRjaChSKXtmKFIpfX06Yn12YXIgZCxmLGs9bmV3IGUoZnVuY3Rpb24oYSxiKXtkPWE7Zj1ifSk7dGhpcy5BcChjKGEsZCksYyhiLGYpKTtyZXR1cm4ga307ZS5wcm90b3R5cGVbImNhdGNoIl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsYSl9O2UucHJvdG90eXBlLkFwPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe3N3aXRjaChkLmEpe2Nhc2UgMTphKGQuZik7CmJyZWFrO2Nhc2UgMjpiKGQuZik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiYWAiK2QuYSk7fX12YXIgZD10aGlzO251bGw9PXRoaXMuYj9mLmIoYyk6dGhpcy5iLnB1c2goZnVuY3Rpb24oKXtmLmIoYyl9KX07ZS5yZXNvbHZlPWM7ZS5yZWplY3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGIsYyl7YyhhKX0pfTtlLnJhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGIsZCl7Zm9yKHZhciBlPV8ueGEoYSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpYyhmLnZhbHVlKS5BcChiLGQpfSl9O2UuYWxsPWZ1bmN0aW9uKGEpe3ZhciBiPV8ueGEoYSksZD1iLm5leHQoKTtyZXR1cm4gZC5kb25lP2MoW10pOm5ldyBlKGZ1bmN0aW9uKGEsZSl7ZnVuY3Rpb24gZihiKXtyZXR1cm4gZnVuY3Rpb24oYyl7a1tiXT1jO24tLTswPT1uJiZhKGspfX12YXIgaz1bXSxuPTA7ZG8gay5wdXNoKHZvaWQgMCksbisrLGMoZC52YWx1ZSkuQXAoZihrLmxlbmd0aC0KMSksZSksZD1iLm5leHQoKTt3aGlsZSghZC5kb25lKX0pfTtyZXR1cm4gZX0pO3lhKCJBcnJheS5mcm9tIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGEsYyxkKXt1YSgpO2M9bnVsbCE9Yz9jOmZ1bmN0aW9uKGEpe3JldHVybiBhfTt2YXIgYj1bXSxmPWFbd2luZG93LlN5bWJvbC5pdGVyYXRvcl07aWYoImZ1bmN0aW9uIj09dHlwZW9mIGYpZm9yKGE9Zi5jYWxsKGEpOyEoZj1hLm5leHQoKSkuZG9uZTspYi5wdXNoKGMuY2FsbChkLGYudmFsdWUpKTtlbHNle2Y9YS5sZW5ndGg7Zm9yKHZhciBrPTA7azxmO2srKyliLnB1c2goYy5jYWxsKGQsYVtrXSkpfXJldHVybiBifX0pO3lhKCJBcnJheS5vZiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuZnJvbShhcmd1bWVudHMpfX0pOwp5YSgiV2Vha01hcCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXtBYShhLGQpfHxxYShhLGQse3ZhbHVlOnt9fSl9ZnVuY3Rpb24gYyhhKXt2YXIgYz1PYmplY3RbYV07YyYmKE9iamVjdFthXT1mdW5jdGlvbihhKXtiKGEpO3JldHVybiBjKGEpfSl9aWYoZnVuY3Rpb24oKXtpZighYXx8IU9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgYj1PYmplY3Quc2VhbCh7fSksYz1PYmplY3Quc2VhbCh7fSksZD1uZXcgYShbW2IsMl0sW2MsM11dKTtpZigyIT1kLmdldChiKXx8MyE9ZC5nZXQoYykpcmV0dXJuITE7ZFsiZGVsZXRlIl0oYik7ZC5zZXQoYyw0KTtyZXR1cm4hZC5oYXMoYikmJjQ9PWQuZ2V0KGMpfWNhdGNoKEEpe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgZD0iJGpzY29tcF9oaWRkZW5fIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpO2MoImZyZWV6ZSIpO2MoInByZXZlbnRFeHRlbnNpb25zIik7Yygic2VhbCIpO3ZhciBlPTAsZj1mdW5jdGlvbihhKXt0aGlzLmE9CihlKz1NYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKCk7aWYoYSl7c2EoKTt1YSgpO2E9Xy54YShhKTtmb3IodmFyIGI7IShiPWEubmV4dCgpKS5kb25lOyliPWIudmFsdWUsdGhpcy5zZXQoYlswXSxiWzFdKX19O2YucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGMpe2IoYSk7aWYoIUFhKGEsZCkpdGhyb3cgRXJyb3IoImJgIithKTthW2RdW3RoaXMuYV09YztyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBBYShhLGQpP2FbZF1bdGhpcy5hXTp2b2lkIDB9O2YucHJvdG90eXBlLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gQWEoYSxkKSYmQWEoYVtkXSx0aGlzLmEpfTtmLnByb3RvdHlwZVsiZGVsZXRlIl09ZnVuY3Rpb24oYSl7cmV0dXJuIEFhKGEsZCkmJkFhKGFbZF0sdGhpcy5hKT9kZWxldGUgYVtkXVt0aGlzLmFdOiExfTtyZXR1cm4gZn0pOwp5YSgiTWFwIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHwhYS5wcm90b3R5cGUuZW50cmllc3x8ImZ1bmN0aW9uIiE9dHlwZW9mIE9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgYj1PYmplY3Quc2VhbCh7eDo0fSksYz1uZXcgYShfLnhhKFtbYiwicyJdXSkpO2lmKCJzIiE9Yy5nZXQoYil8fDEhPWMuc2l6ZXx8Yy5nZXQoe3g6NH0pfHxjLnNldCh7eDo0fSwidCIpIT1jfHwyIT1jLnNpemUpcmV0dXJuITE7dmFyIGQ9Yy5lbnRyaWVzKCksZT1kLm5leHQoKTtpZihlLmRvbmV8fGUudmFsdWVbMF0hPWJ8fCJzIiE9ZS52YWx1ZVsxXSlyZXR1cm4hMTtlPWQubmV4dCgpO3JldHVybiBlLmRvbmV8fDQhPWUudmFsdWVbMF0ueHx8InQiIT1lLnZhbHVlWzFdfHwhZC5uZXh0KCkuZG9uZT8hMTohMH1jYXRjaChGKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7c2EoKTt1YSgpO3ZhciBiPW5ldyB3aW5kb3cuV2Vha01hcCxjPWZ1bmN0aW9uKGEpe3RoaXMuYj17fTt0aGlzLmE9ZigpOwp0aGlzLnNpemU9MDtpZihhKXthPV8ueGEoYSk7Zm9yKHZhciBiOyEoYj1hLm5leHQoKSkuZG9uZTspYj1iLnZhbHVlLHRoaXMuc2V0KGJbMF0sYlsxXSl9fTtjLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1kKHRoaXMsYSk7Yy5saXN0fHwoYy5saXN0PXRoaXMuYltjLmlkXT1bXSk7Yy5OZT9jLk5lLnZhbHVlPWI6KGMuTmU9e25leHQ6dGhpcy5hLFpoOnRoaXMuYS5aaCxoZWFkOnRoaXMuYSxrZXk6YSx2YWx1ZTpifSxjLmxpc3QucHVzaChjLk5lKSx0aGlzLmEuWmgubmV4dD1jLk5lLHRoaXMuYS5aaD1jLk5lLHRoaXMuc2l6ZSsrKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGVbImRlbGV0ZSJdPWZ1bmN0aW9uKGEpe2E9ZCh0aGlzLGEpO3JldHVybiBhLk5lJiZhLmxpc3Q/KGEubGlzdC5zcGxpY2UoYS5pbmRleCwxKSxhLmxpc3QubGVuZ3RofHxkZWxldGUgdGhpcy5iW2EuaWRdLGEuTmUuWmgubmV4dD1hLk5lLm5leHQsYS5OZS5uZXh0LlpoPWEuTmUuWmgsYS5OZS5oZWFkPQpudWxsLHRoaXMuc2l6ZS0tLCEwKTohMX07Yy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmI9e307dGhpcy5hPXRoaXMuYS5aaD1mKCk7dGhpcy5zaXplPTB9O2MucHJvdG90eXBlLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4hIWQodGhpcyxhKS5OZX07Yy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybihhPWQodGhpcyxhKS5OZSkmJmEudmFsdWV9O2MucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGEpe3JldHVyblthLmtleSxhLnZhbHVlXX0pfTtjLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gYS5rZXl9KX07Yy5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gYS52YWx1ZX0pfTtjLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMuZW50cmllcygpLGQ7IShkPWMubmV4dCgpKS5kb25lOylkPQpkLnZhbHVlLGEuY2FsbChiLGRbMV0sZFswXSx0aGlzKX07Yy5wcm90b3R5cGVbd2luZG93LlN5bWJvbC5pdGVyYXRvcl09Yy5wcm90b3R5cGUuZW50cmllczt2YXIgZD1mdW5jdGlvbihhLGMpe3ZhciBkPWMmJnR5cGVvZiBjOyJvYmplY3QiPT1kfHwiZnVuY3Rpb24iPT1kP2IuaGFzKGMpP2Q9Yi5nZXQoYyk6KGQ9IiIrICsrayxiLnNldChjLGQpKTpkPSJwXyIrYzt2YXIgZT1hLmJbZF07aWYoZSYmQWEoYS5iLGQpKWZvcihhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBmPWVbYV07aWYoYyE9PWMmJmYua2V5IT09Zi5rZXl8fGM9PT1mLmtleSlyZXR1cm57aWQ6ZCxsaXN0OmUsaW5kZXg6YSxOZTpmfX1yZXR1cm57aWQ6ZCxsaXN0OmUsaW5kZXg6LTEsTmU6dm9pZCAwfX0sZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuYTtyZXR1cm4gdmEoZnVuY3Rpb24oKXtpZihjKXtmb3IoO2MuaGVhZCE9YS5hOyljPWMuWmg7Zm9yKDtjLm5leHQhPWMuaGVhZDspcmV0dXJuIGM9Yy5uZXh0LHtkb25lOiExLAp2YWx1ZTpiKGMpfTtjPW51bGx9cmV0dXJue2RvbmU6ITAsdmFsdWU6dm9pZCAwfX0pfSxmPWZ1bmN0aW9uKCl7dmFyIGE9e307cmV0dXJuIGEuWmg9YS5uZXh0PWEuaGVhZD1hfSxrPTA7cmV0dXJuIGN9KTsKeWEoIlNldCIsZnVuY3Rpb24oYSl7aWYoZnVuY3Rpb24oKXtpZighYXx8IWEucHJvdG90eXBlLmVudHJpZXN8fCJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3Quc2VhbClyZXR1cm4hMTt0cnl7dmFyIGI9T2JqZWN0LnNlYWwoe3g6NH0pLGQ9bmV3IGEoXy54YShbYl0pKTtpZighZC5oYXMoYil8fDEhPWQuc2l6ZXx8ZC5hZGQoYikhPWR8fDEhPWQuc2l6ZXx8ZC5hZGQoe3g6NH0pIT1kfHwyIT1kLnNpemUpcmV0dXJuITE7dmFyIGU9ZC5lbnRyaWVzKCksZj1lLm5leHQoKTtpZihmLmRvbmV8fGYudmFsdWVbMF0hPWJ8fGYudmFsdWVbMV0hPWIpcmV0dXJuITE7Zj1lLm5leHQoKTtyZXR1cm4gZi5kb25lfHxmLnZhbHVlWzBdPT1ifHw0IT1mLnZhbHVlWzBdLnh8fGYudmFsdWVbMV0hPWYudmFsdWVbMF0/ITE6ZS5uZXh0KCkuZG9uZX1jYXRjaChrKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7c2EoKTt1YSgpO3ZhciBiPWZ1bmN0aW9uKGEpe3RoaXMuYT1uZXcgd2luZG93Lk1hcDtpZihhKXthPQpfLnhhKGEpO2Zvcih2YXIgYjshKGI9YS5uZXh0KCkpLmRvbmU7KXRoaXMuYWRkKGIudmFsdWUpfXRoaXMuc2l6ZT10aGlzLmEuc2l6ZX07Yi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3RoaXMuYS5zZXQoYSxhKTt0aGlzLnNpemU9dGhpcy5hLnNpemU7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlWyJkZWxldGUiXT1mdW5jdGlvbihhKXthPXRoaXMuYVsiZGVsZXRlIl0oYSk7dGhpcy5zaXplPXRoaXMuYS5zaXplO3JldHVybiBhfTtiLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYS5jbGVhcigpO3RoaXMuc2l6ZT0wfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5oYXMoYSl9O2IucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmVudHJpZXMoKX07Yi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS52YWx1ZXMoKX07Yi5wcm90b3R5cGUua2V5cz1iLnByb3RvdHlwZS52YWx1ZXM7Yi5wcm90b3R5cGVbd2luZG93LlN5bWJvbC5pdGVyYXRvcl09IGIucHJvdG90eXBlLnZhbHVlcztiLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpczt0aGlzLmEuZm9yRWFjaChmdW5jdGlvbihkKXtyZXR1cm4gYS5jYWxsKGIsZCxkLGMpfSl9O3JldHVybiBifSk7Cih3aW5kb3cuX0d8fHdpbmRvdykuX0R1bXBFeGNlcHRpb249ZnVuY3Rpb24oYSl7dGhyb3cgYTt9Oyh3aW5kb3cuX0d8fHdpbmRvdykuX0JfZXJyPWZ1bmN0aW9uKGEpe3Rocm93IGE7fTsod2luZG93Ll9HfHx3aW5kb3cpLl9CX3Byb2c9ZnVuY3Rpb24oKXt9O3ZhciBCYSxMYSxOYSxRYSxmYWEsZ2FhLGhhYSxUYSxXYSxWYTtCYT1CYXx8e307Xy5oPXRoaXM7Xy5DYT1mdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwIT09YX07Xy5EYT1mdW5jdGlvbihhKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGF9O18uRWE9ZnVuY3Rpb24oYSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBhfTtfLkZhPWZ1bmN0aW9uKGEsYixjKXthPWEuc3BsaXQoIi4iKTtjPWN8fF8uaDthWzBdaW4gY3x8IWMuZXhlY1NjcmlwdHx8Yy5leGVjU2NyaXB0KCJ2YXIgIithWzBdKTtmb3IodmFyIGQ7YS5sZW5ndGgmJihkPWEuc2hpZnQoKSk7KSFhLmxlbmd0aCYmXy5DYShiKT9jW2RdPWI6Y1tkXSYmY1tkXSE9PU9iamVjdC5wcm90b3R5cGVbZF0/Yz1jW2RdOmM9Y1tkXT17fX07Xy5HYT1mdW5jdGlvbihhLGIpe2E9YS5zcGxpdCgiLiIpO2I9Ynx8Xy5oO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGI9YlthW2NdXSxudWxsPT1iKXJldHVybiBudWxsO3JldHVybiBifTsKXy5IYT1mdW5jdGlvbigpe307Xy5JYT1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjIik7fTtfLkphPWZ1bmN0aW9uKGEpe2EucHU9dm9pZCAwO2EuU2I9ZnVuY3Rpb24oKXtyZXR1cm4gYS5wdT9hLnB1OmEucHU9bmV3IGF9fTsKTGE9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7aWYoIm9iamVjdCI9PWIpaWYoYSl7aWYoYSBpbnN0YW5jZW9mIEFycmF5KXJldHVybiJhcnJheSI7aWYoYSBpbnN0YW5jZW9mIE9iamVjdClyZXR1cm4gYjt2YXIgYz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk7aWYoIltvYmplY3QgV2luZG93XSI9PWMpcmV0dXJuIm9iamVjdCI7aWYoIltvYmplY3QgQXJyYXldIj09Y3x8Im51bWJlciI9PXR5cGVvZiBhLmxlbmd0aCYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLnNwbGljZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLnByb3BlcnR5SXNFbnVtZXJhYmxlJiYhYS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgic3BsaWNlIikpcmV0dXJuImFycmF5IjtpZigiW29iamVjdCBGdW5jdGlvbl0iPT1jfHwidW5kZWZpbmVkIiE9dHlwZW9mIGEuY2FsbCYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLnByb3BlcnR5SXNFbnVtZXJhYmxlJiYhYS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgiY2FsbCIpKXJldHVybiJmdW5jdGlvbiJ9ZWxzZSByZXR1cm4ibnVsbCI7CmVsc2UgaWYoImZ1bmN0aW9uIj09YiYmInVuZGVmaW5lZCI9PXR5cGVvZiBhLmNhbGwpcmV0dXJuIm9iamVjdCI7cmV0dXJuIGJ9O18uTWE9ZnVuY3Rpb24oYSl7cmV0dXJuImFycmF5Ij09TGEoYSl9O05hPWZ1bmN0aW9uKGEpe3ZhciBiPUxhKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTtfLk9hPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PUxhKGEpfTtfLlBhPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVybiJvYmplY3QiPT1iJiZudWxsIT1hfHwiZnVuY3Rpb24iPT1ifTtfLlJhPWZ1bmN0aW9uKGEpe3JldHVybiBhW1FhXXx8KGFbUWFdPSsrZmFhKX07UWE9ImNsb3N1cmVfdWlkXyIrKDFFOSpNYXRoLnJhbmRvbSgpPj4+MCk7ZmFhPTA7Z2FhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5jYWxsLmFwcGx5KGEuYmluZCxhcmd1bWVudHMpfTsKaGFhPWZ1bmN0aW9uKGEsYixjKXtpZighYSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7QXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYyxkKTtyZXR1cm4gYS5hcHBseShiLGMpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShiLGFyZ3VtZW50cyl9fTtfLmw9ZnVuY3Rpb24oYSxiLGMpe0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiYtMSE9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQudG9TdHJpbmcoKS5pbmRleE9mKCJuYXRpdmUgY29kZSIpP18ubD1nYWE6Xy5sPWhhYTtyZXR1cm4gXy5sLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cl8uU2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9Yy5zbGljZSgpO2IucHVzaC5hcHBseShiLGFyZ3VtZW50cyk7cmV0dXJuIGEuYXBwbHkodGhpcyxiKX19O1RhPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpYVtjXT1iW2NdfTtfLlVhPURhdGUubm93fHxmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX07CldhPWZ1bmN0aW9uKGEpe2lmKF8uaC5leGVjU2NyaXB0KV8uaC5leGVjU2NyaXB0KGEsIkphdmFTY3JpcHQiKTtlbHNlIGlmKF8uaC5ldmFsKXtpZihudWxsPT1WYSl7dHJ5e18uaC5ldmFsKCJ2YXIgX2V2YWxUZXN0XyA9IDE7Iil9Y2F0Y2goZCl7fWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgXy5oLl9ldmFsVGVzdF8pe3RyeXtkZWxldGUgXy5oLl9ldmFsVGVzdF99Y2F0Y2goZCl7fVZhPSEwfWVsc2UgVmE9ITF9aWYoVmEpXy5oLmV2YWwoYSk7ZWxzZXt2YXIgYj1fLmguZG9jdW1lbnQsYz1iLmNyZWF0ZUVsZW1lbnQoIlNDUklQVCIpO2MudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtjLmRlZmVyPSExO2MuYXBwZW5kQ2hpbGQoYi5jcmVhdGVUZXh0Tm9kZShhKSk7Yi5oZWFkLmFwcGVuZENoaWxkKGMpO2IuaGVhZC5yZW1vdmVDaGlsZChjKX19ZWxzZSB0aHJvdyBFcnJvcigiZCIpO307VmE9bnVsbDsKXy5tPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe31jLnByb3RvdHlwZT1iLnByb3RvdHlwZTthLiQ9Yi5wcm90b3R5cGU7YS5wcm90b3R5cGU9bmV3IGM7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTthLm1XPWZ1bmN0aW9uKGEsYyxmKXtmb3IodmFyIGQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0yKSxlPTI7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylkW2UtMl09YXJndW1lbnRzW2VdO3JldHVybiBiLnByb3RvdHlwZVtjXS5hcHBseShhLGQpfX07Cl8uWGE9ZnVuY3Rpb24oYSl7aWYoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyxfLlhhKTtlbHNle3ZhciBiPUVycm9yKCkuc3RhY2s7YiYmKHRoaXMuc3RhY2s9Yil9YSYmKHRoaXMubWVzc2FnZT1TdHJpbmcoYSkpO3RoaXMuYj0hMH07Xy5tKF8uWGEsRXJyb3IpO18uWGEucHJvdG90eXBlLm5hbWU9IkN1c3RvbUVycm9yIjt2YXIgWWE7dmFyIGlhYSxiYixrYixtYixuYixvYixqYWEsdWIsd2Isa2FhLGxhYSx6YjtfLlphPWZ1bmN0aW9uKGEpe3JldHVybiBhW2EubGVuZ3RoLTFdfTtfLiRhPUFycmF5LnByb3RvdHlwZS5pbmRleE9mP2Z1bmN0aW9uKGEsYixjKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtjPW51bGw9PWM/MDowPmM/TWF0aC5tYXgoMCxhLmxlbmd0aCtjKTpjO2lmKF8uRGEoYSkpcmV0dXJuIF8uRGEoYikmJjE9PWIubGVuZ3RoP2EuaW5kZXhPZihiLGMpOi0xO2Zvcig7YzxhLmxlbmd0aDtjKyspaWYoYyBpbiBhJiZhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX07CmlhYT1BcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y/ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYSxiLGEubGVuZ3RoLTEpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLTE7MD5jJiYoYz1NYXRoLm1heCgwLGEubGVuZ3RoK2MpKTtpZihfLkRhKGEpKXJldHVybiBfLkRhKGIpJiYxPT1iLmxlbmd0aD9hLmxhc3RJbmRleE9mKGIsYyk6LTE7Zm9yKDswPD1jO2MtLSlpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTtfLmFiPUFycmF5LnByb3RvdHlwZS5mb3JFYWNoP2Z1bmN0aW9uKGEsYixjKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1hLmxlbmd0aCxlPV8uRGEoYSk/YS5zcGxpdCgiIik6YSxmPTA7ZjxkO2YrKylmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKX07CmJiPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9Xy5EYShhKT9hLnNwbGl0KCIiKTphLGU9YS5sZW5ndGgtMTswPD1lOy0tZSllIGluIGQmJmIuY2FsbChjLGRbZV0sZSxhKX07Xy5jYj1BcnJheS5wcm90b3R5cGUuZmlsdGVyP2Z1bmN0aW9uKGEsYixjKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1hLmxlbmd0aCxlPVtdLGY9MCxrPV8uRGEoYSk/YS5zcGxpdCgiIik6YSxuPTA7bjxkO24rKylpZihuIGluIGspe3ZhciBwPWtbbl07Yi5jYWxsKGMscCxuLGEpJiYoZVtmKytdPXApfXJldHVybiBlfTsKXy5kYj1BcnJheS5wcm90b3R5cGUubWFwP2Z1bmN0aW9uKGEsYixjKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1hLmxlbmd0aCxlPUFycmF5KGQpLGY9Xy5EYShhKT9hLnNwbGl0KCIiKTphLGs9MDtrPGQ7aysrKWsgaW4gZiYmKGVba109Yi5jYWxsKGMsZltrXSxrLGEpKTtyZXR1cm4gZX07Xy5lYj1BcnJheS5wcm90b3R5cGUucmVkdWNlP2Z1bmN0aW9uKGEsYixjLGQpe2QmJihiPSgwLF8ubCkoYixkKSk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWM7KDAsXy5hYikoYSxmdW5jdGlvbihjLGspe2U9Yi5jYWxsKGQsZSxjLGssYSl9KTtyZXR1cm4gZX07Cl8uZmI9QXJyYXkucHJvdG90eXBlLnNvbWU/ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1hLmxlbmd0aCxlPV8uRGEoYSk/YS5zcGxpdCgiIik6YSxmPTA7ZjxkO2YrKylpZihmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKSlyZXR1cm4hMDtyZXR1cm4hMX07Xy5nYj1BcnJheS5wcm90b3R5cGUuZXZlcnk/ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YS5sZW5ndGgsZT1fLkRhKGEpP2Euc3BsaXQoIiIpOmEsZj0wO2Y8ZDtmKyspaWYoZiBpbiBlJiYhYi5jYWxsKGMsZVtmXSxmLGEpKXJldHVybiExO3JldHVybiEwfTtfLmliPWZ1bmN0aW9uKGEsYil7Yj1fLmhiKGEsYix2b2lkIDApO3JldHVybiAwPmI/bnVsbDpfLkRhKGEpP2EuY2hhckF0KGIpOmFbYl19OwpfLmhiPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YS5sZW5ndGgsZT1fLkRhKGEpP2Euc3BsaXQoIiIpOmEsZj0wO2Y8ZDtmKyspaWYoZiBpbiBlJiZiLmNhbGwoYyxlW2ZdLGYsYSkpcmV0dXJuIGY7cmV0dXJuLTF9O2tiPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPV8uRGEoYSk/YS5zcGxpdCgiIik6YSxkPWEubGVuZ3RoLTE7MDw9ZDtkLS0paWYoZCBpbiBjJiZiLmNhbGwodm9pZCAwLGNbZF0sZCxhKSlyZXR1cm4gZDtyZXR1cm4tMX07Xy5sYj1mdW5jdGlvbihhLGIpe3JldHVybiAwPD0oMCxfLiRhKShhLGIpfTttYj1mdW5jdGlvbihhKXtpZighXy5NYShhKSlmb3IodmFyIGI9YS5sZW5ndGgtMTswPD1iO2ItLSlkZWxldGUgYVtiXTthLmxlbmd0aD0wfTtuYj1mdW5jdGlvbihhLGIpe18ubGIoYSxiKXx8YS5wdXNoKGIpfTtfLnBiPWZ1bmN0aW9uKGEsYil7Yj0oMCxfLiRhKShhLGIpO3ZhciBjOyhjPTA8PWIpJiZvYihhLGIpO3JldHVybiBjfTsKb2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMT09QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKS5sZW5ndGh9O2phYT1mdW5jdGlvbihhLGIpe3ZhciBjPTA7YmIoYSxmdW5jdGlvbihkLGUpe2IuY2FsbCh2b2lkIDAsZCxlLGEpJiZvYihhLGUpJiZjKyt9KX07Xy5xYj1mdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfTtfLnJiPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGVuZ3RoO2lmKDA8Yil7Zm9yKHZhciBjPUFycmF5KGIpLGQ9MDtkPGI7ZCsrKWNbZF09YVtkXTtyZXR1cm4gY31yZXR1cm5bXX07Xy5zYj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihOYShkKSl7dmFyIGU9YS5sZW5ndGh8fDAsZj1kLmxlbmd0aHx8MDthLmxlbmd0aD1lK2Y7Zm9yKHZhciBrPTA7azxmO2srKylhW2Ura109ZFtrXX1lbHNlIGEucHVzaChkKX19Owp1Yj1mdW5jdGlvbihhLGIsYyxkKXtBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGEsXy50Yihhcmd1bWVudHMsMSkpfTtfLnRiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYixjKX07Xy52Yj1mdW5jdGlvbihhLGIpe2I9Ynx8YTtmb3IodmFyIGM9e30sZD0wLGU9MDtlPGEubGVuZ3RoOyl7dmFyIGY9YVtlKytdO3ZhciBrPWY7az1fLlBhKGspPyJvIitfLlJhKGspOih0eXBlb2YgaykuY2hhckF0KDApK2s7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsayl8fChjW2tdPSEwLGJbZCsrXT1mKX1iLmxlbmd0aD1kfTtfLnhiPWZ1bmN0aW9uKGEsYil7YS5zb3J0KGJ8fHdiKX07Cl8ueWI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFOYShhKXx8IU5hKGIpfHxhLmxlbmd0aCE9Yi5sZW5ndGgpcmV0dXJuITE7dmFyIGQ9YS5sZW5ndGg7Yz1jfHxrYWE7Zm9yKHZhciBlPTA7ZTxkO2UrKylpZighYyhhW2VdLGJbZV0pKXJldHVybiExO3JldHVybiEwfTt3Yj1mdW5jdGlvbihhLGIpe3JldHVybiBhPmI/MTphPGI/LTE6MH07a2FhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1ifTtsYWE9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9e30sZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdLGY9Yi5jYWxsKHZvaWQgMCxlLGQsYSk7Xy5DYShmKSYmKGNbZl18fChjW2ZdPVtdKSkucHVzaChlKX1yZXR1cm4gY307IHpiPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKF8uTWEoZCkpZm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKz04MTkyKWZvcih2YXIgZj16Yi5hcHBseShudWxsLF8udGIoZCxlLGUrODE5MikpLGs9MDtrPGYubGVuZ3RoO2srKyliLnB1c2goZltrXSk7ZWxzZSBiLnB1c2goZCl9cmV0dXJuIGJ9Owp2YXIgbWFhLG9hYSxwYWEscWFhLHJhYSxzYWEsdGFhLG5hYSxOYix1YWEsUWIsU2IsVWIsVmIsdmFhO18uQWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09YS5sYXN0SW5kZXhPZihiLDApfTtfLkNiPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgtYi5sZW5ndGg7cmV0dXJuIDA8PWMmJmEuaW5kZXhPZihiLGMpPT1jfTtfLkRiPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1tcc1x4YTBdKy9nLCIgIikucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfTtfLkViPWZ1bmN0aW9uKGEpe3JldHVybi9eW1xzXHhhMF0qJC8udGVzdChhKX07Xy5GYj1mdW5jdGlvbihhKXtyZXR1cm4hL1teMC05XS8udGVzdChhKX07Xy5HYj1TdHJpbmcucHJvdG90eXBlLnRyaW0/ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHJpbSgpfTpmdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKihbXHNcU10qPylbXHNceGEwXSokLy5leGVjKGEpWzFdfTsKbWFhPWZ1bmN0aW9uKGEsYil7dmFyIGM9L1xkK3xcRCsvZztpZihhPT1iKXJldHVybiAwO2lmKCFhKXJldHVybi0xO2lmKCFiKXJldHVybiAxO2Zvcih2YXIgZD1hLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZT1iLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZj1NYXRoLm1pbihkLmxlbmd0aCxlLmxlbmd0aCksaz0wO2s8ZjtrKyspe2M9ZFtrXTt2YXIgbj1lW2tdO2lmKGMhPW4pcmV0dXJuIGE9KDAsd2luZG93LnBhcnNlSW50KShjLDEwKSwhKDAsd2luZG93LmlzTmFOKShhKSYmKGI9KDAsd2luZG93LnBhcnNlSW50KShuLDEwKSwhKDAsd2luZG93LmlzTmFOKShiKSYmYS1iKT9hLWI6YzxuPy0xOjF9cmV0dXJuIGQubGVuZ3RoIT1lLmxlbmd0aD9kLmxlbmd0aC1lLmxlbmd0aDphPGI/LTE6MX07Xy5JYj1mdW5jdGlvbihhKXtyZXR1cm4oMCx3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KShTdHJpbmcoYSkpfTsKXy5KYj1mdW5jdGlvbihhKXtpZighbmFhLnRlc3QoYSkpcmV0dXJuIGE7LTEhPWEuaW5kZXhPZigiJiIpJiYoYT1hLnJlcGxhY2Uob2FhLCImYW1wOyIpKTstMSE9YS5pbmRleE9mKCI8IikmJihhPWEucmVwbGFjZShwYWEsIiZsdDsiKSk7LTEhPWEuaW5kZXhPZigiPiIpJiYoYT1hLnJlcGxhY2UocWFhLCImZ3Q7IikpOy0xIT1hLmluZGV4T2YoJyInKSYmKGE9YS5yZXBsYWNlKHJhYSwiJnF1b3Q7IikpOy0xIT1hLmluZGV4T2YoIiciKSYmKGE9YS5yZXBsYWNlKHNhYSwiJiMzOTsiKSk7LTEhPWEuaW5kZXhPZigiXHgwMCIpJiYoYT1hLnJlcGxhY2UodGFhLCImIzA7IikpO3JldHVybiBhfTtvYWE9LyYvZztwYWE9LzwvZztxYWE9Lz4vZztyYWE9LyIvZztzYWE9LycvZzt0YWE9L1x4MDAvZztuYWE9L1tceDAwJjw+IiddLztfLktiPWZ1bmN0aW9uKGEsYil7cmV0dXJuLTEhPWEuaW5kZXhPZihiKX07Cl8uTWI9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oWy0oKVxbXF17fSs/Ki4kXF58LDojPCFcXF0pL2csIlxcJDEiKS5yZXBsYWNlKC9ceDA4L2csIlxceDA4Iil9O05iPVN0cmluZy5wcm90b3R5cGUucmVwZWF0P2Z1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVwZWF0KGIpfTpmdW5jdGlvbihhLGIpe3JldHVybiBBcnJheShiKzEpLmpvaW4oYSl9O18uT2I9ZnVuY3Rpb24oYSxiKXthPV8uQ2Eodm9pZCAwKT9hLnRvRml4ZWQodm9pZCAwKTpTdHJpbmcoYSk7dmFyIGM9YS5pbmRleE9mKCIuIik7LTE9PWMmJihjPWEubGVuZ3RoKTtyZXR1cm4gTmIoIjAiLE1hdGgubWF4KDAsYi1jKSkrYX07Xy5QYj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjpTdHJpbmcoYSl9O3VhYT1mdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbChhcmd1bWVudHMsIiIpfTsKUWI9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSleKDAsXy5VYSkoKSkudG9TdHJpbmcoMzYpfTsKXy5UYj1mdW5jdGlvbihhLGIpe3ZhciBjPTA7YT0oMCxfLkdiKShTdHJpbmcoYSkpLnNwbGl0KCIuIik7Yj0oMCxfLkdiKShTdHJpbmcoYikpLnNwbGl0KCIuIik7Zm9yKHZhciBkPU1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKSxlPTA7MD09YyYmZTxkO2UrKyl7dmFyIGY9YVtlXXx8IiIsaz1iW2VdfHwiIjtkb3tmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLCIiXTtrPS8oXGQqKShcRCopKC4qKS8uZXhlYyhrKXx8WyIiLCIiLCIiLCIiXTtpZigwPT1mWzBdLmxlbmd0aCYmMD09a1swXS5sZW5ndGgpYnJlYWs7Yz1TYigwPT1mWzFdLmxlbmd0aD8wOigwLHdpbmRvdy5wYXJzZUludCkoZlsxXSwxMCksMD09a1sxXS5sZW5ndGg/MDooMCx3aW5kb3cucGFyc2VJbnQpKGtbMV0sMTApKXx8U2IoMD09ZlsyXS5sZW5ndGgsMD09a1syXS5sZW5ndGgpfHxTYihmWzJdLGtbMl0pO2Y9ZlszXTtrPWtbM119d2hpbGUoMD09Yyl9cmV0dXJuIGN9OwpTYj1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07VWI9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC9cLShbYS16XSkvZyxmdW5jdGlvbihhLGMpe3JldHVybiBjLnRvVXBwZXJDYXNlKCl9KX07VmI9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCl9O3ZhYT1mdW5jdGlvbihhKXt2YXIgYj1fLkRhKHZvaWQgMCk/Xy5NYih2b2lkIDApOiJcXHMiO3JldHVybiBhLnJlcGxhY2UobmV3IFJlZ0V4cCgiKF4iKyhiPyJ8WyIrYisiXSsiOiIiKSsiKShbYS16XSkiLCJnIiksZnVuY3Rpb24oYSxiLGUpe3JldHVybiBiK2UudG9VcHBlckNhc2UoKX0pfTsKYTp7dmFyIFhiPV8uaC5uYXZpZ2F0b3I7aWYoWGIpe3ZhciBZYj1YYi51c2VyQWdlbnQ7aWYoWWIpe18uV2I9WWI7YnJlYWsgYX19Xy5XYj0iIn1fLlpiPWZ1bmN0aW9uKGEpe3JldHVybiBfLktiKF8uV2IsYSl9O3ZhciBhYyxjYyxmYyxoYyxpYyxqYyxsYztfLiRiPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9O2FjPWZ1bmN0aW9uKGEsYil7dmFyIGM9e30sZDtmb3IoZCBpbiBhKWIuY2FsbCh2b2lkIDAsYVtkXSxkLGEpJiYoY1tkXT1hW2RdKTtyZXR1cm4gY307Xy5iYz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e30sZTtmb3IoZSBpbiBhKWRbZV09Yi5jYWxsKGMsYVtlXSxlLGEpO3JldHVybiBkfTtjYz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBhKWlmKGIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpKXJldHVybiEwO3JldHVybiExfTtfLmRjPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9MCxkO2ZvcihkIGluIGEpYltjKytdPWFbZF07cmV0dXJuIGJ9O18uZWM9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz0wLGQ7Zm9yKGQgaW4gYSliW2MrK109ZDtyZXR1cm4gYn07CmZjPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGEpaWYoYVtjXT09YilyZXR1cm4hMDtyZXR1cm4hMX07Xy5nYz1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH07aGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbCE9PWEmJmIgaW4gYT9hW2JdOnZvaWQgMH07aWM9ZnVuY3Rpb24oYSl7dmFyIGI9e30sYztmb3IoYyBpbiBhKWJbY109YVtjXTtyZXR1cm4gYn07amM9ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKXy5rYz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXtkPWFyZ3VtZW50c1tlXTtmb3IoYyBpbiBkKWFbY109ZFtjXTtmb3IodmFyIGY9MDtmPGpjLmxlbmd0aDtmKyspYz1qY1tmXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxjKSYmKGFbY109ZFtjXSl9fTtsYz1mdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PWImJl8uTWEoYXJndW1lbnRzWzBdKSlyZXR1cm4gbGMuYXBwbHkobnVsbCxhcmd1bWVudHNbMF0pO2Zvcih2YXIgYz17fSxkPTA7ZDxiO2QrKyljW2FyZ3VtZW50c1tkXV09ITA7cmV0dXJuIGN9Owp2YXIgbmMsb2M7bmM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5aYigiU2FmYXJpIikmJiEoXy5tYygpfHxfLlpiKCJDb2FzdCIpfHxfLlpiKCJPcGVyYSIpfHxfLlpiKCJFZGdlIil8fF8uWmIoIlNpbGsiKXx8Xy5aYigiQW5kcm9pZCIpKX07Xy5tYz1mdW5jdGlvbigpe3JldHVybihfLlpiKCJDaHJvbWUiKXx8Xy5aYigiQ3JpT1MiKSkmJiFfLlpiKCJFZGdlIil9O29jPWZ1bmN0aW9uKCl7cmV0dXJuIF8uWmIoIkFuZHJvaWQiKSYmIShfLm1jKCl8fF8uWmIoIkZpcmVmb3giKXx8Xy5aYigiT3BlcmEiKXx8Xy5aYigiU2lsayIpKX07Cl8ucGM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5aYigiQW5kcm9pZCIpfTtfLnFjPWZ1bmN0aW9uKCl7cmV0dXJuIF8uWmIoImlQaG9uZSIpJiYhXy5aYigiaVBvZCIpJiYhXy5aYigiaVBhZCIpfTtfLnJjPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucWMoKXx8Xy5aYigiaVBhZCIpfHxfLlpiKCJpUG9kIil9OwpfLnNjPWZ1bmN0aW9uKCl7dmFyIGE9Xy5XYixiPSIiO18uWmIoIldpbmRvd3MiKT8oYj0vV2luZG93cyAoPzpOVHxQaG9uZSkgKFswLTkuXSspLyxiPShhPWIuZXhlYyhhKSk/YVsxXToiMC4wIik6Xy5yYygpPyhiPS8oPzppUGhvbmV8aVBvZHxpUGFkfENQVSlccytPU1xzKyhcUyspLyxiPShhPWIuZXhlYyhhKSkmJmFbMV0ucmVwbGFjZSgvXy9nLCIuIikpOl8uWmIoIk1hY2ludG9zaCIpPyhiPS9NYWMgT1MgWCAoWzAtOV8uXSspLyxiPShhPWIuZXhlYyhhKSk/YVsxXS5yZXBsYWNlKC9fL2csIi4iKToiMTAiKTpfLnBjKCk/KGI9L0FuZHJvaWRccysoW15cKTtdKykoXCl8OykvLGI9KGE9Yi5leGVjKGEpKSYmYVsxXSk6Xy5aYigiQ3JPUyIpJiYoYj0vKD86Q3JPU1xzKyg/Omk2ODZ8eDg2XzY0KVxzKyhbMC05Ll0rKSkvLGI9KGE9Yi5leGVjKGEpKSYmYVsxXSk7cmV0dXJuIGJ8fCIifTsKdmFyIHRjPWZ1bmN0aW9uKGEpe3RjWyIgIl0oYSk7cmV0dXJuIGF9O3RjWyIgIl09Xy5IYTt2YXIgdWM9ZnVuY3Rpb24oYSxiKXt0cnl7cmV0dXJuIHRjKGFbYl0pLCEwfWNhdGNoKGMpe31yZXR1cm4hMX0seGFhPWZ1bmN0aW9uKGEsYil7dmFyIGM9d2FhO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxhKT9jW2FdOmNbYV09YihhKX07dmFyIHlhYSx6YWEsQWFhLEJhYSxHYyxIYztfLnZjPV8uWmIoIk9wZXJhIik7Xy53Yz1fLlpiKCJUcmlkZW50Iil8fF8uWmIoIk1TSUUiKTtfLnhjPV8uWmIoIkVkZ2UiKTtfLnljPV8ueGN8fF8ud2M7Xy56Yz1fLlpiKCJHZWNrbyIpJiYhKF8uS2IoXy5XYi50b0xvd2VyQ2FzZSgpLCJ3ZWJraXQiKSYmIV8uWmIoIkVkZ2UiKSkmJiEoXy5aYigiVHJpZGVudCIpfHxfLlpiKCJNU0lFIikpJiYhXy5aYigiRWRnZSIpO18uQmM9Xy5LYihfLldiLnRvTG93ZXJDYXNlKCksIndlYmtpdCIpJiYhXy5aYigiRWRnZSIpO18uQ2M9Xy5CYyYmXy5aYigiTW9iaWxlIik7eWFhPV8uWmIoIk1hY2ludG9zaCIpO18uRGM9Xy5aYigiV2luZG93cyIpO18uRWM9Xy5wYygpO3phYT1fLnFjKCk7QWFhPV8uWmIoImlQYWQiKTtCYWE9Xy5aYigiaVBvZCIpO18uRmM9Xy5yYygpO0djPWZ1bmN0aW9uKCl7dmFyIGE9Xy5oLmRvY3VtZW50O3JldHVybiBhP2EuZG9jdW1lbnRNb2RlOnZvaWQgMH07CmE6e3ZhciBJYz0iIixKYz1mdW5jdGlvbigpe3ZhciBhPV8uV2I7aWYoXy56YylyZXR1cm4vcnY6KFteXCk7XSspKFwpfDspLy5leGVjKGEpO2lmKF8ueGMpcmV0dXJuL0VkZ2VcLyhbXGRcLl0rKS8uZXhlYyhhKTtpZihfLndjKXJldHVybi9cYig/Ok1TSUV8cnYpWzogXShbXlwpO10rKShcKXw7KS8uZXhlYyhhKTtpZihfLkJjKXJldHVybi9XZWJLaXRcLyhcUyspLy5leGVjKGEpO2lmKF8udmMpcmV0dXJuLyg/OlZlcnNpb24pWyBcL10/KFxTKykvLmV4ZWMoYSl9KCk7SmMmJihJYz1KYz9KY1sxXToiIik7aWYoXy53Yyl7dmFyIEtjPUdjKCk7aWYobnVsbCE9S2MmJktjPigwLHdpbmRvdy5wYXJzZUZsb2F0KShJYykpe0hjPVN0cmluZyhLYyk7YnJlYWsgYX19SGM9SWN9dmFyIExjPUhjLHdhYT17fSxPYz1mdW5jdGlvbihhKXtyZXR1cm4geGFhKGEsZnVuY3Rpb24oKXtyZXR1cm4gMDw9Xy5UYihMYyxhKX0pfSxQYz1mdW5jdGlvbihhKXtyZXR1cm4gTnVtYmVyKENhYSk+PWF9LFFjOyB2YXIgUmM9Xy5oLmRvY3VtZW50O1FjPVJjJiZfLndjP0djKCl8fCgiQ1NTMUNvbXBhdCI9PVJjLmNvbXBhdE1vZGU/KDAsd2luZG93LnBhcnNlSW50KShMYywxMCk6NSk6dm9pZCAwO3ZhciBDYWE9UWM7Cl8uU2M9Xy5aYigiRmlyZWZveCIpO18uVGM9Xy5xYygpfHxfLlpiKCJpUG9kIik7Xy5VYz1fLlpiKCJpUGFkIik7Xy5WYz1vYygpO18uV2M9Xy5tYygpO18uWGM9bmMoKSYmIV8ucmMoKTt2YXIgWWMsWmM7WWM9bnVsbDtaYz1udWxsO18uJGM9ZnVuY3Rpb24oYSxiKXtpZighWWMpe1ljPXt9O1pjPXt9O2Zvcih2YXIgYz0wOzY1PmM7YysrKVljW2NdPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIuY2hhckF0KGMpLFpjW2NdPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fLiIuY2hhckF0KGMpfWI9Yj9aYzpZYztjPVtdO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCs9Myl7dmFyIGU9YVtkXSxmPWQrMTxhLmxlbmd0aCxrPWY/YVtkKzFdOjAsbj1kKzI8YS5sZW5ndGgscD1uP2FbZCsyXTowLEE9ZT4+MjtlPShlJjMpPDw0fGs+PjQ7az0oayYxNSk8PDJ8cD4+NjtwJj02MztufHwocD02NCxmfHwoaz02NCkpO2MucHVzaChiW0FdLGJbZV0sYltrXSxiW3BdKX1yZXR1cm4gYy5qb2luKCIiKX07CnZhciBjZCxkZCxlZCxnZCxtZCxwZCxxZDtfLmJkPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuYT1hO3RoaXMucXk9Yjt0aGlzLlFiPWM7dGhpcy5Edz1kO3RoaXMuaGg9MH07Xy5xPWZ1bmN0aW9uKCl7fTtjZD0iZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LlVpbnQ4QXJyYXk7Cl8udT1mdW5jdGlvbihhLGIsYyxkLGUsZil7YS5hPW51bGw7Ynx8KGI9Yz9bY106W10pO2EuamE9Yz9TdHJpbmcoYyk6dm9pZCAwO2EuYz0wPT09Yz8tMTowO2EuZj1iO2E6e2lmKGEuZi5sZW5ndGgmJihiPWEuZi5sZW5ndGgtMSwoYz1hLmZbYl0pJiYib2JqZWN0Ij09dHlwZW9mIGMmJiFfLk1hKGMpJiYhKGNkJiZjIGluc3RhbmNlb2Ygd2luZG93LlVpbnQ4QXJyYXkpKSl7YS5vPWItYS5jO2EuYj1jO2JyZWFrIGF9LTE8ZD8oYS5vPWQsYS5iPW51bGwpOmEubz1OdW1iZXIuTUFYX1ZBTFVFfWEuaT17fTtpZihlKWZvcihkPTA7ZDxlLmxlbmd0aDtkKyspYj1lW2RdLGI8YS5vPyhiKz1hLmMsYS5mW2JdPWEuZltiXXx8ZGQpOihlZChhKSxhLmJbYl09YS5iW2JdfHxkZCk7aWYoZiYmZi5sZW5ndGgpZm9yKGQ9MDtkPGYubGVuZ3RoO2QrKyl7Yj1lPXZvaWQgMDtjPWE7Zm9yKHZhciBrPWZbZF0sbj0wO248ay5sZW5ndGg7bisrKXt2YXIgcD1rW25dLEE9Xy5yKGMscCk7bnVsbCE9QSYmKGI9CnAsZT1BLF8udChjLHAsdm9pZCAwKSl9YiYmXy50KGMsYixlKX19O2RkPVtdO2VkPWZ1bmN0aW9uKGEpe3ZhciBiPWEubythLmM7YS5mW2JdfHwoYS5iPWEuZltiXT17fSl9O18uZmQ9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1bXSxlPTA7ZTxhLmxlbmd0aDtlKyspZFtlXT1iLmNhbGwoYVtlXSxjLGFbZV0pO3JldHVybiBkfTtnZD1mdW5jdGlvbihhLGIsYyxkLGUpe2Zvcih2YXIgZiBpbiBjKXt2YXIgaz1jW2ZdLG49ZC5jYWxsKGEsayk7aWYobnVsbCE9bil7Zm9yKHZhciBwIGluIGsucXkpaWYoay5xeS5oYXNPd25Qcm9wZXJ0eShwKSlicmVhaztiW3BdPWsuRHc/ay5oaD9fLmZkKG4say5EdyxlKTprLkR3KGUsbik6bn19fTtfLnI9ZnVuY3Rpb24oYSxiKXtpZihiPGEubyl7Yis9YS5jO3ZhciBjPWEuZltiXTtyZXR1cm4gYz09PWRkP2EuZltiXT1bXTpjfWlmKGEuYilyZXR1cm4gYz1hLmJbYl0sYz09PWRkP2EuYltiXT1bXTpjfTsKXy5oZD1mdW5jdGlvbihhLGIpe2lmKGI8YS5vKXtiKz1hLmM7dmFyIGM9YS5mW2JdO3JldHVybiBjPT09ZGQ/YS5mW2JdPVtdOmN9Yz1hLmJbYl07cmV0dXJuIGM9PT1kZD9hLmJbYl09W106Y307Xy5pZD1mdW5jdGlvbihhKXtpZihudWxsPT1hfHxfLkRhKGEpKXJldHVybiBhO2lmKGNkJiZhIGluc3RhbmNlb2Ygd2luZG93LlVpbnQ4QXJyYXkpcmV0dXJuIF8uJGMoYSk7TGEoYSk7cmV0dXJuIG51bGx9O18udj1mdW5jdGlvbihhLGIsYyl7YT1fLnIoYSxiKTtyZXR1cm4gbnVsbD09YT9jOmF9O18udD1mdW5jdGlvbihhLGIsYyl7YjxhLm8/YS5mW2IrYS5jXT1jOihlZChhKSxhLmJbYl09Yyl9O18udz1mdW5jdGlvbihhLGIsYyl7YS5hfHwoYS5hPXt9KTtpZighYS5hW2NdKXt2YXIgZD1fLnIoYSxjKTtkJiYoYS5hW2NdPW5ldyBiKGQpKX1yZXR1cm4gYS5hW2NdfTsKXy5qZD1mdW5jdGlvbihhLGIsYyl7YS5hfHwoYS5hPXt9KTtpZighYS5hW2NdKXtmb3IodmFyIGQ9Xy5oZChhLGMpLGU9W10sZj0wO2Y8ZC5sZW5ndGg7ZisrKWVbZl09bmV3IGIoZFtmXSk7YS5hW2NdPWV9Yj1hLmFbY107Yj09ZGQmJihiPWEuYVtjXT1bXSk7cmV0dXJuIGJ9O18ua2Q9ZnVuY3Rpb24oYSxiLGMpe2EuYXx8KGEuYT17fSk7dmFyIGQ9Yz9jLlNjKCk6YzthLmFbYl09YztfLnQoYSxiLGQpfTtfLmxkPWZ1bmN0aW9uKGEsYixjKXthLmF8fChhLmE9e30pO2M9Y3x8W107Zm9yKHZhciBkPVtdLGU9MDtlPGMubGVuZ3RoO2UrKylkW2VdPWNbZV0uU2MoKTthLmFbYl09YztfLnQoYSxiLGQpfTttZD1mdW5jdGlvbihhKXtpZihhLmEpZm9yKHZhciBiIGluIGEuYSl7dmFyIGM9YS5hW2JdO2lmKF8uTWEoYykpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXSYmY1tkXS5TYygpO2Vsc2UgYyYmYy5TYygpfX07Cl8ucS5wcm90b3R5cGUuU2M9ZnVuY3Rpb24oKXttZCh0aGlzKTtyZXR1cm4gdGhpcy5mfTtfLnEucHJvdG90eXBlLlFjPWNkP2Z1bmN0aW9uKCl7dmFyIGE9d2luZG93LlVpbnQ4QXJyYXkucHJvdG90eXBlLnRvSlNPTjt3aW5kb3cuVWludDhBcnJheS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIF8uJGModGhpcyl9O3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5mJiZ0aGlzLlNjKCksbmQpfWZpbmFsbHl7d2luZG93LlVpbnQ4QXJyYXkucHJvdG90eXBlLnRvSlNPTj1hfX06ZnVuY3Rpb24oKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5mJiZ0aGlzLlNjKCksbmQpfTt2YXIgbmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5FYShiKSYmKCgwLHdpbmRvdy5pc05hTikoYil8fHdpbmRvdy5JbmZpbml0eT09PWJ8fC13aW5kb3cuSW5maW5pdHk9PT1iKT9TdHJpbmcoYik6Yn07Xy5xLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe21kKHRoaXMpO3JldHVybiB0aGlzLmYudG9TdHJpbmcoKX07Cl8ucS5wcm90b3R5cGUuZ2V0RXh0ZW5zaW9uPWZ1bmN0aW9uKGEpe2lmKHRoaXMuYil7dGhpcy5hfHwodGhpcy5hPXt9KTt2YXIgYj1hLmE7aWYoYS5oaCl7aWYoYS5RYilyZXR1cm4gdGhpcy5hW2JdfHwodGhpcy5hW2JdPSgwLF8uZGIpKHRoaXMuYltiXXx8W10sZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBhLlFiKGIpfSkpLHRoaXMuYVtiXX1lbHNlIGlmKGEuUWIpcmV0dXJuIXRoaXMuYVtiXSYmdGhpcy5iW2JdJiYodGhpcy5hW2JdPW5ldyBhLlFiKHRoaXMuYltiXSkpLHRoaXMuYVtiXTtyZXR1cm4gdGhpcy5iW2JdfX07Cl8ucS5wcm90b3R5cGUuZz1mdW5jdGlvbihhLGIpe3RoaXMuYXx8KHRoaXMuYT17fSk7ZWQodGhpcyk7dmFyIGM9YS5hO2EuaGg/KGI9Ynx8W10sYS5RYj8odGhpcy5hW2NdPWIsdGhpcy5iW2NdPSgwLF8uZGIpKGIsZnVuY3Rpb24oYSl7cmV0dXJuIGEuU2MoKX0pKTp0aGlzLmJbY109Yik6YS5RYj8odGhpcy5hW2NdPWIsdGhpcy5iW2NdPWI/Yi5TYygpOmIpOnRoaXMuYltjXT1ifTtfLnEucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIF8ub2QodGhpcyl9O3BkPWZ1bmN0aW9uKGEpe3JldHVybiBfLm9kKGEpfTtfLm9kPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgYS5jb25zdHJ1Y3RvcihxZChhLlNjKCkpKX07CnFkPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKF8uTWEoYSkpe2Zvcih2YXIgYz1BcnJheShhLmxlbmd0aCksZD0wO2Q8YS5sZW5ndGg7ZCsrKW51bGwhPShiPWFbZF0pJiYoY1tkXT0ib2JqZWN0Ij09dHlwZW9mIGI/cWQoYik6Yik7cmV0dXJuIGN9aWYoY2QmJmEgaW5zdGFuY2VvZiB3aW5kb3cuVWludDhBcnJheSlyZXR1cm4gbmV3IHdpbmRvdy5VaW50OEFycmF5KGEpO2M9e307Zm9yKGQgaW4gYSludWxsIT0oYj1hW2RdKSYmKGNbZF09Im9iamVjdCI9PXR5cGVvZiBiP3FkKGIpOmIpO3JldHVybiBjfTsKdmFyIHJkPWZ1bmN0aW9uKGEpe3JldHVybiByZC5vKGEpfTtyZC5vPWZ1bmN0aW9uKGEpe3JldHVybiBhKyJfIn07cmQuSUo9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiayIpO307cmQuZz1mdW5jdGlvbihhKXtpZihhJiZhLmNvbnN0cnVjdG9yJiZhLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCk9PT1PYmplY3QudG9TdHJpbmcoKSl7dmFyIGI9e30sYztmb3IoYyBpbiBhKWEuaGFzT3duUHJvcGVydHkoYykmJihiW3JkLm8oYyldPWFbY10pO3JldHVybiBifXRocm93IEVycm9yKCJsIik7fTtyZC5jPSEwO3JkLmY9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O3JkLnc9ZnVuY3Rpb24oKXtyZXR1cm4hMH07CnZhciBzZD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJkaSIsLTEsRGFhLG51bGwpfTtfLm0oc2QsXy5xKTt2YXIgRGFhPVs2LDcsMTAsMTEsMTJdO3NkLlhhPSJkaSI7dmFyIHRkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImUiLC0xLG51bGwsbnVsbCl9O18ubSh0ZCxfLnEpO3RkLlhhPSJlIjt2YXIgdmQ9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubSh2ZCxfLnEpO3ZhciB3ZD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJmLnJpIiwtMSxudWxsLG51bGwpfTtfLm0od2QsXy5xKTt3ZC5YYT0iZi5yaSI7dmFyIHhkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsInhzcmYiLC0xLG51bGwsbnVsbCl9O18ubSh4ZCxfLnEpO3hkLlhhPSJ4c3JmIjt4ZC5wcm90b3R5cGUuVGk9ZnVuY3Rpb24oYSl7Xy50KHRoaXMsMSxhKX07dmFyIHlkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwxLG51bGwsbnVsbCl9O18ubSh5ZCxfLnEpO18uemQ9e307dmFyIEFkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oQWQsXy5xKTtBZC5wcm90b3R5cGUuZ2V0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O3ZhciBCZD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsRWFhLG51bGwpfTtfLm0oQmQsXy5xKTt2YXIgRWFhPVsxXTt2YXIgQ2Q9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiYWYuZGUiLDEsbnVsbCxudWxsKX07Xy5tKENkLF8ucSk7Q2QuWGE9ImFmLmRlIjt2YXIgRGQ9e307dmFyIEVkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImFmLmRlcCIsLTEsbnVsbCxudWxsKX07Xy5tKEVkLF8ucSk7dmFyIEZhYT1uZXcgXy5iZCgxMDY2MjcxNjMse0FZOjB9LEVkLGZ1bmN0aW9uKGEsYil7dmFyIGMsZD1fLnIoYiwxKSxlO2lmKGU9Yz1fLncoYixDZCwyKSllPXt9LGdkKGMsZSxEZCxDZC5wcm90b3R5cGUuZ2V0RXh0ZW5zaW9uLGEpLGEmJihlLmo9Yyk7Yz17aWQ6ZCxReDplfTthJiYoYy5qPWIpO3JldHVybiBjfSk7RWQuWGE9ImFmLmRlcCI7RWQucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEpfTsKdmFyIEZkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImFmLmFkbSIsLTEsbnVsbCxudWxsKX07Xy5tKEZkLF8ucSk7dmFyIEdkPW5ldyBfLmJkKDUwMjQyMjI4LHtKbjowfSxGZCxmdW5jdGlvbihhLGIpe3ZhciBjPXtiNjpfLnIoYiwxKX07YSYmKGMuaj1iKTtyZXR1cm4gY30pO0ZkLlhhPSJhZi5hZG0iO3ZhciBIZD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsMSxudWxsLG51bGwpfTtfLm0oSGQsXy5xKTtfLklkPXt9O3ZhciBKZD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJhZi5hZGQiLC0xLG51bGwsbnVsbCl9O18ubShKZCxfLnEpO0pkLlhhPSJhZi5hZGQiO0pkLnByb3RvdHlwZS5nZXRJZD1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07dmFyIEtkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImFmLm1hZiIsLTEsR2FhLG51bGwpfTtfLm0oS2QsXy5xKTt2YXIgR2FhPVsxXTtLZC5YYT0iYWYubWFmIjt2YXIgTGQ9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLEhhYSxudWxsKX07Xy5tKExkLF8ucSk7dmFyIEhhYT1bN107dmFyIElhYSxSZDtfLk1kPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLElhYSl9O18ubShfLk1kLF8ucSk7SWFhPVtbMSwyLDMsNF1dO1JkPWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZihkPWM9Xy53KGIsXy5OZCwxKSl7ZD1jO3ZhciBlPXtCNjpfLnIoZCwxKX07YSYmKGUuaj1kKTtkPWV9aWYoZT1jPV8udyhiLF8uT2QsMikpZT1jLGM9e281Ol8ucihlLDEpfSxhJiYoYy5qPWUpLGU9Yzt2YXIgZjtpZihmPWM9Xy53KGIsXy5QZCwzKSlmPXtFNjpfLnIoYywxKX0sYSYmKGYuaj1jKTt2YXIgaztpZihrPWM9Xy53KGIsXy5RZCw0KSlrPXtuNTpfLnIoYywxKX0sYSYmKGsuaj1jKTtkPXtBNjpkLGw1OmUsRDY6ZixtNTprLCRaOl8ucihiLDUpLGtaOl8ucihiLDYpLG03Ol8ucihiLDcpfTthJiYoZC5qPWIpO3JldHVybiBkfTtfLk5kPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5OZCxfLnEpOyBfLk9kPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5PZCxfLnEpO18uUGQ9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLlBkLF8ucSk7Xy5RZD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uUWQsXy5xKTtfLlRkPWZ1bmN0aW9uKGEpe3JldHVybiBfLnIoYSw1KX07CnZhciBVZD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsSmFhLG51bGwpfSxKYWE7Xy5tKFVkLF8ucSk7SmFhPVszXTtfLlZkPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1fLnIoYSwxMCl9O1VkLnByb3RvdHlwZS5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywyMSl9O3ZhciBXZD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKFdkLF8ucSk7V2QucHJvdG90eXBlLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDIpfTtXZC5wcm90b3R5cGUubWI9ZnVuY3Rpb24oYSl7Xy50KHRoaXMsMixhKX07dmFyIFhkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxLYWEsbnVsbCl9LEthYTtfLm0oWGQsXy5xKTtLYWE9WzFdO18uWWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uamQoYSxXZCwxKX07dmFyIFpkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfSwkZCxMYWE7Xy5tKFpkLF8ucSk7Xy5hZT1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEsJGQsMSl9O18uYmU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udihhLDQsITEpfTtfLmNlPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSxYZCwzNSl9O18uZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udyhhLExkLDE1KX07Xy5lZT1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEsVWQsMTcpfTtfLmZlPWZ1bmN0aW9uKGEpe3JldHVybiBfLnYoYSwzNCwhMSl9OyRkPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxMYWEsbnVsbCl9O18ubSgkZCxfLnEpO0xhYT1bMTEsMjJdO18uZ2U9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udihhLDYsImRlZmF1bHQiKX07Xy5oZT1mdW5jdGlvbihhKXtyZXR1cm4gXy52KGEsNywiZGVmYXVsdCIpfTtfLmllPWZ1bmN0aW9uKGEpe3JldHVybiBfLnYoYSw5LCJkZWZhdWx0Iil9OyBfLmplPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5qZSxfLnEpO18ua2U9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLmtlLF8ucSk7CnZhciBNYWEscGUsT2FhO18ubGU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLE1hYSxudWxsKX07Xy5tKF8ubGUsXy5xKTtNYWE9WzNdO18ub2U9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPV8ucihiLDEpLGU9Xy5yKGIsMiksZj1fLmhkKGIsMyksaztpZihrPWM9Xy5tZShiKSlrPXtJVjpfLnIoYywxKSxOVjpfLnIoYywyKSxhcHBOYW1lOl8ucihjLDMpLEVWOl8uZmQoXy5qZChjLF8ubmUsNCksTmFhLGEpfSxhJiYoay5qPWMpO2M9e3Q2OmQsdTY6ZSxrNzpmLEtWOmt9O2EmJihjLmo9Yik7cmV0dXJuIGN9O3BlPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxPYWEsbnVsbCl9O18ubShwZSxfLnEpO09hYT1bNF07Xy5uZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8ubmUsXy5xKTt2YXIgTmFhPWZ1bmN0aW9uKGEsYil7dmFyIGM9e2ljb246Xy5yKGIsMSksbGFiZWw6Xy5yKGIsMiksZGVzY3JpcHRpb246Xy5yKGIsMyl9O2EmJihjLmo9Yik7cmV0dXJuIGN9OyBfLm5lLnByb3RvdHlwZS5XZj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywyKX07Xy5uZS5wcm90b3R5cGUubWk9ZnVuY3Rpb24oYSl7Xy50KHRoaXMsMixhKX07Xy5tZT1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEscGUsNCl9OwpfLnFlPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5xZSxfLnEpO18ucmU9ZnVuY3Rpb24oYSxiKXt2YXIgYz17ZW1haWw6Xy5yKGIsMSksZGlzcGxheU5hbWU6Xy5yKGIsMiksb006Xy5yKGIsMyksWnk6Xy5yKGIsNCksQTA6Xy5yKGIsNSksYXV0aHVzZXI6Xy5yKGIsMTIpLHBqOl8ucihiLDYpLEZaOl8ucihiLDcpLG5YOl8ucihiLDgpLGg2Ol8ucihiLDkpLFo0Ol8ucihiLDEwKSxEMDpfLnIoYiwxMSl9O2EmJihjLmo9Yik7cmV0dXJuIGN9O18ucWUucHJvdG90eXBlLmdldEVtYWlsPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEpfTtfLnFlLnByb3RvdHlwZS5KYz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywyKX07Xy5xZS5wcm90b3R5cGUuRWU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMyl9O18ucWUucHJvdG90eXBlLmdldEdpdmVuTmFtZT1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw0KX07IF8uc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucihhLDYpfTsKXy50ZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8udGUsXy5xKTtfLnRlLnByb3RvdHlwZS5nZXRUb2tlbj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07Xy50ZS5wcm90b3R5cGUuc2V0VG9rZW49ZnVuY3Rpb24oYSl7Xy50KHRoaXMsMSxhKX07Xy51ZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8udWUsXy5xKTtfLnZlPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy52ZSxfLnEpO18ud2U9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLndlLF8ucSk7Xy53ZS5wcm90b3R5cGUuRGU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMyl9O18ud2UucHJvdG90eXBlLldkPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPV8ucih0aGlzLDMpfTtfLnhlPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy54ZSxfLnEpOyBfLnllPWZ1bmN0aW9uKGEsYil7Xy50KGEsMSxiKX07Xy54ZS5wcm90b3R5cGUuaGo9ZnVuY3Rpb24oKXtfLmtkKHRoaXMsNSx2b2lkIDApfTtfLnhlLnByb3RvdHlwZS56ZT1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxfLnVlLDEzKX07CnZhciB6ZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKHplLF8ucSk7Xy5BZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxQYWEpfTtfLm0oXy5BZSxfLnEpO3ZhciBQYWE9W1syLDMsNCw1LDYsOCw5LDEwLDExLDEyXV0sQmU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShCZSxfLnEpO3ZhciBDZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKENlLF8ucSk7dmFyIERlPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oRGUsXy5xKTtEZS5wcm90b3R5cGUuRWc9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O0RlLnByb3RvdHlwZS5nZXRPcmlnaW49ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O18uRWU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLkVlLF8ucSk7Xy5FZS5wcm90b3R5cGUuRWc9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMyl9Owp2YXIgRmU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShGZSxfLnEpO0ZlLnByb3RvdHlwZS5FZz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07RmUucHJvdG90eXBlLmdldE9yaWdpbj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw0KX07Xy5HZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uR2UsXy5xKTt2YXIgSGU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShIZSxfLnEpO0hlLnByb3RvdHlwZS5EeT1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07dmFyIEllPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oSWUsXy5xKTt2YXIgUWFhPWZ1bmN0aW9uKGEsYil7dmFyIGM9e25hbWU6Xy5yKGIsMSksdmFsdWU6Xy5yKGIsMil9O2EmJihjLmo9Yik7cmV0dXJuIGN9OwpJZS5wcm90b3R5cGUub2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O0llLnByb3RvdHlwZS5tYj1mdW5jdGlvbihhKXtfLnQodGhpcywyLGEpfTt2YXIgSmU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLFJhYSxudWxsKX07Xy5tKEplLF8ucSk7dmFyIFJhYT1bMl0sS2U9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShLZSxfLnEpO3ZhciBMZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKExlLF8ucSk7Cl8uTWU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2YuY3IiLC0xLG51bGwsbnVsbCl9O18ubShfLk1lLF8ucSk7dmFyIE5lPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oTmUsXy5xKTtfLk1lLlhhPSJnZi5jciI7Xy5NZS5wcm90b3R5cGUucmQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O18uTWUucHJvdG90eXBlLlpkPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLF8uQWUsNCl9O18uT2U9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLk9lLF8ucSk7Xy5QZT1mdW5jdGlvbihhLGIpe18udChhLDQsYil9O18uUWU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2Yuc2lzYiIsNCxudWxsLG51bGwpfTtfLm0oXy5RZSxfLnEpO18uUWUuWGE9ImdmLnNpc2IiO18uUWUucHJvdG90eXBlLmZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEpfTtfLlFlLnByb3RvdHlwZS5haD1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxfLk1lLDMpfTt2YXIgU2U9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2YudHR1IiwtMSxudWxsLG51bGwpfTtfLm0oU2UsXy5xKTtTZS5YYT0iZ2YudHR1IjsKdmFyIFRlPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oVGUsXy5xKTt2YXIgVWU9ZnVuY3Rpb24oYSxiKXt2YXIgYz17RVk6Xy5yKGIsMikseTY6Xy5yKGIsMyl9O2EmJihjLmo9Yik7cmV0dXJuIGN9O18uVmU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2YudWljZCIsLTEsbnVsbCxudWxsKX07Xy5tKF8uVmUsXy5xKTtfLldlPWZ1bmN0aW9uKGEsYil7dmFyIGM9e0lyOl8ucihiLDEpfTthJiYoYy5qPWIpO3JldHVybiBjfTtfLlZlLlhhPSJnZi51aWNkIjtfLlZlLnByb3RvdHlwZS5nZXRUb2tlbj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07Xy5WZS5wcm90b3R5cGUuc2V0VG9rZW49ZnVuY3Rpb24oYSl7Xy50KHRoaXMsMSxhKX07Xy54PWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy54LF8ucSk7Xy5YZT1mdW5jdGlvbihhLGIpe3ZhciBjPXtONDpfLnIoYiwyKX07YSYmKGMuaj1iKTtyZXR1cm4gY307Xy5ZZT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uWWUsXy5xKTt2YXIgWmU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShaZSxfLnEpO1plLnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbihhKXtfLnQodGhpcywxLGEpfTt2YXIgJGU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubSgkZSxfLnEpO3ZhciBhZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKGFmLF8ucSk7dmFyIGJmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oYmYsXy5xKTt2YXIgZGY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShkZixfLnEpO3ZhciBlZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKGVmLF8ucSk7IHZhciBmZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsU2FhLG51bGwpfTtfLm0oZmYsXy5xKTt2YXIgU2FhPVsxXTsKdmFyIFZhYSxXYWEsWGFhLFlhYSxaYWEsZ2JhLHFnO18uZ2Y9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLmdmLF8ucSk7Xy5nZi5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uZ2YucHJvdG90eXBlLkFhPWZ1bmN0aW9uKGEpe18udCh0aGlzLDEsYSl9O18uZ2YucHJvdG90eXBlLmtkPWZ1bmN0aW9uKCl7Xy50KHRoaXMsMSx2b2lkIDApfTtfLmdmLnByb3RvdHlwZS5MYz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1fLnIodGhpcywxKX07dmFyIGhmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oaGYsXy5xKTt2YXIgamY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLFRhYSxudWxsKX07Xy5tKGpmLF8ucSk7dmFyIFRhYT1bMTZdO2pmLnByb3RvdHlwZS5nZXRFcnJvcj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07CmpmLnByb3RvdHlwZS5BYT1mdW5jdGlvbihhKXtfLnQodGhpcywxLGEpfTtqZi5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oKXtfLnQodGhpcywxLHZvaWQgMCl9O2pmLnByb3RvdHlwZS5MYz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1fLnIodGhpcywxKX07Xy5rZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsVWFhLG51bGwpfTtfLm0oXy5rZixfLnEpO3ZhciBVYWE9WzEsMiwzXTtfLmtmLnByb3RvdHlwZS5wYj0iRlBjNDBjIjt2YXIgbGY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShsZixfLnEpO18ubWY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLFZhYSxudWxsKX07Xy5tKF8ubWYsXy5xKTtWYWE9WzYsNyw4XTtfLm5mPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5uZixfLnEpO18ubmYucHJvdG90eXBlLm9jPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDIpfTsKXy5vZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8ub2YsXy5xKTtfLnBmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5wZixfLnEpO18uZz1fLnBmLnByb3RvdHlwZTtfLmcuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uZy5BYT1mdW5jdGlvbihhKXtfLnQodGhpcywxLGEpfTtfLmcua2Q9ZnVuY3Rpb24oKXtfLnQodGhpcywxLHZvaWQgMCl9O18uZy5MYz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1fLnIodGhpcywxKX07Xy5nLlRjPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLF8uVmUsMil9O3ZhciBxZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKHFmLF8ucSk7Xy5yZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8ucmYsXy5xKTsKXy5yZi5wcm90b3R5cGUub2M9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O3ZhciBzZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKHNmLF8ucSk7dmFyIHVmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0odWYsXy5xKTtfLnZmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy52ZixfLnEpO18udmYucHJvdG90eXBlLm9jPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEpfTtfLnZmLnByb3RvdHlwZS4kZT1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywyKX07Xy52Zi5wcm90b3R5cGUuZ2V0RW1haWw9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMyl9O18ud2Y9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLndmLF8ucSk7Xy5nPV8ud2YucHJvdG90eXBlO18uZy5vYz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07Cl8uZy4kZT1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywyKX07Xy5nLmdldFBob25lTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDUpfTtfLmcuaGFzUGhvbmVOdW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9Xy5yKHRoaXMsNSl9O18uZy5DZz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw2KX07Xy54Zj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8ueGYsXy5xKTtfLnhmLnByb3RvdHlwZS5vYz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07Xy54Zi5wcm90b3R5cGUuJGU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O18ueWY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLnlmLF8ucSk7dmFyIHpmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oemYsXy5xKTt6Zi5wcm90b3R5cGUub2M9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsNil9Owp6Zi5wcm90b3R5cGUuJGU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsNyl9O3ZhciBBZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsV2FhLG51bGwpfTtfLm0oQWYsXy5xKTtXYWE9WzNdO18uQmY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLkJmLF8ucSk7Xy5CZi5wcm90b3R5cGUub2M9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O3ZhciBDZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKENmLF8ucSk7dmFyIERmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oRGYsXy5xKTtEZi5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O0RmLnByb3RvdHlwZS5BYT1mdW5jdGlvbihhKXtfLnQodGhpcywxLGEpfTtEZi5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oKXtfLnQodGhpcywxLHZvaWQgMCl9OwpEZi5wcm90b3R5cGUuTGM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9Xy5yKHRoaXMsMSl9O18uRWY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLkVmLF8ucSk7Xy5FZi5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uRWYucHJvdG90eXBlLkFhPWZ1bmN0aW9uKGEpe18udCh0aGlzLDEsYSl9O18uRWYucHJvdG90eXBlLmtkPWZ1bmN0aW9uKCl7Xy50KHRoaXMsMSx2b2lkIDApfTtfLkVmLnByb3RvdHlwZS5MYz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1fLnIodGhpcywxKX07Xy5GZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uRmYsXy5xKTtfLkZmLnByb3RvdHlwZS5lbj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07dmFyIEdmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oR2YsXy5xKTsKWGFhPWZ1bmN0aW9uKGEsYil7dmFyIGM9e1ZxOl8ucihiLDEpLG5NOl8ucihiLDIpfTthJiYoYy5qPWIpO3JldHVybiBjfTtfLkhmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxZYWEsbnVsbCl9O18ubShfLkhmLF8ucSk7WWFhPVsxLDJdO18uSWY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLklmLF8ucSk7Xy5JZi5wcm90b3R5cGUuZW49ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uS2Y9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLktmLF8ucSk7dmFyIE5mPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oTmYsXy5xKTtOZi5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O05mLnByb3RvdHlwZS5BYT1mdW5jdGlvbihhKXtfLnQodGhpcywxLGEpfTtOZi5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oKXtfLnQodGhpcywxLHZvaWQgMCl9OwpOZi5wcm90b3R5cGUuTGM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9Xy5yKHRoaXMsMSl9O18uT2Y9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLk9mLF8ucSk7Xy5PZi5wcm90b3R5cGUub2M9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uUGY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLlBmLF8ucSk7Xy5RZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uUWYsXy5xKTtfLlJmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5SZixfLnEpO18uUmYucHJvdG90eXBlLm9jPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEpfTtfLlNmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5TZixfLnEpOwpaYWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz17bVo6Xy5yKGIsMSksZnQ6Xy5yKGIsMiksTnA6Xy5yKGIsMyl9O2EmJihjLmo9Yik7cmV0dXJuIGN9O18uVGY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLCRhYSxudWxsKX07Xy5tKF8uVGYsXy5xKTt2YXIgJGFhPVsxLDJdLFVmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oVWYsXy5xKTtfLmc9VWYucHJvdG90eXBlO18uZy5nZXRFcnJvcj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07Xy5nLkFhPWZ1bmN0aW9uKGEpe18udCh0aGlzLDEsYSl9O18uZy5rZD1mdW5jdGlvbigpe18udCh0aGlzLDEsdm9pZCAwKX07Xy5nLkxjPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPV8ucih0aGlzLDEpfTtfLmcuVGM9ZnVuY3Rpb24oKXtyZXR1cm4gXy53KHRoaXMsXy5WZSwyKX07dmFyIFZmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oVmYsXy5xKTsKXy5XZj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uV2YsXy5xKTtfLldmLnByb3RvdHlwZS5nZXRFcnJvcj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw3KX07Xy5XZi5wcm90b3R5cGUuQWE9ZnVuY3Rpb24oYSl7Xy50KHRoaXMsNyxhKX07Xy5XZi5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oKXtfLnQodGhpcyw3LHZvaWQgMCl9O18uV2YucHJvdG90eXBlLkxjPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPV8ucih0aGlzLDcpfTtfLlhmPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5YZixfLnEpO18uWWY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLllmLF8ucSk7Xy5ZZi5wcm90b3R5cGUub2M9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uWmY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLlpmLF8ucSk7Cl8uJGY9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLiRmLF8ucSk7Xy4kZi5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uJGYucHJvdG90eXBlLkFhPWZ1bmN0aW9uKGEpe18udCh0aGlzLDEsYSl9O18uJGYucHJvdG90eXBlLmtkPWZ1bmN0aW9uKCl7Xy50KHRoaXMsMSx2b2lkIDApfTtfLiRmLnByb3RvdHlwZS5MYz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1fLnIodGhpcywxKX07Xy5hZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uYWcsXy5xKTtfLmJnPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy5iZyxfLnEpO3ZhciBjZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKGNnLF8ucSk7Xy5kZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uZGcsXy5xKTsKXy5kZy5wcm90b3R5cGUub2M9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O3ZhciBlZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKGVnLF8ucSk7dmFyIGZnPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oZmcsXy5xKTtmZy5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O2ZnLnByb3RvdHlwZS5BYT1mdW5jdGlvbihhKXtfLnQodGhpcywxLGEpfTtmZy5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oKXtfLnQodGhpcywxLHZvaWQgMCl9O2ZnLnByb3RvdHlwZS5MYz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1fLnIodGhpcywxKX07dmFyIGdnPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oZ2csXy5xKTsKdmFyIGFiYT1mdW5jdGlvbihhLGIpe3ZhciBjPXtQNzpfLnIoYiwxKX07YSYmKGMuaj1iKTtyZXR1cm4gY30saGc9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLGJiYSxudWxsKX07Xy5tKGhnLF8ucSk7dmFyIGJiYT1bMV0sY2JhPWZ1bmN0aW9uKGEsYil7dmFyIGM9e1E3Ol8uZmQoXy5qZChiLGdnLDEpLGFiYSxhKSxncm91cElkOl8ucihiLDIpfTthJiYoYy5qPWIpO3JldHVybiBjfSxpZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsZGJhLG51bGwpfTtfLm0oaWcsXy5xKTt2YXIgZGJhPVsxXSxlYmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz17Tzc6Xy5mZChfLmpkKGIsaGcsMSksY2JhLGEpfTthJiYoYy5qPWIpO3JldHVybiBjfSxqZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsZmJhLG51bGwpfTtfLm0oamcsXy5xKTt2YXIgZmJhPVsxXSxrZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsZ2JhLG51bGwpfTtfLm0oa2csXy5xKTtnYmE9WzFdOwpxZz1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9e2MxOl8ucihiLDMpLG9aOl8ucihiLDQpLGs2Ol8ucihiLDIpLFQ1Ol8ucihiLDUpLHZYOl8uZmQoXy5uZyhiKSxvZyxhKSx6NjpfLnIoYiw2KSxuNjpfLnIoYiw3KSxvNjpfLnIoYiw4KSxyWDooYz1fLnBnKGIpKSYmUmQoYSxjKSxiMTooYz1fLncoYixfLk1kLDEwKSkmJlJkKGEsYyksd1g6Xy5yKGIsMTEpfTthJiYoZC5qPWIpO3JldHVybiBkfTtfLm5nPWZ1bmN0aW9uKGEpe3JldHVybiBfLmpkKGEsXy5yZywxKX07Xy5wZz1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEsXy5NZCw5KX07Xy5yZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsNTAwLG51bGwsbnVsbCl9O18ubShfLnJnLF8ucSk7CnZhciBvZz1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9Xy5yKGIsMyksZT1fLnIoYiw0KSxmPV8ucihiLDkpLGs9Xy5yKGIsMTApLG49Xy5yKGIsNikscD1fLnIoYiwxOSksQT1fLnIoYiw3KSxEPV8ucihiLDgpLEY9Xy5yKGIsMTEpLEk9Xy5yKGIsMTIpLEo9Xy5yKGIsMTMpLE09Xy5yKGIsMTQpLFI9Xy5yKGIsMTUpLFM9Xy5yKGIsMTYpLGphPV8ucihiLDE3KSxtYT1fLnIoYiwxOCksS2E7aWYoS2E9Yz1fLncoYixfLlllLDIwKSl7dmFyIHdhPWMsSGIsQWM9Xy5yKHdhLDEpLHVkPV8ucih3YSwyKSxSYj1fLnIod2EsNCksTWM7aWYoTWM9SGI9Xy53KHdhLFplLDMpKXt2YXIgamIsQmI9Xy5yKEhiLDEpLFNkPV8ucihIYiwyKSxKZj1fLnIoSGIsMyksdGY9Xy5yKEhiLDQpLGNmPV8ucihIYiw2KSxPZz1fLnIoSGIsNyksaGk9Xy5yKEhiLDgpLFBnPV8ucihIYiw5KSxKaz0oamI9Xy53KEhiLF8ueCwxMCkpJiZfLlhlKGEsamIpLFFnO2lmKFFnPWpiPV8udyhIYiwkZSwxMDApKXt2YXIgYWQ9amIsCk5jLENqPV8ucihhZCwxKSxLaz1fLnIoYWQsMiksTGs9Xy5yKGFkLDMpLFhtO2lmKFhtPU5jPV8udyhhZCxmZiw0KSl7dmFyIFFyPXtvNDpfLmhkKE5jLDEpfTthJiYoUXIuaj1OYyk7WG09UXJ9dmFyIERqPXt4WjpDaixiMDpLayxzNjpMayxwZXJtaXNzaW9uczpYbSxiNTpfLnIoYWQsNSksZDU6Xy5yKGFkLDYpfTthJiYoRGouaj1hZCk7UWc9RGp9dmFyIHloPVFnLE1rO2lmKE1rPWpiPV8udyhIYixhZiwxMDEpKXt2YXIgZnA9amIsaWk9e3pfOl8ucihmcCwxKX07YSYmKGlpLmo9ZnApO01rPWlpfXZhciBZbT1NayxOaztpZihOaz1qYj1fLncoSGIsYmYsMTAyKSl7dmFyIFptPWpiLCRtPXtENTpfLnIoWm0sMSksRTU6Xy5yKFptLDIpLHdGOl8ucihabSwzKX07YSYmKCRtLmo9Wm0pO05rPSRtfXZhciBqaT1OayxhbjtpZihhbj1qYj1fLncoSGIsZWYsMTAzKSl7dmFyIGJuPWpiLGNuPXtNNTpfLnIoYm4sMSksV1o6Xy5yKGJuLDIpLHdGOl8ucihibiwzKX07YSYmKGNuLmo9Ym4pO2FuPQpjbn12YXIgTGI9YW4sRWo7aWYoRWo9amI9Xy53KEhiLGRmLDEwNCkpe3ZhciBraT1qYixkbj17bDY6Xy5yKGtpLDEpfTthJiYoZG4uaj1raSk7RWo9ZG59dmFyIHpoPXt0aXRsZTpCYixZYjpTZCxCbDpKZixHNjp0ZixINDpjZixKNDpPZyxJNDpoaSxuNDpQZyxiXzpKayxKVjp5aCx5VzpZbSxCMTpqaSxlNzpMYixtMzpFan07YSYmKHpoLmo9SGIpO01jPXpofXZhciBncD17dkc6QWMsaV86dWQsal86UmIsVzQ6TWN9O2EmJihncC5qPXdhKTtLYT1ncH12YXIgV3U9S2EsZW49Xy5yKGIsMjEpLGZuPV8ucihiLDIyKSxocD0oYz1iLkhlKCkpJiZVZShhLGMpLFh1PV8ucihiLDI0KSxnbj1fLnIoYiwyNSksUnI9KGM9Xy5zZyhiKSkmJlJkKGEsYyksam47aWYoam49Yz1fLnRnKGIpKXt2YXIga249YyxGaj17Vm46Xy5yKGtuLDEpLGpaOl8ucihrbiwyKX07YSYmKEZqLmo9a24pO2puPUZqfXZhciBPaz1qbixQaztpZihQaz1jPV8udWcoYikpe3ZhciBBaD1jLFFrLGlwPXtlcnJvcjpfLnIoQWgsCjEpLEJ3Ol8ucihBaCwzKSxDdzpfLnIoQWgsNCksT1k6Xy5yKEFoLDUpLEd4OihRaz1BaC5UYygpKSYmXy5XZShhLFFrKX07YSYmKGlwLmo9QWgpO1BrPWlwfXZhciBSaz1QayxHajtpZihHaj1jPV8udyhiLGpnLDEwMDIpKXt2YXIganA9Yyxsbj17dFg6Xy5mZChfLmpkKGpwLGlnLDEpLGViYSxhKX07YSYmKGxuLmo9anApO0dqPWxufXZhciBrcD1HaixTaztpZihTaz1jPV8udyhiLGZnLDUwMDIpKXt2YXIgbW49YyxUaz17ZXJyb3I6Xy5yKG1uLDEpLEIzOl8ucihtbiwyKX07YSYmKFRrLmo9bW4pO1NrPVRrfXZhciBubj1TayxvbjtpZihvbj1jPV8udyhiLF8ubWYsMTAwNCkpe3ZhciBtaT1jLGxwPXtNcDpfLnIobWksNSksZ0M6Xy5yKG1pLDQpLEFWOl8uaGQobWksNiksdTA6Xy5oZChtaSw3KSxJVzpfLmhkKG1pLDgpfTthJiYobHAuaj1taSk7b249bHB9dmFyIFNyPW9uLG1wO2lmKG1wPWM9Xy52ZyhiKSl7dmFyIFJlPWMscG4sbnA9Xy5yKFJlLDEpLHFuPV8ucihSZSwyKSxZdT1fLnIoUmUsCjMpLFVrO2lmKFVrPXBuPV8udyhSZSxfLmtmLDE3KSl7dmFyIEJoPXBuLFRyPXtNcDpfLnIoQmgsNSksRFY6Xy5oZChCaCwxKSx2MDpfLmhkKEJoLDIpLEpXOl8uaGQoQmgsMyksdDA6Xy5yKEJoLDQpLHNWOl8ucihCaCw2KX07YSYmKFRyLmo9QmgpO1VrPVRyfXZhciBVcj1VayxadT1fLnIoUmUsNyksVnI9Xy5yKFJlLDgpLHJuPV8uaGQoUmUsMTYpLFdyPV8ucihSZSwxOCksJHU9Xy5yKFJlLDE5KSxYcj1fLnIoUmUsMTApLGF2PV8ucihSZSwxMyksb3A9Xy5yKFJlLDE0KSxMZjtpZihMZj1wbj1fLncoUmUsbGYsMTUpKXt2YXIgUmc9cG4sYnY9Xy5pZChfLnIoUmcsMSkpLHNuPV8ucihSZywyKSxWaz1fLnIoUmcsMyksSGo9Xy5yKFJnLDQpLHBwPXtVNDpidixYVjpzbixaVjpWayxWNzpudWxsPT1Iaj9IajorSGosWVY6Xy5yKFJnLDUpfTthJiYocHAuaj1SZyk7TGY9cHB9dmFyIE1mPXtlcnJvcjpucCxkUDpxbixlUDpZdSxUZzpVcixFMzpadSxFaDpWcixDNzpybixCNzpXcixJXzokdSwKQ3k6WHIscHg6YXYscXg6b3AscVk6TGZ9O2EmJihNZi5qPVJlKTttcD1NZn12YXIgbGc9bXAsbmk7aWYobmk9Yz1fLncoYixfLldmLDUwMzIpKXt2YXIgU2c9Yyx0bj17Rlk6Xy5yKFNnLDEpLGRQOl8ucihTZywyKSxlUDpfLnIoU2csMyksZXJyb3I6Xy5yKFNnLDcpLEN5Ol8ucihTZyw0KSxweDpfLnIoU2csNSkscXg6Xy5yKFNnLDYpfTthJiYodG4uaj1TZyk7bmk9dG59dmFyIHFwPW5pLFlyO2lmKFlyPWM9Xy53KGIsXy5UZiwxMDA1KSl7dmFyIHJwPWMsZkE9e05ZOl8uaGQocnAsMSksT206Xy5mZChfLmpkKHJwLF8uU2YsMiksWmFhLGEpLHVWOl8ucihycCwzKSx3WjpfLnIocnAsNCl9O2EmJihmQS5qPXJwKTtZcj1mQX12YXIgWnI9WXIsdW47aWYodW49Yz1fLncoYixfLlJmLDUwMDUpKXt2YXIgJHI9YyxnQT17cmVzdWx0Ol8ucigkciwxKX07YSYmKGdBLmo9JHIpO3VuPWdBfXZhciBYSD11bixjdjtpZihjdj1jPV8udyhiLGVnLDEwMDYpKXt2YXIgc3A9YyxXaz17T1Y6Xy5yKHNwLAoxKX07YSYmKFdrLmo9c3ApO2N2PVdrfXZhciBkdj1jdixldjtpZihldj1jPV8udyhiLF8uZGcsNTAwNikpe3ZhciBmdj1jLGd2PXtyZXN1bHQ6Xy5yKGZ2LDIpfTthJiYoZ3Yuaj1mdik7ZXY9Z3Z9dmFyIFlIPWV2LGh2O2lmKGh2PWM9Xy53KGIsQ2YsMTAwNykpe3ZhciBoQT17fTthJiYoaEEuaj1jKTtodj1oQX12YXIgWkg9aHYsdHA7aWYodHA9Yz1fLncoYixfLkJmLDUwMDcpKXt2YXIgdm49Yyxpdj17cmVzdWx0Ol8ucih2biwyKX07YSYmKGl2Lmo9dm4pO3RwPWl2fXZhciAkSD10cCx1cDtpZih1cD1jPV8udyhiLF8ub2YsMTAwOCkpe3ZhciBhcz1jLGlBPXtDMzpfLnIoYXMsMSkseV86Xy5yKGFzLDIpLGJWOl8ucihhcywzKX07YSYmKGlBLmo9YXMpO3VwPWlBfXZhciBqQT11cCxqdjtpZihqdj1jPV8udyhiLF8ubmYsNTAwOCkpe3ZhciBrQT1jLGt2PXtyZXN1bHQ6Xy5yKGtBLDIpfTthJiYoa3Yuaj1rQSk7anY9a3Z9dmFyIGxBPWp2LGJzO2lmKGJzPWM9Xy53ZyhiKSl7dmFyIHduPQpjLG1BPXtWcTpfLnIod24sMSksc0I6Xy5yKHduLDIpLGlXOl8uaGQod24sMyksbk06Xy5yKHduLDUpLExxOl8ucih3biw2KX07YSYmKG1BLmo9d24pO2JzPW1BfXZhciBhST1icyx2cDtpZih2cD1jPV8ueGcoYikpe3ZhciBtZz1jLG5BPXtySjpfLnIobWcsOCksczc6Xy5yKG1nLDkpLHJlc3VsdDpfLnIobWcsNiksZnU6Xy5yKG1nLDcpLFpGOl8ucihtZywzKSxzQjpfLnIobWcsNSl9O2EmJihuQS5qPW1nKTt2cD1uQX12YXIgYkk9dnAsbHY7aWYobHY9Yz1fLncoYixjZywxMDEwKSl7dmFyIG9BPXt9O2EmJihvQS5qPWMpO2x2PW9BfXZhciBjcz1sdixtdjtpZihtdj1jPV8udyhiLF8uYmcsNTAxMCkpe3ZhciB3cD1jLHBBPXtUXzpfLnIod3AsMSksY186Xy5yKHdwLDIpLFBWOl8ucih3cCwzKSxMejpfLnIod3AsNCl9O2EmJihwQS5qPXdwKTttdj1wQX12YXIgcUE9bXYsbnY7aWYobnY9Yz1fLncoYixzZiwxMDE0KSl7dmFyIHJBPXt9O2EmJihyQS5qPWMpO252PXJBfXZhciBzQT1udiwKeHA7aWYoeHA9Yz1fLncoYixfLnJmLDUwMTQpKXt2YXIgb3Y9Yyxkcz17cmVzdWx0Ol8ucihvdiwyKX07YSYmKGRzLmo9b3YpO3hwPWRzfXZhciB0QT14cCx5bjtpZih5bj1jPV8udyhiLHFmLDEwMTgpKXt2YXIgcHY9e307YSYmKHB2Lmo9Yyk7eW49cHZ9dmFyIGNJPXluLHF2O2lmKHF2PWM9Xy53KGIsXy5wZiw1MDE4KSl7dmFyIHJ2PWMsb2ksdUE9e2Vycm9yOl8ucihydiwxKSxHeDoob2k9cnYuVGMoKSkmJl8uV2UoYSxvaSl9O2EmJih1QS5qPXJ2KTtxdj11QX12YXIgdkE9cXYsc3Y7aWYoc3Y9Yz1fLncoYixfLlhmLDEwMjApKXt2YXIgdHY9Yyx3QT17ZzE6Xy5yKHR2LDEpLGRvbWFpbjpfLnIodHYsMil9O2EmJih3QS5qPXR2KTtzdj13QX12YXIgZWRhPXN2LGRJO2lmKGRJPWM9Xy53KGIsXy5aZiwxMDIzKSl7dmFyIGVJPWMsRlQ9e2NyZWF0aW9uVGltZTpfLnIoZUksMSksRTc6Xy5yKGVJLDIpfTthJiYoRlQuaj1lSSk7ZEk9RlR9dmFyIGZkYT1kSSxmSTtpZihmST1jPV8udyhiLApfLllmLDUwMjMpKXt2YXIgR1Q9YyxIVD17cmVzdWx0Ol8ucihHVCwxKX07YSYmKEhULmo9R1QpO2ZJPUhUfXZhciBnZGE9ZkksZ0k7aWYoZ0k9Yz1fLncoYixoZiwxMDI0KSl7dmFyIElUPXt9O2EmJihJVC5qPWMpO2dJPUlUfXZhciBoZGE9Z0ksaEk7aWYoaEk9Yz1fLncoYixfLmdmLDUwMjQpKXt2YXIgaUk9YyxKVD17ZXJyb3I6Xy5yKGlJLDEpLHpKOl8ucihpSSwyKX07YSYmKEpULmo9aUkpO2hJPUpUfXZhciBpZGE9aEksakk7aWYoakk9Yz1fLncoYixfLmFnLDEwMjUpKXt2YXIgS1Q9YyxMVD17TjU6Xy5yKEtULDEpfTthJiYoTFQuaj1LVCk7akk9TFR9dmFyIGpkYT1qSSxrSTtpZihrST1jPV8udyhiLF8uJGYsNTAyNSkpe3ZhciBNVD1jLE5UPXtlcnJvcjpfLnIoTVQsMSl9O2EmJihOVC5qPU1UKTtrST1OVH12YXIga2RhPWtJLGxJO2lmKGxJPWM9Xy53KGIsXy5IZiwxMDI2KSl7dmFyIG1JPWMsT1Q9e0kzOl8uaGQobUksMSksdDQ6Xy5mZChfLmpkKG1JLEdmLDIpLFhhYSxhKX07CmEmJihPVC5qPW1JKTtsST1PVH12YXIgbGRhPWxJLG5JO2lmKG5JPWM9Xy53KGIsXy5GZiw1MDI2KSl7dmFyIFBUPWMsUVQ9e0xKOl8ucihQVCwxKX07YSYmKFFULmo9UFQpO25JPVFUfXZhciBtZGE9bkksb0k7aWYob0k9Yz1fLncoYixfLnZmLDUwMjcpKXt2YXIgdXY9YyxSVD17cmVzdWx0Ol8ucih1diwxKSxmdTpfLnIodXYsMiksZW1haWw6Xy5yKHV2LDMpLEdaOl8ucih1diw3KX07YSYmKFJULmo9dXYpO29JPVJUfXZhciBuZGE9b0kscEk7aWYocEk9Yz1fLncoYixfLnlmLDEwMjgpKXt2YXIgcUk9YyxTVD17cUs6Xy5yKHFJLDEpLExxOl8ucihxSSwyKX07YSYmKFNULmo9cUkpO3BJPVNUfXZhciBvZGE9cEksckk7aWYockk9Yz1fLncoYixfLnhmLDUwMzApKXt2YXIgdnY9YyxUVD17cko6Xy5yKHZ2LDMpLHI3Ol8ucih2diw0KSxyZXN1bHQ6Xy5yKHZ2LDEpLGZ1Ol8ucih2diwyKX07YSYmKFRULmo9dnYpO3JJPVRUfXZhciBwZGE9ckksc0k7aWYoc0k9Yz1fLncoYixfLktmLDEwMjcpKXt2YXIgVVQ9CmMsVlQ9e3FLOl8ucihVVCwxKX07YSYmKFZULmo9VVQpO3NJPVZUfXZhciBxZGE9c0ksdEk7aWYodEk9Yz1fLncoYixfLklmLDUwMjgpKXt2YXIgV1Q9YyxYVD17TEo6Xy5yKFdULDEpfTthJiYoWFQuaj1XVCk7dEk9WFR9dmFyIHJkYT10SSx1STtpZih1ST1jPV8udyhiLF8ud2YsNTAyOSkpe3ZhciB6bj1jLFlUPXtyZXN1bHQ6Xy5yKHpuLDEpLGZ1Ol8ucih6biwyKSxaRjpfLnIoem4sMyksc0I6Xy5yKHpuLDQpLHBob25lTnVtYmVyOl8ucih6biw1KSxrajpfLnIoem4sNiksdTQ6Xy5yKHpuLDcpfTthJiYoWVQuaj16bik7dUk9WVR9dmFyIHNkYT11SSx2STtpZih2ST1jPV8udyhiLF8uT2YsNTAxNikpe3ZhciBaVD1jLCRUPXtyZXN1bHQ6Xy5yKFpULDEpfTthJiYoJFQuaj1aVCk7dkk9JFR9dmFyIHRkYT12SSx3STtpZih3ST1jPV8udyhiLF8uUGYsMTAyOSkpe3ZhciB4ST1jLHd2LHVkYT1fLnIoeEksMSkseUk7aWYoeUk9d3Y9Xy53KHhJLF8uUWYsMikpe3ZhciBhVT17dW5pdHM6Xy5yKHd2LAoxKSxtaW46Xy5yKHd2LDIpLG1heDpfLnIod3YsMyl9O2EmJihhVS5qPXd2KTt5ST1hVX12YXIgYlU9e3VGOnVkYSx5Wjp5SX07YSYmKGJVLmo9eEkpO3dJPWJVfXZhciB2ZGE9d0ksekk7aWYoekk9Yz1fLncoYix1ZiwxMDMwKSl7dmFyIHhBPWMsY1U9e3I1Ol8ucih4QSwxKSx1NTpfLnIoeEEsMiksdFo6Xy5yKHhBLDMpfTthJiYoY1Uuaj14QSk7ekk9Y1V9dmFyIHdkYT16SSxBSTtpZihBST1jPV8udyhiLF8uRWYsMTAzMSkpe3ZhciBCST1jLGRVPXtlcnJvcjpfLnIoQkksMSkseko6Xy5yKEJJLDIpfTthJiYoZFUuaj1CSSk7QUk9ZFV9dmFyIHhkYT1BSSxDSTtpZihDST1jPV8udyhiLE5mLDEwMzIpKXt2YXIgZVU9YyxmVT17ZXJyb3I6Xy5yKGVVLDEpfTthJiYoZlUuaj1lVSk7Q0k9ZlV9dmFyIHlkYT1DSSxESTtpZihEST1jPV8udyhiLERmLDEwMzMpKXt2YXIgZ1U9YyxoVT17ZXJyb3I6Xy5yKGdVLDEpfTthJiYoaFUuaj1nVSk7REk9aFV9dmFyIGlVPXtjb250ZXh0OmQsc1g6ZSwKTHM6Zix4WDprLHN0YXR1czpuLFczOnAsVlY6QSxlcnJvckNvZGU6RCxxNjpGLEhZOkksZlo6SixpMDpNLEQzOlIsZGlzcGxheU5hbWU6UyxwajpqYSxTNDptYSxoNDpXdSxLXzplbixKQjpmbix4bDpocCxyNjpYdSxsNzpnbixZWjpScixsNDpPayxrNDpSayx2ODprcCxyODpubixlVzpTcixkVzpsZyxJNTpxcCxMMzpacixLMzpYSCxiNzpkdixhNzpZSCxzMDpaSCxyMDokSCxsVzpqQSxrVzpsQSxaXzphSSxZXzpiSSxSNTpjcyxRNTpxQSxUWDpzQSxSWDp0QSxvWDpjSSxsWDp2QSxKNTplZGEseDU6ZmRhLHc1OmdkYSxKVTpoZGEsSVU6aWRhLFA1OmpkYSxPNTprZGEsVDA6bGRhLFMwOm1kYSxVXzpuZGEsWF86b2RhLFdfOnBkYSxSMDpxZGEsUTA6cmRhLFZfOnNkYSxmMTp0ZGEsajE6dmRhLFVYOndkYSxQMDp4ZGEsVTA6eWRhLE8wOkRJfTthJiYoaVUuaj1iKTtyZXR1cm4gaVV9O18ucmcucHJvdG90eXBlLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMyl9OwpfLnlnPWZ1bmN0aW9uKGEpe3JldHVybiBfLnIoYSw5KX07Xy5yZy5wcm90b3R5cGUuZmI9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsNil9O18ucmcucHJvdG90eXBlLkRnPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDgpfTtfLnJnLnByb3RvdHlwZS5KYz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxNil9O18ucmcucHJvdG90eXBlLkhlPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLFRlLDIzKX07Xy5zZz1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEsXy5NZCwyNil9O18udGc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udyhhLFZmLDEwMDEpfTtfLnVnPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSxVZiw1MDAxKX07Xy52Zz1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEsamYsNTAwNCl9O18ud2c9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udyhhLEFmLDEwMDkpfTtfLnhnPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSx6Ziw1MDA5KX07CnZhciBoYmEsaWJhLGpiYTtfLnpnPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oXy56ZyxfLnEpO18uQWc9ZnVuY3Rpb24oYSxiKXtfLnQoYSwzLGIpfTtfLnpnLnByb3RvdHlwZS5pZz1mdW5jdGlvbihhKXtfLmtkKHRoaXMsNSxhKX07Xy5CZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJnZi5zaWNyIiwtMSxudWxsLG51bGwpfTtfLm0oXy5CZyxfLnEpO18uQmcuWGE9ImdmLnNpY3IiO18uZz1fLkJnLnByb3RvdHlwZTtfLmcucmQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uZy5mYj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywzKX07Xy5nLk5iPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLGtnLDEwKX07Xy5nLkdjPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLF8ucmcsNSl9O18uZy5aZD1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxfLkFlLDEyKX07Xy5nLmFoPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLF8uTWUsMTMpfTsKXy5nLmpsPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDE0KX07Xy5nLnVoPWZ1bmN0aW9uKGEpe18udCh0aGlzLDE0LGEpfTtfLmcuemo9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMTUpfTtfLmcuYW49ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMTYpfTtfLmcuWmo9ZnVuY3Rpb24oYSl7Xy50KHRoaXMsMTYsYSl9O18uZy5IZT1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxUZSwxNyl9O3ZhciBDZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKENnLF8ucSk7aGJhPWZ1bmN0aW9uKGEsYil7Xy50KGEsMSxiKX07aWJhPWZ1bmN0aW9uKGEsYil7Xy50KGEsMyxiKX07amJhPWZ1bmN0aW9uKGEsYil7Xy5rZChhLDUsYil9O18uRGc9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2Yuc2lzciIsLTEsbnVsbCxudWxsKX07Xy5tKF8uRGcsXy5xKTtfLkRnLlhhPSJnZi5zaXNyIjtfLmc9Xy5EZy5wcm90b3R5cGU7Cl8uZy5mYj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07Xy5nLnJkPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDIpfTtfLmcuTmI9ZnVuY3Rpb24oKXtyZXR1cm4gXy53KHRoaXMsa2csNCl9O18uZy5qbD1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw2KX07Xy5nLnVoPWZ1bmN0aW9uKGEpe18udCh0aGlzLDYsYSl9O18uZy5haD1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxfLk1lLDcpfTtfLmcuemo9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsOCl9O18uZy5hbj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw5KX07Xy5nLlpqPWZ1bmN0aW9uKGEpe18udCh0aGlzLDksYSl9O18uZy5IZT1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxUZSwxMCl9Owp2YXIga2JhO18uRWc9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLGtiYSxudWxsKX07Xy5tKF8uRWcsXy5xKTtrYmE9WzFdO18uRmc9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLkZnLF8ucSk7dmFyIGxiYT1mdW5jdGlvbihhLGIpe3ZhciBjPXtjNDpfLnIoYiw1KSxkaXNwbGF5TmFtZTpfLnIoYiwyKSxlbWFpbDpfLnIoYiwzKSxSNDpfLnIoYiw0KX07YSYmKGMuaj1iKTtyZXR1cm4gY307Xy5GZy5wcm90b3R5cGUuSmM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O18uRmcucHJvdG90eXBlLmdldEVtYWlsPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDMpfTsKdmFyIG1iYSxvYmE7Xy5HZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbWJhLG51bGwpfTtfLm0oXy5HZyxfLnEpO21iYT1bM107Xy5IZz1mdW5jdGlvbihhLGIpe18udChhLDEsYil9O18uSWc9ZnVuY3Rpb24oYSxiKXtfLnQoYSwyLGIpfTtfLkdnLnByb3RvdHlwZS56ZT1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxfLnRlLDQpfTtfLkpnPWZ1bmN0aW9uKGEsYil7Xy5rZChhLDQsYil9O18uR2cucHJvdG90eXBlLkNnPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDUpfTtfLktnPWZ1bmN0aW9uKGEsYil7Xy50KGEsNSxiKX07Xy5HZy5wcm90b3R5cGUuQ2I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsNil9O3ZhciBuYmE9ZnVuY3Rpb24oYSxiKXtfLnQoYSw2LGIpfTtfLkdnLnByb3RvdHlwZS5wYz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw3KX07b2JhPWZ1bmN0aW9uKGEsYil7Xy50KGEsNyxiKX07Xy5MZz1mdW5jdGlvbihhLGIpe18udChhLDgsYil9OwpfLk1nPWZ1bmN0aW9uKGEsYil7Xy50KGEsOSxiKX07Xy5OZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJnZi5hbHIiLC0xLHBiYSxudWxsKX07Xy5tKF8uTmcsXy5xKTt2YXIgcGJhPVszXTtfLk5nLlhhPSJnZi5hbHIiO18uZz1fLk5nLnByb3RvdHlwZTtfLmcuZmI9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMSl9O18uZy5EYj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywyKX07Xy5nLnpjPWZ1bmN0aW9uKCl7cmV0dXJuIF8uamQodGhpcyxfLnFlLDMpfTtfLmcuRmQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsNCl9O18uZy5CZT1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw2KX07Xy5nLkJmPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLF8uRGcsNyl9O18uZy5UYz1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxfLlZlLDgpfTtfLmcuTmI9ZnVuY3Rpb24oKXtyZXR1cm4gXy53KHRoaXMsa2csMTApfTsgXy5nLnJkPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEzKX07Xy5UZz1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uVGcsXy5xKTtfLlRnLnByb3RvdHlwZS5pZz1mdW5jdGlvbihhKXtfLmtkKHRoaXMsMixhKX07CnZhciBWZztfLlVnPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImdmLnBjaSIsNCxxYmEsbnVsbCl9O18ubShfLlVnLF8ucSk7dmFyIHFiYT1bMSwzXTtfLlVnLlhhPSJnZi5wY2kiO1ZnPXt9O18uV2c9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLldnLF8ucSk7dmFyIFhnPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD17dGV4dDooYz1iLiRiKCkpJiZfLlhlKGEsYyksUDY6Xy5pZChfLnIoYiwyKSksUTY6Xy5yKGIsMyl9O2EmJihkLmo9Yik7cmV0dXJuIGR9O18uV2cucHJvdG90eXBlLiRiPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLF8ueCwxKX07dmFyIFlnPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImdmLnBjaWJwYyIsLTEsbnVsbCxudWxsKX07Xy5tKFlnLF8ucSk7Cl8uWmc9bmV3IF8uYmQoMTYxMTMyMzMyLHtIVzowfSxZZyxmdW5jdGlvbihhLGIpe3ZhciBjLGQ9e3RpdGxlOihjPV8udyhiLF8uV2csMSkpJiZYZyhhLGMpLFgzOihjPV8udyhiLF8uV2csMikpJiZYZyhhLGMpLHAwOihjPV8udyhiLF8uV2csMykpJiZYZyhhLGMpLFRZOihjPV8udyhiLF8uV2csNCkpJiZYZyhhLGMpLGNaOihjPV8udyhiLF8uV2csNSkpJiZYZyhhLGMpLFpZOihjPV8udyhiLF8uV2csNikpJiZYZyhhLGMpLCRZOihjPV8udyhiLF8uV2csNykpJiZYZyhhLGMpLFZZOihjPV8udyhiLF8uV2csOCkpJiZYZyhhLGMpLGJaOihjPV8udyhiLF8uV2csOSkpJiZYZyhhLGMpLFhZOihjPV8udyhiLF8uV2csMTApKSYmWGcoYSxjKSxhWjooYz1fLncoYixfLldnLDExKSkmJlhnKGEsYyksV1k6KGM9Xy53KGIsXy5XZywxMikpJiZYZyhhLGMpLFlZOihjPV8udyhiLF8uV2csMTMpKSYmWGcoYSxjKSxIWDooYz1fLncoYixfLldnLDE0KSkmJlhnKGEsYyksYTU6KGM9Xy53KGIsXy5XZywKMjcpKSYmWGcoYSxjKSxQXzooYz1fLncoYixfLldnLDE1KSkmJlhnKGEsYyksbzE6KGM9Xy53KGIsXy5XZywxNikpJiZYZyhhLGMpLEExOihjPV8udyhiLF8uV2csMTcpKSYmWGcoYSxjKSxxMTooYz1fLncoYixfLldnLDE4KSkmJlhnKGEsYykscjE6KGM9Xy53KGIsXy5XZywxOSkpJiZYZyhhLGMpLHgxOihjPV8udyhiLF8uV2csMjApKSYmWGcoYSxjKSx5MTooYz1fLncoYixfLldnLDIxKSkmJlhnKGEsYyksdTE6KGM9Xy53KGIsXy5XZywyMikpJiZYZyhhLGMpLHYxOihjPV8udyhiLF8uV2csMjMpKSYmWGcoYSxjKSx3MTooYz1fLncoYixfLldnLDI0KSkmJlhnKGEsYykscDE6KGM9Xy53KGIsXy5XZywyNSkpJiZYZyhhLGMpLHQxOihjPV8udyhiLF8uV2csMjYpKSYmWGcoYSxjKX07YSYmKGQuaj1iKTtyZXR1cm4gZH0pO1ZnWzE2MTEzMjMzMl09Xy5aZztZZy5YYT0iZ2YucGNpYnBjIjtZZy5wcm90b3R5cGUuc2V0VGl0bGU9ZnVuY3Rpb24oYSl7Xy5rZCh0aGlzLDEsYSl9Owp2YXIgJGc9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2Yuc2lhcnBzciIsLTEsbnVsbCxudWxsKX0sZGg7Xy5tKCRnLF8ucSk7Xy5yYmE9bmV3IF8uYmQoMTUxNzgxNTkxLHtZVTowfSwkZyxmdW5jdGlvbihhLGIpe3ZhciBjPXtXTjpfLnIoYiwxKSxuRTpfLnIoYiwyKSxIRTpfLnIoYiwzKSx5eTpfLnIoYiw0KSx3ZDpfLnIoYiw1KX07YSYmKGMuaj1iKTtyZXR1cm4gY30pOyRnLlhhPSJnZi5zaWFycHNyIjskZy5wcm90b3R5cGUuRmQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsNCl9OyRnLnByb3RvdHlwZS5rYj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcyw1KX07dmFyIGFoPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImdmLnNpZ2VydnIiLC0xLG51bGwsbnVsbCl9O18ubShhaCxfLnEpO18uc2JhPW5ldyBfLmJkKDE1MzE4NTM4MSx7WlU6MH0sYWgsZnVuY3Rpb24oYSxiKXt2YXIgYz17VVA6Xy5yKGIsMSl9O2EmJihjLmo9Yik7cmV0dXJuIGN9KTthaC5YYT0iZ2Yuc2lnZXJ2ciI7CnZhciBiaD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJnZi5zaWFycG5zYiIsLTEsbnVsbCxudWxsKX07Xy5tKGJoLF8ucSk7ZGg9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPV8ucihiLDEpLGU7aWYoZT1jPV8uY2goYikpe2U9Xy5mZChfLmpkKGMsXy5XZywxKSxYZyxhKTt2YXIgZj1fLmlkKF8ucihjLDIpKTt2YXIgaz1fLmhkKGMsMyk7az0hay5sZW5ndGh8fF8uRGEoa1swXSk/azpfLmRiKGssXy5pZCk7ZT17SHA6ZSxlNjpmLEU0Omt9O2dkKGMsZSxWZyxfLlVnLnByb3RvdHlwZS5nZXRFeHRlbnNpb24sYSk7YSYmKGUuaj1jKX1jPXtuWjpkLFhuOmUsbTY6Xy5yKGIsMykscjQ6Xy5yKGIsNCl9O2EmJihjLmo9Yik7cmV0dXJuIGN9O18uZWg9bmV3IF8uYmQoMTM0NTgzNTcwLHtYVTowfSxiaCxkaCk7YmguWGE9ImdmLnNpYXJwbnNiIjtfLmNoPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSxfLlVnLDIpfTsKdmFyIGZoPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImdmLnNpZWFkciIsLTEsbnVsbCxudWxsKX0saGg7Xy5tKGZoLF8ucSk7Xy50YmE9bmV3IF8uYmQoMTAzMjI5OTA3LHtjVzowfSxmaCxmdW5jdGlvbihhLGIpe3ZhciBjPXtjNjpfLnIoYiw3KX07YSYmKGMuaj1iKTtyZXR1cm4gY30pO2ZoLlhhPSJnZi5zaWVhZHIiO18uZ2g9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2Yuc2lhZHNiIiwtMSxudWxsLG51bGwpfTtfLm0oXy5naCxfLnEpO2hoPWZ1bmN0aW9uKGEsYil7dmFyIGM9e0xaOl8ucihiLDEpLEc0Ol8ucihiLDIpfTthJiYoYy5qPWIpO3JldHVybiBjfTtfLmloPW5ldyBfLmJkKDExNjY3NzYzOSx7Ylc6MH0sXy5naCxoaCk7Xy5naC5YYT0iZ2Yuc2lhZHNiIjsKdmFyIG1oO18uamg9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2Yuc2llY3ByIiwtMSxudWxsLG51bGwpfTtfLm0oXy5qaCxfLnEpO18ua2g9ZnVuY3Rpb24oYSxiKXt2YXIgYz17bTQ6Xy5yKGIsNiksUFg6Xy5yKGIsNyksbTE6Xy5yKGIsNCksazE6Xy5yKGIsNSl9O2EmJihjLmo9Yik7cmV0dXJuIGN9O18udWJhPW5ldyBfLmJkKDg0MjgyNzY2LHtURTowfSxfLmpoLF8ua2gpO18uamguWGE9ImdmLnNpZWNwciI7Xy5saD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJnZi5zaWNwc2IiLC0xLG51bGwsbnVsbCl9O18ubShfLmxoLF8ucSk7bWg9ZnVuY3Rpb24oYSxiKXt2YXIgYz17cmVhc29uOl8ucihiLDEpfTthJiYoYy5qPWIpO3JldHVybiBjfTtfLm5oPW5ldyBfLmJkKDExMDgzOTM4Nyx7elg6MH0sXy5saCxtaCk7Xy5saC5YYT0iZ2Yuc2ljcHNiIjsKdmFyIG9oPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImdmLnNpYWhkbnNiIiwtMSxudWxsLG51bGwpfSxwaDtfLm0ob2gsXy5xKTtwaD1mdW5jdGlvbihhLGIpe3ZhciBjPXtVeDpfLnIoYiwxKSxqeDpfLnIoYiwyKSwkMDpfLnIoYiwzKSx6NDpfLnIoYiw0KX07YSYmKGMuaj1iKTtyZXR1cm4gY307Xy5xaD1uZXcgXy5iZCgxNjA4MjYxNTAse1BVOjB9LG9oLHBoKTtvaC5YYT0iZ2Yuc2lhaGRuc2IiO3ZhciBzaDtfLnJoPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImdmLnNpY25zYiIsLTEsbnVsbCxudWxsKX07Xy5tKF8ucmgsXy5xKTtzaD1mdW5jdGlvbihhLGIpe3ZhciBjPXt3ZDpfLnIoYiwxKSxsWTpfLnIoYiwyKX07YSYmKGMuaj1iKTtyZXR1cm4gY307Xy50aD1uZXcgXy5iZCg4OTY5OTA1NSx7Slo6MH0sXy5yaCxzaCk7Xy5yaC5YYT0iZ2Yuc2ljbnNiIjtfLnJoLnByb3RvdHlwZS5rYj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07CnZhciB2aDtfLnVoPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImdmLnNpZXNuc2IiLC0xLG51bGwsbnVsbCl9O18ubShfLnVoLF8ucSk7dmg9ZnVuY3Rpb24oYSxiKXt2YXIgYz17dUY6Xy5yKGIsMSksdW5pdHM6Xy5yKGIsMiksT0I6Xy5yKGIsMyl9O2EmJihjLmo9Yik7cmV0dXJuIGN9O18ud2g9bmV3IF8uYmQoMTQ2ODU3OTA1LHtWWjowfSxfLnVoLHZoKTtfLnVoLlhhPSJnZi5zaWVzbnNiIjt2YXIgeGg9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2Yuc2lnYXB0c2IiLC0xLG51bGwsbnVsbCl9LENoO18ubSh4aCxfLnEpO0NoPWZ1bmN0aW9uKGEsYil7dmFyIGM9e2FWOl8ucihiLDEpLHMzOl8ucihiLDIpLGRvbWFpbjpfLnIoYiwzKSxwNjpfLnYoYiw0LCEwKX07YSYmKGMuaj1iKTtyZXR1cm4gY307Xy5EaD1uZXcgXy5iZCg5MzY3MDgxMCx7eF86MH0seGgsQ2gpO3hoLlhhPSJnZi5zaWdhcHRzYiI7dmFyIEZoO18uRWg9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZ2Yuc2lrY25zYiIsLTEsbnVsbCxudWxsKX07Xy5tKF8uRWgsXy5xKTtGaD1mdW5jdGlvbihhLGIpe3ZhciBjPXt6eDpfLnIoYiwxKX07YSYmKGMuaj1iKTtyZXR1cm4gY307Xy5HaD1uZXcgXy5iZCgxNDU0NzgyMDcse0wwOjB9LF8uRWgsRmgpO18uRWguWGE9ImdmLnNpa2Nuc2IiO3ZhciBIaD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKEhoLF8ucSk7dmFyIEloPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSx2YmEsbnVsbCl9LHZiYSxKaCx3YmE7Xy5tKEloLF8ucSk7dmJhPVsxXTtfLktoPWZ1bmN0aW9uKGEpe3JldHVybiBfLmpkKGEsSmgsMSl9O0poPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oSmgsXy5xKTt3YmE9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXtlMTpfLnIoYiwzKSxwcm9maWxlOihjPV8uTGgoYikpJiZfLnJlKGEsYyl9O2EmJihkLmo9Yik7cmV0dXJuIGR9O18uTGg9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udyhhLF8ucWUsNSl9OwpfLnk9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLnksXy5xKTtfLk1oPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD17RjU6KGM9Xy53KGIsXy54LDEpKSYmXy5YZShhLGMpLHk1Ol8uaWQoXy5yKGIsMikpfTthJiYoZC5qPWIpO3JldHVybiBkfTt2YXIgTmg9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiYWYuYWRyIiwyLG51bGwsbnVsbCl9O18ubShOaCxfLnEpO05oLlhhPSJhZi5hZHIiO18uT2g9e307Xy5QaD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJnZi5jYmlyIiwtMSx4YmEsbnVsbCl9O18ubShfLlBoLF8ucSk7dmFyIHhiYT1bMV07Xy5PaFs4NDYyMDEwOV09bmV3IF8uYmQoODQ2MjAxMDkse2hZOjB9LF8uUGgsZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXtYRDpfLmZkKF8uamQoYixfLnksMSksXy5NaCxhKSxhQjpfLmlkKF8ucihiLDYpKSxpWDooYz1fLncoYixfLnksMykpJiZfLk1oKGEsYyksSE86KGM9Xy53KGIsXy55LDQpKSYmXy5NaChhLGMpLHdJOihjPV8udyhiLF8ueSw1KSkmJl8uTWgoYSxjKX07YSYmKGQuaj1iKTtyZXR1cm4gZH0pO18uUGguWGE9ImdmLmNiaXIiOwp2YXIgUWg9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9LHliYSx6YmE7Xy5tKFFoLF8ucSk7dmFyIFJoPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSx5YmEsbnVsbCl9O18ubShSaCxfLnEpO3liYT1bMTVdO18uU2g9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLlNoLF8ucSk7Xy5TaC5wcm90b3R5cGUua2I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMyl9O18uVGg9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucihhLDIpfTtfLlVoPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSxfLlNoLDI0KX07UmgucHJvdG90eXBlLnZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLF8uU2gsMjUpfTtfLlZoPWZ1bmN0aW9uKGEpe3JldHVybiBfLnIoYSwxMCl9O1JoLnByb3RvdHlwZS5aZD1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxfLkFlLDE3KX07CnZhciBXaD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJnZi5pc2lkIiwtMSx6YmEsbnVsbCl9O18ubShXaCxfLnEpO3piYT1bMSwyNywyOF07Xy5YaD1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKF8uWGgsXy5xKTtfLlhoLnByb3RvdHlwZS5WZj1mdW5jdGlvbigpe3JldHVybiBfLncodGhpcyxfLnFlLDEpfTsKXy5PaFs4MjUzNTc5NF09bmV3IF8uYmQoODI1MzU3OTQse3M6MH0sV2gsZnVuY3Rpb24oYSxiKXt2YXIgYyxkPV8uZmQoYi56YygpLF8ucmUsYSksZTtpZihlPWM9Xy5ZaChiKSl7dmFyIGY9YyxrPXtxaDpfLmZkKF8uS2goZiksd2JhLGEpfTthJiYoay5qPWYpO2U9a312YXIgbj1lLHA9Xy5yKGIsMzApLEE9Xy5yKGIsMiksRD0oYz1fLlpoKGIpKSYmXy5yZShhLGMpLEY9Xy5yKGIsMjUpLEk9KGM9Yi5OYigpKSYmcWcoYSxjKSxKPV8ucihiLDUpLE09KGM9Yi5PYSgpKSYmb2coYSxjKSxSO2lmKFI9Yz1fLncoYixfLk5nLDcpKXt2YXIgUz1jLGphLG1hPV8ucihTLDEpLEthPV8ucihTLDIpLHdhPV8uZmQoUy56YygpLF8ucmUsYSksSGI9Xy5yKFMsNCksQWM9Xy5yKFMsNiksdWQ7aWYodWQ9amE9Uy5CZigpKXt2YXIgUmI9amEsTWMsamI9Xy5yKFJiLDEpLEJiPV8ucihSYiwyKSxTZD0oTWM9UmIuTmIoKSkmJnFnKGEsTWMpLEpmPV8ucihSYiw2KSx0ZjtpZih0Zj1NYz1SYi5haCgpKXt2YXIgY2Y9Ck1jLE9nLGhpPV8ucihjZiwxKSxQZz1fLnIoY2YsMiksSms9Xy5yKGNmLDMpLFFnO2lmKFFnPU9nPWNmLlpkKCkpe3ZhciBhZD1PZyxOYyxDaj1fLnIoYWQsMSksS2s7aWYoS2s9TmM9Xy53KGFkLEJlLDIpKXt2YXIgTGs9TmMsWG09e2pOOl8ucihMaywxKSxFMDpfLnIoTGssMil9O2EmJihYbS5qPUxrKTtLaz1YbX12YXIgUXI9S2ssRGo7aWYoRGo9TmM9Xy53KGFkLERlLDMpKXt2YXIgeWg9TmMsTWs9e3Jlc3BvbnNlOl8ucih5aCwxKSxvcmlnaW46Xy5yKHloLDIpLGtvOl8ucih5aCwzKSxHMDpfLnIoeWgsNCksRjA6Xy5yKHloLDUpfTthJiYoTWsuaj15aCk7RGo9TWt9dmFyIGZwPURqLGlpO2lmKGlpPU5jPV8udyhhZCxfLkVlLDQpKXt2YXIgWW09TmMsTms9e2NvZGU6Xy5yKFltLDEpLHgwOl8ucihZbSwyKSxyZXNwb25zZTpfLnIoWW0sMyl9O2EmJihOay5qPVltKTtpaT1Oa312YXIgWm09aWksJG07aWYoJG09TmM9Xy53KGFkLEZlLDUpKXt2YXIgamk9TmMsYW49e3Jlc3BvbnNlOl8ucihqaSwKMSksY2xpZW50SWQ6Xy5yKGppLDIpLGlkZW50aWZpZXI6Xy5yKGppLDMpLG9yaWdpbjpfLnIoamksNCkscFY6Xy5yKGppLDUpLGs1Ol8ucihqaSw2KX07YSYmKGFuLmo9amkpOyRtPWFufXZhciBibj0kbSxjbjtpZihjbj1OYz1fLncoYWQsXy5HZSw2KSl7dmFyIExiPU5jLEVqPXthcHBOYW1lOl8ucihMYiwxKSxlWjpfLnIoTGIsMiksRDc6Xy5yKExiLDMpfTthJiYoRWouaj1MYik7Y249RWp9dmFyIGtpPWNuLGRuO2lmKGRuPU5jPV8udyhhZCxIZSw4KSl7dmFyIHpoPU5jLGdwPXthY2Nlc3NUb2tlbjpfLnIoemgsMSksaWRUb2tlbjpfLnIoemgsMiksYV86Xy5yKHpoLDMpLHNjb3BlOl8ucih6aCw0KSxjb2RlOl8ucih6aCw1KX07YSYmKGdwLmo9emgpO2RuPWdwfXZhciBXdT1kbixlbjtpZihlbj1OYz1fLncoYWQsSmUsOSkpe3ZhciBmbj1OYyxocD17YWN0aW9uOl8ucihmbiwxKSx0XzpfLmZkKF8uamQoZm4sSWUsMiksUWFhLGEpfTthJiYoaHAuaj1mbik7ZW49aHB9dmFyIFh1PWVuLApnbjtpZihnbj1OYz1fLncoYWQsQ2UsMTApKXt2YXIgUnI9TmMsam49e2pOOl8ucihSciwxKX07YSYmKGpuLmo9UnIpO2duPWpufXZhciBrbj1nbixGajtpZihGaj1OYz1fLncoYWQsS2UsMTEpKXt2YXIgT2s9TmMsUGs9eyRWOl8ucihPaywxKX07YSYmKFBrLmo9T2spO0ZqPVBrfXZhciBBaD1GaixRaztpZihRaz1OYz1fLncoYWQsTGUsMTIpKXt2YXIgaXA9TmMsUmssR2o7aWYoR2o9Ums9Xy53KGlwLHplLDEpKXt2YXIganA9e1VWOl8ucihSaywxKSxPWjpfLmlkKF8ucihSaywyKSl9O2EmJihqcC5qPVJrKTtHaj1qcH12YXIgbG49e2tZOkdqfTthJiYobG4uaj1pcCk7UWs9bG59dmFyIGtwPXt0eXBlOkNqLGk1OlFyLEM0OmZwLHAzOlptLEg2OmJuLHozOmtpLGY1Old1LHVfOlh1LHhZOmtuLGY2OkFoLGpZOlFrfTthJiYoa3Auaj1hZCk7UWc9a3B9dmFyIFNrPVFnLG1uPV8udihjZiw1LDApLFRrO2lmKFRrPU9nPV8udyhjZixOZSw2KSl7dmFyIG5uPU9nLG9uPXtGMzpfLnIobm4sMSksCnNLOl8ucihubiwyKX07YSYmKG9uLmo9bm4pO1RrPW9ufXZhciBtaT17dHlwZTpoaSwkbDpQZyxSNzpKayxSVjpTayxqNTptbixHMzpUa307YSYmKG1pLmo9Y2YpO3RmPW1pfXZhciBscD17c3RhdHVzOmpiLCRsOkJiLEl4OlNkLGRpOkpmLE94OnRmLGlOOl8ucihSYiw4KSx4STpfLnIoUmIsOSkseGw6KE1jPVJiLkhlKCkpJiZVZShhLE1jKX07YSYmKGxwLmo9UmIpO3VkPWxwfXZhciBTcj17c3RhdHVzOm1hLEE3OkthLE1nOndhLHl5OkhiLHZ0OkFjLHY2OnVkLEd4OihqYT1TLlRjKCkpJiZfLldlKGEsamEpLEl4OihqYT1TLk5iKCkpJiZxZyhhLGphKSxvMDpfLnIoUywxMSksSEk6Xy5yKFMsMTYpLGhYOl8ucihTLDEyKSwkbDpfLnIoUywxMyksc186Xy5yKFMsMTQpLGk2Ol8ucihTLDE1KSxqNjpfLnIoUywxNyl9O2EmJihTci5qPVMpO1I9U3J9dmFyIG1wPVIsUmU9Xy5yKGIsMTEpLHBuPV8ucihiLDEyKSxucD1fLnIoYiwxMykscW49Xy5yKGIsMTQpLFl1PV8ucihiLDM1KSxVaz0oYz0KXy53KGIsXy5yaCwxNikpJiZzaChhLGMpLEJoPShjPV8uJGgoYikpJiZDaChhLGMpLFRyPShjPV8udyhiLF8ubGgsMjMpKSYmbWgoYSxjKSxVcj0oYz1fLmFpKGIpKSYmZGgoYSxjKSxadT0oYz1fLncoYixfLkVoLDM2KSkmJkZoKGEsYyksVnI9KGM9Xy53KGIsXy51aCwzOCkpJiZ2aChhLGMpLHJuPShjPV8uYmkoYikpJiZwaChhLGMpLFdyPV8udihiLDE4LCIiKSwkdT1fLnYoYiw0MSwiIiksWHI9Xy52KGIsMzksIiIpLGF2PV8udihiLDE5LDApLG9wO2lmKG9wPWM9Xy5jaShiKSl7dmFyIExmPWMsUmc9e0E1Ol8ucihMZiwyKSx1WDpfLnIoTGYsMykscVg6Xy5yKExmLDQpLEN5Ol8ucihMZiw1KSxweDpfLnIoTGYsNikscXg6Xy5yKExmLDcpfTthJiYoUmcuaj1MZik7b3A9Umd9dmFyIGJ2PW9wLHNuO2lmKHNuPWM9Xy5kaShiKSl7dmFyIFZrPWMsSGoscHA9KEhqPVZrLlZmKCkpJiZfLnJlKGEsSGopLE1mPV8ucihWaywzKSxsZztpZihsZz1Iaj1fLncoVmssXy5FZywyKSl7dmFyIG5pPQpIaixTZz17ZTQ6Xy5mZChfLmpkKG5pLF8uRmcsMSksbGJhLGEpfTthJiYoU2cuaj1uaSk7bGc9U2d9dmFyIHRuPXtHWDpwcCxPYzpNZix2djpsZyxXNTpfLnIoVmssNCl9O2EmJih0bi5qPVZrKTtzbj10bn12YXIgcXA9e01nOmQsbTA6bixuMDpwLFk1OkEsWDU6RCxISTpGLEl4OkksVTU6SixTNTpNLFRVOm1wLEJnOlJlLE9pOnBuLHBob25lTnVtYmVyOm5wLHM0OnFuLEY3Oll1LElaOlVrLHdfOkJoLHlYOlRyLFdVOlVyLEswOlp1LFJaOlZyLE9VOnJuLEFjOldyLHQ3OiR1LEhfOlhyLGgxOmF2LFY0OmJ2LGQ0OnNuLE0wOihjPV8uZWkoYikpJiZfLm9lKGEsYyksZGk6Xy5yKGIsMjQpLGlOOl8ucihiLDMzKSx4STpfLnIoYiwzNCkseGw6KGM9Yi5IZSgpKSYmVWUoYSxjKSxhVzooYz1fLncoYixfLmdoLDI2KSkmJmhoKGEsYyksdlY6Xy5oZChiLDI3KSx4VjpfLmhkKGIsMjgpLHE0Ol8ucihiLDQzKX07YSYmKHFwLmo9Yik7cmV0dXJuIHFwfSk7V2guWGE9ImdmLmlzaWQiOwpXaC5wcm90b3R5cGUuemM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5qZCh0aGlzLF8ucWUsMSl9O18uWWg9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udyhhLEloLDMxKX07Xy5aaD1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEsXy5xZSwzKX07Xy5nPVdoLnByb3RvdHlwZTtfLmcuTmI9ZnVuY3Rpb24oKXtyZXR1cm4gXy53KHRoaXMsa2csMTUpfTtfLmcuT2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy53KHRoaXMsXy5yZyw2KX07Xy5nLkNiPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDExKX07Xy5nLnBjPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEyKX07Xy5nLmdldFBob25lTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEzKX07Xy5nLmhhc1Bob25lTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPV8ucih0aGlzLDEzKX07Xy4kaD1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEseGgsMTcpfTtfLmFpPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSxiaCwzMil9OwpfLmJpPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSxvaCw0Mil9O18uZmk9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udihhLDE4LCIiKX07V2gucHJvdG90eXBlLk5oPWZ1bmN0aW9uKCl7cmV0dXJuIF8udih0aGlzLDE5LDApfTtfLmNpPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSxIaCw0NCl9O18uZGk9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udyhhLF8uWGgsMjEpfTtfLmVpPWZ1bmN0aW9uKGEpe3JldHVybiBfLncoYSxfLmxlLDIyKX07Xy5nPVdoLnByb3RvdHlwZTtfLmcuamw9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMjQpfTtfLmcudWg9ZnVuY3Rpb24oYSl7Xy50KHRoaXMsMjQsYSl9O18uZy56aj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywzMyl9O18uZy5hbj1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywzNCl9O18uZy5aaj1mdW5jdGlvbihhKXtfLnQodGhpcywzNCxhKX07Xy5nLkhlPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLFRlLDM3KX07CnZhciBnaT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLCJnZi5pc29kIiwtMSxBYmEsbnVsbCl9O18ubShnaSxfLnEpO3ZhciBBYmE9WzJdO18uT2hbMTMxMTA5NTg0XT1uZXcgXy5iZCgxMzExMDk1ODQse3c2OjB9LGdpLGZ1bmN0aW9uKGEsYil7dmFyIGM9e0haOl8ucihiLDEpLFYzOl8uaGQoYiwyKSxwWTpfLnIoYiwzKSxxODpfLnIoYiw0KSxzSzpfLnIoYiw1KX07YSYmKGMuaj1iKTtyZXR1cm4gY30pO2dpLlhhPSJnZi5pc29kIjtnaS5wcm90b3R5cGUuVGk9ZnVuY3Rpb24oYSl7Xy50KHRoaXMsNCxhKX07dmFyIGxpPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0obGksXy5xKTtsaS5wcm90b3R5cGUuQ2I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O2xpLnByb3RvdHlwZS5wYz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywzKX07bGkucHJvdG90eXBlLkRkPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEwKX07Cl8ucGk9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLEJiYSxudWxsKX07Xy5tKF8ucGksXy5xKTt2YXIgQmJhPVs0LDldO18ucGkucHJvdG90eXBlLmdldEJ1aWxkVmVyc2lvblNkaz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywyKX07Xy5waS5wcm90b3R5cGUuZ2V0UGxheVNlcnZpY2VzVmVyc2lvbkNvZGU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMyl9O18ucGkucHJvdG90eXBlLmhhc1RlbGVwaG9ueT1mdW5jdGlvbigpe3JldHVybiBudWxsIT1fLnIodGhpcyw1KX07Xy5waS5wcm90b3R5cGUuUHk9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMTQpfTt2YXIgcWk9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShxaSxfLnEpO3FpLnByb3RvdHlwZS5nZXREcm9pZEd1YXJkUmVzdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEpfTsKdmFyIHJpPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImdmLnJyZXJyIiwtMSxudWxsLG51bGwpfTtfLm0ocmksXy5xKTtyaS5YYT0iZ2YucnJlcnIiO3ZhciBzaT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsQ2JhLG51bGwpfTtfLm0oc2ksXy5xKTt2YXIgQ2JhPVs0XSx0aT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKHRpLF8ucSk7dmFyIHVpPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxEYmEsbnVsbCl9O18ubSh1aSxfLnEpO3ZhciBEYmE9WzNdO3ZhciB2aT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKHZpLF8ucSk7dmkucHJvdG90eXBlLkVnPWZ1bmN0aW9uKCl7cmV0dXJuIF8udyh0aGlzLHVpLDMpfTt2YXIgd2k9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYj1hO3RoaXMuVms9Ynx8bnVsbDt0aGlzLmE9Y3x8W119O3dpLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ9O3JkLmE9e307cmQuYS5Zcj0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7cmQuYS5Rcj1yZC5hLllyKyIwMTIzNDU2Nzg5IjtyZC5hLlpyPXJkLmEuWXIubGVuZ3RoO3JkLmEuV3I9cmQuYS5Rci5sZW5ndGg7cmQuYS5Xdz0tMjE0NzQ4MzY0ODtyZC5hLlVPPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGgtMTswPD1jO2MtLSliPWIqKDA9PWM/cmQuYS5acjpyZC5hLldyKStyZC5hLlFyLmluZGV4T2YoYS5jaGFyQXQoYykpO3JldHVybiBiK3JkLmEuV3d9O3JkLmEudG9TdHJpbmc9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz0wO2EtPXJkLmEuV3c7YltjKytdPXJkLmEuWXIuY2hhckF0KGElcmQuYS5acik7Zm9yKGE9TWF0aC5mbG9vcihhL3JkLmEuWnIpOzA8YTspYltjKytdPXJkLmEuUXIuY2hhckF0KGElcmQuYS5XciksYT1NYXRoLmZsb29yKGEvcmQuYS5Xcik7cmV0dXJuIGIuam9pbigiIil9OwpyZC5iPXt9O3JkLmIuUXc9MjY1NDQzNTc2OTtyZC5iLm5EPTMxNDE1OTI2NTsKcmQuYi5WNj1mdW5jdGlvbihhKXthPXJkLmIuek8oYSk7Zm9yKHZhciBiPXJkLmIuUXcsYz1yZC5iLlF3LGQ9cmQuYi5uRCxlPWEubGVuZ3RoLGY9ZSxrPTAsbj1mdW5jdGlvbigpe2ItPWM7Yi09ZDtiXj1kPj4+MTM7Yy09ZDtjLT1iO2NePWI8PDg7ZC09YjtkLT1jO2RePWM+Pj4xMztiLT1jO2ItPWQ7Yl49ZD4+PjEyO2MtPWQ7Yy09YjtjXj1iPDwxNjtkLT1iO2QtPWM7ZF49Yz4+PjU7Yi09YztiLT1kO2JePWQ+Pj4zO2MtPWQ7Yy09YjtjXj1iPDwxMDtkLT1iO2QtPWM7ZF49Yz4+PjE1fTsxMjw9ZjtmLT0xMixrKz0xMiliKz1yZC5iLkF0KGEsayksYys9cmQuYi5BdChhLGsrNCksZCs9cmQuYi5BdChhLGsrOCksbigpO2QrPWU7c3dpdGNoKGYpe2Nhc2UgMTE6ZCs9YVtrKzEwXTw8MjQ7Y2FzZSAxMDpkKz1hW2srOV08PDE2O2Nhc2UgOTpkKz1hW2srOF08PDg7Y2FzZSA4OmMrPWFbays3XTw8MjQ7Y2FzZSA3OmMrPWFbays2XTw8MTY7Y2FzZSA2OmMrPWFbays1XTw8ODtjYXNlIDU6Yys9CmFbays0XTtjYXNlIDQ6Yis9YVtrKzNdPDwyNDtjYXNlIDM6Yis9YVtrKzJdPDwxNjtjYXNlIDI6Yis9YVtrKzFdPDw4O2Nhc2UgMTpiKz1hW2srMF19bigpO3JldHVybiByZC5hLnRvU3RyaW5nKGQpfTtyZC5iLlc2PWZ1bmN0aW9uKCl7fTtyZC5iLnpPPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspYi5wdXNoKGEuY2hhckNvZGVBdChjKSk7cmV0dXJuIGJ9O3JkLmIuQXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVtiKzBdKyhhW2IrMV08PDgpKyhhW2IrMl08PDE2KSsoYVtiKzNdPDwyNCl9Owp2YXIgeGkseWksemksRWJhLENpLERpLEZiYSxFaSxGaSxHaSxJaSxKaSxLaSxMaTt4aT1uZXcgd2koImZKdXhPYyIpO3lpPW5ldyB3aSgiWnRWckgiKTt6aT1uZXcgd2koInpaYTR4YyIpO18uQWk9bmV3IHdpKCJwVmJ4QmMiKTtfLkJpPW5ldyB3aSgibjczcXdmIik7RWJhPW5ldyB3aSgia2xweVllIik7Q2k9bmV3IHdpKCJwZzloRmQiKTtEaT1uZXcgd2koImJ5ZlRPYiIpO0ZiYT1uZXcgd2koImpiRGdHIik7RWk9bmV3IHdpKCJMRWlrWmUiKTtGaT1uZXcgd2koInJKbUpyYyIpO18uej1uZXcgd2koIk1wSndaYyIpO0dpPW5ldyB3aSgiVVVKcVZlIik7Xy5IaT1uZXcgd2koIk5HbnR3ZiIpO0lpPW5ldyB3aSgiWHB3MW9mIik7Smk9bmV3IHdpKCJ2NUJRbGUiKTtLaT1uZXcgd2koIm9mdWFwYyIpO0xpPW5ldyB3aSgibHNqVm1jIik7Cl8uTWk9bmV3IHdpKCJneWNoZyIsdm9pZCAwLFtFaV0pO18uTmk9bmV3IHdpKCJ4VWRpcGYiKTt2YXIgT2k9bmV3IHdpKCJVbG1tcmQiLHZvaWQgMCxbXy5NaV0pO3ZhciBQaT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsMSxudWxsLG51bGwpfTtfLm0oUGksXy5xKTt2YXIgUWk9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwiZXIiLC0xLG51bGwsbnVsbCl9LFJpO18ubShRaSxfLnEpO1FpLlhhPSJlciI7UWkucHJvdG90eXBlLkRnPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDkpfTtRaS5wcm90b3R5cGUuQmU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMil9O1FpLnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDQpfTtSaT1mdW5jdGlvbihhKXtyZXR1cm4gXy53KGEsUGksMTApfTtfLlNpPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImYubXQiLC0xLG51bGwsbnVsbCl9O18ubShfLlNpLF8ucSk7Xy5TaS5YYT0iZi5tdCI7dmFyIFRpPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oVGksXy5xKTt2YXIgVWk9bmV3IF8uYmQoNDgxODUwMTUse0puOjB9LFRpLGZ1bmN0aW9uKGEsYil7dmFyIGM9e3ZhbHVlOl8ucihiLDEpfTthJiYoYy5qPWIpO3JldHVybiBjfSk7IFRpLnByb3RvdHlwZS5vYT1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07VGkucHJvdG90eXBlLm1iPWZ1bmN0aW9uKGEpe18udCh0aGlzLDEsYSl9Owp2YXIgVmk9ZnVuY3Rpb24oYSxiLGMpe18uWGEuY2FsbCh0aGlzLGEpO3RoaXMuYj0hMTt0aGlzLmE9Y307Xy5tKFZpLF8uWGEpO1ZpLnByb3RvdHlwZS5uYW1lPSJEYXRhQXBwRXJyb3IiO3ZhciBXaT1mdW5jdGlvbihhLGIpe3ZhciBjPWIuQmMuYTtiPWEuQmUoKTt2YXIgZDthOntjPURkW2NdO2lmKFJpKGEpKXt2YXIgZT1SaShhKS5nZXRFeHRlbnNpb24oRmFhKTtlJiYoZD1fLncoZSxDZCwyKSk7ZD1kfHxSaShhKTtpZihjJiYoZD1kLmdldEV4dGVuc2lvbihjKSkpYnJlYWsgYX1kPW51bGx9cmV0dXJuIG5ldyBWaShiLGQsYSl9Owp2YXIgWGk9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLmJkP3tCYzphfTphfTt2YXIgR2JhPXt9LFlpPWZ1bmN0aW9uKGEpe2lmKCFhfHwhYS5wYilyZXR1cm4gYTt2YXIgYj1HYmFbYS5wYl07aWYoIWIpcmV0dXJuIGE7Yi5RViYmKGE9Xy5vZChhKSxiLmtYKGEpKTtyZXR1cm4gYX07dmFyIFppPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmY9YTt0aGlzLmE9Yjt0aGlzLmI9Y3x8e319O1ppLnByb3RvdHlwZS5RZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZ9O3ZhciAkaT1mdW5jdGlvbihhLGIsYyl7YT1uZXcgWmkoYS5mLGEuYSxhLmIpO2EuYltiLmFdPWM7cmV0dXJuIGF9O3ZhciBhaj1mdW5jdGlvbihhKXt0aGlzLmE9YX07YWoucHJvdG90eXBlLlFlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07dmFyIGJqPWZ1bmN0aW9uKGEsYil7dGhpcy5mPWE7dGhpcy5hPWI7dGhpcy5iPSgwLHdpbmRvdy5wYXJzZUludCkoYSwxMCl8fG51bGx9O2JqLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZ9O2JqLnByb3RvdHlwZS5TYj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFppKHRoaXMsYSl9O2JqLnByb3RvdHlwZS5FZz1mdW5jdGlvbigpe3JldHVybiBuZXcgYWoodGhpcyl9O3ZhciBkaj1mdW5jdGlvbihhKXtyZXR1cm4obmV3IGNqKS5RYyhhKX0sY2o9ZnVuY3Rpb24oKXt9O2NqLnByb3RvdHlwZS5RYz1mdW5jdGlvbihhKXt2YXIgYj1bXTtlaih0aGlzLGEsYik7cmV0dXJuIGIuam9pbigiIil9Owp2YXIgZWo9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGw9PWIpYy5wdXNoKCJudWxsIik7ZWxzZXtpZigib2JqZWN0Ij09dHlwZW9mIGIpe2lmKF8uTWEoYikpe3ZhciBkPWI7Yj1kLmxlbmd0aDtjLnB1c2goIlsiKTtmb3IodmFyIGU9IiIsZj0wO2Y8YjtmKyspYy5wdXNoKGUpLGVqKGEsZFtmXSxjKSxlPSIsIjtjLnB1c2goIl0iKTtyZXR1cm59aWYoYiBpbnN0YW5jZW9mIFN0cmluZ3x8YiBpbnN0YW5jZW9mIE51bWJlcnx8YiBpbnN0YW5jZW9mIEJvb2xlYW4pYj1iLnZhbHVlT2YoKTtlbHNle2MucHVzaCgieyIpO2U9IiI7Zm9yKGQgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixkKSYmKGY9YltkXSwiZnVuY3Rpb24iIT10eXBlb2YgZiYmKGMucHVzaChlKSxmaihkLGMpLGMucHVzaCgiOiIpLGVqKGEsZixjKSxlPSIsIikpO2MucHVzaCgifSIpO3JldHVybn19c3dpdGNoKHR5cGVvZiBiKXtjYXNlICJzdHJpbmciOmZqKGIsYyk7YnJlYWs7Y2FzZSAibnVtYmVyIjpjLnB1c2goKDAsd2luZG93LmlzRmluaXRlKShiKSYmCiEoMCx3aW5kb3cuaXNOYU4pKGIpP1N0cmluZyhiKToibnVsbCIpO2JyZWFrO2Nhc2UgImJvb2xlYW4iOmMucHVzaChTdHJpbmcoYikpO2JyZWFrO2Nhc2UgImZ1bmN0aW9uIjpjLnB1c2goIm51bGwiKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJtYCIrdHlwZW9mIGIpO319fSxnaj17JyInOidcXCInLCJcXCI6IlxcXFwiLCIvIjoiXFwvIiwiXGIiOiJcXGIiLCJcZiI6IlxcZiIsIlxuIjoiXFxuIiwiXHIiOiJcXHIiLCJcdCI6IlxcdCIsIlx4MEIiOiJcXHUwMDBiIn0sSGJhPS9cdWZmZmYvLnRlc3QoIlx1ZmZmZiIpPy9bXFwiXHgwMC1ceDFmXHg3Zi1cdWZmZmZdL2c6L1tcXCJceDAwLVx4MWZceDdmLVx4ZmZdL2csZmo9ZnVuY3Rpb24oYSxiKXtiLnB1c2goJyInLGEucmVwbGFjZShIYmEsZnVuY3Rpb24oYSl7dmFyIGI9Z2pbYV07Ynx8KGI9IlxcdSIrKGEuY2hhckNvZGVBdCgwKXw2NTUzNikudG9TdHJpbmcoMTYpLnN1YnN0cigxKSxnalthXT1iKTtyZXR1cm4gYn0pLCciJyl9Owp2YXIgaWo9ZnVuY3Rpb24oYSl7dmFyIGI9WWkoYS5hKTtyZXR1cm4gaGooYS5RZSgpLGIpfSxoaj1mdW5jdGlvbihhLGIpe2I9WWkoYik7dmFyIGM9W107amooe2lkOmEudG9TdHJpbmcoKSxyZXF1ZXN0OmI/Yi5TYygpOltdfSxjKTtyZXR1cm4gYy5qb2luKCIiKX0samo9ZnVuY3Rpb24oYSxiKXtpZihfLk1hKGEpKXtiLnB1c2goInsiKTtmb3IodmFyIGM9ITAsZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdO251bGwhPWUmJihjfHxiLnB1c2goIiwiKSxiLnB1c2goZCsiOiIpLGpqKGUsYiksYz0hMSl9Yi5wdXNoKCJ9Iil9ZWxzZSBpZihfLlBhKGEpKXthOnN3aXRjaChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkpe2Nhc2UgIltvYmplY3QgSW50OEFycmF5XSI6Y2FzZSAiW29iamVjdCBVaW50OEFycmF5XSI6Y2FzZSAiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UgIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UgIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlICJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlICJbb2JqZWN0IFVpbnQzMkFycmF5XSI6Y2FzZSAiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlICJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmM9CiEwO2JyZWFrIGE7ZGVmYXVsdDpjPSExfWlmKGMpaWYoMD09YS5sZW5ndGgpYi5wdXNoKCJ7fSIpO2Vsc2V7Yi5wdXNoKCJ7Iik7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyliLnB1c2goU3RyaW5nKGMpLCI6IixTdHJpbmcoYVtjXSksIiwiKTtiW2IubGVuZ3RoLTFdPSJ9In1lbHNlIEliYShhLGIpfWVsc2UgYi5wdXNoKGRqKGEpKX0sSWJhPWZ1bmN0aW9uKGEsYil7aWYoT2JqZWN0LmtleXMpdmFyIGM9T2JqZWN0LmtleXMoYSk7ZWxzZXtjPVtdO2Zvcih2YXIgZCBpbiBhKWMucHVzaChkKX1jLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gd2IoXy5GYihhKT8oMCx3aW5kb3cucGFyc2VJbnQpKGEsMTApOmEsXy5GYihiKT8oMCx3aW5kb3cucGFyc2VJbnQpKGIsMTApOmIpfSk7Yi5wdXNoKCJ7Iik7ZD0hMDtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9YVtjW2VdXTtudWxsIT1mJiYoZHx8Yi5wdXNoKCIsIiksYi5wdXNoKGNbZV0rIjoiKSxqaihmLGIpLGQ9ITEpfWIucHVzaCgifSIpfTsKdmFyIGtqPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsImFmLm1kciIsMSxudWxsLG51bGwpfTtfLm0oa2osXy5xKTtrai5YYT0iYWYubWRyIjtfLmxqPXt9O3ZhciBtaj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKG1qLF8ucSk7dmFyIG5qPW5ldyBfLmJkKDkwODQ4ODc1LHtKbjowfSxtaixmdW5jdGlvbihhLGIpe3ZhciBjPXtVZjpfLnIoYiwxKX07YSYmKGMuaj1iKTtyZXR1cm4gY30pO3ZhciBvaj1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKG9qLF8ucSk7dmFyIHBqPW5ldyBfLmJkKDE1NDg1Mjg1NCx7Sm46MH0sb2osZnVuY3Rpb24oYSxiKXt2YXIgYz17UWk6Xy5yKGIsMSl9O2EmJihjLmo9Yik7cmV0dXJuIGN9KTt2YXIgcWo9ZnVuY3Rpb24oYSl7cmV0dXJuIShfLlBhKGEpJiYoIV8uQ2EoYS5CZCl8fGEuQmQgaW5zdGFuY2VvZiBfLmJkKSYmYS5CYyBpbnN0YW5jZW9mIF8uYmQpfHxfLkNhKGEucmVxdWVzdCkmJiEoYS5yZXF1ZXN0IGluc3RhbmNlb2YgXy5xKXx8Xy5DYShhLlVmKSYmImJvb2xlYW4iIT10eXBlb2YgYS5VZnx8Xy5DYShhLlFpKSYmKCFfLkVhKGEuUWkpfHwwPmEuUWkpPyExOiEwfSxzaj1mdW5jdGlvbihhKXtpZihhLlFlKXJldHVybiBhO3ZhciBiPXJqKGEpO2I9YS5yZXF1ZXN0P2IuU2IoYS5yZXF1ZXN0KTpiLlNiKGEuU2gpO2lmKGEuVWYpe3ZhciBjPW5ldyBtajtfLnQoYywxLCEwKTtiPSRpKGIsbmosYyl9YS5RaSYmKGM9bmV3IG9qLF8udChjLDEsYS5RaSksYj0kaShiLHBqLGMpKTtyZXR1cm4gYn0scmo9ZnVuY3Rpb24oYSl7aWYoYS5RZSlyZXR1cm4gYS5RZSgpO3ZhciBiPS0xO2EgaW5zdGFuY2VvZiBfLmJkP2I9YS5hOmEuQmQ/Yj1hLkJkLmE6YS5GZj9iPWEuRmYuYToKYS5CYyYmKGI9YS5CYy5hKTthPV8uT2hbYl18fF8ubGpbYl07dmFyIGM9Xy5IYTthJiYoYz1hLlFiKTtyZXR1cm4gbmV3IGJqKGIrIiIsYyl9LEpiYT1mdW5jdGlvbihhLGIpe2E9KDAsd2luZG93LnBhcnNlSW50KShhLDEwKTtyZXR1cm57QmM6Xy5PaFthXSxCZDpfLnpkW2FdLHJlcXVlc3Q6Yn19LEtiYT1mdW5jdGlvbihhKXt2YXIgYj1hLlFlKCkuYjtpZihudWxsPT1ifHwwPmIpcmV0dXJuIG51bGw7dmFyIGM9Xy5PaFtiXTtpZihjKXt2YXIgZD1hLmJbbmouYV0sZT1hLmJbcGouYV07YT17QmM6YyxCZDpfLnpkW2JdLHJlcXVlc3Q6YS5hLFVmOmQmJl8ucihkLDEpfTtlJiZfLnIoZSwxKSYmKGEuUWk9Xy5yKGUsMSkpO3JldHVybiBhfXJldHVybihlPV8uSWRbYl0pP2E9e0JjOl8ubGpbYl0sRmY6ZSxTaDphLmF9Om51bGx9Owp2YXIgdGo9ZnVuY3Rpb24oYSl7YT1zaihYaShhKSk7cmV0dXJuIGlqKGEpfSx1aj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uYmQ/YS5hOmEuQmQ/YS5CZC5hOmEuRmY/YS5GZi5hOmEuQmM/YS5CYy5hOjB9O3ZhciB2aj1mdW5jdGlvbihhKXthLnByb3RvdHlwZS50aGVuPWEucHJvdG90eXBlLnRoZW47YS5wcm90b3R5cGUuJGdvb2dfVGhlbmFibGU9ITB9LHdqPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiExO3RyeXtyZXR1cm4hIWEuJGdvb2dfVGhlbmFibGV9Y2F0Y2goYil7cmV0dXJuITF9fTt2YXIgeGo9ZnVuY3Rpb24oYSxiKXt0aGlzLmY9YTt0aGlzLm89Yjt0aGlzLmI9MDt0aGlzLmE9bnVsbH07eGoucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2lmKDA8dGhpcy5iKXt0aGlzLmItLTt2YXIgYT10aGlzLmE7dGhpcy5hPWEubmV4dDthLm5leHQ9bnVsbH1lbHNlIGE9dGhpcy5mKCk7cmV0dXJuIGF9O3hqLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24oYSl7dGhpcy5vKGEpOzEwMD50aGlzLmImJih0aGlzLmIrKyxhLm5leHQ9dGhpcy5hLHRoaXMuYT1hKX07CnZhciB5aj1mdW5jdGlvbigpe3RoaXMuYj10aGlzLmE9bnVsbH0sQWo9bmV3IHhqKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB6an0sZnVuY3Rpb24oYSl7YS5yZXNldCgpfSk7eWoucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIpe3ZhciBjPUFqLmdldCgpO2Muc2V0KGEsYik7dGhpcy5iP3RoaXMuYi5uZXh0PWM6dGhpcy5hPWM7dGhpcy5iPWN9O3lqLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt2YXIgYT1udWxsO3RoaXMuYSYmKGE9dGhpcy5hLHRoaXMuYT10aGlzLmEubmV4dCx0aGlzLmF8fCh0aGlzLmI9bnVsbCksYS5uZXh0PW51bGwpO3JldHVybiBhfTt2YXIgemo9ZnVuY3Rpb24oKXt0aGlzLm5leHQ9dGhpcy5zY29wZT10aGlzLlFkPW51bGx9O3pqLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLlFkPWE7dGhpcy5zY29wZT1iO3RoaXMubmV4dD1udWxsfTsgemoucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5uZXh0PXRoaXMuc2NvcGU9dGhpcy5RZD1udWxsfTsKdmFyIEJqPVtdLElqPVtdLEpqPSExLEtqPWZ1bmN0aW9uKGEpe0JqW0JqLmxlbmd0aF09YTtpZihKailmb3IodmFyIGI9MDtiPElqLmxlbmd0aDtiKyspYSgoMCxfLmwpKElqW2JdLk13LElqW2JdKSl9LExqPWZ1bmN0aW9uKGEpe0pqPSEwO2Zvcih2YXIgYj0oMCxfLmwpKGEuTXcsYSksYz0wO2M8QmoubGVuZ3RoO2MrKylCaltjXShiKTtJai5wdXNoKGEpfTt2YXIgUWosTGJhLE1iYSxTaixOYmEsVGo7Xy5Naj1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYX19O18uTmo9Xy5NaighMSk7Xy5Paj1fLk1qKCEwKTtfLlBqPV8uTWoobnVsbCk7UWo9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O0xiYT1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihhKTt9fTtNYmE9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgYTt9fTtfLlJqPWZ1bmN0aW9uKGEpe3ZhciBiPWJ8fDA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCxiKSl9fTtTaj1mdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGEsZT0wO2U8YztlKyspYT1iW2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYX19OwpOYmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbigpe307Yy5wcm90b3R5cGU9YS5wcm90b3R5cGU7Yz1uZXcgYzthLmFwcGx5KGMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtyZXR1cm4gY307VGo9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wO3JldHVybiBmdW5jdGlvbihkKXtfLmguY2xlYXJUaW1lb3V0KGMpO3ZhciBlPWFyZ3VtZW50cztjPV8uaC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5hcHBseShiLGUpfSwwKX19Owp2YXIgVWo9ZnVuY3Rpb24oYSl7Xy5oLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBhO30sMCl9LFhqPWZ1bmN0aW9uKGEpe2E9VmooYSk7IV8uT2EoXy5oLnNldEltbWVkaWF0ZSl8fF8uaC5XaW5kb3cmJl8uaC5XaW5kb3cucHJvdG90eXBlJiYhXy5aYigiRWRnZSIpJiZfLmguV2luZG93LnByb3RvdHlwZS5zZXRJbW1lZGlhdGU9PV8uaC5zZXRJbW1lZGlhdGU/KFdqfHwoV2o9T2JhKCkpLFdqKGEpKTpfLmguc2V0SW1tZWRpYXRlKGEpfSxXaixPYmE9ZnVuY3Rpb24oKXt2YXIgYT1fLmguTWVzc2FnZUNoYW5uZWw7InVuZGVmaW5lZCI9PT10eXBlb2YgYSYmInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucG9zdE1lc3NhZ2UmJndpbmRvdy5hZGRFdmVudExpc3RlbmVyJiYhXy5aYigiUHJlc3RvIikmJihhPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklGUkFNRSIpO2Euc3R5bGUuZGlzcGxheT0ibm9uZSI7YS5zcmM9IiI7CndpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYSk7dmFyIGI9YS5jb250ZW50V2luZG93O2E9Yi5kb2N1bWVudDthLm9wZW4oKTthLndyaXRlKCIiKTthLmNsb3NlKCk7dmFyIGM9ImNhbGxJbW1lZGlhdGUiK01hdGgucmFuZG9tKCksZD0iZmlsZToiPT1iLmxvY2F0aW9uLnByb3RvY29sPyIqIjpiLmxvY2F0aW9uLnByb3RvY29sKyIvLyIrYi5sb2NhdGlvbi5ob3N0O2E9KDAsXy5sKShmdW5jdGlvbihhKXtpZigoIioiPT1kfHxhLm9yaWdpbj09ZCkmJmEuZGF0YT09Yyl0aGlzLnBvcnQxLm9ubWVzc2FnZSgpfSx0aGlzKTtiLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGEsITEpO3RoaXMucG9ydDE9e307dGhpcy5wb3J0Mj17cG9zdE1lc3NhZ2U6ZnVuY3Rpb24oKXtiLnBvc3RNZXNzYWdlKGMsZCl9fX0pO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGEmJiFfLlpiKCJUcmlkZW50IikmJiFfLlpiKCJNU0lFIikpe3ZhciBiPW5ldyBhLGM9e30sZD1jOwpiLnBvcnQxLm9ubWVzc2FnZT1mdW5jdGlvbigpe2lmKF8uQ2EoYy5uZXh0KSl7Yz1jLm5leHQ7dmFyIGE9Yy5CcDtjLkJwPW51bGw7YSgpfX07cmV0dXJuIGZ1bmN0aW9uKGEpe2QubmV4dD17QnA6YX07ZD1kLm5leHQ7Yi5wb3J0Mi5wb3N0TWVzc2FnZSgwKX19cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LmRvY3VtZW50JiYib25yZWFkeXN0YXRlY2hhbmdlImluIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJTQ1JJUFQiKT9mdW5jdGlvbihhKXt2YXIgYj13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiU0NSSVBUIik7Yi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtiLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKTtiPW51bGw7YSgpO2E9bnVsbH07d2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChiKX06ZnVuY3Rpb24oYSl7Xy5oLnNldFRpbWVvdXQoYSwwKX19LFZqPSBRajtLaihmdW5jdGlvbihhKXtWaj1hfSk7CnZhciBiaz1mdW5jdGlvbihhLGIpe1lqfHxQYmEoKTtaanx8KFlqKCksWmo9ITApO2FrLmFkZChhLGIpfSxZaixQYmE9ZnVuY3Rpb24oKXtpZigtMSE9U3RyaW5nKF8uaC5Qcm9taXNlKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIikpe3ZhciBhPV8uaC5Qcm9taXNlLnJlc29sdmUodm9pZCAwKTtZaj1mdW5jdGlvbigpe2EudGhlbihjayl9fWVsc2UgWWo9ZnVuY3Rpb24oKXtYaihjayl9fSxaaj0hMSxhaz1uZXcgeWosY2s9ZnVuY3Rpb24oKXtmb3IodmFyIGE7YT1hay5yZW1vdmUoKTspe3RyeXthLlFkLmNhbGwoYS5zY29wZSl9Y2F0Y2goYil7VWooYil9QWoucHV0KGEpfVpqPSExfTsKdmFyIGZrLGdrLGhrLGxrLHdrLHlrLFJiYSx6aztfLmVrPWZ1bmN0aW9uKGEsYil7dGhpcy5hPTA7dGhpcy53PXZvaWQgMDt0aGlzLm89dGhpcy5iPXRoaXMuZj1udWxsO3RoaXMuYz10aGlzLmc9ITE7aWYoYSE9Xy5IYSl0cnl7dmFyIGM9dGhpczthLmNhbGwoYixmdW5jdGlvbihhKXtkayhjLDIsYSl9LGZ1bmN0aW9uKGEpe2RrKGMsMyxhKX0pfWNhdGNoKGQpe2RrKHRoaXMsMyxkKX19O2ZrPWZ1bmN0aW9uKCl7dGhpcy5uZXh0PXRoaXMuY29udGV4dD10aGlzLmI9dGhpcy5mPXRoaXMuYT1udWxsO3RoaXMuJGk9ITF9O2ZrLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY29udGV4dD10aGlzLmI9dGhpcy5mPXRoaXMuYT1udWxsO3RoaXMuJGk9ITF9O2drPW5ldyB4aihmdW5jdGlvbigpe3JldHVybiBuZXcgZmt9LGZ1bmN0aW9uKGEpe2EucmVzZXQoKX0pO2hrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1nay5nZXQoKTtkLmY9YTtkLmI9YjtkLmNvbnRleHQ9YztyZXR1cm4gZH07Cl8uaWs9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8uZWspcmV0dXJuIGE7dmFyIGI9bmV3IF8uZWsoXy5IYSk7ZGsoYiwyLGEpO3JldHVybiBifTtfLmprPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5layhmdW5jdGlvbihiLGMpe2MoYSl9KX07bGs9ZnVuY3Rpb24oYSxiLGMpe2trKGEsYixjLG51bGwpfHxiayhfLlNhKGIsYSkpfTtfLm1rPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5layhmdW5jdGlvbihiLGMpe2EubGVuZ3RofHxiKHZvaWQgMCk7Zm9yKHZhciBkPTAsZTtkPGEubGVuZ3RoO2QrKyllPWFbZF0sbGsoZSxiLGMpfSl9O18ubms9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLmVrKGZ1bmN0aW9uKGIsYyl7dmFyIGQ9YS5sZW5ndGgsZT1bXTtpZihkKWZvcih2YXIgZj1mdW5jdGlvbihhLGMpe2QtLTtlW2FdPWM7MD09ZCYmYihlKX0saz1mdW5jdGlvbihhKXtjKGEpfSxuPTAscDtuPGEubGVuZ3RoO24rKylwPWFbbl0sbGsocCxfLlNhKGYsbiksayk7ZWxzZSBiKGUpfSl9OwpfLm9rPWZ1bmN0aW9uKCl7dmFyIGEsYixjPW5ldyBfLmVrKGZ1bmN0aW9uKGMsZSl7YT1jO2I9ZX0pO3JldHVybiBuZXcgUWJhKGMsYSxiKX07Xy5lay5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHBrKHRoaXMsXy5PYShhKT9hOm51bGwsXy5PYShiKT9iOm51bGwsYyl9O3ZqKF8uZWspO18ucms9ZnVuY3Rpb24oYSxiLGMpe2I9aGsoYixiLGMpO2IuJGk9ITA7cWsoYSxiKTtyZXR1cm4gYX07Xy5zaz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHBrKGEsbnVsbCxiLGMpfTtfLmVrLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oYSl7MD09dGhpcy5hJiZiayhmdW5jdGlvbigpe3ZhciBiPW5ldyBfLnRrKGEpO3VrKHRoaXMsYil9LHRoaXMpfTsKdmFyIHVrPWZ1bmN0aW9uKGEsYil7aWYoMD09YS5hKWlmKGEuZil7dmFyIGM9YS5mO2lmKGMuYil7Zm9yKHZhciBkPTAsZT1udWxsLGY9bnVsbCxrPWMuYjtrJiYoay4kaXx8KGQrKyxrLmE9PWEmJihlPWspLCEoZSYmMTxkKSkpO2s9ay5uZXh0KWV8fChmPWspO2UmJigwPT1jLmEmJjE9PWQ/dWsoYyxiKTooZj8oZD1mLGQubmV4dD09Yy5vJiYoYy5vPWQpLGQubmV4dD1kLm5leHQubmV4dCk6dmsoYyksd2soYyxlLDMsYikpKX1hLmY9bnVsbH1lbHNlIGRrKGEsMyxiKX0scWs9ZnVuY3Rpb24oYSxiKXthLmJ8fDIhPWEuYSYmMyE9YS5hfHx4ayhhKTthLm8/YS5vLm5leHQ9YjphLmI9YjthLm89Yn0scGs9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9aGsobnVsbCxudWxsLG51bGwpO2UuYT1uZXcgXy5layhmdW5jdGlvbihhLGspe2UuZj1iP2Z1bmN0aW9uKGMpe3RyeXt2YXIgZT1iLmNhbGwoZCxjKTthKGUpfWNhdGNoKEEpe2soQSl9fTphO2UuYj1jP2Z1bmN0aW9uKGIpe3RyeXt2YXIgZT0KYy5jYWxsKGQsYik7IV8uQ2EoZSkmJmIgaW5zdGFuY2VvZiBfLnRrP2soYik6YShlKX1jYXRjaChBKXtrKEEpfX06a30pO2UuYS5mPWE7cWsoYSxlKTtyZXR1cm4gZS5hfTtfLmVrLnByb3RvdHlwZS5qYT1mdW5jdGlvbihhKXt0aGlzLmE9MDtkayh0aGlzLDIsYSl9O18uZWsucHJvdG90eXBlLndhPWZ1bmN0aW9uKGEpe3RoaXMuYT0wO2RrKHRoaXMsMyxhKX07CnZhciBkaz1mdW5jdGlvbihhLGIsYyl7MD09YS5hJiYoYT09PWMmJihiPTMsYz1uZXcgVHlwZUVycm9yKCJQcm9taXNlIGNhbm5vdCByZXNvbHZlIHRvIGl0c2VsZiIpKSxhLmE9MSxrayhjLGEuamEsYS53YSxhKXx8KGEudz1jLGEuYT1iLGEuZj1udWxsLHhrKGEpLDMhPWJ8fGMgaW5zdGFuY2VvZiBfLnRrfHxSYmEoYSxjKSkpfSxraz1mdW5jdGlvbihhLGIsYyxkKXtpZihhIGluc3RhbmNlb2YgXy5laylyZXR1cm4gcWsoYSxoayhifHxfLkhhLGN8fG51bGwsZCkpLCEwO2lmKHdqKGEpKXJldHVybiBhLnRoZW4oYixjLGQpLCEwO2lmKF8uUGEoYSkpdHJ5e3ZhciBlPWEudGhlbjtpZihfLk9hKGUpKXJldHVybiBTYmEoYSxlLGIsYyxkKSwhMH1jYXRjaChmKXtyZXR1cm4gYy5jYWxsKGQsZiksITB9cmV0dXJuITF9LFNiYT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSExLGs9ZnVuY3Rpb24oYSl7Znx8KGY9ITAsYy5jYWxsKGUsYSkpfSxuPWZ1bmN0aW9uKGEpe2Z8fChmPSEwLGQuY2FsbChlLAphKSl9O3RyeXtiLmNhbGwoYSxrLG4pfWNhdGNoKHApe24ocCl9fSx4az1mdW5jdGlvbihhKXthLmd8fChhLmc9ITAsYmsoYS5pLGEpKX0sdms9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDthLmImJihiPWEuYixhLmI9Yi5uZXh0LGIubmV4dD1udWxsKTthLmJ8fChhLm89bnVsbCk7cmV0dXJuIGJ9O18uZWsucHJvdG90eXBlLmk9ZnVuY3Rpb24oKXtmb3IodmFyIGE7YT12ayh0aGlzKTspd2sodGhpcyxhLHRoaXMuYSx0aGlzLncpO3RoaXMuZz0hMX07d2s9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoMz09YyYmYi5iJiYhYi4kaSlmb3IoO2EmJmEuYzthPWEuZilhLmM9ITE7aWYoYi5hKWIuYS5mPW51bGwseWsoYixjLGQpO2Vsc2UgdHJ5e2IuJGk/Yi5mLmNhbGwoYi5jb250ZXh0KTp5ayhiLGMsZCl9Y2F0Y2goZSl7emsuY2FsbChudWxsLGUpfWdrLnB1dChiKX07eWs9ZnVuY3Rpb24oYSxiLGMpezI9PWI/YS5mLmNhbGwoYS5jb250ZXh0LGMpOmEuYiYmYS5iLmNhbGwoYS5jb250ZXh0LGMpfTsgUmJhPWZ1bmN0aW9uKGEsYil7YS5jPSEwO2JrKGZ1bmN0aW9uKCl7YS5jJiZ6ay5jYWxsKG51bGwsYil9KX07ems9VWo7Xy50az1mdW5jdGlvbihhKXtfLlhhLmNhbGwodGhpcyxhKX07Xy5tKF8udGssXy5YYSk7Xy50ay5wcm90b3R5cGUubmFtZT0iY2FuY2VsIjt2YXIgUWJhPWZ1bmN0aW9uKGEsYixjKXt0aGlzLnliPWE7dGhpcy5yZXNvbHZlPWI7dGhpcy5yZWplY3Q9Y307CnZhciBCaztfLkFrPWZ1bmN0aW9uKCl7dGhpcy5sZD10aGlzLmxkO3RoaXMuRWM9dGhpcy5FY307Xy5Bay5wcm90b3R5cGUubGQ9ITE7Xy5Bay5wcm90b3R5cGUuaXNEaXNwb3NlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxkfTtfLkFrLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5sZHx8KHRoaXMubGQ9ITAsdGhpcy5vYigpKX07Xy5Eaz1mdW5jdGlvbihhLGIpe0JrKGEsXy5TYShDayxiKSl9O0JrPWZ1bmN0aW9uKGEsYil7YS5sZD9fLkNhKHZvaWQgMCk/Yi5jYWxsKHZvaWQgMCk6YigpOihhLkVjfHwoYS5FYz1bXSksYS5FYy5wdXNoKF8uQ2Eodm9pZCAwKT8oMCxfLmwpKGIsdm9pZCAwKTpiKSl9O18uQWsucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7aWYodGhpcy5FYylmb3IoO3RoaXMuRWMubGVuZ3RoOyl0aGlzLkVjLnNoaWZ0KCkoKX07IHZhciBFaz1mdW5jdGlvbihhKXtyZXR1cm4gYSYmImZ1bmN0aW9uIj09dHlwZW9mIGEuaXNEaXNwb3NlZD9hLmlzRGlzcG9zZWQoKTohMX0sQ2s9ZnVuY3Rpb24oYSl7YSYmImZ1bmN0aW9uIj09dHlwZW9mIGEuZGlzcG9zZSYmYS5kaXNwb3NlKCl9LEZrPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YXJndW1lbnRzLmxlbmd0aDtiPGM7KytiKXt2YXIgZD1hcmd1bWVudHNbYl07TmEoZCk/RmsuYXBwbHkobnVsbCxkKTpDayhkKX19Owp2YXIgR2s9ZnVuY3Rpb24oYSxiLGMpe2M9Y3x8Xy5oO3ZhciBkPWMub25lcnJvcixlPSEhYjtfLkJjJiYhT2MoIjUzNS4zIikmJihlPSFlKTtjLm9uZXJyb3I9ZnVuY3Rpb24oYixjLG4scCxBKXtkJiZkKGIsYyxuLHAsQSk7YSh7bWVzc2FnZTpiLGZpbGVOYW1lOmMsbGluZTpuLGxpbmVOdW1iZXI6bixWWDpwLGVycm9yOkF9KTtyZXR1cm4gZX19LFRiYT1mdW5jdGlvbihhKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGEpcmV0dXJuInVuZGVmaW5lZCI7aWYobnVsbD09YSlyZXR1cm4iTlVMTCI7dmFyIGI9W10sYztmb3IoYyBpbiBhKWlmKCFfLk9hKGFbY10pKXt2YXIgZD1jKyIgPSAiO3RyeXtkKz1hW2NdfWNhdGNoKGUpe2QrPSIqKiogIitlKyIgKioqIn1iLnB1c2goZCl9cmV0dXJuIGIuam9pbigiXG4iKX0sSWs9ZnVuY3Rpb24oYSl7dmFyIGI9SGsoSWspO2lmKGIpcmV0dXJuIGI7Yj1bXTtmb3IodmFyIGM9YXJndW1lbnRzLmNhbGxlZS5jYWxsZXIsZD0wO2MmJighYXx8ZDxhKTspe2IucHVzaChYayhjKSk7CmIucHVzaCgiKClcbiIpO3RyeXtjPWMuY2FsbGVyfWNhdGNoKGUpe2IucHVzaCgiW2V4Y2VwdGlvbiB0cnlpbmcgdG8gZ2V0IGNhbGxlcl1cbiIpO2JyZWFrfWQrKztpZig1MDw9ZCl7Yi5wdXNoKCJbLi4ubG9uZyBzdGFjay4uLl0iKTticmVha319YSYmZD49YT9iLnB1c2goIlsuLi5yZWFjaGVkIG1heCBkZXB0aCBsaW1pdC4uLl0iKTpiLnB1c2goIltlbmRdIik7cmV0dXJuIGIuam9pbigiIil9LEhrPWZ1bmN0aW9uKGEpe3ZhciBiPUVycm9yKCk7aWYoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpcmV0dXJuIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGIsYSksU3RyaW5nKGIuc3RhY2spO3RyeXt0aHJvdyBiO31jYXRjaChjKXtiPWN9cmV0dXJuKGE9Yi5zdGFjayk/U3RyaW5nKGEpOm51bGx9LFlrPWZ1bmN0aW9uKGEpe3ZhciBiOyhiPUhrKGF8fFlrKSl8fChiPVprKGF8fGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLFtdKSk7cmV0dXJuIGJ9LFprPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107CmlmKF8ubGIoYixhKSljLnB1c2goIlsuLi5jaXJjdWxhciByZWZlcmVuY2UuLi5dIik7ZWxzZSBpZihhJiY1MD5iLmxlbmd0aCl7Yy5wdXNoKFhrKGEpKyIoIik7Zm9yKHZhciBkPWEuYXJndW1lbnRzLGU9MDtkJiZlPGQubGVuZ3RoO2UrKyl7MDxlJiZjLnB1c2goIiwgIik7dmFyIGY9ZFtlXTtzd2l0Y2godHlwZW9mIGYpe2Nhc2UgIm9iamVjdCI6Zj1mPyJvYmplY3QiOiJudWxsIjticmVhaztjYXNlICJzdHJpbmciOmJyZWFrO2Nhc2UgIm51bWJlciI6Zj1TdHJpbmcoZik7YnJlYWs7Y2FzZSAiYm9vbGVhbiI6Zj1mPyJ0cnVlIjoiZmFsc2UiO2JyZWFrO2Nhc2UgImZ1bmN0aW9uIjpmPShmPVhrKGYpKT9mOiJbZm5dIjticmVhaztkZWZhdWx0OmY9dHlwZW9mIGZ9NDA8Zi5sZW5ndGgmJihmPWYuc3Vic3RyKDAsNDApKyIuLi4iKTtjLnB1c2goZil9Yi5wdXNoKGEpO2MucHVzaCgiKVxuIik7dHJ5e2MucHVzaChaayhhLmNhbGxlcixiKSl9Y2F0Y2goayl7Yy5wdXNoKCJbZXhjZXB0aW9uIHRyeWluZyB0byBnZXQgY2FsbGVyXVxuIil9fWVsc2UgYT8gYy5wdXNoKCJbLi4ubG9uZyBzdGFjay4uLl0iKTpjLnB1c2goIltlbmRdIik7cmV0dXJuIGMuam9pbigiIil9LFhrPWZ1bmN0aW9uKGEpe2lmKCRrW2FdKXJldHVybiAka1thXTthPVN0cmluZyhhKTtpZighJGtbYV0pe3ZhciBiPS9mdW5jdGlvbiAoW15cKF0rKS8uZXhlYyhhKTska1thXT1iP2JbMV06IltBbm9ueW1vdXNdIn1yZXR1cm4gJGtbYV19LCRrPXt9Owp2YXIgVWJhPSFfLndjfHxQYyg5KSxhbD0hXy53Y3x8UGMoOSksVmJhPV8ud2MmJiFPYygiOSIpLFdiYT1mdW5jdGlvbigpe2lmKCFfLmguYWRkRXZlbnRMaXN0ZW5lcnx8IU9iamVjdC5kZWZpbmVQcm9wZXJ0eSlyZXR1cm4hMTt2YXIgYT0hMSxiPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe2E9ITB9fSk7Xy5oLmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLF8uSGEsYik7Xy5oLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLF8uSGEsYik7cmV0dXJuIGF9KCk7CnZhciBibD1mdW5jdGlvbihhKXt0aGlzLmlkPWF9O2JsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkfTtfLmNsPWZ1bmN0aW9uKGEsYil7dGhpcy50eXBlPWEgaW5zdGFuY2VvZiBibD9TdHJpbmcoYSk6YTt0aGlzLmI9dGhpcy50YXJnZXQ9Yjt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9dGhpcy5mPSExO3RoaXMuakI9ITB9O18uY2wucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbigpe3RoaXMuZj0hMH07Xy5jbC5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dGhpcy5qQj0hMX07CnZhciBkbDtkbD1fLkJjPyJ3ZWJraXRUcmFuc2l0aW9uRW5kIjpfLnZjPyJvdHJhbnNpdGlvbmVuZCI6InRyYW5zaXRpb25lbmQiO3ZhciBlbD1mdW5jdGlvbihhLGIpe18uY2wuY2FsbCh0aGlzLGE/YS50eXBlOiIiKTt0aGlzLnJlbGF0ZWRUYXJnZXQ9dGhpcy5iPXRoaXMudGFyZ2V0PW51bGw7dGhpcy5idXR0b249dGhpcy5zY3JlZW5ZPXRoaXMuc2NyZWVuWD10aGlzLmNsaWVudFk9dGhpcy5jbGllbnRYPTA7dGhpcy5rZXk9IiI7dGhpcy5Baj0wO3RoaXMubWV0YUtleT10aGlzLnNoaWZ0S2V5PXRoaXMuYWx0S2V5PXRoaXMuY3RybEtleT0hMTt0aGlzLnN0YXRlPW51bGw7dGhpcy5wb2ludGVySWQ9MDt0aGlzLnBvaW50ZXJUeXBlPSIiO3RoaXMuYT1udWxsO2EmJnRoaXMuaW5pdChhLGIpfTtfLm0oZWwsXy5jbCk7dmFyIFhiYT1bMSw0LDJdLFliYT17MjoidG91Y2giLDM6InBlbiIsNDoibW91c2UifTsKZWwucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnR5cGU9YS50eXBlLGQ9YS5jaGFuZ2VkVG91Y2hlcz9hLmNoYW5nZWRUb3VjaGVzWzBdOm51bGw7dGhpcy50YXJnZXQ9YS50YXJnZXR8fGEuc3JjRWxlbWVudDt0aGlzLmI9YjsoYj1hLnJlbGF0ZWRUYXJnZXQpP18uemMmJih1YyhiLCJub2RlTmFtZSIpfHwoYj1udWxsKSk6Im1vdXNlb3ZlciI9PWM/Yj1hLmZyb21FbGVtZW50OiJtb3VzZW91dCI9PWMmJihiPWEudG9FbGVtZW50KTt0aGlzLnJlbGF0ZWRUYXJnZXQ9YjtudWxsPT09ZD8odGhpcy5jbGllbnRYPXZvaWQgMCE9PWEuY2xpZW50WD9hLmNsaWVudFg6YS5wYWdlWCx0aGlzLmNsaWVudFk9dm9pZCAwIT09YS5jbGllbnRZP2EuY2xpZW50WTphLnBhZ2VZLHRoaXMuc2NyZWVuWD1hLnNjcmVlblh8fDAsdGhpcy5zY3JlZW5ZPWEuc2NyZWVuWXx8MCk6KHRoaXMuY2xpZW50WD12b2lkIDAhPT1kLmNsaWVudFg/ZC5jbGllbnRYOmQucGFnZVgsdGhpcy5jbGllbnRZPQp2b2lkIDAhPT1kLmNsaWVudFk/ZC5jbGllbnRZOmQucGFnZVksdGhpcy5zY3JlZW5YPWQuc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9ZC5zY3JlZW5ZfHwwKTt0aGlzLmJ1dHRvbj1hLmJ1dHRvbjt0aGlzLkFqPWEua2V5Q29kZXx8MDt0aGlzLmtleT1hLmtleXx8IiI7dGhpcy5jdHJsS2V5PWEuY3RybEtleTt0aGlzLmFsdEtleT1hLmFsdEtleTt0aGlzLnNoaWZ0S2V5PWEuc2hpZnRLZXk7dGhpcy5tZXRhS2V5PWEubWV0YUtleTt0aGlzLnBvaW50ZXJJZD1hLnBvaW50ZXJJZHx8MDt0aGlzLnBvaW50ZXJUeXBlPV8uRGEoYS5wb2ludGVyVHlwZSk/YS5wb2ludGVyVHlwZTpZYmFbYS5wb2ludGVyVHlwZV18fCIiO3RoaXMuc3RhdGU9YS5zdGF0ZTt0aGlzLmE9YTthLmRlZmF1bHRQcmV2ZW50ZWQmJnRoaXMucHJldmVudERlZmF1bHQoKX07CmVsLnByb3RvdHlwZS5kZz1mdW5jdGlvbihhKXtyZXR1cm4gVWJhP3RoaXMuYS5idXR0b249PWE6ImNsaWNrIj09dGhpcy50eXBlPzA9PWE6ISEodGhpcy5hLmJ1dHRvbiZYYmFbYV0pfTtlbC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7ZWwuJC5zdG9wUHJvcGFnYXRpb24uY2FsbCh0aGlzKTt0aGlzLmEuc3RvcFByb3BhZ2F0aW9uP3RoaXMuYS5zdG9wUHJvcGFnYXRpb24oKTp0aGlzLmEuY2FuY2VsQnViYmxlPSEwfTtlbC5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtlbC4kLnByZXZlbnREZWZhdWx0LmNhbGwodGhpcyk7dmFyIGE9dGhpcy5hO2lmKGEucHJldmVudERlZmF1bHQpYS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgaWYoYS5yZXR1cm5WYWx1ZT0hMSxWYmEpdHJ5e2lmKGEuY3RybEtleXx8MTEyPD1hLmtleUNvZGUmJjEyMz49YS5rZXlDb2RlKWEua2V5Q29kZT0tMX1jYXRjaChiKXt9fTsKdmFyIGZsPSJjbG9zdXJlX2xpc3RlbmFibGVfIisoMUU2Kk1hdGgucmFuZG9tKCl8MCksZ2w9ZnVuY3Rpb24oYSl7cmV0dXJuISghYXx8IWFbZmxdKX0sWmJhPTA7dmFyICRiYT1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMubGlzdGVuZXI9YTt0aGlzLmtvPW51bGw7dGhpcy5zcmM9Yjt0aGlzLnR5cGU9Yzt0aGlzLmNhcHR1cmU9ISFkO3RoaXMuRmc9ZTt0aGlzLmtleT0rK1piYTt0aGlzLmhtPXRoaXMuenA9ITF9LGhsPWZ1bmN0aW9uKGEpe2EuaG09ITA7YS5saXN0ZW5lcj1udWxsO2Eua289bnVsbDthLnNyYz1udWxsO2EuRmc9bnVsbH07dmFyIGlsPWZ1bmN0aW9uKGEpe3RoaXMuc3JjPWE7dGhpcy5hPXt9O3RoaXMuYj0wfTtpbC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS50b1N0cmluZygpO2E9dGhpcy5hW2ZdO2F8fChhPXRoaXMuYVtmXT1bXSx0aGlzLmIrKyk7dmFyIGs9amwoYSxiLGQsZSk7LTE8az8oYj1hW2tdLGN8fChiLnpwPSExKSk6KGI9bmV3ICRiYShiLHRoaXMuc3JjLGYsISFkLGUpLGIuenA9YyxhLnB1c2goYikpO3JldHVybiBifTtpbC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEsYixjLGQpe2E9YS50b1N0cmluZygpO2lmKCEoYSBpbiB0aGlzLmEpKXJldHVybiExO3ZhciBlPXRoaXMuYVthXTtiPWpsKGUsYixjLGQpO3JldHVybi0xPGI/KGhsKGVbYl0pLG9iKGUsYiksMD09ZS5sZW5ndGgmJihkZWxldGUgdGhpcy5hW2FdLHRoaXMuYi0tKSwhMCk6ITF9Owp2YXIga2w9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnR5cGU7aWYoIShjIGluIGEuYSkpcmV0dXJuITE7dmFyIGQ9Xy5wYihhLmFbY10sYik7ZCYmKGhsKGIpLDA9PWEuYVtjXS5sZW5ndGgmJihkZWxldGUgYS5hW2NdLGEuYi0tKSk7cmV0dXJuIGR9LGxsPWZ1bmN0aW9uKGEpe3ZhciBiPTAsYztmb3IoYyBpbiBhLmEpe2Zvcih2YXIgZD1hLmFbY10sZT0wO2U8ZC5sZW5ndGg7ZSsrKSsrYixobChkW2VdKTtkZWxldGUgYS5hW2NdO2EuYi0tfX07aWwucHJvdG90eXBlLmRuPWZ1bmN0aW9uKGEsYixjLGQpe2E9dGhpcy5hW2EudG9TdHJpbmcoKV07dmFyIGU9LTE7YSYmKGU9amwoYSxiLGMsZCkpO3JldHVybi0xPGU/YVtlXTpudWxsfTsKaWwucHJvdG90eXBlLmhhc0xpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5DYShhKSxkPWM/YS50b1N0cmluZygpOiIiLGU9Xy5DYShiKTtyZXR1cm4gY2ModGhpcy5hLGZ1bmN0aW9uKGEpe2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGg7KytmKWlmKCEoYyYmYVtmXS50eXBlIT1kfHxlJiZhW2ZdLmNhcHR1cmUhPWIpKXJldHVybiEwO3JldHVybiExfSl9O3ZhciBqbD1mdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGU9MDtlPGEubGVuZ3RoOysrZSl7dmFyIGY9YVtlXTtpZighZi5obSYmZi5saXN0ZW5lcj09YiYmZi5jYXB0dXJlPT0hIWMmJmYuRmc9PWQpcmV0dXJuIGV9cmV0dXJuLTF9Owp2YXIgbWwsbmwsb2wsc2wsYWNhLHBsLHdsLHVsLEFsLHpsLHZsLHRsLEJsLHJsO21sPSJjbG9zdXJlX2xtXyIrKDFFNipNYXRoLnJhbmRvbSgpfDApO25sPXt9O29sPTA7Xy5xbD1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKGQmJmQub25jZSlyZXR1cm4gcGwoYSxiLGMsZCxlKTtpZihfLk1hKGIpKXtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylfLnFsKGEsYltmXSxjLGQsZSk7cmV0dXJuIG51bGx9Yz1ybChjKTtyZXR1cm4gZ2woYSk/YS5saXN0ZW4oYixjLF8uUGEoZCk/ISFkLmNhcHR1cmU6ISFkLGUpOnNsKGEsYixjLCExLGQsZSl9OwpzbD1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoIWIpdGhyb3cgRXJyb3IoIm4iKTt2YXIgaz1fLlBhKGUpPyEhZS5jYXB0dXJlOiEhZSxuPXRsKGEpO258fChhW21sXT1uPW5ldyBpbChhKSk7Yz1uLmFkZChiLGMsZCxrLGYpO2lmKGMua28pcmV0dXJuIGM7ZD1hY2EoKTtjLmtvPWQ7ZC5zcmM9YTtkLmxpc3RlbmVyPWM7aWYoYS5hZGRFdmVudExpc3RlbmVyKVdiYXx8KGU9ayksdm9pZCAwPT09ZSYmKGU9ITEpLGEuYWRkRXZlbnRMaXN0ZW5lcihiLnRvU3RyaW5nKCksZCxlKTtlbHNlIGlmKGEuYXR0YWNoRXZlbnQpYS5hdHRhY2hFdmVudCh1bChiLnRvU3RyaW5nKCkpLGQpO2Vsc2UgaWYoYS5hZGRMaXN0ZW5lciYmYS5yZW1vdmVMaXN0ZW5lcilhLmFkZExpc3RlbmVyKGQpO2Vsc2UgdGhyb3cgRXJyb3IoIm8iKTtvbCsrO3JldHVybiBjfTsKYWNhPWZ1bmN0aW9uKCl7dmFyIGE9dmwsYj1hbD9mdW5jdGlvbihjKXtyZXR1cm4gYS5jYWxsKGIuc3JjLGIubGlzdGVuZXIsYyl9OmZ1bmN0aW9uKGMpe2M9YS5jYWxsKGIuc3JjLGIubGlzdGVuZXIsYyk7aWYoIWMpcmV0dXJuIGN9O3JldHVybiBifTtwbD1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKF8uTWEoYikpe2Zvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKXBsKGEsYltmXSxjLGQsZSk7cmV0dXJuIG51bGx9Yz1ybChjKTtyZXR1cm4gZ2woYSk/YS5PbChiLGMsXy5QYShkKT8hIWQuY2FwdHVyZTohIWQsZSk6c2woYSxiLGMsITAsZCxlKX07d2w9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihfLk1hKGIpKWZvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKXdsKGEsYltmXSxjLGQsZSk7ZWxzZSBkPV8uUGEoZCk/ISFkLmNhcHR1cmU6ISFkLGM9cmwoYyksZ2woYSk/YS5ZbyhiLGMsZCxlKTphJiYoYT10bChhKSkmJihiPWEuZG4oYixjLGQsZSkpJiZfLnhsKGIpfTsKXy54bD1mdW5jdGlvbihhKXtpZihfLkVhKGEpfHwhYXx8YS5obSlyZXR1cm4hMTt2YXIgYj1hLnNyYztpZihnbChiKSlyZXR1cm4ga2woYi5TZixhKTt2YXIgYz1hLnR5cGUsZD1hLmtvO2IucmVtb3ZlRXZlbnRMaXN0ZW5lcj9iLnJlbW92ZUV2ZW50TGlzdGVuZXIoYyxkLGEuY2FwdHVyZSk6Yi5kZXRhY2hFdmVudD9iLmRldGFjaEV2ZW50KHVsKGMpLGQpOmIuYWRkTGlzdGVuZXImJmIucmVtb3ZlTGlzdGVuZXImJmIucmVtb3ZlTGlzdGVuZXIoZCk7b2wtLTsoYz10bChiKSk/KGtsKGMsYSksMD09Yy5iJiYoYy5zcmM9bnVsbCxiW21sXT1udWxsKSk6aGwoYSk7cmV0dXJuITB9O18ueWw9ZnVuY3Rpb24oYSl7aWYoYSlpZihnbChhKSlhLlNmJiZsbChhLlNmKTtlbHNlIGlmKGE9dGwoYSkpe3ZhciBiPTAsYztmb3IoYyBpbiBhLmEpZm9yKHZhciBkPWEuYVtjXS5jb25jYXQoKSxlPTA7ZTxkLmxlbmd0aDsrK2UpXy54bChkW2VdKSYmKytifX07CnVsPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluIG5sP25sW2FdOm5sW2FdPSJvbiIrYX07QWw9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITA7aWYoYT10bChhKSlpZihiPWEuYVtiLnRvU3RyaW5nKCldKWZvcihiPWIuY29uY2F0KCksYT0wO2E8Yi5sZW5ndGg7YSsrKXt2YXIgZj1iW2FdO2YmJmYuY2FwdHVyZT09YyYmIWYuaG0mJihmPXpsKGYsZCksZT1lJiYhMSE9PWYpfXJldHVybiBlfTt6bD1mdW5jdGlvbihhLGIpe3ZhciBjPWEubGlzdGVuZXIsZD1hLkZnfHxhLnNyYzthLnpwJiZfLnhsKGEpO3JldHVybiBjLmNhbGwoZCxiKX07CnZsPWZ1bmN0aW9uKGEsYil7aWYoYS5obSlyZXR1cm4hMDtpZighYWwpe3ZhciBjPWJ8fF8uR2EoIndpbmRvdy5ldmVudCIpO2I9bmV3IGVsKGMsdGhpcyk7dmFyIGQ9ITA7aWYoISgwPmMua2V5Q29kZXx8dm9pZCAwIT1jLnJldHVyblZhbHVlKSl7YTp7dmFyIGU9ITE7aWYoMD09Yy5rZXlDb2RlKXRyeXtjLmtleUNvZGU9LTE7YnJlYWsgYX1jYXRjaChrKXtlPSEwfWlmKGV8fHZvaWQgMD09Yy5yZXR1cm5WYWx1ZSljLnJldHVyblZhbHVlPSEwfWM9W107Zm9yKGU9Yi5iO2U7ZT1lLnBhcmVudE5vZGUpYy5wdXNoKGUpO2E9YS50eXBlO2ZvcihlPWMubGVuZ3RoLTE7IWIuZiYmMDw9ZTtlLS0pe2IuYj1jW2VdO3ZhciBmPUFsKGNbZV0sYSwhMCxiKTtkPWQmJmZ9Zm9yKGU9MDshYi5mJiZlPGMubGVuZ3RoO2UrKyliLmI9Y1tlXSxmPUFsKGNbZV0sYSwhMSxiKSxkPWQmJmZ9cmV0dXJuIGR9cmV0dXJuIHpsKGEsbmV3IGVsKGIsdGhpcykpfTsgdGw9ZnVuY3Rpb24oYSl7YT1hW21sXTtyZXR1cm4gYSBpbnN0YW5jZW9mIGlsP2E6bnVsbH07Qmw9Il9fY2xvc3VyZV9ldmVudHNfZm5fIisoMUU5Kk1hdGgucmFuZG9tKCk+Pj4wKTtybD1mdW5jdGlvbihhKXtpZihfLk9hKGEpKXJldHVybiBhO2FbQmxdfHwoYVtCbF09ZnVuY3Rpb24oYil7cmV0dXJuIGEuaGFuZGxlRXZlbnQoYil9KTtyZXR1cm4gYVtCbF19O0tqKGZ1bmN0aW9uKGEpe3ZsPWEodmwpfSk7Cl8uQ2w9ZnVuY3Rpb24oKXtfLkFrLmNhbGwodGhpcyk7dGhpcy5TZj1uZXcgaWwodGhpcyk7dGhpcy5lYj10aGlzO3RoaXMuZz1udWxsfTtfLm0oXy5DbCxfLkFrKTtfLkNsLnByb3RvdHlwZVtmbF09ITA7Xy5nPV8uQ2wucHJvdG90eXBlO18uZy5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYixjLGQpe18ucWwodGhpcyxhLGIsYyxkKX07Xy5nLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMsZCl7d2wodGhpcyxhLGIsYyxkKX07Cl8uZy5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGM9dGhpcy5nO2lmKGMpZm9yKGI9W107YztjPWMuZyliLnB1c2goYyk7Yz10aGlzLmViO3ZhciBkPWEudHlwZXx8YTtpZihfLkRhKGEpKWE9bmV3IF8uY2woYSxjKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBfLmNsKWEudGFyZ2V0PWEudGFyZ2V0fHxjO2Vsc2V7dmFyIGU9YTthPW5ldyBfLmNsKGQsYyk7Xy5rYyhhLGUpfWU9ITA7aWYoYilmb3IodmFyIGY9Yi5sZW5ndGgtMTshYS5mJiYwPD1mO2YtLSl7dmFyIGs9YS5iPWJbZl07ZT1EbChrLGQsITAsYSkmJmV9YS5mfHwoaz1hLmI9YyxlPURsKGssZCwhMCxhKSYmZSxhLmZ8fChlPURsKGssZCwhMSxhKSYmZSkpO2lmKGIpZm9yKGY9MDshYS5mJiZmPGIubGVuZ3RoO2YrKylrPWEuYj1iW2ZdLGU9RGwoayxkLCExLGEpJiZlO3JldHVybiBlfTtfLmcub2I9ZnVuY3Rpb24oKXtfLkNsLiQub2IuY2FsbCh0aGlzKTt0aGlzLlNmJiZsbCh0aGlzLlNmKTt0aGlzLmc9bnVsbH07Cl8uZy5saXN0ZW49ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuU2YuYWRkKFN0cmluZyhhKSxiLCExLGMsZCl9O18uZy5PbD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5TZi5hZGQoU3RyaW5nKGEpLGIsITAsYyxkKX07Xy5nLllvPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuU2YucmVtb3ZlKFN0cmluZyhhKSxiLGMsZCl9O3ZhciBEbD1mdW5jdGlvbihhLGIsYyxkKXtiPWEuU2YuYVtTdHJpbmcoYildO2lmKCFiKXJldHVybiEwO2I9Yi5jb25jYXQoKTtmb3IodmFyIGU9ITAsZj0wO2Y8Yi5sZW5ndGg7KytmKXt2YXIgaz1iW2ZdO2lmKGsmJiFrLmhtJiZrLmNhcHR1cmU9PWMpe3ZhciBuPWsubGlzdGVuZXIscD1rLkZnfHxrLnNyYztrLnpwJiZrbChhLlNmLGspO2U9ITEhPT1uLmNhbGwocCxkKSYmZX19cmV0dXJuIGUmJjAhPWQuakJ9O18uQ2wucHJvdG90eXBlLmRuPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLlNmLmRuKFN0cmluZyhhKSxiLGMsZCl9OyBfLkNsLnByb3RvdHlwZS5oYXNMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLlNmLmhhc0xpc3RlbmVyKF8uQ2EoYSk/U3RyaW5nKGEpOnZvaWQgMCxiKX07Cl8uRWw9ZnVuY3Rpb24oYSxiKXtfLkNsLmNhbGwodGhpcyk7dGhpcy5iPWF8fDE7dGhpcy5hPWJ8fF8uaDt0aGlzLmY9KDAsXy5sKSh0aGlzLlBPLHRoaXMpO3RoaXMubz0oMCxfLlVhKSgpfTtfLm0oXy5FbCxfLkNsKTtfLmc9Xy5FbC5wcm90b3R5cGU7Xy5nLmVuYWJsZWQ9ITE7Xy5nLllmPW51bGw7Xy5nLnNldEludGVydmFsPWZ1bmN0aW9uKGEpe3RoaXMuYj1hO3RoaXMuWWYmJnRoaXMuZW5hYmxlZD8odGhpcy5zdG9wKCksdGhpcy5zdGFydCgpKTp0aGlzLllmJiZ0aGlzLnN0b3AoKX07Cl8uZy5QTz1mdW5jdGlvbigpe2lmKHRoaXMuZW5hYmxlZCl7dmFyIGE9KDAsXy5VYSkoKS10aGlzLm87MDxhJiZhPC44KnRoaXMuYj90aGlzLllmPXRoaXMuYS5zZXRUaW1lb3V0KHRoaXMuZix0aGlzLmItYSk6KHRoaXMuWWYmJih0aGlzLmEuY2xlYXJUaW1lb3V0KHRoaXMuWWYpLHRoaXMuWWY9bnVsbCksdGhpcy5kaXNwYXRjaEV2ZW50KCJ0aWNrIiksdGhpcy5lbmFibGVkJiYodGhpcy5ZZj10aGlzLmEuc2V0VGltZW91dCh0aGlzLmYsdGhpcy5iKSx0aGlzLm89KDAsXy5VYSkoKSkpfX07Xy5nLnN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwO3RoaXMuWWZ8fCh0aGlzLllmPXRoaXMuYS5zZXRUaW1lb3V0KHRoaXMuZix0aGlzLmIpLHRoaXMubz0oMCxfLlVhKSgpKX07Xy5nLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITE7dGhpcy5ZZiYmKHRoaXMuYS5jbGVhclRpbWVvdXQodGhpcy5ZZiksdGhpcy5ZZj1udWxsKX07Cl8uZy5vYj1mdW5jdGlvbigpe18uRWwuJC5vYi5jYWxsKHRoaXMpO3RoaXMuc3RvcCgpO2RlbGV0ZSB0aGlzLmF9O18uRmw9ZnVuY3Rpb24oYSxiLGMpe2lmKF8uT2EoYSkpYyYmKGE9KDAsXy5sKShhLGMpKTtlbHNlIGlmKGEmJiJmdW5jdGlvbiI9PXR5cGVvZiBhLmhhbmRsZUV2ZW50KWE9KDAsXy5sKShhLmhhbmRsZUV2ZW50LGEpO2Vsc2UgdGhyb3cgRXJyb3IoInAiKTtyZXR1cm4gMjE0NzQ4MzY0NzxOdW1iZXIoYik/LTE6Xy5oLnNldFRpbWVvdXQoYSxifHwwKX07Xy5HbD1mdW5jdGlvbihhKXtfLmguY2xlYXJUaW1lb3V0KGEpfTtfLkhsPWZ1bmN0aW9uKGEsYil7dmFyIGM9bnVsbDtyZXR1cm4gXy5zayhuZXcgXy5layhmdW5jdGlvbihkLGUpe2M9Xy5GbChmdW5jdGlvbigpe2QoYil9LGEpOy0xPT1jJiZlKEVycm9yKCJxIikpfSksZnVuY3Rpb24oYSl7Xy5HbChjKTt0aHJvdyBhO30pfTsKdmFyIElsPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmY9YTt0aGlzLmc9Yzt0aGlzLmM9ZDt0aGlzLm89Znx8MDt0aGlzLmI9bnVsbDt0aGlzLmE9Yi5zbGljZSgwKTt0aGlzLnc9ZX0sT2w9ZnVuY3Rpb24oYSl7aWYoMCE9YS5mLmxlbmd0aCl7dmFyIGI9e01pOigwLF8ubCkoYS5pLGEpfSxjPW5ldyBCZCxkPSgwLF8uZGIpKGEuZixiY2EpO18ubGQoYywxLGQpO2I9Xy5KbChhLmMsYS5nLGMsW05oXSxiKTtfLktsKGIseyJkcy5leHRlbnNpb24iOigwLF8uZGIpKGEuZix1aikuc29ydCgpLmpvaW4oIi4iKS5zdWJzdHIoMCwyMDApfSk7TGwoYik7MDxhLm8mJl8uS2woYix7ImYucmV0cmllcyI6YS5vfSk7Xy5NbChfLk5sKGEuYyxiKSxhLmphLGEpfX07CklsLnByb3RvdHlwZS5pPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEgaW5zdGFuY2VvZiBRaSlpZihSaShhKSYmUmkoYSkuZ2V0RXh0ZW5zaW9uKEdkKSl7dmFyIGM9Xy5yKFJpKGEpLmdldEV4dGVuc2lvbihHZCksMSk7dmFyIGQ9dGhpcy5mW2NdO2lmKGI9dGhpcy5hW2NdKXt2YXIgZT1fLnIoYSw1KSxmPW51bGwhPWQuUWk/ZC5RaTozOzUwMDw9ZSYmNjAwPmUmJnRoaXMubzxmP2NjYSh0aGlzLGIsZCk6Yi5yZWplY3QoV2koYSxkKSk7dGhpcy5hW2NdPW51bGx9fWVsc2UgYz0iIixSaShhKSYmUmkoYSkuZ2V0RXh0ZW5zaW9uKFVpKSYmKGM9UmkoYSkuZ2V0RXh0ZW5zaW9uKFVpKS5vYSgpKSxQbCh0aGlzLEVycm9yKGMpKTtlbHNlIGlmKGM9Xy5yKGEsMSksZD10aGlzLmZbY10sYj10aGlzLmFbY10pYi5yZXNvbHZlKFFsKHRoaXMudyxkLGEuZ2V0RXh0ZW5zaW9uKGQuQmMpKSksdGhpcy5hW2NdPW51bGx9Owp2YXIgY2NhPWZ1bmN0aW9uKGEsYixjKXtpZighYS5iKXthLmI9e3hvOltdLGhCOltdfTt2YXIgZD1NYXRoLnBvdygyLGEubyk7ZD1kY2EoZCk7Xy5GbChmdW5jdGlvbigpe09sKG5ldyBJbCh0aGlzLmIueG8sdGhpcy5iLmhCLHRoaXMuZyx0aGlzLmMsdGhpcy53LHRoaXMubysxKSk7dGhpcy5iPW51bGx9LE1hdGgucm91bmQoMUUzKmQpLGEpfWEuYi54by5wdXNoKGMpO2EuYi5oQi5wdXNoKGIpfSxkY2E9ZnVuY3Rpb24oYSl7dmFyIGI9LjMqYSpNYXRoLnJhbmRvbSgpOy41PE1hdGgucmFuZG9tKCkmJihiKj0tMSk7cmV0dXJuIGErYn0sYmNhPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IEFkO18udChjLDEsYS5CYy5hKTtfLnQoYyw1LGIpO2lmKGEuQmR8fGEucmVxdWVzdCliPW5ldyB5ZCxiLmcoYS5CZCxhLnJlcXVlc3QpLF8ua2QoYywyLGIpO3JldHVybiBjfTtJbC5wcm90b3R5cGUuamE9ZnVuY3Rpb24oYSl7UGwodGhpcyxhKX07IHZhciBQbD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8YS5hLmxlbmd0aDtjKyspYS5hW2NdJiYoYS5hW2NdLnJlamVjdChiKSxhLmFbY109bnVsbCl9Owp2YXIgUmw9e307dmFyIFNsPWZ1bmN0aW9uKGEpe3RoaXMuYT17fTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGM9dGooYVtiXS5yZXF1ZXN0KTt0aGlzLmFbY109YVtiXS55Yn19O1NsLnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKGEpe2E9dGooYSk7cmV0dXJuIHRoaXMuYVthXS50aGVuKHBkKX07dmFyIGVjYT1mdW5jdGlvbihhLGIsYyl7dGhpcy5yZXF1ZXN0PSgwLHdpbmRvdy5pc05hTikoYik/Yi5TYihjKTpKYmEoYixjKTt0aGlzLlNpPWIuU2IoYyk7dGhpcy5sZj1iO3RoaXMuVW49Yzt0aGlzLmI9TWF0aC5yYW5kb20oKTt0aGlzLmE9KDAsXy5VYSkoKTt0aGlzLnliPWEueWI7dGhpcy5DbT0wO3RoaXMudmFsdWU9dm9pZCAwO3RoaXMueWIudGhlbihmdW5jdGlvbihhKXt0aGlzLnZhbHVlPWF9LF8uSGEsdGhpcyl9O18uVGw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChhLGIpLGMpfTt2YXIgVWw9IlN0b3BJdGVyYXRpb24iaW4gXy5oP18uaC5TdG9wSXRlcmF0aW9uOnttZXNzYWdlOiJTdG9wSXRlcmF0aW9uIixzdGFjazoiIn0sVmw9ZnVuY3Rpb24oKXt9O1ZsLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dGhyb3cgVWw7fTtWbC5wcm90b3R5cGUuaHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307Xy5XbD1mdW5jdGlvbihhLGIpe3RoaXMuYj17fTt0aGlzLmE9W107dGhpcy5vPXRoaXMuZj0wO3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg7aWYoMTxjKXtpZihjJTIpdGhyb3cgRXJyb3IoImUiKTtmb3IodmFyIGQ9MDtkPGM7ZCs9Mil0aGlzLnNldChhcmd1bWVudHNbZF0sYXJndW1lbnRzW2QrMV0pfWVsc2UgYSYmdGhpcy5hZGRBbGwoYSl9O18uV2wucHJvdG90eXBlLnlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZn07Xy5XbC5wcm90b3R5cGUuWGI9ZnVuY3Rpb24oKXtYbCh0aGlzKTtmb3IodmFyIGE9W10sYj0wO2I8dGhpcy5hLmxlbmd0aDtiKyspYS5wdXNoKHRoaXMuYlt0aGlzLmFbYl1dKTtyZXR1cm4gYX07Xy5XbC5wcm90b3R5cGUuQ2U9ZnVuY3Rpb24oKXtYbCh0aGlzKTtyZXR1cm4gdGhpcy5hLmNvbmNhdCgpfTtfLlpsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFlsKGEuYixiKX07Cl8uV2wucHJvdG90eXBlLkhrPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8dGhpcy5hLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuYVtiXTtpZihZbCh0aGlzLmIsYykmJnRoaXMuYltjXT09YSlyZXR1cm4hMH1yZXR1cm4hMX07Xy5XbC5wcm90b3R5cGUuUWY9ZnVuY3Rpb24oYSl7aWYodGhpcz09PWEpcmV0dXJuITA7aWYodGhpcy5mIT1hLnlkKCkpcmV0dXJuITE7dmFyIGI9ZmNhO1hsKHRoaXMpO2Zvcih2YXIgYyxkPTA7Yz10aGlzLmFbZF07ZCsrKWlmKCFiKHRoaXMuZ2V0KGMpLGEuZ2V0KGMpKSlyZXR1cm4hMTtyZXR1cm4hMH07dmFyIGZjYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Yn07Xy5XbC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmI9e307dGhpcy5vPXRoaXMuZj10aGlzLmEubGVuZ3RoPTB9OwpfLldsLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oYSl7cmV0dXJuIFlsKHRoaXMuYixhKT8oZGVsZXRlIHRoaXMuYlthXSx0aGlzLmYtLSx0aGlzLm8rKyx0aGlzLmEubGVuZ3RoPjIqdGhpcy5mJiZYbCh0aGlzKSwhMCk6ITF9O3ZhciBYbD1mdW5jdGlvbihhKXtpZihhLmYhPWEuYS5sZW5ndGgpe2Zvcih2YXIgYj0wLGM9MDtiPGEuYS5sZW5ndGg7KXt2YXIgZD1hLmFbYl07WWwoYS5iLGQpJiYoYS5hW2MrK109ZCk7YisrfWEuYS5sZW5ndGg9Y31pZihhLmYhPWEuYS5sZW5ndGgpe3ZhciBlPXt9O2ZvcihjPWI9MDtiPGEuYS5sZW5ndGg7KWQ9YS5hW2JdLFlsKGUsZCl8fChhLmFbYysrXT1kLGVbZF09MSksYisrO2EuYS5sZW5ndGg9Y319O18uZz1fLldsLnByb3RvdHlwZTtfLmcuZ2V0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFlsKHRoaXMuYixhKT90aGlzLmJbYV06Yn07Cl8uZy5zZXQ9ZnVuY3Rpb24oYSxiKXtZbCh0aGlzLmIsYSl8fCh0aGlzLmYrKyx0aGlzLmEucHVzaChhKSx0aGlzLm8rKyk7dGhpcy5iW2FdPWJ9O18uZy5hZGRBbGw9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8uV2wpe3ZhciBiPWEuQ2UoKTthPWEuWGIoKX1lbHNlIGI9Xy5lYyhhKSxhPV8uZGMoYSk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5zZXQoYltjXSxhW2NdKX07Xy5nLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5DZSgpLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXSxmPXRoaXMuZ2V0KGUpO2EuY2FsbChiLGYsZSx0aGlzKX19O18uZy5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgXy5XbCh0aGlzKX07IF8uZy5ocz1mdW5jdGlvbihhKXtYbCh0aGlzKTt2YXIgYj0wLGM9dGhpcy5vLGQ9dGhpcyxlPW5ldyBWbDtlLm5leHQ9ZnVuY3Rpb24oKXtpZihjIT1kLm8pdGhyb3cgRXJyb3IoInIiKTtpZihiPj1kLmEubGVuZ3RoKXRocm93IFVsO3ZhciBlPWQuYVtiKytdO3JldHVybiBhP2U6ZC5iW2VdfTtyZXR1cm4gZX07dmFyIFlsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfTsKdmFyIGFtPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmM9YXx8bnVsbDt0aGlzLkpiPSEhYjt0aGlzLm89Yzt0aGlzLmI9bmV3IF8uV2w7dGhpcy5hPW5ldyAkbCgiIix2b2lkIDApO3RoaXMuYS5uZXh0PXRoaXMuYS5hPXRoaXMuYX0sY209ZnVuY3Rpb24oYSxiKXsoYj1hLmIuZ2V0KGIpKSYmYS5KYiYmKGIucmVtb3ZlKCksYm0oYSxiKSk7cmV0dXJuIGJ9O18uZz1hbS5wcm90b3R5cGU7Xy5nLmdldD1mdW5jdGlvbihhLGIpe3JldHVybihhPWNtKHRoaXMsYSkpP2EudmFsdWU6Yn07Xy5nLnNldD1mdW5jdGlvbihhLGIpe3ZhciBjPWNtKHRoaXMsYSk7Yz9jLnZhbHVlPWI6KGM9bmV3ICRsKGEsYiksdGhpcy5iLnNldChhLGMpLGJtKHRoaXMsYykpfTtfLmcuc2hpZnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmEubmV4dDt0aGlzLmEhPWEmJnRoaXMucm4oYSk7cmV0dXJuIGEudmFsdWV9OwpfLmcucmVtb3ZlPWZ1bmN0aW9uKGEpe3JldHVybihhPXRoaXMuYi5nZXQoYSkpPyh0aGlzLnJuKGEpLCEwKTohMX07Xy5nLnJuPWZ1bmN0aW9uKGEpe2EucmVtb3ZlKCk7dGhpcy5iLnJlbW92ZShhLmtleSl9O18uZy55ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIueWQoKX07dmFyIGdjYT1mdW5jdGlvbihhLGIpe2Eubz1ifTtfLmc9YW0ucHJvdG90eXBlO18uZy5DZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbihhLGIpe3JldHVybiBifSl9O18uZy5YYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYX0pfTtfLmcuY29udGFpbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYj09YX0pfTtfLmcuY2xlYXI9ZnVuY3Rpb24oKXtkbSh0aGlzLDApfTsKXy5nLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5hLm5leHQ7YyE9dGhpcy5hO2M9Yy5uZXh0KWEuY2FsbChiLGMudmFsdWUsYy5rZXksdGhpcyl9O18uZy5tYXA9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD10aGlzLmEubmV4dDtkIT10aGlzLmE7ZD1kLm5leHQpYy5wdXNoKGEuY2FsbChiLGQudmFsdWUsZC5rZXksdGhpcykpO3JldHVybiBjfTtfLmcuc29tZT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmEubmV4dDtjIT10aGlzLmE7Yz1jLm5leHQpaWYoYS5jYWxsKGIsYy52YWx1ZSxjLmtleSx0aGlzKSlyZXR1cm4hMDtyZXR1cm4hMX07Xy5nLmV2ZXJ5PWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMuYS5uZXh0O2MhPXRoaXMuYTtjPWMubmV4dClpZighYS5jYWxsKGIsYy52YWx1ZSxjLmtleSx0aGlzKSlyZXR1cm4hMTtyZXR1cm4hMH07CnZhciBibT1mdW5jdGlvbihhLGIpe2EuSmI/KGIubmV4dD1hLmEubmV4dCxiLmE9YS5hLGEuYS5uZXh0PWIsYi5uZXh0LmE9Yik6KGIuYT1hLmEuYSxiLm5leHQ9YS5hLGEuYS5hPWIsYi5hLm5leHQ9Yik7bnVsbCE9YS5jJiZkbShhLGEuYyl9LGRtPWZ1bmN0aW9uKGEsYil7Zm9yKDthLnlkKCk+Yjspe3ZhciBjPWEuSmI/YS5hLmE6YS5hLm5leHQ7YS5ybihjKTthLm8mJmEubyhjLmtleSxjLnZhbHVlKX19LCRsPWZ1bmN0aW9uKGEsYil7dGhpcy5rZXk9YTt0aGlzLnZhbHVlPWJ9OyRsLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLmEubmV4dD10aGlzLm5leHQ7dGhpcy5uZXh0LmE9dGhpcy5hO2RlbGV0ZSB0aGlzLmE7ZGVsZXRlIHRoaXMubmV4dH07CnZhciBlbT1mdW5jdGlvbihhKXthbS5jYWxsKHRoaXMsYSwhMCk7dGhpcy5mPTB9O18ubShlbSxhbSk7ZW0ucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe2IueWIudGhlbihmdW5jdGlvbigpe18uWmwodGhpcy5iLGEpJiZ0aGlzLmdldChhKS5iPT1iLmImJihiLkNtKz0xLHRoaXMuZis9Yi5DbSl9LF8uSGEsdGhpcyk7dmFyIGM9dGhpcy5nZXQoYSk7YyYmKHRoaXMuZi09Yy5DbSk7ZW0uJC5zZXQuY2FsbCh0aGlzLGEsYil9O2VtLnByb3RvdHlwZS55ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZ9O2VtLnByb3RvdHlwZS5ybj1mdW5jdGlvbihhKXt0aGlzLmYtPWEudmFsdWUuQ207ZW0uJC5ybi5jYWxsKHRoaXMsYSl9Owp2YXIgZm09ZnVuY3Rpb24oYSxiLGMpe18uY2wuY2FsbCh0aGlzLGEsYik7dGhpcy5kYXRhPWN9O18ubShmbSxfLmNsKTt2YXIgaGNhPXt9LGdtPWZ1bmN0aW9uKGEpe3ZhciBiO2EgaW5zdGFuY2VvZiBfLnE/Yj1hLnBiOmI9YS5wcm90b3R5cGUucGI7cmV0dXJuIGJ9O3ZhciBobT17fSxpbT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5xKXt2YXIgYj1nbShhKTthPWhtW2JdPygwLGhtW2JdKShhKToidW5zdXBwb3J0ZWQifWVsc2UgYT0iIithO3JldHVybiBpY2EoYSl9LGljYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9bO1xzXHxcK10vZyxmdW5jdGlvbihhKXtyZXR1cm4ifCIrYS5jaGFyQ29kZUF0KDApKyIrIn0pfSxrbT1mdW5jdGlvbihhKXtyZXR1cm4gam0oYSkuRXR9LGxtPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hJiZudWxsIT1hLnBiJiZudWxsIT1obVthLnBiXX0sam09ZnVuY3Rpb24oYSl7dmFyIGI9Z20oYSk7YT1fLk9hKGEpPyIiOmltKGEpO3JldHVybntwYjpiLGlkOmEsRXQ6YisiOyIrYX19Owp2YXIgamNhPW5ldyBfLkNsLG5tPWZ1bmN0aW9uKCl7dGhpcy5hPXt9O3RoaXMuYj17fX07Xy5KYShubSk7dmFyIG9tPWZ1bmN0aW9uKGEpe3ZhciBiPTA7KDAsXy5hYikoa2NhKGEpLGZ1bmN0aW9uKGEpe2IrKztqY2EuZGlzcGF0Y2hFdmVudChuZXcgZm0oYS5Ycyx0aGlzLHtsZjphLmxmLHJlcXVlc3Q6YS5VbixRcTphLlFxLGFDOmEuYUMsd1k6YS5xdn0pKX0sYSk7MDxiJiYoYS5hPXt9LGEuYj17fSl9LGtjYT1mdW5jdGlvbihhKXt2YXIgYj1bXSxjPXt9O18uJGIoYS5hLGZ1bmN0aW9uKGEpeygwLF8uYWIpKGEsZnVuY3Rpb24oYSl7dHJ5e3ZhciBkPWEucXYrIiwiK2ttKGEuUXEpfWNhdGNoKGspe1VqKGspO3JldHVybn0iYSIhPWEuWHMmJmEuVW4mJnRoaXMuYltkXXx8Y1tkXXx8KGNbZF09ITAsYi5wdXNoKGEpKX0sdGhpcyl9LGEpO3JldHVybiBifTsKLyoKIFBvcnRpb25zIG9mIHRoaXMgY29kZSBhcmUgZnJvbSBNb2NoaUtpdCwgcmVjZWl2ZWQgYnkKIFRoZSBDbG9zdXJlIEF1dGhvcnMgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBBbGwgb3RoZXIgY29kZSBpcyBDb3B5cmlnaHQKIDIwMDUtMjAwOSBUaGUgQ2xvc3VyZSBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgoqLwp2YXIgem0sc20sQ20sRW0sdG07Xy5wbT1mdW5jdGlvbihhLGIpe3RoaXMudz1bXTt0aGlzLmNiPWE7dGhpcy5oYT1ifHxudWxsO3RoaXMuYz10aGlzLmI9ITE7dGhpcy5vPXZvaWQgMDt0aGlzLmVhPXRoaXMuSmE9dGhpcy5qYT0hMTt0aGlzLmk9MDt0aGlzLmY9bnVsbDt0aGlzLmc9MH07Xy5wbS5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGEpe2lmKHRoaXMuYil0aGlzLm8gaW5zdGFuY2VvZiBfLnBtJiZ0aGlzLm8uY2FuY2VsKCk7ZWxzZXtpZih0aGlzLmYpe3ZhciBiPXRoaXMuZjtkZWxldGUgdGhpcy5mO2E/Yi5jYW5jZWwoYSk6KGIuZy0tLDA+PWIuZyYmYi5jYW5jZWwoKSl9dGhpcy5jYj90aGlzLmNiLmNhbGwodGhpcy5oYSx0aGlzKTp0aGlzLmVhPSEwO3RoaXMuYnx8dGhpcy5hKG5ldyBxbSh0aGlzKSl9fTtfLnBtLnByb3RvdHlwZS5MYT1mdW5jdGlvbihhLGIpe3RoaXMuamE9ITE7cm0odGhpcyxhLGIpfTsKdmFyIHJtPWZ1bmN0aW9uKGEsYixjKXthLmI9ITA7YS5vPWM7YS5jPSFiO3NtKGEpfSx1bT1mdW5jdGlvbihhKXtpZihhLmIpe2lmKCFhLmVhKXRocm93IG5ldyB0bShhKTthLmVhPSExfX07Xy5wbS5wcm90b3R5cGUuY2FsbGJhY2s9ZnVuY3Rpb24oYSl7dW0odGhpcyk7cm0odGhpcywhMCxhKX07Xy5wbS5wcm90b3R5cGUuYT1mdW5jdGlvbihhKXt1bSh0aGlzKTtybSh0aGlzLCExLGEpfTtfLndtPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy52bShhLGIsbnVsbCxjKX07Xy5NbD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8udm0oYSxudWxsLGIsYyl9O18ueG09ZnVuY3Rpb24oYSxiLGMpe18udm0oYSxiLGIsYyl9O18udm09ZnVuY3Rpb24oYSxiLGMsZCl7YS53LnB1c2goW2IsYyxkXSk7YS5iJiZzbShhKTtyZXR1cm4gYX07Cl8ucG0ucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1uZXcgXy5layhmdW5jdGlvbihhLGIpe2Q9YTtlPWJ9KTtfLnZtKHRoaXMsZCxmdW5jdGlvbihhKXthIGluc3RhbmNlb2YgcW0/Zi5jYW5jZWwoKTplKGEpfSk7cmV0dXJuIGYudGhlbihhLGIsYyl9O3ZqKF8ucG0pO3ZhciB5bT1mdW5jdGlvbihhLGIpe2IgaW5zdGFuY2VvZiBfLnBtP18ud20oYSwoMCxfLmwpKGIuTWUsYikpOl8ud20oYSxmdW5jdGlvbigpe3JldHVybiBifSl9O18ucG0ucHJvdG90eXBlLk1lPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnBtO18udm0odGhpcyxiLmNhbGxiYWNrLGIuYSxiKTthJiYoYi5mPXRoaXMsdGhpcy5nKyspO3JldHVybiBifTtfLnBtLnByb3RvdHlwZS5FcT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEVycm9yfTt6bT1mdW5jdGlvbihhKXtyZXR1cm4oMCxfLmZiKShhLncsZnVuY3Rpb24oYSl7cmV0dXJuIF8uT2EoYVsxXSl9KX07CnNtPWZ1bmN0aW9uKGEpe2lmKGEuaSYmYS5iJiZ6bShhKSl7dmFyIGI9YS5pLGM9QW1bYl07YyYmKF8uaC5jbGVhclRpbWVvdXQoYy5hKSxkZWxldGUgQW1bYl0pO2EuaT0wfWEuZiYmKGEuZi5nLS0sZGVsZXRlIGEuZik7Yj1hLm87Zm9yKHZhciBkPWM9ITE7YS53Lmxlbmd0aCYmIWEuamE7KXt2YXIgZT1hLncuc2hpZnQoKSxmPWVbMF0saz1lWzFdO2U9ZVsyXTtpZihmPWEuYz9rOmYpdHJ5e3ZhciBuPWYuY2FsbChlfHxhLmhhLGIpO18uQ2EobikmJihhLmM9YS5jJiYobj09Ynx8YS5FcShuKSksYS5vPWI9bik7aWYod2ooYil8fCJmdW5jdGlvbiI9PT10eXBlb2YgXy5oLlByb21pc2UmJmIgaW5zdGFuY2VvZiBfLmguUHJvbWlzZSlkPSEwLGEuamE9ITB9Y2F0Y2gocCl7Yj1wLGEuYz0hMCx6bShhKXx8KGM9ITApfX1hLm89YjtkPyhuPSgwLF8ubCkoYS5MYSxhLCEwKSxkPSgwLF8ubCkoYS5MYSxhLCExKSxiIGluc3RhbmNlb2YgXy5wbT8oXy52bShiLG4sZCksYi5KYT0hMCk6Yi50aGVuKG4sCmQpKTohYS5FcShiKXx8YiBpbnN0YW5jZW9mIHFtfHwoYz1hLmM9ITApO2MmJihiPW5ldyBCbShiKSxBbVtiLmFdPWIsYS5pPWIuYSl9O0NtPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnBtO2IuY2FsbGJhY2soYSk7cmV0dXJuIGJ9O18uRG09ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8ucG07Yi5jYWxsYmFjaygpO18ud20oYixmdW5jdGlvbigpe3JldHVybiBhfSk7cmV0dXJuIGJ9O0VtPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnBtO2IuYShhKTtyZXR1cm4gYn07dG09ZnVuY3Rpb24oYSl7Xy5YYS5jYWxsKHRoaXMpO3RoaXMuaWM9YX07Xy5tKHRtLF8uWGEpO3RtLnByb3RvdHlwZS5tZXNzYWdlPSJEZWZlcnJlZCBoYXMgYWxyZWFkeSBmaXJlZCI7dG0ucHJvdG90eXBlLm5hbWU9IkFscmVhZHlDYWxsZWRFcnJvciI7dmFyIHFtPWZ1bmN0aW9uKGEpe18uWGEuY2FsbCh0aGlzKTt0aGlzLmljPWF9O18ubShxbSxfLlhhKTtxbS5wcm90b3R5cGUubWVzc2FnZT0iRGVmZXJyZWQgd2FzIGNhbmNlbGVkIjsgcW0ucHJvdG90eXBlLm5hbWU9IkNhbmNlbGVkRXJyb3IiO3ZhciBCbT1mdW5jdGlvbihhKXt0aGlzLmE9Xy5oLnNldFRpbWVvdXQoKDAsXy5sKSh0aGlzLmIsdGhpcyksMCk7dGhpcy5BZD1hfTtCbS5wcm90b3R5cGUuYj1mdW5jdGlvbigpe2RlbGV0ZSBBbVt0aGlzLmFdO3Rocm93IHRoaXMuQWQ7fTt2YXIgQW09e307CnZhciBGbT1mdW5jdGlvbigpe3RoaXMubz1uZXcgXy5XbDt0aGlzLmM9bmV3IF8uV2w7dGhpcy5nPW5ldyBfLldsO3RoaXMuYT1uZXcgXy5XbDt0aGlzLmY9bmV3IF8uV2w7dGhpcy5iPW5ldyBfLldsO3RoaXMudz1bXTt0aGlzLiRmPW5ldyBfLnBtfTtGbS5wcm90b3R5cGUuVWM9ZnVuY3Rpb24oYSl7YT1hfHxfLmg7dmFyIGI9YS5BRl9pbml0RGF0YUtleXMsYz1hLkFGX2luaXREYXRhQ2h1bmtRdWV1ZSxkPWEuQUZfZGF0YVNlcnZpY2VSZXF1ZXN0cztiJiZjJiZkP3RoaXMud2EoYixjLGQpOihiPSgwLF8ubCkodGhpcy53YSx0aGlzKSxfLkZhKCJBRl9pbml0RGF0YUluaXRpYWxpemVDYWxsYmFjayIsYixhKSk7Yj0oMCxfLmwpKHRoaXMuaSx0aGlzKTtfLkZhKCJBRl9pbml0RGF0YUNhbGxiYWNrIixiLGEpfTsKRm0ucHJvdG90eXBlLndhPWZ1bmN0aW9uKGEsYixjKXtiPWJ8fFtdO2E9YSYmYS5sZW5ndGg/YTooMCxfLmRiKShiLGZ1bmN0aW9uKGEpe3JldHVybiBhLmtleX0pO3ZhciBkPWN8fHt9OygwLF8uYWIpKGEsZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8ucG07dGhpcy5nLnNldChhLGIpO3RoaXMuYS5zZXQoYSxiKTtkW2FdJiYoZFthXS5pZCs9IiIsZFthXS5yZXF1ZXN0PyhiPXRoaXMuYi5nZXQoZFthXS5pZCl8fFtdLGIucHVzaCh7T0k6YSxrZXk6ZFthXX0pLHRoaXMuYi5zZXQoZFthXS5pZCxiKSk6dGhpcy5mLnNldChoaihuZXcgYmooZFthXS5pZCsiIixfLkhhKSxudWxsKSxhKSl9LHRoaXMpOygwLF8uYWIpKHRoaXMudyxmdW5jdGlvbihhKXthPUdtKHRoaXMsYSk7dGhpcy5hLnJlbW92ZShhKX0sdGhpcyk7KDAsXy5hYikoYiwoMCxfLmwpKHRoaXMuaSx0aGlzKSk7dGhpcy4kZi5jYWxsYmFjayhudWxsKX07CnZhciBsY2E9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ud20oYS4kZi5NZSgpLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5sKSh0aGlzLmphLHRoaXMpfSxhKX07Rm0ucHJvdG90eXBlLmphPWZ1bmN0aW9uKGEpe2E9R20odGhpcyxhKTtyZXR1cm4gbnVsbCE9YSYmXy5abCh0aGlzLmEsYSl9O3ZhciBHbT1mdW5jdGlvbihhLGIpe2lmKF8uRGEoYikpcmV0dXJuIGI7dmFyIGM9Yi5sZj9iLmxmOnJqKGIpO2lmKF8uWmwoYS5iLGMpKXtpZighYi5yZXF1ZXN0KXJldHVybiBudWxsO2Zvcih2YXIgZD1iLnJlcXVlc3QuY29uc3RydWN0b3IsZT1hLmIuZ2V0KGMudG9TdHJpbmcoKSksZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgaz1oaihjLG5ldyBkKGVbZl0ua2V5LnJlcXVlc3QpKTthLmYuc2V0KGssZVtmXS5PSSl9YS5iLnJlbW92ZShjLnRvU3RyaW5nKCkpfWI9Yi5sZj9oaihiLmxmLGIucmVxdWVzdCk6dGooYik7cmV0dXJuIF8uWmwoYS5mLGIpP2EuZi5nZXQoYik6bnVsbH07CkZtLnByb3RvdHlwZS5pPWZ1bmN0aW9uKGEpe3ZhciBiPWEua2V5LGM9dGhpcy5hLmdldChiLG51bGwpO2lmKGMpe3ZhciBkPXtFcTphLmlzRXJyb3J8fCExLGRhdGE6YS5kYXRhfTt0aGlzLm8uc2V0KGIsZCk7dmFyIGU9YS5oYXNoO2UmJnRoaXMuYy5zZXQoZSxiKTthLmlzRXJyb3I/KGE9RXJyb3IoInNgIitiKyJgIitUYmEoZCkpLGMuYShhKSk6Yy5jYWxsYmFjayhkLmRhdGEpfX07CnZhciBIbT1mdW5jdGlvbihhLGIpe3JldHVybihhPWEuby5nZXQoYikpJiYhYS5FcT8oXy5PYShhLmRhdGEpJiYoYS5kYXRhPWEuZGF0YSgpKSxhLmRhdGEpOm51bGx9LG5jYT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuYy5nZXQoYik7cmV0dXJuIGM/Xy5payhIbShhLGMpKTptY2EoYSkudGhlbihmdW5jdGlvbigpe3ZhciBhPXRoaXMuYy5nZXQoYik7cmV0dXJuIGE/Xy5payhIbSh0aGlzLGEpKTpfLmlrKG51bGwpfSxudWxsLGEpfSxtY2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuJGYudGhlbihmdW5jdGlvbigpe3JldHVybiBfLm5rKCgwLF8uZGIpKHRoaXMuYS5YYigpLGZ1bmN0aW9uKGEpe3JldHVybiBhLnRoZW4obnVsbCxmdW5jdGlvbigpe3JldHVybiBudWxsfSl9KSl9LG51bGwsYSl9OwpGbS5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbihhKXtyZXR1cm4gXy53bSh0aGlzLiRmLk1lKCksZnVuY3Rpb24oKXtpZighdGhpcy5qYShhKSl0aHJvdyBFcnJvcigidGAiK2EpO3ZhciBiPUdtKHRoaXMsYSksYz10aGlzLmEuZ2V0KGIsbnVsbCkuTWUoKTtfLndtKGMsZnVuY3Rpb24oKXtyZXR1cm4gSG0odGhpcyxiKX0sdGhpcyk7cmV0dXJuIGN9LHRoaXMpfTtGbS5wcm90b3R5cGUuZWE9ZnVuY3Rpb24oYSl7dmFyIGI9R20odGhpcyxhKTtudWxsIT1iJiYodGhpcy4kZi5iJiZ0aGlzLmEucmVtb3ZlKGIpLHRoaXMuby5yZW1vdmUoYSksdGhpcy53LnB1c2goYiksdGhpcy5nLnNldChiLEVtKCJEYXRhIGl0ZW0gaGFzIGJlZW4gY2xlYXJlZDogIithKSkpfTsKdmFyIEltPWZ1bmN0aW9uKCl7dGhpcy5iPVtdO3RoaXMuYT1bXX0sSm09ZnVuY3Rpb24oYSl7MD09YS5iLmxlbmd0aCYmKGEuYj1hLmEsYS5iLnJldmVyc2UoKSxhLmE9W10pfSxLbT1mdW5jdGlvbihhKXtKbShhKTtyZXR1cm4gYS5iLnBvcCgpfSxMbT1mdW5jdGlvbihhKXtKbShhKTtyZXR1cm4gXy5aYShhLmIpfTtJbS5wcm90b3R5cGUueWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLmxlbmd0aCt0aGlzLmEubGVuZ3RofTt2YXIgTW09ZnVuY3Rpb24oYSl7cmV0dXJuIDA9PWEuYi5sZW5ndGgmJjA9PWEuYS5sZW5ndGh9O0ltLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYj1bXTt0aGlzLmE9W119O0ltLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gXy5sYih0aGlzLmIsYSl8fF8ubGIodGhpcy5hLGEpfTsKSW0ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmI7dmFyIGM9aWFhKGIsYSk7MDw9Yz8ob2IoYixjKSxiPSEwKTpiPSExO3JldHVybiBifHxfLnBiKHRoaXMuYSxhKX07SW0ucHJvdG90eXBlLlhiPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPVtdLGI9dGhpcy5iLmxlbmd0aC0xOzA8PWI7LS1iKWEucHVzaCh0aGlzLmJbYl0pO3ZhciBjPXRoaXMuYS5sZW5ndGg7Zm9yKGI9MDtiPGM7KytiKWEucHVzaCh0aGlzLmFbYl0pO3JldHVybiBhfTsKdmFyIE5tPXt9LG9jYT1mdW5jdGlvbihhLGIpe2E9T20oYSxiKTtyZXR1cm4gMD09YS5sZW5ndGg/bnVsbDphWzBdLlFifSxRbT1mdW5jdGlvbihhLGIsYyl7aWYoYS5wYil7Yz1jfHxiLnNwbGl0KCI7IilbMF07dmFyIGQ9cmQuZihhLnBiKTtpZihjPT1kKXtpZihrbShhKT09YilyZXR1cm4gYX1lbHNlIGlmKGQ9T20oZCxjKSwwIT1kLmxlbmd0aClyZXR1cm4gUG0oYSxkLGMsdm9pZCAwKS5tYXBbYl19fSxSbT1mdW5jdGlvbihhKXt2YXIgYj1bXSxjPW5ldyBJbTtmb3IoYy5hLnB1c2goYSk7IU1tKGMpOyl7dmFyIGQ9S20oYyk7bG0oZCkmJmIucHVzaChkKTt2YXIgZSxmOyhlPWQucGIpJiYoZj1ObVtlXSkmJl8uJGIoZixmdW5jdGlvbihhKXsoMCxfLmFiKShhLGZ1bmN0aW9uKGEpe2E9YS5RZChkKTsoMCxfLmFiKShhLGZ1bmN0aW9uKGEpe251bGwhPWEmJmMuYS5wdXNoKGEpfSl9KX0pfXJldHVybiBifSxwY2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz1yZC5mKGEucGIpO2lmKGM9PWIpcmV0dXJuW2FdOwpjPU9tKGMsYik7cmV0dXJuIDA9PWMubGVuZ3RoP1tdOlBtKGEsYyxiKS5saXN0fSxPbT1mdW5jdGlvbihhLGIpe3ZhciBjPU5tW2FdO2lmKCFjKXJldHVybltdO2lmKGE9Y1tiXSlyZXR1cm4gYTtjW2JdPVtdO2Zvcih2YXIgZCBpbiBjKWE9Y1tkXSwoMCxfLmFiKShhLGZ1bmN0aW9uKGEpe3ZhciBlPU9tKGQsYik7KDAsXy5hYikoZSxmdW5jdGlvbihkKXtjW2JdLnB1c2goe1FkOmZ1bmN0aW9uKGIpe3ZhciBjPVtdO2I9YS5RZChiKTtmb3IodmFyIGU9MDtlPGIubGVuZ3RoO2UrKyljLnB1c2guYXBwbHkoYyxkLlFkKGJbZV0pKTtyZXR1cm4gY30sUWI6YS5RYn0pfSl9KTtyZXR1cm4gY1tiXX0scWNhPWZ1bmN0aW9uKGEpe2EuU2MoKS5hPW51bGx9LFBtPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuU2MoKTtlLmF8fChlLmE9e30pO3ZhciBmPWUuYVtjXTtpZihmJiYhZClyZXR1cm4gZjtmPWUuYVtjXT17bGlzdDpbXSxtYXA6e319OygwLF8uYWIpKGIsZnVuY3Rpb24oYil7Yj1iLlFkKGEpOyBmLmxpc3QucHVzaC5hcHBseShmLmxpc3QsYil9KTtobVtjXSYmKDAsXy5hYikoZi5saXN0LGZ1bmN0aW9uKGEpe2YubWFwW2ttKGEpXT1hfSk7cmV0dXJuIGZ9Owp2YXIgU209ZnVuY3Rpb24oYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn07U20ucHJvdG90eXBlLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn07U20ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTbSh0aGlzLmEsdGhpcy5iKX07dmFyIFRtPWZ1bmN0aW9uKGEpe3RoaXMuYT1bXTtpZihhKWE6e2lmKGEgaW5zdGFuY2VvZiBUbSl7dmFyIGI9YS5DZSgpO2E9YS5YYigpO2lmKDA+PXRoaXMueWQoKSl7Zm9yKHZhciBjPXRoaXMuYSxkPTA7ZDxiLmxlbmd0aDtkKyspYy5wdXNoKG5ldyBTbShiW2RdLGFbZF0pKTticmVhayBhfX1lbHNlIGI9Xy5lYyhhKSxhPV8uZGMoYSk7Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKyl0aGlzLmluc2VydChiW2RdLGFbZF0pfX07VG0ucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuYTtjLnB1c2gobmV3IFNtKGEsYikpO2E9Yy5sZW5ndGgtMTtiPXRoaXMuYTtmb3IoYz1iW2FdOzA8YTspe3ZhciBkPWEtMT4+MTtpZihiW2RdLmE+Yy5hKWJbYV09YltkXSxhPWQ7ZWxzZSBicmVha31iW2FdPWN9OwpUbS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hLGI9YS5sZW5ndGgsYz1hWzBdO2lmKCEoMD49Yikpe2lmKDE9PWIpbWIoYSk7ZWxzZXthWzBdPWEucG9wKCk7YT0wO2I9dGhpcy5hO2Zvcih2YXIgZD1iLmxlbmd0aCxlPWJbYV07YTxkPj4xOyl7dmFyIGY9MiphKzEsaz0yKmErMjtmPWs8ZCYmYltrXS5hPGJbZl0uYT9rOmY7aWYoYltmXS5hPmUuYSlicmVhaztiW2FdPWJbZl07YT1mfWJbYV09ZX1yZXR1cm4gYy5vYSgpfX07dmFyIHJjYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5hWzBdJiZhLmFbMF0uYX07Xy5nPVRtLnByb3RvdHlwZTtfLmcuWGI9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5hLGI9W10sYz1hLmxlbmd0aCxkPTA7ZDxjO2QrKyliLnB1c2goYVtkXS5vYSgpKTtyZXR1cm4gYn07Xy5nLkNlPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuYSxiPVtdLGM9YS5sZW5ndGgsZD0wO2Q8YztkKyspYi5wdXNoKGFbZF0uYSk7cmV0dXJuIGJ9OyBfLmcuSGs9ZnVuY3Rpb24oYSl7cmV0dXJuKDAsXy5mYikodGhpcy5hLGZ1bmN0aW9uKGIpe3JldHVybiBiLm9hKCk9PWF9KX07Xy5nLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBUbSh0aGlzKX07Xy5nLnlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5sZW5ndGh9O18uZy5jbGVhcj1mdW5jdGlvbigpe21iKHRoaXMuYSl9Owp2YXIgVW0sVm0sV20sc2NhO1VtPWZ1bmN0aW9uKGEpe2lmKGEueWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBhLnlkKWE9YS55ZCgpO2Vsc2UgaWYoTmEoYSl8fF8uRGEoYSkpYT1hLmxlbmd0aDtlbHNle3ZhciBiPTAsYztmb3IoYyBpbiBhKWIrKzthPWJ9cmV0dXJuIGF9O1ZtPWZ1bmN0aW9uKGEpe2lmKGEuWGImJiJmdW5jdGlvbiI9PXR5cGVvZiBhLlhiKXJldHVybiBhLlhiKCk7aWYoXy5EYShhKSlyZXR1cm4gYS5zcGxpdCgiIik7aWYoTmEoYSkpe2Zvcih2YXIgYj1bXSxjPWEubGVuZ3RoLGQ9MDtkPGM7ZCsrKWIucHVzaChhW2RdKTtyZXR1cm4gYn1yZXR1cm4gXy5kYyhhKX07V209ZnVuY3Rpb24oYSl7aWYoYS5DZSYmImZ1bmN0aW9uIj09dHlwZW9mIGEuQ2UpcmV0dXJuIGEuQ2UoKTtpZighYS5YYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGEuWGIpe2lmKE5hKGEpfHxfLkRhKGEpKXt2YXIgYj1bXTthPWEubGVuZ3RoO2Zvcih2YXIgYz0wO2M8YTtjKyspYi5wdXNoKGMpO3JldHVybiBifXJldHVybiBfLmVjKGEpfX07Cl8uaG49ZnVuY3Rpb24oYSxiLGMpe2lmKGEuZm9yRWFjaCYmImZ1bmN0aW9uIj09dHlwZW9mIGEuZm9yRWFjaClhLmZvckVhY2goYixjKTtlbHNlIGlmKE5hKGEpfHxfLkRhKGEpKSgwLF8uYWIpKGEsYixjKTtlbHNlIGZvcih2YXIgZD1XbShhKSxlPVZtKGEpLGY9ZS5sZW5ndGgsaz0wO2s8ZjtrKyspYi5jYWxsKGMsZVtrXSxkJiZkW2tdLGEpfTtzY2E9ZnVuY3Rpb24oYSxiKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5ldmVyeSlyZXR1cm4gYS5ldmVyeShiLHZvaWQgMCk7aWYoTmEoYSl8fF8uRGEoYSkpcmV0dXJuKDAsXy5nYikoYSxiLHZvaWQgMCk7Zm9yKHZhciBjPVdtKGEpLGQ9Vm0oYSksZT1kLmxlbmd0aCxmPTA7ZjxlO2YrKylpZighYi5jYWxsKHZvaWQgMCxkW2ZdLGMmJmNbZl0sYSkpcmV0dXJuITE7cmV0dXJuITB9Owp2YXIgQW47Xy54bj1mdW5jdGlvbihhKXt0aGlzLmE9bmV3IF8uV2w7YSYmdGhpcy5hZGRBbGwoYSl9O0FuPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVybiJvYmplY3QiPT1iJiZhfHwiZnVuY3Rpb24iPT1iPyJvIitfLlJhKGEpOmIuc3Vic3RyKDAsMSkrYX07Xy5nPV8ueG4ucHJvdG90eXBlO18uZy55ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEueWQoKX07Xy5nLmFkZD1mdW5jdGlvbihhKXt0aGlzLmEuc2V0KEFuKGEpLGEpfTtfLmcuYWRkQWxsPWZ1bmN0aW9uKGEpe2E9Vm0oYSk7Zm9yKHZhciBiPWEubGVuZ3RoLGM9MDtjPGI7YysrKXRoaXMuYWRkKGFbY10pfTtfLmcucmVtb3ZlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEucmVtb3ZlKEFuKGEpKX07Xy5nLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5hLmNsZWFyKCl9O18uZy5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gXy5abCh0aGlzLmEsQW4oYSkpfTsKXy5nLkl6PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnhuO2E9Vm0oYSk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY107dGhpcy5jb250YWlucyhkKSYmYi5hZGQoZCl9fTtfLmcuWGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLlhiKCl9O18uZy5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgXy54bih0aGlzKX07Xy5nLlFmPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnlkKCk9PVVtKGEpJiZ0Y2EodGhpcyxhKX07CnZhciB0Y2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz1VbShiKTtpZihhLnlkKCk+YylyZXR1cm4hMTshKGIgaW5zdGFuY2VvZiBfLnhuKSYmNTxjJiYoYj1uZXcgXy54bihiKSk7cmV0dXJuIHNjYShhLGZ1bmN0aW9uKGEpe3ZhciBjPWI7cmV0dXJuIGMuY29udGFpbnMmJiJmdW5jdGlvbiI9PXR5cGVvZiBjLmNvbnRhaW5zP2MuY29udGFpbnMoYSk6Yy5IayYmImZ1bmN0aW9uIj09dHlwZW9mIGMuSGs/Yy5IayhhKTpOYShjKXx8Xy5EYShjKT9fLmxiKGMsYSk6ZmMoYyxhKX0pfTtfLnhuLnByb3RvdHlwZS5ocz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuaHMoITEpfTsKdmFyIEJuPWZ1bmN0aW9uKGEpe3RoaXMuSmI9bmV3IGVtKDUwKTt0aGlzLnc9bmV3IFRtO3RoaXMuYT17fTt0aGlzLndhPSExO3RoaXMuamE9Xy5vaygpO3RoaXMuYj1hO3RoaXMuZz17fTtubS5TYigpO3RoaXMuYj9fLndtKGxjYSh0aGlzLmIpLGZ1bmN0aW9uKGEpe3RoaXMuZj1hO3RoaXMuamEucmVzb2x2ZSh0aGlzKTt0aGlzLndhPSEwfSx0aGlzKToodGhpcy5qYS5yZXNvbHZlKHRoaXMpLHRoaXMud2E9ITApO3RoaXMuYz1bXTt0aGlzLm89e319LENuPWZ1bmN0aW9uKGEsYil7YS5jLnB1c2goYik7cmV0dXJuIGEuamEueWIudGhlbigoMCxfLmwpKGEuZWEsYSkpfSxLbixJbixIbjtCbi5wcm90b3R5cGUuZWE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7Yjx0aGlzLmMubGVuZ3RoO2IrKyl0cnl7dGhpcy5jW2JdKGEpfWNhdGNoKGMpe1VqKGMpfXRoaXMuYz1bXX07CnZhciBFbj1mdW5jdGlvbihhLGIpe0RuKGEpO3ZhciBjPWIuUWUoKSxkPVlpKGIuYSksZT1paihiKTtkPXtsZjpjLHJlcXVlc3Q6ZH07aWYoIV8uWmwoYS5KYi5iLGUpJiZhLmYmJiEoZSBpbiBhLmcpJiZhLmYoZCkpe3ZhciBmPV8ub2soKTtfLnZtKGEuYi5nZXREYXRhKGQsMCksXy5TYSh1Y2EsYyxmKSwoMCxfLmwpKGYucmVqZWN0LGYpKTthLmdbZV09bnVsbDthLnB1dChiLGYpO18ucmsoZi55YiwoMCxfLmwpKGEuYi5lYSxhLmIsZCwwKSl9cmV0dXJuIGEuSmIuZ2V0KGUpfTtCbi5wcm90b3R5cGUuaT1mdW5jdGlvbihhLGIpe2I9Rm4odGhpcyxiKTsoMCxfLmFiKShiLGZ1bmN0aW9uKGIpe3ZhciBjPWIucGI7Yj1iLmlkO3RoaXMuYVtjXXx8KHRoaXMuYVtjXT17fSk7Yz10aGlzLmFbY107Y1tiXXx8KGNbYl09bmV3IF8ueG4pO2NbYl0uYWRkKGEpfSx0aGlzKX07CnZhciBGbj1mdW5jdGlvbihhLGIpe2I9Um0oYik7cmV0dXJuKDAsXy5kYikoYixmdW5jdGlvbihhKXtyZXR1cm4gam0oYSl9LGEpfSxHbj1mdW5jdGlvbihhLGIsYyl7bG0oYykmJihjPSgwLF8uY2IpKFJtKGMpLGZ1bmN0aW9uKGEpe3JldHVybiBsbShhKX0pLCgwLF8uYWIpKGMsZnVuY3Rpb24oYSl7YT1qbShhKTt0aGlzLmFbYS5wYl0mJnRoaXMuYVthLnBiXVthLmlkXSYmdGhpcy5hW2EucGJdW2EuaWRdLnJlbW92ZShiKX0sYSkpfSx2Y2E9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPWIuWGIoKTsoMCxfLmFiKShiLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuSmIuZ2V0KGEpO2lmKGIpe3ZhciBmPWIudmFsdWU7aWYoZil7dmFyIHA9UW0oZixkKTtwJiYocD1jKHApKSYmZS5wdXNoKHtyZXF1ZXN0OmIucmVxdWVzdCxTaTpiLlNpLHJlc3BvbnNlOmYsY0M6cH0pO3RoaXMuaShhLGYpfX19LGEpfTsKQm4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihhLGIpe3ZhciBjPVtdO2E9am0oYSk7dmFyIGQ9dGhpcy5hW2EucGJdP3RoaXMuYVthLnBiXVthLmlkXTpudWxsO2QmJjAhPWQuYS5mJiZ2Y2EodGhpcyxkLGIsYS5FdCxjKTtyZXR1cm4gY307dmFyIHdjYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1qbShiKSxmPWEuYVtlLnBiXT9hLmFbZS5wYl1bZS5pZF06bnVsbDtmJiYwIT1mLmEuZiYmKGY9Zi5YYigpLCgwLF8uYWIpKGYsZnVuY3Rpb24oYSl7YT10aGlzLkpiLmdldChhKTtpZihjKXt2YXIgZT1wY2EoYS52YWx1ZSxiLnBiKTtpZihfLmliKGUsZnVuY3Rpb24oYSl7cmV0dXJuIWMoYSl9KSlyZXR1cm59SG4odGhpcyxhLlNpKTtkLnB1c2goYSl9LGEpLGRlbGV0ZSBhLmFbZS5wYl1bZS5pZF0pO3JldHVybiBkfSx1Y2E9ZnVuY3Rpb24oYSxiLGMpe2IucmVzb2x2ZShuZXcgYS5hKGMpKX07CkJuLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24oYSxiKXtEbih0aGlzKTt2YXIgYz1hLlFlKCksZD1ZaShhLmEpLGU9aWooYSksZj1uZXcgZWNhKGIsYyxkKTtpZig1MDw9dGhpcy5KYi55ZCgpKWZvcig7MCE9dGhpcy53LmEubGVuZ3RoJiZyY2EodGhpcy53KTw9KDAsXy5VYSkoKTspdGhpcy5KYi5yZW1vdmUodGhpcy53LnJlbW92ZSgpKTt0aGlzLkpiLnNldChlLGYpO2IueWIudGhlbihmdW5jdGlvbihhKXt2YXIgYj1JbihjKTtiJiZ0aGlzLncuaW5zZXJ0KGYuYStiLGUpO2xtKGEpJiZ0aGlzLmkoZSxhKX0sKDAsXy5sKShfLkpuLHRoaXMsZSksdGhpcyl9O18uSm49ZnVuY3Rpb24oYSl7dGhpcy5KYi5yZW1vdmUoYSl9OwpLbj1mdW5jdGlvbihhLGIpe3ZhciBjPWIuUWUoKSxkPVlpKGIuYSk7RG4oYSk7dmFyIGU9aWooYik7ZD1fLlpsKGEuSmIuYixlKXx8IShlIGluIGEuZykmJiEhYS5mJiZhLmYoe2xmOmMscmVxdWVzdDpkfSk7Yz1JbihjKTtpZihkJiZjKXt2YXIgZj0oMCxfLlVhKSgpOyhlPWEuSmIuZ2V0KGUpKSYmKGQ9Zi1lLmE8Yyl9Xy5DYShhLm9bYi5RZSgpLnRvU3RyaW5nKCldKXx8KGEub1tiLlFlKCkudG9TdHJpbmcoKV09e3VFOjAsdkU6MH0pO2QmJmEub1tiLlFlKCkudG9TdHJpbmcoKV0udUUrKzthLm9bYi5RZSgpLnRvU3RyaW5nKCldLnZFKys7cmV0dXJuIGR9O0luPWZ1bmN0aW9uKGEpe2lmKG51bGwhPWEuYS5wcm90b3R5cGUucGImJihhPWhjYVtnbShhLmEpXSkpcmV0dXJuIGEuYSgpfTsKSG49ZnVuY3Rpb24oYSxiLGMpe0RuKGEpO2lmKGIgaW5zdGFuY2VvZiBfLnEpcmV0dXJuIHdjYShhLGIsYyk7dmFyIGQ9aWooYik7Yj1hLkpiLmdldChkKTthLkpiLnJlbW92ZShkKTthLmdbZF09bnVsbDtyZXR1cm4gYj8oYi55Yi50aGVuKGZ1bmN0aW9uKGEpe0duKHRoaXMsZCxhKX0sdm9pZCAwLGEpLFtiXSk6W119O0JuLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGEpe3RoaXMuSmIuZm9yRWFjaChhKX07dmFyIERuPWZ1bmN0aW9uKGEpe2lmKCFhLndhKXRocm93IEVycm9yKCJ1Iik7fSx4Y2E9ZnVuY3Rpb24oYSxiKXtnY2EoYS5KYiwoMCxfLmwpKGZ1bmN0aW9uKGEsZCl7dmFyIGM9aWooZC5TaSk7R24odGhpcyxjLGQudmFsdWUpO2IoYSxkKX0sYSkpfTtCbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBFbih0aGlzLHNqKGEpKS55Yn07Qm4ucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe0RuKHRoaXMpO3JldHVybiBLbih0aGlzLHNqKFhpKGEpKSl9Owp2YXIgTG49bmV3IHdpKCJOd0gwSCIsdm9pZCAwLFtfLk5pXSk7dmFyIE1uPWZ1bmN0aW9uKGEpe3RoaXMuY2FjaGU9YTt4Y2EodGhpcy5jYWNoZSwoMCxfLmwpKHRoaXMuTkssdGhpcykpfSx5Y2E9ZnVuY3Rpb24oYSxiKXtDbihhLmNhY2hlLGZ1bmN0aW9uKGMpe2M9SG4oYyxiLHZvaWQgMCk7KDAsXy5hYikoYyxmdW5jdGlvbihiKXtiLnZhbHVlJiZhLlJpKCExLGIuU2ksYi52YWx1ZSl9KX0pfTtfLmc9TW4ucHJvdG90eXBlO18uZy51cGRhdGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSFjLGU9dGhpcztyZXR1cm4gQ24odGhpcy5jYWNoZSxmdW5jdGlvbihjKXthIGluc3RhbmNlb2YgXy5xPyhjPWMudXBkYXRlKGEsYiksZCYmKDAsXy5hYikoYyxmdW5jdGlvbihhKXtlLlJpKCEwLGEuU2ksYS5yZXNwb25zZSk7YS5yZXNwb25zZSE9YS5jQyYmZS5SaSghMCxhLlNpLGEuY0MpfSkpOktuKGMsYSkmJihjPUVuKGMsYSkueWIsYy50aGVuKGIpLGQmJmMudGhlbihmdW5jdGlvbihiKXtlLlJpKCEwLGEsYil9KSl9KX07Cl8uZy5wdXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO3JldHVybiBDbih0aGlzLmNhY2hlLGZ1bmN0aW9uKGQpe3ZhciBlPV8ub2soKTtlLnJlc29sdmUoYik7dmFyIGY9c2ooYSk7ZC5wdXQoZixlKTtjLlJpKCEwLGYsYil9KX07Xy5nLk5LPWZ1bmN0aW9uKGEsYil7Yi52YWx1ZSYmdGhpcy5SaSghMSxiLlNpLGIudmFsdWUpfTtfLmcuUmk9ZnVuY3Rpb24oKXt9O18uZy5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIEVuKHRoaXMuY2FjaGUsYSkueWJ9OwpfLk5uPWZ1bmN0aW9uKGEsYixjKXtfLkFrLmNhbGwodGhpcyk7dGhpcy5hPWE7dGhpcy5vPWJ8fDA7dGhpcy5iPWM7dGhpcy5mPSgwLF8ubCkodGhpcy5ZSCx0aGlzKX07Xy5tKF8uTm4sXy5Bayk7Xy5nPV8uTm4ucHJvdG90eXBlO18uZy5xbj0wO18uZy5vYj1mdW5jdGlvbigpe18uTm4uJC5vYi5jYWxsKHRoaXMpO3RoaXMuc3RvcCgpO2RlbGV0ZSB0aGlzLmE7ZGVsZXRlIHRoaXMuYn07Xy5nLnN0YXJ0PWZ1bmN0aW9uKGEpe3RoaXMuc3RvcCgpO3RoaXMucW49Xy5GbCh0aGlzLmYsXy5DYShhKT9hOnRoaXMubyl9O18uZy5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5jZSgpJiZfLkdsKHRoaXMucW4pO3RoaXMucW49MH07Xy5nLmNlPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPXRoaXMucW59O18uZy5ZSD1mdW5jdGlvbigpe3RoaXMucW49MDt0aGlzLmEmJnRoaXMuYS5jYWxsKHRoaXMuYil9Owp2YXIgT249ZnVuY3Rpb24oYSl7TW4uY2FsbCh0aGlzLGEpO3RoaXMuYT1ubS5TYigpO3RoaXMuZj1uZXcgXy5Obih0aGlzLmIsMjAsdGhpcyk7KDAsXy5sKShhLmksYSl9O18ubShPbixNbik7T24ucHJvdG90eXBlLktnPWZ1bmN0aW9uKGEsYil7dGhpcy5SaSghMCxhLHZvaWQgMCwiYiIsYil9O09uLnByb3RvdHlwZS5SaT1mdW5jdGlvbihhLGIsYyxkLGUpe2U9ZXx8YztpZihsbShlKSl7Yz10aGlzLmE7ZD17bGY6Yi5RZSgpLFVuOmIuYSxYczphPyJiIjoiYSIscXY6ZCxRcTplfTt2YXIgZj1oaihkLmxmLGQuVW4pOyhlPWMuYVtmXSl8fChlPWMuYVtmXT1bXSk7Zj0iYSI9PWQuWHM7ZS5wdXNoKGQpO2YmJmQuVW4mJihkPWQucXYrIiwiK2ttKGQuUXEpLGMuYltkXT0hMCk7YSYmdGhpcy5nZXQoYikudGhlbihxY2EpO2E9dGhpcy5mO2EuY2UoKXx8YS5zdGFydCh2b2lkIDApfX07IE9uLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7Q24odGhpcy5jYWNoZSwoMCxfLmwpKGZ1bmN0aW9uKCl7b20odGhpcy5hKX0sdGhpcykpfTt2YXIgUG49ZnVuY3Rpb24oYSxiKXtDbihhLmNhY2hlLGIpfTsKdmFyIFFuPWZ1bmN0aW9uKCl7dGhpcy5iPVtdO3RoaXMuZj1bXTt0aGlzLmE9bnVsbDt0aGlzLm89bm0uU2IoKX07Xy5KYShRbik7dmFyIFNuPWZ1bmN0aW9uKGEsYixjKXtpZihhLmIubGVuZ3RoKXtmb3IodmFyIGQ9YS5hLGU9MDtlPGEuYi5sZW5ndGg7ZSsrKVJuKGEuYltlXSxiLGMsZCk7UG4oYS5hLCgwLF8ubCkoZnVuY3Rpb24oKXtvbSh0aGlzLm8pfSxhKSl9fSxRbD1mdW5jdGlvbihhLGIsYyl7aWYoIWEuZi5sZW5ndGgpcmV0dXJuIGM7Zm9yKHZhciBkPWEuYSxlPTA7ZTxhLmYubGVuZ3RoO2UrKylSbihhLmZbZV0sc2ooYiksYyxkKTtQbihhLmEsKDAsXy5sKShmdW5jdGlvbigpe29tKHRoaXMubyl9LGEpKTtyZXR1cm4gY30sUm49ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e2EuaGFuZGxlKGIsYyxkKX1jYXRjaChlKXtVaihlKX19Owp2YXIgVG49ZnVuY3Rpb24oYSxiKXt0aGlzLmc9YTt0aGlzLmM9Yjt0aGlzLmNvbnN0cnVjdG9yLml4fHwodGhpcy5jb25zdHJ1Y3Rvci5peD17fSk7dGhpcy5jb25zdHJ1Y3Rvci5peFt0aGlzLnRvU3RyaW5nKCldPXRoaXN9O1RuLnByb3RvdHlwZS5RYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCl9O1RuLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3RoaXMud3x8KHRoaXMudz10aGlzLmcuYSsiOiIrdGhpcy5jKTtyZXR1cm4gdGhpcy53fTsKdmFyIFVuPWZ1bmN0aW9uKGEsYil7VG4uY2FsbCh0aGlzLGEsYil9O18ubShVbixUbik7dmFyIFZuPWZ1bmN0aW9uKGEpe3RoaXMuYT1hfSxXbjtXbj1udWxsO3ZhciB6Y2E9bmV3IFZuKCJsaWIiKTt2YXIgWG49ZnVuY3Rpb24oYSl7dmFyIGI9e30sYz17fSxkPVtdLGU9W10sZj1mdW5jdGlvbihhKXtpZighY1thXSl7dmFyIGU9YSBpbnN0YW5jZW9mIHdpP2EuYTpbXTtjW2FdPV8ucmIoZSk7KDAsXy5hYikoZSxmdW5jdGlvbihjKXtiW2NdPWJbY118fFtdO2JbY10ucHVzaChhKX0pO2UubGVuZ3RofHxkLnB1c2goYSk7KDAsXy5hYikoZSxmKX19O2ZvcigoMCxfLmFiKShhLGYpO2QubGVuZ3RoOyl7dmFyIGs9ZC5zaGlmdCgpO2UucHVzaChrKTtiW2tdJiYoMCxfLmFiKShiW2tdLGZ1bmN0aW9uKGEpe18ucGIoY1thXSxrKTtjW2FdLmxlbmd0aHx8ZC5wdXNoKGEpfSl9dmFyIG49e30scD1bXTsoMCxfLmFiKShlLGZ1bmN0aW9uKGEpe2EgaW5zdGFuY2VvZiB3aSYmKGE9YS5WayxudWxsPT1hfHxuW2FdfHwoblthXT0hMCxwLnB1c2goYSkpKX0pO3JldHVybntaYzplLFlKOnB9fTsKdmFyIFpuPWZ1bmN0aW9uKGEpe18uQWsuY2FsbCh0aGlzKTt0aGlzLmY9e307dGhpcy5vPXt9O3RoaXMuZz17fTt0aGlzLmE9e307dGhpcy5iPXt9O3RoaXMuQmE9e307dGhpcy53PWE/YS53Om5ldyBfLkNsO3RoaXMuVWE9IWE7dGhpcy5jPW51bGw7YT8odGhpcy5jPWEsdGhpcy5nPWEuZyx0aGlzLmE9YS5hLHRoaXMubz1hLm8sdGhpcy5iPWEuYik6KDAsXy5VYSkoKTthPVluKHRoaXMpO3RoaXMhPWEmJihhLmk/YS5pLnB1c2godGhpcyk6YS5pPVt0aGlzXSl9O18ubShabixfLkFrKTt2YXIgWW49ZnVuY3Rpb24oYSl7Zm9yKDthLmM7KWE9YS5jO3JldHVybiBhfSwkbj1mdW5jdGlvbihhLGIpe2Zvcig7YTspe2lmKGE9PWIpcmV0dXJuITA7YT1hLmN9cmV0dXJuITF9O1puLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9YW8odGhpcyxhKTtpZihudWxsPT1iKXRocm93IG5ldyBibyhhKTtyZXR1cm4gYn07CnZhciBhbz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hO2M7Yz1jLmMpe2lmKGMuaXNEaXNwb3NlZCgpKXRocm93IEVycm9yKCJ2Iik7aWYoYy5mW2JdKXJldHVybiBjLmZbYl1bMF07aWYoYy5CYVtiXSlicmVha31pZihjPWEuZ1tiXSl7Yz1jKGEpO2lmKG51bGw9PWMpdGhyb3cgRXJyb3IoIndgIitiKTtjbyhhLGIsYyk7cmV0dXJuIGN9cmV0dXJuIG51bGx9LGpvPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hYztjPXt9O2Zvcih2YXIgZT1bXSxmPVtdLGs9e30sbj17fSxwPWFvKGEsXy5BaSksQT0wO0E8Yi5sZW5ndGg7QSsrKXt2YXIgRD1iW0FdLEY9YW8oYSxEKTtpZihGKXt2YXIgST1uZXcgXy5wbTtjW0RdPUk7Ri54cCYmKHltKEksRi54cCgpKSxfLndtKEksXy5TYShmdW5jdGlvbihhKXtyZXR1cm4gYX0sRikpKTtJLmNhbGxiYWNrKEYpfWVsc2UgaWYoYS5iW0RdKUk9YS5iW0RdLk1lKCksXy53bShJLCgwLF8ubCkoYS53YSxhLEQpKSxjW0RdPUk7ZWxzZXtpZihEIGluc3RhbmNlb2YKd2kpdmFyIEo9WG4oW0RdKS5ZSjtlbHNlKEY9YS5vW0RdKSYmKEo9W0ZdKTshZHx8SiYmSi5sZW5ndGg/KEomJihlLnB1c2guYXBwbHkoZSxKKSxrW0RdPV8uWmEoSikpLGYucHVzaChEKSk6KEk9bmV3IF8ucG0sY1tEXT1JLEkuYShuZXcgYm8oRCkpKX19aWYoZCl7aWYoZS5sZW5ndGgpe2EuamEmJmEuamEucHVzaChuZXcgZW8pO2ZvcihBPTA7QTxmLmxlbmd0aDtBKyspYS53LmRpc3BhdGNoRXZlbnQobmV3IGZvKCJkIixmW0FdKSk7Yj1nbyhobyhhKSxlLHZvaWQgMCk7Zm9yKEE9MDtBPGYubGVuZ3RoO0ErKylEPWZbQV0sRj1rW0RdLEk9YltGXS5NZSgpLGNbRF09SSxuW0RdJiZfLndtKEksZnVuY3Rpb24oKXtpbyhwLG5bRF0pfSksQWNhKGEsSSxELEYpfX1lbHNlIGZvcihBPTA7QTxmLmxlbmd0aDtBKyspRD1mW0FdLEY9ZVtBXSxJPW5ldyBfLnBtKCgwLF8ubCkoYS5jYixhLEQpKSxjW0RdPUksKGI9YS5hW0RdKXx8KGEuYVtEXT1iPVtdKSxGJiZCY2EoYSxJLEQsRiksXy53bShJLAooMCxfLmwpKGEuZWEsYSxELEYpKSxiLnB1c2goe2lhOmEsZDpJfSk7cmV0dXJuIGN9LEJjYT1mdW5jdGlvbihhLGIsYyxkKXtfLndtKGIsZnVuY3Rpb24oKXt2YXIgYT1obyh0aGlzKS5sb2FkKGQpO2EuYnx8dGhpcy5qYSYmdGhpcy5qYS5wdXNoKG5ldyBlbyk7cmV0dXJuIGF9LGEpO18uTWwoYiwoMCxfLmwpKGEuaGEsYSxjLGQpKX0sQWNhPWZ1bmN0aW9uKGEsYixjLGQpe18ud20oYixmdW5jdGlvbigpe3RoaXMudy5kaXNwYXRjaEV2ZW50KG5ldyBmbygiZSIsYykpfSxhKTtfLk1sKGIsKDAsXy5sKShhLmhhLGEsYyxkKSk7Xy53bShiLCgwLF8ubCkoYS5lYSxhLGMsZCkpfTsKWm4ucHJvdG90eXBlLmVhPWZ1bmN0aW9uKGEsYil7dmFyIGM9YW8odGhpcyxhKTtpZihudWxsPT1jKXtpZih0aGlzLmJbYV0pe3ZhciBkPXRoaXMuYlthXS5NZSgpO18ud20oZCwoMCxfLmwpKHRoaXMuZWEsdGhpcyxhLGIpKTtyZXR1cm4gZH10aHJvdyBuZXcga28oYSxiLCJNb2R1bGUgbG9hZGVkIGJ1dCBzZXJ2aWNlIG9yIGZhY3Rvcnkgbm90IHJlZ2lzdGVyZWQgd2l0aCBhcHAgY29udGV4dHMuIik7fXJldHVybiBjLnhwPyhkPW5ldyBfLnBtLHltKGQsYy54cCgpKSxkLmNhbGxiYWNrKGMpLF8ud20oZCwoMCxfLmwpKHRoaXMud2EsdGhpcyxhKSksZCk6dGhpcy53YShhKX07Wm4ucHJvdG90eXBlLndhPWZ1bmN0aW9uKGEpe3RoaXMuYlthXSYmZGVsZXRlIHRoaXMuYlthXTtyZXR1cm4gdGhpcy5nZXQoYSl9O1puLnByb3RvdHlwZS5oYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGMgaW5zdGFuY2VvZiBxbT9jOm5ldyBsbyhhLGIsYyl9Owp2YXIgY289ZnVuY3Rpb24oYSxiLGMpe2lmKGEuaXNEaXNwb3NlZCgpKUNrKGMpO2Vsc2V7YS5mW2JdPVtjLCEwXTtjPUNjYShhLGEsYik7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXS5jYWxsYmFjayhudWxsKTtkZWxldGUgYS5vW2JdfX0sRGNhPWZ1bmN0aW9uKGEsYil7aWYoYS5pYSE9Yi5pYSl7aWYoJG4oYS5pYSxiLmlhKSlyZXR1cm4gMTtpZigkbihiLmlhLGEuaWEpKXJldHVybi0xfXJldHVybiBhLmluZGV4PGIuaW5kZXg/LTE6YS5pbmRleD09Yi5pbmRleD8wOjF9LENjYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1hLmFbY107ZSYmKGJiKGUsZnVuY3Rpb24oYSl7JG4oYS5pYSxiKSYmKGQucHVzaChhLmQpLF8ucGIoZSxhKSl9KSwwPT1lLmxlbmd0aCYmZGVsZXRlIGEuYVtjXSk7cmV0dXJuIGR9LEVjYT1mdW5jdGlvbihhLGIpe2EuYSYmXy4kYihhLmEsZnVuY3Rpb24oYSxkLGUpe2JiKGEsZnVuY3Rpb24oYyl7Yy5pYT09YiYmXy5wYihhLGMpfSk7MD09YS5sZW5ndGgmJgpkZWxldGUgZVtkXX0pfTtabi5wcm90b3R5cGUuY2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmEmJnRoaXMuYVthXTtpZihjKXtmb3IodmFyIGQ9MDtkPGMubGVuZ3RoOysrZClpZihjW2RdLmlhPT10aGlzJiZjW2RdLmQ9PWIpe29iKGMsZCk7YnJlYWt9MD09Yy5sZW5ndGgmJmRlbGV0ZSB0aGlzLmFbYV19fTsKWm4ucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7aWYoWW4odGhpcyk9PXRoaXMpe3ZhciBhPXRoaXMuaTtpZihhKWZvcig7YS5sZW5ndGg7KWFbMF0uZGlzcG9zZSgpfWVsc2V7YT1Zbih0aGlzKS5pO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWlmKGFbYl09PXRoaXMpe2Euc3BsaWNlKGIsMSk7YnJlYWt9fWZvcih2YXIgYyBpbiB0aGlzLmYpYT10aGlzLmZbY10sYVsxXSYmYVswXS5kaXNwb3NlJiZhWzBdLmRpc3Bvc2UoKTt0aGlzLmY9bnVsbDt0aGlzLlVhJiZ0aGlzLncuZGlzcG9zZSgpO0VjYSh0aGlzLHRoaXMpO3RoaXMuYT1udWxsO0NrKHRoaXMuSmEpO3RoaXMuQmE9dGhpcy5KYT1udWxsO1puLiQub2IuY2FsbCh0aGlzKX07dmFyIGhvPWZ1bmN0aW9uKGEpe3JldHVybiBhLkxhP2EuTGE6YS5jP2hvKGEuYyk6bnVsbH0sYm89ZnVuY3Rpb24oYSl7Xy5YYS5jYWxsKHRoaXMpO3RoaXMuaWQ9YTt0aGlzLm1lc3NhZ2U9J1NlcnZpY2UgZm9yICInK2ErJyIgaXMgbm90IHJlZ2lzdGVyZWQnfTsKXy5tKGJvLF8uWGEpO3ZhciBsbz1mdW5jdGlvbihhLGIsYyl7Xy5YYS5jYWxsKHRoaXMpO3RoaXMuWXY9YTt0aGlzLm1lc3NhZ2U9J01vZHVsZSAiJytiKyciIGZhaWxlZCB0byBsb2FkIHdoZW4gcmVxdWVzdGluZyB0aGUgc2VydmljZSAiJythKyciIFtjYXVzZTogJytjKyJdIjt0aGlzLnN0YWNrPWMuc3RhY2srIlxuV1JBUFBFRCBCWTpcbiIrdGhpcy5zdGFja307Xy5tKGxvLF8uWGEpO3ZhciBrbz1mdW5jdGlvbihhLGIsYyl7Xy5YYS5jYWxsKHRoaXMpO3RoaXMuWXY9YTt0aGlzLm1lc3NhZ2U9J0NvbmZpZ3VyYXRpb24gZXJyb3Igd2hlbiBsb2FkaW5nIHRoZSBtb2R1bGUgIicrYisnIiBmb3IgdGhlIHNlcnZpY2UgIicrYSsnIjogJytjfTtfLm0oa28sXy5YYSk7dmFyIGVvPWZ1bmN0aW9uKCl7SWsoKX0sZm89ZnVuY3Rpb24oYSxiKXtfLmNsLmNhbGwodGhpcyxhKTt0aGlzLll2PWJ9O18ubShmbyxfLmNsKTt2YXIgRmNhPW5ldyBWbigiZnZhIik7bmV3IFVuKEZjYSwxKTsKdmFyIG1vPWZ1bmN0aW9uKGEpe3RoaXMuYj1hbyhhLF8uTmkpO3RoaXMuSmI9bmV3IEJuKHRoaXMuYik7dGhpcy5hPVFuLlNiKCkuYT1uZXcgT24odGhpcy5KYil9O21vLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLkpiLnB1dChhLGIpfTttby5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBFbih0aGlzLkpiLGEpLnlifTttby5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIEtuKHRoaXMuSmIsYSl9O21vLnByb3RvdHlwZS5Gbj1mdW5jdGlvbihhKXtLbih0aGlzLkpiLGEpJiZFbih0aGlzLkpiLGEpfTsKXy5ubz1mdW5jdGlvbigpe307Xy5tKF8ubm8sXy5Bayk7Xy5uby5wcm90b3R5cGUuYT1mdW5jdGlvbigpe307Xy5uby5wcm90b3R5cGUudz1mdW5jdGlvbigpe3JldHVybltdfTtfLm5vLnByb3RvdHlwZS5qYT1mdW5jdGlvbigpe307Xy5uby5wcm90b3R5cGUuZj1mdW5jdGlvbigpe3JldHVybnt9fTt2YXIgb289ZnVuY3Rpb24oKXtfLkFrLmNhbGwodGhpcyl9O18ubShvbyxfLkFrKTtvby5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3RoaXMuYT1bXX07dmFyIEhjYT1mdW5jdGlvbihhKXt2YXIgYj1wbztiLmI9YTtHY2EoYil9LHJvPWZ1bmN0aW9uKGEsYil7dmFyIGM9cG87Yy5pc0Rpc3Bvc2VkKCl8fGIgaW5zdGFuY2VvZiBxbXx8KGMuYj9xbyhjLmIsYixhKTpjLmEmJjEwPmMuYS5sZW5ndGgmJmMuYS5wdXNoKFthLGJdKSl9LEdjYT1mdW5jdGlvbihhKXthLmEmJigoMCxfLmFiKShhLmEsZnVuY3Rpb24oYSl7cW8odGhpcy5iLGFbMV0sYVswXSl9LGEpLGEuYT1udWxsKX0scG89bmV3IG9vLEljYT1mdW5jdGlvbihhKXtybyhudWxsLGEpfTsKdmFyIHNvPWZ1bmN0aW9uKGEsYil7VG4uY2FsbCh0aGlzLGEsYil9O18ubShzbyxUbik7dmFyIHRvPWZ1bmN0aW9uKGEpe2E/KHRoaXMuYT1fLnIoYSwxKXx8LTEsXy5yKGEsMiksXy5yKGEsMyksXy5yKGEsNCksXy5yKGEsMTMpKTp0aGlzLmE9LTF9LHVvPW5ldyB0bzt2YXIgdm89ZnVuY3Rpb24oKXt9O3ZvLnByb3RvdHlwZS5iPW51bGw7dm8ucHJvdG90eXBlLkdkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnx8KHRoaXMuYj10aGlzLm8oKSl9O3ZhciB3byx4bz1mdW5jdGlvbigpe307Xy5tKHhvLHZvKTt4by5wcm90b3R5cGUuYT1mdW5jdGlvbigpe3ZhciBhPXlvKHRoaXMpO3JldHVybiBhP25ldyB3aW5kb3cuQWN0aXZlWE9iamVjdChhKTpuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0fTt4by5wcm90b3R5cGUubz1mdW5jdGlvbigpe3ZhciBhPXt9O3lvKHRoaXMpJiYoYVswXT0hMCxhWzFdPSEwKTtyZXR1cm4gYX07CnZhciB5bz1mdW5jdGlvbihhKXtpZighYS5mJiYidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5YTUxIdHRwUmVxdWVzdCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuQWN0aXZlWE9iamVjdCl7Zm9yKHZhciBiPVsiTVNYTUwyLlhNTEhUVFAuNi4wIiwiTVNYTUwyLlhNTEhUVFAuMy4wIiwiTVNYTUwyLlhNTEhUVFAiLCJNaWNyb3NvZnQuWE1MSFRUUCJdLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTt0cnl7cmV0dXJuIG5ldyB3aW5kb3cuQWN0aXZlWE9iamVjdChkKSxhLmY9ZH1jYXRjaChlKXt9fXRocm93IEVycm9yKCJ4Iik7fXJldHVybiBhLmZ9O3dvPW5ldyB4bzsKdmFyIHpvLEFvLEJvLENvLERvLEVvLEpjYSxGbyxHbyxIbyxJbyxKbyxLbzt6bz1mdW5jdGlvbihhLGIsYyxkLGUsZixrKXt2YXIgbj0iIjthJiYobis9YSsiOiIpO2MmJihuKz0iLy8iLGImJihuKz1iKyJAIiksbis9YyxkJiYobis9IjoiK2QpKTtlJiYobis9ZSk7ZiYmKG4rPSI/IitmKTtrJiYobis9IiMiK2spO3JldHVybiBufTtBbz0vXig/OihbXjovPyMuXSspOik/KD86XC9cLyg/OihbXi8/I10qKUApPyhbXi8jP10qPykoPzo6KFswLTldKykpPyg/PVsvIz9dfCQpKT8oW14/I10rKT8oPzpcPyhbXiNdKikpPyg/OiMoW1xzXFNdKikpPyQvO0JvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE/Yj8oMCx3aW5kb3cuZGVjb2RlVVJJKShhKTooMCx3aW5kb3cuZGVjb2RlVVJJQ29tcG9uZW50KShhKTphfTtDbz1mdW5jdGlvbihhLGIpe3JldHVybiBiLm1hdGNoKEFvKVthXXx8bnVsbH07CkRvPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZigiIyIpO3JldHVybiAwPmI/bnVsbDphLnN1YnN0cihiKzEpfTtFbz1mdW5jdGlvbihhKXthPWEubWF0Y2goQW8pO3JldHVybiB6byhhWzFdLGFbMl0sYVszXSxhWzRdKX07SmNhPWZ1bmN0aW9uKGEpe2E9YS5tYXRjaChBbyk7cmV0dXJuIHpvKG51bGwsbnVsbCxudWxsLG51bGwsYVs1XSxhWzZdLGFbN10pfTtGbz1mdW5jdGlvbihhKXt2YXIgYj1hLmluZGV4T2YoIiMiKTtyZXR1cm4gMD5iP2E6YS5zdWJzdHIoMCxiKX07R289ZnVuY3Rpb24oYSxiKXtpZihhKXthPWEuc3BsaXQoIiYiKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXS5pbmRleE9mKCI9IiksZT1udWxsO2lmKDA8PWQpe3ZhciBmPWFbY10uc3Vic3RyaW5nKDAsZCk7ZT1hW2NdLnN1YnN0cmluZyhkKzEpfWVsc2UgZj1hW2NdO2IoZixlPygwLHdpbmRvdy5kZWNvZGVVUklDb21wb25lbnQpKGUucmVwbGFjZSgvXCsvZywiICIpKToiIil9fX07CkhvPWZ1bmN0aW9uKGEsYil7aWYoIWIpcmV0dXJuIGE7dmFyIGM9YS5pbmRleE9mKCIjIik7MD5jJiYoYz1hLmxlbmd0aCk7dmFyIGQ9YS5pbmRleE9mKCI/Iik7aWYoMD5kfHxkPmMpe2Q9Yzt2YXIgZT0iIn1lbHNlIGU9YS5zdWJzdHJpbmcoZCsxLGMpO2E9W2Euc3Vic3RyKDAsZCksZSxhLnN1YnN0cihjKV07Yz1hWzFdO2FbMV09Yj9jP2MrIiYiK2I6YjpjO3JldHVybiBhWzBdKyhhWzFdPyI/IithWzFdOiIiKSthWzJdfTtJbz1mdW5jdGlvbihhLGIsYyl7aWYoXy5NYShiKSlmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKylJbyhhLFN0cmluZyhiW2RdKSxjKTtlbHNlIG51bGwhPWImJmMucHVzaChhKygiIj09PWI/IiI6Ij0iK18uSWIoYikpKX07Sm89ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtmb3IoYj1ifHwwO2I8YS5sZW5ndGg7Yis9MilJbyhhW2JdLGFbYisxXSxjKTtyZXR1cm4gYy5qb2luKCImIil9OwpLbz1mdW5jdGlvbihhKXt2YXIgYj1bXSxjO2ZvcihjIGluIGEpSW8oYyxhW2NdLGIpO3JldHVybiBiLmpvaW4oIiYiKX07Xy5Mbz1mdW5jdGlvbihhLGIpe3ZhciBjPTI9PWFyZ3VtZW50cy5sZW5ndGg/Sm8oYXJndW1lbnRzWzFdLDApOkpvKGFyZ3VtZW50cywxKTtyZXR1cm4gSG8oYSxjKX07Xy5Nbz1mdW5jdGlvbihhLGIsYyl7Yz1udWxsIT1jPyI9IitfLkliKGMpOiIiO3JldHVybiBIbyhhLGIrYyl9O18uTm89ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPWMubGVuZ3RoOzA8PShiPWEuaW5kZXhPZihjLGIpKSYmYjxkOyl7dmFyIGY9YS5jaGFyQ29kZUF0KGItMSk7aWYoMzg9PWZ8fDYzPT1mKWlmKGY9YS5jaGFyQ29kZUF0KGIrZSksIWZ8fDYxPT1mfHwzOD09Znx8MzU9PWYpcmV0dXJuIGI7Yis9ZSsxfXJldHVybi0xfTtfLk9vPS8jfCQvOyBfLlBvPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zZWFyY2goXy5PbyksZD1fLk5vKGEsMCxiLGMpO2lmKDA+ZClyZXR1cm4gbnVsbDt2YXIgZT1hLmluZGV4T2YoIiYiLGQpO2lmKDA+ZXx8ZT5jKWU9YztkKz1iLmxlbmd0aCsxO3JldHVybigwLHdpbmRvdy5kZWNvZGVVUklDb21wb25lbnQpKGEuc3Vic3RyKGQsZS1kKS5yZXBsYWNlKC9cKy9nLCIgIikpfTsKdmFyIFFvPWZ1bmN0aW9uKGEpe18uQ2wuY2FsbCh0aGlzKTt0aGlzLmhlYWRlcnM9bmV3IF8uV2w7dGhpcy5Qcj1hfHxudWxsO3RoaXMueWk9ITE7dGhpcy5Pcj10aGlzLlpiPW51bGw7dGhpcy5NcT0iIjt0aGlzLk5sPTA7dGhpcy5Daj10aGlzLmp1PXRoaXMueHE9dGhpcy5xdD0hMTt0aGlzLlNvPTA7dGhpcy53aT1udWxsO3RoaXMueW89IiI7dGhpcy5Idz10aGlzLmZwPSExfSxLY2EsUm8sU28sWW87Xy5tKFFvLF8uQ2wpO0tjYT0vXmh0dHBzPyQvaTtSbz1bIlBPU1QiLCJQVVQiXTtTbz1bXTtfLlRvPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGspe3ZhciBuPW5ldyBRbztTby5wdXNoKG4pO2ImJm4ubGlzdGVuKCJjb21wbGV0ZSIsYik7bi5PbCgicmVhZHkiLG4uY0YpO2YmJihuLlNvPU1hdGgubWF4KDAsZikpO2smJihuLmZwPWspO24uc2VuZChhLGMsZCxlKX07UW8ucHJvdG90eXBlLmNGPWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCk7Xy5wYihTbyx0aGlzKX07ClFvLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGEsYixjLGQpe2lmKHRoaXMuWmIpdGhyb3cgRXJyb3IoInlgIit0aGlzLk1xKyJgIithKTtiPWI/Yi50b1VwcGVyQ2FzZSgpOiJHRVQiO3RoaXMuTXE9YTt0aGlzLk5sPTA7dGhpcy5xdD0hMTt0aGlzLnlpPSEwO3RoaXMuWmI9dGhpcy5Qcj90aGlzLlByLmEoKTp3by5hKCk7dGhpcy5Pcj10aGlzLlByP3RoaXMuUHIuR2QoKTp3by5HZCgpO3RoaXMuWmIub25yZWFkeXN0YXRlY2hhbmdlPSgwLF8ubCkodGhpcy5GQSx0aGlzKTt0cnl7dGhpcy5qdT0hMCx0aGlzLlpiLm9wZW4oYixTdHJpbmcoYSksITApLHRoaXMuanU9ITF9Y2F0Y2goZil7dGhpcy5BZCg1LGYpO3JldHVybn1hPWN8fCIiO3ZhciBlPXRoaXMuaGVhZGVycy5jbG9uZSgpO2QmJl8uaG4oZCxmdW5jdGlvbihhLGIpe2Uuc2V0KGIsYSl9KTtkPV8uaWIoZS5DZSgpLExjYSk7Yz1fLmguRm9ybURhdGEmJmEgaW5zdGFuY2VvZiBfLmguRm9ybURhdGE7IV8ubGIoUm8sYil8fGR8fApjfHxlLnNldCgiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKTtlLmZvckVhY2goZnVuY3Rpb24oYSxiKXt0aGlzLlpiLnNldFJlcXVlc3RIZWFkZXIoYixhKX0sdGhpcyk7dGhpcy55byYmKHRoaXMuWmIucmVzcG9uc2VUeXBlPXRoaXMueW8pOyJ3aXRoQ3JlZGVudGlhbHMiaW4gdGhpcy5aYiYmdGhpcy5aYi53aXRoQ3JlZGVudGlhbHMhPT10aGlzLmZwJiYodGhpcy5aYi53aXRoQ3JlZGVudGlhbHM9dGhpcy5mcCk7dHJ5e1VvKHRoaXMpLDA8dGhpcy5TbyYmKCh0aGlzLkh3PU1jYSh0aGlzLlpiKSk/KHRoaXMuWmIudGltZW91dD10aGlzLlNvLHRoaXMuWmIub250aW1lb3V0PSgwLF8ubCkodGhpcy5Ubyx0aGlzKSk6dGhpcy53aT1fLkZsKHRoaXMuVG8sdGhpcy5Tbyx0aGlzKSksdGhpcy54cT0hMCx0aGlzLlpiLnNlbmQoYSksdGhpcy54cT0hMX1jYXRjaChmKXt0aGlzLkFkKDUsZil9fTsKdmFyIE1jYT1mdW5jdGlvbihhKXtyZXR1cm4gXy53YyYmT2MoOSkmJl8uRWEoYS50aW1lb3V0KSYmXy5DYShhLm9udGltZW91dCl9LExjYT1mdW5jdGlvbihhKXtyZXR1cm4iY29udGVudC10eXBlIj09YS50b0xvd2VyQ2FzZSgpfTtRby5wcm90b3R5cGUuVG89ZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9dHlwZW9mIEJhJiZ0aGlzLlpiJiYodGhpcy5ObD04LHRoaXMuZGlzcGF0Y2hFdmVudCgidGltZW91dCIpLHRoaXMuYWJvcnQoOCkpfTtRby5wcm90b3R5cGUuQWQ9ZnVuY3Rpb24oYSl7dGhpcy55aT0hMTt0aGlzLlpiJiYodGhpcy5Daj0hMCx0aGlzLlpiLmFib3J0KCksdGhpcy5Daj0hMSk7dGhpcy5ObD1hO1ZvKHRoaXMpO1dvKHRoaXMpfTt2YXIgVm89ZnVuY3Rpb24oYSl7YS5xdHx8KGEucXQ9ITAsYS5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLGEuZGlzcGF0Y2hFdmVudCgiZXJyb3IiKSl9OwpRby5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oYSl7dGhpcy5aYiYmdGhpcy55aSYmKHRoaXMueWk9ITEsdGhpcy5Daj0hMCx0aGlzLlpiLmFib3J0KCksdGhpcy5Daj0hMSx0aGlzLk5sPWF8fDcsdGhpcy5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLHRoaXMuZGlzcGF0Y2hFdmVudCgiYWJvcnQiKSxXbyh0aGlzKSl9O1FvLnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe3RoaXMuWmImJih0aGlzLnlpJiYodGhpcy55aT0hMSx0aGlzLkNqPSEwLHRoaXMuWmIuYWJvcnQoKSx0aGlzLkNqPSExKSxXbyh0aGlzLCEwKSk7UW8uJC5vYi5jYWxsKHRoaXMpfTtRby5wcm90b3R5cGUuRkE9ZnVuY3Rpb24oKXt0aGlzLmlzRGlzcG9zZWQoKXx8KHRoaXMuanV8fHRoaXMueHF8fHRoaXMuQ2o/WG8odGhpcyk6dGhpcy5idigpKX07UW8ucHJvdG90eXBlLmJ2PWZ1bmN0aW9uKCl7WG8odGhpcyl9Owp2YXIgWG89ZnVuY3Rpb24oYSl7aWYoYS55aSYmInVuZGVmaW5lZCIhPXR5cGVvZiBCYSYmKCFhLk9yWzFdfHw0IT1ZbyhhKXx8MiE9YS5mYigpKSlpZihhLnhxJiY0PT1ZbyhhKSlfLkZsKGEuRkEsMCxhKTtlbHNlIGlmKGEuZGlzcGF0Y2hFdmVudCgicmVhZHlzdGF0ZWNoYW5nZSIpLGEuQW4oKSl7YS55aT0hMTt0cnl7Xy5abyhhKT8oYS5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLGEuZGlzcGF0Y2hFdmVudCgic3VjY2VzcyIpKTooYS5ObD02LGEuZmIoKSxWbyhhKSl9ZmluYWxseXtXbyhhKX19fSxXbz1mdW5jdGlvbihhLGIpe2lmKGEuWmIpe1VvKGEpO3ZhciBjPWEuWmIsZD1hLk9yWzBdP18uSGE6bnVsbDthLlpiPW51bGw7YS5Pcj1udWxsO2J8fGEuZGlzcGF0Y2hFdmVudCgicmVhZHkiKTt0cnl7Yy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZH1jYXRjaChlKXt9fX0sVW89ZnVuY3Rpb24oYSl7YS5aYiYmYS5IdyYmKGEuWmIub250aW1lb3V0PW51bGwpO2Eud2kmJihfLkdsKGEud2kpLAphLndpPW51bGwpfTtRby5wcm90b3R5cGUuY2U9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuWmJ9O1FvLnByb3RvdHlwZS5Bbj1mdW5jdGlvbigpe3JldHVybiA0PT1Zbyh0aGlzKX07Xy5abz1mdW5jdGlvbihhKXt2YXIgYj1hLmZiKCk7YTpzd2l0Y2goYil7Y2FzZSAyMDA6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDQ6Y2FzZSAyMDY6Y2FzZSAzMDQ6Y2FzZSAxMjIzOnZhciBjPSEwO2JyZWFrIGE7ZGVmYXVsdDpjPSExfWlmKCFjKXtpZihiPTA9PT1iKWE9Q28oMSxTdHJpbmcoYS5NcSkpLCFhJiZfLmguc2VsZiYmXy5oLnNlbGYubG9jYXRpb24mJihhPV8uaC5zZWxmLmxvY2F0aW9uLnByb3RvY29sLGE9YS5zdWJzdHIoMCxhLmxlbmd0aC0xKSksYj0hS2NhLnRlc3QoYT9hLnRvTG93ZXJDYXNlKCk6IiIpO2M9Yn1yZXR1cm4gY307WW89ZnVuY3Rpb24oYSl7cmV0dXJuIGEuWmI/YS5aYi5yZWFkeVN0YXRlOjB9OwpRby5wcm90b3R5cGUuZmI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIDI8WW8odGhpcyk/dGhpcy5aYi5zdGF0dXM6LTF9Y2F0Y2goYSl7cmV0dXJuLTF9fTt2YXIgJG89ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBhLlpiP2EuWmIucmVzcG9uc2VUZXh0OiIifWNhdGNoKGIpe3JldHVybiIifX07UW8ucHJvdG90eXBlLkVnPWZ1bmN0aW9uKCl7dHJ5e2lmKCF0aGlzLlpiKXJldHVybiBudWxsO2lmKCJyZXNwb25zZSJpbiB0aGlzLlpiKXJldHVybiB0aGlzLlpiLnJlc3BvbnNlO3N3aXRjaCh0aGlzLnlvKXtjYXNlICIiOmNhc2UgInRleHQiOnJldHVybiB0aGlzLlpiLnJlc3BvbnNlVGV4dDtjYXNlICJhcnJheWJ1ZmZlciI6aWYoIm1velJlc3BvbnNlQXJyYXlCdWZmZXIiaW4gdGhpcy5aYilyZXR1cm4gdGhpcy5aYi5tb3pSZXNwb25zZUFycmF5QnVmZmVyfXJldHVybiBudWxsfWNhdGNoKGEpe3JldHVybiBudWxsfX07ClFvLnByb3RvdHlwZS5nZXRSZXNwb25zZUhlYWRlcj1mdW5jdGlvbihhKXtpZih0aGlzLlpiJiZ0aGlzLkFuKCkpcmV0dXJuIGE9dGhpcy5aYi5nZXRSZXNwb25zZUhlYWRlcihhKSxudWxsPT09YT92b2lkIDA6YX07UW8ucHJvdG90eXBlLmdldEFsbFJlc3BvbnNlSGVhZGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlpiJiZ0aGlzLkFuKCk/dGhpcy5aYi5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKToiIn07S2ooZnVuY3Rpb24oYSl7UW8ucHJvdG90eXBlLmJ2PWEoUW8ucHJvdG90eXBlLmJ2KX0pOwp2YXIgYXA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Xy5PYShiKTsoZXx8IUVrKGIpKSYmZSYmRWsoZCk7aWYoIShlfHxiJiYiZnVuY3Rpb24iPT10eXBlb2YgYi5oYW5kbGVFdmVudCkpdGhyb3cgRXJyb3IoInAiKTthPSgwLF8ubCkoTmNhLG51bGwsYSxiLGQpO3JldHVybiBfLmguc2V0VGltZW91dChhLGN8fDApfSxOY2E9ZnVuY3Rpb24oYSxiLGMpe18uT2EoYik/RWsoYyl8fGIuY2FsbChjKTpiJiYiZnVuY3Rpb24iPT10eXBlb2YgYi5oYW5kbGVFdmVudCYmKEVrKGIpfHxiLmhhbmRsZUV2ZW50LmNhbGwoYikpfSxicD1mdW5jdGlvbihhKXtfLmguY2xlYXJUaW1lb3V0KGEpfTsKdmFyIGJhLGNhLEVwLHlwLEFwLFRjYSxCcCxQY2EsT2NhLFNjYSxRY2EsVWNhO18uYWE9ZnVuY3Rpb24oYSxiKXt0aGlzLmY9dGhpcy5pPXRoaXMubz0iIjt0aGlzLmM9bnVsbDt0aGlzLmc9dGhpcy5iPSIiO3RoaXMudz0hMTt2YXIgYzthIGluc3RhbmNlb2YgXy5hYT8odGhpcy53PV8uQ2EoYik/YjphLncsYmEodGhpcyxhLm8pLHRoaXMuaT1hLmksdGhpcy5mPWEuZixjYSh0aGlzLGEuYyksXy5jcCh0aGlzLGEuYiksXy5kcCh0aGlzLGEuYS5jbG9uZSgpKSxfLmVwKHRoaXMsYS5nKSk6YSYmKGM9U3RyaW5nKGEpLm1hdGNoKEFvKSk/KHRoaXMudz0hIWIsYmEodGhpcyxjWzFdfHwiIiwhMCksdGhpcy5pPXlwKGNbMl18fCIiKSx0aGlzLmY9eXAoY1szXXx8IiIsITApLGNhKHRoaXMsY1s0XSksXy5jcCh0aGlzLGNbNV18fCIiLCEwKSxfLmRwKHRoaXMsY1s2XXx8IiIsITApLF8uZXAodGhpcyxjWzddfHwiIiwhMCkpOih0aGlzLnc9ISFiLHRoaXMuYT1uZXcgXy56cChudWxsLHRoaXMudykpfTsKXy5hYS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXRoaXMubztiJiZhLnB1c2goQXAoYixCcCwhMCksIjoiKTt2YXIgYz10aGlzLmY7aWYoY3x8ImZpbGUiPT1iKWEucHVzaCgiLy8iKSwoYj10aGlzLmkpJiZhLnB1c2goQXAoYixCcCwhMCksIkAiKSxhLnB1c2goXy5JYihjKS5yZXBsYWNlKC8lMjUoWzAtOWEtZkEtRl17Mn0pL2csIiUkMSIpKSxjPXRoaXMuYyxudWxsIT1jJiZhLnB1c2goIjoiLFN0cmluZyhjKSk7aWYoYz10aGlzLmIpdGhpcy5mJiYiLyIhPWMuY2hhckF0KDApJiZhLnB1c2goIi8iKSxhLnB1c2goQXAoYywiLyI9PWMuY2hhckF0KDApP09jYTpQY2EsITApKTsoYz10aGlzLmEudG9TdHJpbmcoKSkmJmEucHVzaCgiPyIsYyk7KGM9dGhpcy5nKSYmYS5wdXNoKCIjIixBcChjLFFjYSkpO3JldHVybiBhLmpvaW4oIiIpfTsKXy5hYS5wcm90b3R5cGUucmVzb2x2ZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmNsb25lKCksYz0hIWEubztjP2JhKGIsYS5vKTpjPSEhYS5pO2M/Yi5pPWEuaTpjPSEhYS5mO2M/Yi5mPWEuZjpjPW51bGwhPWEuYzt2YXIgZD1hLmI7aWYoYyljYShiLGEuYyk7ZWxzZSBpZihjPSEhYS5iKXtpZigiLyIhPWQuY2hhckF0KDApKWlmKHRoaXMuZiYmIXRoaXMuYilkPSIvIitkO2Vsc2V7dmFyIGU9Yi5iLmxhc3RJbmRleE9mKCIvIik7LTEhPWUmJihkPWIuYi5zdWJzdHIoMCxlKzEpK2QpfWU9ZDtpZigiLi4iPT1lfHwiLiI9PWUpZD0iIjtlbHNlIGlmKF8uS2IoZSwiLi8iKXx8Xy5LYihlLCIvLiIpKXtkPV8uQWIoZSwiLyIpO2U9ZS5zcGxpdCgiLyIpO2Zvcih2YXIgZj1bXSxrPTA7azxlLmxlbmd0aDspe3ZhciBuPWVbaysrXTsiLiI9PW4/ZCYmaz09ZS5sZW5ndGgmJmYucHVzaCgiIik6Ii4uIj09bj8oKDE8Zi5sZW5ndGh8fDE9PWYubGVuZ3RoJiYiIiE9ZlswXSkmJmYucG9wKCksZCYmCms9PWUubGVuZ3RoJiZmLnB1c2goIiIpKTooZi5wdXNoKG4pLGQ9ITApfWQ9Zi5qb2luKCIvIil9ZWxzZSBkPWV9Yz9fLmNwKGIsZCk6Yz0iIiE9PWEuYS50b1N0cmluZygpO2M/Xy5kcChiLGEuYS5jbG9uZSgpKTpjPSEhYS5nO2MmJl8uZXAoYixhLmcpO3JldHVybiBifTtfLmFhLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgXy5hYSh0aGlzKX07YmE9ZnVuY3Rpb24oYSxiLGMpe2Eubz1jP3lwKGIsITApOmI7YS5vJiYoYS5vPWEuby5yZXBsYWNlKC86JC8sIiIpKX07Y2E9ZnVuY3Rpb24oYSxiKXtpZihiKXtiPU51bWJlcihiKTtpZigoMCx3aW5kb3cuaXNOYU4pKGIpfHwwPmIpdGhyb3cgRXJyb3IoInpgIitiKTthLmM9Yn1lbHNlIGEuYz1udWxsfTtfLmNwPWZ1bmN0aW9uKGEsYixjKXthLmI9Yz95cChiLCEwKTpiO3JldHVybiBhfTsKXy5kcD1mdW5jdGlvbihhLGIsYyl7YiBpbnN0YW5jZW9mIF8uenA/KGEuYT1iLFJjYShhLmEsYS53KSk6KGN8fChiPUFwKGIsU2NhKSksYS5hPW5ldyBfLnpwKGIsYS53KSk7cmV0dXJuIGF9O18uQ3A9ZnVuY3Rpb24oYSxiLGMpe2EuYS5zZXQoYixjKTtyZXR1cm4gYX07RXA9ZnVuY3Rpb24oYSxiLGMpe18uTWEoYyl8fChjPVtTdHJpbmcoYyldKTtEcChhLmEsYixjKX07Xy5GcD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmEuZ2V0KGIpfTtfLmVwPWZ1bmN0aW9uKGEsYixjKXthLmc9Yz95cChiKTpiO3JldHVybiBhfTtfLmFhLnByb3RvdHlwZS5Wej1mdW5jdGlvbigpe3JldHVybiExfTtfLkdwPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5hYT9hLmNsb25lKCk6bmV3IF8uYWEoYSx2b2lkIDApfTtfLkhwPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IF8uYWEobnVsbCx2b2lkIDApO18uY3AoYSwiL28vb2F1dGgyL3JlZGlyZWN0Iik7cmV0dXJuIGF9Owp5cD1mdW5jdGlvbihhLGIpe3JldHVybiBhP2I/KDAsd2luZG93LmRlY29kZVVSSSkoYS5yZXBsYWNlKC8lMjUvZywiJTI1MjUiKSk6KDAsd2luZG93LmRlY29kZVVSSUNvbXBvbmVudCkoYSk6IiJ9O0FwPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5EYShhKT8oYT0oMCx3aW5kb3cuZW5jb2RlVVJJKShhKS5yZXBsYWNlKGIsVGNhKSxjJiYoYT1hLnJlcGxhY2UoLyUyNShbMC05YS1mQS1GXXsyfSkvZywiJSQxIikpLGEpOm51bGx9O1RjYT1mdW5jdGlvbihhKXthPWEuY2hhckNvZGVBdCgwKTtyZXR1cm4iJSIrKGE+PjQmMTUpLnRvU3RyaW5nKDE2KSsoYSYxNSkudG9TdHJpbmcoMTYpfTtCcD0vWyNcL1w/QF0vZztQY2E9L1sjXD86XS9nO09jYT0vWyNcP10vZztTY2E9L1sjXD9AXS9nO1FjYT0vIy9nO18uenA9ZnVuY3Rpb24oYSxiKXt0aGlzLmI9dGhpcy5hPW51bGw7dGhpcy5mPWF8fG51bGw7dGhpcy5vPSEhYn07Cl8uSXA9ZnVuY3Rpb24oYSl7YS5hfHwoYS5hPW5ldyBfLldsLGEuYj0wLGEuZiYmR28oYS5mLGZ1bmN0aW9uKGIsYyl7YS5hZGQoKDAsd2luZG93LmRlY29kZVVSSUNvbXBvbmVudCkoYi5yZXBsYWNlKC9cKy9nLCIgIikpLGMpfSkpfTtVY2E9ZnVuY3Rpb24oYSl7dmFyIGI9V20oYSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBiKXRocm93IEVycm9yKCJCIik7dmFyIGM9bmV3IF8uenAobnVsbCx2b2lkIDApO2E9Vm0oYSk7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF0sZj1hW2RdO18uTWEoZik/RHAoYyxlLGYpOmMuYWRkKGUsZil9cmV0dXJuIGN9O18uenAucHJvdG90eXBlLnlkPWZ1bmN0aW9uKCl7Xy5JcCh0aGlzKTtyZXR1cm4gdGhpcy5ifTsKXy56cC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYil7Xy5JcCh0aGlzKTt0aGlzLmY9bnVsbDthPUpwKHRoaXMsYSk7dmFyIGM9dGhpcy5hLmdldChhKTtjfHx0aGlzLmEuc2V0KGEsYz1bXSk7Yy5wdXNoKGIpO3RoaXMuYis9MTtyZXR1cm4gdGhpc307Xy56cC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEpe18uSXAodGhpcyk7YT1KcCh0aGlzLGEpO3JldHVybiBfLlpsKHRoaXMuYSxhKT8odGhpcy5mPW51bGwsdGhpcy5iLT10aGlzLmEuZ2V0KGEpLmxlbmd0aCx0aGlzLmEucmVtb3ZlKGEpKTohMX07Xy56cC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmE9dGhpcy5mPW51bGw7dGhpcy5iPTB9O3ZhciBLcD1mdW5jdGlvbihhLGIpe18uSXAoYSk7Yj1KcChhLGIpO3JldHVybiBfLlpsKGEuYSxiKX07Xy5nPV8uenAucHJvdG90eXBlO18uZy5Iaz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLlhiKCk7cmV0dXJuIF8ubGIoYixhKX07Cl8uZy5mb3JFYWNoPWZ1bmN0aW9uKGEsYil7Xy5JcCh0aGlzKTt0aGlzLmEuZm9yRWFjaChmdW5jdGlvbihjLGQpeygwLF8uYWIpKGMsZnVuY3Rpb24oYyl7YS5jYWxsKGIsYyxkLHRoaXMpfSx0aGlzKX0sdGhpcyl9O18uZy5DZT1mdW5jdGlvbigpe18uSXAodGhpcyk7Zm9yKHZhciBhPXRoaXMuYS5YYigpLGI9dGhpcy5hLkNlKCksYz1bXSxkPTA7ZDxiLmxlbmd0aDtkKyspZm9yKHZhciBlPWFbZF0sZj0wO2Y8ZS5sZW5ndGg7ZisrKWMucHVzaChiW2RdKTtyZXR1cm4gY307Xy5nLlhiPWZ1bmN0aW9uKGEpe18uSXAodGhpcyk7dmFyIGI9W107aWYoXy5EYShhKSlLcCh0aGlzLGEpJiYoYj1fLnFiKGIsdGhpcy5hLmdldChKcCh0aGlzLGEpKSkpO2Vsc2V7YT10aGlzLmEuWGIoKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyliPV8ucWIoYixhW2NdKX1yZXR1cm4gYn07Cl8uZy5zZXQ9ZnVuY3Rpb24oYSxiKXtfLklwKHRoaXMpO3RoaXMuZj1udWxsO2E9SnAodGhpcyxhKTtLcCh0aGlzLGEpJiYodGhpcy5iLT10aGlzLmEuZ2V0KGEpLmxlbmd0aCk7dGhpcy5hLnNldChhLFtiXSk7dGhpcy5iKz0xO3JldHVybiB0aGlzfTtfLmcuZ2V0PWZ1bmN0aW9uKGEsYil7YT1hP3RoaXMuWGIoYSk6W107cmV0dXJuIDA8YS5sZW5ndGg/U3RyaW5nKGFbMF0pOmJ9O3ZhciBEcD1mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmUoYik7MDxjLmxlbmd0aCYmKGEuZj1udWxsLGEuYS5zZXQoSnAoYSxiKSxfLnJiKGMpKSxhLmIrPWMubGVuZ3RoKX07Cl8uenAucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7aWYodGhpcy5mKXJldHVybiB0aGlzLmY7aWYoIXRoaXMuYSlyZXR1cm4iIjtmb3IodmFyIGE9W10sYj10aGlzLmEuQ2UoKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY10sZT1fLkliKGQpO2Q9dGhpcy5YYihkKTtmb3IodmFyIGY9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIGs9ZTsiIiE9PWRbZl0mJihrKz0iPSIrXy5JYihkW2ZdKSk7YS5wdXNoKGspfX1yZXR1cm4gdGhpcy5mPWEuam9pbigiJiIpfTtfLnpwLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBhPW5ldyBfLnpwO2EuZj10aGlzLmY7dGhpcy5hJiYoYS5hPXRoaXMuYS5jbG9uZSgpLGEuYj10aGlzLmIpO3JldHVybiBhfTsgdmFyIEpwPWZ1bmN0aW9uKGEsYil7Yj1TdHJpbmcoYik7YS5vJiYoYj1iLnRvTG93ZXJDYXNlKCkpO3JldHVybiBifSxSY2E9ZnVuY3Rpb24oYSxiKXtiJiYhYS5vJiYoXy5JcChhKSxhLmY9bnVsbCxhLmEuZm9yRWFjaChmdW5jdGlvbihhLGIpe3ZhciBjPWIudG9Mb3dlckNhc2UoKTtiIT1jJiYodGhpcy5yZW1vdmUoYiksRHAodGhpcyxjLGEpKX0sYSkpO2Eubz1ifTsKdmFyIE5wPWZ1bmN0aW9uKGEpe2lmKHRoaXMuZz1hKWE9dGhpcy5nLlRtLExwKHRoaXMpLHRoaXMuVWs9YTsoMCxfLlVhKSgpO3RoaXMuYT1uZXcgXy5hYTt0aGlzLmY9IlBPU1QiO3RoaXMuSmE9VmNhKys7TXB8fChhPW5ldyBEYXRlLE1wPTM2MDAqYS5nZXRIb3VycygpKzYwKmEuZ2V0TWludXRlcygpK2EuZ2V0U2Vjb25kcygpKTt0aGlzLkVjPTErTXArMUU1KnRoaXMuSmE7dGhpcy5qYT1uZXcgXy5XbH0sTXAsVHA7bmV3IHNvKHpjYSwiZl9yZXEiKTt2YXIgVmNhPTA7Xy5nPU5wLnByb3RvdHlwZTtfLmcuREI9ITA7Xy5nLkNxPSEwO18uZy5YcD0tMTtfLmcuVW09LTE7Xy5nLkN1PS0xO18uZy5Ldj11bztfLmcuQnQ9LTE7Xy5nLk54PS0xO18uZy5yaj0wO18uZy5Vaz0iQkVTVF9FRkZPUlQiO3ZhciBMcD1mdW5jdGlvbihhKXtpZihhLndhKXRocm93IEVycm9yKCJDIik7fTsKTnAucHJvdG90eXBlLlRpPWZ1bmN0aW9uKGEpe3RoaXMuamEuc2V0KCJYLUZyYW1ld29yay1Yc3JmLVRva2VuIixhKX07TnAucHJvdG90eXBlLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYX07dmFyIFdjYT1mdW5jdGlvbihhLGIpe0xwKGEpO2EuWHA9Yn07TnAucHJvdG90eXBlLmNiPWZ1bmN0aW9uKCl7dGhpcy5Vaz0iRkFJTCI7dGhpcy5nLmFib3J0KHRoaXMsMTAxKX07dmFyIE9wPWZ1bmN0aW9uKGEpe2lmKCFhLkVjKXt2YXIgYj0iRmAiK2EuZ2V0VXJsKCksYz1FcnJvcigiRWAiK2EuZ2V0VXJsKCkpO3JvKGIsYyl9cmV0dXJuIGEuRWN9O18uZz1OcC5wcm90b3R5cGU7Cl8uZy5zZW5kPWZ1bmN0aW9uKCl7aWYodGhpcy53YSl0aHJvdyBFcnJvcigiRyIpOygwLF8uVWEpKCk7dmFyIGE9T3AodGhpcyk7RXAodGhpcy5hLCJfcmVxaWQiLGEpO3RoaXMuZy5zZW5kKHRoaXMpO3RoaXMud2E9ITA7MDw9dGhpcy5YcCYmKHRoaXMuaT1hcCgiSCIsdGhpcy5jYix0aGlzLlhwLHRoaXMpKX07Xy5nLmFib3J0PWZ1bmN0aW9uKCl7aWYoIXRoaXMud2EpdGhyb3cgRXJyb3IoIkkiKTt0aGlzLmNvbXBsZXRlfHwodGhpcy5Vaz0iRkFJTCIsdGhpcy5nLmFib3J0KHRoaXMpKX07Xy5nLkFuPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmNvbXBsZXRlfTtfLmcuTnk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYX07Xy5nLkNyPWZ1bmN0aW9uKGEpe3RoaXMuYj1hfTtfLmcuZ2V0RGF0YT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sZD90aGlzLmxkW2FdOm51bGx9Owp2YXIgUHA9ZnVuY3Rpb24oYSl7cmV0dXJuISFhLmImJiEoImZ1bmN0aW9uIj09dHlwZW9mIGEuYi5pc0Rpc3Bvc2VkJiZhLmIuaXNEaXNwb3NlZCgpKX0sUXA9ZnVuY3Rpb24oYSl7YS5jb21wbGV0ZT0hMDthLk54PSgwLF8uVWEpKCk7YS5pJiYoYnAoYS5pKSxhLmk9bnVsbCk7UHAoYSkmJihhLncmJmEuYi5ybCYmYS5iLnJsKGEpLGEuYi5ycSYmYS5iLnJxKGEpKX0sUnA9ZnVuY3Rpb24oKXtpZighKHdpbmRvdy5jaHJvbWUmJndpbmRvdy5jaHJvbWUucnVudGltZSYmd2luZG93LmNocm9tZS5ydW50aW1lLmdldE1hbmlmZXN0JiZ3aW5kb3cuY2hyb21lLnJ1bnRpbWUuZ2V0TWFuaWZlc3QoKSkpdGhyb3cgRXJyb3IoIkoiKTt9O05wLnByb3RvdHlwZS5nZXRVcmw9ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMuYS5jbG9uZSgpKX07TnAucHJvdG90eXBlLmdldFBhcmFtPWZ1bmN0aW9uKGEpe3JldHVybiBfLkZwKHRoaXMuYSxhKX07Cl8uU3A9ZnVuY3Rpb24oYSxiLGMpe2EuY3x8KGEuYz1uZXcgXy56cCk7Xy5NYShjKXx8KGM9W1N0cmluZyhjKV0pO18ubGIoUm8sYS5mKXx8KGEuZj0iUE9TVCIpO0RwKGEuYyxiLGMpfTtUcD1mdW5jdGlvbihhLGIsYyl7aWYoYiBpbnN0YW5jZW9mIF8uenApe3ZhciBkPWIuQ2UoKTtfLnZiKGQpO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSsrKXt2YXIgZj1kW2VdLGs9Yi5YYihmKTtjP18uU3AoYSxmLGspOkVwKGEuYSxmLGspfX1lbHNlIF8uaG4oYixmdW5jdGlvbihhLGIpe2M/Xy5TcCh0aGlzLGIsYSk6RXAodGhpcy5hLGIsYSl9LGEpfTsKdmFyIFVwPWZ1bmN0aW9uKGEsYil7dGhpcy5iPWE7dGhpcy5mPWI7aWYoIWMpe3ZhciBjPW5ldyBfLmFhKCIvL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiKTtfLkNwKGMsInp4IixRYigpKX10aGlzLm89Y307Xy5nPVVwLnByb3RvdHlwZTtfLmcuZXo9MUU0O18uZy5xbD0hMTtfLmcuQXM9MDtfLmcub3E9bnVsbDtfLmcueXY9bnVsbDtfLmcuc2V0VGltZW91dD1mdW5jdGlvbihhKXt0aGlzLmV6PWF9O18uZy5zdGFydD1mdW5jdGlvbigpe2lmKHRoaXMucWwpdGhyb3cgRXJyb3IoIkwiKTt0aGlzLnFsPSEwO3RoaXMuQXM9MDtWcCh0aGlzKX07Xy5nLnN0b3A9ZnVuY3Rpb24oKXtXcCh0aGlzKTt0aGlzLnFsPSExfTsKdmFyIFZwPWZ1bmN0aW9uKGEpe2EuQXMrKztudWxsIT09d2luZG93Lm5hdmlnYXRvciYmIm9uTGluZSJpbiB3aW5kb3cubmF2aWdhdG9yJiYhd2luZG93Lm5hdmlnYXRvci5vbkxpbmU/Xy5GbCgoMCxfLmwpKGEuUm4sYSwhMSksMCk6KGEuYT1uZXcgd2luZG93LkltYWdlLGEuYS5vbmxvYWQ9KDAsXy5sKShhLmJMLGEpLGEuYS5vbmVycm9yPSgwLF8ubCkoYS5hTCxhKSxhLmEub25hYm9ydD0oMCxfLmwpKGEuJEssYSksYS5vcT1fLkZsKGEuY0wsYS5leixhKSxhLmEuc3JjPVN0cmluZyhhLm8pKX07Xy5nPVVwLnByb3RvdHlwZTtfLmcuYkw9ZnVuY3Rpb24oKXt0aGlzLlJuKCEwKX07Xy5nLmFMPWZ1bmN0aW9uKCl7dGhpcy5SbighMSl9O18uZy4kSz1mdW5jdGlvbigpe3RoaXMuUm4oITEpfTtfLmcuY0w9ZnVuY3Rpb24oKXt0aGlzLlJuKCExKX07Cl8uZy5Sbj1mdW5jdGlvbihhKXtXcCh0aGlzKTthPyh0aGlzLnFsPSExLHRoaXMuYi5jYWxsKHRoaXMuZiwhMCkpOjA+PXRoaXMuQXM/VnAodGhpcyk6KHRoaXMucWw9ITEsdGhpcy5iLmNhbGwodGhpcy5mLCExKSl9O3ZhciBXcD1mdW5jdGlvbihhKXthLmEmJihhLmEub25sb2FkPW51bGwsYS5hLm9uZXJyb3I9bnVsbCxhLmEub25hYm9ydD1udWxsLGEuYT1udWxsKTthLm9xJiYoXy5HbChhLm9xKSxhLm9xPW51bGwpO2EueXYmJihfLkdsKGEueXYpLGEueXY9bnVsbCl9Owp2YXIgWHA9ZnVuY3Rpb24oKXtfLkNsLmNhbGwodGhpcyk7dGhpcy5hPW5ldyBVcCh0aGlzLncsdGhpcyk7dGhpcy5mPU1hdGgucm91bmQoNTFFMykrTWF0aC5yb3VuZCgxOEUzKk1hdGgucmFuZG9tKCkpfTtfLm0oWHAsXy5DbCk7WHAucHJvdG90eXBlLmI9MDtYcC5wcm90b3R5cGUubz0hMDtYcC5wcm90b3R5cGUudz1mdW5jdGlvbihhKXt0aGlzLmI9KDAsXy5VYSkoKTt0aGlzLmMoYSl9O1hwLnByb3RvdHlwZS5jPWZ1bmN0aW9uKGEpe3RoaXMubz1hO3RoaXMuZGlzcGF0Y2hFdmVudCgiZiIpfTsKdmFyIFlwPWZ1bmN0aW9uKGEsYixjLGQpe18uY2wuY2FsbCh0aGlzLChkPyJkYXRhX2I6IjoiZGF0YToiKStiKTt0aGlzLnJlcXVlc3Q9YTt0aGlzLmRhdGE9Y307Xy5tKFlwLF8uY2wpO3ZhciAkcD1mdW5jdGlvbigpe3RoaXMuZj1bXTtacCh0aGlzLDFFMyl9O18uZz0kcC5wcm90b3R5cGU7Xy5nLnJ2PTA7Xy5nLlVxPS0xO18uZy5Nbj0wO18uZy5Waj0wO18uZy5uaD0wO18uZy5tSz0wO18uZy5UcT0wO3ZhciBacD1mdW5jdGlvbihhLGIsYyl7Yz9hLlRxPWI6KGI9TWF0aC5taW4oM0U1LE1hdGgubWF4KGIsMUUzKSksYS5UcT1NYXRoLnJvdW5kKC44NSpiKStNYXRoLnJvdW5kKC4zKmIqTWF0aC5yYW5kb20oKSkpfTtfLmc9JHAucHJvdG90eXBlO18uZy5qcT1mdW5jdGlvbigpe3JldHVybiB0aGlzLk1ufTtfLmcubnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Nbj09dGhpcy5VcX07Xy5nLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWR9O18uZy5BYT1mdW5jdGlvbihhKXt0aGlzLkFkPWF9O18uZy5yZXNldD1mdW5jdGlvbigpe3RoaXMuYj1udWxsO3RoaXMuQWEobnVsbCl9Owp2YXIgYXE9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5iPWE7dGhpcy5hPWI7KCFfLkNhKGIpfHwwPj1iKSYmcm8obnVsbCxFcnJvcigiTmAiK2IrImAiKyhhJiZhLmEuYikpKTt0aGlzLm89MT09Yzt0aGlzLmY9ZH07YXEucHJvdG90eXBlLkRnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07dmFyIGJxPWZ1bmN0aW9uKGEpe2lmKGEubylhPSExO2Vsc2V7dmFyIGI7aWYoYj0hIWEuYilhOnN3aXRjaChiPWEuYixiLlVrKXtjYXNlICJSRVRSWSI6Yj0hMDticmVhayBhO2Nhc2UgIkZBSUwiOmI9ITE7YnJlYWsgYTtjYXNlICJCRVNUX0VGRk9SVCI6Yj1hLmZ8fGEuYi5yajtiPTUwMDw9YS5hJiYzPmI/ITA6ITE7YnJlYWsgYTtkZWZhdWx0OnRocm93IEVycm9yKCJPYCIrYi5Vayk7fWE9Yn1yZXR1cm4gYX07YXEucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLmEpfTsKdmFyIGNxPWZ1bmN0aW9uKGEsYixjKXtfLmNsLmNhbGwodGhpcyxhKTtjJiYodGhpcy5hPWMpfTtfLm0oY3EsXy5jbCk7Y3EucHJvdG90eXBlLk55PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07dmFyIGRxPWZ1bmN0aW9uKCl7Xy5YYS5jYWxsKHRoaXMpO3RoaXMubWVzc2FnZT0iUmV0cnlhYmxlIFNlcnZlciBFcnJvciJ9O18ubShkcSxfLlhhKTt2YXIgZXE9ZnVuY3Rpb24oKXt9LFpjYT1mdW5jdGlvbihhKXt2YXIgYj1hLklrLGM9ZnVuY3Rpb24oYSl7Yy4kLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhKTt2YXIgYj10aGlzLlZnLmxlbmd0aDt0aGlzLmE9W107Zm9yKHZhciBkPTA7ZDxiOysrZCl0aGlzLlZnW2RdLklZfHwodGhpcy5hW2RdPW5ldyB0aGlzLlZnW2RdKGEpKX07Xy5tKGMsYik7Zm9yKHZhciBkPVtdO2E7KXtpZihiPWEuSWspe2IuVmcmJl8uc2IoZCxiLlZnKTt2YXIgZT1iLnByb3RvdHlwZSxmO2ZvcihmIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShmKSYmXy5PYShlW2ZdKSYmZVtmXSE9PWIpe3ZhciBrPSEhZVtmXS5WVyxuPVhjYShmLGUsZCxrKTsoaz1ZY2EoZixlLG4saykpJiYoYy5wcm90b3R5cGVbZl09ayl9fWE9YS4kJiZhLiQuY29uc3RydWN0b3J9Yy5wcm90b3R5cGUuVmc9ZDtyZXR1cm4gY30sWGNhPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZT1bXSxmPTA7ZjxjLmxlbmd0aCYmKGNbZl0ucHJvdG90eXBlW2FdPT09CmJbYV18fChlLnB1c2goZiksIWQpKTsrK2YpO3JldHVybiBlfSxZY2E9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU7Yy5sZW5ndGg/ZD9lPWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMuYVtjWzBdXTtyZXR1cm4gZD9kW2FdLmFwcGx5KHRoaXMuYVtjWzBdXSxhcmd1bWVudHMpOnRoaXMuVmdbY1swXV0ucHJvdG90eXBlW2FdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX06YlthXS5DRT9lPWZ1bmN0aW9uKGIpe2E6e3ZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoOysrZSl7dmFyIGY9dGhpcy5hW2NbZV1dO2lmKGY9Zj9mW2FdLmFwcGx5KGYsZCk6dGhpcy5WZ1tjW2VdXS5wcm90b3R5cGVbYV0uYXBwbHkodGhpcyxkKSl7ZD1mO2JyZWFrIGF9fWQ9ITF9cmV0dXJuIGR9OmJbYV0uekU/ZT1mdW5jdGlvbihiKXthOnt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDsrK2Upe3ZhciBmPQp0aGlzLmFbY1tlXV07Zj1mP2ZbYV0uYXBwbHkoZixkKTp0aGlzLlZnW2NbZV1dLnByb3RvdHlwZVthXS5hcHBseSh0aGlzLGQpO2lmKG51bGwhPWYpe2Q9ZjticmVhayBhfX1kPXZvaWQgMH1yZXR1cm4gZH06YlthXS51QT9lPWZ1bmN0aW9uKGIpe2Zvcih2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCksZT0wO2U8Yy5sZW5ndGg7KytlKXt2YXIgZj10aGlzLmFbY1tlXV07Zj9mW2FdLmFwcGx5KGYsZCk6dGhpcy5WZ1tjW2VdXS5wcm90b3R5cGVbYV0uYXBwbHkodGhpcyxkKX19OmU9ZnVuY3Rpb24oYil7Zm9yKHZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSxlPVtdLGY9MDtmPGMubGVuZ3RoOysrZil7dmFyIEE9dGhpcy5hW2NbZl1dO2UucHVzaChBP0FbYV0uYXBwbHkoQSxkKTp0aGlzLlZnW2NbZl1dLnByb3RvdHlwZVthXS5hcHBseSh0aGlzLGQpKX1yZXR1cm4gZX06ZHx8YlthXS5DRXx8YlthXS56RXx8YlthXS51QT8gZT1udWxsOmU9JGNhO3JldHVybiBlfSwkY2E9ZnVuY3Rpb24oKXtyZXR1cm5bXX07ZXEucHJvdG90eXBlLnc9ZnVuY3Rpb24oYSl7aWYodGhpcy5hKWZvcih2YXIgYj0wO2I8dGhpcy5hLmxlbmd0aDsrK2IpaWYodGhpcy5hW2JdaW5zdGFuY2VvZiBhKXJldHVybiB0aGlzLmFbYl07cmV0dXJuIG51bGx9Owp2YXIgYWRhPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkprLncoYSl9O3ZhciBmcT1mdW5jdGlvbihhKXt0aGlzLnRyYW5zcG9ydD1hfTtfLm0oZnEsZXEpO2ZxLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7fTtmcS5wcm90b3R5cGUuYi51QT0hMDt2YXIgZ3E9ZnVuY3Rpb24oKXtfLkFrLmNhbGwodGhpcyk7aWYoIXRoaXMuSmspe2Zvcih2YXIgYT10aGlzLmNvbnN0cnVjdG9yO2EmJiFhLklrOylhPWEuJCYmYS4kLmNvbnN0cnVjdG9yO2EuSWsuU3h8fChhLklrLlN4PVpjYShhKSk7dGhpcy5Kaz1uZXcgYS5Jay5TeCh0aGlzKTt0aGlzLnd8fCh0aGlzLnc9YWRhKX19O18ubShncSxfLkFrKTtmcS4kfHxfLm0oZnEsZXEpO2dxLklrPWZxO18uZz1ncS5wcm90b3R5cGU7Xy5nLkRqPSExO18uZy5Dcj1mdW5jdGlvbihhKXt0aGlzLmI9YX07Xy5nLm53PWZ1bmN0aW9uKCl7cmV0dXJuIDB9O18uZy5Kcj1mdW5jdGlvbihhKXt0aGlzLmIuc3AoYSk7dGhpcy5mPWF9O18uZy5hYm9ydD1mdW5jdGlvbigpe18uSWEoKX07IHZhciBiZGE9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMzpyZXR1cm4gODtjYXNlIDQ6cmV0dXJuIHdpbmRvdy5OYU47Y2FzZSA3OnJldHVybiAxMDA7Y2FzZSA2OnJldHVybiBifHw3O2Nhc2UgODpyZXR1cm4gMTAxO2Nhc2UgNTpyZXR1cm4gOTtkZWZhdWx0OnJldHVybiAxMDJ9fTtncS5wcm90b3R5cGUuVGk9ZnVuY3Rpb24oYSxiKXt0aGlzLm89YTt0aGlzLndhPWJ9Owp2YXIgaHE9ZnVuY3Rpb24oKXtfLlhhLmNhbGwodGhpcyk7dGhpcy5tZXNzYWdlPSJYU1JGIHRva2VuIHJlZnJlc2gifTtfLm0oaHEsXy5YYSk7dmFyIGNkYT0hXy53Y3x8UGMoOSksZGRhPSFfLnpjJiYhXy53Y3x8Xy53YyYmUGMoOSl8fF8uemMmJk9jKCIxLjkuMSIpLGlxPV8ud2MmJiFPYygiOSIpLHpkYT1fLndjfHxfLnZjfHxfLkJjO3ZhciBBZGE9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsY29tbWFuZDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfTt2YXIga3E9ZnVuY3Rpb24oKXt0aGlzLmE9IiI7dGhpcy5iPWpxfSxqcTtrcS5wcm90b3R5cGUuZmg9ITA7a3EucHJvdG90eXBlLlhmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07a3EucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNvbnN0eyIrdGhpcy5hKyJ9In07Xy5scT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGtxJiZhLmNvbnN0cnVjdG9yPT09a3EmJmEuYj09PWpxP2EuYToidHlwZV9lcnJvcjpDb25zdCJ9O2pxPXt9O18ubXE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGtxO2IuYT1hO3JldHVybiBifTtfLm1xKCIiKTsKdmFyIEJkYSxucSxDZGEsRGRhLEVkYSxGZGEsR2RhLEhkYTtCZGE9LzxbXj5dKj58JlteO10rOy9nO25xPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/YS5yZXBsYWNlKEJkYSwiIik6YX07Q2RhPS9bQS1aYS16XHUwMGMwLVx1MDBkNlx1MDBkOC1cdTAwZjZcdTAwZjgtXHUwMmI4XHUwMzAwLVx1MDU5MFx1MDgwMC1cdTFmZmZcdTIwMGVcdTJjMDAtXHVmYjFjXHVmZTAwLVx1ZmU2Zlx1ZmVmZC1cdWZmZmZdLztEZGE9L15bXkEtWmEtelx1MDBjMC1cdTAwZDZcdTAwZDgtXHUwMGY2XHUwMGY4LVx1MDJiOFx1MDMwMC1cdTA1OTBcdTA4MDAtXHUxZmZmXHUyMDBlXHUyYzAwLVx1ZmIxY1x1ZmUwMC1cdWZlNmZcdWZlZmQtXHVmZmZmXSpbXHUwNTkxLVx1MDZlZlx1MDZmYS1cdTA3ZmZcdTIwMGZcdWZiMWQtXHVmZGZmXHVmZTcwLVx1ZmVmY10vO0VkYT0vXmh0dHA6XC9cLy4qLztGZGE9L1tcdTA1OTEtXHUwNmVmXHUwNmZhLVx1MDdmZlx1MjAwZlx1ZmIxZC1cdWZkZmZcdWZlNzAtXHVmZWZjXVteQS1aYS16XHUwMGMwLVx1MDBkNlx1MDBkOC1cdTAwZjZcdTAwZjgtXHUwMmI4XHUwMzAwLVx1MDU5MFx1MDgwMC1cdTFmZmZcdTIwMGVcdTJjMDAtXHVmYjFjXHVmZTAwLVx1ZmU2Zlx1ZmVmZC1cdWZmZmZdKiQvOwpHZGE9L1xzKy87SGRhPS9bXGRcdTA2ZjAtXHUwNmY5XS87Xy5vcT1mdW5jdGlvbihhLGIpe3ZhciBjPTAsZD0wLGU9ITE7YT1ucShhLGIpLnNwbGl0KEdkYSk7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGY9YVtiXTtEZGEudGVzdChucShmLHZvaWQgMCkpPyhjKyssZCsrKTpFZGEudGVzdChmKT9lPSEwOkNkYS50ZXN0KG5xKGYsdm9pZCAwKSk/ZCsrOkhkYS50ZXN0KGYpJiYoZT0hMCl9cmV0dXJuIDA9PWQ/ZT8xOjA6LjQ8Yy9kPy0xOjF9O18ucHE9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goXy5vcShiKSl7Y2FzZSAxOmEuZGlyPSJsdHIiO2JyZWFrO2Nhc2UgLTE6YS5kaXI9InJ0bCI7YnJlYWs7ZGVmYXVsdDphLnJlbW92ZUF0dHJpYnV0ZSgiZGlyIil9fTsKdmFyIHJxPWZ1bmN0aW9uKCl7dGhpcy5hPSIiO3RoaXMuYj1xcX0scXE7cnEucHJvdG90eXBlLmZoPSEwO3JxLnByb3RvdHlwZS5YZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9O3JxLnByb3RvdHlwZS5pdT0hMDtycS5wcm90b3R5cGUudWo9ZnVuY3Rpb24oKXtyZXR1cm4gMX07Xy5zcT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgcnEmJmEuY29uc3RydWN0b3I9PT1ycSYmYS5iPT09cXEpcmV0dXJuIGEuYTtMYShhKTtyZXR1cm4idHlwZV9lcnJvcjpUcnVzdGVkUmVzb3VyY2VVcmwifTtxcT17fTtfLnRxPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBycTtiLmE9YTtyZXR1cm4gYn07CnZhciB4cSxBcSx1cTtfLnZxPWZ1bmN0aW9uKCl7dGhpcy5hPSIiO3RoaXMuYj11cX07Xy52cS5wcm90b3R5cGUuZmg9ITA7Xy52cS5wcm90b3R5cGUuWGY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTtfLnZxLnByb3RvdHlwZS5pdT0hMDtfLnZxLnByb3RvdHlwZS51aj1mdW5jdGlvbigpe3JldHVybiAxfTtfLndxPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLnZxJiZhLmNvbnN0cnVjdG9yPT09Xy52cSYmYS5iPT09dXEpcmV0dXJuIGEuYTtMYShhKTtyZXR1cm4idHlwZV9lcnJvcjpTYWZlVXJsIn07eHE9L14oPzooPzpodHRwcz98bWFpbHRvfGZ0cCk6fFteOi8/I10qKD86Wy8/I118JCkpL2k7Xy56cT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy52cSlyZXR1cm4gYTthPWEuZmg/YS5YZigpOlN0cmluZyhhKTt4cS50ZXN0KGEpfHwoYT0iYWJvdXQ6aW52YWxpZCN6Q2xvc3VyZXoiKTtyZXR1cm4gXy55cShhKX07IEFxPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLnZxKXJldHVybiBhO2E9YS5maD9hLlhmKCk6U3RyaW5nKGEpO3hxLnRlc3QoYSl8fChhPSJhYm91dDppbnZhbGlkI3pDbG9zdXJleiIpO3JldHVybiBfLnlxKGEpfTt1cT17fTtfLnlxPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnZxO2IuYT1hO3JldHVybiBifTtfLnlxKCJhYm91dDpibGFuayIpOwp2YXIgQ3E9ZnVuY3Rpb24oKXt0aGlzLmE9IiI7dGhpcy5iPUJxfTtDcS5wcm90b3R5cGUuZmg9ITA7dmFyIEJxPXt9O0NxLnByb3RvdHlwZS5YZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9Owp2YXIgRHE9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIENxJiZhLmNvbnN0cnVjdG9yPT09Q3EmJmEuYj09PUJxKXJldHVybiBhLmE7TGEoYSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVN0eWxlIn0sRXE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IENxO2IuYT1hO3JldHVybiBifSxJZGE9RXEoIiIpLEdxPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLnZxKWE9J3VybCgiJytfLndxKGEpLnJlcGxhY2UoLzwvZywiJTNjIikucmVwbGFjZSgvW1xcIl0vZywiXFwkJiIpKyciKSc7ZWxzZSBpZihhIGluc3RhbmNlb2Yga3EpYT1fLmxxKGEpO2Vsc2V7YT1TdHJpbmcoYSk7dmFyIGI9YS5yZXBsYWNlKEpkYSwiJDEiKS5yZXBsYWNlKEZxLCJ1cmwiKTtpZihiPUtkYS50ZXN0KGIpKXtmb3IodmFyIGM9Yj0hMCxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBlPWEuY2hhckF0KGQpOyInIj09ZSYmYz9iPSFiOiciJz09ZSYmYiYmKGM9IWMpfWI9YiYmY31hPWI/TGRhKGEpOiJ6Q2xvc3VyZXoifXJldHVybiBhfSwKS2RhPS9eWy0sLiInJV8hIyBhLXpBLVowLTldKyQvLEZxPS9cYih1cmxcKFsgXHRcbl0qKSgnWyAtJigtXFtcXS1+XSonfCJbICEjLVxbXF0tfl0qInxbISMtJiotXFtcXS1+XSopKFsgXHRcbl0qXCkpL2csSmRhPS9cYihoc2x8aHNsYXxyZ2J8cmdiYXwocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPylcKFstMC05YS16LiUsIF0rXCkvZyxMZGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShGcSxmdW5jdGlvbihhLGMsZCxlKXt2YXIgYj0iIjtkPWQucmVwbGFjZSgvXihbJyJdKSguKilcMSQvLGZ1bmN0aW9uKGEsYyxkKXtiPWM7cmV0dXJuIGR9KTthPV8uenEoZCkuWGYoKTtyZXR1cm4gYytiK2ErYitlfSl9Owp2YXIgSXE9ZnVuY3Rpb24oKXt0aGlzLmE9IiI7dGhpcy5iPUhxfTtJcS5wcm90b3R5cGUuZmg9ITA7dmFyIEhxPXt9O0lxLnByb3RvdHlwZS5YZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9O3ZhciBLcT1mdW5jdGlvbigpe3RoaXMuYj0iIjt0aGlzLmY9SnE7dGhpcy5hPW51bGx9LE9xLE1kYSxOZGEsT2RhLEpxO0txLnByb3RvdHlwZS5pdT0hMDtLcS5wcm90b3R5cGUudWo9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTtLcS5wcm90b3R5cGUuZmg9ITA7S3EucHJvdG90eXBlLlhmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn07Xy5McT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgS3EmJmEuY29uc3RydWN0b3I9PT1LcSYmYS5mPT09SnEpcmV0dXJuIGEuYjtMYShhKTtyZXR1cm4idHlwZV9lcnJvcjpTYWZlSHRtbCJ9O18uTnE9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIEtxKXJldHVybiBhO3ZhciBiPW51bGw7YS5pdSYmKGI9YS51aigpKTthPV8uSmIoYS5maD9hLlhmKCk6U3RyaW5nKGEpKTtyZXR1cm4gXy5NcShhLGIpfTtPcT0vXlthLXpBLVowLTktXSskLzsKTWRhPXthY3Rpb246ITAsY2l0ZTohMCxkYXRhOiEwLGZvcm1hY3Rpb246ITAsaHJlZjohMCxtYW5pZmVzdDohMCxwb3N0ZXI6ITAsc3JjOiEwfTtOZGE9e0FQUExFVDohMCxCQVNFOiEwLEVNQkVEOiEwLElGUkFNRTohMCxMSU5LOiEwLE1BVEg6ITAsTUVUQTohMCxPQkpFQ1Q6ITAsU0NSSVBUOiEwLFNUWUxFOiEwLFNWRzohMCxURU1QTEFURTohMH07Xy5QcT1mdW5jdGlvbihhKXt2YXIgYj0wLGM9IiIsZD1mdW5jdGlvbihhKXtfLk1hKGEpPygwLF8uYWIpKGEsZCk6KGE9Xy5OcShhKSxjKz1fLkxxKGEpLGE9YS51aigpLDA9PWI/Yj1hOjAhPWEmJmIhPWEmJihiPW51bGwpKX07KDAsXy5hYikoYXJndW1lbnRzLGQpO3JldHVybiBfLk1xKGMsYil9O09kYT1mdW5jdGlvbihhLGIpe3ZhciBjPV8uUHEoXy50Yihhcmd1bWVudHMsMSkpO2MuYT1hO3JldHVybiBjfTtKcT17fTtfLk1xPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IEtxO2MuYj1hO2MuYT1iO3JldHVybiBjfTsgXy5NcSgiPCFET0NUWVBFIGh0bWw+IiwwKTtfLk1xKCIiLDApO18uUGRhPV8uTXEoIjxicj4iLDApOwpfLlFxPWZ1bmN0aW9uKGEsYil7Yj1iIGluc3RhbmNlb2YgXy52cT9iOkFxKGIpO2EuaHJlZj1fLndxKGIpfTtfLlJxPWZ1bmN0aW9uKGEsYil7YS5zcmM9Xy5zcShiKX07Xy5TcT1mdW5jdGlvbihhLGIpe2I9YiBpbnN0YW5jZW9mIF8udnE/YjpBcShiKTthLmhyZWY9Xy53cShiKX07Xy5UcT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uTXEoYixjfHxudWxsKX07Xy5VcT1mdW5jdGlvbihhLGIpe3RoaXMueD1fLkNhKGEpP2E6MDt0aGlzLnk9Xy5DYShiKT9iOjB9O18uVXEucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLlVxKHRoaXMueCx0aGlzLnkpfTtfLlVxLnByb3RvdHlwZS5RZj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uVXEmJih0aGlzPT1hPyEwOnRoaXMmJmE/dGhpcy54PT1hLngmJnRoaXMueT09YS55OiExKX07dmFyIFZxPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS54LWIueDthPWEueS1iLnk7cmV0dXJuIE1hdGguc3FydChjKmMrYSphKX0sV3E9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLngtYi54O2E9YS55LWIueTtyZXR1cm4gYypjK2EqYX0sWHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IF8uVXEoYS54LWIueCxhLnktYi55KX07Xy5VcS5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmNlaWwodGhpcy54KTt0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSk7cmV0dXJuIHRoaXN9OyBfLlVxLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTtyZXR1cm4gdGhpc307Xy5VcS5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpO3RoaXMueT1NYXRoLnJvdW5kKHRoaXMueSk7cmV0dXJuIHRoaXN9Owp2YXIgWXE9ZnVuY3Rpb24oYSxiKXt0aGlzLndpZHRoPWE7dGhpcy5oZWlnaHQ9Yn0sWnE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09Yj8hMDphJiZiP2Eud2lkdGg9PWIud2lkdGgmJmEuaGVpZ2h0PT1iLmhlaWdodDohMX07Xy5nPVlxLnByb3RvdHlwZTtfLmcuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFlxKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfTtfLmcuYXNwZWN0UmF0aW89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53aWR0aC90aGlzLmhlaWdodH07Xy5nLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLmcuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguZmxvb3IodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9OyBfLmcucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9Owp2YXIgZnIsa3IsUWRhLGhyLG9yLFNkYSxxcix0cix1cixUZGEsd3IseHIsUmRhLFVkYSx6cixCciwkcTtfLmJyPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyAkcShfLmFyKGEpKTpZYXx8KFlhPW5ldyAkcSl9O18uZHI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHx3aW5kb3cuZG9jdW1lbnQ7cmV0dXJuIGMucXVlcnlTZWxlY3RvckFsbCYmYy5xdWVyeVNlbGVjdG9yP2MucXVlcnlTZWxlY3RvckFsbCgiLiIrYSk6Xy5jcih3aW5kb3cuZG9jdW1lbnQsIioiLGEsYil9OwpfLmVyPWZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8d2luZG93LmRvY3VtZW50O2lmKGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlhPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKVswXTtlbHNle2M9d2luZG93LmRvY3VtZW50O3ZhciBkPWJ8fGM7YT1kLnF1ZXJ5U2VsZWN0b3JBbGwmJmQucXVlcnlTZWxlY3RvciYmYT9kLnF1ZXJ5U2VsZWN0b3IoIiIrKGE/Ii4iK2E6IiIpKTpfLmNyKGMsIioiLGEsYilbMF18fG51bGx9cmV0dXJuIGF8fG51bGx9OwpfLmNyPWZ1bmN0aW9uKGEsYixjLGQpe2E9ZHx8YTtiPWImJiIqIiE9Yj9TdHJpbmcoYikudG9VcHBlckNhc2UoKToiIjtpZihhLnF1ZXJ5U2VsZWN0b3JBbGwmJmEucXVlcnlTZWxlY3RvciYmKGJ8fGMpKXJldHVybiBhLnF1ZXJ5U2VsZWN0b3JBbGwoYisoYz8iLiIrYzoiIikpO2lmKGMmJmEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSl7YT1hLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYyk7aWYoYil7ZD17fTtmb3IodmFyIGU9MCxmPTAsaztrPWFbZl07ZisrKWI9PWsubm9kZU5hbWUmJihkW2UrK109ayk7ZC5sZW5ndGg9ZTtyZXR1cm4gZH1yZXR1cm4gYX1hPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYnx8IioiKTtpZihjKXtkPXt9O2ZvcihmPWU9MDtrPWFbZl07ZisrKWI9ay5jbGFzc05hbWUsImZ1bmN0aW9uIj09dHlwZW9mIGIuc3BsaXQmJl8ubGIoYi5zcGxpdCgvXHMrLyksYykmJihkW2UrK109ayk7ZC5sZW5ndGg9ZTtyZXR1cm4gZH1yZXR1cm4gYX07Cl8uZ3I9ZnVuY3Rpb24oYSxiKXtfLiRiKGIsZnVuY3Rpb24oYixkKXtiJiZiLmZoJiYoYj1iLlhmKCkpOyJzdHlsZSI9PWQ/YS5zdHlsZS5jc3NUZXh0PWI6ImNsYXNzIj09ZD9hLmNsYXNzTmFtZT1iOiJmb3IiPT1kP2EuaHRtbEZvcj1iOmZyLmhhc093blByb3BlcnR5KGQpP2Euc2V0QXR0cmlidXRlKGZyW2RdLGIpOl8uQWIoZCwiYXJpYS0iKXx8Xy5BYihkLCJkYXRhLSIpP2Euc2V0QXR0cmlidXRlKGQsYik6YVtkXT1ifSl9O2ZyPXtjZWxscGFkZGluZzoiY2VsbFBhZGRpbmciLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIsY29sc3BhbjoiY29sU3BhbiIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVyIixoZWlnaHQ6ImhlaWdodCIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLG5vbmNlOiJub25jZSIscm9sZToicm9sZSIscm93c3Bhbjoicm93U3BhbiIsdHlwZToidHlwZSIsdXNlbWFwOiJ1c2VNYXAiLHZhbGlnbjoidkFsaWduIix3aWR0aDoid2lkdGgifTsKXy5pcj1mdW5jdGlvbihhKXthPShhfHx3aW5kb3cpLmRvY3VtZW50O2E9aHIoYSk/YS5kb2N1bWVudEVsZW1lbnQ6YS5ib2R5O3JldHVybiBuZXcgWXEoYS5jbGllbnRXaWR0aCxhLmNsaWVudEhlaWdodCl9O2tyPWZ1bmN0aW9uKGEpe3ZhciBiPV8uanIoYSk7YT1hLnBhcmVudFdpbmRvd3x8YS5kZWZhdWx0VmlldztyZXR1cm4gXy53YyYmT2MoIjEwIikmJmEucGFnZVlPZmZzZXQhPWIuc2Nyb2xsVG9wP25ldyBfLlVxKGIuc2Nyb2xsTGVmdCxiLnNjcm9sbFRvcCk6bmV3IF8uVXEoYS5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0LGEucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKX07Xy5qcj1mdW5jdGlvbihhKXtyZXR1cm4gYS5zY3JvbGxpbmdFbGVtZW50P2Euc2Nyb2xsaW5nRWxlbWVudDohXy5CYyYmaHIoYSk/YS5kb2N1bWVudEVsZW1lbnQ6YS5ib2R5fHxhLmRvY3VtZW50RWxlbWVudH07Cl8ubHI9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YS5wYXJlbnRXaW5kb3d8fGEuZGVmYXVsdFZpZXc6d2luZG93fTtfLm1yPWZ1bmN0aW9uKGEsYil7dmFyIGM9U3RyaW5nKGJbMF0pLGQ9YlsxXTtpZighY2RhJiZkJiYoZC5uYW1lfHxkLnR5cGUpKXtjPVsiPCIsY107ZC5uYW1lJiZjLnB1c2goJyBuYW1lPSInLF8uSmIoZC5uYW1lKSwnIicpO2lmKGQudHlwZSl7Yy5wdXNoKCcgdHlwZT0iJyxfLkpiKGQudHlwZSksJyInKTt2YXIgZT17fTtfLmtjKGUsZCk7ZGVsZXRlIGUudHlwZTtkPWV9Yy5wdXNoKCI+Iik7Yz1jLmpvaW4oIiIpfWM9YS5jcmVhdGVFbGVtZW50KGMpO2QmJihfLkRhKGQpP2MuY2xhc3NOYW1lPWQ6Xy5NYShkKT9jLmNsYXNzTmFtZT1kLmpvaW4oIiAiKTpfLmdyKGMsZCkpOzI8Yi5sZW5ndGgmJlFkYShhLGMsYik7cmV0dXJuIGN9OwpRZGE9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYyl7YyYmYi5hcHBlbmRDaGlsZChfLkRhKGMpP2EuY3JlYXRlVGV4dE5vZGUoYyk6Yyl9Zm9yKHZhciBlPTI7ZTxjLmxlbmd0aDtlKyspe3ZhciBmPWNbZV07IU5hKGYpfHxfLlBhKGYpJiYwPGYubm9kZVR5cGU/ZChmKTooMCxfLmFiKShSZGEoZik/Xy5yYihmKTpmLGQpfX07aHI9ZnVuY3Rpb24oYSl7cmV0dXJuIkNTUzFDb21wYXQiPT1hLmNvbXBhdE1vZGV9O18ubnI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiO2I9YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGIpfTtvcj1mdW5jdGlvbihhLGIpe2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIpfTtTZGE9ZnVuY3Rpb24oYSxiKXtiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiLm5leHRTaWJsaW5nKX07Cl8ucHI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEucGFyZW50Tm9kZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk6bnVsbH07cXI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnBhcmVudE5vZGU7YyYmYy5yZXBsYWNlQ2hpbGQoYSxiKX07Xy5ycj1mdW5jdGlvbihhKXtyZXR1cm4gZGRhJiZ2b2lkIDAhPWEuY2hpbGRyZW4/YS5jaGlsZHJlbjooMCxfLmNiKShhLmNoaWxkTm9kZXMsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PWEubm9kZVR5cGV9KX07Xy5zcj1mdW5jdGlvbihhKXtyZXR1cm4gXy5QYShhKSYmMT09YS5ub2RlVHlwZX07dHI9ZnVuY3Rpb24oYSl7dmFyIGI7aWYoemRhJiYhKF8ud2MmJk9jKCI5IikmJiFPYygiMTAiKSYmXy5oLlNWR0VsZW1lbnQmJmEgaW5zdGFuY2VvZiBfLmguU1ZHRWxlbWVudCkmJihiPWEucGFyZW50RWxlbWVudCkpcmV0dXJuIGI7Yj1hLnBhcmVudE5vZGU7cmV0dXJuIF8uc3IoYik/YjpudWxsfTsKdXI9ZnVuY3Rpb24oYSxiKXtpZighYXx8IWIpcmV0dXJuITE7aWYoYS5jb250YWlucyYmMT09Yi5ub2RlVHlwZSlyZXR1cm4gYT09Ynx8YS5jb250YWlucyhiKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24pcmV0dXJuIGE9PWJ8fCEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpO2Zvcig7YiYmYSE9YjspYj1iLnBhcmVudE5vZGU7cmV0dXJuIGI9PWF9O18uYXI9ZnVuY3Rpb24oYSl7cmV0dXJuIDk9PWEubm9kZVR5cGU/YTphLm93bmVyRG9jdW1lbnR8fGEuZG9jdW1lbnR9OwpfLnZyPWZ1bmN0aW9uKGEsYil7aWYoInRleHRDb250ZW50ImluIGEpYS50ZXh0Q29udGVudD1iO2Vsc2UgaWYoMz09YS5ub2RlVHlwZSlhLmRhdGE9U3RyaW5nKGIpO2Vsc2UgaWYoYS5maXJzdENoaWxkJiYzPT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpe2Zvcig7YS5sYXN0Q2hpbGQhPWEuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmxhc3RDaGlsZCk7YS5maXJzdENoaWxkLmRhdGE9U3RyaW5nKGIpfWVsc2UgXy5ucihhKSxhLmFwcGVuZENoaWxkKF8uYXIoYSkuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGIpKSl9O1RkYT17U0NSSVBUOjEsU1RZTEU6MSxIRUFEOjEsSUZSQU1FOjEsT0JKRUNUOjF9O3dyPXtJTUc6IiAiLEJSOiJcbiJ9OwpfLnlyPWZ1bmN0aW9uKGEpe2lmKGlxJiZudWxsIT09YSYmImlubmVyVGV4dCJpbiBhKWE9YS5pbm5lclRleHQucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csIlxuIik7ZWxzZXt2YXIgYj1bXTt4cihhLGIsITApO2E9Yi5qb2luKCIiKX1hPWEucmVwbGFjZSgvIFx4QUQgL2csIiAiKS5yZXBsYWNlKC9ceEFEL2csIiIpO2E9YS5yZXBsYWNlKC9cdTIwMEIvZywiIik7aXF8fChhPWEucmVwbGFjZSgvICsvZywiICIpKTsiICIhPWEmJihhPWEucmVwbGFjZSgvXlxzKi8sIiIpKTtyZXR1cm4gYX07CnhyPWZ1bmN0aW9uKGEsYixjKXtpZighKGEubm9kZU5hbWUgaW4gVGRhKSlpZigzPT1hLm5vZGVUeXBlKWM/Yi5wdXNoKFN0cmluZyhhLm5vZGVWYWx1ZSkucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csIiIpKTpiLnB1c2goYS5ub2RlVmFsdWUpO2Vsc2UgaWYoYS5ub2RlTmFtZSBpbiB3ciliLnB1c2god3JbYS5ub2RlTmFtZV0pO2Vsc2UgZm9yKGE9YS5maXJzdENoaWxkO2E7KXhyKGEsYixjKSxhPWEubmV4dFNpYmxpbmd9O1JkYT1mdW5jdGlvbihhKXtpZihhJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RoKXtpZihfLlBhKGEpKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhLml0ZW18fCJzdHJpbmciPT10eXBlb2YgYS5pdGVtO2lmKF8uT2EoYSkpcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGEuaXRlbX1yZXR1cm4hMX07ClVkYT1mdW5jdGlvbihhKXtyZXR1cm4genIoYSxmdW5jdGlvbihhKXtyZXR1cm4gXy5EYShhLmNsYXNzTmFtZSkmJl8ubGIoYS5jbGFzc05hbWUuc3BsaXQoL1xzKy8pLCJmYjBnNiIpfSwhMCx2b2lkIDApfTt6cj1mdW5jdGlvbihhLGIsYyxkKXthJiYhYyYmKGE9YS5wYXJlbnROb2RlKTtmb3IoYz0wO2EmJihudWxsPT1kfHxjPD1kKTspe2lmKGIoYSkpcmV0dXJuIGE7YT1hLnBhcmVudE5vZGU7YysrfXJldHVybiBudWxsfTtfLkFyPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYSYmYS5hY3RpdmVFbGVtZW50fWNhdGNoKGIpe31yZXR1cm4gbnVsbH07QnI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubHIoKS5tYXRjaE1lZGlhKCIobWluLXJlc29sdXRpb246ICIrYSsiZHBweCksKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogIithKyIpLChtaW4tcmVzb2x1dGlvbjogIis5NiphKyJkcGkpIikubWF0Y2hlcz9hOjB9OwokcT1mdW5jdGlvbihhKXt0aGlzLmE9YXx8Xy5oLmRvY3VtZW50fHx3aW5kb3cuZG9jdW1lbnR9O18uZz0kcS5wcm90b3R5cGU7Xy5nLmNjPV8uYnI7Xy5nLkliPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07Xy5nLnJhPWZ1bmN0aW9uKGEpe3JldHVybiBfLkRhKGEpP3RoaXMuYS5nZXRFbGVtZW50QnlJZChhKTphfTtfLmcuS2k9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLm1yKHRoaXMuYSxhcmd1bWVudHMpfTtfLmcuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hLmNyZWF0ZUVsZW1lbnQoU3RyaW5nKGEpKX07Xy5nLmdldFdpbmRvdz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYTtyZXR1cm4gYS5wYXJlbnRXaW5kb3d8fGEuZGVmYXVsdFZpZXd9O18uZy5VST1vcjtfLmcuWkg9Xy5wcjtfLmcuZXE9Xy5ycjtfLmcuY29udGFpbnM9dXI7Xy5nLmZuPV8uYXI7Cl8uQ3I9ZnVuY3Rpb24oYSl7Xy5Bay5jYWxsKHRoaXMpO3RoaXMuYj1hO3RoaXMuYT17fX07Xy5tKF8uQ3IsXy5Bayk7dmFyIERyPVtdO18uQ3IucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gRXIodGhpcyxhLGIsYyxkKX07dmFyIEVyPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtfLk1hKGMpfHwoYyYmKERyWzBdPWMudG9TdHJpbmcoKSksYz1Ecik7Zm9yKHZhciBrPTA7azxjLmxlbmd0aDtrKyspe3ZhciBuPV8ucWwoYixjW2tdLGR8fGEuaGFuZGxlRXZlbnQsZXx8ITEsZnx8YS5ifHxhKTtpZighbilicmVhazthLmFbbi5rZXldPW59cmV0dXJuIGF9O18uQ3IucHJvdG90eXBlLk9sPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBGcih0aGlzLGEsYixjLGQpfTsKdmFyIEZyPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihfLk1hKGMpKWZvcih2YXIgaz0wO2s8Yy5sZW5ndGg7aysrKUZyKGEsYixjW2tdLGQsZSxmKTtlbHNle2I9cGwoYixjLGR8fGEuaGFuZGxlRXZlbnQsZSxmfHxhLmJ8fGEpO2lmKCFiKXJldHVybiBhO2EuYVtiLmtleV09Yn1yZXR1cm4gYX07Xy5Dci5wcm90b3R5cGUuWW89ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihfLk1hKGIpKWZvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKXRoaXMuWW8oYSxiW2ZdLGMsZCxlKTtlbHNlIGM9Y3x8dGhpcy5oYW5kbGVFdmVudCxkPV8uUGEoZCk/ISFkLmNhcHR1cmU6ISFkLGU9ZXx8dGhpcy5ifHx0aGlzLGM9cmwoYyksZD0hIWQsYj1nbChhKT9hLmRuKGIsYyxkLGUpOmE/KGE9dGwoYSkpP2EuZG4oYixjLGQsZSk6bnVsbDpudWxsLGImJihfLnhsKGIpLGRlbGV0ZSB0aGlzLmFbYi5rZXldKX07IHZhciBHcj1mdW5jdGlvbihhKXtfLiRiKGEuYSxmdW5jdGlvbihhLGMpe3RoaXMuYS5oYXNPd25Qcm9wZXJ0eShjKSYmXy54bChhKX0sYSk7YS5hPXt9fTtfLkNyLnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe18uQ3IuJC5vYi5jYWxsKHRoaXMpO0dyKHRoaXMpfTtfLkNyLnByb3RvdHlwZS5oYW5kbGVFdmVudD1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJXIik7fTsKdmFyIEhyPWZ1bmN0aW9uKCl7Xy5DbC5jYWxsKHRoaXMpO3RoaXMuZj1uZXcgSW07dGhpcy5jPW5ldyBfLldsO3RoaXMuYT1bXTt0aGlzLmI9W107dGhpcy5qaz1bXTt0aGlzLnc9bmV3IF8uQ3IodGhpcyk7bmV3IF8uV2x9O18ubShIcixfLkNsKTtfLmc9SHIucHJvdG90eXBlO18uZy5aZj1udWxsO18uZy5XcD0iUkVBRFkiO18uZy5Hbj0xO18uZy5UbT0iQkVTVF9FRkZPUlQiO18uZy5kaXNwb3NlPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPTA7YTx0aGlzLmIubGVuZ3RoO2ErKyl7dmFyIGI9dGhpcy5iW2FdLmdldENvbnRleHQoKTtiLm5oJiYoYnAoYi5uaCksYi5uaD0wKX10aGlzLmlzRGlzcG9zZWQoKXx8KEhyLiQuZGlzcG9zZS5jYWxsKHRoaXMpLHRoaXMuZi5jbGVhcigpLHRoaXMuWmYmJihicCh0aGlzLlpmKSx0aGlzLlpmPW51bGwpKTtmb3IoYT0wO2E8dGhpcy5qay5sZW5ndGg7YSsrKXRoaXMuamtbYV0uZGlzcG9zZSgpO3RoaXMuYi5sZW5ndGg9dGhpcy5hLmxlbmd0aD0wO3RoaXMudy5kaXNwb3NlKCl9Owp2YXIgSXI9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtjLmpQPSgwLF8ubCkoYS5rUCxhKTtjLlpxPSgwLF8ubCkoYS5acSxhKTtjLlFuPSgwLF8ubCkoYS5RbixhKTtjLmRJPSgwLF8ubCkoYS5MYSxhKTtjLnBxPSgwLF8ubCkoYS5lYSxhKTtjLm5zPSgwLF8ubCkoYS5aRCxhKTtjLkNfPSgwLF8ubCkoYS5zSCxhKTtjLmpxPSgwLF8ubCkoYS50SCxhKTtjLk80PSgwLF8ubCkoYS5obyxhKTtjLnNwPSgwLF8ubCkoYS5zcCxhKTtiLkNyKGMpO2EuamsucHVzaChiKX07SHIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oYSl7dGhpcy5pc0Rpc3Bvc2VkKCk/SnIodGhpcyxhLDEwNyk6KHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgY3EoImgiLGEpKSx0aGlzLmYuYS5wdXNoKGEpLEtyKHRoaXMpKX07SHIucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuV3B9O3ZhciBWZGE9ZnVuY3Rpb24oYSxiLGMpeygwLF8uYWIpKGEuYS5jb25jYXQoKSxiLGN8fGEpfTsKSHIucHJvdG90eXBlLmFib3J0PWZ1bmN0aW9uKGEsYil7THIodGhpcyxhLGIpfTsKdmFyIExyPWZ1bmN0aW9uKGEsYixjKXtiLmdldFVybCgpO2M9Xy5FYShjKT9jOjEwMDtfLmxiKGEuYSxiKT8oYi5nZXRDb250ZXh0KCkucnY9YywoYT1iLmdldENvbnRleHQoKSkmJmEuYiYmYS5iLmFib3J0KGEucnYpKTphLmYucmVtb3ZlKGIpJiZKcihhLGIsYyl9LFhkYT1mdW5jdGlvbihhLGIpe3ZhciBjPW51bGwsZD17fSxlPSgwLF8uY2IpKGEuamssZnVuY3Rpb24oYSl7dmFyIGM9Xy5SYShhKTtkW2NdPWEubncoYik7cmV0dXJuISFkW2NdfSk7Xy54YihlLCgwLF8ubCkoYS5pLG51bGwsZCxhLmprKSk7Zm9yKHZhciBmPTAsaz0wLG49ZS5sZW5ndGg7ZjxuJiYhYztmKyspe3ZhciBwPWVbZl07aWYoIXAuRGope2M9cDticmVha31wPWRbXy5SYShwKV07aWYoZj09bi0xfHxwPmRbXy5SYShlW2YrMV0pXSlmb3IoOyFjJiZrPD1mOylpZihjPWVbaysrXSxXZGEoYSxjKTxhLkduKWlmKGM9Yy5jbG9uZSgpKUlyKGEsYyk7ZWxzZXtpZigxPT1wKXRocm93IEVycm9yKCJYIik7fWVsc2UgdGhyb3cgRXJyb3IoIlkiKTsKfXJldHVybiBjfTtIci5wcm90b3R5cGUuaT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1fLlJhKGMpLGY9Xy5SYShkKTtyZXR1cm4gYVtlXTxhW2ZdPzE6YVtlXT5hW2ZdPy0xOmMuRGomJiFkLkRqPzE6IWMuRGomJmQuRGo/LTE6KDAsXy4kYSkoYixkKS0oMCxfLiRhKShiLGMpfTt2YXIgV2RhPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDtiPWIuY29uc3RydWN0b3I7YT1hLmprO2Zvcih2YXIgZD0wLGU9YS5sZW5ndGg7ZDxlO2QrKylhW2RdLmNvbnN0cnVjdG9yPT09YiYmYysrO3JldHVybiBjfTtIci5wcm90b3R5cGUuc3A9ZnVuY3Rpb24oYSl7aWYoMCE9dGhpcy5jLmYpZm9yKHZhciBiPXRoaXMuYy5DZSgpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXSxlPXRoaXMuYy5nZXQoZCk7RXAoYS5hLGQsZSk7dGhpcy5jLnJlbW92ZShkKX19Owp2YXIgTXI9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSAiQUNUSVZFIjpjYXNlICJXQUlUSU5HX0ZPUl9SRVRSWSI6Y2FzZSAiUkVUUllfVElNRVIiOmlmKDA9PWEuYS5sZW5ndGgpdGhyb3cgRXJyb3IoIiRgIitiKTt9YiE9YS5XcCYmKGEuV3A9YixhLmRpc3BhdGNoRXZlbnQobmV3IGNxKCJnIikpLGEuamEmJmEuamEuTjMoKSl9LEtyPWZ1bmN0aW9uKGEpe2lmKCJSRUFEWSI9PWEuV3B8fDEhPT1hLkduKXt2YXIgYj1MbShhLmYpO2ImJmEuYS5sZW5ndGg8YS5HbiYmKEttKGEuZiksYi5CYT1uZXcgJHAsYS5hLnB1c2goYiksTnIoYSxiKSl9fSxOcj1mdW5jdGlvbihhLGIpe2IuZ2V0VXJsKCk7dmFyIGM9Yi5nZXRDb250ZXh0KCk7Yy5Nbj0wO2MuVXE9LTE7Yz0oMCxfLlVhKSgpOy0xPT1iLlVtJiYoYi5VbT1jKTtiLkN1PWM7Yi5yaisrO3RyeXtNcihhLCJBQ1RJVkUiKTt0cnl7Yi5nZXRVcmwoKTt2YXIgZD1iLmdldENvbnRleHQoKTtkLnJ2PTA7dmFyIGU9ZC5iO2lmKCFlKXtlPQpYZGEoYSxiKTtpZighZSl0aHJvdyBFcnJvcigiWmAiK2IpO2UuRGo9ITA7ZC5iPWV9ZC5hPW51bGw7ZS5KcihiKTthLlpmfHwoYS5aZj1hcCgiZWEiLGEueUEsM0U0LGEpKX1jYXRjaChmKXt0aHJvdyBmO319Y2F0Y2goZil7dGhyb3cgZjt9fTtIci5wcm90b3R5cGUuZWE9ZnVuY3Rpb24oYSxiKXt0aGlzLnBxKGEsYil9O0hyLnByb3RvdHlwZS5wcT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmdldENvbnRleHQoKSxkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF07Yy5NbisrO3ZhciBmPWVbMF07ImYucmkiIT09ZiYmYy5mLnB1c2goZSk7MT09Yy5qcSgpJiZPcihhKTsiZi5yaSI9PWY/UHIodGhpcyxhLGUpOiJkaSI9PWY/ZXMoYSxlKToiZSI9PWYmJihmcyhhLG5ldyB0ZChlKSksdGhpcy5obyhhKSl9fTsKSHIucHJvdG90eXBlLkxhPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRDb250ZXh0KCk7Yy5NbisrO3ZhciBkPWJbMF07Yy5WaiYmKGJwKGMuVmopLGMuVmo9MCk7ImYucmkiIT09ZCYmYy5mLnB1c2goYik7MT09Yy5qcSgpJiZPcihhKTsiZi5yaSI9PWQ/UHIodGhpcyxhLGIpOiJkaSI9PWQ/ZXMoYSxiKToiZSI9PWQ/KGZzKGEsbmV3IHRkKGIpKSx0aGlzLmhvKGEpKTooYj1hLmdldENvbnRleHQoKSxhPWFwKCJlYSIsXy5TYSh0aGlzLmhvLGEpLDUwLHRoaXMpLGIuVmo9YSl9Owp2YXIgT3I9ZnVuY3Rpb24oYSl7dHJ5e2EuQnQ9KDAsXy5VYSkoKX1jYXRjaChiKXtybygiYWEiLGIpLGEuZ2V0Q29udGV4dCgpLmE9Yn19LFByPWZ1bmN0aW9uKGEsYixjKXsoYz1fLnIobmV3IHdkKGMpLDEpKSYmYS53YSYmYyE9YS53YSYmKGIuZ2V0Q29udGV4dCgpLmE9RXJyb3IoMTA2KSl9LGVzPWZ1bmN0aW9uKGEsYil7dHJ5e3ZhciBjPW5ldyBzZChiKSxkPW5ldyB0byhjKTthLkt2PWR9Y2F0Y2goZSl7cm8oImJhIixlKSxhLmdldENvbnRleHQoKS5hPWV9fSxmcz1mdW5jdGlvbihhLGIpe2E9YS5nZXRDb250ZXh0KCk7dmFyIGM9Xy5yKGIsMSk7YS5VcT1jOzA8Xy5yKGIsNCkmJl8ucihiLDQpfTtfLmc9SHIucHJvdG90eXBlOwpfLmcuaG89ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDb250ZXh0KCk7Yi5WaiYmKGJwKGIuVmopLGIuVmo9MCk7dmFyIGM9Yi5mO2lmKGMubGVuZ3RoJiYoYi5mPVtdLGI9YT9hLmdldENvbnRleHQoKTpudWxsLCFifHwhYi5hKSl0cnl7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1lWzBdO3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgWXAoYSxmLGUsITApKX1hJiZQcChhKSYmYS5iLmlJJiZhLmIuaUkoYSxjKTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFlwKGEsImFhIixjKSk7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKyl7ZT1jW2RdO2Y9ZVswXTtpZihhKWlmKCJlciI9PWYpe3ZhciBrPW5ldyBRaShlKSxuPV8ucihrLDUpO2lmKDUwMDw9biYmNzAwPm4pe3ZhciBwPW5ldyBhcShhLG4sITEsYS5yaik7aWYoYnEocCkpe2IuQWEocCk7dmFyIEE9bmV3IGRxO2IuYT1BO2JyZWFrfX12YXIgRD1hO0QuaHk9aztQcChEKSYmRC5iLnJsJiZELmIucmwoRCl9ZWxzZXtEPWE7CnZhciBGPWYsST1lO1BwKEQpJiZELmIuaHomJkQuYi5oeihELEYsSSl9dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBZcChhLGYsZSkpfX1jYXRjaChKKXtKIGluc3RhbmNlb2YgaHF8fHJvKCJjYSIsSiksYiYmKGIuYT1KKX19O18uZy5aRD1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRDb250ZXh0KCkubnMoKX07Xy5nLnRIPWZ1bmN0aW9uKGEpe3JldHVybiBhLmdldENvbnRleHQoKS5qcSgpfTtfLmcuc0g9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0Q29udGV4dCgpLlVxfTsKXy5nLlFuPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0Q29udGV4dCgpLGM9Yi5hO2lmKGN8fCFiLm5zKCkpe3ZhciBkO2lmKGMpe2lmKGMgaW5zdGFuY2VvZiBocSlyZXR1cm4gYS5nZXRVcmwoKSxiPWIuVHEsXy5sYih0aGlzLmEsYSkmJihacChhLmdldENvbnRleHQoKSxiLCEwKSxuYih0aGlzLmIsYSksYS5nZXRDb250ZXh0KCkubmg9LTEsTXIodGhpcywiV0FJVElOR19GT1JfUkVUUlkiKSksITA7YyBpbnN0YW5jZW9mIGRxP2Q9Yi5nZXRFcnJvcigpOmQ9bmV3IGFxKGEsMTA2PT1jLm1lc3NhZ2U/MTA2OjEyLCEwKX1lbHNlIGQ9bmV3IGFxKGEsMTAzLCExLGEucmopLEVwKGEuYSwiaGV4IiwxKSx0aGlzLmhhJiYoRXAoYS5hLCJucnQiLGEucmopLGEuZ2V0Q29udGV4dCgpKTtncyh0aGlzLGEsZCk7cmV0dXJuITF9YS5nZXRVcmwoKTthLnc9ITE7YS5lYT1udWxsO2EuWHA9LTE7UXAoYSk7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBjcSgiaSIsYSkpO18ucGIodGhpcy5iLGEpO01yKHRoaXMsCiJXQUlUSU5HX0ZPUl9SRUFEWSIpO3JldHVybiEwfTtfLmcuWnE9ZnVuY3Rpb24oYSxiKXt0aGlzLmhvKGEpO2dzKHRoaXMsYSxiKX07dmFyIGdzPWZ1bmN0aW9uKGEsYixjKXtjLkRnKCk7Yi5nZXRVcmwoKTtiLmdldENvbnRleHQoKS5BYShjKTtiLkJ0PS0xO2IuS3Y9dW87YnEoYyk/KG5iKGEuYixiKSxiLmdldENvbnRleHQoKS5uaD0tMSxiPSJXQUlUSU5HX0ZPUl9SRVRSWSIpOihicShjKSxfLnBiKGEuYixiKSxKcihhLGIsYyksYj0iV0FJVElOR19GT1JfUkVBRFkiKTtNcihhLGIpfTtfLmc9SHIucHJvdG90eXBlOwpfLmcua1A9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5pYih0aGlzLmEsZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2V0Q29udGV4dCgpLmI9PWF9KTtfLmxiKHRoaXMuYixiKXx8KGEuRGo9ITEsYi5nZXRDb250ZXh0KCkucmVzZXQoKSxfLnBiKHRoaXMuYSxiKSk7dGhpcy5aZiYmKGJwKHRoaXMuWmYpLHRoaXMuWmY9bnVsbCk7KDAsXy5hYikodGhpcy5iLHRoaXMuUEosdGhpcyk7dGhpcy5hLmxlbmd0aDx0aGlzLkduJiYoTXIodGhpcywiUkVBRFkiKSxLcih0aGlzKSl9O18uZy5QSj1mdW5jdGlvbihhKXt2YXIgYj1hLmdldENvbnRleHQoKTtpZigtMT09Yi5uaCl7dmFyIGM9YS5nZXRQYXJhbSgiZi5yZXRyaWVzIik7VHAoYSx7ImYucmV0cmllcyI6KGM/TnVtYmVyKGMpOjApKzF9LCExKTtjPWIuVHE7dmFyIGQ9KDAsXy5VYSkoKStjO2IubUs9ZDthPWFwKCJlYSIsKDAsXy5sKSh0aGlzLm9MLHRoaXMsYSksYyk7Yi5uaD1hO1pwKGIsMipjKTtNcih0aGlzLCJSRVRSWV9USU1FUiIpfX07Cl8uZy5vTD1mdW5jdGlvbihhKXt2YXIgYj1hLmdldENvbnRleHQoKTtiLm5oJiYoYnAoYi5uaCksYi5uaD0wKTtOcih0aGlzLGEpfTtfLmcueUE9ZnVuY3Rpb24oKXt0aGlzLlpmPWFwKCJlYSIsdGhpcy55QSwzRTQsdGhpcyk7dGhpcy5KeCgpfTsKXy5nLkp4PWZ1bmN0aW9uKCl7aWYoMCE9dGhpcy5hLmxlbmd0aCYmdGhpcy5vKWZvcih2YXIgYT0wLGI9dGhpcy5hLmxlbmd0aDthPGI7YSsrKXt2YXIgYz10aGlzLmFbYV0sZD0oMCxfLlVhKSgpLGU9Yy5DdTtpZigtMTxlJiY2RTQ8ZC1lKWlmKGQ9dGhpcy5vLGU9KDAsXy5VYSkoKSxlLWQuYj5kLmY/KGQuYS5xbHx8KG51bGwhPT13aW5kb3cubmF2aWdhdG9yJiYib25MaW5lImluIHdpbmRvdy5uYXZpZ2F0b3ImJiF3aW5kb3cubmF2aWdhdG9yLm9uTGluZT8oZC5iPWUtZC5mKzFFMyxhcCgiTSIsKDAsXy5sKShkLmMsZCwhMSksMCkpOihlPW5ldyBfLmFhKCIvL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiKSxfLkNwKGUsInp4IixRYigpKSxkLmEubz1lLGQuYS5zdGFydCgpKSksZD0hMCk6ZD0hMSxkKWJyZWFrO2Vsc2UgdGhpcy5vLm98fExyKHRoaXMsYywxKX19OyB2YXIgSnI9ZnVuY3Rpb24oYSxiLGMpe18uRWEoYykmJihjPW5ldyBhcShiLGMpKTthLmRpc3BhdGNoRXZlbnQobmV3IGNxKCJqIixiLGMpKTtiLnc9ITA7Yi5lYT1jO1FwKGIpfTsKdmFyIGhzPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSJFcnJvciBjb2RlID0gIitiO2MmJihlKz0iLCBQYXRoID0gIitjKTtkJiYoZT1kKyIgIitlKTtfLlhhLmNhbGwodGhpcyxlKTt0aGlzLm5hbWU9YTt0aGlzLmE9Yn07Xy5tKGhzLF8uWGEpO2hzLnByb3RvdHlwZS5EZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9Owp2YXIgaXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBRaT8iZXIiOmFbMF1bMF19LGpzPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWFbMF0uWGEsZD0xO2Q8YS5sZW5ndGg7ZCsrKWMrPSIsICIsYys9YVtkXS5YYTthPSIiO2lmKGImJjA8Yi5sZW5ndGgpZm9yKGErPWlzKGJbMF0pLGQ9MTtkPGIubGVuZ3RoO2QrKylhKz0iLCAiLGErPWlzKGJbZF0pO3JldHVybiIgRXhwZWN0ZWQgcHJvdG9zOiBbIitjKyJdLiBSZXR1cm5lZCBwcm90b3M6IFsiK2ErIl0uIn0sa3M9ZnVuY3Rpb24oYSxiLGMpe2EmJmI/aHMuY2FsbCh0aGlzLCJUb29NYW55UHJvdG9zRXJyb3IiLDEwOCxjLCJUaGUgUmVxdWVzdFNlcnZpY2UgaW50ZXJmYWNlIG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUgcmVjZWl2ZWQgcHJvdG8gKGJlIGl0IGRhdGEgb3IgZXJyb3IpLiAiK2pzKGEsYikpOmhzLmNhbGwodGhpcywiVG9vTWFueVByb3Rvc0Vycm9yIiwxMDgsYywiVGhlIFJlcXVlc3RTZXJ2aWNlIGludGVyZmFjZSBvbmx5IHN1cHBvcnRzIGEgc2luZ2xlIHJlY2VpdmVkIHByb3RvIChiZSBpdCBkYXRhIG9yIGVycm9yKS4gIil9OwpfLm0oa3MsaHMpO3ZhciBscz1mdW5jdGlvbihhLGIsYyl7aHMuY2FsbCh0aGlzLCJFeHBlY3RlZFByb3RvTm90Rm91bmQiLDEwOSxjLCJUaGUgZXhwZWN0ZWQgcmVzcG9uc2UgcHJvdG8gd2FzIG5vdCByZXR1cm5lZCBieSB0aGUgc2VydmVyLiIranMoYSxiKSl9O18ubShscyxocyk7dmFyIG1zPWZ1bmN0aW9uKCl7aHMuY2FsbCh0aGlzLCJSZXRyeSIsMCx2b2lkIDAsIkFuIGludGVyY2VwdG9yIGhhcyByZXF1ZXN0ZWQgdGhhdCB0aGUgcmVxdWVzdCBiZSByZXRyaWVkLiIpfTtfLm0obXMsaHMpOwp2YXIgbnM9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLmM9Yjt0aGlzLm89Yzt0aGlzLmVhPVtdO3RoaXMuZj1kO3RoaXMuYj1lO3RoaXMuaT1hLmY7dGhpcy5YZT1uZXcgXy5wbTt0aGlzLndhPW5ldyBfLnBtKCgwLF8ubCkodGhpcy5oYSx0aGlzKSk7dGhpcy5qYT0hMTt0aGlzLmc9YTt0aGlzLmE9bmV3IE5wKHRoaXMuYi5RUD9hLmI6YS5hKTtfLmNwKHRoaXMuYS5hLHRoaXMuYyk7dGhpcy5hLmY9dGhpcy5iLm1ldGhvZDtpZihfLkRhKHRoaXMuYi5ob3N0KSl2YXIgZj1DbygxLHRoaXMuYi5ob3N0KSxrPUJvKENvKDMsdGhpcy5iLmhvc3QpLCEwKSxuPU51bWJlcihDbyg0LHRoaXMuYi5ob3N0KSl8fG51bGw7Zj1mfHx0aGlzLmIuc2NoZW1lO18uRGEoZikmJihhPXRoaXMuYSxScCgpLGJhKGEuYSxmKSk7az1rfHx0aGlzLmIuZG9tYWluO18uRGEoaykmJihmPXRoaXMuYSxScCgpLGYuYS5mPWspO18uRWEobikmJihrPXRoaXMuYSxScCgpLGNhKGsuYSxuKSk7dGhpcy5MYT0hMTtuPXRoaXMuYTsKKGs9IV8ubGIoUm8sdGhpcy5hLmYpKSYmXy5sYihSbyxuLmYpP24uZj0iR0VUIjprfHxfLmxiKFJvLG4uZil8fChuLmY9IlBPU1QiKTtMcChuKTtuLkxhPWs7WWRhKHRoaXMpO2lmKHRoaXMubyl7aWYoXy5sYihSbyx0aGlzLmEuZikpe249dGhpcy5vO3RyeXt2YXIgcD1uIGluc3RhbmNlb2Ygd2luZG93LkhUTUxGb3JtRWxlbWVudH1jYXRjaChBKXtwPSJvYmplY3QiPT09dHlwZW9mIG4mJjE9PT1uLm5vZGVUeXBlJiYib2JqZWN0Ij09PXR5cGVvZiBuLnN0eWxlJiYib2JqZWN0Ij09PXR5cGVvZiBuLm93bmVyRG9jdW1lbnQmJiJmb3JtIj09PW4udGFnTmFtZS50b0xvd2VyQ2FzZSgpfWlmKHApe3A9dGhpcy5hO0xwKHApO3AuQ3E9ITE7cD10aGlzLmE7bj10aGlzLm87THAocCk7aWYocC5DcSl0aHJvdyBFcnJvcigiSyIpO3Aubz1ufWVsc2UgdGhpcy5vIGluc3RhbmNlb2YgXy5xP18uU3AodGhpcy5hLCJmLnJlcSIsdGhpcy5vLlFjKCkpOlRwKHRoaXMuYSx0aGlzLm8sITApfWVsc2UgVHAodGhpcy5hLAp0aGlzLm8sITEpO3RoaXMuYi5NaSYmKHA9dGhpcy5hLExwKHApLHAuREI9ITEscD10aGlzLmEsTHAocCkscC5oYT0hMCl9WmRhKHRoaXMpfSxMbDtucy5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbigpe3JldHVybiBfLk5sKHRoaXMuZyx0aGlzKX07CnZhciBvcz1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPXt9LGU9MDtlPGIubGVuZ3RoO2UrKylkW2JbZV0uWGFdPWJbZV07dmFyIGY9W10saz1bXSxuPVtdO2ZvcihlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBwPWFbZV07aWYoIShwIGluc3RhbmNlb2YgXy5xKSlkW3BbMF1dJiZmLnB1c2gobmV3IGRbcFswXV0ocCkpO2Vsc2UgaWYocCBpbnN0YW5jZW9mIFFpKXtpZihfLnIocCw2KSYmZFtfLnIocCw2KV0pdmFyIEE9bmV3IChkW18ucihwLDYpXSkocC5nZXREYXRhKCkpO2Vsc2UgaWYoUmkocCkpe3ZhciBEPVJpKHApO0E9Xy5pYihiLGZ1bmN0aW9uKGEpe3JldHVybiBhLkpuJiZELmdldEV4dGVuc2lvbihhLkpuKX0pfUE/ay5wdXNoKEEpOm4ucHVzaChwKX19cmV0dXJue2xtOmM/Zi5jb25jYXQoayk6ZixwRzpjP1tdOmssdXQ6bn19Owpucy5wcm90b3R5cGUubGQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl07aWYoYyBpbnN0YW5jZW9mIGFxKXRocm93IGM7fXJldHVybiBhfTtucy5wcm90b3R5cGUuQmE9ZnVuY3Rpb24oYSl7aWYoMD09PXRoaXMuZi5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGI9b3MoYSx0aGlzLmYsITApO2lmKDA9PT1iLmxtLmxlbmd0aCl0aHJvdyBuZXcgbHModGhpcy5mLGEsdGhpcy5jKTtyZXR1cm4gYi5sbX07Cm5zLnByb3RvdHlwZS5jYj1mdW5jdGlvbihhKXtpZigwPT09dGhpcy5mLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYj1vcyhhLHRoaXMuZiksYz1iLmxtLGQ9Yi5wRztiPWIudXQ7aWYoMD09PWMubGVuZ3RoJiYwPT09ZC5sZW5ndGgmJjA9PT1iLmxlbmd0aCl0aHJvdyBuZXcgbHModGhpcy5mLGEsdGhpcy5jKTtpZigxPT09Yy5sZW5ndGgmJjA9PT1kLmxlbmd0aCYmMD09PWIubGVuZ3RoKXJldHVybiBjWzBdO2lmKDA9PT1jLmxlbmd0aCYmMT09PWQubGVuZ3RoJiYwPT09Yi5sZW5ndGgpdGhyb3cgZFswXTtpZigwPT09Yy5sZW5ndGgmJjA9PT1kLmxlbmd0aCYmMT09PWIubGVuZ3RoKXRocm93IGJbMF07dGhyb3cgbmV3IGtzKHRoaXMuZixhLHRoaXMuYyk7fTtucy5wcm90b3R5cGUuZ2V0VXJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nZXRVcmwoKX07Xy5LbD1mdW5jdGlvbihhLGIpe1RwKGEuYSxiLCExKX07TGw9ZnVuY3Rpb24oYSl7YT1hLmE7THAoYSk7YS5Vaz0iRkFJTCJ9Owpucy5wcm90b3R5cGUudz1mdW5jdGlvbihhKXsoMCxfLmFiKSh0aGlzLmksZnVuY3Rpb24oYil7dmFyIGM9Yi53KCk7Xy5NYShjKXx8KGM9W2NdKTt2YXIgZD1jO18uTWEoZCl8fChkPVtkXSk7ZD0wPT09ZC5sZW5ndGg/W106b3MoYSxkLCEwKS5sbTtpZighYy5sZW5ndGh8fGQubGVuZ3RoKXRyeXtiLmphKGQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBocSl0aHJvdyB0aGlzLkxhPSEwLG5ldyBtczt0aHJvdyBlO319LHRoaXMpfTsKdmFyIHBzPWZ1bmN0aW9uKGEsYil7YS5iLk1pPyhhLncoW2JdKSxiPW9zKFtiXSxhLmYsITApLDA8Yi5sbS5sZW5ndGg/YS5iLk1pKGIubG1bMF0pOjA8Yi51dC5sZW5ndGgmJmEuYi5NaShiLnV0WzBdKSk6YS5lYS5wdXNoKGIpfSxZZGE9ZnVuY3Rpb24oYSl7dmFyIGI9e30sYz1hLndhO2Iucmw9KDAsXy5sKShmdW5jdGlvbihhKXtpZighYy5iKXt2YXIgYj1hLk55KCk7Yj9jLmEoYik6cHModGhpcyxhLmh5KX19LGEpO2IucnE9KDAsXy5sKShmdW5jdGlvbigpe2MuYnx8Yy5jYWxsYmFjayh0aGlzLmVhKX0sYSk7Yi5oej0oMCxfLmwpKGZ1bmN0aW9uKGEsYixjKXtwcyh0aGlzLGMpfSxhKTthLmEuQ3IoYil9LFpkYT1mdW5jdGlvbihhKXsoMCxfLmFiKShhLmksZnVuY3Rpb24oYSl7YS5hJiZfLndtKHRoaXMuWGUsYS5hLGEpfSxhKTtfLndtKGEuWGUsZnVuY3Rpb24oYSl7YS5zZW5kKCk7cmV0dXJuIHRoaXMud2F9LGEpO2EuYi5NaT9fLndtKGEuWGUsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pOgooXy53bShhLlhlLGEudyxhKSxhLmIucEU/Xy53bShhLlhlLGEuQmEsYSk6YS5iLmNCP18ud20oYS5YZSxhLmxkLGEpOl8ud20oYS5YZSxhLmNiLGEpKTtfLk1sKGEuWGUsYS5FYyxhKX07Cm5zLnByb3RvdHlwZS5FYz1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgbXN8fHRoaXMuTGEmJnRoaXMuYi5NaSl7YT10aGlzLmEuZ2V0UGFyYW0oImYucmV0cmllcyIpO2E9KGE/TnVtYmVyKGEpOjApKzE7dmFyIGI9Xy5KbCh0aGlzLmcsdGhpcy5jLHRoaXMubyx0aGlzLmYsdGhpcy5iKTtfLktsKGIseyJmLnJldHJpZXMiOmF9KTtyZXR1cm4gXy5ObCh0aGlzLmcsYil9aWYoIShhIGluc3RhbmNlb2YgcW0pKXtpZighdGhpcy5iLmNCJiZhIGluc3RhbmNlb2YgYXEpe2E9YS5EZygpO2lmKDEwMD09YSYmdGhpcy5qYSlyZXR1cm4gbmV3IHFtKHRoaXMuWGUpO3Rocm93IG5ldyBocygiVHJhbnNwb3J0RXJyb3IiLGEsdGhpcy5jLCJUaGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSB0cmFuc3BvcnQgb3IgcHJvY2Vzc2luZyBvZiB0aGlzIHJlcXVlc3QuIik7fXRocm93IGE7fX07bnMucHJvdG90eXBlLmhhPWZ1bmN0aW9uKCl7dGhpcy5hJiYodGhpcy5qYT0hMCx0aGlzLmEuYWJvcnQoKSl9OyBucy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmdldFVybCgpfTsKXy5xcz1mdW5jdGlvbihhLGIpe251bGwhPWEmJnRoaXMuamMuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLmc9Xy5xcy5wcm90b3R5cGU7Xy5nLmVmPSIiO18uZy5zZXQ9ZnVuY3Rpb24oYSl7dGhpcy5lZj0iIithfTtfLmcuamM9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZWYrPVN0cmluZyhhKTtpZihudWxsIT1iKWZvcih2YXIgZD0xO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspdGhpcy5lZis9YXJndW1lbnRzW2RdO3JldHVybiB0aGlzfTtfLmcuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmVmPSIifTtfLmcudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZn07CnZhciBhZWE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9JGRhLGQ9YS5lbGVtZW50cyxlLGY9MDtlPWRbZl07ZisrKWlmKGUuZm9ybT09YSYmIWUuZGlzYWJsZWQmJiJGSUVMRFNFVCIhPWUudGFnTmFtZSl7dmFyIGs9ZS5uYW1lO3N3aXRjaChlLnR5cGUudG9Mb3dlckNhc2UoKSl7Y2FzZSAiZmlsZSI6Y2FzZSAic3VibWl0IjpjYXNlICJyZXNldCI6Y2FzZSAiYnV0dG9uIjpicmVhaztjYXNlICJzZWxlY3QtbXVsdGlwbGUiOmU9cnMoZSk7aWYobnVsbCE9ZSlmb3IodmFyIG4scD0wO249ZVtwXTtwKyspYyhiLGssbik7YnJlYWs7ZGVmYXVsdDpuPXJzKGUpLG51bGwhPW4mJmMoYixrLG4pfX1kPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIklOUFVUIik7Zm9yKGY9MDtlPWRbZl07ZisrKWUuZm9ybT09YSYmImltYWdlIj09ZS50eXBlLnRvTG93ZXJDYXNlKCkmJihrPWUubmFtZSxjKGIsayxlLnZhbHVlKSxjKGIsaysiLngiLCIwIiksYyhiLGsrIi55IiwiMCIpKTtyZXR1cm4gYi5qb2luKCImIil9LAokZGE9ZnVuY3Rpb24oYSxiLGMpe2EucHVzaCgoMCx3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KShiKSsiPSIrKDAsd2luZG93LmVuY29kZVVSSUNvbXBvbmVudCkoYykpfSxzcz1mdW5jdGlvbihhKXthPWEuZWxlbWVudHM7Zm9yKHZhciBiLGM9MDtiPWFbY107YysrKWlmKCFiLmRpc2FibGVkJiZiLnR5cGUmJiJmaWxlIj09Yi50eXBlLnRvTG93ZXJDYXNlKCkpcmV0dXJuITA7cmV0dXJuITF9LHJzPWZ1bmN0aW9uKGEpe3ZhciBiPWEudHlwZTtzd2l0Y2goXy5EYShiKSYmYi50b0xvd2VyQ2FzZSgpKXtjYXNlICJjaGVja2JveCI6Y2FzZSAicmFkaW8iOnJldHVybiBhLmNoZWNrZWQ/YS52YWx1ZTpudWxsO2Nhc2UgInNlbGVjdC1vbmUiOnJldHVybiBiPWEuc2VsZWN0ZWRJbmRleCwwPD1iP2Eub3B0aW9uc1tiXS52YWx1ZTpudWxsO2Nhc2UgInNlbGVjdC1tdWx0aXBsZSI6Yj1bXTtmb3IodmFyIGMsZD0wO2M9YS5vcHRpb25zW2RdO2QrKyljLnNlbGVjdGVkJiZiLnB1c2goYy52YWx1ZSk7IHJldHVybiBiLmxlbmd0aD9iOm51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbCE9YS52YWx1ZT9hLnZhbHVlOm51bGx9fTsKdmFyIHRzPWZ1bmN0aW9uKGEpe2dxLmNhbGwodGhpcyk7dGhpcy5hPW5ldyBRbzt0aGlzLnlvPWE7dGhpcy5nPW51bGw7dGhpcy5hLmhlYWRlcnMuc2V0KCJYLVNhbWUtRG9tYWluIiwiMSIpO18ucWwodGhpcy5hLCJjb21wbGV0ZSIsdGhpcy5seiwhMSx0aGlzKTtfLnFsKHRoaXMuYSwicmVhZHkiLHRoaXMub3osITEsdGhpcyl9O18ubSh0cyxncSk7dmFyIGJlYT0vdmFyIGdtYWlsX2Vycm9yXHMqPVxzKihcZCspL20sY2VhPS92YXIgcmNccyo9XHMqKFxkKykvbSxkZWE9Lyg/OkFkZGl0aW9uYWwgZGV0YWlsc3xEZXRhaWxlZCBUZWNobmljYWwgSW5mbylbXHNcU10qPHByZVtePl0qPihbXHNcU10qKTxcL3ByZT4vaTtfLmc9dHMucHJvdG90eXBlO18uZy5vYj1mdW5jdGlvbigpe3dsKHRoaXMuYSwiY29tcGxldGUiLHRoaXMubHosITEsdGhpcyk7d2wodGhpcy5hLCJyZWFkeSIsdGhpcy5veiwhMSx0aGlzKTt0aGlzLmEuZGlzcG9zZSgpO3RoaXMuYT1udWxsO3RzLiQub2IuY2FsbCh0aGlzKX07Cl8uZy5Kcj1mdW5jdGlvbihhKXt0aGlzLmIuc3AoYSk7dGhpcy5mPWE7RXAoYS5hLCJydCIsdGhpcy55byk7dmFyIGI9YS5qYSxjPW51bGwhPWEuY3x8bnVsbCE9YS5vO2lmKCFhLkxhfHxjKXtpZih0aGlzLm8mJihjPXRoaXMud2EuY2FsbChudWxsKSxfLkNhKGMpKSl7dmFyIGQ9YS5vO2lmKGQpe3ZhciBlPWQuZWxlbWVudHNbdGhpcy5vXTtlfHwoZT1kLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxlLnNldEF0dHJpYnV0ZSgibmFtZSIsdGhpcy5vKSxlLnNldEF0dHJpYnV0ZSgiaGlkZGVuIiwhMCksZC5hcHBlbmRDaGlsZChlKSk7ZS52YWx1ZT1jfWVsc2UgXy5TcChhLHRoaXMubyxjKX10aGlzLmEuc2VuZChhLmdldFVybCgpLGEuZixlZWEoYSksYil9ZWxzZSB0aGlzLmEuc2VuZChhLmdldFVybCgpLGEuZixudWxsLGIpfTtfLmcuYWJvcnQ9ZnVuY3Rpb24oYSl7dGhpcy5nPWE7dGhpcy5hLmFib3J0KDcpfTsKXy5nLmx6PWZ1bmN0aW9uKGEpe2E9YS50YXJnZXQ7dGhpcy5mLlVhPWEuZmIoKTtpZihfLlpvKGEpKXtpZigwPCRvKGEpLmxlbmd0aHx8MjA0PT1hLmZiKCkpe3RoaXMucHooYSk7cmV0dXJufXRoaXMuZz0xMDR9dGhpcy51bihhKX07Xy5nLm96PWZ1bmN0aW9uKCl7dGhpcy5iLmpQKHRoaXMpfTt2YXIgZWVhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuYztpZihiKXt2YXIgYz1uZXcgXy5xcztiLmZvckVhY2goZnVuY3Rpb24oYSxiKXtjLmpjKF8uSWIoYiksIj0iLF8uSWIoYSksIiYiKX0pO3JldHVybiBjLnRvU3RyaW5nKCl9cmV0dXJuIGEubz9hZWEoYS5vKToiIn07CnRzLnByb3RvdHlwZS5EZz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmc7dGhpcy5nPTA7dmFyIGM9YS5mYigpLGQ9YS5ObDtkZWEuZXhlYygkbyhhKSk7aWYoYil2YXIgZT1iO2Vsc2UgNj09ZCYmKGE9JG8oYSksZT0oYj1hLm1hdGNoKGJlYSkpPzcwMCsoMCx3aW5kb3cucGFyc2VJbnQpKGJbMV0sMTApOihiPWEubWF0Y2goY2VhKSk/TnVtYmVyKCI2IitiWzFdKTpudWxsKTtlfHwoZT1iZGEoZCxjKSk7cmV0dXJuIGV9O3RzLnByb3RvdHlwZS51bj1mdW5jdGlvbihhKXt1cyh0aGlzLHRoaXMuRGcoYSkpfTt2YXIgdXM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmY7Yj1uZXcgYXEoYyxiLHZvaWQgMCx2b2lkIDApO2EuYi5acShjLGIpfTsKdmFyIHZzPWZ1bmN0aW9uKCl7dHMuY2FsbCh0aGlzLCJqIil9O18ubSh2cyx0cyk7dnMucHJvdG90eXBlLm53PWZ1bmN0aW9uKGEpe3ZhciBiPWEubztyZXR1cm4gYiYmc3MoYik/MDphLkNxJiYhYS5oYT8uOTouNX07dnMucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IHZzO2EuVGkodGhpcy5vLHRoaXMud2EpO3JldHVybiBhfTt2cy5wcm90b3R5cGUucHo9ZnVuY3Rpb24oYSl7dmFyIGI9JG8oYSk7Yj1iLnN1YnN0cmluZyhiLmluZGV4T2YoIlxuIikpO2E9dGhpcy5mO3RyeXt2YXIgYz13aW5kb3cuSlNPTi5wYXJzZShiKX1jYXRjaChkKXtjPW5ldyBhcShhLDEwKTt0aGlzLmIuWnEoYSxjKTtyZXR1cm59Xy5NYShjKSYmdGhpcy5iLnBxKGEsY1swXSk7dGhpcy5iLlFuKGEpfTsgdnMucHJvdG90eXBlLnVuPWZ1bmN0aW9uKGEpe3ZhciBiPSRvKGEpO2I9Yi5zdWJzdHJpbmcoYi5pbmRleE9mKCJcbiIpKTt0cnl7dmFyIGM9d2luZG93LkpTT04ucGFyc2UoYil9Y2F0Y2goZCl7fV8uTWEoYyk/KGE9dGhpcy5mLHRoaXMuYi5wcShhLGNbMF0pLHRoaXMuYi5RbihhKSk6dnMuJC51bi5jYWxsKHRoaXMsYSl9Owp2YXIgd3M9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5DbC5jYWxsKHRoaXMpO3RoaXMuYj1ifHxudWxsO3RoaXMuYT1jfHxudWxsO3RoaXMuYz1kfHxudWxsO3RoaXMuZj1bXTt0aGlzLnc9bnVsbDt0aGlzLmk9ZmVhO3RoaXMueHA9bnVsbH0sZmVhLHhzLGdlYSxBcyx6cztfLm0od3MsXy5DbCk7ZmVhPXtwRTohMSxkb21haW46dm9pZCAwLE1pOm51bGwsbWV0aG9kOiJQT1NUIixjQjohMSxzY2hlbWU6dm9pZCAwLGhvc3Q6dm9pZCAwLFFQOiExfTt4cz1mdW5jdGlvbihhLGIpe2E9aWMoYS5pKTtfLmtjKGEsYnx8e30pO3JldHVybiBhfTtfLnlzPWZ1bmN0aW9uKGEsYil7Xy5EayhhLGIpO2EuZi5wdXNoKGIpfTt3cy5wcm90b3R5cGUubWFrZVJlcXVlc3Q9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIF8uTmwodGhpcyxfLkpsKHRoaXMsYSxiLGMsZCkpfTsKXy5KbD1mdW5jdGlvbihhLGIsYyxkLGUpe2Q9enMoZCxlKTtlPXhzKGEsZC5vcHRpb25zKTtyZXR1cm4gbmV3IG5zKGEsYixjfHxudWxsLGQuJEEsZSl9O2dlYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9enModm9pZCAwLHZvaWQgMCksZT14cyhhLGQub3B0aW9ucyk7ZS5tZXRob2Q9IkdFVCI7cmV0dXJuIG5ldyBucyhhLGIsY3x8bnVsbCxkLiRBLGUpfTtBcz1mdW5jdGlvbihhLGIsYyl7Yj1iLnJlcGxhY2UoL15cLy8sIiIpO3ZhciBkPWdlYShhLGIsYyk7KDAsXy5hYikoYS5mLGZ1bmN0aW9uKGEpe2EuZiYmXy5LbChkLGEuZigpKX0pO3JldHVybiBkLmdldFVybCgpfTt6cz1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9e307Ynx8YSYmKF8uT2EoYSl8fF8uTWEoYSkpPyhjPWF8fFtdLF8uTWEoYyl8fChjPVtjXSksZD1ifHx7fSk6YSYmKGQ9YSk7cmV0dXJueyRBOmMsb3B0aW9uczpkfX07Xy5ObD1mdW5jdGlvbihhLGIpe2Eud3x8KGEudz1iKTtiLlhlLmNhbGxiYWNrKGIuYSk7cmV0dXJuIGIuWGV9Owp3cy5wcm90b3R5cGUub2I9ZnVuY3Rpb24oKXtDayh0aGlzLmIpO0NrKHRoaXMuYSk7Q2sodGhpcy5jKTt3cy4kLm9iLmNhbGwodGhpcyl9O3dzLnByb3RvdHlwZS5VYz1mdW5jdGlvbihhKXthPWEuZ2V0KERpKS5hO3ZhciBiPW5ldyBIcjtiLm89YTtiLm8mJmIudy5saXN0ZW4oYi5vLCJmIixiLkp4KTtJcihiLG5ldyB2cyk7dGhpcy5iPWI7YT1uZXcgSHI7SXIoYSxuZXcgdnMpO3RoaXMuYT1hO3RoaXMuYz1udWxsO3RoaXMubyYmKHRoaXMuYi5UbT10aGlzLm8sdGhpcy5hLlRtPXRoaXMubyl9O3dzLnByb3RvdHlwZS5UaT1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYyl7YyYmKDAsXy5hYikoYy5qay5jb25jYXQoKSxmdW5jdGlvbihjKXtjLlRpKGEsYil9KX1jKHRoaXMuYik7Yyh0aGlzLmEpfTsKdmFyIEJzPWZ1bmN0aW9uKCl7dGhpcy5hPW5ldyBJbTt0aGlzLmI9ITF9O18ubShCcyxfLkFrKTtCcy5wcm90b3R5cGUub2I9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5hfTtCcy5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihhKXt2YXIgYj1fLm9rKCksYz17WGQ6YixaTDphLEZ4OiExfTt0aGlzLmEuYS5wdXNoKGMpO3RoaXMuYnx8Q3ModGhpcyk7cmV0dXJuIF8uc2soYi55YixmdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgYSBpbnN0YW5jZW9mIF8udGsmJihjLkZ4PSEwKSxhO3Rocm93IEVycm9yKGEpO30pfTt2YXIgQ3M9ZnVuY3Rpb24oYSl7aWYoTG0oYS5hKSl7YS5iPSEwO3ZhciBiPUttKGEuYSk7Yi5GeD9DcyhhKTpiLlhkLnJlc29sdmUoXy5yayhiLlpMKCksKDAsXy5sKShmdW5jdGlvbigpe0NzKHRoaXMpfSxhKSkpfWVsc2UgYS5iPSExfTtfLkphKEJzKTsKdmFyIERzPWZ1bmN0aW9uKGEpe3RoaXMuZj1hLmdldChFaSk7dGhpcy5hPWEuZ2V0KExuKTt0aGlzLkpiPXRoaXMuYS5KYjt0aGlzLmI9UW4uU2IoKTt0aGlzLm89Il8vZGF0YSI7dGhpcy5jPSJfL211dGF0ZSI7dGhpcy5pPUJzLlNiKCl9LGhlYTtEcy5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbihhKXtyZXR1cm4gRXModGhpcyxbYV0pLmdldERhdGEoYSl9O3ZhciBFcz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKTt2YXIgZD0oMCxfLmRiKShiLFhpLGEpLGU9W10sZj1bXTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgaz1kW2NdO2lmKGsuVWYpe3ZhciBuPXNqKGspO3ljYShhLmEuYSxuKX1uPV8ub2soKTt2YXIgcD1uLnliO2UucHVzaChuKTtmLnB1c2goe3JlcXVlc3Q6ayx5YjpwfSk7U24oYS5iLHNqKGspLHApfUNuKGEuSmIsKDAsXy5sKShhLncsYSxkLGUpKTtyZXR1cm4gbmV3IFNsKGYpfTsKRHMucHJvdG90eXBlLnViPWZ1bmN0aW9uKGEpe2lmKGEuUWUpcmV0dXJuIGE9S2JhKGEpLF8uRnModGhpcyxhKTt2YXIgYj1fLkZzO3ZhciBjPWEucGI7dmFyIGQ9UmxbYy50b1N0cmluZygpXTtpZighZCl7Zm9yKHZhciBlIGluIF8uSWQpe2Q9Xy5JZFsoMCx3aW5kb3cucGFyc2VJbnQpKGUsMTApXTt2YXIgZj1kLlFiLnByb3RvdHlwZS5wYjtmJiYoUmxbZl09ZC5hKX1kPVJsW2MudG9TdHJpbmcoKV19Yz1kO3JldHVybiBiKHRoaXMse0JjOl8ubGpbY10sRmY6Xy5JZFtjXSxTaDphfSl9O18uRnM9ZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLmwpKGZ1bmN0aW9uKCl7cmV0dXJuIGhlYSh0aGlzLGIpfSxhKTtyZXR1cm4gYS5pLmV4ZWN1dGUoYyl9OwpoZWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLm9rKCksZD0oMCxfLmwpKGEuZyxhLGIsYyk7U24oYS5iLHNqKGIpLGMueWIpO2Q9Xy5KbChhLmYsYS5jLGllYShiKSxba2pdLHtNaTpkfSk7Xy5LbChkLHsiZHMuZXh0ZW5zaW9uIjp1aihiKX0pO0xsKGQpO18uTWwoXy5ObChhLmYsZCksZnVuY3Rpb24oYSl7Yy5yZWplY3QoYSl9KTtyZXR1cm4gYy55Yn07RHMucHJvdG90eXBlLnc9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD1bXSxlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBmPWFbZV0saz1iW2VdLG49cmooZikuU2IoZi5yZXF1ZXN0KTt0aGlzLmEuY29udGFpbnMobik/dGhpcy5hLmdldChuKS50aGVuKGsucmVzb2x2ZSxrLnJlamVjdCxrKTooYy5wdXNoKGYpLGQucHVzaChrKSx0aGlzLmEucHV0KG4saykpfWE9W107Yj1bXTtmb3IoZT0wO2U8Yy5sZW5ndGg7ZSsrKWY9ZFtlXSxhLnB1c2goY1tlXSksYi5wdXNoKGYpO09sKG5ldyBJbChhLGIsdGhpcy5vLHRoaXMuZix0aGlzLmIpKX07CnZhciBpZWE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEpkLGM9bmV3IEhkO2MuZyhhLkZmLGEuU2gpO18ua2QoYiwyLGMpO18udChiLDEsYS5GZi5hKTthPW5ldyBLZDtfLmxkKGEsMSxbYl0pO3JldHVybiBhfTtEcy5wcm90b3R5cGUuZz1mdW5jdGlvbihhLGIsYyl7YyBpbnN0YW5jZW9mIFFpP2IucmVqZWN0KFdpKGMsYSkpOm51bGwhPWEuQmM/KGM9Yy5nZXRFeHRlbnNpb24oYS5CYyksbnVsbD09Yz9iLnJlamVjdChFcnJvcigiaGEiKSk6KGIucmVzb2x2ZShRbCh0aGlzLmIsYSxjKSksRm4odGhpcy5KYixjKSkpOmIucmVzb2x2ZShRbCh0aGlzLmIsYSxudWxsKSl9Owp2YXIgR3M9ZnVuY3Rpb24oKXtfLkFrLmNhbGwodGhpcyl9O18ubShHcyxfLkFrKTtHcy5wcm90b3R5cGUuVWM9ZnVuY3Rpb24oKXt9O3ZhciBIcz1mdW5jdGlvbihhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifTtIcy5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihhKXt0aGlzLmEmJih0aGlzLmEuY2FsbCh0aGlzLmJ8fG51bGwsYSksdGhpcy5hPXRoaXMuYj1udWxsKX07SHMucHJvdG90eXBlLmFib3J0PWZ1bmN0aW9uKCl7dGhpcy5iPXRoaXMuYT1udWxsfTtLaihmdW5jdGlvbihhKXtIcy5wcm90b3R5cGUuZXhlY3V0ZT1hKEhzLnByb3RvdHlwZS5leGVjdXRlKX0pO3ZhciBJcz1mdW5jdGlvbihhLGIpe18uQWsuY2FsbCh0aGlzKTt0aGlzLmc9YTt0aGlzLnc9Yjt0aGlzLmI9W107dGhpcy5jPVtdO3RoaXMuZj1bXX07Xy5tKElzLF8uQWspO0lzLnByb3RvdHlwZS5vPUdzO0lzLnByb3RvdHlwZS5hPW51bGw7SXMucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud307CnZhciBqZWE9ZnVuY3Rpb24oYSxiKXthLmMucHVzaChuZXcgSHMoYix2b2lkIDApKX0sS3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgYS5vO2MuVWMoYigpKTthLmE9YztjPShjPSEhSnMoYS5mLGIoKSkpfHwhIUpzKGEuYixiKCkpO2N8fChhLmMubGVuZ3RoPTApO3JldHVybiBjfSxrZWE9ZnVuY3Rpb24oYSxiKXsoYj1KcyhhLmMsYikpJiZ3aW5kb3cuc2V0VGltZW91dChMYmEoIk1vZHVsZSBlcnJiYWNrIGZhaWx1cmVzOiAiK2IpLDApO2EuZi5sZW5ndGg9MDthLmIubGVuZ3RoPTB9LEpzPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGEubGVuZ3RoO2QrKyl0cnl7YVtkXS5leGVjdXRlKGIpfWNhdGNoKGUpe1VqKGUpLGMucHVzaChlKX1hLmxlbmd0aD0wO3JldHVybiBjLmxlbmd0aD9jOm51bGx9O0lzLnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe0lzLiQub2IuY2FsbCh0aGlzKTtDayh0aGlzLmEpfTsKdmFyIGxlYSxTcyxNcyxRcyxWcztfLkxzPWZ1bmN0aW9uKCl7Xy5Bay5jYWxsKHRoaXMpO3RoaXMuYT17fTt0aGlzLmM9W107dGhpcy5vPVtdO3RoaXMuaT1bXTt0aGlzLmI9W107dGhpcy5nPVtdO3RoaXMud2E9e307dGhpcy5mPXRoaXMuamE9bmV3IElzKFtdLCIiKTt0aGlzLkJhPW51bGw7dGhpcy5MYT1uZXcgXy5wbTt0aGlzLmhhPSExO3RoaXMuSmE9bnVsbDt0aGlzLmVhPTA7dGhpcy5NYz10aGlzLmViPSExO3RoaXMudz1udWxsfTtfLm0oXy5McyxfLkFrKTtfLkphKF8uTHMpOwpfLkxzLnByb3RvdHlwZS5NZD1mdW5jdGlvbihhLGIpe2lmKF8uRGEoYSkpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYz1bXSxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBlPWFbZF0uc3BsaXQoIjoiKSxmPWVbMF07aWYoZVsxXSl7ZT1lWzFdLnNwbGl0KCIsIik7Zm9yKHZhciBrPTA7azxlLmxlbmd0aDtrKyspZVtrXT1jWygwLHdpbmRvdy5wYXJzZUludCkoZVtrXSwzNildfWVsc2UgZT1bXTtjLnB1c2goZik7dGhpcy5hW2ZdPW5ldyBJcyhlLGYpfWImJmIubGVuZ3RoPyhfLnNiKHRoaXMuYyxiKSx0aGlzLkJhPV8uWmEoYikpOnRoaXMuTGEuYnx8dGhpcy5MYS5jYWxsYmFjaygpO01zKHRoaXMpfX07Xy5Mcy5wcm90b3R5cGUuVWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53fTtfLkxzLnByb3RvdHlwZS5jZT1mdW5jdGlvbigpe3JldHVybiAwPHRoaXMuYy5sZW5ndGh9Owp2YXIgT3M9ZnVuY3Rpb24oYSl7dmFyIGI9YS5lYixjPWEuY2UoKTtjIT1iJiYoTnMoYSxjPyJhY3RpdmUiOiJpZGxlIiksYS5lYj1jKTtiPTA8YS5nLmxlbmd0aDtiIT1hLk1jJiYoTnMoYSxiPyJ1c2VyQWN0aXZlIjoidXNlcklkbGUiKSxhLk1jPWIpfTtfLkxzLnByb3RvdHlwZS5SYz1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuYVthXTtjLmE/Yi5jYWxsYmFjayh0aGlzLncpOihQcyh0aGlzLGEsYywhMSxiKSxRcyh0aGlzLGEpfHxScyh0aGlzLFthXSkpfTsKdmFyIGdvPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXTtfLnZiKGIsZCk7Yj1bXTtmb3IodmFyIGU9e30sZj0wO2Y8ZC5sZW5ndGg7ZisrKXt2YXIgaz1kW2ZdLG49YS5hW2tdO2lmKCFuKXRocm93IEVycm9yKCJqYWAiK2spO3ZhciBwPW5ldyBfLnBtO2Vba109cDtuLmE/cC5jYWxsYmFjayhhLncpOihQcyhhLGssbiwhIWMscCksUXMoYSxrKXx8Yi5wdXNoKGspKX0wPGIubGVuZ3RoJiZScyhhLGIpO3JldHVybiBlfSxQcz1mdW5jdGlvbihhLGIsYyxkLGUpe2MuYi5wdXNoKG5ldyBIcyhlLmNhbGxiYWNrLGUpKTtqZWEoYyxmdW5jdGlvbihhKXtlLmEoRXJyb3IoYSkpfSk7UXMoYSxiKT9kJiYoXy5sYihhLmcsYil8fGEuZy5wdXNoKGIpLE9zKGEpKTpkJiYoXy5sYihhLmcsYil8fGEuZy5wdXNoKGIpKX0sUnM9ZnVuY3Rpb24oYSxiKXswPT1hLmMubGVuZ3RoP2EuY2IoYik6KGEuYi5wdXNoKGIpLE9zKGEpKX07Cl8uTHMucHJvdG90eXBlLmNiPWZ1bmN0aW9uKGEsYixjKXtifHwodGhpcy5lYT0wKTt0aGlzLmM9Yj1sZWEodGhpcyxhKTt0aGlzLmhhP3RoaXMubz1hOnRoaXMubz1fLnJiKGIpO09zKHRoaXMpOzAhPWIubGVuZ3RoJiYodGhpcy5pLnB1c2guYXBwbHkodGhpcy5pLGIpLGE9KDAsXy5sKSh0aGlzLkphLkphLHRoaXMuSmEsXy5yYihiKSx0aGlzLmEsbnVsbCwoMCxfLmwpKHRoaXMuZmMsdGhpcyx0aGlzLm8sYiksKDAsXy5sKSh0aGlzLnFiLHRoaXMpLCEhYyksKGM9NUUzKk1hdGgucG93KHRoaXMuZWEsMikpP3dpbmRvdy5zZXRUaW1lb3V0KGEsYyk6YSgpKX07CmxlYT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKWlmKGEuYVtiW2NdXS5hKXRocm93IEVycm9yKCJrYWAiK2JbY10pO3ZhciBkPVtdO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspZD1kLmNvbmNhdChTcyhhLGJbY10pKTtfLnZiKGQpO3JldHVybiFhLmhhJiYxPGQubGVuZ3RoPyhiPWQuc2hpZnQoKSxhLmI9KDAsXy5kYikoZCxmdW5jdGlvbihhKXtyZXR1cm5bYV19KS5jb25jYXQoYS5iKSxbYl0pOmR9O1NzPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107Xy5sYihhLmksYil8fGMucHVzaChiKTtmb3IoYj1fLnJiKGEuYVtiXS5nKTtiLmxlbmd0aDspe3ZhciBkPWIucG9wKCk7YS5hW2RdLmF8fF8ubGIoYS5pLGQpfHwoYy51bnNoaWZ0KGQpLEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGIsYS5hW2RdLmcpKX1fLnZiKGMpO3JldHVybiBjfTsKTXM9ZnVuY3Rpb24oYSl7YS5mPT1hLmphJiYoYS5mPW51bGwsS3MoYS5qYSwoMCxfLmwpKGEuVWEsYSkpJiZUcyhhLDQpLE9zKGEpKX07Xy5CPWZ1bmN0aW9uKGEpe3ZhciBiPV8uTHMuU2IoKTtiLmlzRGlzcG9zZWQoKXx8KEtzKGIuYVthXSwoMCxfLmwpKGIuVWEsYikpJiZUcyhiLDQpLF8ucGIoYi5nLGEpLF8ucGIoYi5jLGEpLDA9PWIuYy5sZW5ndGgmJlVzKGIpLGIuQmEmJmE9PWIuQmEmJihiLkxhLmJ8fGIuTGEuY2FsbGJhY2soKSksT3MoYikpfTtRcz1mdW5jdGlvbihhLGIpe2lmKF8ubGIoYS5jLGIpKXJldHVybiEwO2Zvcih2YXIgYz0wO2M8YS5iLmxlbmd0aDtjKyspaWYoXy5sYihhLmJbY10sYikpcmV0dXJuITA7cmV0dXJuITF9O18uTHMucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ28odGhpcyxbYV0sYilbYV19O18uQz1mdW5jdGlvbihhKXt2YXIgYj1fLkxzLlNiKCk7Yi5mPWIuYVthXX07Cl8uRT1mdW5jdGlvbigpe3ZhciBhPV8uTHMuU2IoKTshYS5mfHxhLmYuZ2V0SWQoKTthLmY9bnVsbH07VnM9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5Mcy5TYigpO2IuZiYmYi5mLmYucHVzaChuZXcgSHMoYSx2b2lkIDApKX07Xy5Mcy5wcm90b3R5cGUuZmM9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZWErKzt0aGlzLm89YTsoMCxfLmFiKShiLF8uU2EoXy5wYix0aGlzLmkpLHRoaXMpOzQwMT09Yz8oVHModGhpcywwKSx0aGlzLmIubGVuZ3RoPTApOjQxMD09Yz8oV3ModGhpcywzKSxVcyh0aGlzKSk6Mzw9dGhpcy5lYT8oV3ModGhpcywxKSxVcyh0aGlzKSk6dGhpcy5jYih0aGlzLm8sITAsODAwMT09Yyl9O18uTHMucHJvdG90eXBlLnFiPWZ1bmN0aW9uKCl7V3ModGhpcywyKTtVcyh0aGlzKX07CnZhciBXcz1mdW5jdGlvbihhLGIpezE8YS5vLmxlbmd0aD9hLmI9KDAsXy5kYikoYS5vLGZ1bmN0aW9uKGEpe3JldHVyblthXX0pLmNvbmNhdChhLmIpOlRzKGEsYil9LFRzPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5vO2EuYy5sZW5ndGg9MDtmb3IodmFyIGQ9W10sZT0wO2U8YS5iLmxlbmd0aDtlKyspe3ZhciBmPSgwLF8uY2IpKGEuYltlXSxmdW5jdGlvbihhKXt2YXIgYj1Tcyh0aGlzLGEpO3JldHVybigwLF8uZmIpKGMsZnVuY3Rpb24oYSl7cmV0dXJuIF8ubGIoYixhKX0pfSxhKTtfLnNiKGQsZil9Zm9yKGU9MDtlPGMubGVuZ3RoO2UrKyluYihkLGNbZV0pO2ZvcihlPTA7ZTxkLmxlbmd0aDtlKyspe2ZvcihmPTA7ZjxhLmIubGVuZ3RoO2YrKylfLnBiKGEuYltmXSxkW2VdKTtfLnBiKGEuZyxkW2VdKX12YXIgaz1hLndhLmVycm9yO2lmKGspZm9yKGU9MDtlPGsubGVuZ3RoO2UrKyl7dmFyIG49a1tlXTtmb3IoZj0wO2Y8ZC5sZW5ndGg7ZisrKW4oImVycm9yIixkW2ZdLGIpfWZvcihlPQowO2U8Yy5sZW5ndGg7ZSsrKWEuYVtjW2VdXSYma2VhKGEuYVtjW2VdXSxiKTthLm8ubGVuZ3RoPTA7T3MoYSl9LFVzPWZ1bmN0aW9uKGEpe2Zvcig7YS5iLmxlbmd0aDspe3ZhciBiPSgwLF8uY2IpKGEuYi5zaGlmdCgpLGZ1bmN0aW9uKGEpe3JldHVybiF0aGlzLmFbYV0uYX0sYSk7aWYoMDxiLmxlbmd0aCl7YS5jYihiKTtyZXR1cm59fU9zKGEpfSxtZWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz0iZXJyb3IiO18uTWEoYyl8fChjPVtjXSk7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1iLGs9YS53YTtrW2VdfHwoa1tlXT1bXSk7a1tlXS5wdXNoKGYpfX0sTnM9ZnVuY3Rpb24oYSxiKXthPWEud2FbYl07Zm9yKHZhciBjPTA7YSYmYzxhLmxlbmd0aDtjKyspYVtjXShiKX07IF8uTHMucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7Xy5Mcy4kLm9iLmNhbGwodGhpcyk7RmsoXy5kYyh0aGlzLmEpLHRoaXMuamEpO3RoaXMud2E9dGhpcy5iPXRoaXMuZz10aGlzLm89dGhpcy5jPXRoaXMuYT1udWxsfTsKdmFyIFhzPVtdLFlzPVtdLFpzPSExLGF0PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7YSYmKDAsXy5lYikoYSxmdW5jdGlvbihhLGIpe2FbYi5pZF09ITA7cmV0dXJuIGF9LGMuTk0pfWlmKFpzKXRocm93IG5ldyAkcyhhKTt2YXIgYz17Tk06e30saW5kZXg6WHMubGVuZ3RoLGloOmF9O2IoYS5aYyk7YihhLmMpO1hzLnB1c2goYyk7YS5aYyYmKDAsXy5hYikoYS5aYyxmdW5jdGlvbihhKXt2YXIgYj1hLmlkO2IgaW5zdGFuY2VvZiB3aSYmYS5QbCYmKGIuVms9YS5QbCl9KX0sbmVhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiKXtiLlpQfHwoYi5aUD0hMCxiLktrJiYoMCxfLmFiKShiLktrLlhiKCksYSksbi5wdXNoKGIpKX12YXIgYj17fSxjLGQ7Zm9yKGM9WHMubGVuZ3RoLTE7MDw9YzstLWMpe3ZhciBlPVhzW2NdO2lmKGUuaWguWmMpe3ZhciBmPWUuaWguWmM7Zm9yKGQ9Zi5sZW5ndGgtMTswPD1kOy0tZCliW2ZbZF0uaWRdPWV9aWYoZS5paC5jKWZvcihmPWUuaWguYyxkPWYubGVuZ3RoLQoxOzA8PWQ7LS1kKWJbZltkXS5pZF09ZX1mb3IoYz1Ycy5sZW5ndGgtMTswPD1jOy0tYyl7ZT1Yc1tjXTtmPWUuaWg7aWYoZi5hKWZvcihlLktrPW5ldyBfLnhuLGQ9Zi5hLmxlbmd0aC0xOzA8PWQ7LS1kKXt2YXIgaz1iW2YuYVtkXV07ayYmZS5Lay5hZGQoayl9aWYoZi5vKWZvcihlLktrfHwoZS5Laz1uZXcgXy54biksZD1mLm8ubGVuZ3RoLTE7MDw9ZDstLWQpKGs9YltmLm9bZF1dKSYmZS5Lay5hZGQoayl9dmFyIG49W107KDAsXy5hYikoWHMsYSk7WHM9bn0sYnQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYyl7dmFyIGQ9YltjXSxlPWQuaWQ7aWYoIWEuZltlXSYmIWEuZ1tlXSYmIWQueUopaWYoZC5QbCl7ZT1hO3ZhciBmPWQuaWQ7ZD1kLlBsO2YgaW5zdGFuY2VvZiB3aSYmKGYuVms9ZCk7ZS5vW2ZdPWR9ZWxzZSBpZihkLm11bHRpcGxlKXtpZihlPWEsZj1kLmlkLGUuZ1tmXT1kLmNhbGxiYWNrfHxfLlNhKE5iYSxkLlFiKSxkPWUuYVtmXSl7dmFyIGs9CmQ7aWYoMTxrLmxlbmd0aCl7Zm9yKHZhciBuPTA7bjxrLmxlbmd0aDsrK24pa1tuXS5pbmRleD1uO2suc29ydChEY2EpfWZvcig7ZC5sZW5ndGg7KWQuc2hpZnQoKS5kLmNhbGxiYWNrKG51bGwpO2RlbGV0ZSBlLmFbZl19fWVsc2UgY28oYSxkLmlkLGQuY2FsbGJhY2s/ZC5jYWxsYmFjayhhKTpuZXcgZC5RYihhKSl9fSxvZWE9ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzO1ZzKGZ1bmN0aW9uKGEpe2J0KGEsYil9KX0sY3Q9ZnVuY3Rpb24oYSxiKXtiPWJ8fG51bGw7Zm9yKHZhciBjPTA7YzxYcy5sZW5ndGg7KytjKWEuY2FsbChiLFhzW2NdLmloLGMpfSwkcz1mdW5jdGlvbihhKXtfLlhhLmNhbGwodGhpcyk7dGhpcy5paD1hO3RoaXMubWVzc2FnZT0iRXh0ZW5zaW9uIHJlZ2lzdGVyZWQgYWZ0ZXIgYXBwbGljYXRpb24gaW5pdGlhbGl6YXRpb24gIGFkZGluZyB0aGVzZSBzZXJ2aWNlczogIisoYS5aYz8oMCxfLmRiKShhLlpjLGZ1bmN0aW9uKGEpe3JldHVybiBhLmlkfSkuam9pbigiLCAiKTogIm5vbmUiKX07Xy5tKCRzLF8uWGEpOwphdCh7WmM6W3tpZDpfLk1pLFFiOkRzfV0sYTpbTG4sRWldfSk7YXQoe1pjOlt7aWQ6TG4sUWI6bW99XSxhOltfLk5pXX0pO2F0KHtaYzpbe2lkOl8uTmksUWI6Rm19XX0pO2F0KHtaYzpbe2lkOk9pLFFiOmZ1bmN0aW9uKGEpe3RoaXMuYT1hLmdldChfLk1pKX19XSxhOltfLk1pXX0pO3ZhciBwZWE7cGVhPTA7Xy5kdD1mdW5jdGlvbigpe3JldHVybiJjIitwZWErK307dmFyIGV0PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRBdHRyaWJ1dGUoImpzZGF0YSIpO2lmKGMmJjA9PWMuaW5kZXhPZigiZGVmZXJyZWQiKSl7Yz0oMCxfLkdiKShjKS5zcGxpdCgiLSIpWzFdO3ZhciBkO2ImJihkPWIucXVlcnlTZWxlY3RvckFsbCgiIyIrYylbMF0pO2R8fChkPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjKXx8YS5xdWVyeVNlbGVjdG9yQWxsKCIjIitjKVswXSk7cmV0dXJuIGQuZ2V0QXR0cmlidXRlKCJqc2RhdGEiKX1yZXR1cm4gY30scWVhPWZ1bmN0aW9uKGEpe2lmKChhPWEuZ2V0QXR0cmlidXRlKCJqc2RhdGEiKSkmJjA9PWEuaW5kZXhPZigiZGVmZXJyZWQiKSl7dmFyIGI9KDAsXy5HYikoYSkuc3BsaXQoIi0iKVsxXTtyZXR1cm4gbmV3IF8uZWsoZnVuY3Rpb24oYSxkKXt2YXIgYz1mdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtlP2EoZS5nZXRBdHRyaWJ1dGUoImpzZGF0YSIpKToiY29tcGxldGUiPT0gd2luZG93LmRvY3VtZW50LnJlYWR5U3RhdGU/ZChFcnJvcigibGFgIitiKSk6Xy5GbChjLDUwKX07Xy5GbChjLDUwKX0pfXJldHVybiBfLmlrKGF8fHZvaWQgMCl9LHJlYT1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLmdldEF0dHJpYnV0ZSgianNkYXRhIikpPzA9PWEuaW5kZXhPZigiZGVmZXJyZWQiKT8hd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCgwLF8uR2IpKGEpLnNwbGl0KCItIilbMV0pOiExOiExfTsKXy5ndD1mdW5jdGlvbihhKXsoMCxfLmZ0KSgpO3JldHVybiBfLnRxKGEpfTtfLmZ0PV8uSGE7dmFyIGl0LGp0LGt0LGx0O18uaHQ9e307aXQ9e307anQ9e307a3Q9e307bHQ9e307Xy5tdD17fTtfLm50PWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoIm1hIik7fTtfLm50LnByb3RvdHlwZS56Zz1udWxsO18ubnQucHJvdG90eXBlLkhoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudH07Xy5udC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50fTt2YXIgb3Q9ZnVuY3Rpb24oYSxiKXt0aGlzLmNvbnRlbnQ9U3RyaW5nKGEpO3RoaXMuemc9bnVsbCE9Yj9iOm51bGx9O18ubShvdCxfLm50KTtvdC5wcm90b3R5cGUuemY9Xy5tdDtfLnB0PWZ1bmN0aW9uKCl7Xy5udC5jYWxsKHRoaXMpfTtfLm0oXy5wdCxfLm50KTtfLnB0LnByb3RvdHlwZS56Zj1fLmh0O3ZhciBxdD1mdW5jdGlvbigpe18ubnQuY2FsbCh0aGlzKX07Xy5tKHF0LF8ubnQpO3F0LnByb3RvdHlwZS56Zj17fTtxdC5wcm90b3R5cGUuemc9MTt2YXIgcnQ9ZnVuY3Rpb24oKXtfLm50LmNhbGwodGhpcyl9OwpfLm0ocnQsXy5udCk7cnQucHJvdG90eXBlLnpmPWl0O3J0LnByb3RvdHlwZS56Zz0xO3ZhciBzdD1mdW5jdGlvbigpe18ubnQuY2FsbCh0aGlzKX07Xy5tKHN0LF8ubnQpO3N0LnByb3RvdHlwZS56Zj1qdDtzdC5wcm90b3R5cGUuemc9MTt2YXIgdHQ9ZnVuY3Rpb24oKXtfLm50LmNhbGwodGhpcyl9O18ubSh0dCxfLm50KTt0dC5wcm90b3R5cGUuemY9a3Q7dHQucHJvdG90eXBlLnpnPTE7dmFyIHV0PWZ1bmN0aW9uKCl7Xy5udC5jYWxsKHRoaXMpfTtfLm0odXQsXy5udCk7dXQucHJvdG90eXBlLnpmPXt9O3V0LnByb3RvdHlwZS56Zz0xO3ZhciB2dD1mdW5jdGlvbigpe18ubnQuY2FsbCh0aGlzKX07Xy5tKHZ0LF8ubnQpO3Z0LnByb3RvdHlwZS56Zj1sdDt2dC5wcm90b3R5cGUuemc9MTsKXy53dD1mdW5jdGlvbihhKXtpZighXy5QYShhKSlyZXR1cm4gU3RyaW5nKGEpO2lmKGEgaW5zdGFuY2VvZiBfLm50KXtpZihhLnpmPT09Xy5odClyZXR1cm4gYS5IaCgpO2lmKGEuemY9PT1fLm10KXJldHVybiBfLkpiKGEuSGgoKSl9cmV0dXJuInpTb3l6In07Xy54dD17fTtfLnl0PWZ1bmN0aW9uKGEsYil7dGhpcy5nPWJ8fF8uYnIoKTt0aGlzLnc9YXx8bnVsbH07Xy5BdD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy56dChhKTt2YXIgZT1hLmc7Yj1iKGN8fF8ueHQsdm9pZCAwLGQpO2U9KGV8fF8uYnIoKSkuY3JlYXRlRWxlbWVudCgiRElWIik7Yj1fLnd0KGIpO2UuaW5uZXJIVE1MPWI7MT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGI9ZS5maXJzdENoaWxkLDE9PWIubm9kZVR5cGUmJihlPWIpKTthLmEoZSk7cmV0dXJuIGV9O18uQnQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Xy56dChhKTtiLmlubmVySFRNTD1fLnd0KGMoZHx8Xy54dCx2b2lkIDAsZSkpO2EuYShiKX07Xy55dC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEsYil7YT1hKGJ8fHt9LHZvaWQgMCxfLnp0KHRoaXMpKTt0aGlzLmEoKTtyZXR1cm4gU3RyaW5nKGEpfTtfLkc9ZnVuY3Rpb24oYSxiLGMpe2I9YihjfHx7fSx2b2lkIDAsXy56dChhKSk7YS5hKCk7cmV0dXJuIFN0cmluZyhiKX07IF8ueXQucHJvdG90eXBlLmE9Xy5IYTtfLnp0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnc/YS53LmdldERhdGEoKTp7fX07CnZhciBDdD1mdW5jdGlvbihhKXtfLnl0LmNhbGwodGhpcyx0aGlzLGEuZ2V0KF8uQmkpLmNjKCkpO3RoaXMubz1hO3RoaXMuZj1uZXcgXy5DbH07Xy5tKEN0LF8ueXQpO0N0LnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKCl7aWYoIV8uQ2EodGhpcy5iKSl7dmFyIGE9YW8odGhpcy5vLEdpKTtpZihhKXt0aGlzLmI9YS5hO3RoaXMuYz17fTtmb3IodmFyIGIgaW4gdGhpcy5iKV8uT2EodGhpcy5iW2JdKSYmKHRoaXMuY1tiXT10aGlzLmJbYl0sdGhpcy5iW2JdPXZvaWQgMCl9ZWxzZSB0aGlzLmI9bnVsbH1pZih0aGlzLmMpZm9yKHZhciBjIGluIHRoaXMuYyl0cnl7dmFyIGQ9dGhpcy5jW2NdKCk7dGhpcy5iW2NdPWQ7ZGVsZXRlIHRoaXMuY1tjXX1jYXRjaChlKXt9cmV0dXJuIHRoaXMuYn07Q3QucHJvdG90eXBlLmE9ZnVuY3Rpb24oYSl7Q3QuJC5hLmNhbGwodGhpcyk7dGhpcy5mLmRpc3BhdGNoRXZlbnQobmV3IF8uY2woImsiLGEpKX07CnZhciBEdD17fSxzZWE9ZnVuY3Rpb24oYSl7aWYoIV8uZ2MoRHQpJiYoYT1hLnRhcmdldCkmJigxPT1hLm5vZGVUeXBlfHwxMT09YS5ub2RlVHlwZSkpe3ZhciBiPV8uc3IoYSk/W2FdOltdO18uc2IoYixhLnF1ZXJ5U2VsZWN0b3JBbGwoIltqc2RhdGFdIikpO2I9KDAsXy5jYikoYixmdW5jdGlvbihhKXthLmhhc0F0dHJpYnV0ZSgianNkYXRhIik/KGE9YS5nZXRBdHRyaWJ1dGUoImpzZGF0YSIpLGE9IV8uRWIoXy5QYihhKSkpOmE9ITE7cmV0dXJuIGF9KTt2YXIgYz1fLnNyKGEpP2E6dm9pZCAwOygwLF8uYWIpKGIsZnVuY3Rpb24oYSl7dmFyIGI9ZXQoYSxjKTtpZihiKXt2YXIgZD17fTsoMCxfLmFiKSgoMCxfLkdiKShiKS5zcGxpdCgiICIpLGZ1bmN0aW9uKGEpe2RbRXQoYSkuUmVdPUR0W2FdfSk7YS5fX2RhdGE9ZH19KTtEdD17fX19LEV0PWZ1bmN0aW9uKGEpe2E9KDAsXy5HYikoYSkuc3BsaXQoLzsvKTtyZXR1cm57cGI6YVswXSxJdTphWzBdKyI7IithWzFdLGlkOmFbMV0sUmU6YVsyXX19Owp2YXIgdGVhPS9cP1teOl0qL2csRnQ9WyJzY3JpcHQiLCJlcnJvciIsImxpbmUiXSxHdD1bImNvbnRleHQubG9jYXRpb24iLCJjb250ZXh0LnRvcC5sb2NhdGlvbiIsInNjcmlwdCIsInRyYWNlIl0sSHQ9ZnVuY3Rpb24oYSxiLGMsZCl7YT1uZXcgXy5hYShhKTtjPW5ldyBfLnpwKGMpO2ZvcihiPTA7YjxGdC5sZW5ndGg7KytiKXt2YXIgZT1GdFtiXSxmPV8uRnAoYSxlKTtmJiYoYy5hZGQoZSxmKSxhLmEucmVtb3ZlKGUpKX1iPWMuZ2V0KCJlcnJvciIsIiIpO2lmKCEoXy5LYihiLCJUaGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSB0cmFuc3BvcnQgb3IgcHJvY2Vzc2luZyBvZiB0aGlzIHJlcXVlc3QuIikmJihfLktiKGIsIkVycm9yIGNvZGUgPSAxMDEiKXx8Xy5LYihiLCJFcnJvciBjb2RlID0gNyIpfHxfLktiKGIsIkVycm9yIGNvZGUgPSA1MDIiKSl8fF8uS2IoYiwiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IHJlZnJlc2hFbWFpbCIpfHwiMSI9PWJ8fCIyIj09CmJ8fF8uS2IoYiwiZmFpbGVkIHRvIGxvYWQgd2hlbiByZXF1ZXN0aW5nIHRoZSBzZXJ2aWNlIil8fF8uS2IoYiwiVGltZW91dCByZWFjaGVkIGZvciBsb2FkaW5nIHNjcmlwdCBodHRwczovL2FwaXMuZ29vZ2xlLmNvbS9qcy9iYXNlLmpzIil8fF8uS2IoYiwiSnNsb2FkZXIgZXJyb3IgKGNvZGUgIzApOiBFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdCBodHRwczovL2FwaXMuZ29vZ2xlLmNvbS9qcy9iYXNlLmpzIil8fF8uS2IoYiwiQ2Fubm90IHJlYWQgcHJvcGVydHkgJ19fd3JhcHBlcl8xX18nIG9mIHVuZGVmaW5lZCIpKSl7Zm9yKGI9MDtiPEd0Lmxlbmd0aDsrK2IpaWYoZT1jLGY9R3RbYl0sS3AoZSxmKSl7dmFyIGs9ZS5nZXQoZikucmVwbGFjZSh0ZWEsIiIpO2Uuc2V0KGYsayl9Yz1jLnRvU3RyaW5nKCk7Xy5UbyhhLnRvU3RyaW5nKCksbnVsbCwiUE9TVCIsYyxkKX19Owp2YXIgSXQ9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93O2lmKCFiLmxvY2F0aW9uKXRyeXtkaihiKX1jYXRjaChkKXt9dmFyIGM9Yi5sb2NhdGlvbiYmYi5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnM7aWYoXy5DYShjKSlyZXR1cm4gYyYmYy5sZW5ndGg/Y1thPzA6Yy5sZW5ndGgtMV09PWIubG9jYXRpb24ub3JpZ2luOiEwO3RyeXtyZXR1cm4gXy5DYSgoYT9iLnBhcmVudDpiLnRvcCkubG9jYXRpb24uaHJlZil9Y2F0Y2goZCl7cmV0dXJuITF9fTsKdmFyIEp0PXt9LEt0PWZ1bmN0aW9uKCl7dmFyIGE9e307YS5sb2NhdGlvbj13aW5kb3cuZG9jdW1lbnQubG9jYXRpb24udG9TdHJpbmcoKTtpZihJdCghMSkpdHJ5e2FbInRvcC5sb2NhdGlvbiJdPXdpbmRvdy50b3AubG9jYXRpb24udG9TdHJpbmcoKX1jYXRjaChjKXthWyJ0b3AubG9jYXRpb24iXT0iW2V4dGVybmFsXSJ9ZWxzZSBhWyJ0b3AubG9jYXRpb24iXT0iW2V4dGVybmFsXSI7Zm9yKHZhciBiIGluIEp0KXRyeXthW2JdPUp0W2JdLmNhbGwoKX1jYXRjaChjKXthW2JdPSJbZXJyb3JdICIrYy5tZXNzYWdlfXJldHVybiBhfTsKdmFyIHVlYT1mdW5jdGlvbihhKXt0aGlzLmE9YTt0aGlzLmY9e307dGhpcy5iPVtdfSxxbz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9S3QoKTtkWyJjYWxsLXN0YWNrIl09WWsoKTtjJiYoZC5tZXNzYWdlPWMpO3ZhciBlO2IgaW5zdGFuY2VvZiBFcnJvcj9lPWI6ZT1ifHwiIjtiPSIiO2lmKGUpe2I9ZS5tZXNzYWdlfHwidW5rbm93biI7Zm9yKHZhciBmPWM9MDtmPGIubGVuZ3RoOysrZiljPTMxKmMrYi5jaGFyQ29kZUF0KGYpPj4+MDtiPWN9Yz0iIjtmb3IoayBpbiBkKWM9YytrKyI6IitkW2tdKyI6Ijt2YXIgaz1iKyI6OiIrYztiPWEuZltrXTtifHwoYj17dGltZTowLGNvdW50OjB9LGEuZltrXT1iKTtpZigxRTQ+KDAsXy5VYSkoKS1iLnRpbWUpYi5jb3VudCsrLDE9PWIuY291bnQmJihkPUt0KCksZC5tZXNzYWdlPSJUaHJvdHRsaW5nOiAiK2ssYS5hLmIoZSxkKSk7ZWxzZXtiLmNvdW50JiYoZFsiZHJvcHBlZC1pbnN0YW5jZXMiXT1iLmNvdW50KTtiLnRpbWU9KDAsXy5VYSkoKTtmb3Ioaz0gYi5jb3VudD0wO2s8YS5iLmxlbmd0aDtrKyspYS5iW2tdKGUsZCk7YS5hLmIoZSxkKX19Owp2YXIgTHQ9ZnVuY3Rpb24oYSl7Xy5Bay5jYWxsKHRoaXMpO3RoaXMuZj1hO3RoaXMuYj0hMDt0aGlzLmE9ITF9O18ubShMdCxfLkFrKTtMdC5wcm90b3R5cGUuTXc9ZnVuY3Rpb24oYSl7cmV0dXJuIE10KHRoaXMsYSl9Owp2YXIgTnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYj8iX193cmFwcGVyXyI6Il9fcHJvdGVjdGVkXyIpK18uUmEoYSkrIl9fIn0sTXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1OdChhLCEwKTtiW2NdfHwoKGJbY109dmVhKGEsYikpW050KGEsITEpXT1iKTtyZXR1cm4gYltjXX0sdmVhPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oKXtpZihhLmlzRGlzcG9zZWQoKSlyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dHJ5e3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaChkKXtpZighKGQmJiJvYmplY3QiPT09dHlwZW9mIGQmJmQubWVzc2FnZSYmMD09ZC5tZXNzYWdlLmluZGV4T2YoIkVycm9yIGluIHByb3RlY3RlZCBmdW5jdGlvbjogIil8fCJzdHJpbmciPT09dHlwZW9mIGQmJjA9PWQuaW5kZXhPZigiRXJyb3IgaW4gcHJvdGVjdGVkIGZ1bmN0aW9uOiAiKSkpe2EuZihkKTtpZighYS5iKXRocm93IGEuYSYmKCJvYmplY3QiPT09dHlwZW9mIGQmJmQmJiJtZXNzYWdlImluCmQ/ZC5tZXNzYWdlPSJFcnJvciBpbiBwcm90ZWN0ZWQgZnVuY3Rpb246ICIrZC5tZXNzYWdlOmQ9IkVycm9yIGluIHByb3RlY3RlZCBmdW5jdGlvbjogIitkKSxkO3Rocm93IG5ldyBPdChkKTt9fWZpbmFsbHl7fX07Y1tOdChhLCExKV09YjtyZXR1cm4gY30sUXQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPV8uR2EoIndpbmRvdyIpLGM9WyJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRBbmltYXRpb25GcmFtZSIsIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0sZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO2NbZF1pbiBiJiZQdChhLGUpfX0sUHQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLkdhKCJ3aW5kb3ciKSxkPWNbYl07Y1tiXT1mdW5jdGlvbihiLGMpe18uRGEoYikmJihiPV8uU2EoV2EsYikpO2FyZ3VtZW50c1swXT1iPU10KGEsYik7aWYoZC5hcHBseSlyZXR1cm4gZC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGU9YjsKaWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7ZT1mdW5jdGlvbigpe2IuYXBwbHkodGhpcyxmKX19cmV0dXJuIGQoZSxjKX07Y1tiXVtOdChhLCExKV09ZH07THQucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7dmFyIGE9Xy5HYSgid2luZG93Iik7dmFyIGI9YS5zZXRUaW1lb3V0O2I9YltOdCh0aGlzLCExKV18fGI7YS5zZXRUaW1lb3V0PWI7Yj1hLnNldEludGVydmFsO2I9YltOdCh0aGlzLCExKV18fGI7YS5zZXRJbnRlcnZhbD1iO0x0LiQub2IuY2FsbCh0aGlzKX07dmFyIE90PWZ1bmN0aW9uKGEpe18uWGEuY2FsbCh0aGlzLCJFcnJvciBpbiBwcm90ZWN0ZWQgZnVuY3Rpb246ICIrKGEmJmEubWVzc2FnZT9TdHJpbmcoYS5tZXNzYWdlKTpTdHJpbmcoYSkpKTsoYT1hJiZhLnN0YWNrKSYmXy5EYShhKSYmKHRoaXMuc3RhY2s9YSl9O18ubShPdCxfLlhhKTsKdmFyIFJ0PWZ1bmN0aW9uKGEsYixjKXtfLkNsLmNhbGwodGhpcyk7dGhpcy5vPWJ8fG51bGw7dGhpcy5mPXt9O3RoaXMuYz13ZWE7dGhpcy53PWE7Y3x8KHRoaXMuYT1udWxsLF8ud2MmJiFPYygiMTAiKT9HaygoMCxfLmwpKHRoaXMuYix0aGlzKSwhMSxudWxsKToodGhpcy5hPW5ldyBMdCgoMCxfLmwpKHRoaXMuYix0aGlzKSksUHQodGhpcy5hLCJzZXRUaW1lb3V0IiksUHQodGhpcy5hLCJzZXRJbnRlcnZhbCIpLFF0KHRoaXMuYSksTGoodGhpcy5hKSkpfTtfLm0oUnQsXy5DbCk7dmFyIFN0PWZ1bmN0aW9uKGEsYil7Xy5jbC5jYWxsKHRoaXMsImwiKTt0aGlzLmVycm9yPWE7dGhpcy5jb250ZXh0PWJ9O18ubShTdCxfLmNsKTt2YXIgd2VhPWZ1bmN0aW9uKGEsYixjLGQpe18uVG8oYSxudWxsLGIsYyxkKX07ClJ0LnByb3RvdHlwZS5iPWZ1bmN0aW9uKGEsYil7YT1hLmVycm9yfHxhO2I9Yj9pYyhiKTp7fTthIGluc3RhbmNlb2YgRXJyb3ImJl8ua2MoYixhLl9fY2xvc3VyZV9fZXJyb3JfX2NvbnRleHRfXzk4NDM4Mnx8e30pO3ZhciBjPV8uR2EoIndpbmRvdy5sb2NhdGlvbi5ocmVmIik7aWYoXy5EYShhKSl2YXIgZD17bWVzc2FnZTphLG5hbWU6IlVua25vd24gZXJyb3IiLGxpbmVOdW1iZXI6Ik5vdCBhdmFpbGFibGUiLGZpbGVOYW1lOmMsc3RhY2s6Ik5vdCBhdmFpbGFibGUifTtlbHNle3ZhciBlPSExO3RyeXtkPWEubGluZU51bWJlcnx8YS5saW5lfHwiTm90IGF2YWlsYWJsZSJ9Y2F0Y2goRCl7ZD0iTm90IGF2YWlsYWJsZSIsZT0hMH10cnl7dmFyIGY9YS5maWxlTmFtZXx8YS5maWxlbmFtZXx8YS5zb3VyY2VVUkx8fF8uaC4kZ29vZ0RlYnVnRm5hbWV8fGN9Y2F0Y2goRCl7Zj0iTm90IGF2YWlsYWJsZSIsZT0hMH1kPSFlJiZhLmxpbmVOdW1iZXImJmEuZmlsZU5hbWUmJmEuc3RhY2smJgphLm1lc3NhZ2UmJmEubmFtZT9hOnttZXNzYWdlOmEubWVzc2FnZXx8Ik5vdCBhdmFpbGFibGUiLG5hbWU6YS5uYW1lfHwiVW5rbm93bkVycm9yIixsaW5lTnVtYmVyOmQsZmlsZU5hbWU6ZixzdGFjazphLnN0YWNrfHwiTm90IGF2YWlsYWJsZSJ9fWlmKHRoaXMubyl0cnl7dGhpcy5vKGQsYil9Y2F0Y2goRCl7fWY9ZC5tZXNzYWdlLnN1YnN0cmluZygwLDE5MDApO2lmKCEoYSBpbnN0YW5jZW9mIF8uWGEpfHxhLmIpe2M9ZC5maWxlTmFtZTtlPWQubGluZU51bWJlcjthPWQuc3RhY2s7dHJ5e3ZhciBrPV8uTG8odGhpcy53LCJzY3JpcHQiLGMsImVycm9yIixmLCJsaW5lIixlKTtpZighXy5nYyh0aGlzLmYpKXtmPWs7dmFyIG49S28odGhpcy5mKTtrPUhvKGYsbil9bj17fTtuLnRyYWNlPWE7aWYoYilmb3IodmFyIHAgaW4gYiluWyJjb250ZXh0LiIrcF09YltwXTt2YXIgQT1LbyhuKTtfLkVhKG51bGwpJiYoQT1BLnN1YnN0cmluZygwLG51bGwpKTt0aGlzLmMoaywiUE9TVCIsQSx0aGlzLmkpfWNhdGNoKEQpe319dHJ5e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgU3QoZCwgYikpfWNhdGNoKEQpe319O1J0LnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe0NrKHRoaXMuYSk7UnQuJC5vYi5jYWxsKHRoaXMpfTsKdmFyIHllYT1mdW5jdGlvbigpe3BvLmluaXQoKTt2YXIgYT1uZXcgUnQoImpzZXJyb3IiLHZvaWQgMCwhMCk7SHQmJihhLmM9SHQpO2E9bmV3IHVlYShhKTtUdC5iPWE7SGNhKGEpO3ZhciBiPW51bGw7YT1mdW5jdGlvbihhKXtfLmguJGdvb2dEZWJ1Z0ZuYW1lJiZhJiZhLm1lc3NhZ2UmJiFhLmZpbGVOYW1lJiYoYS5tZXNzYWdlKz0iIGluICIrXy5oLiRnb29nRGVidWdGbmFtZSk7Yj9hJiZhLm1lc3NhZ2UmJihhLm1lc3NhZ2UrPSIgW1Bvc3NpYmx5IGNhdXNlZCBieTogIitiKyJdIik6Yj1TdHJpbmcoYSk7cm8obnVsbCxhKX07Xy5GYSgiX0R1bXBFeGNlcHRpb24iLGEsdm9pZCAwKTtfLkZhKCJfQl9lcnIiLGEsdm9pZCAwKTsoMCxfLmFiKShbXy5oXS5jb25jYXQoW10pLF8uU2EoR2ssXy5TYSh4ZWEsITApLCEwKSk7aWYoIV8ud2N8fE9jKDEwKSlhPW5ldyBMdChJY2EpLGEuYj0hMCxhLmE9ITAsUXQoYSksUHQoYSwic2V0VGltZW91dCIpLFB0KGEsInNldEludGVydmFsIiksTGooYSksIFR0LmE9YX0seGVhPWZ1bmN0aW9uKGEsYil7Xy5LYihiLm1lc3NhZ2UsIkVycm9yIGluIHByb3RlY3RlZCBmdW5jdGlvbjogIil8fChiLmVycm9yJiZiLmVycm9yLnN0YWNrP3JvKG51bGwsYi5lcnJvcik6YXx8cm8obnVsbCxiKSl9LFV0PWZ1bmN0aW9uKCl7fTtVdC5wcm90b3R5cGUuYT1udWxsO1V0LnByb3RvdHlwZS5iPW51bGw7dmFyIFR0PW5ldyBVdDsKdmFyIFZ0PWZ1bmN0aW9uKCl7Xy5Bay5jYWxsKHRoaXMpfTtfLm0oVnQsR3MpO1Z0LnByb3RvdHlwZS5VYz1mdW5jdGlvbigpe3ZhciBhPW5ldyBabjt5ZWEoKTt2YXIgYj1fLkxzLlNiKCk7Yi53PWE7TXMoYil9O3ZhciBXdD1fLkxzLlNiKCk7aWYoV3QuZil7dmFyIFh0PVd0LmY7aWYoWHQubz09PUdzKVh0Lm89VnQ7ZWxzZSB0aHJvdyBFcnJvcigiaWEiKTt9dmFyIHplYT1mdW5jdGlvbihhKXtpZighWnMpe25lYSgpO2Zvcih2YXIgYj0wO2I8WHMubGVuZ3RoOysrYil7dmFyIGM9WHNbYl0uaWg7Yy5aYyYmYnQoYSxjLlpjKTtjLmImJmMuYihhKX1mb3IoYj0wO2I8WHMubGVuZ3RoOysrYiljPVhzW2JdLGMuaWguVWMmJmMuaWguVWMoYSk7Zm9yKGI9MDtiPFlzLmxlbmd0aDsrK2IpWXNbYl0oYSk7WnM9ITB9fSxZdD1fLkxzLlNiKCk7WXQuZiYmWXQuZi5iLnB1c2gobmV3IEhzKHplYSx2b2lkIDApKTsKdmFyIFp0PWZ1bmN0aW9uKGEsYil7VG4uY2FsbCh0aGlzLGEsYil9O18ubShadCxUbik7dmFyICR0PW5ldyBWbigiaWNfc3RhZ2VzIiksYXU9bmV3IFp0KCR0LCJtIiksYnU9bmV3IFp0KCR0LCJuIiksY3U9bmV3IFp0KCR0LCJvIiksZHU9bmV3IFp0KCR0LCJwIiksZXU9bmV3IFp0KCR0LCJxIik7bmV3IFp0KCR0LCJyIik7dmFyIGZ1PWZ1bmN0aW9uKGEpe3RoaXMuYT1hfTtmdS5wcm90b3R5cGUuZ2V0V2luZG93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07dmFyIGd1PWZ1bmN0aW9uKGEsYil7Xy5DbC5jYWxsKHRoaXMpO3RoaXMudz1BZWErKzt0aGlzLmI9YTt0aGlzLmE9bmV3IF8uQ3IodGhpcyk7dGhpcy5vPWI7dGhpcy5jPVtdO3RoaXMuZj0hMTt0aGlzLmEubGlzdGVuKHRoaXMuYiwidW5sb2FkIix0aGlzLmp5KTt0aGlzLmEubGlzdGVuKHRoaXMuYiwiYmVmb3JldW5sb2FkIix0aGlzLmkpO2E9Yi5nZXQoeGkpO3RoaXMuZ2V0V2luZG93KCkhPXdpbmRvdy50b3AmJmEuZnx8KGEuZj10aGlzKTthLmEucHVzaCh0aGlzKTthLmMubGlzdGVuKHRoaXMsInMiLGEuZWEpO2EuYy5saXN0ZW4odGhpcywidCIsYS5pKTtjbyh0aGlzLm8sS2ksbmV3IGZ1KHRoaXMpKX07Xy5tKGd1LF8uQ2wpO3ZhciBBZWE9MTtfLmc9Z3UucHJvdG90eXBlO18uZy52dz0hMTtfLmcudEE9ITE7Xy5nLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud307Xy5nLmZKPWZ1bmN0aW9uKCl7cmV0dXJuITB9OwpfLmcuank9ZnVuY3Rpb24oKXtHcih0aGlzLmEpO0JlYSh0aGlzKTt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IGh1KHRoaXMsdGhpcy50QSkpO3RoaXMuZGlzcG9zZSgpfTt2YXIgQmVhPWZ1bmN0aW9uKGEpeygwLF8uYWIpKGEuYyxmdW5jdGlvbihhKXthLmRpc3Bvc2UoKX0pO2EuYy5sZW5ndGg9MH07Z3UucHJvdG90eXBlLmk9ZnVuY3Rpb24oYSl7aWYoIXRoaXMuZil7dmFyIGI9W10sYz1uZXcgaXUodGhpcyx0aGlzLnZ3LGIpO3RoaXMudEE9dGhpcy52dzt0aGlzLnZ3PSExO3RyeXt0aGlzLmRpc3BhdGNoRXZlbnQoYyl9Y2F0Y2goZCl7fV8udmIoYik7IWMuYSYmYi5sZW5ndGgmJihhLmEucmV0dXJuVmFsdWU9Yi5qb2luKCJcbiIpKTtpZihfLkJjJiZiLmxlbmd0aClyZXR1cm4gYi5qb2luKCJcbiIpfX07Z3UucHJvdG90eXBlLmdldFdpbmRvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ9O2d1LnByb3RvdHlwZS55Yz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99OyBndS5wcm90b3R5cGUub2I9ZnVuY3Rpb24oKXtndS4kLm9iLmNhbGwodGhpcyk7Q2sodGhpcy5hKTt0aGlzLmI9dGhpcy5hPW51bGx9O3ZhciBpdT1mdW5jdGlvbihhLGIsYyl7Xy5jbC5jYWxsKHRoaXMsInMiLGEpO3RoaXMubz1jO3RoaXMuZz1iO3RoaXMuYT0hMX07Xy5tKGl1LF8uY2wpO3ZhciBodT1mdW5jdGlvbihhKXtfLmNsLmNhbGwodGhpcywidCIsYSl9O18ubShodSxfLmNsKTsKXy5qdT1mdW5jdGlvbihhLGIsYyxkLGUsZil7Xy5wbS5jYWxsKHRoaXMsZSxmKTt0aGlzLmtjPWE7dGhpcy53YT1bXTt0aGlzLkVjPSEhYjt0aGlzLmViPSEhYzt0aGlzLlVhPSEhZDtmb3IoYj10aGlzLmxkPTA7YjxhLmxlbmd0aDtiKyspXy52bShhW2JdLCgwLF8ubCkodGhpcy5CYSx0aGlzLGIsITApLCgwLF8ubCkodGhpcy5CYSx0aGlzLGIsITEpKTswIT1hLmxlbmd0aHx8dGhpcy5FY3x8dGhpcy5jYWxsYmFjayh0aGlzLndhKX07Xy5tKF8uanUsXy5wbSk7Xy5qdS5wcm90b3R5cGUuQmE9ZnVuY3Rpb24oYSxiLGMpe3RoaXMubGQrKzt0aGlzLndhW2FdPVtiLGNdO3RoaXMuYnx8KHRoaXMuRWMmJmI/dGhpcy5jYWxsYmFjayhbYSxjXSk6dGhpcy5lYiYmIWI/dGhpcy5hKGMpOnRoaXMubGQ9PXRoaXMua2MubGVuZ3RoJiZ0aGlzLmNhbGxiYWNrKHRoaXMud2EpKTt0aGlzLlVhJiYhYiYmKGM9bnVsbCk7cmV0dXJuIGN9OyBfLmp1LnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEpe18uanUuJC5hLmNhbGwodGhpcyxhKTtmb3IoYT0wO2E8dGhpcy5rYy5sZW5ndGg7YSsrKXRoaXMua2NbYV0uY2FuY2VsKCl9O18ua3U9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ud20obmV3IF8uanUoYSwhMSwhMCksZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGQ9MDtkPGEubGVuZ3RoO2QrKyliW2RdPWFbZF1bMV07cmV0dXJuIGJ9KX07Cm5ldyBfLnhuO3ZhciBsdT1mdW5jdGlvbihhKXtfLkNsLmNhbGwodGhpcyk7dGhpcy5vPWE7dGhpcy5jPW5ldyBfLkNyKHRoaXMpO3RoaXMuYT1bXTtJdCghMCkmJih0aGlzLndhPXdpbmRvdy5mcmFtZUVsZW1lbnQpO3RoaXMuamE9W107dGhpcy53PUNlYSh0aGlzKX07Xy5tKGx1LF8uQ2wpO2x1LnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe2x1LiQub2IuY2FsbCh0aGlzKTt0aGlzLmMuZGlzcG9zZSgpO3RoaXMud2E9dGhpcy53PXRoaXMuYT10aGlzLmM9bnVsbH07dmFyIG11PWZ1bmN0aW9uKGEpe3JldHVybiBhLmdldCh4aSl9LG51PWZ1bmN0aW9uKGEsYil7Yj1iLnRvU3RyaW5nKCk7YS53W2JdPW5ldyBfLnBtO2EuamEucHVzaChiKX0scHU9ZnVuY3Rpb24oYSxiKXthLmlzRGlzcG9zZWQoKXx8YS5vLmlzRGlzcG9zZWQoKXx8b3UoYSxiKS5jYWxsYmFjaygpfTsKbHUucHJvdG90eXBlLmI9ZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5kYikoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3JldHVybiBvdSh0aGlzLGEpfSx0aGlzKTtyZXR1cm4gXy5rdShiKX07bHUucHJvdG90eXBlLmVhPWZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGM9Yj09dGhpcy5mO2lmKGI9PXRoaXMuZil7dmFyIGQ9W107KDAsXy5hYikodGhpcy5hLGZ1bmN0aW9uKGEpe2EhPXRoaXMuZiYmZC5wdXNoKGEuamEoKSl9LHRoaXMpOzA8ZC5sZW5ndGgmJihhLm8ucHVzaCgiVGhlIGZvbGxvd2luZyB3aW5kb3dzIHdpbGwgYmUgY2xvc2VkOlxuIiksYS5vLnB1c2goZC5qb2luKCJcbiIpKSl9YyYmKHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgcXUodGhpcyxhLm8pKSxhLmE9YS5hfHwhMSl9OwpsdS5wcm90b3R5cGUuaT1mdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDt0aGlzLmMuWW8oYiwidCIsdGhpcy5pKTtpZihiPT10aGlzLmYmJiF0aGlzLncudWxpbmcuYil7aWYodGhpcy53YSYmIWEuZylmb3IoYT0wO2E8dGhpcy5hLmxlbmd0aDthKyspO2JiKHRoaXMuYSxmdW5jdGlvbihhKXtpZihhIT1iKXthLmY9ITA7dmFyIGM9YS5iO2EuankoKTtjJiZjLmNsb3NlKCl9fSx0aGlzKTtwdSh0aGlzLCJ1bGluZyIpO3B1KHRoaXMsInUiKTt0aGlzLmY9bnVsbH10aGlzLmEmJmImJl8ucGIodGhpcy5hLGIpfTsKdmFyIENlYT1mdW5jdGlvbihhKXtyZXR1cm4oMCxfLmViKShbWyJkciIsInciXSxbImlkciIsIngiXSxbIml2ciIsInkiXSxbImxsIiwieiJdLFsibCIsInYiXSxbInVsaW5nIiwiQiJdLFsidSIsIkMiXV0sZnVuY3Rpb24oYSxjKXt2YXIgYj1uZXcgXy5wbTthW2NbMF1dPWI7dGhpcy5qYS5wdXNoKGNbMF0pO18ud20oYixmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudChjWzFdKX0sdGhpcyk7cmV0dXJuIGF9LHt9LGEpfSxvdT1mdW5jdGlvbihhLGIpe3ZhciBjPWI7YiBpbnN0YW5jZW9mIFp0JiYoYz1iLnRvU3RyaW5nKCkpO3JldHVybiBhLndbY119LHF1PWZ1bmN0aW9uKCl7Xy5jbC5jYWxsKHRoaXMsIkEiKX07Xy5tKHF1LF8uY2wpOwp2YXIgcnU9W107YXQoe2I6ZnVuY3Rpb24oKXtydS5wdXNoKCJkciIpfX0pO3ZhciBEZWE9bmV3IFZuKCJnYWlhX3N0YWdlcyIpLHN1PW5ldyBadChEZWEsIkQiKTtfLnR1PWZ1bmN0aW9uKCl7fTtfLnR1LnByb3RvdHlwZS5hPV8ub3E7dmFyIHd1LHp1LEF1LEVlYSxCdSxGdSxLdSxHZWEsS2VhLExlYSxPdSxNZWEsTnUsSmVhLEhlYSxJZWEsRmVhO18udXU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbCE9YSYmYS56Zj09PWJ9O18udnU9ZnVuY3Rpb24oYSl7aWYobnVsbCE9YSlzd2l0Y2goYS56Zyl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgLTE6cmV0dXJuLTE7Y2FzZSAwOnJldHVybiAwfXJldHVybiBudWxsfTtfLks9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmEuemY9PT1fLmh0P2E6YSBpbnN0YW5jZW9mIEtxPygwLF8uSCkoXy5McShhKSxhLnVqKCkpOigwLF8uSCkoXy5KYihTdHJpbmcoU3RyaW5nKGEpKSksXy52dShhKSl9O3d1PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dGhpcy5jb250ZW50PWF9Yi5wcm90b3R5cGU9YS5wcm90b3R5cGU7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBuZXcgYihTdHJpbmcoYSkpfX07Xy5MPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgb3QoYSx2b2lkIDApfTsKXy5IPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dGhpcy5jb250ZW50PWF9Yi5wcm90b3R5cGU9YS5wcm90b3R5cGU7cmV0dXJuIGZ1bmN0aW9uKGEsZCl7YT1uZXcgYihTdHJpbmcoYSkpO3ZvaWQgMCE9PWQmJihhLnpnPWQpO3JldHVybiBhfX0oXy5wdCk7d3UocXQpO18ueHU9d3UocnQpO3d1KHN0KTtfLnl1PXd1KHR0KTt3dSh1dCk7d3UodnQpO18uTj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBiKWMgaW4gYXx8KGFbY109YltjXSk7cmV0dXJuIGF9O3p1PXt9O0F1PXt9O18uTz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0ia2V5XyIrYSsiOiIrYixmPXp1W2VdO2lmKHZvaWQgMD09PWZ8fGM+Zil6dVtlXT1jLEF1W2VdPWQ7ZWxzZSBpZihjPT1mKXRocm93IEVycm9yKCJwYWAiK2ErImAiK2IpO307Cl8uUD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9QXVbImtleV8iK2ErIjoiK2JdO2R8fCIiPT1ifHwoZD1BdVsia2V5XyIrYSsiOiJdKTtpZihkKXJldHVybiBkO2lmKGMpcmV0dXJuIEVlYTt0aHJvdyBFcnJvcigicWFgIithKyJgIisoYj8iOiIrYjoiIikpO307RWVhPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9O0J1PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dGhpcy5jb250ZW50PWF9Yi5wcm90b3R5cGU9YS5wcm90b3R5cGU7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybihhPVN0cmluZyhhKSk/bmV3IGIoYSk6IiJ9fTtfLlE9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9U3RyaW5nKGEpKT9uZXcgb3QoYSx2b2lkIDApOiIifTtfLlQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt0aGlzLmNvbnRlbnQ9YX1iLnByb3RvdHlwZT1hLnByb3RvdHlwZTtyZXR1cm4gZnVuY3Rpb24oYSxkKXthPVN0cmluZyhhKTtpZighYSlyZXR1cm4iIjthPW5ldyBiKGEpO3ZvaWQgMCE9PWQmJihhLnpnPWQpO3JldHVybiBhfX0oXy5wdCk7CkJ1KHF0KTtCdShzdCk7Xy5DdT1CdShydCk7Xy5EdT1CdSh0dCk7QnUodXQpO18uRXU9QnUodnQpO0Z1PWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoLzxcLy9nLCI8XFwvIikucmVwbGFjZSgvXF1cXT4vZywiXV1cXD4iKX07Xy5VPWZ1bmN0aW9uKGEpe3JldHVybiBfLnV1KGEsXy5odCk/Xy5HdShTdHJpbmcoYS5IaCgpKS5yZXBsYWNlKF8uSHUsIiIpLnJlcGxhY2UoXy5JdSwiJmx0OyIpKTpfLkpiKFN0cmluZyhhKSl9O18uSnU9ZnVuY3Rpb24oYSl7Xy51dShhLGt0KT9hPWEuSGgoKS5yZXBsYWNlKC8oW14iJ1xzXSkkLywiJDEgIik6KGE9U3RyaW5nKGEpLGE9RmVhLnRlc3QoYSk/YToielNveXoiKTtyZXR1cm4gYX07S3U9L1snKCldL2c7R2VhPWZ1bmN0aW9uKGEpe3JldHVybiIlIithLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpfTsKXy5MdT1mdW5jdGlvbihhKXthPV8uSWIoU3RyaW5nKGEpKTtLdS5sYXN0SW5kZXg9MDtyZXR1cm4gS3UudGVzdChhKT9hLnJlcGxhY2UoS3UsR2VhKTphfTtfLlB1PWZ1bmN0aW9uKGEpe18udXUoYSxpdCl8fF8udXUoYSxqdCk/YT1fLk11KGEpOmEgaW5zdGFuY2VvZiBfLnZxP2E9Xy5NdShfLndxKGEpKTphIGluc3RhbmNlb2YgcnE/YT1fLk11KF8uc3EoYSkpOihhPVN0cmluZyhhKSxhPUhlYS50ZXN0KGEpP2EucmVwbGFjZShOdSxPdSk6ImFib3V0OmludmFsaWQjelNveXoiKTtyZXR1cm4gYX07Xy5RdT1mdW5jdGlvbihhKXtfLnV1KGEsaXQpfHxfLnV1KGEsanQpP2E9Xy5NdShhKTphIGluc3RhbmNlb2YgXy52cT9hPV8uTXUoXy53cShhKSk6YSBpbnN0YW5jZW9mIHJxP2E9Xy5NdShfLnNxKGEpKTooYT1TdHJpbmcoYSksYT1JZWEudGVzdChhKT9hLnJlcGxhY2UoTnUsT3UpOiJhYm91dDppbnZhbGlkI3pTb3l6Iik7cmV0dXJuIGF9OwpfLlJ1PWZ1bmN0aW9uKGEpe18udXUoYSxsdCk/YT1GdShhLkhoKCkpOm51bGw9PWE/YT0iIjphIGluc3RhbmNlb2YgQ3E/YT1GdShEcShhKSk6YSBpbnN0YW5jZW9mIElxPyhhIGluc3RhbmNlb2YgSXEmJmEuY29uc3RydWN0b3I9PT1JcSYmYS5iPT09SHE/YT1hLmE6KExhKGEpLGE9InR5cGVfZXJyb3I6U2FmZVN0eWxlU2hlZXQiKSxhPUZ1KGEpKTooYT1TdHJpbmcoYSksYT1KZWEudGVzdChhKT9hOiJ6U295eiIpO3JldHVybiBhfTtfLlN1PXt9OwpfLlR1PWZ1bmN0aW9uKGEpe3ZhciBiPV8uU3VbMV18fChfLlN1WzFdPW5ldyBfLnR1KSxjPV8uVHEoXy5tcSgiU295IHxiaWRpU3BhbldyYXAgaXMgYXBwbGllZCBvbiBhbiBhdXRvZXNjYXBlZCB0ZXh0LiIpLFN0cmluZyhhKSk7YT1fLnZ1KGEpO251bGw9PWEmJihhPWIuYShfLkxxKGMpLCEwKSk7Yj1hO2E9KGE9dm9pZCAwLHZvaWQgMD09YSk7dmFyIGQ9MCE9YiYmMSE9YjtpZihkKXt2YXIgZTtkJiYoZT0tMT09Yj8icnRsIjoibHRyIik7ZT17ZGlyOmV9O2lmKCFPcS50ZXN0KCJzcGFuIikpdGhyb3cgRXJyb3IoIlFgc3BhbiIpO2lmKCJTUEFOImluIE5kYSl0aHJvdyBFcnJvcigiUmBzcGFuIik7ZD1udWxsO3ZhciBmPSIiO2lmKGUpZm9yKEYgaW4gZSl7aWYoIU9xLnRlc3QoRikpdGhyb3cgRXJyb3IoIlZgIitGKTt2YXIgaz1lW0ZdO2lmKG51bGwhPWspe3ZhciBuPUY7dmFyIHA9aztpZihwIGluc3RhbmNlb2Yga3EpcD1fLmxxKHApO2Vsc2UgaWYoInN0eWxlIj09bi50b0xvd2VyQ2FzZSgpKXtrPQp2b2lkIDA7aWYoIV8uUGEocCkpdGhyb3cgRXJyb3IoIlVgIit0eXBlb2YgcCsiYCIrcCk7aWYoIShwIGluc3RhbmNlb2YgQ3EpKXt2YXIgQT0iIjtmb3IoayBpbiBwKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QoaykpdGhyb3cgRXJyb3IoIlBgIitrKTt2YXIgRD1wW2tdO251bGwhPUQmJihEPV8uTWEoRCk/KDAsXy5kYikoRCxHcSkuam9pbigiICIpOkdxKEQpLEErPWsrIjoiK0QrIjsiKX1wPUE/RXEoQSk6SWRhfXA9RHEocCl9ZWxzZXtpZigvXm9uL2kudGVzdChuKSl0aHJvdyBFcnJvcigiU2AiK24rImAiK3ApO2lmKG4udG9Mb3dlckNhc2UoKWluIE1kYSlpZihwIGluc3RhbmNlb2YgcnEpcD1fLnNxKHApO2Vsc2UgaWYocCBpbnN0YW5jZW9mIF8udnEpcD1fLndxKHApO2Vsc2UgaWYoXy5EYShwKSlwPV8uenEocCkuWGYoKTtlbHNlIHRocm93IEVycm9yKCJUYCIrbisiYHNwYW5gIitwKTt9cC5maCYmKHA9cC5YZigpKTtuPW4rJz0iJytfLkpiKFN0cmluZyhwKSkrJyInO2YrPQoiICIrbn19dmFyIEY9IjxzcGFuIitmO2Y9YztudWxsIT1mP18uTWEoZil8fChmPVtmXSk6Zj1bXTshMD09PUFkYS5zcGFuP0YrPSI+IjooZD1fLlBxKGYpLEYrPSI+IitfLkxxKGQpKyI8L3NwYW4+IixkPWQudWooKSk7KGU9ZSYmZS5kaXIpJiYoL14obHRyfHJ0bHxhdXRvKSQvaS50ZXN0KGUpP2Q9MDpkPW51bGwpO0Y9Xy5NcShGLGQpfWVsc2UgRj1jO2M9Xy5McShjKTtjPWEmJigwPk51bWJlcihiKSpOdW1iZXIoMSl8fEZkYS50ZXN0KG5xKGMsITApKSk/Ilx1MjAwZSI6IiI7Rj1PZGEoMCxGLGMpO3JldHVybiBfLkxxKEYpfTsKS2VhPXsiXHgwMCI6IiYjMDsiLCJcdCI6IiYjOTsiLCJcbiI6IiYjMTA7IiwiXHgwQiI6IiYjMTE7IiwiXGYiOiImIzEyOyIsIlxyIjoiJiMxMzsiLCIgIjoiJiMzMjsiLCciJzoiJnF1b3Q7IiwiJiI6IiZhbXA7IiwiJyI6IiYjMzk7IiwiLSI6IiYjNDU7IiwiLyI6IiYjNDc7IiwiPCI6IiZsdDsiLCI9IjoiJiM2MTsiLCI+IjoiJmd0OyIsImAiOiImIzk2OyIsIlx1MDA4NSI6IiYjMTMzOyIsIlx1MDBhMCI6IiYjMTYwOyIsIlx1MjAyOCI6IiYjODIzMjsiLCJcdTIwMjkiOiImIzgyMzM7In07Xy5VdT1mdW5jdGlvbihhKXtyZXR1cm4gS2VhW2FdfTsKTGVhPXsiXHgwMCI6IiUwMCIsIlx1MDAwMSI6IiUwMSIsIlx1MDAwMiI6IiUwMiIsIlx1MDAwMyI6IiUwMyIsIlx1MDAwNCI6IiUwNCIsIlx1MDAwNSI6IiUwNSIsIlx1MDAwNiI6IiUwNiIsIlx1MDAwNyI6IiUwNyIsIlxiIjoiJTA4IiwiXHQiOiIlMDkiLCJcbiI6IiUwQSIsIlx4MEIiOiIlMEIiLCJcZiI6IiUwQyIsIlxyIjoiJTBEIiwiXHUwMDBlIjoiJTBFIiwiXHUwMDBmIjoiJTBGIiwiXHUwMDEwIjoiJTEwIiwiXHUwMDExIjoiJTExIiwiXHUwMDEyIjoiJTEyIiwiXHUwMDEzIjoiJTEzIiwiXHUwMDE0IjoiJTE0IiwiXHUwMDE1IjoiJTE1IiwiXHUwMDE2IjoiJTE2IiwiXHUwMDE3IjoiJTE3IiwiXHUwMDE4IjoiJTE4IiwiXHUwMDE5IjoiJTE5IiwiXHUwMDFhIjoiJTFBIiwiXHUwMDFiIjoiJTFCIiwiXHUwMDFjIjoiJTFDIiwiXHUwMDFkIjoiJTFEIiwiXHUwMDFlIjoiJTFFIiwiXHUwMDFmIjoiJTFGIiwiICI6IiUyMCIsJyInOiIlMjIiLCInIjoiJTI3IiwiKCI6IiUyOCIsCiIpIjoiJTI5IiwiPCI6IiUzQyIsIj4iOiIlM0UiLCJcXCI6IiU1QyIsInsiOiIlN0IiLCJ9IjoiJTdEIiwiXHUwMDdmIjoiJTdGIiwiXHUwMDg1IjoiJUMyJTg1IiwiXHUwMGEwIjoiJUMyJUEwIiwiXHUyMDI4IjoiJUUyJTgwJUE4IiwiXHUyMDI5IjoiJUUyJTgwJUE5IiwiXHVmZjAxIjoiJUVGJUJDJTgxIiwiXHVmZjAzIjoiJUVGJUJDJTgzIiwiXHVmZjA0IjoiJUVGJUJDJTg0IiwiXHVmZjA2IjoiJUVGJUJDJTg2IiwiXHVmZjA3IjoiJUVGJUJDJTg3IiwiXHVmZjA4IjoiJUVGJUJDJTg4IiwiXHVmZjA5IjoiJUVGJUJDJTg5IiwiXHVmZjBhIjoiJUVGJUJDJThBIiwiXHVmZjBiIjoiJUVGJUJDJThCIiwiXHVmZjBjIjoiJUVGJUJDJThDIiwiXHVmZjBmIjoiJUVGJUJDJThGIiwiXHVmZjFhIjoiJUVGJUJDJTlBIiwiXHVmZjFiIjoiJUVGJUJDJTlCIiwiXHVmZjFkIjoiJUVGJUJDJTlEIiwiXHVmZjFmIjoiJUVGJUJDJTlGIiwiXHVmZjIwIjoiJUVGJUJDJUEwIiwiXHVmZjNiIjoiJUVGJUJDJUJCIiwKIlx1ZmYzZCI6IiVFRiVCQyVCRCJ9O091PWZ1bmN0aW9uKGEpe3JldHVybiBMZWFbYV19O01lYT0vW1x4MDBceDIyXHgyN1x4M2NceDNlXS9nO051PS9bXHgwMC0gXHgyMlx4MjctXHgyOVx4M2NceDNlXFxceDdiXHg3ZFx4N2ZceDg1XHhhMFx1MjAyOFx1MjAyOVx1ZmYwMVx1ZmYwM1x1ZmYwNFx1ZmYwNi1cdWZmMGNcdWZmMGZcdWZmMWFcdWZmMWJcdWZmMWRcdWZmMWZcdWZmMjBcdWZmM2JcdWZmM2RdL2c7SmVhPS9eKD8hLSooPzpleHByZXNzaW9ufCg/Om1vei0pP2JpbmRpbmcpKSg/IVxzKykoPzpbLiNdPy0/KD86W19hLXowLTktXSspKD86LVtfYS16MC05LV0rKSotP3woPzpyZ2J8aHNsKWE/XChbMC05LiUsXHUwMDIwXStcKXwtPyg/OlswLTldKyg/OlwuWzAtOV0qKT98XC5bMC05XSspKD86W2Etel17MSwyfXwlKT98IWltcG9ydGFudHxccyspKiQvaTtIZWE9L14oPyFbXiM/XSpcLyg/OlwufCUyRSl7Mn0oPzpbXC8/I118JCkpKD86KD86aHR0cHM/fG1haWx0byk6fFteJjpcLz8jXSooPzpbXC8/I118JCkpL2k7CkllYT0vXlteJjpcLz8jXSooPzpbXC8/I118JCl8Xmh0dHBzPzp8XmRhdGE6aW1hZ2VcL1thLXowLTkrXSs7YmFzZTY0LFthLXowLTkrXC9dKz0qJHxeYmxvYjovaTtGZWE9L14oPyFvbnxzcmN8KD86c3R5bGV8YWN0aW9ufGFyY2hpdmV8YmFja2dyb3VuZHxjaXRlfGNsYXNzaWR8Y29kZWJhc2V8ZGF0YXxkc3luY3xocmVmfGxvbmdkZXNjfHVzZW1hcClccyokKSg/OlthLXowLTlfJDotXSopJC9pO18uR3U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKE1lYSxfLlV1KX07Xy5NdT1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLnJlcGxhY2UoTnUsT3UpfTtfLkh1PS88KD86IXxcLz8oW2EtekEtWl1bYS16QS1aMC05OlwtXSopKSg/OltePiciXXwiW14iXSoifCdbXiddKicpKj4vZztfLkl1PS88L2c7CnZhciB4dj1mdW5jdGlvbihhLGIpe2lmKCFiJiZhLmhhc0F0dHJpYnV0ZSgianNzaGFkb3ciKSlyZXR1cm4gbnVsbDtmb3IoYj0wO2E9VnUoYSk7KXtpZigiQ09OVEVOVCI9PWEudGFnTmFtZS50b1VwcGVyQ2FzZSgpKWIrPTE7ZWxzZSBpZihhLmhhc0F0dHJpYnV0ZSgianNzaGFkb3ciKSYmMDxiKXstLWI7Y29udGludWV9aWYoMD49YilyZXR1cm4gYX1yZXR1cm4gbnVsbH0sVnU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YS5fX293bmVyP2EuX19vd25lcjphLnBhcmVudE5vZGUmJjExPT09YS5wYXJlbnROb2RlLm5vZGVUeXBlP2EucGFyZW50Tm9kZS5ob3N0OnRyKGEpOm51bGx9LHl2PWZ1bmN0aW9uKGEsYixjLGQpe2ZvcihjfHwoYT14dihhLGQpKTthOyl7aWYoYihhKSlyZXR1cm4gYTthPXh2KGEsZCl9cmV0dXJuIG51bGx9LE5lYT1mdW5jdGlvbihhKXt2YXIgYjt5dihhLGZ1bmN0aW9uKGEpe3JldHVybiBhLl9fb3duZXI/KGI9YS5fX293bmVyLCEwKTohMX0sITApO3JldHVybiBifHwgYX0sT2VhPWZ1bmN0aW9uKGEpe2lmKGEuX19vd25lZCl7dmFyIGI9Xy5hcihhKTtqYWEoYS5fX293bmVkLGZ1bmN0aW9uKGEpe3JldHVybiF1cihiLmJvZHksYSl9KTthLnNldEF0dHJpYnV0ZSgiX19JU19PV05FUiIsMDxhLl9fb3duZWQubGVuZ3RoKX19Owp2YXIgQXY9ZnVuY3Rpb24oYSxiKXtpZihhWyJfX3dpemNvbnRleHQ6cmVxdWVzdHMiXSYmYVsiX193aXpjb250ZXh0OnJlcXVlc3RzIl1bYl0pcmV0dXJuIGFbIl9fd2l6Y29udGV4dDpyZXF1ZXN0cyJdW2JdO3ZhciBjPW5ldyBfLnBtLGQ9dm9pZCAwO3l2KGEsZnVuY3Rpb24oYSl7YT1hLl9fd2l6Y29udGV4dDtpZighYSlyZXR1cm4hMTtkPWFbYl07cmV0dXJuIHZvaWQgMCE9PWQ/ITA6ITF9LCEwKTtpZih2b2lkIDAhPT1kKWMuY2FsbGJhY2soZCk7ZWxzZXt6dihhLGIsYyk7dmFyIGU9TmVhKGEpO2UhPWEmJnp2KGUsYixjKX1yZXR1cm4gY30senY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPShkPWEuZ2V0QXR0cmlidXRlKCJqc2NvbnRleHQiKSk/ZC5zcGxpdCgiICIpOltdO2QucHVzaChTdHJpbmcoYikpOzA9PWQubGVuZ3RoP2EucmVtb3ZlQXR0cmlidXRlKCJqc2NvbnRleHQiKTphLnNldEF0dHJpYnV0ZSgianNjb250ZXh0IixkLmpvaW4oIiAiKSk7KGQ9YVsiX193aXpjb250ZXh0OnJlcXVlc3RzIl0pfHwgKGQ9YVsiX193aXpjb250ZXh0OnJlcXVlc3RzIl09e30pO2RbYl09Y307CnZhciBQZWE9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYWN0aW9uPWE7dGhpcy50YXJnZXQ9Ynx8bnVsbDt0aGlzLnBkPWN8fG51bGx9LEJ2PWZ1bmN0aW9uKCl7dGhpcy5hPVtdfSxRZWE9L15cLj8oXHcrKSg/OlwoKFtcd3w9XSspXCkpPyQvLEN2PXt9LFJlYT1mdW5jdGlvbihhKXt2YXIgYj1DdlthXTtpZihiKXJldHVybiBiO2I9YS5zcGxpdCgiLCIpO2Zvcih2YXIgYz1uZXcgQnYsZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT0oMCxfLkdiKShiW2RdKSxmPWUubWF0Y2goUWVhKTtpZighZil0aHJvdyBFcnJvcigicmFgIitlKTt2YXIgaz1lPW51bGw7aWYoZlsyXSlmb3IodmFyIG49ZlsyXS5zcGxpdCgifCIpLHA9MDtwPG4ubGVuZ3RoO3ArKyl7dmFyIEE9bltwXS5zcGxpdCgiPSIpO0FbMV0/KGV8fChlPXt9KSxlW0FbMF1dPUFbMV0pOmt8fChrPUFbMF0pfWMuYS5wdXNoKG5ldyBQZWEoZlsxXSxrLGUpKX1yZXR1cm4gQ3ZbYV09Y307QnYucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9Owp2YXIgRHY9ZnVuY3Rpb24oYSl7dGhpcy5hPWF9O0R2LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9O18uRXY9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEdihhKX07dmFyIEZ2PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5fX3dpejtjfHwoYz1hLl9fd2l6PXt9KTtyZXR1cm4gY1tiXX0sR3Y9ZnVuY3Rpb24oYSxiKXtyZXR1cm4geXYoYSxmdW5jdGlvbihhKXtyZXR1cm4gXy5zcihhKSYmYS5oYXNBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpfSxiLCEwKX0sSHY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yi5hY3Rpb24sZD1udWxsLGU9YSxmPW51bGw7IWYmJmUmJihmPWUuT2dbY10sZT1lLmNvbnN0cnVjdG9yLiQsZSYmZS5PZyk7KTtmJiYoZD1mLmNhbGwoYSkpO2lmKCFkKXRocm93IEVycm9yKCJzYWAiK2IuYWN0aW9uKyJgIithKTtyZXR1cm4gZH07Cl8uSXY9ZnVuY3Rpb24oYSxiLGMpe2I9Yi5xdWVyeVNlbGVjdG9yQWxsKCdbanNuYW1lPSInK2MrJyJdJyk7Yz1bXTtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKylHdihiW2RdLCExKT09YSYmYy5wdXNoKGJbZF0pO3JldHVybiBjfTt2YXIgSnY9ZnVuY3Rpb24oKXt0aGlzLmE9e307dGhpcy5vPW51bGw7dGhpcy5iPVNlYX07Xy5KYShKdik7SnYucHJvdG90eXBlLnljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307SnYucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKGEsYil7dGhpcy5hW2FdPWJ9Owp2YXIgS3Y9ZnVuY3Rpb24oYSl7aWYoYSYmYS5MZSl7dmFyIGI9YS5MZS5hO2lmKCFiKXRocm93IEVycm9yKCJ0YWAiK2EpO3JldHVybiBifXJldHVybiBhfSxOdj1mdW5jdGlvbihhLGIpe3ZhciBjPUt2KGIpO3JldHVybihiPWEuYVtjXSk/Q20oYik6YyBpbnN0YW5jZW9mIHdpPyhiPUx2KGEsW2NdKSxfLndtKGIsZnVuY3Rpb24oKXtpZih0aGlzLmFbY10pcmV0dXJuIHRoaXMuYVtjXTt0aHJvdyBNdihjKTt9LGEpLGIpOkVtKE12KGMpKX0sU2VhPWZ1bmN0aW9uKGEsYil7YT1fLkxzLlNiKCk7cmV0dXJuIGdvKGEsYix2b2lkIDApfSxMdj1mdW5jdGlvbihhLGIpe2I9KDAsXy5kYikoYixLdik7Yj0oMCxfLmNiKShiLGZ1bmN0aW9uKGEpe3JldHVybiF0aGlzLmFbYV19LGEpO2I9KDAsXy5jYikoWG4oYikuWmMsZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiB3aSYmIXRoaXMuYVthXX0sYSk7dmFyIGM9W10sZD17fTsoMCxfLmFiKShiLGZ1bmN0aW9uKGEpe2E9YS5WaztudWxsPT0KYXx8ZFthXXx8KGRbYV09ITAsYy5wdXNoKGEpKX0pO2lmKDA9PWMubGVuZ3RoKXJldHVybiBDbSgpO3RyeXt2YXIgZT1hLmIoYSxjKTtyZXR1cm4gXy5rdShfLmRjKGUpKX1jYXRjaChmKXtyZXR1cm4gRW0oZil9fSxNdj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiRG93bmxvYWRlZCBtb2R1bGUgZm9yIFdpeiBzZXJ2aWNlIDwiK2ErIj4gYnV0IHRoZSBzZXJ2aWNlIHdhcyBub3QgcmVnaXN0ZXJlZCBpbiB0aGF0IG1vZHVsZS4iKX07CnZhciBUZWEsT3YsUHYsUXYsUnYsVWVhO1RlYT1mdW5jdGlvbigpe307T3Y9e307UHY9e307UXY9ZnVuY3Rpb24oYSl7Xy4kYihhLGZ1bmN0aW9uKGEsYyl7T3ZbY109YX0pfTtSdj1mdW5jdGlvbihhKXtfLiRiKGEsZnVuY3Rpb24oYSxjKXtPdltjXT1hO1B2W2NdPSEwfSl9O18uU3Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPV8uYmMoYixmdW5jdGlvbihkLGUpe3JldHVybiBVZWEoYSxiW2VdLGMsT3ZbZV0sZSl9KSxlPV8ua3UoYyk7Xy53bShlLGZ1bmN0aW9uKGEpe3JldHVybiBfLmJjKGQsZnVuY3Rpb24oYil7dmFyIGM9bmV3IFRlYTtfLiRiKGIsZnVuY3Rpb24oYixkKXtjW2RdPWFbYl19KTtyZXR1cm4gY30pfSk7Xy5NbChlLGZ1bmN0aW9uKGEpe3Rocm93IGE7fSk7cmV0dXJuIGV9OwpVZWE9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj17fSxrO1B2W2VdP2s9ZChhLGIpOms9Xy5iYyhiLGZ1bmN0aW9uKGMpe3JldHVybiBkKGEsYyxiKX0pO18uJGIoayxmdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiBfLmVrJiYoYT1fLkRtKGEpKTt2YXIgZD1jLmxlbmd0aDtjLnB1c2goYSk7ZltiXT1kfSk7cmV0dXJuIGZ9O1J2KHtpYTpmdW5jdGlvbihhLGIpe3ZhciBjPV8uZGMoYik7aWYoMD09Yy5sZW5ndGgpcmV0dXJue307YT1hLnljKCk7dHJ5e3ZhciBkPWpvKGEsYyl9Y2F0Y2goZSl7dGhyb3cgZTt9cmV0dXJuIF8uYmMoYixmdW5jdGlvbihhKXtyZXR1cm4gZFthXX0pfSxwcmVsb2FkOmZ1bmN0aW9uKGEsYil7YT1fLmRjKGIpO3ZhciBjPUx2KEp2LlNiKCksYSk7cmV0dXJuIF8uYmMoYixmdW5jdGlvbigpe3JldHVybiBjfSl9fSk7IFF2KHtjb250ZXh0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZ2V0Q29udGV4dChiKX0saWM6ZnVuY3Rpb24oYSxiKXthPWIuY2FsbChhKTtyZXR1cm4gXy5NYShhKT9fLmt1KGEpOmF9fSk7Xy5ofHxfLlN2KG51bGwse0ZWOnt9LGlhOnt9LGNvbnRleHQ6e30sY29udHJvbGxlcjp7fSxjb250cm9sbGVyczp7fSxkYXRhOnt9LGljOnt9LHhlOnt9LFh6Ont9LHhhOnt9LEl2Ont9LGw6e319KS50aGVuKCk7CnZhciBWZWE9e307Xy5Udj1mdW5jdGlvbihhLGIpe3RoaXMuU2w9YS5pYz9hLmljLmtleTphO3RoaXMubz0oYS5pYz9hLmljLmlhOmIpfHxudWxsO3RoaXMuTm09bnVsbH07Xy5tKF8uVHYsXy5Bayk7Xy5Udi5wcm90b3R5cGUudkg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5TbH07Xy5Udi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5TbCsiWyIrXy5SYSh0aGlzKSsiXSJ9O18uVXY9ZnVuY3Rpb24oYSxiKXthLk5tfHwoYS5ObT1DbSgpKTt5bShhLk5tLGIpfTtfLlR2LlRhPWZ1bmN0aW9uKGEpe3JldHVybntpYzp7a2V5OmZ1bmN0aW9uKCl7cmV0dXJuIENtKGEpfSxpYTpmdW5jdGlvbigpe3JldHVybiBDbSh0aGlzLlBlKCkpfX19fTsKdmFyIFd2PWZ1bmN0aW9uKGEsYixjKXtjPVZ2KGIsYyxhKTtfLndtKGMsZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBiKGEpfSk7Xy53bShjLGZ1bmN0aW9uKGEpe3JldHVybiBhLk5tP18ud20oYS5ObS5NZSgpLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KTphfSk7Xy53bShjLGZ1bmN0aW9uKGIpe2lmKGEgaW5zdGFuY2VvZiB3aSl7dmFyIGM9VmVhW2FdO2lmKGMpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXShiKX19KTtyZXR1cm4gY30sVnY9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PV8uQWspcmV0dXJuIENtKHt9KTt2YXIgZD1hLlRhKGMpO2Q9Xy5TdihiLGQpO3ZhciBlPVZ2KChPYmplY3QuZ2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mKGEucHJvdG90eXBlKTphLiQpLmNvbnN0cnVjdG9yLGIsYyk7cmV0dXJuIF8ud20oZCxmdW5jdGlvbihhKXtyZXR1cm4gXy53bShlLGZ1bmN0aW9uKGIpe2Eua2E9YjthLlphPWI7cmV0dXJuIGF9KX0pfTtfLmc9Xy5Udi5wcm90b3R5cGU7Cl8uZy55Yz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99O18uZy5QZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm98fHZvaWQgMH07Xy5nLm9iPWZ1bmN0aW9uKCl7dGhpcy5ZZSgpO3RoaXMua3QoKTtfLlR2LiQub2IuY2FsbCh0aGlzKX07Xy5nLmt0PV8uSGE7Xy5nLlllPV8uSGE7dmFyIFh2PWZ1bmN0aW9uKGEsYil7dGhpcy5rZXk9YTt0aGlzLm89Yn07WHYucHJvdG90eXBlLnljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307WHYucHJvdG90eXBlLlBlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307WHYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuImNvbnRleHQ6IitTdHJpbmcodGhpcy5rZXkpfTsKXy5Zdj1mdW5jdGlvbihhLGIpe2E9SlNPTi5wYXJzZSgiWyIrYS5zdWJzdHJpbmcoNCkpO3JldHVybiBuZXcgYihhKX07dmFyIFp2LFdlYTtadj1mdW5jdGlvbihhKXtpZihhLmNsYXNzTGlzdClyZXR1cm4gYS5jbGFzc0xpc3Q7YT1hLmNsYXNzTmFtZTtyZXR1cm4gXy5EYShhKSYmYS5tYXRjaCgvXFMrL2cpfHxbXX07Xy4kdj1mdW5jdGlvbihhLGIpe3JldHVybiBhLmNsYXNzTGlzdD9hLmNsYXNzTGlzdC5jb250YWlucyhiKTpfLmxiKFp2KGEpLGIpfTtfLmF3PWZ1bmN0aW9uKGEsYil7YS5jbGFzc0xpc3Q/YS5jbGFzc0xpc3QuYWRkKGIpOl8uJHYoYSxiKXx8KGEuY2xhc3NOYW1lKz0wPGEuY2xhc3NOYW1lLmxlbmd0aD8iICIrYjpiKX07Cl8uYnc9ZnVuY3Rpb24oYSxiKXtpZihhLmNsYXNzTGlzdCkoMCxfLmFiKShiLGZ1bmN0aW9uKGIpe18uYXcoYSxiKX0pO2Vsc2V7dmFyIGM9e307KDAsXy5hYikoWnYoYSksZnVuY3Rpb24oYSl7Y1thXT0hMH0pOygwLF8uYWIpKGIsZnVuY3Rpb24oYSl7Y1thXT0hMH0pO2EuY2xhc3NOYW1lPSIiO2Zvcih2YXIgZCBpbiBjKWEuY2xhc3NOYW1lKz0wPGEuY2xhc3NOYW1lLmxlbmd0aD8iICIrZDpkfX07Xy5jdz1mdW5jdGlvbihhLGIpe2EuY2xhc3NMaXN0P2EuY2xhc3NMaXN0LnJlbW92ZShiKTpfLiR2KGEsYikmJihhLmNsYXNzTmFtZT0oMCxfLmNiKShadihhKSxmdW5jdGlvbihhKXtyZXR1cm4gYSE9Yn0pLmpvaW4oIiAiKSl9O1dlYT1mdW5jdGlvbihhLGIpe2EuY2xhc3NMaXN0PygwLF8uYWIpKGIsZnVuY3Rpb24oYil7Xy5jdyhhLGIpfSk6YS5jbGFzc05hbWU9KDAsXy5jYikoWnYoYSksZnVuY3Rpb24oYSl7cmV0dXJuIV8ubGIoYixhKX0pLmpvaW4oIiAiKX07CnZhciBkdztkdz0hXy53YyYmIW5jKCk7Xy5ldz1mdW5jdGlvbihhLGIpe2lmKC8tW2Etel0vLnRlc3QoYikpcmV0dXJuIG51bGw7aWYoZHcmJmEuZGF0YXNldCl7aWYob2MoKSYmIShiIGluIGEuZGF0YXNldCkpcmV0dXJuIG51bGw7YT1hLmRhdGFzZXRbYl07cmV0dXJuIHZvaWQgMD09PWE/bnVsbDphfXJldHVybiBhLmdldEF0dHJpYnV0ZSgiZGF0YS0iK1ZiKGIpKX07Xy5mdz1mdW5jdGlvbihhLGIpe3JldHVybi8tW2Etel0vLnRlc3QoYik/ITE6ZHcmJmEuZGF0YXNldD9iIGluIGEuZGF0YXNldDphLmhhc0F0dHJpYnV0ZT9hLmhhc0F0dHJpYnV0ZSgiZGF0YS0iK1ZiKGIpKTohIWEuZ2V0QXR0cmlidXRlKCJkYXRhLSIrVmIoYikpfTsKXy5ndz1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnRvcD1hO3RoaXMucmlnaHQ9Yjt0aGlzLmJvdHRvbT1jO3RoaXMubGVmdD1kfTtfLmc9Xy5ndy5wcm90b3R5cGU7Xy5nLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJvdHRvbS10aGlzLnRvcH07Xy5nLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLmd3KHRoaXMudG9wLHRoaXMucmlnaHQsdGhpcy5ib3R0b20sdGhpcy5sZWZ0KX07Xy5nLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzJiZhP2EgaW5zdGFuY2VvZiBfLmd3P2EubGVmdD49dGhpcy5sZWZ0JiZhLnJpZ2h0PD10aGlzLnJpZ2h0JiZhLnRvcD49dGhpcy50b3AmJmEuYm90dG9tPD10aGlzLmJvdHRvbTphLng+PXRoaXMubGVmdCYmYS54PD10aGlzLnJpZ2h0JiZhLnk+PXRoaXMudG9wJiZhLnk8PXRoaXMuYm90dG9tOiExfTsKXy5nLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmNlaWwodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5jZWlsKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguY2VpbCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTtfLmcuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmZsb29yKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguZmxvb3IodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5mbG9vcih0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguZmxvb3IodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307Xy5nLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5yb3VuZCh0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLnJvdW5kKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGgucm91bmQodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLnJvdW5kKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9Owp2YXIgaHc9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5sZWZ0PWE7dGhpcy50b3A9Yjt0aGlzLndpZHRoPWM7dGhpcy5oZWlnaHQ9ZH07Xy5nPWh3LnByb3RvdHlwZTtfLmcuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGh3KHRoaXMubGVmdCx0aGlzLnRvcCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX07Xy5nLkl6PWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgubWF4KHRoaXMubGVmdCxhLmxlZnQpLGM9TWF0aC5taW4odGhpcy5sZWZ0K3RoaXMud2lkdGgsYS5sZWZ0K2Eud2lkdGgpO2lmKGI8PWMpe3ZhciBkPU1hdGgubWF4KHRoaXMudG9wLGEudG9wKTthPU1hdGgubWluKHRoaXMudG9wK3RoaXMuaGVpZ2h0LGEudG9wK2EuaGVpZ2h0KTtkPD1hJiYodGhpcy5sZWZ0PWIsdGhpcy50b3A9ZCx0aGlzLndpZHRoPWMtYix0aGlzLmhlaWdodD1hLWQpfX07Cl8uZy5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uVXE/YS54Pj10aGlzLmxlZnQmJmEueDw9dGhpcy5sZWZ0K3RoaXMud2lkdGgmJmEueT49dGhpcy50b3AmJmEueTw9dGhpcy50b3ArdGhpcy5oZWlnaHQ6dGhpcy5sZWZ0PD1hLmxlZnQmJnRoaXMubGVmdCt0aGlzLndpZHRoPj1hLmxlZnQrYS53aWR0aCYmdGhpcy50b3A8PWEudG9wJiZ0aGlzLnRvcCt0aGlzLmhlaWdodD49YS50b3ArYS5oZWlnaHR9O18uZy5jZWlsPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Cl8uZy5mbG9vcj1mdW5jdGlvbigpe3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmZsb29yKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguZmxvb3IodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLmcucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGgucm91bmQodGhpcy50b3ApO3RoaXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307CnZhciBqdyxrdyxpdyxudyxwdyxydyxYZWEsdHcsd3csdXcseHcsb3csWWVhLEF3LEN3LER3LEZ3LEd3LEh3O2p3PWZ1bmN0aW9uKGEsYixjKXtpZihfLkRhKGIpKShiPWl3KGEsYikpJiYoYS5zdHlsZVtiXT1jKTtlbHNlIGZvcih2YXIgZCBpbiBiKXtjPWE7dmFyIGU9YltkXSxmPWl3KGMsZCk7ZiYmKGMuc3R5bGVbZl09ZSl9fTtrdz17fTtpdz1mdW5jdGlvbihhLGIpe3ZhciBjPWt3W2JdO2lmKCFjKXt2YXIgZD1VYihiKTtjPWQ7dm9pZCAwPT09YS5zdHlsZVtkXSYmKGQ9KF8uQmM/IldlYmtpdCI6Xy56Yz8iTW96IjpfLndjPyJtcyI6Xy52Yz8iTyI6bnVsbCkrdmFhKGQpLHZvaWQgMCE9PWEuc3R5bGVbZF0mJihjPWQpKTtrd1tiXT1jfXJldHVybiBjfTsKXy5sdz1mdW5jdGlvbihhLGIpe3ZhciBjPV8uYXIoYSk7cmV0dXJuIGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGE9Yy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpP2FbYl18fGEuZ2V0UHJvcGVydHlWYWx1ZShiKXx8IiI6IiJ9O18ubXc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sdyhhLGIpfHwoYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGVbYl06bnVsbCl8fGEuc3R5bGUmJmEuc3R5bGVbYl19O253PWZ1bmN0aW9uKGEpe3JldHVybiBfLm13KGEsInBvc2l0aW9uIil9O3B3PWZ1bmN0aW9uKGEsYixjKXtpZihiIGluc3RhbmNlb2YgXy5VcSl7dmFyIGQ9Yi54O2I9Yi55fWVsc2UgZD1iLGI9YzthLnN0eWxlLmxlZnQ9b3coZCwhMSk7YS5zdHlsZS50b3A9b3coYiwhMSl9OwpfLnF3PWZ1bmN0aW9uKGEpe2E9YT9fLmFyKGEpOndpbmRvdy5kb2N1bWVudDtyZXR1cm4hXy53Y3x8UGMoOSl8fGhyKF8uYnIoYSkuYSk/YS5kb2N1bWVudEVsZW1lbnQ6YS5ib2R5fTtydz1mdW5jdGlvbihhKXt0cnl7dmFyIGI9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChjKXtyZXR1cm57bGVmdDowLHRvcDowLHJpZ2h0OjAsYm90dG9tOjB9fV8ud2MmJmEub3duZXJEb2N1bWVudC5ib2R5JiYoYT1hLm93bmVyRG9jdW1lbnQsYi5sZWZ0LT1hLmRvY3VtZW50RWxlbWVudC5jbGllbnRMZWZ0K2EuYm9keS5jbGllbnRMZWZ0LGIudG9wLT1hLmRvY3VtZW50RWxlbWVudC5jbGllbnRUb3ArYS5ib2R5LmNsaWVudFRvcCk7cmV0dXJuIGJ9OwpYZWE9ZnVuY3Rpb24oYSl7aWYoXy53YyYmIVBjKDgpKXJldHVybiBhLm9mZnNldFBhcmVudDt2YXIgYj1fLmFyKGEpLGM9Xy5tdyhhLCJwb3NpdGlvbiIpLGQ9ImZpeGVkIj09Y3x8ImFic29sdXRlIj09Yztmb3IoYT1hLnBhcmVudE5vZGU7YSYmYSE9YjthPWEucGFyZW50Tm9kZSlpZigxMT09YS5ub2RlVHlwZSYmYS5ob3N0JiYoYT1hLmhvc3QpLGM9Xy5tdyhhLCJwb3NpdGlvbiIpLGQ9ZCYmInN0YXRpYyI9PWMmJmEhPWIuZG9jdW1lbnRFbGVtZW50JiZhIT1iLmJvZHksIWQmJihhLnNjcm9sbFdpZHRoPmEuY2xpZW50V2lkdGh8fGEuc2Nyb2xsSGVpZ2h0PmEuY2xpZW50SGVpZ2h0fHwiZml4ZWQiPT1jfHwiYWJzb2x1dGUiPT1jfHwicmVsYXRpdmUiPT1jKSlyZXR1cm4gYTtyZXR1cm4gbnVsbH07CnR3PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1uZXcgXy5ndygwLHdpbmRvdy5JbmZpbml0eSx3aW5kb3cuSW5maW5pdHksMCksYz1fLmJyKGEpLGQ9Yy5JYigpLmJvZHksZT1jLkliKCkuZG9jdW1lbnRFbGVtZW50LGY9Xy5qcihjLmEpO2E9WGVhKGEpOylpZighKF8ud2MmJjA9PWEuY2xpZW50V2lkdGh8fF8uQmMmJjA9PWEuY2xpZW50SGVpZ2h0JiZhPT1kKSYmYSE9ZCYmYSE9ZSYmInZpc2libGUiIT1fLm13KGEsIm92ZXJmbG93Iikpe3ZhciBrPV8uc3coYSksbj1uZXcgXy5VcShhLmNsaWVudExlZnQsYS5jbGllbnRUb3ApO2sueCs9bi54O2sueSs9bi55O2IudG9wPU1hdGgubWF4KGIudG9wLGsueSk7Yi5yaWdodD1NYXRoLm1pbihiLnJpZ2h0LGsueCthLmNsaWVudFdpZHRoKTtiLmJvdHRvbT1NYXRoLm1pbihiLmJvdHRvbSxrLnkrYS5jbGllbnRIZWlnaHQpO2IubGVmdD1NYXRoLm1heChiLmxlZnQsay54KX1kPWYuc2Nyb2xsTGVmdDtmPWYuc2Nyb2xsVG9wO2IubGVmdD1NYXRoLm1heChiLmxlZnQsCmQpO2IudG9wPU1hdGgubWF4KGIudG9wLGYpO2M9Xy5pcihjLmdldFdpbmRvdygpKTtiLnJpZ2h0PU1hdGgubWluKGIucmlnaHQsZCtjLndpZHRoKTtiLmJvdHRvbT1NYXRoLm1pbihiLmJvdHRvbSxmK2MuaGVpZ2h0KTtyZXR1cm4gMDw9Yi50b3AmJjA8PWIubGVmdCYmYi5ib3R0b20+Yi50b3AmJmIucmlnaHQ+Yi5sZWZ0P2I6bnVsbH07Xy5zdz1mdW5jdGlvbihhKXt2YXIgYj1fLmFyKGEpLGM9bmV3IF8uVXEoMCwwKSxkPV8ucXcoYik7aWYoYT09ZClyZXR1cm4gYzthPXJ3KGEpO2I9a3IoXy5icihiKS5hKTtjLng9YS5sZWZ0K2IueDtjLnk9YS50b3ArYi55O3JldHVybiBjfTtfLnZ3PWZ1bmN0aW9uKGEsYil7YT11dyhhKTtiPXV3KGIpO3JldHVybiBuZXcgXy5VcShhLngtYi54LGEueS1iLnkpfTt3dz1mdW5jdGlvbihhKXthPXJ3KGEpO3JldHVybiBuZXcgXy5VcShhLmxlZnQsYS50b3ApfTsKdXc9ZnVuY3Rpb24oYSl7aWYoMT09YS5ub2RlVHlwZSlyZXR1cm4gd3coYSk7YT1hLmNoYW5nZWRUb3VjaGVzP2EuY2hhbmdlZFRvdWNoZXNbMF06YTtyZXR1cm4gbmV3IF8uVXEoYS5jbGllbnRYLGEuY2xpZW50WSl9O3h3PWZ1bmN0aW9uKGEsYixjKXtpZihiIGluc3RhbmNlb2YgWXEpYz1iLmhlaWdodCxiPWIud2lkdGg7ZWxzZSBpZih2b2lkIDA9PWMpdGhyb3cgRXJyb3IoInZhIik7YS5zdHlsZS53aWR0aD1vdyhiLCEwKTthLnN0eWxlLmhlaWdodD1vdyhjLCEwKX07b3c9ZnVuY3Rpb24oYSxiKXsibnVtYmVyIj09dHlwZW9mIGEmJihhPShiP01hdGgucm91bmQoYSk6YSkrInB4Iik7cmV0dXJuIGF9OwpfLnl3PWZ1bmN0aW9uKGEpe3ZhciBiPVllYTtpZigibm9uZSIhPV8ubXcoYSwiZGlzcGxheSIpKXJldHVybiBiKGEpO3ZhciBjPWEuc3R5bGUsZD1jLmRpc3BsYXksZT1jLnZpc2liaWxpdHksZj1jLnBvc2l0aW9uO2MudmlzaWJpbGl0eT0iaGlkZGVuIjtjLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Yy5kaXNwbGF5PSJpbmxpbmUiO2E9YihhKTtjLmRpc3BsYXk9ZDtjLnBvc2l0aW9uPWY7Yy52aXNpYmlsaXR5PWU7cmV0dXJuIGF9O1llYT1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRIZWlnaHQsZD1fLkJjJiYhYiYmIWM7cmV0dXJuIF8uQ2EoYikmJiFkfHwhYS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q/bmV3IFlxKGIsYyk6KGE9cncoYSksbmV3IFlxKGEucmlnaHQtYS5sZWZ0LGEuYm90dG9tLWEudG9wKSl9O18uenc9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5zdyhhKTthPV8ueXcoYSk7cmV0dXJuIG5ldyBodyhiLngsYi55LGEud2lkdGgsYS5oZWlnaHQpfTsKQXc9Xy56Yz8iTW96VXNlclNlbGVjdCI6Xy5CY3x8Xy54Yz8iV2Via2l0VXNlclNlbGVjdCI6bnVsbDtfLkJ3PWZ1bmN0aW9uKGEsYil7Yj1iP251bGw6YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpO2lmKEF3KXt2YXIgYz0ibm9uZSI7YS5zdHlsZSYmKGEuc3R5bGVbQXddPWMpO2lmKGIpe2E9MDtmb3IodmFyIGQ7ZD1iW2FdO2ErKylkLnN0eWxlJiYoZC5zdHlsZVtBd109Yyl9fWVsc2UgaWYoXy53Y3x8Xy52YylpZihjPSJvbiIsYS5zZXRBdHRyaWJ1dGUoInVuc2VsZWN0YWJsZSIsYyksYilmb3IoYT0wO2Q9YlthXTthKyspZC5zZXRBdHRyaWJ1dGUoInVuc2VsZWN0YWJsZSIsYyl9OwpDdz1mdW5jdGlvbihhLGIpe2lmKC9eXGQrcHg/JC8udGVzdChiKSlyZXR1cm4oMCx3aW5kb3cucGFyc2VJbnQpKGIsMTApO3ZhciBjPWEuc3R5bGUubGVmdCxkPWEucnVudGltZVN0eWxlLmxlZnQ7YS5ydW50aW1lU3R5bGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0O2Euc3R5bGUubGVmdD1iO2I9YS5zdHlsZS5waXhlbExlZnQ7YS5zdHlsZS5sZWZ0PWM7YS5ydW50aW1lU3R5bGUubGVmdD1kO3JldHVybitifTtEdz1mdW5jdGlvbihhLGIpe3JldHVybihiPWEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlW2JdOm51bGwpP0N3KGEsYik6MH07Cl8uRXc9ZnVuY3Rpb24oYSl7aWYoXy53Yyl7dmFyIGI9RHcoYSwicGFkZGluZ0xlZnQiKSxjPUR3KGEsInBhZGRpbmdSaWdodCIpLGQ9RHcoYSwicGFkZGluZ1RvcCIpO2E9RHcoYSwicGFkZGluZ0JvdHRvbSIpO3JldHVybiBuZXcgXy5ndyhkLGMsYSxiKX1iPV8ubHcoYSwicGFkZGluZ0xlZnQiKTtjPV8ubHcoYSwicGFkZGluZ1JpZ2h0Iik7ZD1fLmx3KGEsInBhZGRpbmdUb3AiKTthPV8ubHcoYSwicGFkZGluZ0JvdHRvbSIpO3JldHVybiBuZXcgXy5ndygoMCx3aW5kb3cucGFyc2VGbG9hdCkoZCksKDAsd2luZG93LnBhcnNlRmxvYXQpKGMpLCgwLHdpbmRvdy5wYXJzZUZsb2F0KShhKSwoMCx3aW5kb3cucGFyc2VGbG9hdCkoYikpfTtGdz17dGhpbjoyLG1lZGl1bTo0LHRoaWNrOjZ9OwpHdz1mdW5jdGlvbihhLGIpe2lmKCJub25lIj09KGEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlW2IrIlN0eWxlIl06bnVsbCkpcmV0dXJuIDA7Yj1hLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZVtiKyJXaWR0aCJdOm51bGw7cmV0dXJuIGIgaW4gRnc/RndbYl06Q3coYSxiKX07Ckh3PWZ1bmN0aW9uKGEpe2lmKF8ud2MmJiFQYyg5KSl7dmFyIGI9R3coYSwiYm9yZGVyTGVmdCIpLGM9R3coYSwiYm9yZGVyUmlnaHQiKSxkPUd3KGEsImJvcmRlclRvcCIpO2E9R3coYSwiYm9yZGVyQm90dG9tIik7cmV0dXJuIG5ldyBfLmd3KGQsYyxhLGIpfWI9Xy5sdyhhLCJib3JkZXJMZWZ0V2lkdGgiKTtjPV8ubHcoYSwiYm9yZGVyUmlnaHRXaWR0aCIpO2Q9Xy5sdyhhLCJib3JkZXJUb3BXaWR0aCIpO2E9Xy5sdyhhLCJib3JkZXJCb3R0b21XaWR0aCIpO3JldHVybiBuZXcgXy5ndygoMCx3aW5kb3cucGFyc2VGbG9hdCkoZCksKDAsd2luZG93LnBhcnNlRmxvYXQpKGMpLCgwLHdpbmRvdy5wYXJzZUZsb2F0KShhKSwoMCx3aW5kb3cucGFyc2VGbG9hdCkoYikpfTsKdmFyIEl3PXt9O3ZhciBoYT1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnR5cGU9YS50eXBlO3RoaXMuZXZlbnQ9YTt0aGlzLmE9Yjt0aGlzLmhjPWM7dGhpcy5kYXRhPWEuZGF0YTt0aGlzLnNvdXJjZT1kfTt2YXIgSncsTXcsWmVhLFF3LEt3O0p3PXt9O18uTHc9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9KDAsXy5HYikoYS5nZXRBdHRyaWJ1dGUoImpzYWN0aW9uIil8fCIiKTtLdyhlLGIpfHwoZSYmIS87JC8udGVzdChlKSYmKGUrPSI7IiksYS5zZXRBdHRyaWJ1dGUoImpzYWN0aW9uIixlKyhiKyI6LkNMSUVOVCIpKSwiX19qc2FjdGlvbiJpbiBhJiZkZWxldGUgYS5fX2pzYWN0aW9uKTtjPSgwLF8ubCkoYyxkfHxudWxsKTsoZD1GdihhLGIpKT9kLnB1c2goYyk6YS5fX3dpeltiXT1bY107cmV0dXJue3FHOmIsQnA6Yyx1OmF9fTtfLk53PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlO3JldHVybiBlPV8uTHcoYSxiLGZ1bmN0aW9uKGEpe013KGUpO3JldHVybiBjLmNhbGwoZCxhKX0sbnVsbCl9O013PWZ1bmN0aW9uKGEpe3ZhciBiPUZ2KGEudSxhLnFHKTtiJiZfLnBiKGIsYS5CcCl9OwpfLk93PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Xy5hcihhKS5fX3dpemRpc3BhdGNoZXI7YT17dHlwZTpiLHRhcmdldDphLGJ1YmJsZXM6dm9pZCAwIT1kP2Q6ITB9O18uQ2EoYykmJihhLmRhdGE9Yyk7ZSYmXy5rYyhhLGUpO2YuSGEoYSl9O18uUHc9ZnVuY3Rpb24oYSxiLGMsZCl7YT1aZWEoYSxiKTsoMCxfLmFiKShhLGZ1bmN0aW9uKGEpe3ZhciBlPXZvaWQgMDtkJiYoZT1lfHx7fSxlLl9fc291cmNlPWQpO18uT3coYSxiLGMsITEsZSl9KX07WmVhPWZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1mdW5jdGlvbihlKXtlLl9fb3duZWQmJigwLF8uYWIpKGUuX19vd25lZCxmdW5jdGlvbihiKXt1cihhLGIpfHxkKGIpfSk7UXcoZSxiKSYmYy5wdXNoKGUpfTsoMCxfLmFiKShlLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc2FjdGlvbio9IicrYisnIl0sW2pzY29udHJvbGxlcl1bX19JU19PV05FUl0nKSxmKTtfLnNyKGUpJiZmKGUpfTtkKGEpO3JldHVybiBjfTsgUXc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLl9fanNhY3Rpb247cmV0dXJuIGM/ISFjW2JdOkt3KGEuZ2V0QXR0cmlidXRlKCJqc2FjdGlvbiIpLGIpfTtLdz1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiExO3ZhciBjPUl3W2FdO2lmKGMpcmV0dXJuISFjW2JdO2M9SndbYl07Y3x8KGM9bmV3IFJlZ0V4cCgiKF5cXHMqIitiKyJcXHMqOnxbXFxzO10iK2IrIlxccyo6KSIpLEp3W2JdPWMpO3JldHVybiBjLnRlc3QoYSl9Owp2YXIgZngsaHgsZHgsangsYmZhLFd3LGNmYSxueCxkZmEsYWZhO18uUnc9ZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIF8uUnc/YT1hLmtjOmFbMF1pbnN0YW5jZW9mIF8uUncmJihhPSgwLF8uZWIpKGEsZnVuY3Rpb24oYSxjKXtyZXR1cm4gXy5xYihhLGMua2MpfSxbXSksXy52YihhKSk7dGhpcy5rYz1fLnJiKGEpfTtfLmc9Xy5Sdy5wcm90b3R5cGU7Xy5nLkZjPWZ1bmN0aW9uKGEsYil7KDAsXy5hYikodGhpcy5rYyxhLGIpO3JldHVybiB0aGlzfTtfLmcuc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmtjLmxlbmd0aH07Xy5nLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5rY1thXX07Xy5nLnU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rY1swXXx8bnVsbH07Xy5nLlNjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2Muc2xpY2UoKX07Xy5nLm1hcD1mdW5jdGlvbihhLGIpe3JldHVybigwLF8uZGIpKHRoaXMua2MsYSxiKX07Cl8uZy5RZj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcz09PWF8fF8ueWIodGhpcy5rYyxhLmtjKX07Xy5nLkdiPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5Tdyh0aGlzLmtjWzA+YT90aGlzLmtjLmxlbmd0aCthOmFdKX07Xy5nLkxkPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PXRoaXMua2MubGVuZ3RoP251bGw6bmV3IF8uU3codGhpcy5rY1swXSl9O18uVHc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTthLkZjKGZ1bmN0aW9uKGEpe2E9YS5xdWVyeVNlbGVjdG9yQWxsKFN0cmluZyhiKSk7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspYy5wdXNoKGFbZF0pfSk7cmV0dXJuIG5ldyBfLlJ3KGMpfTtfLlV3PWZ1bmN0aW9uKGEsYil7dmFyIGM9W107YS5GYyhmdW5jdGlvbihhKXsoYT1hLnF1ZXJ5U2VsZWN0b3IoYikpJiZjLnB1c2goYSl9KTtyZXR1cm4gbmV3IF8uUncoYyl9OwpfLlZ3PWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2EuRmMoZnVuY3Rpb24oYSl7KGE9dHIoYSkpJiYhXy5sYihiLGEpJiZiLnB1c2goYSl9KTtyZXR1cm4gbmV3IF8uUncoYil9O18uUncucHJvdG90eXBlLmNoaWxkcmVuPWZ1bmN0aW9uKCl7dmFyIGE9W107dGhpcy5GYyhmdW5jdGlvbihiKXtiPV8ucnIoYik7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspYS5wdXNoKGJbY10pfSk7cmV0dXJuIG5ldyBfLlJ3KGEpfTtfLlJ3LnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rpb24oYSl7YT0oMCxfLmNiKSh0aGlzLmtjLFd3KGEpKTtyZXR1cm4gbmV3IF8uUncoYSl9O18uWHc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPVd3KGIpLGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiB3aW5kb3cuRWxlbWVudCYmZChhKX07YS5GYyhmdW5jdGlvbihhKXsoYT16cihhLGUsITApKSYmIV8ubGIoYyxhKSYmYy5wdXNoKGEpfSk7cmV0dXJuIG5ldyBfLlJ3KGMpfTsKXy5Sdy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihhKXtyZXR1cm4gJGVhKHRoaXMsYSl9O3ZhciAkZWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkO2I/ZD1XdyhiKTpkPWFmYTthLkZjKGZ1bmN0aW9uKGEpe2lmKF8uQ2EoYS5uZXh0RWxlbWVudFNpYmxpbmcpKWE9YS5uZXh0RWxlbWVudFNpYmxpbmc7ZWxzZSBmb3IoYT1hLm5leHRTaWJsaW5nO2EmJjEhPWEubm9kZVR5cGU7KWE9YS5uZXh0U2libGluZzthJiZkKGEpJiZjLnB1c2goYSl9KTtyZXR1cm4gbmV3IF8uUncoYyl9O18uZz1fLlJ3LnByb3RvdHlwZTtfLmcuZGM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7Yjx0aGlzLmtjLmxlbmd0aDtiKyspaWYoXy4kdih0aGlzLmtjW2JdLGEpKXJldHVybiEwO3JldHVybiExfTtfLmcuamI9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRmMoZnVuY3Rpb24oYil7Xy5hdyhiLGEpfSl9O18uZy5pYj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5GYyhmdW5jdGlvbihiKXtfLmN3KGIsYSl9KX07Cl8uZy5hYj1mdW5jdGlvbihhLGIpe3JldHVybiB2b2lkIDA9PWI/dGhpcy5GYyhmdW5jdGlvbihiKXtfLiR2KGIsYSk/Xy5jdyhiLGEpOl8uYXcoYixhKX0pOmI/dGhpcy5qYihhKTp0aGlzLmliKGEpfTtfLmcuJGI9ZnVuY3Rpb24oKXtpZigwPHRoaXMua2MubGVuZ3RoKXt2YXIgYT10aGlzLmtjWzBdO2lmKCJ0ZXh0Q29udGVudCJpbiBhKXJldHVybigwLF8uR2IpKGEudGV4dENvbnRlbnQpO2lmKCJpbm5lclRleHQiaW4gYSlyZXR1cm4oMCxfLkdiKShhLmlubmVyVGV4dCl9cmV0dXJuIiJ9O18uWXc9ZnVuY3Rpb24oYSxiKXthLkZjKGZ1bmN0aW9uKGEpe18udnIoYSxiKX0pfTtfLlp3PWZ1bmN0aW9uKGEpe2lmKDA8YS5rYy5sZW5ndGgpcmV0dXJuIHJzKGEua2NbMF0pfTsKXy4kdz1mdW5jdGlvbihhLGIpe2EuRmMoZnVuY3Rpb24oYSl7dmFyIGM9YS50eXBlO3N3aXRjaChfLkRhKGMpJiZjLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImNoZWNrYm94IjpjYXNlICJyYWRpbyI6YS5jaGVja2VkPWI7YnJlYWs7Y2FzZSAic2VsZWN0LW9uZSI6YS5zZWxlY3RlZEluZGV4PS0xO2lmKF8uRGEoYikpZm9yKHZhciBlPTA7Yz1hLm9wdGlvbnNbZV07ZSsrKWlmKGMudmFsdWU9PWIpe2Muc2VsZWN0ZWQ9ITA7YnJlYWt9YnJlYWs7Y2FzZSAic2VsZWN0LW11bHRpcGxlIjpjPWI7Xy5EYShjKSYmKGM9W2NdKTtmb3IodmFyIGY9MDtlPWEub3B0aW9uc1tmXTtmKyspaWYoZS5zZWxlY3RlZD0hMSxjKWZvcih2YXIgayxuPTA7az1jW25dO24rKyllLnZhbHVlPT1rJiYoZS5zZWxlY3RlZD0hMCk7YnJlYWs7ZGVmYXVsdDphLnZhbHVlPW51bGwhPWI/YjoiIn19KX07Xy5heD1mdW5jdGlvbihhLGIpe2lmKDA8YS5rYy5sZW5ndGgpcmV0dXJuIGEua2NbMF0uZ2V0QXR0cmlidXRlKGIpfTsKXy5Sdy5wcm90b3R5cGUuUmE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5GYyhmdW5jdGlvbihjKXtjLnNldEF0dHJpYnV0ZShhLGIpfSl9O18uYng9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5GYyhmdW5jdGlvbihhKXthLnJlbW92ZUF0dHJpYnV0ZShiKX0pfTtfLlJ3LnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbihhKXtpZigwPHRoaXMua2MubGVuZ3RoKXt2YXIgYj10aGlzLmtjWzBdLGM9Yi5zdHlsZVtVYihhKV07cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgYz9jOmIuc3R5bGVbaXcoYixhKV18fCIifX07Xy5jeD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGEuRmMoZnVuY3Rpb24oYSl7ancoYSxiLGMpfSl9O18uUncucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oYSl7aWYoMD09PXRoaXMua2MubGVuZ3RoKXJldHVybiBuZXcgZHgoYSxudWxsKTt2YXIgYj1fLmV3KHRoaXMua2NbMF0sYSk7cmV0dXJuIG5ldyBkeChhLGIpfTsKdmFyIGV4PWZ1bmN0aW9uKGEsYixjKXthLkZjKGZ1bmN0aW9uKGEpe2lmKG51bGw9PWMpIS8tW2Etel0vLnRlc3QoYikmJihkdyYmYS5kYXRhc2V0P18uZncoYSxiKSYmZGVsZXRlIGEuZGF0YXNldFtiXTphLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS0iK1ZiKGIpKSk7ZWxzZSBpZihkdyYmYS5kYXRhc2V0KWEuZGF0YXNldFtiXT1jO2Vsc2V7aWYoLy1bYS16XS8udGVzdChiKSl0aHJvdyBFcnJvcigidWEiKTthLnNldEF0dHJpYnV0ZSgiZGF0YS0iK1ZiKGIpLGMpfX0pfTtfLlJ3LnByb3RvdHlwZS5mb2N1cz1mdW5jdGlvbigpe3RyeXt0aGlzLnUoKS5mb2N1cygpfWNhdGNoKGEpe31yZXR1cm4gdGhpc307Cl8uUncucHJvdG90eXBlLmNsaWNrPWZ1bmN0aW9uKCl7dmFyIGE9Xy5hcih0aGlzLnUoKSk7aWYoYS5jcmVhdGVFdmVudCl7dmFyIGI9YS5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTtiLmluaXRNb3VzZUV2ZW50KCJjbGljayIsITAsITAsYS5kZWZhdWx0VmlldywxLDAsMCwwLDAsITEsITEsITEsITEsMCxudWxsKTt0aGlzLnUoKS5kaXNwYXRjaEV2ZW50KGIpfWVsc2UgYj1hLmNyZWF0ZUV2ZW50T2JqZWN0KCksYi5jbGllbnRYPTAsYi5jbGllbnRZPTAsYi5zY3JlZW5YPTAsYi5zY3JlZW5ZPTAsYi5hbHRLZXk9ITEsYi5jdHJsS2V5PSExLGIuc2hpZnRLZXk9ITEsYi5idXR0b249MCx0aGlzLnUoKS5maXJlRXZlbnQoIm9uY2xpY2siLGIpfTsKZng9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSxiLGMpe3ZhciBkPWI7YiYmYi5wYXJlbnROb2RlJiYoZD1iLmNsb25lTm9kZSghMCkpO2EoZCxjKX1pZigxPT1hLmtjLmxlbmd0aCl7dmFyIGU9YS5rY1swXTtjIGluc3RhbmNlb2YgXy5Sdz9jLkZjKGZ1bmN0aW9uKGEpe2IoYSxlKX0pOl8uTWEoYyk/KDAsXy5hYikoYyxmdW5jdGlvbihhKXtiKGEsZSl9KTpiKGMsZSk7cmV0dXJuIGF9cmV0dXJuIGEuRmMoZnVuY3Rpb24oYSl7YyBpbnN0YW5jZW9mIF8uUnc/Yy5GYyhmdW5jdGlvbihjKXtkKGIsYyxhKX0pOl8uTWEoYyk/KDAsXy5hYikoYyxmdW5jdGlvbihjKXtkKGIsYyxhKX0pOmQoYixjLGEpfSl9O18uZ3g9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZngoYSxmdW5jdGlvbihhLGIpe2IuYXBwZW5kQ2hpbGQoYSl9LGIpfTtfLmc9Xy5Sdy5wcm90b3R5cGU7Xy5nLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiBmeCh0aGlzLGZ1bmN0aW9uKGEsYil7Xy5wcihiKX0sbnVsbCl9OwpfLmcuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gZngodGhpcyxmdW5jdGlvbihhLGIpe18ubnIoYil9LG51bGwpfTtfLmcuUWc9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ4KHRoaXMsU2RhLGEpfTtfLmcuQms9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ4KHRoaXMsb3IsYSl9O18uZy50b2dnbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRmMoZnVuY3Rpb24oYil7Yi5zdHlsZS5kaXNwbGF5PWE/IiI6Im5vbmUifSl9O18uZy5zaG93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9nZ2xlKCEwKX07Xy5nLkViPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9nZ2xlKCExKX07Xy5nLkhhPWZ1bmN0aW9uKGEsYixjKXt0aGlzLkZjKGZ1bmN0aW9uKGQpe18uT3coZCxhLGIsYyx2b2lkIDApfSl9O2h4PWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5Sdz9hLnUoKTphfTsKXy5Tdz1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiBfLlJ3JiYoYj1hLmtjLGE9bnVsbCk7Xy5Sdy5jYWxsKHRoaXMsbnVsbCE9YT9bYV06Yil9O18ubShfLlN3LF8uUncpO18uZz1fLlN3LnByb3RvdHlwZTtfLmcuY2hpbGRyZW49ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8uUncoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoXy5ycih0aGlzLmtjWzBdKSkpfTtfLmcuRmM9ZnVuY3Rpb24oYSxiKXthLmNhbGwoYix0aGlzLmtjWzBdLDApO3JldHVybiB0aGlzfTtfLmcuc2l6ZT1mdW5jdGlvbigpe3JldHVybiAxfTtfLmcudT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmtjWzBdfTtfLmcuR2I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307Xy5nLkxkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O18uaXg9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLlN3P2E6bmV3IF8uU3coaHgoYSkpfTtkeD1mdW5jdGlvbihhLGIpe3RoaXMuZj1hO3RoaXMuYj1ifTsKang9ZnVuY3Rpb24oYSl7dGhyb3cgRXJyb3IoIndhYCIrYS5mKTt9O2R4LnByb3RvdHlwZS4kYT1mdW5jdGlvbihhKXtpZihudWxsPT10aGlzLmIpcmV0dXJuIDA9PWFyZ3VtZW50cy5sZW5ndGgmJmp4KHRoaXMpLGE7aWYoXy5EYSh0aGlzLmIpKXJldHVybiB0aGlzLmI7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBzdHJpbmcgZGF0YSA8Iit0aGlzLmYrIj46ICIrdGhpcy5iKyItIit0eXBlb2YgdGhpcy5iKTt9OwpkeC5wcm90b3R5cGUuYT1mdW5jdGlvbihhKXtpZihudWxsPT10aGlzLmIpcmV0dXJuIDA9PWFyZ3VtZW50cy5sZW5ndGgmJmp4KHRoaXMpLGE7aWYoImJvb2xlYW4iPT10eXBlb2YgdGhpcy5iKXJldHVybiB0aGlzLmI7aWYoXy5EYSh0aGlzLmIpKXt2YXIgYj10aGlzLmIudG9Mb3dlckNhc2UoKTtpZigidHJ1ZSI9PT1ifHwiMSI9PT1iKXJldHVybiEwO2lmKCJmYWxzZSI9PT1ifHwiMCI9PT1iKXJldHVybiExfXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYm9vbGVhbiBkYXRhIDwiK3RoaXMuZisiPjogIit0aGlzLmIrIi0iK3R5cGVvZiB0aGlzLmIpO307CmR4LnByb3RvdHlwZS5PYj1mdW5jdGlvbihhKXtpZihudWxsPT10aGlzLmIpcmV0dXJuIDA9PWFyZ3VtZW50cy5sZW5ndGgmJmp4KHRoaXMpLGE7aWYoXy5FYSh0aGlzLmIpKXJldHVybiB0aGlzLmI7aWYoXy5EYSh0aGlzLmIpKXt2YXIgYj1OdW1iZXIodGhpcy5iKTtpZighKDAsd2luZG93LmlzTmFOKShiKSYmIV8uRWIodGhpcy5iKSlyZXR1cm4gYn10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIG51bWVyaWMgZGF0YSA8Iit0aGlzLmYrIj46ICIrdGhpcy5iKyItIit0eXBlb2YgdGhpcy5iKTt9O18ua3g9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEuYn07ZHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGEoKX07Xy5teD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gQ20oXy5seChhLGMsZCkpfTtfLmx4PWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1hLmIpcmV0dXJuIGM7YT1hLiRhKCk7cmV0dXJuIF8uWXYoYSxiKX07CmR4LnByb3RvdHlwZS5vPWZ1bmN0aW9uKGEpe2lmKG51bGw9PXRoaXMuYil7aWYoMD09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBFcnJvcigid2FgIit0aGlzLmYpO3JldHVybiBhfWlmKE5hKHRoaXMuYikpcmV0dXJuKDAsXy5kYikodGhpcy5iLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIG5ldyBkeCh0aGlzLmYrIlsiK2MrIl0iLGEpfSx0aGlzKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGFycmF5IGRhdGEgPCIrdGhpcy5mKyI+OiAiK3RoaXMuYisiLSIrdHlwZW9mIHRoaXMuYik7fTsKZHgucHJvdG90eXBlLmM9ZnVuY3Rpb24oYSl7aWYobnVsbD09dGhpcy5iKXtpZigwPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJ3YWAiK3RoaXMuZik7cmV0dXJuIGF9aWYoIU5hKHRoaXMuYikmJl8uUGEodGhpcy5iKSlyZXR1cm4gXy5iYyh0aGlzLmIsZnVuY3Rpb24oYSxjKXtyZXR1cm4gbmV3IGR4KHRoaXMuZisiLiIrYyxhKX0sdGhpcyk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBvYmplY3QgZGF0YSA8Iit0aGlzLmYrIj46ICIrdGhpcy5iKyItIit0eXBlb2YgdGhpcy5iKTt9O2JmYT0vXlxbKFthLXowLTktXSspKD0iKFteXFwiXSopIik/XSQvO1d3PWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciPT10eXBlb2YgYSl7aWYoIi4iPT1hLnN1YnN0cigwLDEpKXJldHVybiBjZmEoYS5zdWJzdHIoMSkpO2lmKCJbIj09YS5zdWJzdHIoMCwxKSl7dmFyIGI9YmZhLmV4ZWMoYSk7cmV0dXJuIG54KGJbMV0sLTE9PWEuaW5kZXhPZigiPSIpP3ZvaWQgMDpiWzNdKX1yZXR1cm4gZGZhKGEpfXJldHVybiBhfTsKY2ZhPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gYi5nZXRBdHRyaWJ1dGUmJl8uJHYoYixhKX19O254PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBfLkNhKGIpP2MuZ2V0QXR0cmlidXRlJiZjLmdldEF0dHJpYnV0ZShhKT09YjpjLmhhc0F0dHJpYnV0ZSYmYy5oYXNBdHRyaWJ1dGUoYSl9fTtkZmE9ZnVuY3Rpb24oYSl7YT1hLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybihiPWIudGFnTmFtZSkmJmIudG9VcHBlckNhc2UoKT09YX19O2FmYT1mdW5jdGlvbigpe3JldHVybiEwfTtfLm94PWZ1bmN0aW9uKGEpe3ZhciBiPWEgaW5zdGFuY2VvZiBfLlJ3P2EudSgpOmE7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhIT1ifX07IF8ucHg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMj09YXJndW1lbnRzLmxlbmd0aD9mdW5jdGlvbihjKXtyZXR1cm4gXy5ldyhjLGEpPT1ifTpmdW5jdGlvbihiKXtyZXR1cm4gXy5mdyhiLGEpfX07CnZhciBxeCxWLHR4LHN4LHV4O3F4PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IHdpKGEsYixjKX07Vj1mdW5jdGlvbihhLGIsYyl7Yj1xeChhLGIsYyk7cmV0dXJuIF8ucnhbYV09Yn07dHg9ZnVuY3Rpb24oYSxiKXtzeChiKS5wdXNoKGEpfTtzeD1mdW5jdGlvbihhKXthPWEudG9TdHJpbmcoKTtyZXR1cm4gdXhbYV09dXhbYV18fFtdfTt1eD17fTtfLnJ4PXt9O3ZhciBlZmEsZmZhO18udng9ZnVuY3Rpb24oYSxiLGMpe2EuTGU9bmV3IGVmYShiLGMpO0p2LlNiKCkucmVnaXN0ZXIoYixhKX07ZWZhPWZ1bmN0aW9uKGEsYil7dGhpcy5mPWE7dGhpcy5hPWJ8fG51bGw7dGhpcy5iPXN4KGEpfTtmZmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtpZihiIGluc3RhbmNlb2Ygd2kpYy5wdXNoKGIpO2Vsc2V7dmFyIGQ9Yjsib2JqZWN0Ij09dHlwZW9mIGImJihkPWIuY29uc3RydWN0b3IpO2RvIGMucHVzaChkLmRpc3BsYXlOYW1lKSxkPWQuJD9kLiQuY29uc3RydWN0b3I6bnVsbDt3aGlsZShkJiZkLmRpc3BsYXlOYW1lKX1mb3IoYj0wO2I8YS5iLmxlbmd0aDtiKyspZm9yKGQ9MDtkPGMubGVuZ3RoO2QrKylpZihhLmJbYl09PWNbZF0pcmV0dXJuITA7cmV0dXJuITF9O18ud3g9ZnVuY3Rpb24oYSxiKXtfLnBiKGEuZi5hLGEuYSk7YS5mLmEucHVzaChiKTthLmE9Yn07CnZhciBnZmE9Xy5FdigiVWpRTWFjIik7dmFyIGlmYSxqZmEsa2ZhLHp4LEF4LGxmYSxFeCxGeDtfLmhmYT1fLkV2KCJ0aTZoR2MiKTtfLnh4PV8uRXYoIlpZSWZGZCIpO2lmYT1fLkV2KCJlUXNRQiIpO18ueXg9Xy5FdigiTzFodENiIik7amZhPV8uRXYoImc2Y0pIZCIpO2tmYT1fLkV2KCJvdGIyOWUiKTt6eD1fLkV2KCJBSG11d2UiKTtBeD1fLkV2KCJPMjJwM2UiKTtfLkJ4PV8uRXYoIkpJYnVRYyIpO2xmYT1fLkV2KCJpaDRYRWIiKTtfLkN4PV8uRXYoInNQdmo4ZSIpO18uRHg9Xy5FdigiR3ZuZUhiIik7RXg9Xy5FdigicmN1UTZiIik7Rng9Xy5FdigiZHlSY3BiIik7CnZhciBHeD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldEF0dHJpYnV0ZShhKTt3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtfLk93KHRoaXMsRngse25hbWU6YSxScTpudWxsLHZNOmJ9LCExLHZvaWQgMCl9LEh4PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0QXR0cmlidXRlKGEpO3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBjPXRoaXMuZ2V0QXR0cmlidXRlKGEpO18uT3codGhpcyxGeCx7bmFtZTphLFJxOmMsdk06Yn0sITEsdm9pZCAwKX0sSXg9ZnVuY3Rpb24oYSxiKXt0aGlzLndhPWE7dGhpcy5vPWJ8fG51bGw7dGhpcy5mPSExO3RoaXMuYT17fTt0aGlzLkxhPXt9O3RoaXMuYz1udWxsO3RoaXMudz10aGlzLmI9ITE7dGhpcy5nPW51bGw7YS5fX3dpem1hbmFnZXI9dGhpczt0aGlzLmhhPSgwLF8ubCkoZnVuY3Rpb24oKXt0aGlzLmI9ITE7dGhpcy53JiYKdGhpcy5CYSgwKX0sdGhpcyk7dGhpcy5pPW5ldyBfLkNyKHRoaXMpO3RoaXMuaS5saXN0ZW4oXy5scihhKSwidW5sb2FkIix0aGlzLmphKTt0aGlzLmkubGlzdGVuKF8ubHIoYSksInNjcm9sbCIsdGhpcy5jYil9O18ubShJeCxfLkFrKTtfLkt4PWZ1bmN0aW9uKGEpe18uSngoYSkubWooKX07Xy5KeD1mdW5jdGlvbihhKXtyZXR1cm4gXy5hcihhKS5fX3dpem1hbmFnZXJ9O0l4LnByb3RvdHlwZS5taj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZj8hMTp0aGlzLmY9ITA7YSYmWGooKDAsXy5sKSh0aGlzLkJhLHRoaXMsMCkpfTtJeC5wcm90b3R5cGUuSWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53YX07SXgucHJvdG90eXBlLmNiPWZ1bmN0aW9uKCl7dGhpcy5oYSYmKHRoaXMuYnx8KHRoaXMuYj0hMCksdGhpcy5nJiZ3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuZyksdGhpcy5nPXdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuaGEsMjAwKSl9OwpJeC5wcm90b3R5cGUuZWE9ZnVuY3Rpb24oYSl7aWYoIUVrKHRoaXMubykpe3ZhciBiPVtdO18uJGIoYSxmdW5jdGlvbihhLGQpe3RoaXMuTGFbZF18fCh0aGlzLkxhW2RdPSEwLChkPWEuZ2V0QXR0cmlidXRlKCJqc2NvbnRyb2xsZXIiKSkmJiFhLmdldEF0dHJpYnV0ZSgianNsYXp5IikmJihhPV8ucnhbZF0pJiZiLnB1c2goYSkpfSx0aGlzKTswPGIubGVuZ3RoJiZMdihKdi5TYigpLGIpfX07dmFyIEx4PWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5SYShiKTthLmFbY118fChhLmFbY109YixRdyhiLEZ4KSYmKGIuc2V0QXR0cmlidXRlPUh4LGIucmVtb3ZlQXR0cmlidXRlPUd4KSxRdyhiLEV4KSYmXy5PdyhiLEV4LHZvaWQgMCwhMSx2b2lkIDApKX07Ckl4LnByb3RvdHlwZS5CYT1mdW5jdGlvbigpe2lmKHRoaXMuYil0aGlzLnc9ITA7ZWxzZXt0aGlzLmY9dGhpcy53PSExO2Zvcih2YXIgYT10aGlzLndhLnF1ZXJ5U2VsZWN0b3JBbGwoIltqc2NvbnRyb2xsZXJdLFtqc21vZGVsXSxbanNvd25lcl0iKSxiPXt9LGM9e30sZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdLGY9Xy5SYShlKTt0aGlzLmFbZl0/KGNbZl09ZSx0aGlzLmFbZl09ZSk6YltmXT1lfV8uJGIodGhpcy5hLGZ1bmN0aW9uKGEsZCl7YltkXXx8Y1tkXXx8KE14KGEpLE54KGEpLE94KGEpLGRlbGV0ZSB0aGlzLmFbZF0pfSx0aGlzKTt2YXIgaz17fTtfLiRiKGIsZnVuY3Rpb24oYSxiKXt0aGlzLmFbYl09YTtRdyhhLEZ4KSYmKGEuc2V0QXR0cmlidXRlPUh4LGEucmVtb3ZlQXR0cmlidXRlPUd4KTtRdyhhLEV4KSYmKGtbYl09YSl9LHRoaXMpO3RoaXMuZWEoayk7Xy4kYihrLGZ1bmN0aW9uKGEpe3RyeXtfLk93KGEsRXgsdm9pZCAwLCExLHZvaWQgMCl9Y2F0Y2gocCl7d2luZG93LnNldFRpbWVvdXQoTWJhKHApLAowKX19KTt0aGlzLmMmJndpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5jKTt0aGlzLmM9d2luZG93LnNldFRpbWVvdXQoKDAsXy5sKSh0aGlzLmVhLHRoaXMsdGhpcy5hKSwwKX19O0l4LnByb3RvdHlwZS5qYT1mdW5jdGlvbigpe3RoaXMuaS5kaXNwb3NlKCk7Xy4kYih0aGlzLmEsZnVuY3Rpb24oYSxiKXtNeChhKTtOeChhKTtPeChhKTtkZWxldGUgdGhpcy5hW2JdfSx0aGlzKX07CnZhciBNeD1mdW5jdGlvbihhKXtQeChhLl9fanNjb250cm9sbGVyKTthLl9fanNjb250cm9sbGVyPXZvaWQgMH0sTng9ZnVuY3Rpb24oYSl7dmFyIGI9YS5fX2pzbW9kZWw7aWYoYil7Zm9yKHZhciBjIGluIGIpUHgoYltjXSk7YS5fX2pzbW9kZWw9dm9pZCAwfX0sT3g9ZnVuY3Rpb24oYSl7dmFyIGI9YS5fX293bmVyO2ImJmIuX19vd25lZCYmXy5wYihiLl9fb3duZWQsYSl9LFB4PWZ1bmN0aW9uKGEpe2lmKGEpaWYoYS5iKXt2YXIgYj1udWxsO3RyeXtfLndtKGEsZnVuY3Rpb24oYSl7Yj1hfSl9Y2F0Y2goYyl7fWImJmIuZGlzcG9zZSgpfWVsc2UgYS5jYW5jZWwoKX07SXgucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7dGhpcy5qYSgpO0l4LiQub2IuY2FsbCh0aGlzKX07CnZhciBReDtfLlJ4PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEsZj0iZnVuY3Rpb24iPT10eXBlb2YgYixrPWY/Yi5MZTpudWxsLG49IiIrYjtkb3t2YXIgcD1lLmdldEF0dHJpYnV0ZSgianNtb2RlbCIpO2lmKHApZm9yKHZhciBBPSgwLF8uR2IpKHApLnNwbGl0KG1mYSksRD1BLmxlbmd0aC0xOzA8PUQ7RC0tKXtwPUFbRF07dmFyIEY9YjtpZihmfHxwPT1uKXtpZihmJiYoRj1fLnJ4W3BdLCFmZmEoayxGKSkpY29udGludWU7aWYoRiE9ZHx8ZSE9YSl7aWYoZS5fX2pzbW9kZWwmJmUuX19qc21vZGVsW3BdKXJldHVybiBlLl9fanNtb2RlbFtwXTthPU52KEp2LlNiKCksRik7ZS5fX2pzbW9kZWx8fChlLl9fanNtb2RlbD17fSk7Yj1lLl9fanNtb2RlbFtwXT1fLndtKG5ldyBfLnBtLF8uTWooYSkpO18ud20oYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5jcmVhdGUoRixlLGMpfSk7Yi5jYWxsYmFjaygpO0x4KF8uSngoZSksZSk7cmV0dXJuIGJ9fX19d2hpbGUoZT14dihlKSk7cmV0dXJuIEVtKG5ldyBReChiKSl9OyBReD1mdW5jdGlvbihhKXtfLlhhLmNhbGwodGhpcywiTm8gdmFsaWQgbW9kZWwgZm9yICIrYSsiIik7dGhpcy5rZXk9YX07Xy5tKFF4LF8uWGEpO3ZhciBtZmE9L1xzKy87CnZhciBTeD1mdW5jdGlvbihhLGIsYyl7Xy5Udi5jYWxsKHRoaXMsYS5rYXx8e2ljOntrZXk6YSxpYTpjfX0pO3RoaXMuUWE9Ynx8YS5pYy5lbGVtZW50O3RoaXMudz10aGlzLmk9bnVsbH07Xy5tKFN4LF8uVHYpO1N4LlRhPWZ1bmN0aW9uKCl7cmV0dXJue2ljOntlbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIENtKHRoaXMubG4oKSl9fX19O18uZz1TeC5wcm90b3R5cGU7Xy5nLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuU2wrIlsiK18uUmEodGhpcy5RYSkrIl0ifTtfLmcuZ2V0Q29udGV4dD1mdW5jdGlvbihhKXtyZXR1cm4gQXYodGhpcy5RYSxhKX07Xy5nLmdldERhdGE9ZnVuY3Rpb24oYSl7dGhpcy5pfHwodGhpcy5pPW5ldyBfLlN3KHRoaXMuUWEpKTtyZXR1cm4gdGhpcy5pLmdldERhdGEoYSl9O18uZy5nZXRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlFhLmlkfHxTdHJpbmcoXy5SYSh0aGlzLlFhKSl9OwpfLmcuS2c9ZnVuY3Rpb24oYSxiKXtfLlB3KHRoaXMuUWEsYSxiLHRoaXMpfTtfLmcubG49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5RYX07Xy5nLnhqPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7cmV0dXJuIF8uTWwoXy5SeCh0aGlzLlFhLGEsdGhpcy5QZSgpLHRoaXMuU2wpLGZ1bmN0aW9uKGEpe2EgaW5zdGFuY2VvZiBReCYmKGEubWVzc2FnZSs9IiByZXF1ZXN0ZWQgYnkgIitiKTtyZXR1cm4gYX0pfTtfLmcuWnY9ZnVuY3Rpb24oYSxiKXt0aGlzLnd8fCh0aGlzLnc9e30pO3RoaXMud1thXT1ifTtfLmcubGlzdGVuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5Mdyh0aGlzLlFhLGEsYixjKX07Xy5nLk9sPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5Odyh0aGlzLlFhLGEsYixjKX07IFF2KHt4YTpmdW5jdGlvbihhLGIpe3ZhciBjO18uT2EoYik/YiYmYi5MZT9jPWI6Yz1iLmRpc3BsYXlOYW1lOmM9YjtyZXR1cm4gYS54aihjKX0seGU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQ20oXy5seChhLmdldERhdGEoYi5uYW1lKSxiLlFiLG51bGwpKX19KTsKdmFyIFR4PWZ1bmN0aW9uKGEpe18uQ2wuY2FsbCh0aGlzKTt0aGlzLmE9YXx8d2luZG93O3RoaXMuZj1fLnFsKHRoaXMuYSwicmVzaXplIix0aGlzLm8sITEsdGhpcyk7dGhpcy5iPV8uaXIodGhpcy5hKX07Xy5tKFR4LF8uQ2wpO3ZhciBuZmE9ZnVuY3Rpb24oYSl7YT1hfHx3aW5kb3c7dmFyIGI9Xy5SYShhKTtyZXR1cm4gVXhbYl09VXhbYl18fG5ldyBUeChhKX0sVXg9e307VHgucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7VHguJC5vYi5jYWxsKHRoaXMpO3RoaXMuZiYmKF8ueGwodGhpcy5mKSx0aGlzLmY9bnVsbCk7dGhpcy5iPXRoaXMuYT1udWxsfTtUeC5wcm90b3R5cGUubz1mdW5jdGlvbigpe3ZhciBhPV8uaXIodGhpcy5hKTtacShhLHRoaXMuYil8fCh0aGlzLmI9YSx0aGlzLmRpc3BhdGNoRXZlbnQoInJlc2l6ZSIpKX07CnZhciBWeD1mdW5jdGlvbihhKXtfLkNsLmNhbGwodGhpcyk7dGhpcy5hPWE/YS5nZXRXaW5kb3coKTp3aW5kb3c7dGhpcy5vPTEuNTw9dGhpcy5hLmRldmljZVBpeGVsUmF0aW8/MjoxO3RoaXMuZj0oMCxfLmwpKHRoaXMuYyx0aGlzKTt0aGlzLmI9dGhpcy5hLm1hdGNoTWVkaWE/dGhpcy5hLm1hdGNoTWVkaWEoIihtaW4tcmVzb2x1dGlvbjogMS41ZHBweCksICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSkiKTpudWxsfTtfLm0oVngsXy5DbCk7VngucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5iJiZ0aGlzLmIuYWRkTGlzdGVuZXIodGhpcy5mKX07VngucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXt2YXIgYT0xLjU8PXRoaXMuYS5kZXZpY2VQaXhlbFJhdGlvPzI6MTt0aGlzLm8hPWEmJih0aGlzLm89YSx0aGlzLmRpc3BhdGNoRXZlbnQoIkUiKSl9OyBWeC5wcm90b3R5cGUub2I9ZnVuY3Rpb24oKXt0aGlzLmImJnRoaXMuYi5yZW1vdmVMaXN0ZW5lcih0aGlzLmYpO1Z4LiQub2IuY2FsbCh0aGlzKX07CnZhciBXeD1mdW5jdGlvbihhLGIpe18uQWsuY2FsbCh0aGlzKTt0aGlzLm89YTtpZihiKXtpZih0aGlzLmYpdGhyb3cgRXJyb3IoInhhIik7dGhpcy5mPWI7dGhpcy5iPV8uYnIoYik7dGhpcy5hPW5ldyBUeChfLmxyKGIpKTt0aGlzLmEuZz10aGlzLm8udzt0aGlzLmM9bmV3IFZ4KHRoaXMuYik7dGhpcy5jLnN0YXJ0KCl9fTtfLm0oV3gsXy5Bayk7Xy5YeD1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXQoXy5CaSl9O1d4LnByb3RvdHlwZS5mbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZ9O1d4LnByb3RvdHlwZS5jYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ9O1d4LnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe3RoaXMuYj10aGlzLmY9bnVsbDt0aGlzLmEmJih0aGlzLmEuZGlzcG9zZSgpLHRoaXMuYT1udWxsKTtDayh0aGlzLmMpO3RoaXMuYz1udWxsfTsKXy5ZeD1mdW5jdGlvbihhLGIsYyl7Xy5Udi5jYWxsKHRoaXMsYS5rYXx8e2ljOntrZXk6YSxpYTpjfX0pO3RoaXMuZGE9dGhpcy56Yj1udWxsO3RoaXMuUGUoKSYmKGM9am8odGhpcy55YygpLFtfLnosXy5CaV0pLGM9Xy5uayhbY1tfLnpdLGNbXy5CaV1dKS50aGVuKGZ1bmN0aW9uKGEpe3RoaXMuZGE9YVswXTt0aGlzLnpiPWFbMV19LG51bGwsdGhpcyksXy5Vdih0aGlzLGMpKTt0aGlzLmY9Ynx8YS5pYy54Rn07Xy5tKF8uWXgsXy5Udik7Xy5ZeC5UYT1mdW5jdGlvbigpe3JldHVybntpYzp7eEY6ZnVuY3Rpb24oKXtyZXR1cm4gQ20odGhpcyl9fX19O18uWXgucHJvdG90eXBlLmdldENvbnRleHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZi5nZXRDb250ZXh0KGEpfTtfLll4LnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmYuZ2V0RGF0YShhKX07Xy5ZeC5wcm90b3R5cGUubWo9ZnVuY3Rpb24oKXtfLkt4KHRoaXMuemIuZm4oKSl9Owp2YXIgWng9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5mPWF8fHt9O3RoaXMuYT1ifHxudWxsO3RoaXMuYj1jfHxudWxsO3RoaXMubz1kfHxiJiZiLlBlKCl9O1p4LnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKGEpe3ZhciBiPSR4KHRoaXMsYSk7cmV0dXJuIG51bGw9PWImJnRoaXMuYT90aGlzLmEuZ2V0Q29udGV4dChhKTpDbShiKX07WngucHJvdG90eXBlLnljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307WngucHJvdG90eXBlLlBlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3x8dm9pZCAwfTtaeC5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj0keCh0aGlzLGEpO3JldHVybiBudWxsPT1iJiZ0aGlzLmE/dGhpcy5hLmdldERhdGEoYSk6bmV3IGR4KGEsYil9O3ZhciAkeD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZltiXTtyZXR1cm4gbnVsbD09YyYmYS5iP2EuYihiKTpjfTsKXy5heT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YTtfLk9hKGEpJiYoZD1hLmRpc3BsYXlOYW1lKTthPU52KEp2LlNiKCksZCk7Xy53bShhLGZ1bmN0aW9uKGEpe3JldHVybiBXdihkLGEsYnx8bmV3IFp4KHZvaWQgMCx2b2lkIDAsdm9pZCAwLGN8fHZvaWQgMCkpfSk7cmV0dXJuIGF9O3ZhciBjeTtfLmJ5PWZ1bmN0aW9uKGEsYixjKXtjLmRpc3BsYXlOYW1lPWE7SnYuU2IoKS5yZWdpc3RlcihhLGMpO2MuVGE9Yy5UYXx8Xy5NaihifHx7fSl9O2N5PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5heShhLGIsYyl9O3ZhciBkeTtkeT17fTtfLmV5PWZ1bmN0aW9uKGEsYil7dmFyIGM9S3YoYSk7YT1keVtjXTthfHwoYT1OdihKdi5TYigpLGMpLGR5W2NdPWEpO3ZhciBkPW5ldyBfLnBtLGU9ZnVuY3Rpb24oYSl7Xy52bShhLlZ5KGMsYnx8dm9pZCAwKSxmdW5jdGlvbihhKXtkLmNhbGxiYWNrKGEpfSxmdW5jdGlvbihhKXtkLmEoYSl9KX07Xy53bShhLGZ1bmN0aW9uKGEpe3ZhciBjPUt2KGEpO2lmKGMhPWEpYT1fLmV5KGMsYiksXy52bShhLGQuY2FsbGJhY2ssZC5hLGQpO2Vsc2UgcmV0dXJuIGUoYSl9KTtfLk1sKGEsZnVuY3Rpb24oYSl7ZC5hKGEpfSk7cmV0dXJuIGR9Owp2YXIgb2ZhLGZ5LGd5O18uaHk9ZnVuY3Rpb24oYSxiLGMpe2MuZGlzcGxheU5hbWU9YTtKdi5TYigpLnJlZ2lzdGVyKGEsYyk7Yy5UYT1jLlRhfHxfLk1qKGJ8fHt9KTtjLlEzPW9mYTtjLlZ5PWZ1bmN0aW9uKGEsYil7YT1LdihhKTt2YXIgZD1meVthXTtpZihkKXJldHVybiBkO2Q9ZnlbYV09bmV3IF8ucG07Xy52bShneS5jYWxsKGMsYSxiKSxkLmNhbGxiYWNrLGQuYSxkKTtyZXR1cm4gZH19O29mYT1mdW5jdGlvbigpe3RoaXMuVnk9Z3k7cmV0dXJuIHRoaXN9O2Z5PXt9O2d5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFd2KGEsdGhpcyxuZXcgWHYoYSxiLHRoaXMpKX07UnYoe2w6ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLmRjKGIpO0x2KEp2LlNiKCksYyk7cmV0dXJuIF8uYmMoYixmdW5jdGlvbihiKXtiPUt2KGIpO3JldHVybiBfLmV5KGIsYS5QZSgpKX0pfX0pOwp2YXIgaXk7Xy5qeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5rYXx8e2ljOntrZXk6YSxpYTpjJiZjLnljKCl9fTtfLlR2LmNhbGwodGhpcyxkKTt0aGlzLlFhPWJ8fGEuaWMuZWxlbWVudC51KCk7dGhpcy51ZT1jfHxhLmljLmRHO3RoaXMuSmI9bmV3IGl5O3RoaXMuS3c9bnVsbH07Xy5tKF8uanksXy5Udik7Xy5qeS5UYT1mdW5jdGlvbigpe3JldHVybntpYzp7ZEc6ZnVuY3Rpb24oKXtyZXR1cm4gQ20odGhpcy51ZSl9LGVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gQ20odGhpcy5hYSgpKX19fX07Xy5nPV8uankucHJvdG90eXBlO18uZy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlNsKyJbIitfLlJhKHRoaXMuUWEpKyJdIn07Xy5nLnljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWUueWMoKX07Xy5nLlBlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWUuUGUoKX07Xy5nLmZuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uYXIodGhpcy5RYSl9O18uZy5nZXRXaW5kb3c9ZnVuY3Rpb24oKXtyZXR1cm4gXy5scih0aGlzLmZuKCkpfTsKXy5nLkZiPWZ1bmN0aW9uKGEpe3JldHVybiBfLmt5KHRoaXMuUWEsYSl9O18ua3k9ZnVuY3Rpb24oYSxiKXthPWh4KGEpO3ZhciBjPVtdO2MucHVzaC5hcHBseShjLF8uSXYoYSxhLGIpKTt2YXIgZD1hLl9fb3duZWQ7aWYoZClmb3IodmFyIGU9MDtlPGQubGVuZ3RoO2UrKylkW2VdLmdldEF0dHJpYnV0ZSgianNuYW1lIik9PWImJmMucHVzaChkW2VdKSxjLnB1c2guYXBwbHkoYyxfLkl2KGEsZFtlXSxiKSk7cmV0dXJuIG5ldyBfLlJ3KGMpfTtfLmc9Xy5qeS5wcm90b3R5cGU7Xy5nLnJhPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuRmIoYSk7aWYoMTw9Yi5zaXplKCkpcmV0dXJuIGIuR2IoMCk7dGhyb3cgRXJyb3IoInlhYCIrYSsiYCIrdGhpcyk7fTtfLmcuYWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5KYi5yb290P3RoaXMuSmIucm9vdDp0aGlzLkpiLnJvb3Q9bmV3IF8uU3codGhpcy5RYSl9O18uZy5nZXREYXRhPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFhKCkuZ2V0RGF0YShhKX07Cl8uZy5nZXRDb250ZXh0PWZ1bmN0aW9uKGEpe3JldHVybiBBdih0aGlzLlFhLGEpfTtfLmcueGo9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztyZXR1cm4gXy5NbChfLlJ4KHRoaXMuUWEsYSx0aGlzLlBlKCkpLGZ1bmN0aW9uKGEpe2EgaW5zdGFuY2VvZiBReCYmKGEubWVzc2FnZSs9IiByZXF1ZXN0ZWQgYnkgIitiKTtyZXR1cm4gYX0pfTtfLmcuQ2Q9ZnVuY3Rpb24oYSxiKXtpZihhLnRhZ05hbWUpe3ZhciBjPXRoaXMudWUuQ2QoYSk7YiYmXy53bShjLGIpO3JldHVybiBjfXJldHVybiBfLndtKHRoaXMuc2ooYSksZnVuY3Rpb24oYyl7aWYoMD09Yy5sZW5ndGgpdGhyb3cgRXJyb3IoInphYCIrYSsiYCIrdGhpcyk7YiYmYihjWzBdKTtyZXR1cm4gY1swXX0sdGhpcyl9OwpfLmcuc2o9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPXRoaXMuRmIoYSksZT10aGlzLmFhKCkudSgpO2lmKDA9PWQuc2l6ZSgpJiYibG9hZGluZyI9PWUub3duZXJEb2N1bWVudC5yZWFkeVN0YXRlKXt2YXIgZj1uZXcgXy5wbTtwbChlLm93bmVyRG9jdW1lbnQsInJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7Xy52bSh0aGlzLnNqKGEsYiksZnVuY3Rpb24oYSl7Zi5jYWxsYmFjayhhKX0sZnVuY3Rpb24oYSl7Zi5hKGEpfSl9LCExLHRoaXMpO3JldHVybiBmfWQuRmMoKDAsXy5sKShmdW5jdGlvbihhKXtjLnB1c2godGhpcy51ZS5DZChhKSl9LHRoaXMpKTtkPV8ua3UoYyk7YiYmXy53bShkLGIpO3JldHVybiBkfTtfLmcuSGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuUWEsZT10aGlzLlFhLl9fb3duZXI7ZSYmIVF3KHRoaXMuUWEsYSkmJihkPWUpO2QmJl8uT3coZCxhLGIsYyx7X3JldGFyZ2V0OnRoaXMuUWEsX19zb3VyY2U6dGhpc30pfTsKXy5nLktnPWZ1bmN0aW9uKGEsYil7Xy5Qdyh0aGlzLmFhKCkudSgpLGEsYix0aGlzKX07Xy5seT1mdW5jdGlvbihhLGIpe2EuYWEoKS51KCk7Yj1iIGluc3RhbmNlb2YgXy5Tdz9iLnUoKTpiO2E9YS5hYSgpLnUoKTthLmlkfHwoYS5pZD0ib3ciK18uUmEoYSkpO2Iuc2V0QXR0cmlidXRlKCJqc293bmVyIixhLmlkKTtiLl9fb3duZXI9YTthLl9fb3duZWR8fChhLl9fb3duZWQ9W10pO25iKGEuX19vd25lZCxiKTthLnNldEF0dHJpYnV0ZSgiX19JU19PV05FUiIsITApfTtfLm15PWZ1bmN0aW9uKGEpe3JldHVybiBhLkpiLmE/YS5KYi5hOmEuSmIuYT1uZXcgXy5DcihhKX07Xy5qeS5wcm90b3R5cGUua3Q9ZnVuY3Rpb24oKXt0aGlzLkpiLmEmJih0aGlzLkpiLmEuZGlzcG9zZSgpLHRoaXMuSmIuYT1udWxsKTt2YXIgYT10aGlzLlFhLl9fb3duZXI7YSYmYS5fX293bmVkJiZfLnBiKGEuX19vd25lZCx0aGlzLmFhKCkudSgpKTtfLmp5LiQua3QuY2FsbCh0aGlzKX07Cl8uankucHJvdG90eXBlLm1qPWZ1bmN0aW9uKCl7dGhpcy51ZS53Lm1qKCl9O18uankucHJvdG90eXBlLmNwPV8uSGE7aXk9ZnVuY3Rpb24oKXt0aGlzLmE9dGhpcy5yb290PW51bGx9O18uVz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGEpO2QmJmQuT2cmJmQuT2c9PWEuT2c/YS5PZz1PYmplY3QuY3JlYXRlKGEuT2cpOmEuT2d8fChhLk9nPXt9KTthLk9nW2JdPWN9O1F2KHtjb250cm9sbGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuQ2QoYil9LGNvbnRyb2xsZXJzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc2ooYil9LEl2OmZ1bmN0aW9uKGEsYil7dmFyIGM7Xy5PYShiKT9jPWIuZGlzcGxheU5hbWU6Yz1iO3JldHVybiBjeShjLGEsYS55YygpKX19KTsKdmFyIG55O18uWD1mdW5jdGlvbihhLGIsYyl7Yy5wcm90b3R5cGUuT2d8fChjLnByb3RvdHlwZS5PZz17fSk7Yy5wcm90b3R5cGUuY3A9Yy5wcm90b3R5cGUuY3B8fF8uSGE7Xy5XKGMucHJvdG90eXBlLCJucFQybWQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3B9KTthJiYoYy5kaXNwbGF5TmFtZT1hLEp2LlNiKCkucmVnaXN0ZXIoYSxjKSk7Yy5UYT1jLlRhfHxfLk1qKGJ8fHt9KTthJiYoYy5jcmVhdGU9ZnVuY3Rpb24oYSxiLGYpe3JldHVybiBXdihhLGMsbmV3IG55KGEsYixmLGMpKX0pfTtueT1mdW5jdGlvbihhLGIsYyl7dGhpcy5rZXk9YTt0aGlzLm89dm9pZCAwO3RoaXMuUWE9Yjt0aGlzLnVlPWM7dGhpcy5KYj1uZXcgaXl9O18ubShueSxYdik7Xy5nPW55LnByb3RvdHlwZTtfLmcueWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51ZS55YygpfTtfLmcuUGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51ZS5QZSgpfTsKXy5nLmdldENvbnRleHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIEF2KHRoaXMuUWEsYSl9O18uZy5hYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkpiLnJvb3Q/dGhpcy5KYi5yb290OnRoaXMuSmIucm9vdD1uZXcgXy5Tdyh0aGlzLlFhKX07Xy5nLmdldERhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWEoKS5nZXREYXRhKGEpfTtfLmcueGo9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztyZXR1cm4gXy5NbChfLlJ4KHRoaXMuUWEsYSx0aGlzLlBlKCkpLGZ1bmN0aW9uKGEpe2EgaW5zdGFuY2VvZiBReCYmKGEubWVzc2FnZSs9IiByZXF1ZXN0ZWQgYnkgIitiKTtyZXR1cm4gYX0pfTsKXy5nLkNkPWZ1bmN0aW9uKGEsYil7aWYoYS50YWdOYW1lKXt2YXIgYz10aGlzLnVlLkNkKGEpO2ImJl8ud20oYyxiKTtyZXR1cm4gY31yZXR1cm4gXy53bSh0aGlzLnNqKGEpLGZ1bmN0aW9uKGMpe2lmKDA9PWMubGVuZ3RoKXRocm93IEVycm9yKCJ6YWAiK2ErImAiK3RoaXMpO2ImJmIoY1swXSk7cmV0dXJuIGNbMF19LHRoaXMpfTsKXy5nLnNqPWZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD10aGlzLkZiKGEpLGU9dGhpcy5hYSgpLnUoKTtpZigwPT1kLnNpemUoKSYmImxvYWRpbmciPT1lLm93bmVyRG9jdW1lbnQucmVhZHlTdGF0ZSl7dmFyIGY9bmV3IF8ucG07cGwoZS5vd25lckRvY3VtZW50LCJyZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbigpe18udm0odGhpcy5zaihhLGIpLGZ1bmN0aW9uKGEpe2YuY2FsbGJhY2soYSl9LGZ1bmN0aW9uKGEpe2YuYShhKX0pfSwhMSx0aGlzKTtyZXR1cm4gZn1kLkZjKCgwLF8ubCkoZnVuY3Rpb24oYSl7Yy5wdXNoKHRoaXMudWUuQ2QoYSkpfSx0aGlzKSk7ZD1fLmt1KGMpO2ImJl8ud20oZCxiKTtyZXR1cm4gZH07Xy5nLkZiPWZ1bmN0aW9uKGEpe3JldHVybiBfLmt5KHRoaXMuUWEsYSl9Owp2YXIgcGZhPVYoIkdmTjVRYyIsIkdmTjVRYyIsW18uQmldKTt2YXIgb3k9ZnVuY3Rpb24oYSl7b3kuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy5iPWEuaWEuemIuY2MoKTt0aGlzLmE9Xy5qZChhLnhlLkNpLHRpLDQpO3RoaXMuZz10aGlzLnJhKCJ4YThFTmUiKTt0aGlzLmY9dGhpcy5yYSgiWlZmVHFkIik7dGhpcy5yYSgicHFrWmpjIil9O18ubShveSxfLmp5KTtfLlgocGZhLHtpYTp7emI6Xy5CaX0seGU6e0NpOntuYW1lOiJjaGVja0Nvbm5lY3Rpb24iLFFiOnNpfX19LG95KTsKb3kucHJvdG90eXBlLkNhPWZ1bmN0aW9uKCl7aWYod2luZG93LnBvc3RNZXNzYWdlJiZ0aGlzLmEmJnRoaXMuYS5sZW5ndGgpe18uJHcodGhpcy5nLCIxIik7Xy5teSh0aGlzKS5saXN0ZW4od2luZG93LCJtZXNzYWdlIix0aGlzLmMpO2Zvcih2YXIgYT0wO2E8dGhpcy5hLmxlbmd0aDthKyspe3ZhciBiPXRoaXMuYVthXSxjPXRoaXMuYi5jcmVhdGVFbGVtZW50KCJJRlJBTUUiKSxkPWMuc3R5bGU7Y1siY2xhc3MiXT0idzR4cnpmIjtjLmhlaWdodD0iMCI7Yy53aWR0aD0iMCI7Yy5xZj0iLTEiO2QucG9zaXRpb249ImFic29sdXRlIjtkLmxlZnQ9IjAiO2QudG9wPSIwIjtkLnpJbmRleD0iLTEiO2I9Xy5yKGIsMSk7Yj1uZXcgXy5hYShiKTtiLmEuYWRkKCJ0aW1lc3RhbXAiLFN0cmluZygobmV3IERhdGUpLmdldFRpbWUoKSkpO2I9Xy5ndChiLnRvU3RyaW5nKCkpO2Muc3JjPV8uc3EoYik7dGhpcy5iLkliKCkuYm9keS5hcHBlbmRDaGlsZChjKX19fTsKXy5XKG95LnByb3RvdHlwZSwiV1lkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkNhfSk7b3kucHJvdG90eXBlLmM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5hO2lmKGE9Yi5kYXRhKXthOntiPW5ldyBfLmFhKGIub3JpZ2luLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgYz0wO2M8dGhpcy5hLmxlbmd0aDtjKyspe3ZhciBkPXRoaXMuYVtjXSxlPW5ldyBfLmFhKF8ucihkLDEpKTtpZihlLmY9PWIuZiYmZS5vPT1iLm8mJmUuYz09Yi5jKXtiPWQ7YnJlYWsgYX19Yj1udWxsfWlmKGM9YilpZihjPSFfLnIoYiwzKSljPWEubWF0Y2goIl4oW146XSspOihcXGQqKTooXFxkPykkIiksYz0oIWN8fDM+Yy5sZW5ndGg/bnVsbDpjWzFdKT09Xy5yKGIsMik7YyYmKGM9dGhpcy5mLDA8PWEuaW5kZXhPZigiLiIpfHwoKGQ9Xy5adyhjKSk/Xy4kdyhjLHVhYShkLCIsIixhKSk6Xy4kdyhjLGEpKSxfLnQoYiwzLCEwKSl9fTsKYXQoe2I6ZnVuY3Rpb24oYSl7YT1hLmdldChfLk1pKTthLm89Ii9fL2kvZGF0YSI7YS5jPSIvXy9pL211dGF0ZSJ9fSk7dmFyIHB5PWZ1bmN0aW9uKCl7dGhpcy5hPVtdO3RoaXMuYj1bXX0scWZhPWZ1bmN0aW9uKGEsYil7dGhpcy50eXBlPWE7dGhpcy50aW1lPWI7dGhpcy5kZXNjcmlwdGlvbj1hfSxxeT1mdW5jdGlvbihhLGIsYyl7Yz1fLkNhKGMpP2M6KDAsXy5VYSkoKTtiPW5ldyBxZmEoYixjKTthPWEuYTtmb3IoYz1hLmxlbmd0aC0xOzA8PWMmJiEoYi50aW1lPj1hW2NdLnRpbWUpO2MtLSk7dWIoYSxjKzEsMCxiKX07cHkucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5hLmxlbmd0aD0wO3RoaXMuYi5sZW5ndGg9MH07CnZhciByeT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEscmZhLG51bGwpfTtfLm0ocnksXy5xKTt2YXIgcmZhPVszLDgsMTQsMTYsMTgsMjZdLHN5PWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0oc3ksXy5xKTt2YXIgdHk9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubSh0eSxfLnEpO3ZhciB1eT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKHV5LF8ucSk7dmFyIHZ5PWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxudWxsLG51bGwpfTtfLm0odnksXy5xKTtyeS5wcm90b3R5cGUuZmI9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMTMpfTsKdmFyIHd5PWZ1bmN0aW9uKGEsYil7dGhpcy5iPWJ8fG51bGw7Xy5DYShhKT9hIGluc3RhbmNlb2YgVW4/dGhpcy5jPXtwcDphfTp0aGlzLmM9YTp0aGlzLmM9e307dGhpcy5wcD10aGlzLmMucHA7dGhpcy5vPW5ldyBweTt0aGlzLmE9c2ZhKys7dGhpcy5nPVtdO3RoaXMuamE9W107dGhpcy53PTA7dGhpcy5FYz1bXX0sc2ZhPTA7Cnd5LnByb3RvdHlwZS5RYz1mdW5jdGlvbigpe3ZhciBhPW5ldyByeTtfLkNhKHRoaXMuZikmJl8udChhLDEwLHRoaXMuZik7dmFyIGI9TnVtYmVyKHRoaXMud2EpLU51bWJlcih0aGlzLmYpLTA7Xy5DYShiKSYmXy50KGEsMixiKTtfLnQoYSw0LHRoaXMuYSk7dGhpcy5wcCYmKGI9eHkodGhpcy5wcCksXy5rZChhLDUsYikpO3RoaXMuQmEmJihiPXh5KHRoaXMuQmEpLF8ua2QoYSw2LGIpKTt0aGlzLmNiJiYoYj14eSh0aGlzLmNiKSxfLmtkKGEsNyxiKSk7Xy50KGEsOCx0aGlzLmVhfHxbXSk7Xy50KGEsMTEsdGhpcy5lYik7Xy50KGEsMTIsdGhpcy5pKTtfLnQoYSwxNCx0aGlzLmhhfHxbXSk7Xy50KGEsMTMsdGhpcy5mYz8yOjEpO3ZhciBjPVtdLGQ7Zm9yKGI9MDtkPXRoaXMuamFbYl07YisrKWMucHVzaCh0ZmEoZCkpO18ubGQoYSwxNixjKTtfLnQoYSw5LCF0aGlzLk1kKTtfLnQoYSwxNyx0aGlzLldiKTtfLnQoYSwxOSx0aGlzLnFiKTt3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5tZW1vcnkmJgooYj13aW5kb3cucGVyZm9ybWFuY2UubWVtb3J5LDAhPT1iLnRvdGFsSlNIZWFwU2l6ZSYmKGM9bmV3IHV5LF8udChjLDEsYi5qc0hlYXBTaXplTGltaXQpLF8udChjLDIsYi50b3RhbEpTSGVhcFNpemUpLF8udChjLDMsYi51c2VkSlNIZWFwU2l6ZSksXy5rZChhLDIwLGMpKSk7dGhpcy5MYSYmXy50KGEsMjEsdGhpcy5MYSk7dGhpcy5NYyYmXy50KGEsMjIsdGhpcy5NYyk7dGhpcy5SYyYmXy50KGEsMjMsdGhpcy5SYyk7dGhpcy5KYSYmXy50KGEsMjQsdGhpcy5KYSk7dGhpcy5VYSYmXy50KGEsMjUsdGhpcy5VYSk7dGhpcy53JiZfLnQoYSwxLHRoaXMudyk7Yz1bXTtmb3IoYj0wO2I8dGhpcy5FYy5sZW5ndGg7YisrKXtkPXRoaXMuRWNbYl0udG9TdHJpbmcoKTt2YXIgZT1uZXcgdnk7Nj49ZC5sZW5ndGgmJl8udChlLDEscmQuYS5VTyhkKSk7Yy5wdXNoKGUpfV8ubGQoYSwyNixjKTtyZXR1cm4gYS5TYygpfTsKdmFyIHh5PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBzeTt2YXIgYz1hLmcuYTtXbnx8KFduPXt9KTt2YXIgZD1XbltjXTtfLkNhKGQpP2M9ZDpXbltjXT1jO18udChiLDEsYyk7YT1hLmM7Xy5EYShhKT9fLnQoYiwzLGEpOl8udChiLDIsYSk7cmV0dXJuIGJ9O3d5LnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3RoaXMuYiYmXy5PYSh0aGlzLmIuYSl9O3d5LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLmImJl8uT2EodGhpcy5iLmEpfTsKdmFyIHp5PWZ1bmN0aW9uKGEpe3ZhciBiPWEuby5hO2lmKDE+Yi5sZW5ndGgpcmV0dXJuITE7YS5mfHwoYS5mPWJbMF0udGltZSk7MTxiLmxlbmd0aCYmKGEud2E9YltiLmxlbmd0aC0xXS50aW1lKTthLmVhPVtdO2EuaGE9W107YS5qYT1bXTthLmk9MDthLmViPWEuZy5sZW5ndGg7dmFyIGM7Zm9yKGI9MDtjPWEuZ1tiXTtiKyspe2EuaSs9Yy5yajt2YXIgZD1jLmh5O2QmJl8ucihkLDEpJiZhLmVhLnB1c2goXy5yKGQsMSkpO2EuaGEucHVzaChPcChjKSk7Yy5BbigpJiYoYz1uZXcgeXkoYyxhLmYpLGEuamEucHVzaChjKSl9cmV0dXJuITB9LHl5PWZ1bmN0aW9uKGEsYil7aWYoYS53KXRoaXMucWo9YS5OeC1hLlVtO2Vsc2V7dGhpcy5GaD1hLkt2LmE7dmFyIGM9YS5DdTt0aGlzLnFqPWMtYS5VbTtjPWEuQnQtYzt0aGlzLkZoPmMmJih0aGlzLkZoPWMpO3RoaXMuUWw9Yy10aGlzLkZofWI9TWF0aC5tYXgoYi1hLlVtLDApOzAhPWImJihjPU1hdGgubWluKGIsdGhpcy5xaiksdGhpcy5xai09CmMsYi09YyxjPU1hdGgubWluKGIsdGhpcy5RbCksdGhpcy5RbC09Yyx0aGlzLkZoLT1NYXRoLm1pbihiLWMsdGhpcy5GaCkpO3RoaXMuUEI9dGhpcy5xait0aGlzLlFsK3RoaXMuRmg7dGhpcy54QT1hLnJqLShhLnc/MDoxKTt0aGlzLm55PWEuZ2V0VXJsKCkuc3BsaXQoIj8iKVswXS5yZXBsYWNlKC9eKFwvdVwvW1xkXSspPyhcL2JcL1tcZF0rKT8vLCIiKX07Xy5nPXl5LnByb3RvdHlwZTtfLmcucWo9MDtfLmcuRmg9MDtfLmcuUWw9MDtfLmcuUEI9MDtfLmcueEE9MDtfLmcubnk9IiI7dmFyIHRmYT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgdHk7Xy50KGIsMSxhLkZoKTtfLnQoYiwyLGEuUWwpO18udChiLDMsYS5QQik7Xy50KGIsNCxhLnFqKTtfLnQoYiw1LGEueEEpO18udChiLDYsYS5ueSk7cmV0dXJuIGJ9Owp2YXIgQXk9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShBeSxfLnEpO3ZhciBCeT1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKEJ5LF8ucSk7QnkucHJvdG90eXBlLmtiPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDEpfTt2YXIgdWZhLEdmYSwkZmEsZ2dhLG5nYSxSeTt1ZmE9bmV3IFZuKCJnYWlhX2ZlX21pbnV0ZW1haWQiKTtfLkN5PWZ1bmN0aW9uKGEpe1RuLmNhbGwodGhpcyx1ZmEsYSk7dGhpcy5mPXRoaXMuYT1udWxsO3RoaXMubz0oMCxfLlVhKSgpO3RoaXMuYj1udWxsfTtfLm0oXy5DeSxVbik7bmV3IF8uQ3koImNsaWNrU2lnbkluIik7Xy5EeT1uZXcgXy5DeSgiY2xpY2tDcmVhdGVBY2NvdW50Iik7bmV3IF8uQ3koImNsaWNrTWVudUhlbHAiKTtuZXcgXy5DeSgiY2xpY2tNZW51SW5mbyIpO18uRXk9bmV3IF8uQ3koImNsaWNrTWVudVdvcmsiKTtfLkZ5PW5ldyBfLkN5KCJjbGlja0ZvcmdvdFVzZXJuYW1lIik7bmV3IF8uQ3koInNpZ25JbiIpO18uR3k9bmV3IF8uQ3koInNpZ25JbkF0dGVtcHQiKTtfLkh5PW5ldyBfLkN5KCJzaWduVXAiKTtfLnZmYT1uZXcgXy5DeSgic3VlbHAiKTtfLndmYT1uZXcgXy5DeSgic3VlcnAiKTtfLnhmYT1uZXcgXy5DeSgic3VycGEiKTtfLnlmYT1uZXcgXy5DeSgic3VycGMiKTsKbmV3IF8uQ3koInN1cG0iKTtuZXcgXy5DeSgic3VwbG0iKTtfLnpmYT1uZXcgXy5DeSgic3VlYWxtIik7Xy5BZmE9bmV3IF8uQ3koInN1d2VjIik7Xy5CZmE9bmV3IF8uQ3koInN1d3BjIik7Xy5DZmE9bmV3IF8uQ3koInVzIik7Xy5JeT1uZXcgXy5DeSgiZm9yZ290UGFzc3dvcmQiKTtfLkRmYT1uZXcgXy5DeSgiZnBpbiIpO18uRWZhPW5ldyBfLkN5KCJwaG9uZUNvdW50cnlDaGFuZ2VkIik7Xy5GZmE9bmV3IF8uQ3koInNraXBSZWNvdmVyeVBob25lU2V0dXAiKTtHZmE9bmV3IF8uQ3koInNraXBTZXR1cCIpO18uSGZhPW5ldyBfLkN5KCJza2lwU2V0dXBBdFRvcyIpO25ldyBfLkN5KCJzdXRhIik7dmFyIElmYT1uZXcgXy5DeSgic3MiKTtuZXcgXy5DeSgicjEweWxtIik7Xy5KeT1uZXcgXy5DeSgic2ljMmEiKTtfLkt5PW5ldyBfLkN5KCJzaWMycyIpO18uTHk9bmV3IF8uQ3koInNpYzJtYiIpO18uSmZhPW5ldyBfLkN5KCJzaWFycHJhIik7Xy5LZmE9bmV3IF8uQ3koInNpYXJwcnMiKTsKXy5MZmE9bmV3IF8uQ3koInNpYmEiKTtfLk1mYT1uZXcgXy5DeSgic2licyIpO18uTmZhPW5ldyBfLkN5KCJzaWJtb2MiKTtfLk9mYT1uZXcgXy5DeSgic2libW9idWMiKTtfLlBmYT1uZXcgXy5DeSgic2libW9yIik7Xy5RZmE9bmV3IF8uQ3koInNpYm1vbiIpO18uUmZhPW5ldyBfLkN5KCJzaWJtb2JhY2siKTtfLlNmYT1uZXcgXy5DeSgic2ljYSIpO18uVGZhPW5ldyBfLkN5KCJzaWNsbSIpO18uVWZhPW5ldyBfLkN5KCJzaWNtb2MiKTtfLlZmYT1uZXcgXy5DeSgic2ljbW9vaSIpO18uV2ZhPW5ldyBfLkN5KCJzaWNtb3IiKTtfLlhmYT1uZXcgXy5DeSgic2ljbW9uIik7Xy5ZZmE9bmV3IF8uQ3koInNpY3JzYyIpO18uWmZhPW5ldyBfLkN5KCJzaWNycyIpOyRmYT1uZXcgXy5DeSgic2lnbkluSnNBdXRoQWRkQWNjb3VudCIpO18uTXk9bmV3IF8uQ3koInNpZ25JbkpzQXV0aE9uQWNjb3VudEFkZCIpO25ldyBfLkN5KCJzcG0iKTtuZXcgXy5DeSgidW5ubWwiKTtfLk55PW5ldyBfLkN5KCJ1bnQiKTsKXy5PeT1uZXcgXy5DeSgidXJpIik7Xy5QeT1uZXcgXy5DeSgiYWZ3ZXIiKTtfLlF5PW5ldyBfLkN5KCJhZndlb3MiKTtuZXcgXy5DeSgic3B3bSIpO25ldyBfLkN5KCJzcHd0cyIpO18uYWdhPW5ldyBfLkN5KCJjcHN0aSIpO18uYmdhPW5ldyBfLkN5KCJvYXV0aGRpIik7Xy5jZ2E9bmV3IF8uQ3koIm9hdXRoc2kiKTtuZXcgXy5DeSgib2F1dGhkYW5nZXJ3ZGFzIik7bmV3IF8uQ3koIm9hdXRoZGFuZ2Vyd2RidHMiKTtuZXcgXy5DeSgib2F1dGhkYW5nZXJ3ZGRzIik7bmV3IF8uQ3koIm9hdXRoZGFuZ2Vyd2RsbSIpO25ldyBfLkN5KCJvYXV0aGRhbmdlcndkZGxtIik7bmV3IF8uQ3koIm9hdXRoZGFuZ2VybmRhcyIpO25ldyBfLkN5KCJvYXV0aGRhbmdlcm5kYnRzIik7bmV3IF8uQ3koIm9hdXRoZGFuZ2VybmRsbSIpO25ldyBfLkN5KCJvYXV0aGRhbmdlcm5kZGxtIik7Xy5kZ2E9bmV3IF8uQ3koIm1sbnNsbyIpO18uZWdhPW5ldyBfLkN5KCJwd2NsaWNrc2EiKTtfLmZnYT1uZXcgXy5DeSgibnB3Y2xpY2tzYSIpOwpnZ2E9bmV3IF8uQ3koIm1sZSIpO18uaGdhPW5ldyBfLkN5KCJjbW9jIik7Xy5pZ2E9bmV3IF8uQ3koIm9pY3dzbW8iKTtfLmpnYT1uZXcgXy5DeSgib2ljb2RwYXNtbyIpO18ua2dhPW5ldyBfLkN5KCJvaWNvbW9wIik7Xy5sZ2E9bmV3IF8uQ3koImFmcG9tb3AiKTtfLm1nYT1uZXcgXy5DeSgib29jb21vcCIpO25nYT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUnkoYSxiKX07Unk9ZnVuY3Rpb24oYSxiKXt3eS5jYWxsKHRoaXMsYSxiKTt0aGlzLmxkPWF9O18ubShSeSx3eSk7ClJ5LnByb3RvdHlwZS5RYz1mdW5jdGlvbigpe3ZhciBhPW5ldyBBeSxiPXRoaXMubGQ7aWYoYiYmKF8udChhLDEsYi50b1N0cmluZygpKSxiIGluc3RhbmNlb2YgXy5DeSkpe2lmKG51bGwhPWIuYSl7dmFyIGM9bmV3IEJ5O18udChjLDEsbnVsbCk7Xy50KGMsMixiLmEpO18ua2QoYSwyLGMpfTA8Yi5mJiZfLnQoYSw0LGIuZik7Xy50KGEsNSxiLm8pO251bGwhPWIuYiYmXy50KGEsNixNYXRoLm1heCgwLGIuYi1iLm8pKX1yZXR1cm4gYS5TYygpfTsKdmFyIFN5PWZ1bmN0aW9uKGEpe18uY2wuY2FsbCh0aGlzLGEpfTtfLm0oU3ksXy5jbCk7dmFyIFR5PWZ1bmN0aW9uKCl7Xy5jbC5jYWxsKHRoaXMsIkwiKX07Xy5tKFR5LF8uY2wpO3ZhciBVeT1mdW5jdGlvbihhKXt0aGlzLkprPWF9O1V5LnByb3RvdHlwZS5mPWZ1bmN0aW9uKGEpe3RoaXMuSmsuZihhKX07VXkucHJvdG90eXBlLm1ha2VSZXF1ZXN0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkprLm1ha2VSZXF1ZXN0KGEpfTtVeS5wcm90b3R5cGUubz1mdW5jdGlvbihhKXt0aGlzLkprLm8oYSl9O3ZhciBWeT1mdW5jdGlvbigpe18uQ2wuY2FsbCh0aGlzKTt0aGlzLmE9bmV3IF8ueG59O18ubShWeSxfLkNsKTt2YXIgV3k9ZnVuY3Rpb24oYSl7dmFyIGI9W107YT1hLmEuWGIoKTsoMCxfLmFiKShhLGZ1bmN0aW9uKGEpe18uc2IoYixXeShhKSl9KTtyZXR1cm4gYn07dmFyIG9nYT17WlE6ImNpZCIsT1I6ImUiLERTOiJtb2RzIixqUzoianNtb2RlIixxUzoiaGwiLFlSOiJnbCIsZVQ6InJhcHQiLHlVOiJhdCIsWFQ6ImF6dCIsaVI6ImRlYiIsalI6Im9wdCIsa1I6InJvdXRlIixsRDoicnQifTt2YXIgWHk9ZnVuY3Rpb24oYSl7dGhpcy5hPSJfL2RpYWdub3N0aWNzLyI7dGhpcy5iPWF9O1h5LnByb3RvdHlwZS5mPWZ1bmN0aW9uKGEpe3RoaXMuYT1hfTtYeS5wcm90b3R5cGUubz1mdW5jdGlvbihhKXt2YXIgYj17fTtiLmRpYWdub3N0aWNzPWRqKFthXSk7Yi5ydD0iaiI7dmFyIGM9QXModGhpcy5iLHRoaXMuYSxiKTsyRTM8Yy5sZW5ndGg/Yz0hMTooKG5ldyB3aW5kb3cuSW1hZ2UpLnNyYz1jLGM9ITApO2lmKCFjKWlmKDE8YS5sZW5ndGgpZm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGQ9Yz17fTt2YXIgZT1kaihbW2FbYl1dXSk7ZC5kaWFnbm9zdGljcz1lO2MucnQ9ImoiO2M9QXModGhpcy5iLHRoaXMuYSxjKTsobmV3IHdpbmRvdy5JbWFnZSkuc3JjPWN9ZWxzZSBhPUFzKHRoaXMuYix0aGlzLmEsYiksKG5ldyB3aW5kb3cuSW1hZ2UpLnNyYz1hfTsgWHkucHJvdG90eXBlLm1ha2VSZXF1ZXN0PWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2IuZGlhZ25vc3RpY3M9ZGooW2FdKTtyZXR1cm4gdGhpcy5iLm1ha2VSZXF1ZXN0KHRoaXMuYSxiLF8uU2kpfTsKdmFyIFl5PWZ1bmN0aW9uKGEsYil7Xy5DbC5jYWxsKHRoaXMpO3RoaXMuaWE9YTt0aGlzLlVhPWI7dGhpcy5KYT0hMTt0aGlzLmM9bmV3IGFtKDEwMCwhMCk7dGhpcy5vPW5ldyBfLkNyKHRoaXMpO3RoaXMuaT1uZXcgYW0oMTAwLCEwKTt0aGlzLmI9W107dGhpcy53PVtdO3RoaXMud2E9W107dGhpcy5NYz1hLmdldChGaSk7dGhpcy5lYT1hLmdldChFaSk7dGhpcy5CYT10aGlzLkxhPTA7dGhpcy5CYT1NYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSk7dGhpcy5qYT1uZXcgWHkodGhpcy5lYSl9LGlvO18ubShZeSxfLkNsKTtZeS5wcm90b3R5cGUuVWM9ZnVuY3Rpb24oYSxiKXt0aGlzLm8ubGlzdGVuKHRoaXMuZWEuYiwiZyIsdGhpcy5SYyk7dmFyIGM9YW8oYSx5aSk7YyYmdGhpcy5vLmxpc3RlbihjLCJNIix0aGlzLk1kKTtiP3RoaXMuby5saXN0ZW4od2luZG93LCJ1bmxvYWQiLHRoaXMuaGEpOnRoaXMuby5saXN0ZW4oYS5nZXQoeGkpLCJDIix0aGlzLmhhKTtaeSh0aGlzKX07Cll5LnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe1l5LiQub2IuY2FsbCh0aGlzKTt0aGlzLm8uZGlzcG9zZSgpOygwLF8uYWIpKHRoaXMuYy5YYigpLGZ1bmN0aW9uKGEpe2JwKGEpfSx0aGlzKTticCh0aGlzLmNiKX07WXkucHJvdG90eXBlLmhhPWZ1bmN0aW9uKCl7MDx0aGlzLmIubGVuZ3RoJiYodGhpcy5qYS5vKHRoaXMuYiksdGhpcy5iLmxlbmd0aD0wLHRoaXMudy5sZW5ndGg9MCl9O18uJHk9ZnVuY3Rpb24oYSxiKXtiPWEuVWEoYik7Yi5CYT1hLkNjO3F5KGIubywic3RhcnQiKTt6eShiKTtiLkxhPWEuV2I7Yi53PWEuQmE7dmFyIGM9Yi5RYygpO2EuYi5wdXNoKGMpO2Eudy5wdXNoKGIpO2EuZGlzcGF0Y2hFdmVudChuZXcgU3koIksiLGIpKX07CmlvPWZ1bmN0aW9uKGEsYil7YS5pc0Rpc3Bvc2VkKCl8fF8uWmwoYS5jLmIsYi5hLnRvU3RyaW5nKCkpfHxfLlpsKGEuaS5iLGIuYS50b1N0cmluZygpKSYmYS5jLnNldChiLmEudG9TdHJpbmcoKSxhcCgiQWEiLF8uU2EoYS5xYixiLHZvaWQgMCksMCxhKSl9OwpZeS5wcm90b3R5cGUucWI9ZnVuY3Rpb24oYSxiKXtpZihhKXtfLlpsKHRoaXMuYy5iLGEuYS50b1N0cmluZygpKSYmdGhpcy5jLnJlbW92ZShhLmEudG9TdHJpbmcoKSk7dGhpcy5KYXx8KHRoaXMuSmE9ITApO2EuZmluaXNoKCk7cXkoYS5vLCJlbmQiLGIpO3ZhciBjPSEwO2E9PXRoaXMuZj8oYz16eShhKSx0aGlzLmY9bnVsbCk6KGI9Ynx8KDAsXy5VYSkoKSxhLndhPWIpO2MmJihjPWEuUWMoKSx0aGlzLmIucHVzaChjKSx0aGlzLncucHVzaChhKSk7dGhpcy5pLnJlbW92ZShhLmEudG9TdHJpbmcoKSk7aWYoMD09dGhpcy5pLmIuZiYmKGM9dGhpcy5NYyxjLmM9ITEsIWMuYykpe2I9Yy5iLlhiKCk7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF07aWYoZS52eSYxJiZlLlhlKXtiPWM7Yi5mLmEucHVzaChbYy53LGNdKTtiLmF8fChiLmE9YXAoImpiIixiLmcsMCxiKSk7YnJlYWt9fX10aGlzLmRpc3BhdGNoRXZlbnQobmV3IFN5KCJIIixhKSk7Zm9yKGE9MDthPHRoaXMud2EubGVuZ3RoO2ErKylfLnhsKHRoaXMud2FbYV0pOwp0aGlzLndhLmxlbmd0aD0wfX07WXkucHJvdG90eXBlLk1kPWZ1bmN0aW9uKCl7dGhpcy5pLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI7aWYoYj1hLmIpe2I9V3koYS5iKTtmb3IodmFyIGM9NCxkPTA7ZDxiLmxlbmd0aDtkKyspYz1NYXRoLm1pbihjLFlvKGJbZF0pKTtiPTM8PWN9YiYmaW8odGhpcyxhKX0sdGhpcyl9O1l5LnByb3RvdHlwZS5SYz1mdW5jdGlvbigpe3BnYSh0aGlzKX07dmFyIHBnYT1mdW5jdGlvbihhKXthLmYmJlZkYShhLmVhLmIsZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDb250ZXh0KCk7Yi5vIT09dGhpcy5mJiYodGhpcy5mJiZ0aGlzLmYuZy5wdXNoKGEpLGIubz10aGlzLmYpfSxhKX0sWnk9ZnVuY3Rpb24oYSl7aWYoIWEuaXNEaXNwb3NlZCgpKXticChhLmNiKTt2YXIgYj02RTMqTWF0aC5yYW5kb20oKSxjPTZFNCpNYXRoLnBvdygyLGEuTGEpO2M9LjU8TWF0aC5yYW5kb20oKT9jK2I6Yy1iO2EuY2I9YXAoIkJhIixhLmEsYyxhKX19OwpZeS5wcm90b3R5cGUuYT1mdW5jdGlvbihhKXswPT10aGlzLmIubGVuZ3RoP1p5KHRoaXMpOmE/dGhpcy5oYShudWxsKTooYT10aGlzLmphLm1ha2VSZXF1ZXN0KHRoaXMuYikpPyhfLnZtKGEsKDAsXy5sKSh0aGlzLnJxLHRoaXMsdGhpcy53KSx0aGlzLnJsLHRoaXMpLHRoaXMuYj1bXSx0aGlzLnc9W10pOlp5KHRoaXMpfTtZeS5wcm90b3R5cGUucnE9ZnVuY3Rpb24oYSl7bnVsbCE9YSYmbnVsbCE9MDxhLmxlbmd0aCYmdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBUeShhKSk7dGhpcy5MYT0wO1p5KHRoaXMpfTtZeS5wcm90b3R5cGUucmw9ZnVuY3Rpb24oKXt0aGlzLkxhKys7WnkodGhpcyl9Owp2YXIgYXo9ZnVuY3Rpb24oYSxiKXtZeS5jYWxsKHRoaXMsYSxiKTthPW5ldyBYeShhLmdldChFaSkpO3RoaXMuamE9dGhpcy5mYz1uZXcgVXkoYSl9O18ubShheixZeSk7YXQoe1pjOlt7aWQ6Xy5BaSxjYWxsYmFjazpmdW5jdGlvbihhKXthPW5ldyBheihhLG5nYSk7YS5qYS5mKCIvXy9jb21tb24vZGlhZ25vc3RpY3MvIik7cmV0dXJuIGF9fV0sYTpbeGkseWksRWksRmldLFVjOmZ1bmN0aW9uKGEpe2EuZ2V0KF8uQWkpLlVjKGEpfX0pO18uYno9ZnVuY3Rpb24oYSxiKXthPWF8fHt9O3ZhciBjPWEuR2EsZD1hLnRhLGU9YS50aXRsZSxmPWEuWEksaz1hLlFYLG49YS5jb250ZW50LHA9YS5idXR0b25zLEE9YS5TcCxEPWEudzAsRj1hLkVsLEk9YS5uMSxKPWEuTmMsTT1hLmlkLFI9YS5EYSxTPWEuYXR0cmlidXRlcztyZXR1cm4oMCxfLkgpKCc8ZGl2IGNsYXNzPSInK18uVSgiWEtTZm0tU3g5S3djIikrIiAiK18uVSgiblk1b0RkIikrKFI/IiAiK18uVShSKToiIikrJyIganNjb250cm9sbGVyPSInKyhjP18uVShjKTpfLlUoImU2cmMxYyIpKSsnIiBqc2FjdGlvbj0iJytfLlUoIm1lamFQYiIpKyI6IitfLlUoIkpJYnVRYyIpKyI7IitfLlUoInJjdVE2YiIpKyI6IitfLlUoInJjdVE2YiIpKyI7IGtleWRvd246IitfLlUoIkk0ODFsZSIpKyI7IGNsaWNrOiIrXy5VKCJjT3VDZ2QiKSsiOyBmb2N1czoiK18uVSgiQUhtdXdlIikrIjsgbW91c2Vkb3duOiIrXy5VKCJVWDd5WiIpKyI7IGNvbnRleHRtZW51OiIrXy5VKCJvdTB2QSIpKwonIiByb2xlPSInKyhEPyJhbGVydGRpYWxvZyI6ImRpYWxvZyIpKyciICcrXy5QKCJhIiwiIiwhMCkoYSxiKSsnIHRhYmluZGV4PSIwIicrKGQ/JyBqc25hbWU9IicrXy5VKGQpKyciJzoiIikrKE0/JyBpZD0iJytfLlUoTSkrJyInOiIiKSsoUz8iICIrXy5KdShTKToiIikrKChudWxsIT1BP0E6MSk/IiI6JyBkYXRhLWVzY2FwZT0iZmFsc2UiJykrKChudWxsIT1JP0k6MSk/IiI6JyBkYXRhLW1vZGFsPSJmYWxzZSInKSsobnVsbCE9SiYmSj8nIGRhdGEtZGlzcG9zZT0idHJ1ZSInOiIiKSsnPjxkaXYgY2xhc3M9IicrXy5VKCJmdXFBdmYiKSsnIiBqc25hbWU9IicrXy5VKCJrNzdJaWYiKSsnIj48ZGl2IGNsYXNzPSInK18uVSgiWEtTZm0tU3g5S3djLXI0bmtlIikrIiAiK18uVSgiakU1cnJmIikrKGY/IiAiK18uVSgiejJaOTUiKToiIikrJyIganNuYW1lPSInK18uVSgicjRua2UiKSsnIj4nKyhlPyc8ZGl2IGNsYXNzPSInK18uVSgiWEtTZm0tU3g5S3djLXI0bmtlLWZtY21TIikrJyIgaWQ9IicrCl8uVShNKSsnLXRpdGxlLXRleHQiPicrXy5LKGUpKyI8L2Rpdj4iOiIiKSsoaz8nPGRpdiBjbGFzcz0iJytfLlUoIlhLU2ZtLVN4OUt3Yy1yNG5rZS1UdkQ5UGMiKSsnIiBqc2FjdGlvbj0iY2xpY2s6JytfLlUoIkRKNnprZSIpKyciIGRhdGEtaWQ9IicrXy5VKCJUdkQ5UGMiKSsnIj48L2Rpdj4nOiIiKSsnPC9kaXY+PGRpdiBjbGFzcz0iJytfLlUoIlhLU2ZtLVN4OUt3Yy1iTjk3UGMiKSsiICIrXy5VKCJSVW9yNSIpKyciIGpzbmFtZT0iJytfLlUoImJOOTdQYyIpKyciJysoRHx8Rj8nIHRhYkluZGV4PSIwIic6IiIpKyI+IitfLksobnVsbCE9bj9uOiIiKSsiPC9kaXY+PC9kaXY+IisocD8nPGRpdiBjbGFzcz0iJytfLlUoIlhLU2ZtLVN4OUt3Yy1jNnhGcmQiKSsiICIrXy5VKCJqdmVJUGUiKSsnIiBqc2FjdGlvbj0iJytfLlUoIkpJYnVRYyIpKyI6IitfLlUoIkRKNnprZSIpKyciPicrXy5LKHApKyI8L2Rpdj4iOiIiKSsiPC9kaXY+Iil9OwpfLmN6PWZ1bmN0aW9uKGEpe3ZhciBiPWEuQmIsYz1hLlB6LGQ9Xy5IO2I9KGI9Xy5OKHt0YTpfLlEoIkxnYnNTZSIpLGF0dHJpYnV0ZXM6KDAsXy5EdSkoIiIrKGI/J2RhdGEtaWQ9IicrXy5VKGIpKyciJzoiIikrIiIrKGM/JyBkYXRhLWRlZmF1bHQ9InRydWUiJzoiIikpfSxhKSl8fHt9O2E9Xy5IO2I9Xy5OKHtHYTpfLlEoImd2Qm1EZCIpfSxiKTtjPWIuUGE7dmFyIGU9Yi50YSxmPWIuYSxrPWIuRGEsbj1iLmF0dHJpYnV0ZXMscD1iLmNvbnRlbnQsQT1iLmRpc2FibGVkLEQ9Yi5pZCxGPWIucWYsST1iLnRpdGxlLEo9Yi5nYyxNPWIudmFsdWUsUj1iLkhxO2I9KDAsXy5IKSgnPGRpdiByb2xlPSJidXR0b24iIGpzY29udHJvbGxlcj0iJytfLlUoYi5HYSkrJyIganNhY3Rpb249ImNsaWNrOicrXy5VKCJjT3VDZ2QiKSsiOyBmb2N1czoiK18uVSgiQUhtdXdlIikrIjsgbW91c2Vkb3duOiIrXy5VKCJVWDd5WiIpKyI7IG1vdXNlZW50ZXI6IitfLlUoInRmTzFZYyIpKyI7IG1vdXNlbGVhdmU6IisKXy5VKCJKeXdHdWUiKSsoYz8iOyIrXy5VKGMpOiIiKSsnIicrKGU/JyBqc25hbWU9IicrXy5VKGUpKyciJzoiIikrKEQ/JyBpZD0iJytfLlUoRCkrJyInOiIiKSsoZj8nIGRhdGEtYWN0aW9uPSInK18uVShmKSsnIic6IiIpKyhuPyIgIitfLkp1KG4pOiIiKSsoSj8nIGFyaWEtbGFiZWw9IicrXy5VKEopKyciJzoiIikrJyBjbGFzcz0iJytfLlUoInRrM042ZS1MZ2JzU2UtbjJ0bzBlIikrIiAiK18uVSgidGszTjZlLUxnYnNTZS1KYmJRYWMtaTV2dDZlIikrIiAiK18uVSgieDgxVDJlIikrKFI/IiAiK18uVSgicHZSanBjIik6IiIpKyhrPyIgIitfLlUoayk6IiIpKyciJysoQT8nIGFyaWEtZGlzYWJsZWQ9InRydWUiJzonIHRhYmluZGV4PSInKyhGP18uVShGKToiMCIpKyciJykrKEk/JyB0aXRsZT0iJytfLlUoSSkrJyInOiIiKSsoTT8nIHZhbHVlPSInK18uVShNKSsnIic6IiIpKyI+IitfLksocCkrIjwvZGl2PiIpO2E9YSgiIitiKyIiKTtyZXR1cm4gZCgiIithKyIiKX07IF8uTygiYSIsIiIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuaWQ7YT1hLnRpdGxlO3JldHVybigwLF8ueXUpKGImJmE/J2FyaWEtbGFiZWxsZWRieT0iJytfLlUoYikrJy10aXRsZS10ZXh0Iic6IiIpfSk7CnZhciBkeixlejtkej1mdW5jdGlvbigpe3JldHVybigwLF8ueXUpKCJzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyZxdW90OyB2aWV3Qm94PSZxdW90OzAgMCA4MCA4MCZxdW90Oz48cGF0aCBmaWxsPSZxdW90OyNEOEQ4RDgmcXVvdDsgZD0mcXVvdDtNNjIuNyAzMy44Yy0yLjQtMTAuNi0xMS43LTE4LjYtMjMtMTguNi05IDAtMTYuNyA1LTIwLjQgMTIuNS05LjQgMS0xNi44IDktMTYuOCAxOC42QzIuNSA1Ni4zIDExIDY1IDIxIDY1aDQwLjZDNzAuMiA2NSA3NyA1OCA3NyA0OS4zYzAtOC4yLTYuMy0xNS0xNC4zLTE1LjV6JnF1b3Q7Lz48cGF0aCBmaWxsPSZxdW90OyM0Mjg1RjQmcXVvdDsgZD0mcXVvdDtNMjYuNyA0Mi44aDhWNTNINDVWNDNoNy41TDM5LjggMzB6JnF1b3Q7Lz48cGF0aCBmaWxsPSZxdW90O25vbmUmcXVvdDsgZD0mcXVvdDtNNzcuNCA3Ny4zSDIuOFYyLjdoNzQuNnomcXVvdDsvPjwvc3ZnPicpO1wiIil9Owplej1mdW5jdGlvbigpe3JldHVybigwLF8ueXUpKCJzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyZxdW90OyB2aWV3Qm94PSZxdW90OzAgMCAxOTIgMTkyJnF1b3Q7PjxwYXRoIGZpbGw9JnF1b3Q7bm9uZSZxdW90OyBkPSZxdW90O00wIDBoMTkydjE5MkgweiZxdW90Oy8+PGNsaXBQYXRoIGlkPSZxdW90O2EmcXVvdDs+PHBhdGggZD0mcXVvdDtNMTM2IDM2di04bC0xNi0xNkg3Mkw1NiAyOHY4SDh2MTI4YzAgNi42IDUuNCAxMiAxMiAxMmgxNTJjNi42IDAgMTItNS40IDEyLTEyVjM2aC00OHptLTE2IDBINzJ2LThoNDh2OHomcXVvdDsvPjwvY2xpcFBhdGg+PHBhdGggY2xpcC1wYXRoPSZxdW90O3VybCgjYSkmcXVvdDsgZmlsbD0mcXVvdDsjQTNBM0EzJnF1b3Q7IGZpbGwtb3BhY2l0eT0mcXVvdDsuOCZxdW90OyBkPSZxdW90O003MiAxMmg0OHYxNkg3MnomcXVvdDsvPjxwYXRoIGNsaXAtcGF0aD0mcXVvdDt1cmwoI2EpJnF1b3Q7IGZpbGw9JnF1b3Q7I2ZmZiZxdW90OyBmaWxsLW9wYWNpdHk9JnF1b3Q7LjImcXVvdDsgZD0mcXVvdDtNNzIgMTJoNDh2MUg3MnomcXVvdDsvPjxwYXRoIGNsaXAtcGF0aD0mcXVvdDt1cmwoI2EpJnF1b3Q7IGZpbGw9JnF1b3Q7IzI2MjYyNiZxdW90OyBmaWxsLW9wYWNpdHk9JnF1b3Q7LjEmcXVvdDsgZD0mcXVvdDtNNzIgMjdoNDh2MUg3MnomcXVvdDsvPjxsaW5lYXJHcmFkaWVudCBpZD0mcXVvdDtiJnF1b3Q7IGdyYWRpZW50VW5pdHM9JnF1b3Q7dXNlclNwYWNlT25Vc2UmcXVvdDsgeDE9JnF1b3Q7NzImcXVvdDsgeTE9JnF1b3Q7MjAmcXVvdDsgeDI9JnF1b3Q7ODgmcXVvdDsgeTI9JnF1b3Q7MjAmcXVvdDs+PHN0b3Agb2Zmc2V0PSZxdW90OzAmcXVvdDsgc3RvcC1jb2xvcj0mcXVvdDsjMjYyNjI2JnF1b3Q7IHN0b3Atb3BhY2l0eT0mcXVvdDsuMiZxdW90Oy8+PHN0b3Agb2Zmc2V0PSZxdW90OzEmcXVvdDsgc3RvcC1jb2xvcj0mcXVvdDsjMjYyNjI2JnF1b3Q7IHN0b3Atb3BhY2l0eT0mcXVvdDsuMDImcXVvdDsvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggY2xpcC1wYXRoPSZxdW90O3VybCgjYSkmcXVvdDsgZmlsbD0mcXVvdDt1cmwoI2IpJnF1b3Q7IGQ9JnF1b3Q7TTcyIDEybDE2IDE2SDcyeiZxdW90Oy8+PGcgY2xpcC1wYXRoPSZxdW90O3VybCgjYSkmcXVvdDs+PHBhdGggZmlsbD0mcXVvdDsjZWVlJnF1b3Q7IGQ9JnF1b3Q7TTcyIDEyTDU2IDI4djhIOHYxMjhjMCA2LjYgNS40IDEyIDEyIDEyaDE1MmM2LjYgMCAxMi01LjQgMTItMTJWMzZoLTQ4di04bC0xNi0xNnYyNEg3MlYxMnomcXVvdDsvPjwvZz48cGF0aCBjbGlwLXBhdGg9JnF1b3Q7dXJsKCNhKSZxdW90OyBmaWxsPSZxdW90OyNDMkMyQzImcXVvdDsgZmlsbC1vcGFjaXR5PSZxdW90Oy41JnF1b3Q7IGQ9JnF1b3Q7TTE4NCAzNmgtNDh2LThsLTE2LTE2djI0SDcyVjEyTDU2IDI4djhIOHY3MmgxNzZ6JnF1b3Q7Lz48cGF0aCBjbGlwLXBhdGg9JnF1b3Q7dXJsKCNhKSZxdW90OyBmaWxsPSZxdW90OyNmZmYmcXVvdDsgZmlsbC1vcGFjaXR5PSZxdW90Oy4yJnF1b3Q7IGQ9JnF1b3Q7TTcyIDEyTDU2IDI4djFsMTYtMTZ2LTF6TTggMzdoNDh2LTFIOHYxem0xMjgtOWwtMTYtMTZ2MjRINzJ2MWg0OFYxM2wxNiAxNnYtMXptMCA4djFoNDh2LTFoLTQ4eiZxdW90Oy8+PHBhdGggY2xpcC1wYXRoPSZxdW90O3VybCgjYSkmcXVvdDsgZmlsbD0mcXVvdDsjMjYyNjI2JnF1b3Q7IGZpbGwtb3BhY2l0eT0mcXVvdDsuMSZxdW90OyBkPSZxdW90O00xNzIgMTc1SDIwYy02LjYgMC0xMi01LjQtMTItMTJ2MWMwIDYuNiA1LjQgMTIgMTIgMTJoMTUyYzYuNiAwIDEyLTUuNCAxMi0xMnYtMWMwIDYuNi01LjQgMTItMTIgMTJ6JnF1b3Q7Lz48ZyBjbGlwLXBhdGg9JnF1b3Q7dXJsKCNhKSZxdW90Oz48cGF0aCBmaWxsPSZxdW90OyNmZmYmcXVvdDsgZmlsbC1vcGFjaXR5PSZxdW90Oy4wNSZxdW90OyBkPSZxdW90O004IDEwOGgxNzZ2MUg4eiZxdW90Oy8+PHBhdGggZmlsbD0mcXVvdDsjMjYyNjI2JnF1b3Q7IGZpbGwtb3BhY2l0eT0mcXVvdDsuMDImcXVvdDsgZD0mcXVvdDtNOCAxMDdoMTc2djFIOHomcXVvdDsvPjwvZz48ZyBjbGlwLXBhdGg9JnF1b3Q7dXJsKCNhKSZxdW90Oz48Y2xpcFBhdGggaWQ9JnF1b3Q7YyZxdW90Oz48cGF0aCBkPSZxdW90O001OC43NyA2MC4xOGMtMS42OC41My0yLjc3IDEuNjMtMi43NyA0LjIybC4wMSA4Mi41OGMwIDIuNTYgMS4wNSA0LjI2IDIuNjkgNC44MiAxLjE4LjQgMi42NS4yMiA0LjI1LS42N2w3NC4xOC00MS4yOGMzLjgyLTIuMTIgMy44Mi01LjU4IDAtNy43TDYyLjk1IDYwLjg3Yy0xLjU2LS44Ni0zLjAyLTEuMDYtNC4xOC0uNjl6JnF1b3Q7Lz48L2NsaXBQYXRoPjxnIGNsaXAtcGF0aD0mcXVvdDt1cmwoI2MpJnF1b3Q7PjxsaW5lYXJHcmFkaWVudCBpZD0mcXVvdDtkJnF1b3Q7IGdyYWRpZW50VW5pdHM9JnF1b3Q7dXNlclNwYWNlT25Vc2UmcXVvdDsgeDE9JnF1b3Q7OTYuNzQ4JnF1b3Q7IHkxPSZxdW90OzI1Ljg4NSZxdW90OyB4Mj0mcXVvdDsxMTMuMzg0JnF1b3Q7IHkyPSZxdW90Ozk5LjU1NyZxdW90Oz48c3RvcCBvZmZzZXQ9JnF1b3Q7MCZxdW90OyBzdG9wLWNvbG9yPSZxdW90OyMwMEEzQjUmcXVvdDsvPjxzdG9wIG9mZnNldD0mcXVvdDsuNjc0JnF1b3Q7IHN0b3AtY29sb3I9JnF1b3Q7IzkzRTJBNyZxdW90Oy8+PHN0b3Agb2Zmc2V0PSZxdW90OzEmcXVvdDsgc3RvcC1jb2xvcj0mcXVvdDsjRDZGRkExJnF1b3Q7Lz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGZpbGw9JnF1b3Q7dXJsKCNkKSZxdW90OyBkPSZxdW90O00xNTIgNThINTZsNDggNDh6JnF1b3Q7Lz48bGluZWFyR3JhZGllbnQgaWQ9JnF1b3Q7ZSZxdW90OyBncmFkaWVudFVuaXRzPSZxdW90O3VzZXJTcGFjZU9uVXNlJnF1b3Q7IHgxPSZxdW90OzU2LjMxMiZxdW90OyB5MT0mcXVvdDszMC44MDgmcXVvdDsgeDI9JnF1b3Q7ODAuMDc4JnF1b3Q7IHkyPSZxdW90OzEzMC4zMjYmcXVvdDs+PHN0b3Agb2Zmc2V0PSZxdW90OzAmcXVvdDsgc3RvcC1jb2xvcj0mcXVvdDsjMDY0QUEyJnF1b3Q7Lz48c3RvcCBvZmZzZXQ9JnF1b3Q7LjE2NSZxdW90OyBzdG9wLWNvbG9yPSZxdW90OyMxMjYyQTkmcXVvdDsvPjxzdG9wIG9mZnNldD0mcXVvdDsuNTE1JnF1b3Q7IHN0b3AtY29sb3I9JnF1b3Q7IzMyQTBCQSZxdW90Oy8+PHN0b3Agb2Zmc2V0PSZxdW90OzEmcXVvdDsgc3RvcC1jb2xvcj0mcXVvdDsjNjNGRkQ0JnF1b3Q7Lz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGZpbGw9JnF1b3Q7dXJsKCNlKSZxdW90OyBkPSZxdW90O001NiA1OHY5Nmw0OC00OHomcXVvdDsvPjxsaW5lYXJHcmFkaWVudCBpZD0mcXVvdDtmJnF1b3Q7IGdyYWRpZW50VW5pdHM9JnF1b3Q7dXNlclNwYWNlT25Vc2UmcXVvdDsgeDE9JnF1b3Q7OTkuNzQ4JnF1b3Q7IHkxPSZxdW90OzMzLjc5NCZxdW90OyB4Mj0mcXVvdDsxNTEuMTcyJnF1b3Q7IHkyPSZxdW90OzEyMS41MzkmcXVvdDs+PHN0b3Agb2Zmc2V0PSZxdW90OzAmcXVvdDsgc3RvcC1jb2xvcj0mcXVvdDsjRkYxNzdCJnF1b3Q7Lz48c3RvcCBvZmZzZXQ9JnF1b3Q7LjY3MiZxdW90OyBzdG9wLWNvbG9yPSZxdW90OyNGRkE5NzYmcXVvdDsvPjxzdG9wIG9mZnNldD0mcXVvdDsxJnF1b3Q7IHN0b3AtY29sb3I9JnF1b3Q7I0ZGRUM3MyZxdW90Oy8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSZxdW90O3VybCgjZikmcXVvdDsgZD0mcXVvdDtNMTA0IDEwNmw0OCA0OFY1OHomcXVvdDsvPjxsaW5lYXJHcmFkaWVudCBpZD0mcXVvdDtnJnF1b3Q7IGdyYWRpZW50VW5pdHM9JnF1b3Q7dXNlclNwYWNlT25Vc2UmcXVvdDsgeDE9JnF1b3Q7MTMyLjczMyZxdW90OyB5MT0mcXVvdDsxMjkuMzA5JnF1b3Q7IHgyPSZxdW90OzQyLjk2NiZxdW90OyB5Mj0mcXVvdDsxNDIuNDE5JnF1b3Q7PjxzdG9wIG9mZnNldD0mcXVvdDswJnF1b3Q7IHN0b3AtY29sb3I9JnF1b3Q7I0ZGNDUyMSZxdW90Oy8+PHN0b3Agb2Zmc2V0PSZxdW90Oy4zNDEmcXVvdDsgc3RvcC1jb2xvcj0mcXVvdDsjRDQzRTY1JnF1b3Q7Lz48c3RvcCBvZmZzZXQ9JnF1b3Q7Ljc5MyZxdW90OyBzdG9wLWNvbG9yPSZxdW90OyM5RjM2QjkmcXVvdDsvPjxzdG9wIG9mZnNldD0mcXVvdDsxJnF1b3Q7IHN0b3AtY29sb3I9JnF1b3Q7IzhBMzNEQiZxdW90Oy8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSZxdW90O3VybCgjZykmcXVvdDsgZD0mcXVvdDtNNTYgMTU0aDk2bC00OC00OHomcXVvdDsvPjwvZz48L2c+PHJhZGlhbEdyYWRpZW50IGlkPSZxdW90O2gmcXVvdDsgY3g9JnF1b3Q7OS40NTImcXVvdDsgY3k9JnF1b3Q7MzYuOTg0JnF1b3Q7IHI9JnF1b3Q7MjE4LjY5NSZxdW90OyBncmFkaWVudFVuaXRzPSZxdW90O3VzZXJTcGFjZU9uVXNlJnF1b3Q7PjxzdG9wIG9mZnNldD0mcXVvdDswJnF1b3Q7IHN0b3AtY29sb3I9JnF1b3Q7I2ZmZiZxdW90OyBzdG9wLW9wYWNpdHk9JnF1b3Q7LjEmcXVvdDsvPjxzdG9wIG9mZnNldD0mcXVvdDsxJnF1b3Q7IHN0b3AtY29sb3I9JnF1b3Q7I2ZmZiZxdW90OyBzdG9wLW9wYWNpdHk9JnF1b3Q7MCZxdW90Oy8+PC9yYWRpYWxHcmFkaWVudD48cGF0aCBmaWxsPSZxdW90O3VybCgjaCkmcXVvdDsgZD0mcXVvdDtNMTM2IDM2di04bC0xNi0xNkg3Mkw1NiAyOHY4SDh2MTI4YzAgNi42IDUuNCAxMiAxMiAxMmgxNTJjNi42IDAgMTItNS40IDEyLTEyVjM2aC00OHptLTE2IDBINzJ2LThoNDh2OHomcXVvdDsvPjwvc3ZnPicpO1wiIil9OwpfLmZ6PWZ1bmN0aW9uKCl7cmV0dXJuKDAsXy55dSkoJ3N0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FRQUFBRDlDekVNQUFBQnRFbEVRVlI0QWUzU1BXc1VVUlNIOGVzT2pER1FGd1JOSi9qUytSSEVSZ1JKWVdObHpCY3dUakNOVHlYWUNSWWlxOWdJWWlVcFV0bGFXaWdCTmFZUk5aR0lWUVJaMXM2ZEZUMUNrQXZEOE44NzYwR3JtVjkzNXNBRGx4UCt6OWQrN2NkeENsYlpwTWVRSC9SNXl4T3VjNG9PSVNXMWtMSElPaWJzY29zam5zQTgyMWpDa1BzYy9KdkFKSSt3aHI1d2Z0ekFIQnZZbnU4c01jVTBCUU5Nem41eFk1ekFIRnZZSDB0eHVxeG5lKzQwRFV5eWdVVlRjVDZqWnRHMVpvSHEyMC9IK2F5YVJUODVuUTdNWXhWRi9MT2laOUZIOHRHQnJIYVlBNWFaWVpZVlNqV3J1RG82c0lnNWZhS0REckNPdVozUmdSUGl6Z1d4ZTFzSENuSG5ndGg5cGdPcjRzNEZzYnVyQTV2aXpnV3hPOUNCbnJoelFleVdPakFVZHk2STNaMTB3R2N0L1VRK0N6cndCblA3VEo0K1U0OExCQjI0Z2puZEphQURITU5jdW5SRUlIcmhlUHZxNDRqQUpXeE1KVHVzc1VCT2FCTEkrSUFsUGVVayt3aE4xRWZuc0lRdDloTTBHWWdlSmdJM0NiN0FBVjc5bzBCMG1QZVl0TTJFTnhBNHhFdE11dWNJUkJNOGtJRnZ6a0IwbG5kWUhYMTNJTXE0eVBOYW9Pc0wxQjNsTW85NXpWZEsrblRKL1lIbTJrQWIrQTIrZDdCdnByb2RNQUFBQUFCSlJVNUVya0pnZ2c9PSk7IicpfTsKXy5PKCJiIiwiIiwwLGZ1bmN0aW9uKCl7dmFyIGE9IiIrKCc8cCBjbGFzcz0iJytfLlUoIll5V2I5ZSIpKyciICcrZHooKSsiPkJhY2sgdXAgeW91ciBhcHBzIHRvIEdvb2dsZSwgYW5kIHN5bmMgR29vZ2xlIHNlcnZpY2VzIGxpa2UgQ2FsZW5kYXIgYW5kIENvbnRhY3RzIHdpdGggeW91ciBkZXZpY2U8L3A+Iik7cmV0dXJuKDAsXy5IKShhKX0pO18uTygiYyIsIiIsMCxmdW5jdGlvbigpe3ZhciBhPSIiKygnPHAgY2xhc3M9IicrXy5VKCJZeVdiOWUiKSsnIiAnK2R6KCkrIj5LZWVwIHlvdXIgcHJlZmVyZW5jZXMgYW5kIHNldHRpbmdzIGFjcm9zcyBhbGwgR29vZ2xlIHByb2R1Y3RzIGFuZCBvbiBhbGwgeW91ciBkZXZpY2VzPC9wPiIpO3JldHVybigwLF8uSCkoYSl9KTsKXy5PKCJkIiwiIiwwLGZ1bmN0aW9uKCl7dmFyIGE9IiIrKCc8cCBjbGFzcz0iJytfLlUoIll5V2I5ZSIpKyciICcrZXooKSsiPkRvd25sb2FkIGFwcHMsIG11c2ljLCBnYW1lcywgYW5kIG90aGVyIGNvbnRlbnQgZnJvbSBHb29nbGUgUGxheTwvcD4iKTtyZXR1cm4oMCxfLkgpKGEpfSk7Xy5PKCJlIiwiIiwwLGZ1bmN0aW9uKCl7dmFyIGE9IiIrKCc8cCBjbGFzcz0iJytfLlUoIll5V2I5ZSIpKyciICcrZXooKSsiPlVzZSB0aGUgYXBwcywgbXVzaWMsIGdhbWVzLCBhbmQgb3RoZXIgY29udGVudCB5b3UgZG93bmxvYWRlZCBmcm9tIEdvb2dsZSBQbGF5PC9wPiIpO3JldHVybigwLF8uSCkoYSl9KTsKXy5PKCJmIiwiIiwwLGZ1bmN0aW9uKCl7dmFyIGE9IiIrKCc8cCBjbGFzcz0iJytfLlUoIll5V2I5ZSIpKyciICcrXy5meigpKyI+R2V0IG1vcmUgcmVsZXZhbnQgc2VhcmNoIHJlc3VsdHMgYW5kIHBlcnNvbmFsaXplZCByZWNvbW1lbmRhdGlvbnMgaW4gYXBwcyBsaWtlIFlvdVR1YmU8L3A+Iik7cmV0dXJuKDAsXy5IKShhKX0pOwpfLk8oImciLCIiLDAsZnVuY3Rpb24oKXt2YXIgYT0nPHAgY2xhc3M9IicrXy5VKCJZeVdiOWUiKSsnIiAnO3ZhciBiPSgwLF8ueXUpKCJzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyZxdW90OyB3aWR0aD0mcXVvdDsyNHB4JnF1b3Q7IGhlaWdodD0mcXVvdDsyNHB4JnF1b3Q7IHZpZXdCb3g9JnF1b3Q7MCAwIDI0IDI0JnF1b3Q7IGZpbGw9JnF1b3Q7Izc1NzU3NSZxdW90Oz48cGF0aCBkPSZxdW90O00yMC4xOCAxMC44OGwtMy4wNi0xLjc0TDE0LjI2IDEybDIuODYgMi44NiAzLjA2LTEuNzRjLjU1LS4zMS44Mi0uNzEuODItMS4xMiAwLS40MS0uMjctLjgxLS44Mi0xLjEyek00LjcxIDIuNDVsOC40MiA4LjQyIDIuNTUtMi41NS0xMC43LTYuMDZjLS4wNy0uMDQtLjE0LS4wNy0uMjEtLjEtLjE3LS4wNy0uMy4wNS0uMTUuMjEuMDMuMDIuMDYuMDUuMDkuMDh6bTAgMTkuMWwtLjA4LjA4Yy0uMTUuMTUtLjAyLjI4LjE1LjIxLjA3LS4wMy4xNC0uMDYuMjEtLjFsMTAuNjktNi4wNi0yLjU1LTIuNTVzLTcuMiA3LjIxLTguNDIgOC40MnpNMTIgMTJMMy4zOCAzLjM4Yy0uMTktLjE5LS4zOC0uMDctLjM4LjE5djE2Ljg2YzAgLjI2LjE5LjM4LjM4LjE5TDEyIDEyeiZxdW90Oy8+PC9zdmc+Jyk7XCIiKTtyZXR1cm4oMCxfLkgpKCIiKwooYStiKyI+VXNlIHRoZSBhcHBzLCBtdXNpYywgZ2FtZXMsIGFuZCBvdGhlciBjb250ZW50IHlvdSBkb3dubG9hZGVkIGZyb20gR29vZ2xlIFBsYXk8L3A+IikpfSk7Cl8uTygiaCIsIiIsMCxmdW5jdGlvbigpe3ZhciBhPSc8cCBjbGFzcz0iJytfLlUoIll5V2I5ZSIpKyciICc7dmFyIGI9KDAsXy55dSkoInN0eWxlPVwiYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJnF1b3Q7IHdpZHRoPSZxdW90OzI0cHgmcXVvdDsgaGVpZ2h0PSZxdW90OzI0cHgmcXVvdDsgdmlld0JveD0mcXVvdDswIDAgMjQgMjQmcXVvdDsgZmlsbD0mcXVvdDsjNzU3NTc1JnF1b3Q7PjxwYXRoIGQ9JnF1b3Q7TTAgMGgyNHYyNEgweiZxdW90OyBmaWxsPSZxdW90O25vbmUmcXVvdDsvPjxwYXRoIGQ9JnF1b3Q7TTE0IDEyYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMiAuOSAyIDIgMiAyLS45IDItMnptLTItOWMtNC45NyAwLTkgNC4wMy05IDlIMGw0IDQgNC00SDVjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjUxIDAtMi45MS0uNDktNC4wNi0xLjNsLTEuNDIgMS40NEM4LjA0IDIwLjMgOS45NCAyMSAxMiAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXomcXVvdDsvPjwvc3ZnPicpO1wiIik7cmV0dXJuKDAsXy5IKSgiIisKKGErYisiPktlZXAgeW91ciBwcmVmZXJlbmNlcyBhbmQgc2V0dGluZ3Mgc3luY2VkIGFjcm9zcyBhbGwgeW91ciBkZXZpY2VzPC9wPiIpKX0pOwpfLmd6PWZ1bmN0aW9uKCl7dmFyIGE9JzxwIGNsYXNzPSInK18uVSgiWXlXYjllIikrJyIgJzt2YXIgYj0oMCxfLnl1KSgic3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9JnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcmcXVvdDsgdmlld0JveD0mcXVvdDswIDAgODAgODAmcXVvdDs+PHBhdGggZmlsbD0mcXVvdDtub25lJnF1b3Q7IGQ9JnF1b3Q7TTUzIDQ4LjZIMjZ2LTI3aDI3eiZxdW90Oy8+PHBhdGggZmlsbD0mcXVvdDsjNDI4NUY0JnF1b3Q7IGQ9JnF1b3Q7TTQ2LjQgMzAuNmgtMS4ydi0yLjJjMC0zLjItMi40LTUuNi01LjYtNS42UzM0IDI1LjIgMzQgMjguNHYyLjJoLTFjLTEuNiAwLTIuNCAxLTIuNCAyLjN2MTFjMCAxLjMgMSAyLjMgMi4zIDIuM2gxMy4zYzEuMyAwIDIuMi0xIDIuMi0yLjNWMzNjMC0xLjItMS0yLjQtMi4yLTIuNHptLTYuOCAxMC4yYy0xLjMgMC0yLjItMS0yLjItMi4zczEtMi4yIDIuMi0yLjJjMSAwIDIuMyAxIDIuMyAyLjJzLTEuNCAyLjMtMi41IDIuM3pNNDMgMzAuNmgtN3YtMi4yYzAtMiAxLjYtMy44IDMuOC0zLjggMiAwIDMuNCAyIDMuNCAzLjh2Mi4yeiZxdW90Oy8+PHBhdGggZmlsbD0mcXVvdDsjRDhEOEQ4JnF1b3Q7IGQ9JnF1b3Q7TTUxLjQgNy40SDI3LjZDMjMgNy40IDE5IDExIDE5IDE2LjJ2NDcuNGMwIDUgMy43IDguOCA4LjggOC44SDUyYzUgMCA4LjgtMy43IDguOC04LjhWMTYuNGMwLTUtMy43LTktOC44LTl6bS02IDU5LjJIMzMuNnYtM2gxMS44djN6bTkuOC04LjhIMjRWMTYuNmgzMS40djQxLjJ6JnF1b3Q7Lz48cGF0aCBmaWxsPSZxdW90O25vbmUmcXVvdDsgZD0mcXVvdDtNNzcuNSA3Ny41aC03NXYtNzVoNzV6JnF1b3Q7Lz48L3N2Zz4nKTtcIiIpO3JldHVybigwLF8uSCkoIiIrIChhK2IrIj5BY3RpdmF0ZSBkZXZpY2UgcHJvdGVjdGlvbiBmZWF0dXJlczwvcD4iKSl9OwpfLmh6PXF4KCJsQ1ZvM2QiLCJsQ1ZvM2QiLFtdKTtfLml6PWZ1bmN0aW9uKCl7fTtfLnZ4KF8uaXosXy5oeik7dmFyIGt6LHFnYTtfLmp6PXF4KCJUZ1RsaWMiLCJUZ1RsaWMiLFtfLnosXy5CaSxfLmh6XSk7a3o9VigiZTZyYzFjIiwiZTZyYzFjIixbXSk7cWdhPVYoImd2Qm1EZCIsImd2Qm1EZCIsW10pO3ZhciBteixveixyejtfLmx6PWZ1bmN0aW9uKGEpe18ubHouJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy5qYT1udWxsO3RoaXMuTWQ9dGhpcy5nZXREYXRhKCJlc2NhcGUiKS5hKCEwKTt0aGlzLmE9dGhpcy53KCk7Xy5Vdih0aGlzLHRoaXMud2EoKSl9O18ubShfLmx6LF8uankpO18uWChreix7fSxfLmx6KTtfLmx6LnByb3RvdHlwZS53YT1mdW5jdGlvbigpe3JldHVybiBqbyh0aGlzLnljKCksW0lpXSx2b2lkIDApW0lpXS50aGVuKGZ1bmN0aW9uKGEpe3RoaXMuamE9YTtfLm15KHRoaXMpLk9sKHRoaXMuamEsIk8iLHRoaXMucWIpfSxudWxsLHRoaXMpfTttej1fLkV2KCJtZWphUGIiKTtfLm56PV8uRXYoIm5BNXFTZCIpO296PWZ1bmN0aW9uKGEpe2E9YS5yYSgiYk45N1BjIik7dmFyIGI9YS5jaGlsZHJlbigpO3JldHVybiAxPT1iLnNpemUoKT9iOmF9O18ubHoucHJvdG90eXBlLk51PWZ1bmN0aW9uKGEpe296KHRoaXMpLkhhKG16LGEuYS5nZXREYXRhKCJpZCIpLiRhKCkpfTsKXy5XKF8ubHoucHJvdG90eXBlLCJESjZ6a2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTnV9KTtfLmx6LnByb3RvdHlwZS5hY3Rpb249ZnVuY3Rpb24oYSl7b3oodGhpcykuSGEoXy5ueixhLmRhdGEpfTtfLlcoXy5sei5wcm90b3R5cGUsIkpJYnVRYyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3Rpb259KTtfLmx6LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmFhKCkudSgpLGI9Xy5BcihfLmFyKGEpKTtiJiZ1cihhLGIpfHxfLnB6KGEpfTtfLlcoXy5sei5wcm90b3R5cGUsInJjdVE2YiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJ9KTtfLmx6LnByb3RvdHlwZS5QYz1mdW5jdGlvbihhKXtyZXR1cm4gMjc9PWEuZXZlbnQua2V5Q29kZSYmdGhpcy5NZD8ob3oodGhpcykuSGEobXosIlR2RDlQYyIpLGEuZXZlbnQucHJldmVudERlZmF1bHQoKSwhMSk6MTM9PWEuZXZlbnQua2V5Q29kZSYmcXoodGhpcyk/ITE6dGhpcy5mYyhhKX07Cl8uVyhfLmx6LnByb3RvdHlwZSwiSTQ4MWxlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlBjfSk7Xy5sei5wcm90b3R5cGUud009ZnVuY3Rpb24oKXtyZXR1cm4hMX07Xy5XKF8ubHoucHJvdG90eXBlLCJvdTB2QSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53TX0pO18ubHoucHJvdG90eXBlLmZjPWZ1bmN0aW9uKGEpe2lmKDk9PWEuZXZlbnQua2V5Q29kZSl7dmFyIGI9dGhpcy5hYSgpLnUoKTtpZihfLkFyKF8uYXIoYikpPT1iKXJldHVybiBhLmV2ZW50LnNoaWZ0S2V5PzA8dGhpcy5hLnNpemUoKSYmXy5weih0aGlzLmEuZ2V0KDApKTpyeih0aGlzKSwhMX1yZXR1cm4hMH07Xy5sei5wcm90b3R5cGUuY2xpY2s9ZnVuY3Rpb24oYSl7MTM9PWEuZXZlbnQua2V5Q29kZSYmcXoodGhpcyl9O18uVyhfLmx6LnByb3RvdHlwZSwiY091Q2dkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsaWNrfSk7CnZhciBxej1mdW5jdGlvbihhKXt2YXIgYj1fLlR3KGEuYWEoKSwnW2RhdGEtZGVmYXVsdD0idHJ1ZSJdJyk7cmV0dXJuIDAhPWIuc2l6ZSgpJiYoYj1iLmdldERhdGEoImlkIikuJGEoKSk/KG96KGEpLkhhKG16LGIpLCEwKTohMX07Xy5sei5wcm90b3R5cGUuUmg9ZnVuY3Rpb24oKXt0aGlzLmdldFdpbmRvdygpLnNldFRpbWVvdXQoKDAsXy5sKShmdW5jdGlvbigpe3RoaXMuYWEoKS5qYigiYWZ3UmljIil9LHRoaXMpLDApO3JldHVybiEwfTtfLlcoXy5sei5wcm90b3R5cGUsIlVYN3laIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlJofSk7Xy5sei5wcm90b3R5cGUuZm9jdXM9ZnVuY3Rpb24oKXt0aGlzLmFhKCkuaWIoImFmd1JpYyIpO3JldHVybiEwfTtfLlcoXy5sei5wcm90b3R5cGUsIkFIbXV3ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb2N1c30pOwpfLmx6LnByb3RvdHlwZS53PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5yYSgiUjZaeVJiIiksYj10aGlzLnJhKCJiY3lZNWMiKTtyZXR1cm4gXy5Udyh0aGlzLmFhKCksIlt0YWJpbmRleF0iKS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIDA8PWMudGFiSW5kZXgmJmMhPWEudSgpJiZjIT1iLnUoKSYmMDxjLm9mZnNldEhlaWdodCYmMDxjLm9mZnNldFdpZHRofSl9O18ubHoucHJvdG90eXBlLmdFPWZ1bmN0aW9uKCl7cnoodGhpcyl9O18uVyhfLmx6LnByb3RvdHlwZSwiRWxqTkFkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmdFfSk7Xy5sei5wcm90b3R5cGUuaEU9ZnVuY3Rpb24oKXswPHRoaXMuYS5zaXplKCkmJl8ucHoodGhpcy5hLmdldCgwKSl9O18uVyhfLmx6LnByb3RvdHlwZSwiQW43eGtmIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmhFfSk7cno9ZnVuY3Rpb24oYSl7MDxhLmEuc2l6ZSgpJiZfLnB6KGEuYS5nZXQoYS5hLnNpemUoKS0xKSl9OyBfLnB6PWZ1bmN0aW9uKGEpe3RyeXsoYSBpbnN0YW5jZW9mIF8uUnc/YS51KCk6YSkuZm9jdXMoKX1jYXRjaChiKXt9fTtfLmx6LnByb3RvdHlwZS5xYj1mdW5jdGlvbigpe296KHRoaXMpLkhhKF8ubnopfTsKXy5zej1xeCgiQ1g5YXVkIiwiQ1g5YXVkIixbXy5BaV0pO3ZhciByZ2E9VigiQ3RNQ1NiIiwiQ3RNQ1NiIixbXy5BaSxfLnN6XSk7dmFyIHR6PWZ1bmN0aW9uKGEpe3R6LiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYj1hLmwuamQ7dGhpcy5hPWEuaWEudGU7dGhpcy5mPWEubC50aW1pbmd9O18ubSh0eixfLmp5KTtfLlgocmdhLHtpYTp7dGU6Xy5BaX0sbDp7amQ6Xy5peix0aW1pbmc6Xy5zen19LHR6KTt0ei5wcm90b3R5cGUuU2U9ZnVuY3Rpb24oYSl7c3dpdGNoKGEuZGF0YSl7Y2FzZSAiTHd0dUFjIjpfLiR5KHRoaXMuYSxHZmEpO18udXoodGhpcy5mKTt0aGlzLmIuR3IoKTticmVhaztjYXNlICJJYkUwUyI6dGhpcy5IYShfLm56LG51bGwpfX07Xy5XKHR6LnByb3RvdHlwZSwiV1dralkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuU2V9KTsKYXQoe1pjOlt7aWQ6Xy5CaSxjYWxsYmFjazpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFd4KGEsd2luZG93LmRvY3VtZW50KX0sbXVsdGlwbGU6ITB9XX0pO18udno9ZnVuY3Rpb24oYSl7YT0oYS5jYygpLkliKCl8fHdpbmRvdy5kb2N1bWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkJBU0UiKTtyZXR1cm4gMT09YS5sZW5ndGg/KG5ldyBfLmFhKGFbMF0uaHJlZikpLmI6bnVsbH07dmFyIHd6PWZ1bmN0aW9uKGEpe18uY2wuY2FsbCh0aGlzLCJuYXZpZ2F0ZSIpO3RoaXMuSXI9YX07Xy5tKHd6LF8uY2wpO3ZhciB4ej1mdW5jdGlvbihhLGIpe18uQ2wuY2FsbCh0aGlzKTt0aGlzLmE9YXx8d2luZG93O3RoaXMuZj1ifHxudWxsO3RoaXMubz1udWxsO18ucWwodGhpcy5hLCJwb3BzdGF0ZSIsdGhpcy5iLCExLHRoaXMpO18ucWwodGhpcy5hLCJoYXNoY2hhbmdlIix0aGlzLmIsITEsdGhpcyl9O18ubSh4eixfLkNsKTtfLmc9eHoucHJvdG90eXBlO18uZy5YdD0hMTtfLmcudm09ITA7Xy5nLlduPSIvIjtfLmcucmI9ZnVuY3Rpb24oYSl7YSE9dGhpcy5YdCYmKHRoaXMuWHQ9YSkmJnRoaXMuZGlzcGF0Y2hFdmVudChuZXcgd3oodGhpcy5nZXRUb2tlbigpLCExKSl9O18uZy5nZXRUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZtP3l6KHRoaXMpOnRoaXMuZj90aGlzLmYuYih0aGlzLlduLHRoaXMuYS5sb2NhdGlvbik6dGhpcy5hLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cih0aGlzLlduLmxlbmd0aCl9OwpfLmcuc2V0VG9rZW49ZnVuY3Rpb24oYSxiKXthIT10aGlzLmdldFRva2VuKCkmJih0aGlzLmEuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCxifHx0aGlzLmEuZG9jdW1lbnQudGl0bGV8fCIiLHNnYSh0aGlzLGEpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IHd6KGEsITEpKSl9O18uZy5vYj1mdW5jdGlvbigpe3dsKHRoaXMuYSwicG9wc3RhdGUiLHRoaXMuYiwhMSx0aGlzKTt0aGlzLnZtJiZ3bCh0aGlzLmEsImhhc2hjaGFuZ2UiLHRoaXMuYiwhMSx0aGlzKX07dmFyIHl6PWZ1bmN0aW9uKGEpe2lmKGEudm0pe2E9YS5hLmxvY2F0aW9uLmhyZWY7dmFyIGI9YS5pbmRleE9mKCIjIik7cmV0dXJuIDA+Yj8iIjphLnN1YnN0cmluZyhiKzEpfXJldHVybiBudWxsfSxzZ2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS52bT8iIyIrYjphLmY/YS5mLmEoYixhLlduLGEuYS5sb2NhdGlvbik6YS5XbitiK2EuYS5sb2NhdGlvbi5zZWFyY2h9OyB4ei5wcm90b3R5cGUuYj1mdW5jdGlvbihhKXtpZih0aGlzLlh0KXt2YXIgYj15eih0aGlzKTtpZigicG9wc3RhdGUiPT1hLnR5cGV8fGIhPXRoaXMubyl0aGlzLm89Yix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IHd6KHRoaXMuZ2V0VG9rZW4oKSwhMCkpfX07CnZhciB6ej1mdW5jdGlvbihhKXtfLkNsLmNhbGwodGhpcyk7YT10aGlzLmE9bmV3IHh6KGEpOzAhPWEudm0mJih3bChhLmEsImhhc2hjaGFuZ2UiLGEuYiwhMSxhKSxhLnZtPSExKTt0aGlzLmEuZz10aGlzO18uRGsodGhpcyx0aGlzLmEpO3RoaXMuYj1uZXcgXy5wbX07Xy5tKHp6LF8uQ2wpO18uZz16ei5wcm90b3R5cGU7Xy5nLnJiPWZ1bmN0aW9uKGEpe3RoaXMuYS5yYihhKX07Xy5nLnhCPWZ1bmN0aW9uKGEpe3RoaXMuYS5Xbj1hfTtfLmcuZ2V0VG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmdldFRva2VuKCl9O18uZy5zZXRUb2tlbj1mdW5jdGlvbihhLGIpe18ud20odGhpcy5iLGZ1bmN0aW9uKCl7dGhpcy5hLnNldFRva2VuKGEsYil9LHRoaXMpfTtfLmcuekE9ZnVuY3Rpb24oKXt0aGlzLmIuY2FsbGJhY2soKX07CnZhciBBej1mdW5jdGlvbihhKXtfLkNsLmNhbGwodGhpcyk7dGhpcy5mPWE7dGhpcy5iPXRoaXMuYT1udWxsfTtfLm0oQXosXy5DbCk7Xy5nPUF6LnByb3RvdHlwZTtfLmcucmI9ZnVuY3Rpb24oKXt9O18uZy54Qj1mdW5jdGlvbihhKXt0aGlzLmI9YX07Xy5nLmdldFRva2VuPWZ1bmN0aW9uKCl7dGhpcy5hfHwodGhpcy5hPXRoaXMuZi5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHIodGhpcy5iLmxlbmd0aCkpO3JldHVybiB0aGlzLmF9O18uZy5zZXRUb2tlbj1mdW5jdGlvbihhKXt0aGlzLmE9YX07Xy5nLnpBPWZ1bmN0aW9uKCl7fTsKYXQoe1pjOlt7aWQ6RWJhLGNhbGxiYWNrOmZ1bmN0aW9uKGEpe3ZhciBiPW11KGEpLGM9YS5nZXQoS2kpLmdldFdpbmRvdygpLmdldFdpbmRvdygpLGQ9d2luZG93O2M9ZC5oaXN0b3J5JiZkLmhpc3RvcnkucHVzaFN0YXRlP25ldyB6eihjKTpuZXcgQXooYyk7Yy54QihfLnZ6KF8uWHgoYSkpKTtfLndtKGIuYigiaXZyIiksYy56QSxjKTtyZXR1cm4gY319XSxhOltfLkJpLEtpXX0pO3ZhciBCej1mdW5jdGlvbihhKXt0aGlzLmI9YX07Xy5tKEJ6LF8ubm8pO0J6LnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEpe3ZhciBiPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hlY2tDb25uZWN0aW9uIik7YiYmXy5TcChhLCJjaGVja0Nvbm5lY3Rpb24iLGIudmFsdWUpOyhiPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hlY2tlZERvbWFpbnMiKSkmJl8uU3AoYSwiY2hlY2tlZERvbWFpbnMiLGIudmFsdWUpO3RoaXMuYiYmKGI9d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwc3RNc2ciKSkmJl8uU3AoYSwicHN0TXNnIixiLnZhbHVlKX07CnZhciBEejtfLkN6PWZ1bmN0aW9uKGEpe3RoaXMuYT1hfHx7Y29va2llOiIifX07Xy5nPV8uQ3oucHJvdG90eXBlO18uZy5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93Lm5hdmlnYXRvci5jb29raWVFbmFibGVkfTtfLmcuc2V0PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZigvWzs9XHNdLy50ZXN0KGEpKXRocm93IEVycm9yKCJDYWAiK2EpO2lmKC9bO1xyXG5dLy50ZXN0KGIpKXRocm93IEVycm9yKCJEYWAiK2IpO18uQ2EoYyl8fChjPS0xKTtlPWU/Ijtkb21haW49IitlOiIiO2Q9ZD8iO3BhdGg9IitkOiIiO2Y9Zj8iO3NlY3VyZSI6IiI7Yz0wPmM/IiI6MD09Yz8iO2V4cGlyZXM9IisobmV3IERhdGUoMTk3MCwxLDEpKS50b1VUQ1N0cmluZygpOiI7ZXhwaXJlcz0iKyhuZXcgRGF0ZSgoMCxfLlVhKSgpKzFFMypjKSkudG9VVENTdHJpbmcoKTt0aGlzLmEuY29va2llPWErIj0iK2IrZStkK2MrZn07Cl8uZy5nZXQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YSsiPSIsZD0odGhpcy5hLmNvb2tpZXx8IiIpLnNwbGl0KCI7IiksZT0wLGY7ZTxkLmxlbmd0aDtlKyspe2Y9KDAsXy5HYikoZFtlXSk7aWYoMD09Zi5sYXN0SW5kZXhPZihjLDApKXJldHVybiBmLnN1YnN0cihjLmxlbmd0aCk7aWYoZj09YSlyZXR1cm4iIn1yZXR1cm4gYn07Xy5nLnJlbW92ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5DYSh0aGlzLmdldChhKSk7dGhpcy5zZXQoYSwiIiwwLGIsYyk7cmV0dXJuIGR9O18uZy5DZT1mdW5jdGlvbigpe3JldHVybiBEeih0aGlzKS5rZXlzfTtfLmcuWGI9ZnVuY3Rpb24oKXtyZXR1cm4gRHoodGhpcykudmFsdWVzfTtfLmcueWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmNvb2tpZT8odGhpcy5hLmNvb2tpZXx8IiIpLnNwbGl0KCI7IikubGVuZ3RoOjB9OwpfLmcuSGs9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPUR6KHRoaXMpLnZhbHVlcyxjPTA7YzxiLmxlbmd0aDtjKyspaWYoYltjXT09YSlyZXR1cm4hMDtyZXR1cm4hMX07Xy5nLmNsZWFyPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPUR6KHRoaXMpLmtleXMsYj1hLmxlbmd0aC0xOzA8PWI7Yi0tKXRoaXMucmVtb3ZlKGFbYl0pfTtEej1mdW5jdGlvbihhKXthPShhLmEuY29va2llfHwiIikuc3BsaXQoIjsiKTtmb3IodmFyIGI9W10sYz1bXSxkLGUsZj0wO2Y8YS5sZW5ndGg7ZisrKWU9KDAsXy5HYikoYVtmXSksZD1lLmluZGV4T2YoIj0iKSwtMT09ZD8oYi5wdXNoKCIiKSxjLnB1c2goZSkpOihiLnB1c2goZS5zdWJzdHJpbmcoMCxkKSksYy5wdXNoKGUuc3Vic3RyaW5nKGQrMSkpKTtyZXR1cm57a2V5czpiLHZhbHVlczpjfX07Xy5Fej1uZXcgXy5DeigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5kb2N1bWVudD9udWxsOndpbmRvdy5kb2N1bWVudCk7Xy5Fei5iPTM5NTA7CnZhciBGej1mdW5jdGlvbihhKXt0aGlzLmI9YX07Xy5tKEZ6LF8ubm8pO0Z6LnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEpe18uaG4odGhpcy5mKCksZnVuY3Rpb24oYixjKXtFcChhLmEsYyxiKX0pfTtGei5wcm90b3R5cGUudz1mdW5jdGlvbigpe3JldHVybltTZV19O0Z6LnByb3RvdHlwZS5qYT1mdW5jdGlvbihhKXthLmxlbmd0aCYmKGE9YVswXSxfLnIoYSwxKT90aGlzLmI9bnVsbDpfLnIoYSwyKSYmKHRoaXMuYj1fLnIoYSwyKSkpfTtGei5wcm90b3R5cGUuZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmI/e1RMOnRoaXMuYn06e319Owp2YXIgSHo9ZnVuY3Rpb24oYSxiLGMpe2MuZGlzcGxheU5hbWU9YTtKdi5TYigpLnJlZ2lzdGVyKGEsYyk7Yy5UYT1jLlRhfHxfLk1qKGJ8fHt9KTtjLmNyZWF0ZT1mdW5jdGlvbihhLGIsZil7dmFyIGQ9bmV3IEd6KGEsYixmLGMpO3JldHVybiBfLndtKFd2KGEsYyxkKSxmdW5jdGlvbihhKXtpZihkLmEpZm9yKHZhciBiIGluIGQuYSlhLlp2KGIsZC5hW2JdKTtyZXR1cm4gYX0pfX0sR3o9ZnVuY3Rpb24oYSxiLGMpe3RoaXMua2V5PWE7dGhpcy5vPWM7dGhpcy5RYT1iO3RoaXMuYT10aGlzLmI9bnVsbH07Xy5tKEd6LFh2KTtfLmc9R3oucHJvdG90eXBlO18uZy5nZXRDb250ZXh0PWZ1bmN0aW9uKGEpe3JldHVybiBBdih0aGlzLlFhLGEpfTtfLmcuZ2V0RGF0YT1mdW5jdGlvbihhKXt0aGlzLmJ8fCh0aGlzLmI9bmV3IF8uU3codGhpcy5RYSkpO3JldHVybiB0aGlzLmIuZ2V0RGF0YShhKX07Xy5nLlp2PWZ1bmN0aW9uKGEsYil7dGhpcy5hfHwodGhpcy5hPXt9KTt0aGlzLmFbYV09Yn07IF8uZy54aj1mdW5jdGlvbihhKXt2YXIgYj10aGlzO3JldHVybiBfLk1sKF8uUngodGhpcy5RYSxhLHRoaXMuUGUoKSx0aGlzLmtleSksZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIFF4JiYoYS5tZXNzYWdlKz0iIHJlcXVlc3RlZCBieSAiK2IpO3JldHVybiBhfSl9O18uZy5sbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlFhfTsKXy5Jej1WKCJZUFBSWCIsIllQUFJYIixbXSk7Xy5Kej1mdW5jdGlvbihhKXtfLkp6LiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYT1uZXcgXy5xZX07Xy5tKF8uSnosU3gpO0h6KF8uSXose30sXy5Keik7Xy5Kei5wcm90b3R5cGUuSmM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLkpjKCl9O18uS3o9cXgoIk9VeDRvIiwiT1V4NG8iLFtfLkJpXSk7Xy5Mej1mdW5jdGlvbihhKXtfLkx6LiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuZz1hLmlhLnpiLmNjKCk7dGhpcy5qYT10aGlzLmcuSWIoKS5ib2R5O3RoaXMuaT10aGlzLmcuYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVElUTEUiKVswXTt0aGlzLmI9bnVsbH07Xy5tKF8uTHosXy5Udik7Xy5oeShfLkt6LHtpYTp7emI6Xy5CaX19LF8uTHopO18uTHoucHJvdG90eXBlLnc9ZnVuY3Rpb24oKXt9O18uTHoucHJvdG90eXBlLmM9Xy5IYTtfLkx6LnByb3RvdHlwZS5mPV8uSGE7CnZhciB0Z2E9e1B3OiJzaWduaW4vdjIvdXNlcm5hbWVyZWNvdmVyeS9jaGFsbGVuZ2UvaXBwIixPdzoic2lnbmluL3YyL3VzZXJuYW1lcmVjb3ZlcnkvY2hhbGxlbmdlL2lwZSIsTnc6InNpZ25pbi92Mi91c2VybmFtZXJlY292ZXJ5L2NoYWxsZW5nZS9jYXB0Y2hhIn0sTXo9e0pDOiJzaWduaW4vdjIvY2hhbGxlbmdlL3NlbGVjdGlvbiIsS0M6InNpZ25pbi92Mi9yZWNvdmVyeS9idW1wIixGQzoic2lnbmluL3YyL2NoYWxsZW5nZS9wd2QiLE9DOiJzaWduaW4vdjIvc2wvcHdkIixOdzoic2lnbmluL3YyL2NoYWxsZW5nZS9jYXB0Y2hhIixQQzoic2lnbmluL3YyL2NoYWxsZW5nZS90b3RwIix0Qzoic2lnbmluL3YyL2NoYWxsZW5nZS9pdGYiLG5DOiJzaWduaW4vdjIvY2hhbGxlbmdlL2JjIixvQzoic2lnbmluL3YyL2NoYWxsZW5nZS9jcCIsVVE6ImNoYWxsZW5nZXlvdXR1YmUiLHVDOiJzaWduaW4vdjIvY2hhbGxlbmdlL2FjZCIsUlE6InNpZ25pbi92Mi9jaGFsbGVuZ2UvbGxkIix3Qzoic2lnbmluL3YyL2NoYWxsZW5nZS9sbCIsCnhDOiJzaWduaW4vdjIvY2hhbGxlbmdlL2twZSIseUM6InNpZ25pbi92Mi9jaGFsbGVuZ2Uva3BwIix6Qzoic2lnbmluL3YyL2NoYWxsZW5nZS9ybiIsdkM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvZG9iIixPdzoic2lnbmluL3YyL2NoYWxsZW5nZS9pcGUiLFB3OiJzaWduaW4vdjIvY2hhbGxlbmdlL2lwcCIscEM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvaWFlIixxQzoic2lnbmluL3YyL2NoYWxsZW5nZS9pYWUvdmVyaWZ5IixyQzoic2lnbmluL3YyL2NoYWxsZW5nZS9pYXAiLHNDOiJzaWduaW4vdjIvY2hhbGxlbmdlL2lhcC92ZXJpZnkiLFBROiJpZHZyZWVuYWJsZXNlbmQiLFFROiJpZHZyZWVuYWJsZXZlcmlmeSIsQkM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvbXIiLERDOiJzaWduaW4vdjIvY2hhbGxlbmdlL29vdHAiLEdDOiJzaWduaW4vdjIvY2hhbGxlbmdlL3JrIixIQzoic2lnbmluL3YyL2NoYWxsZW5nZS9zcSIsbUM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvYXoiLFNROiJzaWduaW4vdjIvY2hhbGxlbmdlL3Nkc2wiLApwUToiYWRkcmVhY2hhYmxlcGhvbmVhY2NlcHQiLHFROiJhZGRyZWFjaGFibGVwaG9uZWFjY2VwdC9tb3Jlb3B0aW9ucyIsclE6ImFkZHJlYWNoYWJsZXBob25ldmVyaWZ5IixuUToiYWRkZGV2aWNlcGhvbmUvbWFpbmNvbnNlbnQiLG9ROiJhZGRkZXZpY2VwaG9uZS9tb3Jlb3B0aW9ucyIsc1E6ImFkZHJlY292ZXJ5b25seXBob25lL21haW4iLHRUOiJzaWduaW5jb25zZW50IixWUToiY2hhbmdlcGFzc3dvcmQiLGxROiJhY2NvdW50bG9ja2Rvd24iLHdSOiJzaWduaW4vdjIvZGlzYWJsZWQvZXhwbGFuYXRpb24iLHZSOiJzaWduaW4vdjIvZGlzYWJsZWQvYXBwZWFsL2NvbnRhY3RhZGRyZXNzIix0Ujoic2lnbmluL3YyL2Rpc2FibGVkL2FwcGVhbC9hZGRpdGlvbmFsaW5mb3JtYXRpb24iLHVSOiJzaWduaW4vdjIvZGlzYWJsZWQvYXBwZWFsL2NvbmZpcm1hdGlvbiIseFE6ImF1dGhvcml6ZWRldmljZSIsZ1Q6ImRlbmllZHNpZ25pbnJlamVjdGVkIixoVDoicmVzZXRwaW4iLE9ROiJjYXB0Y2hhcmVlbmFibGUiLAplUjoiY29uZmlybXJlc2V0cGluIixYUjoiZ2FwbHVzdG9zIixSVDoidG9zdG9zYW1scmVkaXJlY3QiLGZSOiJuZXdmZWF0dXJlcyIseVE6InNwZWVkYnVtcC9zd2l0Y2h0b2dwcm9tcHQiLHBVOiJjb25zZW50Y29uZmlybWF0aW9uIixxVToic3luY3dlbGNvbWUiLFpUOiJhcHBwZXJtaXNzaW9ucyIsJFQ6ImRpc2NsYWltZXIiLG9VOiJwbGF0Zm9ybWRpc2NsYWltZXIiLGxVOiJzcGVlZGJ1bXAva2lkc2lnbnVwIixoVToic3BlZWRidW1wL2tpZHNpZ251cC9wYXJlbnRiaXJ0aGRheSIsZlU6InNwZWVkYnVtcC9raWRzaWdudXAvZmFtaWx5IixnVToic3BlZWRidW1wL2tpZHNpZ251cC9pbmZvIixkVToic3BlZWRidW1wL2tpZHNpZ251cC9kbnAiLGJVOiJzcGVlZGJ1bXAva2lkc2lnbnVwL2NvbnNlbnQiLGlVOiJzcGVlZGJ1bXAva2lkc2lnbnVwL3BheW1lbnQiLG1VOiJzcGVlZGJ1bXAva2lkc2lnbnVwL3N1Ym1pdCIsY1U6InNwZWVkYnVtcC9raWRzaWdudXAvY3JlYXRlZCIsa1U6InNwZWVkYnVtcC9raWRzaWdudXAvc2V0dGluZ3MiLApuVToic3BlZWRidW1wL2tpZHNpZ251cC91cHNlbGwiLGVVOiJraWRzaWdudXBlcnJvciIsalU6InNwZWVkYnVtcC9raWRzaWdudXAvcXVpdCIsYVU6InNwZWVkYnVtcC9raWRmb3JjZWdyYWR1YXRpb24iLHNTOiJjb25zZW50Iix5UjoiZW5kc2Vzc2lvbiIsdVU6InNwZWVkYnVtcC92ZXJpZnlhY2NvdW50c3RhcnQiLHRVOiJzcGVlZGJ1bXAvdmVyaWZ5YWNjb3VudGVudGVycGluIn0sdWdhPXtDUToiYmxlZW5hYmxlIixEUToiYmxlaW5zdHJ1Y3Rpb25zbm90cGFpcmVkIixFUToiYmxlaW5zdHJ1Y3Rpb25zcGFpcmVkIixGUToiYmxlcGFpcmluZ21vZGUiLEhROiJibGVwaW5wYWlyaW5nIixKUToiYmxlcHJvY2Vzc2luZyIsS1E6ImJsZXNlbGVjdGRldmljZSIsVFE6InNpZ25pbi92Mi9jaGFsbGVuZ2Uvc2siLGhSOiJjcnlwdG90b2tlbmVycm9yIixPUzoibXVsdGl0cmFuc3BvcnQiLFRTOiJuZmNlbmFibGUiLFZTOiJuZmNpbnN0cnVjdGlvbnMifSx2Z2E9e21DOiJzaWduaW4vdjIvY2hhbGxlbmdlL2F6IiwKbkM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvYmMiLE53OiJzaWduaW4vdjIvY2hhbGxlbmdlL2NhcHRjaGEiLHBDOiJzaWduaW4vdjIvY2hhbGxlbmdlL2lhZSIscUM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvaWFlL3ZlcmlmeSIsckM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvaWFwIixzQzoic2lnbmluL3YyL2NoYWxsZW5nZS9pYXAvdmVyaWZ5IixPdzoic2lnbmluL3YyL2NoYWxsZW5nZS9pcGUiLFB3OiJzaWduaW4vdjIvY2hhbGxlbmdlL2lwcCIsdEM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvaXRmIix1Qzoic2lnbmluL3YyL2NoYWxsZW5nZS9hY2QiLG9DOiJzaWduaW4vdjIvY2hhbGxlbmdlL2NwIix2Qzoic2lnbmluL3YyL2NoYWxsZW5nZS9kb2IiLHdDOiJzaWduaW4vdjIvY2hhbGxlbmdlL2xsIix6Qzoic2lnbmluL3YyL2NoYWxsZW5nZS9ybiIsRkM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvcHdkIix4Qzoic2lnbmluL3YyL2NoYWxsZW5nZS9rcGUiLHlDOiJzaWduaW4vdjIvY2hhbGxlbmdlL2twcCIsIEhDOiJzaWduaW4vdjIvY2hhbGxlbmdlL3NxIixCQzoic2lnbmluL3YyL2NoYWxsZW5nZS9tciIsREM6InNpZ25pbi92Mi9jaGFsbGVuZ2Uvb290cCIsUEM6InNpZ25pbi92Mi9jaGFsbGVuZ2UvdG90cCIsR0M6InNpZ25pbi92Mi9jaGFsbGVuZ2UvcmsiLEpDOiJzaWduaW4vdjIvY2hhbGxlbmdlL3NlbGVjdGlvbiIsS0M6InNpZ25pbi92Mi9yZWNvdmVyeS9idW1wIixPQzoic2lnbmluL3YyL3NsL3B3ZCJ9Owp2YXIgTno9cXgoIndzOVRsYyIsIndzOVRsYyIsW10pO3R4KE56LCJ3STdTZmMiKTtfLk96PXF4KCJ3STdTZmMiLCJ3STdTZmMiLFtOel0pO3ZhciBQej1xeCgiSVpUNjMiLCJJWlQ2MyIsW10pO3ZhciBRej1xeCgiUHJQWVJkIiwiUHJQWVJkIixbUHpdKSxSej1WKCJoYzZVYmQiLCJoYzZVYmQiLFtRel0pLHdnYT1xeCgiUUloRnIiLCJRSWhGciIsW1F6XSk7VigiRkVXRDciLCJGRVdENyIsW1J6XSk7dmFyIHhnYT1xeCgicTB4VGlmIiwicTB4VGlmIixbUXpdKTt2YXIgU3o9cXgoIlNwc2ZTYiIsIlNwc2ZTYiIsW1F6LFJ6XSkseWdhLFR6LFV6O3R4KFN6LCJvMDJKaWUiKTt5Z2E9cXgoImU1cUZMYyIsImU1cUZMYyIsW10pO1R6PXF4KCJwQjZacWQiLCJwQjZacWQiLFtdKTtVej1xeCgibzAySmllIiwibzAySmllIixbU3pdKTtfLlZ6PXF4KCJ6Yk1MM2MiLCJ6Yk1MM2MiLFtUeixVeixfLnosXy5CaV0pO3R4KF8uVnosInplbXU1Iik7dmFyIHpnYT1WKCJVYXM5SGQiLCJVYXM5SGQiLFtfLlZ6XSk7Xy5Xej1xeCgiT1VBS2hiIiwiT1VBS2hiIixbXy5WeixfLk96XSk7Xy5Yej1xeCgidXVid0VkIiwidXVid0VkIixbXy5BaSxfLmh6LF8uV3osXy5Pel0pO18uWXo9cXgoInFEcnVNIiwicURydU0iLFtFaSxfLld6XSk7Xy5aej1xeCgiV3NZV01iIiwiV3NZV01iIixbXy5Xel0pO18uJHo9cXgoIklWbEtjYiIsIklWbEtjYiIsW18ueixfLmp6LF8uV3pdKTtfLmFBPXF4KCJDUlIwbWYiLCJDUlIwbWYiLFtfLiR6LF8uWHosXy5XeixfLll6LF8uWnpdKTtfLmJBPXF4KCJEZUp5S2YiLCJEZUp5S2YiLFtfLld6LF8uYUEsXy5CaV0pO18uY0E9ZnVuY3Rpb24oYSl7Xy5jQS4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmE9YS5sLm5hdmlnYXRpb247dGhpcy5nPWEubC5FZDtfLlV2KHRoaXMsdGhpcy5iKCkpfTtfLm0oXy5jQSxfLlR2KTtfLmh5KF8uYkEse2w6e25hdmlnYXRpb246Xy5XeixFZDpfLmFBfSxpYTp7emI6Xy5CaX19LF8uY0EpO18uY0EucHJvdG90eXBlLmI9ZnVuY3Rpb24oKXt9O18uY0EucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Xy5jQS5wcm90b3R5cGUuZj1mdW5jdGlvbigpe307Cl8uZEE9cXgoIlhHVHdXZCIsIlhHVHdXZCIsW18uV3osXy5Pel0pO3ZhciBlQT1mdW5jdGlvbihhKXtlQS4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmc9YS5sLm5hdmlnYXRpb247dGhpcy5jPWEubC53aW5kb3cuZ2V0KCk7dGhpcy53YT1fLmNwKG5ldyBfLmFhKHRoaXMuYy5sb2NhdGlvbiksIi9TZXJ2aWNlTG9naW4iKS50b1N0cmluZygpO3RoaXMuamE9Xy5kcChuZXcgXy5hYSgiL1Bhc3NpdmVMb2dpblByb2JlciIpLChuZXcgXy5hYSh0aGlzLmMubG9jYXRpb24pKS5hKS50b1N0cmluZygpO3RoaXMuZj1fLkV6LmdldCgiQVBJU0lEIik7dGhpcy5iPSExO3RoaXMuYT1uZXcgXy5FbCg1RTMpOyhuZXcgXy5Dcih0aGlzKSkubGlzdGVuKHRoaXMuYSwidGljayIsdGhpcy53KTtfLkRrKHRoaXMsdGhpcy5hKX07Xy5tKGVBLF8uVHYpO18uaHkoXy5kQSx7bDp7bmF2aWdhdGlvbjpfLld6LHdpbmRvdzpfLk96fX0sZUEpOwplQS5wcm90b3R5cGUudz1mdW5jdGlvbigpe3ZhciBhPV8uRXouZ2V0KCJBUElTSUQiKTthPT10aGlzLmZ8fHRoaXMuYnx8KHRoaXMuZj1hLF8uVG8odGhpcy5qYSwoMCxfLmwpKHRoaXMuaSx0aGlzKSkpfTtlQS5wcm90b3R5cGUuaT1mdW5jdGlvbihhKXthPWEudGFyZ2V0O18uWm8oYSkmJiJPSyI9PSRvKGEpJiYodGhpcy5hLnN0b3AoKSx0aGlzLmJ8fHRoaXMuZy5yZWRpcmVjdCh0aGlzLndhKSl9O2VBLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3RoaXMuYj0hMTt0aGlzLmEuc3RhcnQoKX07ZUEucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLmI9ITA7dGhpcy5hLnN0b3AoKX07CnZhciBBZ2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJDYW4ndCBsb2FkIHRoaXMgcGFnZS4iKX0sQmdhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiVHJ5IGFnYWluIil9O18ueUE9ZnVuY3Rpb24oYSl7Xy5YKHZvaWQgMCx2b2lkIDAsYSl9O18uekE9ZnVuY3Rpb24oYSxiKXtfLlgoYSx2b2lkIDAsYil9O18uQUE9ZnVuY3Rpb24oYSxiKXtfLmh5KGEsdm9pZCAwLGIpfTt2YXIgQkE9cXgoIkwxQUFrYiIsIkwxQUFrYiIsW10pO3ZhciBDZ2EsQ0EsREEsRGdhLEdBLEVnYTtDZ2E9Vigid0dNN0pjIiwid0dNN0pjIixbXSk7Q0E9VigiVkJlM1RiIiwiVkJlM1RiIixbXSk7REE9cXgoIk82eThlZCIsIk82eThlZCIsW18uQmldKTtfLkVBPXF4KCJhVzNwWSIsImFXM3BZIixbQkFdKTtfLkZBPXF4KCJWM2RET2IiLCJWM2RET2IiLFtdKTtEZ2E9cXgoInYyUDhjYyIsInYyUDhjYyIsW18uQmksXy5FQV0pO0dBPVYoIkE0VVRDYiIsIkE0VVRDYiIsW10pO0VnYT1WKCJGYmJha2UiLCJGYmJha2UiLFtHQV0pOwpfLkhBPXF4KCJJNllEZ2QiLCJJNllEZ2QiLFtfLnosREFdKTtfLklBPXF4KCJWVVVvQ2YiLCJWVVVvQ2YiLFtfLkFpLF8ueixfLld6LF8uSEFdKTt2YXIgSkE9ZnVuY3Rpb24oYSl7Xy5Udi5jYWxsKHRoaXMsYS5aYSk7dGhpcy5hPWEuaWEudGU7dGhpcy5mPWEuaWEuZGE7dGhpcy5iPWEubC5uYXZpZ2F0aW9uO3RoaXMuYz1hLmwuRXc7RmdhKHRoaXMpfTtfLnBhKEpBLF8uVHYpO0pBLlRhPWZ1bmN0aW9uKCl7cmV0dXJue2lhOnt0ZTpfLkFpLGRhOl8uen0sbDp7bmF2aWdhdGlvbjpfLld6LEV3Ol8uSEF9fX07dmFyIEZnYT1mdW5jdGlvbihhKXttZWEoaG8oYS55YygpKSwoMCxfLmwpKGZ1bmN0aW9uKCl7Xy4keSh0aGlzLmEsZ2dhKTt0aGlzLmEuYSgpO3ZhciBhPXttZXNzYWdlOl8uRyh0aGlzLmYsQWdhKSxZaTpfLkcodGhpcy5mLEJnYSksWGk6KDAsXy5sKSh0aGlzLmIuYix0aGlzLmIpLGR1cmF0aW9uOi0xLHBvc2l0aW9uOjJ9O3RoaXMuYy5zaG93KGEpfSxhKSl9O18uQUEoXy5JQSxKQSk7Cl8uS0E9cXgoInpVa0JvZSIsInpVa0JvZSIsW10pO3ZhciBMQT1mdW5jdGlvbihhKXtMQS4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKX07Xy5tKExBLF8uVHYpO18uaHkoXy5LQSx7fSxMQSk7Xy5NQT1xeCgiUUxwVE9kIiwiUUxwVE9kIixbXSk7Xy5OQT1xeCgiZlRmR08iLCJmVGZHTyIsW10pO3R4KF8uTkEsIm9XT2xEYiIpO18uT0E9cXgoInp5MHZOYiIsInp5MHZOYiIsW18uT3osXy5NQV0pO3R4KF8uT0EsIm9XT2xEYiIpO18uUEE9cXgoIm9XT2xEYiIsIm9XT2xEYiIsW18uTkFdKTtfLkdnYT1xeCgiYklmOGkiLCJiSWY4aSIsW18uTkFdKTtfLlFBPWZ1bmN0aW9uKCl7fTtfLnZ4KF8uUUEsXy5QQSxfLk5BKTt2YXIgUkE9ZnVuY3Rpb24oYSl7UkEuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSl9O18ubShSQSxfLlR2KTtfLmh5KF8uTkEse30sUkEpO1JBLnByb3RvdHlwZS5jPV8uSGE7UkEucHJvdG90eXBlLmE9Xy5IYTt2YXIgVEE9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93O2lmKF8uQ2MmJl8uWGMmJmEpe2EuZm9jdXMoKTt2YXIgYz0wLGQ9bnVsbDtkPWEuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtiLmNsb3NlZHx8NT09Yz8oYS5jbGVhckludGVydmFsKGQpLFNBKGIpKTooYi5jbG9zZSgpLGMrKyl9LDE1MCl9ZWxzZSBiLmNsb3NlKCksU0EoYil9LFNBPWZ1bmN0aW9uKGEpe2EuY2xvc2VkfHxhLmRvY3VtZW50JiZhLmRvY3VtZW50LmJvZHkmJl8udnIoYS5kb2N1bWVudC5ib2R5LCJQbGVhc2UgY2xvc2UgdGhpcyB3aW5kb3cuIil9Owp2YXIgVUE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3dpbmRvdy5uYW1lPSJwbWgiK1N0cmluZygyMTQ3NDgzNjQ3KndpbmRvdy5zaGluZGlnLnJhbmRvbSgpfDApO3ZhciBrPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiPXdpbmRvdy5nYWRnZXRzLnJwYy5nZXRPcmlnaW4oYik7YT1iKyhhPyI/IjoiIyIpK2M7Yz1udWxsO2UmJihjPWUpO2U9dm9pZCAwO2YmJihlPWYpO2suYXBwZW5kQ2hpbGQod2luZG93LmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGEpKTtrLnNldEF0dHJpYnV0ZSgiaWQiLCJwb3N0bWVzc2FnZS1oZWxsbyIpO0hnYShhLGQsYixjLGUpfSxWQT1mdW5jdGlvbihhKXthPW5ldyBfLmFhKGEpO18uQ3AoYSwiJiIrd2luZG93Lm5hbWUsITApO3ZhciBiPWEuYS5YYigicGFyZW50Iik7YS5hLnJlbW92ZSgicGFyZW50Iik7MT09Yi5sZW5ndGgmJihiPXdpbmRvdy5nYWRnZXRzLnJwYy5nZXRPcmlnaW4oU3RyaW5nKGJbMF0pKSxfLkNwKGEsInBhcmVudCIsCmIpKTthLmEucmVtb3ZlKCImIit3aW5kb3cubmFtZSk7cmV0dXJuIGEudG9TdHJpbmcoKX0sV0E9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsayl7aWYoIWR8fCFkLmRvY3VtZW50LmRvbWFpbilyZXR1cm4hMTt2YXIgbj1WQShTdHJpbmcoZC5kb2N1bWVudC5sb2NhdGlvbi5ocmVmKSk7aWYobi5zdWJzdHIoMCxjLmxlbmd0aCkhPWMpcmV0dXJuITE7Yz13aW5kb3cuZ2FkZ2V0cy51dGlsLmdldFVybFBhcmFtZXRlcnMobik7aWYoIWJ8fCFjLnBhcmVudHx8YiE9d2luZG93LmdhZGdldHMucnBjLmdldE9yaWdpbihTdHJpbmcoYy5wYXJlbnQpKSlyZXR1cm4hMTtpZighZSlyZXR1cm4gXy5GYSgib2F1dGgyY2FsbGJhY2tVcmwiLGEsdm9pZCAwKSxkLm9hdXRoMnZlcmlmeS5jYWxsKGQsU3RyaW5nKHdpbmRvdy5uYW1lKSxrKT8hMDohMTtkLm9hdXRoMmNhbGxiYWNrLmNhbGwoZCxhKTt0cnl7ZigpfWNhdGNoKHApe31yZXR1cm4hMH0sWEE9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHdpbmRvdy5wYXJlbnQhPQp3aW5kb3d9Y2F0Y2goYSl7fXJldHVybiEwfSxZQT1mdW5jdGlvbigpe3RyeXtyZXR1cm4hIXdpbmRvdy5vcGVuZXJ9Y2F0Y2goYSl7fXJldHVybiEwfSxIZ2E9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0cnl7dmFyIGY9WEEoKSxrPSFmJiZZQSgpLG49ITAscD1udWxsLEE9ZnVuY3Rpb24oKXtuJiZUQShwKX07aWYoIWYmJiFrKXJldHVybjtuPShrfHwhZikmJiJrZWVwX29wZW4iIT09ZTtwPWs/d2luZG93Lm9wZW5lcjp3aW5kb3cucGFyZW50O3ZhciBEPVZBKGIpO3RyeXtpZihkKXt2YXIgRj1wLmZyYW1lc1tkXTtpZihXQShhLGMsRCxGLCFrLEEsZSkpcmV0dXJufWZvcihiPTA7YjxwLmZyYW1lcy5sZW5ndGg7KytiKWlmKEY9cC5mcmFtZXNbYl0sV0EoYSxjLEQsRiwhayxBLGUpKXtuPSExO2JyZWFrfX1jYXRjaChJKXt9fWNhdGNoKEkpe31BKCl9OwpfLkZhKCJwb3N0bWVzc2FnZS5vbkxvYWQiLGZ1bmN0aW9uKCl7dmFyIGE9InRydWUiPT13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVycm9yIikudmFsdWUsYj13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9yaWdpbiIpLnZhbHVlLGM9d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXNwb25zZS1mb3JtLWVuY29kZWQiKS52YWx1ZSxkPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVsYXktZW5kcG9pbnQiKS52YWx1ZSxlPW51bGwsZj13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb3h5Iik7ZiYmZi52YWx1ZSYmKGU9Zi52YWx1ZSk7Zj13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFmdGVyLXJlZGlyZWN0Iik7dmFyIGs9bnVsbDtmJiZmLnZhbHVlJiYoaz1mLnZhbHVlKTtVQShhLGIsYyxkLGUsayl9LHZvaWQgMCk7IF8uRmEoInBvc3RtZXNzYWdlLmNsb3NlUG9wdXAiLGZ1bmN0aW9uKCl7dmFyIGE9bnVsbDt0cnl7dmFyIGI9WEEoKSxjPSFiJiZZQSgpO2lmKCFiJiYhYylyZXR1cm47YT1jP3dpbmRvdy5vcGVuZXI6d2luZG93LnBhcmVudH1jYXRjaChkKXt9VEEoYSl9LHZvaWQgMCk7CnZhciBaQT17elQ6e319LCRBPXt9LGFCLGJCPWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuLTE7aWYoYS5pbmRleE9mKXJldHVybiBhLmluZGV4T2YoYix2b2lkIDApO2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sY0I9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7fWlmKCFhKXRocm93IkNoaWxkIGNsYXNzIGNhbm5vdCBiZSBlbXB0eS4iO2lmKCFiKXRocm93IlBhcmVudCBjbGFzcyBjYW5ub3QgYmUgZW1wdHkuIjtjLnByb3RvdHlwZT1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hfSxkQj1mdW5jdGlvbihhKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfSxlQj1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYUIpcmV0dXJuIGFCO2E6e3RyeXtpZih3aW5kb3cubG9jYWxTdG9yYWdlKXt2YXIgYT0Kd2luZG93LmxvY2FsU3RvcmFnZTticmVhayBhfX1jYXRjaChiKXt9YT12b2lkIDB9aWYoIWEpcmV0dXJuIGFCPSExO3RyeXthLnNldEl0ZW0oInRlc3QiLCJ0ZXN0IiksYS5yZW1vdmVJdGVtKCJ0ZXN0IiksYUI9ITB9Y2F0Y2goYil7YUI9ITF9cmV0dXJuIGFCfSxmQj1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh3aW5kb3csIkFjdGl2ZVhPYmplY3QiKSYmIXdpbmRvdy5BY3RpdmVYT2JqZWN0fSxnQj1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O3JldHVybiEhYSYmL0VkZ2VcL1xkKy8udGVzdChhKX0saEI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO3JldHVybiAwPmEuaW5kZXhPZigiZWRnZS8iKSYmKC0xPGEuaW5kZXhPZigiY2hyb21lLyIpfHwtMTxhLmluZGV4T2YoImNyaW9zLyIpKX0sSWdhPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsCmI7aWYoYj0hIWEmJi0xIT1hLmluZGV4T2YoIkNyaU9TIikpYj0tMSwoYT1hLm1hdGNoKC9DcmlPU1wvKFxkKykvKSkmJmFbMV0mJihiPSgwLHdpbmRvdy5wYXJzZUludCkoYVsxXSwxMCl8fC0xKSxiPTQ4PmI7cmV0dXJuIGJ9LGlCPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtyZXR1cm4tMTxhLmluZGV4T2YoInNhZmFyaS8iKSYmMD5hLmluZGV4T2YoImNocm9tZS8iKSYmMD5hLmluZGV4T2YoImNyaW9zLyIpJiYwPmEuaW5kZXhPZigiYW5kcm9pZCIpfSxqQj13aW5kb3cuSlNPTixrQj1mdW5jdGlvbihhKXt0aGlzLm89YXx8W107dGhpcy5hPXt9fTsKa0IucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtpZighKDA8PWJCKHRoaXMubyxhKSkpdGhyb3ciVW5yZWNvZ25pemVkIGV2ZW50IHR5cGU6ICIrYTtpZighZEIoYikpdGhyb3ciVGhlIGxpc3RlbmVyIGZvciBldmVudCAnIithKyInIGlzIG5vdCBhIGZ1bmN0aW9uLiI7dGhpcy5hW2FdfHwodGhpcy5hW2FdPVtdKTswPmJCKHRoaXMuYVthXSxiKSYmdGhpcy5hW2FdLnB1c2goYil9O2tCLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7aWYoISgwPD1iQih0aGlzLm8sYSkpKXRocm93IlVucmVjb2duaXplZCBldmVudCB0eXBlOiAiK2E7ZEIoYikmJnRoaXMuYVthXSYmdGhpcy5hW2FdLmxlbmd0aCYmKGI9YkIodGhpcy5hW2FdLGIpLDA8PWImJnRoaXMuYVthXS5zcGxpY2UoYiwxKSl9OwprQi5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihhKXt2YXIgYj1hLnR5cGU7aWYoIShiJiYwPD1iQih0aGlzLm8sYikpKXRocm93IkZhaWxlZCB0byBkaXNwYXRjaCB1bnJlY29nbml6ZWQgZXZlbnQgdHlwZTogIitiO2lmKHRoaXMuYVtiXSYmdGhpcy5hW2JdLmxlbmd0aClmb3IodmFyIGM9MCxkPXRoaXMuYVtiXS5sZW5ndGg7YzxkO2MrKyl0aGlzLmFbYl1bY10oYSl9O1pBPVpBfHx7fTsKWkEuUkk9ZnVuY3Rpb24oYSxiKXtpZighMD09PVpBLiRmKWEoKTtlbHNle3ZhciBjPTIsZD1mdW5jdGlvbigpe2MtLTswPT1jJiYoWkEuJGY9ITAsYSgpKX0sZT1mdW5jdGlvbihhKXtiKGEpfTtzd2l0Y2gobEIoKSl7Y2FzZSAic2Vzc2lvblN0b3JhZ2UiOlpBLkhyPW5ldyBtQjtaQS5Ici5pbml0KGQsZSk7YnJlYWs7Y2FzZSAiaW5NZW1vcnlTdG9yYWdlIjpaQS5Icj1uZXcgbkI7WkEuSHIuaW5pdChkLGUpO2JyZWFrO2RlZmF1bHQ6ZD1FcnJvcigiRWFgIitsQigpKTtiKGQpO3JldHVybn1zd2l0Y2gob0IoKSl7Y2FzZSAibG9jYWxTdG9yYWdlIjpaQS5XbD1uZXcgcEI7WkEuV2wuaW5pdChkLGUpO2JyZWFrO2Nhc2UgImluZGV4ZWREYiI6WkEuV2w9bmV3IHFCO1pBLldsLmluaXQoZCxlKTticmVhaztjYXNlICJjb29raWVTdG9yYWdlIjpaQS5XbD1uZXcgckI7WkEuV2wuaW5pdChkLGUpO2JyZWFrO2RlZmF1bHQ6ZD1FcnJvcigiRWFgIitvQigpKSxiKGQpfX19OwpaQS5QdD1mdW5jdGlvbigpe2lmKCFaQS4kZil0aHJvdyBFcnJvcigiRmEiKTtyZXR1cm4gWkEuV2x9O1pBLll5PWZ1bmN0aW9uKCl7aWYoIVpBLiRmKXRocm93IEVycm9yKCJGYSIpO3JldHVybiBaQS5Icn07dmFyIHBCPWZ1bmN0aW9uKCl7fTtfLmc9cEIucHJvdG90eXBlO18uZy5pbml0PWZ1bmN0aW9uKGEsYil7ZUIoKT8odGhpcy5hPXdpbmRvdy5sb2NhbFN0b3JhZ2UsYSgpKTpiJiZiKEVycm9yKCJHYSIpKX07Xy5nLmdldEl0ZW09ZnVuY3Rpb24oYSxiKXtiKHRoaXMuYS5nZXRJdGVtKGEpKX07Xy5nLnNldEl0ZW09ZnVuY3Rpb24oYSxiLGMpe3ZvaWQgMD09PWJ8fG51bGw9PT1iP3RoaXMuYS5yZW1vdmVJdGVtKGEpOnRoaXMuYS5zZXRJdGVtKGEsYik7YyYmYygpfTtfLmcucmVtb3ZlSXRlbT1mdW5jdGlvbihhLGIpe3RoaXMuYS5yZW1vdmVJdGVtKGEpO2ImJmIoKX07Xy5nLmNsZWFyPWZ1bmN0aW9uKGEpe3RoaXMuYS5jbGVhcigpO2EmJmEoKX07dmFyIHFCPWZ1bmN0aW9uKCl7fTsKXy5nPXFCLnByb3RvdHlwZTtfLmcuaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD13aW5kb3cuaW5kZXhlZERCLm9wZW4oIm9hdXRoIik7ZC5vbnN1Y2Nlc3M9ZnVuY3Rpb24oYil7Yy5hPWIudGFyZ2V0LnJlc3VsdDthKCl9O2Qub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uKGEpe2EudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgib2F1dGgiKX07ZC5vbmVycm9yPWZ1bmN0aW9uKGEpe2E9YS50YXJnZXQuZXJyb3JDb2RlO2ImJmIoRXJyb3IoIkhhYCIrYSkpfX07Xy5nLmdldEl0ZW09ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmEudHJhbnNhY3Rpb24oIm9hdXRoIiwicmVhZHdyaXRlIikub2JqZWN0U3RvcmUoIm9hdXRoIikuZ2V0KGEpO2Mub25zdWNjZXNzPWZ1bmN0aW9uKCl7YihjLnJlc3VsdCl9fTsKXy5nLnNldEl0ZW09ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuYS50cmFuc2FjdGlvbigib2F1dGgiLCJyZWFkd3JpdGUiKS5vYmplY3RTdG9yZSgib2F1dGgiKTtpZih2b2lkIDA9PT1ifHxudWxsPT09YilkWyJkZWxldGUiXShhKTtlbHNlIGQucHV0KGIsYSk7ZC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlPWZ1bmN0aW9uKCl7YyYmYygpfX07Xy5nLnJlbW92ZUl0ZW09ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmEudHJhbnNhY3Rpb24oIm9hdXRoIiwicmVhZHdyaXRlIikub2JqZWN0U3RvcmUoIm9hdXRoIik7Y1siZGVsZXRlIl0oYSk7Yy50cmFuc2FjdGlvbi5vbmNvbXBsZXRlPWZ1bmN0aW9uKCl7YiYmYigpfX07Xy5nLmNsZWFyPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYS50cmFuc2FjdGlvbigib2F1dGgiLCJyZWFkd3JpdGUiKS5vYmplY3RTdG9yZSgib2F1dGgiKTtiLmNsZWFyKCk7Yi50cmFuc2FjdGlvbi5vbmNvbXBsZXRlPWZ1bmN0aW9uKCl7YSYmYSgpfX07CnZhciBuQj1mdW5jdGlvbigpe307Xy5nPW5CLnByb3RvdHlwZTtfLmcuaW5pdD1mdW5jdGlvbihhKXt0aGlzLmE9e307YSgpfTtfLmcuZ2V0SXRlbT1mdW5jdGlvbihhLGIpe2IodGhpcy5hW2FdfHxudWxsKX07Xy5nLnNldEl0ZW09ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYVthXT1iO2MmJmMoKX07Xy5nLnJlbW92ZUl0ZW09ZnVuY3Rpb24oYSxiKXtkZWxldGUgdGhpcy5hW2FdO2ImJmIoKX07Xy5nLmNsZWFyPWZ1bmN0aW9uKGEpe3RoaXMuYT17fTthJiZhKCl9O3ZhciBtQj1mdW5jdGlvbigpe307Xy5nPW1CLnByb3RvdHlwZTtfLmcuaW5pdD1mdW5jdGlvbihhLGIpe2VCKCk/KHRoaXMuYT13aW5kb3cuc2Vzc2lvblN0b3JhZ2UsYSgpKTpiJiZiKEVycm9yKCJJYSIpKX07Xy5nLmdldEl0ZW09ZnVuY3Rpb24oYSxiKXtiKHRoaXMuYS5nZXRJdGVtKGEpKX07Cl8uZy5zZXRJdGVtPWZ1bmN0aW9uKGEsYixjKXt2b2lkIDA9PT1ifHxudWxsPT09Yj90aGlzLmEucmVtb3ZlSXRlbShhKTp0aGlzLmEuc2V0SXRlbShhLGIpO2MmJmMoKX07Xy5nLnJlbW92ZUl0ZW09ZnVuY3Rpb24oYSxiKXt0aGlzLmEucmVtb3ZlSXRlbShhKTtiJiZiKCl9O18uZy5jbGVhcj1mdW5jdGlvbihhKXt0aGlzLmEuY2xlYXIoKTthJiZhKCl9O3ZhciByQj1mdW5jdGlvbigpe3RoaXMuYT1zQi5SQ307Xy5nPXJCLnByb3RvdHlwZTtfLmcuaW5pdD1mdW5jdGlvbihhLGIpe3dpbmRvdy5uYXZpZ2F0b3IuY29va2llRW5hYmxlZD9hKCk6YiYmYihFcnJvcigiSmEiKSl9O18uZy5nZXRJdGVtPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPW51bGwsZD10QihhKSxlPTA7ZTxkLmxlbmd0aDtlKyspaWYoZFtlXS5rZXk9PWEpe2M9ZFtlXS52YWx1ZTticmVha31iKGMpfTsKXy5nLnNldEl0ZW09ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXNCLkh0KGEuc3BsaXQoc0IuV2kpWzBdKTtpZihkKXt2YXIgZT11QihkKTtiPXtrZXk6YSx2YWx1ZTpifTtmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKylpZihlW2ZdLmtleT09YSl7ZS5zcGxpY2UoZiwxKTticmVha31lLnB1c2goYik7dkIodGhpcyxkLGUpfWMmJmMoKX07Xy5nLnJlbW92ZUl0ZW09ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dEIoYSksZD0wO2Q8Yy5sZW5ndGg7ZCsrKWlmKGNbZF0ua2V5PT1hKXtjLnNwbGljZShkLDEpO2JyZWFrfShhPXNCLkh0KGEuc3BsaXQoc0IuV2kpWzBdKSkmJnZCKHRoaXMsYSxjKTtiJiZiKCl9O18uZy5jbGVhcj1mdW5jdGlvbihhKXtaQS5kRigpO2EmJmEoKX07CnZhciB0Qj1mdW5jdGlvbihhKXtyZXR1cm4oYT1zQi5IdChhLnNwbGl0KHNCLldpKVswXSkpP3VCKGEpOltdfSx1Qj1mdW5jdGlvbihhKXthOnthPSgwLHdpbmRvdy5lbmNvZGVVUklDb21wb25lbnQpKGEpO3ZhciBiPXdpbmRvdy5kb2N1bWVudC5jb29raWU7aWYoYiYmKGE9Yi5tYXRjaCgiKF58OykgPyIrYSsiPShbXjtdKikoO3wkKSIpKSYmMjxhLmxlbmd0aCYmKGE9YVsyXSkpe2E9KDAsd2luZG93LmRlY29kZVVSSUNvbXBvbmVudCkoYSk7YnJlYWsgYX1hPXZvaWQgMH1yZXR1cm4gWkEuWUYoYXx8bnVsbCl9LHZCPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1aQS5tRyhjKTtkLmxlbmd0aD5hLmE/KGMuc3BsaWNlKDAsMSksMDxjLmxlbmd0aCYmdkIoYSxiLGMpKTpaQS52QihiLGQpfTtaQS5YRj1mdW5jdGlvbihhKXt0cnl7cmV0dXJuKDAsd2luZG93LmF0b2IpKGEpfWNhdGNoKGIpe3JldHVybiBhfX07WkEubEc9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybigwLHdpbmRvdy5idG9hKShhKX1jYXRjaChiKXtyZXR1cm4gYX19OwpaQS5ZRj1mdW5jdGlvbihhKXtpZighYSlyZXR1cm5bXTthPVpBLlhGKGEpO3RyeXtyZXR1cm4gakIucGFyc2UoYSkuaXRlbXN8fFtdfWNhdGNoKGIpe3JldHVybltdfX07WkEubUc9ZnVuY3Rpb24oYSl7cmV0dXJuIFpBLmxHKGpCLnN0cmluZ2lmeSh7aXRlbXM6YX0pKX07WkEudkI9ZnVuY3Rpb24oYSxiKXt2YXIgYz13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsZD13aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7YT0oMCx3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KShhKSsiPSIrKDAsd2luZG93LmVuY29kZVVSSUNvbXBvbmVudCkoYikrIjsgZG9tYWluPSIrYysiOyI7LTEhPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigibXNpZSIpfHxmQigpfHwoYSs9IiBwYXRoPSIrZCsiOyIpOyJodHRwczoiPT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wmJihhKz0iIHNlY3VyZTsiKTt3aW5kb3cuZG9jdW1lbnQuY29va2llPWF9OwpaQS5kRj1mdW5jdGlvbigpe3ZhciBhPXNCLlJyLGI9d2luZG93LmRvY3VtZW50LmNvb2tpZTtpZihiKXtiPWIucmVwbGFjZSgvKCg/Ol58XHMqOylbXj1dKykoPz07fCQpfF5ccyp8XHMqKD86PVteO10qKT8oPzpcMXwkKS9nLCIiKS5zcGxpdCgvXHMqKD86PVteO10qKT87XHMqLyk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPSgwLHdpbmRvdy5kZWNvZGVVUklDb21wb25lbnQpKGJbY10pOzA9PWQuaW5kZXhPZihhKSYmWkEudkIoZCwiIil9fX07JEE9JEF8fHt9OyRBLmlEPTE1MDA7JEEuYkQ9MjAwOyRBLiRyPSJzdG9yYWdlVmFsdWVDaGFuZ2VkIjt2YXIgd0I9ZnVuY3Rpb24oYSl7dGhpcy5nPWE7a0IuY2FsbCh0aGlzLFskQS4kcl0pfTtjQih3QixrQik7dmFyIHhCPWZ1bmN0aW9uKGEsYil7WkEuUHQoKS5nZXRJdGVtKGEuZyxiKX07d0IucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGEpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigkQS4kcixhKX07CndCLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3ZhciBhPXRoaXM7eEIodGhpcyxmdW5jdGlvbihiKXthLmI9YjthLmM9MDthLmY9d2luZG93LnNldEludGVydmFsKEpnYShhKSwkQS5iRCl9KX07d0IucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLmYmJigoMCx3aW5kb3cuY2xlYXJJbnRlcnZhbCkodGhpcy5mKSx0aGlzLmY9dm9pZCAwKX07dmFyIEpnYT1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXthLmMrKzt4QihhLGZ1bmN0aW9uKGIpe2IhPWEuYj8oYS5kaXNwYXRjaEV2ZW50KHt0eXBlOiRBLiRyLGtleTphLmcsbmV3VmFsdWU6Yn0pLGEuc3RvcCgpKTphLmM+PSRBLmlEJiZhLnN0b3AoKX0pfX0sc0I9c0J8fHt9O3NCLm9EPSJTSUQiO3NCLm1EPSJTU0lEIjtzQi5YUT0xMDA7c0Iuc1U9Ii9vYXV0aDIvc2Vzc2lvbnN0YXRlL2FjdGlvbi91cGRhdGVTdGF0ZSI7c0IuWVE9Ii9vYXV0aDIvc2Vzc2lvbnN0YXRlL2FjdGlvbi9jaGVja09yaWdpbiI7CnNCLmlTPSIvb2F1dGgyL3Blcm1pc3Npb24vYWN0aW9uL3JlZnJlc2giO3NCLmdTPSIvb2F1dGgyL3Blcm1pc3Npb24vYWN0aW9uL2NvZGUiO3NCLnBTPSIvb2F1dGgyL3Blcm1pc3Npb24vYWN0aW9uL2xpc3RTZXNzaW9ucyI7c0IuaVQ9Ii9vL29hdXRoMi9yZXZva2UiO3NCLmhTPSJyZXNwb25zZV90eXBlIGxvZ2luX2hpbnQgY2xpZW50X2lkIG9yaWdpbiBzY29wZSBzc19kb21haW4gYXV0aHVzZXIgaGQgaW5jbHVkZV9ncmFudGVkX3Njb3BlcyBub25jZSIuc3BsaXQoIiAiKTtzQi5mUz0ibG9naW5faGludCBjbGllbnRfaWQgb3JpZ2luIHNjb3BlIHNzX2RvbWFpbiBhdXRodXNlciBoZCBpbmNsdWRlX2dyYW50ZWRfc2NvcGVzIi5zcGxpdCgiICIpO3NCLm9TPVsiY2xpZW50X2lkIiwib3JpZ2luIiwic2NvcGUiLCJzc19kb21haW4iLCJhdXRodXNlciJdO3NCLldpPSI6OiI7c0IuWEM9Il9zc18iO3NCLllDPSJfdHJfIjtzQi5Ycj0ib2F1dGgyX3NzIjtzQi5RQz0ib2F1dGgyX2NzIjsKc0IueEQ9Im9hdXRoMl90ciI7c0IuY1M9Im9hdXRoMl9pcyI7c0IuaXA9Im9hdXRoMl9hciI7c0IuUnI9Im9hdXRoMmNfIjtzQi5SQz0xNTAwO3NCLlZQPWZ1bmN0aW9uKCl7dmFyIGE9e1hDOjEsWUM6MixYcjozLFFDOjQseEQ6NSxpcDo2fSxiO2ZvcihiIGluIGEpaWYoYT1zQltiXSwhYXx8MDw9YS5pbmRleE9mKHNCLldpKSl0aHJvdyJJbnZhbGlkIHZhbHVlIGZvciAnb2F1dGgyLnNwaS4iK2IrIicuIjt9O3NCLlZQKCk7c0IuY0Q9NTEyO3NCLnRWPWZ1bmN0aW9uKGEpe3ZhciBiOyhiPXZvaWQgMD09PWEuaGludCl8fChiPWEuaGludCxiPSgiIj09PWI/ITA6Yj8ic3RyaW5nIj09dHlwZW9mIGJ8fCJvYmplY3QiPT10eXBlb2YgYiYmYi5jb25zdHJ1Y3Rvcj09PVN0cmluZzohMSkmJmEuaGludC5sZW5ndGg8PXNCLmNEKTtyZXR1cm4hYS5pZCYmYn07c0IuRF89ZnVuY3Rpb24oKXtyZXR1cm4iaHR0cHM6Ij09d2luZG93LmxvY2F0aW9uLnByb3RvY29sP3NCLm1EOnNCLm9EfTsKc0IuSHQ9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2Ugc0IuaXA6cmV0dXJuIHNCLlJyK3NCLmlwO2Nhc2Ugc0IuWHI6cmV0dXJuIHNCLlJyK3NCLlhyO2RlZmF1bHQ6cmV0dXJuIG51bGx9fTt2YXIgb0I9ZnVuY3Rpb24oKXtyZXR1cm4oaUIoKXx8aEIoKSkmJiFlQigpfHxmQigpJiYhd2luZG93LmluZGV4ZWREQj8iY29va2llU3RvcmFnZSI6ZkIoKXx8Z0IoKT8iaW5kZXhlZERiIjoibG9jYWxTdG9yYWdlIn0sbEI9ZnVuY3Rpb24oKXtyZXR1cm4haUIoKSYmIWhCKCl8fGVCKCk/InNlc3Npb25TdG9yYWdlIjoiaW5NZW1vcnlTdG9yYWdlIn0seUI9ZnVuY3Rpb24oKXt9O3lCLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7cmV0dXJuITB9O3lCLnByb3RvdHlwZS5mPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImMiKTt9O3lCLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImMiKTt9O3ZhciB6Qj1mdW5jdGlvbigpe307Y0IoekIseUIpOwp6Qi5wcm90b3R5cGUuYT1mdW5jdGlvbihhLGIsYyl7YT10aGlzLmYoYSk7dm9pZCAwPT09Ynx8bnVsbD09PWI/KHRoaXMuYigpP1pBLll5KCk6WkEuUHQoKSkucmVtb3ZlSXRlbShhLGMpOihiPWpCLnN0cmluZ2lmeSh7Y2FjaGVkVmFsdWU6Yn0pLCh0aGlzLmIoKT9aQS5ZeSgpOlpBLlB0KCkpLnNldEl0ZW0oYSxiLGMpKX07dmFyIEFCPWZ1bmN0aW9uKCl7fTtjQihBQix6Qik7QUIucHJvdG90eXBlLmI9ZnVuY3Rpb24oKXtyZXR1cm4hMX07QUIucHJvdG90eXBlLmY9ZnVuY3Rpb24oYSl7cmV0dXJuW3NCLmlwLGEub3JpZ2luLGEuY2xpZW50SWQsYS5pZF0uam9pbihzQi5XaSl9Owp2YXIgTGdhPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoIWEpdGhyb3ciaW52YWxpZF9vcmlnaW4iO2lmKCFifHxiJiYwPD1iLmluZGV4T2Yoc0IuV2kpKXRocm93ImludmFsaWRfY2xpZW50SWQiO2lmKCFjfHxjJiYwPD1jLmluZGV4T2Yoc0IuV2kpKXRocm93ImludmFsaWRfaWQiO2lmKGlCKCkpe2I9e21ldGhvZDoiZmlyZUlkcEV2ZW50IixwYXJhbXM6e3R5cGU6ImF1dGhSZXN1bHQiLGNsaWVudElkOmIsaWQ6YyxhdXRoUmVzdWx0OmR9fTtpZighd2luZG93Lm9wZW5lcil0aHJvdyJUaGUgd2luZG93IGRvZXMgbm90IGhhdmUgYW4gb3BlbmVyISI7d2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShqQi5zdHJpbmdpZnkoYiksYSk7ZSYmZSgpfWVsc2UgS2dhKGEsYixjLGQsZSl9LEtnYT1mdW5jdGlvbihhLGIsYyxkLGUpe1pBLlJJKGZ1bmN0aW9uKCl7dmFyIGY9bmV3IEFCLGs9e29yaWdpbjphLGNsaWVudElkOmIsaWQ6Y307Zi5hKGssZCxmdW5jdGlvbigpe3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zi5hKGssIHZvaWQgMCxlKX0sZkIoKXx8Z0IoKXx8SWdhKCk/NzUwOjIwMCl9KX0sZnVuY3Rpb24oYSl7dGhyb3cgYTt9KX07CnZhciBNZ2E7Xy5CQj1mdW5jdGlvbihhKXtfLkJCLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuZj1hLmlhLnRlO3RoaXMuZz1hLmwuamQ7dGhpcy5hPWEubC5uYXZpZ2F0aW9uO3RoaXMuYj1udWxsO3RoaXMudz1hLmwud2luZG93LmdldCgpO3RoaXMudy5vbkFjY291bnRBZGQ9KDAsXy5sKSh0aGlzLmphLHRoaXMpfTtfLm0oXy5CQixfLlR2KTtfLmh5KF8uWHose2lhOnt0ZTpfLkFpfSxsOntqZDpfLmh6LG5hdmlnYXRpb246Xy5Xeix3aW5kb3c6Xy5Pen19LF8uQkIpO01nYT1fLnRxKF8ubHEoXy5tcSgiaHR0cHM6Ly9hcGlzLmdvb2dsZS5jb20vanMvcnBjOnNoaW5kaWdfcmFuZG9tLmpzP29ubG9hZD1jcmVkZW50aWFsc2VydmljZS5wb3N0TWVzc2FnZSIpKSk7Xy5DQj1mdW5jdGlvbihhLGIpe05nYShhLGIpO2Eud2EoKX07Xy5CQi5wcm90b3R5cGUud2E9Xy5IYTsKdmFyIE5nYT1mdW5jdGlvbihhLGIpe3N3aXRjaChfLnIoYiwxKSl7Y2FzZSAyOl8uRmwoZnVuY3Rpb24oKXt0aGlzLmEucmVkaXJlY3QoYi5yZCgpKX0sYS5pKGIpLGEpO2JyZWFrO2Nhc2UgMzpfLkRCKGEuYSxfLnIoYiwzKSk7YnJlYWs7Y2FzZSA0OnZhciBjPWIuWmQoKTtPZ2EoYSxjKTticmVhaztjYXNlIDU6YS5hLmIoKTticmVhaztjYXNlIDY6UGdhKGEsYik7YnJlYWs7ZGVmYXVsdDphLkNmKCl9fTtfLkJCLnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7cmV0dXJuIDB9Owp2YXIgT2dhPWZ1bmN0aW9uKGEsYil7c3dpdGNoKF8ucihiLDEpKXtjYXNlIDk6YS5hLnJlZGlyZWN0KF8ucihfLncoYixDZSwxMCksMSkpO3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93Lm9wZW5lcj93aW5kb3cuY2xvc2UoKTp0aGlzLmEucmVkaXJlY3QoImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20iKX0uYmluZChhKSwzRTMpO2JyZWFrO2Nhc2UgMTphLmEucmVkaXJlY3QoXy5yKF8udyhiLEJlLDIpLDEpKTticmVhaztjYXNlIDQ6Yj1fLncoYixGZSw1KTtRZ2EoYSxiKTticmVhaztjYXNlIDI6YT1fLncoYixEZSwzKTtSZ2EoYSk7YnJlYWs7Y2FzZSA1Ol8ucihfLncoYixfLkdlLDYpLDIpP18uREIoYS5hLCJzaWduaW4vb2F1dGgvZGV2aWNlL2RvbmUiKTpfLkRCKGEuYSwiYXV0aHJlc3VsdCIpO2JyZWFrO2Nhc2UgMzpiPV8udyhiLF8uRWUsNCk7dmFyIGM9Xy5DcChfLkNwKF8uR3AoIi9vL29hdXRoMi9hcHByb3ZhbC92MiIpLCJyZXNwb25zZSIsYi5FZygpKSwiYXV0byIsCl8ucihiLDIpKTtfLnIoYiwxKSYmXy5DcChjLCJhcHByb3ZhbENvZGUiLF8ucihiLDEpKTthLmEucmVkaXJlY3QoYy50b1N0cmluZygpKTticmVhaztjYXNlIDg6dmFyIGQ9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTtkLmFjdGlvbj1fLnIoXy53KGIsSmUsOSksMSk7ZC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKTtkLnNldEF0dHJpYnV0ZSgibWV0aG9kIiwiUE9TVCIpO18uamQoXy53KGIsSmUsOSksSWUsMikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtiLm5hbWU9Xy5yKGEsMSk7Yi52YWx1ZT1hLm9hKCk7ZC5hcHBlbmRDaGlsZChiKX0pO3dpbmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGQpO2Quc3VibWl0KCl9fSxRZ2E9ZnVuY3Rpb24oYSxiKXthPWZ1bmN0aW9uKCl7Xy5yKGIsNSk/ImtlZXBfb3BlbiIhPV8ucihiLDUpJiZ0aGlzLmEucmVkaXJlY3QoXy5yKGIsCjUpKTp3aW5kb3cuY2xvc2UoKX0uYmluZChhKTtMZ2EoYi5nZXRPcmlnaW4oKSxfLnIoYiwyKSxfLnIoYiwzKSxKU09OLnBhcnNlKGIuRWcoKSksYSxfLnIoYiw2KSl9LFJnYT1mdW5jdGlvbihhKXtfLnIoYSw1KSYmKCh3aW5kb3cuc2VsZi5fX19qc2w9d2luZG93LnNlbGYuX19fanNsfHx7fSkuaD1fLnIoYSw1KSk7d2luZG93LnNlbGZbImNyZWRlbnRpYWxzZXJ2aWNlLnBvc3RNZXNzYWdlIl09ZnVuY3Rpb24oKXt2YXIgYj1hLmdldE9yaWdpbigpLGQ9YS5FZygpLGU9Xy5HcCh3aW5kb3cubG9jYXRpb24uaHJlZik7Xy5jcChlLCIvby9vYXV0aDIvcG9zdG1lc3NhZ2VSZWxheSIpO18uZHAoZSwiIix2b2lkIDApO18uZXAoZSwiIik7VUEoITEsYixkLGUudG9TdHJpbmcoKSxfLnIoYSwzKSxfLnIoYSw0KT8ia2VlcF9vcGVuIjpudWxsKX07dmFyIGI9d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNDUklQVCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9qYXZhc2NyaXB0Iik7Cl8uUnEoYixNZ2EpO3dpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGIpfTtfLkJCLnByb3RvdHlwZS5DZj1mdW5jdGlvbigpe18ueWwodGhpcy53KTtfLkVCKHRoaXMuYSl9O3ZhciBQZ2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLnIoXy53KGIsTmUsNiksMik7Yj1fLnIoXy53KGIsTmUsNiksMSk7YyYmYiYmKF8uJHkoYS5mLCRmYSksYS5mLmEoKSxTZ2EoYSksYS5nLmFkZEFjY291bnQoYyxiKSl9LFNnYT1mdW5jdGlvbihhKXthLmI9Xy5GbChmdW5jdGlvbigpe18uREIodGhpcy5hLCJlbWJlZGRlZC9tdWx0aWxvZ2ludGltZW91dCIpfSwzRTQsYSl9OyBfLkJCLnByb3RvdHlwZS5qYT1mdW5jdGlvbihhKXt0aGlzLmImJihfLkdsKHRoaXMuYiksdGhpcy5iPW51bGwpO18uJHkodGhpcy5mLF8uTXkpO3RoaXMuZi5hKCk7Mj09YS5zdGF0dXM/Xy5GQih0aGlzLmEsImVtYmVkZGVkL211bHRpbG9naW5lcnJvciIpOih0aGlzLmcuY2xvc2VWaWV3KCksdGhpcy5DZigpKX07Cl8uR0I9cXgoIktlcFBMYyIsIktlcFBMYyIsW18uaHosXy5Pel0pO18uSEI9ZnVuY3Rpb24oYSl7Xy5Udi5jYWxsKHRoaXMsYS5aYSk7dGhpcy5mPWEubC5qZDt0aGlzLmM9YS5sLndpbmRvdy5nZXQoKTt0aGlzLmMub25GZXRjaFBob25lTnVtYmVySW5mbz0oMCxfLmwpKHRoaXMuUUssdGhpcyk7dGhpcy5hPTA7dGhpcy5iPW51bGx9O18ucGEoXy5IQixfLlR2KTtfLkhCLlRhPWZ1bmN0aW9uKCl7cmV0dXJue2w6e2pkOl8uaHosd2luZG93Ol8uT3p9fX07Xy5nPV8uSEIucHJvdG90eXBlO18uZy5mZXRjaFZlcmlmaWVkUGhvbmVOdW1iZXI9ZnVuY3Rpb24oKXswPT10aGlzLmEmJih0aGlzLmE9MSx0aGlzLmYuZmV0Y2hWZXJpZmllZFBob25lTnVtYmVyKCkpfTtfLmcuenQ9ZnVuY3Rpb24oKXt9O18uZy5RdD1mdW5jdGlvbigpe307Xy5nLlFLPWZ1bmN0aW9uKGEsYil7dGhpcy5hPTA9PWEmJm51bGwhPT1iPzA8Yi5sZW5ndGg/MjozOjQ7dGhpcy5iPWI7dGhpcy5yeShhKX07Xy5nLnJ5PWZ1bmN0aW9uKCl7fTtfLkFBKF8uR0IsXy5IQik7Cl8uSUI9cXgoImdvdmhIZSIsImdvdmhIZSIsW18uQmldKTt2YXIgSkI9cXgoIlVQUngzYyIsIlVQUngzYyIsW18uSUJdKTt0eChKQiwiUTdCeGxkIik7dmFyIEtCPWZ1bmN0aW9uKGEpe0tCLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYT1hLmwuWG0uYX07Xy5tKEtCLF8uVHYpO18uaHkoSkIse2w6e1htOl8uSUJ9fSxLQik7S0IucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS55Yi50aGVuKGZ1bmN0aW9uKGIpe3JldHVybiBuZXcgXy5layhmdW5jdGlvbihjLGQpe2IubG9hZChhLGZ1bmN0aW9uKGEpe2EmJmEuZXJyb3I/ZChhLmVycm9yKTpjKGIpfSl9KX0pfTsKdmFyIExCPXF4KCJRN0J4bGQiLCJRN0J4bGQiLFtdKTt2YXIgTUI9ZnVuY3Rpb24oKXt9O18udngoTUIsTEIpO18ud3goTUIuTGUsSkIpO18uTkI9cXgoIml1VXptZCIsIml1VXptZCIsW18uQmksXy56XSk7Xy5PQj1xeCgiajJNV29lIiwiajJNV29lIixbXy5CaSxfLnosXy5OQl0pO3ZhciBQQj1mdW5jdGlvbihhKXtQQi4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLnpiPWEuaWEuemIuY2MoKTt0aGlzLmRhPWEuaWEuZGE7dGhpcy5hPWEubC5xcn07Xy5tKFBCLF8uVHYpO18uaHkoXy5PQix7aWE6e3piOl8uQmksZGE6Xy56fSxsOntxcjpfLk5CfX0sUEIpO18uUkI9ZnVuY3Rpb24oKXtyZXR1cm4hXy5RQigpJiYoXy5aYigiaVBvZCIpfHxfLlpiKCJpUGhvbmUiKXx8Xy5aYigiQW5kcm9pZCIpfHxfLlpiKCJJRU1vYmlsZSIpKX07Xy5RQj1mdW5jdGlvbigpe3JldHVybiBfLlpiKCJpUGFkIil8fF8uWmIoIkFuZHJvaWQiKSYmIV8uWmIoIk1vYmlsZSIpfHxfLlpiKCJTaWxrIil9O18uU0I9ZnVuY3Rpb24oKXtyZXR1cm4hXy5SQigpJiYhXy5RQigpfTt2YXIgVEI9cXgoIk1HcXpTYiIsIk1HcXpTYiIsW18uV3osXy5Pel0pO3R4KFRCLCJsQ1ZvM2QiKTtfLlVCPWZ1bmN0aW9uKGEpe18uVUIuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy5uYXZpZ2F0aW9uPWEubC5uYXZpZ2F0aW9uO3RoaXMud2M9YS5sLndpbmRvdy5nZXQoKTt0aGlzLmI9bnVsbDt0aGlzLmphPSEwO3RoaXMuZj0hMTt0aGlzLmc9dGhpcy5jPSEwfTtfLm0oXy5VQixfLlR2KTtfLmh5KFRCLHtsOntuYXZpZ2F0aW9uOl8uV3osd2luZG93Ol8uT3p9fSxfLlVCKTtfLmc9Xy5VQi5wcm90b3R5cGU7Xy5nLnNob3dWaWV3PWZ1bmN0aW9uKCl7fTtfLmcuZ29CYWNrPWZ1bmN0aW9uKCl7dGhpcy53Yy5oaXN0b3J5LmJhY2soKX07Xy5nLkdyPWZ1bmN0aW9uKCl7fTtfLmcuaGlkZUtleWJvYXJkPWZ1bmN0aW9uKCl7fTtfLmcuc2hvd0tleWJvYXJkPWZ1bmN0aW9uKCl7fTtfLmcuZ2V0QWNjb3VudHM9ZnVuY3Rpb24oKXtyZXR1cm5bXX07Xy5nLnNldEFjY291bnRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7fTtfLmcuc2V0TmV3QWNjb3VudENyZWF0ZWQ9ZnVuY3Rpb24oKXt9OwpfLmcuc2V0QmFja0J1dHRvbkVuYWJsZWQ9ZnVuY3Rpb24oKXt9O18uZy5hcT1mdW5jdGlvbigpe3JldHVybiIifTtfLmcuc3RhcnRBZnc9ZnVuY3Rpb24oKXt9O18uZy5nZXRQbGF5U2VydmljZXNWZXJzaW9uQ29kZT1mdW5jdGlvbigpe3JldHVybiAwfTtfLmcuaGFzVGVsZXBob255PWZ1bmN0aW9uKCl7cmV0dXJuITF9O18uZy5hdHRlbXB0TG9naW49ZnVuY3Rpb24oKXt9O18uZy5jbGVhck9sZExvZ2luQXR0ZW1wdHM9ZnVuY3Rpb24oKXt9O18uZy5WYj1mdW5jdGlvbihhKXt0aGlzLmphJiYodGhpcy5mP3RoaXMuYj1hOnRoaXMuUW0oYSkpfTtfLmcuWm49ZnVuY3Rpb24oKXt9O18uZy5Haj1mdW5jdGlvbigpe307Xy5nLndBPWZ1bmN0aW9uKCl7fTtfLmcudkE9ZnVuY3Rpb24oKXt9O18uZy5YdT1mdW5jdGlvbigpe307Xy5nLllxPWZ1bmN0aW9uKCl7dGhpcy5iJiYoXy5TQigpP3RoaXMuUW0odGhpcy5iKTp0aGlzLmIub2EoKXx8dGhpcy5RbSh0aGlzLmIpKTt0aGlzLmI9bnVsbH07Cl8uZy5RbT1mdW5jdGlvbihhKXsodGhpcy5jfHwxPHRoaXMubmF2aWdhdGlvbi5hLmxlbmd0aCkmJih0aGlzLmd8fDYwMDw9dGhpcy53Yy5zY3JlZW4uYXZhaWxIZWlnaHQpJiZfLk9hKGEuZm9jdXMpJiZhLmZvY3VzKCl9O18uZy5sb2c9ZnVuY3Rpb24oKXt9O18uZy5nZXREZXZpY2VEYXRhVmVyc2lvbkluZm89ZnVuY3Rpb24oKXtyZXR1cm4gXy5paygiIil9O18uZy5pc1VzZXJPd25lcj1mdW5jdGlvbigpe3JldHVybiBudWxsfTtfLmcuY2xvc2VWaWV3PWZ1bmN0aW9uKCl7fTtfLmcuYWRkQWNjb3VudD1mdW5jdGlvbigpe307Xy5nLmZldGNoVmVyaWZpZWRQaG9uZU51bWJlcj1mdW5jdGlvbigpe307Xy5nLnN5c3RlbUJyb3dzZXJBdXRoPWZ1bmN0aW9uKCl7fTsKdmFyIFZCPXF4KCJTSEkxcmQiLCJTSEkxcmQiLFtUQl0pO3R4KFZCLCJsQ1ZvM2QiKTtfLldCPXF4KCJsMEJNbSIsImwwQk1tIixbVkJdKTt0eChfLldCLCJsQ1ZvM2QiKTtfLlhCPXF4KCJLSGJWZWYiLCJLSGJWZWYiLFtWQl0pO3R4KF8uWEIsImxDVm8zZCIpO18uWUI9cXgoInBMT0NPYiIsInBMT0NPYiIsW1ZCXSk7dHgoXy5ZQiwibENWbzNkIik7Xy5aQj1xeCgiWXFDcEZmIiwiWXFDcEZmIixbVkJdKTt0eChfLlpCLCJsQ1ZvM2QiKTtfLiRCPWZ1bmN0aW9uKGEpe18uJEIuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy5mPSEwO3RoaXMuZz10aGlzLmM9ITE7dGhpcy5hPW51bGw7d2luZG93LnNldERldmljZURhdGFWZXJzaW9uSW5mbz0oMCxfLmwpKGZ1bmN0aW9uKGEpe3RoaXMuYSYmdGhpcy5hLnJlc29sdmUoYXx8IiIpfSx0aGlzKX07Xy5tKF8uJEIsXy5VQik7Xy5oeShWQix7fSxfLiRCKTtfLmc9Xy4kQi5wcm90b3R5cGU7Xy5nLnNob3dWaWV3PWZ1bmN0aW9uKCl7dHJ5e3RoaXMud2MubW0mJndpbmRvdy5tbS5zaG93VmlldyYmdGhpcy53Yy5jc3NMb2FkZWQmJndpbmRvdy5tbS5zaG93VmlldygpfWNhdGNoKGEpe319O18uZy5nb0JhY2s9ZnVuY3Rpb24oKXt0cnl7dGhpcy53Yy5tbSYmd2luZG93Lm1tLmdvQmFjaz93aW5kb3cubW0uZ29CYWNrKCk6dGhpcy53Yy5oaXN0b3J5LmJhY2soKX1jYXRjaChhKXt9fTsKXy5nLkdyPWZ1bmN0aW9uKCl7dHJ5e3RoaXMud2MubW0mJndpbmRvdy5tbS5za2lwTG9naW4mJndpbmRvdy5tbS5za2lwTG9naW4oKX1jYXRjaChhKXt9fTtfLmcuaGlkZUtleWJvYXJkPWZ1bmN0aW9uKCl7dHJ5e3RoaXMud2MubW0mJndpbmRvdy5tbS5oaWRlS2V5Ym9hcmQmJndpbmRvdy5tbS5oaWRlS2V5Ym9hcmQoKX1jYXRjaChhKXt9fTtfLmcuc2hvd0tleWJvYXJkPWZ1bmN0aW9uKCl7dHJ5e3RoaXMud2MubW0mJndpbmRvdy5tbS5zaG93S2V5Ym9hcmQmJndpbmRvdy5tbS5zaG93S2V5Ym9hcmQoKX1jYXRjaChhKXt9fTtfLmcuZ2V0QWNjb3VudHM9ZnVuY3Rpb24oKXt0cnl7aWYodGhpcy53Yy5tbSYmd2luZG93Lm1tLmdldEFjY291bnRzKXRyeXtyZXR1cm4gSlNPTi5wYXJzZSh3aW5kb3cubW0uZ2V0QWNjb3VudHMoKSl9Y2F0Y2goYSl7fXJldHVybltdfWNhdGNoKGEpe319OwpfLmcuWHU9ZnVuY3Rpb24oKXt0cnl7dGhpcy53Yy5tbSYmd2luZG93Lm1tLm5vdGlmeU9uVGVybXNPZlNlcnZpY2VBY2NlcHRlZCYmd2luZG93Lm1tLm5vdGlmeU9uVGVybXNPZlNlcnZpY2VBY2NlcHRlZCgpfWNhdGNoKGEpe319O18uZy5zZXRBY2NvdW50SWRlbnRpZmllcj1mdW5jdGlvbihhKXt0cnl7dGhpcy53Yy5tbSYmd2luZG93Lm1tLnNldEFjY291bnRJZGVudGlmaWVyJiZ3aW5kb3cubW0uc2V0QWNjb3VudElkZW50aWZpZXIoYSl9Y2F0Y2goYil7fX07Xy5nLmF0dGVtcHRMb2dpbj1mdW5jdGlvbihhLGIpe3RyeXt0aGlzLndjLm1tJiZ3aW5kb3cubW0uYXR0ZW1wdExvZ2luJiZ3aW5kb3cubW0uYXR0ZW1wdExvZ2luKGEsYil9Y2F0Y2goYyl7fX07Xy5nLmNsZWFyT2xkTG9naW5BdHRlbXB0cz1mdW5jdGlvbigpe3RyeXt0aGlzLndjLm1tJiZ3aW5kb3cubW0uY2xlYXJPbGRMb2dpbkF0dGVtcHRzJiZ3aW5kb3cubW0uY2xlYXJPbGRMb2dpbkF0dGVtcHRzKCl9Y2F0Y2goYSl7fX07Cl8uZy5zZXROZXdBY2NvdW50Q3JlYXRlZD1mdW5jdGlvbigpe3RyeXt0aGlzLndjLm1tJiZ3aW5kb3cubW0uc2V0TmV3QWNjb3VudENyZWF0ZWQmJndpbmRvdy5tbS5zZXROZXdBY2NvdW50Q3JlYXRlZCgpfWNhdGNoKGEpe319O18uZy5zZXRCYWNrQnV0dG9uRW5hYmxlZD1mdW5jdGlvbihhKXt0cnl7dGhpcy53Yy5tbSYmd2luZG93Lm1tLnNldEJhY2tCdXR0b25FbmFibGVkJiZ3aW5kb3cubW0uc2V0QmFja0J1dHRvbkVuYWJsZWQoYSl9Y2F0Y2goYil7fX07Xy5nLmFxPWZ1bmN0aW9uKCl7dHJ5e2lmKHRoaXMud2MubW0mJndpbmRvdy5tbS5nZXRBbmRyb2lkSWQpcmV0dXJuIHdpbmRvdy5tbS5nZXRBbmRyb2lkSWQoKXx8IjAifWNhdGNoKGEpe31yZXR1cm4iMCJ9O18uZy5zdGFydEFmdz1mdW5jdGlvbigpe3RyeXt0aGlzLndjLm1tJiZ3aW5kb3cubW0uc3RhcnRBZncmJndpbmRvdy5tbS5zdGFydEFmdygpfWNhdGNoKGEpe319OwpfLmcuZ2V0UGxheVNlcnZpY2VzVmVyc2lvbkNvZGU9ZnVuY3Rpb24oKXt0cnl7aWYodGhpcy53Yy5tbSYmd2luZG93Lm1tLmdldFBsYXlTZXJ2aWNlc1ZlcnNpb25Db2RlKXJldHVybiB3aW5kb3cubW0uZ2V0UGxheVNlcnZpY2VzVmVyc2lvbkNvZGUoKX1jYXRjaChhKXt9cmV0dXJuIDB9O18uZy5oYXNUZWxlcGhvbnk9ZnVuY3Rpb24oKXt0cnl7aWYodGhpcy53Yy5tbSYmd2luZG93Lm1tLmhhc1RlbGVwaG9ueSlyZXR1cm4gd2luZG93Lm1tLmhhc1RlbGVwaG9ueSgpfWNhdGNoKGEpe31yZXR1cm4hMX07Cl8uZy5abj1mdW5jdGlvbihhKXt0cnl7aWYodGhpcy53Yy5tbSl7dmFyIGI9dGhpcy5hcSgpO18udChhLDEsYik7dmFyIGM9Xy53KGEsVWQsMTIpO18udChjLDYsYik7aWYod2luZG93Lm1tLmdldEJ1aWxkVmVyc2lvblNkayl7dmFyIGQ9d2luZG93Lm1tLmdldEJ1aWxkVmVyc2lvblNkaygpO18udChhLDIsZCl9aWYod2luZG93Lm1tLmdldFBsYXlTZXJ2aWNlc1ZlcnNpb25Db2RlKXt2YXIgZT13aW5kb3cubW0uZ2V0UGxheVNlcnZpY2VzVmVyc2lvbkNvZGUoKTtfLnQoYSwzLGUpfWlmKHdpbmRvdy5tbS5QeSl7dmFyIGY9d2luZG93Lm1tLlB5KCk7Xy50KGEsMTQsZil9YTp7dHJ5e2lmKHRoaXMud2MubW0mJndpbmRvdy5tbS5oYXNQaG9uZU51bWJlciYmd2luZG93Lm1tLmhhc1Bob25lTnVtYmVyKCkmJndpbmRvdy5tbS5nZXRQaG9uZU51bWJlciYmd2luZG93Lm1tLmdldFBob25lTnVtYmVyKCkpe3ZhciBrPVt3aW5kb3cubW0uZ2V0UGhvbmVOdW1iZXIoKS5yZXBsYWNlKC9bXlxkLl0vZywKIiIpLnRyaW0oKV07YnJlYWsgYX19Y2F0Y2gobil7fWs9W119Xy50KGEsNCxrfHxbXSk7d2luZG93Lm1tLmhhc1RlbGVwaG9ueSYmd2luZG93Lm1tLmhhc1RlbGVwaG9ueSgpJiZfLnQoYSw1LCEwKX19Y2F0Y2gobil7fX07Xy5nLmxvZz1mdW5jdGlvbihhKXt0cnl7aWYodGhpcy53Yy5tbSYmd2luZG93Lm1tLmxvZylyZXR1cm4gd2luZG93Lm1tLmxvZyhhKX1jYXRjaChiKXt9fTtfLmcuZ2V0RGV2aWNlRGF0YVZlcnNpb25JbmZvPWZ1bmN0aW9uKGEpe3RoaXMuYSYmdGhpcy5hLnliLmNhbmNlbCgpO3RoaXMuYT1fLm9rKCk7YT1fLm1rKFt0aGlzLmEueWIsXy5IbChhLCIiKV0pO3ZhciBiPSExO3RyeXt0aGlzLndjLm1tJiZ3aW5kb3cubW0uZ2V0RGV2aWNlRGF0YVZlcnNpb25JbmZvJiYod2luZG93Lm1tLmdldERldmljZURhdGFWZXJzaW9uSW5mbygpLGI9ITApfWNhdGNoKGMpe31ifHx0aGlzLmEucmVzb2x2ZSgiIik7cmV0dXJuIGF9OwpfLmcuaXNVc2VyT3duZXI9ZnVuY3Rpb24oKXt0cnl7aWYodGhpcy53Yy5tbSYmd2luZG93Lm1tLmlzVXNlck93bmVyKXJldHVybiB3aW5kb3cubW0uaXNVc2VyT3duZXIoKX1jYXRjaChhKXt9cmV0dXJuIG51bGx9O18uZy5jbG9zZVZpZXc9ZnVuY3Rpb24oKXt0cnl7dGhpcy53Yy5tbSYmd2luZG93Lm1tLmNsb3NlVmlldyYmd2luZG93Lm1tLmNsb3NlVmlldygpfWNhdGNoKGEpe319O18uZy5hZGRBY2NvdW50PWZ1bmN0aW9uKGEsYil7dHJ5e2lmKHRoaXMud2MubW0mJndpbmRvdy5tbS5hZGRBY2NvdW50KXJldHVybiB3aW5kb3cubW0uYWRkQWNjb3VudChKU09OLnN0cmluZ2lmeSh7YXV0aENvZGU6YixvYmZ1c2NhdGVkR2FpYUlkOmF9KSl9Y2F0Y2goYyl7fX07Xy5nLmZldGNoVmVyaWZpZWRQaG9uZU51bWJlcj1mdW5jdGlvbigpe3RyeXtpZih0aGlzLndjLm1tJiZ3aW5kb3cubW0uZmV0Y2hWZXJpZmllZFBob25lTnVtYmVyKXJldHVybiB3aW5kb3cubW0uZmV0Y2hWZXJpZmllZFBob25lTnVtYmVyKEpTT04uc3RyaW5naWZ5KHt9KSl9Y2F0Y2goYSl7fX07CnZhciBhQz1mdW5jdGlvbihhLGIsYyxkKXtfLmNsLmNhbGwodGhpcyxhKTt0aGlzLnJmPWI7dGhpcy5hPWM7dGhpcy5qZT1kfSxjQyxUZ2E7Xy5tKGFDLF8uY2wpO18uYkM9bmV3IGJsKCJORFV4amQiKTtjQz1uZXcgYmwoIm1hRXljIik7VGdhPW5ldyBibCgiWE9rM2FiIik7Xy5kQz1mdW5jdGlvbigpe307Xy52eChfLmRDLFR6KTt2YXIgVWdhPWZ1bmN0aW9uKCl7dGhpcy50eXBlPTE7dGhpcy52aWV3PW51bGx9O3ZhciBWZ2EsakMsaUMsaEMsa0M7Xy5lQz1mdW5jdGlvbihhKXtfLmVDLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuaT1hLmwud2luZG93LmdldCgpO3RoaXMuYT1bXTt0aGlzLkxhPW5ldyBfLkNyKHRoaXMpO3RoaXMuZz17fTt0aGlzLnc9Xy5oLnZpZXdQYXRoUHJlZml4fHwiIjt0aGlzLndhPSExO3RoaXMuZj1udWxsO3RoaXMuamE9YS5sLnRyYW5zaXRpb247dGhpcy5jPWEubC52aWV3O3RoaXMuTGEubGlzdGVuKHRoaXMuYy5hLmksXy5iQyx0aGlzLkJhKTt0aGlzLkxhLmxpc3Rlbih0aGlzLmMuYS5pLCJGV2tjZWMiLHRoaXMuaGEpfTtfLm0oXy5lQyxfLlR2KTtfLmh5KF8uV3ose2w6e3RyYW5zaXRpb246Xy5kQyx2aWV3Ol8uVnosd2luZG93Ol8uT3p9fSxfLmVDKTtWZ2E9e25hdmlnYXRpb25EaXJlY3Rpb246ImZvcndhcmQifTtfLmZDPWZ1bmN0aW9uKGEpe3JldHVybiEhYS5mJiYhIWEuZi5ifTsKXy5EQj1mdW5jdGlvbihhLGIsYyl7Yj1fLmdDKGEsYik7dmFyIGQ9aEMoYSk7YiBpbiBhLmd8fGlDKGEsYixjfHx7fSk7ZD1qQyhfLndxKF8uenEoYit3aW5kb3cubG9jYXRpb24uc2VhcmNoKSksZCk7ZD1rQyhhLGQsYyk7LTEhPWEuYS5pbmRleE9mKGIpJiZiIT09YS5hW2EuYS5sZW5ndGgtMV0/Xy5GQihhLGIsYyk6KGEuYS5wb3AoKSxsQyhhLmMsZCwhMCkpfTsKXy5GQj1mdW5jdGlvbihhLGIsYyl7Yj1fLmdDKGEsYik7dmFyIGQ9aEMoYSk7YiBpbiBhLmd8fGlDKGEsYixjfHx7fSk7LTEhPWEuYS5pbmRleE9mKGIpJiZhLmVhKCkmJmIhPT1hLmFbYS5hLmxlbmd0aC0xXT8oYz1hLmEubGVuZ3RoLShhLmEuaW5kZXhPZihiKSsxKSxhLmE9YS5hLnNsaWNlKDAsYS5hLmxlbmd0aC1jKSxiPWEuamEsZD1hLmEuc2xpY2UoKSxiLmphPWIuYyxiLmM9ZCxhLndhPSEwLGEuaS5oaXN0b3J5LmdvKC1jKSk6KGI9akMoXy53cShfLnpxKGIrd2luZG93LmxvY2F0aW9uLnNlYXJjaCkpLGQpLGM9a0MoYSxiLGMpLGxDKGEuYyxjLHZvaWQgMCkpfTtqQz1mdW5jdGlvbihhLGIpe2lmKGImJiFfLmdjKGIpKXt2YXIgYz1uZXcgXy5hYShhKTtfLmhuKGIsZnVuY3Rpb24oYSxiKXthPT09Xy5GcChjLGIpJiZjLmEucmVtb3ZlKGIpfSk7cmV0dXJuIGMudG9TdHJpbmcoKX1yZXR1cm4gYX07Xy5lQy5wcm90b3R5cGUuZWE9ZnVuY3Rpb24oKXtyZXR1cm4hMH07CmlDPWZ1bmN0aW9uKGEsYixjKXtfLmtjKGMsYWMoVmdhLGZ1bmN0aW9uKGEsYil7cmV0dXJuIWMuaGFzT3duUHJvcGVydHkoYil9KSk7YS5nW2JdPWM7YS5qYS5jYj1hLmd9O2hDPWZ1bmN0aW9uKGEsYil7Yj1ifHxfLm1DKGEpO2I9Xy5nQyhhLGIpO3ZhciBjPWEuZ1tiXXx8bnVsbDtkZWxldGUgYS5nW2JdO3JldHVybiBjfTtfLm1DPWZ1bmN0aW9uKGEpe3ZhciBiPV8ubkMoYSk7cmV0dXJuIF8uQWIoYixhLncpfHxiKyIvIj09YS53P2Iuc3Vic3RyKGEudy5sZW5ndGgpOmJ9O18ubkM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ub0MoYS5jLmdldEN1cnJlbnRWaWV3KCkpLnNwbGl0KCI/IilbMF0uc3Vic3RyKDEpfTtfLmVDLnByb3RvdHlwZS5yZWRpcmVjdD1mdW5jdGlvbihhKXtwby5kaXNwb3NlKCk7dGhpcy5pLmxvY2F0aW9uLmFzc2lnbihhKX07Cl8ucEM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLkdwKGIpO2EuZiYmXy5obihhLmYuZigpLGZ1bmN0aW9uKGEsYil7Xy5DcChjLGIsYSl9KTthLnJlZGlyZWN0KGMudG9TdHJpbmcoKSl9O18uRUI9ZnVuY3Rpb24oYSl7YS5pLmxvY2F0aW9uLmhhc2g9Xy5KYigiY2xvc2UiKX07Xy5lQy5wcm90b3R5cGUuYj1mdW5jdGlvbigpe3ZhciBhPV8uR3AoIi9fL2JhY2siKTtfLkNwKGEsImJhY2tzdGVwIix0aGlzLmEubGVuZ3RoKTtfLlNxKHRoaXMuaS5sb2NhdGlvbixhLnRvU3RyaW5nKCkpfTtfLmdDPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS53OyFjLmxlbmd0aHx8Yi5pbmNsdWRlcygiLyIpfHxiLmluY2x1ZGVzKGMucmVwbGFjZSgvXC8kLywiIikpfHwoYj0iLyIrYS53K2IpO3JldHVybiBfLkdwKGIpLmJ9OwprQz1mdW5jdGlvbihhLGIsYyl7YT1hLmYuZigpO18ua2MoYSxjfHx7fSk7aWYoIV8uZ2MoYSkpe3ZhciBkPW5ldyBfLmFhKGIpO18uaG4oYSxmdW5jdGlvbihhLGIpe18uQ3AoZCxiLGEpfSk7cmV0dXJuIGQudG9TdHJpbmcoKX1yZXR1cm4gYn07Xy5lQy5wcm90b3R5cGUuQmE9ZnVuY3Rpb24oYSl7aWYodGhpcy53YSl0aGlzLndhPSExO2Vsc2V7dmFyIGI9dGhpcy5hW3RoaXMuYS5sZW5ndGgtMV07YT1fLmdDKHRoaXMsYS5hKTtiIT1hJiZoQyh0aGlzLGIpO3RoaXMuYS5wdXNoKGEpO2I9dGhpcy5qYTthPXRoaXMuYS5zbGljZSgpO2IuamE9Yi5jO2IuYz1hfX07Xy5lQy5wcm90b3R5cGUuaGE9ZnVuY3Rpb24oKXtpZih0aGlzLmFbdGhpcy5hLmxlbmd0aC0xXT09dGhpcy5hW3RoaXMuYS5sZW5ndGgtM10pe3RoaXMuYT10aGlzLmEuc2xpY2UoMCx0aGlzLmEubGVuZ3RoLTIpO3ZhciBhPXRoaXMuamEsYj10aGlzLmEuc2xpY2UoKTthLmphPWEuYzthLmM9Yn19Owp2YXIgcUM9ZnVuY3Rpb24oYSxiKXt0aGlzLm89YTt0aGlzLmI9Yn07Xy5tKHFDLF8ubm8pO3FDLnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEpe3RoaXMuby5abih0aGlzLmIpO18uU3AoYSwiZGV2aWNlaW5mbyIsdGhpcy5iLlFjKCkpO18uU3AoYSwiZ21zY29yZXZlcnNpb24iLHRoaXMuYi5nZXRQbGF5U2VydmljZXNWZXJzaW9uQ29kZSgpKX07dmFyIHJDPXF4KCJ4SFZGYWUiLCJ4SFZGYWUiLFtfLkFpLF8uQmksXy5XeixfLll6XSk7dmFyIHNDPWZ1bmN0aW9uKGEpe3NDLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYz1hLmlhLnRlO3RoaXMuZz1hLmlhLnpiO3RoaXMuZj1hLmwuamQ7dGhpcy5iPWEubC5uYXZpZ2F0aW9uO3RoaXMuYT1hLmwucmVxdWVzdH07Xy5tKHNDLF8uVHYpO18uaHkockMse2lhOnt0ZTpfLkFpLHpiOl8uQml9LGw6e2pkOl8uaXosbmF2aWdhdGlvbjpfLld6LHJlcXVlc3Q6Xy5Zen19LHNDKTt2YXIgV2dhPV8uRXYoIkY0YjFNYiIpOwpfLnRDPV8uRXYoIm0xR0FlYiIpO3ZhciB2QztfLnVDPWZ1bmN0aW9uKGEpe18udUMuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy53PWEuaWEuemIuY2MoKTt0aGlzLmk9YS5pYS5kYTt0aGlzLmI9dGhpcy5hPW51bGw7dGhpcy5mPSExOyh0aGlzLmc9dkModGhpcykpJiZfLndDKHRoaXMsXy54Qyh0aGlzKXx8e30pfTtfLm0oXy51QyxfLlR2KTtfLmh5KF8uTkIse2lhOnt6YjpfLkJpLGRhOl8uen19LF8udUMpO3ZDPWZ1bmN0aW9uKGEpe3RyeXthLmE9d2luZG93LmxvY2FsU3RvcmFnZTtpZighYS5hKXJldHVybiExO2EuYS5zZXRJdGVtKCJfX3NhayIsIjEiKTthLmEucmVtb3ZlSXRlbSgiX19zYWsiKTtyZXR1cm4hMH1jYXRjaChiKXtyZXR1cm4gYS5hJiYwPGEuYS5sZW5ndGgmJihhLmY9ITApLCExfX07Xy54Qz1mdW5jdGlvbihhKXtyZXR1cm4gdkMoYSk/SlNPTi5wYXJzZShhLmEuZ2V0SXRlbSgicHJvbW8iKXx8Int9Iik6bnVsbH07IF8ud0M9ZnVuY3Rpb24oYSxiKXt0cnl7YS5hLnNldEl0ZW0oInByb21vIixKU09OLnN0cmluZ2lmeShiKSl9Y2F0Y2goYyl7YS5hJiYwPGEuYS5sZW5ndGgmJihhLmY9ITApfX07Xy51Qy5wcm90b3R5cGUuYz1fLkhhO18udUMucHJvdG90eXBlLmphPWZ1bmN0aW9uKCl7dmFyIGE9Xy54Qyh0aGlzKTthJiYoYS5ncG9rPWEuZ3Bva3x8e30sYS5ncG9rLmQ9ITAsXy53Qyh0aGlzLGEpKX07CnZhciB5Qz1mdW5jdGlvbihhKXt2YXIgYj1hLmNvbnRlbnQsYz1hLkdhLGQ9YS5QYSxlPWEuV2osZj1hLnFmLGs9YS5QaSxuPWEuRUoscD1hLmIsQT1hLmEsRD1hLnZoLEY9YS5nYyxJPWEuYXR0cmlidXRlcyxKPV8uSDtjPV8uUSgiIisoYz8iIitjOiJWWGRmeGQiKSk7ZD1fLlEoImNsaWNrOmNPdUNnZCIrKGEuZiYmIWs/IihwcmV2ZW50RGVmYXVsdD10cnVlKSI6IiIpKyI7IG1vdXNlZG93bjpVWDd5WjsgbW91c2V1cDpsYnNEN2U7IG1vdXNlZW50ZXI6dGZPMVljOyBtb3VzZWxlYXZlOkp5d0d1ZTsiKyhrPyIiOiJ0b3VjaHN0YXJ0OnA2cDJIOyB0b3VjaG1vdmU6Rnd1Tm5mOyB0b3VjaGVuZDp5ZnFCeGMocHJldmVudE1vdXNlRXZlbnRzPXRydWV8cHJldmVudERlZmF1bHQ9dHJ1ZSk7IHRvdWNoY2FuY2VsOkpNdFJqZDsiKSsiZm9jdXM6QUhtdXdlOyBibHVyOk8yMnAzZTsgY29udGV4dG1lbnU6bWc5UGVmOyIrKGQ/IjsiK2Q6IiIpKTtiPSgwLF8uVCkoIiIrKGs/JzxhIGNsYXNzPSInKwpfLlUoIkZLRjZtYyIpKyIgIitfLlUoIlRwUW05ZCIpKyhwPyIgIitfLlUocCk6IiIpKyciIGhyZWY9IicrXy5VKF8uUHUoaykpKyciJysobj8nIHRhcmdldD0iJytfLlUobikrJyInOiIiKSsoRnx8RD8nIGFyaWEtbGFiZWw9IicrXy5VKG51bGwhPUY/RjpEKSsnIic6IiIpKyhBPyIgIitfLkp1KEEpOiIiKSsiPiIrKGI/Xy5LKGIpOiIiKSsiPC9hPiI6Yj9fLksoYik6IiIpKTtJPSIiKyhJP18uSnUoSSk6IiIpO0Q/KEQ9YXx8e30sbj1ELlhPLEQ9IiIrKG4/J2RhdGEtdG9vbHRpcC1wb3NpdGlvbj0iJytfLlUobikrJyInOiIiKSxuPW51bGwhPW4/bjoiYm90dG9tIixEPSIgIisoMCxfLnl1KShEKygnIGRhdGEtdG9vbHRpcC12ZXJ0aWNhbC1vZmZzZXQ9IicrKCJib3R0b20iPT1uPyItMTIiOiJ0b3AiPT1uPyIxMiI6IjAiKSsnIiBkYXRhLXRvb2x0aXAtaG9yaXpvbnRhbC1vZmZzZXQ9IicrKCJyaWdodCI9PW4/Ii0xMiI6ImxlZnQiPT1uPyIxMiI6IjAiKSsnIicpKSk6RD0iIjt2YXIgTT0KXy5OKHtHYTpjLFBhOmQsV2o6az8icHJlc2VudGF0aW9uIjplLHFmOms/LTE6ZixnYzprP251bGw6Rixjb250ZW50OmIsYXR0cmlidXRlczooMCxfLkR1KShJK0QpfSxhKTthPU0uY29udGVudDtlPU0uRGE7Zj1NLkdhO2s9TS5QYTtGPU0udGE7dmFyIFI9TS5iO2M9TS5Xajt2YXIgUz1NLnhtO2Q9TS5hdHRyaWJ1dGVzO0Q9TS5kaXNhYmxlZDtJPU0uaGlkZGVuO2I9TS5pZDtuPU0ucWY7cD1NLlBpO0E9TS50aXRsZTt2YXIgamE9TS52aCxtYT1NLmEsS2E9TS5nYztNPU0uZjtSPVI/JyBqc2xvZz0iJytfLlUoUikrJyInOlM/JyBqc2xvZz0iJytfLlUoUykrIjsgdHJhY2s6IitfLlUoIkpJYnVRYyIpKyciJzoiIjtLYT1LYT8nIGFyaWEtbGFiZWw9IicrXy5VKEthKSsnIic6amE/JyBhcmlhLWxhYmVsPSInK18uVShqYSkrJyInOiIiO2E9KDAsXy5IKSgnPGRpdiByb2xlPSInKyhjP18uVShjKToiYnV0dG9uIikrJyInKyhiPycgaWQ9IicrXy5VKGIpKyciJzoiIikrJyBjbGFzcz0iJytfLlUoZSkrCihEPyIgIitfLlUoIlJEUFpFIik6IiIpKyciJytSKyhmPycganNjb250cm9sbGVyPSInK18uVShmKSsnIic6IiIpKyhrPycganNhY3Rpb249IicrXy5VKGspKyciJzoiIikrIiBqc3NoYWRvdyIrKEY/JyBqc25hbWU9IicrXy5VKEYpKyciJzoiIikrKG1hPycgYXJpYS1kZXNjcmliZWRieT0iJytfLlUobWEpKyciJzoiIikrS2ErJyBhcmlhLWRpc2FibGVkPSInK18uVShEPyJ0cnVlIjoiZmFsc2UiKSsnIicrKHA/IiI6JyB0YWJpbmRleD0iJytfLlUoRD8tMTpudWxsIT1uP246MCkrJyInKSsoST8nIHN0eWxlPSJkaXNwbGF5OiBub25lOyInOiIiKSsoTXx8MD09TT8nIGRhdGEtcmVzcG9uc2UtZGVsYXktbXM9IicrXy5VKE0pKyciJzoiIikrKEE/JyB0aXRsZT0iJytfLlUoQSkrJyInOiIiKSsoamE/JyBkYXRhLXRvb2x0aXA9IicrXy5VKGphKSsnIic6IiIpKyIgIitfLkp1KG51bGwhPWQ/ZDoiIikrIj4iKyhhP18uSyhhKToiIikrIjwvZGl2PiIpO3JldHVybiBKKCIiK2ErIiIpfTsKdmFyIHpDPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGFiZWwsYz1hLmEsZD1hLkRhO3JldHVybigwLF8uSCkoIiIreUMoXy5OKHtjb250ZW50OigwLF8uVCkoJzxkaXYgY2xhc3M9IicrXy5VKCJWd2U0VmIiKSsiICIrXy5VKCJNYmhVemQiKSsnIiBqc25hbWU9IicrXy5VKCJrc0tzWmQiKSsnIj48L2Rpdj48ZGl2IGNsYXNzPSInK18uVSgiWkZyNjBkIikrIiAiK18uVSgiQ2VvUlljIikrJyI+PC9kaXY+PGNvbnRlbnQgY2xhc3M9IicrXy5VKCJDd2FLOSIpKyciPicrKGI/JzxzcGFuIGNsYXNzPSInK18uVSgiUnZlSnZkIikrIiAiK18uVSgic25CeWFjIikrJyI+JytfLksoYikrIjwvc3Bhbj4iOiIiKSsiPC9jb250ZW50PiIpLERhOl8uUSgiIisoYz8iQTlqeWFkICI6IiIpKyhkPyIiK2Q6IiIpKX0sYSkpKyIiKX07CnZhciBBQz1mdW5jdGlvbihhKXt2YXIgYj1hLkRhLGM9Xy5IO2E9Xy5OKHtEYTpfLlEoIkMwb1ZmYyIrKGI/IiAiK2I6IiIpKX0sYSk7Yj1hLkRhO2E9KDAsXy5IKSgiIit6QyhfLk4oe0RhOl8uUSgiTzBXUmtmIG9HNVNyYiBIUTh5ZiIrKGI/IiAiK2I6IiIpKX0sYSkpKyIiKTtyZXR1cm4gYygiIithKyIiKX0sQkM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5EYSxjPV8uSDthPV8uTih7RGE6Xy5RKCJDMG9WZmMiKyhiPyIgIitiOiIiKSl9LGEpO2I9YS5EYTthPSgwLF8uSCkoIiIrekMoXy5OKHtEYTpfLlEoIk8wV1JrZiB6WmhuWWUgZTNEdXViIisoYj8iICIrYjoiIikpfSxhKSkrIiIpO3JldHVybiBjKCIiK2ErIiIpfTsKXy5DQz1mdW5jdGlvbihhKXt2YXIgYj1hLkRhO3JldHVybigwLF8uSCkoIiIrQkMoXy5OKHtEYTpfLlEoIlpwNXFXZCIrKGI/IiAiK2I6IiIpKX0sYSkpKyIiKX07Xy5EQz1mdW5jdGlvbihhKXt2YXIgYj1hLkRhO3JldHVybigwLF8uSCkoIiIrQUMoXy5OKHtEYTpfLlEoIlpwNXFXZCIrKGI/IiAiK2I6IiIpKX0sYSkpKyIiKX07dmFyIEVDPWZ1bmN0aW9uKGEpe0VDLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYT1hLmlhLnJlcXVlc3Q7dGhpcy5mPWEubC5uYXZpZ2F0aW9uO3RoaXMuYz1uZXcgXy5XbDt0aGlzLmI9bnVsbH0sR0M7Xy5tKEVDLF8uVHYpO18uaHkoXy5Zeix7aWE6e3JlcXVlc3Q6RWl9LGw6e25hdmlnYXRpb246Xy5Xen19LEVDKTtfLkZDPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9e307YS5jLmZvckVhY2goZnVuY3Rpb24oYSxiKXtmW2JdPWF9LGEpO2MgaW5zdGFuY2VvZiBfLnE/ZlsiZi5yZXEiXT1jLlFjKCk6Xy5obihjLGZ1bmN0aW9uKGEsYil7ZltiXT1hIGluc3RhbmNlb2YgXy5xP2EuUWMoKTphfSxhKTtjPWV8fDNFNDthPV8uSmwoYS5hLGIsZixbZCxyaV0pO1djYShhLmEsYyk7cmV0dXJuIGF9OwpFQy5wcm90b3R5cGUubWFrZVJlcXVlc3Q9ZnVuY3Rpb24oYSxiLGMsZCl7YT1fLkZDKHRoaXMsYSxiLGMsZCk7YT1fLk5sKHRoaXMuYSxhKTtHQyh0aGlzLGEpO3JldHVybiBhfTtfLkhDPWZ1bmN0aW9uKGEsYil7Yj1fLk5sKGEuYSxiKTtHQyhhLGIpO3JldHVybiBifTtfLklDPWZ1bmN0aW9uKGEsYixjKXtfLk1sKGIsKDAsXy5sKShmdW5jdGlvbihhLGIpe2lmKGIgaW5zdGFuY2VvZiByaSlzd2l0Y2goXy5yKGIsMSkpe2Nhc2UgMTphLnVoKDMyKTthLlpqKF8ucihiLDIpKTtfLkRCKHRoaXMuZiwiZGVuaWVkc2lnbmlucmVqZWN0ZWQiKTticmVhaztkZWZhdWx0Ol8uREIodGhpcy5mLCJpbmZvL3Vua25vd25lcnJvciIpfWVsc2UgXy5EQih0aGlzLmYsImluZm8vdW5rbm93bmVycm9yIil9LGEsYykpfTsgR0M9ZnVuY3Rpb24oYSxiKXtfLndtKGIsZnVuY3Rpb24oKXt0aGlzLmI9bnVsbH0sYSk7Xy5NbChiLGZ1bmN0aW9uKGEpe3RoaXMuYj1udWxsO2EuQmUmJih0aGlzLmI9YS5CZSgpKX0sYSl9Owp2YXIgSkM9ZnVuY3Rpb24oKXt0aGlzLmI9W107d2luZG93LnNldERnUmVzdWx0PSgwLF8ubCkoZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5iLnNoaWZ0KCk7YiYmKGIuaWMmJmIuaWMuY2FsbGJhY2soYSksYi5VbyYmXy5HbChiLlVvKSl9LHRoaXMpfTtfLm0oSkMsXy5ubyk7dmFyIFhnYT1bIi9fL2xvb2t1cC9hY2NvdW50bG9va3VwIiwiL18vc2lnbnVwL3ZhbGlkYXRlcGVyc29uYWxkZXRhaWxzIiwiL18vc2lnbmluL3N0YXJ0IiwiL18vc2lnbmluL2NoYWxsZW5nZSJdOwpKQy5wcm90b3R5cGUuYT1mdW5jdGlvbihhKXtpZighKDA+WGdhLmluZGV4T2YoYS5hLmIpKSYmd2luZG93Lm1tJiZ3aW5kb3cubW0uZ2V0RHJvaWRHdWFyZFJlc3VsdCl7dmFyIGI9YS5jP2EuYy5nZXQoImYucmVxIik6bnVsbDtpZihiKXt2YXIgYz17aWM6bmV3IF8ucG0sVW86bnVsbH07dGhpcy5iLnB1c2goYyk7Xy54bShjLmljLGZ1bmN0aW9uKGIpe2lmKGIpe3ZhciBjPW5ldyBxaTtfLnQoYywxLGIpO18uU3AoYSwiZGdyZXNwb25zZSIsYy5RYygpKX1yZXR1cm4gYX0sdGhpcyk7Yy5Vbz1fLkZsKGZ1bmN0aW9uKCl7Yy5pYyYmKGMuaWMuYSgpLGMuaWM9bnVsbCk7Yy5VbyYmKGMuVW89bnVsbCl9LDFFMyx0aGlzKTtiPWIucmVwbGFjZSgvW15hLXpBLVpfMC05XS9nLCIiKTsxMDA8Yi5sZW5ndGgmJihiPWIuc3Vic3RyaW5nKDAsMTAwKSk7d2luZG93Lm1tLmdldERyb2lkR3VhcmRSZXN1bHQoJ1siJytiKyciXScpO3JldHVybiBjLmljfX19Owp2YXIgS0M9ZnVuY3Rpb24oKXt9O18ubShLQyxfLm5vKTtLQy5wcm90b3R5cGUuYT1mdW5jdGlvbihhKXthLmphLnNldCgiR29vZ2xlLUFjY291bnRzLVhTUkYiLCIxIil9O18uTEM9ZnVuY3Rpb24oKXt9O18uTEMucHJvdG90eXBlLlVjPWZ1bmN0aW9uKGEpe2Eubz0iRkFJTCI7YS5iJiYoYS5iLlRtPSJGQUlMIik7YS5hJiYoYS5hLlRtPSJGQUlMIik7Xy55cyhhLG5ldyBLQyk7Xy55cyhhLG5ldyBKQyk7dGhpcy5hKGEpfTtfLkxDLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7fTthdCh7YjpmdW5jdGlvbihhKXtudShtdShhKSxzdSk7cnUucHVzaChzdSl9LFVjOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0KEVpKTsobmV3IF8uTEMpLlVjKGIpO3B1KG11KGEpLHN1KX19KTtWcyhmdW5jdGlvbigpe30pO3ZhciBNQz1mdW5jdGlvbigpe307Xy52eChNQyxfLk1BKTt2YXIgWWdhPW5ldyBfLldsO3ZhciBOQz1xeCgieFJ6MXMiLCJ4UnoxcyIsW10pO3R4KE5DLCJRTHBUT2QiKTt2YXIgT0M9ZnVuY3Rpb24oYSl7T0MuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSl9O18ubShPQyxfLlR2KTtfLmh5KE5DLHt9LE9DKTtPQy5wcm90b3R5cGUub2E9ZnVuY3Rpb24oYSl7cmV0dXJuIFlnYS5nZXQoYS5iLGEuYSl9O18ud3goTUMuTGUsTkMpO3ZhciBQQz1mdW5jdGlvbihhKXtQQy4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmE9YS5sLm5hdmlnYXRpb247dGhpcy5iPXRoaXMuc3c9MDt0aGlzLmY9KG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpO1FDKHRoaXMpfTtfLm0oUEMsXy5Udik7Xy5oeShfLlp6LHtsOntuYXZpZ2F0aW9uOl8uV3p9fSxQQyk7CnZhciBSQz1mdW5jdGlvbihhLGIpe3ZhciBjPSgwLF8uVWEpKCk7cmV0dXJuIDAhPWEmJmM+PWErYn0sUUM9ZnVuY3Rpb24oYSl7Xy5IbCg2RTQpLnRoZW4oZnVuY3Rpb24oKXtpZih0aGlzLmY9PShuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKSl7dmFyIGE9WmdhKHRoaXMpOyFhJiZSQyh0aGlzLnN3LDcyRTUpP18uREIodGhpcy5hLCJpbmZvL3Nlc3Npb25leHBpcmVkIik6YSYmXy5mQyh0aGlzLmEpJiZSQyh0aGlzLmIsMTJFNSk/Xy5EQih0aGlzLmEsImluZm8vc2Vzc2lvbmV4cGlyZWQiKTpRQyh0aGlzKX19LG51bGwsYSl9LFpnYT1mdW5jdGlvbihhKXt2YXIgYj1fLm1DKGEuYSk7cmV0dXJuIGNjKE16LGZ1bmN0aW9uKGEpe3JldHVybiBiPT1hfSl9Owp2YXIgU0M9ZnVuY3Rpb24oYSl7U0MuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy5hPWEuaWEudGU7dGhpcy5mPTB9O18ubShTQyxfLlR2KTtfLmh5KF8uc3ose2lhOnt0ZTpfLkFpfX0sU0MpO18udXo9ZnVuY3Rpb24oYSl7Xy5UQyhhLCgwLF8uVWEpKCkpO2EuYS5hKCl9O18uVEM9ZnVuY3Rpb24oYSxiKXthLmImJihhLmIuYj1iLF8uJHkoYS5hLGEuYikpfTt2YXIgJGdhPWZ1bmN0aW9uKCl7dmFyIGE9Xy5ILGI9JzxkaXYgY2xhc3M9IicrXy5VKCJRbnJjeGIiKSsnIiByb2xlPSJidXR0b24iIHRpdGxlPSInO3JldHVybiBhKGIrXy5VKF8uTCgiQ2xvc2UgbWVudSIpKSsnIj48L2Rpdj4nKX07dmFyIGFoYT1fLkV2KCJMZkdNRGMiKTtfLlVDPVYoIlh1MmNzZCIsIlh1MmNzZCIsW10pO18uVkM9VigiWjdQaUZiIiwiWjdQaUZiIixbXSk7Xy5XQz1WKCJlVjlubiIsImVWOW5uIixbXSk7Xy5YQz1mdW5jdGlvbihhKXtfLlhDLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYT1hLnhlLllhO2lmKCFfLmFlKHRoaXMuYSkpe2E9dGhpcy5hO3ZhciBiPW5ldyAkZDtfLmtkKGEsMSxiKX19O18ubShfLlhDLFN4KTtIeihfLldDLHt4ZTp7WWE6e1FiOlpkLG5hbWU6ImFwcENvbmZpZyJ9fX0sXy5YQyk7Xy5ZQz1mdW5jdGlvbihhKXtyZXR1cm4gXy5lZShhLmEpfTtfLlpDPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IF8uT2U7Xy5QZShjLF8udihhLmEsMTgsMikpO3ZhciBkPV8udihhLmEsNDMsITEpO18udChjLDksZCk7Xy5kZShhLmEpJiYoZD1fLmRlKGEuYSksXy5rZChjLDMsZCkpO18uWUMoYSkmJihkPV8uWUMoYSksXy5rZChjLDUsZCkpO251bGwhPV8ucihhLmEsNDQpJiYoZD1fLnYoYS5hLDQ0LCExKSxfLnQoYyw2LGQpKTtudWxsIT1fLnIoYS5hLDQ1KSYmKGE9Xy52KGEuYSw0NSwhMSksXy50KGMsNyxhKSk7YiYmXy50KGMsOCxiKTtyZXR1cm4gY307IF8uJEM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uYWUoYS5hKX07Xy5hRD1mdW5jdGlvbihhKXtyZXR1cm4gXy5yKGEuYSwxMyl9OwpfLmJEPVYoIm5xcFRIZSIsIm5xcFRIZSIsW10pO18uY0Q9ZnVuY3Rpb24oYSl7Xy5jRC4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmE9YS54ZS5OaXx8bmV3IFdoO3RoaXMuYj1hLnhhLmZhO3RoaXMuZj1udWxsfTtfLm0oXy5jRCxTeCk7SHooXy5iRCx7eGU6e05pOntRYjpXaCxuYW1lOiJpbml0aWFsU2lnbkluRGF0YSJ9fSx4YTp7ZmE6Xy5YQ319LF8uY0QpO18uZEQ9ZnVuY3Rpb24oYSxiKXtfLmxkKGEuYSwxLGIpfTtfLmNELnByb3RvdHlwZS56Yz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuemMoKX07Xy5lRD1mdW5jdGlvbihhKXtyZXR1cm4gXy5yKGEuYSwyKXx8MH07Xy5mRD1mdW5jdGlvbihhKXtyZXR1cm4gYS56YygpW18uZUQoYSldfTtfLmdEPWZ1bmN0aW9uKGEsYil7Xy5rZChhLmEsMTUsYil9O18uY0QucHJvdG90eXBlLk5iPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5OYigpfTtfLmNELnByb3RvdHlwZS5PYT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuTmIoKTtyZXR1cm4gYSYmXy5uZyhhKVtfLmhEKHRoaXMpXX07Cl8uaUQ9ZnVuY3Rpb24oYSxiKXtfLnQoYS5hLDUsYil9O18uaEQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucihhLmEsNSl8fDB9O18uY0QucHJvdG90eXBlLkNiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5DYigpfTtfLmNELnByb3RvdHlwZS5wYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEucGMoKX07Xy5jRC5wcm90b3R5cGUuZ2V0UGhvbmVOdW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmdldFBob25lTnVtYmVyKCl9O18uakQ9ZnVuY3Rpb24oYSxiKXtfLnQoYS5hLDE4LGIpfTtfLmtEPWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA9PV8uaGQoYS5hLDI3KS5sZW5ndGg/ITA6MDw9Xy5oZChhLmEsMjcpLmluZGV4T2YoYil9O18uY0QucHJvdG90eXBlLk5oPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5OaCgpfTtfLmxEPWZ1bmN0aW9uKGEpe3JldHVybiBfLmRpKGEuYSl8fG51bGx9O18uY0QucHJvdG90eXBlLnVoPWZ1bmN0aW9uKGEpe3RoaXMuYS51aChhKX07Cl8uY0QucHJvdG90eXBlLlpqPWZ1bmN0aW9uKGEpe3RoaXMuYS5aaihhKX07Xy5jRC5wcm90b3R5cGUuSGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLkhlKCl9O18ubUQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz0tMTtpZihiKXt2YXIgZD1hLk5iKCk7aWYoZCl7Zm9yKHZhciBlPV8ubmcoZCksZj0wO2Y8ZS5sZW5ndGg7ZisrKWlmKF8ucihiLDQpPT1fLnIoZVtmXSw0KSl7Yz1mO2VbZl09YjticmVha31fLmxkKGQsMSxlKTtfLmdEKGEsZCl9fXJldHVybiBjfTsKdmFyIGJoYT1WKCJjVVlObWQiLCJjVVlObWQiLFtfLkJpLF8uel0pO3ZhciBuRD1mdW5jdGlvbihhKXtuRC4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmY9YS5pYS5kYTt0aGlzLmI9YS5pYS56Yi5jYygpO3RoaXMuRWE9YS54YS5zaWduSW47dGhpcy5hPW51bGx9O18ubShuRCxfLmp5KTtfLlgoYmhhLHt4YTp7c2lnbkluOl8uY0R9LGlhOnt6YjpfLkJpLGRhOl8uen19LG5EKTtuRC5wcm90b3R5cGUuSmk9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkVhLk9hKCkmJl8uc2codGhpcy5FYS5PYSgpKTtyZXR1cm4gYSYmMCE9Xy5UZChhKT9hOihhPXRoaXMuRWEuTmIoKSk/Xy5wZyhhKTpudWxsfTtuRC5wcm90b3R5cGUuSEI9ZnVuY3Rpb24oKXt0aGlzLmFhKCkuaWIoImp5SEVIZCIpO18uYngodGhpcy5hYSgpLCJhcmlhLWhpZGRlbiIpO3RoaXMuYWEoKS5SYSgidGFiaW5kZXgiLCIwIil9O18uVyhuRC5wcm90b3R5cGUsImFJUnhjZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IQn0pOwpuRC5wcm90b3R5cGUuQ2E9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkppKCk7YSYmKGE9Xy5yKGEsNikpJiYwPGEmJihuZXcgXy5Obih0aGlzLkhCLDFFMyphLHRoaXMpKS5zdGFydCgpfTtfLlcobkQucHJvdG90eXBlLCJXWWQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQ2F9KTtuRC5wcm90b3R5cGUuVmg9ZnVuY3Rpb24oKXt0aGlzLkhhKGFoYSl9O18uVyhuRC5wcm90b3R5cGUsIktqc3FQZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5WaH0pO25ELnByb3RvdHlwZS5oTD1mdW5jdGlvbigpe3RoaXMuYWEoKS5SYSgiYXJpYS1leHBhbmRlZCIsInRydWUiKTt0aGlzLmF8fCh0aGlzLmE9bmV3IF8uU3coXy5BdCh0aGlzLmYsJGdhKSksXy5kcigiYmRmNGRjIix0aGlzLmIuYSlbMF0uYXBwZW5kQ2hpbGQodGhpcy5hLnUoKSkpO3RoaXMuYS5zaG93KCl9O18uVyhuRC5wcm90b3R5cGUsIkdaeHFRZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oTH0pOyBuRC5wcm90b3R5cGUuZ0w9ZnVuY3Rpb24oKXt0aGlzLmFhKCkuUmEoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpO3RoaXMuYS5FYigpfTtfLlcobkQucHJvdG90eXBlLCJrdjdiSmQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ0x9KTsKdmFyIG9EPXtjUjp7MUUzOntvdGhlcjoiMEsifSwxRTQ6e290aGVyOiIwMEsifSwxRTU6e290aGVyOiIwMDBLIn0sMUU2OntvdGhlcjoiME0ifSwxRTc6e290aGVyOiIwME0ifSwxRTg6e290aGVyOiIwMDBNIn0sMUU5OntvdGhlcjoiMEIifSwxRTEwOntvdGhlcjoiMDBCIn0sMUUxMTp7b3RoZXI6IjAwMEIifSwxRTEyOntvdGhlcjoiMFQifSwxRTEzOntvdGhlcjoiMDBUIn0sMUUxNDp7b3RoZXI6IjAwMFQifX0sYlI6ezFFMzp7b3RoZXI6IjAgdGhvdXNhbmQifSwxRTQ6e290aGVyOiIwMCB0aG91c2FuZCJ9LDFFNTp7b3RoZXI6IjAwMCB0aG91c2FuZCJ9LDFFNjp7b3RoZXI6IjAgbWlsbGlvbiJ9LDFFNzp7b3RoZXI6IjAwIG1pbGxpb24ifSwxRTg6e290aGVyOiIwMDAgbWlsbGlvbiJ9LDFFOTp7b3RoZXI6IjAgYmlsbGlvbiJ9LDFFMTA6e290aGVyOiIwMCBiaWxsaW9uIn0sMUUxMTp7b3RoZXI6IjAwMCBiaWxsaW9uIn0sMUUxMjp7b3RoZXI6IjAgdHJpbGxpb24ifSwxRTEzOntvdGhlcjoiMDAgdHJpbGxpb24ifSwgMUUxNDp7b3RoZXI6IjAwMCB0cmlsbGlvbiJ9fX0scEQ9b0Q7cEQ9b0Q7CnZhciBjaGE9e0FFRDpbMiwiZGgiLCJcdTA2MmYuXHUwNjI1LiIsIkRIIl0sQUxMOlswLCJMZWsiLCJMZWsiXSxBVUQ6WzIsIiQiLCJBVSQiXSxCRFQ6WzIsIlx1MDlmMyIsIlRrIl0sQkdOOlsyLCJsZXYiLCJsZXYiXSxCUkw6WzIsIlIkIiwiUiQiXSxDQUQ6WzIsIiQiLCJDJCJdLENERjpbMiwiRnJDRCIsIkNERiJdLENIRjpbMiwiQ0hGIiwiQ0hGIl0sQ0xQOlswLCIkIiwiQ0wkIl0sQ05ZOlsyLCJcdTAwYTUiLCJSTUJcdTAwYTUiXSxDT1A6WzMyLCIkIiwiQ09MJCJdLENSQzpbMCwiXHUyMGExIiwiQ1JcdTIwYTEiXSxDWks6WzUwLCJLXHUwMTBkIiwiS1x1MDEwZCJdLERLSzpbNTAsImtyLiIsImtyLiJdLERPUDpbMiwiUkQkIiwiUkQkIl0sRUdQOlsyLCJcdTAwYTMiLCJMRSJdLEVUQjpbMiwiQmlyciIsIkJpcnIiXSxFVVI6WzIsIlx1MjBhYyIsIlx1MjBhYyJdLEdCUDpbMiwiXHUwMGEzIiwiR0JcdTAwYTMiXSxIS0Q6WzIsIiQiLCJISyQiXSxIUks6WzIsImtuIiwia24iXSxIVUY6WzM0LAoiRnQiLCJGdCJdLElEUjpbMCwiUnAiLCJScCJdLElMUzpbMzQsIlx1MjBhYSIsIklMXHUyMGFhIl0sSU5SOlsyLCJcdTIwYjkiLCJScyJdLElSUjpbMCwiUmlhbCIsIklSUiJdLElTSzpbMCwia3IiLCJrciJdLEpNRDpbMiwiJCIsIkpBJCJdLEpQWTpbMCwiXHUwMGE1IiwiSlBcdTAwYTUiXSxLUlc6WzAsIlx1MjBhOSIsIktSXHUyMGE5Il0sTEtSOlsyLCJScyIsIlNMUnMiXSxMVEw6WzIsIkx0IiwiTHQiXSxNTlQ6WzAsIlx1MjBhZSIsIk1OXHUyMGFlIl0sTVZSOlsyLCJSZiIsIk1WUiJdLE1YTjpbMiwiJCIsIk1leCQiXSxNWVI6WzIsIlJNIiwiUk0iXSxOT0s6WzUwLCJrciIsIk5Pa3IiXSxQQUI6WzIsIkIvLiIsIkIvLiJdLFBFTjpbMiwiUy8uIiwiUy8uIl0sUEhQOlsyLCJcdTIwYjEiLCJQSFAiXSxQS1I6WzAsIlJzIiwiUEtScy4iXSxQTE46WzUwLCJ6XHUwMTQyIiwielx1MDE0MiJdLFJPTjpbMiwiUk9OIiwiUk9OIl0sUlNEOlswLCJkaW4iLCJSU0QiXSxSVUI6WzUwLCJcdTIwYmQiLAoiUlVCIl0sU0FSOlsyLCJSaWFsIiwiUmlhbCJdLFNFSzpbNTAsImtyIiwia3IiXSxTR0Q6WzIsIiQiLCJTJCJdLFRIQjpbMiwiXHUwZTNmIiwiVEhCIl0sVFJZOlsyLCJcdTIwYmEiLCJUUlkiXSxUV0Q6WzIsIk5UJCIsIk5UJCJdLFRaUzpbMCwiVFNoIiwiVFNoIl0sVUFIOlsyLCJcdTA0MzNcdTA0NDBcdTA0M2QuIiwiVUFIIl0sVVNEOlsyLCIkIiwiVVMkIl0sVVlVOlsyLCIkIiwiJFUiXSxWTkQ6WzQ4LCJcdTIwYWIiLCJWTlx1MjBhYiJdLFlFUjpbMCwiUmlhbCIsIlJpYWwiXSxaQVI6WzIsIlIiLCJaQVIiXX07CnZhciBxRD17U3c6Ii4iLFRyOiIsIixZdzoiJSIsZnM6IjAiLGpEOiIrIixYdzoiLSIsVXc6IkUiLFp3OiJcdTIwMzAiLFZyOiJcdTIyMWUiLGZEOiJOYU4iLFdDOiIjLCMjMC4jIyMiLG5UOiIjRTAiLCRTOiIjLCMjMCUiLG1SOiJcdTAwYTQjLCMjMC4wMCIsVHc6IlVTRCJ9LHJEPXFEO3JEPXFEO3ZhciB0RD1mdW5jdGlvbigpe3RoaXMuZWE9NDA7dGhpcy5iPTE7dGhpcy5pPTM7dGhpcy5MYT10aGlzLmM9MDt0aGlzLkJhPSExO3RoaXMud2E9dGhpcy53PSIiO3RoaXMuZj1yRC5Ydzt0aGlzLmphPSIiO3RoaXMuYT0xO3RoaXMuZz0hMTt0aGlzLm89W107dGhpcy5oYT10aGlzLkVjPSExO3ZhciBhPXJELldDO2EucmVwbGFjZSgvIC9nLCJcdTAwYTAiKTt2YXIgYj1bMF07dGhpcy53PXNEKHRoaXMsYSxiKTtmb3IodmFyIGM9YlswXSxkPS0xLGU9MCxmPTAsaz0wLG49LTEscD1hLmxlbmd0aCxBPSEwO2JbMF08cCYmQTtiWzBdKyspc3dpdGNoKGEuY2hhckF0KGJbMF0pKXtjYXNlICIjIjowPGY/aysrOmUrKzswPD1uJiYwPmQmJm4rKzticmVhaztjYXNlICIwIjppZigwPGspdGhyb3cgRXJyb3IoIlNhYCIrYSk7ZisrOzA8PW4mJjA+ZCYmbisrO2JyZWFrO2Nhc2UgIiwiOjA8biYmdGhpcy5vLnB1c2gobik7bj0wO2JyZWFrO2Nhc2UgIi4iOmlmKDA8PWQpdGhyb3cgRXJyb3IoIlRhYCIrCmEpO2Q9ZStmK2s7YnJlYWs7Y2FzZSAiRSI6aWYodGhpcy5oYSl0aHJvdyBFcnJvcigiVWFgIithKTt0aGlzLmhhPSEwO3RoaXMuTGE9MDtiWzBdKzE8cCYmIisiPT1hLmNoYXJBdChiWzBdKzEpJiYoYlswXSsrLHRoaXMuQmE9ITApO2Zvcig7YlswXSsxPHAmJiIwIj09YS5jaGFyQXQoYlswXSsxKTspYlswXSsrLHRoaXMuTGErKztpZigxPmUrZnx8MT50aGlzLkxhKXRocm93IEVycm9yKCJWYWAiK2EpO0E9ITE7YnJlYWs7ZGVmYXVsdDpiWzBdLS0sQT0hMX0wPT1mJiYwPGUmJjA8PWQmJihmPWQsMD09ZiYmZisrLGs9ZS1mLGU9Zi0xLGY9MSk7aWYoMD5kJiYwPGt8fDA8PWQmJihkPGV8fGQ+ZStmKXx8MD09bil0aHJvdyBFcnJvcigiV2FgIithKTtrPWUrZitrO3RoaXMuaT0wPD1kP2stZDowOzA8PWQmJih0aGlzLmM9ZStmLWQsMD50aGlzLmMmJih0aGlzLmM9MCkpO3RoaXMuYj0oMDw9ZD9kOmspLWU7dGhpcy5oYSYmKHRoaXMuZWE9ZSt0aGlzLmIsMD09dGhpcy5pJiYwPT10aGlzLmImJgoodGhpcy5iPTEpKTt0aGlzLm8ucHVzaChNYXRoLm1heCgwLG4pKTt0aGlzLkVjPTA9PWR8fGQ9PWs7Yz1iWzBdLWM7dGhpcy53YT1zRCh0aGlzLGEsYik7YlswXTxhLmxlbmd0aCYmIjsiPT1hLmNoYXJBdChiWzBdKT8oYlswXSsrLDEhPXRoaXMuYSYmKHRoaXMuZz0hMCksdGhpcy5mPXNEKHRoaXMsYSxiKSxiWzBdKz1jLHRoaXMuamE9c0QodGhpcyxhLGIpKToodGhpcy5mKz10aGlzLncsdGhpcy5qYSs9dGhpcy53YSl9Owp0RC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oYSxiKXtiPWJ8fFswXTthPWEucmVwbGFjZSgvIC9nLCJcdTAwYTAiKTt2YXIgYz1hLmluZGV4T2YodGhpcy53LGJbMF0pPT1iWzBdLGQ9YS5pbmRleE9mKHRoaXMuZixiWzBdKT09YlswXTtjJiZkJiYodGhpcy53Lmxlbmd0aD50aGlzLmYubGVuZ3RoP2Q9ITE6dGhpcy53Lmxlbmd0aDx0aGlzLmYubGVuZ3RoJiYoYz0hMSkpO2M/YlswXSs9dGhpcy53Lmxlbmd0aDpkJiYoYlswXSs9dGhpcy5mLmxlbmd0aCk7aWYoYS5pbmRleE9mKHJELlZyLGJbMF0pPT1iWzBdKXtiWzBdKz1yRC5Wci5sZW5ndGg7dmFyIGU9d2luZG93LkluZmluaXR5fWVsc2V7ZT1hO2Zvcih2YXIgZj0hMSxrPSExLG49ITEscD0tMSxBPTEsRD1yRC5TdyxGPXJELlRyLEk9ckQuVXcsSj0iIjtiWzBdPGUubGVuZ3RoO2JbMF0rKyl7dmFyIE09ZS5jaGFyQXQoYlswXSksUj11RChNKTtpZigwPD1SJiY5Pj1SKUorPVIsbj0hMDtlbHNlIGlmKE09PUQuY2hhckF0KDApKXtpZihmfHwKaylicmVhaztKKz0iLiI7Zj0hMH1lbHNlIGlmKE09PUYuY2hhckF0KDApJiYoIlx1MDBhMCIhPUYuY2hhckF0KDApfHxiWzBdKzE8ZS5sZW5ndGgmJjA8PXVEKGUuY2hhckF0KGJbMF0rMSkpKSl7aWYoZnx8aylicmVha31lbHNlIGlmKE09PUkuY2hhckF0KDApKXtpZihrKWJyZWFrO0orPSJFIjtrPSEwO3A9YlswXX1lbHNlIGlmKCIrIj09TXx8Ii0iPT1NKXtpZihuJiZwIT1iWzBdLTEpYnJlYWs7Sis9TX1lbHNlIGlmKDE9PXRoaXMuYSYmTT09ckQuWXcuY2hhckF0KDApKXtpZigxIT1BKWJyZWFrO0E9MTAwO2lmKG4pe2JbMF0rKzticmVha319ZWxzZSBpZigxPT10aGlzLmEmJk09PXJELlp3LmNoYXJBdCgwKSl7aWYoMSE9QSlicmVhaztBPTFFMztpZihuKXtiWzBdKys7YnJlYWt9fWVsc2UgYnJlYWt9MSE9dGhpcy5hJiYoQT10aGlzLmEpO2U9KDAsd2luZG93LnBhcnNlRmxvYXQpKEopL0F9aWYoYyl7aWYoYS5pbmRleE9mKHRoaXMud2EsYlswXSkhPWJbMF0pcmV0dXJuIHdpbmRvdy5OYU47CmJbMF0rPXRoaXMud2EubGVuZ3RofWVsc2UgaWYoZCl7aWYoYS5pbmRleE9mKHRoaXMuamEsYlswXSkhPWJbMF0pcmV0dXJuIHdpbmRvdy5OYU47YlswXSs9dGhpcy5qYS5sZW5ndGh9cmV0dXJuIGQ/LWU6ZX07CnZhciB4RD1mdW5jdGlvbihhLGIpe2lmKCgwLHdpbmRvdy5pc05hTikoYikpcmV0dXJuIHJELmZEO3ZhciBjPVtdO3ZhciBkPWRoYTtiLz1NYXRoLnBvdygxMCxkLmVHKTtjLnB1c2goZC5wcmVmaXgpO3ZhciBlPTA+Ynx8MD09YiYmMD4xL2I7Yy5wdXNoKGU/YS5mOmEudyk7aWYoKDAsd2luZG93LmlzRmluaXRlKShiKSlpZihiPWIqKGU/LTE6MSkqYS5hLGEuaGEpe3ZhciBmPWI7aWYoMD09Zil2RChhLGYsYS5iLGMpLHdEKGEsMCxjKTtlbHNle2I9TWF0aC5mbG9vcihNYXRoLmxvZyhmKS9NYXRoLmxvZygxMCkrMkUtMTUpO3ZhciBrPU1hdGgucG93KDEwLGIpOygwLHdpbmRvdy5pc0Zpbml0ZSkoaykmJjAhPT1rP2YvPWs6KGs9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihiLzIpKSxmPWYvay9rLDE9PWIlMiYmKGY9MDxiP2YvMTA6MTAqZikpO2s9YS5iO2lmKDE8YS5lYSYmYS5lYT5hLmIpe2Zvcig7MCE9YiVhLmVhOylmKj0xMCxiLS07az0xfWVsc2UgMT5hLmI/KGIrKyxmLz0xMCk6KGItPQphLmItMSxmKj1NYXRoLnBvdygxMCxhLmItMSkpO3ZEKGEsZixrLGMpO3dEKGEsYixjKX19ZWxzZSB2RChhLGIsYS5iLGMpO2Vsc2UgYy5wdXNoKHJELlZyKTtjLnB1c2goZT9hLmphOmEud2EpO2MucHVzaChkLk9vKTtyZXR1cm4gYy5qb2luKCIiKX0sdkQ9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5jPmEuaSl0aHJvdyBFcnJvcigiUGEiKTtkfHwoZD1bXSk7dmFyIGU9TWF0aC5wb3coMTAsYS5pKSxmPU1hdGgucm91bmQoYiplKTsoMCx3aW5kb3cuaXNGaW5pdGUpKGYpPyhiPU1hdGguZmxvb3IoZi9lKSxlPU1hdGguZmxvb3IoZi1iKmUpKTplPTA7dmFyIGs9YjtiPWU7dmFyIG49MDxhLmN8fDA8Ynx8ITE7ZT1hLmM7biYmKGU9YS5jKTt2YXIgcD0iIjtmb3IoZj1rOzFFMjA8ZjspcD0iMCIrcCxmPU1hdGgucm91bmQoZi8xMCk7cD1mK3A7dmFyIEE9ckQuU3c7Zj1yRC5mcy5jaGFyQ29kZUF0KDApO3ZhciBEPXAubGVuZ3RoLEY9MDtpZigwPGt8fDA8Yyl7Zm9yKGs9RDtrPGM7aysrKWQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGYpKTsKaWYoMjw9YS5vLmxlbmd0aClmb3IoYz0xO2M8YS5vLmxlbmd0aDtjKyspRis9YS5vW2NdO2M9RC1GO2lmKDA8Yyl7az1hLm87Rj1EPTA7Zm9yKHZhciBJLEo9ckQuVHIsTT1wLmxlbmd0aCxSPTA7UjxNO1IrKylpZihkLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShmKzEqTnVtYmVyKHAuY2hhckF0KFIpKSkpLDE8TS1SKWlmKEk9a1tGXSxSPGMpe3ZhciBTPWMtUjsoMT09PUl8fDA8SSYmMT09PVMlSSkmJmQucHVzaChKKX1lbHNlIEY8ay5sZW5ndGgmJihSPT09Yz9GKz0xOkk9PT1SLWMtRCsxJiYoZC5wdXNoKEopLEQrPUksRis9MSkpfWVsc2V7Yz1wO3A9YS5vO2s9ckQuVHI7ST1jLmxlbmd0aDtKPVtdO2ZvcihEPXAubGVuZ3RoLTE7MDw9RCYmMDxJO0QtLSl7Rj1wW0RdO2ZvcihNPTA7TTxGJiYwPD1JLU0tMTtNKyspSi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZisxKk51bWJlcihjLmNoYXJBdChJLU0tMSkpKSk7SS09RjswPEkmJkoucHVzaChrKX1kLnB1c2guYXBwbHkoZCxKLnJldmVyc2UoKSl9fWVsc2Ugbnx8CmQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGYpKTsoYS5FY3x8bikmJmQucHVzaChBKTtuPVN0cmluZyhiKTtiPW4uc3BsaXQoImUrIik7aWYoMj09Yi5sZW5ndGgpe2lmKG49KDAsd2luZG93LnBhcnNlRmxvYXQpKGJbMF0pKXtBPW47aWYoKDAsd2luZG93LmlzRmluaXRlKShBKSl7Zm9yKGM9MDsxPD0oQS89MTApOyljKys7QT1jfWVsc2UgQT0wPEE/QTowO0E9MC1BLTE7LTE+QT8oQT1NYXRoLnBvdygxMCwxKSxuPU1hdGgucm91bmQobi9BKSpBKTooQT1NYXRoLnBvdygxMCxBKSxuPU1hdGgucm91bmQobipBKS9BKX1uPVN0cmluZyhuKTtuPW4ucmVwbGFjZSgiLiIsIiIpO24rPU5iKCIwIiwoMCx3aW5kb3cucGFyc2VJbnQpKGJbMV0sMTApLW4ubGVuZ3RoKzEpfWEuaSsxPm4ubGVuZ3RoJiYobj0iMSIrTmIoIjAiLGEuaS1uLmxlbmd0aCkrbik7Zm9yKGE9bi5sZW5ndGg7IjAiPT1uLmNoYXJBdChhLTEpJiZhPmUrMTspYS0tO2ZvcihrPTE7azxhO2srKylkLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShmKwoxKk51bWJlcihuLmNoYXJBdChrKSkpKX0sd0Q9ZnVuY3Rpb24oYSxiLGMpe2MucHVzaChyRC5Vdyk7MD5iPyhiPS1iLGMucHVzaChyRC5YdykpOmEuQmEmJmMucHVzaChyRC5qRCk7Yj0iIitiO2Zvcih2YXIgZD1yRC5mcyxlPWIubGVuZ3RoO2U8YS5MYTtlKyspYy5wdXNoKGQpO2MucHVzaChiKX0sdUQ9ZnVuY3Rpb24oYSl7YT1hLmNoYXJDb2RlQXQoMCk7aWYoNDg8PWEmJjU4PmEpcmV0dXJuIGEtNDg7dmFyIGI9ckQuZnMuY2hhckNvZGVBdCgwKTtyZXR1cm4gYjw9YSYmYTxiKzEwP2EtYjotMX0sc0Q9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0iIixlPSExLGY9Yi5sZW5ndGg7Y1swXTxmO2NbMF0rKyl7dmFyIGs9Yi5jaGFyQXQoY1swXSk7aWYoIiciPT1rKWNbMF0rMTxmJiYiJyI9PWIuY2hhckF0KGNbMF0rMSk/KGNbMF0rKyxkKz0iJyIpOmU9IWU7ZWxzZSBpZihlKWQrPWs7ZWxzZSBzd2l0Y2goayl7Y2FzZSAiIyI6Y2FzZSAiMCI6Y2FzZSAiLCI6Y2FzZSAiLiI6Y2FzZSAiOyI6cmV0dXJuIGQ7CmNhc2UgIlx1MDBhNCI6Y1swXSsxPGYmJiJcdTAwYTQiPT1iLmNoYXJBdChjWzBdKzEpPyhjWzBdKyssZCs9ckQuVHcpOmQrPWNoYVtyRC5Ud11bMV07YnJlYWs7Y2FzZSAiJSI6aWYoIWEuZyYmMSE9YS5hKXRocm93IEVycm9yKCJRYSIpO2lmKGEuZyYmMTAwIT1hLmEpdGhyb3cgRXJyb3IoIlJhIik7YS5hPTEwMDthLmc9ITE7ZCs9ckQuWXc7YnJlYWs7Y2FzZSAiXHUyMDMwIjppZighYS5nJiYxIT1hLmEpdGhyb3cgRXJyb3IoIlFhIik7aWYoYS5nJiYxRTMhPWEuYSl0aHJvdyBFcnJvcigiUmEiKTthLmE9MUUzO2EuZz0hMTtkKz1yRC5adzticmVhaztkZWZhdWx0OmQrPWt9fXJldHVybiBkfSxkaGE9e3ByZWZpeDoiIixPbzoiIixlRzowfTsKdmFyIGVoYSxmaGEsZ2hhOwpfLnlEPWZ1bmN0aW9uKGEpe3ZhciBiPWEuRGEsYz1hLmNvbnRlbnQsZD1hLlBhLGU9YS50YSxmPWEuYXR0cmlidXRlcyxrPWEuZGlzYWJsZWQsbj1hLmNoZWNrZWQscD1hLmlkLEE9YS50aXRsZTthPWEudmFsdWU7cmV0dXJuKDAsXy5IKSgiPGRpdiIrKHA/JyBpZD0iJytfLlUocCkrJyInOiIiKSsnIGNsYXNzPSInK18uVShiKSsobj8iICIrXy5VKCJOMlJwQmUiKToiIikrKGs/IiAiK18uVSgiUkRQWkUiKToiIikrKGE/IiAiK18uVSgiQ0RFTFhiIik6IiIpKyciIGpzY29udHJvbGxlcj0iJytfLlUoInB4cTN4IikrJyIganNhY3Rpb249ImNsaWNrb25seTonK18uVSgiS2pzcVBkIikrIjsgZm9jdXM6IitfLlUoIkp0MUVYIikrIjsgYmx1cjoiK18uVSgiZnBmVEVlIikrIjsgaW5wdXQ6IitfLlUoIkxnNVNWIikrIjsiKyhkPyI7IitfLlUoZCk6IiIpKyciIGpzc2hhZG93JysoZT8nIGpzbmFtZT0iJytfLlUoZSkrJyInOiIiKSsoaz8nIGFyaWEtZGlzYWJsZWQ9InRydWUiJzoiIikrKEE/CicgdGl0bGU9IicrXy5VKEEpKyciJzoiIikrKGY/IiAiK18uSnUoZik6IiIpKyI+IisoYz9fLksoYyk6IiIpKyI8L2Rpdj4iKX07Xy56RD1mdW5jdGlvbihhKXt2YXIgYj1hLldzO2E9YS5EdTtiPSIiK3hEKG5ldyB0RCxiKSsoIiAvICIreEQobmV3IHRELGEpKTtyZXR1cm4gXy5MKCIiK2IpfTtlaGE9ZnVuY3Rpb24oYSl7YT1fLksoYS5YRSkrIiBjaGFyYWN0ZXJzIHJlbWFpbmluZyI7cmV0dXJuKDAsXy5IKSgiIithKX07ZmhhPWZ1bmN0aW9uKGEpe2E9Ik1heGltdW0gb2YgIisoXy5LKGEubWF4TGVuZ3RoKSsiIGNoYXJhY3RlcnMgZW50ZXJlZCIpO3JldHVybigwLF8uSCkoIiIrYSl9O2doYT1mdW5jdGlvbihhKXthPV8uSyhhLm1heExlbmd0aCkrIiBjaGFyYWN0ZXJzIG1heGltdW0iO3JldHVybigwLF8uSCkoIiIrYSl9OyBfLkFEPWZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS50ZXh0LGM9YS5kaXI7YT0iIjtpZihjKWErPSdkaXI9IicrXy5VKGMpKyciJztlbHNlIGlmKGIpc3dpdGNoKGM9Xy52dShiKSxiPW51bGwhPWM/YzpfLm9xKGIrIiIsXy51dShiLF8uaHQpKSxfLlBhKGIpP2IudG9TdHJpbmcoKTpiKXtjYXNlIDE6YSs9J2Rpcj0ibHRyIic7YnJlYWs7Y2FzZSAtMTphKz0nZGlyPSJydGwiJ31yZXR1cm4oMCxfLnl1KShhKX07Cl8uQkQ9ZnVuY3Rpb24oYSxiKXthPWF8fHt9O3ZhciBjPV8uSDthPWF8fHt9O3ZhciBkPWEuRGEsZT1hLmxhYmVsLGY9YS5UZixrPWEub3gsbj1hLm1heExlbmd0aCxwPWEuZ2MsQT1hLlp6LEQ9YS5McCxGPWEucWYsST1hLnR5cGUsSj1hLnBhdHRlcm4sTT1hLm5hbWUsUj1hLnZhbHVlLFM9YS5FaixqYT1hLmRpc2FibGVkLG1hPWEuZGlyLEthPWEuYXV0b2ZvY3VzLHdhPWEuYXV0b2NvbXBsZXRlLEhiPWEub28sQWM9YS5VRSx1ZD1hLnJnLFJiPWEuZXJyb3IsTWM9YS5oaW50LGpiPWEuUUksQmI9YS5yZXF1aXJlZCxTZD1hLiRuLEpmPWEuZW1iZWRzLHRmPWEubWluLGNmPWEubWF4LE9nPWEuc3RlcCxoaT1hLmF1dG9jYXBpdGFsaXplLFBnPWEuejAsSms9YS5zcGVsbGNoZWNrLFFnPSIiLGFkPSIiK18uQUQoe3RleHQ6UixkaXI6bWF9KTthZD0oMCxfLkR1KShhZCk7dmFyIE5jPSc8ZGl2IGNsYXNzPSInK18uVSgiYUNzSm9kIikrIiAiK18uVSgib0plV3VmIikrJyI+Jzt2YXIgQ2o9KDAsXy5EdSkoIiIrCihwJiZwIT1lPyIiOidhcmlhLWhpZGRlbj0idHJ1ZSInKSk7cD1BPycgYXJpYS1sYWJlbGxlZGJ5PSInK18uVShBKSsnIic6cHx8ZT8nIGFyaWEtbGFiZWw9IicrKHA/Xy5VKHApOmU/Xy5VKGUpOiIiKSsnIic6IiI7ZT1lJiYhZj8nPGRpdiBqc25hbWU9IicrXy5VKCJMd0g2bmQiKSsnIiBjbGFzcz0iJytfLlUoIm5kSmk1ZCIpKyIgIitfLlUoInNuQnlhYyIpKyciICcrXy5KdShDaikrIj4iK18uSyhlKSsiPC9kaXY+IjplJiZmPyc8ZGl2IGpzbmFtZT0iJytfLlUoIllSTW1sZSIpKyciIGNsYXNzPSInK18uVSgiQXhPeUZjIikrIiAiK18uVSgic25CeWFjIikrJyIgJytfLkp1KENqKSsiPiIrXy5LKGUpKyI8L2Rpdj4iOiIiO05jKz0nPGRpdiBjbGFzcz0iJytfLlUoImFYQnRJIikrKEpmfHxTZD8iICIrXy5VKCJJMFZKNGQiKToiIikrIiAiK18uVSgiV2ljMDNjIikrJyI+JysoU2Q/Jzxjb250ZW50IGNsYXNzPSInK18uVSgiQTM3VVplIikrIiAiK18uVSgicWdjQjNjIikrIiAiK18uVSgiaUhkNXliIikrCiciPicrXy5LKFNkKSsiPC9jb250ZW50PiI6IiIpKyc8ZGl2IGNsYXNzPSInK18uVSgiWGI5aFAiKSsnIj48aW5wdXQgdHlwZT0iJysoST9fLlUoSSk6InRleHQiKSsnIicrKEo/JyBwYXR0ZXJuPSInK18uVShKKSsnIic6IiIpKycgY2xhc3M9IicrXy5VKCJ3aHNPbmQiKSsiICIrXy5VKCJ6SFFrQmYiKSsnIiBqc25hbWU9IicrXy5VKCJZUHFqYmYiKSsnIiBhdXRvY29tcGxldGU9IicrXy5VKG51bGwhPXdhP3dhOiJvZmYiKSsnIicrKEprPycgc3BlbGxjaGVjaz0iJytfLlUoSmspKyciJzoiIikrJyB0YWJpbmRleD0iJysoRj9fLlUoRik6IjAiKSsnIicrcCsoRD8nIGFyaWEtZGVzY3JpYmVkYnk9IicrXy5VKEQpKyciJzoiIikrKG4/JyBtYXhsZW5ndGg9IicrXy5VKG4pKyciJzoiIikrKG51bGwhPU0/JyBuYW1lPSInK18uVShNKSsnIic6IiIpKyhudWxsIT1SPycgdmFsdWU9IicrXy5VKFIpKyciJzoiIikrKGphPyIgZGlzYWJsZWQiOiIiKSsoS2E/IiBhdXRvZm9jdXMiOiIiKSsoSGI/CiIgcmVhZG9ubHkiOiIiKSsobnVsbCE9dGY/JyBtaW49IicrXy5VKHRmKSsnIic6IiIpKyhudWxsIT1jZj8nIG1heD0iJytfLlUoY2YpKyciJzoiIikrKG51bGwhPU9nPycgc3RlcD0iJytfLlUoT2cpKyciJzoiIikrKGhpPycgYXV0b2NhcGl0YWxpemU9IicrXy5VKGhpKSsnIic6IiIpKyhCYj8iIHJlcXVpcmVkIjoiIikrKHVkJiZSYj8nIGFyaWEtaW52YWxpZD0idHJ1ZSInOiIiKSsoUGc/JyByb2xlPSJjb21ib2JveCInOiIiKSsoUz8iICIrXy5KdShTKToiIikrIiAiK18uSnUoYWQpKyhtYT8nIGRhdGEtaW5pdGlhbC1kaXI9IicrXy5VKG1hKSsnIic6IiIpKycgZGF0YS1pbml0aWFsLXZhbHVlPSInKyhSP18uVShSKToiIikrJyIvPicrZSsiPC9kaXY+IisoSmY/Jzxjb250ZW50IGNsYXNzPSInK18uVSgiQTM3VVplIikrIiAiK18uVSgic3h5WWpkIikrIiAiK18uVSgiTVFMM09iIikrJyI+JytfLksoSmYpKyI8L2NvbnRlbnQ+IjoiIikrJzxkaXYgY2xhc3M9IicrXy5VKCJpOWxycCIpKwoiICIrXy5VKCJtSVpoMWMiKSsnIj48L2Rpdj48ZGl2IGpzbmFtZT0iJytfLlUoIlhtbndBYyIpKyciIGNsYXNzPSInK18uVSgiT2FiRE1lIikrIiAiK18uVSgiY1hyZHFkIikrJyI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iJytfLlUoIkxYUlBoIikrJyI+PGRpdiBqc25hbWU9IicrXy5VKCJ0eTZ5Z2YiKSsnIiBjbGFzcz0iJytfLlUoIm92bmZ3ZSIpKyIgIitfLlUoIklzN0ZoYiIpKyciPicrXy5LKG51bGwhPU1jP01jOiIiKSsiPC9kaXY+IisodWQ/JzxkaXYganNuYW1lPSInK18uVSgiQjM0RUoiKSsnIiBjbGFzcz0iJytfLlUoImRFT09hYiIpKyIgIitfLlUoIlJ4c0dQZSIpKyciIGFyaWEtYXRvbWljPSJ0cnVlIiBhcmlhLWxpdmU9ImFzc2VydGl2ZSI+JytfLksobnVsbCE9UmI/UmI6IiIpKyI8L2Rpdj4iOiIiKSsoQWM/JzxkaXYgY2xhc3M9IicrXy5VKCJLMFk4U2UiKSsiICIrXy5VKCJJczdGaGIiKSsnIiBqc25hbWU9IicrXy5VKCJDR2ZOYmQiKSsnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JysKXy5LKF8uekQoe1dzOm51bGwhPWpiP2piOjAsRHU6bnVsbCE9bj9uOjB9LGIpKSsiPC9kaXY+IjoiIikrIjwvZGl2PiI7UWcrPV8ueUQoXy5OKHtEYTpfLlEoInJGck5NZSIrKGQ/IiAiK2Q6IiIpKyhmPyIgc2RKckpjIjoiIikrKGs/IiBkTGdqOGIiOiIiKSsoTWN8fHVkPyIgVHljOUoiOiIiKSsodWQmJlJiPyIgazB0V2ogSVlld3IiOiIiKSksY29udGVudDooMCxfLlQpKE5jKX0sYSkpO2I9KDAsXy5IKShRZysiIik7cmV0dXJuIGMoIiIrYisiIil9Owp2YXIgaGhhOwpfLkNEPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS4kbixkPWEudGEsZT1hLlhnLGY9YS50eCxrPWEudHlwZSxuPWEuYXV0b2NhcGl0YWxpemUscD1hLmF1dG9jb21wbGV0ZSxBPWEuYXV0b2NvcnJlY3QsRD1hLklwLEY9YS5pZCxJPWEuR2ksSj1hLmhpbnQsTT1hLm9vLFI9YS5UZjt2YXIgUz1uPyIiK246InBhc3N3b3JkIj09az8ib2ZmIjoiIjtuPV8uSDtkPSc8ZGl2IGpzY29udHJvbGxlcj0iJytfLlUoInpCNXciKSsnIiBqc2FjdGlvbj0ia2V5ZG93bjonK18uVSgiQzlCYVhlIikrIjsiK18uVSgiWXFPNU4iKSsiOiIrXy5VKCJkaTBmSiIpKyI7IitfLlUoIk8yMnAzZSIpKyI6IitfLlUoImZwZlRFZSIpKyI7IitfLlUoIkFIbXV3ZSIpKyI6IitfLlUoIkp0MUVYIikrIjsiK18uVSgicmN1UTZiIikrIjoiK18uVSgiV1lkIikrIjsiK18uVSgiRUpoM04iKSsiOiIrXy5VKCJXWWQiKSsnIiBqc25hbWU9IicrXy5VKGQpKyciJysoRD8nIGNsYXNzPSInK18uVShEKSsnIic6IiIpKyhJPycgZGF0YS1lbWJlZHM9IicrCl8uVShJKSsnIic6IiIpKycgcm9sZT0icHJlc2VudGF0aW9uIj4nO2s9Xy5RKCJ1SVpRTmMiKyhlfHwidGVsIj09az8iIG9nM29aYyI6IiIpKyhJPyIgS0tkbEJkIjoiIikpO0Q9Xy5RKCJWc2I1VWIiKTtTPV8uUSgiIitTKTt2YXIgamE9Xy5RKCJmYWxzZSIpO2lmKEkpe3ZhciBtYT1hfHx7fTtJPW1hLkdpO21hPW1hLnVaO0k9KDAsXy5IKSgnPHNwYW4gY2xhc3M9IicrXy5VKCJmUnBWRWYiKSsobWE/IiAiK18uVShtYSk6IiIpKyciIGpzbmFtZT0iJytfLlUoIkVzVFFxIikrJyIgaWQ9ImRvbWFpblN1ZmZpeCIgYXJpYS1oaWRkZW49InRydWUiPkAnK18uSyhJKSsiPC9zcGFuPiIpfWVsc2UgST0iIjtyZXR1cm4gbihkK18uQkQoXy5OKHtEYTprLHRhOkQsVGY6bnVsbCE9Uj9SOiEwLHJnOiEwLGF1dG9jYXBpdGFsaXplOlMsYXV0b2NvbXBsZXRlOnAsc3BlbGxjaGVjazpqYSwkbjpjLGVtYmVkczooMCxfLlQpKCIiK0kpLGlkOiIiLEVqOigwLF8uRHUpKCIiKyhGPydpZD0iJytfLlUoRikrICciJzoiIikrKEE/JyBhdXRvY29ycmVjdD0iJytfLlUoQSkrJyInOiIiKSksaGludDpKLGRpcjplPyJsdHIiOmY/ImF1dG8iOiIiLG9vOk19LGEpLGIpKyI8L2Rpdj4iKX07aGhhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuWnQsYz1hLiR0O3JldHVybigwLF8uSCkoIjxkaXY+IitfLksoYS5lcnJvcikrJzwvZGl2PjxhIGhyZWY9IicrXy5VKF8uUHUoYykpKyciPicrXy5LKGIpKyI8L2E+Iil9Owp2YXIgaWhhOwpfLkREPWZ1bmN0aW9uKGEsYil7YT1hfHx7fTt2YXIgYz1hLkhtLGQ9YS50YTtkPSc8ZGl2IGpzY29udHJvbGxlcj0iJytfLlUoIllXOURMIikrJyInKyhkPycganNuYW1lPSInK18uVShkKSsnIic6IiIpKycgY2xhc3M9IicrXy5VKCJQd3lodSIpKyhjPyIiOiIgIitfLlUoIllZMG5FZSIpKSsnIiBqc2FjdGlvbj0iY2xpY2s6JytfLlUoIklNZGc4ZCIpKyIoIitfLlUoIkExVTRTYiIpKyIpOyIrXy5VKCJyY3VRNmIiKSsiOiIrXy5VKCJqcUlWY2QiKSsnIj48aW1nIGpzbmFtZT0iJytfLlUoIk85TWlsYyIpKyciJysoYz8nIHNyYz0iL0NhcHRjaGE/dj0yJmN0b2tlbj0nK18uTHUoYykrJyInOiIiKSsnIGlkPSJjYXB0Y2hhaW1nIj4nO2E9YXx8e307YT1hLkhtO2E9IiIrKCc8aW1nIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDUUFBQUFrQ0FRQUFBQkxDVkFUQUFBQkswbEVRVlI0QWUyVkE0d2VjUkJIWDIzYmlzdWdqT3RHamMzYWJlelV0bzBZZFUvaE9UcmI2cG14UG1NeVp5N085NWEvL3lSdlBZdk5qRkhJZlRhQWRYejRjUE9OcFpqaVdxdElweWFPbXRINFVOakNSMXlpOG5MWnVFWkZ5aWJTOE1sMDJxakdSM3VtRVNLakx2WVkwL2pveUdTaVpEeWZLVVkwUGpxem1BYXBYREdpYVJYOVpoNG9wNlZTem9TK2ExcEZQdEtZQ2NJa3FxVzJudzc0ZXBnVTJYOFB5bVBKVDh5SzNLelFkRmh5dkZtUmoxT2FWa3FxTlM5NnBHbVNKT2NRRUoyMDU5S2NMTk4weE5yTmZnWEtVOG1QemIyUWlVd0hZVEsxVXR0bjVoUDV3V3hRemttbGpQSFdQdHFsTkVubG9yVTJNcFU0R2M5bHNwWEdOb01JZlg0N3JMVGFiV1NxL3JqNTVyK1ZyN2hGNHVHY0hiK2plbzVnQlczNUgxbU1SZks1elZyR01Ja2Y0Zll3M1FZZWg5NEFBQUFBU1VWT1JLNUNZSUk9IiBqc25hbWU9IicrXy5VKCJBMVU0U2IiKSsKJyIgaWQ9InBsYXlDYXB0Y2hhQnV0dG9uIiBjbGFzcz0iJytfLlUoIlhtcVh6ZCIpKyciIGFsdD0iJytfLkd1KCJMaXN0ZW4gYW5kIHR5cGUgdGhlIG51bWJlcnMgeW91IGhlYXIiKSsnIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj48YXVkaW8ganNuYW1lPSInK18uVSgiQ2FrR1giKSsnIicrKGE/JyBzcmM9Ii9DYXB0Y2hhP3Y9MiZjdG9rZW49JytfLkx1KGEpKycma2luZD1hdWRpbyInOiIiKSsnIHR5cGU9ImF1ZGlvL3dhdiIgaWQ9ImNhcHRjaGFBdWRpbyI+PC9hdWRpbz4nKTthPSgwLF8uSCkoYSk7Yj0iIisoZCthK18uQ0Qoe25hbWU6Xy5RKCJjYSIpLGlkOl8uUSgiY2EiKSxsYWJlbDpfLlEoIlR5cGUgdGhlIHRleHQgeW91IGhlYXIgb3Igc2VlIiksdGE6Xy5RKCJDUVJiTGQiKSx0eXBlOl8uUSgidGV4dCIpLFhnOiEwfSxiKSsnPGlucHV0IGpzbmFtZT0iJytfLlUoIlNCbFNvZCIpKyciIHR5cGU9ImhpZGRlbiIgbmFtZT0iY3QiJysoYz8nIHZhbHVlPSInK18uVShjKSsnIic6ICIiKSsnIGlkPSJjdCI+PC9kaXY+Jyk7cmV0dXJuKDAsXy5IKShiKX07aWhhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiUGxlYXNlIGVudGVyIHRoZSBjaGFyYWN0ZXJzIHlvdSBzZWUgaW4gdGhlIGltYWdlIGFib3ZlIil9OwpfLkVEPWZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgiTW9yZSBvcHRpb25zIil9O3ZhciBGRD1mdW5jdGlvbihhLGIpe2E9YXx8e307dmFyIGM9YS52YXJpYW50O2E9YS5MbTtiPSJzYWZhcml2YyI9PWE/Xy5QKCJpIiwiIiwhMSkobnVsbCxiKToiaW9zd2VidmlldyI9PWE/Xy5QKCJqIiwiIiwhMSkobnVsbCxiKTpfLlAoImsiLGMsITEpKG51bGwsYik7cmV0dXJuKDAsXy5IKSgiIitiKyIiKX0sR0Q9ZnVuY3Rpb24oYSxiKXthPWF8fHt9O3ZhciBjPWEudmFyaWFudDthPWEuTG07Yj0ic2FmYXJpdmMiPT1hP18uUCgibCIsIiIsITEpKG51bGwsYik6Imlvc3dlYnZpZXciPT1hP18uUCgibSIsIiIsITEpKG51bGwsYik6Xy5QKCJuIixjLCExKShudWxsLGIpO3JldHVybigwLF8uSCkoIiIrYisiIil9O18uTygiayIsIiIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPSIiO2Eud3V8fChiKz0iVXNlIHlvdXIgR29vZ2xlIEFjY291bnQiKTtyZXR1cm4oMCxfLkgpKGIpfSk7Xy5PKCJpIiwiIiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgiVXNlIHlvdXIgR29vZ2xlIEFjY291bnQuIFlvdVx1MjAxOWxsIGFsc28gc2lnbiBpbiB0byBHb29nbGUgc2VydmljZXMgaW4geW91ciBhcHBzICYgU2FmYXJpLiIpfSk7Cl8uTygiaiIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIlVzZSB5b3VyIEdvb2dsZSBBY2NvdW50LiBZb3UnbGwgYWxzbyBzaWduIGluIHRvIEdvb2dsZSBzZXJ2aWNlcyBpbiB5b3VyIGFwcHMuIil9KTtfLk8oIm4iLCIiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTtyZXR1cm4oMCxfLkgpKGEud3U/IiI6IndpdGggeW91ciBHb29nbGUgQWNjb3VudCIpfSk7Xy5PKCJsIiwiIiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgid2l0aCB5b3VyIEdvb2dsZSBBY2NvdW50LiBZb3VcdTIwMTlsbCBhbHNvIHNpZ24gaW4gdG8gR29vZ2xlIHNlcnZpY2VzIGluIHlvdXIgYXBwcyAmIFNhZmFyaS4iKX0pO18uTygibSIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIndpdGggeW91ciBHb29nbGUgQWNjb3VudC4gWW91J2xsIGFsc28gc2lnbiBpbiB0byBHb29nbGUgc2VydmljZXMgaW4geW91ciBhcHBzLiIpfSk7Xy5PKCJuIiwiZ29vZ2xlc3RvcmUiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJ0byBjb250aW51ZSB0byBHb29nbGUgU3RvcmUiKX0pOwpfLk8oImsiLCJnb29nbGVzdG9yZSIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIkNvbnRpbnVlIHRvIEdvb2dsZSBTdG9yZSIpfSk7Xy5PKCJuIiwia2F2IiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgndG8gdmVyaWZ5IHlvdXIgYWdlLiA8YSBocmVmPSJodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS93ZWJzZWFyY2gvYW5zd2VyLzQzNTg5NDk/aGw9a28mcmVmX3RvcGljPTMyODUwNzIiIHRhcmdldD0iX2JsYW5rIj5MZWFybiBtb3JlPC9hPicpfSk7Xy5PKCJrIiwia2F2IiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgnVmVyaWZ5IHlvdXIgYWdlLiA8YSBocmVmPSJodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS93ZWJzZWFyY2gvYW5zd2VyLzQzNTg5NDk/aGw9a28mcmVmX3RvcGljPTMyODUwNzIiIHRhcmdldD0iX2JsYW5rIj5MZWFybiBtb3JlPC9hPicpfSk7Xy5PKCJuIiwiYW5kcm9pZGJldGFwcm9ncmFtIiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgidG8gY29udGludWUgdG8gQW5kcm9pZCBCZXRhIFByb2dyYW0iKX0pOwpfLk8oImsiLCJhbmRyb2lkYmV0YXByb2dyYW0iLDAsZnVuY3Rpb24oKXt2YXIgYT0iQ29udGludWUgdG8gIisoXy5LKCJBbmRyb2lkIikrIiBCZXRhIFByb2dyYW0iKTtyZXR1cm4oMCxfLkgpKCIiK2EpfSk7Xy5PKCJuIiwicHVyY2hhc2Vzb25nb29nbGUiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJ0byBjb250aW51ZSB0byBjb21wbGV0ZSB5b3VyIHB1cmNoYXNlIil9KTtfLk8oImsiLCJwdXJjaGFzZXNvbmdvb2dsZSIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIkNvbXBsZXRlIHlvdXIgcHVyY2hhc2UiKX0pO18uTygibiIsInZlcmlmeWFsdGVybmF0ZSIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoInRvIHZlcmlmeSB5b3VyIGVtYWlsIGFkZHJlc3MiKX0pO18uTygiayIsInZlcmlmeWFsdGVybmF0ZSIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIlZlcmlmeSB5b3VyIGVtYWlsIGFkZHJlc3MiKX0pO18uTygibiIsImRhdGFzdHVkaW8iLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJ0byBjb250aW51ZSB0byBHb29nbGUgRGF0YSBTdHVkaW8iKX0pOyBfLk8oImsiLCJkYXRhc3R1ZGlvIiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgiQ29udGludWUgdG8gR29vZ2xlIERhdGEgU3R1ZGlvIil9KTsKdmFyIEhEPWZ1bmN0aW9uKGEpe3ZhciBiPWEua0E7YT1hLnRhO3JldHVybigwLF8uSCkoJzxkaXYgY2xhc3M9IicrXy5VKCJNeXZoSSIpKyIgIitfLlUoYikrJyInKyhhPycganNuYW1lPSInK18uVShhKSsnIic6IiIpKyc+PHNwYW4gY2xhc3M9IicrXy5VKCJsM3E1eGUiKSsiICIrXy5VKCJTUXh1OWMiKSsnIj48L3NwYW4+PC9kaXY+Jyl9O18uTygibyIsIiIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuRGE7YT1fLkg7Yj0nPGRpdiBjbGFzcz0iJytfLlUoIlJaQnVJYiIpKyhiPyIgIitfLlUoYik6IiIpKyciIGFyaWEtaGlkZGVuPSJ0cnVlIj4nO3ZhciBjPXt0YTpfLlEoIklnazZXIiksQm46ITAsdHU6ITB9O2M9Y3x8e307dmFyIGQ9Yy50YTt2YXIgZT1jLmdjLGY9Yy5UNCxrPWMuUVcsbj1jLkZpLHA9Yy5CbixBPWMuV3osRD1jLk96O2M9Yy50dTtkPSgwLF8uSCkoJzxkaXYganNjb250cm9sbGVyPSInK18uVSgibHRERndmIikrJyIganNhY3Rpb249InRyYW5zaXRpb25lbmQ6JytfLlUoIlpkeDNSZSIpKyciJysoZD8nIGpzbmFtZT0iJytfLlUoZCkrJyInOiIiKSsnIHJvbGU9InByb2dyZXNzYmFyIicrKGU/JyBhcmlhLWxhYmVsPSInK18uVShlKSsnIic6IiIpKyhwPyIiOicgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iMSIgYXJpYS12YWx1ZW5vdz0iJysoZj9fLlUoZik6IjAiKSsnIicpKycgY2xhc3M9IicrCl8uVSgic1p3ZDdjIikrKHA/IiAiK18uVSgiQjZWaHFlIik6IiIpKyhBPyIgIitfLlUoImp1aFZNIik6IiIpKyhEPyIgIitfLlUoIkQ2VFVpIik6IiIpKyhjPyIgIitfLlUoInFkdWxrZSIpKyIgIitfLlUoImpLN21vYyIpOiIiKSsobj8iICIrXy5VKG4pOiIiKSsnIicrKGY/JyBkYXRhLXByb2dyZXNzdmFsdWU9IicrXy5VKGYpKyciJzoiIikrKGs/JyBkYXRhLWJ1ZmZlcnZhbHVlPSInK18uVShrKSsnIic6IiIpKyc+PGRpdiBjbGFzcz0iJytfLlUoInhjTkJIYyIpKyIgIitfLlUoInVtM0ZMZSIpKyciPjwvZGl2PjxkaXYganNuYW1lPSInK18uVSgiY1F3RXVmIikrJyIgY2xhc3M9IicrXy5VKCJ3MnpjTGMiKSsiICIrXy5VKCJJcTVaTWMiKSsnIj48L2Rpdj4nK0hEKHtrQTpfLlEoIlRLVlJVYiIpLHRhOl8uUSgiUDFla1NlIil9KStIRCh7a0E6Xy5RKCJzVW9lbGQiKX0pKyI8L2Rpdj4iKTtyZXR1cm4gYShiK2QrIjwvZGl2PiIpfSk7IHZhciBJRD1mdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuRGE7YT1hLnRhO3JldHVybigwLF8uSCkoJzxkaXYgY2xhc3M9IicrXy5VKCJBTnVJYmIiKSsoYj8iICIrXy5VKGIpOiIiKSsnIicrKGE/JyBqc25hbWU9IicrXy5VKGEpKyciJzoiIikrJyB0YWJpbmRleD0iMCI+PC9kaXY+Jyl9OwpfLkpEPWZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIGFyaWEtaGlkZGVuPSJ0cnVlIiBmaWxsPSIjNDI4NUY0Ij48cGF0aCBkPSJNMCAwaDQ4djQ4SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTMyIDIyYzMuMzEgMCA1Ljk4LTIuNjkgNS45OC02cy0yLjY3LTYtNS45OC02Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2em0tMTYgMGMzLjMxIDAgNS45OC0yLjY5IDUuOTgtNnMtMi42Ny02LTUuOTgtNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNnptMCA0Yy00LjY3IDAtMTQgMi4zNC0xNCA3djVoMjh2LTVjMC00LjY2LTkuMzMtNy0xNC03em0xNiAwYy0uNTggMC0xLjIzLjA0LTEuOTMuMTFDMzIuMzkgMjcuNzggMzQgMzAuMDMgMzQgMzN2NWgxMnYtNWMwLTQuNjYtOS4zMy03LTE0LTd6Ii8+PC9zdmc+Jyl9OwpfLk8oInAiLCIiLDAsZnVuY3Rpb24oKXt2YXIgYT0iIisoJzxzdmcgdmlld0JveD0iJytfLlUoMCkrIiAwICIrXy5VKDc0KSsiICIrXy5VKDM3KSsnIiB3aWR0aD0iJytfLlUoMTk4KSsnIiBoZWlnaHQ9IicrXy5VKDM3KSsnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGcgaWQ9IicrXy5VKCJxYUVKZWMiKSsnIj48cGF0aCBmaWxsPSIjZWE0MzM1IiBkPSJNNjcuOTU0IDE2LjMwM2MtMS4zMyAwLTIuMjc4LS42MDgtMi44ODYtMS44MDRsNy45NjctMy4zLS4yNy0uNjhjLS40OTUtMS4zMy0yLjAwOC0zLjc5LTUuMTAyLTMuNzktMy4wNjggMC01LjYyMiAyLjQxLTUuNjIyIDUuOTYgMCAzLjM0IDIuNTMgNS45NiA1LjkyIDUuOTYgMi43MyAwIDQuMzEtMS42NyA0Ljk3LTIuNjRsLTIuMDMtMS4zNWMtLjY3My45OC0xLjYgMS42NC0yLjkzIDEuNjR6bS0uMjAzLTcuMjdjMS4wNCAwIDEuOTIuNTIgMi4yMSAxLjI2NGwtNS4zMiAyLjIxYy0uMDYtMi4zIDEuNzktMy40NzQgMy4xMi0zLjQ3NHoiLz48L2c+PGcgaWQ9IicrCl8uVSgiWUdsT3ZjIikrJyI+PHBhdGggZmlsbD0iIzM0YTg1MyIgZD0iTTU4LjE5My42N2gyLjU2NHYxNy40NGgtMi41NjR6Ii8+PC9nPjxnIGlkPSInK18uVSgiQldmSWsiKSsnIj48cGF0aCBmaWxsPSIjNDI4NWY0IiBkPSJNNTQuMTUyIDguMDY2aC0uMDg4Yy0uNTg4LS42OTctMS43MTYtMS4zMy0zLjEzNi0xLjMzLTIuOTggMC01LjcxIDIuNjE0LTUuNzEgNS45OCAwIDMuMzM4IDIuNzMgNS45MzMgNS43MSA1LjkzMyAxLjQyIDAgMi41NDgtLjY0IDMuMTM2LTEuMzZoLjA4OHYuODZjMCAyLjI4LTEuMjE3IDMuNS0zLjE4MyAzLjUtMS42MSAwLTIuNi0xLjE1LTMtMi4xMmwtMi4yOC45NGMuNjUgMS41OCAyLjM5IDMuNTIgNS4yOCAzLjUyIDMuMDYgMCA1LjY2LTEuODA3IDUuNjYtNi4yMDZWNy4yMWgtMi40OHYuODU4em0tMy4wMDYgOC4yMzdjLTEuODA0IDAtMy4zMTgtMS41MTMtMy4zMTgtMy41ODggMC0yLjEgMS41MTQtMy42MzUgMy4zMTgtMy42MzUgMS43ODQgMCAzLjE4MyAxLjUzNCAzLjE4MyAzLjYzNSAwIDIuMDc1LTEuNCAzLjU4OC0zLjE5IDMuNTg4eiIvPjwvZz48ZyBpZD0iJysKXy5VKCJlNm0zZmQiKSsnIj48cGF0aCBmaWxsPSIjZmJiYzA1IiBkPSJNMzguMTcgNi43MzVjLTMuMjggMC01Ljk1MyAyLjUwNi01Ljk1MyA1Ljk2IDAgMy40MzIgMi42NzMgNS45NiA1Ljk1NCA1Ljk2IDMuMjkgMCA1Ljk2LTIuNTI4IDUuOTYtNS45NiAwLTMuNDYtMi42Ny01Ljk2LTUuOTUtNS45NnptMCA5LjU2OGMtMS43OTggMC0zLjM0OC0xLjQ4Ny0zLjM0OC0zLjYxIDAtMi4xNCAxLjU1LTMuNjA4IDMuMzUtMy42MDhzMy4zNDggMS40NjcgMy4zNDggMy42MWMwIDIuMTE2LTEuNTUgMy42MDgtMy4zNSAzLjYwOHoiLz48L2c+PGcgaWQ9IicrXy5VKCJ2YmtEbWMiKSsnIj48cGF0aCBmaWxsPSIjZWE0MzM1IiBkPSJNMjUuMTcgNi43MWMtMy4yOCAwLTUuOTU0IDIuNTA1LTUuOTU0IDUuOTU4IDAgMy40MzMgMi42NzMgNS45NiA1Ljk1NCA1Ljk2IDMuMjgyIDAgNS45NTUtMi41MjcgNS45NTUtNS45NiAwLTMuNDUzLTIuNjczLTUuOTYtNS45NTUtNS45NnptMCA5LjU2N2MtMS44IDAtMy4zNS0xLjQ4Ny0zLjM1LTMuNjEgMC0yLjE0IDEuNTUtMy42MDggMy4zNS0zLjYwOHMzLjM1IDEuNDYgMy4zNSAzLjZjMCAyLjEyLTEuNTUgMy42MS0zLjM1IDMuNjF6Ii8+PC9nPjxnIGlkPSInKwpfLlUoImlkRUpkZSIpKyciPjxwYXRoIGZpbGw9IiM0Mjg1ZjQiIGQ9Ik0xNC4xMSAxNC4xODJjLjcyMi0uNzIzIDEuMjA1LTEuNzggMS4zODctMy4zMzRIOS40MjNWOC4zNzNoOC41MThjLjA5LjQ1Mi4xNiAxLjA3LjE2IDEuNjY0IDAgMS45MDMtLjUyIDQuMjYtMi4xOSA1LjkzNC0xLjYzIDEuNy0zLjcxIDIuNjEtNi40OCAyLjYxLTUuMTIgMC05LjQyLTQuMTctOS40Mi05LjI5QzAgNC4xNyA0LjMxIDAgOS40MyAwYzIuODMgMCA0Ljg0MyAxLjEwOCA2LjM2MiAyLjU2TDE0IDQuMzQ3Yy0xLjA4Ny0xLjAyLTIuNTYtMS44MS00LjU3Ny0xLjgxLTMuNzQgMC02LjY2MiAzLjAxLTYuNjYyIDYuNzVzMi45MyA2Ljc1IDYuNjcgNi43NWMyLjQzIDAgMy44MS0uOTcyIDQuNjktMS44NTZ6Ii8+PC9nPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYSl9KTsKXy5LRD1mdW5jdGlvbihhLGIsYyl7Yj1jfHxiO2E9YS5KcztjPV8uSDt2YXIgZD0iPGRpdiIrKGE/JyBjbGFzcz0iJytfLlUoIlB4cFBUZSIpKyciJzoiIikrJyBqc25hbWU9IicrXy5VKCJqamY3RmYiKSsnIiBqc2NvbnRyb2xsZXI9IicrXy5VKCJQOU05SCIpKyciIGpzYWN0aW9uPSInK18uVSgicmN1UTZiIikrIjoiK18uVSgibnBUMm1kIikrJyI+PGRpdiBpZD0ibG9nbyIgY2xhc3M9IicrXy5VKCJTU0JzdyIpKyciIHRpdGxlPSJHb29nbGUiPjxkaXYgY2xhc3M9IicrXy5VKCJxWnAzMWUiKSsoYT8iICIrXy5VKCJlTE5UMWQiKToiIikrJyIganNuYW1lPSInK18uVSgibDRlSFgiKSsnIj4nO2I9KDAsXy5IKSgiIitfLlAoInAiLCIiLCExKShudWxsLGIpKyIiKTtyZXR1cm4gYyhkK2IrIjwvZGl2PiIrKGE/JzxkaXYgY2xhc3M9IicrXy5VKCJCdDRCZWIiKSsnIj48c3BhbiBjbGFzcz0iJytfLlUoInVPR1MzIikrIiAiK18uVSgiTUtqdExjIikrJyI+PC9zcGFuPjxzcGFuIGNsYXNzPSInKyBfLlUoInVPR1MzIikrIiAiK18uVSgiWWhSSmxmIikrJyI+PC9zcGFuPjxzcGFuIGNsYXNzPSInK18uVSgidU9HUzMiKSsiICIrXy5VKCJ6VG5LUmIiKSsnIj48L3NwYW4+PHNwYW4gY2xhc3M9IicrXy5VKCJ1T0dTMyIpKyIgIitfLlUoIkc1Y1Q3YiIpKyciPjwvc3Bhbj48c3BhbiBjbGFzcz0iJytfLlUoInVPR1MzIikrIiAiK18uVSgiTEh2SloiKSsnIj48L3NwYW4+PC9kaXY+JzoiIikrIjwvZGl2PjwvZGl2PiIpfTsKXy5MRD1mdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuRGEsYz1hLll4LGQ9YS5BeixlPWEuWEEsZj1fLkgsaz1fLk4oe0RhOl8uUSgiamd2dUFiIisoZD8iIG1BVzJJYiI6IiIpKyhhLm5JfHxkPyIgZTVFbWpjIjoiIikrKGI/IiAiK2I6IiIpKSwkTDpfLlEoInJ5M2tYZCIrKGQ/IiBZdUh0amMiOiIiKSsoYS51Rz8iIFVsZ3U5IjoiIikpLFhBOl8uUSgibmNGSGVkIisoZT8iICIrZToiIikpLFl4Ol8uUSgiIisoYS5aeD8iQ2VFQnQgQ2UxWTFjIjoiZTJDdUZlIikrKGM/IiAiK2M6IiIpKX0sYSk7YT1rLkRhO2I9ay4kTDtjPWsuWEE7ZD1rLll4O2U9ay5aeDt2YXIgbj1rLmNBLHA9ay5vcHRpb25zLEE9ay5mLEQ9ay5hLEY9ay5iLEk9ay5nYyxKPWsudGl0bGUsTT1rLnRhLFI9ay5kaXNhYmxlZCxTPWsuaWQsamE9ay5hdHRyaWJ1dGVzLG1hPWsueG0sS2E9ay5HYSx3YT1rLlBhO2s9ay5BejthPSgwLF8uSCkoJzxkaXYgcm9sZT0ibGlzdGJveCIgYXJpYS1leHBhbmRlZD0iZmFsc2UiJysKKFM/JyBpZD0iJytfLlUoUykrJyInOiIiKSsnIGNsYXNzPSInK18uVShhKSsoUj8iICIrXy5VKCJSRFBaRSIpOiIiKSsnIiBqc2NvbnRyb2xsZXI9IicrKEthP18uVShLYSk6Xy5VKCJZd0hHVGQiKSkrJyIganNhY3Rpb249ImNsaWNrOicrXy5VKCJjT3VDZ2QiKSsiKCIrXy5VKCJMZ2JzU2UiKSsiKTsga2V5ZG93bjoiK18uVSgiSTQ4MWxlIikrIjsga2V5cHJlc3M6IitfLlUoIktyMnc0YiIpKyI7IG1vdXNlZG93bjoiK18uVSgiVVg3eVoiKSsiKCIrXy5VKCJMZ2JzU2UiKSsiKSwiK18uVSgibnBUMm1kIikrIihwcmV2ZW50RGVmYXVsdD10cnVlKTsgbW91c2V1cDoiK18uVSgibGJzRDdlIikrIigiK18uVSgiTGdic1NlIikrIik7IG1vdXNlbGVhdmU6IitfLlUoIkp5d0d1ZSIpKyI7IHRvdWNoc3RhcnQ6IitfLlUoInA2cDJIIikrIigiK18uVSgiTGdic1NlIikrIik7IHRvdWNobW92ZToiK18uVSgiRnd1Tm5mIikrIjsgdG91Y2hlbmQ6IitfLlUoInlmcUJ4YyIpKyIoIitfLlUoIkxnYnNTZSIpKwoifHByZXZlbnRNb3VzZUV2ZW50cz10cnVlfHByZXZlbnREZWZhdWx0PXRydWUpOyB0b3VjaGNhbmNlbDoiK18uVSgiSk10UmpkIikrIigiK18uVSgiTGdic1NlIikrIik7IGZvY3VzOiIrXy5VKCJBSG11d2UiKSsiOyBibHVyOiIrXy5VKCJPMjJwM2UiKSsiOyIrXy5VKCJiNVN2QWIiKSsiOiIrXy5VKCJUdkQ5UGMiKSsiOyIrKHdhP18uVSh3YSk6IiIpKyciIGpzc2hhZG93JysoTT8nIGpzbmFtZT0iJytfLlUoTSkrJyInOiIiKSsobj8nIGRhdGEtbWF4LXJvd3M9IicrXy5VKG4pKyciJzoiIikrKChudWxsIT1JP0k6Sik/JyBhcmlhLWxhYmVsPSInK18uVShudWxsIT1JP0k6SikrJyInOiIiKSsoUj8nIGFyaWEtZGlzYWJsZWQ9InRydWUiJzoiIikrKEo/JyBkYXRhLXRvb2x0aXA9IicrXy5VKEopKyciJzoiIikrKEQ/JyBkYXRhLWFsaWduYm90dG9tPSJ0cnVlIic6IiIpKyhGPycgZGF0YS1hbGlnbnRvcD0idHJ1ZSInOiIiKSsoamE/IiAiK18uSnUoamEpOiIiKSsobWE/JyBqc2xvZz0iJysKXy5VKG1hKSsiOyB0cmFjazoiK18uVSgiSklidVFjIikrJyInOiIiKSsoaz8nIGRhdGEtaWNvbnMtb25seT0idHJ1ZSInOiIiKSsnPjxkaXYganNuYW1lPSInK18uVSgiTGdic1NlIikrJyIgcm9sZT0icHJlc2VudGF0aW9uIj48ZGl2IGNsYXNzPSInK18uVShiKSsnIiBqc25hbWU9IicrXy5VKCJkOUJINGMiKSsnIiByb2xlPSJwcmVzZW50YXRpb24iPicrKHA/Xy5LKHApOiIiKSsnPC9kaXY+PGRpdiBjbGFzcz0iJytfLlUoZCkrIiAiK18uVSgiZVU4MDlkIikrJyIgcm9sZT0icHJlc2VudGF0aW9uIj4nKyhlP18uSyhlKToiIikrJzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IicrXy5VKCJPQTBxTmIiKSsiICIrXy5VKGMpKyciIGpzYWN0aW9uPSJjbGljazonK18uVSgiZFBUSzZjIikrIigiK18uVSgid1FObXZiIikrIik7IG1vdXNlZG93bjoiK18uVSgidVlVOGpiIikrIigiK18uVSgid1FObXZiIikrIik7IG1vdXNldXA6IitfLlUoIkxWRWRYZCIpKyIoIitfLlUoIndRTm12YiIpKyIpOyBtb3VzZW92ZXI6IisKXy5VKCJuZlh6MWUiKSsiKCIrXy5VKCJ3UU5tdmIiKSsiKTsgdG91Y2hzdGFydDoiK18uVSgiUmgyZnJlIikrIigiK18uVSgid1FObXZiIikrIik7IHRvdWNobW92ZToiK18uVSgiaHZGV3RmIikrIigiK18uVSgid1FObXZiIikrIik7IHRvdWNoZW5kOiIrXy5VKCJNa0Y5ciIpKyIoIitfLlUoIndRTm12YiIpKyd8cHJldmVudE1vdXNlRXZlbnRzPXRydWUpIiByb2xlPSJwcmVzZW50YXRpb24iIGpzbmFtZT0iJytfLlUoIlY2OGJkZSIpKyciIHN0eWxlPSJkaXNwbGF5Om5vbmU7JysoQT8icG9zaXRpb246IGFic29sdXRlOyI6IiIpKyciPjwvZGl2PjwvZGl2PicpO3JldHVybiBmKCIiK2ErIiIpfTsKXy5NRD1mdW5jdGlvbihhKXt2YXIgYj1hLmxhYmVsLGM9YS5EYSxkPWEuaWNvbixlPWEuZ2MsZj1fLkg7YT1fLk4oe2NvbnRlbnQ6KDAsXy5UKSgnPGRpdiBjbGFzcz0iJytfLlUoImtSb3l0IikrIiAiK18uVSgiTWJoVXpkIikrJyIganNuYW1lPSInK18uVSgia3NLc1pkIikrJyI+PC9kaXY+JysoZD8nPGRpdiBjbGFzcz0iJytfLlUoIk1XUUZMZSIpKyIgIitfLlUoInVMWDJwIikrJyIgYXJpYS1oaWRkZW49InRydWUiPicrXy5LKGQpKyI8L2Rpdj4iOiIiKSsnPGNvbnRlbnQgY2xhc3M9IicrXy5VKCJ2Uk1Hd2YiKSsiICIrXy5VKCJvSmVXdWYiKSsnIj4nK18uSyhiKSsiPC9jb250ZW50PiIpLERhOl8uUSgiTW9jRzhjIisoYz8iICIrYzoiIikpLGdjOmV9LGEpO2I9YS5jb250ZW50O2M9YS52YWx1ZTtkPWEuc2VsZWN0ZWQ7ZT1hLmRpc2FibGVkO3ZhciBrPWEuYSxuPWEucGxhY2Vob2xkZXIscD1hLmdjLEE9YS5pZCxEPWEuYXR0cmlidXRlcyxGPWEueG07YT0oMCxfLkgpKCc8ZGl2IGNsYXNzPSInKwpfLlUoYS5EYSkrIiAiK18uVSgiTE1ndlJiIikrKGQ/IiAiK18uVSgiS0tqdlhiIik6IiIpKyhlPyIgIitfLlUoIlJEUFpFIik6IiIpKyhuPyIgIitfLlUoIkRFaDFSIik6IiIpKyciIGpzbmFtZT0iJytfLlUoIndRTm12YiIpKyciIGpzYWN0aW9uPSInKyhGP18uVSgiYUxuN1diIikrIjoiK18uVSgibnBUMm1kIikrIjsiOiIiKSsnIiBkYXRhLXZhbHVlPSInK18uVShjKSsnIicrKEE/JyBpZD0iJytfLlUoQSkrJyInOiIiKSsnIGFyaWEtc2VsZWN0ZWQ9IicrKGQ/InRydWUiOiJmYWxzZSIpKyciJysoZT8nIGFyaWEtZGlzYWJsZWQ9InRydWUiJzoiIikrKHA/JyBhcmlhLWxhYmVsPSInK18uVShwKSsnIic6IiIpKycgcm9sZT0ib3B0aW9uIiB0YWJpbmRleD0iJysoZCYmIWs/IjAiOiItMSIpKyciJysoRD8iICIrXy5KdShEKToiIikrKEY/JyBqc2xvZz0iJytfLlUoRikrIjsgdHJhY2s6IitfLlUoImFMbjdXYiIpKyciJzoiIikrIj4iK18uSyhiKSsiPC9kaXY+Iik7cmV0dXJuIGYoIiIrIGErIiIpfTsKdmFyIE5EPWZ1bmN0aW9uKGEpe18udSh0aGlzLGEsMCwtMSxqaGEsbnVsbCl9O18ubShORCxfLnEpO3ZhciBqaGE9WzYsN107Xy5PaFsxMDY1NDY4OTddPW5ldyBfLmJkKDEwNjU0Njg5Nyx7T1g6MH0sTkQsZnVuY3Rpb24oYSxiKXt2YXIgYz17Rlc6Xy5yKGIsMSksZGlzcGxheU5hbWU6Xy5yKGIsMiksQmw6Xy5yKGIsMyksTDY6Xy5yKGIsNCksTl86Xy5yKGIsNSksTzY6Xy5oZChiLDYpLE00Ol8uaGQoYiw3KSxoWjpfLnIoYiw4KX07YSYmKGMuaj1iKTtyZXR1cm4gY30pO05ELnByb3RvdHlwZS5KYz1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywyKX07Cl8uTygiciIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoJzxkaXYgY2xhc3M9IicrXy5VKCJWWU1hcGUiKSsnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JytfLk9EKHtDbzoiI2ZiZmJmYyIsRG86IiNmN2Y3ZjciLEVvOiIjZjZmNmY2IixGbzoiI2VmZWZlZSIsR286IiNlYmViZWMiLEhvOiIjZTdlN2U3IixJbzoiI2UxZTFlMSJ9KSsiPC9kaXY+Iil9KTsKXy5PRD1mdW5jdGlvbihhKXt2YXIgYj1hLkRzLGM9YS5pdyxkPWEuQ28sZT1hLkRvLGY9YS5FbyxrPWEuRm8sbj1hLkdvLHA9YS5IbzthPWEuSW87dmFyIEE9IiI7Yz0iIisoYz8nb3BhY2l0eT0iJytfLlUoYykrJyInOiIiKTtjPSgwLF8uRHUpKGMpO0ErPSc8c3ZnIGpzbmFtZT0iJytfLlUoIkJVZnpEZCIpKyciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE0NDAgODEwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBzbGljZSIgYXJpYS1oaWRkZW49InRydWUiPicrKGI/JzxwYXRoIGZpbGw9IicrXy5VKGIpKyciIGQ9Ik0wIDBoMTQ0MHY4MTBIMHoiLz4nOiIiKSsnPHBhdGggZmlsbD0iJytfLlUoaykrJyIgZD0iTTU5Mi42NiAwYy0xNSA2NC4wOTItMzAuNyAxMjUuMjg1LTQ2LjU5OCAxODMuNzc3QzYzNC4wNTYgMzI1LjU2IDc0OC4zNDggNTUwLjkzMiA4MTkuNjQyIDgwOS41aDQxOS42NzJDMTE4NC41MTggNTkzLjcyNyAxMDgzLjEyNCAyOTAuMDY0IDkwMi42MzcgMEg1OTIuNjZ6IiAnKwpfLkp1KGMpKycvPjxwYXRoIGZpbGw9IicrXy5VKGYpKyciIGQ9Ik01NDUuOTYyIDE4My43NzdjLTUzLjc5NiAxOTYuNTc2LTExMS41OTIgMzYxLjE1Ni0xNjMuNDkgNDkwLjc0IDExLjcgNDQuNDk0IDIyLjggODkuNDkgMzMuMSAxMzQuODgzaDQwNC4wN2MtNzEuMjk0LTI1OC40NjgtMTg1LjU4Ni00ODMuODQtMjczLjY4LTYyNS42MjN6IiAnK18uSnUoYykrJy8+PHBhdGggZmlsbD0iJytfLlUoZSkrJyIgZD0iTTE1My44OSAwYzc0LjA5NCAxODAuNjc4IDE2MS4wODggNDE3LjQ0OCAyMjguNDgzIDY3NC41MTdDNDQ5LjY3IDUwNi4zMzcgNTI3LjA2MyAyNzkuNDY1IDU5Mi41NiAwSDE1My44OXoiICcrXy5KdShjKSsnLz48cGF0aCBmaWxsPSInK18uVShkKSsnIiBkPSJNMTUzLjg5IDBIMHY4MDkuNWg0MTUuNTdDMzQ1LjQ3NyA1MDAuOTM4IDI0MC44ODQgMjExLjg3NCAxNTMuODkgMHoiICcrXy5KdShjKSsnLz48cGF0aCBmaWxsPSInK18uVShuKSsnIiBkPSJNMTE0NC4yMiA1MDEuNTM4YzUyLjU5Ni0xMzQuNTgzIDEwMS40OTItMjkwLjk2NCAxMzQuMDktNDYzLjM0MyAxLjItNi4xIDIuMy0xMi4yOTggMy40LTE4LjQ5NyAwLS4yLjEtLjQuMS0uNiAxLjEtNi4zIDIuMy0xMi43IDMuNC0xOS4wOThIOTAyLjUzNmMxMDUuMjkzIDE2OS4yOCAxODMuNjg4IDM0My4xNTggMjQxLjY4NCA1MDEuNjM4di0uMXoiICcrCl8uSnUoYykrJy8+PHBhdGggZmlsbD0iJytfLlUoYSkrJyIgZD0iTTEyODUuMzEgMGMtMi4yIDEyLjc5OC00LjUgMjUuNTk3LTYuOSAzOC4xOTVDMTMyMS41MDcgODYuMzkgMTM3OS42MDMgMTU4Ljk4IDE0NDAgMjU3LjE2OFYwaC0xNTQuNjl6IiAnK18uSnUoYykrJy8+PHBhdGggZmlsbD0iJytfLlUocCkrJyIgZD0iTTEyNzguMzEsMzguMTk2QzEyNDUuODEsMjA5Ljg3NCAxMTk3LjIyLDM2NS41NTYgMTE0NC44Miw0OTkuODM4TDExNDQuODIsNTAzLjYzOEMxMTg1LjgyLDYxNS45MjQgMTIxNi40MSw3MjAuMjExIDEyMzkuMTEsODA5LjZMMTQzOS43LDgxMEwxNDM5LjcsMjU2Ljc2OEMxMzc5LjQsMTU4Ljc4IDEzMjEuNDEsODYuMjg4IDEyNzguMzEsMzguMTk1TDEyNzguMzEsMzguMTk2eiIgJytfLkp1KGMpKyIvPjwvc3ZnPiI7cmV0dXJuKDAsXy5IKShBKX07Cl8uUEQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS50YTthPWEuY29udGVudDtyZXR1cm4oMCxfLkgpKCc8ZGl2IGNsYXNzPSInK18uVSgiUkN1bTBjIikrJyInKyhiPycganNuYW1lPSInK18uVShiKSsnIic6IiIpKyI+IitfLksoYSkrIjwvZGl2PiIpfTtfLlFEPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGluayxjPWEueWc7YT1hLkRhO3JldHVybigwLF8uSCkoJzxkaXYgY2xhc3M9IicrXy5VKCJwb0YwYiIpKyIgIitfLlUoImJ4UEFZZCIpKyIgIitfLlUoIms2Wmo4ZCIpKyhjPyIgIitfLlUoIkJiVFRwZCIpOiIiKSsnIj48ZGl2IGNsYXNzPSInK18uVSgiRnBoVDhlIikrJyI+PC9kaXY+PGltZyBzcmM9IicrXy5VKF8uUXUoYikpKyciIGNsYXNzPSInK18uVSgiY2V2ZHhjIikrKGE/IiAiK18uVShhKToiIikrJyIgYXJpYS1oaWRkZW49InRydWUiIGFsdD0iIj48L2Rpdj4nKX07Cl8uUkQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5jb250ZW50LGM9YS5XYSxkPWEuR2EsZT1hLlBhLGY9YS5EYSxrPWEuYXR0cmlidXRlcyxuPWEuYWN0aW9uLHA9YS5tZXRob2QsQT1hLkhsLEQ9YS5GaixGPWEuYko7YT1hLkZzO3ZhciBJPSIiO3N3aXRjaChfLlBhKGEpP2EudG9TdHJpbmcoKTphKXtjYXNlICJjb25zdGVsbGF0aW9uIjpJKz0iSjJvM3BkIjticmVhaztkZWZhdWx0OkkrPSJqY0p6eWUifUk9Xy5RKEkpO2I9IiIrKCc8Zm9ybSBjbGFzcz0iJytfLlUoIlJGanVTYiIpKyIgIitfLlUoImJ4UEFZZCIpKyIgIitfLlUoIms2Wmo4ZCIpKyhEPyIgIitfLlUoIlVNeGQzYyIpOiIiKSsoRj8iICIrXy5VKCJaVmJ5SWYiKToiIikrJyIganNuYW1lPSInK18uVSgiblVwZnRjIikrJyIganNjb250cm9sbGVyPSInK18uVShkKSsnIicrKGU/JyBqc2FjdGlvbj0iJytfLlUoZSkrJyInOiIiKSsoaz8iICIrXy5KdShrKToiIikrKG4/JyBhY3Rpb249IicrXy5VKF8uUHUobikpKyciJzoiIikrKHA/CicgbWV0aG9kPSInK18uVShwKSsnIic6IiIpKyhBPyIgZGF0YS1pcy1yZWZyZXNoYWJsZSI6IiIpKycgZGF0YS1icmFuZGluZz0iJytfLlUoSSkrJyIgcm9sZT0icHJlc2VudGF0aW9uIiBub3ZhbGlkYXRlPicrKGM/JzxkaXYganNuYW1lPSInK18uVSgicGFGY3JlIikrJyI+JytfLksoYykrIjwvZGl2PiI6IiIpKyc8ZGl2IGpzbmFtZT0iJytfLlUoInV5YmRWZSIpKyciIGNsYXNzPSInK18uVSgibWJla2JlIikrIiAiK18uVSgiYnhQQVlkIikrJyIgcm9sZT0icHJlc2VudGF0aW9uIj48ZGl2IGpzbmFtZT0iJytfLlUoIlVTQlFxZSIpKyciIGNsYXNzPSInK18uVSgiaVVlNlBkIikrIiAiK18uVSgiVXM3ZldlIikrIiAiK18uVSgiSmhVRDhkIikrKGY/IiAiK18uVShmKToiIikrJyIgcm9sZT0icHJlc2VudGF0aW9uIj4nK18uSyhiKSsiPC9kaXY+PC9kaXY+PC9mb3JtPiIpO3JldHVybigwLF8uSCkoYil9Owp2YXIgU0Q7Xy5URD1mdW5jdGlvbihhKXthPWF8fHt9O3JldHVybigwLF8uSCkoIiIrU0QoXy5OKHtjb2xvcjoiIzQyODVmNCJ9LGEpKSsiIil9OwpTRD1mdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuY29sb3IsYz1hLndpZHRoOzI0Pj0obnVsbCE9Yz9jOjI0KT9hPV8uVUQoXy5OKHtjb2xvcjpudWxsIT1iP2I6IiMwMDAifSxhKSk6KGM9Xy5OKHtjb2xvcjpudWxsIT1iP2I6IiMwMDAifSxhKSxhPWMuY29sb3IsYj1jLkRhLGM9Yy53aWR0aCxhPSgwLF8uSCkoIjxzdmciKyhiPycgY2xhc3M9IicrXy5VKGIpKyciJzoiIikrJyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSInK18uVShudWxsIT1jP2M6NDgpKydweCIgaGVpZ2h0PSInK18uVShudWxsIT1jP2M6NDgpKydweCIgdmlld0JveD0iMCAwIDQ4IDQ4IiBmaWxsPSInK18uVShhKSsnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTI0LDBDMTAuNzQsMCAwLDEwLjc0IDAsMjRDMCwzNy4yNiAxMC43NCw0OCAyNCw0OEMzNy4yNiw0OCA0OCwzNy4yNiA0OCwyNEM0OCwxMC43NCAzNy4yNiwwIDI0LDBaTTI0LDQxLjI4QzE3Ljk4OCw0MS4yOCAxMi43MDgsMzguMjA4IDkuNiwzMy41NTJDOS42NiwyOC43ODggMTkuMjEyLDI2LjE2IDI0LDI2LjE2QzI4Ljc4OCwyNi4xNiAzOC4zMjgsMjguNzg4IDM4LjQsMzMuNTUyQzM1LjI5MiwzOC4yMDggMzAuMDEyLDQxLjI4IDI0LDQxLjI4Wk0yNCw3LjJDMjcuOTcyLDcuMiAzMS4yLDEwLjQyOCAzMS4yLDE0LjRDMzEuMiwxOC4zODQgMjcuOTcyLDIxLjYgMjQsMjEuNkMyMC4wMjgsMjEuNiAxNi44LDE4LjM4NCAxNi44LDE0LjRDMTYuOCwxMC40MjggMjAuMDI4LDcuMiAyNCw3LjJaIi8+PHBhdGggZD0iTTAgMGg0OHY0OEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPicpKTtyZXR1cm4oMCxfLkgpKCIiKwooYSsiIikpfTtfLlVEPWZ1bmN0aW9uKGEpe3ZhciBiPWEuY29sb3IsYz1hLkRhO2E9YS53aWR0aDtyZXR1cm4oMCxfLkgpKCI8c3ZnIisoYz8nIGNsYXNzPSInK18uVShjKSsnIic6IiIpKycgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iJytfLlUobnVsbCE9YT9hOjI0KSsncHgiIGhlaWdodD0iJytfLlUobnVsbCE9YT9hOjI0KSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0xMiwwQzUuMzc2LDAgMCw1LjM3NiAwLDEyQzAsMTguNjI0IDUuMzc2LDI0IDEyLDI0QzE4LjYyNCwyNCAyNCwxOC42MjQgMjQsMTJDMjQsNS4zNzYgMTguNjI0LDAgMTIsMFpNMTIsMjAuNjRDOSwyMC42NCA2LjM0OCwxOS4xMDQgNC44LDE2Ljc3NkM0LjgzNiwxNC4zODggOS42LDEzLjA4IDEyLDEzLjA4QzE0LjM4OCwxMy4wOCAxOS4xNjQsMTQuMzg4IDE5LjIsMTYuNzc2QzE3LjY1MiwxOS4xMDQgMTUsMjAuNjQgMTIsMjAuNjRaTTEyLDMuNkMxMy45OTIsMy42IDE1LjYsNS4yMDggMTUuNiw3LjJDMTUuNiw5LjE5MiAxMy45OTIsMTAuOCAxMiwxMC44QzEwLjAwOCwxMC44IDguNCw5LjE5MiA4LjQsNy4yQzguNCw1LjIwOCAxMC4wMDgsMy42IDEyLDMuNloiLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+Jyl9OwpfLlZEPWZ1bmN0aW9uKGEpe2E9YXx8e307YT1hLmZpbGw7cmV0dXJuKDAsXy5IKSgnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKG51bGwhPWE/YToiIzAwMDAwMCIpKyciPjxwYXRoIGQ9Ik03LjQxIDcuODRMMTIgMTIuNDJsNC41OS00LjU4TDE4IDkuMjVsLTYgNi02LTZ6Ii8+PHBhdGggZD0iTTAtLjc1aDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+Jyl9O18uV0Q9ZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iIzYxNjE2MSI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bS02IDljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0zLjEtOUg4LjlWNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYyeiIvPjwvc3ZnPicpfTsKXy5YRD1mdW5jdGlvbihhKXthPWF8fHt9O2E9YS5maWxsO3JldHVybigwLF8uSCkoJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShudWxsIT1hP2E6IiM2MTYxNjEiKSsnIj48cGF0aCBkPSJNMTIgMkM4LjEzIDIgNSA1LjEzIDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ny0zLjEzLTctNy03em0wIDkuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6Ii8+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPicpfTsKXy5ZRD1mdW5jdGlvbigpe3JldHVybiBfLkwoIkxlYXJuIG1vcmUiKX07Xy5aRD1mdW5jdGlvbigpe3JldHVybigwLF8uSCkoIkFjY291bnQgaGVscCIpfTtfLk8oInQiLCIiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJTaWduIGluIC0gR29vZ2xlIEFjY291bnRzIil9KTtfLk8oInQiLCJrYXYiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJBZ2UgVmVyaWZpY2F0aW9uIil9KTtfLk8oInQiLCJjYXN0ZGV2Y29uc29sZSIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIkdvb2dsZSBDYXN0IFNESyBEZXZlbG9wZXIgQ29uc29sZSIpfSk7Xy4kRD1mdW5jdGlvbihhKXt2YXIgYj1hLmljb24sYz1hLkRhLGQ9YS5hO2Q9ZD9kLzI6MTI7YT0iIisoeUMoXy5OKHtEYTpfLlEoIm1VYkNjZSAiKyhhLlB4PyJwOU53dGUiOiJmS3o3T2QiKSsoYS55cD8iIFlZQnhwZiI6IiIpKyhjPyIgIitjOiIiKSksY29udGVudDooMCxfLlQpKCc8ZGl2IGNsYXNzPSInK18uVSgiVlRCYTdiIikrIiAiK18uVSgiTWJoVXpkIikrJyIganNuYW1lPSInK18uVSgia3NLc1pkIikrJyI+PC9kaXY+PGNvbnRlbnQgY2xhc3M9IicrXy5VKCJ4aktpTGIiKSsnIj48c3BhbiBzdHlsZT0idG9wOiAtJytfLlUoXy5SdShkKSkrJ3B4Ij4nK18uSyhiKSsiPC9zcGFuPjwvY29udGVudD4iKX0sYSkpKyIiKTtyZXR1cm4oMCxfLkgpKGEpfTtfLmFFPWZ1bmN0aW9uKGEpe2E9YXx8e307cmV0dXJuKDAsXy5IKSgiIitfLiREKF8uTih7UHg6ITF9LGEpKSsiIil9Owp2YXIgZUU7Xy5kRT1mdW5jdGlvbihhLGIpe3ZhciBjPWEucy5qfHxhLnMsZD1hLnRpdGxlLGU9IiIsZj1jLk9hKCk7IlVTRVJOQU1FX1JFQ09WRVJZIiE9KG51bGw9PWY/bnVsbDpmLmdldENvbnRleHQoKSkmJl8uWmgoYyk/ZSs9Xy5iRShhLGIpOihiPSIiKygwLF8uSCkoIkZpbmQgeW91ciBlbWFpbCIpLGI9Xy5RKGIpLGUrPV8uY0UoXy5OKHt0aXRsZTpudWxsIT1kP2Q6Yn0sYSkpKTtyZXR1cm4oMCxfLkgpKGUrIiIpfTsKXy5jRT1mdW5jdGlvbihhKXt2YXIgYj1hLnRpdGxlLGM9YS5ZYixkPSIiLGU9Yj8iQyI9PSgiIitiKS5zdWJzdHJpbmcoMCwxKTohMTtiPSIiKygnPGgxIGNsYXNzPSInK18uVSgic2ZZVW1iIikrKGU/IiAiK18uVSgicGJxb00iKToiIikrJyIgZGF0YS1hMTF5LXRpdGxlLXBpZWNlIGlkPSJoZWFkaW5nVGV4dCIganNuYW1lPSInK18uVSgiejZzTDJiIikrJyI+JytfLksoYikrIjwvaDE+IisoYz8nPHAgY2xhc3M9IicrXy5VKCJGZ2JaTGQiKSsnIiBkYXRhLWExMXktdGl0bGUtcGllY2UgaWQ9ImhlYWRpbmdTdWJ0ZXh0Ij4nK18uSyhjKSsiPC9wPiI6IiIpKTtkKz1lRShfLk4oe2NvbnRlbnQ6KDAsXy5UKShiKX0sYSkpO3JldHVybigwLF8uSCkoZCsiIil9OwpfLmJFPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zLmp8fGEucyxkPWEuanQsZT1hLkpfLGY9YS5uaixrPWEudGl0bGUsbj1hLkpwLHA9IiIsQT0tMSE9ImVuLGVuLVVTLCIuaW5kZXhPZigiIisoYi5sb2NhbGUrIiwiKSksRD0hZCYmKEEmJl8uWmgoYykuZ2V0R2l2ZW5OYW1lKCl8fCFBJiZfLlpoKGMpLkpjKCkpO2I9JzxoMSBjbGFzcz0iJytfLlUoInNmWVVtYiIpKyciIGRhdGEtYTExeS10aXRsZS1waWVjZSBpZD0iaGVhZGluZ1RleHQiIGpzbmFtZT0iJytfLlUoIno2c0wyYiIpKyciPic7az9iKz1fLksoayk6RD9BPyhrPWs9e1p5Ol8uUSgiIitfLlpoKGMpLmdldEdpdmVuTmFtZSgpKX0saz0iIisoMCxfLkgpKF8uSyhrLlp5KSksaz0oMCxfLlQpKGspLGIrPSJIaSAiK18uSyhrKSk6Yis9Xy5LKF8uWmgoYykuSmMoKSk6Yis9IldlbGNvbWUiO3ZhciBGO2Q/Rj1fLksoZCk6Xy5zZShfLlpoKGMpKT9GPV8uSyhfLnNlKF8uWmgoYykpKTpGPSIiO2M9IjwvaDE+Iisobj8nPHAgY2xhc3M9IicrCl8uVSgiRmdiWkxkIikrJyI+JytfLksobikrIjwvcD4iOiIiKSsnPGRpdiBjbGFzcz0iJytfLlUoIkZnYlpMZCIpKyhmPyIgIitfLlUoInI1aTNvZCIpOiIiKSsnIj4nKyhkfHxlfHwhXy5aaChjKS5FZSgpPygwLF8uSCkoIiIrXy5URCh7RGE6Xy5RKCJpYXJtZmMiKX0pKyIiKTonPGltZyBqc25hbWU9IicrXy5VKCJYcGlsSGIiKSsnIiBhbHQ9IiIgc3JjPSInK18uVShfLlF1KF8uWmgoYykuRWUoKSkpKyc/c3o9NjQiIGNsYXNzPSInK18uVSgiaWFybWZjIikrJyIgYXJpYS1oaWRkZW49InRydWUiPicpKyc8ZGl2IGlkPSJwcm9maWxlSWRlbnRpZmllciIgY2xhc3M9IicrXy5VKCJSUlAwb2MiKSsiICIrXy5VKCJpbEVoZCIpKyciIGRhdGEtYTExeS10aXRsZS1waWVjZT4nK0YrIjwvZGl2PiI7Zj8oZj0iIisoJzxkaXYganNjb250cm9sbGVyPSInK18uVSgiaGdVbVRjIikrJyIganNhY3Rpb249IicrXy5VKCJKSWJ1UWMiKSsiOiIrXy5VKCJCVjlUVGMiKSsiKCIrXy5VKCJhZjhpamQiKSsKJykiPicrXy5hRSh7dGE6Xy5RKCJhZjhpamQiKSxEYTpfLlEoIktFYXZzYiIpLGljb246KDAsXy5UKSgiPHNwYW4+IitfLlZEKG51bGwpKyI8L3NwYW4+IikseXA6ITAsZ2M6Xy5RKCJTd2l0Y2ggYWNjb3VudCIpfSkrIjwvZGl2PiIpLGY9KDAsXy5IKShmKSk6Zj0iIjtwKz1lRShfLk4oe2NvbnRlbnQ6KDAsXy5UKShiKyhjK2YrIjwvZGl2PiIpKX0sYSkpO3JldHVybigwLF8uSCkocCsiIil9O2VFPWZ1bmN0aW9uKGEpe3ZhciBiPWEuY29udGVudCxjPWEuRGE7YT1hLmF0dHJpYnV0ZXM7cmV0dXJuKDAsXy5IKSgiPGRpdiIrKGM/JyBjbGFzcz0iJytfLlUoYykrJyInOiIiKSsoYT8iICIrXy5KdShhKToiIikrIj4iK18uSyhiKSsiPC9kaXY+Iil9Owp2YXIgZ0U7Xy5mRT1mdW5jdGlvbihhLGIpe2E9YXx8e307cmV0dXJuKDAsXy5IKSgiIitfLlAoInUiLCIiLCExKShhLGIpKyIiKX07Cl8uTygidSIsIiIsMCxmdW5jdGlvbihhLGIsYyl7Yj1jfHxiO2E9YXx8e307dmFyIGQ9YS5xcyxlPWEubmIsZj1hLlppO2M9YS5NYjt2YXIgaz1hLndiLG49YS50cyxwPWEuVWksQT1hLndnLEQ9YS5MRixGPWEueVYsST1hLnV3LEo9YS5pTyxNPWEuak87YS5LZD9JPSIiOihiPXA/Z0UoYSxiKTpEP18uSyhEKTpfLmhFKGEsYiksST0nPGRpdiBjbGFzcz0iJytfLlUoIk9abGlSIikrJyI+JytiKyhJPyc8ZGl2IGNsYXNzPSInK18uVSgiWmYyT3dmIikrIiAiK18uVSgiSGoyamxmIikrJyI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGpzbmFtZT0iJytfLlUoIk5qREk3ZCIpKyciIGNsYXNzPSInK18uVSgidUJPZ24iKSsnIj4nK18uSyhJKSsiPC9idXR0b24+IisoSj8nPGRpdiBqc25hbWU9IicrXy5VKCJyS2xhSWIiKSsnIiBjbGFzcz0iJytfLlUoIlhkU3liZSIpKyciJysoTT8nIGRhdGEtd2FpdC10aW1lPSInK18uVShNKSsnIic6IiIpKycgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIj4nKwpfLksoSikrIjwvZGl2PiI6IiIpKyI8L2Rpdj4iOiIiKSsiPC9kaXY+Iik7Yj1fLkg7Yz0nPGRpdiBqc2NvbnRyb2xsZXI9IicrXy5VKCJEMDJ4ZGMiKSsnIiBqc2FjdGlvbj0iJytfLlUoIkpJYnVRYyIpKyI6IitfLlUoIlVIWjBVIikrIigiK18uVSgidEppRjFlIikrIiksIitfLlUoInM1N1gwYyIpKyIoIitfLlUoIkx3dHVBYyIpKyIpOyBjbGljazoiK18uVSgicXJCNkNmIikrIigiK18uVSgiTmpESTdkIikrIik7IitfLlUoIk5OdzdsYiIpKyI6IitfLlUoIlYyR0NCYyIpKyI7IitfLlUoIlU1N0JiZiIpKyI6IitfLlUoIk9HSmhaIikrIjsiK18uVSgiUHVlZU5kIikrIjoiK18uVSgiaFJMQ1RlIikrJzsiIGpzbmFtZT0iJytfLlUoInlYQmY3YiIpKyciIGNsYXNzPSInK18uVSgiR3RnbEFlIikrJyInKyhrPycgZGF0YS1jdXN0b20tbmV4dC10ZXh0PSInK18uVShrKSsnIic6IiIpKyhjPycgZGF0YS1idXR0b24taWQtcHJlZml4PSInK18uVShjKSsnIic6IiIpKyI+IitJO2U/KGs9JzxkaXYgY2xhc3M9IicrCl8uVSgiQUl1OGgiKSsnIj4nLEk9Xy5OKHtxczpkLG5iOmUsWmk6Zix0czpuLHdnOkEsRGE6IkhqMmpsZiIsUGk6Rn0sYSksYT1JLm5iLGQ9SS5xcyxlPUkuWmksZj1JLm54LG49SS53ZyxBPUkudHMsRj1JLkRhLEk9SS5QaSxhPSgwLF8uSCkoJzxkaXYganNjb250cm9sbGVyPSInK18uVSgiY1VZTm1kIikrJyInKyhJPyIiOicganNhY3Rpb249ImNsaWNrOicrXy5VKCJLanNxUGQiKSsiKHByZXZlbnREZWZhdWx0PXRydWUpOyIrXy5VKCJyY3VRNmIiKSsiOiIrXy5VKCJXWWQiKSsiOyIrXy5VKCJaMkFtTWIiKSsiOiIrXy5VKCJHWnhxUWUiKSsiOyIrXy5VKCJSZFllVWIiKSsiOiIrXy5VKCJrdjdiSmQiKSsnOyInKSsnIGpzbmFtZT0iJytfLlUoImJDa0R0ZSIpKyciIGNsYXNzPSInK18uVSgiSU1IMXZjIikrIiAiK18uVSgibFVIU1IiKSsoQT8iICIrXy5VKCJqeUhFSGQiKToiIikrKEY/IiAiK18uVShGKToiIikrJyIgdGFiaW5kZXg9IjAiJysobj8nIGlkPSInK18uVShuKSsnIic6IiIpKwooZXx8Zj8nIHJvbGU9ImJ1dHRvbiInOicgcm9sZT0ibGluayInKSsoZT8nIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIic6IiIpKyhkPyIgIitfLkp1KGQpOiIiKSsiPiIrKEk/JzxhIGhyZWY9IicrXy5VKF8uUHUoSSkpKyciPicrXy5LKGEpKyI8L2E+IjpfLksoYSkpKyI8L2Rpdj4iKSxhPWsrYSsiPC9kaXY+Iik6YT0iIjtyZXR1cm4gYihjK2ErIjwvZGl2PiIpfSk7Xy5oRT1mdW5jdGlvbihhLGIsYyl7Yj1jfHxiO2E9YXx8e307Yz1hLk1iO3ZhciBkPWEud2IsZT1hLlJsO3JldHVybigwLF8uSCkoIiIrXy5DQyhfLk4oe2xhYmVsOl8uUSgiIisoZD8iIitkOl8uTCgiTmV4dCIpKSksUGk6YS5TcSx0YTpfLlEoInRKaUYxZSIpLGRpc2FibGVkOm51bGwhPWU/ZTohMSxEYTpfLlEoIkhqMmpsZiBkS1ZjUSIrKGEuaks/IiBtRkYyRWIiOiIiKSksaWQ6Yz9jKyJOZXh0IjoibmV4dCJ9LGEpLGIpKyIiKX07CmdFPWZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5NYjthPV8uSDt2YXIgYz17bGFiZWw6Xy5RKCIiK18uTCgiU2tpcCIpKSx0YTpfLlEoIkx3dHVBYyIpLERhOl8uUSgiSGoyamxmIGhqUGZkIiksaWQ6Yj9iKyJTa2lwIjoic2tpcCJ9LGQ9Yy5EYTtiPV8uSDtkPV8uTih7RGE6Xy5RKCJacDVxV2QiKyhkPyIgIitkOiIiKSl9LGMpO3ZhciBlPWQuRGE7Yz1fLkg7ZD1fLk4oe0RhOl8uUSgiQzBvVmZjIisoZT8iICIrZToiIikpfSxkKTtlPWQuRGE7ZD0oMCxfLkgpKCIiK3pDKF8uTih7RGE6Xy5RKCJPMFdSa2YgelpoblllIisoZT8iICIrZToiIikpfSxkKSkrIiIpO2M9YygiIitkKyIiKTtiPWIoIiIrYysiIik7cmV0dXJuIGEoIiIrYisiIil9OwpfLmlFPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGQuanx8YS5kZCxjPWEuUG07YT1hLmF0dHJpYnV0ZXM7cmV0dXJuKDAsXy5IKSgnPGJ1dHRvbiBqc2NvbnRyb2xsZXI9IicrXy5VKCJIWlppa2QiKSsnIiBqc25hbWU9IicrXy5VKCJMWmFFUmMiKSsnIiBqc2FjdGlvbj0iY2xpY2s6JytfLlUoIk03WHBmZSIpKyciIGRhdGEtZGVzdGluYXRpb24taW5mbz0iJytfLlUoYykrJyIgZGF0YS10aGlyZC1wYXJ0eS1lbWFpbD0iJytfLlUoXy5yKGIsNCkpKyciIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IicrXy5VKCJ1Qk9nbiIpKyciJysoYT8iICIrXy5KdShhKToiIikrIj4iK18uSyhiLkpjKCkpKyI8L2J1dHRvbj4iKX07Cl8uTygieSIsIiIsMCxmdW5jdGlvbihhLGIsYyl7Yj1jfHxiO2E9YS5mYS5qfHxhLmZhO2M9Xy5hZShhKTswPChudWxsPT1jP251bGw6Xy5oZChjLDIyKSkubGVuZ3RoP2M9IiIrXy5FRCgpOiJhbmRyb2lkcmVhdXRoIiE9Xy5yKGEsOCk/KGM9Xy5hZShhKSxjPW51bGw9PWM/bnVsbDpfLnYoYywxMiwhMSksY3x8KGM9Xy5hZShhKSxjPSEobnVsbD09Yz8wOl8udihjLDEsITEpKSksYz1jfHxfLnYoYSw1NCwhMSk/IiIrXy5FRCgpOiIiKTpjPSIiO3JldHVybigwLF8uSCkoIiIrXy5mRSh7TWI6Xy5RKCJpZGVudGlmaWVyIiksbmI6Xy5RKCIiK2MpLFppOiEwLFVpOl8uYmUoYSl9LGIpKyIiKX0pO18uTygidiIsImRlZmF1bHQiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJTaWduIGluIil9KTsKXy5PKCJ2IiwiY3VzdG9tZGV2aWNlIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307YT1fLmFlKGEuZmEmJihhLmZhLmp8fGEuZmEpKTthPWE9e25hbWU6Xy5RKCIiKyhudWxsPT1hP251bGw6Xy5yKGEsMTQpKSl9O2E9KDAsXy5IKSgiICIrXy5LKGEubmFtZSkpO3JldHVybigwLF8uSCkoIldlbGNvbWUsIithKX0pOwpfLk8oInciLCIiLDAsZnVuY3Rpb24oYSxiLGMpe2I9Y3x8YjthPWF8fHt9O3ZhciBkPWEuZmEmJihhLmZhLmp8fGEuZmEpLGU9YS5kZCYmKGEuZGQuanx8YS5kZCk7Yz1fLkg7ZSYmKG51bGw9PWU/MDplLkpjKCkpPyhiPSJlbiIhPWIubG9jYWxlJiYiZW4tR0IiIT1iLmxvY2FsZT8iQ29udGludWUgdG8gIitfLlAoInoiLCIiLCExKShhLGIpOiJ0byBjb250aW51ZSB0byAiK18uUCgieiIsIiIsITEpKGEsYiksYj0oMCxfLkgpKCIiKygiIitiKyIiKSkpOmI9ImVuIiE9Yi5sb2NhbGUmJiJlbi1HQiIhPWIubG9jYWxlP0ZEKF8uTih7TG06Xy5nZShfLmFlKGQpKX0sYSksYik6R0QoXy5OKHtMbTpfLmdlKF8uYWUoZCkpfSxhKSxiKTtyZXR1cm4gYygiIitiKyIiKX0pOwpfLk8oInoiLCIiLDAsZnVuY3Rpb24oYSl7dmFyIGI9YS5mYSYmKGEuZmEuanx8YS5mYSksYz0iIixkPSIiO2lmKG51bGw9PWIpdmFyIGU9bnVsbDtlbHNlIGU9Xy5lZShiKSxlPW51bGw9PWU/bnVsbDpfLnIoZSwxMik7ZT8oYj0iU2lnbmluZyBpbiB3aWxsIHJlZGlyZWN0IHlvdSB0bzogIitfLnIoXy5lZShiKSwxMiksZCs9IiIrYik6ZCs9IlNpZ25pbmcgaW4gd2lsbCByZWRpcmVjdCB5b3UgYmFjayB0byB0aGUgYXBwbGljYXRpb24iO2MrPV8uaUUoXy5OKHtQbTpfLlEoZCl9LGEpKTtyZXR1cm4oMCxfLkgpKGMrIiIpfSk7Xy5PKCJDIiwiIiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgoMCxfLkgpKCJFbnRlciB5b3VyIGVtYWlsIikpfSk7Xy5PKCJEIiwiIiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgiQ291bGRuJ3QgZmluZCB5b3VyIEdvb2dsZSBBY2NvdW50Iil9KTsKXy5PKCJFIiwiIiwwLGZ1bmN0aW9uKGEsYixjKXtiPWN8fGI7Yz1fLkg7YT1fLk4oe0VsOiExfSxhKTtiPSIiKygiIitfLmJ6KF8uTih7TmM6ITAsaWQ6Xy5RKCJpbmZvRGlhbG9nIiksY29udGVudDooMCxfLlQpKCIiK18uUCgiRiIsYS5FbiwhMCkoYSxiKSksYnV0dG9uczooMCxfLlQpKCIiK18uY3ooe2NvbnRlbnQ6KDAsXy5UKSgiQ2xvc2UiKSxCYjpfLlEoIlR2RDlQYyIpfSkpfSxhKSxiKSsiIik7Yj0oMCxfLkgpKGIpO3JldHVybiBjKCIiK2IrIiIpfSk7Xy5PKCJGIiwiIiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgiIil9KTtfLk8oIngiLCIiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCIiKX0pO18uTygiQiIsIiIsMCxmdW5jdGlvbigpe3ZhciBhPV8uSCxiPSc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIganNuYW1lPSInK18uVSgiQ3V6MlVlIikrJyIgY2xhc3M9IicrXy5VKCJ1Qk9nbiIpKyciPic7cmV0dXJuIGEoYitfLksoXy5MKCJGb3Jnb3QgZW1haWw/IikpKyI8L2J1dHRvbj4iKX0pOwpfLmpFPWZ1bmN0aW9uKGEsYil7cmV0dXJuKDAsXy5IKSgiIitfLlAoIk0iLCIiLCEwKShhLGIpKyIiKX07Xy5PKCJQIiwiZGVmYXVsdCIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIlNpZ24gaW4iKX0pO18uTygiUCIsImN1c3RvbWRldmljZSIsMCxmdW5jdGlvbihhKXthPWF8fHt9O2E9Xy5hZShhLmZhJiYoYS5mYS5qfHxhLmZhKSk7YT1hPXtuYW1lOl8uUSgiIisobnVsbD09YT9udWxsOl8ucihhLDE0KSkpfTthPSgwLF8uSCkoIiAiK18uSyhhLm5hbWUpKTtyZXR1cm4oMCxfLkgpKCJXZWxjb21lLCIrYSl9KTsKXy5PKCJRIiwiIiwwLGZ1bmN0aW9uKGEsYixjKXtiPWN8fGI7YT1hfHx7fTt2YXIgZD1hLmZhJiYoYS5mYS5qfHxhLmZhKSxlPWEuZGQmJihhLmRkLmp8fGEuZGQpO2M9Xy5IO2UmJihudWxsPT1lPzA6ZS5KYygpKT8oYj0iZW4iIT1iLmxvY2FsZSYmImVuLUdCIiE9Yi5sb2NhbGU/IkNvbnRpbnVlIHRvICIrXy5QKCJTIiwiIiwhMSkoYSxiKToidG8gY29udGludWUgdG8gIitfLlAoIlMiLCIiLCExKShhLGIpLGI9KDAsXy5IKSgiIisoIiIrYisiIikpKTpiPSJlbiIhPWIubG9jYWxlJiYiZW4tR0IiIT1iLmxvY2FsZT9GRChfLk4oe0xtOl8uZ2UoXy5hZShkKSl9LGEpLGIpOkdEKF8uTih7TG06Xy5nZShfLmFlKGQpKX0sYSksYik7cmV0dXJuIGMoIiIrYisiIil9KTsKXy5PKCJTIiwiIiwwLGZ1bmN0aW9uKGEpe3ZhciBiPWEuZmEmJihhLmZhLmp8fGEuZmEpLGM9IiIsZD0iIjtpZihudWxsPT1iKXZhciBlPW51bGw7ZWxzZSBlPV8uZWUoYiksZT1udWxsPT1lP251bGw6Xy5yKGUsMTIpO2U/KGI9IlNpZ25pbmcgaW4gd2lsbCByZWRpcmVjdCB5b3UgdG86ICIrXy5yKF8uZWUoYiksMTIpLGQrPSIiK2IpOmQrPSJTaWduaW5nIGluIHdpbGwgcmVkaXJlY3QgeW91IGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9uIjtjKz1fLmlFKF8uTih7UG06Xy5RKGQpfSxhKSk7cmV0dXJuKDAsXy5IKShjKyIiKX0pO18uTygiViIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoKDAsXy5IKSgiRW50ZXIgeW91ciBlbWFpbCIpKX0pOwpfLk8oIlciLCIiLDAsZnVuY3Rpb24oYSxiLGMpe2I9Y3x8YjtjPV8uSDthPV8uTih7RWw6ITF9LGEpO2I9IiIrKCIiK18uYnooXy5OKHtOYzohMCxpZDpfLlEoImluZm9EaWFsb2ciKSxjb250ZW50OigwLF8uVCkoIiIrXy5QKCJYIixhLkVuLCEwKShhLGIpKSxidXR0b25zOigwLF8uVCkoIiIrXy5jeih7Y29udGVudDooMCxfLlQpKCJDbG9zZSIpLEJiOl8uUSgiVHZEOVBjIil9KSl9LGEpLGIpKyIiKTtiPSgwLF8uSCkoYik7cmV0dXJuIGMoIiIrYisiIil9KTtfLk8oIlgiLCIiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCIiKX0pO18uTygiUiIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIiIpfSk7IF8uTygiVSIsIiIsMCxmdW5jdGlvbihhLGIsYyl7Yj1jfHxiO2E9Xy5IO2M9e3RleHQ6Xy5RKCIiK18uTCgiRm9yZ290IGVtYWlsPyIpKSx0YToiQ3V6MlVlIn07dmFyIGQ9YjtjPSgwLF8uSCkoIiIrXy5QKCJMIiwiIiwhMCkoYyxkKSsiIik7cmV0dXJuIGEoIiIrXy5qRSh7dGV4dDooMCxfLlQpKCIiK2MpfSxiKSsiIil9KTsKdmFyIGtoYT1WKCJZVzlETCIsIllXOURMIixbXy56XSk7dmFyIGtFPWZ1bmN0aW9uKGEpe2tFLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuZz1hLmlhLmRhO3RoaXMuYT1hLmNvbnRyb2xsZXIuR207dGhpcy53PXRoaXMucmEoIk85TWlsYyIpO3RoaXMuYj10aGlzLkZiKCJDYWtHWCIpO3RoaXMuZj10aGlzLnJhKCJTQmxTb2QiKX07Xy5tKGtFLF8uankpO18uWChraGEse2lhOntkYTpfLnp9LGNvbnRyb2xsZXI6e0dtOiJDUVJiTGQifX0sa0UpO3ZhciBsRT1fLlhjfHxfLkZjO2tFLnByb3RvdHlwZS5jPSExO2tFLnByb3RvdHlwZS5EZj1mdW5jdGlvbigpe3JldHVybiFfLkViKF8uUGIoXy5adyh0aGlzLmYpKSl9O18uVyhrRS5wcm90b3R5cGUsIktoZWNpZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5EZn0pO2tFLnByb3RvdHlwZS56bj1mdW5jdGlvbigpe3JldHVybiFfLkViKF8uUGIodGhpcy5ocSgpKSl9O18uVyhrRS5wcm90b3R5cGUsImthY294IixmdW5jdGlvbigpe3JldHVybiB0aGlzLnpufSk7CmtFLnByb3RvdHlwZS5Taz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuem4oKTthfHx0aGlzLmEuQWEoXy5HKHRoaXMuZyxpaGEpKTtyZXR1cm4gYX07Xy5XKGtFLnByb3RvdHlwZSwiZFZqeUVlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlNrfSk7a0UucHJvdG90eXBlLnplPWZ1bmN0aW9uKCl7aWYoXy5FYihfLlBiKF8uWncodGhpcy5mKSkpKXJldHVybiBudWxsO3ZhciBhPW5ldyBfLnRlO2Euc2V0VG9rZW4oXy5adyh0aGlzLmYpKTt2YXIgYj10aGlzLmhxKCk7Xy50KGEsMixiKTtyZXR1cm4gYX07Xy5XKGtFLnByb3RvdHlwZSwiRXFIb1UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuemV9KTtrRS5wcm90b3R5cGUuT3A9ZnVuY3Rpb24oKXt0aGlzLmEucmIoITEpO3RoaXMuYi51KCkmJnRoaXMuYi5SYSgic3JjIiwiIil9O18uVyhrRS5wcm90b3R5cGUsIlk4S2xrZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PcH0pO2tFLnByb3RvdHlwZS5ocT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEub2EoKX07Cl8uVyhrRS5wcm90b3R5cGUsIlZWWW5oYiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ocX0pO2tFLnByb3RvdHlwZS5UYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuVGIoKX07Xy5XKGtFLnByb3RvdHlwZSwidTNiVzRlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlRifSk7a0UucHJvdG90eXBlLmZvY3VzPWZ1bmN0aW9uKCl7dGhpcy5hLmZvY3VzKCl9O18uVyhrRS5wcm90b3R5cGUsIkFIbXV3ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb2N1c30pO2tFLnByb3RvdHlwZS4kdT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYi51KCk7dGhpcy5jPSEwO2xFJiYxPmEucmVhZHlTdGF0ZT9hLmxvYWQoKTphLnBhdXNlZCYmYS5wbGF5KCk7dGhpcy5hLm1iKCIiKX07Xy5XKGtFLnByb3RvdHlwZSwiSU1kZzhkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLiR1fSk7CmtFLnByb3RvdHlwZS5FdT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYi51KCk7YSYmbEUmJihhLmxvYWQoKSxfLnFsKGEsImVycm9yIixmdW5jdGlvbigpe2EubG9hZCgpfSksXy5xbChhLCJjYW5wbGF5IixmdW5jdGlvbigpe3RoaXMuYyYmYS5wbGF5KCl9LCExLHRoaXMpLF8ucWwoYSwiZW5kZWQiLGZ1bmN0aW9uKCl7dGhpcy5jPSExfSwhMSx0aGlzKSl9O18uVyhrRS5wcm90b3R5cGUsImpxSVZjZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5FdX0pOwpfLm1FPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5pZCxkPWEubmFtZSxlPWEubGFiZWwsZj1hLnRhLGs9YS5vajthPWEuRGE7cmV0dXJuKDAsXy5IKSgnPGRpdiBjbGFzcz0iJytfLlUoIlJmajRDZiIpKyhhPyIgIitfLlUoYSk6IiIpKyciPicrXy5DRCh7bmFtZTpfLlEoIiIrZCksaWQ6Xy5RKCIiK2MpLGxhYmVsOl8uUSgiIitlKSx0YTpfLlEoIiIrKGY/IiIrZjoiakZ4cWJjIikpLHBhdHRlcm46Xy5RKCJbMC05IF0qIiksdHlwZTpfLlEoInRlbCIpLFhnOiEwLCRuOigwLF8uVCkoIiIrKGs/IkctIjoiIikpfSxiKSsiPC9kaXY+Iil9OwpfLm5FPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5pZCxkPWEub3B0aW9ucyxlPWEuRGEsZj1hLm5hbWUsaz1hLmxhYmVsLG49YS50YTthPWEuZGlzYWJsZWQ7cmV0dXJuKDAsXy5IKSgnPGRpdiBjbGFzcz0iJytfLlUoIk9XTzc5YyIpKyhlPyIgIitfLlUoZSk6IiIpKyciJysobj8nIGpzbmFtZT0iJytfLlUobikrJyInOiIiKSsnIGpzY29udHJvbGxlcj0iJytfLlUoIlIxUXRjYyIpKyciIGpzYWN0aW9uPSInK18uVSgicmN1UTZiIikrIjoiK18uVSgiV1lkIikrIjsgZm9jdXM6IitfLlUoIkp0MUVYIikrIjsgYmx1cjoiK18uVSgiZnBmVEVlIikrIjsgY2hhbmdlOiIrXy5VKCJGRFNFWGMiKSsiOyIrXy5VKF8uUCgiWSIsIiIsITEpKG51bGwsYikpKyciPjxkaXYgY2xhc3M9IicrXy5VKCJVcEJjMWQiKSsnIj48ZGl2IGNsYXNzPSInK18uVSgiR0RXcXBiIikrJyIganNuYW1lPSInK18uVSgiV3hiNHdjIikrJyI+PGxhYmVsIGNsYXNzPSInK18uVSgiSGdLY0tjIikrJyIganNuYW1lPSInK18uVSgiZ0NmOTRjIikrCiciIGZvcj0iJytfLlUoYykrJyIgaWQ9IicrXy5VKGMpKyctbGFiZWwiPicrKGs/Xy5LKGspOiIiKSsnPC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSInK18uVSgia3VWR2NiIikrJyI+PHNlbGVjdCBjbGFzcz0iJytfLlUoIk45clZrZSIpKyciIGpzbmFtZT0iJytfLlUoInNDNnJwZiIpKyciIGlkPSInK18uVShjKSsnIiBhcmlhLWxhYmVsbGVkYnk9IicrXy5VKGMpKyctbGFiZWwiJysoZj8nIG5hbWU9IicrXy5VKGYpKyciJzoiIikrKGE/IiBkaXNhYmxlZCI6IiIpKyc+PG9wdGlvbiB2YWx1ZT0iIj48L29wdGlvbj4nK18uSyhkKSsnPC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0iJytfLlUoInhyaTllYyIpKyciPjwvZGl2PjxkaXYgY2xhc3M9IicrXy5VKCJSdWFaV2UiKSsnIiBqc25hbWU9IicrXy5VKCJOb3dKemIiKSsnIj48L2Rpdj48L2Rpdj48c3BhbiBjbGFzcz0iJytfLlUoImdhREd1YiIpKyciIGlkPSInK18uVShjKSsnRXJyb3IiIGpzbmFtZT0iJytfLlUoImF2OWtrZCIpKwonIiBhcmlhLWxpdmU9InBvbGl0ZSIgYXJpYS1yZWxldmFudD0iYWRkaXRpb25zIj48L3NwYW4+PC9kaXY+Jyl9O18ub0U9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sYWJlbCxjPWEuRGEsZD1hLnNlbGVjdGVkLGU9YS5kaXNhYmxlZCxmPWEuZ2Msaz1hLmF0dHJpYnV0ZXMsbj1hLmlkO3JldHVybigwLF8uSCkoJzxvcHRpb24gdmFsdWU9IicrXy5VKGEudmFsdWUpKyciJysoZD8nIHNlbGVjdGVkPSJzZWxlY3RlZCInOiIiKSsoZT8iIGRpc2FibGVkIjoiIikrKGM/JyBjbGFzcz0iJytfLlUoYykrJyInOiIiKSsobj8nIGlkPSInK18uVShuKSsnIic6IiIpKyhrPyIgIitfLkp1KGspOiIiKSsoZj8nIGFyaWEtbGFiZWw9IicrXy5VKGYpKyciJzoiIikrIj4iK18uSyhiKSsiPC9vcHRpb24+Iil9O18uTygiWSIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIiIpfSk7CnZhciBsaGE9VigiY0hXOVpjIiwiY0hXOVpjIixbXy56XSk7dmFyIHBFPWZ1bmN0aW9uKGEpe3BFLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYz0hMTt0aGlzLmI9dGhpcy5yYSgib1c2SENmIik7dGhpcy5hPXRoaXMuRmIoIlhrNTc3IikuTGQoKTt2YXIgYj1hLmNvbnRyb2xsZXJzLlZGO3RoaXMuZj1iLmxlbmd0aCYmYlswXTt0aGlzLnc9YS5jb250cm9sbGVyLlpKO3RoaXMuaT1hLmNvbnRyb2xsZXIuaFE7dGhpcy5nPSEhdGhpcy5mfTtfLm0ocEUsXy5qeSk7Xy5YKGxoYSx7aWE6e2RhOl8uen0sY29udHJvbGxlcjp7Wko6ImJ5UmFtZCIsaFE6IkExemFiZSJ9LGNvbnRyb2xsZXJzOntWRjoiU1NCelgifX0scEUpO3ZhciBtaGE9L14oKDA/WzEtOV0pfChbMTJdXGQpfCgzWzAxXSkpJC8sbmhhPS9eXGR7NH0kLztwRS5wcm90b3R5cGUubGc9MjtwRS5wcm90b3R5cGUuUHU9ZnVuY3Rpb24oKXt0aGlzLmMmJnRoaXMuemQoKSYmdGhpcy5rZCgpO3JldHVybiEwfTtfLlcocEUucHJvdG90eXBlLCJGRFNFWGMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUHV9KTsKcEUucHJvdG90eXBlLnhjPWZ1bmN0aW9uKCl7dGhpcy5nJiZ0aGlzLmYucmIoITEpO3RoaXMudy5yYighMSk7dGhpcy5pLnJiKCExKX07Xy5XKHBFLnByb3RvdHlwZSwiS3ZjUWZkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnhjfSk7cEUucHJvdG90eXBlLmdldERheT1mdW5jdGlvbigpe2lmKCF0aGlzLmcpcmV0dXJuIDE7dmFyIGE9dGhpcy5mLm9hKCk7cmV0dXJuIG1oYS50ZXN0KGEpPygwLHdpbmRvdy5wYXJzZUludCkoYSwxMCk6MH07Xy5XKHBFLnByb3RvdHlwZSwiSDBGWk1lIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldERheX0pO3BFLnByb3RvdHlwZS5nZXRNb250aD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudy5vYSgpO3JldHVybiIiIT1hPygwLHdpbmRvdy5wYXJzZUludCkoYSwxMCk6MH07Xy5XKHBFLnByb3RvdHlwZSwiaXExQzFlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1vbnRofSk7CnBFLnByb3RvdHlwZS5nZXRZZWFyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5pLm9hKCk7cmV0dXJuIG5oYS50ZXN0KGEpPygwLHdpbmRvdy5wYXJzZUludCkoYSwxMCk6MH07Xy5XKHBFLnByb3RvdHlwZSwiS2NGaVplIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFllYXJ9KTtwRS5wcm90b3R5cGUub2E9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUodGhpcy5nZXRZZWFyKCksdGhpcy5nZXRNb250aCgpLTEsdGhpcy5nZXREYXkoKSkpLmdldFRpbWUoKX07Xy5XKHBFLnByb3RvdHlwZSwiSHZuSzJiIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm9hfSk7CnBFLnByb3RvdHlwZS56ZD1mdW5jdGlvbigpe2lmKHRoaXMuZyYmIXRoaXMuZi5vYSgpfHwhdGhpcy53Lm9hKCl8fCF0aGlzLmkub2EoKSlyZXR1cm4gdGhpcy5sZz0wLCExO2lmKHRoaXMuZyYmIXRoaXMuZ2V0RGF5KCl8fCF0aGlzLmdldE1vbnRoKCl8fCF0aGlzLmdldFllYXIoKSlyZXR1cm4gdGhpcy5sZz0xLCExO3RoaXMubGc9MjtyZXR1cm4hMH07Xy5XKHBFLnByb3RvdHlwZSwidndLUnJkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnpkfSk7cEUucHJvdG90eXBlLkFhPWZ1bmN0aW9uKGEpe18uWXcodGhpcy5iLGEpO3RoaXMuYz0hMDt0aGlzLmEmJnRoaXMuYS5FYigpfTtwRS5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oKXt0aGlzLmM9ITE7Xy5Zdyh0aGlzLmIsIiIpO3RoaXMuYSYmdGhpcy5hLnNob3coKX07Xy5XKHBFLnByb3RvdHlwZSwiUWthT25jIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmtkfSk7cEUucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi4kYigpfTsgXy5XKHBFLnByb3RvdHlwZSwiWWNkOGdlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVycm9yfSk7cEUucHJvdG90eXBlLk9IPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGd9O18uVyhwRS5wcm90b3R5cGUsInJ3YzN3ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PSH0pOwp2YXIgb2hhPV8uRXYoInVKOUhUZCIpO3ZhciBwaGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJQbGVhc2Ugc2VsZWN0IHlvdXIgZ2VuZGVyIil9LHFoYT1mdW5jdGlvbigpe3JldHVybiBfLkwoIlBsZWFzZSBpbmRpY2F0ZSB0aGUgZ2VuZGVyIHlvdSBtb3N0IGlkZW50aWZ5IHdpdGgiKX0scmhhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiUGxlYXNlIHNlbGVjdCBhIHByb25vdW4iKX0sc2hhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiQXJlIHlvdSBzdXJlIHlvdSBlbnRlcmVkIGEgdmFsaWQgZ2VuZGVyPyIpfTsKXy5xRT1WKCJxYlowU2UiLCJxYlowU2UiLFtdKTtfLnJFPVYoInFGbWszYiIsInFGbWszYiIsW10pO18uc0U9ZnVuY3Rpb24oYSl7Xy5zRS4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmE9YS54ZS5BcXx8bmV3IGxpO3RoaXMuYj17fX07Xy5tKF8uc0UsU3gpO0h6KF8uckUse3hlOntBcTp7UWI6bGksbmFtZToiaW5pdGlhbFNpZ25VcERhdGEifX19LF8uc0UpO18uc0UucHJvdG90eXBlLkNiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5DYigpfTtfLnNFLnByb3RvdHlwZS5wYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEucGMoKX07Xy5zRS5wcm90b3R5cGUuRGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLkRkKCl9Owp2YXIgdGhhPVYoIlozNnc0ZCIsIlozNnc0ZCIsW18uel0pO3ZhciB0RT1mdW5jdGlvbihhKXt0RS4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmY9YS5jb250cm9sbGVyLiRrO3RoaXMuYz1hLmNvbnRyb2xsZXIuS0Y7dGhpcy5iPWEuY29udHJvbGxlci5MRzt0aGlzLmc9dGhpcy5yYSgicHJDTEVjIik7dGhpcy5hPWEuaWEuZGF9LHZFO18ubSh0RSxfLmp5KTtfLlgodGhhLHtpYTp7ZGE6Xy56fSxjb250cm9sbGVyOntLRjoiUDFVRWxiIiwkazoiWlUyVkhkIixMRzoiaHlZaW0ifX0sdEUpO3RFLnByb3RvdHlwZS5VSz1mdW5jdGlvbigpe18udUUodGhpcyxudWxsKTt2YXIgYT10aGlzLkxoKCk7dGhpcy5nLmFiKCJ6aVRHRSIsNCE9YSk7dGhpcy5IYShvaGEsdGhpcy5MaCgpKX07Xy5XKHRFLnByb3RvdHlwZSwiZXVNTFBkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlVLfSk7dEUucHJvdG90eXBlLkpLPWZ1bmN0aW9uKCl7dkUodGhpcyxudWxsKX07Xy5XKHRFLnByb3RvdHlwZSwiVzB1dUNjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkpLfSk7CnRFLnByb3RvdHlwZS5WSz1mdW5jdGlvbigpe3RoaXMuYi5rZCgpfTtfLlcodEUucHJvdG90eXBlLCJZS2FIR2MiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVkt9KTt0RS5wcm90b3R5cGUuTGg9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmYub2EoKTtyZXR1cm4gYT8oMCx3aW5kb3cucGFyc2VJbnQpKGEsMTApOjB9O18uVyh0RS5wcm90b3R5cGUsIkJ1eGpDYiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5MaH0pO3RFLnByb3RvdHlwZS5kbD1mdW5jdGlvbigpe3JldHVybiBfLkRiKHRoaXMuYy5vYSgpKX07Xy5XKHRFLnByb3RvdHlwZSwiVXloQTZjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmRsfSk7dEUucHJvdG90eXBlLmZsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iLm9hKCk7cmV0dXJuIGE/KDAsd2luZG93LnBhcnNlSW50KShhLDEwKTowfTtfLlcodEUucHJvdG90eXBlLCJJU3dnSGYiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmx9KTsKXy53RT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuTGgoKTtpZighYylyZXR1cm4gYiYmXy51RShhLF8uRyhhLmEscGhhKSksITE7aWYoND09Yyl7Yz1hLmRsKCk7dmFyIGQ9YS5mbCgpO2ImJihjfHx2RShhLF8uRyhhLmEscWhhKSksZHx8KChiPV8uRyhhLmEscmhhKSk/YS5iLkFhKGIpOmEuYi5rZCgpKSk7cmV0dXJuISghY3x8IWQpfXJldHVybiEwfTt0RS5wcm90b3R5cGUud3A9ZnVuY3Rpb24oKXtyZXR1cm4gXy53RSh0aGlzLCEwKX07Xy5XKHRFLnByb3RvdHlwZSwiWHI3YlhjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLndwfSk7Xy51RT1mdW5jdGlvbihhLGIpe2I/YS5mLkFhKGIpOmEuZi5rZCgpfTt2RT1mdW5jdGlvbihhLGIpeyIiPT1iJiYoYj1udWxsKTthLmMuQWEoYil9O3RFLnByb3RvdHlwZS5kdz1mdW5jdGlvbigpe3ZhciBhPV8uRyh0aGlzLmEsc2hhKTs0PT10aGlzLkxoKCk/dkUodGhpcyxhKTpfLnVFKHRoaXMsYSl9O18uVyh0RS5wcm90b3R5cGUsIkxQSnBjYyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kd30pOwp2YXIgeEU9ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PWElMTAmJjExIT1hJTEwMD8ib25lIjoyPT1hJTEwJiYxMiE9YSUxMDA/InR3byI6Mz09YSUxMCYmMTMhPWElMTAwPyJmZXciOiJvdGhlciJ9LHlFPXhFO3lFPXhFO3ZhciB6RT1mdW5jdGlvbihhLGIpe2lmKHZvaWQgMD09PWIpe2I9YSsiIjt2YXIgYz1iLmluZGV4T2YoIi4iKTtiPU1hdGgubWluKC0xPT1jPzA6Yi5sZW5ndGgtYy0xLDMpfXJldHVybiAxPT0oYXwwKSYmMD09Yj8ib25lIjoib3RoZXIifSxBRT16RTtBRT16RTt2YXIgQkUsQ0UsREUsdWhhLHZoYSxHRSxJRSx3aGEsSkUsS0UsTEUsTUUsRkUseGhhLHloYSx6aGE7Xy5FRT1mdW5jdGlvbihhKXt0aGlzLm89YTt0aGlzLmI9dGhpcy5hPXRoaXMuYz1udWxsO2E9ckQ7dmFyIGI9cEQ7aWYoQkUhPT1hfHxDRSE9PWIpQkU9YSxDRT1iLERFPW5ldyB0RDt0aGlzLmc9REV9O0JFPW51bGw7Q0U9bnVsbDtERT1udWxsO3VoYT0vJyhbe30jXS4qPyknL2c7dmhhPS8nJy9nO18uSEU9ZnVuY3Rpb24oYSxiKXtpZihhLm8pe2EuYz1bXTt2YXIgYz13aGEoYSxhLm8pO2EuYj1GRShhLGMpO2Eubz1udWxsfWlmKGEuYiYmMCE9YS5iLmxlbmd0aCl7YS5hPV8ucmIoYS5jKTtjPVtdO0dFKGEsYS5iLGIsITAsYyk7Zm9yKGI9Yy5qb2luKCIiKTswPGEuYS5sZW5ndGg7KWI9Yi5yZXBsYWNlKGEuZihhLmEpLGEuYS5wb3AoKSk7YT1ifWVsc2UgYT0iIjtyZXR1cm4gYX07CkdFPWZ1bmN0aW9uKGEsYixjLGQsZSl7Zm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspc3dpdGNoKGJbZl0udHlwZSl7Y2FzZSA0OmUucHVzaChiW2ZdLnZhbHVlKTticmVhaztjYXNlIDM6dmFyIGs9YltmXS52YWx1ZSxuPWEscD1lLEE9Y1trXTtfLkNhKEEpPyhuLmEucHVzaChBKSxwLnB1c2gobi5mKG4uYSkpKTpwLnB1c2goIlVuZGVmaW5lZCBwYXJhbWV0ZXIgLSAiK2spO2JyZWFrO2Nhc2UgMjprPWJbZl0udmFsdWU7bj1lO3A9ay52cDtfLkNhKGNbcF0pPyhwPWtbY1twXV0sXy5DYShwKXx8KHA9ay5vdGhlciksR0UoYSxwLGMsZCxuKSk6bi5wdXNoKCJVbmRlZmluZWQgcGFyYW1ldGVyIC0gIitwKTticmVhaztjYXNlIDA6az1iW2ZdLnZhbHVlO0lFKGEsayxjLEFFLGQsZSk7YnJlYWs7Y2FzZSAxOms9YltmXS52YWx1ZSxJRShhLGssYyx5RSxkLGUpfX07CklFPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgaz1iLnZwLG49Yi5yeCxwPStjW2tdOygwLHdpbmRvdy5pc05hTikocCk/Zi5wdXNoKCJVbmRlZmluZWQgb3IgaW52YWxpZCBwYXJhbWV0ZXIgLSAiK2spOihuPXAtbixrPWJbY1trXV0sXy5DYShrKXx8KGQ9YS5nLmxkP2QobixhLmcubGQoKSk6ZChuKSxrPWJbZF0sXy5DYShrKXx8KGs9Yi5vdGhlcikpLGI9W10sR0UoYSxrLGMsZSxiKSxjPWIuam9pbigiIiksZT9mLnB1c2goYyk6KGE9eEQoYS5nLG4pLGYucHVzaChjLnJlcGxhY2UoLyMvZyxhKSkpKX07d2hhPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5jLGQ9KDAsXy5sKShhLmYsYSk7Yj1iLnJlcGxhY2UodmhhLGZ1bmN0aW9uKCl7Yy5wdXNoKCInIik7cmV0dXJuIGQoYyl9KTtyZXR1cm4gYj1iLnJlcGxhY2UodWhhLGZ1bmN0aW9uKGEsYil7Yy5wdXNoKGIpO3JldHVybiBkKGMpfSl9OwpKRT1mdW5jdGlvbihhKXt2YXIgYj0wLGM9W10sZD1bXSxlPS9be31dL2c7ZS5sYXN0SW5kZXg9MDtmb3IodmFyIGY7Zj1lLmV4ZWMoYSk7KXt2YXIgaz1mLmluZGV4OyJ9Ij09ZlswXT8oYy5wb3AoKSwwPT1jLmxlbmd0aCYmKGY9e3R5cGU6MX0sZi52YWx1ZT1hLnN1YnN0cmluZyhiLGspLGQucHVzaChmKSxiPWsrMSkpOigwPT1jLmxlbmd0aCYmKGI9YS5zdWJzdHJpbmcoYixrKSwiIiE9YiYmZC5wdXNoKHt0eXBlOjAsdmFsdWU6Yn0pLGI9aysxKSxjLnB1c2goInsiKSl9Yj1hLnN1YnN0cmluZyhiKTsiIiE9YiYmZC5wdXNoKHt0eXBlOjAsdmFsdWU6Yn0pO3JldHVybiBkfTtLRT0vXlxzKihcdyspXHMqLFxzKnBsdXJhbFxzKiwoPzpccypvZmZzZXQ6KFxkKykpPy87TEU9L15ccyooXHcrKVxzKixccypzZWxlY3RvcmRpbmFsXHMqLC87TUU9L15ccyooXHcrKVxzKixccypzZWxlY3RccyosLzsKRkU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtiPUpFKGIpO2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT17fTtpZigwPT1iW2RdLnR5cGUpZS50eXBlPTQsZS52YWx1ZT1iW2RdLnZhbHVlO2Vsc2UgaWYoMT09YltkXS50eXBlKXt2YXIgZj1iW2RdLnZhbHVlO3N3aXRjaChLRS50ZXN0KGYpPzA6TEUudGVzdChmKT8xOk1FLnRlc3QoZik/MjovXlxzKlx3K1xzKi8udGVzdChmKT8zOjUpe2Nhc2UgMjplLnR5cGU9MjtlLnZhbHVlPXhoYShhLGJbZF0udmFsdWUpO2JyZWFrO2Nhc2UgMDplLnR5cGU9MDtlLnZhbHVlPXloYShhLGJbZF0udmFsdWUpO2JyZWFrO2Nhc2UgMTplLnR5cGU9MTtlLnZhbHVlPXpoYShhLGJbZF0udmFsdWUpO2JyZWFrO2Nhc2UgMzplLnR5cGU9MyxlLnZhbHVlPWJbZF0udmFsdWV9fWMucHVzaChlKX1yZXR1cm4gY307CnhoYT1mdW5jdGlvbihhLGIpe3ZhciBjPSIiO2I9Yi5yZXBsYWNlKE1FLGZ1bmN0aW9uKGEsYil7Yz1iO3JldHVybiIifSk7dmFyIGQ9e307ZC52cD1jO2I9SkUoYik7Zm9yKHZhciBlPTA7ZTxiLmxlbmd0aDspe3ZhciBmPWJbZV0udmFsdWU7ZSsrO2lmKDE9PWJbZV0udHlwZSl2YXIgaz1GRShhLGJbZV0udmFsdWUpO2RbZi5yZXBsYWNlKC9ccy9nLCIiKV09aztlKyt9cmV0dXJuIGR9O3loYT1mdW5jdGlvbihhLGIpe3ZhciBjPSIiLGQ9MDtiPWIucmVwbGFjZShLRSxmdW5jdGlvbihhLGIsZSl7Yz1iO2UmJihkPSgwLHdpbmRvdy5wYXJzZUludCkoZSwxMCkpO3JldHVybiIifSk7dmFyIGU9e307ZS52cD1jO2Uucng9ZDtiPUpFKGIpO2Zvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7KXt2YXIgaz1iW2ZdLnZhbHVlO2YrKztpZigxPT1iW2ZdLnR5cGUpdmFyIG49RkUoYSxiW2ZdLnZhbHVlKTtlW2sucmVwbGFjZSgvXHMqKD86PSk/KFx3KylccyovLCIkMSIpXT1uO2YrK31yZXR1cm4gZX07CnpoYT1mdW5jdGlvbihhLGIpe3ZhciBjPSIiO2I9Yi5yZXBsYWNlKExFLGZ1bmN0aW9uKGEsYil7Yz1iO3JldHVybiIifSk7dmFyIGQ9e307ZC52cD1jO2Qucng9MDtiPUpFKGIpO2Zvcih2YXIgZT0wO2U8Yi5sZW5ndGg7KXt2YXIgZj1iW2VdLnZhbHVlO2UrKztpZigxPT1iW2VdLnR5cGUpdmFyIGs9RkUoYSxiW2VdLnZhbHVlKTtkW2YucmVwbGFjZSgvXHMqKD86PSk/KFx3KylccyovLCIkMSIpXT1rO2UrK31yZXR1cm4gZH07Xy5FRS5wcm90b3R5cGUuZj1mdW5jdGlvbihhKXtyZXR1cm4iXHVmZGRmXyIrKGEubGVuZ3RoLTEpLnRvU3RyaW5nKDEwKSsiXyJ9Owp2YXIgTkU9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShORSxfLnEpO05FLnByb3RvdHlwZS5nZXRFbWFpbD1mdW5jdGlvbigpe3JldHVybiBfLnIodGhpcywxKX07TkUucHJvdG90eXBlLkNiPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucih0aGlzLDIpfTtORS5wcm90b3R5cGUucGM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yKHRoaXMsMyl9O18uT0U9ZnVuY3Rpb24oYSl7Xy51KHRoaXMsYSwwLC0xLG51bGwsbnVsbCl9O18ubShfLk9FLF8ucSk7Xy5PRS5wcm90b3R5cGUucGI9ImhJaUJDIjtfLk9oWzc2MDU4NjA5XT1uZXcgXy5iZCg3NjA1ODYwOSx7ajQ6MH0sXy5PRSxmdW5jdGlvbihhLGIpe3ZhciBjLGQ9Xy5yKGIsMSksZT1fLnIoYiwyKSxmPV8ucihiLDMpLGs7aWYoaz1jPV8udyhiLE5FLDQpKWs9e2VtYWlsOl8ucihjLDEpLEJnOl8ucihjLDIpLE9pOl8ucihjLDMpLHhnOl8ucihjLDQpfSxhJiYoay5qPWMpO2M9e2hBOmQsbWF4TGVuZ3RoOmUsZTU6ZixjNTprfTthJiYoYy5qPWIpO3JldHVybiBjfSk7Cl8uUEU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJTaG93IHBhc3N3b3JkIil9O18uUUU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJIaWRlIHBhc3N3b3JkIil9O18uUkU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRhLGQ9YS5sYWJlbCxlPWEuaWQsZj1hLkRhLGs9YS5hdXRvZm9jdXMsbj1hLmF1dG9jb21wbGV0ZSxwPWEuTHAsQT1hLlJ4LEQ9YS55bixGPWEuS28sST1hLm5hbWU7YT1fLkg7Yz0nPGRpdiBqc2NvbnRyb2xsZXI9IicrXy5VKCJhMndKS2UiKSsnIiBqc2FjdGlvbj0iJytfLlUoImdCZGNGZSIpKyI6IitfLlUoImlEdTNRYyIpKyI7IitfLlUoIkFIbXV3ZSIpKyI6IitfLlUoIkxUYjFBZiIpKyciIGpzbmFtZT0iJytfLlUoYykrJyIgY2xhc3M9IicrXy5VKCJqUTlPRWYiKSsoZj8iICIrXy5VKGYpOiIiKSsnIj4nO0k9e3RhOiJiYzlCbiIsSVA6ITAsbGFiZWw6ZCxpZDplLGF1dG9mb2N1czprLGF1dG9jb21wbGV0ZTpuLExwOnAsUng6QSx5bjpELEtvOkYsbmFtZTpJfTt2YXIgSj1JLnRhO2Q9SS5sYWJlbDtlPUkuaWQ7az1JLm5hbWU7bj1JLmhpbnQ7dmFyIE09SS5EYTtwPUkuYXV0b2ZvY3VzO0E9SS5hdXRvY29tcGxldGU7RD1JLkxwOwpGPUkuUng7Zj1JLklQO3ZhciBSPUkueW47ST1JLktvO0o9JzxkaXYganNjb250cm9sbGVyPSInK18uVSgiWkprU20iKSsnIiBqc2FjdGlvbj0iJytfLlUoIkpJYnVRYyIpKyI6IitfLlUoIm5BRjE4ZSIpKyIoIitfLlUoInNFYlgyIikrIik7IGtleXVwOiIrXy5VKCJPb2hIcWUiKSsiKCIrXy5VKCJZUHFqYmYiKSsiKTsiK18uVSgicmN1UTZiIikrIjoiK18uVSgiWDJiQUhiIikrIjsiK18uVSgic1B2ajhlIikrIjoiK18uVSgiVkNrdXpkIikrIjtjaGFuZ2U6IitfLlUoIlZDa3V6ZCIpKyc7IiBqc25hbWU9IicrXy5VKEopKyciIGNsYXNzPSInK18uVSgiZlpBN0RjIikrKEY/IiAiK18uVSgiZU8yWmZkIik6IiIpKyhNPyIgIitfLlUoTSk6IiIpKyciPic7TT0iIjtSfHwoUj1fLlEoIiIrKGY/Inl5dlFxZCI6IkRQdndZYyIpKSxmPSIiKygnPHNwYW4gY2xhc3M9IicrXy5VKFIpKyIgIitfLlUoIkpaNWxaYyIpKyciIGFyaWEtaGlkZGVuPSJ0cnVlIj4nKyhmPygwLF8uSCkoJzxzdmcgZmlsbD0iIzAwMDAwMCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSInKwpfLlUoIkwxTTR2IikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY1LS4xMyAxLjI2LS4zNiAxLjgzbDIuOTIgMi45MmMxLjUxLTEuMjYgMi43LTIuODkgMy40My00Ljc1LTEuNzMtNC4zOS02LTcuNS0xMS03LjUtMS40IDAtMi43NC4yNS0zLjk4LjdsMi4xNiAyLjE2QzEwLjc0IDcuMTMgMTEuMzUgNyAxMiA3ek0yIDQuMjdsMi4yOCAyLjI4LjQ2LjQ2QzMuMDggOC4zIDEuNzggMTAuMDIgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41IDEuNTUgMCAzLjAzLS4zIDQuMzgtLjg0bC40Mi40MkwxOS43MyAyMiAyMSAyMC43MyAzLjI3IDMgMiA0LjI3ek03LjUzIDkuOGwxLjU1IDEuNTVjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42NiAxLjM0IDMgMyAzIC4yMiAwIC40NC0uMDMuNjUtLjA4bDEuNTUgMS41NWMtLjY3LjMzLTEuNDEuNTMtMi4yLjUzLTIuNzYgMC01LTIuMjQtNS01IDAtLjc5LjItMS41My41My0yLjJ6bTQuMzEtLjc4bDMuMTUgMy4xNS4wMi0uMTZjMC0xLjY2LTEuMzQtMy0zLTNsLS4xNy4wMXoiLz48L3N2Zz4nKToKIiYjeGU4ZjU7IikrJzwvc3Bhbj48c3BhbiBjbGFzcz0iJytfLlUoUikrIiAiK18uVSgiRUhEblciKSsnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JysoZj8oMCxfLkgpKCc8c3ZnIGZpbGw9IiMwMDAwMDAiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBjbGFzcz0iJytfLlUoIkwxTTR2IikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiA0LjVDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41ek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtOGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6Ii8+PC9zdmc+Jyk6IiYjeGU4ZjQ7IikrIjwvc3Bhbj4iKSwKTSs9Xy5hRSh7dGE6Xy5RKCJzRWJYMiIpLERhOl8uUSgiYUdUUEJiIiksaWNvbjooMCxfLlQpKGYpLHlwOiEwLGdjOl8uUSgiIisoRj9fLlFFKG51bGwsYik6Xy5QRShudWxsLGIpKSksdmg6Xy5RKCIiKyhJP0Y/Xy5RRShudWxsLGIpOl8uUEUobnVsbCxiKToiIikpfSkpO0orPV8uQkQoe2F1dG9jYXBpdGFsaXplOiJvZmYiLERhOl8uUSgiUDdnbDNiIiksdGE6Xy5RKCJZUHFqYmYiKSx0eXBlOkY/InRleHQiOiJwYXNzd29yZCIsc3BlbGxjaGVjazoiZmFsc2UiLExwOkQsbGFiZWw6ZCxpZDpudWxsIT1lP2U6IiIsbmFtZTpudWxsIT1rP2s6IiIsVGY6ITAscmc6ITAsZGlyOiJsdHIiLGF1dG9mb2N1czpwLGF1dG9jb21wbGV0ZTpBLGhpbnQ6bnVsbCE9bj9uOiIiLEVqOigwLF8uRHUpKCdhdXRvY29ycmVjdD0ib2ZmIicpLGVtYmVkczooMCxfLlQpKE0pfSxiKTtiPSgwLF8uSCkoSisiPC9kaXY+Iik7cmV0dXJuIGEoYytiKyI8L2Rpdj4iKX07CnZhciBVRTtfLlNFPV8uRXYoIldNbUxvYyIpO18uVEU9Xy5FdigibXM1djEiKTtVRT1fLkV2KCJFODU1a2MiKTt2YXIgQWhhPVYoImEyd0pLZSIsImEyd0pLZSIsW10pO18uVkU9ZnVuY3Rpb24oYSl7Xy5qeS5jYWxsKHRoaXMsYS5aYSk7dGhpcy53cT1hLmNvbnRyb2xsZXIuWWg7dGhpcy5hPV8uVXcodGhpcy5hYSgpLCIuekhRa0JmIil9O18ucGEoXy5WRSxfLmp5KTtfLlZFLlRhPWZ1bmN0aW9uKCl7cmV0dXJue2NvbnRyb2xsZXI6e1loOiJiYzlCbiJ9fX07Xy5WRS5wcm90b3R5cGUuakg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53cX07Xy5XKF8uVkUucHJvdG90eXBlLCJxWFVDS2IiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuakh9KTtfLlZFLnByb3RvdHlwZS5Hdz1mdW5jdGlvbigpe3RoaXMuSGEoVUUpO3JldHVybiExfTtfLlcoXy5WRS5wcm90b3R5cGUsImlEdTNRYyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Hd30pO18uVkUucHJvdG90eXBlLnBQPWZ1bmN0aW9uKCl7dGhpcy5IYShfLlNFLHRoaXMuYSl9O18uVyhfLlZFLnByb3RvdHlwZSwiTFRiMUFmIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnBQfSk7Xy56QShBaGEsXy5WRSk7CnZhciBCaGE9VigiWTcxN1hiIiwiWTcxN1hiIixbXy56XSk7dmFyIFdFPWZ1bmN0aW9uKGEpe1dFLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYT1hLmNvbnRyb2xsZXIuenY7dGhpcy5iPWEuY29udHJvbGxlci5GRn07Xy5tKFdFLF8uankpO18uWChCaGEse2lhOntkYTpfLnp9LGNvbnRyb2xsZXI6e0ZGOiJ0RllTZGUiLHp2OiJ3S3R3Y2MifX0sV0UpO1dFLnByb3RvdHlwZS5JZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEub2EoKX07Xy5XKFdFLnByb3RvdHlwZSwicGE1a3djIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkllfSk7V0UucHJvdG90eXBlLnhIPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07Xy5XKFdFLnByb3RvdHlwZSwicThRYXFiIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnhIfSk7V0UucHJvdG90eXBlLkNnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5vYSgpfTtfLlcoV0UucHJvdG90eXBlLCJLUUYzZGQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQ2d9KTsKV0UucHJvdG90eXBlLnFlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hLm9hKCk7cmV0dXJuIF8uRWIoYSk/MTowfTtfLlcoV0UucHJvdG90eXBlLCJhZHhZdmUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucWV9KTtXRS5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oKXt0aGlzLmEuQWEobnVsbCl9O18uVyhXRS5wcm90b3R5cGUsIlFrYU9uYyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rZH0pO1dFLnByb3RvdHlwZS5nZXRFcnJvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZ2V0RXJyb3IoKXx8IiJ9O18uVyhXRS5wcm90b3R5cGUsIlljZDhnZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRFcnJvcn0pO1dFLnByb3RvdHlwZS5RdT1mdW5jdGlvbigpe3RoaXMua2QoKX07Xy5XKFdFLnByb3RvdHlwZSwicDBjZUtjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlF1fSk7CnZhciBDaGE9VigiUjFRdGNjIiwiUjFRdGNjIixbXSk7Xy5YRT1mdW5jdGlvbihhKXtfLlhFLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuZj0hMTt0aGlzLnJhKCJnQ2Y5NGMiKTt0aGlzLmI9dGhpcy5yYSgiV3hiNHdjIik7dGhpcy5hPXRoaXMucmEoInNDNnJwZiIpO3RoaXMuYz10aGlzLnJhKCJOb3dKemIiKTt0aGlzLmc9dGhpcy5yYSgiYXY5a2tkIil9O18ubShfLlhFLF8uankpO18uWChDaGEse30sXy5YRSk7Xy5YRS5wcm90b3R5cGUuQ2E9ZnVuY3Rpb24oKXt0aGlzLm9hKCkmJnRoaXMuYi5qYigiWHFNOFNkIil9O18uVyhfLlhFLnByb3RvdHlwZSwiV1lkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkNhfSk7Xy5YRS5wcm90b3R5cGUuV2g9ZnVuY3Rpb24oKXt0aGlzLmIuamIoIlhxTThTZCIpO3RoaXMuZiYmdGhpcy5vYSgpJiZ0aGlzLmtkKCk7dGhpcy5jLmpiKCJHbXZLdGMiKTt0aGlzLmFhKCkuamIoIk5nOXJpZCIpfTtfLlcoXy5YRS5wcm90b3R5cGUsIkp0MUVYIixmdW5jdGlvbigpe3JldHVybiB0aGlzLldofSk7Cl8uWEUucHJvdG90eXBlLk9uPWZ1bmN0aW9uKCl7dGhpcy5vYSgpfHx0aGlzLmIuaWIoIlhxTThTZCIpO3RoaXMuYy5pYigiR212S3RjIik7dGhpcy5hYSgpLmliKCJOZzlyaWQiKX07Xy5XKF8uWEUucHJvdG90eXBlLCJmcGZURWUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT259KTtfLlhFLnByb3RvdHlwZS5QdT1mdW5jdGlvbigpe3RoaXMub2EoKT90aGlzLmIuamIoIlhxTThTZCIpOnRoaXMuYi5pYigiWHFNOFNkIik7dGhpcy5IYShfLkV2KCJzUHZqOGUiKSx0aGlzLm9hKCkpfTtfLlcoXy5YRS5wcm90b3R5cGUsIkZEU0VYYyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QdX0pO18uWEUucHJvdG90eXBlLmhhc0ZvY3VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS51KCk9PT13aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudH07Xy5XKF8uWEUucHJvdG90eXBlLCJtTkZMOSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNGb2N1c30pO18uWEUucHJvdG90eXBlLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIF8uWncodGhpcy5hKX07Cl8uVyhfLlhFLnByb3RvdHlwZSwiSHZuSzJiIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm9hfSk7Xy5nPV8uWEUucHJvdG90eXBlO18uZy5tYj1mdW5jdGlvbihhKXtfLiR3KHRoaXMuYSxhKX07Xy5nLmpiPWZ1bmN0aW9uKGEpe3RoaXMuYWEoKS5qYihhKX07Xy5nLmliPWZ1bmN0aW9uKGEpe3RoaXMuYWEoKS5pYihhKX07Xy5nLmRjPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFhKCkuZGMoYSl9O18uZy5hYj1mdW5jdGlvbihhLGIpe3RoaXMuYWEoKS5hYihhLGIpfTtfLmcuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLiRiKCl9O18uVyhfLlhFLnByb3RvdHlwZSwiWWNkOGdlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVycm9yfSk7Xy5YRS5wcm90b3R5cGUuQWE9ZnVuY3Rpb24oYSl7dGhpcy5mPSEwO18uWXcodGhpcy5nLGEpO3RoaXMuYy5hYigiSWU2dmRmIiwhMCl9O18uWEUucHJvdG90eXBlLkxjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZn07Cl8uVyhfLlhFLnByb3RvdHlwZSwiSmo2TGFlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkxjfSk7Xy5YRS5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oKXt0aGlzLmY9ITE7dGhpcy5jLmFiKCJJZTZ2ZGYiLCExKTtfLll3KHRoaXMuZywiIil9O18uVyhfLlhFLnByb3RvdHlwZSwiUWthT25jIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmtkfSk7Xy5YRS5wcm90b3R5cGUuRmU9ZnVuY3Rpb24oKXt2YXIgYT0nb3B0aW9uW3ZhbHVlPSInK3RoaXMub2EoKSsnIl0nO3JldHVybiBfLlR3KHRoaXMuYWEoKSxhKX07Xy5XKF8uWEUucHJvdG90eXBlLCJVTzFLYWUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRmV9KTtfLlhFLnByb3RvdHlwZS5yYj1mdW5jdGlvbihhKXthP18uYngodGhpcy5hLCJkaXNhYmxlZCIpOnRoaXMuYS5SYSgiZGlzYWJsZWQiLCEwKX07CnZhciBZRT1mdW5jdGlvbigpe3JldHVybiBfLkwoIlNob3cgcGFzc3dvcmQiKX0sWkU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJIaWRlIHBhc3N3b3JkIil9LERoYT1mdW5jdGlvbigpe3JldHVybiBfLkwoIkVudGVyIGEgcGFzc3dvcmQiKX0sRWhhPWZ1bmN0aW9uKGEpe2E9YXx8e307YT1hLmhBO2E9Xy5IRShuZXcgXy5FRSgie01JTl9MRU5HVEhfMSxwbHVyYWwsPTB7VGhhdCBwYXNzd29yZCBpcyB0b28gc2hvcnR9PTF7VGhhdCBwYXNzd29yZCBpcyB0b28gc2hvcnR9b3RoZXJ7VXNlIHtNSU5fTEVOR1RIXzJ9IGNoYXJhY3RlcnMgb3IgbW9yZSBmb3IgeW91ciBwYXNzd29yZH19Iikse01JTl9MRU5HVEhfMTphLE1JTl9MRU5HVEhfMjoiIithfSk7cmV0dXJuIF8uTCgiIithKX0sRmhhPWZ1bmN0aW9uKGEpe2E9YS5tYXhMZW5ndGg7YT1fLkhFKG5ldyBfLkVFKCJ7TUFYX0xFTkdUSF8xLHBsdXJhbCw9MHtUaGF0IHBhc3N3b3JkIGlzIHRvbyBsb25nfT0xe1RoYXQgcGFzc3dvcmQgaXMgdG9vIGxvbmd9b3RoZXJ7VXNlIHtNQVhfTEVOR1RIXzJ9IGNoYXJhY3RlcnMgb3IgZmV3ZXIgZm9yIHlvdXIgcGFzc3dvcmR9fSIpLAp7TUFYX0xFTkdUSF8xOmEsTUFYX0xFTkdUSF8yOiIiK2F9KTtyZXR1cm4gXy5MKCIiK2EpfSxHaGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJPbmx5IHVzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgY29tbW9uIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMiKX0sSGhhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiWW91ciBwYXNzd29yZCBjYW4ndCBzdGFydCBvciBlbmQgd2l0aCBhIGJsYW5rIHNwYWNlIil9LEloYT1mdW5jdGlvbigpe3JldHVybiBfLkwoIlVzZSBhIG1peCBvZiBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgc3ltYm9scyB0byBjcmVhdGUgYSBzdHJvbmdlciBwYXNzd29yZCIpfSxKaGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJUcnkgYWdhaW4gd2l0aCBhIHBhc3N3b3JkIHlvdSBoYXZlbid0IHVzZWQgYmVmb3JlIil9LEtoYT1mdW5jdGlvbigpe3JldHVybiBfLkwoIkNvbmZpcm0geW91ciBwYXNzd29yZCIpfSxMaGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJUaG9zZSBwYXNzd29yZHMgZGlkbid0IG1hdGNoLiBUcnkgYWdhaW4uIil9OwpfLiRFPWZ1bmN0aW9uKGEsYil7YT1hfHx7fTt2YXIgYz1hLkZyLGQ9YS53dixlPWEuWVgsZj1hLmhpbnQsaz1hLktvLG49YS51dSxwPWEuYXV0b2NvbXBsZXRlO2E9Xy5IO249JzxkaXYganNuYW1lPSInK18uVSgicWdJZzMiKSsnIiBqc2NvbnRyb2xsZXI9IicrXy5VKCJPT0ExVWUiKSsnIiBqc2FjdGlvbj0iJytfLlUoIkpJYnVRYyIpKyI6IitfLlUoIm5BRjE4ZSIpKyIoIitfLlUoImNGYUxUYyIpKycpIiBjbGFzcz0iJytfLlUoIk5UQjdzZiIpKyhuPyIgIitfLlUoIkRiUW5JZSIpOiIiKSsnIj48ZGl2IGNsYXNzPSInK18uVSgiWE55ZlBiIikrJyI+Jzt2YXIgQT1fLlEoIlBhc3N3ZCIpLEQ9Xy5RKCJwYXNzd2QiKTtkPWQ/IiIrZDoiIisoMCxfLkgpKCJQYXNzd29yZCIpO2Q9bitfLlJFKHtuYW1lOkEsaWQ6RCxsYWJlbDpfLlEoIiIrZCksRGE6Xy5RKCJMSzBpOSIpLHRhOl8uUSgidlpTVElmIiksYXV0b2NvbXBsZXRlOnAseW46ITB9LGIpKyc8ZGl2IGNsYXNzPSInK18uVSgia1ROcmlmIikrCiciIGpzbmFtZT0iJytfLlUoImN5ekxhYyIpKyciIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIj4nO2Y9Zj9fLksoZik6KDAsXy5IKSgiQXQgbGVhc3QgOCBjaGFyYWN0ZXJzIik7Zj1kK2YrIjwvZGl2PiI7Yz8oYz1fLlEoIkNvbmZpcm1QYXNzd2QiKSxkPV8uUSgiY29uZmlybS1wYXNzd2QiKSxlPWU/IiIrZToiIisoMCxfLkgpKCJDb25maXJtIHBhc3N3b3JkIiksZT1fLlJFKHtuYW1lOmMsaWQ6ZCxsYWJlbDpfLlEoIiIrZSksRGE6Xy5RKCJMSzBpOSIpLHRhOl8uUSgiWmpTS2siKSxhdXRvY29tcGxldGU6cCx5bjohMH0sYikpOmU9IiI7ZT1mK2UrJzwvZGl2PjxkaXYgY2xhc3M9IicrXy5VKCJXQkNvc2UiKSsnIj4nO3A9Xy5RKCIiK1lFKG51bGwsYikpO2I9Xy5RKCIiKyhrP1lFKG51bGwsYik6IiIpKTtrPSc8c3BhbiBjbGFzcz0iJytfLlUoIkpJenFuZSIpKyIgIitfLlUoInk3VDRMIikrJyI+JztjPSgwLF8uSCkoJzxzdmcgZmlsbD0iIzAwMDAwMCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiIvPjwvc3ZnPicpOwprPWsrYysnPC9zcGFuPjxzcGFuIGNsYXNzPSInK18uVSgiSkl6cW5lIikrIiAiK18uVSgiSU1WZmlmIikrJyI+JztjPSgwLF8uSCkoJzxzdmcgZmlsbD0iIzAwMDAwMCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgN2MyLjc2IDAgNSAyLjI0IDUgNSAwIC42NS0uMTMgMS4yNi0uMzYgMS44M2wyLjkyIDIuOTJjMS41MS0xLjI2IDIuNy0yLjg5IDMuNDMtNC43NS0xLjczLTQuMzktNi03LjUtMTEtNy41LTEuNCAwLTIuNzQuMjUtMy45OC43bDIuMTYgMi4xNkMxMC43NCA3LjEzIDExLjM1IDcgMTIgN3pNMiA0LjI3bDIuMjggMi4yOC40Ni40NkMzLjA4IDguMyAxLjc4IDEwLjAyIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNSAxLjU1IDAgMy4wMy0uMyA0LjM4LS44NGwuNDIuNDJMMTkuNzMgMjIgMjEgMjAuNzMgMy4yNyAzIDIgNC4yN3pNNy41MyA5LjhsMS41NSAxLjU1Yy0uMDUuMjEtLjA4LjQzLS4wOC42NSAwIDEuNjYgMS4zNCAzIDMgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjU1IDEuNTVjLS42Ny4zMy0xLjQxLjUzLTIuMi41My0yLjc2IDAtNS0yLjI0LTUtNSAwLS43OS4yLTEuNTMuNTMtMi4yem00LjMxLS43OGwzLjE1IDMuMTUuMDItLjE2YzAtMS42Ni0xLjM0LTMtMy0zbC0uMTcuMDF6Ii8+PC9zdmc+Jyk7IHJldHVybiBhKGUrXy5hRSh7dGE6ImNGYUxUYyIsZ2M6cCx2aDpiLGljb246KDAsXy5UKShrK2MrIjwvc3Bhbj4iKX0pKyI8L2Rpdj48L2Rpdj4iKX07Cl8uYUY9ZnVuY3Rpb24oYSl7dGhpcy5iPV8ucihhLDMpO2E9Xy53KGEsTkUsNCk7dGhpcy5hPXtFbWFpbDphLmdldEVtYWlsKCksRmlyc3ROYW1lOmEuQ2IoKSxMYXN0TmFtZTphLnBjKCksQmlydGhkYXk6Xy5yKGEsNCl9fTtfLmJGPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jfHxfLm9rKCk7Yz1pYyhhLmEpO18ua2MoYyx7UGFzc3dkOmJ9KTtfLlRvKGEuYixmdW5jdGlvbihhKXthPSgwLHdpbmRvdy5wYXJzZUludCkoJG8oYS50YXJnZXQpLDEwKTsoMCx3aW5kb3cuaXNOYU4pKGEpfHw0PGE/YT01OjE+YSYmKGE9MSk7ZC5yZXNvbHZlKGEpfSwiUE9TVCIsVWNhKGMpLnRvU3RyaW5nKCkpO3JldHVybiBkLnlifTsKXy5jRj1mdW5jdGlvbihhKXt0aGlzLm89YTt0aGlzLmc9bmV3IF8uYUYoYSk7dGhpcy5jPXRoaXMuYj0iIjt0aGlzLmE9ITE7dGhpcy5mPV8uaWsoKX07Cl8uY0YucHJvdG90eXBlLnpkPWZ1bmN0aW9uKGEsYil7dHJ5e2lmKDEhPWImJjA9PWEubGVuZ3RoKXJldHVybiB0aGlzLmE9ITEsMDtpZighL15bXHUwMDIwLVx1MDA3RV0qJC8udGVzdChhKSlyZXR1cm4gMztpZigyPT1iJiYhdGhpcy5hKXJldHVybiAwO2lmKGEudHJpbSgpIT1hKXJldHVybiA2O2lmKGEubGVuZ3RoPF8ucih0aGlzLm8sMSkpcmV0dXJuIDE7aWYoYS5sZW5ndGg+Xy5yKHRoaXMubywyKSlyZXR1cm4gMjtpZihhPT10aGlzLmMpcmV0dXJuIDU7aWYoYT09dGhpcy5iKXJldHVybiA0O3RoaXMuYT0hMTtpZigwIT1iKXJldHVybiAwO3ZhciBjPV8ub2soKTtNaGEodGhpcyxhKS50aGVuKGZ1bmN0aW9uKGIpezE+PWI/KHRoaXMuYj1hLHRoaXMuYT0hMCxjLnJlc29sdmUoNCkpOmMucmVzb2x2ZSgwKX0sYy5yZWplY3QsdGhpcyk7cmV0dXJuIGMueWJ9Y2F0Y2goZCl7dGhyb3cgRXJyb3IoIlhhIik7fX07IHZhciBNaGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmYsZD1fLm9rKCk7YS5mPWQueWI7Xy5yayhjLGZ1bmN0aW9uKCl7dGhpcy5mIT1kLnliP2QucmVqZWN0KCJza2lwcGVkIG9ic29sZXRlIik6Xy5iRih0aGlzLmcsYixkKX0sYSk7cmV0dXJuIGQueWJ9Owp2YXIgZEY7bGMoIkEgQVJFQSBCVVRUT04gSEVBRCBJTlBVVCBMSU5LIE1FTlUgTUVUQSBPUFRHUk9VUCBPUFRJT04gUFJPR1JFU1MgU1RZTEUgU0VMRUNUIFNPVVJDRSBURVhUQVJFQSBUSVRMRSBUUkFDSyIuc3BsaXQoIiAiKSk7Cl8uZUY9ZnVuY3Rpb24oYSxiLGMpe18uTWEoYykmJihjPWMuam9pbigiICIpKTt2YXIgZD0iYXJpYS0iK2I7IiI9PT1jfHx2b2lkIDA9PWM/KGRGfHwoZEY9e2F0b21pYzohMSxhdXRvY29tcGxldGU6Im5vbmUiLGRyb3BlZmZlY3Q6Im5vbmUiLGhhc3BvcHVwOiExLGxpdmU6Im9mZiIsbXVsdGlsaW5lOiExLG11bHRpc2VsZWN0YWJsZTohMSxvcmllbnRhdGlvbjoidmVydGljYWwiLHJlYWRvbmx5OiExLHJlbGV2YW50OiJhZGRpdGlvbnMgdGV4dCIscmVxdWlyZWQ6ITEsc29ydDoibm9uZSIsYnVzeTohMSxkaXNhYmxlZDohMSxoaWRkZW46ITEsaW52YWxpZDoiZmFsc2UifSksYz1kRixiIGluIGM/YS5zZXRBdHRyaWJ1dGUoZCxjW2JdKTphLnJlbW92ZUF0dHJpYnV0ZShkKSk6YS5zZXRBdHRyaWJ1dGUoZCxjKX07CnZhciBOaGE9VigiT09BMVVlIiwiT09BMVVlIixbXy56LF8uV3osXy5Zel0pO3ZhciBmRj1mdW5jdGlvbihhKXtmRi4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmY9YS5pYS5kYTt0aGlzLnc9YS5sLm5hdmlnYXRpb247dGhpcy5pPWEubC5yZXF1ZXN0O3RoaXMuYj1hLmNvbnRyb2xsZXIuWWgud3E7YT1hLmNvbnRyb2xsZXJzLnJGO3RoaXMuYT1hLmxlbmd0aD9hWzBdLndxOm51bGw7Xy5nRih0aGlzLDgsMTAwKX0sT2hhO18ubShmRixfLmp5KTtfLlgoTmhhLHtpYTp7ZGE6Xy56fSxsOntuYXZpZ2F0aW9uOl8uV3oscmVxdWVzdDpfLll6fSxjb250cm9sbGVyOntZaDoidlpTVElmIn0sY29udHJvbGxlcnM6e3JGOiJaalNLayJ9fSxmRik7ZkYucHJvdG90eXBlLmc9ODtmRi5wcm90b3R5cGUuYz0tMTtmRi5wcm90b3R5cGUud0g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ifTtfLlcoZkYucHJvdG90eXBlLCJuRmlMTGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud0h9KTtmRi5wcm90b3R5cGUuWkc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTsKXy5XKGZGLnByb3RvdHlwZSwicTB2VEFjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlpHfSk7ZkYucHJvdG90eXBlLiRkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5vYSgpfTtfLlcoZkYucHJvdG90eXBlLCJ5aWRKc2MiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGR9KTtfLmdGPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1uZXcgXy5PRSxlPW5ldyBORTtfLnQoZCwzLCIvUmF0ZVBhc3N3b3JkIik7YS5nPWI7Xy50KGQsMSxiKTthLmM9YztfLnQoZCwyLGMpO18ua2QoZCw0LGUpO2EuamE9bmV3IF8uY0YoZCl9O2ZGLnByb3RvdHlwZS5oaj1mdW5jdGlvbigpe3RoaXMuYi5tYigiIil9O18uVyhmRi5wcm90b3R5cGUsIk9rWHU4ZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oan0pO2ZGLnByb3RvdHlwZS5EaT1mdW5jdGlvbigpe3RoaXMuYS5tYigiIil9O18uVyhmRi5wcm90b3R5cGUsIktDaEFaYiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5EaX0pOwpfLmhGPWZ1bmN0aW9uKGEsYixjKXthLnJhKCJjeXpMYWMiKS5FYigpO2EuYi5BYShiKTtjJiZhLmIuZm9jdXMoKX07Xy5pRj1mdW5jdGlvbihhLGIsYyl7YS5hLkFhKGIpO2MmJmEuYS5mb2N1cygpfTtmRi5wcm90b3R5cGUuUWo9ZnVuY3Rpb24oKXt9O18uVyhmRi5wcm90b3R5cGUsIlh5UWF1ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Ran0pO3ZhciBrRj1mdW5jdGlvbihhLGIpe3ZhciBjPU9oYShhKSxkPSEwLGU9IiI7YS4kZCgpPzAhPWMmJihlPV8uakYoYSxjKSxkPSExKTooZT1fLkcoYS5mLERoYSksZD0hMSk7aWYoIV8uQ2EoYil8fGIpZD9fLmhGKGEsbnVsbCk6ZT8oXy5oRihhLGUsITApLDEhPWMmJjIhPWMmJmEuaGooKSxhLmEmJmEuRGkoKSk6Xy5EQihhLncsImluZm8vdW5rbm93bmVycm9yIik7cmV0dXJuIGR9OwpmRi5wcm90b3R5cGUuemQ9ZnVuY3Rpb24oYSl7YT1fLkNhKGEpP2E6ITA7aWYodGhpcy5hKXtpZihrRih0aGlzLGEpKXt2YXIgYj10aGlzLmEub2EoKSxjPSEwLGQ9IiI7Yj9iIT10aGlzLiRkKCkmJihkPV8uRyh0aGlzLmYsTGhhKSxjPSExKTooZD1fLkcodGhpcy5mLEtoYSksYz0hMSk7aWYoIV8uQ2EoYSl8fGEpYz9fLmlGKHRoaXMsbnVsbCk6KF8uaUYodGhpcyxkLCEwKSx0aGlzLkRpKCkpO3JldHVybiBjfWEmJnRoaXMuRGkoKTtyZXR1cm4hMX1yZXR1cm4ga0YodGhpcyxhKX07T2hhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuJGQoKTthPWEuamEuemQoYiwxKTtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uZWs/KF8ucmsoYSxmdW5jdGlvbigpe30pLDApOmF9OwpfLmpGPWZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UgMTpyZXR1cm4gXy5HKGEuZixFaGEse2hBOmEuZ30pO2Nhc2UgMjpyZXR1cm4gXy5HKGEuZixGaGEse21heExlbmd0aDphLmN9KTtjYXNlIDM6cmV0dXJuIF8uRyhhLmYsR2hhKTtjYXNlIDY6cmV0dXJuIF8uRyhhLmYsSGhhKTtjYXNlIDQ6cmV0dXJuIF8uRyhhLmYsSWhhKTtjYXNlIDU6cmV0dXJuIF8uRyhhLmYsSmhhKTtkZWZhdWx0OnJldHVybiIifX07ZkYucHJvdG90eXBlLmx3PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iLm9hKCk7aWYoYT0hXy5FYihfLlBiKGEpKSYmbnVsbCE9dGhpcy5hKWE9dGhpcy5hLm9hKCksYT1fLkViKF8uUGIoYSkpO3JldHVybiBhJiZ0aGlzLmIuVGIoKX07Xy5XKGZGLnByb3RvdHlwZSwiQjNLT3FlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmx3fSk7ZkYucHJvdG90eXBlLiR2PWZ1bmN0aW9uKCl7Xy5oRih0aGlzLCIiLCExKTtudWxsIT10aGlzLmEmJl8uaUYodGhpcywiIiwhMCl9OwpfLlcoZkYucHJvdG90eXBlLCJIVTYzZmMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZ9KTtmRi5wcm90b3R5cGUuZWs9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJhKCJjRmFMVGMiKSxiPSF0aGlzLmFhKCkuZGMoImVPMlpmZCIpLGM9Xy5reChhLmdldERhdGEoInRvb2x0aXAiKSk7dGhpcy5hYSgpLmFiKCJlTzJaZmQiKTtfLmVGKGEudSgpLCJsYWJlbCIsXy5HKHRoaXMuZixiP1pFOllFKSk7YyYmZXgoYSwidG9vbHRpcCIsXy5HKHRoaXMuZixiP1pFOllFKSk7dGhpcy5iLmVrKCk7bnVsbCE9dGhpcy5hJiZ0aGlzLmEuZWsoKX07Xy5XKGZGLnByb3RvdHlwZSwibkFGMThlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVrfSk7Cl8udngoZnVuY3Rpb24oKXt9LHF4KCJkM3laR2UiLCJkM3laR2UiLFtdKSk7dmFyIGxGPVYoInhUb2J3YyIsInhUb2J3YyIsW18uV0MsXy5WQyxyQ10pO3ZhciBtRj1mdW5jdGlvbihhKXttRi4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmI9YS54YS5mYTt0aGlzLmE9YS54YS5zZXR1cDthPXRoaXMuZj1hLmwuZ007dmFyIGI9dGhpcy5iLGM9Xy5WaCh0aGlzLmEuYSksZD1fLnIodGhpcy5hLmEsMjEpO18uJHkoYS5jLElmYSk7dmFyIGU9bmV3IF8ucGksZj1fLllDKGIpO2lmKGYpe3ZhciBrPV8ucihmLDEpO18udChlLDcsayk7az1fLmhkKGYsMyk7Xy50KGUsOSxrfHxbXSk7Xy5yKGYsNCkmJihrPV8ucihmLDQpLF8udChlLDExLGspKTtfLnYoZiwyLCIiKSYmKGs9Xy52KGYsMiwiIiksXy50KGUsOCxrKSk7Xy5rZChlLDEyLGYpfShmPV8udihiLmEsMTIsIiIpKSYmXy50KGUsMTAsZik7KGY9Xy52KGIuYSwyMSwwKSkmJl8udChlLDEzLGYpO18udChlLDYsYyk7KGM9Xy52KGIuYSw0NiwhMSkpJiZfLnQoZSwxNSxjKTtpZihjPV8uY2UoYi5hKSlmb3IoZj0wO2Y8Xy5ZZChjKS5sZW5ndGg7ZisrKXt2YXIgbj1fLllkKGMpW2ZdOwprPV8ucihuLDEpO249bi5vYSgpO2EuYS5jLnNldChrLG4pfV8uYUQoYikmJihjPV8uYUQoYiksYS5hLmMuc2V0KCJjb250aW51ZSIsYykpO18ueXMoYS5hLmEsbmV3IHFDKGEuZixlKSk7ZT1uZXcgQnooXy52KGIuYSw1MSwhMSkpO18ueXMoYS5hLmEsZSk7ZD1uZXcgRnooZCk7Xy55cyhhLmEuYSxkKTtpZihlPV8ucihiLmEsNDgpKWEuYi53PWU7ZT1hLmI7Yz1fLnYoYi5hLDEyLCIiKTtmPV8udihiLmEsNTgsIiIpO2s9Xy5yKGIuYSw4KTtuPWUuYy5nZXRDdXJyZW50VmlldygpO3ZhciBwPW5ldyBfLmFhKF8ub0MobikpLEE9ITE7ayYmIWUuaS5sb2NhdGlvbi5wYXRobmFtZS5lbmRzV2l0aChrKSYmKF8uY3AocCxfLmdDKGUsaykpLEE9ITApO2MmJihfLkNwKHAsImZsb3dOYW1lIixjKSxBPSEwKTtmJiYoXy5DcChwLCJmbG93RW50cnkiLGYpLEE9ITApO0EmJl8ubkYoZS5jLG4uYWEoKSxwLnRvU3RyaW5nKCkpO2UuYS5wdXNoKF8uZ0MoZSx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKTsgYS5iLmY9ZDthLmYuWHUoYik7Xy5QdyhhLmcuY2MoKS5JYigpLFdnYSl9O18ubShtRixfLmp5KTtfLlgobEYse3hhOntmYTpfLldDLHNldHVwOl8uVkN9LGw6e2dNOnJDfX0sbUYpOwpfLm9GPV8uRXYoIkVKaDNOIik7Xy5wRj1fLkV2KCJEZVpLdmYiKTt2YXIgckY9ZnVuY3Rpb24oKXt0aGlzLmE9W107cUYodGhpcyl9LHFGPWZ1bmN0aW9uKGEpe2EuYj17fTsoMCxfLmFiKShhLmEsZnVuY3Rpb24oYSl7dmFyIGI9YS5vKCksZD10aGlzLmJbYl07ZHx8KGQ9W10sdGhpcy5iW2JdPWQpO2QucHVzaChhKX0sYSl9O3JGLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8dGhpcy5hLmxlbmd0aDsrK2Mpe2E6e3ZhciBkPXRoaXMuYVtjXTt2YXIgZT1iO2lmKCFlfHxkLmEubGVuZ3RoPGUubGVuZ3RofHxkLmYhPWEpZD12b2lkIDA7ZWxzZXtmb3IodmFyIGY9e30saz0wO2s8ZC5hLmxlbmd0aDsrK2spe3ZhciBuPWQuYVtrXTtpZihfLkFiKG4sIjoiKSluPW4uc3Vic3RyaW5nKDEpLGZbbl09ZVtrXTtlbHNlIGlmKG4hPWVba10pe2Q9dm9pZCAwO2JyZWFrIGF9fWYudmlldz1kLmM7ZD1mfX1pZihkKXJldHVybiBkfX07IHJGLnByb3RvdHlwZS5RYz1mdW5jdGlvbihhKXthPXRoaXMuYlthXTtmb3IodmFyIGI9MCxjPTA7YzxhLmxlbmd0aDsrK2Mpe3ZhciBkPWFbY10sZTtpZigoZT0wPT1kLmI/LTE6MCkmJighZnx8ZT5iKSl7dmFyIGY9ZDtiPWV9fXJldHVybiBmP2YuUWModm9pZCAwKTpudWxsfTsKdmFyIHNGPWZ1bmN0aW9uKGEsYil7Zm9yKGI9Yi5zcGxpdCgiLyIpO2IubGVuZ3RoJiYhYlswXTspYi5zaGlmdCgpO2Zvcig7Yi5sZW5ndGgmJiFiW2IubGVuZ3RoLTFdOyliLnBvcCgpO3RoaXMuZj1iLnNoaWZ0KCl8fCIiO3RoaXMuYT1iO3RoaXMuYz1hO3RoaXMuZz17fTtmb3IoYT10aGlzLmI9MDthPHRoaXMuYS5sZW5ndGg7KythKWI9dGhpcy5hW2FdLF8uQWIoYiwiOiIpJiYoKyt0aGlzLmIsYj1iLnN1YnN0cmluZygxKSx0aGlzLmdbYl09YSl9O3NGLnByb3RvdHlwZS5RYz1mdW5jdGlvbihhKXt2YXIgYj1fLnFiKHRoaXMuZix0aGlzLmEpO2lmKCF0aGlzLmIpcmV0dXJuIGI7aWYoIWEpdGhyb3cgRXJyb3IoIllhIik7aWYoIWEpdGhyb3cgRXJyb3IoIlphIik7dmFyIGM9MDtfLiRiKGEsZnVuY3Rpb24oYSxlKXtlPXRoaXMuZ1tlXTtfLkVhKGUpJiYoYlsxK2VdPWEsKytjKX0sdGhpcyk7aWYodGhpcy5iIT1jKXRocm93IEVycm9yKCIkYWAiK3RoaXMuYisiYCIrYyk7cmV0dXJuIGJ9OyBzRi5wcm90b3R5cGUubz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN9Owp2YXIgdEY9ZnVuY3Rpb24oYSxiKXtUbi5jYWxsKHRoaXMsYSxiKX07Xy5tKHRGLFRuKTt2YXIgdUY9e30sdkY9bmV3IHJGO25ldyByRjtuZXcgdEYobmV3IFZuKCJpY192aWV3X3R5cGUiKSwiX19leGNsdWRlZF9fIik7dmFyIFBoYT1mdW5jdGlvbigpe307dmFyIHdGPWZ1bmN0aW9uKGEpe3RoaXMuYT1hfTt3Ri5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuYS50aGVuKGEsYixjKX07dmood0YpO3ZhciB4Rj1mdW5jdGlvbigpe18uQ2wuY2FsbCh0aGlzKTt0aGlzLnc9W119O18ubSh4RixfLkNsKTt4Ri5wcm90b3R5cGUuc2hvd05vdGlmaWNhdGlvbj1mdW5jdGlvbihhKXthLmYoKT8odGhpcy5hJiZ0aGlzLmEuZGlzcG9zZSgpLHRoaXMuYT1hLHlGKHRoaXMpKTp0aGlzLmR1KCl9O3hGLnByb3RvdHlwZS5kdT1mdW5jdGlvbihhKXthJiZhIT10aGlzLmF8fCh0aGlzLmEmJih6Rih0aGlzKSxBRih0aGlzKSx0aGlzLmEmJnRoaXMuYS5kaXNwb3NlKCksdGhpcy5hPW51bGwpLHlGKHRoaXMsITApLDA8dGhpcy53Lmxlbmd0aD90aGlzLmY9MToyPT10aGlzLmYmJih0aGlzLmY9MykpfTt4Ri5wcm90b3R5cGUuaT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYTthJiZ0aGlzLmImJnRoaXMuYi5zaG93Tm90aWZpY2F0aW9uKGEsYS5vKCkpO0FGKHRoaXMpfTsKdmFyIHlGPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yj9hLmphOmEuYTt6RihhKTtBRihhKTtjPyhhLmImJmEuYi5zaG93Tm90aWZpY2F0aW9uKGMpLGEuZj1hLmE/MD09YS53Lmxlbmd0aD8yOjM6MCxifHwtMT09Yy5hKCl8fChhLm89YXAoImFiIixhLmR1LGMuYSgpLGEpKSwhYiYmMDw9Yy5iKCkmJihhLmM9YXAoImFiIixhLmksYy5iKCksYSkpKTooYS5iJiZhLmIuZHUoKSxhLmY9MCl9LHpGPWZ1bmN0aW9uKGEpe2EubyYmYnAoYS5vKTthLm89bnVsbH0sQUY9ZnVuY3Rpb24oYSl7YS5jJiZicChhLmMpO2EuYz1udWxsfTt4Ri5wcm90b3R5cGUub2I9ZnVuY3Rpb24oKXt4Ri4kLm9iLmNhbGwodGhpcyk7ekYodGhpcyk7QUYodGhpcyk7dGhpcy5hJiZ0aGlzLmEuZGlzcG9zZSgpfTsKdmFyIGVhPWZ1bmN0aW9uKGEpe3JldHVybiBfLlBhKGEpJiZfLkNhKGEubGYpJiZhLmxmIGluc3RhbmNlb2YgYmomJl8uQ2EoYS5UQikmJighXy5DYShhLkx2KXx8YS5MdiBpbnN0YW5jZW9mIF8ucSk/ITA6ITF9LFFoYT1mdW5jdGlvbihhKXt2YXIgYj17fSxjO2ZvcihjIGluIGEpe3ZhciBkPW51bGwhPWFbY10uVEI/YVtjXS5UQjoiZGF0YSI7ZCBpbiBifHwoYltkXT17fSk7YltkXVtjXT1hW2NdfWE9e307Zm9yKGQgaW4gYilhW2RdPWJbZF07cmV0dXJuIGF9Owp2YXIgQkY9ZnVuY3Rpb24oYSxiKXtfLk9hKGIpfTtfLm0oQkYsUGhhKTt2YXIgUmhhPWZ1bmN0aW9uKCl7fTt2YXIgU2hhLFRoYSxERjtfLkNGPWZ1bmN0aW9uKGEsYil7dGhpcy5mPWE7dGhpcy53PWI7dGhpcy5nPW5ldyBSaGE7dGhpcy5iPW5ldyB3aSgiYiMiK3RoaXMuZixiKTt0aGlzLmM9bmV3IHRGKFNoYSx0aGlzLmYucmVwbGFjZSgvOi9nLCJfIikrIl92dGkiKX07U2hhPW5ldyBWbigiYWNfdmlld190eXBlcyIpO1RoYT1uZXcgZnVuY3Rpb24oKXt9O0RGPW5ldyBfLnhuO18uQ0YucHJvdG90eXBlLm89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jfTtfLkNGLnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEpe18uT2EoYSk7b2VhKHtpZDp0aGlzLmIudG9TdHJpbmcoKSxjYWxsYmFjazooMCxfLmwpKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBCRih0aGlzLGEpfSx0aGlzKX0pfTsKXy5DRi5wcm90b3R5cGUucmVnaXN0ZXI9ZnVuY3Rpb24oKXt2YXIgYT1bXTt0aGlzLmcuYSYmKGEucHVzaCh0aGlzLmcuYSksXy52YihhKSk7dmFyIGI9dGhpcy5mLnNwbGl0KCIvIilbMF0sYz1bXTtERi5jb250YWlucyhiKXx8KGM9W2JdLERGLmFkZChiKSk7YXQoe1pjOlt7aWQ6dGhpcy5iLnRvU3RyaW5nKCksUGw6dGhpcy53fV0sdmlld3M6W3t0eXBlOnRoaXMuYyxQbDp0aGlzLncsVnA6dGhpcy5iLnRvU3RyaW5nKCl9XSxoaXN0b3J5OntZTjpUaGEsV086Y30sYTphfSk7YT10aGlzLmM7Yj1uZXcgc0YoYSx0aGlzLmYpO3VGW2FdPWI7dkYuYT1fLnFiKHZGLmEsYik7cUYodkYpfTsKdmFyIFVoYSxWaGE7Xy5FRj1mdW5jdGlvbihhLGIpe3JldHVybiBVaGEobmV3IF8uQ0YoYSxiKSl9O1VoYT1mdW5jdGlvbihhKXtWcyhmdW5jdGlvbigpe2EucmVnaXN0ZXIoKX0pO3ZhciBiPWEubygpO1ZoYS5hZGQoYik7cmV0dXJuIGF9O1ZoYT1uZXcgXy54bjtfLldoYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiaW5pdGlhbHBhZ2Vfdmlld19hcGlfcGF0aCIsImluaXRpYWxwYWdlX3ZpZXciKTtfLk8oIloiLCIiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJTaWduIGluIHRvIEdvb2dsZSBhcHBzIGFuZCBTYWZhcmkiKX0pO18uTygiJCIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoInRvIHNpZ24gaW4gdG8gR29vZ2xlIGFwcHMgYW5kIFNhZmFyaSIpfSk7Xy5GRj1mdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuQmssYz1hLlFnLGQ9YS5hY3Rpb25zLGU9YS5KZixmPWEuRGEsaz1hLnRhLG49YS5vVyxwPWEuT0QsQT1hLm9WLEQ9YS4keDthPWEud247cmV0dXJuKDAsXy5IKSgnPGRpdiBjbGFzcz0iJytfLlUoIklxS2RBZCIpKyIgIitfLlUoImJ4UEFZZCIpKyhhPyIgIitfLlUoIlBXb2ZlZSIpOiIiKSsoZj8iICIrXy5VKGYpOiIiKSsnIicrKGs/JyBqc25hbWU9IicrXy5VKGspKyciJzoiIikrIj4iKyhiPyc8ZGl2IGNsYXNzPSInK18uVSgiVmtScWplIikrIiAiK18uVSgiVXM3ZldlIikrKG4/IiAiK18uVShuKToiIikrJyI+JytfLksoYikrIjwvZGl2PiI6IiIpKyhlPyc8dWwgY2xhc3M9IicrXy5VKCJzSXpuVGUiKSsoRD8iICIrXy5VKEQpOiIiKSsnIj4nK18uSyhlKSsiPC91bD4iOiIiKSsoZD8nPHVsIGNsYXNzPSInK18uVSgiRUFDYWViIikrIiAiK18uVSgiVXM3ZldlIikrKHA/IiAiK18uVShwKToiIikrJyI+JytfLksoZCkrIjwvdWw+IjoKIiIpKyhjPyc8ZGl2IGNsYXNzPSInK18uVSgiV0hnTFFlIikrIiAiK18uVSgiVXM3ZldlIikrKEE/IiAiK18uVShBKToiIikrJyI+JytfLksoYykrIjwvZGl2PiI6IiIpKyI8L2Rpdj4iKX07Cl8uR0Y9ZnVuY3Rpb24oYSl7dmFyIGI9YS5pY29uLGM9YS50ZXh0LGQ9YS50YSxlPWEuRGEsZj1hLk52LGs9YS5ldSxuPWEuQXcscD1hLmRnLEE9YS5hO2E9YS5oZDtyZXR1cm4oMCxfLkgpKCc8bGkgY2xhc3M9IicrXy5VKCJDNXVBRmMiKSsoZj8iICIrXy5VKGYpOiIiKSsnIj48ZGl2IGNsYXNzPSInK18uVSgiVG52T0NlIikrIiAiK18uVSgiazZaajhkIikrKGU/IiAiK18uVShlKToiIikrJyInKyhwPycgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCInOiIiKSsoZD8nIGpzbmFtZT0iJytfLlUoZCkrJyInOiIiKSsoYT8iICIrXy5KdShhKToiIikrJz48ZGl2IGNsYXNzPSInK18uVSgid0R6anVjIikrKEE/IiAiK18uVSgibDhlVkgiKToiIikrKGs/IiAiK18uVShrKToiIikrJyIgYXJpYS1oaWRkZW49InRydWUiPicrXy5LKGIpKyc8L2Rpdj48ZGl2IGNsYXNzPSInK18uVSgidmRFN09jIikrKG4/IiAiK18uVShuKToiIikrJyI+JytfLksoYykrIjwvZGl2PjwvZGl2PjwvbGk+Iil9OyBfLkhGPWZ1bmN0aW9uKGEpe3ZhciBiPWEuY29udGVudCxjPWEudGEsZD1hLkRhLGU9YS5QYTthPWEuaGQ7cmV0dXJuKDAsXy5IKSgnPGJ1dHRvbiBjbGFzcz0iJytfLlUoInE0VVl4YiIpKyhkPyIgIitfLlUoZCk6IiIpKyciIGpzbmFtZT0iJytfLlUoYykrJyInKyhlPycganNhY3Rpb249IicrXy5VKGUpKyciJzoiIikrKGE/IiAiK18uSnUoYSk6IiIpKyI+IitfLksoYikrIjwvYnV0dG9uPiIpfTsKXy5JRj1mdW5jdGlvbihhLGIpe2E9YXx8e307bnVsbD09YS5NZ3x8Xy5NYShhLk1nKTtudWxsPT1hLnFofHxfLk1hKGEucWgpO251bGw9PWEuRWt8fF8uTWEoYS5Fayk7dmFyIGM9YS5hY3Rpb25zLGQ9YS5EbSxlPWEuQWksZj1hLlBELGs9YS5RRCxuPWEuVkQscD1hLlVELEE9YS5SRCxEPV8uSCxGPWEuRGEsST1fLlEoInBnZ1E1ZSIpLEo9Xy5RKCJYUW9XcmIiKTtiPSIiK18uUCgiYWEiLCIiLCExKShhLGIpO2lmKGQpe2s9az17aGQ6ZixpY29uOmssdGV4dDpuLHRhOnAsaWQ6QX07ZD1rLmhkO3ZhciBNPWsuaWNvbjtmPWsudGV4dDt2YXIgUj1rLnRhO2s9ay5pZDtuPV8uSDtwPV8uUSgiWHJhUTNiIGJMekkzZSIpO0E9Xy5RKCJ3NlZUSGQiKTt2YXIgUz1fLlEoImhQY08xYyIpLGphPV8uUSgiZjNHSVEiKTtSPV8uUSgiIisoUj8iIitSOiJyd2wzcWMiKSk7TT9NPV8uSyhNKTooTT1NPXt3aWR0aDozNn0sTT0oMCxfLkgpKCIiK1NEKF8uTih7Y29sb3I6IiM3NTc1NzUifSxNKSkrIiIpKTsKZD1uKCIiK18uR0Yoe2RnOiEwLERhOnAsTnY6QSxldTpTLEF3OmphLHRhOlIsaWNvbjooMCxfLlQpKCIiK00pLHRleHQ6KDAsXy5UKSgiPHA+IisoZj9fLksoZik6KDAsXy5IKSgiVXNlIGFub3RoZXIgYWNjb3VudCIpKSksaGQ6KDAsXy5EdSkoJ2lkPSInK18uVShudWxsIT1rP2s6ImlkZW50aWZpZXJMaW5rIikrJyInKyhkPyIgIitfLkp1KGQpOiIiKSl9KSsiIil9ZWxzZSBkPSIiO2I9KDAsXy5UKShiK2QpO2U/KGU9Xy5ILGQ9e3RhOl8uUSgibzd2VDliIiksY29udGVudDooMCxfLlQpKCIiKygwLF8uSCkoIlJlbW92ZSBhbiBhY2NvdW50IikpfSxkPSgwLF8uSCkoIjxsaT4iK18uSEYoZCkrIjwvbGk+IiksZT1lKCIiK2QrIiIpKTplPSIiO3JldHVybiBEKCIiK18uRkYoXy5OKHtEYTpGLCR4OkksT0Q6SixKZjpiLGFjdGlvbnM6KDAsXy5UKSgiIitlKyhjPyIgIitfLksoYyk6IiIpKX0sYSkpKyIiKX07Cl8uTygiYWEiLCIiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLkN2JiYoYS5Ddi5qfHxhLkN2KTtudWxsPT1hLkVrfHxfLk1hKGEuRWspO3ZhciBjPWEuRWs7bnVsbD09YS5NZ3x8Xy5NYShhLk1nKTt2YXIgZD1hLk1nO251bGw9PWEucWh8fF8uTWEoYS5xaCk7dmFyIGU9YS5xaDt2YXIgZj1hLkFpO2E9YS54TTt2YXIgaz0iIjtpZihlKWZvcihjPWUubGVuZ3RoLGQ9MDtkPGM7ZCsrKXtiPWVbZF07dmFyIG49Xy5MaChiKTtrKz1fLkpGKHtSZzpuLkVlKCksbmFtZTpuLkpjKCksaWRlbnRpZmllcjpfLnNlKG4pLFRqOmQsYXV0aHVzZXI6Xy5yKG4sMTIpLFV6Ol8ucihiLDMpLHRhOl8uUSgibjFVdVgiKSxBaTpmLGhkOmF9KX1lbHNlIGlmKGQpZm9yKGM9ZC5sZW5ndGgsZT0wO2U8YztlKyspYj1kW2VdLGsrPV8uSkYoe1JnOmIuRWUoKSxuYW1lOmIuSmMoKSxpZGVudGlmaWVyOl8uc2UoYiksVGo6ZSxhdXRodXNlcjpfLnIoYiwxMiksdGE6Xy5RKCJuMVV1WCIpLEFpOmYsaGQ6YX0pOwplbHNlIGlmKGMpZm9yKGsrPV8uSkYoe1JnOmIuRWUoKSxuYW1lOmIuSmMoKSxpZGVudGlmaWVyOmIuZ2V0RW1haWwoKSxhdXRodXNlcjpfLnIoYiwxMiksdGE6Xy5RKCJuMVV1WCIpLGhkOigwLF8uRHUpKChhP18uSnUoYSk6IiIpKycgZGF0YS1wYWdlaWQ9Im5vbmUiJyksVGo6MH0pLGY9Yy5sZW5ndGgsYT0wO2E8ZjthKyspe2U9Y1thXTtiPWUuRWUoKTt2YXIgcD1lLkVNKCksQT1lLmVIKCksRD1lLkxIKCk7bj1hKzE7ZD1fLlEoIm4xVXVYIik7dmFyIEY9KDAsXy5EdSkoJ2RhdGEtcGFnZWlkPSInK18uVShlLkxNKCkpKyciJyk7Xy5NYShEKTtlPUQ7RD1BO0E9IiI7cD0iIisocD8nPHAgcm9sZT0icHJlc2VudGF0aW9uIiBjbGFzcz0iJytfLlUoIndwVzFjYiIpKyciPicrXy5LKHApOiIiKSsoRD8nPHAgY2xhc3M9IicrXy5VKCJ1Umh6YWUiKSsnIiByb2xlPSJoZWFkaW5nIiBhcmlhLWxldmVsPSIyIiBkYXRhLWVtYWlsPSInK18uVShEKSsnIj4nK18uSyhEKToiIikrJzxwIGNsYXNzPSInKwpfLlUoIktseFh4ZCIpKyciPic7aWYoMD09ZS5sZW5ndGgpcCs9IkJyYW5kIEFjY291bnQiO2Vsc2V7RD1lLmxlbmd0aDtmb3IodmFyIEk9MDtJPEQ7SSsrKXt2YXIgSj1lW0ldO3ArPTA8ST8iLCAiOiIiO3N3aXRjaChKKXtjYXNlIDI6cCs9Ikdvb2dsZSsiO2JyZWFrO2Nhc2UgMTpwKz0iWW91dHViZSI7YnJlYWs7Y2FzZSAzOnArPSJHb29nbGUgTXkgQnVzaW5lc3MiO2JyZWFrO2RlZmF1bHQ6cCs9IkJyYW5kIEFjY291bnQifX19QSs9Xy5HRih7ZGc6ITAsRGE6Xy5RKCJYcmFRM2IiKSxOdjpfLlEoInc2VlRIZCIpLGV1Ol8uUSgiaFBjTzFjIiksQXc6Xy5RKCJmM0dJUSIpLHRhOmQsaWNvbjooMCxfLlQpKCIiKyhiPyc8aW1nIHNyYz0iJytfLlUoXy5RdShiKSkrJz9zej02NCIgYWx0PSIiPic6Xy5URCh7d2lkdGg6MzZ9KSkpLHRleHQ6KDAsXy5UKShwKSxoZDooMCxfLkR1KSgiIisoMDw9bj8nZGF0YS1wcm9maWxlaW5kZXg9IicrXy5VKG4pKyciJzoiIikrKEY/IiAiK18uSnUoRik6CiIiKSl9KTtlPSgwLF8uSCkoQSsiIik7ays9ZX1yZXR1cm4oMCxfLkgpKGsrIiIpfSk7Cl8uSkY9ZnVuY3Rpb24oYSl7dmFyIGI9YS5pZGVudGlmaWVyLGM9YS5uYW1lLGQ9YS5SZyxlPWEueU0sZj1hLlRqLGs9YS5hdXRodXNlcixuPWEuVXoscD1hLkFpLEE9YS5oZCxEPW51bGwhPW4mJiFuO249Xy5RKCJYcmFRM2IiKTt2YXIgRj1fLlEoInc2VlRIZCIpLEk9Xy5RKCJoUGNPMWMiKSxKPV8uUSgiZjNHSVEiKTthPWEudGE7ZD0oMCxfLlQpKCIiKyhkPyc8aW1nIHNyYz0iJytfLlUoXy5RdShkKSkrJz9zej02NCIgYWx0PSIiPic6Xy5URCh7d2lkdGg6MzZ9KSkpO2I9KGM/JzxwIHJvbGU9InByZXNlbnRhdGlvbiIgY2xhc3M9IicrXy5VKCJ3cFcxY2IiKSsnIj4nK18uSyhjKToiIikrJzxwIGNsYXNzPSInK18uVSgidVJoemFlIikrJyIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMiIgZGF0YS1lbWFpbD0iJytfLlUoYikrJyI+JytfLksoYik7RD8oYz0nPHAgY2xhc3M9IicrXy5VKCJLbHhYeGQiKSsnIiBqc25hbWU9IicrXy5VKCJscDZmNSIpKyciPicsRD0oMCxfLkgpKCJTaWduZWQgb3V0IiksCmMrPUQscD8ocD0nPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9IicrXy5VKCJrNlpqOGQiKSsiICIrXy5VKCJhc0c4Q2IiKSsnIj4nLEQ9e30sRD1ELmZpbGwsRD0oMCxfLkgpKCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUobnVsbCE9RD9EOiIjMDAwMDAwIikrJyI+PHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnoiLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+JykscD1wK0QrIjwvZGl2PiIpOnA9IiIscD1jK3ApOnA9IiI7ZT0iIisoXy5HRih7ZGc6ITAsRGE6bixOdjpGLGV1OkksQXc6Six0YTphLGljb246ZCx0ZXh0OigwLF8uVCkoYisgcCksaGQ6KDAsXy5EdSkoIiIrKGU/J2RhdGEtaWQ9IicrXy5VKGUpKyciJzoiIikrKDA8PWY/JyBkYXRhLXByb2ZpbGVpbmRleD0iJytfLlUoZikrJyInOiIiKSsnIGRhdGEtYXV0aHVzZXI9IicrXy5VKG51bGwhPWs/azotMSkrJyInKyhBPyIgIitfLkp1KEEpOiIiKSl9KSsiIik7cmV0dXJuKDAsXy5IKShlKX07Cl8uS0Y9ZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJUcnkgYW5vdGhlciB3YXkgdG8gc2lnbiBpbiIpfTtfLkxGPWZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgiSGF2aW5nIHRyb3VibGU/Iil9O18uTUY9ZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCJFbnRlciBjb2RlIil9O18uTkY9Xy5FdigieDR1djQiKTt2YXIgWGhhLFloYTtYaGE9Xy5FdigiakFheWhiIik7Xy5PRj1fLkV2KCJPajNMR2UiKTtZaGE9Xy5Fdigid2o1ZWFjIik7Xy5QRj1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLlFhPW5ldyBfLlN3KGEpO3RoaXMuQmE9ZHx8TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3RoaXMubz1fLlR3KHRoaXMuUWEsIi5mdXFBdmYiKTt0aGlzLmVhPV8uVHcodGhpcy5RYSwiLmp2ZUlQZSIpO3RoaXMud2E9bmV3IF8uU3cod2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF0pO3RoaXMuYj1iO3RoaXMuZz1jO3RoaXMuZj10aGlzLmE9bnVsbDtiPXRoaXMuYi5LaSgiU1BBTiIpO2IudGFiSW5kZXg9MDtiLnNldEF0dHJpYnV0ZSgianNuYW1lIiwiUjZaeVJiIik7Yi5zZXRBdHRyaWJ1dGUoImpzYWN0aW9uIiwiZm9jdXM6RWxqTkFkIik7YS5pbnNlcnRCZWZvcmUoYixhLmZpcnN0Q2hpbGQpO2I9dGhpcy5iLktpKCJTUEFOIik7Yi50YWJJbmRleD0wO2Iuc2V0QXR0cmlidXRlKCJqc25hbWUiLCJiY3lZNWMiKTtiLnNldEF0dHJpYnV0ZSgianNhY3Rpb24iLCJmb2N1czpBbjd4a2YiKTthLmFwcGVuZENoaWxkKGIpOwpfLkx3KHRoaXMucmEoKS51KCksXy5ueix0aGlzLkZHLHRoaXMpO18uTHcodGhpcy5yYSgpLnUoKSxfLk9GLFNqKHRoaXMuaGksXy5Naih2b2lkIDApKSx0aGlzKTtfLkx3KHRoaXMucmEoKS51KCksXy5ORixTaih0aGlzLmhpLF8uTWoodm9pZCAwKSksdGhpcyl9O18ubShfLlBGLF8uQWspO18uZz1fLlBGLnByb3RvdHlwZTtfLmcucmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5RYX07Cl8uZy5zaG93PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5RYS51KCk7dGhpcy5iLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KF8uY3godGhpcy5RYSx7ZGlzcGxheToibm9uZSIscG9zaXRpb246ImFic29sdXRlIixsZWZ0OiIwIix0b3A6IjAifSksdGhpcy5iLkliKCkuYm9keS5hcHBlbmRDaGlsZChhKSk7IXRoaXMuYSYmdGhpcy5RYS5nZXREYXRhKCJtb2RhbCIpLmEoITApJiYodGhpcy5hPW5ldyBfLlN3KHRoaXMuYi5LaSgiRElWIiwicWdncnpiIikpLF8uY3godGhpcy5hLHtkaXNwbGF5OiJub25lIixib3R0b206IjAiLHJpZ2h0OiIwIn0pLHRoaXMuZ3goKSx0aGlzLmIuVUkodGhpcy5hLnUoKSxhKSk7dGhpcy53YS5qYigiS3RKVTFjIik7dGhpcy5oaSgpO3RoaXMuZj1fLkFyKHRoaXMuYi5hKTt0aGlzLlFhLnNob3coKTtRRih0aGlzKTt0aGlzLmEmJih0aGlzLmEuc2hvdygpLFJGKHRoaXMpLlJhKCJhcmlhLWhpZGRlbiIsITApKTtfLkZjJiZ0aGlzLm5BKCk7Xy5LeChhKTsKdGhpcy5nLndBKCk7cmV0dXJuIHRoaXN9O18uZy5uQT1mdW5jdGlvbigpe3RoaXMuQ3QoInI0bmtlIil8fHRoaXMuQ3QoImJOOTdQYyIpfTtfLmcuQ3Q9ZnVuY3Rpb24oYSl7YT10aGlzLm8uY2hpbGRyZW4oKS5maWx0ZXIobngoImpzbmFtZSIsYSkpLkxkKCkuY2hpbGRyZW4oKTtyZXR1cm4gMDxhLnNpemUoKT8oYT1hLkxkKCksYS5SYSgidGFiaW5kZXgiLCIwIiksYS51KCkuZm9jdXMoKSxfLmJ4KGEsInRhYmluZGV4IiksITApOiExfTtfLmcuZ3g9Xy5IYTtfLmcuRWI9ZnVuY3Rpb24oKXt0aGlzLlFhLkViKCk7dGhpcy5hJiYodGhpcy5hLkViKCksXy5ieChSRih0aGlzKSwiYXJpYS1oaWRkZW4iKSk7dGhpcy5mJiZfLmguc2V0VGltZW91dCgoMCxfLmwpKHRoaXMuaGEsdGhpcyksMCk7dGhpcy53YS5pYigiS3RKVTFjIik7cmV0dXJuIHRoaXN9O18uZy5GRz1mdW5jdGlvbigpe3JldHVybiBfLlNGKHRoaXMpfTsKXy5TRj1mdW5jdGlvbihhKXthLkViKCk7YS5nLnZBKCk7YS5yYSgpLmdldERhdGEoImRpc3Bvc2UiKS5hKCExKSYmYS5kaXNwb3NlKCk7cmV0dXJuITB9O18uUEYucHJvdG90eXBlLmhhPWZ1bmN0aW9uKCl7dHJ5e3RoaXMuZi5mb2N1cygpfWNhdGNoKGEpe319OwpfLlBGLnByb3RvdHlwZS5oaT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuUWEudSgpLGI9dGhpcy5iLkliKCksYz1fLmxyKGIpfHx3aW5kb3c7aWYoImZpeGVkIj09bncoYSkpdmFyIGQ9MCxlPTA7ZWxzZSBlPWtyKHRoaXMuYi5hKSxkPWUueCxlPWUueTtjPV8uaXIoYyk7dmFyIGY9Yy5oZWlnaHQtdGhpcy5jKCktdGhpcy53KGMuaGVpZ2h0KTtfLmN4KHRoaXMuUWEseyJtYXgtd2lkdGgiOk1hdGgubWluKHRoaXMuQmEsYy53aWR0aC10aGlzLmkoKS10aGlzLmphKCkpKyJweCIsIm1heC1oZWlnaHQiOmYrInB4In0pO1FGKHRoaXMpO2E9Xy55dyhhKTtfLmN4KHRoaXMuUWEsInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK01hdGgucm91bmQoTWF0aC5tYXgoZCtjLndpZHRoLzItYS53aWR0aC8yLDApKSsicHgsICIrKGEuaGVpZ2h0PT1mP3RoaXMuYygpOk1hdGgucm91bmQoTWF0aC5tYXgoZStjLmhlaWdodC8yLWEuaGVpZ2h0LzIsMCkpKSsicHgpIik7dGhpcy5hJiYoZD1NYXRoLm1heChjLndpZHRoLApNYXRoLm1heChiLmJvZHkuc2Nyb2xsV2lkdGgsYi5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgpKSxiPU1hdGgubWF4KGMuaGVpZ2h0LE1hdGgubWF4KGIuYm9keS5zY3JvbGxIZWlnaHQsYi5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0KSkseHcodGhpcy5hLnUoKSxkLGIpKTtyZXR1cm4gdGhpc307dmFyIFFGPWZ1bmN0aW9uKGEpe3ZhciBiPSgwLHdpbmRvdy5wYXJzZUludCkoYS5RYS5nZXRTdHlsZSgibWF4LWhlaWdodCIpLDEwKSxjPV8ueXcoYS5lYS51KCkpLmhlaWdodHx8NTIsZD1fLlR3KGEubywiaWZyYW1lIikuc2l6ZSgpPyJ2aXNpYmxlIjoiYXV0byI7Xy5jeChhLm8seyJtYXgtaGVpZ2h0IjpiLWMrInB4Iiwib3ZlcmZsb3cteSI6ZH0pfTsKXy5QRi5wcm90b3R5cGUub2I9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLlFhLnUoKTt0aGlzLkViKCk7dGhpcy5iLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKSYmKHRoaXMuYi5JYigpLmJvZHkucmVtb3ZlQ2hpbGQoYSksdGhpcy5hJiYodGhpcy5iLkliKCkuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmEudSgpKSx0aGlzLmE9bnVsbCkpO18uUEYuJC5vYi5jYWxsKHRoaXMpfTt2YXIgUkY9ZnVuY3Rpb24oYSl7dmFyIGI9YS5RYS51KCksYz1hLmEudSgpO3JldHVybiBfLlZ3KGEuUWEpLmNoaWxkcmVuKCkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhIT1iJiZhIT1jfSl9O18uUEYucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gNDB9O18uUEYucHJvdG90eXBlLnc9ZnVuY3Rpb24oYSl7cmV0dXJuIDYwMD5hPzE2OjY0fTtfLlBGLnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7cmV0dXJuIDQwfTtfLlBGLnByb3RvdHlwZS5qYT1mdW5jdGlvbigpe3JldHVybiA0MH07CnZhciBURj1mdW5jdGlvbihhKXtURi4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTtfLkJ3KHRoaXMuYWEoKS51KCksIV8ud2MmJiFfLnZjKX07Xy5tKFRGLF8uankpO18uWChxZ2Ese30sVEYpO1RGLnByb3RvdHlwZS5mb2N1cz1mdW5jdGlvbigpe3RoaXMuYWEoKS5pYigidGszTjZlLUxnYnNTZS1KYmJRYWMtaTV2dDZlIik7cmV0dXJuITB9O18uVyhURi5wcm90b3R5cGUsIkFIbXV3ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb2N1c30pO1RGLnByb3RvdHlwZS5SaD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYWEoKTt3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2EuamIoInRrM042ZS1MZ2JzU2UtSmJiUWFjLWk1dnQ2ZSIpfSwwKTtyZXR1cm4hMH07Xy5XKFRGLnByb3RvdHlwZSwiVVg3eVoiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmh9KTsKVEYucHJvdG90eXBlLkpnPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKSYmdGhpcy5hYSgpLmpiKCJ0azNONmUtTGdic1NlLVptZGtFIik7cmV0dXJuITB9O18uVyhURi5wcm90b3R5cGUsInRmTzFZYyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5KZ30pO1RGLnByb3RvdHlwZS5Jaj1mdW5jdGlvbigpe3RoaXMuYWEoKS5pYigidGszTjZlLUxnYnNTZS1abWRrRSIpO3JldHVybiEwfTtfLlcoVEYucHJvdG90eXBlLCJKeXdHdWUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSWp9KTtURi5wcm90b3R5cGUuY2xpY2s9ZnVuY3Rpb24oKXtpZih0aGlzLmlzRW5hYmxlZCgpKXt2YXIgYT1uZXcgRHYodGhpcy5hYSgpLmdldERhdGEoImFjdGlvbiIpLiRhKFN0cmluZyhfLkV2KCJKSWJ1UWMiKSkpKTt0aGlzLkhhKGEsdm9pZCAwKX1yZXR1cm4hMH07Xy5XKFRGLnByb3RvdHlwZSwiY091Q2dkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsaWNrfSk7ClRGLnByb3RvdHlwZS5yYj1mdW5jdGlvbihhKXthfHx0aGlzLmFhKCkuaWIoInRrM042ZS1MZ2JzU2UtWm1ka0UiKTt0aGlzLmFhKCkuYWIoInRrM042ZS1MZ2JzU2UtT1dCNk1lIiwhYSk7YT8oXy5ieCh0aGlzLmFhKCksImFyaWEtZGlzYWJsZWQiKSx0aGlzLmFhKCkudSgpLnRhYkluZGV4PTApOih0aGlzLmFhKCkuUmEoImFyaWEtZGlzYWJsZWQiLCEwKSxfLmJ4KHRoaXMuYWEoKSwidGFiSW5kZXgiKSk7cmV0dXJuIHRoaXN9O1RGLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5hYSgpLmRjKCJ0azNONmUtTGdic1NlLU9XQjZNZSIpfTtfLlcoVEYucHJvdG90eXBlLCJ5WGdtUmUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNFbmFibGVkfSk7CnZhciBVRj1mdW5jdGlvbihhKXtVRi4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmY9YS5pYS5kYTt0aGlzLmE9YS5pYS56Yi5jYygpO3RoaXMuYj1hLmwuamR9O18ubShVRixfLlR2KTtfLmh5KF8uanose2lhOntkYTpfLnosemI6Xy5CaX0sbDp7amQ6Xy5oen19LFVGKTtVRi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEsYixjLGQpe2E9bmV3IF8uUEYoXy5BdCh0aGlzLmYsYSxiKSx0aGlzLmEsdGhpcy5iLGQpO2MmJl8ubHkoYyxhLnJhKCkpO3JldHVybiBhfTsKdmFyIFpoYT1xeCgiTVFTWXBkIiwiTVFTWXBkIixbXy56LF8uQmksXy5XeixfLk96XSksJGhhPVYoImw5WFpmIiwibDlYWmYiLFtdKTt2YXIgVkY9ZnVuY3Rpb24oYSl7VkYuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSl9O18ubShWRixfLmp5KTtfLlgoJGhhLHt9LFZGKTt2YXIgYWlhPV8uRXYoInJOZ1RIIiksYmlhPV8uRXYoImFEZlJJYyIpLFdGPV8uRXYoImZJZ3VwZCIpLFhGPV8uRXYoImtGZTdqZCIpO1ZGLnByb3RvdHlwZS5WaD1mdW5jdGlvbihhKXt2YXIgYj1hLmEuZ2V0RGF0YSgiaXRlbSIpO2ImJihfLk53KHRoaXMuYWEoKS51KCksWEYsZnVuY3Rpb24oKXt0aGlzLkhhKGJpYSxiLiRhKCkpfSx0aGlzKSx0aGlzLkhhKFdGLCExKSl9O18uVyhWRi5wcm90b3R5cGUsIktqc3FQZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5WaH0pO1ZGLnByb3RvdHlwZS5Caj1mdW5jdGlvbigpe3RoaXMuSGEoV0YsITEpfTtfLlcoVkYucHJvdG90eXBlLCJnUzh1diIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Can0pO1ZGLnByb3RvdHlwZS4kcD1mdW5jdGlvbigpe1lGKHRoaXMpLkxkKCkuZm9jdXMoKX07Cl8uVyhWRi5wcm90b3R5cGUsIlJabWlPZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcH0pO1ZGLnByb3RvdHlwZS5QYz1mdW5jdGlvbihhKXt2YXIgYj1hLmE7c3dpdGNoKGEuZXZlbnQua2V5Q29kZSl7Y2FzZSAyNzpyZXR1cm4gdGhpcy5CaigpLGEuZXZlbnQucHJldmVudERlZmF1bHQoKSwhMTtjYXNlIDQwOnJldHVybiBaRih0aGlzLGIsMSksYS5ldmVudC5wcmV2ZW50RGVmYXVsdCgpLCExO2Nhc2UgMzg6cmV0dXJuIFpGKHRoaXMsYiwtMSksYS5ldmVudC5wcmV2ZW50RGVmYXVsdCgpLCExfXJldHVybiEwfTtfLlcoVkYucHJvdG90eXBlLCJJNDgxbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUGN9KTsgdmFyIFlGPWZ1bmN0aW9uKGEpe3JldHVybiBhLkZiKCJpYm5DNmIiKX0sWkY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVlGKGEpLGU9WUYoYSk7Yj0wPGIuc2l6ZSgpPygwLF8uJGEpKGUuU2MoKSxiLnUoKSk6LTE7Yis9YztiPj1kLnNpemUoKT9ZRihhKS5MZCgpLmZvY3VzKCk6MD5iPyhhPVlGKGEpLDA8YS5zaXplKCkmJmEuZ2V0KGEuc2l6ZSgpLTEpLmZvY3VzKCkpOmQuZ2V0KGIpLmZvY3VzKCl9OwpfLiRGPWZ1bmN0aW9uKCl7aWYoXy5EYyl7dmFyIGE9L1dpbmRvd3MgTlQgKFswLTkuXSspLztyZXR1cm4oYT1hLmV4ZWMoXy5XYikpP2FbMV06IjAifXJldHVybiB5YWE/KGE9LzEwW18uXVswLTlfLl0rLywoYT1hLmV4ZWMoXy5XYikpP2FbMF0ucmVwbGFjZSgvXy9nLCIuIik6IjEwIik6Xy5FYz8oYT0vQW5kcm9pZFxzKyhbXlwpO10rKShcKXw7KS8sKGE9YS5leGVjKF8uV2IpKT9hWzFdOiIiKTp6YWF8fEFhYXx8QmFhPyhhPS8oPzppUGhvbmV8Q1BVKVxzK09TXHMrKFxTKykvLChhPWEuZXhlYyhfLldiKSk/YVsxXS5yZXBsYWNlKC9fL2csIi4iKToiIik6IiJ9KCk7CnZhciBhRzthRz1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLmV4ZWMoXy5XYikpP2FbMV06IiJ9O18uYkc9ZnVuY3Rpb24oKXtpZihfLlNjKXJldHVybiBhRygvRmlyZWZveFwvKFswLTkuXSspLyk7aWYoXy53Y3x8Xy54Y3x8Xy52YylyZXR1cm4gTGM7aWYoXy5XYylyZXR1cm4gXy5yYygpP2FHKC9DcmlPU1wvKFswLTkuXSspLyk6YUcoL0Nocm9tZVwvKFswLTkuXSspLyk7aWYoXy5YYyYmIV8ucmMoKSlyZXR1cm4gYUcoL1ZlcnNpb25cLyhbMC05Ll0rKS8pO2lmKF8uVGN8fF8uVWMpe3ZhciBhPS9WZXJzaW9uXC8oXFMrKS4qTW9iaWxlXC8oXFMrKS8uZXhlYyhfLldiKTtpZihhKXJldHVybiBhWzFdKyIuIithWzJdfWVsc2UgaWYoXy5WYylyZXR1cm4oYT1hRygvQW5kcm9pZFxzKyhbMC05Ll0rKS8pKT9hOmFHKC9WZXJzaW9uXC8oWzAtOS5dKykvKTtyZXR1cm4iIn0oKTsKdmFyIGVHPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgaztpZihrPWMub2Zmc2V0UGFyZW50KXt2YXIgbj0iSFRNTCI9PWsudGFnTmFtZXx8IkJPRFkiPT1rLnRhZ05hbWU7aWYoIW58fCJzdGF0aWMiIT1udyhrKSl7dmFyIHA9Xy5zdyhrKTtpZighbil7bj0icnRsIj09Xy5tdyhrLCJkaXJlY3Rpb24iKTt2YXIgQTtpZihBPW4pe2lmKEE9Xy5YYylBPTA8PV8uVGIoXy5iRywxMCk7dmFyIEQ9Xy5GYyYmMDw9Xy5UYihfLiRGLDEwKTtBPV8uemN8fEF8fER9bj1BPy1rLnNjcm9sbExlZnQ6IW58fF8ueWMmJk9jKCI4Iil8fCJ2aXNpYmxlIj09Xy5tdyhrLCJvdmVyZmxvd1giKT9rLnNjcm9sbExlZnQ6ay5zY3JvbGxXaWR0aC1rLmNsaWVudFdpZHRoLWsuc2Nyb2xsTGVmdDtwPVhxKHAsbmV3IF8uVXEobixrLnNjcm9sbFRvcCkpfX19az1wfHxuZXcgXy5VcTtwPV8uencoYSk7KG49dHcoYSkpJiZwLkl6KG5ldyBodyhuLmxlZnQsbi50b3Asbi5yaWdodC1uLmxlZnQsbi5ib3R0b20tbi50b3ApKTsKbj1fLmJyKGEpO0Q9Xy5icihjKTtpZihuLkliKCkhPUQuSWIoKSl7QT1uLkliKCkuYm9keTtEPUQuZ2V0V2luZG93KCk7dmFyIEY9bmV3IF8uVXEoMCwwKSxJPV8ubHIoXy5hcihBKSk7aWYodWMoSSwicGFyZW50Iikpe3ZhciBKPUE7ZG97dmFyIE09ST09RD9fLnN3KEopOnd3KEopO0YueCs9TS54O0YueSs9TS55fXdoaWxlKEkmJkkhPUQmJkkhPUkucGFyZW50JiYoSj1JLmZyYW1lRWxlbWVudCkmJihJPUkucGFyZW50KSl9QT1YcShGLF8uc3coQSkpOyFfLndjfHxQYyg5KXx8aHIobi5hKXx8KEE9WHEoQSxrcihuLmEpKSk7cC5sZWZ0Kz1BLng7cC50b3ArPUEueX1hPWNHKGEsYik7Yj1wLmxlZnQ7YSY0P2IrPXAud2lkdGg6YSYyJiYoYis9cC53aWR0aC8yKTtiPW5ldyBfLlVxKGIscC50b3ArKGEmMT9wLmhlaWdodDowKSk7Yj1YcShiLGspO2QmJihiLngrPShhJjQ/LTE6MSkqZC54LGIueSs9KGEmMT8tMToxKSpkLnkpO3ZhciBSO2YmJihSPXR3KGMpKSYmKFIudG9wLT1rLnksUi5yaWdodC09CmsueCxSLmJvdHRvbS09ay55LFIubGVmdC09ay54KTtkRyhiLGMsZSxSLGYsdm9pZCAwKX0sZEc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9YS5jbG9uZSgpO3ZhciBrPWNHKGIsMCksbj1fLnl3KGIpO2Y9Zj9mLmNsb25lKCk6bi5jbG9uZSgpO2E9ZkcoYSxmLGssYyxkLGUpO2Euc3RhdHVzJjQ5Nnx8KGM9YS5yZWN0LHB3KGIsbmV3IF8uVXEoYy5sZWZ0LGMudG9wKSksYT1hLnJlY3QsZj1uZXcgWXEoYS53aWR0aCxhLmhlaWdodCksWnEobixmKXx8KG49ZixjPWhyKF8uYnIoXy5hcihiKSkuYSksIV8ud2N8fE9jKCIxMCIpfHxjJiZPYygiOCIpPyhiPWIuc3R5bGUsXy56Yz9iLk1vekJveFNpemluZz0iYm9yZGVyLWJveCI6Xy5CYz9iLldlYmtpdEJveFNpemluZz0iYm9yZGVyLWJveCI6Yi5ib3hTaXppbmc9ImJvcmRlci1ib3giLGIud2lkdGg9TWF0aC5tYXgobi53aWR0aCwwKSsicHgiLGIuaGVpZ2h0PU1hdGgubWF4KG4uaGVpZ2h0LDApKyJweCIpOihhPWIuc3R5bGUsYz8oYz1fLkV3KGIpLApiPUh3KGIpLGEucGl4ZWxXaWR0aD1uLndpZHRoLWIubGVmdC1jLmxlZnQtYy5yaWdodC1iLnJpZ2h0LGEucGl4ZWxIZWlnaHQ9bi5oZWlnaHQtYi50b3AtYy50b3AtYy5ib3R0b20tYi5ib3R0b20pOihhLnBpeGVsV2lkdGg9bi53aWR0aCxhLnBpeGVsSGVpZ2h0PW4uaGVpZ2h0KSkpKX0sZkc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9YS5jbG9uZSgpO2I9Yi5jbG9uZSgpO3ZhciBrPTA7aWYoZHx8MCE9YyljJjQ/YS54LT1iLndpZHRoKyhkP2QucmlnaHQ6MCk6YyYyP2EueC09Yi53aWR0aC8yOmQmJihhLngrPWQubGVmdCksYyYxP2EueS09Yi5oZWlnaHQrKGQ/ZC5ib3R0b206MCk6ZCYmKGEueSs9ZC50b3ApO2lmKGYpe2lmKGUpe2s9YTtjPWI7ZD0wOzY1PT0oZiY2NSkmJihrLng8ZS5sZWZ0fHxrLng+PWUucmlnaHQpJiYoZiY9LTIpOzEzMj09KGYmMTMyKSYmKGsueTxlLnRvcHx8ay55Pj1lLmJvdHRvbSkmJihmJj0tNSk7ay54PGUubGVmdCYmZiYxJiYoay54PWUubGVmdCxkfD0KMSk7aWYoZiYxNil7dmFyIG49ay54O2sueDxlLmxlZnQmJihrLng9ZS5sZWZ0LGR8PTQpO2sueCtjLndpZHRoPmUucmlnaHQmJihjLndpZHRoPU1hdGgubWluKGUucmlnaHQtay54LG4rYy53aWR0aC1lLmxlZnQpLGMud2lkdGg9TWF0aC5tYXgoYy53aWR0aCwwKSxkfD00KX1rLngrYy53aWR0aD5lLnJpZ2h0JiZmJjEmJihrLng9TWF0aC5tYXgoZS5yaWdodC1jLndpZHRoLGUubGVmdCksZHw9MSk7ZiYyJiYoZHw9KGsueDxlLmxlZnQ/MTY6MCl8KGsueCtjLndpZHRoPmUucmlnaHQ/MzI6MCkpO2sueTxlLnRvcCYmZiY0JiYoay55PWUudG9wLGR8PTIpO2YmMzImJihuPWsueSxrLnk8ZS50b3AmJihrLnk9ZS50b3AsZHw9OCksay55K2MuaGVpZ2h0PmUuYm90dG9tJiYoYy5oZWlnaHQ9TWF0aC5taW4oZS5ib3R0b20tay55LG4rYy5oZWlnaHQtZS50b3ApLGMuaGVpZ2h0PU1hdGgubWF4KGMuaGVpZ2h0LDApLGR8PTgpKTtrLnkrYy5oZWlnaHQ+ZS5ib3R0b20mJmYmNCYmKGsueT1NYXRoLm1heChlLmJvdHRvbS0KYy5oZWlnaHQsZS50b3ApLGR8PTIpO2YmOCYmKGR8PShrLnk8ZS50b3A/NjQ6MCl8KGsueStjLmhlaWdodD5lLmJvdHRvbT8xMjg6MCkpO2U9ZH1lbHNlIGU9MjU2O2s9ZX1lPW5ldyBodygwLDAsMCwwKTtlLmxlZnQ9YS54O2UudG9wPWEueTtlLndpZHRoPWIud2lkdGg7ZS5oZWlnaHQ9Yi5oZWlnaHQ7cmV0dXJue3JlY3Q6ZSxzdGF0dXM6a319LGNHPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGImOCYmInJ0bCI9PV8ubXcoYSwiZGlyZWN0aW9uIik/Yl40OmIpJi05fTsKdmFyIGdHPWZ1bmN0aW9uKGEsYil7dGhpcy5RYT1uZXcgXy5TdyhhKTt0aGlzLm89Yjt0aGlzLmI9dGhpcy5vLmNjKCk7dGhpcy53PXRoaXMuYi5JYigpLmJvZHk7dGhpcy5hPW5ldyBfLlJ3KFtdKTt0aGlzLmM9bmV3IF8uZ3coMCwwLDAsMCk7dGhpcy5nPW5ldyBfLlVxKDAsMCk7dGhpcy5RYS5FYigpO3RoaXMud3I9bmV3IF8uRWw7dGhpcy53ci5zZXRJbnRlcnZhbCg2MCk7dGhpcy5Kdj0wO3RoaXMuaT1uZXcgXy5Dcih0aGlzKTtfLkx3KHRoaXMucmEoKS51KCksXy5PRix0aGlzLklHLHRoaXMpfTtfLmc9Z0cucHJvdG90eXBlO18uZy5yYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlFhfTtfLmcuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud307Xy5nLkdnPWZ1bmN0aW9uKCl7cmV0dXJuIm5vbmUiIT10aGlzLlFhLnUoKS5zdHlsZS5kaXNwbGF5fTsKXy5nLnNob3c9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLlFhLnUoKTt0aGlzLmIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHwoXy5jeCh0aGlzLlFhLHtkaXNwbGF5OiJub25lIixvdmVyZmxvdzoidmlzaWJsZSIscG9zaXRpb246ImFic29sdXRlIn0pLHRoaXMuUWEuUmEoImFyaWEtaGlkZGVuIiwhMSksdGhpcy53LmFwcGVuZENoaWxkKGEpKTt0aGlzLmhpKCk7dGhpcy5mPV8uQXIodGhpcy5iLmEpO18uS3goYSk7dGhpcy5qYT1fLkx3KGEsV0YsdGhpcy5IRyx0aGlzKTt0aGlzLlFhLnNob3coKTt0aGlzLmEmJnRoaXMuYS5SYSgiYXJpYS1leHBhbmRlZCIsITApO3RoaXMuUWEuSGEoYWlhKTthPXRoaXMubztpZighYS5hKXthLndhPV8ubUMoYS5qYSk7YS5hPXRoaXM7dmFyIGI9YS5pLkliKCkuYm9keTthLmY9W18ucWwoYiwibW91c2Vkb3duIixhLmcsITAsYSksXy5xbChiLCJ0b3VjaHN0YXJ0IixhLmcsITAsYSksXy5xbChiLCJjbGljayIsYS5nLCEwLGEpXTtjaWEoYSl9cmV0dXJuIHRoaXN9OwpfLmcuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLlFhLkViKCk7dGhpcy5RYS5SYSgiYXJpYS1oaWRkZW4iLCEwKTt0aGlzLmEmJnRoaXMuYS5SYSgiYXJpYS1leHBhbmRlZCIsITEpO013KHRoaXMuamEpO18ucmsoZGlhKHRoaXMubyksZnVuY3Rpb24oKXt0aGlzLlFhLkhhKFhGKX0sdGhpcyk7Xy5oLnNldFRpbWVvdXQoKDAsXy5sKSh0aGlzLkpHLHRoaXMpLDApO3JldHVybiB0aGlzfTtfLmcuSEc9ZnVuY3Rpb24oYSl7dGhpcy5jbG9zZSgpO2lmKGEuZGF0YSl0cnl7dGhpcy5mLmZvY3VzKCl9Y2F0Y2goYil7fX07Xy5nLkpHPWZ1bmN0aW9uKCl7dGhpcy5RYS5yZW1vdmUoKX07Xy5nLklHPWZ1bmN0aW9uKCl7dGhpcy5Kdj0wO3RoaXMuaS5saXN0ZW4odGhpcy53ciwidGljayIsZnVuY3Rpb24oKXt0aGlzLkp2Kys7NTA+dGhpcy5Kdj90aGlzLmhpKCk6dGhpcy53ci5zdG9wKCl9KTt0aGlzLndyLnN0YXJ0KCl9OyBfLmcuaGk9ZnVuY3Rpb24oKXtfLmN4KHRoaXMuUWEse3dpZHRoOiJhdXRvIixoZWlnaHQ6ImF1dG8ifSk7aWYoMT09dGhpcy5hLnNpemUoKSllRyh0aGlzLmEudSgpLDAsdGhpcy5RYS51KCksdGhpcy5nLHRoaXMuYyw1KTtlbHNle3ZhciBhPV8uaXIoXy5scih0aGlzLmIuSWIoKSl8fHdpbmRvdyk7ZEcodGhpcy5nLHRoaXMuUWEudSgpLHRoaXMuYyxuZXcgXy5ndygwLGEud2lkdGgsYS5oZWlnaHQsMCksNSl9cmV0dXJuIHRoaXN9OwpfLmhHPWZ1bmN0aW9uKGEpe18uaEcuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy5lYT1hLmlhLmRhO3RoaXMuaT1hLmlhLnpiLmNjKCk7dGhpcy5qYT1hLmwubmF2aWdhdGlvbjt0aGlzLmI9YS5sLndpbmRvdy5nZXQoKTt0aGlzLmM9ITE7dGhpcy5mPVtdfTtfLm0oXy5oRyxfLlR2KTtfLmh5KFpoYSx7aWE6e2RhOl8ueix6YjpfLkJpfSxsOntuYXZpZ2F0aW9uOl8uV3osd2luZG93Ol8uT3p9fSxfLmhHKTtfLmhHLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSxiLGMpe2E9bmV3IGdHKF8uQXQodGhpcy5lYSxhLGIpLHRoaXMpO2MmJl8ubHkoYyxhLnJhKCkpO3JldHVybiBhfTtfLmhHLnByb3RvdHlwZS5jYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLml9Owp2YXIgZGlhPWZ1bmN0aW9uKGEpe2lmKCFhLmEpcmV0dXJuIF8uaWsoKTthLmE9bnVsbDt2YXIgYj1hLncoKTthLndhPW51bGw7KDAsXy5hYikoYS5mLGZ1bmN0aW9uKGEpe18ueGwoYSl9KTthLmY9W107cmV0dXJuIGJ9LGNpYT1mdW5jdGlvbihhKXthLmIuaGlzdG9yeS5wdXNoU3RhdGUoe30sIiIsYS5iLmxvY2F0aW9uLmhyZWYpO3ZhciBiPXBsKGEuYiwicG9wc3RhdGUiLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy5hJiYodGhpcy5jPSEwLHRoaXMuYS5jbG9zZSgpKX0sITEsYSk7YS5mLnB1c2goYil9O18uaEcucHJvdG90eXBlLnc9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgXy5layhmdW5jdGlvbihhKXt0aGlzLmN8fF8ubUModGhpcy5qYSkhPXRoaXMud2E/YSgpOihwbCh0aGlzLmIsInBvcHN0YXRlIixmdW5jdGlvbigpe2EoKX0sITEsdGhpcyksdGhpcy5iLmhpc3RvcnkuZ28oLTEpKX0sdGhpcyk7dGhpcy5jPSExO3JldHVybiBhfTsgXy5oRy5wcm90b3R5cGUuZz1mdW5jdGlvbihhKXt1cih0aGlzLmEucmEoKS51KCksYS50YXJnZXQpfHx0aGlzLmEuY2xvc2UoKX07Cl8uZWlhPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJhcHByb3ZhbGRhdGEiLCJhcHByb3ZhbGRhdGEiKTtfLmZpYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYXBwcm92YWxuYXRpdmVhcHAiLCJhcHByb3ZhbG5hdGl2ZWFwcCIpO3ZhciBpRz1xeCgiUFZsUU9kIiwiUFZsUU9kIixbXSk7dHgoaUcsIkNCbFJ4ZiIpO3ZhciBqRz1xeCgiWFZNTnZkIiwiWFZNTnZkIixbXy5Pel0pO3R4KGpHLCJkb0tzNGMiKTt2YXIgZ2lhPXF4KCJDQmxSeGYiLCJDQmxSeGYiLFtpR10pLGhpYT1xeCgiZG9LczRjIiwiZG9LczRjIixbakddKTt2YXIgaWlhPVYoIk5OcFN4ZiIsIk5OcFN4ZiIsW18uQmldKSxqaWE9VigiZzN0RnpkIiwiZzN0RnpkIixbXy5CaSxfLnosakddKTt2YXIga0c9ZnVuY3Rpb24oYSl7a0cuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy5jPWEuaWEuemI7dGhpcy5mPXRoaXMuYWEoKS51KCk7aWYodGhpcy5hPXRoaXMuRmIoIkJVZnpEZCIpLnUoKSl0aGlzLmc9dGhpcy5jLmEsdGhpcy5iKCksXy5teSh0aGlzKS5saXN0ZW4odGhpcy5nLCJyZXNpemUiLHRoaXMuYil9O18ubShrRyxfLmp5KTtfLlgoaWlhLHtpYTp7emI6Xy5CaX19LGtHKTt2YXIgbEc9bmV3IFlxKDE0NDAsODEwKSxraWE9LTIwMC9sRy53aWR0aCxsaWE9LTE3NS9sRy5oZWlnaHQ7a0cucHJvdG90eXBlLmI9ZnVuY3Rpb24oKXt2YXIgYT1fLnl3KHRoaXMuZiksYj1hLndpZHRoO2E9YS5oZWlnaHQ7dmFyIGM9Yi9sRy53aWR0aCxkPWEvbEcuaGVpZ2h0O2Q+Yz8oYz1iKmQvYyxiPShjLWIpKmtpYSx4dyh0aGlzLmEsYyxhKSxwdyh0aGlzLmEsYiwwKSk6KGM9YSpjL2QsYT0oYy1hKSpsaWEseHcodGhpcy5hLGIsYykscHcodGhpcy5hLDAsYSkpfTsKXy5tRz1mdW5jdGlvbihhKXtfLm1HLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuZz1hLmlhLnpiLmNjKCk7dGhpcy53PWEuaWEuZGE7dGhpcy5hPWEuY29udHJvbGxlcnMuSGQubGVuZ3RoP2EuY29udHJvbGxlcnMuSGRbMF06bnVsbDt0aGlzLmY9YS5sLnZpZXdwb3J0O3RoaXMuYj10aGlzLnJhKCJmMmQzYWUiKTt0aGlzLmM9Xy5heCh0aGlzLmIsInRhYmluZGV4Iik7Xy5Mdyh0aGlzLmcuSWIoKS5ib2R5LF8uRHgsZnVuY3Rpb24oKXtfLlB3KHRoaXMuYWEoKS51KCksXy5PRixudWxsLHRoaXMpO3RoaXMucGkoKX0sdGhpcyl9O18ubShfLm1HLF8uankpO18uWChqaWEse2lhOnt6YjpfLkJpLGRhOl8uen0sY29udHJvbGxlcnM6e0hkOiJJZ2s2VyJ9LGw6e3ZpZXdwb3J0OmpHfX0sXy5tRyk7Xy5tRy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3RoaXMuYWEoKS5pYigiTkxXeDZiIil9O18uVyhfLm1HLnByb3RvdHlwZSwiZXlvZkRmIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXR9KTsKXy5tRy5wcm90b3R5cGUucGk9ZnVuY3Rpb24oKXt0aGlzLkJvKCl9O18uVyhfLm1HLnByb3RvdHlwZSwid1ZYUEtjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnBpfSk7Xy5tRy5wcm90b3R5cGUuQm89ZnVuY3Rpb24oKXt0aGlzLmFhKCkuYWIoInBtVnJwZCIsXy5uRyh0aGlzLmYpLlR6KX07Xy5XKF8ubUcucHJvdG90eXBlLCJBQVNYUGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQm99KTtfLm1HLnByb3RvdHlwZS5NYT1mdW5jdGlvbihhKXt0aGlzLmFhKCkuUmEoImFyaWEtYnVzeSIsInRydWUiKTt0aGlzLmEmJnRoaXMuYS5zaG93KCk7YS5kYXRhLmhDJiZvRyh0aGlzLCEwKX07Xy5XKF8ubUcucHJvdG90eXBlLCJyMHhOU2IiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTWF9KTsKXy5tRy5wcm90b3R5cGUuS2E9ZnVuY3Rpb24oYSl7dGhpcy5hJiZ0aGlzLmEuRWIoKTtvRyh0aGlzLCExKTtfLmJ4KHRoaXMuYWEoKSwiYXJpYS1idXN5Iik7KGE9YS5kYXRhP2EuZGF0YS5heTpudWxsKSYmd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJmEuZm9jdXMoKX07Xy5XKF8ubUcucHJvdG90eXBlLCJZZDJPSGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuS2F9KTt2YXIgb0c9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLkZiKCJrNEhFZ2UiKTtiP2Muc2l6ZSgpP2Muc2hvdygpOihiPV8uQXQoYS53LElELHt0YToiazRIRWdlIixEYToiSWRBcXRmIn0pLF8uZ3goYS5hYSgpLGIpLGIuZm9jdXMoKSxhLmIuUmEoInRhYmluZGV4IiwtMSkpOihjLnJlbW92ZSgpLGEuYi5SYSgidGFiaW5kZXgiLGEuYykpfTtfLm1HLnByb3RvdHlwZS55dT1mdW5jdGlvbigpe18uVHcodGhpcy5hYSgpLCIuYmRmNGRjIikuamIoIk9SY0YxYiIpfTsgXy5XKF8ubUcucHJvdG90eXBlLCJubkd2amYiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueXV9KTtfLm1HLnByb3RvdHlwZS54dT1mdW5jdGlvbigpe18uVHcodGhpcy5hYSgpLCIuYmRmNGRjIikuaWIoIk9SY0YxYiIpfTtfLlcoXy5tRy5wcm90b3R5cGUsIm9VTUV6ZiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54dX0pOwp2YXIgbWlhPVYoIlVYbUNwYyIsIlVYbUNwYyIsW18uel0pO3ZhciBwRz1mdW5jdGlvbihhKXtfLmp5LmNhbGwodGhpcyxhLlphKTt0aGlzLmY9YS5pYS5kYTt0aGlzLmE9IiI7dGhpcy5iPXt9fTtfLnBhKHBHLF8uankpO3BHLlRhPWZ1bmN0aW9uKCl7cmV0dXJue2lhOntkYTpfLnp9fX07cEcucHJvdG90eXBlLmFPPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXREYXRhKCJpbml0QnJhbmRpbmciKS4kYSgpLGI9dGhpcy5hYSgpLmNoaWxkcmVuKCk7Yi5zaXplKCkmJihiPWIuTGQoKSx0aGlzLmJbYV09Yix0aGlzLmE9YSxleCh0aGlzLmFhKCksImluaXRCcmFuZGluZyIsbnVsbCkpfTtfLlcocEcucHJvdG90eXBlLCJxZzRJYyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hT30pO3BHLnByb3RvdHlwZS5PRT1mdW5jdGlvbihhKXthPWEuZGF0YTt0aGlzLmhhcyhhKXx8dGhpcy5hZGQoYSk7dGhpcy5FYih0aGlzLmEpO3RoaXMuc2hvdyhhKX07Xy5XKHBHLnByb3RvdHlwZSwiV1BpMGkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT0V9KTsKcEcucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXthOnN3aXRjaChhKXtjYXNlICJKMm8zcGQiOnZhciBiPV8uSkQ7YnJlYWsgYTtkZWZhdWx0OmI9Xy5LRH1iPV8uQXQodGhpcy5mLGIse0pzOnRoaXMuZ2V0RGF0YSgiY2FuRW5oYW5jZSIpLmEoKX0pO2I9bmV3IF8uU3coYik7dGhpcy5iW2FdPWI7Xy5neCh0aGlzLmFhKCksYil9O3BHLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKGEpe3ZhciBiPWhjKHRoaXMuYixhKTtiJiYoYi5zaG93KCksdGhpcy5hPWEpfTtwRy5wcm90b3R5cGUuRWI9ZnVuY3Rpb24oYSl7dmFyIGI9aGModGhpcy5iLGEpO2ImJihiLkViKCksdGhpcy5hPT1hJiYodGhpcy5hPSIiKSl9O3BHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGhjKHRoaXMuYixhKX07Xy56QShtaWEscEcpOwp2YXIgbmlhPV8uRXYoIlpNY1lTZCIpO3ZhciBvaWE9VigiVlZIbERmIiwiVlZIbERmIixbXSk7dmFyIHFHPWZ1bmN0aW9uKGEpe3FHLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYT1hLmNvbnRyb2xsZXIuc2VsZWN0O3RoaXMuYj1uZXcgXy5hYSh3aW5kb3cubG9jYXRpb24pfTtfLm0ocUcsXy5qeSk7Xy5YKG9pYSx7Y29udHJvbGxlcjp7c2VsZWN0OiJyZkNVcGQifX0scUcpO3FHLnByb3RvdHlwZS5TdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuRmUoKS5zaXplKCk/dGhpcy5hLm9hKCk6IiJ9O18uVyhxRy5wcm90b3R5cGUsIkpudkMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuU3R9KTtxRy5wcm90b3R5cGUuUUU9ZnVuY3Rpb24oKXtpZigiIiE9dGhpcy5TdCgpKXt2YXIgYT10aGlzLmIsYj1fLmVyKCJSRmp1U2IiKTtiJiZfLmt4KChuZXcgXy5SdyhbYl0pKS5nZXREYXRhKCJpc1JlZnJlc2hhYmxlIikpJiYoYT1uZXcgXy5hYSh3aW5kb3cubG9jYXRpb24pKTtfLkNwKGEsImhsIix0aGlzLlN0KCkpO18uU3Eod2luZG93LmxvY2F0aW9uLGEudG9TdHJpbmcoKSl9fTsgXy5XKHFHLnByb3RvdHlwZSwiVlBSWGJkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlFFfSk7Cl8ucGlhPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpLnJlcGxhY2UoL1wvJC8sIiIpLCJpbml0aWFscGFnZSIpO3ZhciBzRyx0aWEsdWlhLHZpYTtfLnJHPV8uRXYoIlpZV21nYiIpO3NHPV8uRXYoImF6dVBCIik7Xy5xaWE9Xy5FdigiTk53N2xiIik7Xy5yaWE9Xy5FdigiVTU3QmJmIik7Xy5zaWE9Xy5FdigiUHVlZU5kIik7dGlhPV8uRXYoIm1rbUJmIik7dWlhPV8uRXYoIm5HTTBzZCIpO3ZpYT1fLkV2KCJqRTZaeWIiKTt2YXIgd2lhLHppYSxBaWE7Xy50Rz1fLkV2KCJ1M0tBYiIpO3dpYT1fLkV2KCJja1VrMSIpO18ueGlhPV8uRXYoIndhVVpvZSIpO18ueWlhPV8uRXYoImt2d0tqYyIpO3ppYT1fLkV2KCJ2dTZXUGQiKTtBaWE9Xy5FdigiRFBWak8iKTt2YXIgQmlhPVYoIkQwMnhkYyIsIkQwMnhkYyIsW18uel0pO3ZhciB1Rz1mdW5jdGlvbihhKXt1Ry4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmM9YS5pYS5kYTt0aGlzLmE9YS5jb250cm9sbGVycy5VZVswXXx8bnVsbDt0aGlzLmI9dGhpcy5nZXREYXRhKCJjdXN0b21OZXh0VGV4dCIpLiRhKG51bGwpO3RoaXMuZj10aGlzLmdldERhdGEoImJ1dHRvbklkUHJlZml4IikuJGEobnVsbCl9LHZHO18ubSh1RyxfLmp5KTtfLlgoQmlhLHtpYTp7ZGE6Xy56fSxjb250cm9sbGVyczp7VWU6ImJDa0R0ZSJ9fSx1Ryk7dUcucHJvdG90eXBlLmhiPWZ1bmN0aW9uKCl7dGhpcy5IYShfLnRHKTt0aGlzLkhhKF8uckcpfTtfLlcodUcucHJvdG90eXBlLCJVSFowVSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYn0pO3VHLnByb3RvdHlwZS5Tbj1mdW5jdGlvbigpe3RoaXMuSGEoc0cpfTtfLlcodUcucHJvdG90eXBlLCJzNTdYMGMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuU259KTsKdUcucHJvdG90eXBlLlBuPWZ1bmN0aW9uKCl7dkcodGhpcyk/dGhpcy5IYShzRyk6Xy53Ryh0aGlzKSYmKHRoaXMuSGEoXy50RyksdGhpcy5IYShfLnJHKSl9O18uVyh1Ry5wcm90b3R5cGUsImhSTENUZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Qbn0pO3VHLnByb3RvdHlwZS52TD1mdW5jdGlvbigpe18ud0codGhpcyl8fF8ueEcodGhpcyxfLmhFKX07Xy5XKHVHLnByb3RvdHlwZSwiVjJHQ0JjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnZMfSk7dUcucHJvdG90eXBlLndMPWZ1bmN0aW9uKCl7dkcodGhpcyl8fF8ueEcodGhpcyxnRSl9O18uVyh1Ry5wcm90b3R5cGUsIk9HSmhaIixmdW5jdGlvbigpe3JldHVybiB0aGlzLndMfSk7CnVHLnByb3RvdHlwZS56TD1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmEoIk5qREk3ZCIpLGI9dGhpcy5GYigicktsYUliIiksYz1iLnUoKTtjJiYodGhpcy5hYSgpLmpiKCJQUmdtOGUiKSx0aGlzLkhhKHVpYSksXy5lRihjLCJoaWRkZW4iLCExKSxhLnUoKS5kaXNhYmxlZD0hMCxiPWIuZ2V0RGF0YSgid2FpdFRpbWUiKSxfLmt4KGIpJiYoYj0xRTMqYi5PYigpLCgwLHdpbmRvdy5zZXRUaW1lb3V0KSgoMCxfLmwpKGZ1bmN0aW9uKCl7dGhpcy5hYSgpLmliKCJQUmdtOGUiKTt0aGlzLkhhKHZpYSk7YyYmXy5lRihjLCJoaWRkZW4iLCEwKTthLnUoKS5kaXNhYmxlZD0hMX0sdGhpcyksYikpKTt0aGlzLkhhKHRpYSl9O18uVyh1Ry5wcm90b3R5cGUsInFyQjZDZiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56TH0pO18ud0c9ZnVuY3Rpb24oYSl7cmV0dXJuIDA8YS5GYigidEppRjFlIikuc2l6ZSgpfTt2Rz1mdW5jdGlvbihhKXtyZXR1cm4gMDxhLkZiKCJMd3R1QWMiKS5zaXplKCl9OyBfLnhHPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtfLndHKGEpP2Q9YS5yYSgidEppRjFlIik6dkcoYSkmJihkPWEucmEoIkx3dHVBYyIpKTtjPWN8fHt9O2Mud2J8fG51bGw9PWEuYnx8KGMud2I9YS5iKTtjLk1ifHxudWxsPT1hLmZ8fChjLk1iPWEuZik7ZCYmKGE9Xy5BdChhLmMsYixjKSxmeChkLHFyLGEpKX07CnZhciBDaWE9VigiV0ZTMTMiLCJXRlMxMyIsW2xGXSk7dmFyIHlHPWZ1bmN0aW9uKGEpe3lHLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pfTtfLm0oeUcsbUYpO18uWChDaWEse30seUcpO3ZhciB6RyxBRz1xeCgiT3E5WEhjIiwiT3E5WEhjIixbXy5CaV0pO3R4KEFHLCJwQjZacWQiKTtfLkJHPXF4KCJNakFkViIsIk1qQWRWIixbQUddKTt0eChfLkJHLCJwQjZacWQiKTtfLkNHPWZ1bmN0aW9uKGEpe18uQ0cuJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7YT1hLmlhLnpiLmNjKCk7dGhpcy5pPW5ldyBfLlN3KF8uZXIoIkpoVUQ4ZCIsYS5hKSk7dGhpcy5MYT10aGlzLmE9bnVsbH07Xy5tKF8uQ0csXy5Udik7Xy5oeShBRyx7aWE6e3piOl8uQml9fSxfLkNHKTtfLkNHLnByb3RvdHlwZS5lYT1mdW5jdGlvbihhKXt2YXIgYj1fLlR3KHRoaXMuaSwiLnROc0E1ZS1uVXBmdGMiKS5MZCgpO2ImJih0aGlzLmE9Xy5ERyhhLGIudSgpKSk7cmV0dXJuIF8uaWsodGhpcy5hKX07Xy5DRy5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oYSl7dGhpcy5MYT1hO3JldHVybiBuZXcgVWdhfTtfLkNHLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt9O3ZhciBEaWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuYX07CnZhciBFRz1mdW5jdGlvbihhLGIsYyl7Xy5Bay5jYWxsKHRoaXMpO3RoaXMuYT1udWxsO3RoaXMubz0hMTt0aGlzLmc9YTt0aGlzLmM9Yzt0aGlzLmI9Ynx8d2luZG93O3RoaXMuZj0oMCxfLmwpKHRoaXMuWEgsdGhpcyl9O18ubShFRyxfLkFrKTtfLmc9RUcucHJvdG90eXBlO18uZy5zdGFydD1mdW5jdGlvbigpe3RoaXMuc3RvcCgpO3RoaXMubz0hMTt2YXIgYT1GRyh0aGlzKSxiPUdHKHRoaXMpO2EmJiFiJiZ0aGlzLmIubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lPyh0aGlzLmE9Xy5xbCh0aGlzLmIsIk1vekJlZm9yZVBhaW50Iix0aGlzLmYpLHRoaXMuYi5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUobnVsbCksdGhpcy5vPSEwKTp0aGlzLmE9YSYmYj9hLmNhbGwodGhpcy5iLHRoaXMuZik6dGhpcy5iLnNldFRpbWVvdXQoXy5Saih0aGlzLmYpLDIwKX07Cl8uZy5zdG9wPWZ1bmN0aW9uKCl7aWYodGhpcy5jZSgpKXt2YXIgYT1GRyh0aGlzKSxiPUdHKHRoaXMpO2EmJiFiJiZ0aGlzLmIubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lP18ueGwodGhpcy5hKTphJiZiP2IuY2FsbCh0aGlzLmIsdGhpcy5hKTp0aGlzLmIuY2xlYXJUaW1lb3V0KHRoaXMuYSl9dGhpcy5hPW51bGx9O18uZy5jZT1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLmF9O18uZy5YSD1mdW5jdGlvbigpe3RoaXMubyYmdGhpcy5hJiZfLnhsKHRoaXMuYSk7dGhpcy5hPW51bGw7dGhpcy5nLmNhbGwodGhpcy5jLCgwLF8uVWEpKCkpfTtfLmcub2I9ZnVuY3Rpb24oKXt0aGlzLnN0b3AoKTtFRy4kLm9iLmNhbGwodGhpcyl9Owp2YXIgRkc9ZnVuY3Rpb24oYSl7YT1hLmI7cmV0dXJuIGEucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxhLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZXx8YS5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGEub1JlcXVlc3RBbmltYXRpb25GcmFtZXx8YS5tc1JlcXVlc3RBbmltYXRpb25GcmFtZXx8bnVsbH0sR0c9ZnVuY3Rpb24oYSl7YT1hLmI7cmV0dXJuIGEuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fGEuY2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxhLndlYmtpdENhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZXx8YS5tb3pDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGEub0NhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZXx8YS5tc0NhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZXx8bnVsbH07CnZhciBIRz1xeCgibGE1cVQiLCJsYTVxVCIsW0FHXSk7dHgoSEcsInBCNlpxZCIpO3ZhciBJRz1mdW5jdGlvbihhKXtJRy4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLnc9dGhpcy5mPXRoaXMuYj1udWxsO3RoaXMuYz1bXTt0aGlzLmphPVtdO3RoaXMuY2I9e307dGhpcy5CYT10aGlzLndhPSExO3RoaXMuZz1bXTt0aGlzLmhhPSIifSxNRyxGaWE7Xy5tKElHLF8uQ0cpO18uaHkoSEcse30sSUcpO18ud3goXy5kQy5MZSxIRyk7dmFyIEVpYT1bXy5oLnZpZXdQYXRoUHJlZml4KyJpbml0Il0sSkc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT0oYj9iOndpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvcignW2pzbmFtZT0iJythKyciXScpKT9uZXcgXy5TdyhhKTpudWxsfSxLRz1mdW5jdGlvbihhKXt2YXIgYj0iIjthJiYoYT1hLmFhKCkuZ2V0RGF0YSgiYnJhbmRpbmciKSxiPV8ua3goYSk/YS4kYSgpOiIiKTtyZXR1cm4gYn0sTEc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9KRyhhLGIuYWEoKS51KCkpOm51bGx9OwpJRy5wcm90b3R5cGUuZWE9ZnVuY3Rpb24oYSl7dmFyIGI9SkcoIm5VcGZ0YyIsdGhpcy5pLnUoKSk7YiYmKHRoaXMuYT1fLkRHKGEsYi51KCksd2luZG93LmRvY3VtZW50LnRpdGxlKSx0aGlzLmhhPUtHKHRoaXMuYSkpO3JldHVybiBfLmlrKHRoaXMuYSl9O0lHLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7YT1uZXcgXy5TdyhhLnJlbmRlcigpKTt2YXIgYj1fLkRHKHRoaXMuTGEsYSx3aW5kb3cuZG9jdW1lbnQudGl0bGUpLGM9ISF0aGlzLmcubGVuZ3RoLGQ9Xy5HcChfLm9DKGIpKS5iLGU9dGhpcy5jYltkXSxmPSJmb3J3YXJkLXBhZ2Utc2xpZGUiO2UmJiJmb3J3YXJkIj09ZS5uYXZpZ2F0aW9uRGlyZWN0aW9ufHwtMT09dGhpcy5qYS5pbmRleE9mKGQpfHwoZj0iYmFja3dhcmQtcGFnZS1zbGlkZSIpO2Q9e3Jvb3Q6YSxLQjpmLFFCOiExLHZpZXc6Yn07dGhpcy5nLnB1c2goZCk7Y3x8TUcodGhpcyxkKTthLkViKCk7Xy5neCh0aGlzLmksYSk7cmV0dXJuIF8uaWsoYil9OwpNRz1mdW5jdGlvbihhLGIpe2EuYj1hLmE7YS5hPWIudmlldzthLmY9TEcoInV5YmRWZSIsYS5hKTthLnc9TEcoIlVTQlFxZSIsYS5iKTt2YXIgYztpZihjPWEuYiljPShuZXcgXy5hYShfLm9DKGEuYikpKS5iLGM9LTE9PUVpYS5pbmRleE9mKGMpO2M/KGEud2E9ITAsYj1iLktCLGEuSmE9ImZvcndhcmQtcGFnZS1zbGlkZSI9PWI/IlFzamRDYiI6IkdFY2wwYyIsYS5lYj0iZm9yd2FyZC1wYWdlLXNsaWRlIj09Yj8iR0VjbDBjIjoiUXNqZENiIixhLmYuamIoIm1YZjlDIikuamIoYS5KYSksYS5CYT0hMCk6YS53YT0hMX07Xy5ORz1mdW5jdGlvbihhLGIpeyhuZXcgRUcoZnVuY3Rpb24oKXt0aGlzLmYuamIoImhBZmdpYyIpO0ZpYSh0aGlzLGIuS0IpfSxudWxsLGEpKS5zdGFydCgpfTsKRmlhPWZ1bmN0aW9uKGEsYil7cGwoYS5mLnUoKSxkbCxhLlVhLCExLGEpOyhuZXcgRUcoZnVuY3Rpb24oKXtpZih0aGlzLmYmJnRoaXMudyl7dmFyIGE9S0codGhpcy5hKTtpZihhIT10aGlzLmhhKXt2YXIgZD13aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2pzbmFtZT0ibjd2SENiIl0nKTtkJiYoXy5PdyhkLG5pYSxhLHZvaWQgMCx2b2lkIDApLHRoaXMuaGE9YSl9dGhpcy5iLmFhKCkuRWIoKTt0aGlzLmEuYWEoKS5zaG93KCk7YT1MRygiVVNCUXFlIix0aGlzLmEpOyJmb3J3YXJkLXBhZ2Utc2xpZGUiPT1iP2EuQmsodGhpcy53KTphLlFnKHRoaXMudyl9dGhpcy5mLnUoKS5vZmZzZXRXaWR0aCYmdGhpcy5mLmliKHRoaXMuSmEpLmpiKHRoaXMuZWIpfSxudWxsLGEpKS5zdGFydCgpO2EuQmE9ITF9OwpJRy5wcm90b3R5cGUuVWE9ZnVuY3Rpb24oKXt0aGlzLmYuaWIoImhBZmdpYyIpLmliKCJtWGY5QyIpLmliKCJHRWNsMGMiKS5pYigiUXNqZENiIik7dGhpcy5iJiYoXy5Qdyh0aGlzLmIuYWEoKS51KCksXy5wRiksdGhpcy53LnJlbW92ZSgpLHRoaXMuYi5hYSgpLnJlbW92ZSgpLHRoaXMuYj1udWxsKTt0aGlzLmcuc2hpZnQoKTt2YXIgYT10aGlzLmdbMF07YT9hLlFCPyhNRyh0aGlzLGEpLF8uTkcodGhpcyxhKSk6TUcodGhpcyxhKTpfLlB3KHRoaXMuaS51KCksXy5vRil9OwpfLkdpYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiZGZ2ZXJpZnkiLCJkZnZlcmlmeSIpO18uSGlhPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJsZWdhY3lyZWNvdmVyeSIsImxlZ2FjeXJlY292ZXJ5Iik7Xy5JaWE9Xy5FRigiaW5mby9zZXNzaW9uZXhwaXJlZCIsInNlc3Npb25leHBpcmVkIik7dmFyIE9HPVYoInpCNXciLCJ6QjV3IixbXy56XSk7dHgoT0csImQzeVpHZSIpO18uUEc9ZnVuY3Rpb24oYSl7Xy5QRy4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmE9YS5jb250cm9sbGVyLlJvO3RoaXMuYz10aGlzLkFkPSIiO3RoaXMudz1hLmlhLmRhO3RoaXMuYj1fLlV3KHRoaXMuYWEoKSwiLnpIUWtCZiIpO3RoaXMuZj1uZXcgXy5Sdyhbd2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi51SVpRTmMgLk1RTDNPYiIpXSl9O18ubShfLlBHLF8uankpO18uWChPRyx7aWE6e2RhOl8uen0sY29udHJvbGxlcjp7Um86IlZzYjVVYiJ9fSxfLlBHKTt2YXIgSmlhPS9ALztfLlBHLnByb3RvdHlwZS5nPTA7Xy5QRy5wcm90b3R5cGUuZGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5NeSgpfTtfLlcoXy5QRy5wcm90b3R5cGUsIkFFMmZjZiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaH0pOwpfLlBHLnByb3RvdHlwZS5ybT1mdW5jdGlvbigpe2lmKHRoaXMuZGgoKSYmdGhpcy5mLnUoKSl7dmFyIGE9SmlhLnRlc3QodGhpcy5vYSgpKTt0aGlzLmEuYWEoKS5hYigiWXVJSThiIixhKTtRRyh0aGlzKSYmXy5jeCh0aGlzLmIsInBhZGRpbmctcmlnaHQiLChhPzA6dGhpcy5nKSsicHgiKX1yZXR1cm4hMH07Xy5XKF8uUEcucHJvdG90eXBlLCJkaTBmSiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ybX0pO18uUEcucHJvdG90eXBlLkhuPWZ1bmN0aW9uKGEpezEzPT1hLmV2ZW50LmtleUNvZGUmJnRoaXMuSGEoVUUpO3JldHVybiEwfTtfLlcoXy5QRy5wcm90b3R5cGUsIkM5QmFYZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Ibn0pO18uUEcucHJvdG90eXBlLmZvY3VzPWZ1bmN0aW9uKCl7dGhpcy5hLmZvY3VzKCl9O18uVyhfLlBHLnByb3RvdHlwZSwiQUhtdXdlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmZvY3VzfSk7Cl8uUEcucHJvdG90eXBlLldoPWZ1bmN0aW9uKCl7dGhpcy5IYShfLlNFLHRoaXMuYil9O18uVyhfLlBHLnByb3RvdHlwZSwiSnQxRVgiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuV2h9KTtfLlBHLnByb3RvdHlwZS5oYXNGb2N1cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuVGIoKX07Xy5XKF8uUEcucHJvdG90eXBlLCJtTkZMOSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNGb2N1c30pO18uUEcucHJvdG90eXBlLk9uPWZ1bmN0aW9uKCl7dGhpcy5IYShfLlRFLHRoaXMuYil9O18uVyhfLlBHLnByb3RvdHlwZSwiZnBmVEVlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLk9ufSk7Xy5QRy5wcm90b3R5cGUuQ2E9ZnVuY3Rpb24oKXtRRyh0aGlzKSYmKHRoaXMuZz1fLnl3KHRoaXMuZi51KCkpLndpZHRoKTt0aGlzLnJtKCk7dmFyIGE9dGhpcy5vYSgpO2EmJih0aGlzLkhhKF8uQ3gsYSksdGhpcy5hLmFhKCkuamIoIkNERUxYYiIpKTtleCh0aGlzLmFhKCksImlzUmVuZGVyZWQiLCJ0cnVlIil9OwpfLlcoXy5QRy5wcm90b3R5cGUsIldZZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5DYX0pO3ZhciBRRz1mdW5jdGlvbihhKXtyZXR1cm4icnRsIj09d2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpJiYhIWEuZi51KCkmJmEuYS5hYSgpLmRjKCJLS2RsQmQiKX07Xy5QRy5wcm90b3R5cGUuQWE9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYS5BYShudWxsKTtiJiZjJiYoYT1fLkF0KHRoaXMudyxoaGEse2Vycm9yOmEsWnQ6YiwkdDpfLmgudmlld1BhdGhQcmVmaXgrY30pKTt0aGlzLmEuQWEoYSk7dGhpcy5BZD1hfHwiIn07Xy5XKF8uUEcucHJvdG90eXBlLCJkTXU3b2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWF9KTtfLlBHLnByb3RvdHlwZS5nZXRFcnJvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkFkfTtfLlcoXy5QRy5wcm90b3R5cGUsIlljZDhnZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRFcnJvcn0pOwpfLlBHLnByb3RvdHlwZS5MYz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5BZH07Xy5XKF8uUEcucHJvdG90eXBlLCJKajZMYWUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTGN9KTtfLlBHLnByb3RvdHlwZS5tYj1mdW5jdGlvbihhKXt0aGlzLmEubWIoYSl9O18uVyhfLlBHLnByb3RvdHlwZSwiVlJPVGtmIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm1ifSk7Xy5QRy5wcm90b3R5cGUub2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLm9hKCl9O18uVyhfLlBHLnByb3RvdHlwZSwiSHZuSzJiIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm9hfSk7Xy5QRy5wcm90b3R5cGUuVGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLlRiKCl9O18uVyhfLlBHLnByb3RvdHlwZSwidTNiVzRlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlRifSk7Xy5QRy5wcm90b3R5cGUuTXk9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldERhdGEoImVtYmVkcyIpO3JldHVybiBfLmt4KGEpP2EuJGEoKToiIn07Cl8uVyhfLlBHLnByb3RvdHlwZSwieUlTNG9jIixmdW5jdGlvbigpe3JldHVybiB0aGlzLk15fSk7Xy5QRy5wcm90b3R5cGUua2w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLnZqKClbMF19O18uVyhfLlBHLnByb3RvdHlwZSwiamJDY2ciLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2x9KTtfLlBHLnByb3RvdHlwZS5scT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEudmooKVsxXX07Xy5XKF8uUEcucHJvdG90eXBlLCJhTFlLMmUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubHF9KTtfLlBHLnByb3RvdHlwZS53aj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN9O18uVyhfLlBHLnByb3RvdHlwZSwicmYyWGIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2p9KTtfLlBHLnByb3RvdHlwZS5yaD1mdW5jdGlvbihhKXt0aGlzLmEucmgoYSl9O18uVyhfLlBHLnByb3RvdHlwZSwieklGSTBkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnJofSk7Cl8uUEcucHJvdG90eXBlLkRyPWZ1bmN0aW9uKGEsYil7Xy5SRyh0aGlzLmEsYSk7Xy5TRyh0aGlzLmEsYil9O18uVyhfLlBHLnByb3RvdHlwZSwiUFMwdm1lIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkRyfSk7Xy5QRy5wcm90b3R5cGUucmI9ZnVuY3Rpb24oYSl7dGhpcy5hLnJiKGEpfTtfLlcoXy5QRy5wcm90b3R5cGUsIk11UG1EZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYn0pO18uUEcucHJvdG90eXBlLmZlPWZ1bmN0aW9uKGEpe3RoaXMuYS5mZShhKTt0aGlzLmM9YXx8IiJ9O18uVyhfLlBHLnByb3RvdHlwZSwiaHc4MERjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmZlfSk7Xy5QRy5wcm90b3R5cGUubWk9ZnVuY3Rpb24oYSl7dGhpcy5hLm1pKGEpfTtfLlcoXy5QRy5wcm90b3R5cGUsImxNdjU3ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5taX0pOwpfLktpYT1fLkVGKCJpbmZvL3Vua25vd25lcnJvciIsInVua25vd25lcnJvciIpO3ZhciBURz1mdW5jdGlvbihhKXtURy4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmE9YS54ZS5nRnx8bmV3IE5EfTtfLm0oVEcsU3gpO0h6KF8uVUMse3hlOntnRjp7UWI6TkQsbmFtZToiY2xpZW50QXV0aENvbmZpZ0JyYW5kIn19fSxURyk7Xy5VRz1mdW5jdGlvbihhKXtfLlVHLiQuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbYS5rYV0pO3RoaXMuYT1hLnhlLnpxfHxuZXcgUmg7dGhpcy5nPWEueGEuZmE7d2luZG93Lm9uU21zUmVjZWl2ZWQ9KDAsXy5sKShmdW5jdGlvbihhKXt0aGlzLmI9YTtfLlB3KHdpbmRvdy5kb2N1bWVudCxYaGEsYSx0aGlzKX0sdGhpcyk7d2luZG93LnNldFNrVWlFdmVudD0oMCxfLmwpKGZ1bmN0aW9uKGEpe3RoaXMuamE9YTsic2VsZWN0X3ZpZXciPT1hLnR5cGUmJih0aGlzLmN8fCh0aGlzLmM9e30pLHRoaXMuY1thLmRhdGEudmlld05hbWVdPWEpO18uUHcod2luZG93LmRvY3VtZW50LFloYSxhLHRoaXMpfSx0aGlzKTt0aGlzLmY9ITF9O18ubShfLlVHLFN4KTtIeihfLlZDLHt4YTp7ZmE6Xy5YQ30seGU6e3pxOntRYjpSaCxuYW1lOiJpbml0aWFsU2V0dXBEYXRhIn19fSxfLlVHKTtfLlVHLnByb3RvdHlwZS52Yj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEudmIoKX07IF8uVkc9ZnVuY3Rpb24oYSxiKXtfLnQoYS5hLDE0LGIpfTtfLldHPWZ1bmN0aW9uKGEpe3JldHVybiBfLnIoYS5hLDE0KX07Xy5VRy5wcm90b3R5cGUuWmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLlpkKCl9Owp2YXIgTGlhPWZ1bmN0aW9uKGEsYixjKXtiPWN8fGI7dmFyIGQ9YS5MRTthPV8uSDtjPV8uUSgidmVyaWZ5U21zRGlhbG9nIik7dmFyIGU9KDAsXy5UKSgiIitfLlAoImRhIiwiIiwhMSkoZCxiKSksZj1iLGs9ZC5UZC5qfHxkLlRkO3ZhciBuPSc8ZGl2IGpzY29udHJvbGxlcj0iJytfLlUoIlZGTFJOZSIpKyciIGpzYWN0aW9uPSInK18uVSgibWVqYVBiIikrIjoiK18uVSgiV1dralkiKSsnIj4nO2lmKDMwPT1fLnlnKGspKWs9Xy5yKF8udyhrLF8ueWYsMTAyOCksMSksbis9Xy5QKCJnYSIsIiIsITEpKHtySzpfLlEoIiIrayl9LGYpO2Vsc2V7Xy53ZyhrKTt2YXIgcD1kLlRkLmp8fGQuVGQ7az1fLndnKHApO3A9Xy5yKF8ud2cocCksMSk7dmFyIEE9IiIsRD1fLmhkKGssMyksRj1ELmxlbmd0aDtpZigwPEYpZm9yKHZhciBJPTA7STxGO0krKylBKz0iVk9JQ0UiPT1EW0ldPyJ0cnVlIjoiIjtBPV8uUShBKTsxPF8uaGQoaywzKS5sZW5ndGgmJkE/KGY9Ikdvb2dsZSB3aWxsIHNlbmQgYSBvbmUtdGltZSB0ZXh0IG1lc3NhZ2Ugb3IgcGhvbmUgY2FsbCB0byBjb25maXJtIHRoYXQgIisKKF8uWEcoe1ZhOnB9KSsiIGlzIHlvdXJzLiIpLGY9KDAsXy5IKSgiIisoJzxwIGlkPSJjb25maXJtTWVzc2FnZSI+JytmKyI8L3A+IikpKToiVk9JQ0UiPT1fLmhkKGssMylbMF0/KGY9Ikdvb2dsZSB3aWxsIHNlbmQgYSBvbmUtdGltZSBwaG9uZSBjYWxsIHRvIGNvbmZpcm0gdGhhdCAiKyhfLlhHKHtWYTpwfSkrIiBpcyB5b3Vycy4iKSxmPSgwLF8uSCkoIiIrKCc8cCBpZD0iY29uZmlybU1lc3NhZ2UiPicrZisiPC9wPiIpKSk6Zj1fLlAoImhhIiwiIiwhMSkoe1ZxOnB9LGYpO2Y9KDAsXy5IKSgiIisoZisiIikpO24rPWZ9bj0oMCxfLkgpKG4rIjwvZGl2PiIpO249KDAsXy5UKSgiIituKTtmPWI7az1kLlRkLmp8fGQuVGQ7cD1BPSIiO2lmKDk9PV8ueWcoaykmJihEPV8ud2coayksRD1udWxsPT1EP251bGw6Xy5oZChELDMpLEY9RC5sZW5ndGgsMDxGKSlmb3IoST0wO0k8RjtJKyspcCs9IlZPSUNFIj09RFtJXT8idHJ1ZSI6IiI7cD1fLlEocCk7aWYoRD05PT1fLnlnKGspKUQ9Xy53ZyhrKSwKRD0xPChudWxsPT1EP251bGw6Xy5oZChELDMpKS5sZW5ndGg7RCYmcD8oZD0iIisoIiIrXy5jeih7Y29udGVudDooMCxfLlQpKCJHZXQgYSBjYWxsIiksQmI6Xy5RKCJnMjJZY2UiKSxpZDpfLlEoImRpYWxvZy12b2ljZW1ldGhvZCIpfSkrIiIpLGQ9KDAsXy5IKShkKSxwPSIiKygiIitfLmN6KHtjb250ZW50OigwLF8uVCkoIlNlbmQgdGV4dCBtZXNzYWdlIiksQmI6Xy5RKCJxSGEzcmUiKSxpZDpfLlEoImRpYWxvZy1zbXNtZXRob2QiKSxIcTohMH0pKyIiKSxwPSgwLF8uSCkocCksZCs9cCk6KGQ9ZHx8e30sZD0oMCxfLkgpKCIiK18uY3ooe2NvbnRlbnQ6KDAsXy5UKSgiIitfLlAoImVhIiwiIiwhMSkoZCxmKSksQmI6Xy5RKCJubzE2emMiKSxpZDpfLlEoInNtc2RpYWxvZy1hY2NlcHQiKSxIcTohMH0pKyIiKSk7QSs9ZCsoIlVTRVJOQU1FX1JFQ09WRVJZIiE9ay5nZXRDb250ZXh0KCk/Xy5QKCJmYSIsIiIsITEpKG51bGwsZik6IiIpKyIiO2Q9KDAsXy5IKShBKTtyZXR1cm4gYSgiIisKXy5ieih7U3A6ITEsTmM6ITAsaWQ6Yyx0aXRsZTplLGNvbnRlbnQ6bixidXR0b25zOigwLF8uVCkoIiIrZCl9LGIpKyIiKX07Xy5PKCJkYSIsIiIsMCxmdW5jdGlvbihhKXt2YXIgYj0iIjtiPTMwPT1fLnlnKGEuVGQuanx8YS5UZCk/YisiVmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyI6YisiVmVyaWZ5IHlvdXIgbnVtYmVyIjtyZXR1cm4oMCxfLkgpKGIpfSk7Xy5PKCJlYSIsIiIsMCxmdW5jdGlvbihhKXt2YXIgYj0iIjtiPTMwPT1fLnlnKGEuVGQuanx8YS5UZCk/YisiU2VuZCI6YisiVmVyaWZ5IjtyZXR1cm4oMCxfLkgpKGIpfSk7Xy5PKCJmYSIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIiIrXy5jeih7Y29udGVudDooMCxfLlQpKCIiK18uS0YoKSksQmI6Xy5RKCJIUnp3M2IiKSxpZDpfLlEoInNtc2RpYWxvZy1kZWNsaW5lIil9KSsiIil9KTsKXy5PKCJnYSIsIiIsMCxmdW5jdGlvbihhKXthPWEucks7YT0oMCxfLkgpKCc8c3BhbiBjbGFzcz0iJytfLlUoInlYeEN5ZSIpKyciIGlkPSJpZHZkaWFsb2ctZW1haWwiIGRpcj0ibHRyIj4nK18uSyhhKSsiPC9zcGFuPiIpO3JldHVybigwLF8uSCkoIiIrKCc8cCBpZD0iY29uZmlybU1lc3NhZ2UiPkdvb2dsZSB3aWxsIHNlbmQgYW4gZW1haWwgd2l0aCBhIG9uZS10aW1lIHZlcmlmaWNhdGlvbiBjb2RlIHRvICcrYSsiPC9wPiIpKX0pO18uTygiaGEiLCIiLDAsZnVuY3Rpb24oYSl7dmFyIGI9IiI7YT0iR29vZ2xlIHdpbGwgc2VuZCBhIG9uZS10aW1lIHRleHQgbWVzc2FnZSB0byBjb25maXJtIHRoYXQgIisoXy5YRyh7VmE6YS5WcX0pKyIgaXMgeW91cnMuIik7Yis9JzxwIGlkPSJjb25maXJtTWVzc2FnZSI+JythKyc8L3A+PHAgY2xhc3M9IicrXy5VKCJoMk1LYWQiKSsnIj5TdGFuZGFyZCByYXRlcyBhcHBseTwvcD4nO3JldHVybigwLF8uSCkoYil9KTsgXy5YRz1mdW5jdGlvbihhKXthPWEuVmE7cmV0dXJuKDAsXy5IKSgnPHNwYW4gY2xhc3M9IicrXy5VKCJ5WHhDeWUiKSsnIiBpZD0ic21zZGlhbG9nLW51bWJlciIgZGlyPSJsdHIiPicrXy5LKGEpKyI8L3NwYW4+Iil9OwpfLllHPXF4KCJseDV6VGUiLCJseDV6VGUiLFtfLiR6LF8uV3osXy5Zel0pO3ZhciBaRz1mdW5jdGlvbihhKXtaRy4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmY9YS5sLnJlcXVlc3Q7dGhpcy5hPWEubC5uYXZpZ2F0aW9uO3RoaXMuYj1hLmwuQmh9O18ubShaRyxfLlR2KTtfLmh5KF8uWUcse2w6e0JoOl8uJHosbmF2aWdhdGlvbjpfLld6LHJlcXVlc3Q6Xy5Zen19LFpHKTsKWkcucHJvdG90eXBlLmM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBrPW5ldyBfLkdnO18ucihiLmEsMzUpP18uSGcoayxfLnIoYi5hLDM1KSk6KF8uSGcoayxiLmdldFBob25lTnVtYmVyKCkpLF8uS2coayxfLnIoYi5hLDE0KSkpO25iYShrLGIuQ2IoKSk7b2JhKGssYi5wYygpKTtfLkxnKGssYi5OaCgpKTtfLk1nKGssXy52KGMuYSw2LCExKSk7Xy5JZyhrLF8uV0coYSkpO3ZhciBuPV8uWkMoYyxfLmVEKGIpKTtfLmtkKGssMTEsbik7ZiYmXy5KZyhrLGYpO2Y9eyJmLnJlcSI6a307ZCYmKGYuYmdSZXF1ZXN0PWQpO3ZhciBwPV8ubUModGhpcy5hKTtmPXRoaXMuZi5tYWtlUmVxdWVzdCgiL18vbG9va3VwL2FjY291bnRsb29rdXAiLGYsXy5OZyk7Xy53bShmLGZ1bmN0aW9uKGYpe2lmKHA9PV8ubUModGhpcy5hKSlzd2l0Y2goZi5EYigpJiZfLlZHKGEsZi5EYigpKSxmLmZiKCkpe2Nhc2UgMTE6Y2FzZSA3Ol8uRkIodGhpcy5hLCJub2FjY291bnRzIik7YnJlYWs7Y2FzZSAxOmYuemMoKS5sZW5ndGg/CihfLmREKGIsZi56YygpKSxfLkZCKHRoaXMuYSwicmVjb3ZlcnljaG9vc2VyIikpOl8uRkIodGhpcy5hLCJub2FjY291bnRzIik7YnJlYWs7Y2FzZSA2Ol8uJEcodGhpcy5iLGMsYSxiLGYuTmIoKSxlKTticmVhaztjYXNlIDU6dmFyIGs9bmV3IF8ucGY7Zj1mLlRjKCk7Xy5rZChrLDIsZik7Zj1uZXcgXy5yZztfLnQoZiwzLCJVU0VSTkFNRV9SRUNPVkVSWSIpO18udChmLDksMTgpO18udChmLDYsIklOSVRJQUxJWkVEIik7Xy5rZChmLDUwMTgsayk7az1uZXcga2c7Xy5sZChrLDEsW2ZdKTtfLnQoayw0LDEpO18udChrLDYsMyk7Zj0oMCxfLmwpKHRoaXMuYyx0aGlzLGEsYixjLGQpO2IuYz1mO18uJEcodGhpcy5iLGMsYSxiLGssZSk7YnJlYWs7Y2FzZSAzOmNhc2UgMjpfLkZCKHRoaXMuYSwidXNlcm5hbWVyZWNvdmVyeSIse2Vycm9yOmYuQmUoKX0pfX0sdGhpcyk7Xy5JQyh0aGlzLmYsZixiKX07Cl8uTWlhPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvYXoiLCJheiIpO18uTmlhPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvYmMiLCJiYyIpO18uT2lhPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvY2FwdGNoYSIsImNhcHRjaGEiKTtfLlBpYT1fLkVGKCJzaWduaW4vdjIvdXNlcm5hbWVyZWNvdmVyeS9jaGFsbGVuZ2UvY2FwdGNoYSIsImNhcHRjaGEiKTtfLlFpYT1fLkVGKCJzaWduaW4vdjIvY2hhbGxlbmdlL2NwIiwiY3AiKTtfLlJpYT1fLkVGKCJzaWduaW4vdjIvY2hhbGxlbmdlL2lhZSIsImlhZSIpO18uU2lhPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvaWFlL3ZlcmlmeSIsImlkdmFueWVtYWlsdmVyaWZ5Iik7Xy5UaWE9Xy5FRigic2lnbmluL3YyL2NoYWxsZW5nZS9pYXAiLCJpYXAiKTtfLlVpYT1fLkVGKCJzaWduaW4vdjIvY2hhbGxlbmdlL2lhcC92ZXJpZnkiLCJpZHZhbnlwaG9uZXZlcmlmeSIpO18uVmlhPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvaXBlIiwiaXBlIik7Xy5XaWE9Xy5FRigic2lnbmluL3YyL3VzZXJuYW1lcmVjb3ZlcnkvY2hhbGxlbmdlL2lwZSIsImlwZSIpO18uWGlhPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvaXBwIiwiaXBwIik7Xy5ZaWE9Xy5FRigic2lnbmluL3YyL3VzZXJuYW1lcmVjb3ZlcnkvY2hhbGxlbmdlL2lwcCIsImlwcCIpO18uWmlhPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvaXRmIiwiaXRmIik7Xy4kaWE9Xy5FRigic2lnbmluL3YyL2NoYWxsZW5nZS9hY2QiLCJhY2QiKTtfLmFqYT1fLkVGKCJzaWduaW4vdjIvY2hhbGxlbmdlL2RvYiIsImRvYiIpO18uYmphPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvbGxkIiwibGxkIik7Xy5jamE9Xy5FRigic2lnbmluL3YyL2NoYWxsZW5nZS9sbCIsImxsIik7Xy5kamE9Xy5FRigic2lnbmluL3YyL2NoYWxsZW5nZS9ybiIsInJuIik7Xy5lamE9Xy5FRigic2lnbmluL3YyL2NoYWxsZW5nZS9rcGUiLCJrcGUiKTtfLmZqYT1fLkVGKCJzaWduaW4vdjIvY2hhbGxlbmdlL2twcCIsImtwcCIpO18uZ2phPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2Uvc3EiLCJzcSIpO18uaGphPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2UvbXIiLCJtYW51YWxyZWNvdmVyeSIpO18uaWphPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2Uvb290cCIsIm9vdHAiKTtfLmpqYT1fLkVGKCJzaWduaW4vdjIvY2hhbGxlbmdlL3JrIiwicmsiKTtfLmtqYT1fLkVGKCJzaWduaW4vdjIvY2hhbGxlbmdlL3Nkc2wiLCJzZHNsIik7Xy5samE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImJsZWVuYWJsZSIsImJsZWVuYWJsZSIpO18ubWphPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJibGVpbnN0cnVjdGlvbnNub3RwYWlyZWQiLCJibGVpbnN0cnVjdGlvbnNub3RwYWlyZWQiKTtfLm5qYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYmxlaW5zdHJ1Y3Rpb25zcGFpcmVkIiwiYmxlaW5zdHJ1Y3Rpb25zcGFpcmVkIik7Xy5vamE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImJsZXBhaXJpbmdtb2RlIiwiYmxlcGFpcmluZ21vZGUiKTtfLnBqYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYmxlcGlucGFpcmluZyIsImJsZXBpbnBhaXJpbmciKTtfLnFqYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYmxlcHJvY2Vzc2luZyIsImJsZXByb2Nlc3NpbmciKTtfLnJqYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYmxlc2VsZWN0ZGV2aWNlIiwiYmxlc2VsZWN0ZGV2aWNlIik7Xy5zamE9Xy5FRigic2lnbmluL3YyL2NoYWxsZW5nZS9zayIsImNoYWxsZW5nZXNlY3VyaXR5a2V5Iik7Xy50amE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrIm11bHRpdHJhbnNwb3J0IiwibXVsdGl0cmFuc3BvcnQiKTtfLnVqYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsibmZjZW5hYmxlIiwibmZjZW5hYmxlIik7Xy52amE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrIm5mY2luc3RydWN0aW9ucyIsIm5mY2luc3RydWN0aW9ucyIpO18ud2phPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJ0b3N0b3NhbWxyZWRpcmVjdCIsInRvc3Rvc2FtbHJlZGlyZWN0Iik7Xy54amE9Xy5FRigic2lnbmluL3YyL2NoYWxsZW5nZS90b3RwIiwidG90cCIpO18ueWphPV8uRUYoInNpZ25pbi92Mi9jaGFsbGVuZ2Uvc2VsZWN0aW9uIiwic2VsZWN0aW9uIik7Xy56amE9Xy5FRigic2lnbmluL3YyL3JlY292ZXJ5L2J1bXAiLCJyZWNvdmVyeWJ1bXAiKTtfLkFqYT1fLkVGKCJjb25uZWN0YnlwaG9uZS9kZWZhdWx0IiwiY29uc3RlbGxhdGlvbiIpO18uQmphPV8uRUYoImNvbm5lY3RieXBob25lL21vcmVvcHRpb25zIiwiY29uc3RlbGxhdGlvbm1vcmVvcHRpb25zIik7Xy5DamE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImRlbmllZHNpZ25pbnJlamVjdGVkIiwiZGVuaWVkc2lnbmlucmVqZWN0ZWQiKTtfLkRqYT1fLkVGKCJzaWduaW4vb2F1dGgvZGV2aWNlL2Vycm9yIiwiZGV2aWNlY29kZWVycm9yIik7Xy5FamE9Xy5FRigic2lnbmluL29hdXRoL2RldmljZS9kb25lIiwiZGV2aWNlY29kZXJlc3VsdCIpO18uRmphPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJraWRyZWplY3RlZCIsImtpZHJlamVjdGVkIik7Xy5HamE9Xy5FRigic2lnbmluL29hdXRoL25lZWRwYXJlbnQiLCJvYXV0aG5lZWRwYXJlbnQiKTtfLkhqYT1fLkVGKCJzaWduaW4vdjIvcGFyZW50aWRlbnRpZmllciIsInBhcmVudGlkZW50aWZpZXIiKTtfLklqYT1fLkVGKCJzaWduaW4vdjIvcGFyZW50cHJlc2VuY2UiLCJwYXJlbnRwcmVzZW5jZSIpO18uSmphPV8uRUYoInNpZ25pbi92Mi9wYXJlbnRzZWxlY3RvciIsInBhcmVudHNlbGVjdG9yIik7Xy5LamE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrInJlY292ZXJ5Y2hvb3NlciIsInJlY292ZXJ5Y2hvb3NlciIpO18uTGphPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJzaWduaW5jaG9vc2VyIiwic2lnbmluY2hvb3NlciIpO18uTWphPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJkZmlkZW50aWZpZXIiLCJkZmlkZW50aWZpZXIiKTtfLk5qYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiZXhpc3RpbmdhY2NvdW50cyIsImV4aXN0aW5nYWNjb3VudHMiKTtfLk9qYT1fLkVGKCJzaWduaW4vdjIvZXhwZXJpbWVudGFsaWRlbnRpZmllciIsImV4cGVyaW1lbnRhbGlkZW50aWZpZXIiKTtfLlBqYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsibm9hY2NvdW50cyIsIm5vYWNjb3VudHMiKTtfLlFqYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsicXVlcnluYW1lIiwicXVlcnluYW1lIik7Xy5SamE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrInNoYWRvd2Rpc2FtYmlndWF0ZSIsInNoYWRvd2Rpc2FtYmlndWF0ZSIpO18uU2phPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJ1bnN1cHBvcnRlZHBob25lIiwidW5zdXBwb3J0ZWRwaG9uZSIpO18uVGphPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJ1c2VybmFtZXJlY292ZXJ5IiwidXNlcm5hbWVyZWNvdmVyeSIpO18uVWphPV8uRUYoImVtYmVkZGVkL211bHRpbG9naW5lcnJvciIsIm11bHRpbG9naW5lcnJvciIpO18uVmphPV8uRUYoImVtYmVkZGVkL211bHRpbG9naW5zdW1tYXJ5IiwibXVsdGlsb2dpbnN1bW1hcnkiKTtfLldqYT1fLkVGKCJlbWJlZGRlZC9tdWx0aWxvZ2ludGltZW91dCIsIm11bHRpbG9naW50aW1lb3V0Iik7Xy5YamE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImNvbnNlbnQiLCJjb25zZW50Iik7Xy5ZamE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrIm9hdXRoY2hvb3NlYWNjb3VudCIsIm9hdXRoY2hvb3NlYWNjb3VudCIpO18uWmphPV8uRUYoInNpZ25pbi9vYXV0aC9kbnAiLCJvYXV0aGRucCIpO18uJGphPV8uRUYoInNpZ25pbi9vYXV0aC9wYXJlbnRjb25zZW50IiwicGFyZW50Y29uc2VudCIpO18uYWthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJhbmRyb2lkcmVhdXRoIiwiYW5kcm9pZHJlYXV0aCIpO18uYmthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJyZWF1dGgiLCJyZWF1dGgiKTtfLmNrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYWNjb3VudGxvY2tkb3duIiwiYWNjb3VudGxvY2tkb3duIik7Xy5ka2E9Xy5FRigiYWRkZGV2aWNlcGhvbmUvbWFpbmNvbnNlbnQiLCJhZGRkZXZpY2VwaG9uZSIpO18uZWthPV8uRUYoImFkZGRldmljZXBob25lL21vcmVvcHRpb25zIiwiYWRkZGV2aWNlcGhvbmVtb3Jlb3B0aW9ucyIpO18uZmthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJhZGRyZWFjaGFibGVwaG9uZWFjY2VwdCIsImFkZHJlYWNoYWJsZXBob25lYWNjZXB0Iik7Xy5na2E9Xy5FRigiYWRkcmVhY2hhYmxlcGhvbmVhY2NlcHQvbW9yZW9wdGlvbnMiLCJwaG9uZW1vcmVvcHRpb25zIik7Xy5oa2E9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImFkZHJlYWNoYWJsZXBob25ldmVyaWZ5IiwiYWRkcmVhY2hhYmxlcGhvbmV2ZXJpZnkiKTtfLmlrYT1fLkVGKCJhZGRyZWNvdmVyeW9ubHlwaG9uZS9tYWluIiwiYWRkcmVjb3Zlcnlvbmx5cGhvbmUiKTtfLmprYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYXV0aG9yaXplZGV2aWNlIiwiYXV0aG9yaXplZGV2aWNlIik7Xy5ra2E9Xy5FRigic3BlZWRidW1wL3N3aXRjaHRvZ3Byb21wdCIsImF1dGh6ZW5vcHRpbiIpO18ubGthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJjYXB0Y2hhcmVlbmFibGUiLCJjYXB0Y2hhcmVlbmFibGUiKTtfLm1rYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiY2hhbmdlcGFzc3dvcmQiLCJjaGFuZ2VwYXNzd29yZCIpO18ubmthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJuZXdmZWF0dXJlcyIsIm5ld2ZlYXR1cmVzIik7Xy5va2E9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrIm5ld2ZlYXR1cmVzaW5mbyIsIm5ld2ZlYXR1cmVzaW5mbyIpO18ucGthPV8uRUYoInNpZ25pbi92Mi9kaXNhYmxlZC9hcHBlYWwvYWRkaXRpb25hbGluZm9ybWF0aW9uIiwiYWRkaXRpb25hbGluZm9ybWF0aW9uIik7Xy5xa2E9Xy5FRigic2lnbmluL3YyL2Rpc2FibGVkL2FwcGVhbC9jb25maXJtYXRpb24iLCJjb25maXJtYXRpb24iKTtfLnJrYT1fLkVGKCJzaWduaW4vdjIvZGlzYWJsZWQvYXBwZWFsL2NvbnRhY3RhZGRyZXNzIiwiY29udGFjdGFkZHJlc3MiKTtfLnNrYT1fLkVGKCJzaWduaW4vdjIvZGlzYWJsZWQvZXhwbGFuYXRpb24iLCJleHBsYW5hdGlvbiIpO18udGthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJlbmRzZXNzaW9uIiwiZW5kc2Vzc2lvbiIpO18udWthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJnYXBsdXN0b3MiLCJnYXBsdXN0b3MiKTtfLnZrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiaWR2cmVlbmFibGVzZW5kIiwiaWR2cmVlbmFibGVzZW5kIik7Xy53a2E9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImlkdnJlZW5hYmxldmVyaWZ5IiwiaWR2cmVlbmFibGV2ZXJpZnkiKTtfLnhrYT1fLkVGKCJzcGVlZGJ1bXAva2lkZm9yY2VncmFkdWF0aW9uIiwia2lkZm9yY2VncmFkdWF0aW9uIik7Xy55a2E9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImFwcHBlcm1pc3Npb25zIiwiYXBwcGVybWlzc2lvbnMiKTtfLnprYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiY29uc2VudGNvbmZpcm1hdGlvbiIsImNvbnNlbnRjb25maXJtYXRpb24iKTtfLkFrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiZGlzY2xhaW1lciIsImRpc2NsYWltZXIiKTtfLkJrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsicGxhdGZvcm1kaXNjbGFpbWVyIiwicGxhdGZvcm1kaXNjbGFpbWVyIik7Xy5Da2E9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrInN5bmN3ZWxjb21lIiwic3luY3dlbGNvbWUiKTtfLkRrYT1fLkVGKCJzcGVlZGJ1bXAva2lkc2lnbnVwL2NvbnNlbnQiLCJraWRzaWdudXBjb25zZW50Iik7Xy5Fa2E9Xy5FRigic3BlZWRidW1wL2tpZHNpZ251cC9jcmVhdGVkIiwia2lkc2lnbnVwY3JlYXRlZCIpO18uRmthPV8uRUYoInNwZWVkYnVtcC9raWRzaWdudXAvZG5wIiwia2lkc2lnbnVwZG5wIik7Xy5Ha2E9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImtpZHNpZ251cGVycm9yIiwia2lkc2lnbnVwZXJyb3IiKTtfLkhrYT1fLkVGKCJzcGVlZGJ1bXAva2lkc2lnbnVwL2ZhbWlseSIsImtpZHNpZ251cGZhbWlseSIpO18uSWthPV8uRUYoInNwZWVkYnVtcC9raWRzaWdudXAvaW5mbyIsImtpZHNpZ251cGluZm8iKTtfLkprYT1fLkVGKCJzcGVlZGJ1bXAva2lkc2lnbnVwL3BhcmVudGJpcnRoZGF5Iiwia2lkc2lnbnVwcGFyZW50YmlydGhkYXkiKTtfLktrYT1fLkVGKCJzcGVlZGJ1bXAva2lkc2lnbnVwL3BheW1lbnQiLCJraWRzaWdudXBwYXltZW50Iik7Xy5Ma2E9Xy5FRigic3BlZWRidW1wL2tpZHNpZ251cC9xdWl0Iiwia2lkc2lnbnVwcXVpdCIpO18uTWthPV8uRUYoInNwZWVkYnVtcC9raWRzaWdudXAvc2V0dGluZ3MiLCJraWRzaWdudXBzZXR0aW5ncyIpO18uTmthPV8uRUYoInNwZWVkYnVtcC9raWRzaWdudXAiLCJraWRzaWdudXBzdGFydCIpO18uT2thPV8uRUYoInNwZWVkYnVtcC9raWRzaWdudXAvc3VibWl0Iiwia2lkc2lnbnVwc3VibWl0Iik7Xy5Qa2E9Xy5FRigic3BlZWRidW1wL2tpZHNpZ251cC91cHNlbGwiLCJraWRzaWdudXB1cHNlbGwiKTtfLlFrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsic2lnbmluY29uc2VudCIsInNpZ25pbmNvbnNlbnQiKTtfLlJrYT1fLkVGKCJzcGVlZGJ1bXAvdmVyaWZ5YWNjb3VudGVudGVycGluIiwidmVyaWZ5YWNjb3VudGVudGVycGluIik7Xy5Ta2E9Xy5FRigic3BlZWRidW1wL3ZlcmlmeWFjY291bnRzdGFydCIsInZlcmlmeWFjY291bnRzdGFydCIpO18uVGthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJhdXRocmVzdWx0IiwiYXV0aHJlc3VsdCIpO3ZhciBkSDtfLmFIPWZ1bmN0aW9uKGEpe18uYUguJC5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLFthLmthXSk7dGhpcy5nPWEuaWEuZGE7dGhpcy5hPWEubC5uYXZpZ2F0aW9uO3RoaXMuZj1hLmwuQWI7dGhpcy5jPWEubC5qZDtfLlV2KHRoaXMsdGhpcy5iKCkpfTtfLm0oXy5hSCxfLlR2KTtfLmh5KF8uJHose2lhOntkYTpfLnp9LGw6e0FiOl8uanosbmF2aWdhdGlvbjpfLld6LGpkOl8uaXp9fSxfLmFIKTtfLmFILnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7fTsKXy4kRz1mdW5jdGlvbihhLGIsYyxkLGUsZil7Xy5nRChkLGUpO2lmKDI9PV8ucihlLDQpKWEuRUIoKT9hLkd0KGIsYyk6KF8uaUQoZCwwKSxiPXt9LGIubGlkPV8ucihlLDMpLF8uYkgoYSxkLCJzaWduaW4vdjIvY2hhbGxlbmdlL3NlbGVjdGlvbiIsYikpO2Vsc2V7YTp7dmFyIGs9Xy5yKGUsNSk7Zm9yKHZhciBuPTA7bjxfLm5nKGUpLmxlbmd0aDtuKyspaWYoXy5yKF8ubmcoZSlbbl0sNCk9PWspe2s9bjticmVhayBhfWs9MH1fLmlEKGQsayk7Xy5jSChhLGIsYyxkLF8ubmcoZSlba10sZil9fTsKXy5jSD1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoYS5GQihkLGUpKWEuR3QoYixjKTtlbHNlIGlmKF8ua0QoZCxfLnlnKGUpKSl7Yj1fLnlnKGUpO2lmKCJFUlJPUiI9PWUuZmIoKSYmNCE9YiYmOSE9YilmPSJpbmZvL3Vua25vd25lcnJvciI7ZWxzZSBzd2l0Y2goYil7Y2FzZSAxOmY9Xy5mQyhhLmEpPyJzaWduaW4vdjIvY2hhbGxlbmdlL3B3ZCI6InNpZ25pbi92Mi9zbC9wd2QiO2JyZWFrO2Nhc2UgMTg6Zj0iVVNFUk5BTUVfUkVDT1ZFUlkiPT1lLmdldENvbnRleHQoKT8ic2lnbmluL3YyL3VzZXJuYW1lcmVjb3ZlcnkvY2hhbGxlbmdlL2NhcHRjaGEiOiJzaWduaW4vdjIvY2hhbGxlbmdlL2NhcHRjaGEiO2JyZWFrO2Nhc2UgNjpmPSJzaWduaW4vdjIvY2hhbGxlbmdlL3RvdHAiO2JyZWFrO2Nhc2UgMjphLmRCKGUpO2Y9InNpZ25pbi92Mi9jaGFsbGVuZ2Uvc2siO2JyZWFrO2Nhc2UgNzpmPSJzaWduaW4vdjIvY2hhbGxlbmdlL2l0ZiI7YnJlYWs7Y2FzZSA4OmY9InNpZ25pbi92Mi9jaGFsbGVuZ2UvYmMiOwpicmVhaztjYXNlIDEyOmY9InNpZ25pbi92Mi9jaGFsbGVuZ2Uva3BlIjticmVhaztjYXNlIDk6Y2FzZSAzMDpmPWEuUXkoZSxmKTticmVhaztjYXNlIDE3OnN3aXRjaChlLmZiKCkpe2Nhc2UgIlNFTkRfU1VDQ0VTUyI6Zj0ic2lnbmluL3YyL2NoYWxsZW5nZS9pYXAvdmVyaWZ5IjticmVhaztkZWZhdWx0OmY9InNpZ25pbi92Mi9jaGFsbGVuZ2UvaWFwIn1icmVhaztjYXNlIDI2OnN3aXRjaChlLmZiKCkpe2Nhc2UgIlNFTkRfU1VDQ0VTUyI6Zj0ic2lnbmluL3YyL2NoYWxsZW5nZS9pYWUvdmVyaWZ5IjticmVhaztkZWZhdWx0OmY9InNpZ25pbi92Mi9jaGFsbGVuZ2UvaWFlIn1icmVhaztjYXNlIDEzOmY9InNpZ25pbi92Mi9jaGFsbGVuZ2Uva3BwIjticmVhaztjYXNlIDI0OmY9InNpZ25pbi92Mi9jaGFsbGVuZ2UvYWNkIjticmVhaztjYXNlIDE0OmY9InNpZ25pbi92Mi9jaGFsbGVuZ2UvY3AiO2JyZWFrO2Nhc2UgMzM6Zj0ic2lnbmluL3YyL2NoYWxsZW5nZS9sbGQiO2JyZWFrO2Nhc2UgMTY6Zj0KInNpZ25pbi92Mi9jaGFsbGVuZ2UvbGwiO2JyZWFrO2Nhc2UgMTA6Zj0iY2hhbGxlbmdleW91dHViZSI7YnJlYWs7Y2FzZSA1OmY9InNpZ25pbi92Mi9jaGFsbGVuZ2Uvb290cCI7YnJlYWs7Y2FzZSAyMzpmPSJzaWduaW4vdjIvY2hhbGxlbmdlL3JrIjticmVhaztjYXNlIDIwOmY9YS5zcShlLGYpO2JyZWFrO2Nhc2UgMjg6Zj0ic2lnbmluL3YyL2NoYWxsZW5nZS9ybiI7YnJlYWs7Y2FzZSAyNzpmPSJzaWduaW4vdjIvY2hhbGxlbmdlL2RvYiI7YnJlYWs7Y2FzZSAxNTpmPSJzaWduaW4vdjIvY2hhbGxlbmdlL3NxIjticmVhaztjYXNlIDQ6Zj0ic2lnbmluL3YyL2NoYWxsZW5nZS9heiI7YnJlYWs7Y2FzZSAzMjpmPSJzaWduaW4vdjIvY2hhbGxlbmdlL3Nkc2wiO2JyZWFrO2Nhc2UgMjk6Zj0ic2lnbmluL3YyL2NoYWxsZW5nZS9tciI7YnJlYWs7ZGVmYXVsdDpmPSJpbmZvL3Vua25vd25lcnJvciJ9ZiYmKGI9e30sImluZm8vdW5rbm93bmVycm9yIiE9ZiYmKGIuY2lkPV8ucihlLDQpKSwKXy5iSChhLGQsZixiKSl9ZWxzZSBlPV8uR3AoIi9zaWduaW4vY2hhbGxlbmdlIiksXy5DcChlLCJjb250aW51ZSIsXy5hRChkLmIpKSxfLnBDKGEuYSxlLnRvU3RyaW5nKCkpfTtfLmJIPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWRIKGEsTXopfHxkSChhLHVnYSksZj1kSChhLHRnYSksaz1kSChhLHZnYSk7ZXx8Zj9fLnYoYi5iLmEsNjEsITEpJiZrP18uRkIoYS5hLGMsZCk6Xy5EQihhLmEsYyxkKTpfLkZCKGEuYSxjLGQpfTtkSD1mdW5jdGlvbihhLGIpe3ZhciBjPV8ubUMoYS5hKTthPV8ubkMoYS5hKTtyZXR1cm4gZmMoYixjKXx8ZmMoYixhKX07Xy5nPV8uYUgucHJvdG90eXBlOwpfLmcuUXk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1udWxsO3N3aXRjaChhLmZiKCkpe2Nhc2UgIklOSVRJQUxJWkVEIjpiLkthJiZiLkthKCk7dGhpcy5mLnJlbmRlcihMaWEse0xFOntUZDphfX0sYikuc2hvdygpO2JyZWFrO2RlZmF1bHQ6IlVTRVJOQU1FX1JFQ09WRVJZIj09YS5nZXRDb250ZXh0KCk/Yz0zMD09Xy55ZyhhKT8ic2lnbmluL3YyL3VzZXJuYW1lcmVjb3ZlcnkvY2hhbGxlbmdlL2lwZSI6InNpZ25pbi92Mi91c2VybmFtZXJlY292ZXJ5L2NoYWxsZW5nZS9pcHAiOmM9MzA9PV8ueWcoYSk/InNpZ25pbi92Mi9jaGFsbGVuZ2UvaXBlIjoic2lnbmluL3YyL2NoYWxsZW5nZS9pcHAifXJldHVybiBjfTsKXy5nLnNxPWZ1bmN0aW9uKGEsYil7Xy53bShiLnhqKF8uV0MpLGZ1bmN0aW9uKGIpe3ZhciBjPW5ldyBfLmFhKF8ucihfLncoYSxfLlhmLDEwMjApLDEpKTtfLkNwKGMsImNvbnRpbnVlIixfLmFEKGIpKTtfLnYoYi5hLDM5LCExKSYmXy5DcChjLCJQZXJzaXN0ZW50Q29va2llIiwiMSIpO3RoaXMuYS5yZWRpcmVjdChjLnRvU3RyaW5nKCkpfSx0aGlzKTtyZXR1cm4gbnVsbH07Xy5nLmRCPWZ1bmN0aW9uKCl7fTtfLmcuRkI9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Xy5nLkVCPWZ1bmN0aW9uKCl7cmV0dXJuITF9O18uZy5HdD1mdW5jdGlvbigpe307Cl8uZUg9ZnVuY3Rpb24oYSl7Xy5lSC4kLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW2Eua2FdKTt0aGlzLmI9YS5sLnJlcXVlc3Q7dGhpcy5qYT1hLmwuY3JlZGVudGlhbDt0aGlzLmM9YS5sLmpkO3RoaXMuYT1hLmwubmF2aWdhdGlvbjt0aGlzLmY9YS5sLkJoO3RoaXMud2E9YS5sLllqO18uVXYodGhpcyx0aGlzLmcoKSl9O18ubShfLmVILF8uVHYpO18uaHkoXy5hQSx7bDp7Qmg6Xy4keixjcmVkZW50aWFsOl8uWHosamQ6Xy5peixuYXZpZ2F0aW9uOl8uV3oscmVxdWVzdDpfLll6LFlqOl8uWnp9fSxfLmVIKTtfLmVILnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7fTsKXy5lSC5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtlPWV8fCIvXy9zaWduaW4vc3RhcnQiO3ZhciBmPW5ldyBDZyxrPV8uZUQoYik7Xy50KGYsMixrKTtoYmEoZixfLldHKGEpKTtpYmEoZixfLnYoYy5hLDYsITEpKTtqYmEoZixfLlpDKGMsaykpO2U9Xy5GQyh0aGlzLmIsZSxmLF8uRGcpO251bGwhPWIuZiYmLTEhPWIuZiYmXy5LbChlLHthdXRodXNlcjpiLmZ9KTtlPV8uSEModGhpcy5iLGUpO18ud20oZSxmdW5jdGlvbihlKXtfLmZIKHRoaXMsYyxhLGIsZSxkKX0sdGhpcyk7Xy5JQyh0aGlzLmIsZSxiKX07Cl8uZkg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe18uZkQoZCkmJiFfLmxEKGQpJiZhLmMuc2V0QWNjb3VudElkZW50aWZpZXIoXy5zZShfLmZEKGQpKSk7aWYoYS5pKGUpKWEudyhiLGMpO2Vsc2Ugc3dpdGNoKGUuZmIoKSl7Y2FzZSAyOmEuYy5zZXRCYWNrQnV0dG9uRW5hYmxlZCghMCk7ZS5yZCgpP2EuYS5yZWRpcmVjdChlLnJkKCkpOl8uREIoYS5hLCJpbmZvL3Vua25vd25lcnJvciIpO2JyZWFrO2Nhc2UgNTpkLnVoKGUuamwoKSk7Yj1lLnpqKCk7Xy50KGQuYSwzMyxiKTtkLlpqKGUuYW4oKSk7KGI9ZS5IZSgpKT9fLmtkKGQuYSwzNyxiKTpfLmtkKGQuYSwzNyx2b2lkIDApO18uRWIoXy5QYihlLnJkKCkpKT9fLmJIKGEuZixkLCJkZW5pZWRzaWduaW5yZWplY3RlZCIpOmEuYS5yZWRpcmVjdChlLnJkKCkpO2JyZWFrO2Nhc2UgNjpfLkNCKGEuamEsZS5haCgpKTticmVhaztjYXNlIDc6ZD1lLnJkKCk7YS5hLnJlZGlyZWN0KGQpO2JyZWFrO2RlZmF1bHQ6YS53YS5iPSgwLF8uVWEpKCksIGU9ZS5OYigpLF8uJEcoYS5mLGIsYyxkLGUsZil9fTtfLmVILnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7cmV0dXJuITF9O18uZUgucHJvdG90eXBlLnc9ZnVuY3Rpb24oKXt9OwpfLlVrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYWRkcmVjb3ZlcnlwaG9uZSIsImFkZHJlY292ZXJ5cGhvbmUiKTtfLlZrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiYmdzbXNzdWNjZXNzIiwiYmdzbXNzdWNjZXNzIik7Xy5Xa2E9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImJpcnRoZGF5Z2VuZGVyIiwiYmlydGhkYXlnZW5kZXIiKTtfLlhrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiY29uZmlybWNvZGUiLCJjb25maXJtY29kZSIpO18uWWthPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJjb25maXJtcGhvbmUiLCJjb25maXJtcGhvbmUiKTtfLlprYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiY3JlYXRlYWNjb3VudCIsImNyZWF0ZWFjY291bnQiKTtfLiRrYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsiY3JlYXRlcGFzc3dvcmQiLCJjcmVhdGVwYXNzd29yZCIpO18uYWxhPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJjcmVhdGV1c2VybmFtZSIsImNyZWF0ZXVzZXJuYW1lIik7Xy5ibGE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrInNpZ251cGRlbnkiLCJzaWdudXBkZW55Iik7Xy5jbGE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImRvbmUiLCJkb25lIik7Xy5kbGE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImlkdmJ5cGhvbmUiLCJpZHZieXBob25lIik7Xy5lbGE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImVhcmx5YWNjZXNzZW1haWwiLCJlYXJseWFjY2Vzc2VtYWlsIik7Xy5mbGE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImVhcmx5YWNjZXNzaW50cm8iLCJlYXJseWFjY2Vzc2ludHJvIik7Xy5nbGE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImVhcmx5YWNjZXNzZG9uZSIsImVhcmx5YWNjZXNzZG9uZSIpO18uaGxhPV8uRUYoInNpZ251cC92Mi9raWRhY2NvdW50aW5mbyIsImtpZGFjY291bnRpbmZvIik7Xy5pbGE9Xy5FRigiZW1iZWRkZWQva2lkcHJvbW8iLCJraWRwcm9tbyIpO18uamxhPV8uRUYoInNpZ251cC92Mi9tdWx0aXBsZWFjY291bnRzIiwibXVsdGlwbGVhY2NvdW50cyIpO18ua2xhPV8uRUYoIm9uZXN0ZXBhZGRyZWNvdmVyeXBob25lL2RlZmF1bHQiLCJvbmVzdGVwYWRkcmVjb3ZlcnlwaG9uZSIpO18ubGxhPV8uRUYoIm9uZXN0ZXBhZGRyZWNvdmVyeXBob25lL21vcmVvcHRpb25zIiwib25lc3RlcGFkZHJlY292ZXJ5cGhvbmVtb3Jlb3B0aW9ucyIpO18ubWxhPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJ0ZXJtc29mc2VydmljZSIsInRlcm1zb2ZzZXJ2aWNlIik7Xy5ubGE9Xy5FRigoXy5oLnZpZXdQYXRoUHJlZml4fHwiIikrImFnZXJlc3RyaWN0aW9uIiwiYWdlcmVzdHJpY3Rpb24iKTtfLm9sYT1fLkVGKChfLmgudmlld1BhdGhQcmVmaXh8fCIiKSsidmVyaWZ5aWR2cGhvbmUiLCJ2ZXJpZnlpZHZwaG9uZSIpO18ucGxhPV8uRUYoKF8uaC52aWV3UGF0aFByZWZpeHx8IiIpKyJ2ZXJpZnlyZWNvdmVyeXBob25lIiwidmVyaWZ5cmVjb3ZlcnlwaG9uZSIpO18ucWxhPV8uRUYoInNpZ251cC92Mi93ZWJhZ2VkZW55Iiwid2ViYWdlZGVueSIpO3ZhciBybGEsc2xhO18uZ0g9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJVc2VybmFtZSIpfTtfLmhIPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiWW91ciBlbWFpbCBhZGRyZXNzIil9O18uaUg9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJZb3UgY2FuIHVzZSBsZXR0ZXJzLCBudW1iZXJzICYgcGVyaW9kcyIpfTtfLmpIPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiWW91J2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgZW1haWwgYmVsb25ncyB0byB5b3UuIil9O18ua0g9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJVc2UgbXkgY3VycmVudCBlbWFpbCBhZGRyZXNzIGluc3RlYWQiKX07Xy5sSD1mdW5jdGlvbigpe3JldHVybiBfLkwoIkNyZWF0ZSBhIGdtYWlsIGFjY291bnQgaW5zdGVhZCIpfTtybGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJDaG9vc2UgYSBHbWFpbCBhZGRyZXNzIil9O3NsYT1mdW5jdGlvbigpe3JldHVybiBfLkwoIlRoYXQgdXNlcm5hbWUgaXMgdGFrZW4uIFRyeSBhbm90aGVyLiIpfTsKdmFyIHRsYT1WKCJGeHI3V2QiLCJGeHI3V2QiLFtfLnpdKTt2YXIgbUg9ZnVuY3Rpb24oYSl7Xy5qeS5jYWxsKHRoaXMsYS5aYSk7dGhpcy5hPWEuY29udHJvbGxlci5Sbzt0aGlzLmI9YS5pYS5kYTt0aGlzLmY9ITE7dGhpcy5GbD0hMH07Xy5wYShtSCxfLmp5KTttSC5UYT1mdW5jdGlvbigpe3JldHVybntpYTp7ZGE6Xy56fSxjb250cm9sbGVyOntSbzoicFJGWGVkIn19fTttSC5wcm90b3R5cGUuQ2E9ZnVuY3Rpb24oKXt0aGlzLmY9dGhpcy5nZXREYXRhKCJtb2RlU3dpdGNoQWxsb3dlZCIpLmEoKTt0aGlzLkZsPXRoaXMuZ2V0RGF0YSgiaXNHbWFpbE1vZGUiKS5hKCl9O18uVyhtSC5wcm90b3R5cGUsIldZZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5DYX0pOwptSC5wcm90b3R5cGUuS089ZnVuY3Rpb24oKXtpZih0aGlzLmYpe25IKHRoaXMpO3ZhciBhPSF0aGlzLkZsO3RoaXMuRmw9YTt0aGlzLmEubWkoXy5HKHRoaXMuYixhP18uZ0g6Xy5oSCkpO3RoaXMuYS5mZShfLkcodGhpcy5iLGE/Xy5pSDpfLmpIKSk7dmFyIGI9Xy5HKHRoaXMuYixhP18ua0g6Xy5sSCk7Xy5Zdyh0aGlzLnJhKCJ3NHgwRGIiKSxiKTt0aGlzLmFhKCkuYWIoInJzRlJ0IiwhYSk7dGhpcy5hLmZvY3VzKCl9fTtfLlcobUgucHJvdG90eXBlLCJvTHVVS2QiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuS099KTttSC5wcm90b3R5cGUub2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLm9hKCl9O18uVyhtSC5wcm90b3R5cGUsIkh2bksyYiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYX0pO21ILnByb3RvdHlwZS5tYj1mdW5jdGlvbihhKXt0aGlzLmEubWIoYSl9O21ILnByb3RvdHlwZS5hSj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkZsfTsKXy5XKG1ILnByb3RvdHlwZSwicTBLODJlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmFKfSk7bUgucHJvdG90eXBlLkFhPWZ1bmN0aW9uKGEpe3RoaXMuYS5BYShhKX07Xy5XKG1ILnByb3RvdHlwZSwiZE11N29lIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkFhfSk7bUgucHJvdG90eXBlLlR0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmEoIkV2ZEt5YiIpfTtfLlcobUgucHJvdG90eXBlLCJBY3dQdWIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVHR9KTttSC5wcm90b3R5cGUuSFA9ZnVuY3Rpb24oYSl7YT1hLmEuZ2V0RGF0YSgidXNlcm5hbWUiKTtuSCh0aGlzKTt0aGlzLmEubWIoYS50b1N0cmluZygpKX07Xy5XKG1ILnByb3RvdHlwZSwiZkZTejFjIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkhQfSk7bUgucHJvdG90eXBlLkNCPWZ1bmN0aW9uKCl7dGhpcy5hLkFhKF8uRyh0aGlzLmIsc2xhKSl9O18uVyhtSC5wcm90b3R5cGUsIk9yZkFLYyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5DQn0pOwptSC5wcm90b3R5cGUuVng9ZnVuY3Rpb24oKXt0aGlzLmEub2EoKXx8KHRoaXMuYS5BYShfLkcodGhpcy5iLHJsYSkpLHRoaXMuYS5mb2N1cygpKX07Xy5XKG1ILnByb3RvdHlwZSwicXc3cGpiIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlZ4fSk7bUgucHJvdG90eXBlLmZvY3VzPWZ1bmN0aW9uKCl7dGhpcy5hLmZvY3VzKCl9O18uVyhtSC5wcm90b3R5cGUsIkFIbXV3ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb2N1c30pO21ILnByb3RvdHlwZS5oYXNGb2N1cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuaGFzRm9jdXMoKX07Xy5XKG1ILnByb3RvdHlwZSwibU5GTDkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzRm9jdXN9KTttSC5wcm90b3R5cGUuSHo9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuYS5vYSgpfTtfLlcobUgucHJvdG90eXBlLCJ5V1BUcCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Ien0pOyB2YXIgbkg9ZnVuY3Rpb24oYSl7YS5hLm1iKCIiKTthLmEuQWEoIiIpO2EuVHQoKS5lbXB0eSgpfTtfLnpBKHRsYSxtSCk7Cl8udWxhPV8uRUYoInNpZ251cC92Mi93ZWJncmFkc2RlbnkiLCJ3ZWJncmFkc2RlbnkiKTtfLnZsYT1fLkVGKCJzaWdudXAvdjIvd2ViZ3JhZHNpZHZwaG9uZSIsIndlYmdyYWRzaWR2cGhvbmUiKTtfLndsYT1fLkVGKCJzaWdudXAvdjIvd2ViZ3JhZHNpZHZ2ZXJpZnkiLCJ3ZWJncmFkc2lkdnZlcmlmeSIpO18ueGxhPV8uRUYoInNpZ251cC92Mi93ZWJpZHZjb25zZW50Iiwid2ViaWR2Y29uc2VudCIpO18ueWxhPV8uRUYoInNpZ251cC92Mi93ZWJpZHZ2ZXJpZnkiLCJ3ZWJpZHZ2ZXJpZnkiKTtfLnpsYT1fLkVGKCJzaWdudXAvdjIvd2VicGVyc29uYWxkZXRhaWxzIiwid2VicGVyc29uYWxkZXRhaWxzIik7Xy5BbGE9Xy5FRigic2lnbnVwL3YyL3dlYnRlcm1zb2ZzZXJ2aWNlIiwid2VidGVybXNvZnNlcnZpY2UiKTtfLm9IPWZ1bmN0aW9uKGEpe1N4LmNhbGwodGhpcyxhLlphKTt0aGlzLmE9bmV3IFFoO3RoaXMuYz10aGlzLmY9dGhpcy5iPW51bGx9O18ucGEoXy5vSCxTeCk7Xy5vSC5UYT1TeC5UYTtfLm9ILnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYT1uZXcgUWg7dGhpcy5jPXRoaXMuZj10aGlzLmI9bnVsbH07SHooXy5xRSx2b2lkIDAsXy5vSCk7Xy5PKCJpYSIsIiIsMCxmdW5jdGlvbigpe3JldHVybigwLF8uSCkoIiIrXy5wSCh7Q286IiNmYmZiZmMiLERvOiIjZjdmN2Y3IixFbzoiI2Y2ZjZmNiIsRm86IiNlZmVmZWUiLEdvOiIjZWJlYmVjIixIbzoiI2U3ZTdlNyIsSW86IiNlMWUxZTEifSkrIiIpfSk7Cl8ucEg9ZnVuY3Rpb24oYSl7dmFyIGI9YS5EcyxjPWEuaXcsZD1hLkNvLGU9YS5EbyxmPWEuRW8saz1hLkZvLG49YS5HbyxwPWEuSG87YT1hLklvO3ZhciBBPSIiO2M9IiIrKGM/J29wYWNpdHk9IicrXy5VKGMpKyciJzoiIik7Yz0oMCxfLkR1KShjKTtBKz0nPHN2ZyBqc25hbWU9IicrXy5VKCJCVWZ6RGQiKSsnIiB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTQ0MCA4MTAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIHNsaWNlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JysoYj8nPHBhdGggZmlsbD0iJytfLlUoYikrJyIgZD0iTTAgMGgxNDQwdjgxMEgweiIvPic6IiIpKyc8cGF0aCBmaWxsPSInK18uVShrKSsnIiAnK18uSnUoYykrJyBkPSJNNTkyLjY2IDBjLTE1IDY0LjA5Mi0zMC43IDEyNS4yODUtNDYuNTk4IDE4My43NzdDNjM0LjA1NiAzMjUuNTYgNzQ4LjM0OCA1NTAuOTMyIDgxOS42NDIgODA5LjVoNDE5LjY3MkMxMTg0LjUxOCA1OTMuNzI3IDEwODMuMTI0IDI5MC4wNjQgOTAyLjYzNyAwSDU5Mi42NnoiLz48cGF0aCBmaWxsPSInKwpfLlUoZikrJyIgJytfLkp1KGMpKycgZD0iTTU0NS45NjIgMTgzLjc3N2MtNTMuNzk2IDE5Ni41NzYtMTExLjU5MiAzNjEuMTU2LTE2My40OSA0OTAuNzQgMTEuNyA0NC40OTQgMjIuOCA4OS40OSAzMy4xIDEzNC44ODNoNDA0LjA3Yy03MS4yOTQtMjU4LjQ2OC0xODUuNTg2LTQ4My44NC0yNzMuNjgtNjI1LjYyM3oiLz48cGF0aCBmaWxsPSInK18uVShlKSsnIiAnK18uSnUoYykrJyBkPSJNMTUzLjg5IDBjNzQuMDk0IDE4MC42NzggMTYxLjA4OCA0MTcuNDQ4IDIyOC40ODMgNjc0LjUxN0M0NDkuNjcgNTA2LjMzNyA1MjcuMDYzIDI3OS40NjUgNTkyLjU2IDBIMTUzLjg5eiIvPjxwYXRoIGZpbGw9IicrXy5VKGQpKyciICcrXy5KdShjKSsnIGQ9Ik0xNTMuODkgMEgwdjgwOS41aDQxNS41N0MzNDUuNDc3IDUwMC45MzggMjQwLjg4NCAyMTEuODc0IDE1My44OSAweiIvPjxwYXRoIGZpbGw9IicrXy5VKG4pKyciICcrXy5KdShjKSsnIGQ9Ik0xMTQ0LjIyIDUwMS41MzhjNTIuNTk2LTEzNC41ODMgMTAxLjQ5Mi0yOTAuOTY0IDEzNC4wOS00NjMuMzQzIDEuMi02LjEgMi4zLTEyLjI5OCAzLjQtMTguNDk3IDAtLjIuMS0uNC4xLS42IDEuMS02LjMgMi4zLTEyLjcgMy40LTE5LjA5OEg5MDIuNTM2YzEwNS4yOTMgMTY5LjI4IDE4My42ODggMzQzLjE1OCAyNDEuNjg0IDUwMS42Mzh2LS4xeiIvPjxwYXRoIGZpbGw9IicrCl8uVShhKSsnIiAnK18uSnUoYykrJyBkPSJNMTI4NS4zMSAwYy0yLjIgMTIuNzk4LTQuNSAyNS41OTctNi45IDM4LjE5NUMxMzIxLjUwNyA4Ni4zOSAxMzc5LjYwMyAxNTguOTggMTQ0MCAyNTcuMTY4VjBoLTE1NC42OXoiLz48cGF0aCBmaWxsPSInK18uVShwKSsnIiAnK18uSnUoYykrJyBkPSJNMTI3OC4zMSwzOC4xOTZDMTI0NS44MSwyMDkuODc0IDExOTcuMjIsMzY1LjU1NiAxMTQ0LjgyLDQ5OS44MzhMMTE0NC44Miw1MDMuNjM4QzExODUuODIsNjE1LjkyNCAxMjE2LjQxLDcyMC4yMTEgMTIzOS4xMSw4MDkuNkwxNDM5LjcsODEwTDE0MzkuNywyNTYuNzY4QzEzNzkuNCwxNTguNzggMTMyMS40MSw4Ni4yODggMTI3OC4zMSwzOC4xOTVMMTI3OC4zMSwzOC4xOTZ6Ii8+PC9zdmc+JztyZXR1cm4oMCxfLkgpKEEpfTsKXy5PKCJqYSIsImFjY291bnRDaXJjbGUiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNzU3NTc1IjthPW51bGwhPWE/YTo0ODtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDQ4IDQ4IiBmaWxsPSInK18uVShiKSsnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTI0LDBDMTAuNzQsMCAwLDEwLjc0IDAsMjRDMCwzNy4yNiAxMC43NCw0OCAyNCw0OEMzNy4yNiw0OCA0OCwzNy4yNiA0OCwyNEM0OCwxMC43NCAzNy4yNiwwIDI0LDBaTTI0LDQxLjI4QzE3Ljk4OCw0MS4yOCAxMi43MDgsMzguMjA4IDkuNiwzMy41NTJDOS42NiwyOC43ODggMTkuMjEyLDI2LjE2IDI0LDI2LjE2QzI4Ljc4OCwyNi4xNiAzOC4zMjgsMjguNzg4IDM4LjQsMzMuNTUyQzM1LjI5MiwzOC4yMDggMzAuMDEyLDQxLjI4IDI0LDQxLjI4Wk0yNCw3LjJDMjcuOTcyLDcuMiAzMS4yLDEwLjQyOCAzMS4yLDE0LjRDMzEuMiwxOC4zODQgMjcuOTcyLDIxLjYgMjQsMjEuNkMyMC4wMjgsMjEuNiAxNi44LDE4LjM4NCAxNi44LDE0LjRDMTYuOCwxMC40MjggMjAuMDI4LDcuMiAyNCw3LjJaIi8+PHBhdGggZD0iTTAgMGg0OHY0OEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPicpOwpyZXR1cm4oMCxfLkgpKGIpfSk7Xy5PKCJqYSIsImFkIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MzY7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tNjE4LTQ0MEg3ODJ2MzYwMEgtNjE4ek0wIDBoMjR2MjRIMHoiLz48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExeiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsImFkZENpcmNsZSIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM3NTc1NzUiO2E9bnVsbCE9YT9hOjM2O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMCwwbDI0LDBsMCwyNGwtMjQsMGwwLC0yNFoiIHN0eWxlPSJmaWxsOm5vbmU7Ii8+PHBhdGggZD0iTTEyLDBjLTYuNjI0LDAgLTEyLDUuMzc2IC0xMiwxMmMwLDYuNjI0IDUuMzc2LDEyIDEyLDEyYzYuNjI0LDAgMTIsLTUuMzc2IDEyLC0xMmMwLC02LjYyNCAtNS4zNzYsLTEyIC0xMiwtMTJabTYsMTMuMmwtNC44LDBsMCw0LjhsLTIuNCwwbDAsLTQuOGwtNC44LDBsMCwtMi40bDQuOCwwbDAsLTQuOGwyLjQsMGwwLDQuOGw0LjgsMGwwLDIuNFoiLz48L3N2Zz4nKTsKcmV0dXJuKDAsXy5IKShiKX0pO18uTygiamEiLCJhZGRMb2NhdGlvbiIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM2MTYxNjEiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDBWMHoiLz48cGF0aCBkPSJNMTIgMkM4LjE0IDIgNSA1LjE0IDUgOWMwIDUuMjUgNyAxMyA3IDEzczctNy43NSA3LTEzYzAtMy44Ni0zLjE0LTctNy03em00IDhoLTN2M2gtMnYtM0g4VjhoM1Y1aDJ2M2gzdjJ6Ii8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwiYXJyb3dEcm9wRG93biIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM2MTYxNjEiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBkPSJNNyAxMGw1IDUgNS01eiIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48L3N2Zz4nKTtyZXR1cm4oMCxfLkgpKGIpfSk7Xy5PKCJqYSIsImF1dGhlbnRpY2F0b3IiLDAsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkgpKCc8aW1nIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FRQUFBRDlDekVNQUFBRWlFbEVRVlI0QWVXWEE0eGtXUmhHSzFqYjZwbGdOWXczM0doc3RkMnZYSzl0VzlPMlV1MnhiYy9FWGpQYWpWWWRyUnZmL3Zudnk5MTNYM1ZOV3VIY1U0M29uS3VTN2RFWS9wRDJzcTU3QXhOamt3ZHhFS09UL1JQdDk1cEtPME9XUXIyeVkyam83ME1RSEpRY1lQeC9OUTgxcjFpd2ZIeDUzMWVId2NqQUtjSUlTTnEvYkZrMmIvblFjOTIzanBKWUNaRDhIbUZOak5OUHk4MktaJTJCZWg3MW83Tm5VRVIlMkJZYVlQeFQxU3ZucW5jY0piazFJRGh0NkFNRFkwUmQ0bHowZlVjUlBFRHE0QUdpdUdnT3N5ZHdmRUdCY21qUVAzcm8zZ3Y5WFR6QWVTWFFpMnJrSUExZWVPaDNOaXJSb3daWW53UTdISk9wcndXOU9lSm9UJTJCQUJjVTNLMjBqcGhwZng4VzhQNFVRS21rd0JtajNwbllUcng0ckhaNS8vTGRJekYwaC9uT1ZEeUdHdHppUVRPdUhqa0JzdVpHQkE2aDFDRDZKdzFxY1Z5NVhqN1NhaGw4VXAvRU9JQkNOVzRrVTdLbGp2TXBINmZFQ2c1MHRTS25UejNJVTRWZXBsQUQ1T3VPRWt1Wmk1V3dhY3ZRR3ZPVmI5RUttRVBwWDExZ0J2RSUyQk5odGNEUUU4bXZLSUgyUVdzZ0c5N2dlalZnb0FZOGNlb0svbGIxYmJ6M1pyMk9lSVJpRDNiVDcxalNDYjBhY0prQ3JrOU4lMkJyNTNEa0VOcEludGtYb245bUVYc1pQWVFleUdaZ200bFlDRHlIdE9CdHBLRDhGTUg4L1FyTjl0MWpQYm9RWGZJQTU0TnNwQTUxMDFVQ1B2RHdGZHpsNE43Q2FsT244MTRDcVJnYjRKTlpBclRzQWdYdEZ2WjdZUld4RmxsVEoyaHY2N0xnUEQvRjU3aWhDQmRIaE5UNnhRcVMvQUdWd3l1R2ppZ2dwNXFpbmgvRjRHeGxsL2p6aU5nNFNQNEdjdnMwZk8vaFRPS1p3MWNVWnltamlCUkdoL1dBUHkzY3BMNklaZXgyNlNpMTAvTmdlOUNCeEJBcEptWkdCSWJ0RkJKZ01Va0lUS1kwMlhDVVZQV1BYNWlFZmlQekxRTThGaVNSNWZVOTBnbHVTQ2JkaENiTVFtZzQzRUJtSTlzeE14QnJFZ1BaSiUyQmxvSFd1L1M2YmdyVUtBRXZkaHNyMk1hSnJkZ3NNV1ZJckRGSmpBYjdEUm5ZWDBJQkUzMXdHWnZrWXpUbGNtNlJjRUpHN09LS01xU0hJJTJCZi9GYnhEV2dYeEhpYjBYaUtPOVJ5UWNFSkc5Z1k4RTl4dm1WNk4lMkJ2OVNBNjI4QmpPeFFpNnhyaUhKb25mOHJieWFOZ3lTVmlFSEhrSkpCSnM5RVVwaU5lQWNVQUoxSzZ3QlAzUzRMYSUyQllNVUgwVzlYdFlSenYyZFRSOHNVNFZMcmhKandLc1N4WDlWdlUyVFBhbHpicnFGazJoc0NFRHBkSjd5WmlMUHJ0U0ZYMWpEYmI1JTJCMzl0d3d4VHVNU2p2Qi9mbVJUd3MxeWdRdlJMQmVFSXBuVmJxUkRsL3JFbXl5MGpvcG5CNmJHTUlaRHVFTmN4Qmd6am5ha3dhbDhab2hpJTJCUjZTdThUY1NaOUh1TVRzSnpPZlVzMXlWSzBlWWVWTkNwd0c2V1drRDlYSUk0MlhTS1AvTXBBcTVRU2w4cEROJTJCaVRFUCUyQnhqZktVbWhJZWtYRVY4Q2gwbDZpMDN4eWxtRDAwTG9wYUgzVE5xMWJKU1JTYlVvNFZuYkE3ZkVNb1NSNEtxanhHakJpT29nMVBSWjFUWTVqWktWL2RQS1dLcHYwMGNZemxEQ2ZuS0EvM2p1YmpsamFxN01SSVFPR29FUmt6VVVrSkQydmUlMkJsMnp6SGZuTEc3JTJCeVJvNHAlMkJtRmlDRVUvZU5mWUZqb0tWMVQ0dS8lMkJpakpSS1NOMzVWOWxnOWdyYjRrZGVTSEZaeloyVzM3b25CekNBN3NtVzM2cnZGcGFsaHRnZWlmRWZwMFBzc2FiTHRhNEFBQUFBU1VWT1JLNUNZSUklM0QiIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGFsdD0iIj4nKX0pOwpfLk8oImphIiwiYXZhdGFyQmx1ZSIsMCxmdW5jdGlvbihhLGIsYyl7Yj1jfHxiO2E9YXx8e307YT1hLndpZHRoO3JldHVybigwLF8uSCkoIiIrXy5QKCJqYSIsImFjY291bnRDaXJjbGUiLCExKSh7ZmlsbDoiIzQyODVmNCIsd2lkdGg6YX0sYikrIiIpfSk7Xy5PKCJrYSIsImF2YXRhckdyZXkiLDAsZnVuY3Rpb24oYSxiLGMpe2I9Y3x8YjthPWF8fHt9O2E9YS53aWR0aDtyZXR1cm4oMCxfLkgpKCIiK18uUCgiamEiLCJhY2NvdW50Q2lyY2xlIiwhMSkoe2ZpbGw6IiM2MTYxNjEiLHdpZHRoOmF9LGIpKyIiKX0pO18uTygia2EiLCJhdmF0YXJHcmV5NjAwIiwwLGZ1bmN0aW9uKGEsYixjKXtiPWN8fGI7YT1hfHx7fTthPWEud2lkdGg7cmV0dXJuKDAsXy5IKSgiIitfLlAoImphIiwiYWNjb3VudENpcmNsZSIsITEpKHtmaWxsOiIjNzU3NTc1Iix3aWR0aDphfSxiKSsiIil9KTsKXy5PKCJqYSIsImJsdWV0b290aCIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM2MTYxNjEiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE3LjcxIDcuNzFMMTIgMmgtMXY3LjU5TDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDExIDE0LjQxVjIyaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyA1LjgzbDEuODggMS44OEwxMyA5LjU5VjUuODN6bTEuODggMTAuNDZMMTMgMTguMTd2LTMuNzZsMS44OCAxLjg4eiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsImNha2UiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiA2YzEuMTEgMCAyLS45IDItMiAwLS4zOC0uMS0uNzMtLjI5LTEuMDNMMTIgMGwtMS43MSAyLjk3Yy0uMTkuMy0uMjkuNjUtLjI5IDEuMDMgMCAxLjEuOSAyIDIgMnptNC42IDkuOTlsLTEuMDctMS4wNy0xLjA4IDEuMDdjLTEuMyAxLjMtMy41OCAxLjMxLTQuODkgMGwtMS4wNy0xLjA3LTEuMDkgMS4wN0M2Ljc1IDE2LjY0IDUuODggMTcgNC45NiAxN2MtLjczIDAtMS40LS4yMy0xLjk2LS42MVYyMWMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTQuNjFjLS41Ni4zOC0xLjIzLjYxLTEuOTYuNjEtLjkyIDAtMS43OS0uMzYtMi40NC0xLjAxek0xOCA5aC01VjdoLTJ2Mkg2Yy0xLjY2IDAtMyAxLjM0LTMgM3YxLjU0YzAgMS4wOC44OCAxLjk2IDEuOTYgMS45Ni41MiAwIDEuMDItLjIgMS4zOC0uNTdsMi4xNC0yLjEzIDIuMTMgMi4xM2MuNzQuNzQgMi4wMy43NCAyLjc3IDBsMi4xNC0yLjEzIDIuMTMgMi4xM2MuMzcuMzcuODYuNTcgMS4zOC41NyAxLjA4IDAgMS45Ni0uODggMS45Ni0xLjk2VjEyQzIxIDEwLjM0IDE5LjY2IDkgMTggOXoiLz48L3N2Zz4nKTsKcmV0dXJuKDAsXy5IKShiKX0pO18uTygiamEiLCJjaGF0IiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA5aDEydjJINlY5em04IDVINnYtMmg4djJ6bTQtNkg2VjZoMTJ2MnoiLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwiY2xvc2UiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjMDAwMDAwIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnoiLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwiY2xvdWREb25lIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xMCAxN2wtMy41LTMuNSAxLjQxLTEuNDFMMTAgMTQuMTcgMTUuMTggOWwxLjQxIDEuNDFMMTAgMTd6Ii8+PC9zdmc+Jyk7CnJldHVybigwLF8uSCkoYil9KTtfLk8oImphIiwiY29sbGVjdGlvbnMiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMiAxNlY0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ6bS0xMS00bDIuMDMgMi43MUwxNiAxMWw0IDVIOGwzLTR6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyeiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsImNvbXB1dGVyIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjAgMThjMS4xIDAgMS45OS0uOSAxLjk5LTJMMjIgNmMwLTEuMS0uOS0yLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAySDB2MmgyNHYtMmgtNHpNNCA2aDE2djEwSDRWNnoiLz48L3N2Zz4nKTtyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJlbWFpbCIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM2MTYxNjEiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDRsLTggNS04LTVWNmw4IDUgOC01djJ6Ii8+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsImV2ZW50IiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTljMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtMVYxaC0yem0zIDE4SDVWOGgxNHYxMXoiLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwiZXhwYW5kTW9yZSIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiMwMDAwMDAiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBkPSJNNy40MSA3Ljg0TDEyIDEyLjQybDQuNTktNC41OEwxOCA5LjI1bC02IDYtNi02eiIvPjxwYXRoIGQ9Ik0wLS43NWgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsImdvb2dsZSIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM3NTc1NzUiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTIgMTMuOXYtMy43Mmg5LjM2Yy4xNC42My4yNSAxLjIyLjI1IDIuMDUgMCA1LjcxLTMuODMgOS43Ny05LjYgOS43N0M2LjQ4IDIyIDIgMTcuNTIgMiAxMlM2LjQ4IDIgMTIgMmMyLjcgMCA0Ljk2Ljk5IDYuNjkgMi42MWwtMi44NCAyLjc2Yy0uNzItLjY4LTEuOTctMS40OS0zLjg1LTEuNDktMy4zMSAwLTYuMDEgMi43NS02LjAxIDYuMTJzMi43IDYuMTIgNi4wMSA2LjEyYzMuODMgMCA1LjI0LTIuNjUgNS41LTQuMjJIMTJ6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTIgMmgyMHYyMEgyeiIvPjwvc3ZnPicpOwpyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJoZWxwIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxN2gtMnYtMmgydjJ6bTIuMDctNy43NWwtLjkuOTJDMTMuNDUgMTIuOSAxMyAxMy41IDEzIDE1aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6Ii8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwiaGVscE91dGxpbmUiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIvPjxwYXRoIGQ9Ik0xMSAxOGgydi0yaC0ydjJ6bTEtMTZDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0yLjIxIDAtNCAxLjc5LTQgNGgyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00eiIvPjwvc3ZnPicpOwpyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJoaXN0b3J5IiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyeiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsImxvY2F0aW9uT24iLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN3ptMCA5LjVjLTEuMzggMC0yLjUtMS4xMi0yLjUtMi41czEuMTItMi41IDIuNS0yLjUgMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41eiIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48L3N2Zz4nKTtyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJsb2NrIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnoiLz48L3N2Zz4nKTsKcmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwibWljIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0xMiAxNGMxLjY2IDAgMi45OS0xLjM0IDIuOTktM0wxNSA1YzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDV2NmMwIDEuNjYgMS4zNCAzIDMgM3ptNS4zLTNjMCAzLTIuNTQgNS4xLTUuMyA1LjFTNi43IDE0IDYuNyAxMUg1YzAgMy40MSAyLjcyIDYuMjMgNiA2LjcyVjIxaDJ2LTMuMjhjMy4yOC0uNDggNi0zLjMgNi02LjcyaC0xLjd6Ii8+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsIm5mYyIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM2MTYxNjEiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBkPSJNNCAyMGgxNlY0SDR2MTZ6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE4SDRWNGgxNnYxNnpNMTggNmgtNWMtMS4xIDAtMiAuOS0yIDJ2Mi4yOGMtLjYuMzUtMSAuOTgtMSAxLjcyIDAgMS4xLjkgMiAyIDJzMi0uOSAyLTJjMC0uNzQtLjQtMS4zOC0xLTEuNzJWOGgzdjhIOFY4aDJWNkg2djEyaDEyVjZ6Ii8+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPicpOwpyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJ1c2IiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNSA3djRoMXYyaC0zVjVoMmwtMy00LTMgNGgydjhIOHYtMi4wN2MuNy0uMzcgMS4yLTEuMDggMS4yLTEuOTMgMC0xLjIxLS45OS0yLjItMi4yLTIuMi0xLjIxIDAtMi4yLjk5LTIuMiAyLjIgMCAuODUuNSAxLjU2IDEuMiAxLjkzVjEzYzAgMS4xMS44OSAyIDIgMmgzdjMuMDVjLS43MS4zNy0xLjIgMS4xLTEuMiAxLjk1IDAgMS4yMi45OSAyLjIgMi4yIDIuMiAxLjIxIDAgMi4yLS45OCAyLjItMi4yIDAtLjg1LS40OS0xLjU4LTEuMi0xLjk1VjE1aDNjMS4xMSAwIDItLjg5IDItMnYtMmgxVjdoLTR6Ii8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwicGhvbmUiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yeiIvPjwvc3ZnPicpOwpyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJwaG9uZUNhbGxiYWNrIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik02LjYyIDEwLjc5YzEuNDQgMi44MyAzLjc2IDUuMTQgNi41OSA2LjU5bDIuMi0yLjJjLjI3LS4yNy42Ny0uMzYgMS4wMi0uMjQgMS4xMi4zNyAyLjMzLjU3IDMuNTcuNTcuNTUgMCAxIC40NSAxIDFWMjBjMCAuNTUtLjQ1IDEtMSAxLTkuMzkgMC0xNy03LjYxLTE3LTE3IDAtLjU1LjQ1LTEgMS0xaDMuNWMuNTUgMCAxIC40NSAxIDEgMCAxLjI1LjIgMi40NS41NyAzLjU3LjExLjM1LjAzLjc0LS4yNSAxLjAybC0yLjIgMi4yem0xMy41NC03LjFsLS43MS0uN0wxMyA5LjI5VjVoLTF2Nmg2di0xaC00LjE1eiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48L3N2Zz4nKTtyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJwaG9uZWxpbmsiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik00IDZoMThWNEg0Yy0xLjEgMC0yIC45LTIgMnYxMUgwdjNoMTR2LTNINFY2em0xOSAyaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3eiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsInBob25lbGlua0VyYXNlIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjxwYXRoIGQ9Ik0xMyA4LjJsLTEtMS00IDQtNC00LTEgMSA0IDQtNCA0IDEgMSA0LTQgNCA0IDEtMS00LTQgNC00ek0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnoiLz48L3N2Zz4nKTtyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJwaG9uZWxpbmtMb2NrIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzc1NzU3NSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjxwYXRoIGQ9Ik0xOSAxSDljLTEuMSAwLTIgLjktMiAydjNoMlY0aDEwdjE2SDl2LTJIN3YzYzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptLTguMiAxMFY5LjVDMTAuOCA4LjEgOS40IDcgOCA3UzUuMiA4LjEgNS4yIDkuNVYxMWMtLjYgMC0xLjIuNi0xLjIgMS4ydjMuNWMwIC43LjYgMS4zIDEuMiAxLjNoNS41Yy43IDAgMS4zLS42IDEuMy0xLjJ2LTMuNWMwLS43LS42LTEuMy0xLjItMS4zem0tMS4zIDBoLTNWOS41YzAtLjguNy0xLjMgMS41LTEuM3MxLjUuNSAxLjUgMS4zVjExeiIvPjwvc3ZnPicpOwpyZXR1cm4oMCxfLkgpKGIpfSk7Xy5PKCJqYSIsInF1ZXN0aW9uQW5zd2VyIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjEgNmgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6bS00IDZWM2MwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTF6Ii8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwicmVjYXB0Y2hhIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307YT1hLndpZHRoO2E9bnVsbCE9YT9hOjQ4O2E9IiIrKCc8c3ZnIHZpZXdCb3g9IjAgMCAnK18uVShhKSsiICIrXy5VKGEpKyciIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNNDEuODYgMTEuMTRDMzcuODYgNS42IDMxLjM2IDIgMjQgMnYxMmM0LjA1IDAgNy41NSAyLjQyIDkuMTEgNS44OUwyOSAyNGgxN1Y3bC00LjE0IDQuMTR6IiBmaWxsPSIjM2QzZDNkIi8+PHBhdGggZD0iTTcgMmw0LjE0IDQuMTRDNS42IDEwLjE0IDIgMTYuNjQgMiAyNGgxMmMwLTQuMDUgMi40Mi03LjU1IDUuODktOS4xMUwyNCAxOVYySDd6IiBmaWxsPSIjODI4MjgyIi8+PHBhdGggZD0iTTMxLjExIDMxLjA0QzI5LjMgMzIuODcgMjYuNzggMzQgMjQgMzRjLTQuMDUgMC03LjU1LTIuNDItOS4xMS01Ljg5TDE5IDI0SDJ2MTdsNC4xNC00LjE1QzEwLjE0IDQyLjM5IDE2LjY0IDQ2IDI0IDQ2YzYuMDkgMCAxMS42MS0yLjQ4IDE1LjU5LTYuNDhsLTguNDgtOC40OHoiIGZpbGw9IiNjMmMyYzIiLz48L3N2Zz4nKTsKcmV0dXJuKDAsXy5IKShhKX0pOwpfLk8oImphIiwicmVtb3RlQXBwcm92YWxzIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zOnhsaW5rPSJodHRwczovL3d3dy53My5vcmcvMTk5OS94bGluayIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggaWQ9ImEiIGQ9Ik0xNyA2VjRsLTItMkg5TDcgNHYySDJ2MTNzMSAyIDIgMmgxNnMyLS45OCAyLTJWNmgtNXpNOSA1YzAtLjU1LjUzLTEgMS0xaDRjLjQ2IDAgMSAuNTQgMSAxdjFIOVY1em0xLjUgMTIuNUw3IDE0bDEuNDEtMS40MSAyLjA5IDIuMDkgNS4xOC01LjE4IDEuNDEgMS40MS02LjU5IDYuNTl6Ii8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwicm9ib3QiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTIxLjQgMTUuOGMtLjMtMi44LTIuNi01LjEtNS40LTUuMi0xLjUgMC0yLjgtMS0yLjktMi40aDNjLjYgMCAxLS40IDEtMVYzYzAtLjYtLjQtMS0xLTFoLTFWMWMwLS42LS40LTEtMS0xcy0xIC40LTEgMXYxaC01Yy0uNiAwLTEgLjQtMSAxdjQuMWMwIC42LjQgMSAxIDFIMTFjLS4yIDEuNS0xLjQgMi40LTIuOSAyLjQtMi44LjItNS4xIDIuNC01LjMgNS4yLTEuNC40LTIuNCAxLjctMi40IDMuMmgyYzAtLjguNi0xLjQgMS40LTEuNFM1IDE4LjMgNSAxOWgyYzAtMS41LTEtMi43LTIuMy0zLjIuMi0xLjcgMS42LTMuMSAzLjMtMy4zdjQuM2MwIC42LjQgMSAxIDFoNmMuNiAwIDEtLjQgMS0xdi00LjJjMS43LjIgMy4xIDEuNSAzLjMgMy4zLTEuMy40LTIuMyAxLjYtMi4zIDMuMWgyYzAtLjguNi0xLjQgMS40LTEuNHMxLjQuNiAxLjQgMS40aDJjMC0xLjUtMS0yLjgtMi40LTMuMnpNMTMgNC4xaDJ2MmgtMnYtMnptLTQgMGgydjJIOXYtMnpNNS4xIDI0SDExdi0ySDcuMWMtMS4xIDAtMiAuOS0yIDJ6TTE3LjEgMjJIMTN2Mmg2LjFjMC0xLjEtLjktMi0yLTJ6Ii8+PHBhdGggZD0iTTkgMTloMnYySDl6TTEzIDE5aDJ2MmgtMnoiLz48L3N2Zz4nKTsKcmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwic2NoZWR1bGUiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNzU3NTc1IjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEyLjUgN0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3eiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsInNlY3VyaXR5S2V5IiwwLGZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5IKSgnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSIjNzM3MzczIiBkPSJNNDcuNiAyOS41SDE3LjVWMTMuMWgzMC4xIi8+PHBhdGggZmlsbD0iIzczNzM3MyIgZD0iTTM0LjIgMjljMCAyLjItMS44IDQtNCA0SDQuNGMtMi4yIDAtNC0xLjgtNC00VjEzLjFjMC0yLjIgMS44LTQgNC00aDI1LjhjMi4yIDAgNCAxLjggNCA0VjI5eiIvPjxwYXRoIGZpbGw9IiNEQURBREEiIGQ9Ik0zNC4yIDE0LjZoMTEuNHYyLjVIMzQuMnptMCAzLjVoOS45djIuNWgtOS45em0wIDMuNWg5Ljl2Mi41aC05Ljl6bTAgMy40aDExLjR2Mi41SDM0LjJ6Ii8+PC9zdmc+Jyl9KTsKXy5PKCJqYSIsInNldHRpbmdzIiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVDMTQuNDYgMi4xOCAxNC4yNSAyIDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz48L3N2Zz4nKTsKcmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwic2lnbmFsV2lmaU9mZiIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM2MTYxNjEiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIzLjY0IDdjLS40NS0uMzQtNC45My00LTExLjY0LTQtMS41IDAtMi44OS4xOS00LjE1LjQ4TDE4LjE4IDEzLjggMjMuNjQgN3ptLTYuNiA4LjIyTDMuMjcgMS40NCAyIDIuNzJsMi4wNSAyLjA2QzEuOTEgNS43Ni41OSA2LjgyLjM2IDdsMTEuNjMgMTQuNDkuMDEuMDEuMDEtLjAxIDMuOS00Ljg2IDMuMzIgMy4zMiAxLjI3LTEuMjctMy40Ni0zLjQ2eiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsInNtYXJ0cGhvbmUiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNyAxLjAxTDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6Ii8+PC9zdmc+Jyk7cmV0dXJuKDAsXy5IKShiKX0pOwpfLk8oImphIiwidGFibGV0IiwwLGZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9YS5maWxsO2E9YS53aWR0aDtiPW51bGwhPWI/YjoiIzYxNjE2MSI7YT1udWxsIT1hP2E6MjQ7Yj0iIisoJzxzdmcgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIHdpZHRoPSInK18uVShhKSsncHgiIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IicrXy5VKGIpKyciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjEgNEgzYy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDEuOTktLjkgMS45OS0yTDIzIDZjMC0xLjEtLjktMi0yLTJ6bS0yIDE0SDVWNmgxNHYxMnoiLz48L3N2Zz4nKTtyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJ2aWRlb1lvdXR1YmUiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgyNHYyNEgwVjB6Ii8+PHBhdGggZD0iTTIxLjU4IDcuMTljLS4yMy0uODYtLjkxLTEuNTQtMS43Ny0xLjc3QzE4LjI1IDUgMTIgNSAxMiA1cy02LjI1IDAtNy44MS40MmMtLjg2LjIzLTEuNTQuOTEtMS43NyAxLjc3QzIgOC43NSAyIDEyIDIgMTJzMCAzLjI1LjQyIDQuODFjLjIzLjg2LjkxIDEuNTQgMS43NyAxLjc3QzUuNzUgMTkgMTIgMTkgMTIgMTlzNi4yNSAwIDcuODEtLjQyYy44Ni0uMjMgMS41NC0uOTEgMS43Ny0xLjc3QzIyIDE1LjI1IDIyIDEyIDIyIDEyczAtMy4yNS0uNDItNC44MXpNMTAgMTVWOWw1LjIgMy01LjIgM3oiLz48L3N2Zz4nKTsKcmV0dXJuKDAsXy5IKShiKX0pO18uTygiamEiLCJ2aWRlb0NhbSIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM2MTYxNjEiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE3IDEwLjVWN2MwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxdjEwYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTFsLTQgNHoiLz48L3N2Zz4nKTtyZXR1cm4oMCxfLkgpKGIpfSk7Cl8uTygiamEiLCJ2cG5LZXkiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2I9bnVsbCE9Yj9iOiIjNjE2MTYxIjthPW51bGwhPWE/YToyNDtiPSIiKygnPHN2ZyB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgd2lkdGg9IicrXy5VKGEpKydweCIgaGVpZ2h0PSInK18uVShhKSsncHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iJytfLlUoYikrJyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMi42NSAxMEMxMS44MyA3LjY3IDkuNjEgNiA3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDZjMi42MSAwIDQuODMtMS42NyA1LjY1LTRIMTd2NGg0di00aDJ2LTRIMTIuNjV6TTcgMTRjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsInZpc2liaWxpdHkiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIGZpbGw9IicrXy5VKG51bGwhPWI/YjoiIzYxNjE2MSIpKyciIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSInK18uVShhKSsncHgiIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsInZpc2liaWxpdHlPZmYiLDAsZnVuY3Rpb24oYSl7YT1hfHx7fTt2YXIgYj1hLmZpbGw7YT1hLndpZHRoO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIGZpbGw9IicrXy5VKG51bGwhPWI/YjoiIzYxNjE2MSIpKyciIGhlaWdodD0iJytfLlUoYSkrJ3B4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSInK18uVShhKSsncHgiIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHptMCAwaDI0djI0SDB6bTAgMGgyNHYyNEgwem0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgN2MyLjc2IDAgNSAyLjI0IDUgNSAwIC42NS0uMTMgMS4yNi0uMzYgMS44M2wyLjkyIDIuOTJjMS41MS0xLjI2IDIuNy0yLjg5IDMuNDMtNC43NS0xLjczLTQuMzktNi03LjUtMTEtNy41LTEuNCAwLTIuNzQuMjUtMy45OC43bDIuMTYgMi4xNkMxMC43NCA3LjEzIDExLjM1IDcgMTIgN3pNMiA0LjI3bDIuMjggMi4yOC40Ni40NkMzLjA4IDguMyAxLjc4IDEwLjAyIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNSAxLjU1IDAgMy4wMy0uMyA0LjM4LS44NGwuNDIuNDJMMTkuNzMgMjIgMjEgMjAuNzMgMy4yNyAzIDIgNC4yN3pNNy41MyA5LjhsMS41NSAxLjU1Yy0uMDUuMjEtLjA4LjQzLS4wOC42NSAwIDEuNjYgMS4zNCAzIDMgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjU1IDEuNTVjLS42Ny4zMy0xLjQxLjUzLTIuMi41My0yLjc2IDAtNS0yLjI0LTUtNSAwLS43OS4yLTEuNTMuNTMtMi4yem00LjMxLS43OGwzLjE1IDMuMTUuMDItLjE2YzAtMS42Ni0xLjM0LTMtMy0zbC0uMTcuMDF6Ii8+PC9zdmc+Jyk7CnJldHVybigwLF8uSCkoYil9KTsKXy5PKCJqYSIsInlvdXR1YmVTZWFyY2hlZEZvciIsMCxmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZmlsbDthPWEud2lkdGg7Yj1udWxsIT1iP2I6IiM2MTYxNjEiO2E9bnVsbCE9YT9hOjI0O2I9IiIrKCc8c3ZnIHhtbG5zPSJodHRwczovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiB3aWR0aD0iJytfLlUoYSkrJ3B4IiBoZWlnaHQ9IicrXy5VKGEpKydweCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSInK18uVShiKSsnIj48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHoiLz48cGF0aCBkPSJNMTcuMDEgMTRoLS44bC0uMjctLjI3Yy45OC0xLjE0IDEuNTctMi42MSAxLjU3LTQuMjMgMC0zLjU5LTIuOTEtNi41LTYuNS02LjVzLTYuNSAzLTYuNSA2LjVIMmwzLjg0IDQgNC4xNi00SDYuNTFDNi41MSA3IDguNTMgNSAxMS4wMSA1czQuNSAyLjAxIDQuNSA0LjVjMCAyLjQ4LTIuMDIgNC41LTQuNSA0LjUtLjY1IDAtMS4yNi0uMTQtMS44Mi0uMzhMNy43MSAxNS4xYy45Ny41NyAyLjA5LjkgMy4zLjkgMS42MSAwIDMuMDgtLjU5IDQuMjItMS41N2wuMjcuMjd2Ljc5bDUuMDEgNC45OUwyMiAxOWwtNC45OS01eiIvPjwvc3ZnPicpO3JldHVybigwLF8uSCkoYil9KTsKXy5xSD1mdW5jdGlvbihhKXt2YXIgYj1hLkRhO3JldHVybigwLF8uSCkoIiIrQUMoXy5OKHtEYTpfLlEoIm5ES0taYyIrKGEuRnE/IiBlTE5UMWQiOiIiKSsoYj8iICIrYjoiIikpLGF0dHJpYnV0ZXM6YS5oZH0sYSkpKyIiKX07Xy5PKCJsYSIsIiIsMCxmdW5jdGlvbihhLGIsYyl7Yj1jfHxiO2E9YXx8e307Yz1hLm5PO3ZhciBkPWEubU8sZT1hLmpyLGY9YS5kcixrPWEudXAsbj1hLndnO2E9YS5iRTt2YXIgcDtjP3A9ckgoe2xhYmVsOmMsaWQ6ZH0sYik6ZT9wPXNIKHtsYWJlbDplLGlkOmZ9LGIpOnA9IiI7cmV0dXJuKDAsXy5IKSgnPGRpdiBjbGFzcz0iJytfLlUoInpRSlYzIikrJyIganNjb250cm9sbGVyPSInK18uVSgiUUVnOXRlIikrJyIganNhY3Rpb249IicrXy5VKCJKSWJ1UWMiKSsiOiIrXy5VKCJFWEtEQmUiKSsiKCIrXy5VKCJib29sNmIiKSsiKSwiK18uVSgidmp4MkxkIikrIigiK18uVSgiTmp0aHRiIikrIiksIitfLlUoIm16c1BHZCIpKyIoIitfLlUoImJDa0R0ZSIpKyIpOyIrXy5VKCJ3YVVab2UiKSsiOiIrXy5VKCJ4T2hFWiIpKyI7IitfLlUoImt2d0tqYyIpKyI6IitfLlUoIkpuM0RpYyIpKyI7IitfLlUoInJjdVE2YiIpKyI6IitfLlUoInJjdVE2YiIpKyc7IicrKGM/JyBkYXRhLXNraXAtYWN0aW9uLWxhYmVsPSInKwpfLlUoYykrJyInOiIiKSsoZD8nIGRhdGEtc2tpcC1hY3Rpb24taWQ9IicrXy5VKGQpKyciJzoiIikrKGUmJmM/JyBkYXRhLXByaW1hcnktYWN0aW9uLWxhYmVsPSInK18uVShlKSsnIic6IiIpKyhmJiZkPycgZGF0YS1wcmltYXJ5LWFjdGlvbi1pZD0iJytfLlUoZikrJyInOiIiKSsnPjxkaXYgY2xhc3M9IicrXy5VKCJxaEZMaWUiKSsnIj4nK3ArJzwvZGl2PjxkaXYgY2xhc3M9IicrXy5VKCJLd2R6N2IiKSsnIj4nKyhrP18ucUgoe2xhYmVsOmssRnE6YT8wPGE6ITEsRGE6Xy5RKCJOYU9Ha2MiKSx0YToiYkNrRHRlIixoZDooMCxfLkR1KSgiIisoYSYmMDxhPydkYXRhLWRpc3BsYXktZGVsYXktdGltZT0iJytfLlUoYSkrJyInOiIiKSksaWQ6bn0sYik6IiIpKyI8L2Rpdj48L2Rpdj4iKX0pOwp2YXIgdEg9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5IO2E9e2xhYmVsOmEubGFiZWwsRGE6Xy5RKCJETDBRVGIiKSx0YTphLnRhLGlkOmEuaWR9O3ZhciBjPWEuRGE7YT0oMCxfLkgpKCIiK0JDKF8uTih7RGE6Xy5RKCJuREtLWmMiKyhhLkZxPyIgZUxOVDFkIjoiIikrKGM/IiAiK2M6IiIpKX0sYSkpKyIiKTtyZXR1cm4gYigiIithKyIiKX0sc0g9ZnVuY3Rpb24oYSxiLGMpe3JldHVybigwLF8uSCkoIiIrdEgoe2xhYmVsOmEubGFiZWwsdGE6Ik5qdGh0YiIsaWQ6YS5pZH0sY3x8YikrIiIpfSxySD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuKDAsXy5IKSgiIit0SCh7bGFiZWw6YS5sYWJlbCx0YToiYm9vbDZiIixpZDphLmlkfSxjfHxiKSsiIil9Owp2YXIgQmxhPVYoIkdIc0VkYiIsIkdIc0VkYiIsW18uQmksXy56LGpHXSk7Xy51SD1mdW5jdGlvbihhKXtfLmp5LmNhbGwodGhpcyxhLlphKTt0aGlzLmc9YS5pYS56Yi5jYygpO3RoaXMudz1hLmlhLmRhO3RoaXMuYj1hLmNvbnRyb2xsZXJzLkhkLmxlbmd0aD9hLmNvbnRyb2xsZXJzLkhkWzBdOm51bGw7dGhpcy5mPWEubC52aWV3cG9ydDt0aGlzLmE9dGhpcy5yYSgiZjJkM2FlIik7dGhpcy5jPV8uYXgodGhpcy5hLCJ0YWJpbmRleCIpO18uTHcodGhpcy5nLkliKCkuYm9keSxfLkR4LGZ1bmN0aW9uKCl7Xy5Qdyh0aGlzLmFhKCkudSgpLF8uT0YsbnVsbCx0aGlzKTt0aGlzLnBpKCl9LHRoaXMpfTtfLnBhKF8udUgsXy5qeSk7Xy51SC5UYT1mdW5jdGlvbigpe3JldHVybntpYTp7emI6Xy5CaSxkYTpfLnp9LGNvbnRyb2xsZXJzOntIZDoiSWdrNlcifSxsOnt2aWV3cG9ydDpqR319fTtfLnVILnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5hYSgpLmliKCJ2N3VzWWIiKX07Xy5XKF8udUgucHJvdG90eXBlLCJleW9mRGYiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdH0pOwpfLnVILnByb3RvdHlwZS5waT1mdW5jdGlvbigpe3RoaXMuQm8oKX07Xy5XKF8udUgucHJvdG90eXBlLCJ3VlhQS2MiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGl9KTtfLnVILnByb3RvdHlwZS5Cbz1mdW5jdGlvbigpe3RoaXMuYWEoKS5hYigicW1tbFJkIixfLm5HKHRoaXMuZikuVHopfTtfLlcoXy51SC5wcm90b3R5cGUsIkFBU1hQZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Cb30pO18udUgucHJvdG90eXBlLk1hPWZ1bmN0aW9uKGEpe3RoaXMuYWEoKS5SYSgiYXJpYS1idXN5IiwidHJ1ZSIpO3RoaXMuYiYmdGhpcy5iLnNob3coKTthLmRhdGEuaEMmJnZIKHRoaXMsITApfTtfLlcoXy51SC5wcm90b3R5cGUsInIweE5TYiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5NYX0pOwpfLnVILnByb3RvdHlwZS5LYT1mdW5jdGlvbihhKXt0aGlzLmImJnRoaXMuYi5FYigpO3ZIKHRoaXMsITEpO18uYngodGhpcy5hYSgpLCJhcmlhLWJ1c3kiKTsoYT1hLmRhdGE/YS5kYXRhLmF5Om51bGwpJiZ3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmYS5mb2N1cygpfTtfLlcoXy51SC5wcm90b3R5cGUsIllkMk9IZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LYX0pO3ZhciB2SD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuRmIoIms0SEVnZSIpO2I/Yy5zaXplKCk/Yy5zaG93KCk6KGI9Xy5BdChhLncsSUQse3RhOiJrNEhFZ2UiLERhOiJJZEFxdGYifSksXy5neChhLmFhKCksYiksYi5mb2N1cygpLGEuYS5SYSgidGFiaW5kZXgiLC0xKSk6KGMucmVtb3ZlKCksYS5hLlJhKCJ0YWJpbmRleCIsYS5jKSl9O18udUgucHJvdG90eXBlLnl1PWZ1bmN0aW9uKCl7dGhpcy5hLmpiKCJubkd2amYiKX07Xy5XKF8udUgucHJvdG90eXBlLCJubkd2amYiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueXV9KTsgXy51SC5wcm90b3R5cGUueHU9ZnVuY3Rpb24oKXt0aGlzLmEuaWIoIm5uR3ZqZiIpfTtfLlcoXy51SC5wcm90b3R5cGUsIm9VTUV6ZiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54dX0pO18uekEoQmxhLF8udUgpOwp2YXIgQ2xhPVYoIlM5MzUyYiIsIlM5MzUyYiIsW10pO3ZhciB3SD1mdW5jdGlvbihhKXtfLmp5LmNhbGwodGhpcyxhLlphKX07Xy5wYSh3SCxfLmp5KTt3SC5UYT1fLmp5LlRhO3dILnByb3RvdHlwZS5xUD1mdW5jdGlvbigpe3RoaXMuSGEoQWlhKX07Xy5XKHdILnByb3RvdHlwZSwicEtKSnFlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnFQfSk7Xy56QShDbGEsd0gpO3ZhciBEbGE9VigiUUVnOXRlIiwiUUVnOXRlIixbXy56XSk7dmFyIHhIPWZ1bmN0aW9uKGEpe18uankuY2FsbCh0aGlzLGEuWmEpO3RoaXMuYj1hLmlhLmRhO3RoaXMuYT1hLmNvbnRyb2xsZXJzLmx4Lmxlbmd0aD9hLmNvbnRyb2xsZXJzLmx4WzBdOm51bGx9O18ucGEoeEgsXy5qeSk7eEguVGE9ZnVuY3Rpb24oKXtyZXR1cm57aWE6e2RhOl8uen0sY29udHJvbGxlcnM6e2x4OiJiQ2tEdGUifX19O3hILnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLmRBKCl9O18uVyh4SC5wcm90b3R5cGUsInJjdVE2YiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJ9KTt4SC5wcm90b3R5cGUuZEE9ZnVuY3Rpb24oKXtpZih0aGlzLmEpe3ZhciBhPXRoaXMuYS5hYSgpLGI9YS5nZXREYXRhKCJkaXNwbGF5RGVsYXlUaW1lIik7Xy5reChiKSYmKGI9MUUzKmIuT2IoKSwoMCx3aW5kb3cuc2V0VGltZW91dCkoKDAsXy5sKShmdW5jdGlvbigpe2EuaWIoImVMTlQxZCIpfSx0aGlzKSxiKSl9fTtfLlcoeEgucHJvdG90eXBlLCJ3THZhSGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZEF9KTsKeEgucHJvdG90eXBlLnRQPWZ1bmN0aW9uKCl7dGhpcy5IYShfLnRHKX07Xy5XKHhILnByb3RvdHlwZSwidmp4MkxkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnRQfSk7eEgucHJvdG90eXBlLnZQPWZ1bmN0aW9uKCl7dGhpcy5IYSh3aWEpfTtfLlcoeEgucHJvdG90eXBlLCJFWEtEQmUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudlB9KTt4SC5wcm90b3R5cGUubFA9ZnVuY3Rpb24oKXt0aGlzLkhhKHppYSl9O18uVyh4SC5wcm90b3R5cGUsIm16c1BHZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sUH0pO3hILnByb3RvdHlwZS56ST1mdW5jdGlvbigpezA8dGhpcy5GYigiTmp0aHRiIikuc2l6ZSgpfHx5SCh0aGlzLHNILHRoaXMuZ2V0RGF0YSgicHJpbWFyeUFjdGlvbkxhYmVsIikuJGEoKSx0aGlzLmdldERhdGEoInByaW1hcnlBY3Rpb25JZCIpLiRhKCkpfTtfLlcoeEgucHJvdG90eXBlLCJKbjNEaWMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuekl9KTsKeEgucHJvdG90eXBlLlVpPWZ1bmN0aW9uKCl7MDx0aGlzLkZiKCJib29sNmIiKS5zaXplKCl8fHlIKHRoaXMsckgsdGhpcy5nZXREYXRhKCJza2lwQWN0aW9uTGFiZWwiKS4kYSgpLHRoaXMuZ2V0RGF0YSgic2tpcEFjdGlvbklkIikuJGEoKSl9O18uVyh4SC5wcm90b3R5cGUsInhPaEVaIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlVpfSk7dmFyIHlIPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlOzA8YS5GYigiTmp0aHRiIikuc2l6ZSgpP2U9YS5yYSgiTmp0aHRiIik6MDxhLkZiKCJib29sNmIiKS5zaXplKCkmJihlPWEucmEoImJvb2w2YiIpKTtlJiYoYT1fLkF0KGEuYixiLHtsYWJlbDpjLGlkOmR9KSxmeChlLHFyLGEpKX07Xy56QShEbGEseEgpOwp2YXIgRWxhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuWnQsYz1hLiR0O3JldHVybigwLF8uSCkoIjxkaXY+IitfLksoYS5lcnJvcikrJzwvZGl2PjxhIGhyZWY9IicrXy5VKF8uUHUoYykpKyciPicrXy5LKGIpKyI8L2E+Iil9O3ZhciBGbGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5MKCJQbGVhc2UgZW50ZXIgdGhlIGNoYXJhY3RlcnMgeW91IHNlZSBpbiB0aGUgaW1hZ2UgYWJvdmUiKX0sR2xhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiUGxlYXNlIHJlLWVudGVyIHRoZSBjaGFyYWN0ZXJzIHlvdSBzZWUgaW4gdGhlIGltYWdlIGFib3ZlIil9O3ZhciBIbGE9cXgoIklEek81ZCIsIklEek81ZCIsW10pO3ZhciB6SD1mdW5jdGlvbigpe307Xy5nPXpILnByb3RvdHlwZTtfLmcubWI9ZnVuY3Rpb24oKXt9O18uZy5vYT1mdW5jdGlvbigpe307Xy5nLmdldEVycm9yPWZ1bmN0aW9uKCl7fTtfLmcuQWE9ZnVuY3Rpb24oKXt9O18uZy5IZz1mdW5jdGlvbigpe307Xy5nLnpkPWZ1bmN0aW9uKCl7fTtfLmcuVGI9ZnVuY3Rpb24oKXt9O18uZy5mb2N1cz1mdW5jdGlvbigpe307Xy5nLnplPWZ1bmN0aW9uKCl7fTtfLmcucmVmcmVzaD1mdW5jdGlvbigpe307Xy52eCh6SCxIbGEsdm9pZCAwKTsKdmFyIEFIPVYoIlQzZWRSZCIsIlQzZWRSZCIsW18uel0pO3R4KEFILCJJRHpPNWQiKTt2YXIgQkg9Xy5YY3x8Xy5GYyxDSD1mdW5jdGlvbihhKXtfLmp5LmNhbGwodGhpcyxhLlphKTt0aGlzLmc9YS5pYS5kYTt0aGlzLmE9YS5jb250cm9sbGVyLkdtO3RoaXMudz10aGlzLnJhKCJPOU1pbGMiKTt0aGlzLmI9dGhpcy5GYigiQ2FrR1giKTt0aGlzLmY9dGhpcy5yYSgiU0JsU29kIik7dGhpcy5jPSExfTtfLnBhKENILF8uankpO0NILlRhPWZ1bmN0aW9uKCl7cmV0dXJue2lhOntkYTpfLnp9LGNvbnRyb2xsZXI6e0dtOiJDUVJiTGQifX19O0NILnByb3RvdHlwZS5IZz1mdW5jdGlvbigpe3JldHVybiFfLkViKF8uUGIoXy5adyh0aGlzLmYpKSl9O18uVyhDSC5wcm90b3R5cGUsIlZFTnZGZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IZ30pO0NILnByb3RvdHlwZS56bj1mdW5jdGlvbigpe3JldHVybiFfLkViKF8uUGIodGhpcy5vYSgpKSl9O18uVyhDSC5wcm90b3R5cGUsImthY294IixmdW5jdGlvbigpe3JldHVybiB0aGlzLnpufSk7CkNILnByb3RvdHlwZS56ZD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuem4oKTthfHx0aGlzLkFhKF8uRyh0aGlzLmcsRmxhKSk7cmV0dXJuIGF9O18uVyhDSC5wcm90b3R5cGUsInZ3S1JyZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56ZH0pO0NILnByb3RvdHlwZS56ZT1mdW5jdGlvbigpe2lmKF8uRWIoXy5QYihfLlp3KHRoaXMuZikpKSlyZXR1cm4gbnVsbDt2YXIgYT1uZXcgXy50ZTthLnNldFRva2VuKF8uWncodGhpcy5mKSk7dmFyIGI9dGhpcy5vYSgpO18udChhLDIsYik7cmV0dXJuIGF9O18uVyhDSC5wcm90b3R5cGUsIkVxSG9VIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnplfSk7Q0gucHJvdG90eXBlLk9wPWZ1bmN0aW9uKCl7dGhpcy5hLnJiKCExKTt0aGlzLmIudSgpJiZ0aGlzLmIuUmEoInNyYyIsIiIpfTtfLlcoQ0gucHJvdG90eXBlLCJZOEtsa2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT3B9KTsKQ0gucHJvdG90eXBlLnJlZnJlc2g9ZnVuY3Rpb24oYSl7YT8oYT1hLmdldFRva2VuKCksdGhpcy5tYigiIiksdGhpcy53LlJhKCJzcmMiLCIvQ2FwdGNoYT92PTImY3Rva2VuPSIrYSksdGhpcy5iLnUoKSYmdGhpcy5iLlJhKCJzcmMiLCIvQ2FwdGNoYT92PTImY3Rva2VuPSIrYSsiJmtpbmQ9YXVkaW8iKSx0aGlzLkhnKCk/dGhpcy5BYShfLkcodGhpcy5nLEdsYSkpOih0aGlzLmFhKCkuaWIoIlI0M1hpZiIpLHRoaXMuYS5mb2N1cygpKSxfLiR3KHRoaXMuZixhKSk6KF8uJHcodGhpcy5mLCIiKSx0aGlzLmFhKCkuamIoIlI0M1hpZiIpKX07Q0gucHJvdG90eXBlLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5vYSgpfTtfLlcoQ0gucHJvdG90eXBlLCJIdm5LMmIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2F9KTtDSC5wcm90b3R5cGUubWI9ZnVuY3Rpb24oYSl7dGhpcy5hLm1iKGEpfTtDSC5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmdldEVycm9yKCl9OwpfLlcoQ0gucHJvdG90eXBlLCJZY2Q4Z2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RXJyb3J9KTtDSC5wcm90b3R5cGUuQWE9ZnVuY3Rpb24oYSl7dGhpcy5hLkFhKGEpfTtDSC5wcm90b3R5cGUuVGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLlRiKCl9O18uVyhDSC5wcm90b3R5cGUsInUzYlc0ZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5UYn0pO0NILnByb3RvdHlwZS5mb2N1cz1mdW5jdGlvbigpe3RoaXMuYS5mb2N1cygpfTtfLlcoQ0gucHJvdG90eXBlLCJBSG11d2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9jdXN9KTtDSC5wcm90b3R5cGUuJHU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmIudSgpO3RoaXMuYz0hMDtCSCYmMT5hLnJlYWR5U3RhdGU/YS5sb2FkKCk6YS5wYXVzZWQmJmEucGxheSgpO3RoaXMubWIoIiIpfTtfLlcoQ0gucHJvdG90eXBlLCJJTWRnOGQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHV9KTsKQ0gucHJvdG90eXBlLkV1PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iLnUoKTthJiZCSCYmKGEubG9hZCgpLF8ucWwoYSwiZXJyb3IiLGZ1bmN0aW9uKCl7YS5sb2FkKCl9KSxfLnFsKGEsImNhbnBsYXkiLGZ1bmN0aW9uKCl7dGhpcy5jJiZhLnBsYXkoKX0sITEsdGhpcyksXy5xbChhLCJlbmRlZCIsZnVuY3Rpb24oKXt0aGlzLmM9ITF9LCExLHRoaXMpKX07Xy5XKENILnByb3RvdHlwZSwianFJVmNkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLkV1fSk7Xy56QShBSCxDSCk7CnZhciBESD1WKCJYV0lqUmQiLCJYV0lqUmQiLFtfLnpdKTt2YXIgRUg9ZnVuY3Rpb24oYSl7Xy5qeS5jYWxsKHRoaXMsYS5aYSk7dGhpcy5hPWEuY29udHJvbGxlci5Sbzt0aGlzLmc9dGhpcy5BZD0iIjt0aGlzLmRhPWEuaWEuZGE7dGhpcy5mPV8uVXcodGhpcy5hYSgpLCIuekhRa0JmIil9O18ucGEoRUgsXy5qeSk7RUguVGE9ZnVuY3Rpb24oKXtyZXR1cm57aWE6e2RhOl8uen0sY29udHJvbGxlcjp7Um86IlZzYjVVYiJ9fX07RUgucHJvdG90eXBlLkhuPWZ1bmN0aW9uKGEpezEzPT1hLmV2ZW50LmtleUNvZGUmJnRoaXMuSGEoXy50Ryk7cmV0dXJuITB9O18uVyhFSC5wcm90b3R5cGUsIkM5QmFYZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Ibn0pO0VILnByb3RvdHlwZS5mb2N1cz1mdW5jdGlvbigpe3RoaXMuYS5mb2N1cygpfTtfLlcoRUgucHJvdG90eXBlLCJBSG11d2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9jdXN9KTtFSC5wcm90b3R5cGUuV2g9ZnVuY3Rpb24oKXt0aGlzLkhhKF8uU0UsdGhpcy5mKX07Cl8uVyhFSC5wcm90b3R5cGUsIkp0MUVYIixmdW5jdGlvbigpe3JldHVybiB0aGlzLldofSk7RUgucHJvdG90eXBlLmhhc0ZvY3VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5UYigpfTtfLlcoRUgucHJvdG90eXBlLCJtTkZMOSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNGb2N1c30pO0VILnByb3RvdHlwZS51UD1mdW5jdGlvbigpe3RoaXMuSGEoXy5URSx0aGlzLmYpfTtfLlcoRUgucHJvdG90eXBlLCJZb2tBdGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudVB9KTtFSC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vYSgpO2EmJih0aGlzLkhhKF8uQ3gsYSksdGhpcy5hLmFhKCkuamIoIkNERUxYYiIpKTtleCh0aGlzLmFhKCksImlzUmVuZGVyZWQiLCJ0cnVlIil9O18uVyhFSC5wcm90b3R5cGUsInJjdVE2YiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJ9KTsKRUgucHJvdG90eXBlLkFhPWZ1bmN0aW9uKGEsYixjKXtiJiZjJiYoYT1fLkF0KHRoaXMuZGEsRWxhLHtlcnJvcjphLFp0OmIsJHQ6Xy5oLnZpZXdQYXRoUHJlZml4K2N9KSk7dGhpcy5hLkFhKGEpO3RoaXMuQWQ9YXx8IiJ9O0VILnByb3RvdHlwZS5nZXRFcnJvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkFkfTtfLlcoRUgucHJvdG90eXBlLCJZY2Q4Z2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RXJyb3J9KTtFSC5wcm90b3R5cGUuTGM9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuQWR9O18uVyhFSC5wcm90b3R5cGUsIkpqNkxhZSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5MY30pO0VILnByb3RvdHlwZS5tYj1mdW5jdGlvbihhKXt0aGlzLmEubWIoYSl9O0VILnByb3RvdHlwZS5vYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEub2EoKX07Xy5XKEVILnByb3RvdHlwZSwiSHZuSzJiIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm9hfSk7RUgucHJvdG90eXBlLlRiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5UYigpfTsKXy5XKEVILnByb3RvdHlwZSwidTNiVzRlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlRifSk7RUgucHJvdG90eXBlLmtsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS52aigpWzBdfTtfLlcoRUgucHJvdG90eXBlLCJqYkNjZyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rbH0pO0VILnByb3RvdHlwZS5scT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEudmooKVsxXX07Xy5XKEVILnByb3RvdHlwZSwiYUxZSzJlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmxxfSk7RUgucHJvdG90eXBlLndqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ307Xy5XKEVILnByb3RvdHlwZSwicmYyWGIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2p9KTtFSC5wcm90b3R5cGUucmg9ZnVuY3Rpb24oYSl7dGhpcy5hLnJoKGEpfTtFSC5wcm90b3R5cGUuRHI9ZnVuY3Rpb24oYSxiKXtfLlJHKHRoaXMuYSxhKTtfLlNHKHRoaXMuYSxiKX07RUgucHJvdG90eXBlLnJiPWZ1bmN0aW9uKGEpe3RoaXMuYS5yYihhKX07IEVILnByb3RvdHlwZS5mZT1mdW5jdGlvbihhKXt0aGlzLmEuZmUoYSk7dGhpcy5nPWF8fCIifTtfLnpBKERILEVIKTsKdmFyIElsYT1xeCgiTGpqQU5lIiwiTGpqQU5lIixbXSk7dmFyIEZIPWZ1bmN0aW9uKCl7fTtfLmc9RkgucHJvdG90eXBlO18uZy53bD1mdW5jdGlvbigpe307Xy5nLmRoPWZ1bmN0aW9uKCl7fTtfLmcucm09ZnVuY3Rpb24oKXt9O18uZy5tYj1mdW5jdGlvbigpe307Xy5nLm9hPWZ1bmN0aW9uKCl7fTtfLmcuZm9jdXM9ZnVuY3Rpb24oKXt9O18uZy5BYT1mdW5jdGlvbigpe307Xy52eChGSCxJbGEsdm9pZCAwKTt2YXIgR0g9VigibU96SjFiIiwibU96SjFiIixbREhdKTt0eChHSCwiTGpqQU5lIik7dmFyIEpsYT0vQC8sSEg9ZnVuY3Rpb24oYSl7RUguY2FsbCh0aGlzLGEuWmEpO3RoaXMuYj0wO3RoaXMuZj1fLlV3KHRoaXMuYWEoKSwiLnpIUWtCZiIpO3RoaXMuYz1uZXcgXy5Sdyhbd2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52SFZHdWIgLk1RTDNPYiIpXSk7dGhpcy53PXRoaXMuYWEoKS5nZXREYXRhKCJhbGxvd0F0U2lnbiIpLmEoITApfTtfLnBhKEhILEVIKTtISC5UYT1FSC5UYTtISC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7InJ0bCI9PXdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKSYmdGhpcy53bCgpJiYodGhpcy5iPV8ueXcodGhpcy5jLnUoKSkud2lkdGgsSUgodGhpcywhMCkpO3RoaXMucm0oKTtFSC5wcm90b3R5cGUucmVuZGVyLmNhbGwodGhpcyl9O18uVyhISC5wcm90b3R5cGUsInJjdVE2YiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJ9KTtISC5wcm90b3R5cGUud2w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmFhKCkuZGMoIkxNYWJHYiIpfTsKXy5XKEhILnByb3RvdHlwZSwicFhnU2plIixmdW5jdGlvbigpe3JldHVybiB0aGlzLndsfSk7SEgucHJvdG90eXBlLmRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2woKT90aGlzLmMuJGIoKS5yZXBsYWNlKCJAIiwiIik6IiJ9O18uVyhISC5wcm90b3R5cGUsIkFFMmZjZiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaH0pO0hILnByb3RvdHlwZS5ybT1mdW5jdGlvbigpe2lmKHRoaXMud2woKSYmdGhpcy53KXt2YXIgYT1KbGEudGVzdCh0aGlzLm9hKCkpO3RoaXMuYS5hYSgpLmFiKCJJRURlS2IiLGEpOyJydGwiPT13aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIikmJnRoaXMud2woKSYmSUgodGhpcywhYSl9cmV0dXJuITB9O18uVyhISC5wcm90b3R5cGUsImRpMGZKIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnJtfSk7dmFyIElIPWZ1bmN0aW9uKGEsYil7Xy5jeChhLmYsInBhZGRpbmctcmlnaHQiLChiP2EuYjowKSsicHgiKX07IF8uekEoR0gsSEgpOwpfLkpIPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiU2hvdyBwYXNzd29yZCIpfTtfLktIPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTCgiSGlkZSBwYXNzd29yZCIpfTtfLkxIPWZ1bmN0aW9uKGEpe3ZhciBiPWEuY29udGVudCxjPWEuY2hlY2tlZCxkPWEuWjYsZT1hLmdjLGY9YS5BaCxrPWEudGl0bGUsbj1hLnRhLHA9YS5McixBPWEuRXAsRD1hLmRpc2FibGVkLEY9YS5xZixJPWEuRGEsSj1hLmlkLE09YS5hdHRyaWJ1dGVzLFI9YS5XaixTPWEueHM7YT1hLmluZGV0ZXJtaW5hdGU/IiAiK18uVSgiQjZWaHFlIik6Yz8iICIrXy5VKCJOMlJwQmUiKToiIjtjPWMmJkE/JyBqc2xvZz0iJytfLlUoQSkrIjsgdHJhY2s6IitfLlUoIkpJYnVRYyIpKyciJzohYyYmcD8nIGpzbG9nPSInK18uVShwKSsiOyB0cmFjazoiK18uVSgiSklidVFjIikrJyInOiIiO2U9Zj8nIGFyaWEtbGFiZWxsZWRieT0iJytfLlUoZikrJyInOmU/JyBhcmlhLWxhYmVsPSInK18uVShlKSsnIic6IiI7cmV0dXJuKDAsXy5IKSgiPGRpdiIrKEo/JyBpZD0iJytfLlUoSikrJyInOiIiKSsnIGNsYXNzPSInK18uVShJKSthKyhEPyIgIitfLlUoIlJEUFpFIik6IiIpKyciIGpzY29udHJvbGxlcj0iJysKXy5VKCJFY1cwOGMiKSsnIiBqc2FjdGlvbj0iY2xpY2s6JytfLlUoImNPdUNnZCIpKyI7IG1vdXNlZG93bjoiK18uVSgiVVg3eVoiKSsiOyBtb3VzZXVwOiIrXy5VKCJsYnNEN2UiKSsiOyBtb3VzZWxlYXZlOiIrXy5VKCJKeXdHdWUiKSsiOyB0b3VjaHN0YXJ0OiIrXy5VKCJwNnAySCIpKyI7IHRvdWNobW92ZToiK18uVSgiRnd1Tm5mIikrIjsgdG91Y2hlbmQ6IitfLlUoInlmcUJ4YyIpKyIocHJldmVudE1vdXNlRXZlbnRzPXRydWV8cHJldmVudERlZmF1bHQ9dHJ1ZSk7IHRvdWNoY2FuY2VsOiIrXy5VKCJKTXRSamQiKSsiOyBmb2N1czoiK18uVSgiQUhtdXdlIikrIjsgYmx1cjoiK18uVSgiTzIycDNlIikrIjsga2V5ZG93bjoiK18uVSgiSTQ4MWxlIikrIjsgY29udGV4dG1lbnU6IitfLlUoIm1nOVBlZiIpKyciJysoMD09ZD8nIGRhdGEtdG9nZ2xlcz0iZmFsc2UiJzoiIikrKEE/JyBkYXRhLWNoZWNrZWQtdmVpZD0iJytfLlUoQSkrJyInOiIiKSsocD8nIGRhdGEtdW5jaGVja2VkLXZlaWQ9IicrIF8uVShwKSsnIic6IiIpK2MrIiBqc3NoYWRvdyIrKG4/JyBqc25hbWU9IicrXy5VKG4pKyciJzoiIikrZSsoRD8nIGFyaWEtZGlzYWJsZWQ9InRydWUiJzonIHRhYmluZGV4PSInKyhGP18uVShGKToiMCIpKyciJykrKGs/JyB0aXRsZT0iJytfLlUoaykrJyInOiIiKSsoTT8iICIrXy5KdShNKToiIikrJyByb2xlPSInK18uVShSKSsnIiAnK18uSnUoUykrIj4iKyhiP18uSyhiKToiIikrIjwvZGl2PiIpfTsKXy5NSD1mdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPWEuZ2MsYz1hLkFoLGQ9YS5jaGVja2VkLGU9YS5pbmRldGVybWluYXRlLGY9YS50aXRsZSxrPWEudGEsbj1hLlB4LHA9YS5McixBPWEuRXAsRD1hLmRpc2FibGVkLEY9YS5xZixJPWEua0IsSj1hLkRhLE09YS5pZDthPWEuYXR0cmlidXRlczt2YXIgUj0iIjt2YXIgUz0oMCxfLkR1KSgnYXJpYS1jaGVja2VkPSInKyhlPyJtaXhlZCI6ZD8idHJ1ZSI6ImZhbHNlIikrJyInKTtSKz1fLkxIKHtEYTpfLlEoInVWY2NqZCIrKG4/IiBaZGhONWIiOiIiKSsoSj8iICIrSjoiIikpLGNvbnRlbnQ6KDAsXy5UKSgnPGRpdiBjbGFzcz0iJytfLlUoIlBrZ2pCZiIpKyIgIitfLlUoIk1iaFV6ZCIpKyciPjwvZGl2PjxkaXYgY2xhc3M9IicrXy5VKCJ1SE1rNmIiKSsiICIrXy5VKCJmc0hvUGIiKSsnIj48L2Rpdj48ZGl2IGNsYXNzPSInK18uVSgicnE4TXdiIikrJyI+PGRpdiBjbGFzcz0iJytfLlUoIlRDQTZxZCIpKyciPjxkaXYgY2xhc3M9IicrCl8uVSgiTWJVVE5jIikrIiAiK18uVSgib3lENU9jIikrJyI+PC9kaXY+PGRpdiBjbGFzcz0iJytfLlUoIklpNmNWYyIpKyIgIitfLlUoIm95RDVPYyIpKyciPjwvZGl2PjwvZGl2PjwvZGl2PicpLFdqOkk/InByZXNlbnRhdGlvbiI6ImNoZWNrYm94Iix4czpTLGdjOmIsQWg6YyxjaGVja2VkOmQsaW5kZXRlcm1pbmF0ZTplLHRpdGxlOmYsdGE6ayxMcjpwLEVwOkEsZGlzYWJsZWQ6RCxxZjpGLGlkOk0sYXR0cmlidXRlczphfSkrIiI7cmV0dXJuKDAsXy5IKShSKX07CnZhciBLbGE9cXgoInoxY0hlYiIsInoxY0hlYiIsW10pO3ZhciBOSD1mdW5jdGlvbigpe307Xy5nPU5ILnByb3RvdHlwZTtfLmcub2E9ZnVuY3Rpb24oKXt9O18uZy5tYj1mdW5jdGlvbigpe307Xy5nLlRiPWZ1bmN0aW9uKCl7fTtfLmcuZ2V0RXJyb3I9ZnVuY3Rpb24oKXt9O18uZy5BYT1mdW5jdGlvbigpe307Xy5nLnJiPWZ1bmN0aW9uKCl7fTtfLmcud2o9ZnVuY3Rpb24oKXt9O18uZy5mZT1mdW5jdGlvbigpe307Xy52eChOSCxLbGEsdm9pZCAwKTt2YXIgTGxhPV8uRXYoImI1TTluYiIpO3ZhciBPSD1WKCJwOFJSbGMiLCJwOFJSbGMiLFtESF0pO3R4KE9ILCJ6MWNIZWIiKTt2YXIgUEg9ZnVuY3Rpb24oYSl7RUguY2FsbCh0aGlzLGEuWmEpO3RoaXMuYz0odGhpcy5iPXRoaXMucG4oKSk/dGhpcy5iLmhhc0F0dHJpYnV0ZSgiZGF0YS10b29sdGlwIik6ITF9O18ucGEoUEgsRUgpO1BILlRhPUVILlRhO1BILnByb3RvdHlwZS5laz1mdW5jdGlvbigpe3ZhciBhPSF0aGlzLmFhKCkuZGMoImVPMlpmZCIpO3RoaXMuYWEoKS5hYigiZU8yWmZkIixhKTtfLlR3KHRoaXMuYWEoKSwiaW5wdXQiKS5SYSgidHlwZSIsYT8idGV4dCI6InBhc3N3b3JkIik7dGhpcy5iJiYoXy5lRih0aGlzLmIsImxhYmVsIixfLkcodGhpcy5kYSxhP18uS0g6Xy5KSCkpLHRoaXMuYyYmdGhpcy5iLnNldEF0dHJpYnV0ZSgiZGF0YS10b29sdGlwIixfLkcodGhpcy5kYSxhP18uS0g6Xy5KSCkpLHRoaXMuSGEoTGxhLGEpKX07Xy5XKFBILnByb3RvdHlwZSwibkFGMThlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVrfSk7UEgucHJvdG90eXBlLkdzPWZ1bmN0aW9uKCl7cmV0dXJuITB9OwpfLlcoUEgucHJvdG90eXBlLCJWQ2t1emQiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR3N9KTtQSC5wcm90b3R5cGUucG49ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkZiKCJzRWJYMiIpO3JldHVybiBhLnNpemUoKT9hLnUoKTpudWxsfTtfLlcoUEgucHJvdG90eXBlLCJjN3B0c2IiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG59KTtQSC5wcm90b3R5cGUub2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLm9hKCl9O18uVyhQSC5wcm90b3R5cGUsIkh2bksyYiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYX0pO1BILnByb3RvdHlwZS5tYj1mdW5jdGlvbihhKXt0aGlzLmEubWIoYSl9O1BILnByb3RvdHlwZS5UYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuVGIoKX07Xy5XKFBILnByb3RvdHlwZSwidTNiVzRlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLlRifSk7UEgucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nZXRFcnJvcigpfTsKXy5XKFBILnByb3RvdHlwZSwiWWNkOGdlIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVycm9yfSk7UEgucHJvdG90eXBlLkFhPWZ1bmN0aW9uKGEpe3RoaXMuYS5BYShhKX07UEgucHJvdG90eXBlLnJiPWZ1bmN0aW9uKGEpe3RoaXMuYS5yYihhKX07UEgucHJvdG90eXBlLndqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2ooKX07Xy5XKFBILnByb3RvdHlwZSwicmYyWGIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2p9KTtQSC5wcm90b3R5cGUuZmU9ZnVuY3Rpb24oYSl7dGhpcy5hLmZlKGEpfTtfLnpBKE9ILFBIKTsKdmFyIE1sYT1xeCgiUmxpZk1jIiwiUmxpZk1jIixbXSk7dmFyIFFIPWZ1bmN0aW9uKCl7fTtRSC5wcm90b3R5cGUudWQ9ZnVuY3Rpb24oKXt9O1FILnByb3RvdHlwZS5qZz1mdW5jdGlvbigpe307Xy52eChRSCxNbGEsdm9pZCAwKTt2YXIgUkg9VigieUJhcm1lIiwieUJhcm1lIixbXSk7dHgoUkgsIlJsaWZNYyIpO3ZhciBTSD1mdW5jdGlvbihhKXtfLmp5LmNhbGwodGhpcyxhLlphKTt0aGlzLmE9YS5jb250cm9sbGVyLnRvZ2dsZX07Xy5wYShTSCxfLmp5KTtTSC5UYT1mdW5jdGlvbigpe3JldHVybntjb250cm9sbGVyOnt0b2dnbGU6Im9yblUwYiJ9fX07U0gucHJvdG90eXBlLnVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS51ZCgpfTtfLlcoU0gucHJvdG90eXBlLCJOMlJwQmUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWR9KTtTSC5wcm90b3R5cGUuamc9ZnVuY3Rpb24oKXt0aGlzLmEuamcoKX07Xy5XKFNILnByb3RvdHlwZSwiQlE3SExkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmpnfSk7Xy56QShSSCxTSCk7CnZhciBObGE9cXgoIlB6WDkwZCIsIlB6WDkwZCIsW10pO3ZhciBUSD1mdW5jdGlvbigpe307VEgucHJvdG90eXBlLldCPWZ1bmN0aW9uKCl7fTtfLnZ4KFRILE5sYSx2b2lkIDApO3ZhciBPbGE9Xy5FdigicHFVeUNlIik7dmFyIFBsYT1uZXcgXy54bigiYXJpYS1hdG9taWMgYXJpYS1kcm9wZWZmZWN0IGFyaWEtZmxvd3RvIGFyaWEtZ3JhYmJlZCBhcmlhLWhpZGRlbiBhcmlhLWxpdmUgYXJpYS1vd25zIGFyaWEtcmVsZXZhbnQiLnNwbGl0KCIgIikpO25ldyBfLnhuKFsiYXJpYS1kZXNjcmliZWRieSIsImFyaWEtbGFiZWwiLCJhcmlhLWxhYmVsbGVkYnkiXSk7dmFyIFFsYT1uZXcgXy54bigiYXJpYS1jb250cm9scyBhcmlhLWRpc2FibGVkIGFyaWEtZXhwYW5kZWQgYXJpYS1oYXNwb3B1cCBhcmlhLWludmFsaWQgYXJpYS1yZXF1aXJlZCIuc3BsaXQoIiAiKSksUmxhPW5ldyBfLnhuKFsiYXJpYS1wb3NpbnNldCIsImFyaWEtc2VsZWN0ZWQiLCJhcmlhLXNldHNpemUiXSk7bmV3IF8ueG4oWyJhcmlhLWNoZWNrZWQiLCJhcmlhLWV4cGFuZGVkIiwiYXJpYS1ncmFiYmVkIiwiYXJpYS1wcmVzc2VkIiwiYXJpYS1zZWxlY3RlZCJdKTtuZXcgXy54bigiYXJpYS1hdG9taWMgYXJpYS1idXN5IGFyaWEtY2hlY2tlZCBhcmlhLWRpc2FibGVkIGFyaWEtZXhwYW5kZWQgYXJpYS1ncmFiYmVkIGFyaWEtaGFzcG9wdXAgYXJpYS1oaWRkZW4gYXJpYS1pbnZhbGlkIGFyaWEtbXVsdGlsaW5lIGFyaWEtbXVsdGlzZWxlY3RhYmxlIGFyaWEtcHJlc3NlZCBhcmlhLXJlYWRvbmx5IGFyaWEtcmVxdWlyZWQgYXJpYS1zZWxlY3RlZCIuc3BsaXQoIiAiKSk7Cm5ldyBfLnhuKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgYXJpYS1jb250cm9scyBhcmlhLWRlc2NyaWJlZGJ5IGFyaWEtZmxvd3RvIGFyaWEtbGFiZWxsZWRieSBhcmlhLW93bnMiLnNwbGl0KCIgIikpO25ldyBfLnhuKFsiYXJpYS1sZXZlbCIsImFyaWEtcG9zaW5zZXQiLCJhcmlhLXNldHNpemUiXSk7bmV3IF8ueG4oWyJhcmlhLXZhbHVlbWF4IiwiYXJpYS12YWx1ZW1pbiIsImFyaWEtdmFsdWVub3ciXSk7bmV3IF8ueG4oWyJhcmlhLWxhYmVsIiwiYXJpYS12YWx1ZXRleHQiXSk7Cm5ldyBfLldsKCJhcmlhLWF1dG9jb21wbGV0ZSIsbmV3IF8ueG4oWyJpbmxpbmUiLCJsaXN0IiwiYm90aCIsIm5vbmUiXSksImFyaWEtY2hlY2tlZCIsbmV3IF8ueG4oWyJtaXhlZCJdKSwiYXJpYS1kcm9wZWZmZWN0IixuZXcgXy54bigiY29weSBtb3ZlIGxpbmsgZXhlY3V0ZSBwb3B1cCBub25lIi5zcGxpdCgiICIpKSwiYXJpYS1pbnZhbGlkIixuZXcgXy54bihbImdyYW1tYXIiLCJzcGVsbGluZyJdKSwiYXJpYS1saXZlIixuZXcgXy54bihbIm9mZiIsInBvbGl0ZSIsImFzc2VydGl2ZSJdKSwiYXJpYS1vcmllbnRhdGlvbiIsbmV3IF8ueG4oWyJ2ZXJ0aWNhbCIsImhvcml6b250YWwiXSksImFyaWEtcHJlc3NlZCIsbmV3IF8ueG4oWyJtaXhlZCJdKSwiYXJpYS1yZWxldmFudCIsbmV3IF8ueG4oWyJhZGRpdGlvbnMiLCJyZW1vdmFscyIsInRleHQiLCJhbGwiLCJhZGRpdGlvbnMgdGV4dCJdKSwiYXJpYS1zb3J0IixuZXcgXy54bihbImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJub25lIiwgIm90aGVyIl0pKTtuZXcgXy54bihbImNsaWNrIiwiY2xpY2sgaGVyZSIsImxlYXJuIG1vcmUiLCJ0aGlzIl0pOwp2YXIgVUg9VigielZVbVNlIiwielZVbVNlIixbXSk7dHgoVUgsIlB6WDkwZCIpO3ZhciBWSD1mdW5jdGlvbihhKXtfLmp5LmNhbGwodGhpcyxhLlphKX07Xy5wYShWSCxfLmp5KTtWSC5UYT1fLmp5LlRhO1ZILnByb3RvdHlwZS5XQj1mdW5jdGlvbigpe3RoaXMuSGEoT2xhKX07Xy5XKFZILnByb3RvdHlwZSwiYXJ6NUNkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLldCfSk7Xy56QShVSCxWSCk7YXQoe2E6W3hpXSxiOmZ1bmN0aW9uKGEpe251KG11KGEpLGF1KX0sVWM6ZnVuY3Rpb24oYSl7dmFyIGI9bXUoYSk7YT1ydTtydT12b2lkIDA7Xy53bShiLmIuYXBwbHkoYixhKSxmdW5jdGlvbigpe3B1KGIsYXUpfSl9fSk7YXQoe2E6W18uTmksXy5CaV0sVWM6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXQoXy5OaSk7YT1fLlh4KGEpO2IuVWMoYS5jYygpLmdldFdpbmRvdygpKX19KTthdCh7YTpbeGksXy5CaV0sVWM6ZnVuY3Rpb24oYSl7dmFyIGI9bXUoYSksYz1fLlh4KGEpLmNjKCksZD1mdW5jdGlvbigpe18uZXIoImxEd3BPZSIsYy5hKT9wdShiLCJkciIpOndpbmRvdy5zZXRUaW1lb3V0KGQsMjApfTtkKCl9fSk7dmFyIFdIPWZ1bmN0aW9uKGEsYixjKXtfLkNsLmNhbGwodGhpcyk7dGhpcy5vPW5ldyBfLkNyKHRoaXMpO3RoaXMuYj1hO3RoaXMuZj1ifHxhO3RoaXMudz1jfHwhMTt0aGlzLmE9ITA7dGhpcy5vLmxpc3Rlbih0aGlzLmYsInNjcm9sbCIsdGhpcy5pKTt0aGlzLmM9MH07Xy5tKFdILF8uQ2wpO1dILnByb3RvdHlwZS5yYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ9O18uRUk9ZnVuY3Rpb24oYSl7YS5hJiYoYS5jPWEuYi5zY3JvbGxUb3AsYS5hPSExKTtyZXR1cm4gYS5jfTtfLkZJPWZ1bmN0aW9uKGEsYil7Xy5FSShhKSE9YiYmKGEuYT0hMCxhLmIuc2Nyb2xsVG9wPWIpfTtXSC5wcm90b3R5cGUuaT1mdW5jdGlvbihhKXtpZihhLnRhcmdldD09dGhpcy5mfHxfLndjJiYhYS50YXJnZXQpdGhpcy5hPSEwfTtXSC5wcm90b3R5cGUub2I9ZnVuY3Rpb24oKXtXSC4kLm9iLmNhbGwodGhpcyk7Q2sodGhpcy5vKTtkZWxldGUgdGhpcy5iO2RlbGV0ZSB0aGlzLmZ9Owp2YXIgR0k9ZnVuY3Rpb24oYSl7Xy5DbC5jYWxsKHRoaXMpO3RoaXMubz1hO3RoaXMuZj1uZXcgXy5Dcih0aGlzKTt0aGlzLmM9W107dGhpcy53PW51bGw7bmV3IF8ueG4oWyJJTlBVVCIsIlRFWFRBUkVBIiwiSUZSQU1FIl0pfSxJSTtfLm0oR0ksXy5DbCk7R0kucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7R0kuJC5vYi5jYWxsKHRoaXMpO3RoaXMuZi5kaXNwb3NlKCk7dGhpcy5mPW51bGw7Q2sodGhpcy5iKTtmb3IodmFyIGE9MCxiO2I9dGhpcy5jW2FdO2ErKylDayhiKX07Xy5IST1mdW5jdGlvbihhLGIpe2lmKCFifHwhYi5wYXJlbnROb2RlfHwwPT1hLmMubGVuZ3RoKXJldHVybiBhLmI7Yj1iLnBhcmVudE5vZGU7Zm9yKHZhciBjPTAsZDtkPWEuY1tjXTtjKyspaWYoYS5qYS5jb250YWlucyhkLnJhKCksYikpcmV0dXJuIGQ7cmV0dXJuIGEuYn07CklJPWZ1bmN0aW9uKGEsYixjKXtjPV8uZHIoYyxhLmEuYSk7Zm9yKHZhciBkPWMubGVuZ3RoLGU9MDtlPGQ7ZSsrKXt2YXIgZj1jW2VdO2lmKGYmJiJub25lIiE9Zi5zdHlsZS5kaXNwbGF5JiYhYS5hLmNvbnRhaW5zKGYsYikmJihmPV8uc3coZiksMUU0Pk1hdGguYWJzKGYueCkmJjFFND5NYXRoLmFicyhmLnkpKSlyZXR1cm4hMH1yZXR1cm4hMX07R0kucHJvdG90eXBlLmZvY3VzPWZ1bmN0aW9uKGEpe0lJKHRoaXMsYSwiWEtTZm0iKXx8SUkodGhpcyxhLCJYS1NmbS1TeDlLd2MiKXx8KGEuZm9jdXMoKSxfLkhJKHRoaXMsYSkuYT0hMCl9O0dJLnByb3RvdHlwZS53YT1mdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtpZigzMj09YS5BaiYmKCFifHx0aGlzLncuY29udGFpbnMoYi50YWdOYW1lKSkpe2I9Xy5ISSh0aGlzLGIpO3ZhciBjPS45KmIucmEoKS5vZmZzZXRIZWlnaHQ7YS5zaGlmdEtleT9fLkZJKGIsXy5FSShiKS1jKTpfLkZJKGIsXy5FSShiKStjKX19OwphdCh7WmM6W3tpZDpfLkhpLFFiOkdJLG11bHRpcGxlOiEwfV0sYTpbeGksXy5CaV0sYjpmdW5jdGlvbihhKXtudShtdShhKSxjdSk7cnUucHVzaChjdSl9LFVjOmZ1bmN0aW9uKGEpe3ZhciBiPW11KGEpO18ud20oYi5iKCJkciIpLGZ1bmN0aW9uKCl7dmFyIGM9Xy5YeChhKS5jYygpLkliKCksZD1hLmdldChfLkhpKTtpZihkLmkpdGhyb3cgRXJyb3IoImJiIik7ZC5pPV8uYnIoYyk7aWYoZC5hKXRocm93IEVycm9yKCJiYiIpO2QuYT1fLmJyKGMpO2lmKF8uemMpe3ZhciBlPWQuYS5JYigpLmJvZHk7ZS5oYXNBdHRyaWJ1dGUoInRhYkluZGV4Iil8fChlLnRhYkluZGV4PS0xKX1lPV8uanIoXy5icihjKS5hKTt2YXIgZj1jO18ud2MmJiFPYygiOSIpP2Y9Xy5scihjKTpfLnpjJiYhT2MoIjEuOC4xIikmJihmPWMuZG9jdW1lbnRFbGVtZW50KTtlPW5ldyBXSChlLGYsITApO2QuYj1lO18ud2MmJiFPYygiNyIpJiYoZC53PW5ldyBfLnhuKCJESVYgU1BBTiBJTUcgVEQgVFIgVEFCTEUgUFJFIFAiLnNwbGl0KCIgIikpLCBkLmYubGlzdGVuKGMsImtleXByZXNzIixkLndhKSk7ZC5qYT1fLmJyKGMpO3B1KGIsY3UpfSl9fSk7CmF0KHtaYzpbe2lkOktpLHlKOiEwfV0sYTpbeGksXy5CaV0sYjpmdW5jdGlvbihhKXtuZXcgZ3UoXy5YeChhKS5jYygpLmdldFdpbmRvdygpLGEpfX0pO3ZhciBTbGE9ZnVuY3Rpb24oKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24oYSl7InZlcmlmeS1vcmlnaW4iPT09YS5kYXRhJiZhLnNvdXJjZS5wYXJlbnQ9PT13aW5kb3cmJmEuc291cmNlLnBvc3RNZXNzYWdlKCJ2ZXJpZnktb3JpZ2luLXJlcGx5IixhLm9yaWdpbil9KX07Xy5KST1mdW5jdGlvbihhKXtfLmp5LmNhbGwodGhpcyxhLlphKTt2YXIgYj10aGlzO3RoaXMuemI9YS5pYS56Yjt0aGlzLlViPWEuaWEuVWI7dGhpcy53PWEubC5nYXBpO3RoaXMuYT10aGlzLmI9dGhpcy5jPW51bGw7YT10aGlzLmdldERhdGEoImlmcmFtZVVyaSIpLiRhKCk7dmFyIGM9bmV3IF8uYWEodGhpcy56Yi5jYygpLmdldFdpbmRvdygpLmxvY2F0aW9uLmhyZWYpO3RoaXMuZz1jLmI7dGhpcy5mPV8uQ3AoXy5DcChfLkNwKG5ldyBfLmFhKGEpLCJzaXRlSWQiLHRoaXMuZ2V0RGF0YSgic2l0ZUlkIikuJGEoKSksIm9yaWdpbiIsZGEoYykpLCJwYXJlbnRQYXRoIix0aGlzLmcpO18ua3godGhpcy5nZXREYXRhKCJ0YWciKSkmJnRoaXMuZ2V0RGF0YSgidGFnIikuJGEoKSYmXy5DcCh0aGlzLmYsInRhZyIsdGhpcy5nZXREYXRhKCJ0YWciKS4kYSgpKTt2YXIgZD1kYSh0aGlzLmYpO18uVXYodGhpcyxfLnNrKHRoaXMudy5sb2FkKCJnYXBpLmlmcmFtZXM6Z2FwaS5pZnJhbWVzLnN0eWxlLmNvbW1vbiIpLnRoZW4oZnVuY3Rpb24oYSl7cmV0dXJuIGIuYT0KYX0sZnVuY3Rpb24oKXt9KS50aGVuKGZ1bmN0aW9uKCl7Yi5jPWIuYS5pZnJhbWVzLm1ha2VXaGl0ZUxpc3RJZnJhbWVzRmlsdGVyKFtkXSk7cmV0dXJuIGIuYX0sZnVuY3Rpb24oKXt9KSxmdW5jdGlvbigpe30pKX07Xy5wYShfLkpJLF8uankpO18uSkkuVGE9ZnVuY3Rpb24oKXtyZXR1cm57aWE6e3piOl8uQmksVWI6RWl9LGw6e2dhcGk6TEJ9fX07Cl8uSkkucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3RoaXMuYSYmdGhpcy5hLmlmcmFtZXMmJihTbGEoKSx0aGlzLmI9dGhpcy5hLmlmcmFtZXMuZ2V0Q29udGV4dCgpLm9wZW5DaGlsZCh7dXJsOnRoaXMuZi50b1N0cmluZygpLHdoZXJlOnRoaXMucmEoImprYVNjZiIpLnUoKSxhdHRyaWJ1dGVzOntzdHlsZTp7YmFja2dyb3VuZDoibm9uZSIsYm9yZGVyOiJub25lIixib3R0b206IjAiLGhlaWdodDoiMTAwJSIscmlnaHQ6Ii0xMDAlIixwb3NpdGlvbjoiZml4ZWQiLHdpZHRoOiIxMDAlIiwiei1pbmRleCI6IjEifX19KSxLSSh0aGlzLCJoYXRzQWZ0ZXJTaG93Iix0aGlzLnFJKSxLSSh0aGlzLCJoYXRzTG9nU2hvdyIsdGhpcy52SSksS0kodGhpcywiaGF0c0xvZ0Nsb3NlIix0aGlzLnNJKSxLSSh0aGlzLCJoYXRzTG9nQ2xvc2VEZWNsaW5lIix0aGlzLnJJKSxLSSh0aGlzLCJoYXRzTG9nUGFydGlhbFJlc3BvbnNlIix0aGlzLnVJKSxLSSh0aGlzLCJoYXRzTG9nQ29tcGxldGVSZXNwb25zZSIsCnRoaXMudEkpKX07Xy5XKF8uSkkucHJvdG90eXBlLCJyY3VRNmIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyfSk7dmFyIEtJPWZ1bmN0aW9uKGEsYixjKXthLmIucmVnaXN0ZXIoYiwoMCxfLmwpKGMsYSksYS5jKX07Xy5nPV8uSkkucHJvdG90eXBlO18uZy5xST1mdW5jdGlvbigpe3RoaXMuYi5nZXRJZnJhbWVFbCgpLnN0eWxlLnJpZ2h0PSIwIjtyZXR1cm4hMH07Xy5nLnZJPWZ1bmN0aW9uKGEpe0xJKHRoaXMsMSxhKTtyZXR1cm4hMH07Xy5nLnNJPWZ1bmN0aW9uKGEpe0xJKHRoaXMsMyxhKTtyZXR1cm4hMH07Xy5nLnJJPWZ1bmN0aW9uKGEpe0xJKHRoaXMsMixhKTtyZXR1cm4hMH07Xy5nLnRJPWZ1bmN0aW9uKGEpe0xJKHRoaXMsNCxhLCExKTtyZXR1cm4hMH07Xy5nLnVJPWZ1bmN0aW9uKGEpe0xJKHRoaXMsNCxhLCEwKTtyZXR1cm4hMH07CnZhciBMST1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/ITE6ZDt2YXIgZT1uZXcgdmk7Yz1uZXcgXy56cChjKTt2YXIgZj1jLmdldCgic3Z5aWQiKTtfLnQoZSw3LGEuZyk7ZiYmKF8udChlLDQsZiksYy5yZW1vdmUoInN2eWlkIikpO2lmKGY9Yy5nZXQoInNydnNyc2lkIikpXy50KGUsNSxmKSxjLnJlbW92ZSgic3J2c3JzaWQiKTtmPWEuZ2V0RGF0YSgic2l0ZUlkIikuJGEoKTtfLnQoZSwxLGYpO18udChlLDIsYik7ND09YiYmKGI9bmV3IHVpLF8udChiLDEsYy50b1N0cmluZygpKSxfLnQoYiwyLGQpLF8ua2QoZSwzLGIpKTthLmkoZSl9O18ueUEoXy5KSSk7CnZhciBNST1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsVGxhLG51bGwpfTtfLm0oTUksXy5xKTt2YXIgVGxhPVs3XSxOST1mdW5jdGlvbihhKXtfLnUodGhpcyxhLDAsLTEsbnVsbCxudWxsKX07Xy5tKE5JLF8ucSk7Xy5PST1mdW5jdGlvbihhLGIpe3JldHVybihiPShifHx3aW5kb3cpLldJWl9nbG9iYWxfZGF0YSkmJmEgaW4gYj9uZXcgZHgoYSxiW2FdKTpuZXcgZHgoYSxudWxsKX07dmFyIFBJPV8ub2soKSxRST1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFBJLnliLnRoZW4oZnVuY3Rpb24oZCl7ZD1fLmxyKF8uWHgoZCkuZm4oKSk7cmV0dXJuIF8ubXgoXy5PSShiLGQpLDAsYSxjKS50aGVuKCl9KX07YXQoe2E6W3hpLF8uQmldLFVjOmZ1bmN0aW9uKGEpe211KGEpLmIoImRyIikudGhlbihmdW5jdGlvbigpe3JldHVybiBQSS5yZXNvbHZlKGEpfSl9fSk7dmFyIFJJPWZ1bmN0aW9uKCl7dHMuY2FsbCh0aGlzLCJjIik7Xy5xbCh0aGlzLmEsInJlYWR5c3RhdGVjaGFuZ2UiLHRoaXMuZ3osITEsdGhpcyl9O18ubShSSSx0cyk7Xy5nPVJJLnByb3RvdHlwZTtfLmcud2k9LTE7Xy5nLlNtPW51bGw7Xy5nLllwPSEwO18uZy5jbG9uZT1mdW5jdGlvbigpe3ZhciBhPW5ldyBSSTthLlRpKHRoaXMubyx0aGlzLndhKTtyZXR1cm4gYX07Xy5nLm9iPWZ1bmN0aW9uKCl7Xy5HbCh0aGlzLndpKTt3bCh0aGlzLmEsInJlYWR5c3RhdGVjaGFuZ2UiLHRoaXMuZ3osITEsdGhpcyk7UkkuJC5vYi5jYWxsKHRoaXMpfTtfLmcubnc9ZnVuY3Rpb24oYSl7aWYoYS5EQilyZXR1cm4gMDt2YXIgYj1hLm87cmV0dXJuIGImJnNzKGIpfHxfLkJjJiYhT2MoIjQyMCsiKXx8Xy56YyYmIU9jKCIxLjkiKT8wOmEuaGF8fCFhLkNxPy45Oi41fTtfLmcuZ3o9ZnVuY3Rpb24oKXtfLkJjfHxfLnpjfHxfLndjfHxfLkdsKHRoaXMud2kpOzM9PVlvKHRoaXMuYSkmJnRoaXMucXEoITEpfTsKXy5nLnB6PWZ1bmN0aW9uKCl7Xy5HbCh0aGlzLndpKTt0aGlzLnFxKCEwKX07Xy5nLnVuPWZ1bmN0aW9uKGEpe3RoaXMucXEoITApO1JJLiQudW4uY2FsbCh0aGlzLGEpfTsKXy5nLnFxPWZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuamF8fGEpe3ZhciBjPSRvKHRoaXMuYSk7aWYoMD09dGhpcy5jKXt2YXIgZD1jLmluZGV4T2YoIlxuXG4iKTtpZigtMT09ZCl7YSYmKGJ8fHVzKHRoaXMsMTAzKSx0aGlzLllwPSEwKTtyZXR1cm59dGhpcy5jPWQrMn1kbyBkPVVsYSh0aGlzLGMpO3doaWxlKDA9PWQpO2EmJih0aGlzLllwPSEwKTtzd2l0Y2goZCl7Y2FzZSAyOmE/Ynx8dGhpcy5hYm9ydCgxMCk6dGhpcy5qYT0hMDticmVhaztjYXNlIDM6YSYmKHRoaXMuYi5Rbih0aGlzLmYpLHRoaXMuamEmJnJvKCJjYmAiK3RoaXMuaSsiYCIrKHRoaXMuU20/IiwgIit0aGlzLlNtOiIiKSxFcnJvcigpKSk7YnJlYWs7Y2FzZSAxOmEmJihifHx1cyh0aGlzLDEwMykpfWF8fF8uQmN8fF8uemN8fF8ud2N8fCh0aGlzLndpPV8uRmwodGhpcy5xcSwxMDAsdGhpcykpfX07Cl8uZy5Kcj1mdW5jdGlvbihhKXt0aGlzLllwfHxybygiZGIiLEVycm9yKCkpO3RoaXMuWXA9ITE7dGhpcy5jPTA7dGhpcy5qYT0hMTtSSS4kLkpyLmNhbGwodGhpcyxhKX07CnZhciBVbGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmM7aWYoYz09Yi5sZW5ndGgpcmV0dXJuIDM7dmFyIGQ9Yi5pbmRleE9mKCJcbiIsYyk7aWYoLTE9PWQpcmV0dXJuIDE7aWYoYz09ZClyZXR1cm4gYS5pPTAsYS5TbT1udWxsLDI7dmFyIGU9Yi5zdWJzdHJpbmcoYyxkKSxmPU51bWJlcihlKTtpZigoMCx3aW5kb3cuaXNOYU4pKGYpKXJldHVybiBhLmk9MSxhLlNtPSJsZW5ndGg6ICIrZS5sZW5ndGgrIiwgIitlLnN1YnN0cmluZygwLDcpKyIsIHNzaToiK2MrIiwgc2VpOiIrZCsiLCBydGw6IitiLmxlbmd0aCsiLCAiK2Iuc3Vic3RyaW5nKDAsTWF0aC5taW4oMTUsYykpLDI7aWYoZCtmPmIubGVuZ3RoKXJldHVybiAxO2M9Yi5zdWJzdHIoZCxmKTt0cnl7dmFyIGs9d2luZG93LkpTT04ucGFyc2UoYyl9Y2F0Y2gobil7cmV0dXJuIGEuaT0yLGEuU209bnVsbCwyfWEuYz1kK2Y7aWYoXy5NYShrKSlmb3IoZD0wO2Q8ay5sZW5ndGg7ZCsrKWEuYi5kSShhLmYsa1tkXSk7cmV0dXJuIGEuYz09IGIubGVuZ3RoPzM6MH07CnZhciBTST1mdW5jdGlvbihhLGIpe18uQWsuY2FsbCh0aGlzKTt0aGlzLmc9YTt0aGlzLkJhPyh0aGlzLlplPSIkIit0aGlzLmcsdGhpcy5pPXRoaXMpOnRoaXMuaT1ifTtfLm0oU0ksXy5Bayk7U0kucHJvdG90eXBlLmphPW51bGw7U0kucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7dGhpcy5mJiYodGhpcy5mLmRpc3Bvc2UoKSx0aGlzLmY9bnVsbCl9O1NJLnByb3RvdHlwZS5hYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLml9O1NJLnByb3RvdHlwZS5nZXRQYXJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qYX07dmFyIFVJPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9YS5qYSYmbnVsbCE9Yil0aHJvdyBFcnJvcigiZWIiKTtpZihiJiZiLmFhKCkhPWEuaSl0aHJvdyBFcnJvcigiZmIiKTthLndhPW51bGw7YS53PW51bGw7bnVsbCE9Yj8oVEkoYSksYS5aZT1iLlplKyIvIithLmcpOmEuWmU9bnVsbDthLmphPWJ9O1NJLnByb3RvdHlwZS5HZD1mdW5jdGlvbigpe3JldHVybiA0fTsgdmFyIFRJPWZ1bmN0aW9uKGEpe2lmKGEuaXNEaXNwb3NlZCgpKXRocm93IEVycm9yKCJnYmAiK2EuWmUpO307CnZhciBWST1mdW5jdGlvbihhLGIsYyl7dGhpcy5vPWE7dGhpcy5iPWJ8fCJobCI7dGhpcy5nPWN8fCJnbCJ9O18ubShWSSxfLm5vKTtWSS5wcm90b3R5cGUuYT1mdW5jdGlvbihhKXtpZih0aGlzLmJ8fHRoaXMuZyl7aWYoIXRoaXMuYylpZih0aGlzLmM9dGhpcy5vLmdldCh6aSkuYS5IeSgidXNlciIpKXtpZih0aGlzLmIpe3ZhciBiPXRoaXMuYy5vYSgibCIpO2ImJih0aGlzLmk9Yi50b1N0cmluZygpKX10aGlzLmcmJihiPXRoaXMuYy5vYSgiZ2wiKSkmJih0aGlzLndhPWIudG9TdHJpbmcoKSl9ZWxzZSB0aGlzLmImJih0aGlzLmk9ImVuIik7dGhpcy5pJiZFcChhLmEsdGhpcy5iLHRoaXMuaSk7dGhpcy53YSYmRXAoYS5hLHRoaXMuZyx0aGlzLndhKX19Owp2YXIgV0k9ZnVuY3Rpb24oYSl7dGhpcy5iPWF9O18ubShXSSxfLm5vKTtXSS5wcm90b3R5cGUuYT1mdW5jdGlvbihhKXt2YXIgYj1hLmEuY2xvbmUoKS5iO2I9Xy5PYSh0aGlzLmIpP3RoaXMuYihiKTp0aGlzLmIrYjtfLmNwKGEuYSxiKX07dmFyIFdsYT1mdW5jdGlvbihhKXtWbGEoYS5hKX0sVmxhPWZ1bmN0aW9uKGEpe2EmJigwLF8uYWIpKGEuYS5jb25jYXQoKSxmdW5jdGlvbihhKXthLkNyKHZvaWQgMCk7YS5hYm9ydCgpfSl9LFhsYT1mdW5jdGlvbihhLGIpe3JldHVybiBiJiYiLyI9PWJbMF0/YStiLnN1YnN0cmluZygxKTpifTthdCh7YTpbeGksemksXy5CaSxFaV0sYjpmdW5jdGlvbihhKXtudShtdShhKSxidSk7cnUucHVzaChidSl9LFVjOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0KEVpKSxjPV8uWHgoYSksZD1fLlNhKFhsYSxfLnZ6KGMpKTtJcihiLmIsbmV3IFJJKTtJcihiLmEsbmV3IFJJKTtiLmEuR249NTtfLnlzKGIsbmV3IFdJKGQpKTtfLnlzKGIsbmV3IFZJKGEpKTtwdShtdShhKSxidSk7cGwoYy5jYygpLmdldFdpbmRvdygpLCJzIixfLlNhKFdsYSxiKSl9fSk7CnZhciBZST1mdW5jdGlvbihhKXt0aGlzLmM9bmV3IFhJKHRoaXMpO18ueXMoYS5nZXQoRWkpLHRoaXMuYyk7Xy5Eayh0aGlzLHRoaXMuYyk7dGhpcy5mPXRoaXMuYj1udWxsfTtfLm0oWUksXy5Bayk7WUkucHJvdG90eXBlLmE9bnVsbDtZSS5wcm90b3R5cGUubz1udWxsO3ZhciBYST1mdW5jdGlvbihhKXt0aGlzLmI9YX07Xy5tKFhJLF8ubm8pO1hJLnByb3RvdHlwZS53PWZ1bmN0aW9uKCl7cmV0dXJuIHhkfTt2YXIgWkk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubztkPyhhPWQuZWxlbWVudHNbYl0sYXx8KGE9ZC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS5zZXRBdHRyaWJ1dGUoIm5hbWUiLGIpLGEuc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKSxkLmFwcGVuZENoaWxkKGEpKSxhLnZhbHVlPWMpOmEuTGF8fF8uU3AoYSxiLGMpfTsKWEkucHJvdG90eXBlLmE9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5iO2IuYSYmKCJERUxFVEUiPT1hLmY/YS5UaShiLmEpOlpJKGEsImF0IixiLmEpKTtiLmImJmIuZiYmWkkoYSxiLmIsYi5mKX07WEkucHJvdG90eXBlLmphPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKGI9MCE9YS5sZW5ndGgpe2I9dGhpcy5iO3ZhciBjPWFbMF07YT0hMTt2YXIgZD1iLm8sZTtfLncoYyx2ZCwyKSYmKGU9Xy5yKF8udyhjLHZkLDIpLDEpKTtkJiZlPT09ZCYmKGIuYT1fLnIoYywxKSxhPSEwKTtiLmImJl8ucihjLDMpJiYoYi5mPV8ucihjLDMpLChlPV8udyhjLHZkLDIpKSYmXy5yKGUsMSl8fChhPSEwKSk7Yj1hfWlmKGIpdGhyb3cgbmV3IGhxO307CmF0KHtiOmZ1bmN0aW9uKGEpe251KG11KGEpLGR1KTtydS5wdXNoKGR1KX0sVWM6ZnVuY3Rpb24oYSl7UUkoeGQsIk9ld0NBZCIpLnRoZW4oZnVuY3Rpb24oYil7dmFyIGM9YS5nZXQoTGkpO2lmKF8ucihiLDEpJiZfLncoYix2ZCwyKSl7dmFyIGQ9Xy5yKGIsMSksZT1fLnIoXy53KGIsdmQsMiksMSk7ZCYmIWUmJnJvKCJpYiIsRXJyb3IoImhiIikpO2MuYT1kO2Mubz1lfV8ucihiLDMpJiYoYj1fLnIoYiwzKSxjLmI9ImF6dCIsYy5mPWIpO3B1KG11KGEpLGR1KX0pfSxhOlt4aSxMaV19KTsKdmFyIFlsYT1mdW5jdGlvbihhKXt0aGlzLmE9YXx8bnVsbH07dmFyICRJOwokST17YUQ6WyJCQyIsIkFEIl0sJEM6WyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBEb21pbmkiXSxnRDoiSkZNQU1KSkFTT05EIi5zcGxpdCgiIiksc0Q6IkpGTUFNSkpBU09ORCIuc3BsaXQoIiIpLGREOiJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5zcGxpdCgiICIpLHJEOiJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5zcGxpdCgiICIpLHBEOiJKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYyIuc3BsaXQoIiAiKSx1RDoiSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMiLnNwbGl0KCIgIikseUQ6IlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLHdEOiJTdW5kYXkgTW9uZGF5IFR1ZXNkYXkgV2VkbmVzZGF5IFRodXJzZGF5IEZyaWRheSBTYXR1cmRheSIuc3BsaXQoIiAiKSwKJHc6IlN1biBNb24gVHVlIFdlZCBUaHUgRnJpIFNhdCIuc3BsaXQoIiAiKSx2RDoiU3VuIE1vbiBUdWUgV2VkIFRodSBGcmkgU2F0Ii5zcGxpdCgiICIpLGhEOiJTTVRXVEZTIi5zcGxpdCgiIiksdEQ6IlNNVFdURlMiLnNwbGl0KCIiKSxxRDpbIlExIiwiUTIiLCJRMyIsIlE0Il0sa0Q6WyIxc3QgcXVhcnRlciIsIjJuZCBxdWFydGVyIiwiM3JkIHF1YXJ0ZXIiLCI0dGggcXVhcnRlciJdLGxDOlsiQU0iLCJQTSJdLFJ3OlsiRUVFRSwgTU1NTSBkLCB5IiwiTU1NTSBkLCB5IiwiTU1NIGQsIHkiLCJNL2QveXkiXSxieDpbImg6bW06c3MgYSB6enp6IiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEiLCJoOm1tIGEiXSxVQzpbInsxfSAnYXQnIHswfSIsInsxfSAnYXQnIHswfSIsInsxfSwgezB9IiwiezF9LCB7MH0iXSxTcjo2LHhVOls1LDZdLFZ3OjV9O18uYUo9JEk7Xy5hSj0kSTsKdmFyIGRKO18uYko9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSAxOnJldHVybiAwIT1hJTR8fDA9PWElMTAwJiYwIT1hJTQwMD8yODoyOTtjYXNlIDU6Y2FzZSA4OmNhc2UgMTA6Y2FzZSAzOnJldHVybiAzMH1yZXR1cm4gMzF9O18uY0o9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe18uRGEoYSk/KHRoaXMuc2Y9InkiPT1hP2I6MCx0aGlzLmI9Im0iPT1hP2I6MCx0aGlzLldlPSJkIj09YT9iOjAsdGhpcy5hPSJoIj09YT9iOjAsdGhpcy5FZj0ibiI9PWE/YjowLHRoaXMuZj0icyI9PWE/YjowKToodGhpcy5zZj1hfHwwLHRoaXMuYj1ifHwwLHRoaXMuV2U9Y3x8MCx0aGlzLmE9ZHx8MCx0aGlzLkVmPWV8fDAsdGhpcy5mPWZ8fDApfTtfLmNKLnByb3RvdHlwZS5RZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5zZj09dGhpcy5zZiYmYS5iPT10aGlzLmImJmEuV2U9PXRoaXMuV2UmJmEuYT09dGhpcy5hJiZhLkVmPT10aGlzLkVmJiZhLmY9PXRoaXMuZn07Cl8uY0oucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLmNKKHRoaXMuc2YsdGhpcy5iLHRoaXMuV2UsdGhpcy5hLHRoaXMuRWYsdGhpcy5mKX07Xy5jSi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3RoaXMuc2YrPWEuc2Y7dGhpcy5iKz1hLmI7dGhpcy5XZSs9YS5XZTt0aGlzLmErPWEuYTt0aGlzLkVmKz1hLkVmO3RoaXMuZis9YS5mfTtfLmZKPWZ1bmN0aW9uKGEsYixjKXtfLkVhKGEpPyh0aGlzLmE9ZEooYSxifHwwLGN8fDEpLGVKKHRoaXMsY3x8MSkpOl8uUGEoYSk/KHRoaXMuYT1kSihhLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpLGEuZ2V0RGF0ZSgpKSxlSih0aGlzLGEuZ2V0RGF0ZSgpKSk6KHRoaXMuYT1uZXcgRGF0ZSgoMCxfLlVhKSgpKSxhPXRoaXMuYS5nZXREYXRlKCksdGhpcy5hLnNldEhvdXJzKDApLHRoaXMuYS5zZXRNaW51dGVzKDApLHRoaXMuYS5zZXRTZWNvbmRzKDApLHRoaXMuYS5zZXRNaWxsaXNlY29uZHMoMCksZUoodGhpcyxhKSl9OwpkSj1mdW5jdGlvbihhLGIsYyl7Yj1uZXcgRGF0ZShhLGIsYyk7MDw9YSYmMTAwPmEmJmIuc2V0RnVsbFllYXIoYi5nZXRGdWxsWWVhcigpLTE5MDApO3JldHVybiBifTtfLmc9Xy5mSi5wcm90b3R5cGU7Xy5nLlZtPV8uYUouU3I7Xy5nLlpwPV8uYUouVnc7Xy5nLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IF8uZkoodGhpcy5hKTthLlZtPXRoaXMuVm07YS5acD10aGlzLlpwO3JldHVybiBhfTtfLmcuZ2V0RnVsbFllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmdldEZ1bGxZZWFyKCl9O18uZy5nZXRZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RnVsbFllYXIoKX07Xy5nLmdldE1vbnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nZXRNb250aCgpfTtfLmcuZ2V0RGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZ2V0RGF0ZSgpfTtfLmcuZ2V0VGltZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZ2V0VGltZSgpfTtfLmcuZ2V0RGF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nZXREYXkoKX07Cl8uZy5nZXRVVENGdWxsWWVhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZ2V0VVRDRnVsbFllYXIoKX07Xy5nLmdldFVUQ01vbnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nZXRVVENNb250aCgpfTtfLmcuZ2V0VVRDRGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZ2V0VVRDRGF0ZSgpfTtfLmcuZ2V0VVRDSG91cnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmdldFVUQ0hvdXJzKCl9O18uZy5nZXRVVENNaW51dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nZXRVVENNaW51dGVzKCl9O18uZy5nZXRUaW1lem9uZU9mZnNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZ2V0VGltZXpvbmVPZmZzZXQoKX07Xy5nLnNldD1mdW5jdGlvbihhKXt0aGlzLmE9bmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSl9OwpfLmcuYWRkPWZ1bmN0aW9uKGEpe2lmKGEuc2Z8fGEuYil7dmFyIGI9dGhpcy5nZXRNb250aCgpK2EuYisxMiphLnNmLGM9dGhpcy5nZXRZZWFyKCkrTWF0aC5mbG9vcihiLzEyKTtiJT0xMjswPmImJihiKz0xMik7dmFyIGQ9TWF0aC5taW4oXy5iSihjLGIpLHRoaXMuZ2V0RGF0ZSgpKTt0aGlzLmEuc2V0RGF0ZSgxKTt0aGlzLmEuc2V0RnVsbFllYXIoYyk7dGhpcy5hLnNldE1vbnRoKGIpO3RoaXMuYS5zZXREYXRlKGQpfWEuV2UmJihiPW5ldyBEYXRlKHRoaXMuZ2V0WWVhcigpLHRoaXMuZ2V0TW9udGgoKSx0aGlzLmdldERhdGUoKSwxMiksYT1uZXcgRGF0ZShiLmdldFRpbWUoKSs4NjRFNSphLldlKSx0aGlzLmEuc2V0RGF0ZSgxKSx0aGlzLmEuc2V0RnVsbFllYXIoYS5nZXRGdWxsWWVhcigpKSxiPWEuZ2V0TW9udGgoKSx0aGlzLmEuc2V0TW9udGgoYiksdGhpcy5hLnNldERhdGUoYS5nZXREYXRlKCkpLGVKKHRoaXMsYS5nZXREYXRlKCkpKX07Cl8uZy5ucT1mdW5jdGlvbihhKXtyZXR1cm5bdGhpcy5nZXRGdWxsWWVhcigpLF8uT2IodGhpcy5nZXRNb250aCgpKzEsMiksXy5PYih0aGlzLmdldERhdGUoKSwyKV0uam9pbihhPyItIjoiIikrIiJ9O18uZy5RZj1mdW5jdGlvbihhKXtyZXR1cm4hKCFhfHx0aGlzLmdldFllYXIoKSE9YS5nZXRZZWFyKCl8fHRoaXMuZ2V0TW9udGgoKSE9YS5nZXRNb250aCgpfHx0aGlzLmdldERhdGUoKSE9YS5nZXREYXRlKCkpfTtfLmcudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ucSgpfTt2YXIgZUo9ZnVuY3Rpb24oYSxiKXthLmdldERhdGUoKSE9YiYmYS5hLnNldFVUQ0hvdXJzKGEuYS5nZXRVVENIb3VycygpKyhhLmdldERhdGUoKTxiPzE6LTEpKX07Xy5mSi5wcm90b3R5cGUudmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEudmFsdWVPZigpfTsKdmFyIGdKPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGspe3RoaXMuYT1fLkVhKGEpP25ldyBEYXRlKGEsYnx8MCxjfHwxLGR8fDAsZXx8MCxmfHwwLGt8fDApOm5ldyBEYXRlKGEmJmEuZ2V0VGltZT9hLmdldFRpbWUoKTooMCxfLlVhKSgpKX07Xy5tKGdKLF8uZkopO18uZz1nSi5wcm90b3R5cGU7Xy5nLmdldEhvdXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nZXRIb3VycygpfTtfLmcuZ2V0TWludXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZ2V0TWludXRlcygpfTtfLmcuZ2V0U2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZ2V0U2Vjb25kcygpfTtfLmcuZ2V0VVRDSG91cnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmdldFVUQ0hvdXJzKCl9O18uZy5nZXRVVENNaW51dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5nZXRVVENNaW51dGVzKCl9OwpfLmcuYWRkPWZ1bmN0aW9uKGEpe18uZkoucHJvdG90eXBlLmFkZC5jYWxsKHRoaXMsYSk7YS5hJiZ0aGlzLmEuc2V0VVRDSG91cnModGhpcy5hLmdldFVUQ0hvdXJzKCkrYS5hKTthLkVmJiZ0aGlzLmEuc2V0VVRDTWludXRlcyh0aGlzLmEuZ2V0VVRDTWludXRlcygpK2EuRWYpO2EuZiYmdGhpcy5hLnNldFVUQ1NlY29uZHModGhpcy5hLmdldFVUQ1NlY29uZHMoKSthLmYpfTtfLmcubnE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5mSi5wcm90b3R5cGUubnEuY2FsbCh0aGlzLGEpO3JldHVybiBhP2IrIiAiK18uT2IodGhpcy5nZXRIb3VycygpLDIpKyI6IitfLk9iKHRoaXMuZ2V0TWludXRlcygpLDIpKyI6IitfLk9iKHRoaXMuZ2V0U2Vjb25kcygpLDIpKyIiOmIrIlQiK18uT2IodGhpcy5nZXRIb3VycygpLDIpK18uT2IodGhpcy5nZXRNaW51dGVzKCksMikrXy5PYih0aGlzLmdldFNlY29uZHMoKSwyKSsiIn07Xy5nLlFmPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldFRpbWUoKT09YS5nZXRUaW1lKCl9OyBfLmcudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ucSgpfTtfLmcuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgZ0oodGhpcy5hKTthLlZtPXRoaXMuVm07YS5acD10aGlzLlpwO3JldHVybiBhfTsKYXQoe2E6W18uTWkseGksS2ldLGI6ZnVuY3Rpb24oYSl7bnUobXUoYSksZXUpfSxVYzpmdW5jdGlvbihhKXtRSShNSSwidDFSYUNjIixuZXcgTUkpLnRoZW4oZnVuY3Rpb24oYil7dmFyIGM9ImVuIi5yZXBsYWNlKC9fL2csIi0iKSxkPV8uRnAoXy5HcChhLmdldChLaSkuZ2V0V2luZG93KCkuZ2V0V2luZG93KCkubG9jYXRpb24pLCJobCIpLGU9ZD8iZW4iOiIiO2Q9ZD9jOiIiO3ZhciBmPXt9OygwLF8uYWIpKF8uamQoYixOSSw3KSxmdW5jdGlvbihhKXtmW18ucihhLDEpXT1fLnIoYSwyKX0pO3ZhciBrPW5ldyBnSixuPW5ldyBfLmZKLHA9bmV3IF8uZko7cC5hLnNldE1vbnRoKDApO3AuYS5zZXREYXRlKDEpO2I9e0hWOmEsQnM6Xy5yKGIsMiksSlk6Xy5yKGIsMTEpLG5XOmYsRV86Xy5yKGIsMSksbG9jYWxlOiJlbiIsd0o6YyxvMzpfLnIoYiwxMiksUzY6ay5nZXRUaW1lKCksVTY6bi5nZXRUaW1lKCksVDY6cC5nZXRUaW1lKCksdXJsUHJlZml4Ol8ucihiLDMpLFM3Ol8ucihiLDkpLCBYNDplLFk0OmQseWVhcjpwLmdldFllYXIoKX07Y28oYSxHaSxuZXcgWWxhKGIpKTtwdShtdShhKSxldSl9KX19KTsKdmFyIFpsYT1xeCgiRndhaXciLCJGd2FpdyIsW25ldyB3aSgiYyIpXSk7dmFyICRsYT1mdW5jdGlvbigpe1F2KHtSXzpmdW5jdGlvbihhLGIpe3JldHVybiBfLlN2KGEse2w6e2hNOlpsYX19KS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBhLmwuaE0uZ2V0UGFyYW0oYil9KX19KX07dmFyIGhKO18uaUo9ZnVuY3Rpb24oYSl7dGhpcy5hPWEueHk7dGhpcy5mPWEubEI7dGhpcy5jPWEudlk7dGhpcy5nPWEuZmc7dGhpcy5vPWEuUXg/bmV3IGhKKGEuUXgpOm51bGw7dGhpcy5iPWEuSXk7YS5XUCYmdGhpcy5mLmEuYS5wdXNoKGEuV1ApfTtoSj1mdW5jdGlvbihhKXt0aGlzLmI9YS5GZzt0aGlzLmE9YS55T307Xy5pSi5wcm90b3R5cGUuSXk9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYihhKX07Xy5pSi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iVmlld0lkPCIrdGhpcy5hKyI+In07aEoucHJvdG90eXBlLnlPPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07Xy5qSj17fTtfLmtKPVtdOwp2YXIgYW1hPWZ1bmN0aW9uKGEsYil7aWYobnVsbD09PWIpcmV0dXJuITE7aWYoImNvbnRhaW5zImluIGEmJjE9PWIubm9kZVR5cGUpcmV0dXJuIGEuY29udGFpbnMoYik7aWYoImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uImluIGEpcmV0dXJuIGE9PWJ8fCEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpO2Zvcig7YiYmYSE9YjspYj1iLnBhcmVudE5vZGU7cmV0dXJuIGI9PWF9O3ZhciBibWE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7Y3x8KGM9d2luZG93LmV2ZW50KTtyZXR1cm4gYi5jYWxsKGEsYyl9fSxsSj1mdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExfSxtSj1mdW5jdGlvbihhKXthPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnQ7IWEuZ2V0QXR0cmlidXRlJiZhLnBhcmVudE5vZGUmJihhPWEucGFyZW50Tm9kZSk7cmV0dXJuIGF9LG5KPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93Lm5hdmlnYXRvciYmL01hY2ludG9zaC8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCksY21hPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93Lm5hdmlnYXRvciYmIS9PcGVyYS8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkmJi9XZWJLaXQvLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpLGRtYT17QToxLElOUFVUOjEsVEVYVEFSRUE6MSxTRUxFQ1Q6MSxCVVRUT046MX0sCm9KPWZ1bmN0aW9uKGEpe3JldHVybihhPWEuY2hhbmdlZFRvdWNoZXMmJmEuY2hhbmdlZFRvdWNoZXNbMF18fGEudG91Y2hlcyYmYS50b3VjaGVzWzBdKT97Y2xpZW50WDphLmNsaWVudFgsY2xpZW50WTphLmNsaWVudFksc2NyZWVuWDphLnNjcmVlblgsc2NyZWVuWTphLnNjcmVlbll9Om51bGx9LHBKPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2Iub3JpZ2luYWxFdmVudFR5cGU9YS50eXBlO2IudHlwZT0iY2xpY2siO2Zvcih2YXIgYyBpbiBhKXt2YXIgZD1hW2NdOyJ0eXBlIj09Y3x8InNyY0VsZW1lbnQiPT1jfHxfLk9hKGQpfHwoYltjXT1kKX1iLnRpbWVTdGFtcD0oMCxfLlVhKSgpO2IuZGVmYXVsdFByZXZlbnRlZD0hMTtiLnByZXZlbnREZWZhdWx0PWVtYTtiLl9wcm9wYWdhdGlvblN0b3BwZWQ9ITE7Yi5zdG9wUHJvcGFnYXRpb249Zm1hO2lmKGE9b0ooYSkpYi5jbGllbnRYPWEuY2xpZW50WCxiLmNsaWVudFk9YS5jbGllbnRZLGIuc2NyZWVuWD1hLnNjcmVlblgsYi5zY3JlZW5ZPQphLnNjcmVlblk7cmV0dXJuIGJ9LGdtYT1mdW5jdGlvbigpe3RoaXMuX21vdXNlRXZlbnRzUHJldmVudGVkPSEwfSxlbWE9ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9LGZtYT1mdW5jdGlvbigpe3RoaXMuX3Byb3BhZ2F0aW9uU3RvcHBlZD0hMH0scUo9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5oLmRvY3VtZW50O2lmKGImJiFiLmNyZWF0ZUV2ZW50JiZiLmNyZWF0ZUV2ZW50T2JqZWN0KXRyeXtyZXR1cm4gYi5jcmVhdGVFdmVudE9iamVjdChhKX1jYXRjaChjKXtyZXR1cm4gYX1lbHNlIHJldHVybiBhfSxySj17QToxMyxCVVRUT046MCxDSEVDS0JPWDozMixDT01CT0JPWDoxMyxHUklEQ0VMTDoxMyxMSU5LOjEzLExJU1RCT1g6MTMsTUVOVTowLE1FTlVCQVI6MCxNRU5VSVRFTTowLE1FTlVJVEVNQ0hFQ0tCT1g6MCxNRU5VSVRFTVJBRElPOjAsT1BUSU9OOjAsUkFESU86MzIsUkFESU9HUk9VUDozMixSRVNFVDowLFNVQk1JVDowLFRBQjowLFRSRUU6MTMsVFJFRUlURU06MTN9LApzSj1mdW5jdGlvbihhKXtyZXR1cm4oYS5nZXRBdHRyaWJ1dGUoInR5cGUiKXx8YS50YWdOYW1lKS50b1VwcGVyQ2FzZSgpaW4gaG1hfSx0Sj1mdW5jdGlvbihhKXtyZXR1cm4oYS5nZXRBdHRyaWJ1dGUoInR5cGUiKXx8YS50YWdOYW1lKS50b1VwcGVyQ2FzZSgpaW4gaW1hfSxobWE9e0NIRUNLQk9YOiEwLE9QVElPTjohMCxSQURJTzohMH0saW1hPXtDT0xPUjohMCxEQVRFOiEwLERBVEVUSU1FOiEwLCJEQVRFVElNRS1MT0NBTCI6ITAsRU1BSUw6ITAsTU9OVEg6ITAsTlVNQkVSOiEwLFBBU1NXT1JEOiEwLFJBTkdFOiEwLFNFQVJDSDohMCxURUw6ITAsVEVYVDohMCxURVhUQVJFQTohMCxUSU1FOiEwLFVSTDohMCxXRUVLOiEwfSxqbWE9e0E6ITAsQVJFQTohMCxCVVRUT046ITAsRElBTE9HOiEwLElNRzohMCxJTlBVVDohMCxMSU5LOiEwLE1FTlU6ITAsT1BUR1JPVVA6ITAsT1BUSU9OOiEwLFBST0dSRVNTOiEwLFNFTEVDVDohMCxURVhUQVJFQTohMH07CnZhciB1Sj1mdW5jdGlvbigpe3RoaXMubz1bXTt0aGlzLmE9W107dGhpcy5mPVtdO3RoaXMuYz17fTt0aGlzLnVlPW51bGw7dGhpcy5iPVtdfSx2Six3SixrbWE9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cubmF2aWdhdG9yJiYvaVBob25lfGlQYWR8aVBvZC8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkseEo9U3RyaW5nLnByb3RvdHlwZS50cmltP2Z1bmN0aW9uKGEpe3JldHVybiBhLnRyaW0oKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXlxzKy8sIiIpLnJlcGxhY2UoL1xzKyQvLCIiKX0sbG1hPS9ccyo7XHMqLyx5Sj1udWxsLG9tYT1mdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbihjKXt2YXIgZD1iO2lmKCJjbGljayI9PWQmJihuSiYmYy5tZXRhS2V5fHwhbkomJmMuY3RybEtleXx8Mj09Yy53aGljaHx8bnVsbD09Yy53aGljaCYmND09Yy5idXR0b258fCJhdXhjbGljayI9PWMudHlwZXx8Yy5zaGlmdEtleSkpZD0iY2xpY2ttb2QiO2Vsc2V7dmFyIGU9CmMud2hpY2h8fGMua2V5Q29kZXx8Yy5rZXk7Y21hJiYzPT1lJiYoZT0xMyk7aWYoMTMhPWUmJjMyIT1lKWU9ITE7ZWxzZXt2YXIgZj1tSihjKTt2YXIgaz0oZi5nZXRBdHRyaWJ1dGUoInJvbGUiKXx8Zi50eXBlfHxmLnRhZ05hbWUpLnRvVXBwZXJDYXNlKCk7dmFyIG47KG49ImtleWRvd24iIT1jLnR5cGUpfHwoImdldEF0dHJpYnV0ZSJpbiBmPyhuPShmLmdldEF0dHJpYnV0ZSgicm9sZSIpfHxmLnRhZ05hbWUpLnRvVXBwZXJDYXNlKCksbj0hdEooZikmJigiQ09NQk9CT1giIT1ufHwiSU5QVVQiIT1uKSYmIWYuaXNDb250ZW50RWRpdGFibGUpOm49ITEsbj0hbik7KG49bnx8Yy5jdHJsS2V5fHxjLnNoaWZ0S2V5fHxjLmFsdEtleXx8Yy5tZXRhS2V5fHxzSihmKSYmMzI9PWUpfHwoKG49Zi50YWdOYW1lIGluIGRtYSl8fChuPWYuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKSxuPW51bGwhPW4mJm4uc3BlY2lmaWVkKSxuPSEobiYmIWYuZGlzYWJsZWQpKTtuP2U9ITE6KGY9IklOUFVUIiE9CmYudGFnTmFtZS50b1VwcGVyQ2FzZSgpfHxmLnR5cGUsbj0hKGsgaW4gckopJiYxMz09ZSxlPSgwPT1ySltrXSVlfHxuKSYmISFmKX1lJiYoZD0iY2xpY2trZXkiKX1mPWMuc3JjRWxlbWVudHx8Yy50YXJnZXQ7ZT16SihkLGMsZiwiIixudWxsKTtmb3Ioaz1mO2smJmshPXRoaXM7az1rLl9fb3duZXJ8fGsucGFyZW50Tm9kZSl7dmFyIHA9aztiOnt2YXIgQSxEPXA7dmFyIEY9ZDtuPWM7dmFyIEk9RC5fX2pzYWN0aW9uO2lmKCFJKWlmKEk9bnVsbCwiZ2V0QXR0cmlidXRlImluIEQmJihJPUQuZ2V0QXR0cmlidXRlKCJqc2FjdGlvbiIpKSxBPUkpe0k9SXdbQV07aWYoIUkpe0k9e307Zm9yKHZhciBKPUEuc3BsaXQobG1hKSxNPTAsUj1KP0oubGVuZ3RoOjA7TTxSO00rKyl7dmFyIFM9SltNXTtpZihTKXt2YXIgamE9Uy5pbmRleE9mKCI6IiksbWE9LTEhPWphLEthPW1hP3hKKFMuc3Vic3RyKDAsamEpKToiY2xpY2siO1M9bWE/eEooUy5zdWJzdHIoamErMSkpOlM7SVtLYV09U319SXdbQV09Ckl9RC5fX2pzYWN0aW9uPUl9ZWxzZSBJPW1tYSxELl9fanNhY3Rpb249STsiY2xpY2trZXkiPT1GP0Y9ImNsaWNrIjoiY2xpY2siIT1GfHxJLmNsaWNrfHwoRj0iY2xpY2tvbmx5Iik7QT1udWxsO2lmKEkuY2xpY2spe0Q9bm1hKEQsbixJKTtpZighRCl7Rj17SGk6RixhY3Rpb246IiIsZXZlbnQ6bnVsbCxDbDohMH07YnJlYWsgYn1EIT1uJiYoQT1ELEY9RC50eXBlKX1GPXtIaTpGLGFjdGlvbjpJW0ZdfHwiIixldmVudDpBLENsOiExfX1pZihGLkNsfHxGLmFjdGlvbilicmVha31GJiYoZT16SihGLkhpLEYuZXZlbnR8fGMsZixGLmFjdGlvbnx8IiIscCxlLnRpbWVTdGFtcCkpO2UmJiJ0b3VjaGVuZCI9PWUuZXZlbnRUeXBlJiYoZS5ldmVudC5fcHJldmVudE1vdXNlRXZlbnRzPWdtYSk7aWYoRiYmRi5hY3Rpb24pe2lmKGs9ImNsaWNra2V5Ij09ZClrPW1KKGMpLGs9KGsudHlwZXx8ay50YWdOYW1lKS50b1VwcGVyQ2FzZSgpLChrPTMyPT0oYy53aGljaHx8Yy5rZXlDb2RlfHxjLmtleSkmJgoiQ0hFQ0tCT1giIT1rKXx8KGs9bUooYyksZj0oay5nZXRBdHRyaWJ1dGUoInJvbGUiKXx8ay50YWdOYW1lKS50b1VwcGVyQ2FzZSgpLGs9ay50YWdOYW1lLnRvVXBwZXJDYXNlKClpbiBqbWEmJiJBIiE9ZiYmIXNKKGspJiYhdEooayl8fCJCVVRUT04iPT1mKTtrJiZsSihjKTtpZigibW91c2VlbnRlciI9PWR8fCJtb3VzZWxlYXZlIj09ZClpZihrPWMucmVsYXRlZFRhcmdldCwhKCJtb3VzZW92ZXIiPT1jLnR5cGUmJiJtb3VzZWVudGVyIj09ZHx8Im1vdXNlb3V0Ij09Yy50eXBlJiYibW91c2VsZWF2ZSI9PWQpfHxrJiYoaz09PXB8fGFtYShwLGspKSllLmFjdGlvbj0iIixlLmFjdGlvbkVsZW1lbnQ9bnVsbDtlbHNle2Q9e307Zm9yKHZhciB3YSBpbiBjKSJmdW5jdGlvbiIhPT10eXBlb2YgY1t3YV0mJiJzcmNFbGVtZW50IiE9PXdhJiYidGFyZ2V0IiE9PXdhJiYoZFt3YV09Y1t3YV0pO2QudHlwZT0ibW91c2VvdmVyIj09Yy50eXBlPyJtb3VzZWVudGVyIjoibW91c2VsZWF2ZSI7ZC50YXJnZXQ9CmQuc3JjRWxlbWVudD1wO2QuYnViYmxlcz0hMTtlLmV2ZW50PWQ7ZS50YXJnZXRFbGVtZW50PXB9fWVsc2UgZS5hY3Rpb249IiIsZS5hY3Rpb25FbGVtZW50PW51bGw7cD1lO2EudWUmJih3YT16SihwLmV2ZW50VHlwZSxwLmV2ZW50LHAudGFyZ2V0RWxlbWVudCxwLmFjdGlvbixwLmFjdGlvbkVsZW1lbnQscC50aW1lU3RhbXApLCJjbGlja29ubHkiPT13YS5ldmVudFR5cGUmJih3YS5ldmVudFR5cGU9ImNsaWNrIiksYS51ZSh3YSwhMCkpO3AuYWN0aW9uRWxlbWVudCYmKCJBIiE9cC5hY3Rpb25FbGVtZW50LnRhZ05hbWV8fCJjbGljayIhPXAuZXZlbnRUeXBlJiYiY2xpY2ttb2QiIT1wLmV2ZW50VHlwZXx8bEooYyksYS51ZT9hLnVlKHApOihjPXFKKGMpLHAuZXZlbnQ9YyxhLmIucHVzaChwKSksInRvdWNoZW5kIj09cC5ldmVudC50eXBlJiZwLmV2ZW50Ll9tb3VzZUV2ZW50c1ByZXZlbnRlZCYmKHlKPXBKKHAuZXZlbnQpKSl9fSx6Sj1mdW5jdGlvbihhLGIsYyxkLGUsZil7cmV0dXJue2V2ZW50VHlwZTphLApldmVudDpiLHRhcmdldEVsZW1lbnQ6YyxhY3Rpb246ZCxhY3Rpb25FbGVtZW50OmUsdGltZVN0YW1wOmZ8fCgwLF8uVWEpKCl9fSxtbWE9e30sbm1hPWZ1bmN0aW9uKGEsYixjKXtpZigiY2xpY2siPT1iLnR5cGV8fGIudGFyZ2V0VG91Y2hlcyYmMTxiLnRhcmdldFRvdWNoZXMubGVuZ3RoKXJldHVybiBiO3ZhciBkPXZKLGU9Yi50YXJnZXQ7aWYoZSYmQUooZSkpcmV0dXJuIGI7ZT1vSihiKTtpZigidG91Y2hzdGFydCIhPWIudHlwZXx8Yy50b3VjaHN0YXJ0fHxjLnRvdWNoZW5kKWlmKCJ0b3VjaGVuZCI9PWIudHlwZSYmZCYmZC5ub2RlPT1hKWlmKGIuZGVmYXVsdFByZXZlbnRlZHx8ZSYmNDxNYXRoLmFicyhlLmNsaWVudFgtZC54KStNYXRoLmFicyhlLmNsaWVudFktZC55KSl2Sj1udWxsO2Vsc2V7eUo9YT1wSihiKTtiLnN0b3BQcm9wYWdhdGlvbigpO2IucHJldmVudERlZmF1bHQoKTt3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRXZlbnQ/KGI9d2luZG93LmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50IiksCmIuaW5pdE1vdXNlRXZlbnQoYS50eXBlLCEwLCEwLHdpbmRvdyxhLmRldGFpbHx8MSxhLnNjcmVlblh8fDAsYS5zY3JlZW5ZfHwwLGEuY2xpZW50WHx8MCxhLmNsaWVudFl8fDAsYS5jdHJsS2V5fHwhMSxhLmFsdEtleXx8ITEsYS5zaGlmdEtleXx8ITEsYS5tZXRhS2V5fHwhMSxhLmJ1dHRvbnx8MCxhLnJlbGF0ZWRUYXJnZXR8fG51bGwpKTooYj13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QoKSxiLnR5cGU9YS50eXBlLGIuY2xpZW50WD1hLmNsaWVudFgsYi5jbGllbnRZPWEuY2xpZW50WSxiLmJ1dHRvbj1hLmJ1dHRvbixiLmRldGFpbD1hLmRldGFpbCxiLmN0cmxLZXk9YS5jdHJsS2V5LGIuYWx0S2V5PWEuYWx0S2V5LGIuc2hpZnRLZXk9YS5zaGlmdEtleSxiLm1ldGFLZXk9YS5tZXRhS2V5KTtiLlQzPWEudGltZVN0YW1wO2IuX2Zhc3RjbGljaz0hMDthLnRhcmdldC5kaXNwYXRjaEV2ZW50KGIpO2lmKCFiLmRlZmF1bHRQcmV2ZW50ZWQpe2lmKHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYKd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPWIudGFyZ2V0JiZBSih3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpdHJ5e3dpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKX1jYXRjaChmKXt9dHJ5e3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKX1jYXRjaChmKXt9fXJldHVybiBudWxsfWVsc2UidG91Y2htb3ZlIj09Yi50eXBlJiZkJiZlJiY0PE1hdGguYWJzKGUuY2xpZW50WC1kLngpK01hdGguYWJzKGUuY2xpZW50WS1kLnkpJiYodko9bnVsbCk7ZWxzZSByZXR1cm4gdko9e25vZGU6YSx4OmU/ZS5jbGllbnRYOjAseTplP2UuY2xpZW50WTowfSx5Sj1udWxsLCgwLHdpbmRvdy5jbGVhclRpbWVvdXQpKHdKKSx3Sj0oMCx3aW5kb3cuc2V0VGltZW91dCkocG1hLDQwMCksbnVsbDtyZXR1cm4gYn0sQUo9ZnVuY3Rpb24oYSl7YT1hLnRhZ05hbWV8fCIiO3JldHVybiJURVhUQVJFQSI9PWF8fCJJTlBVVCI9PWF8fCJTRUxFQ1QiPT1hfHwKIk9QVElPTiI9PWF9LHBtYT1mdW5jdGlvbigpe3ZKPW51bGx9LEJKPWZ1bmN0aW9uKGEpe2lmKCFhLl9mYXN0Y2xpY2spe3ZhciBiPXlKO2lmKGIpaWYoODAwPCgwLF8uVWEpKCktYi50aW1lU3RhbXApeUo9bnVsbDtlbHNle3ZhciBjPTQ+PU1hdGguYWJzKGEuY2xpZW50WC1iLmNsaWVudFgpK01hdGguYWJzKGEuY2xpZW50WS1iLmNsaWVudFkpO2IudGFyZ2V0PT1hLnRhcmdldHx8Yz8oYS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCksImNsaWNrIj09YS50eXBlJiYoeUo9bnVsbCkpOnlKPW51bGx9fX0scW1hPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3ZhciBkPWEsZT1iLGY9ITE7Im1vdXNlZW50ZXIiPT1kP2Q9Im1vdXNlb3ZlciI6Im1vdXNlbGVhdmUiPT1kJiYoZD0ibW91c2VvdXQiKTtpZihjLmFkZEV2ZW50TGlzdGVuZXIpe2lmKCJmb2N1cyI9PWR8fCJibHVyIj09ZHx8ImVycm9yIj09ZHx8ImxvYWQiPT1kKWY9ITA7Yy5hZGRFdmVudExpc3RlbmVyKGQsCmUsZil9ZWxzZSBjLmF0dGFjaEV2ZW50JiYoImZvY3VzIj09ZD9kPSJmb2N1c2luIjoiYmx1ciI9PWQmJihkPSJmb2N1c291dCIpLGU9Ym1hKGMsZSksYy5hdHRhY2hFdmVudCgib24iK2QsZSkpO3JldHVybntIaTpkLEZnOmUsY2FwdHVyZTpmfX19LENKPWZ1bmN0aW9uKGEsYil7aWYoIWEuYy5oYXNPd25Qcm9wZXJ0eShiKSl7dmFyIGM9b21hKGEsYiksZD1xbWEoYixjKTthLmNbYl09YzthLm8ucHVzaChkKTtmb3IoYz0wO2M8YS5hLmxlbmd0aDsrK2Mpe3ZhciBlPWEuYVtjXTtlLmIucHVzaChkLmNhbGwobnVsbCxlLmEpKX0iY2xpY2siPT1iJiZDSihhLCJrZXlkb3duIik7ImNsaWNrIj09YiYmKENKKGEsInRvdWNoc3RhcnQiKSxDSihhLCJ0b3VjaGVuZCIpLENKKGEsInRvdWNobW92ZSIpLHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiYod2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixCSiwhMCksd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLApCSiwhMCksd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsQkosITApKSl9fTt1Si5wcm90b3R5cGUuRmc9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY1thXX07dmFyIERKPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5hO2ttYSYmKGMuc3R5bGUuY3Vyc29yPSJwb2ludGVyIik7Zm9yKGM9MDtjPGEuby5sZW5ndGg7KytjKWIuYi5wdXNoKGEub1tjXS5jYWxsKG51bGwsYi5hKSl9LEVKPWZ1bmN0aW9uKGEpe3RoaXMuYT1hO3RoaXMuYj1bXX0sR0o9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYylpZihiW2NdLmEhPWEuYSYmRkooYltjXS5hLGEuYSkpcmV0dXJuITA7cmV0dXJuITF9LEZKPWZ1bmN0aW9uKGEsYil7Zm9yKDthIT1iJiZiLnBhcmVudE5vZGU7KWI9Yi5wYXJlbnROb2RlO3JldHVybiBhPT1ifTsgRUoucHJvdG90eXBlLkZwPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPTA7YTx0aGlzLmIubGVuZ3RoOysrYSl7dmFyIGI9dGhpcy5hLGM9dGhpcy5iW2FdO2IucmVtb3ZlRXZlbnRMaXN0ZW5lcj9iLnJlbW92ZUV2ZW50TGlzdGVuZXIoYy5IaSxjLkZnLGMuY2FwdHVyZSk6Yi5kZXRhY2hFdmVudCYmYi5kZXRhY2hFdmVudCgib24iK2MuSGksYy5GZyl9dGhpcy5iPVtdfTsKdmFyIHJtYT1mdW5jdGlvbihhKXtyZXR1cm57dHJpZ2dlcjpmdW5jdGlvbihiKXt2YXIgYz1hLkZnKGIudHlwZSk7Y3x8KENKKGEsYi50eXBlKSxjPWEuRmcoYi50eXBlKSk7dmFyIGQ9Yi50YXJnZXR8fGIuc3JjRWxlbWVudDtjJiZjLmNhbGwoZC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxiKX0sYmluZDpmdW5jdGlvbihiKXthLnVlPWI7YS5iJiYoMDxhLmIubGVuZ3RoJiZiKGEuYiksYS5iPW51bGwpfX19O3ZhciBLSj1mdW5jdGlvbihhLGIsYyxkLGUsZil7Xy5DbC5jYWxsKHRoaXMpO3RoaXMuSmE9YS5yZXBsYWNlKHNtYSwiXyIpO3RoaXMuQmE9YTt0aGlzLnc9Ynx8bnVsbDt0aGlzLndhPWM/cUooYyk6bnVsbDt0aGlzLmNiPWV8fG51bGw7dGhpcy5pPWZ8fG51bGw7IXRoaXMuaSYmYyYmYy50YXJnZXQmJl8uc3IoYy50YXJnZXQpJiYodGhpcy5pPWMudGFyZ2V0KTt0aGlzLmphPVtdO3RoaXMuaGE9e307dGhpcy5MYT10aGlzLmVhPWR8fCgwLF8uVWEpKCk7dGhpcy5hPXt9O3RoaXMuYVsibWFpbi1hY3Rpb25mbG93LWJyYW5jaCJdPTE7dGhpcy5vPW5ldyBfLnhuO3RoaXMuYj0hMTt0aGlzLmY9e307dGhpcy5jPXt9O0hKLnB1c2godGhpcyk7dGhpcy5VYT0rK3RtYTthPW5ldyBJSigiY3JlYXRlZCIsdGhpcyk7bnVsbCE9SkomJkpKLmRpc3BhdGNoRXZlbnQoYSl9O18ubShLSixfLkNsKTt2YXIgSEo9W10sSko9bmV3IF8uQ2wsc21hPS9bfi4sPyYtXS9nLHRtYT0wOwpLSi5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5VYX07dmFyIExKPWZ1bmN0aW9uKGEsYixjKXthLmImJmEuQWQoInRpY2siLHZvaWQgMCxiKTtjPWN8fHt9O2IgaW4gYS5oYSYmYS5vLmFkZChiKTt2YXIgZD1jLnRpbWV8fCgwLF8uVWEpKCk7IWMuaEcmJiFjLnJaJiZkPmEuTGEmJihhLkxhPWQpO2Zvcih2YXIgZT1kLWEuZWEsZj1hLmphLmxlbmd0aDswPGYmJmEuamFbZi0xXVsxXT5lOylmLS07dWIoYS5qYSxmLDAsW2IsZSxjLmhHXSk7YS5oYVtiXT1kfTsKS0oucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oYSxiLGMpe2lmKHRoaXMuYnx8IXRoaXMuYVthXSl0aGlzLkFkKCJkb25lIixhLGIpO2Vsc2V7YiYmTEoodGhpcyxiLGMpO3RoaXMuYVthXS0tOzA9PXRoaXMuYVthXSYmZGVsZXRlIHRoaXMuYVthXTtpZihhPV8uZ2ModGhpcy5hKSlKSj8oMDx0aGlzLm8ueWQoKSYmKHRoaXMuYy5kdXA9dGhpcy5vLlhiKCkuam9pbigifCIpKSxhPW5ldyBJSigiYmVmb3JlZG9uZSIsdGhpcyksdGhpcy5kaXNwYXRjaEV2ZW50KGEpJiZKSi5kaXNwYXRjaEV2ZW50KGEpPygoYj11bWEodGhpcy5jKSkmJih0aGlzLmYuY2FkPWIpLGEudHlwZT0iZG9uZSIsYT1KSi5kaXNwYXRjaEV2ZW50KGEpKTphPSExKTphPSEwO2EmJih0aGlzLmI9ITAsXy5wYihISix0aGlzKSx0aGlzLndhPXRoaXMudz1udWxsLHRoaXMuZGlzcG9zZSgpKX19OwpLSi5wcm90b3R5cGUuTWU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYiYmdGhpcy5BZCgiYnJhbmNoIixhLGIpO2ImJkxKKHRoaXMsYixjKTt0aGlzLmFbYV0/dGhpcy5hW2FdKys6dGhpcy5hW2FdPTF9O0tKLnByb3RvdHlwZS5BZD1mdW5jdGlvbihhLGIsYyl7aWYoSkope3ZhciBkPW5ldyBJSigiZXJyb3IiLHRoaXMpO2QuZXJyb3I9YTtkLk1lPWI7ZC5vPWM7ZC5hPXRoaXMuYjtKSi5kaXNwYXRjaEV2ZW50KGQpfX07dmFyIHVtYT1mdW5jdGlvbihhKXt2YXIgYj1bXTtfLiRiKGEsZnVuY3Rpb24oYSxkKXtkPSgwLHdpbmRvdy5lbmNvZGVVUklDb21wb25lbnQpKGQpO2E9KDAsd2luZG93LmVuY29kZVVSSUNvbXBvbmVudCkoYSkucmVwbGFjZSgvJTdDL2csInwiKTtiLnB1c2goZCsiOiIrYSl9KTtyZXR1cm4gYi5qb2luKCIsIil9OwpLSi5wcm90b3R5cGUuYWN0aW9uPWZ1bmN0aW9uKGEpe3RoaXMuYiYmdGhpcy5BZCgiYWN0aW9uIik7dmFyIGI9W10sYz1udWxsLGQ9bnVsbCxlPW51bGwsZj1udWxsO3ZtYShhLGZ1bmN0aW9uKGEpe3ZhciBrOyFhLl9fb2kmJmEuZ2V0QXR0cmlidXRlJiYoYS5fX29pPWEuZ2V0QXR0cmlidXRlKCJvaSIpKTtpZihrPWEuX19vaSliLnVuc2hpZnQoayksY3x8KGM9YS5nZXRBdHRyaWJ1dGUoImpzaW5zdGFuY2UiKSk7ZXx8ZCYmIjEiIT1kfHwoZT1hLmdldEF0dHJpYnV0ZSgidmVkIikpO2Z8fChmPWEuZ2V0QXR0cmlidXRlKCJ2ZXQiKSk7ZHx8KGQ9YS5nZXRBdHRyaWJ1dGUoImpzdHJhY2siKSl9KTtmJiYodGhpcy5mLnZldD1mKTtkJiYodGhpcy5mLmN0PXRoaXMuSmEsMDxiLmxlbmd0aCYmd21hKHRoaXMsYi5qb2luKCIuIikpLGMmJihjPSIqIj09Yy5jaGFyQXQoMCk/KDAsd2luZG93LnBhcnNlSW50KShjLnN1YnN0cigxKSwxMCk6KDAsd2luZG93LnBhcnNlSW50KShjLDEwKSx0aGlzLmYuY2Q9CmMpLCIxIiE9ZCYmKHRoaXMuZi5laT1kKSxlJiYodGhpcy5mLnZlZD1lKSl9O3ZhciB3bWE9ZnVuY3Rpb24oYSxiKXthLmImJmEuQWQoImV4dHJhZGF0YSIpO2EuYy5vaT1iLnRvU3RyaW5nKCkucmVwbGFjZSgvWzo7LFxzXS9nLCJfIil9LHZtYT1mdW5jdGlvbihhLGIpe2Zvcig7YSYmMT09YS5ub2RlVHlwZTthPWEucGFyZW50Tm9kZSliKGEpfSx4bWE9ZnVuY3Rpb24oYSl7YT1hLkJhO3JldHVybiBhLnN1YnN0cigwLGEuaW5kZXhPZigiLiIpKX07Xy5nPUtKLnByb3RvdHlwZTtfLmcuY2FsbGJhY2s9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5NZShiLGMpO3ZhciBlPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7dHJ5e3ZhciBjPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7ZS5kb25lKGIsZCl9cmV0dXJuIGN9fTtfLmcubm9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnd9O18uZy5ldmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLndhfTtfLmcuSGk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYn07IF8uZy50YXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pfTtfLmcudmFsdWU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy53O3JldHVybiBiP2EgaW4gYj9iW2FdOmIuZ2V0QXR0cmlidXRlP2IuZ2V0QXR0cmlidXRlKGEpOnZvaWQgMDp2b2lkIDB9O3ZhciBJSj1mdW5jdGlvbihhLGIpe18uY2wuY2FsbCh0aGlzLGEsYik7dGhpcy52Rz1ifTtfLm0oSUosXy5jbCk7CnZhciBNSj1mdW5jdGlvbihhKXt0aGlzLmM9e307dGhpcy5qYT17fTt0aGlzLmk9e307dGhpcy5hPVtdO3RoaXMuZz15bWE7dGhpcy5mPWE7dGhpcy53PXt9O3RoaXMuYj1udWxsfTsKTUoucHJvdG90eXBlLm89ZnVuY3Rpb24oYSxiKXtpZihfLk1hKGEpKXRoaXMuYT1fLnJiKGEpLE5KKHRoaXMpO2Vsc2UgaWYoYil7Yj1hLmV2ZW50O2lmKGE9dGhpcy53W2EuZXZlbnRUeXBlXSlmb3IodmFyIGM9ITEsZD0wLGU7ZT1hW2QrK107KSExPT09ZShiKSYmKGM9ITApO2MmJmxKKGIpfWVsc2UgZD1hLmFjdGlvbixjPWQuc3BsaXQoIi4iKVswXSxiPXRoaXMuamFbY10sdGhpcy5mP2U9dGhpcy5mKGEpOmI/Yi5hY2NlcHQoYSkmJihlPWIuaGFuZGxlKTplPXRoaXMuY1tkXSxlPyhhPXRoaXMuZyhhKSxlKGEpLGEuZG9uZSgibWFpbi1hY3Rpb25mbG93LWJyYW5jaCIpKTooZT1xSihhLmV2ZW50KSxhLmV2ZW50PWUsdGhpcy5hLnB1c2goYSksYnx8KGU9dGhpcy5pW2NdKSYmIWUuRkUmJihlLmQxKHRoaXMsYyxhKSxlLkZFPSEwKSl9OyB2YXIgeW1hPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgS0ooYS5hY3Rpb24sYS5hY3Rpb25FbGVtZW50LGEuZXZlbnQsYS50aW1lU3RhbXAsYS5ldmVudFR5cGUsYS50YXJnZXRFbGVtZW50KX0sem1hPWZ1bmN0aW9uKGEpe2EuYiYmMCE9YS5hLmxlbmd0aCYmYS5iKGEuYSxhKX0sTko9ZnVuY3Rpb24oYSl7YS5iJiYwIT1hLmEubGVuZ3RoJiZiayhmdW5jdGlvbigpe3RoaXMuYih0aGlzLmEsdGhpcyl9LGEpfTsKdmFyIE9KPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmVhPWE7dGhpcy53PWI7dGhpcy5vPWN8fG51bGw7YT10aGlzLmc9bmV3IE1KKEFtYSh0aGlzKSk7YS5iPUJtYTtOSihhKTt0aGlzLmM9W107dGhpcy5iPW51bGw7Yi5JYigpLl9fd2l6ZGlzcGF0Y2hlcj10aGlzO3RoaXMuYT17fTt0aGlzLmY9W107dGhpcy5pPSExfTtPSi5wcm90b3R5cGUueWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vfTtPSi5wcm90b3R5cGUuUGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vfHx2b2lkIDB9O3ZhciBCbWE9ZnVuY3Rpb24oYSxiKXtmb3IoO2EubGVuZ3RoOyl7dmFyIGM9YS5zaGlmdCgpO2IubyhjKX19O09KLnByb3RvdHlwZS5IYT1mdW5jdGlvbihhKXt0aGlzLmVhKGEpfTsKdmFyIFBKPWZ1bmN0aW9uKGEsYil7aWYodXIoYi5vd25lckRvY3VtZW50LGIpKXtmb3IodmFyIGM9MDtjPGEuYy5sZW5ndGg7YysrKWlmKHVyKGEuY1tjXSxiKSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IoYz1iO2M9Yy5wYXJlbnROb2RlOyl7Yz1jLmhvc3R8fGM7aWYoXy5sYihhLmMsYykpYnJlYWs7aWYoYz09Yi5vd25lckRvY3VtZW50KXJldHVybiEwfXJldHVybiExfTsKT0oucHJvdG90eXBlLkNkPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1Kdi5TYigpLGQ9aHgoYSksZT1kLmdldEF0dHJpYnV0ZSgianNjb250cm9sbGVyIik7aWYoZC5fX2pzY29udHJvbGxlcilyZXR1cm4gXy53bShkLl9fanNjb250cm9sbGVyLk1lKCksZnVuY3Rpb24oYyl7cmV0dXJuIGMudkgmJmMuU2whPWU/KGQuX19qc2NvbnRyb2xsZXI9dm9pZCAwLGMuZGlzcG9zZSgpLGIuQ2QoYSkpOmN9KTtlPV8ucnhbZV07dmFyIGY9bmV3IF8ucG07ZC5fX2pzY29udHJvbGxlcj1mO0x4KHRoaXMudyxkKTtQSih0aGlzLGQpfHwoZi5jYW5jZWwoKSxkLl9fanNjb250cm9sbGVyPXZvaWQgMCk7dmFyIGs9bnVsbDt0aGlzLmImJiF0aGlzLmIuYiYmKGs9dGhpcy5iLk1lKCkpO3ZhciBuPXRoaXMscD1mdW5jdGlvbihhKXtpZihQSihuLGQpKXthPWEuY3JlYXRlKGUsZCxuKTt2YXIgYj0hMDtfLndtKGEsZnVuY3Rpb24oYSl7Ynx8UEoobixkKT9mLmNhbGxiYWNrKGEpOihmLmNhbmNlbCgpLGQuX19qc2NvbnRyb2xsZXI9CnZvaWQgMCl9KTtfLk1sKGEsZi5hLGYpO2I9ITF9ZWxzZSBmLmNhbmNlbCgpLGQuX19qc2NvbnRyb2xsZXI9dm9pZCAwfSxBPXA7ayYmKEE9ZnVuY3Rpb24oYSl7Xy53bShrLF8uU2EocCxhKSl9KTtfLk1sKF8ud20oTnYoYyxlKSxBLHRoaXMpLGZ1bmN0aW9uKGEpe2YuYShhKX0sdGhpcyk7cmV0dXJuIGZ9OwpPSi5wcm90b3R5cGUuamE9ZnVuY3Rpb24oYSl7aWYoISh0aGlzLm8mJnRoaXMuby5pc0Rpc3Bvc2VkKCl8fHhtYShhKSkpe3RoaXMuaXx8KHRoaXMuaT0hMCx6bWEodGhpcy5nKSk7dmFyIGI9YS5ub2RlKCksYz1hLmV2ZW50KCksZD1jLl9yZXRhcmdldD9jLl9yZXRhcmdldDphLnRhcmdldCgpfHxjLnNyY0VsZW1lbnQsZT1GdihiLGEuSGkoKT9hLkhpKCk6Yy50eXBlKSxmPSExO2lmKGUpZm9yKHZhciBrPTA7azxlLmxlbmd0aDtrKyspe3ZhciBuPVFKKHRoaXMsYSxlW2tdLG51bGwsZCk7Zj1mfHwhMD09PW59dmFyIHA9R3YoYiwhMCk7aWYocCl7Yj1SZWEoYS5CYSk7dmFyIEE9Q21hKGEsYixwKTtpZigwPT1BLmxlbmd0aCllJiYhZnx8UkoodGhpcyxhLGMpO2Vsc2V7Yz10aGlzLkNkKHApO2EuTWUoIndpeiIpO3ZhciBEPSEwLEY9ITE7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtEJiYoU0ooITAsQSxhLHApLEY9ITApfSw1MCk7Xy54bShjLGZ1bmN0aW9uKCl7RiYmU0ooITEsCkEsYSxwKTtEPSExfSx0aGlzKTtfLndtKGMsKDAsXy5sKSh0aGlzLndhLHRoaXMsQSkpO18ud20oYyxmdW5jdGlvbihiKXt0cnl7Zm9yKHZhciBjPWYsZD1hLmV2ZW50KCksZT0wO2U8QS5sZW5ndGg7ZSsrKXt2YXIgaz1BW2VdLnRhcmdldCxuPUh2KGIsQVtlXS5hY3Rpb24pLEQ9UUoodGhpcyxhLG4sYixrKTtjPWN8fCEwPT09RH1pZihjJiYhMSE9PWQuYnViYmxlcyl7dmFyIEY9VEoodGhpcyxkLHApO251bGwhPUYmJnRoaXMuSGEoRil9fWZpbmFsbHl7YS5kb25lKCJ3aXoiKX19LHRoaXMpO18uTWwoYyxmdW5jdGlvbihiKXthLmRvbmUoIndpeiIpO2lmKCEoYiBpbnN0YW5jZW9mIHFtKSl0aHJvdyBiO30pfX1lbHNlIGYmJlJKKHRoaXMsYSxjKX19OwpPSi5wcm90b3R5cGUud2E9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9KDAsXy5jYikodGhpcy5mLGZ1bmN0aW9uKGEpe3JldHVybiF0aGlzLmFbYV19LHRoaXMpLGQ9MDtkPGEubGVuZ3RoO2QrKyl7dmFyIGU9SHYoYixhW2RdLmFjdGlvbik7aWYoZS56aylmb3IodmFyIGY9MDtmPGUuemsubGVuZ3RoO2YrKyl0aGlzLmFbZS56a1tmXV18fGMucHVzaChlLnprW2ZdKX1pZihjLmxlbmd0aCl7YT1bXTtMdihKdi5TYigpLGMpO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspZT1jW2RdLGU9Xy53bShfLmV5KGUsdGhpcy5vKSwoMCxfLmwpKGZ1bmN0aW9uKGEsYil7dGhpcy5hW2FdPWJ9LHRoaXMsZSkpLGEucHVzaChlKTtyZXR1cm4gXy53bShuZXcgXy5qdShhKSxmdW5jdGlvbigpe3JldHVybiBifSl9fTsKdmFyIENtYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1hLmV2ZW50KCk7Yj1iLmdldCgpO2Zvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgaz1iW2ZdO2lmKCJDTElFTlQiIT09ay5hY3Rpb24pe3ZhciBuPWUuX3JldGFyZ2V0P2UuX3JldGFyZ2V0OmEudGFyZ2V0KCl8fGUuc3JjRWxlbWVudCxwPW51bGw7aWYoay50YXJnZXQpe2Rve3ZhciBBPW4uZ2V0QXR0cmlidXRlKCJqc25hbWUiKTtpZihrLnRhcmdldD09QSYmR3YobiwhMSk9PWMpe3A9bjticmVha31uPVZ1KG4pfXdoaWxlKG4mJm4hPWMpO2lmKCFwKWNvbnRpbnVlfWlmKGsucGQpe2lmKCJ0cnVlIj09ay5wZC5wcmV2ZW50RGVmYXVsdClpZihBPWUsQS5wcmV2ZW50RGVmYXVsdClBLnByZXZlbnREZWZhdWx0KCk7ZWxzZSBpZihBLnNyY0VsZW1lbnQpe3ZhciBEPUEuc3JjRWxlbWVudC5vd25lckRvY3VtZW50LnBhcmVudFdpbmRvdztELmV2ZW50JiZELmV2ZW50LnR5cGU9PUEudHlwZSYmKEQuZXZlbnQucmV0dXJuVmFsdWU9CiExKX0idHJ1ZSI9PWsucGQucHJldmVudE1vdXNlRXZlbnRzJiZlLl9wcmV2ZW50TW91c2VFdmVudHMuY2FsbChlKX1kLnB1c2goe2FjdGlvbjprLHRhcmdldDpwfHxufSl9fXJldHVybiBkfSxRSj1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWIuZXZlbnQoKTtiPWIubm9kZSgpOzM9PWUubm9kZVR5cGUmJihlPWUucGFyZW50Tm9kZSk7ZT1uZXcgaGEoZixuZXcgXy5TdyhlKSxuZXcgXy5TdyhiKSxmLl9fc291cmNlKTtmPVtdO2ZvcihiPTA7YjxhLmYubGVuZ3RoO2IrKylmLnB1c2goYS5hW2EuZltiXV0pO2lmKGMuemspZm9yKGI9MDtiPGMuemsubGVuZ3RoO2IrKylmLnB1c2goYS5hW2MuemtbYl1dKTtpZigwPGYubGVuZ3RoKXthOntmb3IoYT0wO2E8Zi5sZW5ndGg7YSsrKXRyeXt2YXIgaz1mW2FdLmEoZSk7aWYobnVsbCE9ayYmay5hYm9ydCl7dmFyIG49azticmVhayBhfX1jYXRjaChwKXtVaihwKX1uPXZvaWQgMH1pZihuKXJldHVybjtmb3Iobj0wO248Zi5sZW5ndGg7bisrKTsKfXJldHVybiBjLmNhbGwoZCxlKX0sU0o9ZnVuY3Rpb24oYSxiLGMsZCl7KDAsXy5hYikoYixmdW5jdGlvbihiKXtpZihiLmFjdGlvbi5wZCYmYi5hY3Rpb24ucGQuY3NzRmVlZGJhY2spe3ZhciBlPWMubm9kZSgpO2E/Xy5hdyhlLCJxMXl0dWUiKTpfLmN3KGUsInExeXR1ZSIpO2I9Yi50YXJnZXQ7YT9fLmF3KGIsImFmT2E2Iik6Xy5jdyhiLCJhZk9hNiIpO2E/Xy5hdyhkLCJqTWM5NWQiKTpfLmN3KGQsImpNYzk1ZCIpfX0pfSxSSj1mdW5jdGlvbihhLGIsYyl7Yj1USihhLGMsYi50YXJnZXQoKXx8Yy5zcmNFbGVtZW50LFZ1KGIubm9kZSgpKSk7bnVsbCE9YiYmYS5IYShiKX0sVEo9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9e30sZjtmb3IoZiBpbiBiKSJmdW5jdGlvbiIhPT10eXBlb2YgYltmXSYmInNyY0VsZW1lbnQiIT09ZiYmInRhcmdldCIhPT1mJiYoZVtmXT1iW2ZdKTtkPWR8fFZ1KGMpO2lmKCFkfHwhUEooYSxkKSlyZXR1cm4gbnVsbDtlLnRhcmdldD1kO2UuX3JldGFyZ2V0PQpjO2UuX29yaWdpbmFsRXZlbnQ9YjtiLnByZXZlbnREZWZhdWx0JiYoZS5kZWZhdWx0UHJldmVudGVkPWIuZGVmYXVsdFByZXZlbnRlZHx8ITEsZS5wcmV2ZW50RGVmYXVsdD1EbWEsZS5fcHJvcGFnYXRpb25TdG9wcGVkPWIuX3Byb3BhZ2F0aW9uU3RvcHBlZHx8ITEsZS5zdG9wUHJvcGFnYXRpb249RW1hLGUuX2ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1iLl9pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWR8fCExLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPUZtYSk7cmV0dXJuIGV9LERtYT1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgYT10aGlzLl9vcmlnaW5hbEV2ZW50O2EmJmEucHJldmVudERlZmF1bHQoKX0sRW1hPWZ1bmN0aW9uKCl7dGhpcy5fcHJvcGFnYXRpb25TdG9wcGVkPSEwO3ZhciBhPXRoaXMuX29yaWdpbmFsRXZlbnQ7YSYmYS5zdG9wUHJvcGFnYXRpb24oKX0sRm1hPWZ1bmN0aW9uKCl7dGhpcy5faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPSAhMDt2YXIgYT10aGlzLl9vcmlnaW5hbEV2ZW50O2EmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9LEFtYT1mdW5jdGlvbihhKXt2YXIgYj0oMCxfLmwpKGEuamEsYSksYz1RajtLaihmdW5jdGlvbihhKXtjPWF9KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYyhiKX19OwpfLnZ4KGZ1bmN0aW9uKCl7fSxxeCgiVWdBdFhlIiwiVWdBdFhlIixbXSkpO3ZhciBVSj1bXTtVSi5wdXNoKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGVhKGEpJiZhLmhmJiZhLmhmLno1P2IudGhlbihmdW5jdGlvbigpe3JldHVybiBudWxsfSxmdW5jdGlvbigpe3JldHVybiBudWxsfSk6Yn0pO1VKLnB1c2goZnVuY3Rpb24oYSxiKXtyZXR1cm4gYWFhKGEpP18uc2soYixmdW5jdGlvbigpe3JldHVybiBfLmlrKG51bGwpfSk6Yn0pO1VKLnB1c2goZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmRlYWRsaW5lTWlsbGlzO2VhKGEpJiYoYz1hLmhmP2EuaGYuZGVhZGxpbmVNaWxsaXM6dm9pZCAwKTthPWM7cmV0dXJuLTE8YT9fLm1rKFtiLF8uSGwoYSxfLmlrKG51bGwpKV0pOmJ9KTt2YXIgR21hPWZ1bmN0aW9uKGEsYil7KDAsXy5hYikoVUosZnVuY3Rpb24oYyl7YT1jKGIsYSl9KTtyZXR1cm4gYX07CnZhciBIbWE9ZnVuY3Rpb24oYSxiKXtpZigwPT1fLmRjKGIpLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYz0hMTtfLiRiKGIsZnVuY3Rpb24oYSl7VkooYSkmJihjPSEwKX0pO3JldHVybiBjP18ud20oXy5TdihhLHtsOnt0RzpQen19KSxmdW5jdGlvbihhKXtyZXR1cm4gYj1hYyhiLGZ1bmN0aW9uKGIpe3JldHVybiBWSihiKT9hLmwudEcuaXNFbmFibGVkKFZKKGIpKTohMH0pfSk6Yn0sVko9ZnVuY3Rpb24oYSl7dmFyIGI9YS5UaztlYShhKSYmKGI9YS5oZj9hLmhmLlRrOnZvaWQgMCk7cmV0dXJuIGJ9Owp2YXIgV0o9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7Xy4kYihjLGZ1bmN0aW9uKGEsZCl7Xy5PYShhLm1ha2VSZXF1ZXN0KSYmKGE9aWMoYSksY1tkXT1hLGEucmVxdWVzdD1hLm1ha2VSZXF1ZXN0LmNhbGwoYikpfSk7dmFyIGQsZT1fLndtKF8uU3YoYix7bDp7T0Y6YX19KSxmdW5jdGlvbihhKXtkPWEubC5PRjtyZXR1cm4gSG1hKGIsYyl9KS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBkLmV4ZWN1dGUoYSl9KTtyZXR1cm4gXy5iYyhjLGZ1bmN0aW9uKGEsYil7dmFyIGM9ZS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBhW2JdP2FbYl06bnVsbH0pO3JldHVybiBHbWEoYyxhKX0pfX07CnZhciBJbWE9cXgoInhpcUVzZSIsInhpcUVzZSIsW10pO3ZhciBYSj1mdW5jdGlvbigpe307WEoucHJvdG90eXBlLmE9ZnVuY3Rpb24oKXt9O1hKLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7fTtfLnZ4KFhKLEltYSx2b2lkIDApO3ZhciBZSj1xeCgiUk1oQmZlIiwiUk1oQmZlIixbXSksWko9cXgoIkpOb3hpIiwiSk5veGkiLFtPaV0pO3R4KFpKLCJVZ0F0WGUiKTt2YXIgJEo9cXgoIlp3RGs5ZCIsIlp3RGs5ZCIsW10pO3R4KCRKLCJ4aXFFc2UiKTt2YXIgYUs9cXgoInc5aER2IiwidzloRHYiLFtMbl0pO3R4KGFLLCJVZ0F0WGUiKTt2YXIgSm1hPWZ1bmN0aW9uKGEsYil7YT1iSyhhLGIpO18uJGIoYSxmdW5jdGlvbihhLGIsZSl7ZVtiXT1fLnNrKGEsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pfSk7cmV0dXJuIGF9LGJLPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5TdihhLHtsOntYZDpZSn19KTtyZXR1cm4gXy5iYyhiLGZ1bmN0aW9uKGIpe2lmKCJmdW5jdGlvbiI9PUxhKGIpKXZhciBkPWI7ZWxzZXtkPWIuUWI7dmFyIGY9Yi5PM312YXIgaz1nbShkKTt2YXIgbj1hLmFhP2EuYWEoKS51KCk6YS5sbigpO2YmJmEuWnYoayxmKTtyZXR1cm4gYy50aGVuKGZ1bmN0aW9uKGEpe3ZhciBjPWQ7cmV0dXJuIF8uQ2EoYi56SCk/YS5sLlhkLnJlc29sdmUobixjLGIuekgpOmEubC5YZC5yZXNvbHZlKG4sYyl9KX0pfSxjSz1XSihaSiksS21hPVdKKGFLKTsKYXQoe1VjOmZ1bmN0aW9uKGEpe3ZhciBiPV8uWHgoYSkuY2MoKS5nZXRXaW5kb3coKSxjPWIuSURfd2l6YmluZDtpZihudWxsPT1jKXt2YXIgZD1uZXcgdUo7Yz1ifHx3aW5kb3c7dmFyIGU9Yy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZj1uZXcgRUooZSk7YTp7Zm9yKHZhciBrPTA7azxkLmEubGVuZ3RoO2srKylpZihGSihkLmFba10uYSxlKSl7ZT0hMDticmVhayBhfWU9ITF9aWYoZSlkLmYucHVzaChmKTtlbHNle0RKKGQsZik7ZC5hLnB1c2goZik7Zj1kLmYuY29uY2F0KGQuYSk7ZT1bXTtrPVtdO2Zvcih2YXIgbj0wO248ZC5hLmxlbmd0aDsrK24pe3ZhciBwPWQuYVtuXTtHSihwLGYpPyhlLnB1c2gocCkscC5GcCgpKTprLnB1c2gocCl9Zm9yKG49MDtuPGQuZi5sZW5ndGg7KytuKXA9ZC5mW25dLEdKKHAsZik/ZS5wdXNoKHApOihrLnB1c2gocCksREooZCxwKSk7ZC5hPWs7ZC5mPWV9Q0ooZCwiYmx1ciIpO0NKKGQsImNsaWNrIik7Q0ooZCwiZm9jdXMiKTtDSihkLCJmb2N1c2luIik7CkNKKGQsImZvY3Vzb3V0Iik7Q0ooZCwia2V5ZG93biIpO0NKKGQsImtleXByZXNzIik7Q0ooZCwibG9hZCIpO0NKKGQsIm1vdXNlb3ZlciIpO0NKKGQsIm1vdXNlb3V0Iik7Q0ooZCwibW91c2VlbnRlciIpO0NKKGQsIm1vdXNlbGVhdmUiKTtDSihkLCJzdWJtaXQiKTtDSihkLCJ0b3VjaHN0YXJ0Iik7Q0ooZCwidG91Y2hlbmQiKTtDSihkLCJ0b3VjaG1vdmUiKTtDSihkLCJjaGFuZ2UiKTtDSihkLCJpbnB1dCIpO0NKKGQsImtleXVwIik7Q0ooZCwibW91c2Vkb3duIik7Q0ooZCwibW91c2V1cCIpO0NKKGQsInRvdWNoY2FuY2VsIik7Q0ooZCwidHJhbnNpdGlvbmVuZCIpO0NKKGQsIndlYmtpdFRyYW5zaXRpb25FbmQiKTtfLkZhKCJJRF93aXpiaW5kIixybWEoZCksYyk7Yz1iLklEX3dpemJpbmR9ZD1jLnRyaWdnZXI7Yz1jLmJpbmQ7Zj1uZXcgSXgoYi5kb2N1bWVudCxhKTtkPW5ldyBPSihkLGYsYSk7YSYmKEp2LlNiKCkubz1hLF8uRGsoYSxmKSk7ZT1kLmc7YygoMCxfLmwpKGUubywKZSkpO2YubWooKTtmPWQudztjPWFvKGEsXy56KTtmPSgwLF8ubCkoZi5taixmKTtiLndpel9wcm9ncmVzcz1mO2MmJihjLmYubGlzdGVuKCJrIixmKSxjLmYubGlzdGVuKCJrIixzZWEpKTtpZihhPWFvKGEseGkpKV8ud20oYS5iKCJkciIpLGYpLGE9YS5iKGF1KSxkLmI9YTt6R3x8KHpHPSEwLF8ud3goWEouTGUsJEopLFJ2KHtkYXRhOmNLLG5WOmNLLEZuOkttYX0pLFJ2KHthZmRhdGFfbzpjS30pLFJ2KHtYejpiS30pLFJ2KHtBMzpKbWF9KSwkbGEoKSl9fSk7Cl8uZEs9ZnVuY3Rpb24oYSl7cmV0dXJuIGh4KGEpLmdldEF0dHJpYnV0ZSgicm9sZSIpfTtfLmVLPWZ1bmN0aW9uKGEpe2E9aHgoYSkuZ2V0QXR0cmlidXRlKCJyb2xlIik7cmV0dXJuIG51bGw9PT1hP2E6YX07dmFyIGZLLGdLLGhLLGpLLGtLLGxLLG1LLG5LO2ZLPW5ldyBfLnhuKCJhbGVydCBhbGVydGRpYWxvZyBhcHBsaWNhdGlvbiBhcnRpY2xlIGJhbm5lciBjb21wbGVtZW50YXJ5IGNvbnRlbnRpbmZvIGRpYWxvZyBkb2N1bWVudCBmb3JtIGdyb3VwIGxvZyBtYWluIG1hcnF1ZWUgbWF0aCBuYXZpZ2F0aW9uIG5vdGUgcmVnaW9uIHNlYXJjaCBzdGF0dXMgdGV4dGluZm8gdGFicGFuZWwiLnNwbGl0KCIgIikpO2dLPW5ldyBfLnhuKCJhbGVydCBkZWZpbml0aW9uIGRpcmVjdG9yeSBsaXN0IGxpc3RpdGVtIGxvZyBtYXJxdWVlIG1hdGggbWVudWJhciBub3RlIHByZXNlbnRhdGlvbiBwcm9ncmVzc2JhciBzY3JvbGxiYXIgc2VwYXJhdG9yIHN0YXR1cyB0ZXh0aW5mbyB0aW1lciB0b29sYmFyIHRvb2x0aXAiLnNwbGl0KCIgIikpO2hLPW5ldyBfLnhuKCJidXR0b24gY2hlY2tib3ggY29sdW1uaGVhZGVyIGdyaWRjZWxsIGxpbmsgbWVudWl0ZW0gbWVudWl0ZW1jaGVja2JveCBtZW51aXRlbXJhZGlvIG9wdGlvbiByYWRpbyByb3doZWFkZXIgc2xpZGVyIHNwaW5idXR0b24gdGFiIHRleHRib3ggdHJlZWl0ZW0iLnNwbGl0KCIgIikpOwpfLmlLPW5ldyBfLldsKCJjaGVja2JveCIsbmV3IF8ueG4oW3tSZDpudWxsLGhnOiExLE5mOiExLEtlOiJhcmlhLWNoZWNrZWQiLG9oOiExLFNnOiExLHhmOiEwfV0pLCJtZW51aXRlbSIsbmV3IF8ueG4oW3tSZDoiYXJpYS1zZWxlY3RlZCIsaGc6ITAsTmY6ITAsS2U6ImFyaWEtc2VsZWN0ZWQiLG9oOiEwLFNnOiEwLHhmOiExfV0pLCJtZW51aXRlbWNoZWNrYm94IixuZXcgXy54bihbe1JkOm51bGwsaGc6ITEsTmY6ITEsS2U6ImFyaWEtY2hlY2tlZCIsb2g6ITEsU2c6ITEseGY6ITB9XSksIm1lbnVpdGVtcmFkaW8iLG5ldyBfLnhuKFt7UmQ6bnVsbCxoZzohMSxOZjohMSxLZToiYXJpYS1jaGVja2VkIixvaDohMCxTZzohMCx4ZjohMX1dKSwib3B0aW9uIixuZXcgXy54bihbe1JkOm51bGwsaGc6ITEsTmY6ITEsS2U6ImFyaWEtY2hlY2tlZCIsb2g6ITEsU2c6ITEseGY6ITB9LHtSZDoiYXJpYS1zZWxlY3RlZCIsaGc6ITAsTmY6ITAsS2U6ImFyaWEtc2VsZWN0ZWQiLG9oOiEwLFNnOiEwLAp4ZjohMX1dKSwicmFkaW8iLG5ldyBfLnhuKFt7UmQ6ImFyaWEtY2hlY2tlZCIsaGc6ITAsTmY6ITAsS2U6ImFyaWEtY2hlY2tlZCIsb2g6ITAsU2c6ITAseGY6ITF9XSksInRhYiIsbmV3IF8ueG4oW3tSZDoiYXJpYS1zZWxlY3RlZCIsaGc6ITEsTmY6ITEsS2U6ImFyaWEtZXhwYW5kZWQiLG9oOiExLFNnOiEwLHhmOiEwfV0pLCJ0cmVlaXRlbSIsbmV3IF8ueG4oW3tSZDoiYXJpYS1zZWxlY3RlZCIsaGc6ITEsTmY6ITEsS2U6ImFyaWEtY2hlY2tlZCIsb2g6ITEsU2c6ITAseGY6ITB9LHtSZDoiYXJpYS1zZWxlY3RlZCIsaGc6ITAsTmY6ITAsS2U6ImFyaWEtc2VsZWN0ZWQiLG9oOiEwLFNnOiEwLHhmOiExfV0pKTsKaks9bmV3IF8uV2woImxpc3Rib3giLHt6bDohMCxBbDohMSxQbzohMCxCbTohMX0sIm1lbnUiLHt6bDohMSxBbDohMSxQbzohMCxCbTohMH0sInJhZGlvZ3JvdXAiLHt6bDohMSxBbDohMCxQbzohMSxCbTohMH0sInRhYmxpc3QiLHt6bDohMSxBbDohMCxQbzohMCxCbTohMH0sInRyZWUiLHt6bDohMCxBbDohMSxQbzohMCxCbTohMX0pO2tLPW5ldyBfLnhuKFsiY29tYm9ib3giLCJncmlkIiwidHJlZWdyaWQiXSk7bEs9bmV3IF8ueG4oIm1lbnVpdGVtIG1lbnVpdGVtY2hlY2tib3ggbWVudWl0ZW1yYWRpbyBvcHRpb24gcmFkaW8gdGFiIHRyZWVpdGVtIi5zcGxpdCgiICIpKTttSz1uZXcgXy54bihbInByb2dyZXNzYmFyIiwic2Nyb2xsYmFyIiwic2xpZGVyIiwic3BpbmJ1dHRvbiJdKTtuSz1uZXcgXy54bigiZGVmaW5pdGlvbiBkaXJlY3RvcnkgaGVhZGluZyBpbWcgbGlzdCBsaXN0aXRlbSBwcmVzZW50YXRpb24gcHJvZ3Jlc3NiYXIgc2Nyb2xsYmFyIHNlcGFyYXRvciB0aW1lciIuc3BsaXQoIiAiKSk7CnZhciBvSz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bmV3IF8ueG4oYS5YYigpKTtiLmZvckVhY2goZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIF8ueG4/YSBpbnN0YW5jZW9mIF8ueG4mJmQuYWRkQWxsKGEpOmQuYWRkKGEpfSk7MT09Yy5sZW5ndGgmJmNbMF1pbnN0YW5jZW9mIF8ueG4mJihjPWNbMF0uWGIoKSk7Yy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLnhuKXtpZihhIGluc3RhbmNlb2YgXy54bil7YT1WbShhKTtmb3IodmFyIGI9YS5sZW5ndGgsYz0wO2M8YjtjKyspZC5yZW1vdmUoYVtjXSl9fWVsc2UgZC5yZW1vdmUoYSl9KTtyZXR1cm4gZH0scEs9Xy5kYyh7dFE6ImFsZXJ0Iix1UToiYWxlcnRkaWFsb2ciLHZROiJhcHBsaWNhdGlvbiIsd1E6ImFydGljbGUiLHpROiJiYW5uZXIiLExROiJidXR0b24iLFdROiJjaGVja2JveCIsJFE6ImNvbHVtbmhlYWRlciIsYVI6ImNvbWJvYm94IixkUjoiY29tcGxlbWVudGFyeSIsZ1I6ImNvbnRlbnRpbmZvIixvUjoiZGVmaW5pdGlvbiIsCnJSOiJkaWFsb2ciLHNSOiJkaXJlY3RvcnkiLHhSOiJkb2N1bWVudCIsUVI6ImZvcm0iLFpSOiJncmlkIiwkUjoiZ3JpZGNlbGwiLGFTOiJncm91cCIsYlM6ImhlYWRpbmciLGRTOiJpbWciLGtTOiJsaW5rIixsUzoibGlzdCIsbVM6Imxpc3Rib3giLG5TOiJsaXN0aXRlbSIsclM6ImxvZyIsdFM6Im1haW4iLHVTOiJtYXJxdWVlIix2UzoibWF0aCIsd1M6Im1lbnUiLHhTOiJtZW51YmFyIix5UzoibWVudWl0ZW0iLHpTOiJtZW51aXRlbWNoZWNrYm94IixDUzoibWVudWl0ZW1yYWRpbyIsUVM6Im5hdmlnYXRpb24iLFhTOiJub3RlIixaUzoib3B0aW9uIixhVDoicHJlc2VudGF0aW9uIixiVDoicHJvZ3Jlc3NiYXIiLGNUOiJyYWRpbyIsZFQ6InJhZGlvZ3JvdXAiLGZUOiJyZWdpb24iLGpUOiJyb3ciLGtUOiJyb3dncm91cCIsbFQ6InJvd2hlYWRlciIsb1Q6InNjcm9sbGJhciIscVQ6InNlYXJjaCIsclQ6InNlcGFyYXRvciIsdVQ6InNsaWRlciIsd1Q6InNwaW5idXR0b24iLHhUOiJzdGF0dXMiLApDVDoidGFiIixEVDoidGFibGlzdCIsRlQ6InRhYnBhbmVsIixKVDoidGV4dGJveCIsS1Q6InRleHRpbmZvIixOVDoidGltZXIiLE9UOiJ0b29sYmFyIixRVDoidG9vbHRpcCIsVVQ6InRyZWUiLFZUOiJ0cmVlZ3JpZCIsV1Q6InRyZWVpdGVtIn0pLHFLPW5ldyBfLnhuKGpLLkNlKCkpLHJLPW5ldyBfLnhuKFsiYXJpYS1sYWJlbCIsImFyaWEtbGFiZWxsZWRieSJdKSxzSz1uZXcgXy54bigiY29sdW1uaGVhZGVyIGdyaWQgZ3JpZGNlbGwgcm93IHJvd2dyb3VwIHJvd2hlYWRlciB0cmVlZ3JpZCIuc3BsaXQoIiAiKSksTG1hPW5ldyBfLnhuKFsibWVudSIsIm1lbnVpdGVtIiwibWVudWl0ZW1jaGVja2JveCIsIm1lbnVpdGVtcmFkaW8iXSksdEs9b0sobkssWyJtZW51YmFyIiwicm93Iiwicm93Z3JvdXAiLCJ0b29sYmFyIl0sW10pLHVLPW9LKGhLLFsiYWxlcnRkaWFsb2ciLCJhcHBsaWNhdGlvbiIsImRpYWxvZyIscUssa0ssInJvdyJdLFtdKSx2Sz1vSyhoSyxbZktdLFtdKSx3Sz1mdW5jdGlvbihhKXt2YXIgYj0KbmV3IF8ueG4oW10pO2lmKChvSyh2SyxbdEssa0sscUtdLFtsSyxzS10pLmNvbnRhaW5zKGEpfHwiZ3JpZCI9PWEpJiYibGlzdGl0ZW0iIT1hKXJldHVybiBiO2IuYWRkKCJwcmVzZW50YXRpb24iKTsib3B0aW9uIiE9YSYmInJhZGlvIiE9YSYmInRhYiIhPWF8fGIuYWRkKCJMQUJFTCIpOy8uKihjZWxsfGhlYWRlcikuKi8udGVzdChhKT9iLmFkZCgicm93Iik6InJvdyI9PWE/Yi5hZGRBbGwoWyJncmlkIiwicm93Z3JvdXAiLCJ0cmVlZ3JpZCJdKToicm93Z3JvdXAiPT1hP2IuYWRkKCJncmlkIik6Imxpc3RpdGVtIj09YT9iLmFkZCgibGlzdCIpOjA9PVN0cmluZyhhKS5pbmRleE9mKCJtZW51aXRlbSIpP2IuYWRkKCJtZW51Iik6Im9wdGlvbiI9PWE/Yi5hZGQoImxpc3Rib3giKToicmFkaW8iPT1hP2IuYWRkKCJyYWRpb2dyb3VwIik6InRhYiI9PWE/Yi5hZGQoInRhYmxpc3QiKToidHJlZWl0ZW0iPT1hJiZiLmFkZCgidHJlZSIpO3JldHVybiBifSxNbWE9ZnVuY3Rpb24oYSl7dmFyIGI9Cm5ldyBfLnhuKFsicHJlc2VudGF0aW9uIl0pO2IuYWRkKG51bGwpO2lmKCJwcmVzZW50YXRpb24iPT1hKXJldHVybiBvSyhiLHBLLFtdKTt2YXIgYz1mdW5jdGlvbihhLGIpe3dLKGEpLlhiKCkuZm9yRWFjaChmdW5jdGlvbihhKXtiLmNvbnRhaW5zKGEpfHwoYi5hZGQoYSksInByZXNlbnRhdGlvbiIhPWEmJmMoYSxiKSl9KX07YyhhLGIpO3ZhciBkPW5ldyBfLnhuKCJhbGVydCBhbGVydGRpYWxvZyBncm91cCBsb2cgcmFkaW9ncm91cCBzdGF0dXMiLnNwbGl0KCIgIikpO2lmKGZLLmNvbnRhaW5zKGEpJiYibWFpbiIhPWEpe3ZhciBlPVtdO2QuY29udGFpbnMoYSk/KGUucHVzaChkKSwiYWxlcnRkaWFsb2ciPT1hJiZlLnB1c2goImRpYWxvZyIpKTooZS5wdXNoKGQpLGUucHVzaCgic2VhcmNoIikpO3JldHVybiBvSyhiLFtmS10sZSl9ZksuY29udGFpbnMoYSl8fGIuYWRkQWxsKGZLKTsiYnV0dG9uIiE9YSYmImxpbmsiIT1hJiYiY2hlY2tib3giIT1hfHxiLmFkZEFsbChbImFsZXJ0ZGlhbG9nIiwKImhlYWRpbmciLCJ0b29sYmFyIl0pOyJidXR0b24iIT1hJiYibGluayIhPWEmJiJjaGVja2JveCIhPWEmJiJ0ZXh0Ym94IiE9YXx8Yi5hZGQoIkxBQkVMIik7cmV0dXJuIGJ9LHhLPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnhuKFtdKTtpZihvSyh2SyxbdEtdLFtxS10pLmNvbnRhaW5zKGEpJiYibGlzdCIhPWEmJi0xPT1TdHJpbmcoYSkuaW5kZXhPZigicm93IikpcmV0dXJuIGI7Yi5hZGQoInByZXNlbnRhdGlvbiIpOyJsaXN0Ym94IiE9YSYmInJhZGlvZ3JvdXAiIT1hJiYidGFibGlzdCIhPWF8fGIuYWRkKCJMQUJFTCIpOyJncmlkIj09YXx8InRyZWVncmlkIj09YT9iLmFkZEFsbCgiZ3JpZCI9PWE/WyJyb3ciLCJyb3dncm91cCJdOlsicm93Il0pOiJyb3dncm91cCI9PWE/Yi5hZGQoInJvdyIpOiJyb3ciPT1hP2IuYWRkQWxsKFsiY29sdW1uaGVhZGVyIiwiZ3JpZGNlbGwiLCJyb3doZWFkZXIiXSk6Imxpc3QiPT1hP2IuYWRkKCJsaXN0aXRlbSIpOiJtZW51Ij09YT9iLmFkZEFsbChbIm1lbnVpdGVtIiwKIm1lbnVpdGVtY2hlY2tib3giLCJtZW51aXRlbXJhZGlvIl0pOiJsaXN0Ym94Ij09YT9iLmFkZCgib3B0aW9uIik6InJhZGlvZ3JvdXAiPT1hP2IuYWRkKCJyYWRpbyIpOiJ0YWJsaXN0Ij09YT9iLmFkZCgidGFiIik6InRyZWUiPT1hP2IuYWRkKCJ0cmVlaXRlbSIpOiJjb21ib2JveCI9PWEmJmIuYWRkKCJsaXN0Ym94Iik7cmV0dXJuIGJ9LE5tYT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy54bihbInByZXNlbnRhdGlvbiJdKTtiLmFkZChudWxsKTtpZigicHJlc2VudGF0aW9uIj09YSlyZXR1cm4gb0soYixwSyxbXSk7aWYobksuY29udGFpbnMoYSkmJl8uQ2IoYSwiciIpfHwiaW1nIj09YSlyZXR1cm4gYjt2YXIgYz1mdW5jdGlvbihhLGIpe3hLKGEpLlhiKCkuZm9yRWFjaChmdW5jdGlvbihhKXtiLmNvbnRhaW5zKGEpfHwoYi5hZGQoYSksInByZXNlbnRhdGlvbiIhPWEmJmMoYSxiKSl9KX07YyhhLGIpO2lmKHNLLmNvbnRhaW5zKGEpKXJldHVybiBvSyhiLFsiYnV0dG9uIiwiY2hlY2tib3giLAoidGV4dGJveCJdLFtdKTtMbWEuY29udGFpbnMoYSk/Yi5hZGQoIm1lbnUiKTooImxpc3RpdGVtIj09YXx8Imxpc3QiPT1hKSYmYi5hZGQoImxpc3QiKTtpZihxSy5jb250YWlucyhhKXx8bEsuY29udGFpbnMoYSkpcmV0dXJuIGI7aWYoImFsZXJ0ZGlhbG9nIj09YXx8ImhlYWRpbmciPT1hKXJldHVybiBvSyhiLFsiYnV0dG9uIiwiY2hlY2tib3giLCJoZWFkaW5nIiwiaW1nIl0sW2FdKTtpZigiZ3JvdXAiPT1hfHwibWVudWJhciI9PWEpYi5hZGRBbGwoWyJidXR0b24iLCJjaGVja2JveCIsImltZyJdKTtlbHNlIGlmKGZLLmNvbnRhaW5zKGEpJiYtMT09U3RyaW5nKGEpLmluZGV4T2YoImFsZXJ0Iikpe2I9b0soYixbcEssIkxBQkVMIl0sW2ZLXSk7aWYoImFwcGxpY2F0aW9uIj09YSlyZXR1cm4gb0soYiwiYWxlcnQgYWxlcnRkaWFsb2cgZGlhbG9nIGRvY3VtZW50IGZvcm0gZ3JvdXAgbG9nIHNlYXJjaCBzdGF0dXMgdGFicGFuZWwiLnNwbGl0KCIgIiksWyJoZWFkaW5nIiwibGlzdCIsCiJsaXN0aXRlbSJdKTt2YXIgZD1uZXcgXy54bihbImRvY3VtZW50IiwibGlzdCIsImxpc3RpdGVtIl0pO2lmKG9LKGZLLFsibGlzdCIsImxpc3RpdGVtIl0sW2dLXSkuY29udGFpbnMoYSkpcmV0dXJuIG9LKGIsW2ZLXSxkLmNvbnRhaW5zKGEpP1tdOlthXSl9ImNvbWJvYm94Ij09YSYmYi5hZGQoInRleHRib3giKTtyZXR1cm4gYn0sT21hPWZ1bmN0aW9uKGEpe3ZhciBiPXVLLmNvbnRhaW5zKGEpPyJhcHBsaWNhdGlvbiI9PWE/MDohaEsuY29udGFpbnMoYSl8fGxLLmNvbnRhaW5zKGEpPzI6MTotMTt2YXIgYz0wPmImJiFzSy5jb250YWlucyhhKSxkPW9LKGhLLFsiaGVhZGluZyIsImxpc3RpdGVtIl0sWyJjaGVja2JveCIsInNsaWRlciIsInNwaW5idXR0b24iLCJ0ZXh0Ym94IixzS10pLmNvbnRhaW5zKGEpLGU9bmV3IF8ueG4oW10pO29LKHVLLFsiaW1nIiwicmVnaW9uIl0sW2dLLHNLLCJhcHBsaWNhdGlvbiIsImJ1dHRvbiIsImNoZWNrYm94IiwibGluayIsIm9wdGlvbiIsInJhZGlvIiwKInRhYiIsInRleHRib3giLCJtZW51IiwidHJlZWdyaWQiXSkuY29udGFpbnMoYSkmJiFkJiZlLmFkZChySyk7Ly4qKGNoZWNrYm94fHJhZGlvKS4qLy50ZXN0KGEpJiYicmFkaW9ncm91cCIhPWE/ZS5hZGQoImFyaWEtY2hlY2tlZCIpOiJvcHRpb24iPT1hP2UuYWRkKG5ldyBfLnhuKFsiYXJpYS1jaGVja2VkIiwiYXJpYS1zZWxlY3RlZCJdKSk6ImNvbWJvYm94Ij09YSYmZS5hZGQoImFyaWEtZXhwYW5kZWQiKTttSy5jb250YWlucyhhKSYmKGUuYWRkQWxsKFsiYXJpYS12YWx1ZW1pbiIsImFyaWEtdmFsdWVtYXgiLCJhcmlhLXZhbHVlbm93Il0pLCJzY3JvbGxiYXIiPT1hJiZlLmFkZEFsbChbImFyaWEtY29udHJvbHMiLCJhcmlhLW9yaWVudGF0aW9uIl0pKTt2YXIgZj1lLmNsb25lKCk7dmFyIGs9bmV3IF8ueG4oUGxhKSxuPVtdO29LKHFLLFtrS10sW10pLmNvbnRhaW5zKGEpJiZuLnB1c2goImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpO29LKGhLLFtxSyxrSywiYXBwbGljYXRpb24iXSwKW10pLmNvbnRhaW5zKGEpJiZuLnB1c2goUWxhKTtsSy5jb250YWlucyhhKSYmLTE9PVN0cmluZyhhKS5pbmRleE9mKCJtZW51IikmJihuLnB1c2goUmxhKSwib3B0aW9uIiE9YSYmMCE9U3RyaW5nKGEpLmluZGV4T2YoInQiKSYmZi5hZGQoImFyaWEtc2VsZWN0ZWQiKSk7ImJ1dHRvbiI9PWEmJm4ucHVzaCgiYXJpYS1wcmVzc2VkIik7KCJncmlkY2VsbCI9PWF8fDA8U3RyaW5nKGEpLmluZGV4T2YoImhlYWRlciIpKSYmay5hZGQoImFyaWEtc2VsZWN0ZWQiKTttSy5jb250YWlucyhhKSYmay5hZGQoImFyaWEtdmFsdWV0ZXh0Iik7az1vSyhrLG4sW2ZdKTshb0sodUssW2ZLLCJoZWFkaW5nIiwiaW1nIl0sW10pLmNvbnRhaW5zKGEpJiYhZHx8Z0suY29udGFpbnMoYSl8fCJncmlkIj09YXx8Im1haW4iPT1hfHwoKGhLLmNvbnRhaW5zKGEpfHwtMTxTdHJpbmcoYSkuaW5kZXhPZigiZGlhbG9nIil8fCJjb21ib2JveCI9PWEpJiZrLmFkZCgiYXJpYS1kZXNjcmliZWRieSIpLGYuY29udGFpbnMockspfHwgay5hZGQockspKTtmPWs7az13SyhhKTtuPU1tYShhKTt2YXIgcD14SyhhKTthPU5tYShhKTtyZXR1cm57SjA6YixxNzpjLG4zOmQsTTY6ZixxNTplLEg3Om4sc046ayxJNzphLHJOOnB9fSx5Sz1mdW5jdGlvbihhKXt2YXIgYj1hfHxuZXcgXy54bihbXSk7cmV0dXJuIHBLLnJlZHVjZShmdW5jdGlvbihhLGQpe2IuY29udGFpbnMoZCl8fGEuc2V0KGQsT21hKGQpKTtyZXR1cm4gYX0sbmV3IF8uV2wpfTsKeUsoKTt2YXIgUG1hPW5ldyBfLnhuKCJhbGVydCBhcHBsaWNhdGlvbiBhcnRpY2xlIGJhbm5lciBjb21wbGVtZW50YXJ5IGNvbnRlbnRpbmZvIGRlZmluaXRpb24gZGlyZWN0b3J5IGRvY3VtZW50IGZvcm0gaGVhZGluZyBpbWcgbGlzdCBsaXN0aXRlbSBsb2cgbWFpbiBtYXJxdWVlIG1hdGggbm90ZSBzZWFyY2ggc3RhdHVzIHRleHRpbmZvIHRpbWVyIHRvb2xiYXIiLnNwbGl0KCIgIikpLHpLPXlLKFBtYSk7YXQoe1pjOlt7aWQ6eGksUWI6bHV9XX0pO2F0KHtaYzpbe2lkOkZiYSxRYjp4Rn1dfSk7YXQoe1pjOlt7aWQ6eWksUWI6Vnl9XX0pO3ZhciBBSz1mdW5jdGlvbigpe18uQWsuY2FsbCh0aGlzKTt0aGlzLm89bnVsbDt0aGlzLmY9bmV3IEltO3RoaXMuYj1uZXcgXy5XbDt0aGlzLmM9ITF9O18ubShBSyxfLkFrKTtBSy5wcm90b3R5cGUuYT1udWxsO0FLLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7QUsuJC5kaXNwb3NlLmNhbGwodGhpcyk7dGhpcy5hJiYoYnAodGhpcy5hKSx0aGlzLmE9bnVsbCk7dGhpcy5mLmNsZWFyKCk7Zm9yKHZhciBhPXRoaXMuYi5YYigpLGI9MDtiPGEubGVuZ3RoO2IrKylhW2JdLmRpc3Bvc2UoKTt0aGlzLmIuY2xlYXIoKTt0aGlzLm8mJih0aGlzLm8uZGlzcG9zZSgpLHRoaXMubz1udWxsKX07QUsucHJvdG90eXBlLmc9ZnVuY3Rpb24oKXtmb3IodGhpcy5hPW51bGw7IU1tKHRoaXMuZik7KXRyeXt2YXIgYT1LbSh0aGlzLmYpO2FbMF0uY2FsbChhWzFdKX1jYXRjaChiKXtybygia2IiLGIpfX07CnZhciBCSz1mdW5jdGlvbihhLGIsYyxkLGUpe18uQWsuY2FsbCh0aGlzKTt0aGlzLmlkPVN0cmluZyhRbWErKyk7dGhpcy5vPWE7dGhpcy52eT1iO3RoaXMuYz1jO3RoaXMudz1kO3RoaXMuZz1lfHxudWxsfTtfLm0oQkssXy5Bayk7dmFyIFFtYT0xO0JLLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7QksuJC5kaXNwb3NlLmNhbGwodGhpcyk7aWYodGhpcy5hKXt0aGlzLmEuYi5yZW1vdmUoU3RyaW5nKHRoaXMuaWQpKTtpZighdGhpcy5hKXRocm93IEVycm9yKCJtYiIpO3RoaXMuYiYmKGJwKHRoaXMuYiksdGhpcy5iPW51bGwpO3RoaXMuYT1udWxsfX07dmFyIENLPWZ1bmN0aW9uKGEsYixjKXtjPWN8fDA7YS5iJiYoYnAoYS5iKSxhLmI9bnVsbCk7YS5iPWFwKGEubyxhLmksTWF0aC5tYXgoYS5mK2MtYiwwKSxhKX07QksucHJvdG90eXBlLmk9ZnVuY3Rpb24oKXt0aGlzLmI9bnVsbDtESyh0aGlzLCgwLF8uVWEpKCkpfTsKdmFyIERLPWZ1bmN0aW9uKGEsYil7dmFyIGM9ITAsZD1hLnZ5O2QmMSYmYS5hLmMmJihjPSExKTt2YXIgZT1hLmEubztkJjImJmUmJmUuYSgpJiYoYz0hMSk7ZCY0JiZlJiYhZS5hKCkmJihjPSExKTtpZihjKWlmKGEuWGU9ITEsMjU+PWEuZi1iKXt0cnl7YS53LmNhbGwoYS5nKX1jYXRjaChmKXtybygibmJgIithLm8sZil9Yj0oMCxfLlVhKSgpO2EuZj1iK2EuYztDSyhhLGIpfWVsc2UgQ0soYSxiLGEuZi1iKTtlbHNlIGEuWGU9ITB9O0FLLnByb3RvdHlwZS53PWZ1bmN0aW9uKCl7Zm9yKHZhciBhPSgwLF8uVWEpKCksYj10aGlzLmIuWGIoKSxjPTA7YzxiLmxlbmd0aDtjKyspREsoYltjXSxhKX07CmF0KHtaYzpbe2lkOkZpLFFiOkFLfV19KTt2YXIgRUs9ZnVuY3Rpb24oYSxiKXtfLkFrLmNhbGwodGhpcyk7dGhpcy5hPWJ8fG51bGx9O18ubShFSyxfLkFrKTtFSy5wcm90b3R5cGUub2I9ZnVuY3Rpb24oKXt0aGlzLmEmJih0aGlzLmEuZGlzcG9zZSgpLHRoaXMuYT1udWxsKX07dmFyIEZLPWZ1bmN0aW9uKCl7VG0uY2FsbCh0aGlzKX07Xy5tKEZLLFRtKTt2YXIgR0s9ZnVuY3Rpb24oYSl7Xy5Bay5jYWxsKHRoaXMpO3RoaXMuZj1hO3RoaXMuYT1uZXcgXy5XbH07Xy5tKEdLLF8uQWspO0dLLnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe3RoaXMuYiYmKHRoaXMuYi5kaXNwb3NlKCksdGhpcy5iPW51bGwpO3RoaXMuWmYmJih0aGlzLlpmLmRpc3Bvc2UoKSx0aGlzLlpmPW51bGwpO0dLLiQub2IuY2FsbCh0aGlzKX07R0sucHJvdG90eXBlLnlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS55ZCgpfTsKR0sucHJvdG90eXBlLm89ZnVuY3Rpb24oKXtmb3IodmFyIGE9KDAsXy5VYSkoKSxiPXRoaXMuYS5DZSgpLGM9bmV3IEZLLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9dGhpcy5hLmdldChiW2RdKTtpZihlKXt2YXIgZj1hLWUuJHosaz1lLmNifHwxMkU0OyJJTlZBTElEIj09SEsoZSkmJjJFNDw9Zj9JSyh0aGlzLGUpOmY+PWsmJklLKHRoaXMsZSl9fWQ9dGhpcy5hLnlkKCk7aWYoMDxjLnlkKCkmJjA8ZClmb3IoYT1NYXRoLm1pbihjLnlkKCksZC0wKSxkPTA7ZDxhO2QrKyllPWMucmVtb3ZlKCksSUsodGhpcyxlKTtjLmNsZWFyKCl9O3ZhciBJSz1mdW5jdGlvbihhLGIpe3ZhciBjPWIuWmU7KDAsXy5VYSkoKTthLmEucmVtb3ZlKGMpO2IuaXNEaXNwb3NlZCgpfHxiLmRpc3Bvc2UoKX07CnZhciBKSz1mdW5jdGlvbigpe18uQ2wuY2FsbCh0aGlzKX07Xy5tKEpLLF8uQ2wpO3ZhciBMSz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1udWxsO18uQ2EoZCkmJihlPXt9LGVbY109ZCk7Yz1uZXcgS0soYixbY10sZSk7Z2woYSk/RGwoYSxiLCExLGMpOkFsKGEsYiwhMSxjKX0sS0s9ZnVuY3Rpb24oYSxiLGMpe3RoaXMudHlwZT1hO3RoaXMuYz1jfHxudWxsfTtfLm0oS0ssXy5jbCk7dmFyIE1LPWZ1bmN0aW9uKGEsYixjKXtTSS5jYWxsKHRoaXMsYSxiP2IuYWEoKTpudWxsKTtpZihiKXthPXRoaXMuZztiLmF8fChiLmE9bmV3IF8uV2wpO2lmKF8uWmwoYi5hLGEpKXRocm93IEVycm9yKCJxYmAiK2IuWmUrImAiK2EpO2lmKHRoaXMuZ2V0UGFyZW50KCkpdGhyb3cgRXJyb3IoInJiYCIrdGhpcy5aZSk7VUkodGhpcyxiKTtiLmEuc2V0KGEsdGhpcyl9aWYodGhpcy5oYT0hIWMpdGhpcy5hYSgpLmMuYS5zZXQodGhpcy5aZSx0aGlzKSx0aGlzLiR6PSgwLF8uVWEpKCl9O18ubShNSyxTSSk7dmFyIFJtYT1uZXcgXy5XbDtfLmc9TUsucHJvdG90eXBlO18uZy5DeD0iVkFMSUQiO18uZy4kej0wO18uZy5HZD1mdW5jdGlvbigpe3ZhciBhPU1LLiQuR2QuY2FsbCh0aGlzKTthfD0yNjt0aGlzLmhhJiYoYXw9MSk7cmV0dXJuIGF9O18uZy5nZXQ9ZnVuY3Rpb24oKXtUSSh0aGlzKTtyZXR1cm4gdGhpcy5ifTsKXy5nLmVxPWZ1bmN0aW9uKCl7VEkodGhpcyk7cmV0dXJuIHRoaXMuYT90aGlzLmE6Um1hfTtfLmcuSHk9ZnVuY3Rpb24oYSl7VEkodGhpcyk7cmV0dXJuIHRoaXMuYT90aGlzLmEuZ2V0KGEpOm51bGx9O3ZhciBISz1mdW5jdGlvbihhKXtUSShhKTtyZXR1cm4gYS5DeH07Xy5nPU1LLnByb3RvdHlwZTtfLmcuSWw9ZnVuY3Rpb24oKXtUSSh0aGlzKTtyZXR1cm4iVkFMSUQiPT1ISyh0aGlzKX07Xy5nLnljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWEoKS55YygpfTtfLmcub2I9ZnVuY3Rpb24oKXtNSy4kLm9iLmNhbGwodGhpcyk7aWYodGhpcy5hKXtmb3IodmFyIGE9dGhpcy5hLlhiKCksYj0wO2I8YS5sZW5ndGg7YisrKWFbYl0uZGlzcG9zZSgpO3RoaXMuYS5jbGVhcigpfWE9dGhpcy5nZXRQYXJlbnQoKTt0aGlzLmFhKCkuYy5hLnJlbW92ZSh0aGlzLlplKTtOSyh0aGlzLG51bGwpO2EmJmEucmVtb3ZlQ2hpbGQodGhpcyl9OwpfLmcucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nO2lmKCF0aGlzLmF8fCFfLlpsKHRoaXMuYSxiKSl0aHJvdyBFcnJvcigic2JgIit0aGlzLlplKyJgIitiKTtVSShhLG51bGwpO3RoaXMuYS5yZW1vdmUoYil9O18uZy5zZXQ9ZnVuY3Rpb24oYSl7VEkodGhpcyk7dGhpcy5DeD0iVkFMSUQiO05LKHRoaXMsYSk7T0sodGhpcyl9Owp2YXIgTks9ZnVuY3Rpb24oYSxiKXsoMCxfLlVhKSgpO2lmKGEuYilpZihhLmIgaW5zdGFuY2VvZiBfLkNsKXt2YXIgYz1hLmY7YyYmYy5ZbyhhLmIsIlkiLGEuTGEpfWVsc2UgXy5PYShhLmIuZXcpJiZhLmIuZXcobnVsbCk7YS5iPWI7YS5iJiYoYS5iIGluc3RhbmNlb2YgXy5DbD8oVEkoYSksYS5mfHwoYS5mPW5ldyBfLkNyKGEpKSxhLmYubGlzdGVuKGEuYiwiWSIsYS5MYSkpOl8uT2EoYS5iLmV3KSYmYS5iLmV3KGEpKX0sT0s9ZnVuY3Rpb24oYSxiKXtUSShhKTt2YXIgYz1hLmFhKCkuZWEsZD1hO2E9YS5aZTtiPV8uQ2EoYik/Yjo2NTUzNTtmb3IodmFyIGU9MDtudWxsIT1kOyl7aWYoIShkLkdkKCkmMzIpKXswPT1lJiZMSyhjLGQuWmUsYSxiKTtpZigxPT1lKXt2YXIgZj1jLGs9ZDtrLndhfHwoay53YT1rLlplKyIvKiIpO0xLKGYsay53YSxhLGIpfTA8ZSYmKGY9YyxrPWQsay53fHwoay53PWsuWmUrIi8uLi4iKSxMSyhmLGsudyxhLGIpKX1kPWQuZ2V0UGFyZW50KCk7ZSsrfX07IE1LLnByb3RvdHlwZS5MYT1mdW5jdGlvbihhKXthLmM/T0sodGhpcyxhLmMpOk9LKHRoaXMpfTsKdmFyIFBLPWZ1bmN0aW9uKGEsYil7TUsuY2FsbCh0aGlzLGEsbnVsbCk7dGhpcy5jPWI7dGhpcy5lYT1uZXcgSkt9O18ubShQSyxNSyk7UEsucHJvdG90eXBlLm9iPWZ1bmN0aW9uKCl7dGhpcy5lYS5kaXNwb3NlKCk7UEsuJC5vYi5jYWxsKHRoaXMpO3RoaXMuYyYmKHRoaXMuYy5kaXNwb3NlKCksdGhpcy5jPW51bGwpfTtQSy5wcm90b3R5cGUuQmE9ITA7UEsucHJvdG90eXBlLnljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307YXQoe1pjOlt7aWQ6emksUWI6RUt9XSxhOltGaV0sYjpmdW5jdGlvbihhKXt2YXIgYj1hLmdldChGaSk7Yj1uZXcgR0soYik7dmFyIGM9bmV3IFBLKCJyb290IixiKTtjLm89YTthPWEuZ2V0KHppKTtpZihhLmEpdGhyb3cgRXJyb3IoIm9iIik7YS5hPWM7aWYoIWIuYil7YT1uZXcgQksoInBiIiwxLDZFNCxiLm8sYik7Yz1iLmY7aWYoYS5hKXRocm93IEVycm9yKCJsYiIpO2EuYT1jO3ZhciBkPSgwLF8uVWEpKCk7YS5mPWQrYS5jO0NLKGEsZCk7Yy5iLnNldChTdHJpbmcoYS5pZCksYSk7Yi5iPWF9fX0pOwphdCh7WmM6W3tpZDpfLnosUWI6Q3QsbXVsdGlwbGU6ITB9XX0pO3ZhciBRSz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmYXVsdFZhbHVlPWE7dGhpcy50eXBlPWI7dGhpcy52YWx1ZT1hfTtRSy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O1FLLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZT1hfTt2YXIgUks9ZnVuY3Rpb24oYSl7UUsuY2FsbCh0aGlzLGEsImIiKX07Xy5tKFJLLFFLKTtSSy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O3ZhciBTSz1mdW5jdGlvbigpe3RoaXMuYT17fTt0aGlzLmI9IiJ9LFNtYT17bVQ6ImsiLGxSOiJjayIsRlM6Im0iLEpSOiJleG0iLHpSOiJleGNtIixtUToiYW0iLGxEOiJydCIsZVM6ImQiLERSOiJlZCIsdlQ6InN2IixxUjoiZGVvYiIsTlE6ImNiIixzVDoicnMiLHBSOiJkayIscFQ6InNkY2gifTtTSy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPSgwLF8ubCkoZnVuY3Rpb24oYil7Xy5DYSh0aGlzLmFbYl0pJiZhLnB1c2goYisiPSIrdGhpcy5hW2JdKX0sdGhpcyk7Yigic2RjaCIpO2IoImsiKTtiKCJjayIpO2IoIm0iKTtiKCJhbSIpO2IoInJ0Iik7ImQiaW4gdGhpcy5hfHxUSyh0aGlzLCJkIiwiMCIpO2IoImQiKTtiKCJkayIpO2IoImV4bSIpO2IoImV4Y20iKTsodGhpcy5hLmV4Y218fHRoaXMuYS5leG0pJiZhLnB1c2goImVkPTEiKTtiKCJycyIpO2IoImNiIik7cmV0dXJuIHRoaXMuYithLmpvaW4oIi8iKX07CnZhciBVSz1mdW5jdGlvbihhLGIpe3JldHVybiBhLmFbYl0/YS5hW2JdOm51bGx9LFRLPWZ1bmN0aW9uKGEsYixjKXtjP2EuYVtiXT1jOmRlbGV0ZSBhLmFbYl19O1NLLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBWSyh0aGlzLnRvU3RyaW5nKCkpfTt2YXIgVks9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFNLLGM9YS5tYXRjaChBbylbNV07Xy4kYihTbWEsZnVuY3Rpb24oYSl7dmFyIGQ9Yy5tYXRjaCgiLyIrYSsiPShbXi9dKykiKTtkJiZUSyhiLGEsZFsxXSl9KTt2YXIgZD0tMSE9YS5pbmRleE9mKCJfL3NzLyIpPyJfL3NzLyI6Il8vanMvIjtiLmI9YS5zdWJzdHIoMCxhLmluZGV4T2YoZCkrZC5sZW5ndGgpO3JldHVybiBifSxXSz1mdW5jdGlvbihhKXthPUJvKENvKDUsYSksITApO3JldHVybiBudWxsIT09YSYmISFhLm1hdGNoKCIoL18vanMvKXwoL18vc3MvKSIpJiYhIWEubWF0Y2goIi9rPSIpfTsKdmFyIFhLPWZ1bmN0aW9uKCl7fTtfLm0oWEssdm8pO1hLLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDtpZigid2l0aENyZWRlbnRpYWxzImluIGEpcmV0dXJuIGE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuWERvbWFpblJlcXVlc3QpcmV0dXJuIG5ldyBZSzt0aHJvdyBFcnJvcigidGIiKTt9O1hLLnByb3RvdHlwZS5vPWZ1bmN0aW9uKCl7cmV0dXJue319Owp2YXIgWUs9ZnVuY3Rpb24oKXt0aGlzLmE9bmV3IHdpbmRvdy5YRG9tYWluUmVxdWVzdDt0aGlzLnJlYWR5U3RhdGU9MDt0aGlzLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3RoaXMucmVzcG9uc2VUZXh0PSIiO3RoaXMuc3RhdHVzPS0xO3RoaXMuc3RhdHVzVGV4dD10aGlzLnJlc3BvbnNlWE1MPW51bGw7dGhpcy5hLm9ubG9hZD0oMCxfLmwpKHRoaXMuZkksdGhpcyk7dGhpcy5hLm9uZXJyb3I9KDAsXy5sKSh0aGlzLiR5LHRoaXMpO3RoaXMuYS5vbnByb2dyZXNzPSgwLF8ubCkodGhpcy5oSSx0aGlzKTt0aGlzLmEub250aW1lb3V0PSgwLF8ubCkodGhpcy5sSSx0aGlzKX07Xy5nPVlLLnByb3RvdHlwZTtfLmcub3Blbj1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9YyYmIWMpdGhyb3cgRXJyb3IoInViIik7dGhpcy5hLm9wZW4oYSxiKX07Cl8uZy5zZW5kPWZ1bmN0aW9uKGEpe2lmKGEpaWYoInN0cmluZyI9PXR5cGVvZiBhKXRoaXMuYS5zZW5kKGEpO2Vsc2UgdGhyb3cgRXJyb3IoInZiIik7ZWxzZSB0aGlzLmEuc2VuZCgpfTtfLmcuYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLmEuYWJvcnQoKX07Xy5nLnNldFJlcXVlc3RIZWFkZXI9ZnVuY3Rpb24oKXt9O18uZy5nZXRSZXNwb25zZUhlYWRlcj1mdW5jdGlvbihhKXtyZXR1cm4iY29udGVudC10eXBlIj09YS50b0xvd2VyQ2FzZSgpP3RoaXMuYS5jb250ZW50VHlwZToiIn07Xy5nLmZJPWZ1bmN0aW9uKCl7dGhpcy5zdGF0dXM9MjAwO3RoaXMucmVzcG9uc2VUZXh0PXRoaXMuYS5yZXNwb25zZVRleHQ7WksodGhpcyw0KX07Xy5nLiR5PWZ1bmN0aW9uKCl7dGhpcy5zdGF0dXM9NTAwO3RoaXMucmVzcG9uc2VUZXh0PSIiO1pLKHRoaXMsNCl9O18uZy5sST1mdW5jdGlvbigpe3RoaXMuJHkoKX07Xy5nLmhJPWZ1bmN0aW9uKCl7dGhpcy5zdGF0dXM9MjAwO1pLKHRoaXMsMSl9OyB2YXIgWks9ZnVuY3Rpb24oYSxiKXthLnJlYWR5U3RhdGU9YjtpZihhLm9ucmVhZHlzdGF0ZWNoYW5nZSlhLm9ucmVhZHlzdGF0ZWNoYW5nZSgpfTtZSy5wcm90b3R5cGUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuImNvbnRlbnQtdHlwZTogIit0aGlzLmEuY29udGVudFR5cGV9Owp2YXIgYkw9ZnVuY3Rpb24oYSl7Xy5Bay5jYWxsKHRoaXMpO3RoaXMuZWE9YTt0aGlzLmM9Qm8oQ28oNSxhKSwhMCl8fCIiO3RoaXMuYj1XSyhhKT9WSyhhKTpudWxsO3RoaXMuY2I9JEsodGhpcy5jLCJ2ZXIiKTt0aGlzLkJhPSRLKHRoaXMuYywiYW0iKTt0aGlzLmc9dGhpcy53PW51bGw7dGhpcy5mPW5ldyBfLkNyKHRoaXMpO3RoaXMuVWE9W107dGhpcy5qYT1bXTt0aGlzLmE9W107dGhpcy5lYj1uZXcgYUw7dGhpcy5vPVtdO3RoaXMuaGE9ITE7YT0oMCxfLmwpKHRoaXMud2EsdGhpcyk7SnQudmVyc2lvbj1hfTtfLm0oYkwsXy5Bayk7dmFyIFRtYT1mdW5jdGlvbihhLGIpe2EuYS5sZW5ndGgmJnltKGIsYS5hW2EuYS5sZW5ndGgtMV0pO2EuYS5wdXNoKGIpO18ud20oYixmdW5jdGlvbigpe18ucGIodGhpcy5hLGIpfSxhKX07CmJMLnByb3RvdHlwZS5KYT1mdW5jdGlvbihhLGIsYyxkLGUsZil7Yj1sYWEoYSwoMCxfLmwpKGZ1bmN0aW9uKGEpe3JldHVybiBfLmxiKHRoaXMuamEsYSl9LHRoaXMpKTt2YXIgaz1iWyExXXx8W107aWYoMDwoYlshMF18fFtdKS5sZW5ndGgpe3RoaXMuamEubGVuZ3RoPTA7aWYodGhpcy5hLmxlbmd0aCl7dmFyIG49dGhpcy5hW3RoaXMuYS5sZW5ndGgtMV07Xy53bSh0aGlzLmksZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8ucG07Xy53bShuLCgwLF8ubCkoYi5jYWxsYmFjayxiKSk7Xy53bShiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KTtyZXR1cm4gYn0sdGhpcyl9dmFyIHA9bmV3IF8ucG07dGhpcy5hLnB1c2gocCk7Xy52bSh0aGlzLmksZnVuY3Rpb24oYSl7d2luZG93LnNldFRpbWVvdXQoKDAsXy5sKShmdW5jdGlvbigpe2NMKGEuY29kZSxhLnVybCxkKSYmMDxrLmxlbmd0aCYmZEwodGhpcyxrLGMsZCxlLGYpO18ucGIodGhpcy5hLHApO3AuY2FsbGJhY2soKTt0aGlzLmk9bnVsbH0sdGhpcyksCjApfSxmdW5jdGlvbihhKXt3aW5kb3cuc2V0VGltZW91dCgoMCxfLmwpKGZ1bmN0aW9uKCl7ZChhKTt0aGlzLmk9bnVsbH0sdGhpcyksMCl9LHRoaXMpfWVsc2UgZEwodGhpcyxhLGMsZCxlLGYpfTsKdmFyIGRMPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmb3IodmFyIGs9W10sbj1uZXcgXy5wbSxwPVtiXSxBPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MCxlPU1hdGguZmxvb3IoYS5sZW5ndGgvYikrMSxmPTA7ZjxiO2YrKyl7dmFyIGs9KGYrMSkqZTtjLnB1c2goYS5zbGljZShkLGspKTtkPWt9cmV0dXJuIGN9LEQ9cC5zaGlmdCgpO0Q7KXt2YXIgRj1lTChhLEQsISFmLCEwKTtpZigyRTM+PUYubGVuZ3RoKXtpZihEPVVtYShhLEQsZikpay5wdXNoKEQpLHltKG4sRC5pYyl9ZWxzZSBwPUEoRCxNYXRoLmNlaWwoRi5sZW5ndGgvMkUzKSkuY29uY2F0KHApO0Q9cC5zaGlmdCgpfXZhciBJPW5ldyBfLnBtO1RtYShhLEkpO18ud20oSSwoMCxfLmwpKGEuTGEsYSxiLGssYyxkLGUpKTtfLk1sKEksZnVuY3Rpb24oKXt2YXIgYT1uZXcgZkw7YS5MYz0hMDthLmVycm9yQ29kZT0tMTt0aGlzLkxhKGIsW2FdLGMsZCxlKX0sYSk7Xy53bShuLGZ1bmN0aW9uKCl7SS5jYWxsYmFjaygpfSk7Cm4uY2FsbGJhY2soKX0sVW1hPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1lTChhLGIsISFjKTthLlVhLnB1c2goZCk7aWYoYS5oYSlhPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJTQ1JJUFQiKSxfLlJxKGEsXy5ndChkKSksYS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLHdpbmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO2Vsc2V7dmFyIGU9bmV3IGZMLGY9bmV3IFFvKDA8YS5vLmxlbmd0aD9uZXcgWEs6dm9pZCAwKTthLmYubGlzdGVuKGYsInN1Y2Nlc3MiLCgwLF8ubCkoZS5nLGUsZikpO2EuZi5saXN0ZW4oZiwiZXJyb3IiLCgwLF8ubCkoZS5vLGUsZikpO2EuZi5saXN0ZW4oZiwidGltZW91dCIsKDAsXy5sKShlLmMsZSkpO0VyKGEuZixmLCJyZWFkeSIsZi5kaXNwb3NlLCExLGYpO2YuU289TWF0aC5tYXgoMCwzRTQpO2EuZWIucmVxdWVzdChmdW5jdGlvbigpe2Yuc2VuZChkKTtyZXR1cm4gZS5pY30pO3JldHVybiBlfXJldHVybiBudWxsfTsKYkwucHJvdG90eXBlLkxhPWZ1bmN0aW9uKGEsYixjLGQsZSl7YT0hMTtjPSExO2Zvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgaz1iW2ZdO2lmKCFuJiZrLkxjKXthPSEwO3ZhciBuPWsuZXJyb3JDb2RlO2JyZWFrfWVsc2Ugay5hJiYoYz0hMCl9dmFyIHA9Xy5yYih0aGlzLmEpOyhhfHxjKSYmLTEhPW4mJih0aGlzLmEubGVuZ3RoPTApO2lmKGEpZCYmZChuKTtlbHNlIGlmKGMpZSYmZSgpO2Vsc2UgZm9yKGY9MDtmPGIubGVuZ3RoO2YrKylrPWJbZl0sY0woay5iLGsuZil8fGQmJmQoODAwMSk7KGF8fGMpJiYtMSE9biYmKDAsXy5hYikocCxmdW5jdGlvbihhKXthLmNhbmNlbCgpfSl9O2JMLnByb3RvdHlwZS5vYj1mdW5jdGlvbigpe3RoaXMuZi5kaXNwb3NlKCk7ZGVsZXRlIEp0LnZlcnNpb247YkwuJC5vYi5jYWxsKHRoaXMpfTtiTC5wcm90b3R5cGUud2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iP1VLKHRoaXMuYiwiayIpOnRoaXMuY2J9Owp2YXIgZUw9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Qm8oQ28oMyxhLmVhKSwhMCk7aWYoMDxhLm8ubGVuZ3RoJiYhXy5sYihhLm8sZSkmJm51bGwhPWUmJndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSE9ZSl0aHJvdyBFcnJvcigieWJgIitlKTthLmI/KGU9YS5iLmNsb25lKCksZGVsZXRlIGUuYS5tLGRlbGV0ZSBlLmEuZXhtLGRlbGV0ZSBlLmEuZWQsZGVsZXRlIGUuYS5kayxUSyhlLCJtIixiLmpvaW4oIiwiKSksYS53JiYoVEsoZSwiY2siLGEudyksYS5nJiZUSyhlLCJycyIsYS5nKSksVEsoZSwicnQiLCJqIiksVEsoZSwiZCIsIjAiKSxhPWUudG9TdHJpbmcoKSk6KGU9KDA8YS5vLmxlbmd0aD9hLmVhOmEuYykubWF0Y2goIiguKi9fL2pzL1teL10rLykiKVsxXSxiPVtiLmpvaW4oIiwiKSwicnQ9aiIsInZlcj0iK2Eud2EoKSwiYW09IisoYS5iP1VLKGEuYiwiYW0iKTphLkJhKV0sKGE9YS5iP1VLKGEuYiwicnMiKTokSyhhLmMsInJzIikpJiZiLnB1c2goInJzPSIrYSksYT1lK2Iuam9pbigiLyIpKTsKYyYmKGErPSI/eng9IitRYigpKTtkJiZfLkFiKGEsIi8iKSYmKGE9RW8od2luZG93LmRvY3VtZW50LmxvY2F0aW9uLmhyZWYpK2EpO3JldHVybiBhfSxjTD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9IiI7aWYoMTxhLmxlbmd0aCYmIlxuIj09PWEuY2hhckF0KGEubGVuZ3RoLTEpKXt2YXIgZT1hLmxhc3RJbmRleE9mKCJcbiIsYS5sZW5ndGgtMik7MDw9ZSYmKGQ9YS5zdWJzdHJpbmcoZSsxLGEubGVuZ3RoLTEpKX1pZihfLkNiKGQsIkdvb2dsZSBJbmMuIil8fF8uQWIoZCwiLy8jIHNvdXJjZU1hcHBpbmdVUkw9IikpdHJ5e1dhKGErIlxyXG4vLyMgc291cmNlVVJMPSIrYil9Y2F0Y2goZil7cmV0dXJuIGMmJmMoODAwMSksITF9ZWxzZSByZXR1cm4gYyYmYyg4MDAxKSwhMTtyZXR1cm4hMH0sZ0w9ZnVuY3Rpb24oYSl7dmFyIGI9Qm8oQ28oNSxhKSwhMCl8fCIiO3JldHVybiBXSyhiKXx8Xy5LYihiLCIvXy9qcy8iKSYmJEsoYiwidmVyIikmJiRLKGIsImFtIik/YTpudWxsfSxmTD1mdW5jdGlvbigpe3RoaXMuaWM9Cm5ldyBfLnBtO3RoaXMuZj10aGlzLmI9IiI7dGhpcy5MYz0hMTt0aGlzLmVycm9yQ29kZT0wO3RoaXMuYT0hMX07ZkwucHJvdG90eXBlLmc9ZnVuY3Rpb24oYSl7dGhpcy5iPSRvKGEpO3RoaXMuZj1TdHJpbmcoYS5NcSk7dGhpcy5pYy5jYWxsYmFjaygpfTtmTC5wcm90b3R5cGUubz1mdW5jdGlvbihhKXt0aGlzLkxjPSEwO3RoaXMuZXJyb3JDb2RlPWEuZmIoKTt0aGlzLmljLmNhbGxiYWNrKCl9O2ZMLnByb3RvdHlwZS5jPWZ1bmN0aW9uKCl7dGhpcy5hPSEwO3RoaXMuaWMuY2FsbGJhY2soKX07dmFyIGFMPWZ1bmN0aW9uKCl7dGhpcy5hPTA7dGhpcy5iPVtdfTthTC5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbihhKXt0aGlzLmIucHVzaChhKTtoTCh0aGlzKX07IHZhciBoTD1mdW5jdGlvbihhKXtmb3IoOzU+YS5hJiZhLmIubGVuZ3RoOylWbWEoYSxhLmIuc2hpZnQoKSl9LFZtYT1mdW5jdGlvbihhLGIpe2EuYSsrO18ud20oYigpLGZ1bmN0aW9uKCl7dGhpcy5hLS07aEwodGhpcyl9LGEpfSwkSz1mdW5jdGlvbihhLGIpe3JldHVybihhPWEubWF0Y2goIi8iK2IrIj0oW14vXSspIikpP2FbMV06bnVsbH07CnZhciBpTD1uZXcgUksoITEpLFdtYT13aW5kb3cuZG9jdW1lbnQubG9jYXRpb24uaHJlZjsKYXQoe2Y6e2RtbDppTH0sVWM6ZnVuY3Rpb24oYSl7dmFyIGI9aUwuZ2V0KCksYz0iIixkPSIiO3dpbmRvdyYmd2luZG93Ll9GX2Nzc1Jvd0tleSYmKGM9d2luZG93Ll9GX2Nzc1Jvd0tleSx3aW5kb3cuX0ZfY29tYmluZWRTaWduYXR1cmUmJihkPXdpbmRvdy5fRl9jb21iaW5lZFNpZ25hdHVyZSkpO2lmKGMmJiJmdW5jdGlvbiIhPT10eXBlb2Ygd2luZG93Ll9GX2luc3RhbGxDc3MpdGhyb3cgRXJyb3IoIndiIik7dmFyIGUsZj1fLmguX0ZfanNVcmw7ZiYmKGU9Z0woZikpOyFlJiYoZj13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJhc2UtanMiKSkmJihlPWYuc3JjP2Yuc3JjOmYuZ2V0QXR0cmlidXRlKCJocmVmIiksZT1nTChlKSk7ZXx8KGU9Z0woV21hKSk7ZXx8KGU9d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxlPWdMKGVbZS5sZW5ndGgtMV0uc3JjKSk7aWYoIWUpdGhyb3cgRXJyb3IoInhiIik7ZT1uZXcgYkwoZSk7YyYmKGUudz0gYyk7ZCYmKGUuZz1kKTtlLmhhPWI7Yj1fLkxzLlNiKCk7Yi5KYT1lO2IuaGE9ITA7Yj1fLkxzLlNiKCk7Yi53PWE7TXMoYik7YS5MYT1ifX0pOwphdCh7WmM6W3tpZDpEaSxRYjpmdW5jdGlvbigpe3RoaXMuYT1uZXcgWHB9fSx7aWQ6RWksUWI6d3N9XSxVYzpmdW5jdGlvbihhKXthLmdldChFaSkuVWMoYSl9fSk7YXQoe1pjOlt7aWQ6TGksUWI6WUl9XSxhOltFaV19KTt2YXIgakw9ZnVuY3Rpb24oYSl7dGhpcy5vPWE7dGhpcy5mPXt9O3RoaXMuZz17fTt0aGlzLnc9e307dGhpcy5iPW5ldyBfLnhuKFhtYSk7dGhpcy5iLmFkZEFsbChfLmRjKG9nYSkpO3RoaXMuYz1uZXcgXy54bjt0aGlzLkpiPXt9O3RoaXMuYT1bXX0sWG1hPVsiaGwiLCJnbCJdO2pMLnByb3RvdHlwZS5VYz1mdW5jdGlvbihhKXthJiZ0aGlzLmIuYWRkQWxsKGEpO2N0KGZ1bmN0aW9uKGEpe2EuZiYmdGhpcy5iLmFkZEFsbChfLmVjKGEuZikpO2lmKGEuaGlzdG9yeSl7Zm9yKHZhciBiPWEuaGlzdG9yeS5ZTixkPWEuaGlzdG9yeS5wYXJhbWV0ZXJzLGU9YS5oaXN0b3J5LldPLGY9ZS5sZW5ndGgtMTswPD1mOy0tZil0aGlzLndbZVtmXV09Yix0aGlzLmdbZVtmXV09ZDthPWEudmlld3M7Zm9yKGY9YS5sZW5ndGgtMTswPD1mOy0tZil0aGlzLmZbYVtmXS50eXBlXT1iO2QmJnRoaXMuYy5hZGRBbGwoZCl9fSx0aGlzKX07CmpMLnByb3RvdHlwZS5RYz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmZbYS52aWV3XTsoXy5EYShiKXx8YiBpbnN0YW5jZW9mIHdpKSYmdGhpcy5vLmdldChiKTt2YXIgYz11RlthLnZpZXddLlFjKGEuU18pO3ZhciBkPVtdO2I9e307Xy5NYShjKT9kPWM6Xy5QYShjKSYmKGQ9Yy5wYXRofHxbXSxUYShiLGEuY058fHt9KSxUYShiLGMuY04pKTtjPWQuam9pbigiLyIpLnJlcGxhY2UoL1wvJC8sIiIpO2Zvcih2YXIgZSBpbiBiKWM9Xy5NbyhjLF8uSWIoZSksYltlXSk7ZT1jO3RoaXMuSmJbZV0mJl8ucGIodGhpcy5hLGUpO2Zvcih0aGlzLmEucHVzaChlKTs0MDx0aGlzLmEubGVuZ3RoOylkZWxldGUgdGhpcy5KYlt0aGlzLmEuc2hpZnQoKV07dGhpcy5KYltjXT1hO3JldHVybiBjfTsKdmFyIGtMPWZ1bmN0aW9uKGEpe3RoaXMubz1hO3RoaXMuYj17fTt0aGlzLmE9e319O2tMLnByb3RvdHlwZS5VYz1mdW5jdGlvbigpe2N0KGZ1bmN0aW9uKGEpe2lmKGEudmlld3MpZm9yKHZhciBiPTA7YjxhLnZpZXdzLmxlbmd0aDsrK2Ipe3ZhciBjPWEudmlld3NbYl07aWYoYy5TRil7dmFyIGQ9Yy50eXBlO2lmKHRoaXMuYVtkXSl0aHJvdyBFcnJvcigiQWJgIitkKTt0aGlzLmFbZF09Yy5TRn1kPXRoaXMubzt2YXIgZT1jLlZwO2lmKCEoZC5mW2VdfHxkLmdbZV18fChlIGluc3RhbmNlb2Ygd2k/ZS5WazpkLm9bZV0pKSlpZihjLlFiKWQ9bmV3IGMuUWIodGhpcy5vKSxjbyh0aGlzLm8sYy5WcCxkKTtlbHNle2Q9dGhpcy5vO2U9Yy5WcDt2YXIgZj1jLlBsO2UgaW5zdGFuY2VvZiB3aSYmKGUuVms9Zik7ZC5vW2VdPWZ9ZD1jLnR5cGU7aWYodGhpcy5iW2RdKXRocm93IEVycm9yKCJ6YmAiK2QpO3RoaXMuYltkXT1jLlZwfX0sdGhpcyl9OwphdCh7WmM6W3tpZDpDaSxRYjpqTH0se2lkOkppLFFiOmtMfV0sVWM6ZnVuY3Rpb24oYSl7YS5nZXQoQ2kpLlVjKCk7YS5nZXQoSmkpLlVjKCl9fSk7Xy5sTD0hMTtfLm1MPWZ1bmN0aW9uKGEpe3RoaXMuYT1hP25ldyBfLlN3KGEpOm5ldyBfLlJ3KFtdKX07Xy5uTD1mdW5jdGlvbihhKXthLmEuc2l6ZSgpJiZhLmEuZm9jdXMoKX07Xy5tTC5wcm90b3R5cGUucmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTt2YXIgb0w9ZnVuY3Rpb24oKXt9O29MLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXt9O29MLnByb3RvdHlwZS5JYj1mdW5jdGlvbigpe307Xy52eChvTCxfLk96LE56KTt2YXIgcUwsckwsc0wsdEwsdUwsdkwsWW1hLHdMLFptYSx5TCx6TCxBTCwkbWEsREw7CihmdW5jdGlvbigpe2Zvcih2YXIgYT1bIm1zIiwibW96Iiwid2Via2l0IiwibyJdLGI9MDtiPGEubGVuZ3RoJiYhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsrK2Ipd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT13aW5kb3dbYVtiXSsiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0sd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lPXdpbmRvd1thW2JdKyJDYW5jZWxBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbYVtiXSsiQ2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl07aWYoIXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpe3ZhciBjPTA7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT1mdW5jdGlvbihhKXt2YXIgYj0obmV3IERhdGUpLmdldFRpbWUoKSxkPU1hdGgubWF4KDAsMTYtKGItYykpO2M9YitkO3JldHVybiB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2EoYitkKX0sZCl9O3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZXx8KHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZT0KZnVuY3Rpb24oYSl7KDAsd2luZG93LmNsZWFyVGltZW91dCkoYSl9KX19KSgpO18ucEw9ZnVuY3Rpb24oKXt9O3FMPVtbXSxbXV07ckw9MDtzTD0hMTt0TD0wO3VMPTE7dkw9MTY7W
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment