Q2lwaGVycxs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnZhciB0ZXN0cz1bCi8vIFJD NApbWycwMDAxMDIwMzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZicsCiAgJzAwMTEyMjMzNDQ1NTY2 Nzc4ODk5YWFiYmNjZGRlZWZmJywKICAnZTk4ZDYyY2EwM2I3N2ZiYjhlNDIzZDdkYzIwMGM0YjAn LAogIDddXSwKLy8gUkM0YQpbXSwKLy8gQUVTZQpbWycwMDAxMDIwMzA0MDUwNjA3MDgwOTBhMGIw YzBkMGUwZicsCiAgJzAwMTEyMjMzNDQ1NTY2Nzc4ODk5YWFiYmNjZGRlZWZmJywKICAnNjljNGUw ZDg2YTdiMDQzMGQ4Y2RiNzgwNzBiNGM1NWEnLAogIDNdLAogWycwMDAxMDIwMzA0MDUwNjA3MDgw OTBhMGIwYzBkMGUwZjEwMTExMjEzMTQxNTE2MTcnLAogICcwMDExMjIzMzQ0NTU2Njc3ODg5OWFh YmJjY2RkZWVmZicsCiAgJ2RkYTk3Y2E0ODY0Y2RmZTA2ZWFmNzBhMGVjMGQ3MTkxJywKICAzXSwK IFsnMDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYxMDExMTIxMzE0MTUxNjE3MTgxOTFh MWIxYzFkMWUxZicsCiAgJzAwMTEyMjMzNDQ1NTY2Nzc4ODk5YWFiYmNjZGRlZWZmJywKICAnOGVh MmI3Y2E1MTY3NDViZmVhZmM0OTkwNGI0OTYwODknLAogIDNdXSwKLy8gQUVTYwpbXSwKLy8gU1JQ ZQpbWycwMDExMjIzMzQ0NTU2Njc3ODg5OWFhYmJjY2RkZWVmZicsCiAgJzAxMjM0NTY3ODlhYmNk ZWZmZWRjYmE5ODc2NTQzMjEwJywKICAnOTI5ZGQ4OTBkY2M4ODFjOWE3ZDhiOTRiMGFhMGJhZDUn LAogIDNdLAogWycwMDExMjIzMzQ0NTU2Njc3ODg5OWFhYmJjY2RkZWVmZmZmZWVkZGNjYmJhYTk5 ODgnLAogICcwMTIzNDU2Nzg5YWJjZGVmZmVkY2JhOTg3NjU0MzIxMCcsCiAgJzlhODczNDEwYzdh NDA0ZjQyYjgwMjBiNzQyMDg4NmRhJywKICAzXSwKIFsnMDAxMTIyMzM0NDU1NjY3Nzg4OTlhYWJi Y2NkZGVlZmZmZmVlZGRjY2JiYWE5OTg4Nzc2NjU1NDQzMzIyMTEwMCcsCiAgJzAxMjM0NTY3ODlh YmNkZWZmZWRjYmE5ODc2NTQzMjEwJywKICAnY2E3ZmExOTNlM2ViOWU5OWJkODdlM2FmM2M5YWRm OTMnLAogIDNdXSwKLy8gU1JQYwpbXSwKLy8gVEZTZQpbWyczNGM4YTVmYjJkM2QwOGExNzBkMTIw YWM2ZDI2ZGJmYScsCiAgJzI4NTMwYjM1OGMxYjQyZWYyNzdkZTZkNDQwN2ZjNTkxJywKICAnOGE4 YWI5ODMzMTBlZDc4YzhjMGVjZGUwMzBiOGRjYTQnLAogIDNdLAogWydhZTgxMDliZmRhODVjMWYy YzUwMzhiMzRlZDY5MWJmZjNhZjZmN2NlNWJkMzVlZjEnLAogICc4OTNmZDY3Yjk4YzU1MDA3MzU3 MWJkNjMxMjYzZmM3OCcsCiAgJzE2NDM0ZmM5Yzg4NDFhNjNkNTg3MDBiNTU3OGU4ZjY3JywKICAz XSwKIFsnZGMwOTZiY2Q5OWZjNzJmNzk5MzZkNGM3NDhlNzVhZjc1YWI2N2E1Zjg1MzlhNGE1ZmQ5 ZjAzNzNiYTQ2MzQ2NicsCiAgJ2M1YTNlN2NlZTBmMWI3MjYwNTI4YTY4ZmI0ZWEwNWYyJywKICAn NDNkNWNlYzMyN2IyNGFiOTBhZDM0YTc5ZDA0NjkxNTEnLAogIDNdXSwKLy8gVEZTYwpbXSwKLy8g Q1NSCltbJzAwMDEwMjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmJywKICAnMDAxMTIyMzM0NDU1 NjY3Nzg4OTlhYWJiY2NkZGVlZmYnLAogICcwMDEyMjQzNjQ4NWE2YzdlOTBhMmI0YzZkOGVhZmMw ZScsCiAgN11dLAovLyBTV1AKW1snJywKICAnMDAxMTIyMzM0NDU1NjY3Nzg4OTlhYWJiY2NkZGVl ZmYnLAogICcwMDExNTVhYTY2ODhjY2RkNzc5OTIyZmZiYmVlMzM0NCcsCiAgN10sCiBbJzAwMDEw MjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmJywKICAnMDAxMTIyMzM0NDU1NjY3Nzg4OTlhYWJi Y2NkZGVlZmYnLAogICcwMDEyNTdhZDY4NWVhOTZlZWUzMTg3OWEyOGVkYWQ3ZScsCiAgN11dLAov LyBSU0EKW1snMDMwMDAxMDAwMTFkNDYxZjAzJywKICAnMDAxMTIyMzM0NDU1NjY3Nzg4OTlhYWJi Y2NkZGVlZmYnLAogICcyZjMwMTU4MDFlODNkNWQ5YzA1OTY4YzAwOTQ0NjMzZGY2NDlhZTAxJywK ICA1XSwKIFsnMDMwMGI1MzlkNjFkNDYxZjAzJywKICAnMDAxMTIyMzM0NDU1NjY3Nzg4OTlhYWJi Y2NkZGVlZmYnLAogICcyZjMwMTU4MDFlODNkNWQ5YzA1OTY4YzAwOTQ0NjMzZGY2NDlhZTAxJywK ICA2XSwKIFsnMDMwMDAxMDAwMTA3NjJhODA0JywKICAnMDAxMTIyMzM0NDU1NjY3Nzg4OTlhYWJi Y2NkZGVlZmYnLAogICcxOWUyMDgyYWJkZDk5YmViYzJhZDNjOTFlNjM3MDE1NDNkYjAwMGNiMDAn LAogIDVdLAogWycwNDAwZTllOGZiMDEwNzYyYTgwNCcsCiAgJzAwMTEyMjMzNDQ1NTY2Nzc4ODk5 YWFiYmNjZGRlZWZmJywKICAnMTllMjA4MmFiZGQ5OWJlYmMyYWQzYzkxZTYzNzAxNTQzZGIwMDBj YjAwJywKICA2XV0sCi8vIEJhc2U2NApbWycnLAogICc2NWMzYTllMjgyYWNlMjg4OWEnLAogICda Y09wNG9LczRvaWEnLAogIDddXSwKLy8gVVRGLTgKW1snJywKICBTdHJpbmcuZnJvbUNoYXJDb2Rl KDB4NjUsMHhFOSwweDIwQUMsMHgyMjFBKSwKICAnNjVjM2E5ZTI4MmFjZTI4ODlhJywKICA3XV0K XTsKCmZ1bmN0aW9uIGZyb21IZXgoIHMgKXsKICB2YXIgciA9IG5ldyBBcnJheTsKICBzID0gcy5y ZXBsYWNlKC8weC9nLCcnKQogICAgICAgLnJlcGxhY2UoL1ssXHNeXShbMC05QS1GXSlbLFxzJF0v ZywgJzAkMScpCiAgICAgICAucmVwbGFjZSgvXHMvZywnJyk7CiAgZm9yICggdmFyIGk9MDsgaTxz Lmxlbmd0aDsgaSs9MiApIHJbci5sZW5ndGhdID0gcGFyc2VJbnQoIHMuc3Vic3RyKGksMiksIDE2 ICk7CiAgcmV0dXJuIHI7Cn0KCmZ1bmN0aW9uIHRvSGV4KCBhICl7CiAgdmFyIHMgPSAnJzsKICBm b3IgKCB2YXIgaT0wOyBpPGEubGVuZ3RoOyBpKysgKQogICAgcyArPSAoYVtpXT09bnVsbCkgPyAn bnVsbCcgOiAoKGFbaV08MTY/IjAiOiIiKSthW2ldLnRvU3RyaW5nKDE2KSk7CiAgcmV0dXJuIHM7 Cn0KCmZ1bmN0aW9uIGdldFNlbENpcGhlcigpeyB3aXRoICh3aW5kb3cucGFyZW50LmdldEVsKHdp bmRvdywgImNpcGhlciIpKXsKICByZXR1cm4gb3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZTsK fSB9CgpmdW5jdGlvbiBlbmFibGVUZXN0cygpewogIHZhciBwID0gd2luZG93LnBhcmVudDsKICB2 YXIgY2lwaGVyID0gcC5nZXRFbCh3aW5kb3csICJjaXBoZXIiKS5zZWxlY3RlZEluZGV4OwogIGZv ciAodmFyIGk9MDsgaTw0OyBpKyspIHAuZ2V0RWwod2luZG93LCJ0ZXN0IitpICkuZGlzYWJsZWQ9 aT49dGVzdHNbY2lwaGVyXS5sZW5ndGg7Cn0KCmZ1bmN0aW9uIHNldFRlc3QobnIpewogIHZhciBw ID0gd2luZG93LnBhcmVudDsKICB2YXIgY2lwaGVyID0gcC5nZXRFbCh3aW5kb3csICJjaXBoZXIi KS5zZWxlY3RlZEluZGV4OwogIHZhciBjdHJsID0gdGVzdHNbY2lwaGVyXVtucl1bM10KICBwLmdl dEVsKCB3aW5kb3csICJrZXkiICkudmFsdWUgPSB0ZXN0c1tjaXBoZXJdW25yXVswXTsKICBwLmdl dEVsKCB3aW5kb3csICJwbGFpblRleHQiICkudmFsdWUgPSB0ZXN0c1tjaXBoZXJdW25yXVsxXTsK ICBwLmdldEVsKCB3aW5kb3csICJjaXBoZXJUZXh0IiApLnZhbHVlID0gdGVzdHNbY2lwaGVyXVtu cl1bMl07CiAgcC5nZXRFbCggd2luZG93LCAiZW5jcnlwdCIgKS5kaXNhYmxlZCA9ICEoY3RybCYx KTsKICBwLmdldEVsKCB3aW5kb3csICJkZWNyeXB0IiApLmRpc2FibGVkID0gIShjdHJsJjIpOwog IHAuZ2V0RWwoIHdpbmRvdywgImxlbkluZCIgKS5jaGVja2VkID0gcC5sZW5JbmQgPSBjdHJsJjQ7 Cn0KCmZ1bmN0aW9uIGRlY3J5cHQoKXsgd2l0aCh3aW5kb3cucGFyZW50KXsKICBzRGF0YSA9IGdl dEVsKCBmclRvcCwgImNpcGhlclRleHQiICkudmFsdWU7CiAgYkRhdGEgPSBmcm9tSGV4KCBnZXRF bChmclRvcCwgImNpcGhlclRleHQiKS52YWx1ZSApOwogIGtleSAgID0gZnJvbUhleCggZ2V0RWwo ZnJUb3AsICJrZXkiKS52YWx1ZSApOwogIGkgPSB0b3QgPSAwOwogIGNtZEZhaWwgPSBuZXcgRnVu Y3Rpb24oICdlJywgY21kRlN0YXQrJ21ha2VCb3R0b21Ocm0oKTsnICk7CiAgY21kcy5wdXNoKCBn ZXRTZWxDaXBoZXIoKSsnRGVjcnlwdCgpOycsCiAgICAnZ2V0RWwoZnJUb3AsICJwbGFpblRleHQi KS52YWx1ZSA9IChmclRvcC5nZXRTZWxDaXBoZXIoKT09InV0ZjgiKSA/JwogICAgICAgKydzRGF0 YSA6IGZyVG9wLnRvSGV4KCBiRGF0YSApOycsCiAgICAnbWFrZUJvdHRvbU5ybSgpOycgKTsKICBk b0NtZHMoKTsKfSB9CgpmdW5jdGlvbiBlbmNyeXB0KCl7IHdpdGgod2luZG93LnBhcmVudCl7CiAg c0RhdGE9Z2V0RWwoZnJUb3AsICJwbGFpblRleHQiKS52YWx1ZTsKICBiRGF0YT1mcm9tSGV4KGdl dEVsKGZyVG9wLCAicGxhaW5UZXh0IikudmFsdWUpOwogIGtleSAgPWZyb21IZXgoZ2V0RWwoZnJU b3AsICJrZXkiKS52YWx1ZSk7CiAgaT10b3Q9MDsKICBjbWRGYWlsID0gbmV3IEZ1bmN0aW9uKCAn ZScsIGNtZEZTdGF0KydtYWtlQm90dG9tTnJtKCk7JyApOwogIGNtZHMucHVzaChnZXRTZWxDaXBo ZXIoKSsnRW5jcnlwdCgpOycsCiAgICAnZ2V0RWwoZnJUb3AsICJjaXBoZXJUZXh0IikudmFsdWUg PSAoZnJUb3AuZ2V0U2VsQ2lwaGVyKCk9PSJiNjQiKSA/JwogICAgICAgKydzRGF0YSA6IGZyVG9w LnRvSGV4KCBiRGF0YSApOycsCiAgICAnbWFrZUJvdHRvbU5ybSgpOycgKTsKICBkb0NtZHMoKTsK fSB9CjwvU0NSSVBUPgoKPFRBQkxFIHN0eWxlPSJ3aWR0aDoxMDAlIj4KPENPTCBzdHlsZT0id2lk dGg6YXV0byI+PENPTCBzdHlsZT0id2lkdGg6MTAwJSI+CjxUUj4KICA8VEQ+S2V5OjwvVEQ+CiAg PFREPjxURVhUQVJFQSBpZD0ia2V5IiBzdHlsZT0id2lkdGg6MTAwJSIgY29scz0xNyByb3dzPTI+ PC9URVhUQVJFQT48L1REPgo8L1RSPgo8VFI+CiAgPFREPlBsYWluIFRleHQ6PC9URD4KICA8VEQ+ PFRFWFRBUkVBIGlkPSJwbGFpblRleHQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBjb2xzPTE3IHJvd3M9 Mj48L1RFWFRBUkVBPjwvVEQ+CjwvVFI+CjxUUj4KICA8VEQ+Q2lwaGVyIFRleHQ6PC9URD4KICA8 VEQ+PFRFWFRBUkVBIGlkPSJjaXBoZXJUZXh0IiBzdHlsZT0id2lkdGg6MTAwJSIgY29scz0xNyBy b3dzPTI+PC9URVhUQVJFQT48L1REPgo8L1RSPgo8L1RBQkxFPgoKPFAgc3R5bGU9InRleHQtYWxp Z246Y2VudGVyOyBtYXJnaW46MC4xZW0iPgo8SU5QVVQgdHlwZT0iYnV0dG9uIiBpZD0iZW5jcnlw dCIgdmFsdWU9IkVuY3J5cHQiIG9uY2xpY2s9ImVuY3J5cHQoKTsiPgo8SU5QVVQgdHlwZT0iYnV0 dG9uIiBpZD0iZGVjcnlwdCIgdmFsdWU9IkRlY3J5cHQiIG9uY2xpY2s9ImRlY3J5cHQoKTsiPgo8 U1BBTiBzdHlsZT0id2hpdGUtc3BhY2U6bm9XcmFwIj4KbGVuSW5kOiA8SU5QVVQgaWQ9Imxlbklu ZCIgdHlwZT0iY2hlY2tib3giIG9uY2xpY2s9IndpbmRvdy5wYXJlbnQubGVuSW5kPXRoaXMuY2hl Y2tlZDsiPgo8L1A+CjwvUD48UCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbjowLjFl bSI+CjxTRUxFQ1QgaWQ9ImNpcGhlciIgb25jaGFuZ2U9ImVuYWJsZVRlc3RzKCkiPgogIDxPUFRJ T04gdmFsdWU9InJjNCI+UkM0PC9PUFRJT04+CiAgPE9QVElPTiB2YWx1ZT0icmM0YSI+UkM0YTwv T1BUSU9OPgogIDxPUFRJT04gdmFsdWU9ImFlc2UiPkFFU2U8L09QVElPTj4KICA8T1BUSU9OIHZh bHVlPSJhZXNjIj5BRVNjPC9PUFRJT04+CiAgPE9QVElPTiB2YWx1ZT0ic3JwZSI+U1JQZTwvT1BU SU9OPgogIDxPUFRJT04gdmFsdWU9InNycGMiPlNSUGM8L09QVElPTj4KICA8T1BUSU9OIHZhbHVl PSJ0ZnNlIj5URlNlPC9PUFRJT04+CiAgPE9QVElPTiB2YWx1ZT0idGZzYyI+VEZTYzwvT1BUSU9O PgogIDxPUFRJT04gdmFsdWU9ImNzciI+Q1NSPC9PUFRJT04+CiAgPE9QVElPTiB2YWx1ZT0ic3dw Ij5TV1A8L09QVElPTj4KICA8T1BUSU9OIHZhbHVlPSJyc2EiPlJTQTwvT1BUSU9OPgogIDxPUFRJ T04gdmFsdWU9ImI2NCI+QmFzZTY0PC9PUFRJT04+CiAgPE9QVElPTiB2YWx1ZT0idXRmOCI+VVRG LTg8L09QVElPTj4KPC9TRUxFQ1Q+CjwvUD48UCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7IG1h cmdpbjowLjFlbSI+CjxJTlBVVCB0eXBlPSJidXR0b24iIGlkPSJ0ZXN0MCIgdmFsdWU9InRlc3Qx IiBvbmNsaWNrPSJzZXRUZXN0KDApIj4KPElOUFVUIHR5cGU9ImJ1dHRvbiIgaWQ9InRlc3QxIiB2 YWx1ZT0idGVzdDIiIG9uY2xpY2s9InNldFRlc3QoMSkiPgo8SU5QVVQgdHlwZT0iYnV0dG9uIiBp ZD0idGVzdDIiIHZhbHVlPSJ0ZXN0MyIgb25jbGljaz0ic2V0VGVzdCgyKSI+CjxJTlBVVCB0eXBl PSJidXR0b24iIGlkPSJ0ZXN0MyIgdmFsdWU9InRlc3Q0IiBvbmNsaWNrPSJzZXRUZXN0KDMpIj4K PElOUFVUIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkMiIG9uY2xpY2s9InZhciBwPXdpbmRvdy5wYXJl bnQ7CiAgcC5nZXRFbCh3aW5kb3csJ2tleScpLnZhbHVlPXAuZ2V0RWwod2luZG93LCdwbGFpblRl eHQnKS52YWx1ZT1wLmdldEVsKHdpbmRvdywnY2lwaGVyVGV4dCcpLnZhbHVlPScnOwogIHAuZ2V0 RWwod2luZG93LCdlbmNyeXB0JykuZGlzYWJsZWQ9cC5nZXRFbCh3aW5kb3csJ2RlY3J5cHQnKS5k aXNhYmxlZD1mYWxzZTsiPgo8L1A+Cgo8UD4KCjxTQ1JJUFQgdHlwZT0idGV4dC9qYXZhc2NyaXB0 Ij4Kd2luZG93LnBhcmVudC5nZXRFbCh3aW5kb3csJ2xlbkluZCcpLmNoZWNrZWQ9d2luZG93LnBh cmVudC5sZW5JbmQ7CmVuYWJsZVRlc3RzKCk7CgpmdW5jdGlvbiBmcm9tRGVjKCl7IHdpdGggKHdp bmRvdy5wYXJlbnQpewogIGlmIChpPT0wKXsgdG90PXNEYXRhLmxlbmd0aDsgYkRhdGE9WzBdOyB9 CiAgYkRhdGEgPSBiUGx1c0lzKCBzYk11bCgxMCxiRGF0YSksIFtwYXJzZUludChzRGF0YS5zdWJz dHIoaSsrLDEpLDEwKV0gKTsKfX0KCmZ1bmN0aW9uIHRvRGVjKCl7IHdpdGggKHdpbmRvdy5wYXJl bnQpewogIGlmIChpPT0wKXsgdG90PWJHZXROckJpdHMoYkRhdGEpOyBzRGF0YT0nJzsgfQogIHZh ciBxID0gYkRpdiggYkRhdGEsIFsxMF0gKTsKICBiRGF0YSA9IHFbMF07CiAgc0RhdGEgPSBxWzFd LnRvU3RyaW5nKDEwKSArIHNEYXRhOwogIGlmICggYkRhdGEubGVuZ3RoPT0xICYmIGJEYXRhWzBd PT0wICkgaSA9IHRvdDsKICBlbHNlIGkgPSB0b3QtYkdldE5yQml0cyhiRGF0YSk7Cn19CgpmdW5j dGlvbiByc2FTZXRLZXlzKGI2NCxoZXgsZXhwLG1vZCl7CiAgd2l0aCAod2luZG93LnBhcmVudCl7 CiAgICBpPXRvdD0wOwogICAgY21kRmFpbCA9IG5ldyBGdW5jdGlvbiggJ2UnLCBjbWRGU3RhdCsn bWFrZUJvdHRvbU5ybSgpOycgKTsKICB9CiAgaWYgKGI2NCkgd2luZG93LnBhcmVudC5zZXRLZXko YjY0LHRydWUpOyAKICBlbHNlIGlmIChoZXgpIHdpbmRvdy5wYXJlbnQua2V5PWZyb21IZXgoaGV4 KTsKICBlbHNlIGlmIChleHAmJm1vZCkgd2luZG93LnBhcmVudC5jbWRzLnB1c2goCiAgICAgICdz RGF0YT0iJytleHArJyInLCAncHJncj0iRXhwRnJvbURlYyInLCAnZnJUb3AuZnJvbURlYygpJwog ICAgICwnYkRhdGE9YlRvQnl0ZXMoYkRhdGEpJwogICAgICwna2V5PVtiRGF0YS5sZW5ndGgmMHhG RixiRGF0YS5sZW5ndGg+PjhdLmNvbmNhdChiRGF0YSknCiAgICAgLCdzRGF0YT0iJyttb2QrJyIn LCAncHJncj0iTW9kRnJvbURlYyInLCAnZnJUb3AuZnJvbURlYygpJwogICAgICwnYkRhdGE9YlRv Qnl0ZXMoYkRhdGEpJwogICAgICwna2V5PWtleS5jb25jYXQoYkRhdGEpJyApOwogIGlmIChiNjR8 fGhleHx8KGV4cCYmbW9kKSl7CiAgICB3aW5kb3cucGFyZW50LmNtZHMucHVzaCgKICAgICAgJ2dl dEVsKCBmclRvcCwgInJzYUI2NEtleSIgKS52YWx1ZSA9IGJ5dGVzVG9CNjQoa2V5KScKICAgICAs J2dldEVsKCBmclRvcCwgInJzYUhleEtleSIgKS52YWx1ZSA9IGZyVG9wLnRvSGV4KGtleSk7Jwog ICAgICwnYkRhdGEgPSBrZXkuc2xpY2UoMiwgMitrZXlbMF0rMjU2KmtleVsxXSknLCAnYkRhdGEg PSBiRnJvbUJ5dGVzKGJEYXRhKScKICAgICAsJ3ByZ3I9IkV4cFRvRGVjIicsICdmclRvcC50b0Rl YygpJwogICAgICwnZ2V0RWwoIGZyVG9wLCAicnNhRXhwIiApLnZhbHVlID0gc0RhdGE/c0RhdGE6 IjAiJwogICAgICwnYkRhdGEgPSBrZXkuc2xpY2UoMitrZXlbMF0rMjU2KmtleVsxXSknLCAnYkRh dGEgPSBiRnJvbUJ5dGVzKGJEYXRhKScKICAgICAsJ3ByZ3I9Ik1vZFRvRGVjIicsICdmclRvcC50 b0RlYygpJwogICAgICwnZ2V0RWwoIGZyVG9wLCAicnNhTW9kIiApLnZhbHVlID0gc0RhdGE/c0Rh dGE6IjAiJwogICAgICwnbWFrZUJvdHRvbU5ybSgpOycgKTsKICAgIHdpbmRvdy5wYXJlbnQuZG9D bWRzKCk7CiAgfQp9CjwvU0NSSVBUPgoKPFAgc3R5bGU9Im1hcmdpbi1ib3R0b206MCI+CjxCPlJT QSBrZXk6IGZvcm1hdCB0cmFuc2xhdGlvbjwvQj4KPC9QPgoKPFRBQkxFIHN0eWxlPSJ3aWR0aDox MDAlIj4KPENPTCBzdHlsZT0id2lkdGg6YXV0byI+PENPTCBzdHlsZT0id2lkdGg6NTAlIj48Q09M IHN0eWxlPSJ3aWR0aDphdXRvIj48Q09MIHN0eWxlPSJ3aWR0aDo1MCUiPgo8VFI+CjxURD5CYXNl NjQ8L1REPgo8VEQgY29sc3Bhbj0zPgogIDxURVhUQVJFQSBpZD0icnNhQjY0S2V5IiBzdHlsZT0i d2lkdGg6MTAwJSIgY29scz0xOSByb3dzPTIKICAgb25jaGFuZ2U9InJzYVNldEtleXModGhpcy52 YWx1ZSxudWxsLG51bGwsbnVsbCk7Ij48L1RFWFRBUkVBPgo8L1REPgo8L1RSPgo8VFI+CjxURD5I ZXg8L1REPgo8VEQgY29sc3Bhbj0zPgogIDxJTlBVVCB0eXBlPSJ0ZXh0IiBpZD0icnNhSGV4S2V5 IiBzdHlsZT0id2lkdGg6MTAwJSIgc2l6ZT0xOAogICBvbmNoYW5nZT0icnNhU2V0S2V5cyhudWxs LHRoaXMudmFsdWUsbnVsbCxudWxsKTsiPgo8L1REPgo8L1RSPgo8VFI+CjxURD5FeHAsTW9kPC9U RD4KPFREPgogIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icnNhRXhwIiBzdHlsZT0id2lkdGg6MTAw JSIgc2l6ZT03CiAgIG9uY2hhbmdlPSJyc2FTZXRLZXlzKG51bGwsbnVsbCx0aGlzLnZhbHVlLHdp bmRvdy5wYXJlbnQuZ2V0RWwod2luZG93LCdyc2FNb2QnKS52YWx1ZSkiPgo8L1REPgo8VEQ+Jm5i c3A7PC9URD4KPFREPgogIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icnNhTW9kIiBzdHlsZT0id2lk dGg6MTAwJSIgc2l6ZT04CiAgIG9uY2hhbmdlPSJyc2FTZXRLZXlzKG51bGwsbnVsbCx3aW5kb3cu cGFyZW50LmdldEVsKHdpbmRvdywncnNhRXhwJykudmFsdWUsdGhpcy52YWx1ZSkiPgo8L1REPgo8 L1RSPgo8L1RBQkxFPgobVW5pY29kZRs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cgpm dW5jdGlvbiBnZW5TZXQoZnJvbSl7IHdpdGggKHdpbmRvdy5wYXJlbnQpewogIHZhciBzID0gJzxI Mj5DaGFyc2V0IDB4JysoaStmcm9tKS50b1N0cmluZygxNikrJzxcL0gyPlxuPFRBQkxFIGJvcmRl cj0xPjxUUj48VEg+Jm5ic3A7PFwvVEg+XG4nOwogIGZvciAoIGo9MDtqPDE2O2orKyApeyBzICs9 ICc8VEg+JytqLnRvU3RyaW5nKDE2KSsnPFwvVEg+XG4nOyB9CiAgZm9yICggaj0wO2o8MjU2O2or KyApewogICAgaWYgKCBqJTE2PT0wICkgcyArPSAnPFwvVFI+PFRSPjxUSD4nKyhqPj4+NCkudG9T dHJpbmcoMTYpKydcbic7CiAgICB2YXIgbiA9IChpK2Zyb20pKjI1NiArIGoKICAgIHZhciBjID0g bj09MD8nbnVsbCc6bj09NjA/JyZsdDsnOlN0cmluZy5mcm9tQ2hhckNvZGUoIG4gKTsKICAgIHMg Kz0gJzxURD4nK2MrJzxcL1REPlxuJzsKICB9CiAgcyArPSAnPFwvVFI+PFwvVEFCTEU+XG4nOwog IGkrKzsKICByZXR1cm4gczsKfSB9CgpmdW5jdGlvbiBnZW5DaGFycyggZnJvbSwgdG8gKXsgd2l0 aCAod2luZG93LnBhcmVudCl7CiAgZnJvbSA9IGlzTmFOKGZyb20pPzA6ZnJvbTsKICB0byA9IChp c05hTih0byk/ZnJvbTp0bykrMTsKICBpID0gMDsKICB0b3QgPSB0by1mcm9tOwogIHByZ3IgPSAn Y2hhclNldCc7CiAgdmFyIHMgPSAnJzsKICBmb3IgKHZhciBqPWk7IGo8dG90OyBqKyspIHMrPSc8 RElWIGlkPSJkJytqKyciPjxcL0RJVj5cbic7CiAgZ2V0RWwoZnJUb3AsJ2QnKS5pbm5lckhUTUwg PSBzOwogIGNtZEZhaWwgPSBuZXcgRnVuY3Rpb24oICdlJywgY21kRlN0YXQrJ21ha2VCb3R0b21O cm0oKTsnICk7CiAgY21kcy5wdXNoKAogICAgJ2dldEVsKGZyVG9wLCJkIitpKS5pbm5lckhUTUwg PSBmclRvcC5nZW5TZXQoJytmcm9tKycpJywKICAgICdtYWtlQm90dG9tTnJtKCk7JwogICk7CiAg ZG9DbWRzKCk7Cn0gfQoKPC9TQ1JJUFQ+CgoKPEgxPlVuaWNvZGUgQ2hhcmFjdGVyczwvSDE+Cgo8 UD4KR2VuZXJhdGUgY2hhcmFjdGVyIHNldCBmcm9tCjxJTlBVVCBpZD0iY3NGcm9tIiB0eXBlPSJ0 ZXh0IiB2YWx1ZT0iMHgwIiBzaXplPTU+CnRvCjxJTlBVVCBpZD0iY3NUbyIgdHlwZT0idGV4dCIg dmFsdWU9IiIgc2l6ZT01Pgo8QlI+CjxJTlBVVCB0eXBlPSJidXR0b24iIG9uY2xpY2s9IgpnZW5D aGFycyggcGFyc2VJbnQod2luZG93LnBhcmVudC5nZXRFbCh3aW5kb3csJ2NzRnJvbScpLnZhbHVl KSwKICAgICAgICAgIHBhcnNlSW50KHdpbmRvdy5wYXJlbnQuZ2V0RWwod2luZG93LCdjc1RvJyku dmFsdWUgKSApIiB2YWx1ZT0iZ2VuZXJhdGUiPgo8L1A+Cgo8RElWIGlkPSJkIj4KPC9ESVY+ChtU YWJsZXMbPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAi aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxIVE1MPgo8SEVBRD4KPFRJ VExFPnRhYmxlczwvVElUTEU+CjxNRVRBIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgo8U1RZTEUgdHlwZT0idGV4dC9jc3Mi PgogIFRSLmV2ZW57IGJhY2tncm91bmQ6I0ZGRkZGRjsgY29sb3I6IzAwMDAwMDsgfQogIFRSLm9k ZHsgYmFja2dyb3VuZDojODBCMDgwOyBjb2xvcjojMDAwMDAwO30KPC9TVFlMRT4KPC9IRUFEPgo8 Qk9EWT4KCjxIMT5UYWJsZXM8L2gxPgoKPFRBQkxFIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGlu Zz0iMCI+CjxUUiBjbGFzcz0ib2RkIj48VEQ+KDEsMSk8L1REPjxURD4oMSwyKTwvVEQ+PC9UUj4K PFRSIGNsYXNzPSJldmVuIj48VEQ+KDIsMSk8L1REPjxURD48L1REPjwvVFI+CjxUUiBjbGFzcz0i b2RkIj48VEQ+KDMsMSk8L1REPjxURD4oMywyKTwvVEQ+PC9UUj4KPFRSIGNsYXNzPSJldmVuIj48 VEQ+KDQsMSk8L1REPjxURD4oNCwyKTwvVEQ+PC9UUj4KPC9UQUJMRT4KCjxQIHN0eWxlPSJtYXJn aW46MCI+Jm5ic3A7PC9QPgoKPFRBQkxFIGJvcmRlcj0iMSI+Cjx0cj4KPHRkPigxLDEpPC90ZD4K PHRkPigxLDIpPC90ZD4KPC90cj4KPHRyPgo8dGQ+KDIsMSk8L3RkPgo8dGQ+PHRhYmxlIGJvcmRl cj0iMSI+Cjx0cj4KPHRkPnN1YiAoMSwxKTwvdGQ+Cjx0ZD5zdWIgKDEsMik8L3RkPgo8L3RyPgo8 dHI+Cjx0ZD5zdWIgKDIsMSk8L3RkPgo8dGQ+c3ViICgyLDIpPC90ZD4KPC90cj4KPC90YWJsZT4K PC90ZD4KPC90cj4KPHRyPgo8dGQ+KDMsMSk8L3RkPgo8dGQ+KDMsMik8L3RkPgo8L3RyPgo8dHI+ Cjx0ZD4oNCwxKTwvdGQ+Cjx0ZD4oNCwyKTwvdGQ+CjwvdHI+Cjx0cj4KPHRkPig1LDEpPC90ZD4K PHRkPig1LDIpPC90ZD4KPC90cj4KPC90YWJsZT4KCgo8dGFibGUgYm9yZGVyPTE+CjxjYXB0aW9u PmNvbXBsZXggdGFibGU8L2NhcHRpb24+Cjxjb2xncm91cCB3aWR0aD0xMDA+CiAgPGNvbCBhbGln bj0ibGVmdCI+CiAgPGNvbCBhbGlnbj0icmlnaHQiPgo8Y29sZ3JvdXAgd2lkdGg9NjAgYWxpZ249 ImNlbnRlciI+Cjx0aGVhZD4KICA8dHI+CiAgPHRoIHJvd3NwYW49Mj5oZWFkZXIgKDEsMSk7ICgy LDEpCiAgPHRoIGNvbHNwYW49Mj5oZWFkZXIgKDEsMik7ICgxLDMpCiAgPHRyPgogIDx0aD5oZWFk ZXIgKDIsMikKICA8dGg+aGVhZGVyICgyLDMpCjx0Zm9vdD48dHI+PHRkIGNvbHNwYW49Mz5mb290 ZXIKPHRib2R5PgogIDx0cj4KICA8dGQ+KDEsMSkKICA8dGQ+KDEsMikKICA8dGQ+KDEsMykKICA8 dHI+CiAgPHRkPigyLDEpCiAgPHRkIHJvd3NwYW49Mj4oMiwyKTsgKDMsMikKICA8dGQ+KDIsMykK ICA8dHI+CiAgPHRkIHJvd3NwYW49Mj4oMywxKTsgKDQsMSkKICA8dGQ+KDMsMykKICA8dHI+CiAg PHRkIGNvbHNwYW49Mj4oNCwyKTsgKDQsNCkKICA8dHI+CiAgPHRkPig1LDEpCiAgPHRkPig1LDIp CiAgPHRkPig1LDMpCjwvdGFibGU+Cgo8L0JPRFk+CjwvSFRNTD4=