{"id":7,"date":"2026-09-15T14:51:46","date_gmt":"2026-09-15T14:51:46","guid":{"rendered":"https:\/\/gabrielhacks.com\/?page_id=7"},"modified":"2026-09-16T06:59:08","modified_gmt":"2026-09-16T06:59:08","slug":"home","status":"publish","type":"page","link":"https:\/\/gabrielhacks.com\/","title":{"rendered":"Home"},"content":{"rendered":"\n<meta charset=\"utf-8\">\n<style>\nhtml,body{margin:0!important;padding:0!important;width:100%!important;min-height:100vh!important;background:#0f172a!important;overflow-x:hidden!important}\n#wpadminbar,header,footer,.wp-block-template-part,.skip-link,#wp-skip-link,.wp-block-site-title,.wp-block-navigation{display:none!important;visibility:hidden!important;height:0!important;overflow:hidden!important}\n.wp-site-blocks,.entry-content,main,.wp-block-group,.wp-block-post-content{width:100%!important;max-width:100%!important;margin:0!important;padding:0!important}\n#root{display:block!important;width:100%!important;min-height:100vh!important}\n<\/style>\n<link rel=\"icon\" href=\"https:\/\/s3.us-east-1.amazonaws.com\/shahrzad.club\/favicon.png\">\n<link rel=\"stylesheet\" href=\"https:\/\/s3.us-east-1.amazonaws.com\/shahrzad.club\/assets\/index-DE24vBSl.css\">\n<div id=\"root\"><\/div>\n<script>(function(){var b=atob(\"QGltcG9ydCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI\/ZmFtaWx5PVBsYXlmYWlyK0Rpc3BsYXk6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzAsNzAwOzAsODAwOzEsNDAwOzEsNTAwJmZhbWlseT1ETStTYW5zOml0YWwsd2dodEAwLDMwMDswLDQwMDswLDUwMDswLDYwMDswLDcwMDsxLDQwMCZkaXNwbGF5PXN3YXAiOyosOmJlZm9yZSw6YWZ0ZXJ7LS10dy1ib3JkZXItc3BhY2luZy14OiAwOy0tdHctYm9yZGVyLXNwYWNpbmcteTogMDstLXR3LXRyYW5zbGF0ZS14OiAwOy0tdHctdHJhbnNsYXRlLXk6IDA7LS10dy1yb3RhdGU6IDA7LS10dy1za2V3LXg6IDA7LS10dy1za2V3LXk6IDA7LS10dy1zY2FsZS14OiAxOy0tdHctc2NhbGUteTogMTstLXR3LXBhbi14OiA7LS10dy1wYW4teTogOy0tdHctcGluY2gtem9vbTogOy0tdHctc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczogcHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDogMHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7LS10dy1yaW5nLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIC41KTstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogMCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6IDAgMCAjMDAwMDstLXR3LXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH06OmJhY2tkcm9wey0tdHctYm9yZGVyLXNwYWNpbmcteDogMDstLXR3LWJvcmRlci1zcGFjaW5nLXk6IDA7LS10dy10cmFuc2xhdGUteDogMDstLXR3LXRyYW5zbGF0ZS15OiAwOy0tdHctcm90YXRlOiAwOy0tdHctc2tldy14OiAwOy0tdHctc2tldy15OiAwOy0tdHctc2NhbGUteDogMTstLXR3LXNjYWxlLXk6IDE7LS10dy1wYW4teDogOy0tdHctcGFuLXk6IDstLXR3LXBpbmNoLXpvb206IDstLXR3LXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6IHByb3hpbWl0eTstLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb246IDstLXR3LWdyYWRpZW50LXZpYS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb246IDstLXR3LW9yZGluYWw6IDstLXR3LXNsYXNoZWQtemVybzogOy0tdHctbnVtZXJpYy1maWd1cmU6IDstLXR3LW51bWVyaWMtc3BhY2luZzogOy0tdHctbnVtZXJpYy1mcmFjdGlvbjogOy0tdHctcmluZy1pbnNldDogOy0tdHctcmluZy1vZmZzZXQtd2lkdGg6IDBweDstLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiAjZmZmOy0tdHctcmluZy1jb2xvcjogcmdiKDU5IDEzMCAyNDYgLyAuNSk7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IDAgMCAjMDAwMDstLXR3LXJpbmctc2hhZG93OiAwIDAgIzAwMDA7LS10dy1zaGFkb3c6IDAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDAgIzAwMDA7LS10dy1ibHVyOiA7LS10dy1icmlnaHRuZXNzOiA7LS10dy1jb250cmFzdDogOy0tdHctZ3JheXNjYWxlOiA7LS10dy1odWUtcm90YXRlOiA7LS10dy1pbnZlcnQ6IDstLXR3LXNhdHVyYXRlOiA7LS10dy1zZXBpYTogOy0tdHctZHJvcC1zaGFkb3c6IDstLXR3LWJhY2tkcm9wLWJsdXI6IDstLXR3LWJhY2tkcm9wLWJyaWdodG5lc3M6IDstLXR3LWJhY2tkcm9wLWNvbnRyYXN0OiA7LS10dy1iYWNrZHJvcC1ncmF5c2NhbGU6IDstLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGU6IDstLXR3LWJhY2tkcm9wLWludmVydDogOy0tdHctYmFja2Ryb3Atb3BhY2l0eTogOy0tdHctYmFja2Ryb3Atc2F0dXJhdGU6IDstLXR3LWJhY2tkcm9wLXNlcGlhOiA7LS10dy1jb250YWluLXNpemU6IDstLXR3LWNvbnRhaW4tbGF5b3V0OiA7LS10dy1jb250YWluLXBhaW50OiA7LS10dy1jb250YWluLXN0eWxlOiB9Kiw6YmVmb3JlLDphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojZTVlN2VifTpiZWZvcmUsOmFmdGVyey0tdHctY29udGVudDogIiJ9aHRtbCw6aG9zdHtsaW5lLWhlaWdodDoxLjU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LW1vei10YWItc2l6ZTo0Oy1vLXRhYi1zaXplOjQ7dGFiLXNpemU6NDtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIixTZWdvZSBVSSBTeW1ib2wsIk5vdG8gQ29sb3IgRW1vamkiO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e21hcmdpbjowO2xpbmUtaGVpZ2h0OmluaGVyaXR9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHNhbXAscHJle2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtmb250LXNpemU6MWVtfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vie2JvdHRvbTotLjI1ZW19c3Vwe3RvcDotLjVlbX10YWJsZXt0ZXh0LWluZGVudDowO2JvcmRlci1jb2xvcjppbmhlcml0O2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX1idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1mZWF0dXJlLXNldHRpbmdzOmluaGVyaXQ7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6aW5oZXJpdDtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtjb2xvcjppbmhlcml0O21hcmdpbjowO3BhZGRpbmc6MH1idXR0b24sc2VsZWN0e3RleHQtdHJhbnNmb3JtOm5vbmV9YnV0dG9uLGlucHV0OndoZXJlKFt0eXBlPWJ1dHRvbl0pLGlucHV0OndoZXJlKFt0eXBlPXJlc2V0XSksaW5wdXQ6d2hlcmUoW3R5cGU9c3VibWl0XSl7LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZX06LW1vei1mb2N1c3Jpbmd7b3V0bGluZTphdXRvfTotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiw6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1ibG9ja3F1b3RlLGRsLGRkLGgxLGgyLGgzLGg0LGg1LGg2LGhyLGZpZ3VyZSxwLHByZXttYXJnaW46MH1maWVsZHNldHttYXJnaW46MDtwYWRkaW5nOjB9bGVnZW5ke3BhZGRpbmc6MH1vbCx1bCxtZW51e2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9ZGlhbG9ne3BhZGRpbmc6MH10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9aW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIsdGV4dGFyZWE6Oi1tb3otcGxhY2Vob2xkZXJ7b3BhY2l0eToxO2NvbG9yOiM5Y2EzYWZ9aW5wdXQ6OnBsYWNlaG9sZGVyLHRleHRhcmVhOjpwbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1idXR0b24sW3JvbGU9YnV0dG9uXXtjdXJzb3I6cG9pbnRlcn06ZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9aW1nLHN2Zyx2aWRlbyxjYW52YXMsYXVkaW8saWZyYW1lLGVtYmVkLG9iamVjdHtkaXNwbGF5OmJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1pbWcsdmlkZW97bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99W2hpZGRlbl06d2hlcmUoOm5vdChbaGlkZGVuPXVudGlsLWZvdW5kXSkpe2Rpc3BsYXk6bm9uZX06cm9vdHstLWJhY2tncm91bmQ6IDI3MCAzMCUgOTUlOy0tZm9yZWdyb3VuZDogMjcwIDMwJSA4JTstLWNhcmQ6IDI3MCAyNSUgOTglOy0tY2FyZC1mb3JlZ3JvdW5kOiAyNzAgMzAlIDglOy0tcG9wb3ZlcjogMCAwJSAxMDAlOy0tcG9wb3Zlci1mb3JlZ3JvdW5kOiAyNzAgMzAlIDglOy0tcHJpbWFyeTogMjcwIDYwJSA1MCU7LS1wcmltYXJ5LWZvcmVncm91bmQ6IDAgMCUgMTAwJTstLXNlY29uZGFyeTogMjcwIDE1JSA5NCU7LS1zZWNvbmRhcnktZm9yZWdyb3VuZDogMjcwIDMwJSA4JTstLW11dGVkOiAyNzAgMTAlIDkzJTstLW11dGVkLWZvcmVncm91bmQ6IDI3MCAxMCUgNDIlOy0tYWNjZW50OiAzNiA4MCUgNTUlOy0tYWNjZW50LWZvcmVncm91bmQ6IDI3MCAzMCUgOCU7LS1kZXN0cnVjdGl2ZTogMCA4NCUgNjAlOy0tZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZDogMCAwJSAxMDAlOy0tYm9yZGVyOiAyNzAgMTIlIDkwJTstLWlucHV0OiAyNzAgMTIlIDkwJTstLXJpbmc6IDI3MCA2MCUgNTAlOy0tcmFkaXVzOiAuNzVyZW07LS1zaWRlYmFyLWJhY2tncm91bmQ6IDAgMCUgOTglOy0tc2lkZWJhci1mb3JlZ3JvdW5kOiAyNDAgNS4zJSAyNi4xJTstLXNpZGViYXItcHJpbWFyeTogMjcwIDYwJSA1MCU7LS1zaWRlYmFyLXByaW1hcnktZm9yZWdyb3VuZDogMCAwJSA5OCU7LS1zaWRlYmFyLWFjY2VudDogMjQwIDQuOCUgOTUuOSU7LS1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kOiAyNDAgNS45JSAxMCU7LS1zaWRlYmFyLWJvcmRlcjogMjIwIDEzJSA5MSU7LS1zaWRlYmFyLXJpbmc6IDI3MCA2MCUgNTAlOy0taGVyby1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgaHNsKDI3MCA2MCUgNTAlKSwgaHNsKDI4MCA1MCUgNjAlKSk7LS1nbG93LXNoYWRvdzogMCAxMHB4IDQwcHggLTEwcHggaHNsKDI3MCA2MCUgNTAlIC8gLjMpOy0tY2FyZC1zaGFkb3c6IDAgNHB4IDI0cHggLTRweCBoc2woMjcwIDMwJSA4JSAvIC4wNik7LS1jYXJkLWhvdmVyLXNoYWRvdzogMCAxNnB4IDQ4cHggLThweCBoc2woMjcwIDYwJSA1MCUgLyAuMTUpOy0tbWFnaWMtZ2xvdzogMCAwIDMwcHggaHNsKDM2IDgwJSA1NSUgLyAuMik7LS1hY2NlbnQtZ2xvdzogMCAwIDQwcHggaHNsKDI3MCA2MCUgNTAlIC8gLjE1KX0uZGFya3stLWJhY2tncm91bmQ6IDI3MCAyMCUgNyU7LS1mb3JlZ3JvdW5kOiAyNzAgMTUlIDk2JTstLWNhcmQ6IDI3MCAxOCUgMTElOy0tY2FyZC1mb3JlZ3JvdW5kOiAyNzAgMTUlIDk2JTstLXBvcG92ZXI6IDI3MCAxOCUgMTElOy0tcG9wb3Zlci1mb3JlZ3JvdW5kOiAyNzAgMTUlIDk2JTstLXByaW1hcnk6IDI3MCA1NSUgNjAlOy0tcHJpbWFyeS1mb3JlZ3JvdW5kOiAwIDAlIDEwMCU7LS1zZWNvbmRhcnk6IDI3MCAxMiUgMTYlOy0tc2Vjb25kYXJ5LWZvcmVncm91bmQ6IDI3MCAxNSUgOTYlOy0tbXV0ZWQ6IDI3MCAxMiUgMTYlOy0tbXV0ZWQtZm9yZWdyb3VuZDogMjcwIDEwJSA1OCU7LS1hY2NlbnQ6IDM2IDgwJSA1NSU7LS1hY2NlbnQtZm9yZWdyb3VuZDogMjcwIDMwJSA4JTstLWRlc3RydWN0aXZlOiAwIDYyLjglIDMwLjYlOy0tZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZDogMCAwJSAxMDAlOy0tYm9yZGVyOiAyNzAgMTIlIDE4JTstLWlucHV0OiAyNzAgMTIlIDE4JTstLXJpbmc6IDI3MCA1NSUgNjAlfSp7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1ib3JkZXIpKX1ib2R5e2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWJhY2tncm91bmQpKTtjb2xvcjpoc2wodmFyKC0tZm9yZWdyb3VuZCkpO2ZvbnQtZmFtaWx5OkRNIFNhbnMsc2Fucy1zZXJpZn1oMSxoMixoMyxoNCxoNSxoNntmb250LWZhbWlseTpQbGF5ZmFpciBEaXNwbGF5LHNlcmlmfS5jb250YWluZXJ7d2lkdGg6MTAwJTttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvO3BhZGRpbmctcmlnaHQ6MnJlbTtwYWRkaW5nLWxlZnQ6MnJlbX1AbWVkaWEgKG1pbi13aWR0aDogMTQwMHB4KXsuY29udGFpbmVye21heC13aWR0aDoxNDAwcHh9fS5zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6MXB4O3BhZGRpbmc6MDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDAsMCwwLDApO3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItd2lkdGg6MH0ucG9pbnRlci1ldmVudHMtbm9uZXtwb2ludGVyLWV2ZW50czpub25lfS5wb2ludGVyLWV2ZW50cy1hdXRve3BvaW50ZXItZXZlbnRzOmF1dG99LnZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW59LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9Li1pbnNldC0xe3RvcDotLjI1cmVtO3JpZ2h0Oi0uMjVyZW07Ym90dG9tOi0uMjVyZW07bGVmdDotLjI1cmVtfS5pbnNldC0we3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowfS5pbnNldC14LTB7bGVmdDowO3JpZ2h0OjB9Lmluc2V0LXktMHt0b3A6MDtib3R0b206MH0uLWJvdHRvbS0xe2JvdHRvbTotLjI1cmVtfS4tYm90dG9tLTEye2JvdHRvbTotM3JlbX0uLWJvdHRvbS00e2JvdHRvbTotMXJlbX0uLWxlZnQtMTJ7bGVmdDotM3JlbX0uLXJpZ2h0LTF7cmlnaHQ6LS4yNXJlbX0uLXJpZ2h0LTEwe3JpZ2h0Oi0yLjVyZW19Li1yaWdodC0xMntyaWdodDotM3JlbX0uLXRvcC0xe3RvcDotLjI1cmVtfS4tdG9wLTEwe3RvcDotMi41cmVtfS4tdG9wLTEye3RvcDotM3JlbX0uLXRvcC00e3RvcDotMXJlbX0uYm90dG9tLTB7Ym90dG9tOjB9LmJvdHRvbS0xXC8ze2JvdHRvbTozMy4zMzMzMzMlfS5ib3R0b20tMVwvNHtib3R0b206MjUlfS5ib3R0b20tNntib3R0b206MS41cmVtfS5lbmQtMHtpbnNldC1pbmxpbmUtZW5kOjBweH0ubGVmdC0we2xlZnQ6MH0ubGVmdC0xe2xlZnQ6LjI1cmVtfS5sZWZ0LTFcLzJ7bGVmdDo1MCV9LmxlZnQtMVwvM3tsZWZ0OjMzLjMzMzMzMyV9LmxlZnQtMVwvNHtsZWZ0OjI1JX0ubGVmdC0ye2xlZnQ6LjVyZW19LmxlZnQtOHtsZWZ0OjJyZW19LmxlZnQtXFs1MFwlXF17bGVmdDo1MCV9LnJpZ2h0LTB7cmlnaHQ6MH0ucmlnaHQtMXtyaWdodDouMjVyZW19LnJpZ2h0LTFcLzN7cmlnaHQ6MzMuMzMzMzMzJX0ucmlnaHQtMVwvNHtyaWdodDoyNSV9LnJpZ2h0LTJ7cmlnaHQ6LjVyZW19LnJpZ2h0LTN7cmlnaHQ6Ljc1cmVtfS5yaWdodC00e3JpZ2h0OjFyZW19LnJpZ2h0LTZ7cmlnaHQ6MS41cmVtfS5yaWdodC04e3JpZ2h0OjJyZW19LnRvcC0we3RvcDowfS50b3AtMVwuNXt0b3A6LjM3NXJlbX0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTFcLzN7dG9wOjMzLjMzMzMzMyV9LnRvcC0xXC80e3RvcDoyNSV9LnRvcC0ye3RvcDouNXJlbX0udG9wLTN7dG9wOi43NXJlbX0udG9wLTNcLjV7dG9wOi44NzVyZW19LnRvcC00e3RvcDoxcmVtfS50b3AtXFsxcHhcXXt0b3A6MXB4fS50b3AtXFs1MFwlXF17dG9wOjUwJX0udG9wLVxbNjBcJVxde3RvcDo2MCV9LnRvcC1mdWxse3RvcDoxMDAlfS56LTEwe3otaW5kZXg6MTB9LnotMjB7ei1pbmRleDoyMH0uei01MHt6LWluZGV4OjUwfS56LVxbMTAwXF17ei1pbmRleDoxMDB9LnotXFsxXF17ei1pbmRleDoxfS56LVxbNVxde3otaW5kZXg6NX0uLW14LTF7bWFyZ2luLWxlZnQ6LS4yNXJlbTttYXJnaW4tcmlnaHQ6LS4yNXJlbX0ubXgtMnttYXJnaW4tbGVmdDouNXJlbTttYXJnaW4tcmlnaHQ6LjVyZW19Lm14LTNcLjV7bWFyZ2luLWxlZnQ6Ljg3NXJlbTttYXJnaW4tcmlnaHQ6Ljg3NXJlbX0ubXgtYXV0b3ttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS5teS0wXC41e21hcmdpbi10b3A6LjEyNXJlbTttYXJnaW4tYm90dG9tOi4xMjVyZW19Lm15LTF7bWFyZ2luLXRvcDouMjVyZW07bWFyZ2luLWJvdHRvbTouMjVyZW19Li1tbC00e21hcmdpbi1sZWZ0Oi0xcmVtfS4tbXQtNHttYXJnaW4tdG9wOi0xcmVtfS5tYi0xe21hcmdpbi1ib3R0b206LjI1cmVtfS5tYi0xMHttYXJnaW4tYm90dG9tOjIuNXJlbX0ubWItMTJ7bWFyZ2luLWJvdHRvbTozcmVtfS5tYi0xNHttYXJnaW4tYm90dG9tOjMuNXJlbX0ubWItMTZ7bWFyZ2luLWJvdHRvbTo0cmVtfS5tYi0ye21hcmdpbi1ib3R0b206LjVyZW19Lm1iLTN7bWFyZ2luLWJvdHRvbTouNzVyZW19Lm1iLTR7bWFyZ2luLWJvdHRvbToxcmVtfS5tYi01e21hcmdpbi1ib3R0b206MS4yNXJlbX0ubWItNnttYXJnaW4tYm90dG9tOjEuNXJlbX0ubWItOHttYXJnaW4tYm90dG9tOjJyZW19Lm1sLTF7bWFyZ2luLWxlZnQ6LjI1cmVtfS5tbC0xNHttYXJnaW4tbGVmdDozLjVyZW19Lm1sLWF1dG97bWFyZ2luLWxlZnQ6YXV0b30ubXItMnttYXJnaW4tcmlnaHQ6LjVyZW19Lm10LTFcLjV7bWFyZ2luLXRvcDouMzc1cmVtfS5tdC0xMHttYXJnaW4tdG9wOjIuNXJlbX0ubXQtMTJ7bWFyZ2luLXRvcDozcmVtfS5tdC0ye21hcmdpbi10b3A6LjVyZW19Lm10LTI0e21hcmdpbi10b3A6NnJlbX0ubXQtM3ttYXJnaW4tdG9wOi43NXJlbX0ubXQtNHttYXJnaW4tdG9wOjFyZW19Lm10LWF1dG97bWFyZ2luLXRvcDphdXRvfS5saW5lLWNsYW1wLTF7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtbGluZS1jbGFtcDoxfS5saW5lLWNsYW1wLTJ7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtbGluZS1jbGFtcDoyfS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZsZXh7ZGlzcGxheTpmbGV4fS5pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4fS50YWJsZXtkaXNwbGF5OnRhYmxlfS5ncmlke2Rpc3BsYXk6Z3JpZH0uY29udGVudHN7ZGlzcGxheTpjb250ZW50c30uaGlkZGVue2Rpc3BsYXk6bm9uZX0uYXNwZWN0LXNxdWFyZXthc3BlY3QtcmF0aW86MSAvIDF9LmFzcGVjdC12aWRlb3thc3BlY3QtcmF0aW86MTYgLyA5fS5zaXplLTR7d2lkdGg6MXJlbTtoZWlnaHQ6MXJlbX0uaC0wXC41e2hlaWdodDouMTI1cmVtfS5oLTFcLjV7aGVpZ2h0Oi4zNzVyZW19LmgtMTB7aGVpZ2h0OjIuNXJlbX0uaC0xMXtoZWlnaHQ6Mi43NXJlbX0uaC0xMntoZWlnaHQ6M3JlbX0uaC0xNHtoZWlnaHQ6My41cmVtfS5oLTE2e2hlaWdodDo0cmVtfS5oLTJ7aGVpZ2h0Oi41cmVtfS5oLTJcLjV7aGVpZ2h0Oi42MjVyZW19LmgtM3toZWlnaHQ6Ljc1cmVtfS5oLTNcLjV7aGVpZ2h0Oi44NzVyZW19LmgtMzJ7aGVpZ2h0OjhyZW19LmgtNHtoZWlnaHQ6MXJlbX0uaC00MHtoZWlnaHQ6MTByZW19LmgtNDh7aGVpZ2h0OjEycmVtfS5oLTV7aGVpZ2h0OjEuMjVyZW19LmgtNntoZWlnaHQ6MS41cmVtfS5oLTY0e2hlaWdodDoxNnJlbX0uaC03e2hlaWdodDoxLjc1cmVtfS5oLTcye2hlaWdodDoxOHJlbX0uaC04e2hlaWdodDoycmVtfS5oLTgwe2hlaWdodDoyMHJlbX0uaC05e2hlaWdodDoyLjI1cmVtfS5oLTk2e2hlaWdodDoyNHJlbX0uaC1cWzFweFxde2hlaWdodDoxcHh9LmgtXFsycHhcXXtoZWlnaHQ6MnB4fS5oLVxbMzIwcHhcXXtoZWlnaHQ6MzIwcHh9LmgtXFs1MDBweFxde2hlaWdodDo1MDBweH0uaC1cWzUyMHB4XF17aGVpZ2h0OjUyMHB4fS5oLVxbNzAwcHhcXXtoZWlnaHQ6NzAwcHh9LmgtXFt2YXJcKC0tcmFkaXgtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LWhlaWdodFwpXF17aGVpZ2h0OnZhcigtLXJhZGl4LW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC1oZWlnaHQpfS5oLVxbdmFyXCgtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodFwpXF17aGVpZ2h0OnZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCl9LmgtYXV0b3toZWlnaHQ6YXV0b30uaC1mdWxse2hlaWdodDoxMDAlfS5oLXB4e2hlaWdodDoxcHh9Lmgtc3Zoe2hlaWdodDoxMDBzdmh9Lm1heC1oLTgwe21heC1oZWlnaHQ6MjByZW19Lm1heC1oLTk2e21heC1oZWlnaHQ6MjRyZW19Lm1heC1oLVxbMzAwcHhcXXttYXgtaGVpZ2h0OjMwMHB4fS5tYXgtaC1cW2NhbGNcKDEwMHZoLTk2cHhcKVxde21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDk2cHgpfS5tYXgtaC1zY3JlZW57bWF4LWhlaWdodDoxMDB2aH0ubWluLWgtMHttaW4taGVpZ2h0OjBweH0ubWluLWgtXFs4MHB4XF17bWluLWhlaWdodDo4MHB4fS5taW4taC1cWzkwdmhcXXttaW4taGVpZ2h0Ojkwdmh9Lm1pbi1oLXNjcmVlbnttaW4taGVpZ2h0OjEwMHZofS5taW4taC1zdmh7bWluLWhlaWdodDoxMDBzdmh9LnctMHt3aWR0aDowcHh9LnctMXt3aWR0aDouMjVyZW19LnctMVwuNXt3aWR0aDouMzc1cmVtfS53LTFcLzJ7d2lkdGg6NTAlfS53LTFcLzN7d2lkdGg6MzMuMzMzMzMzJX0udy0xMHt3aWR0aDoyLjVyZW19LnctMTF7d2lkdGg6Mi43NXJlbX0udy0xMnt3aWR0aDozcmVtfS53LTE0e3dpZHRoOjMuNXJlbX0udy0ye3dpZHRoOi41cmVtfS53LTJcLjV7d2lkdGg6LjYyNXJlbX0udy0yMHt3aWR0aDo1cmVtfS53LTN7d2lkdGg6Ljc1cmVtfS53LTNcLjV7d2lkdGg6Ljg3NXJlbX0udy0zXC80e3dpZHRoOjc1JX0udy00e3dpZHRoOjFyZW19LnctNDB7d2lkdGg6MTByZW19LnctNDh7d2lkdGg6MTJyZW19LnctNXt3aWR0aDoxLjI1cmVtfS53LTZ7d2lkdGg6MS41cmVtfS53LTY0e3dpZHRoOjE2cmVtfS53LTd7d2lkdGg6MS43NXJlbX0udy03Mnt3aWR0aDoxOHJlbX0udy04e3dpZHRoOjJyZW19LnctODB7d2lkdGg6MjByZW19LnctOXt3aWR0aDoyLjI1cmVtfS53LTk2e3dpZHRoOjI0cmVtfS53LVxbLS1zaWRlYmFyLXdpZHRoXF17d2lkdGg6dmFyKC0tc2lkZWJhci13aWR0aCl9LnctXFsxMDBweFxde3dpZHRoOjEwMHB4fS53LVxbMXB4XF17d2lkdGg6MXB4fS53LVxbMjQwcHhcXXt3aWR0aDoyNDBweH0udy1cWzM2MHB4XF17d2lkdGg6MzYwcHh9LnctXFs1MDBweFxde3dpZHRoOjUwMHB4fS53LVxbNzAwcHhcXXt3aWR0aDo3MDBweH0udy1hdXRve3dpZHRoOmF1dG99LnctZnVsbHt3aWR0aDoxMDAlfS53LW1heHt3aWR0aDotbW96LW1heC1jb250ZW50O3dpZHRoOm1heC1jb250ZW50fS53LXB4e3dpZHRoOjFweH0ubWluLXctMHttaW4td2lkdGg6MHB4fS5taW4tdy01e21pbi13aWR0aDoxLjI1cmVtfS5taW4tdy1cWzEycmVtXF17bWluLXdpZHRoOjEycmVtfS5taW4tdy1cWzhyZW1cXXttaW4td2lkdGg6OHJlbX0ubWluLXctXFt2YXJcKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGhcKVxde21pbi13aWR0aDp2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCl9Lm1heC13LTJ4bHttYXgtd2lkdGg6NDJyZW19Lm1heC13LTN4bHttYXgtd2lkdGg6NDhyZW19Lm1heC13LVxbLS1za2VsZXRvbi13aWR0aFxde21heC13aWR0aDp2YXIoLS1za2VsZXRvbi13aWR0aCl9Lm1heC13LVxbODBcJVxde21heC13aWR0aDo4MCV9Lm1heC13LVxbY2FsY1woMTAwdnctNDhweFwpXF17bWF4LXdpZHRoOmNhbGMoMTAwdncgLSA0OHB4KX0ubWF4LXctbGd7bWF4LXdpZHRoOjMycmVtfS5tYXgtdy1tYXh7bWF4LXdpZHRoOi1tb3otbWF4LWNvbnRlbnQ7bWF4LXdpZHRoOm1heC1jb250ZW50fS5tYXgtdy14bHttYXgtd2lkdGg6MzZyZW19LmZsZXgtMXtmbGV4OjEgMSAwJX0uZmxleC1zaHJpbmstMCwuc2hyaW5rLTB7ZmxleC1zaHJpbms6MH0uZ3Jvd3tmbGV4LWdyb3c6MX0uZ3Jvdy0we2ZsZXgtZ3JvdzowfS5iYXNpcy1mdWxse2ZsZXgtYmFzaXM6MTAwJX0uY2FwdGlvbi1ib3R0b217Y2FwdGlvbi1zaWRlOmJvdHRvbX0uYm9yZGVyLWNvbGxhcHNle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX0uLXRyYW5zbGF0ZS14LTFcLzJ7LS10dy10cmFuc2xhdGUteDogLTUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0uLXRyYW5zbGF0ZS14LTR7LS10dy10cmFuc2xhdGUteDogLTFyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9Li10cmFuc2xhdGUteC1weHstLXR3LXRyYW5zbGF0ZS14OiAtMXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS4tdHJhbnNsYXRlLXktMVwvMnstLXR3LXRyYW5zbGF0ZS15OiAtNTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS50cmFuc2xhdGUteC00ey0tdHctdHJhbnNsYXRlLXg6IDFyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LnRyYW5zbGF0ZS14LVxbLTUwXCVcXXstLXR3LXRyYW5zbGF0ZS14OiAtNTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS50cmFuc2xhdGUteC1weHstLXR3LXRyYW5zbGF0ZS14OiAxcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LnRyYW5zbGF0ZS15LVxbLTUwXCVcXXstLXR3LXRyYW5zbGF0ZS15OiAtNTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5yb3RhdGUtNDV7LS10dy1yb3RhdGU6IDQ1ZGVnO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5yb3RhdGUtOTB7LS10dy1yb3RhdGU6IDkwZGVnO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS50cmFuc2Zvcm17dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9QGtleWZyYW1lcyBwdWxzZXs1MCV7b3BhY2l0eTouNX19LmFuaW1hdGUtcHVsc2V7YW5pbWF0aW9uOnB1bHNlIDJzIGN1YmljLWJlemllciguNCwwLC42LDEpIGluZmluaXRlfUBrZXlmcmFtZXMgc3Bpbnt0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5hbmltYXRlLXNwaW57YW5pbWF0aW9uOnNwaW4gMXMgbGluZWFyIGluZmluaXRlfS5jdXJzb3ItZGVmYXVsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LnRvdWNoLW5vbmV7dG91Y2gtYWN0aW9uOm5vbmV9LnNlbGVjdC1ub25ley13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0ubGlzdC1ub25le2xpc3Qtc3R5bGUtdHlwZTpub25lfS5ncmlkLWNvbHMtMXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDEsbWlubWF4KDAsMWZyKSl9LmdyaWQtY29scy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX0uZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmZsZXgtY29sLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9LmZsZXgtd3JhcHtmbGV4LXdyYXA6d3JhcH0uaXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uaXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2h9Lmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmp1c3RpZnktZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uanVzdGlmeS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uanVzdGlmeS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5nYXAtMFwuNXtnYXA6LjEyNXJlbX0uZ2FwLTF7Z2FwOi4yNXJlbX0uZ2FwLTFcLjV7Z2FwOi4zNzVyZW19LmdhcC0ye2dhcDouNXJlbX0uZ2FwLTJcLjV7Z2FwOi42MjVyZW19LmdhcC0ze2dhcDouNzVyZW19LmdhcC00e2dhcDoxcmVtfS5nYXAtNXtnYXA6MS4yNXJlbX0uZ2FwLTZ7Z2FwOjEuNXJlbX0uZ2FwLTh7Z2FwOjJyZW19LnNwYWNlLXgtMT46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDttYXJnaW4tcmlnaHQ6Y2FsYyguMjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTttYXJnaW4tbGVmdDpjYWxjKC4yNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKX0uc3BhY2UteC00Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctc3BhY2UteC1yZXZlcnNlOiAwO21hcmdpbi1yaWdodDpjYWxjKDFyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTttYXJnaW4tbGVmdDpjYWxjKDFyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSl9LnNwYWNlLXktMT46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoLjI1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYyguMjVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX0uc3BhY2UteS0xXC41Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctc3BhY2UteS1yZXZlcnNlOiAwO21hcmdpbi10b3A6Y2FsYyguMzc1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYyguMzc1cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktMj46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJvdHRvbTpjYWxjKC41cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktMlwuNT46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoLjYyNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoLjYyNXJlbSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfS5zcGFjZS15LTM+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1zcGFjZS15LXJldmVyc2U6IDA7bWFyZ2luLXRvcDpjYWxjKC43NXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoLjc1cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktND46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoMXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoMXJlbSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpfS5zcGFjZS15LTY+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1zcGFjZS15LXJldmVyc2U6IDA7bWFyZ2luLXRvcDpjYWxjKDEuNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTttYXJnaW4tYm90dG9tOmNhbGMoMS41cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSl9Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3ctaGlkZGVue292ZXJmbG93OmhpZGRlbn0ub3ZlcmZsb3cteC1hdXRve292ZXJmbG93LXg6YXV0b30ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ub3ZlcmZsb3cteC1oaWRkZW57b3ZlcmZsb3cteDpoaWRkZW59LndoaXRlc3BhY2Utbm93cmFwe3doaXRlLXNwYWNlOm5vd3JhcH0uYnJlYWstd29yZHN7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS5yb3VuZGVke2JvcmRlci1yYWRpdXM6LjI1cmVtfS5yb3VuZGVkLTJ4bHtib3JkZXItcmFkaXVzOjFyZW19LnJvdW5kZWQtXFsycHhcXXtib3JkZXItcmFkaXVzOjJweH0ucm91bmRlZC1cW2luaGVyaXRcXXtib3JkZXItcmFkaXVzOmluaGVyaXR9LnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjk5OTlweH0ucm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyl9LnJvdW5kZWQtbWR7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5yb3VuZGVkLXNte2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gNHB4KX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOi43NXJlbX0ucm91bmRlZC10LTJ4bHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjFyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MXJlbX0ucm91bmRlZC10LVxbMTBweFxde2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MTBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czoxMHB4fS5yb3VuZGVkLWJsLW1ke2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KX0ucm91bmRlZC1ici1tZHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5yb3VuZGVkLXRsLXNte2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gNHB4KX0uYm9yZGVye2JvcmRlci13aWR0aDoxcHh9LmJvcmRlci0ye2JvcmRlci13aWR0aDoycHh9LmJvcmRlci1cWzFcLjVweFxde2JvcmRlci13aWR0aDoxLjVweH0uYm9yZGVyLXl7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LmJvcmRlci1ie2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ib3JkZXItbHtib3JkZXItbGVmdC13aWR0aDoxcHh9LmJvcmRlci1ye2JvcmRlci1yaWdodC13aWR0aDoxcHh9LmJvcmRlci10e2JvcmRlci10b3Atd2lkdGg6MXB4fS5ib3JkZXItZGFzaGVke2JvcmRlci1zdHlsZTpkYXNoZWR9LmJvcmRlci1cWy0tY29sb3ItYm9yZGVyXF17Ym9yZGVyLWNvbG9yOnZhcigtLWNvbG9yLWJvcmRlcil9LmJvcmRlci1hY2NlbnRcLzMwe2JvcmRlci1jb2xvcjpoc2wodmFyKC0tYWNjZW50KSAvIC4zKX0uYm9yZGVyLWJvcmRlcntib3JkZXItY29sb3I6aHNsKHZhcigtLWJvcmRlcikpfS5ib3JkZXItYm9yZGVyXC81MHtib3JkZXItY29sb3I6aHNsKHZhcigtLWJvcmRlcikgLyAuNSl9LmJvcmRlci1kZXN0cnVjdGl2ZXtib3JkZXItY29sb3I6aHNsKHZhcigtLWRlc3RydWN0aXZlKSl9LmJvcmRlci1kZXN0cnVjdGl2ZVwvNTB7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkgLyAuNSl9LmJvcmRlci1pbnB1dHtib3JkZXItY29sb3I6aHNsKHZhcigtLWlucHV0KSl9LmJvcmRlci1wcmltYXJ5e2JvcmRlci1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfS5ib3JkZXItcHJpbWFyeVwvMTB7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSAvIC4xKX0uYm9yZGVyLXByaW1hcnlcLzIwe2JvcmRlci1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkgLyAuMil9LmJvcmRlci1zaWRlYmFyLWJvcmRlcntib3JkZXItY29sb3I6aHNsKHZhcigtLXNpZGViYXItYm9yZGVyKSl9LmJvcmRlci10cmFuc3BhcmVudHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmJvcmRlci1sLXRyYW5zcGFyZW50e2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50fS5ib3JkZXItdC10cmFuc3BhcmVudHtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50fS5iZy1cWy0tY29sb3ItYmdcXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLWJnKX0uYmctYWNjZW50e2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfS5iZy1hY2NlbnRcLzEwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkgLyAuMSl9LmJnLWFjY2VudFwvMTV7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYWNjZW50KSAvIC4xNSl9LmJnLWFjY2VudFwvNXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1hY2NlbnQpIC8gLjA1KX0uYmctYWNjZW50XC84MHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1hY2NlbnQpIC8gLjgpfS5iZy1hY2NlbnRcLzkwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkgLyAuOSl9LmJnLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYmFja2dyb3VuZCkpfS5iZy1iYWNrZ3JvdW5kXC83MHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1iYWNrZ3JvdW5kKSAvIC43KX0uYmctYmFja2dyb3VuZFwvOTV7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYmFja2dyb3VuZCkgLyAuOTUpfS5iZy1ibGFja1wvODB7YmFja2dyb3VuZC1jb2xvcjojMDAwY30uYmctYm9yZGVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWJvcmRlcikpfS5iZy1jYXJke2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWNhcmQpKX0uYmctY2FyZFwvODB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tY2FyZCkgLyAuOCl9LmJnLWNhcmRcLzkwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWNhcmQpIC8gLjkpfS5iZy1kZXN0cnVjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfS5iZy1kZXN0cnVjdGl2ZVwvODB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpIC8gLjgpfS5iZy1mb3JlZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWZvcmVncm91bmQpKX0uYmctbXV0ZWR7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tbXV0ZWQpKX0uYmctbXV0ZWRcLzUwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLW11dGVkKSAvIC41KX0uYmctcG9wb3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wb3BvdmVyKSl9LmJnLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfS5iZy1wcmltYXJ5LWZvcmVncm91bmRcLzIwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnktZm9yZWdyb3VuZCkgLyAuMil9LmJnLXByaW1hcnlcLzEwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnkpIC8gLjEpfS5iZy1wcmltYXJ5XC81e2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnkpIC8gLjA1KX0uYmctcHJpbWFyeVwvNjB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkgLyAuNil9LmJnLXByaW1hcnlcLzgwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnkpIC8gLjgpfS5iZy1wcmltYXJ5XC85MHtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSAvIC45KX0uYmctc2Vjb25kYXJ5e2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXNlY29uZGFyeSkpfS5iZy1zZWNvbmRhcnlcLzUwe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXNlY29uZGFyeSkgLyAuNSl9LmJnLXNlY29uZGFyeVwvODB7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2Vjb25kYXJ5KSAvIC44KX0uYmctc2lkZWJhcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1zaWRlYmFyLWJhY2tncm91bmQpKX0uYmctc2lkZWJhci1ib3JkZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2lkZWJhci1ib3JkZXIpKX0uYmctdHJhbnNwYXJlbnR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYmctZ3JhZGllbnQtdG8tYnJ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tIHJpZ2h0LHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSl9LmJnLWdyYWRpZW50LXRvLWx7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCx2YXIoLS10dy1ncmFkaWVudC1zdG9wcykpfS5iZy1ncmFkaWVudC10by1ye2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSl9LmJnLWdyYWRpZW50LXRvLXR7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gdG9wLHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSl9LmZyb20tYWNjZW50XC8xMHstLXR3LWdyYWRpZW50LWZyb206IGhzbCh2YXIoLS1hY2NlbnQpIC8gLjEpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1hY2NlbnQpIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmZyb20tYWNjZW50XC81ey0tdHctZ3JhZGllbnQtZnJvbTogaHNsKHZhcigtLWFjY2VudCkgLyAuMDUpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1hY2NlbnQpIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmZyb20tYmFja2dyb3VuZHstLXR3LWdyYWRpZW50LWZyb206IGhzbCh2YXIoLS1iYWNrZ3JvdW5kKSkgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogaHNsKHZhcigtLWJhY2tncm91bmQpIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmZyb20tZm9yZWdyb3VuZFwvNTB7LS10dy1ncmFkaWVudC1mcm9tOiBoc2wodmFyKC0tZm9yZWdyb3VuZCkgLyAuNSkgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogaHNsKHZhcigtLWZvcmVncm91bmQpIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmZyb20tZm9yZWdyb3VuZFwvNzB7LS10dy1ncmFkaWVudC1mcm9tOiBoc2wodmFyKC0tZm9yZWdyb3VuZCkgLyAuNykgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogaHNsKHZhcigtLWZvcmVncm91bmQpIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LmZyb20tZm9yZWdyb3VuZFwvOTV7LS10dy1ncmFkaWVudC1mcm9tOiBoc2wodmFyKC0tZm9yZWdyb3VuZCkgLyAuOTUpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1mb3JlZ3JvdW5kKSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5mcm9tLXByaW1hcnl7LS10dy1ncmFkaWVudC1mcm9tOiBoc2wodmFyKC0tcHJpbWFyeSkpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1wcmltYXJ5KSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5mcm9tLXByaW1hcnlcLzEwey0tdHctZ3JhZGllbnQtZnJvbTogaHNsKHZhcigtLXByaW1hcnkpIC8gLjEpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1wcmltYXJ5KSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5mcm9tLXByaW1hcnlcLzIwey0tdHctZ3JhZGllbnQtZnJvbTogaHNsKHZhcigtLXByaW1hcnkpIC8gLjIpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1wcmltYXJ5KSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5mcm9tLXByaW1hcnlcLzV7LS10dy1ncmFkaWVudC1mcm9tOiBoc2wodmFyKC0tcHJpbWFyeSkgLyAuMDUpIHZhcigtLXR3LWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1wcmltYXJ5KSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5mcm9tLXNlY29uZGFyeVwvODB7LS10dy1ncmFkaWVudC1mcm9tOiBoc2wodmFyKC0tc2Vjb25kYXJ5KSAvIC44KSB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXRvOiBoc2wodmFyKC0tc2Vjb25kYXJ5KSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS5mcm9tLXRyYW5zcGFyZW50ey0tdHctZ3JhZGllbnQtZnJvbTogdHJhbnNwYXJlbnQgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogcmdiKDAgMCAwIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LnZpYS1jYXJkey0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1jYXJkKSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgaHNsKHZhcigtLWNhcmQpKSB2YXIoLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LnZpYS1mb3JlZ3JvdW5kXC8xMHstLXR3LWdyYWRpZW50LXRvOiBoc2wodmFyKC0tZm9yZWdyb3VuZCkgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIGhzbCh2YXIoLS1mb3JlZ3JvdW5kKSAvIC4xKSB2YXIoLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LnZpYS1mb3JlZ3JvdW5kXC83NXstLXR3LWdyYWRpZW50LXRvOiBoc2wodmFyKC0tZm9yZWdyb3VuZCkgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIGhzbCh2YXIoLS1mb3JlZ3JvdW5kKSAvIC43NSkgdmFyKC0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS52aWEtcHJpbWFyeVwvNDB7LS10dy1ncmFkaWVudC10bzogaHNsKHZhcigtLXByaW1hcnkpIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCBoc2wodmFyKC0tcHJpbWFyeSkgLyAuNCkgdmFyKC0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pfS52aWEtdHJhbnNwYXJlbnR7LS10dy1ncmFkaWVudC10bzogcmdiKDAgMCAwIC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB0cmFuc3BhcmVudCB2YXIoLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LnRvLWFjY2VudHstLXR3LWdyYWRpZW50LXRvOiBoc2wodmFyKC0tYWNjZW50KSkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pfS50by1hY2NlbnRcLzEwey0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1hY2NlbnQpIC8gLjEpIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKX0udG8tYWNjZW50XC81ey0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1hY2NlbnQpIC8gLjA1KSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LnRvLWZvcmVncm91bmRcLzMwey0tdHctZ3JhZGllbnQtdG86IGhzbCh2YXIoLS1mb3JlZ3JvdW5kKSAvIC4zKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LnRvLXByaW1hcnlcLzV7LS10dy1ncmFkaWVudC10bzogaHNsKHZhcigtLXByaW1hcnkpIC8gLjA1KSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbil9LnRvLXRyYW5zcGFyZW50ey0tdHctZ3JhZGllbnQtdG86IHRyYW5zcGFyZW50IHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKX0uZmlsbC1jdXJyZW50e2ZpbGw6Y3VycmVudENvbG9yfS5vYmplY3QtY292ZXJ7LW8tb2JqZWN0LWZpdDpjb3ZlcjtvYmplY3QtZml0OmNvdmVyfS5wLTB7cGFkZGluZzowfS5wLTF7cGFkZGluZzouMjVyZW19LnAtMntwYWRkaW5nOi41cmVtfS5wLTN7cGFkZGluZzouNzVyZW19LnAtNHtwYWRkaW5nOjFyZW19LnAtNntwYWRkaW5nOjEuNXJlbX0ucC04e3BhZGRpbmc6MnJlbX0ucC1cWzFweFxde3BhZGRpbmc6MXB4fS5weC0xe3BhZGRpbmctbGVmdDouMjVyZW07cGFkZGluZy1yaWdodDouMjVyZW19LnB4LTJ7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW19LnB4LTJcLjV7cGFkZGluZy1sZWZ0Oi42MjVyZW07cGFkZGluZy1yaWdodDouNjI1cmVtfS5weC0ze3BhZGRpbmctbGVmdDouNzVyZW07cGFkZGluZy1yaWdodDouNzVyZW19LnB4LTR7cGFkZGluZy1sZWZ0OjFyZW07cGFkZGluZy1yaWdodDoxcmVtfS5weC01e3BhZGRpbmctbGVmdDoxLjI1cmVtO3BhZGRpbmctcmlnaHQ6MS4yNXJlbX0ucHgtNntwYWRkaW5nLWxlZnQ6MS41cmVtO3BhZGRpbmctcmlnaHQ6MS41cmVtfS5weC04e3BhZGRpbmctbGVmdDoycmVtO3BhZGRpbmctcmlnaHQ6MnJlbX0ucHktMFwuNXtwYWRkaW5nLXRvcDouMTI1cmVtO3BhZGRpbmctYm90dG9tOi4xMjVyZW19LnB5LTF7cGFkZGluZy10b3A6LjI1cmVtO3BhZGRpbmctYm90dG9tOi4yNXJlbX0ucHktMVwuNXtwYWRkaW5nLXRvcDouMzc1cmVtO3BhZGRpbmctYm90dG9tOi4zNzVyZW19LnB5LTE2e3BhZGRpbmctdG9wOjRyZW07cGFkZGluZy1ib3R0b206NHJlbX0ucHktMntwYWRkaW5nLXRvcDouNXJlbTtwYWRkaW5nLWJvdHRvbTouNXJlbX0ucHktMlwuNXtwYWRkaW5nLXRvcDouNjI1cmVtO3BhZGRpbmctYm90dG9tOi42MjVyZW19LnB5LTIwe3BhZGRpbmctdG9wOjVyZW07cGFkZGluZy1ib3R0b206NXJlbX0ucHktMjR7cGFkZGluZy10b3A6NnJlbTtwYWRkaW5nLWJvdHRvbTo2cmVtfS5weS0ze3BhZGRpbmctdG9wOi43NXJlbTtwYWRkaW5nLWJvdHRvbTouNzVyZW19LnB5LTR7cGFkZGluZy10b3A6MXJlbTtwYWRkaW5nLWJvdHRvbToxcmVtfS5weS01e3BhZGRpbmctdG9wOjEuMjVyZW07cGFkZGluZy1ib3R0b206MS4yNXJlbX0ucHktNntwYWRkaW5nLXRvcDoxLjVyZW07cGFkZGluZy1ib3R0b206MS41cmVtfS5wYi0ze3BhZGRpbmctYm90dG9tOi43NXJlbX0ucGItNHtwYWRkaW5nLWJvdHRvbToxcmVtfS5wYi01e3BhZGRpbmctYm90dG9tOjEuMjVyZW19LnBsLTJcLjV7cGFkZGluZy1sZWZ0Oi42MjVyZW19LnBsLTR7cGFkZGluZy1sZWZ0OjFyZW19LnBsLTh7cGFkZGluZy1sZWZ0OjJyZW19LnByLTJ7cGFkZGluZy1yaWdodDouNXJlbX0ucHItMlwuNXtwYWRkaW5nLXJpZ2h0Oi42MjVyZW19LnByLTh7cGFkZGluZy1yaWdodDoycmVtfS5wdC0we3BhZGRpbmctdG9wOjB9LnB0LTF7cGFkZGluZy10b3A6LjI1cmVtfS5wdC0xXC41e3BhZGRpbmctdG9wOi4zNzVyZW19LnB0LTIwe3BhZGRpbmctdG9wOjVyZW19LnB0LTI4e3BhZGRpbmctdG9wOjdyZW19LnB0LTN7cGFkZGluZy10b3A6Ljc1cmVtfS5wdC00e3BhZGRpbmctdG9wOjFyZW19LnB0LTh7cGFkZGluZy10b3A6MnJlbX0udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtc3RhcnR7dGV4dC1hbGlnbjpzdGFydH0uYWxpZ24tbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZm9udC1ib2R5e2ZvbnQtZmFtaWx5OkRNIFNhbnMsc2Fucy1zZXJpZn0uZm9udC1kaXNwbGF5e2ZvbnQtZmFtaWx5OlBsYXlmYWlyIERpc3BsYXksc2VyaWZ9LmZvbnQtbW9ub3tmb250LWZhbWlseTp1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLExpYmVyYXRpb24gTW9ubyxDb3VyaWVyIE5ldyxtb25vc3BhY2V9LnRleHQtMnhse2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC0zeGx7Zm9udC1zaXplOjEuODc1cmVtO2xpbmUtaGVpZ2h0OjIuMjVyZW19LnRleHQtNHhse2ZvbnQtc2l6ZToyLjI1cmVtO2xpbmUtaGVpZ2h0OjIuNXJlbX0udGV4dC01eGx7Zm9udC1zaXplOjNyZW07bGluZS1oZWlnaHQ6MX0udGV4dC1cWzBcLjhyZW1cXXtmb250LXNpemU6LjhyZW19LnRleHQtXFsxMHB4XF17Zm9udC1zaXplOjEwcHh9LnRleHQtYmFzZXtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjVyZW19LnRleHQtbGd7Zm9udC1zaXplOjEuMTI1cmVtO2xpbmUtaGVpZ2h0OjEuNzVyZW19LnRleHQtc217Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS4yNXJlbX0udGV4dC14bHtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoxLjc1cmVtfS50ZXh0LXhze2ZvbnQtc2l6ZTouNzVyZW07bGluZS1oZWlnaHQ6MXJlbX0uZm9udC1ib2xke2ZvbnQtd2VpZ2h0OjcwMH0uZm9udC1tZWRpdW17Zm9udC13ZWlnaHQ6NTAwfS5mb250LW5vcm1hbHtmb250LXdlaWdodDo0MDB9LmZvbnQtc2VtaWJvbGR7Zm9udC13ZWlnaHQ6NjAwfS51cHBlcmNhc2V7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LnRhYnVsYXItbnVtc3stLXR3LW51bWVyaWMtc3BhY2luZzogdGFidWxhci1udW1zO2ZvbnQtdmFyaWFudC1udW1lcmljOnZhcigtLXR3LW9yZGluYWwpIHZhcigtLXR3LXNsYXNoZWQtemVybykgdmFyKC0tdHctbnVtZXJpYy1maWd1cmUpIHZhcigtLXR3LW51bWVyaWMtc3BhY2luZykgdmFyKC0tdHctbnVtZXJpYy1mcmFjdGlvbil9LmxlYWRpbmctXFsxXC4xXF17bGluZS1oZWlnaHQ6MS4xfS5sZWFkaW5nLW5vbmV7bGluZS1oZWlnaHQ6MX0ubGVhZGluZy1yZWxheGVke2xpbmUtaGVpZ2h0OjEuNjI1fS5sZWFkaW5nLXNudWd7bGluZS1oZWlnaHQ6MS4zNzV9LmxlYWRpbmctdGlnaHR7bGluZS1oZWlnaHQ6MS4yNX0udHJhY2tpbmctdGlnaHR7bGV0dGVyLXNwYWNpbmc6LS4wMjVlbX0udHJhY2tpbmctd2lkZXJ7bGV0dGVyLXNwYWNpbmc6LjA1ZW19LnRyYWNraW5nLXdpZGVzdHtsZXR0ZXItc3BhY2luZzouMWVtfS50ZXh0LWFjY2VudHtjb2xvcjpoc2wodmFyKC0tYWNjZW50KSl9LnRleHQtYWNjZW50LWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKSl9LnRleHQtY2FyZC1mb3JlZ3JvdW5ke2NvbG9yOmhzbCh2YXIoLS1jYXJkLWZvcmVncm91bmQpKX0udGV4dC1jdXJyZW50e2NvbG9yOmN1cnJlbnRDb2xvcn0udGV4dC1kZXN0cnVjdGl2ZXtjb2xvcjpoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpKX0udGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5ke2NvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kKSl9LnRleHQtZm9yZWdyb3VuZHtjb2xvcjpoc2wodmFyKC0tZm9yZWdyb3VuZCkpfS50ZXh0LWZvcmVncm91bmRcLzUwe2NvbG9yOmhzbCh2YXIoLS1mb3JlZ3JvdW5kKSAvIC41KX0udGV4dC1tdXRlZC1mb3JlZ3JvdW5ke2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwvNjB7Y29sb3I6aHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpIC8gLjYpfS50ZXh0LW11dGVkLWZvcmVncm91bmRcLzcwe2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSAvIC43KX0udGV4dC1wb3BvdmVyLWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLXBvcG92ZXItZm9yZWdyb3VuZCkpfS50ZXh0LXByaW1hcnl7Y29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX0udGV4dC1wcmltYXJ5LWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLXByaW1hcnktZm9yZWdyb3VuZCkpfS50ZXh0LXByaW1hcnlcLzMwe2NvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSAvIC4zKX0udGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZHtjb2xvcjpoc2wodmFyKC0tc2Vjb25kYXJ5LWZvcmVncm91bmQpKX0udGV4dC1zaWRlYmFyLWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLXNpZGViYXItZm9yZWdyb3VuZCkpfS50ZXh0LXNpZGViYXItZm9yZWdyb3VuZFwvNzB7Y29sb3I6aHNsKHZhcigtLXNpZGViYXItZm9yZWdyb3VuZCkgLyAuNyl9LnRleHQtd2hpdGV7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnVuZGVybGluZXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LnVuZGVybGluZS1vZmZzZXQtNHt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6NHB4fS5vcGFjaXR5LTB7b3BhY2l0eTowfS5vcGFjaXR5LTUwe29wYWNpdHk6LjV9Lm9wYWNpdHktNjB7b3BhY2l0eTouNn0ub3BhY2l0eS03MHtvcGFjaXR5Oi43fS5vcGFjaXR5LTgwe29wYWNpdHk6Ljh9Lm9wYWNpdHktOTB7b3BhY2l0eTouOX0uc2hhZG93LTJ4bHstLXR3LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gLjI1KTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDI1cHggNTBweCAtMTJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cWzBfMF8wXzFweF9oc2xcKHZhclwoLS1zaWRlYmFyLWJvcmRlclwpXClcXXstLXR3LXNoYWRvdzogMCAwIDAgMXB4IGhzbCh2YXIoLS1zaWRlYmFyLWJvcmRlcikpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMCAwIDFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1sZ3stLXR3LXNoYWRvdzogMCAxMHB4IDE1cHggLTNweCByZ2IoMCAwIDAgLyAuMSksIDAgNHB4IDZweCAtNHB4IHJnYigwIDAgMCAvIC4xKTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDEwcHggMTVweCAtM3B4IHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgNHB4IDZweCAtNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LW1key0tdHctc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIC4xKTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDRweCA2cHggLTFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpLCAwIDJweCA0cHggLTJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1ub25ley0tdHctc2hhZG93OiAwIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3JlZDogMCAwICMwMDAwO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1zbXstLXR3LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gLjA1KTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDFweCAycHggMCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy14bHstLXR3LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAuMSksIDAgOHB4IDEwcHggLTZweCByZ2IoMCAwIDAgLyAuMSk7LS10dy1zaGFkb3ctY29sb3JlZDogMCAyMHB4IDI1cHggLTVweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpLCAwIDhweCAxMHB4IC02cHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5zaGFkb3ctXFt2YXJcKC0tY2FyZC1zaGFkb3dcKVxdey0tdHctc2hhZG93LWNvbG9yOiB2YXIoLS1jYXJkLXNoYWRvdyk7LS10dy1zaGFkb3c6IHZhcigtLXR3LXNoYWRvdy1jb2xvcmVkKX0uc2hhZG93LVxbdmFyXCgtLWdsb3ctc2hhZG93XClcXXstLXR3LXNoYWRvdy1jb2xvcjogdmFyKC0tZ2xvdy1zaGFkb3cpOy0tdHctc2hhZG93OiB2YXIoLS10dy1zaGFkb3ctY29sb3JlZCl9Lm91dGxpbmUtbm9uZXtvdXRsaW5lOjJweCBzb2xpZCB0cmFuc3BhcmVudDtvdXRsaW5lLW9mZnNldDoycHh9Lm91dGxpbmV7b3V0bGluZS1zdHlsZTpzb2xpZH0ucmluZy0wey0tdHctcmluZy1vZmZzZXQtc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkgdmFyKC0tdHctcmluZy1vZmZzZXQtY29sb3IpOy0tdHctcmluZy1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMHB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdywgMCAwICMwMDAwKX0ucmluZy0yey0tdHctcmluZy1vZmZzZXQtc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkgdmFyKC0tdHctcmluZy1vZmZzZXQtY29sb3IpOy0tdHctcmluZy1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdywgMCAwICMwMDAwKX0ucmluZy1wcmltYXJ5XC8yMHstLXR3LXJpbmctY29sb3I6IGhzbCh2YXIoLS1wcmltYXJ5KSAvIC4yKX0ucmluZy1yaW5ney0tdHctcmluZy1jb2xvcjogaHNsKHZhcigtLXJpbmcpKX0ucmluZy1zaWRlYmFyLXJpbmd7LS10dy1yaW5nLWNvbG9yOiBoc2wodmFyKC0tc2lkZWJhci1yaW5nKSl9LnJpbmctb2Zmc2V0LWJhY2tncm91bmR7LS10dy1yaW5nLW9mZnNldC1jb2xvcjogaHNsKHZhcigtLWJhY2tncm91bmQpKX0uYmx1ci1cWzEwMHB4XF17LS10dy1ibHVyOiBibHVyKDEwMHB4KTtmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmx1ci1cWzEyMHB4XF17LS10dy1ibHVyOiBibHVyKDEyMHB4KTtmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmx1ci1cWzE1MHB4XF17LS10dy1ibHVyOiBibHVyKDE1MHB4KTtmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmx1ci1cWzE4MHB4XF17LS10dy1ibHVyOiBibHVyKDE4MHB4KTtmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmx1ci1cWzYwcHhcXXstLXR3LWJsdXI6IGJsdXIoNjBweCk7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmJsdXItc217LS10dy1ibHVyOiBibHVyKDRweCk7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmRyb3Atc2hhZG93LWxney0tdHctZHJvcC1zaGFkb3c6IGRyb3Atc2hhZG93KDAgMTBweCA4cHggcmdiKDAgMCAwIC8gLjA0KSkgZHJvcC1zaGFkb3coMCA0cHggM3B4IHJnYigwIDAgMCAvIC4xKSk7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmFja2Ryb3AtYmx1ci1tZHstLXR3LWJhY2tkcm9wLWJsdXI6IGJsdXIoMTJweCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyKSB2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzKSB2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCkgdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlKSB2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlKSB2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQpIHZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHkpIHZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlKSB2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSl9LmJhY2tkcm9wLWJsdXItc217LS10dy1iYWNrZHJvcC1ibHVyOiBibHVyKDRweCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyKSB2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzKSB2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCkgdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlKSB2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlKSB2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQpIHZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHkpIHZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlKSB2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSl9LmJhY2tkcm9wLWJsdXIteGx7LS10dy1iYWNrZHJvcC1ibHVyOiBibHVyKDI0cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0KSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLGJhY2tkcm9wLWZpbHRlcjt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlcixiYWNrZHJvcC1maWx0ZXIsLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLVxbbGVmdFwscmlnaHRcLHdpZHRoXF17dHJhbnNpdGlvbi1wcm9wZXJ0eTpsZWZ0LHJpZ2h0LHdpZHRoO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30udHJhbnNpdGlvbi1cW21hcmdpblwsb3BhXF17dHJhbnNpdGlvbi1wcm9wZXJ0eTptYXJnaW4sb3BhO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30udHJhbnNpdGlvbi1cW3dpZHRoXCxoZWlnaHRcLHBhZGRpbmdcXXt0cmFuc2l0aW9uLXByb3BlcnR5OndpZHRoLGhlaWdodCxwYWRkaW5nO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30udHJhbnNpdGlvbi1cW3dpZHRoXF17dHJhbnNpdGlvbi1wcm9wZXJ0eTp3aWR0aDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LnRyYW5zaXRpb24tYWxse3RyYW5zaXRpb24tcHJvcGVydHk6YWxsO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30udHJhbnNpdGlvbi1jb2xvcnN7dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2U7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLW9wYWNpdHl7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30udHJhbnNpdGlvbi1zaGFkb3d7dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3gtc2hhZG93O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30udHJhbnNpdGlvbi10cmFuc2Zvcm17dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm07dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS5kdXJhdGlvbi0xMDAwe3RyYW5zaXRpb24tZHVyYXRpb246MXN9LmR1cmF0aW9uLTIwMHt0cmFuc2l0aW9uLWR1cmF0aW9uOi4yc30uZHVyYXRpb24tMzAwe3RyYW5zaXRpb24tZHVyYXRpb246LjNzfS5kdXJhdGlvbi01MDB7dHJhbnNpdGlvbi1kdXJhdGlvbjouNXN9LmR1cmF0aW9uLTcwMHt0cmFuc2l0aW9uLWR1cmF0aW9uOi43c30uZWFzZS1pbi1vdXR7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LmVhc2UtbGluZWFye3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcn1Aa2V5ZnJhbWVzIGVudGVyezAle29wYWNpdHk6dmFyKC0tdHctZW50ZXItb3BhY2l0eSwgMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKHZhcigtLXR3LWVudGVyLXRyYW5zbGF0ZS14LCAwKSx2YXIoLS10dy1lbnRlci10cmFuc2xhdGUteSwgMCksMCkgc2NhbGUzZCh2YXIoLS10dy1lbnRlci1zY2FsZSwgMSksdmFyKC0tdHctZW50ZXItc2NhbGUsIDEpLHZhcigtLXR3LWVudGVyLXNjYWxlLCAxKSkgcm90YXRlKHZhcigtLXR3LWVudGVyLXJvdGF0ZSwgMCkpfX1Aa2V5ZnJhbWVzIGV4aXR7dG97b3BhY2l0eTp2YXIoLS10dy1leGl0LW9wYWNpdHksIDEpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCh2YXIoLS10dy1leGl0LXRyYW5zbGF0ZS14LCAwKSx2YXIoLS10dy1leGl0LXRyYW5zbGF0ZS15LCAwKSwwKSBzY2FsZTNkKHZhcigtLXR3LWV4aXQtc2NhbGUsIDEpLHZhcigtLXR3LWV4aXQtc2NhbGUsIDEpLHZhcigtLXR3LWV4aXQtc2NhbGUsIDEpKSByb3RhdGUodmFyKC0tdHctZXhpdC1yb3RhdGUsIDApKX19LmFuaW1hdGUtaW57YW5pbWF0aW9uLW5hbWU6ZW50ZXI7YW5pbWF0aW9uLWR1cmF0aW9uOi4xNXM7LS10dy1lbnRlci1vcGFjaXR5OiBpbml0aWFsOy0tdHctZW50ZXItc2NhbGU6IGluaXRpYWw7LS10dy1lbnRlci1yb3RhdGU6IGluaXRpYWw7LS10dy1lbnRlci10cmFuc2xhdGUteDogaW5pdGlhbDstLXR3LWVudGVyLXRyYW5zbGF0ZS15OiBpbml0aWFsfS5mYWRlLWluLTB7LS10dy1lbnRlci1vcGFjaXR5OiAwfS5mYWRlLWluLTgwey0tdHctZW50ZXItb3BhY2l0eTogLjh9Lnpvb20taW4tOTV7LS10dy1lbnRlci1zY2FsZTogLjk1fS5kdXJhdGlvbi0xMDAwe2FuaW1hdGlvbi1kdXJhdGlvbjoxc30uZHVyYXRpb24tMjAwe2FuaW1hdGlvbi1kdXJhdGlvbjouMnN9LmR1cmF0aW9uLTMwMHthbmltYXRpb24tZHVyYXRpb246LjNzfS5kdXJhdGlvbi01MDB7YW5pbWF0aW9uLWR1cmF0aW9uOi41c30uZHVyYXRpb24tNzAwe2FuaW1hdGlvbi1kdXJhdGlvbjouN3N9LmVhc2UtaW4tb3V0e2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LmVhc2UtbGluZWFye2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyfS5maWxlXDpib3JkZXItMDo6ZmlsZS1zZWxlY3Rvci1idXR0b257Ym9yZGVyLXdpZHRoOjBweH0uZmlsZVw6YmctdHJhbnNwYXJlbnQ6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmZpbGVcOnRleHQtc206OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19LmZpbGVcOmZvbnQtbWVkaXVtOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntmb250LXdlaWdodDo1MDB9LmZpbGVcOnRleHQtZm9yZWdyb3VuZDo6ZmlsZS1zZWxlY3Rvci1idXR0b257Y29sb3I6aHNsKHZhcigtLWZvcmVncm91bmQpKX0ucGxhY2Vob2xkZXJcOnRleHQtbXV0ZWQtZm9yZWdyb3VuZDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpfS5wbGFjZWhvbGRlclw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kOjpwbGFjZWhvbGRlcntjb2xvcjpoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpfS5hZnRlclw6YWJzb2x1dGU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX0uYWZ0ZXJcOi1pbnNldC0yOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7dG9wOi0uNXJlbTtyaWdodDotLjVyZW07Ym90dG9tOi0uNXJlbTtsZWZ0Oi0uNXJlbX0uYWZ0ZXJcOmluc2V0LXktMDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RvcDowO2JvdHRvbTowfS5hZnRlclw6bGVmdC0xXC8yOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7bGVmdDo1MCV9LmFmdGVyXDp3LTE6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt3aWR0aDouMjVyZW19LmFmdGVyXDp3LVxbMnB4XF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt3aWR0aDoycHh9LmFmdGVyXDotdHJhbnNsYXRlLXgtMVwvMjphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctdHJhbnNsYXRlLXg6IC01MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LmZpcnN0XDpyb3VuZGVkLWwtbWQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KX0uZmlyc3RcOmJvcmRlci1sOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0LXdpZHRoOjFweH0ubGFzdFw6cm91bmRlZC1yLW1kOmxhc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5mb2N1cy13aXRoaW5cOnJlbGF0aXZlOmZvY3VzLXdpdGhpbntwb3NpdGlvbjpyZWxhdGl2ZX0uZm9jdXMtd2l0aGluXDp6LTIwOmZvY3VzLXdpdGhpbnt6LWluZGV4OjIwfS5ob3Zlclw6Ym9yZGVyLXByaW1hcnlcLzIwOmhvdmVye2JvcmRlci1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkgLyAuMil9LmhvdmVyXDpib3JkZXItcHJpbWFyeVwvMzA6aG92ZXJ7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSAvIC4zKX0uaG92ZXJcOmJnLWFjY2VudDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1hY2NlbnQpKX0uaG92ZXJcOmJnLWRlc3RydWN0aXZlXC84MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkgLyAuOCl9LmhvdmVyXDpiZy1kZXN0cnVjdGl2ZVwvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpIC8gLjkpfS5ob3Zlclw6YmctbXV0ZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tbXV0ZWQpKX0uaG92ZXJcOmJnLW11dGVkXC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1tdXRlZCkgLyAuNSl9LmhvdmVyXDpiZy1tdXRlZFwvODA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tbXV0ZWQpIC8gLjgpfS5ob3Zlclw6YmctcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9LmhvdmVyXDpiZy1wcmltYXJ5LWZvcmVncm91bmRcLzEwOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnktZm9yZWdyb3VuZCkgLyAuMSl9LmhvdmVyXDpiZy1wcmltYXJ5XC8xMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSAvIC4xKX0uaG92ZXJcOmJnLXByaW1hcnlcLzgwOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXByaW1hcnkpIC8gLjgpfS5ob3Zlclw6YmctcHJpbWFyeVwvOTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkgLyAuOSl9LmhvdmVyXDpiZy1zZWNvbmRhcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2Vjb25kYXJ5KSl9LmhvdmVyXDpiZy1zZWNvbmRhcnlcLzgwOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXNlY29uZGFyeSkgLyAuOCl9LmhvdmVyXDpiZy1zaWRlYmFyLWFjY2VudDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1zaWRlYmFyLWFjY2VudCkpfS5ob3Zlclw6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZDpob3Zlcntjb2xvcjpoc2wodmFyKC0tYWNjZW50LWZvcmVncm91bmQpKX0uaG92ZXJcOnRleHQtZm9yZWdyb3VuZDpob3Zlcntjb2xvcjpoc2wodmFyKC0tZm9yZWdyb3VuZCkpfS5ob3Zlclw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kOmhvdmVye2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LmhvdmVyXDp0ZXh0LXByaW1hcnk6aG92ZXJ7Y29sb3I6aHNsKHZhcigtLXByaW1hcnkpKX0uaG92ZXJcOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kOmhvdmVye2NvbG9yOmhzbCh2YXIoLS1wcmltYXJ5LWZvcmVncm91bmQpKX0uaG92ZXJcOnRleHQtcHJpbWFyeVwvOTA6aG92ZXJ7Y29sb3I6aHNsKHZhcigtLXByaW1hcnkpIC8gLjkpfS5ob3Zlclw6dGV4dC1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kOmhvdmVye2NvbG9yOmhzbCh2YXIoLS1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kKSl9LmhvdmVyXDp1bmRlcmxpbmU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS5ob3Zlclw6bm8tdW5kZXJsaW5lOmhvdmVye3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmV9LmhvdmVyXDpvcGFjaXR5LTEwMDpob3ZlcntvcGFjaXR5OjF9LmhvdmVyXDpvcGFjaXR5LTkwOmhvdmVye29wYWNpdHk6Ljl9LmhvdmVyXDpzaGFkb3ctXFswXzBfMF8xcHhfaHNsXCh2YXJcKC0tc2lkZWJhci1hY2NlbnRcKVwpXF06aG92ZXJ7LS10dy1zaGFkb3c6IDAgMCAwIDFweCBoc2wodmFyKC0tc2lkZWJhci1hY2NlbnQpKTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDAgMCAxcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5ob3Zlclw6c2hhZG93LWxnOmhvdmVyey0tdHctc2hhZG93OiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIC4xKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gLjEpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMTBweCAxNXB4IC0zcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCA0cHggNnB4IC00cHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5ob3Zlclw6c2hhZG93LW1kOmhvdmVyey0tdHctc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIC4xKTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDRweCA2cHggLTFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpLCAwIDJweCA0cHggLTJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LmhvdmVyXDpzaGFkb3cteGw6aG92ZXJ7LS10dy1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gLjEpLCAwIDhweCAxMHB4IC02cHggcmdiKDAgMCAwIC8gLjEpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMjBweCAyNXB4IC01cHggdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCA4cHggMTBweCAtNnB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX0uaG92ZXJcOnNoYWRvdy1cW3ZhclwoLS1jYXJkLWhvdmVyLXNoYWRvd1wpXF06aG92ZXJ7LS10dy1zaGFkb3ctY29sb3I6IHZhcigtLWNhcmQtaG92ZXItc2hhZG93KTstLXR3LXNoYWRvdzogdmFyKC0tdHctc2hhZG93LWNvbG9yZWQpfS5ob3Zlclw6c2hhZG93LVxbdmFyXCgtLWdsb3ctc2hhZG93XClcXTpob3ZlcnstLXR3LXNoYWRvdy1jb2xvcjogdmFyKC0tZ2xvdy1zaGFkb3cpOy0tdHctc2hhZG93OiB2YXIoLS10dy1zaGFkb3ctY29sb3JlZCl9LmhvdmVyXDpzaGFkb3ctcHJpbWFyeVwvMjA6aG92ZXJ7LS10dy1zaGFkb3ctY29sb3I6IGhzbCh2YXIoLS1wcmltYXJ5KSAvIC4yKTstLXR3LXNoYWRvdzogdmFyKC0tdHctc2hhZG93LWNvbG9yZWQpfS5ob3Zlclw6YWZ0ZXJcOmJnLXNpZGViYXItYm9yZGVyOmhvdmVyOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2lkZWJhci1ib3JkZXIpKX0uZm9jdXNcOmJnLWFjY2VudDpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1hY2NlbnQpKX0uZm9jdXNcOmJnLXByaW1hcnk6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfS5mb2N1c1w6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZDpmb2N1c3tjb2xvcjpoc2wodmFyKC0tYWNjZW50LWZvcmVncm91bmQpKX0uZm9jdXNcOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kOmZvY3Vze2NvbG9yOmhzbCh2YXIoLS1wcmltYXJ5LWZvcmVncm91bmQpKX0uZm9jdXNcOm9wYWNpdHktMTAwOmZvY3Vze29wYWNpdHk6MX0uZm9jdXNcOm91dGxpbmUtbm9uZTpmb2N1c3tvdXRsaW5lOjJweCBzb2xpZCB0cmFuc3BhcmVudDtvdXRsaW5lLW9mZnNldDoycHh9LmZvY3VzXDpyaW5nLTE6Zm9jdXN7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcik7LS10dy1yaW5nLXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgY2FsYygxcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93LCAwIDAgIzAwMDApfS5mb2N1c1w6cmluZy0yOmZvY3Vzey0tdHctcmluZy1vZmZzZXQtc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkgdmFyKC0tdHctcmluZy1vZmZzZXQtY29sb3IpOy0tdHctcmluZy1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdywgMCAwICMwMDAwKX0uZm9jdXNcOnJpbmctcHJpbWFyeTpmb2N1c3stLXR3LXJpbmctY29sb3I6IGhzbCh2YXIoLS1wcmltYXJ5KSl9LmZvY3VzXDpyaW5nLXJpbmc6Zm9jdXN7LS10dy1yaW5nLWNvbG9yOiBoc2wodmFyKC0tcmluZykpfS5mb2N1c1w6cmluZy1vZmZzZXQtMjpmb2N1c3stLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAycHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtbm9uZTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHRyYW5zcGFyZW50O291dGxpbmUtb2Zmc2V0OjJweH0uZm9jdXMtdmlzaWJsZVw6cmluZy0xOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcik7LS10dy1yaW5nLXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgY2FsYygxcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93LCAwIDAgIzAwMDApfS5mb2N1cy12aXNpYmxlXDpyaW5nLTI6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDJweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3csIDAgMCAjMDAwMCl9LmZvY3VzLXZpc2libGVcOnJpbmctcmluZzpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjogaHNsKHZhcigtLXJpbmcpKX0uZm9jdXMtdmlzaWJsZVw6cmluZy1zaWRlYmFyLXJpbmc6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6IGhzbCh2YXIoLS1zaWRlYmFyLXJpbmcpKX0uZm9jdXMtdmlzaWJsZVw6cmluZy1vZmZzZXQtMTpmb2N1cy12aXNpYmxley0tdHctcmluZy1vZmZzZXQtd2lkdGg6IDFweH0uZm9jdXMtdmlzaWJsZVw6cmluZy1vZmZzZXQtMjpmb2N1cy12aXNpYmxley0tdHctcmluZy1vZmZzZXQtd2lkdGg6IDJweH0uZm9jdXMtdmlzaWJsZVw6cmluZy1vZmZzZXQtYmFja2dyb3VuZDpmb2N1cy12aXNpYmxley0tdHctcmluZy1vZmZzZXQtY29sb3I6IGhzbCh2YXIoLS1iYWNrZ3JvdW5kKSl9LmFjdGl2ZVw6Ymctc2lkZWJhci1hY2NlbnQ6YWN0aXZle2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXNpZGViYXItYWNjZW50KSl9LmFjdGl2ZVw6dGV4dC1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kOmFjdGl2ZXtjb2xvcjpoc2wodmFyKC0tc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZCkpfS5kaXNhYmxlZFw6cG9pbnRlci1ldmVudHMtbm9uZTpkaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lfS5kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcOm9wYWNpdHktNTA6ZGlzYWJsZWR7b3BhY2l0eTouNX0uZ3JvdXBcL21lbnUtaXRlbTpmb2N1cy13aXRoaW4gLmdyb3VwLWZvY3VzLXdpdGhpblwvbWVudS1pdGVtXDpvcGFjaXR5LTEwMHtvcGFjaXR5OjF9Lmdyb3VwOmhvdmVyIC5ncm91cC1ob3Zlclw6dy1mdWxse3dpZHRoOjEwMCV9Lmdyb3VwOmhvdmVyIC5ncm91cC1ob3Zlclw6LXRyYW5zbGF0ZS14LTF7LS10dy10cmFuc2xhdGUteDogLS4yNXJlbTt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0uZ3JvdXBcL2NhcmQ6aG92ZXIgLmdyb3VwLWhvdmVyXC9jYXJkXDpzY2FsZS0xMTB7LS10dy1zY2FsZS14OiAxLjE7LS10dy1zY2FsZS15OiAxLjE7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9Lmdyb3VwOmhvdmVyIC5ncm91cC1ob3Zlclw6YmctYWNjZW50e2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfS5ncm91cDpob3ZlciAuZ3JvdXAtaG92ZXJcOmJnLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tcHJpbWFyeSkpfS5ncm91cDpob3ZlciAuZ3JvdXAtaG92ZXJcOnRleHQtYWNjZW50LWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKSl9Lmdyb3VwOmhvdmVyIC5ncm91cC1ob3Zlclw6dGV4dC1wcmltYXJ5LWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLXByaW1hcnktZm9yZWdyb3VuZCkpfS5ncm91cFwvbWVudS1pdGVtOmhvdmVyIC5ncm91cC1ob3ZlclwvbWVudS1pdGVtXDpvcGFjaXR5LTEwMCwuZ3JvdXA6aG92ZXIgLmdyb3VwLWhvdmVyXDpvcGFjaXR5LTEwMHtvcGFjaXR5OjF9Lmdyb3VwLmRlc3RydWN0aXZlIC5ncm91cC1cW1wuZGVzdHJ1Y3RpdmVcXVw6Ym9yZGVyLW11dGVkXC80MHtib3JkZXItY29sb3I6aHNsKHZhcigtLW11dGVkKSAvIC40KX0uZ3JvdXAudG9hc3RlciAuZ3JvdXAtXFtcLnRvYXN0ZXJcXVw6Ym9yZGVyLWJvcmRlcntib3JkZXItY29sb3I6aHNsKHZhcigtLWJvcmRlcikpfS5ncm91cC50b2FzdCAuZ3JvdXAtXFtcLnRvYXN0XF1cOmJnLW11dGVke2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLW11dGVkKSl9Lmdyb3VwLnRvYXN0IC5ncm91cC1cW1wudG9hc3RcXVw6YmctcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9Lmdyb3VwLnRvYXN0ZXIgLmdyb3VwLVxbXC50b2FzdGVyXF1cOmJnLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYmFja2dyb3VuZCkpfS5ncm91cC5kZXN0cnVjdGl2ZSAuZ3JvdXAtXFtcLmRlc3RydWN0aXZlXF1cOnRleHQtcmVkLTMwMHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjUyIDE2NSAxNjUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uZ3JvdXAudG9hc3QgLmdyb3VwLVxbXC50b2FzdFxdXDp0ZXh0LW11dGVkLWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKX0uZ3JvdXAudG9hc3QgLmdyb3VwLVxbXC50b2FzdFxdXDp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZHtjb2xvcjpoc2wodmFyKC0tcHJpbWFyeS1mb3JlZ3JvdW5kKSl9Lmdyb3VwLnRvYXN0ZXIgLmdyb3VwLVxbXC50b2FzdGVyXF1cOnRleHQtZm9yZWdyb3VuZHtjb2xvcjpoc2wodmFyKC0tZm9yZWdyb3VuZCkpfS5ncm91cC50b2FzdGVyIC5ncm91cC1cW1wudG9hc3RlclxdXDpzaGFkb3ctbGd7LS10dy1zaGFkb3c6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gLjEpLCAwIDRweCA2cHggLTRweCByZ2IoMCAwIDAgLyAuMSk7LS10dy1zaGFkb3ctY29sb3JlZDogMCAxMHB4IDE1cHggLTNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpLCAwIDRweCA2cHggLTRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9Lmdyb3VwLmRlc3RydWN0aXZlIC5ncm91cC1cW1wuZGVzdHJ1Y3RpdmVcXVw6aG92ZXJcOmJvcmRlci1kZXN0cnVjdGl2ZVwvMzA6aG92ZXJ7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkgLyAuMyl9Lmdyb3VwLmRlc3RydWN0aXZlIC5ncm91cC1cW1wuZGVzdHJ1Y3RpdmVcXVw6aG92ZXJcOmJnLWRlc3RydWN0aXZlOmhvdmVye2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWRlc3RydWN0aXZlKSl9Lmdyb3VwLmRlc3RydWN0aXZlIC5ncm91cC1cW1wuZGVzdHJ1Y3RpdmVcXVw6aG92ZXJcOnRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZDpob3Zlcntjb2xvcjpoc2wodmFyKC0tZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCkpfS5ncm91cC5kZXN0cnVjdGl2ZSAuZ3JvdXAtXFtcLmRlc3RydWN0aXZlXF1cOmhvdmVyXDp0ZXh0LXJlZC01MDpob3ZlcnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjU0IDI0MiAyNDIgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0uZ3JvdXAuZGVzdHJ1Y3RpdmUgLmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDpmb2N1c1w6cmluZy1kZXN0cnVjdGl2ZTpmb2N1c3stLXR3LXJpbmctY29sb3I6IGhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfS5ncm91cC5kZXN0cnVjdGl2ZSAuZ3JvdXAtXFtcLmRlc3RydWN0aXZlXF1cOmZvY3VzXDpyaW5nLXJlZC00MDA6Zm9jdXN7LS10dy1yaW5nLW9wYWNpdHk6IDE7LS10dy1yaW5nLWNvbG9yOiByZ2IoMjQ4IDExMyAxMTMgLyB2YXIoLS10dy1yaW5nLW9wYWNpdHksIDEpKX0uZ3JvdXAuZGVzdHJ1Y3RpdmUgLmdyb3VwLVxbXC5kZXN0cnVjdGl2ZVxdXDpmb2N1c1w6cmluZy1vZmZzZXQtcmVkLTYwMDpmb2N1c3stLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiAjZGMyNjI2fS5wZWVyXC9tZW51LWJ1dHRvbjpob3Zlcn4ucGVlci1ob3ZlclwvbWVudS1idXR0b25cOnRleHQtc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZHtjb2xvcjpoc2wodmFyKC0tc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZCkpfS5wZWVyOmRpc2FibGVkfi5wZWVyLWRpc2FibGVkXDpjdXJzb3Itbm90LWFsbG93ZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5wZWVyOmRpc2FibGVkfi5wZWVyLWRpc2FibGVkXDpvcGFjaXR5LTcwe29wYWNpdHk6Ljd9Lmhhcy1cW1xbZGF0YS12YXJpYW50XD1pbnNldFxdXF1cOmJnLXNpZGViYXI6aGFzKFtkYXRhLXZhcmlhbnQ9aW5zZXRdKXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1zaWRlYmFyLWJhY2tncm91bmQpKX0uaGFzLVxbXDpkaXNhYmxlZFxdXDpvcGFjaXR5LTUwOmhhcyg6ZGlzYWJsZWQpe29wYWNpdHk6LjV9Lmdyb3VwXC9tZW51LWl0ZW06aGFzKFtkYXRhLXNpZGViYXI9bWVudS1hY3Rpb25dKSAuZ3JvdXAtaGFzLVxbXFtkYXRhLXNpZGViYXJcPW1lbnUtYWN0aW9uXF1cXVwvbWVudS1pdGVtXDpwci04e3BhZGRpbmctcmlnaHQ6MnJlbX0uYXJpYS1kaXNhYmxlZFw6cG9pbnRlci1ldmVudHMtbm9uZVthcmlhLWRpc2FibGVkPXRydWVde3BvaW50ZXItZXZlbnRzOm5vbmV9LmFyaWEtZGlzYWJsZWRcOm9wYWNpdHktNTBbYXJpYS1kaXNhYmxlZD10cnVlXXtvcGFjaXR5Oi41fS5hcmlhLXNlbGVjdGVkXDpiZy1hY2NlbnRbYXJpYS1zZWxlY3RlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1hY2NlbnQpKX0uYXJpYS1zZWxlY3RlZFw6YmctYWNjZW50XC81MFthcmlhLXNlbGVjdGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkgLyAuNSl9LmFyaWEtc2VsZWN0ZWRcOnRleHQtYWNjZW50LWZvcmVncm91bmRbYXJpYS1zZWxlY3RlZD10cnVlXXtjb2xvcjpoc2wodmFyKC0tYWNjZW50LWZvcmVncm91bmQpKX0uYXJpYS1zZWxlY3RlZFw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV17Y29sb3I6aHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKX0uYXJpYS1zZWxlY3RlZFw6b3BhY2l0eS0xMDBbYXJpYS1zZWxlY3RlZD10cnVlXXtvcGFjaXR5OjF9LmFyaWEtc2VsZWN0ZWRcOm9wYWNpdHktMzBbYXJpYS1zZWxlY3RlZD10cnVlXXtvcGFjaXR5Oi4zfS5kYXRhLVxbZGlzYWJsZWRcPXRydWVcXVw6cG9pbnRlci1ldmVudHMtbm9uZVtkYXRhLWRpc2FibGVkPXRydWVdLC5kYXRhLVxbZGlzYWJsZWRcXVw6cG9pbnRlci1ldmVudHMtbm9uZVtkYXRhLWRpc2FibGVkXXtwb2ludGVyLWV2ZW50czpub25lfS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDpoLXB4W2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXXtoZWlnaHQ6MXB4fS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDp3LWZ1bGxbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxde3dpZHRoOjEwMCV9LmRhdGEtXFtzaWRlXD1ib3R0b21cXVw6dHJhbnNsYXRlLXktMVtkYXRhLXNpZGU9Ym90dG9tXXstLXR3LXRyYW5zbGF0ZS15OiAuMjVyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LmRhdGEtXFtzaWRlXD1sZWZ0XF1cOi10cmFuc2xhdGUteC0xW2RhdGEtc2lkZT1sZWZ0XXstLXR3LXRyYW5zbGF0ZS14OiAtLjI1cmVtO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5kYXRhLVxbc2lkZVw9cmlnaHRcXVw6dHJhbnNsYXRlLXgtMVtkYXRhLXNpZGU9cmlnaHRdey0tdHctdHJhbnNsYXRlLXg6IC4yNXJlbTt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0uZGF0YS1cW3NpZGVcPXRvcFxdXDotdHJhbnNsYXRlLXktMVtkYXRhLXNpZGU9dG9wXXstLXR3LXRyYW5zbGF0ZS15OiAtLjI1cmVtO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dHJhbnNsYXRlLXgtNVtkYXRhLXN0YXRlPWNoZWNrZWRdey0tdHctdHJhbnNsYXRlLXg6IDEuMjVyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LmRhdGEtXFtzdGF0ZVw9dW5jaGVja2VkXF1cOnRyYW5zbGF0ZS14LTBbZGF0YS1zdGF0ZT11bmNoZWNrZWRdLC5kYXRhLVxbc3dpcGVcPWNhbmNlbFxdXDp0cmFuc2xhdGUteC0wW2RhdGEtc3dpcGU9Y2FuY2VsXXstLXR3LXRyYW5zbGF0ZS14OiAwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LmRhdGEtXFtzd2lwZVw9ZW5kXF1cOnRyYW5zbGF0ZS14LVxbdmFyXCgtLXJhZGl4LXRvYXN0LXN3aXBlLWVuZC14XClcXVtkYXRhLXN3aXBlPWVuZF17LS10dy10cmFuc2xhdGUteDogdmFyKC0tcmFkaXgtdG9hc3Qtc3dpcGUtZW5kLXgpO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5kYXRhLVxbc3dpcGVcPW1vdmVcXVw6dHJhbnNsYXRlLXgtXFt2YXJcKC0tcmFkaXgtdG9hc3Qtc3dpcGUtbW92ZS14XClcXVtkYXRhLXN3aXBlPW1vdmVdey0tdHctdHJhbnNsYXRlLXg6IHZhcigtLXJhZGl4LXRvYXN0LXN3aXBlLW1vdmUteCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9QGtleWZyYW1lcyBhY2NvcmRpb24tdXB7MCV7aGVpZ2h0OnZhcigtLXJhZGl4LWFjY29yZGlvbi1jb250ZW50LWhlaWdodCl9dG97aGVpZ2h0OjB9fS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDphbmltYXRlLWFjY29yZGlvbi11cFtkYXRhLXN0YXRlPWNsb3NlZF17YW5pbWF0aW9uOmFjY29yZGlvbi11cCAuMnMgZWFzZS1vdXR9QGtleWZyYW1lcyBhY2NvcmRpb24tZG93bnswJXtoZWlnaHQ6MH10b3toZWlnaHQ6dmFyKC0tcmFkaXgtYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0KX19LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLWFjY29yZGlvbi1kb3duW2RhdGEtc3RhdGU9b3Blbl17YW5pbWF0aW9uOmFjY29yZGlvbi1kb3duIC4ycyBlYXNlLW91dH0uZGF0YS1cW3BhbmVsLWdyb3VwLWRpcmVjdGlvblw9dmVydGljYWxcXVw6ZmxleC1jb2xbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxde2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZGF0YS1cW2FjdGl2ZVw9dHJ1ZVxdXDpiZy1zaWRlYmFyLWFjY2VudFtkYXRhLWFjdGl2ZT10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1zaWRlYmFyLWFjY2VudCkpfS5kYXRhLVxbYWN0aXZlXF1cOmJnLWFjY2VudFwvNTBbZGF0YS1hY3RpdmVde2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkgLyAuNSl9LmRhdGEtXFtzZWxlY3RlZFw9XCd0cnVlXCdcXVw6YmctYWNjZW50W2RhdGEtc2VsZWN0ZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYWNjZW50KSl9LmRhdGEtXFtzdGF0ZVw9YWN0aXZlXF1cOmJnLWJhY2tncm91bmRbZGF0YS1zdGF0ZT1hY3RpdmVde2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWJhY2tncm91bmQpKX0uZGF0YS1cW3N0YXRlXD1jaGVja2VkXF1cOmJnLXByaW1hcnlbZGF0YS1zdGF0ZT1jaGVja2VkXXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1wcmltYXJ5KSl9LmRhdGEtXFtzdGF0ZVw9b25cXVw6YmctYWNjZW50W2RhdGEtc3RhdGU9b25dLC5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6YmctYWNjZW50W2RhdGEtc3RhdGU9b3Blbl17YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYWNjZW50KSl9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpiZy1hY2NlbnRcLzUwW2RhdGEtc3RhdGU9b3Blbl17YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYWNjZW50KSAvIC41KX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOmJnLXNlY29uZGFyeVtkYXRhLXN0YXRlPW9wZW5de2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLXNlY29uZGFyeSkpfS5kYXRhLVxbc3RhdGVcPXNlbGVjdGVkXF1cOmJnLW11dGVkW2RhdGEtc3RhdGU9c2VsZWN0ZWRde2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLW11dGVkKSl9LmRhdGEtXFtzdGF0ZVw9dW5jaGVja2VkXF1cOmJnLWlucHV0W2RhdGEtc3RhdGU9dW5jaGVja2VkXXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1pbnB1dCkpfS5kYXRhLVxbYWN0aXZlXD10cnVlXF1cOmZvbnQtbWVkaXVtW2RhdGEtYWN0aXZlPXRydWVde2ZvbnQtd2VpZ2h0OjUwMH0uZGF0YS1cW2FjdGl2ZVw9dHJ1ZVxdXDp0ZXh0LXNpZGViYXItYWNjZW50LWZvcmVncm91bmRbZGF0YS1hY3RpdmU9dHJ1ZV17Y29sb3I6aHNsKHZhcigtLXNpZGViYXItYWNjZW50LWZvcmVncm91bmQpKX0uZGF0YS1cW3NlbGVjdGVkXD10cnVlXF1cOnRleHQtYWNjZW50LWZvcmVncm91bmRbZGF0YS1zZWxlY3RlZD10cnVlXXtjb2xvcjpoc2wodmFyKC0tYWNjZW50LWZvcmVncm91bmQpKX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6dGV4dC1mb3JlZ3JvdW5kW2RhdGEtc3RhdGU9YWN0aXZlXXtjb2xvcjpoc2wodmFyKC0tZm9yZWdyb3VuZCkpfS5kYXRhLVxbc3RhdGVcPWNoZWNrZWRcXVw6dGV4dC1wcmltYXJ5LWZvcmVncm91bmRbZGF0YS1zdGF0ZT1jaGVja2VkXXtjb2xvcjpoc2wodmFyKC0tcHJpbWFyeS1mb3JlZ3JvdW5kKSl9LmRhdGEtXFtzdGF0ZVw9b25cXVw6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZFtkYXRhLXN0YXRlPW9uXSwuZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnRleHQtYWNjZW50LWZvcmVncm91bmRbZGF0YS1zdGF0ZT1vcGVuXXtjb2xvcjpoc2wodmFyKC0tYWNjZW50LWZvcmVncm91bmQpKX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFtkYXRhLXN0YXRlPW9wZW5de2NvbG9yOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LmRhdGEtXFtkaXNhYmxlZFw9dHJ1ZVxdXDpvcGFjaXR5LTUwW2RhdGEtZGlzYWJsZWQ9dHJ1ZV0sLmRhdGEtXFtkaXNhYmxlZFxdXDpvcGFjaXR5LTUwW2RhdGEtZGlzYWJsZWRde29wYWNpdHk6LjV9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpvcGFjaXR5LTEwMFtkYXRhLXN0YXRlPW9wZW5de29wYWNpdHk6MX0uZGF0YS1cW3N0YXRlXD1hY3RpdmVcXVw6c2hhZG93LXNtW2RhdGEtc3RhdGU9YWN0aXZlXXstLXR3LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gLjA1KTstLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDFweCAycHggMCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LmRhdGEtXFtzd2lwZVw9bW92ZVxdXDp0cmFuc2l0aW9uLW5vbmVbZGF0YS1zd2lwZT1tb3ZlXXt0cmFuc2l0aW9uLXByb3BlcnR5Om5vbmV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmR1cmF0aW9uLTMwMFtkYXRhLXN0YXRlPWNsb3NlZF17dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpkdXJhdGlvbi01MDBbZGF0YS1zdGF0ZT1vcGVuXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi41c30uZGF0YS1cW21vdGlvblxeXD1mcm9tLVxdXDphbmltYXRlLWluW2RhdGEtbW90aW9uXj1mcm9tLV0sLmRhdGEtXFtzdGF0ZVw9b3BlblxdXDphbmltYXRlLWluW2RhdGEtc3RhdGU9b3Blbl0sLmRhdGEtXFtzdGF0ZVw9dmlzaWJsZVxdXDphbmltYXRlLWluW2RhdGEtc3RhdGU9dmlzaWJsZV17YW5pbWF0aW9uLW5hbWU6ZW50ZXI7YW5pbWF0aW9uLWR1cmF0aW9uOi4xNXM7LS10dy1lbnRlci1vcGFjaXR5OiBpbml0aWFsOy0tdHctZW50ZXItc2NhbGU6IGluaXRpYWw7LS10dy1lbnRlci1yb3RhdGU6IGluaXRpYWw7LS10dy1lbnRlci10cmFuc2xhdGUteDogaW5pdGlhbDstLXR3LWVudGVyLXRyYW5zbGF0ZS15OiBpbml0aWFsfS5kYXRhLVxbbW90aW9uXF5cPXRvLVxdXDphbmltYXRlLW91dFtkYXRhLW1vdGlvbl49dG8tXSwuZGF0YS1cW3N0YXRlXD1jbG9zZWRcXVw6YW5pbWF0ZS1vdXRbZGF0YS1zdGF0ZT1jbG9zZWRdLC5kYXRhLVxbc3RhdGVcPWhpZGRlblxdXDphbmltYXRlLW91dFtkYXRhLXN0YXRlPWhpZGRlbl0sLmRhdGEtXFtzd2lwZVw9ZW5kXF1cOmFuaW1hdGUtb3V0W2RhdGEtc3dpcGU9ZW5kXXthbmltYXRpb24tbmFtZTpleGl0O2FuaW1hdGlvbi1kdXJhdGlvbjouMTVzOy0tdHctZXhpdC1vcGFjaXR5OiBpbml0aWFsOy0tdHctZXhpdC1zY2FsZTogaW5pdGlhbDstLXR3LWV4aXQtcm90YXRlOiBpbml0aWFsOy0tdHctZXhpdC10cmFuc2xhdGUteDogaW5pdGlhbDstLXR3LWV4aXQtdHJhbnNsYXRlLXk6IGluaXRpYWx9LmRhdGEtXFttb3Rpb25cXlw9ZnJvbS1cXVw6ZmFkZS1pbltkYXRhLW1vdGlvbl49ZnJvbS1dey0tdHctZW50ZXItb3BhY2l0eTogMH0uZGF0YS1cW21vdGlvblxeXD10by1cXVw6ZmFkZS1vdXRbZGF0YS1tb3Rpb25ePXRvLV0sLmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOmZhZGUtb3V0LTBbZGF0YS1zdGF0ZT1jbG9zZWRdey0tdHctZXhpdC1vcGFjaXR5OiAwfS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDpmYWRlLW91dC04MFtkYXRhLXN0YXRlPWNsb3NlZF17LS10dy1leGl0LW9wYWNpdHk6IC44fS5kYXRhLVxbc3RhdGVcPWhpZGRlblxdXDpmYWRlLW91dFtkYXRhLXN0YXRlPWhpZGRlbl17LS10dy1leGl0LW9wYWNpdHk6IDB9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpmYWRlLWluLTBbZGF0YS1zdGF0ZT1vcGVuXSwuZGF0YS1cW3N0YXRlXD12aXNpYmxlXF1cOmZhZGUtaW5bZGF0YS1zdGF0ZT12aXNpYmxlXXstLXR3LWVudGVyLW9wYWNpdHk6IDB9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnpvb20tb3V0LTk1W2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWV4aXQtc2NhbGU6IC45NX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnpvb20taW4tOTBbZGF0YS1zdGF0ZT1vcGVuXXstLXR3LWVudGVyLXNjYWxlOiAuOX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnpvb20taW4tOTVbZGF0YS1zdGF0ZT1vcGVuXXstLXR3LWVudGVyLXNjYWxlOiAuOTV9LmRhdGEtXFttb3Rpb25cPWZyb20tZW5kXF1cOnNsaWRlLWluLWZyb20tcmlnaHQtNTJbZGF0YS1tb3Rpb249ZnJvbS1lbmRdey0tdHctZW50ZXItdHJhbnNsYXRlLXg6IDEzcmVtfS5kYXRhLVxbbW90aW9uXD1mcm9tLXN0YXJ0XF1cOnNsaWRlLWluLWZyb20tbGVmdC01MltkYXRhLW1vdGlvbj1mcm9tLXN0YXJ0XXstLXR3LWVudGVyLXRyYW5zbGF0ZS14OiAtMTNyZW19LmRhdGEtXFttb3Rpb25cPXRvLWVuZFxdXDpzbGlkZS1vdXQtdG8tcmlnaHQtNTJbZGF0YS1tb3Rpb249dG8tZW5kXXstLXR3LWV4aXQtdHJhbnNsYXRlLXg6IDEzcmVtfS5kYXRhLVxbbW90aW9uXD10by1zdGFydFxdXDpzbGlkZS1vdXQtdG8tbGVmdC01MltkYXRhLW1vdGlvbj10by1zdGFydF17LS10dy1leGl0LXRyYW5zbGF0ZS14OiAtMTNyZW19LmRhdGEtXFtzaWRlXD1ib3R0b21cXVw6c2xpZGUtaW4tZnJvbS10b3AtMltkYXRhLXNpZGU9Ym90dG9tXXstLXR3LWVudGVyLXRyYW5zbGF0ZS15OiAtLjVyZW19LmRhdGEtXFtzaWRlXD1sZWZ0XF1cOnNsaWRlLWluLWZyb20tcmlnaHQtMltkYXRhLXNpZGU9bGVmdF17LS10dy1lbnRlci10cmFuc2xhdGUteDogLjVyZW19LmRhdGEtXFtzaWRlXD1yaWdodFxdXDpzbGlkZS1pbi1mcm9tLWxlZnQtMltkYXRhLXNpZGU9cmlnaHRdey0tdHctZW50ZXItdHJhbnNsYXRlLXg6IC0uNXJlbX0uZGF0YS1cW3NpZGVcPXRvcFxdXDpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yW2RhdGEtc2lkZT10b3Bdey0tdHctZW50ZXItdHJhbnNsYXRlLXk6IC41cmVtfS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDpzbGlkZS1vdXQtdG8tYm90dG9tW2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWV4aXQtdHJhbnNsYXRlLXk6IDEwMCV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by1sZWZ0W2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWV4aXQtdHJhbnNsYXRlLXg6IC0xMDAlfS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDpzbGlkZS1vdXQtdG8tbGVmdC0xXC8yW2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWV4aXQtdHJhbnNsYXRlLXg6IC01MCV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by1yaWdodFtkYXRhLXN0YXRlPWNsb3NlZF0sLmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by1yaWdodC1mdWxsW2RhdGEtc3RhdGU9Y2xvc2VkXXstLXR3LWV4aXQtdHJhbnNsYXRlLXg6IDEwMCV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by10b3BbZGF0YS1zdGF0ZT1jbG9zZWRdey0tdHctZXhpdC10cmFuc2xhdGUteTogLTEwMCV9LmRhdGEtXFtzdGF0ZVw9Y2xvc2VkXF1cOnNsaWRlLW91dC10by10b3AtXFs0OFwlXF1bZGF0YS1zdGF0ZT1jbG9zZWRdey0tdHctZXhpdC10cmFuc2xhdGUteTogLTQ4JX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnNsaWRlLWluLWZyb20tYm90dG9tW2RhdGEtc3RhdGU9b3Blbl17LS10dy1lbnRlci10cmFuc2xhdGUteTogMTAwJX0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnNsaWRlLWluLWZyb20tbGVmdFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXg6IC0xMDAlfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6c2xpZGUtaW4tZnJvbS1sZWZ0LTFcLzJbZGF0YS1zdGF0ZT1vcGVuXXstLXR3LWVudGVyLXRyYW5zbGF0ZS14OiAtNTAlfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6c2xpZGUtaW4tZnJvbS1yaWdodFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXg6IDEwMCV9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpzbGlkZS1pbi1mcm9tLXRvcFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXk6IC0xMDAlfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6c2xpZGUtaW4tZnJvbS10b3AtXFs0OFwlXF1bZGF0YS1zdGF0ZT1vcGVuXXstLXR3LWVudGVyLXRyYW5zbGF0ZS15OiAtNDglfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6c2xpZGUtaW4tZnJvbS10b3AtZnVsbFtkYXRhLXN0YXRlPW9wZW5dey0tdHctZW50ZXItdHJhbnNsYXRlLXk6IC0xMDAlfS5kYXRhLVxbc3RhdGVcPWNsb3NlZFxdXDpkdXJhdGlvbi0zMDBbZGF0YS1zdGF0ZT1jbG9zZWRde2FuaW1hdGlvbi1kdXJhdGlvbjouM3N9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpkdXJhdGlvbi01MDBbZGF0YS1zdGF0ZT1vcGVuXXthbmltYXRpb24tZHVyYXRpb246LjVzfS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDphZnRlclw6bGVmdC0wW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2xlZnQ6MH0uZGF0YS1cW3BhbmVsLWdyb3VwLWRpcmVjdGlvblw9dmVydGljYWxcXVw6YWZ0ZXJcOmgtMVtkYXRhLXBhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtoZWlnaHQ6LjI1cmVtfS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDphZnRlclw6dy1mdWxsW2RhdGEtcGFuZWwtZ3JvdXAtZGlyZWN0aW9uPXZlcnRpY2FsXTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjEwMCV9LmRhdGEtXFtwYW5lbC1ncm91cC1kaXJlY3Rpb25cPXZlcnRpY2FsXF1cOmFmdGVyXDotdHJhbnNsYXRlLXktMVwvMltkYXRhLXBhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXRyYW5zbGF0ZS15OiAtNTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5kYXRhLVxbcGFuZWwtZ3JvdXAtZGlyZWN0aW9uXD12ZXJ0aWNhbFxdXDphZnRlclw6dHJhbnNsYXRlLXgtMFtkYXRhLXBhbmVsLWdyb3VwLWRpcmVjdGlvbj12ZXJ0aWNhbF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LXRyYW5zbGF0ZS14OiAwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LmRhdGEtXFtzdGF0ZVw9b3BlblxdXDpob3Zlclw6Ymctc2lkZWJhci1hY2NlbnQ6aG92ZXJbZGF0YS1zdGF0ZT1vcGVuXXtiYWNrZ3JvdW5kLWNvbG9yOmhzbCh2YXIoLS1zaWRlYmFyLWFjY2VudCkpfS5kYXRhLVxbc3RhdGVcPW9wZW5cXVw6aG92ZXJcOnRleHQtc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZDpob3ZlcltkYXRhLXN0YXRlPW9wZW5de2NvbG9yOmhzbCh2YXIoLS1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kKSl9Lmdyb3VwW2RhdGEtY29sbGFwc2libGU9b2ZmY2FudmFzXSAuZ3JvdXAtZGF0YS1cW2NvbGxhcHNpYmxlXD1vZmZjYW52YXNcXVw6bGVmdC1cW2NhbGNcKHZhclwoLS1zaWRlYmFyLXdpZHRoXClcKi0xXClcXXtsZWZ0OmNhbGModmFyKC0tc2lkZWJhci13aWR0aCkgKiAtMSl9Lmdyb3VwW2RhdGEtY29sbGFwc2libGU9b2ZmY2FudmFzXSAuZ3JvdXAtZGF0YS1cW2NvbGxhcHNpYmxlXD1vZmZjYW52YXNcXVw6cmlnaHQtXFtjYWxjXCh2YXJcKC0tc2lkZWJhci13aWR0aFwpXCotMVwpXF17cmlnaHQ6Y2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoKSAqIC0xKX0uZ3JvdXBbZGF0YS1zaWRlPWxlZnRdIC5ncm91cC1kYXRhLVxbc2lkZVw9bGVmdFxdXDotcmlnaHQtNHtyaWdodDotMXJlbX0uZ3JvdXBbZGF0YS1zaWRlPXJpZ2h0XSAuZ3JvdXAtZGF0YS1cW3NpZGVcPXJpZ2h0XF1cOmxlZnQtMHtsZWZ0OjB9Lmdyb3VwW2RhdGEtY29sbGFwc2libGU9aWNvbl0gLmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9aWNvblxdXDotbXQtOHttYXJnaW4tdG9wOi0ycmVtfS5ncm91cFtkYXRhLWNvbGxhcHNpYmxlPWljb25dIC5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6aGlkZGVue2Rpc3BsYXk6bm9uZX0uZ3JvdXBbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAuZ3JvdXAtZGF0YS1cW2NvbGxhcHNpYmxlXD1pY29uXF1cOlwhc2l6ZS04e3dpZHRoOjJyZW0haW1wb3J0YW50O2hlaWdodDoycmVtIWltcG9ydGFudH0uZ3JvdXBbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAuZ3JvdXAtZGF0YS1cW2NvbGxhcHNpYmxlXD1pY29uXF1cOnctXFstLXNpZGViYXItd2lkdGgtaWNvblxde3dpZHRoOnZhcigtLXNpZGViYXItd2lkdGgtaWNvbil9Lmdyb3VwW2RhdGEtY29sbGFwc2libGU9aWNvbl0gLmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9aWNvblxdXDp3LVxbY2FsY1wodmFyXCgtLXNpZGViYXItd2lkdGgtaWNvblwpX1wrX3RoZW1lXChzcGFjaW5nXC40XClcKVxde3dpZHRoOmNhbGModmFyKC0tc2lkZWJhci13aWR0aC1pY29uKSArIDFyZW0pfS5ncm91cFtkYXRhLWNvbGxhcHNpYmxlPWljb25dIC5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6dy1cW2NhbGNcKHZhclwoLS1zaWRlYmFyLXdpZHRoLWljb25cKV9cK190aGVtZVwoc3BhY2luZ1wuNFwpX1wrMnB4XClcXXt3aWR0aDpjYWxjKHZhcigtLXNpZGViYXItd2lkdGgtaWNvbikgKyAxcmVtICsgMnB4KX0uZ3JvdXBbZGF0YS1jb2xsYXBzaWJsZT1vZmZjYW52YXNdIC5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPW9mZmNhbnZhc1xdXDp3LTB7d2lkdGg6MHB4fS5ncm91cFtkYXRhLWNvbGxhcHNpYmxlPW9mZmNhbnZhc10gLmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9b2ZmY2FudmFzXF1cOnRyYW5zbGF0ZS14LTB7LS10dy10cmFuc2xhdGUteDogMHB4O3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5ncm91cFtkYXRhLXNpZGU9cmlnaHRdIC5ncm91cC1kYXRhLVxbc2lkZVw9cmlnaHRcXVw6cm90YXRlLTE4MCwuZ3JvdXBbZGF0YS1zdGF0ZT1vcGVuXSAuZ3JvdXAtZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnJvdGF0ZS0xODB7LS10dy1yb3RhdGU6IDE4MGRlZzt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0uZ3JvdXBbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAuZ3JvdXAtZGF0YS1cW2NvbGxhcHNpYmxlXD1pY29uXF1cOm92ZXJmbG93LWhpZGRlbntvdmVyZmxvdzpoaWRkZW59Lmdyb3VwW2RhdGEtdmFyaWFudD1mbG9hdGluZ10gLmdyb3VwLWRhdGEtXFt2YXJpYW50XD1mbG9hdGluZ1xdXDpyb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzKX0uZ3JvdXBbZGF0YS12YXJpYW50PWZsb2F0aW5nXSAuZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWZsb2F0aW5nXF1cOmJvcmRlcntib3JkZXItd2lkdGg6MXB4fS5ncm91cFtkYXRhLXNpZGU9bGVmdF0gLmdyb3VwLWRhdGEtXFtzaWRlXD1sZWZ0XF1cOmJvcmRlci1ye2JvcmRlci1yaWdodC13aWR0aDoxcHh9Lmdyb3VwW2RhdGEtc2lkZT1yaWdodF0gLmdyb3VwLWRhdGEtXFtzaWRlXD1yaWdodFxdXDpib3JkZXItbHtib3JkZXItbGVmdC13aWR0aDoxcHh9Lmdyb3VwW2RhdGEtdmFyaWFudD1mbG9hdGluZ10gLmdyb3VwLWRhdGEtXFt2YXJpYW50XD1mbG9hdGluZ1xdXDpib3JkZXItc2lkZWJhci1ib3JkZXJ7Ym9yZGVyLWNvbG9yOmhzbCh2YXIoLS1zaWRlYmFyLWJvcmRlcikpfS5ncm91cFtkYXRhLWNvbGxhcHNpYmxlPWljb25dIC5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6XCFwLTB7cGFkZGluZzowIWltcG9ydGFudH0uZ3JvdXBbZGF0YS1jb2xsYXBzaWJsZT1pY29uXSAuZ3JvdXAtZGF0YS1cW2NvbGxhcHNpYmxlXD1pY29uXF1cOlwhcC0ye3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5ncm91cFtkYXRhLWNvbGxhcHNpYmxlPWljb25dIC5ncm91cC1kYXRhLVxbY29sbGFwc2libGVcPWljb25cXVw6b3BhY2l0eS0we29wYWNpdHk6MH0uZ3JvdXBbZGF0YS12YXJpYW50PWZsb2F0aW5nXSAuZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWZsb2F0aW5nXF1cOnNoYWRvd3stLXR3LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gLjEpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAuMSk7LS10dy1zaGFkb3ctY29sb3JlZDogMCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCAxcHggMnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSx2YXIoLS10dy1zaGFkb3cpfS5ncm91cFtkYXRhLWNvbGxhcHNpYmxlPW9mZmNhbnZhc10gLmdyb3VwLWRhdGEtXFtjb2xsYXBzaWJsZVw9b2ZmY2FudmFzXF1cOmFmdGVyXDpsZWZ0LWZ1bGw6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtsZWZ0OjEwMCV9Lmdyb3VwW2RhdGEtY29sbGFwc2libGU9b2ZmY2FudmFzXSAuZ3JvdXAtZGF0YS1cW2NvbGxhcHNpYmxlXD1vZmZjYW52YXNcXVw6aG92ZXJcOmJnLXNpZGViYXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tc2lkZWJhci1iYWNrZ3JvdW5kKSl9LnBlZXJcL21lbnUtYnV0dG9uW2RhdGEtc2l6ZT1kZWZhdWx0XX4ucGVlci1kYXRhLVxbc2l6ZVw9ZGVmYXVsdFxdXC9tZW51LWJ1dHRvblw6dG9wLTFcLjV7dG9wOi4zNzVyZW19LnBlZXJcL21lbnUtYnV0dG9uW2RhdGEtc2l6ZT1sZ11+LnBlZXItZGF0YS1cW3NpemVcPWxnXF1cL21lbnUtYnV0dG9uXDp0b3AtMlwuNXt0b3A6LjYyNXJlbX0ucGVlclwvbWVudS1idXR0b25bZGF0YS1zaXplPXNtXX4ucGVlci1kYXRhLVxbc2l6ZVw9c21cXVwvbWVudS1idXR0b25cOnRvcC0xe3RvcDouMjVyZW19LnBlZXJbZGF0YS12YXJpYW50PWluc2V0XX4ucGVlci1kYXRhLVxbdmFyaWFudFw9aW5zZXRcXVw6bWluLWgtXFtjYWxjXCgxMDBzdmgtdGhlbWVcKHNwYWNpbmdcLjRcKVwpXF17bWluLWhlaWdodDpjYWxjKDEwMHN2aCAtIDFyZW0pfS5wZWVyXC9tZW51LWJ1dHRvbltkYXRhLWFjdGl2ZT10cnVlXX4ucGVlci1kYXRhLVxbYWN0aXZlXD10cnVlXF1cL21lbnUtYnV0dG9uXDp0ZXh0LXNpZGViYXItYWNjZW50LWZvcmVncm91bmR7Y29sb3I6aHNsKHZhcigtLXNpZGViYXItYWNjZW50LWZvcmVncm91bmQpKX0uZGFya1w6Ym9yZGVyLWRlc3RydWN0aXZlOmlzKC5kYXJrICope2JvcmRlci1jb2xvcjpoc2wodmFyKC0tZGVzdHJ1Y3RpdmUpKX1AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpey5zbVw6Ym90dG9tLTB7Ym90dG9tOjB9LnNtXDpyaWdodC0we3JpZ2h0OjB9LnNtXDp0b3AtYXV0b3t0b3A6YXV0b30uc21cOm10LTB7bWFyZ2luLXRvcDowfS5zbVw6aW5saW5le2Rpc3BsYXk6aW5saW5lfS5zbVw6ZmxleHtkaXNwbGF5OmZsZXh9LnNtXDptYXgtdy1zbXttYXgtd2lkdGg6MjRyZW19LnNtXDpmbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LnNtXDpmbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnNtXDpqdXN0aWZ5LWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnNtXDpnYXAtMlwuNXtnYXA6LjYyNXJlbX0uc21cOnNwYWNlLXgtMj46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDttYXJnaW4tcmlnaHQ6Y2FsYyguNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO21hcmdpbi1sZWZ0OmNhbGMoLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSl9LnNtXDpzcGFjZS14LTQ+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1zcGFjZS14LXJldmVyc2U6IDA7bWFyZ2luLXJpZ2h0OmNhbGMoMXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO21hcmdpbi1sZWZ0OmNhbGMoMXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKX0uc21cOnNwYWNlLXktMD46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXR3LXNwYWNlLXktcmV2ZXJzZTogMDttYXJnaW4tdG9wOmNhbGMoMHB4ICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYygwcHggKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKX0uc21cOnJvdW5kZWQtbGd7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMpfS5zbVw6dGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0uZGF0YS1cW3N0YXRlXD1vcGVuXF1cOnNtXDpzbGlkZS1pbi1mcm9tLWJvdHRvbS1mdWxsW2RhdGEtc3RhdGU9b3Blbl17LS10dy1lbnRlci10cmFuc2xhdGUteTogMTAwJX19QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KXsubWRcOmFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlfS5tZFw6YmxvY2t7ZGlzcGxheTpibG9ja30ubWRcOmZsZXh7ZGlzcGxheTpmbGV4fS5tZFw6aGlkZGVue2Rpc3BsYXk6bm9uZX0ubWRcOmgtMjB7aGVpZ2h0OjVyZW19Lm1kXDp3LVxbdmFyXCgtLXJhZGl4LW5hdmlnYXRpb24tbWVudS12aWV3cG9ydC13aWR0aFwpXF17d2lkdGg6dmFyKC0tcmFkaXgtbmF2aWdhdGlvbi1tZW51LXZpZXdwb3J0LXdpZHRoKX0ubWRcOnctYXV0b3t3aWR0aDphdXRvfS5tZFw6bWF4LXctXFs0MjBweFxde21heC13aWR0aDo0MjBweH0ubWRcOmdyaWQtY29scy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX0ubWRcOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0ubWRcOmdyaWQtY29scy00e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCxtaW5tYXgoMCwxZnIpKX0ubWRcOmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30ubWRcOmdhcC00e2dhcDoxcmVtfS5tZFw6cC04e3BhZGRpbmc6MnJlbX0ubWRcOnB5LTMye3BhZGRpbmctdG9wOjhyZW07cGFkZGluZy1ib3R0b206OHJlbX0ubWRcOnRleHQtNXhse2ZvbnQtc2l6ZTozcmVtO2xpbmUtaGVpZ2h0OjF9Lm1kXDp0ZXh0LTd4bHtmb250LXNpemU6NC41cmVtO2xpbmUtaGVpZ2h0OjF9Lm1kXDp0ZXh0LXNte2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19Lm1kXDp0ZXh0LXhse2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuNzVyZW19Lm1kXDpvcGFjaXR5LTB7b3BhY2l0eTowfS5hZnRlclw6bWRcOmhpZGRlbjphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2Rpc3BsYXk6bm9uZX0ucGVlcltkYXRhLXZhcmlhbnQ9aW5zZXRdfi5tZFw6cGVlci1kYXRhLVxbdmFyaWFudFw9aW5zZXRcXVw6bS0ye21hcmdpbjouNXJlbX0ucGVlcltkYXRhLXN0YXRlPWNvbGxhcHNlZF1bZGF0YS12YXJpYW50PWluc2V0XX4ubWRcOnBlZXItZGF0YS1cW3N0YXRlXD1jb2xsYXBzZWRcXVw6cGVlci1kYXRhLVxbdmFyaWFudFw9aW5zZXRcXVw6bWwtMnttYXJnaW4tbGVmdDouNXJlbX0ucGVlcltkYXRhLXZhcmlhbnQ9aW5zZXRdfi5tZFw6cGVlci1kYXRhLVxbdmFyaWFudFw9aW5zZXRcXVw6bWwtMHttYXJnaW4tbGVmdDowfS5wZWVyW2RhdGEtdmFyaWFudD1pbnNldF1+Lm1kXDpwZWVyLWRhdGEtXFt2YXJpYW50XD1pbnNldFxdXDpyb3VuZGVkLXhse2JvcmRlci1yYWRpdXM6Ljc1cmVtfS5wZWVyW2RhdGEtdmFyaWFudD1pbnNldF1+Lm1kXDpwZWVyLWRhdGEtXFt2YXJpYW50XD1pbnNldFxdXDpzaGFkb3d7LS10dy1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIC4xKSwgMCAxcHggMnB4IC0xcHggcmdiKDAgMCAwIC8gLjEpOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMXB4IDNweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgMXB4IDJweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksdmFyKC0tdHctc2hhZG93KX19QG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCl7LmxnXDpncmlkLWNvbHMtM3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsbWlubWF4KDAsMWZyKSl9fS5cW1wmXDpoYXNcKFxbYXJpYS1zZWxlY3RlZFxdXClcXVw6YmctYWNjZW50OmhhcyhbYXJpYS1zZWxlY3RlZF0pe2JhY2tncm91bmQtY29sb3I6aHNsKHZhcigtLWFjY2VudCkpfS5maXJzdFw6XFtcJlw6aGFzXChcW2FyaWEtc2VsZWN0ZWRcXVwpXF1cOnJvdW5kZWQtbC1tZDpoYXMoW2FyaWEtc2VsZWN0ZWRdKTpmaXJzdC1jaGlsZHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5sYXN0XDpcW1wmXDpoYXNcKFxbYXJpYS1zZWxlY3RlZFxdXClcXVw6cm91bmRlZC1yLW1kOmhhcyhbYXJpYS1zZWxlY3RlZF0pOmxhc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5cW1wmXDpoYXNcKFxbYXJpYS1zZWxlY3RlZFxdXC5kYXktb3V0c2lkZVwpXF1cOmJnLWFjY2VudFwvNTA6aGFzKFthcmlhLXNlbGVjdGVkXS5kYXktb3V0c2lkZSl7YmFja2dyb3VuZC1jb2xvcjpoc2wodmFyKC0tYWNjZW50KSAvIC41KX0uXFtcJlw6aGFzXChcW2FyaWEtc2VsZWN0ZWRcXVwuZGF5LXJhbmdlLWVuZFwpXF1cOnJvdW5kZWQtci1tZDpoYXMoW2FyaWEtc2VsZWN0ZWRdLmRheS1yYW5nZS1lbmQpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KX0uXFtcJlw6aGFzXChcW3JvbGVcPWNoZWNrYm94XF1cKVxdXDpwci0wOmhhcyhbcm9sZT1jaGVja2JveF0pe3BhZGRpbmctcmlnaHQ6MH0uXFtcJlw+XCpcXVw6bS0wPip7bWFyZ2luOjB9LlxbXCZcPmJ1dHRvblxdXDpoaWRkZW4+YnV0dG9ue2Rpc3BsYXk6bm9uZX0uXFtcJlw+c3Bhblw6bGFzdC1jaGlsZFxdXDp0cnVuY2F0ZT5zcGFuOmxhc3QtY2hpbGR7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5cW1wmXD5zcGFuXF1cOmxpbmUtY2xhbXAtMT5zcGFue292ZXJmbG93OmhpZGRlbjtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWxpbmUtY2xhbXA6MX0uXFtcJlw+c3ZnXCtkaXZcXVw6dHJhbnNsYXRlLXktXFstM3B4XF0+c3ZnK2RpdnstLXR3LXRyYW5zbGF0ZS15OiAtM3B4O3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXcodmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfS5cW1wmXD5zdmdcXVw6YWJzb2x1dGU+c3Zne3Bvc2l0aW9uOmFic29sdXRlfS5cW1wmXD5zdmdcXVw6bGVmdC00PnN2Z3tsZWZ0OjFyZW19LlxbXCZcPnN2Z1xdXDp0b3AtND5zdmd7dG9wOjFyZW19LlxbXCZcPnN2Z1xdXDpzaXplLTNcLjU+c3Zne3dpZHRoOi44NzVyZW07aGVpZ2h0Oi44NzVyZW19LlxbXCZcPnN2Z1xdXDpzaXplLTQ+c3Zne3dpZHRoOjFyZW07aGVpZ2h0OjFyZW19LlxbXCZcPnN2Z1xdXDpoLTJcLjU+c3Zne2hlaWdodDouNjI1cmVtfS5cW1wmXD5zdmdcXVw6aC0zPnN2Z3toZWlnaHQ6Ljc1cmVtfS5cW1wmXD5zdmdcXVw6dy0yXC41PnN2Z3t3aWR0aDouNjI1cmVtfS5cW1wmXD5zdmdcXVw6dy0zPnN2Z3t3aWR0aDouNzVyZW19LlxbXCZcPnN2Z1xdXDpzaHJpbmstMD5zdmd7ZmxleC1zaHJpbms6MH0uXFtcJlw+c3ZnXF1cOnRleHQtZGVzdHJ1Y3RpdmU+c3Zne2NvbG9yOmhzbCh2YXIoLS1kZXN0cnVjdGl2ZSkpfS5cW1wmXD5zdmdcXVw6dGV4dC1mb3JlZ3JvdW5kPnN2Z3tjb2xvcjpoc2wodmFyKC0tZm9yZWdyb3VuZCkpfS5cW1wmXD5zdmdcXVw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kPnN2Z3tjb2xvcjpoc2wodmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkpfS5cW1wmXD5zdmdcXVw6dGV4dC1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kPnN2Z3tjb2xvcjpoc2wodmFyKC0tc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZCkpfS5cW1wmXD5zdmdcflwqXF1cOnBsLTc+c3Znfip7cGFkZGluZy1sZWZ0OjEuNzVyZW19LlxbXCZcPnRyXF1cOmxhc3RcOmJvcmRlci1iLTA6bGFzdC1jaGlsZD50cntib3JkZXItYm90dG9tLXdpZHRoOjBweH0uXFtcJlxbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb25cPXZlcnRpY2FsXF1cPmRpdlxdXDpyb3RhdGUtOTBbZGF0YS1wYW5lbC1ncm91cC1kaXJlY3Rpb249dmVydGljYWxdPmRpdnstLXR3LXJvdGF0ZTogOTBkZWc7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LlxbXCZcW2RhdGEtc3RhdGVcPW9wZW5cXVw+c3ZnXF1cOnJvdGF0ZS0xODBbZGF0YS1zdGF0ZT1vcGVuXT5zdmd7LS10dy1yb3RhdGU6IDE4MGRlZzt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3KHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0uXFtcJl9cLnJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2tfdGV4dFxdXDpmaWxsLW11dGVkLWZvcmVncm91bmQgLnJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2sgdGV4dHtmaWxsOmhzbCh2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSl9LlxbXCZfXC5yZWNoYXJ0cy1jYXJ0ZXNpYW4tZ3JpZF9saW5lXFtzdHJva2VcPVwnXCNjY2NcJ1xdXF1cOnN0cm9rZS1ib3JkZXJcLzUwIC5yZWNoYXJ0cy1jYXJ0ZXNpYW4tZ3JpZCBsaW5lW3N0cm9rZT0iI2NjYyJde3N0cm9rZTpoc2wodmFyKC0tYm9yZGVyKSAvIC41KX0uXFtcJl9cLnJlY2hhcnRzLWN1cnZlXC5yZWNoYXJ0cy10b29sdGlwLWN1cnNvclxdXDpzdHJva2UtYm9yZGVyIC5yZWNoYXJ0cy1jdXJ2ZS5yZWNoYXJ0cy10b29sdGlwLWN1cnNvcntzdHJva2U6aHNsKHZhcigtLWJvcmRlcikpfS5cW1wmX1wucmVjaGFydHMtZG90XFtzdHJva2VcPVwnXCNmZmZcJ1xdXF1cOnN0cm9rZS10cmFuc3BhcmVudCAucmVjaGFydHMtZG90W3N0cm9rZT0iI2ZmZiJde3N0cm9rZTp0cmFuc3BhcmVudH0uXFtcJl9cLnJlY2hhcnRzLWxheWVyXF1cOm91dGxpbmUtbm9uZSAucmVjaGFydHMtbGF5ZXJ7b3V0bGluZToycHggc29saWQgdHJhbnNwYXJlbnQ7b3V0bGluZS1vZmZzZXQ6MnB4fS5cW1wmX1wucmVjaGFydHMtcG9sYXItZ3JpZF9cW3N0cm9rZVw9XCdcI2NjY1wnXF1cXVw6c3Ryb2tlLWJvcmRlciAucmVjaGFydHMtcG9sYXItZ3JpZCBbc3Ryb2tlPSIjY2NjIl17c3Ryb2tlOmhzbCh2YXIoLS1ib3JkZXIpKX0uXFtcJl9cLnJlY2hhcnRzLXJhZGlhbC1iYXItYmFja2dyb3VuZC1zZWN0b3JcXVw6ZmlsbC1tdXRlZCAucmVjaGFydHMtcmFkaWFsLWJhci1iYWNrZ3JvdW5kLXNlY3RvciwuXFtcJl9cLnJlY2hhcnRzLXJlY3RhbmdsZVwucmVjaGFydHMtdG9vbHRpcC1jdXJzb3JcXVw6ZmlsbC1tdXRlZCAucmVjaGFydHMtcmVjdGFuZ2xlLnJlY2hhcnRzLXRvb2x0aXAtY3Vyc29ye2ZpbGw6aHNsKHZhcigtLW11dGVkKSl9LlxbXCZfXC5yZWNoYXJ0cy1yZWZlcmVuY2UtbGluZV9cW3N0cm9rZVw9XCdcI2NjY1wnXF1cXVw6c3Ryb2tlLWJvcmRlciAucmVjaGFydHMtcmVmZXJlbmNlLWxpbmUgW3N0cm9rZT0iI2NjYyJde3N0cm9rZTpoc2wodmFyKC0tYm9yZGVyKSl9LlxbXCZfXC5yZWNoYXJ0cy1zZWN0b3JcW3N0cm9rZVw9XCdcI2ZmZlwnXF1cXVw6c3Ryb2tlLXRyYW5zcGFyZW50IC5yZWNoYXJ0cy1zZWN0b3Jbc3Ryb2tlPSIjZmZmIl17c3Ryb2tlOnRyYW5zcGFyZW50fS5cW1wmX1wucmVjaGFydHMtc2VjdG9yXF1cOm91dGxpbmUtbm9uZSAucmVjaGFydHMtc2VjdG9yLC5cW1wmX1wucmVjaGFydHMtc3VyZmFjZVxdXDpvdXRsaW5lLW5vbmUgLnJlY2hhcnRzLXN1cmZhY2V7b3V0bGluZToycHggc29saWQgdHJhbnNwYXJlbnQ7b3V0bGluZS1vZmZzZXQ6MnB4fS5cW1wmX1xbY21kay1ncm91cC1oZWFkaW5nXF1cXVw6cHgtMiBbY21kay1ncm91cC1oZWFkaW5nXXtwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0uXFtcJl9cW2NtZGstZ3JvdXAtaGVhZGluZ1xdXF1cOnB5LTFcLjUgW2NtZGstZ3JvdXAtaGVhZGluZ117cGFkZGluZy10b3A6LjM3NXJlbTtwYWRkaW5nLWJvdHRvbTouMzc1cmVtfS5cW1wmX1xbY21kay1ncm91cC1oZWFkaW5nXF1cXVw6dGV4dC14cyBbY21kay1ncm91cC1oZWFkaW5nXXtmb250LXNpemU6Ljc1cmVtO2xpbmUtaGVpZ2h0OjFyZW19LlxbXCZfXFtjbWRrLWdyb3VwLWhlYWRpbmdcXVxdXDpmb250LW1lZGl1bSBbY21kay1ncm91cC1oZWFkaW5nXXtmb250LXdlaWdodDo1MDB9LlxbXCZfXFtjbWRrLWdyb3VwLWhlYWRpbmdcXVxdXDp0ZXh0LW11dGVkLWZvcmVncm91bmQgW2NtZGstZ3JvdXAtaGVhZGluZ117Y29sb3I6aHNsKHZhcigtLW11dGVkLWZvcmVncm91bmQpKX0uXFtcJl9cW2NtZGstZ3JvdXBcXVw6bm90XChcW2hpZGRlblxdXClfXH5cW2NtZGstZ3JvdXBcXVxdXDpwdC0wIFtjbWRrLWdyb3VwXTpub3QoW2hpZGRlbl0pfltjbWRrLWdyb3VwXXtwYWRkaW5nLXRvcDowfS5cW1wmX1xbY21kay1ncm91cFxdXF1cOnB4LTIgW2NtZGstZ3JvdXBde3BhZGRpbmctbGVmdDouNXJlbTtwYWRkaW5nLXJpZ2h0Oi41cmVtfS5cW1wmX1xbY21kay1pbnB1dC13cmFwcGVyXF1fc3ZnXF1cOmgtNSBbY21kay1pbnB1dC13cmFwcGVyXSBzdmd7aGVpZ2h0OjEuMjVyZW19LlxbXCZfXFtjbWRrLWlucHV0LXdyYXBwZXJcXV9zdmdcXVw6dy01IFtjbWRrLWlucHV0LXdyYXBwZXJdIHN2Z3t3aWR0aDoxLjI1cmVtfS5cW1wmX1xbY21kay1pbnB1dFxdXF1cOmgtMTIgW2NtZGstaW5wdXRde2hlaWdodDozcmVtfS5cW1wmX1xbY21kay1pdGVtXF1cXVw6cHgtMiBbY21kay1pdGVtXXtwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0uXFtcJl9cW2NtZGstaXRlbVxdXF1cOnB5LTMgW2NtZGstaXRlbV17cGFkZGluZy10b3A6Ljc1cmVtO3BhZGRpbmctYm90dG9tOi43NXJlbX0uXFtcJl9cW2NtZGstaXRlbVxdX3N2Z1xdXDpoLTUgW2NtZGstaXRlbV0gc3Zne2hlaWdodDoxLjI1cmVtfS5cW1wmX1xbY21kay1pdGVtXF1fc3ZnXF1cOnctNSBbY21kay1pdGVtXSBzdmd7d2lkdGg6MS4yNXJlbX0uXFtcJl9wXF1cOmxlYWRpbmctcmVsYXhlZCBwe2xpbmUtaGVpZ2h0OjEuNjI1fS5cW1wmX3N2Z1xdXDpwb2ludGVyLWV2ZW50cy1ub25lIHN2Z3twb2ludGVyLWV2ZW50czpub25lfS5cW1wmX3N2Z1xdXDpzaXplLTQgc3Zne3dpZHRoOjFyZW07aGVpZ2h0OjFyZW19LlxbXCZfc3ZnXF1cOnNocmluay0wIHN2Z3tmbGV4LXNocmluazowfS5cW1wmX3RyXDpsYXN0LWNoaWxkXF1cOmJvcmRlci0wIHRyOmxhc3QtY2hpbGR7Ym9yZGVyLXdpZHRoOjBweH0uXFtcJl90clxdXDpib3JkZXItYiB0cntib3JkZXItYm90dG9tLXdpZHRoOjFweH1bZGF0YS1zaWRlPWxlZnRdW2RhdGEtY29sbGFwc2libGU9b2ZmY2FudmFzXSAuXFtcW2RhdGEtc2lkZVw9bGVmdFxdXFtkYXRhLWNvbGxhcHNpYmxlXD1vZmZjYW52YXNcXV9cJlxdXDotcmlnaHQtMntyaWdodDotLjVyZW19W2RhdGEtc2lkZT1sZWZ0XVtkYXRhLXN0YXRlPWNvbGxhcHNlZF0gLlxbXFtkYXRhLXNpZGVcPWxlZnRcXVxbZGF0YS1zdGF0ZVw9Y29sbGFwc2VkXF1fXCZcXVw6Y3Vyc29yLWUtcmVzaXple2N1cnNvcjplLXJlc2l6ZX1bZGF0YS1zaWRlPWxlZnRdIC5cW1xbZGF0YS1zaWRlXD1sZWZ0XF1fXCZcXVw6Y3Vyc29yLXctcmVzaXple2N1cnNvcjp3LXJlc2l6ZX1bZGF0YS1zaWRlPXJpZ2h0XVtkYXRhLWNvbGxhcHNpYmxlPW9mZmNhbnZhc10gLlxbXFtkYXRhLXNpZGVcPXJpZ2h0XF1cW2RhdGEtY29sbGFwc2libGVcPW9mZmNhbnZhc1xdX1wmXF1cOi1sZWZ0LTJ7bGVmdDotLjVyZW19W2RhdGEtc2lkZT1yaWdodF1bZGF0YS1zdGF0ZT1jb2xsYXBzZWRdIC5cW1xbZGF0YS1zaWRlXD1yaWdodFxdXFtkYXRhLXN0YXRlXD1jb2xsYXBzZWRcXV9cJlxdXDpjdXJzb3Itdy1yZXNpemV7Y3Vyc29yOnctcmVzaXplfVtkYXRhLXNpZGU9cmlnaHRdIC5cW1xbZGF0YS1zaWRlXD1yaWdodFxdX1wmXF1cOmN1cnNvci1lLXJlc2l6ZXtjdXJzb3I6ZS1yZXNpemV9Cg==\"),s=document.createElement('style');s.textContent=new TextDecoder('utf-8').decode(Uint8Array.from(b,c=>c.charCodeAt(0)));document.head.appendChild(s);var j=atob(\"dmFyIGJtPWU9Pnt0aHJvdyBUeXBlRXJyb3IoZSl9O3ZhciBvYz0oZSx0LG4pPT50LmhhcyhlKXx8Ym0oIkNhbm5vdCAiK24pO3ZhciBMPShlLHQsbik9PihvYyhlLHQsInJlYWQgZnJvbSBwcml2YXRlIGZpZWxkIiksbj9uLmNhbGwoZSk6dC5nZXQoZSkpLGNlPShlLHQsbik9PnQuaGFzKGUpP2JtKCJDYW5ub3QgYWRkIHRoZSBzYW1lIHByaXZhdGUgbWVtYmVyIG1vcmUgdGhhbiBvbmNlIik6dCBpbnN0YW5jZW9mIFdlYWtTZXQ\/dC5hZGQoZSk6dC5zZXQoZSxuKSx0ZT0oZSx0LG4scik9PihvYyhlLHQsIndyaXRlIHRvIHByaXZhdGUgZmllbGQiKSxyP3IuY2FsbChlLG4pOnQuc2V0KGUsbiksbiksUWU9KGUsdCxuKT0+KG9jKGUsdCwiYWNjZXNzIHByaXZhdGUgbWV0aG9kIiksbik7dmFyIENhPShlLHQsbixyKT0+KHtzZXQgXyhpKXt0ZShlLHQsaSxuKX0sZ2V0IF8oKXtyZXR1cm4gTChlLHQscil9fSk7ZnVuY3Rpb24gVEMoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcj10W25dO2lmKHR5cGVvZiByIT0ic3RyaW5nIiYmIUFycmF5LmlzQXJyYXkocikpe2Zvcihjb25zdCBpIGluIHIpaWYoaSE9PSJkZWZhdWx0IiYmIShpIGluIGUpKXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixpKTtvJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLG8uZ2V0P286e2VudW1lcmFibGU6ITAsZ2V0OigpPT5yW2ldfSl9fX1yZXR1cm4gT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpfShmdW5jdGlvbigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYodCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKXJldHVybjtmb3IoY29uc3QgaSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpcihpKTtuZXcgTXV0YXRpb25PYnNlcnZlcihpPT57Zm9yKGNvbnN0IG8gb2YgaSlpZihvLnR5cGU9PT0iY2hpbGRMaXN0Iilmb3IoY29uc3QgcyBvZiBvLmFkZGVkTm9kZXMpcy50YWdOYW1lPT09IkxJTksiJiZzLnJlbD09PSJtb2R1bGVwcmVsb2FkIiYmcihzKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gbihpKXtjb25zdCBvPXt9O3JldHVybiBpLmludGVncml0eSYmKG8uaW50ZWdyaXR5PWkuaW50ZWdyaXR5KSxpLnJlZmVycmVyUG9saWN5JiYoby5yZWZlcnJlclBvbGljeT1pLnJlZmVycmVyUG9saWN5KSxpLmNyb3NzT3JpZ2luPT09InVzZS1jcmVkZW50aWFscyI\/by5jcmVkZW50aWFscz0iaW5jbHVkZSI6aS5jcm9zc09yaWdpbj09PSJhbm9ueW1vdXMiP28uY3JlZGVudGlhbHM9Im9taXQiOm8uY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixvfWZ1bmN0aW9uIHIoaSl7aWYoaS5lcClyZXR1cm47aS5lcD0hMDtjb25zdCBvPW4oaSk7ZmV0Y2goaS5ocmVmLG8pfX0pKCk7dmFyIFRsPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6e307ZnVuY3Rpb24gbXUoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsImRlZmF1bHQiKT9lLmRlZmF1bHQ6ZX12YXIgTTA9e2V4cG9ydHM6e319LGd1PXt9LEwwPXtleHBvcnRzOnt9fSxvZT17fTsvKioKICogQGxpY2Vuc2UgUmVhY3QKICogcmVhY3QucHJvZHVjdGlvbi5taW4uanMKICoKICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL3ZhciBhYT1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IiksRUM9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksUEM9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxBQz1TeW1ib2wuZm9yKCJyZWFjdC5zdHJpY3RfbW9kZSIpLElDPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksTkM9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSxqQz1TeW1ib2wuZm9yKCJyZWFjdC5jb250ZXh0IiksekM9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSxSQz1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLERDPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxNQz1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5Iiksa209U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIExDKGUpe3JldHVybiBlPT09bnVsbHx8dHlwZW9mIGUhPSJvYmplY3QiP251bGw6KGU9a20mJmVba21dfHxlWyJAQGl0ZXJhdG9yIl0sdHlwZW9mIGU9PSJmdW5jdGlvbiI\/ZTpudWxsKX12YXIgTzA9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LEYwPU9iamVjdC5hc3NpZ24sXzA9e307ZnVuY3Rpb24gRG8oZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9XzAsdGhpcy51cGRhdGVyPW58fE8wfURvLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9O0RvLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiBlIT0ib2JqZWN0IiYmdHlwZW9mIGUhPSJmdW5jdGlvbiImJmUhPW51bGwpdGhyb3cgRXJyb3IoInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLiIpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlLHQsInNldFN0YXRlIil9O0RvLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSwiZm9yY2VVcGRhdGUiKX07ZnVuY3Rpb24gVjAoKXt9VjAucHJvdG90eXBlPURvLnByb3RvdHlwZTtmdW5jdGlvbiBzaChlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1fMCx0aGlzLnVwZGF0ZXI9bnx8TzB9dmFyIGFoPXNoLnByb3RvdHlwZT1uZXcgVjA7YWguY29uc3RydWN0b3I9c2g7RjAoYWgsRG8ucHJvdG90eXBlKTthaC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgU209QXJyYXkuaXNBcnJheSxCMD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGxoPXtjdXJyZW50Om51bGx9LFUwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gJDAoZSx0LG4pe3ZhciByLGk9e30sbz1udWxsLHM9bnVsbDtpZih0IT1udWxsKWZvcihyIGluIHQucmVmIT09dm9pZCAwJiYocz10LnJlZiksdC5rZXkhPT12b2lkIDAmJihvPSIiK3Qua2V5KSx0KUIwLmNhbGwodCxyKSYmIVUwLmhhc093blByb3BlcnR5KHIpJiYoaVtyXT10W3JdKTt2YXIgYT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoYT09PTEpaS5jaGlsZHJlbj1uO2Vsc2UgaWYoMTxhKXtmb3IodmFyIGw9QXJyYXkoYSksdT0wO3U8YTt1KyspbFt1XT1hcmd1bWVudHNbdSsyXTtpLmNoaWxkcmVuPWx9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gYT1lLmRlZmF1bHRQcm9wcyxhKWlbcl09PT12b2lkIDAmJihpW3JdPWFbcl0pO3JldHVybnskJHR5cGVvZjphYSx0eXBlOmUsa2V5Om8scmVmOnMscHJvcHM6aSxfb3duZXI6bGguY3VycmVudH19ZnVuY3Rpb24gT0MoZSx0KXtyZXR1cm57JCR0eXBlb2Y6YWEsdHlwZTplLnR5cGUsa2V5OnQscmVmOmUucmVmLHByb3BzOmUucHJvcHMsX293bmVyOmUuX293bmVyfX1mdW5jdGlvbiB1aChlKXtyZXR1cm4gdHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbCYmZS4kJHR5cGVvZj09PWFhfWZ1bmN0aW9uIEZDKGUpe3ZhciB0PXsiPSI6Ij0wIiwiOiI6Ij0yIn07cmV0dXJuIiQiK2UucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKG4pe3JldHVybiB0W25dfSl9dmFyIENtPS9cLysvZztmdW5jdGlvbiBzYyhlLHQpe3JldHVybiB0eXBlb2YgZT09Im9iamVjdCImJmUhPT1udWxsJiZlLmtleSE9bnVsbD9GQygiIitlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gdGwoZSx0LG4scixpKXt2YXIgbz10eXBlb2YgZTsobz09PSJ1bmRlZmluZWQifHxvPT09ImJvb2xlYW4iKSYmKGU9bnVsbCk7dmFyIHM9ITE7aWYoZT09PW51bGwpcz0hMDtlbHNlIHN3aXRjaChvKXtjYXNlInN0cmluZyI6Y2FzZSJudW1iZXIiOnM9ITA7YnJlYWs7Y2FzZSJvYmplY3QiOnN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIGFhOmNhc2UgRUM6cz0hMH19aWYocylyZXR1cm4gcz1lLGk9aShzKSxlPXI9PT0iIj8iLiIrc2MocywwKTpyLFNtKGkpPyhuPSIiLGUhPW51bGwmJihuPWUucmVwbGFjZShDbSwiJCYvIikrIi8iKSx0bChpLHQsbiwiIixmdW5jdGlvbih1KXtyZXR1cm4gdX0pKTppIT1udWxsJiYodWgoaSkmJihpPU9DKGksbisoIWkua2V5fHxzJiZzLmtleT09PWkua2V5PyIiOigiIitpLmtleSkucmVwbGFjZShDbSwiJCYvIikrIi8iKStlKSksdC5wdXNoKGkpKSwxO2lmKHM9MCxyPXI9PT0iIj8iLiI6cisiOiIsU20oZSkpZm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspe289ZVthXTt2YXIgbD1yK3NjKG8sYSk7cys9dGwobyx0LG4sbCxpKX1lbHNlIGlmKGw9TEMoZSksdHlwZW9mIGw9PSJmdW5jdGlvbiIpZm9yKGU9bC5jYWxsKGUpLGE9MDshKG89ZS5uZXh0KCkpLmRvbmU7KW89by52YWx1ZSxsPXIrc2MobyxhKyspLHMrPXRsKG8sdCxuLGwsaSk7ZWxzZSBpZihvPT09Im9iamVjdCIpdGhyb3cgdD1TdHJpbmcoZSksRXJyb3IoIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogIisodD09PSJbb2JqZWN0IE9iamVjdF0iPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKGUpLmpvaW4oIiwgIikrIn0iOnQpKyIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuIik7cmV0dXJuIHN9ZnVuY3Rpb24gVGEoZSx0LG4pe2lmKGU9PW51bGwpcmV0dXJuIGU7dmFyIHI9W10saT0wO3JldHVybiB0bChlLHIsIiIsIiIsZnVuY3Rpb24obyl7cmV0dXJuIHQuY2FsbChuLG8saSsrKX0pLHJ9ZnVuY3Rpb24gX0MoZSl7aWYoZS5fc3RhdHVzPT09LTEpe3ZhciB0PWUuX3Jlc3VsdDt0PXQoKSx0LnRoZW4oZnVuY3Rpb24obil7KGUuX3N0YXR1cz09PTB8fGUuX3N0YXR1cz09PS0xKSYmKGUuX3N0YXR1cz0xLGUuX3Jlc3VsdD1uKX0sZnVuY3Rpb24obil7KGUuX3N0YXR1cz09PTB8fGUuX3N0YXR1cz09PS0xKSYmKGUuX3N0YXR1cz0yLGUuX3Jlc3VsdD1uKX0pLGUuX3N0YXR1cz09PS0xJiYoZS5fc3RhdHVzPTAsZS5fcmVzdWx0PXQpfWlmKGUuX3N0YXR1cz09PTEpcmV0dXJuIGUuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGUuX3Jlc3VsdH12YXIgZHQ9e2N1cnJlbnQ6bnVsbH0sbmw9e3RyYW5zaXRpb246bnVsbH0sVkM9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6ZHQsUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6bmwsUmVhY3RDdXJyZW50T3duZXI6bGh9O2Z1bmN0aW9uIEgwKCl7dGhyb3cgRXJyb3IoImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuIil9b2UuQ2hpbGRyZW49e21hcDpUYSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxuKXtUYShlLGZ1bmN0aW9uKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG4pfSxjb3VudDpmdW5jdGlvbihlKXt2YXIgdD0wO3JldHVybiBUYShlLGZ1bmN0aW9uKCl7dCsrfSksdH0sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gVGEoZSxmdW5jdGlvbih0KXtyZXR1cm4gdH0pfHxbXX0sb25seTpmdW5jdGlvbihlKXtpZighdWgoZSkpdGhyb3cgRXJyb3IoIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLiIpO3JldHVybiBlfX07b2UuQ29tcG9uZW50PURvO29lLkZyYWdtZW50PVBDO29lLlByb2ZpbGVyPUlDO29lLlB1cmVDb21wb25lbnQ9c2g7b2UuU3RyaWN0TW9kZT1BQztvZS5TdXNwZW5zZT1SQztvZS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1WQztvZS5hY3Q9SDA7b2UuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXtpZihlPT1udWxsKXRocm93IEVycm9yKCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCAiK2UrIi4iKTt2YXIgcj1GMCh7fSxlLnByb3BzKSxpPWUua2V5LG89ZS5yZWYscz1lLl9vd25lcjtpZih0IT1udWxsKXtpZih0LnJlZiE9PXZvaWQgMCYmKG89dC5yZWYscz1saC5jdXJyZW50KSx0LmtleSE9PXZvaWQgMCYmKGk9IiIrdC5rZXkpLGUudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgYT1lLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihsIGluIHQpQjAuY2FsbCh0LGwpJiYhVTAuaGFzT3duUHJvcGVydHkobCkmJihyW2xdPXRbbF09PT12b2lkIDAmJmEhPT12b2lkIDA\/YVtsXTp0W2xdKX12YXIgbD1hcmd1bWVudHMubGVuZ3RoLTI7aWYobD09PTEpci5jaGlsZHJlbj1uO2Vsc2UgaWYoMTxsKXthPUFycmF5KGwpO2Zvcih2YXIgdT0wO3U8bDt1KyspYVt1XT1hcmd1bWVudHNbdSsyXTtyLmNoaWxkcmVuPWF9cmV0dXJueyQkdHlwZW9mOmFhLHR5cGU6ZS50eXBlLGtleTppLHJlZjpvLHByb3BzOnIsX293bmVyOnN9fTtvZS5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBlPXskJHR5cGVvZjpqQyxfY3VycmVudFZhbHVlOmUsX2N1cnJlbnRWYWx1ZTI6ZSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGwsX2RlZmF1bHRWYWx1ZTpudWxsLF9nbG9iYWxOYW1lOm51bGx9LGUuUHJvdmlkZXI9eyQkdHlwZW9mOk5DLF9jb250ZXh0OmV9LGUuQ29uc3VtZXI9ZX07b2UuY3JlYXRlRWxlbWVudD0kMDtvZS5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PSQwLmJpbmQobnVsbCxlKTtyZXR1cm4gdC50eXBlPWUsdH07b2UuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O29lLmZvcndhcmRSZWY9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOnpDLHJlbmRlcjplfX07b2UuaXNWYWxpZEVsZW1lbnQ9dWg7b2UubGF6eT1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6TUMsX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDplfSxfaW5pdDpfQ319O29lLm1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6REMsdHlwZTplLGNvbXBhcmU6dD09PXZvaWQgMD9udWxsOnR9fTtvZS5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9bmwudHJhbnNpdGlvbjtubC50cmFuc2l0aW9uPXt9O3RyeXtlKCl9ZmluYWxseXtubC50cmFuc2l0aW9uPXR9fTtvZS51bnN0YWJsZV9hY3Q9SDA7b2UudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZHQuY3VycmVudC51c2VDYWxsYmFjayhlLHQpfTtvZS51c2VDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBkdC5jdXJyZW50LnVzZUNvbnRleHQoZSl9O29lLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9O29lLnVzZURlZmVycmVkVmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGR0LmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShlKX07b2UudXNlRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGR0LmN1cnJlbnQudXNlRWZmZWN0KGUsdCl9O29lLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIGR0LmN1cnJlbnQudXNlSWQoKX07b2UudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGR0LmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHQsbil9O29lLnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBkdC5jdXJyZW50LnVzZUluc2VydGlvbkVmZmVjdChlLHQpfTtvZS51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZHQuY3VycmVudC51c2VMYXlvdXRFZmZlY3QoZSx0KX07b2UudXNlTWVtbz1mdW5jdGlvbihlLHQpe3JldHVybiBkdC5jdXJyZW50LnVzZU1lbW8oZSx0KX07b2UudXNlUmVkdWNlcj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGR0LmN1cnJlbnQudXNlUmVkdWNlcihlLHQsbil9O29lLnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gZHQuY3VycmVudC51c2VSZWYoZSl9O29lLnVzZVN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBkdC5jdXJyZW50LnVzZVN0YXRlKGUpfTtvZS51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGR0LmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoZSx0LG4pfTtvZS51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGR0LmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfTtvZS52ZXJzaW9uPSIxOC4zLjEiO0wwLmV4cG9ydHM9b2U7dmFyIGI9TDAuZXhwb3J0cztjb25zdCBGPW11KGIpLGNoPVRDKHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OkZ9LFtiXSk7LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzCiAqCiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLgogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGUKICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi92YXIgQkM9YixVQz1TeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50IiksJEM9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxIQz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHFDPUJDLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLFdDPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gcTAoZSx0LG4pe3ZhciByLGk9e30sbz1udWxsLHM9bnVsbDtuIT09dm9pZCAwJiYobz0iIituKSx0LmtleSE9PXZvaWQgMCYmKG89IiIrdC5rZXkpLHQucmVmIT09dm9pZCAwJiYocz10LnJlZik7Zm9yKHIgaW4gdClIQy5jYWxsKHQscikmJiFXQy5oYXNPd25Qcm9wZXJ0eShyKSYmKGlbcl09dFtyXSk7aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gdD1lLmRlZmF1bHRQcm9wcyx0KWlbcl09PT12b2lkIDAmJihpW3JdPXRbcl0pO3JldHVybnskJHR5cGVvZjpVQyx0eXBlOmUsa2V5Om8scmVmOnMscHJvcHM6aSxfb3duZXI6cUMuY3VycmVudH19Z3UuRnJhZ21lbnQ9JEM7Z3UuanN4PXEwO2d1LmpzeHM9cTA7TTAuZXhwb3J0cz1ndTt2YXIgZz1NMC5leHBvcnRzLFcwPXtleHBvcnRzOnt9fSxMdD17fSxLMD17ZXhwb3J0czp7fX0sRzA9e307LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcwogKgogKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoTixSKXt2YXIgUz1OLmxlbmd0aDtOLnB1c2goUik7ZTpmb3IoOzA8Uzspe3ZhciBZPVMtMT4+PjEscT1OW1ldO2lmKDA8aShxLFIpKU5bWV09UixOW1NdPXEsUz1ZO2Vsc2UgYnJlYWsgZX19ZnVuY3Rpb24gbihOKXtyZXR1cm4gTi5sZW5ndGg9PT0wP251bGw6TlswXX1mdW5jdGlvbiByKE4pe2lmKE4ubGVuZ3RoPT09MClyZXR1cm4gbnVsbDt2YXIgUj1OWzBdLFM9Ti5wb3AoKTtpZihTIT09Uil7TlswXT1TO2U6Zm9yKHZhciBZPTAscT1OLmxlbmd0aCxFPXE+Pj4xO1k8RTspe3ZhciBYPTIqKFkrMSktMSxmZT1OW1hdLGFlPVgrMSxzZT1OW2FlXTtpZigwPmkoZmUsUykpYWU8cSYmMD5pKHNlLGZlKT8oTltZXT1zZSxOW2FlXT1TLFk9YWUpOihOW1ldPWZlLE5bWF09UyxZPVgpO2Vsc2UgaWYoYWU8cSYmMD5pKHNlLFMpKU5bWV09c2UsTlthZV09UyxZPWFlO2Vsc2UgYnJlYWsgZX19cmV0dXJuIFJ9ZnVuY3Rpb24gaShOLFIpe3ZhciBTPU4uc29ydEluZGV4LVIuc29ydEluZGV4O3JldHVybiBTIT09MD9TOk4uaWQtUi5pZH1pZih0eXBlb2YgcGVyZm9ybWFuY2U9PSJvYmplY3QiJiZ0eXBlb2YgcGVyZm9ybWFuY2Uubm93PT0iZnVuY3Rpb24iKXt2YXIgbz1wZXJmb3JtYW5jZTtlLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBvLm5vdygpfX1lbHNle3ZhciBzPURhdGUsYT1zLm5vdygpO2UudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHMubm93KCktYX19dmFyIGw9W10sdT1bXSxjPTEsZD1udWxsLGg9MyxmPSExLHk9ITEsbT0hMSx3PXR5cGVvZiBzZXRUaW1lb3V0PT0iZnVuY3Rpb24iP3NldFRpbWVvdXQ6bnVsbCxwPXR5cGVvZiBjbGVhclRpbWVvdXQ9PSJmdW5jdGlvbiI\/Y2xlYXJUaW1lb3V0Om51bGwsdj10eXBlb2Ygc2V0SW1tZWRpYXRlPCJ1Ij9zZXRJbW1lZGlhdGU6bnVsbDt0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnNjaGVkdWxpbmchPT12b2lkIDAmJm5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nIT09dm9pZCAwJiZuYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZy5iaW5kKG5hdmlnYXRvci5zY2hlZHVsaW5nKTtmdW5jdGlvbiB4KE4pe2Zvcih2YXIgUj1uKHUpO1IhPT1udWxsOyl7aWYoUi5jYWxsYmFjaz09PW51bGwpcih1KTtlbHNlIGlmKFIuc3RhcnRUaW1lPD1OKXIodSksUi5zb3J0SW5kZXg9Ui5leHBpcmF0aW9uVGltZSx0KGwsUik7ZWxzZSBicmVhaztSPW4odSl9fWZ1bmN0aW9uIGsoTil7aWYobT0hMSx4KE4pLCF5KWlmKG4obCkhPT1udWxsKXk9ITAsSChUKTtlbHNle3ZhciBSPW4odSk7UiE9PW51bGwmJkcoayxSLnN0YXJ0VGltZS1OKX19ZnVuY3Rpb24gVChOLFIpe3k9ITEsbSYmKG09ITEscChBKSxBPS0xKSxmPSEwO3ZhciBTPWg7dHJ5e2Zvcih4KFIpLGQ9bihsKTtkIT09bnVsbCYmKCEoZC5leHBpcmF0aW9uVGltZT5SKXx8TiYmIU0oKSk7KXt2YXIgWT1kLmNhbGxiYWNrO2lmKHR5cGVvZiBZPT0iZnVuY3Rpb24iKXtkLmNhbGxiYWNrPW51bGwsaD1kLnByaW9yaXR5TGV2ZWw7dmFyIHE9WShkLmV4cGlyYXRpb25UaW1lPD1SKTtSPWUudW5zdGFibGVfbm93KCksdHlwZW9mIHE9PSJmdW5jdGlvbiI\/ZC5jYWxsYmFjaz1xOmQ9PT1uKGwpJiZyKGwpLHgoUil9ZWxzZSByKGwpO2Q9bihsKX1pZihkIT09bnVsbCl2YXIgRT0hMDtlbHNle3ZhciBYPW4odSk7WCE9PW51bGwmJkcoayxYLnN0YXJ0VGltZS1SKSxFPSExfXJldHVybiBFfWZpbmFsbHl7ZD1udWxsLGg9UyxmPSExfX12YXIgQz0hMSxQPW51bGwsQT0tMSxqPTUsST0tMTtmdW5jdGlvbiBNKCl7cmV0dXJuIShlLnVuc3RhYmxlX25vdygpLUk8ail9ZnVuY3Rpb24geigpe2lmKFAhPT1udWxsKXt2YXIgTj1lLnVuc3RhYmxlX25vdygpO0k9Tjt2YXIgUj0hMDt0cnl7Uj1QKCEwLE4pfWZpbmFsbHl7Uj8kKCk6KEM9ITEsUD1udWxsKX19ZWxzZSBDPSExfXZhciAkO2lmKHR5cGVvZiB2PT0iZnVuY3Rpb24iKSQ9ZnVuY3Rpb24oKXt2KHopfTtlbHNlIGlmKHR5cGVvZiBNZXNzYWdlQ2hhbm5lbDwidSIpe3ZhciBPPW5ldyBNZXNzYWdlQ2hhbm5lbCxVPU8ucG9ydDI7Ty5wb3J0MS5vbm1lc3NhZ2U9eiwkPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSAkPWZ1bmN0aW9uKCl7dyh6LDApfTtmdW5jdGlvbiBIKE4pe1A9TixDfHwoQz0hMCwkKCkpfWZ1bmN0aW9uIEcoTixSKXtBPXcoZnVuY3Rpb24oKXtOKGUudW5zdGFibGVfbm93KCkpfSxSKX1lLnVuc3RhYmxlX0lkbGVQcmlvcml0eT01LGUudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk9MSxlLnVuc3RhYmxlX0xvd1ByaW9yaXR5PTQsZS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eT0zLGUudW5zdGFibGVfUHJvZmlsaW5nPW51bGwsZS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eT0yLGUudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oTil7Ti5jYWxsYmFjaz1udWxsfSxlLnVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7eXx8Znx8KHk9ITAsSChUKSl9LGUudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oTil7MD5OfHwxMjU8Tj9jb25zb2xlLmVycm9yKCJmb3JjZUZyYW1lUmF0ZSB0YWtlcyBhIHBvc2l0aXZlIGludCBiZXR3ZWVuIDAgYW5kIDEyNSwgZm9yY2luZyBmcmFtZSByYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCBzdXBwb3J0ZWQiKTpqPTA8Tj9NYXRoLmZsb29yKDFlMy9OKTo1fSxlLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIGh9LGUudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbihsKX0sZS51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKE4pe3N3aXRjaChoKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgUj0zO2JyZWFrO2RlZmF1bHQ6Uj1ofXZhciBTPWg7aD1SO3RyeXtyZXR1cm4gTigpfWZpbmFsbHl7aD1TfX0sZS51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe30sZS51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt9LGUudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKE4sUil7c3dpdGNoKE4pe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDpOPTN9dmFyIFM9aDtoPU47dHJ5e3JldHVybiBSKCl9ZmluYWxseXtoPVN9fSxlLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oTixSLFMpe3ZhciBZPWUudW5zdGFibGVfbm93KCk7c3dpdGNoKHR5cGVvZiBTPT0ib2JqZWN0IiYmUyE9PW51bGw\/KFM9Uy5kZWxheSxTPXR5cGVvZiBTPT0ibnVtYmVyIiYmMDxTP1krUzpZKTpTPVksTil7Y2FzZSAxOnZhciBxPS0xO2JyZWFrO2Nhc2UgMjpxPTI1MDticmVhaztjYXNlIDU6cT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDpxPTFlNDticmVhaztkZWZhdWx0OnE9NWUzfXJldHVybiBxPVMrcSxOPXtpZDpjKyssY2FsbGJhY2s6Uixwcmlvcml0eUxldmVsOk4sc3RhcnRUaW1lOlMsZXhwaXJhdGlvblRpbWU6cSxzb3J0SW5kZXg6LTF9LFM+WT8oTi5zb3J0SW5kZXg9Uyx0KHUsTiksbihsKT09PW51bGwmJk49PT1uKHUpJiYobT8ocChBKSxBPS0xKTptPSEwLEcoayxTLVkpKSk6KE4uc29ydEluZGV4PXEsdChsLE4pLHl8fGZ8fCh5PSEwLEgoVCkpKSxOfSxlLnVuc3RhYmxlX3Nob3VsZFlpZWxkPU0sZS51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oTil7dmFyIFI9aDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgUz1oO2g9Ujt0cnl7cmV0dXJuIE4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7aD1TfX19fSkoRzApO0swLmV4cG9ydHM9RzA7dmFyIEtDPUswLmV4cG9ydHM7LyoqCiAqIEBsaWNlbnNlIFJlYWN0CiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcwogKgogKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovdmFyIEdDPWIsRHQ9S0M7ZnVuY3Rpb24gXyhlKXtmb3IodmFyIHQ9Imh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw\/aW52YXJpYW50PSIrZSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0Kz0iJmFyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbbl0pO3JldHVybiJNaW5pZmllZCBSZWFjdCBlcnJvciAjIitlKyI7IHZpc2l0ICIrdCsiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4ifXZhciBZMD1uZXcgU2V0LElzPXt9O2Z1bmN0aW9uIElpKGUsdCl7a28oZSx0KSxrbyhlKyJDYXB0dXJlIix0KX1mdW5jdGlvbiBrbyhlLHQpe2ZvcihJc1tlXT10LGU9MDtlPHQubGVuZ3RoO2UrKylZMC5hZGQodFtlXSl9dmFyIFFuPSEodHlwZW9mIHdpbmRvdz4idSJ8fHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQ+InUifHx0eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQ+InUiKSxtZD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFlDPS9eWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRdWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRcLS4wLTlcdTAwQjdcdTAzMDAtXHUwMzZGXHUyMDNGLVx1MjA0MF0qJC8sVG09e30sRW09e307ZnVuY3Rpb24gUUMoZSl7cmV0dXJuIG1kLmNhbGwoRW0sZSk\/ITA6bWQuY2FsbChUbSxlKT8hMTpZQy50ZXN0KGUpP0VtW2VdPSEwOihUbVtlXT0hMCwhMSl9ZnVuY3Rpb24gWEMoZSx0LG4scil7aWYobiE9PW51bGwmJm4udHlwZT09PTApcmV0dXJuITE7c3dpdGNoKHR5cGVvZiB0KXtjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4gcj8hMTpuIT09bnVsbD8hbi5hY2NlcHRzQm9vbGVhbnM6KGU9ZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSksZSE9PSJkYXRhLSImJmUhPT0iYXJpYS0iKTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBKQyhlLHQsbixyKXtpZih0PT09bnVsbHx8dHlwZW9mIHQ+InUifHxYQyhlLHQsbixyKSlyZXR1cm4hMDtpZihyKXJldHVybiExO2lmKG4hPT1udWxsKXN3aXRjaChuLnR5cGUpe2Nhc2UgMzpyZXR1cm4hdDtjYXNlIDQ6cmV0dXJuIHQ9PT0hMTtjYXNlIDU6cmV0dXJuIGlzTmFOKHQpO2Nhc2UgNjpyZXR1cm4gaXNOYU4odCl8fDE+dH1yZXR1cm4hMX1mdW5jdGlvbiBmdChlLHQsbixyLGksbyxzKXt0aGlzLmFjY2VwdHNCb29sZWFucz10PT09Mnx8dD09PTN8fHQ9PT00LHRoaXMuYXR0cmlidXRlTmFtZT1yLHRoaXMuYXR0cmlidXRlTmFtZXNwYWNlPWksdGhpcy5tdXN0VXNlUHJvcGVydHk9bix0aGlzLnByb3BlcnR5TmFtZT1lLHRoaXMudHlwZT10LHRoaXMuc2FuaXRpemVVUkw9byx0aGlzLnJlbW92ZUVtcHR5U3RyaW5nPXN9dmFyIFllPXt9OyJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtZZVtlXT1uZXcgZnQoZSwwLCExLGUsbnVsbCwhMSwhMSl9KTtbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTtZZVt0XT1uZXcgZnQodCwxLCExLGVbMV0sbnVsbCwhMSwhMSl9KTtbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7WWVbZV09bmV3IGZ0KGUsMiwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtbImF1dG9SZXZlcnNlIiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZvY3VzYWJsZSIsInByZXNlcnZlQWxwaGEiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1llW2VdPW5ldyBmdChlLDIsITEsZSxudWxsLCExLCExKX0pOyJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7WWVbZV09bmV3IGZ0KGUsMywhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtbImNoZWNrZWQiLCJtdWx0aXBsZSIsIm11dGVkIiwic2VsZWN0ZWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1llW2VdPW5ldyBmdChlLDMsITAsZSxudWxsLCExLCExKX0pO1siY2FwdHVyZSIsImRvd25sb2FkIl0uZm9yRWFjaChmdW5jdGlvbihlKXtZZVtlXT1uZXcgZnQoZSw0LCExLGUsbnVsbCwhMSwhMSl9KTtbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1llW2VdPW5ldyBmdChlLDYsITEsZSxudWxsLCExLCExKX0pO1sicm93U3BhbiIsInN0YXJ0Il0uZm9yRWFjaChmdW5jdGlvbihlKXtZZVtlXT1uZXcgZnQoZSw1LCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO3ZhciBkaD0vW1wtOl0oW2Etel0pL2c7ZnVuY3Rpb24gZmgoZSl7cmV0dXJuIGVbMV0udG9VcHBlckNhc2UoKX0iYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoZGgsZmgpO1llW3RdPW5ldyBmdCh0LDEsITEsZSxudWxsLCExLCExKX0pOyJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoZGgsZmgpO1llW3RdPW5ldyBmdCh0LDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsITEsITEpfSk7WyJ4bWw6YmFzZSIsInhtbDpsYW5nIiwieG1sOnNwYWNlIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoZGgsZmgpO1llW3RdPW5ldyBmdCh0LDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwhMSwhMSl9KTtbInRhYkluZGV4IiwiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1llW2VdPW5ldyBmdChlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7WWUueGxpbmtIcmVmPW5ldyBmdCgieGxpbmtIcmVmIiwxLCExLCJ4bGluazpocmVmIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsITAsITEpO1sic3JjIiwiaHJlZiIsImFjdGlvbiIsImZvcm1BY3Rpb24iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1llW2VdPW5ldyBmdChlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7ZnVuY3Rpb24gaGgoZSx0LG4scil7dmFyIGk9WWUuaGFzT3duUHJvcGVydHkodCk\/WWVbdF06bnVsbDsoaSE9PW51bGw\/aS50eXBlIT09MDpyfHwhKDI8dC5sZW5ndGgpfHx0WzBdIT09Im8iJiZ0WzBdIT09Ik8ifHx0WzFdIT09Im4iJiZ0WzFdIT09Ik4iKSYmKEpDKHQsbixpLHIpJiYobj1udWxsKSxyfHxpPT09bnVsbD9RQyh0KSYmKG49PT1udWxsP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsIiIrbikpOmkubXVzdFVzZVByb3BlcnR5P2VbaS5wcm9wZXJ0eU5hbWVdPW49PT1udWxsP2kudHlwZT09PTM\/ITE6IiI6bjoodD1pLmF0dHJpYnV0ZU5hbWUscj1pLmF0dHJpYnV0ZU5hbWVzcGFjZSxuPT09bnVsbD9lLnJlbW92ZUF0dHJpYnV0ZSh0KTooaT1pLnR5cGUsbj1pPT09M3x8aT09PTQmJm49PT0hMD8iIjoiIituLHI\/ZS5zZXRBdHRyaWJ1dGVOUyhyLHQsbik6ZS5zZXRBdHRyaWJ1dGUodCxuKSkpKX12YXIgbnI9R0MuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsRWE9U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLFZpPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLEJpPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IikscGg9U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxnZD1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLFEwPVN5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIiksWDA9U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLG1oPVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIikseWQ9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKSx2ZD1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0IiksZ2g9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLGdyPVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKSxKMD1TeW1ib2wuZm9yKCJyZWFjdC5vZmZzY3JlZW4iKSxQbT1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gR28oZSl7cmV0dXJuIGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCI\/bnVsbDooZT1QbSYmZVtQbV18fGVbIkBAaXRlcmF0b3IiXSx0eXBlb2YgZT09ImZ1bmN0aW9uIj9lOm51bGwpfXZhciBJZT1PYmplY3QuYXNzaWduLGFjO2Z1bmN0aW9uIGFzKGUpe2lmKGFjPT09dm9pZCAwKXRyeXt0aHJvdyBFcnJvcigpfWNhdGNoKG4pe3ZhciB0PW4uc3RhY2sudHJpbSgpLm1hdGNoKC9cbiggKihhdCApPykvKTthYz10JiZ0WzFdfHwiIn1yZXR1cm5gCmArYWMrZX12YXIgbGM9ITE7ZnVuY3Rpb24gdWMoZSx0KXtpZighZXx8bGMpcmV0dXJuIiI7bGM9ITA7dmFyIG49RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXtpZih0KWlmKHQ9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInByb3BzIix7c2V0OmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX19KSx0eXBlb2YgUmVmbGVjdD09Im9iamVjdCImJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QodCxbXSl9Y2F0Y2godSl7dmFyIHI9dX1SZWZsZWN0LmNvbnN0cnVjdChlLFtdLHQpfWVsc2V7dHJ5e3QuY2FsbCgpfWNhdGNoKHUpe3I9dX1lLmNhbGwodC5wcm90b3R5cGUpfWVsc2V7dHJ5e3Rocm93IEVycm9yKCl9Y2F0Y2godSl7cj11fWUoKX19Y2F0Y2godSl7aWYodSYmciYmdHlwZW9mIHUuc3RhY2s9PSJzdHJpbmciKXtmb3IodmFyIGk9dS5zdGFjay5zcGxpdChgCmApLG89ci5zdGFjay5zcGxpdChgCmApLHM9aS5sZW5ndGgtMSxhPW8ubGVuZ3RoLTE7MTw9cyYmMDw9YSYmaVtzXSE9PW9bYV07KWEtLTtmb3IoOzE8PXMmJjA8PWE7cy0tLGEtLSlpZihpW3NdIT09b1thXSl7aWYocyE9PTF8fGEhPT0xKWRvIGlmKHMtLSxhLS0sMD5hfHxpW3NdIT09b1thXSl7dmFyIGw9YApgK2lbc10ucmVwbGFjZSgiIGF0IG5ldyAiLCIgYXQgIik7cmV0dXJuIGUuZGlzcGxheU5hbWUmJmwuaW5jbHVkZXMoIjxhbm9ueW1vdXM+IikmJihsPWwucmVwbGFjZSgiPGFub255bW91cz4iLGUuZGlzcGxheU5hbWUpKSxsfXdoaWxlKDE8PXMmJjA8PWEpO2JyZWFrfX19ZmluYWxseXtsYz0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1ufXJldHVybihlPWU\/ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lOiIiKT9hcyhlKToiIn1mdW5jdGlvbiBaQyhlKXtzd2l0Y2goZS50YWcpe2Nhc2UgNTpyZXR1cm4gYXMoZS50eXBlKTtjYXNlIDE2OnJldHVybiBhcygiTGF6eSIpO2Nhc2UgMTM6cmV0dXJuIGFzKCJTdXNwZW5zZSIpO2Nhc2UgMTk6cmV0dXJuIGFzKCJTdXNwZW5zZUxpc3QiKTtjYXNlIDA6Y2FzZSAyOmNhc2UgMTU6cmV0dXJuIGU9dWMoZS50eXBlLCExKSxlO2Nhc2UgMTE6cmV0dXJuIGU9dWMoZS50eXBlLnJlbmRlciwhMSksZTtjYXNlIDE6cmV0dXJuIGU9dWMoZS50eXBlLCEwKSxlO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIHhkKGUpe2lmKGU9PW51bGwpcmV0dXJuIG51bGw7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpcmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8bnVsbDtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7c3dpdGNoKGUpe2Nhc2UgQmk6cmV0dXJuIkZyYWdtZW50IjtjYXNlIFZpOnJldHVybiJQb3J0YWwiO2Nhc2UgZ2Q6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIHBoOnJldHVybiJTdHJpY3RNb2RlIjtjYXNlIHlkOnJldHVybiJTdXNwZW5zZSI7Y2FzZSB2ZDpyZXR1cm4iU3VzcGVuc2VMaXN0In1pZih0eXBlb2YgZT09Im9iamVjdCIpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgWDA6cmV0dXJuKGUuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSBRMDpyZXR1cm4oZS5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIG1oOnZhciB0PWUucmVuZGVyO3JldHVybiBlPWUuZGlzcGxheU5hbWUsZXx8KGU9dC5kaXNwbGF5TmFtZXx8dC5uYW1lfHwiIixlPWUhPT0iIj8iRm9yd2FyZFJlZigiK2UrIikiOiJGb3J3YXJkUmVmIiksZTtjYXNlIGdoOnJldHVybiB0PWUuZGlzcGxheU5hbWV8fG51bGwsdCE9PW51bGw\/dDp4ZChlLnR5cGUpfHwiTWVtbyI7Y2FzZSBncjp0PWUuX3BheWxvYWQsZT1lLl9pbml0O3RyeXtyZXR1cm4geGQoZSh0KSl9Y2F0Y2h7fX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBlVChlKXt2YXIgdD1lLnR5cGU7c3dpdGNoKGUudGFnKXtjYXNlIDI0OnJldHVybiJDYWNoZSI7Y2FzZSA5OnJldHVybih0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuQ29uc3VtZXIiO2Nhc2UgMTA6cmV0dXJuKHQuX2NvbnRleHQuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Qcm92aWRlciI7Y2FzZSAxODpyZXR1cm4iRGVoeWRyYXRlZEZyYWdtZW50IjtjYXNlIDExOnJldHVybiBlPXQucmVuZGVyLGU9ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiIix0LmRpc3BsYXlOYW1lfHwoZSE9PSIiPyJGb3J3YXJkUmVmKCIrZSsiKSI6IkZvcndhcmRSZWYiKTtjYXNlIDc6cmV0dXJuIkZyYWdtZW50IjtjYXNlIDU6cmV0dXJuIHQ7Y2FzZSA0OnJldHVybiJQb3J0YWwiO2Nhc2UgMzpyZXR1cm4iUm9vdCI7Y2FzZSA2OnJldHVybiJUZXh0IjtjYXNlIDE2OnJldHVybiB4ZCh0KTtjYXNlIDg6cmV0dXJuIHQ9PT1waD8iU3RyaWN0TW9kZSI6Ik1vZGUiO2Nhc2UgMjI6cmV0dXJuIk9mZnNjcmVlbiI7Y2FzZSAxMjpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgMjE6cmV0dXJuIlNjb3BlIjtjYXNlIDEzOnJldHVybiJTdXNwZW5zZSI7Y2FzZSAxOTpyZXR1cm4iU3VzcGVuc2VMaXN0IjtjYXNlIDI1OnJldHVybiJUcmFjaW5nTWFya2VyIjtjYXNlIDE6Y2FzZSAwOmNhc2UgMTc6Y2FzZSAyOmNhc2UgMTQ6Y2FzZSAxNTppZih0eXBlb2YgdD09ImZ1bmN0aW9uIilyZXR1cm4gdC5kaXNwbGF5TmFtZXx8dC5uYW1lfHxudWxsO2lmKHR5cGVvZiB0PT0ic3RyaW5nIilyZXR1cm4gdH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBGcihlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2UiYm9vbGVhbiI6Y2FzZSJudW1iZXIiOmNhc2Uic3RyaW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuIGU7Y2FzZSJvYmplY3QiOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIFowKGUpe3ZhciB0PWUudHlwZTtyZXR1cm4oZT1lLm5vZGVOYW1lKSYmZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmKHQ9PT0iY2hlY2tib3gifHx0PT09InJhZGlvIil9ZnVuY3Rpb24gdFQoZSl7dmFyIHQ9WjAoZSk\/ImNoZWNrZWQiOiJ2YWx1ZSIsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLHQpLHI9IiIrZVt0XTtpZighZS5oYXNPd25Qcm9wZXJ0eSh0KSYmdHlwZW9mIG48InUiJiZ0eXBlb2Ygbi5nZXQ9PSJmdW5jdGlvbiImJnR5cGVvZiBuLnNldD09ImZ1bmN0aW9uIil7dmFyIGk9bi5nZXQsbz1uLnNldDtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihzKXtyPSIiK3Msby5jYWxsKHRoaXMscyl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTpuLmVudW1lcmFibGV9KSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0VmFsdWU6ZnVuY3Rpb24ocyl7cj0iIitzfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXtlLl92YWx1ZVRyYWNrZXI9bnVsbCxkZWxldGUgZVt0XX19fX1mdW5jdGlvbiBQYShlKXtlLl92YWx1ZVRyYWNrZXJ8fChlLl92YWx1ZVRyYWNrZXI9dFQoZSkpfWZ1bmN0aW9uIGV4KGUpe2lmKCFlKXJldHVybiExO3ZhciB0PWUuX3ZhbHVlVHJhY2tlcjtpZighdClyZXR1cm4hMDt2YXIgbj10LmdldFZhbHVlKCkscj0iIjtyZXR1cm4gZSYmKHI9WjAoZSk\/ZS5jaGVja2VkPyJ0cnVlIjoiZmFsc2UiOmUudmFsdWUpLGU9cixlIT09bj8odC5zZXRWYWx1ZShlKSwhMCk6ITF9ZnVuY3Rpb24gRWwoZSl7aWYoZT1lfHwodHlwZW9mIGRvY3VtZW50PCJ1Ij9kb2N1bWVudDp2b2lkIDApLHR5cGVvZiBlPiJ1IilyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxlbWVudHx8ZS5ib2R5fWNhdGNoe3JldHVybiBlLmJvZHl9fWZ1bmN0aW9uIHdkKGUsdCl7dmFyIG49dC5jaGVja2VkO3JldHVybiBJZSh7fSx0LHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTp2b2lkIDAsY2hlY2tlZDpuPz9lLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBBbShlLHQpe3ZhciBuPXQuZGVmYXVsdFZhbHVlPT1udWxsPyIiOnQuZGVmYXVsdFZhbHVlLHI9dC5jaGVja2VkIT1udWxsP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkO249RnIodC52YWx1ZSE9bnVsbD90LnZhbHVlOm4pLGUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6cixpbml0aWFsVmFsdWU6bixjb250cm9sbGVkOnQudHlwZT09PSJjaGVja2JveCJ8fHQudHlwZT09PSJyYWRpbyI\/dC5jaGVja2VkIT1udWxsOnQudmFsdWUhPW51bGx9fWZ1bmN0aW9uIHR4KGUsdCl7dD10LmNoZWNrZWQsdCE9bnVsbCYmaGgoZSwiY2hlY2tlZCIsdCwhMSl9ZnVuY3Rpb24gYmQoZSx0KXt0eChlLHQpO3ZhciBuPUZyKHQudmFsdWUpLHI9dC50eXBlO2lmKG4hPW51bGwpcj09PSJudW1iZXIiPyhuPT09MCYmZS52YWx1ZT09PSIifHxlLnZhbHVlIT1uKSYmKGUudmFsdWU9IiIrbik6ZS52YWx1ZSE9PSIiK24mJihlLnZhbHVlPSIiK24pO2Vsc2UgaWYocj09PSJzdWJtaXQifHxyPT09InJlc2V0Iil7ZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik7cmV0dXJufXQuaGFzT3duUHJvcGVydHkoInZhbHVlIik\/a2QoZSx0LnR5cGUsbik6dC5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikmJmtkKGUsdC50eXBlLEZyKHQuZGVmYXVsdFZhbHVlKSksdC5jaGVja2VkPT1udWxsJiZ0LmRlZmF1bHRDaGVja2VkIT1udWxsJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfWZ1bmN0aW9uIEltKGUsdCxuKXtpZih0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfHx0Lmhhc093blByb3BlcnR5KCJkZWZhdWx0VmFsdWUiKSl7dmFyIHI9dC50eXBlO2lmKCEociE9PSJzdWJtaXQiJiZyIT09InJlc2V0Inx8dC52YWx1ZSE9PXZvaWQgMCYmdC52YWx1ZSE9PW51bGwpKXJldHVybjt0PSIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsbnx8dD09PWUudmFsdWV8fChlLnZhbHVlPXQpLGUuZGVmYXVsdFZhbHVlPXR9bj1lLm5hbWUsbiE9PSIiJiYoZS5uYW1lPSIiKSxlLmRlZmF1bHRDaGVja2VkPSEhZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLG4hPT0iIiYmKGUubmFtZT1uKX1mdW5jdGlvbiBrZChlLHQsbil7KHQhPT0ibnVtYmVyInx8RWwoZS5vd25lckRvY3VtZW50KSE9PWUpJiYobj09bnVsbD9lLmRlZmF1bHRWYWx1ZT0iIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmUuZGVmYXVsdFZhbHVlIT09IiIrbiYmKGUuZGVmYXVsdFZhbHVlPSIiK24pKX12YXIgbHM9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBybyhlLHQsbixyKXtpZihlPWUub3B0aW9ucyx0KXt0PXt9O2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXRbIiQiK25baV1dPSEwO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspaT10Lmhhc093blByb3BlcnR5KCIkIitlW25dLnZhbHVlKSxlW25dLnNlbGVjdGVkIT09aSYmKGVbbl0uc2VsZWN0ZWQ9aSksaSYmciYmKGVbbl0uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2ZvcihuPSIiK0ZyKG4pLHQ9bnVsbCxpPTA7aTxlLmxlbmd0aDtpKyspe2lmKGVbaV0udmFsdWU9PT1uKXtlW2ldLnNlbGVjdGVkPSEwLHImJihlW2ldLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufXQhPT1udWxsfHxlW2ldLmRpc2FibGVkfHwodD1lW2ldKX10IT09bnVsbCYmKHQuc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBTZChlLHQpe2lmKHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwhPW51bGwpdGhyb3cgRXJyb3IoXyg5MSkpO3JldHVybiBJZSh7fSx0LHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gTm0oZSx0KXt2YXIgbj10LnZhbHVlO2lmKG49PW51bGwpe2lmKG49dC5jaGlsZHJlbix0PXQuZGVmYXVsdFZhbHVlLG4hPW51bGwpe2lmKHQhPW51bGwpdGhyb3cgRXJyb3IoXyg5MikpO2lmKGxzKG4pKXtpZigxPG4ubGVuZ3RoKXRocm93IEVycm9yKF8oOTMpKTtuPW5bMF19dD1ufXQ9PW51bGwmJih0PSIiKSxuPXR9ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6RnIobil9fWZ1bmN0aW9uIG54KGUsdCl7dmFyIG49RnIodC52YWx1ZSkscj1Gcih0LmRlZmF1bHRWYWx1ZSk7biE9bnVsbCYmKG49IiIrbixuIT09ZS52YWx1ZSYmKGUudmFsdWU9biksdC5kZWZhdWx0VmFsdWU9PW51bGwmJmUuZGVmYXVsdFZhbHVlIT09biYmKGUuZGVmYXVsdFZhbHVlPW4pKSxyIT1udWxsJiYoZS5kZWZhdWx0VmFsdWU9IiIrcil9ZnVuY3Rpb24gam0oZSl7dmFyIHQ9ZS50ZXh0Q29udGVudDt0PT09ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmdCE9PSIiJiZ0IT09bnVsbCYmKGUudmFsdWU9dCl9ZnVuY3Rpb24gcngoZSl7c3dpdGNoKGUpe2Nhc2Uic3ZnIjpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciO2Nhc2UibWF0aCI6cmV0dXJuImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiO2RlZmF1bHQ6cmV0dXJuImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwifX1mdW5jdGlvbiBDZChlLHQpe3JldHVybiBlPT1udWxsfHxlPT09Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiP3J4KHQpOmU9PT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciJiZ0PT09ImZvcmVpZ25PYmplY3QiPyJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjplfXZhciBBYSxpeD1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIE1TQXBwPCJ1IiYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24\/ZnVuY3Rpb24odCxuLHIsaSl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4scixpKX0pfTplfShmdW5jdGlvbihlLHQpe2lmKGUubmFtZXNwYWNlVVJJIT09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnInx8ImlubmVySFRNTCJpbiBlKWUuaW5uZXJIVE1MPXQ7ZWxzZXtmb3IoQWE9QWF8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLEFhLmlubmVySFRNTD0iPHN2Zz4iK3QudmFsdWVPZigpLnRvU3RyaW5nKCkrIjwvc3ZnPiIsdD1BYS5maXJzdENoaWxkO2UuZmlyc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpO2Zvcig7dC5maXJzdENoaWxkOyllLmFwcGVuZENoaWxkKHQuZmlyc3RDaGlsZCl9fSk7ZnVuY3Rpb24gTnMoZSx0KXtpZih0KXt2YXIgbj1lLmZpcnN0Q2hpbGQ7aWYobiYmbj09PWUubGFzdENoaWxkJiZuLm5vZGVUeXBlPT09Myl7bi5ub2RlVmFsdWU9dDtyZXR1cm59fWUudGV4dENvbnRlbnQ9dH12YXIgZnM9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGFzcGVjdFJhdGlvOiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LG5UPVsiV2Via2l0IiwibXMiLCJNb3oiLCJPIl07T2JqZWN0LmtleXMoZnMpLmZvckVhY2goZnVuY3Rpb24oZSl7blQuZm9yRWFjaChmdW5jdGlvbih0KXt0PXQrZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnN1YnN0cmluZygxKSxmc1t0XT1mc1tlXX0pfSk7ZnVuY3Rpb24gb3goZSx0LG4pe3JldHVybiB0PT1udWxsfHx0eXBlb2YgdD09ImJvb2xlYW4ifHx0PT09IiI\/IiI6bnx8dHlwZW9mIHQhPSJudW1iZXIifHx0PT09MHx8ZnMuaGFzT3duUHJvcGVydHkoZSkmJmZzW2VdPygiIit0KS50cmltKCk6dCsicHgifWZ1bmN0aW9uIHN4KGUsdCl7ZT1lLnN0eWxlO2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikpe3ZhciByPW4uaW5kZXhPZigiLS0iKT09PTAsaT1veChuLHRbbl0scik7bj09PSJmbG9hdCImJihuPSJjc3NGbG9hdCIpLHI\/ZS5zZXRQcm9wZXJ0eShuLGkpOmVbbl09aX19dmFyIHJUPUllKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO2Z1bmN0aW9uIFRkKGUsdCl7aWYodCl7aWYoclRbZV0mJih0LmNoaWxkcmVuIT1udWxsfHx0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIT1udWxsKSl0aHJvdyBFcnJvcihfKDEzNyxlKSk7aWYodC5kYW5nZXJvdXNseVNldElubmVySFRNTCE9bnVsbCl7aWYodC5jaGlsZHJlbiE9bnVsbCl0aHJvdyBFcnJvcihfKDYwKSk7aWYodHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwhPSJvYmplY3QifHwhKCJfX2h0bWwiaW4gdC5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IoXyg2MSkpfWlmKHQuc3R5bGUhPW51bGwmJnR5cGVvZiB0LnN0eWxlIT0ib2JqZWN0Iil0aHJvdyBFcnJvcihfKDYyKSl9fWZ1bmN0aW9uIEVkKGUsdCl7aWYoZS5pbmRleE9mKCItIik9PT0tMSlyZXR1cm4gdHlwZW9mIHQuaXM9PSJzdHJpbmciO3N3aXRjaChlKXtjYXNlImFubm90YXRpb24teG1sIjpjYXNlImNvbG9yLXByb2ZpbGUiOmNhc2UiZm9udC1mYWNlIjpjYXNlImZvbnQtZmFjZS1zcmMiOmNhc2UiZm9udC1mYWNlLXVyaSI6Y2FzZSJmb250LWZhY2UtZm9ybWF0IjpjYXNlImZvbnQtZmFjZS1uYW1lIjpjYXNlIm1pc3NpbmctZ2x5cGgiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciBQZD1udWxsO2Z1bmN0aW9uIHloKGUpe3JldHVybiBlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdyxlLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoZT1lLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSxlLm5vZGVUeXBlPT09Mz9lLnBhcmVudE5vZGU6ZX12YXIgQWQ9bnVsbCxpbz1udWxsLG9vPW51bGw7ZnVuY3Rpb24gem0oZSl7aWYoZT1jYShlKSl7aWYodHlwZW9mIEFkIT0iZnVuY3Rpb24iKXRocm93IEVycm9yKF8oMjgwKSk7dmFyIHQ9ZS5zdGF0ZU5vZGU7dCYmKHQ9YnUodCksQWQoZS5zdGF0ZU5vZGUsZS50eXBlLHQpKX19ZnVuY3Rpb24gYXgoZSl7aW8\/b28\/b28ucHVzaChlKTpvbz1bZV06aW89ZX1mdW5jdGlvbiBseCgpe2lmKGlvKXt2YXIgZT1pbyx0PW9vO2lmKG9vPWlvPW51bGwsem0oZSksdClmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXptKHRbZV0pfX1mdW5jdGlvbiB1eChlLHQpe3JldHVybiBlKHQpfWZ1bmN0aW9uIGN4KCl7fXZhciBjYz0hMTtmdW5jdGlvbiBkeChlLHQsbil7aWYoY2MpcmV0dXJuIGUodCxuKTtjYz0hMDt0cnl7cmV0dXJuIHV4KGUsdCxuKX1maW5hbGx5e2NjPSExLChpbyE9PW51bGx8fG9vIT09bnVsbCkmJihjeCgpLGx4KCkpfX1mdW5jdGlvbiBqcyhlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO2lmKG49PT1udWxsKXJldHVybiBudWxsO3ZhciByPWJ1KG4pO2lmKHI9PT1udWxsKXJldHVybiBudWxsO249clt0XTtlOnN3aXRjaCh0KXtjYXNlIm9uQ2xpY2siOmNhc2Uib25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGljayI6Y2FzZSJvbkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1vdXNlRG93bkNhcHR1cmUiOmNhc2Uib25Nb3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJlIjpjYXNlIm9uTW91c2VVcCI6Y2FzZSJvbk1vdXNlVXBDYXB0dXJlIjpjYXNlIm9uTW91c2VFbnRlciI6KHI9IXIuZGlzYWJsZWQpfHwoZT1lLnR5cGUscj0hKGU9PT0iYnV0dG9uInx8ZT09PSJpbnB1dCJ8fGU9PT0ic2VsZWN0Inx8ZT09PSJ0ZXh0YXJlYSIpKSxlPSFyO2JyZWFrIGU7ZGVmYXVsdDplPSExfWlmKGUpcmV0dXJuIG51bGw7aWYobiYmdHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IoXygyMzEsdCx0eXBlb2YgbikpO3JldHVybiBufXZhciBJZD0hMTtpZihRbil0cnl7dmFyIFlvPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShZbywicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe0lkPSEwfX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixZbyxZbyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLFlvLFlvKX1jYXRjaHtJZD0hMX1mdW5jdGlvbiBpVChlLHQsbixyLGksbyxzLGEsbCl7dmFyIHU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXt0LmFwcGx5KG4sdSl9Y2F0Y2goYyl7dGhpcy5vbkVycm9yKGMpfX12YXIgaHM9ITEsUGw9bnVsbCxBbD0hMSxOZD1udWxsLG9UPXtvbkVycm9yOmZ1bmN0aW9uKGUpe2hzPSEwLFBsPWV9fTtmdW5jdGlvbiBzVChlLHQsbixyLGksbyxzLGEsbCl7aHM9ITEsUGw9bnVsbCxpVC5hcHBseShvVCxhcmd1bWVudHMpfWZ1bmN0aW9uIGFUKGUsdCxuLHIsaSxvLHMsYSxsKXtpZihzVC5hcHBseSh0aGlzLGFyZ3VtZW50cyksaHMpe2lmKGhzKXt2YXIgdT1QbDtocz0hMSxQbD1udWxsfWVsc2UgdGhyb3cgRXJyb3IoXygxOTgpKTtBbHx8KEFsPSEwLE5kPXUpfX1mdW5jdGlvbiBOaShlKXt2YXIgdD1lLG49ZTtpZihlLmFsdGVybmF0ZSlmb3IoO3QucmV0dXJuOyl0PXQucmV0dXJuO2Vsc2V7ZT10O2RvIHQ9ZSx0LmZsYWdzJjQwOTgmJihuPXQucmV0dXJuKSxlPXQucmV0dXJuO3doaWxlKGUpfXJldHVybiB0LnRhZz09PTM\/bjpudWxsfWZ1bmN0aW9uIGZ4KGUpe2lmKGUudGFnPT09MTMpe3ZhciB0PWUubWVtb2l6ZWRTdGF0ZTtpZih0PT09bnVsbCYmKGU9ZS5hbHRlcm5hdGUsZSE9PW51bGwmJih0PWUubWVtb2l6ZWRTdGF0ZSkpLHQhPT1udWxsKXJldHVybiB0LmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gUm0oZSl7aWYoTmkoZSkhPT1lKXRocm93IEVycm9yKF8oMTg4KSl9ZnVuY3Rpb24gbFQoZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7aWYoIXQpe2lmKHQ9TmkoZSksdD09PW51bGwpdGhyb3cgRXJyb3IoXygxODgpKTtyZXR1cm4gdCE9PWU\/bnVsbDplfWZvcih2YXIgbj1lLHI9dDs7KXt2YXIgaT1uLnJldHVybjtpZihpPT09bnVsbClicmVhazt2YXIgbz1pLmFsdGVybmF0ZTtpZihvPT09bnVsbCl7aWYocj1pLnJldHVybixyIT09bnVsbCl7bj1yO2NvbnRpbnVlfWJyZWFrfWlmKGkuY2hpbGQ9PT1vLmNoaWxkKXtmb3Iobz1pLmNoaWxkO287KXtpZihvPT09bilyZXR1cm4gUm0oaSksZTtpZihvPT09cilyZXR1cm4gUm0oaSksdDtvPW8uc2libGluZ310aHJvdyBFcnJvcihfKDE4OCkpfWlmKG4ucmV0dXJuIT09ci5yZXR1cm4pbj1pLHI9bztlbHNle2Zvcih2YXIgcz0hMSxhPWkuY2hpbGQ7YTspe2lmKGE9PT1uKXtzPSEwLG49aSxyPW87YnJlYWt9aWYoYT09PXIpe3M9ITAscj1pLG49bzticmVha31hPWEuc2libGluZ31pZighcyl7Zm9yKGE9by5jaGlsZDthOyl7aWYoYT09PW4pe3M9ITAsbj1vLHI9aTticmVha31pZihhPT09cil7cz0hMCxyPW8sbj1pO2JyZWFrfWE9YS5zaWJsaW5nfWlmKCFzKXRocm93IEVycm9yKF8oMTg5KSl9fWlmKG4uYWx0ZXJuYXRlIT09cil0aHJvdyBFcnJvcihfKDE5MCkpfWlmKG4udGFnIT09Myl0aHJvdyBFcnJvcihfKDE4OCkpO3JldHVybiBuLnN0YXRlTm9kZS5jdXJyZW50PT09bj9lOnR9ZnVuY3Rpb24gaHgoZSl7cmV0dXJuIGU9bFQoZSksZSE9PW51bGw\/cHgoZSk6bnVsbH1mdW5jdGlvbiBweChlKXtpZihlLnRhZz09PTV8fGUudGFnPT09NilyZXR1cm4gZTtmb3IoZT1lLmNoaWxkO2UhPT1udWxsOyl7dmFyIHQ9cHgoZSk7aWYodCE9PW51bGwpcmV0dXJuIHQ7ZT1lLnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIG14PUR0LnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssRG09RHQudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssdVQ9RHQudW5zdGFibGVfc2hvdWxkWWllbGQsY1Q9RHQudW5zdGFibGVfcmVxdWVzdFBhaW50LHplPUR0LnVuc3RhYmxlX25vdyxkVD1EdC51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCx2aD1EdC51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxneD1EdC51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxJbD1EdC51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxmVD1EdC51bnN0YWJsZV9Mb3dQcmlvcml0eSx5eD1EdC51bnN0YWJsZV9JZGxlUHJpb3JpdHkseXU9bnVsbCxJbj1udWxsO2Z1bmN0aW9uIGhUKGUpe2lmKEluJiZ0eXBlb2YgSW4ub25Db21taXRGaWJlclJvb3Q9PSJmdW5jdGlvbiIpdHJ5e0luLm9uQ29tbWl0RmliZXJSb290KHl1LGUsdm9pZCAwLChlLmN1cnJlbnQuZmxhZ3MmMTI4KT09PTEyOCl9Y2F0Y2h7fX12YXIgY249TWF0aC5jbHozMj9NYXRoLmNsejMyOmdULHBUPU1hdGgubG9nLG1UPU1hdGguTE4yO2Z1bmN0aW9uIGdUKGUpe3JldHVybiBlPj4+PTAsZT09PTA\/MzI6MzEtKHBUKGUpL21UfDApfDB9dmFyIElhPTY0LE5hPTQxOTQzMDQ7ZnVuY3Rpb24gdXMoZSl7c3dpdGNoKGUmLWUpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBlJjQxOTQyNDA7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4gZSYxMzAwMjM0MjQ7Y2FzZSAxMzQyMTc3Mjg6cmV0dXJuIDEzNDIxNzcyODtjYXNlIDI2ODQzNTQ1NjpyZXR1cm4gMjY4NDM1NDU2O2Nhc2UgNTM2ODcwOTEyOnJldHVybiA1MzY4NzA5MTI7Y2FzZSAxMDczNzQxODI0OnJldHVybiAxMDczNzQxODI0O2RlZmF1bHQ6cmV0dXJuIGV9fWZ1bmN0aW9uIE5sKGUsdCl7dmFyIG49ZS5wZW5kaW5nTGFuZXM7aWYobj09PTApcmV0dXJuIDA7dmFyIHI9MCxpPWUuc3VzcGVuZGVkTGFuZXMsbz1lLnBpbmdlZExhbmVzLHM9biYyNjg0MzU0NTU7aWYocyE9PTApe3ZhciBhPXMmfmk7YSE9PTA\/cj11cyhhKToobyY9cyxvIT09MCYmKHI9dXMobykpKX1lbHNlIHM9biZ+aSxzIT09MD9yPXVzKHMpOm8hPT0wJiYocj11cyhvKSk7aWYocj09PTApcmV0dXJuIDA7aWYodCE9PTAmJnQhPT1yJiYhKHQmaSkmJihpPXImLXIsbz10Ji10LGk+PW98fGk9PT0xNiYmKG8mNDE5NDI0MCkhPT0wKSlyZXR1cm4gdDtpZihyJjQmJihyfD1uJjE2KSx0PWUuZW50YW5nbGVkTGFuZXMsdCE9PTApZm9yKGU9ZS5lbnRhbmdsZW1lbnRzLHQmPXI7MDx0OyluPTMxLWNuKHQpLGk9MTw8bixyfD1lW25dLHQmPX5pO3JldHVybiByfWZ1bmN0aW9uIHlUKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiB0KzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIHQrNWUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuLTE7Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fWZ1bmN0aW9uIHZUKGUsdCl7Zm9yKHZhciBuPWUuc3VzcGVuZGVkTGFuZXMscj1lLnBpbmdlZExhbmVzLGk9ZS5leHBpcmF0aW9uVGltZXMsbz1lLnBlbmRpbmdMYW5lczswPG87KXt2YXIgcz0zMS1jbihvKSxhPTE8PHMsbD1pW3NdO2w9PT0tMT8oIShhJm4pfHxhJnIpJiYoaVtzXT15VChhLHQpKTpsPD10JiYoZS5leHBpcmVkTGFuZXN8PWEpLG8mPX5hfX1mdW5jdGlvbiBqZChlKXtyZXR1cm4gZT1lLnBlbmRpbmdMYW5lcyYtMTA3Mzc0MTgyNSxlIT09MD9lOmUmMTA3Mzc0MTgyND8xMDczNzQxODI0OjB9ZnVuY3Rpb24gdngoKXt2YXIgZT1JYTtyZXR1cm4gSWE8PD0xLCEoSWEmNDE5NDI0MCkmJihJYT02NCksZX1mdW5jdGlvbiBkYyhlKXtmb3IodmFyIHQ9W10sbj0wOzMxPm47bisrKXQucHVzaChlKTtyZXR1cm4gdH1mdW5jdGlvbiBsYShlLHQsbil7ZS5wZW5kaW5nTGFuZXN8PXQsdCE9PTUzNjg3MDkxMiYmKGUuc3VzcGVuZGVkTGFuZXM9MCxlLnBpbmdlZExhbmVzPTApLGU9ZS5ldmVudFRpbWVzLHQ9MzEtY24odCksZVt0XT1ufWZ1bmN0aW9uIHhUKGUsdCl7dmFyIG49ZS5wZW5kaW5nTGFuZXMmfnQ7ZS5wZW5kaW5nTGFuZXM9dCxlLnN1c3BlbmRlZExhbmVzPTAsZS5waW5nZWRMYW5lcz0wLGUuZXhwaXJlZExhbmVzJj10LGUubXV0YWJsZVJlYWRMYW5lcyY9dCxlLmVudGFuZ2xlZExhbmVzJj10LHQ9ZS5lbnRhbmdsZW1lbnRzO3ZhciByPWUuZXZlbnRUaW1lcztmb3IoZT1lLmV4cGlyYXRpb25UaW1lczswPG47KXt2YXIgaT0zMS1jbihuKSxvPTE8PGk7dFtpXT0wLHJbaV09LTEsZVtpXT0tMSxuJj1+b319ZnVuY3Rpb24geGgoZSx0KXt2YXIgbj1lLmVudGFuZ2xlZExhbmVzfD10O2ZvcihlPWUuZW50YW5nbGVtZW50cztuOyl7dmFyIHI9MzEtY24obiksaT0xPDxyO2kmdHxlW3JdJnQmJihlW3JdfD10KSxuJj1+aX19dmFyIGhlPTA7ZnVuY3Rpb24geHgoZSl7cmV0dXJuIGUmPS1lLDE8ZT80PGU\/ZSYyNjg0MzU0NTU\/MTY6NTM2ODcwOTEyOjQ6MX12YXIgd3gsd2gsYngsa3gsU3gsemQ9ITEsamE9W10sSXI9bnVsbCxOcj1udWxsLGpyPW51bGwsenM9bmV3IE1hcCxScz1uZXcgTWFwLHZyPVtdLHdUPSJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0Ii5zcGxpdCgiICIpO2Z1bmN0aW9uIE1tKGUsdCl7c3dpdGNoKGUpe2Nhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6SXI9bnVsbDticmVhaztjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnbGVhdmUiOk5yPW51bGw7YnJlYWs7Y2FzZSJtb3VzZW92ZXIiOmNhc2UibW91c2VvdXQiOmpyPW51bGw7YnJlYWs7Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJwb2ludGVyb3V0Ijp6cy5kZWxldGUodC5wb2ludGVySWQpO2JyZWFrO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOmNhc2UibG9zdHBvaW50ZXJjYXB0dXJlIjpScy5kZWxldGUodC5wb2ludGVySWQpfX1mdW5jdGlvbiBRbyhlLHQsbixyLGksbyl7cmV0dXJuIGU9PT1udWxsfHxlLm5hdGl2ZUV2ZW50IT09bz8oZT17YmxvY2tlZE9uOnQsZG9tRXZlbnROYW1lOm4sZXZlbnRTeXN0ZW1GbGFnczpyLG5hdGl2ZUV2ZW50Om8sdGFyZ2V0Q29udGFpbmVyczpbaV19LHQhPT1udWxsJiYodD1jYSh0KSx0IT09bnVsbCYmd2godCkpLGUpOihlLmV2ZW50U3lzdGVtRmxhZ3N8PXIsdD1lLnRhcmdldENvbnRhaW5lcnMsaSE9PW51bGwmJnQuaW5kZXhPZihpKT09PS0xJiZ0LnB1c2goaSksZSl9ZnVuY3Rpb24gYlQoZSx0LG4scixpKXtzd2l0Y2godCl7Y2FzZSJmb2N1c2luIjpyZXR1cm4gSXI9UW8oSXIsZSx0LG4scixpKSwhMDtjYXNlImRyYWdlbnRlciI6cmV0dXJuIE5yPVFvKE5yLGUsdCxuLHIsaSksITA7Y2FzZSJtb3VzZW92ZXIiOnJldHVybiBqcj1RbyhqcixlLHQsbixyLGkpLCEwO2Nhc2UicG9pbnRlcm92ZXIiOnZhciBvPWkucG9pbnRlcklkO3JldHVybiB6cy5zZXQobyxRbyh6cy5nZXQobyl8fG51bGwsZSx0LG4scixpKSksITA7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6cmV0dXJuIG89aS5wb2ludGVySWQsUnMuc2V0KG8sUW8oUnMuZ2V0KG8pfHxudWxsLGUsdCxuLHIsaSkpLCEwfXJldHVybiExfWZ1bmN0aW9uIEN4KGUpe3ZhciB0PWFpKGUudGFyZ2V0KTtpZih0IT09bnVsbCl7dmFyIG49TmkodCk7aWYobiE9PW51bGwpe2lmKHQ9bi50YWcsdD09PTEzKXtpZih0PWZ4KG4pLHQhPT1udWxsKXtlLmJsb2NrZWRPbj10LFN4KGUucHJpb3JpdHksZnVuY3Rpb24oKXtieChuKX0pO3JldHVybn19ZWxzZSBpZih0PT09MyYmbi5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7ZS5ibG9ja2VkT249bi50YWc9PT0zP24uc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fX1lLmJsb2NrZWRPbj1udWxsfWZ1bmN0aW9uIHJsKGUpe2lmKGUuYmxvY2tlZE9uIT09bnVsbClyZXR1cm4hMTtmb3IodmFyIHQ9ZS50YXJnZXRDb250YWluZXJzOzA8dC5sZW5ndGg7KXt2YXIgbj1SZChlLmRvbUV2ZW50TmFtZSxlLmV2ZW50U3lzdGVtRmxhZ3MsdFswXSxlLm5hdGl2ZUV2ZW50KTtpZihuPT09bnVsbCl7bj1lLm5hdGl2ZUV2ZW50O3ZhciByPW5ldyBuLmNvbnN0cnVjdG9yKG4udHlwZSxuKTtQZD1yLG4udGFyZ2V0LmRpc3BhdGNoRXZlbnQociksUGQ9bnVsbH1lbHNlIHJldHVybiB0PWNhKG4pLHQhPT1udWxsJiZ3aCh0KSxlLmJsb2NrZWRPbj1uLCExO3Quc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiBMbShlLHQsbil7cmwoZSkmJm4uZGVsZXRlKHQpfWZ1bmN0aW9uIGtUKCl7emQ9ITEsSXIhPT1udWxsJiZybChJcikmJihJcj1udWxsKSxOciE9PW51bGwmJnJsKE5yKSYmKE5yPW51bGwpLGpyIT09bnVsbCYmcmwoanIpJiYoanI9bnVsbCksenMuZm9yRWFjaChMbSksUnMuZm9yRWFjaChMbSl9ZnVuY3Rpb24gWG8oZSx0KXtlLmJsb2NrZWRPbj09PXQmJihlLmJsb2NrZWRPbj1udWxsLHpkfHwoemQ9ITAsRHQudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhEdC51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxrVCkpKX1mdW5jdGlvbiBEcyhlKXtmdW5jdGlvbiB0KGkpe3JldHVybiBYbyhpLGUpfWlmKDA8amEubGVuZ3RoKXtYbyhqYVswXSxlKTtmb3IodmFyIG49MTtuPGphLmxlbmd0aDtuKyspe3ZhciByPWphW25dO3IuYmxvY2tlZE9uPT09ZSYmKHIuYmxvY2tlZE9uPW51bGwpfX1mb3IoSXIhPT1udWxsJiZYbyhJcixlKSxOciE9PW51bGwmJlhvKE5yLGUpLGpyIT09bnVsbCYmWG8oanIsZSksenMuZm9yRWFjaCh0KSxScy5mb3JFYWNoKHQpLG49MDtuPHZyLmxlbmd0aDtuKyspcj12cltuXSxyLmJsb2NrZWRPbj09PWUmJihyLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8dnIubGVuZ3RoJiYobj12clswXSxuLmJsb2NrZWRPbj09PW51bGwpOylDeChuKSxuLmJsb2NrZWRPbj09PW51bGwmJnZyLnNoaWZ0KCl9dmFyIHNvPW5yLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGpsPSEwO2Z1bmN0aW9uIFNUKGUsdCxuLHIpe3ZhciBpPWhlLG89c28udHJhbnNpdGlvbjtzby50cmFuc2l0aW9uPW51bGw7dHJ5e2hlPTEsYmgoZSx0LG4scil9ZmluYWxseXtoZT1pLHNvLnRyYW5zaXRpb249b319ZnVuY3Rpb24gQ1QoZSx0LG4scil7dmFyIGk9aGUsbz1zby50cmFuc2l0aW9uO3NvLnRyYW5zaXRpb249bnVsbDt0cnl7aGU9NCxiaChlLHQsbixyKX1maW5hbGx5e2hlPWksc28udHJhbnNpdGlvbj1vfX1mdW5jdGlvbiBiaChlLHQsbixyKXtpZihqbCl7dmFyIGk9UmQoZSx0LG4scik7aWYoaT09PW51bGwpYmMoZSx0LHIsemwsbiksTW0oZSxyKTtlbHNlIGlmKGJUKGksZSx0LG4scikpci5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKE1tKGUsciksdCY0JiYtMTx3VC5pbmRleE9mKGUpKXtmb3IoO2khPT1udWxsOyl7dmFyIG89Y2EoaSk7aWYobyE9PW51bGwmJnd4KG8pLG89UmQoZSx0LG4sciksbz09PW51bGwmJmJjKGUsdCxyLHpsLG4pLG89PT1pKWJyZWFrO2k9b31pIT09bnVsbCYmci5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIGJjKGUsdCxyLG51bGwsbil9fXZhciB6bD1udWxsO2Z1bmN0aW9uIFJkKGUsdCxuLHIpe2lmKHpsPW51bGwsZT15aChyKSxlPWFpKGUpLGUhPT1udWxsKWlmKHQ9TmkoZSksdD09PW51bGwpZT1udWxsO2Vsc2UgaWYobj10LnRhZyxuPT09MTMpe2lmKGU9ZngodCksZSE9PW51bGwpcmV0dXJuIGU7ZT1udWxsfWVsc2UgaWYobj09PTMpe2lmKHQuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIHQudGFnPT09Mz90LnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7ZT1udWxsfWVsc2UgdCE9PWUmJihlPW51bGwpO3JldHVybiB6bD1lLG51bGx9ZnVuY3Rpb24gVHgoZSl7c3dpdGNoKGUpe2Nhc2UiY2FuY2VsIjpjYXNlImNsaWNrIjpjYXNlImNsb3NlIjpjYXNlImNvbnRleHRtZW51IjpjYXNlImNvcHkiOmNhc2UiY3V0IjpjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOmNhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6Y2FzZSJpbnB1dCI6Y2FzZSJpbnZhbGlkIjpjYXNlImtleWRvd24iOmNhc2Uia2V5cHJlc3MiOmNhc2Uia2V5dXAiOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNldXAiOmNhc2UicGFzdGUiOmNhc2UicGF1c2UiOmNhc2UicGxheSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJ1cCI6Y2FzZSJyYXRlY2hhbmdlIjpjYXNlInJlc2V0IjpjYXNlInJlc2l6ZSI6Y2FzZSJzZWVrZWQiOmNhc2Uic3VibWl0IjpjYXNlInRvdWNoY2FuY2VsIjpjYXNlInRvdWNoZW5kIjpjYXNlInRvdWNoc3RhcnQiOmNhc2Uidm9sdW1lY2hhbmdlIjpjYXNlImNoYW5nZSI6Y2FzZSJzZWxlY3Rpb25jaGFuZ2UiOmNhc2UidGV4dElucHV0IjpjYXNlImNvbXBvc2l0aW9uc3RhcnQiOmNhc2UiY29tcG9zaXRpb25lbmQiOmNhc2UiY29tcG9zaXRpb251cGRhdGUiOmNhc2UiYmVmb3JlYmx1ciI6Y2FzZSJhZnRlcmJsdXIiOmNhc2UiYmVmb3JlaW5wdXQiOmNhc2UiYmx1ciI6Y2FzZSJmdWxsc2NyZWVuY2hhbmdlIjpjYXNlImZvY3VzIjpjYXNlImhhc2hjaGFuZ2UiOmNhc2UicG9wc3RhdGUiOmNhc2Uic2VsZWN0IjpjYXNlInNlbGVjdHN0YXJ0IjpyZXR1cm4gMTtjYXNlImRyYWciOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJtb3VzZW1vdmUiOmNhc2UibW91c2VvdXQiOmNhc2UibW91c2VvdmVyIjpjYXNlInBvaW50ZXJtb3ZlIjpjYXNlInBvaW50ZXJvdXQiOmNhc2UicG9pbnRlcm92ZXIiOmNhc2Uic2Nyb2xsIjpjYXNlInRvZ2dsZSI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2Uid2hlZWwiOmNhc2UibW91c2VlbnRlciI6Y2FzZSJtb3VzZWxlYXZlIjpjYXNlInBvaW50ZXJlbnRlciI6Y2FzZSJwb2ludGVybGVhdmUiOnJldHVybiA0O2Nhc2UibWVzc2FnZSI6c3dpdGNoKGRUKCkpe2Nhc2Ugdmg6cmV0dXJuIDE7Y2FzZSBneDpyZXR1cm4gNDtjYXNlIElsOmNhc2UgZlQ6cmV0dXJuIDE2O2Nhc2UgeXg6cmV0dXJuIDUzNjg3MDkxMjtkZWZhdWx0OnJldHVybiAxNn1kZWZhdWx0OnJldHVybiAxNn19dmFyIFRyPW51bGwsa2g9bnVsbCxpbD1udWxsO2Z1bmN0aW9uIEV4KCl7aWYoaWwpcmV0dXJuIGlsO3ZhciBlLHQ9a2gsbj10Lmxlbmd0aCxyLGk9InZhbHVlImluIFRyP1RyLnZhbHVlOlRyLnRleHRDb250ZW50LG89aS5sZW5ndGg7Zm9yKGU9MDtlPG4mJnRbZV09PT1pW2VdO2UrKyk7dmFyIHM9bi1lO2ZvcihyPTE7cjw9cyYmdFtuLXJdPT09aVtvLXJdO3IrKyk7cmV0dXJuIGlsPWkuc2xpY2UoZSwxPHI\/MS1yOnZvaWQgMCl9ZnVuY3Rpb24gb2woZSl7dmFyIHQ9ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPyhlPWUuY2hhckNvZGUsZT09PTAmJnQ9PT0xMyYmKGU9MTMpKTplPXQsZT09PTEwJiYoZT0xMyksMzI8PWV8fGU9PT0xMz9lOjB9ZnVuY3Rpb24gemEoKXtyZXR1cm4hMH1mdW5jdGlvbiBPbSgpe3JldHVybiExfWZ1bmN0aW9uIE90KGUpe2Z1bmN0aW9uIHQobixyLGksbyxzKXt0aGlzLl9yZWFjdE5hbWU9bix0aGlzLl90YXJnZXRJbnN0PWksdGhpcy50eXBlPXIsdGhpcy5uYXRpdmVFdmVudD1vLHRoaXMudGFyZ2V0PXMsdGhpcy5jdXJyZW50VGFyZ2V0PW51bGw7Zm9yKHZhciBhIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShhKSYmKG49ZVthXSx0aGlzW2FdPW4\/bihvKTpvW2FdKTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG8uZGVmYXVsdFByZXZlbnRlZCE9bnVsbD9vLmRlZmF1bHRQcmV2ZW50ZWQ6by5yZXR1cm5WYWx1ZT09PSExKT96YTpPbSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPU9tLHRoaXN9cmV0dXJuIEllKHQucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgbj10aGlzLm5hdGl2ZUV2ZW50O24mJihuLnByZXZlbnREZWZhdWx0P24ucHJldmVudERlZmF1bHQoKTp0eXBlb2Ygbi5yZXR1cm5WYWx1ZSE9InVua25vd24iJiYobi5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9emEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgbj10aGlzLm5hdGl2ZUV2ZW50O24mJihuLnN0b3BQcm9wYWdhdGlvbj9uLnN0b3BQcm9wYWdhdGlvbigpOnR5cGVvZiBuLmNhbmNlbEJ1YmJsZSE9InVua25vd24iJiYobi5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9emEpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7fSxpc1BlcnNpc3RlbnQ6emF9KSx0fXZhciBNbz17ZXZlbnRQaGFzZTowLGJ1YmJsZXM6MCxjYW5jZWxhYmxlOjAsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDowLGlzVHJ1c3RlZDowfSxTaD1PdChNbyksdWE9SWUoe30sTW8se3ZpZXc6MCxkZXRhaWw6MH0pLFRUPU90KHVhKSxmYyxoYyxKbyx2dT1JZSh7fSx1YSx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTpDaCxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVkVGFyZ2V0PT09dm9pZCAwP2UuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ\/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudDplLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihlKXtyZXR1cm4ibW92ZW1lbnRYImluIGU\/ZS5tb3ZlbWVudFg6KGUhPT1KbyYmKEpvJiZlLnR5cGU9PT0ibW91c2Vtb3ZlIj8oZmM9ZS5zY3JlZW5YLUpvLnNjcmVlblgsaGM9ZS5zY3JlZW5ZLUpvLnNjcmVlblkpOmhjPWZjPTAsSm89ZSksZmMpfSxtb3ZlbWVudFk6ZnVuY3Rpb24oZSl7cmV0dXJuIm1vdmVtZW50WSJpbiBlP2UubW92ZW1lbnRZOmhjfX0pLEZtPU90KHZ1KSxFVD1JZSh7fSx2dSx7ZGF0YVRyYW5zZmVyOjB9KSxQVD1PdChFVCksQVQ9SWUoe30sdWEse3JlbGF0ZWRUYXJnZXQ6MH0pLHBjPU90KEFUKSxJVD1JZSh7fSxNbyx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksTlQ9T3QoSVQpLGpUPUllKHt9LE1vLHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlwYm9hcmREYXRhImluIGU\/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLHpUPU90KGpUKSxSVD1JZSh7fSxNbyx7ZGF0YTowfSksX209T3QoUlQpLERUPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxNVD17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2siLDIyNDoiTWV0YSJ9LExUPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07ZnVuY3Rpb24gT1QoZSl7dmFyIHQ9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gdC5nZXRNb2RpZmllclN0YXRlP3QuZ2V0TW9kaWZpZXJTdGF0ZShlKTooZT1MVFtlXSk\/ISF0W2VdOiExfWZ1bmN0aW9uIENoKCl7cmV0dXJuIE9UfXZhciBGVD1JZSh7fSx1YSx7a2V5OmZ1bmN0aW9uKGUpe2lmKGUua2V5KXt2YXIgdD1EVFtlLmtleV18fGUua2V5O2lmKHQhPT0iVW5pZGVudGlmaWVkIilyZXR1cm4gdH1yZXR1cm4gZS50eXBlPT09ImtleXByZXNzIj8oZT1vbChlKSxlPT09MTM\/IkVudGVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTplLnR5cGU9PT0ia2V5ZG93biJ8fGUudHlwZT09PSJrZXl1cCI\/TVRbZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOkNoLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT0ia2V5cHJlc3MiP29sKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PSJrZXlkb3duInx8ZS50eXBlPT09ImtleXVwIj9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PSJrZXlwcmVzcyI\/b2woZSk6ZS50eXBlPT09ImtleWRvd24ifHxlLnR5cGU9PT0ia2V5dXAiP2Uua2V5Q29kZTowfX0pLF9UPU90KEZUKSxWVD1JZSh7fSx2dSx7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSxWbT1PdChWVCksQlQ9SWUoe30sdWEse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTpDaH0pLFVUPU90KEJUKSwkVD1JZSh7fSxNbyx7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxIVD1PdCgkVCkscVQ9SWUoe30sdnUse2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFYImluIGU\/ZS5kZWx0YVg6IndoZWVsRGVsdGFYImluIGU\/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVkiaW4gZT9lLmRlbHRhWToid2hlZWxEZWx0YVkiaW4gZT8tZS53aGVlbERlbHRhWToid2hlZWxEZWx0YSJpbiBlPy1lLndoZWVsRGVsdGE6MH0sZGVsdGFaOjAsZGVsdGFNb2RlOjB9KSxXVD1PdChxVCksS1Q9WzksMTMsMjcsMzJdLFRoPVFuJiYiQ29tcG9zaXRpb25FdmVudCJpbiB3aW5kb3cscHM9bnVsbDtRbiYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKHBzPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIEdUPVFuJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIXBzLFB4PVFuJiYoIVRofHxwcyYmODxwcyYmMTE+PXBzKSxCbT0iICIsVW09ITE7ZnVuY3Rpb24gQXgoZSx0KXtzd2l0Y2goZSl7Y2FzZSJrZXl1cCI6cmV0dXJuIEtULmluZGV4T2YodC5rZXlDb2RlKSE9PS0xO2Nhc2Uia2V5ZG93biI6cmV0dXJuIHQua2V5Q29kZSE9PTIyOTtjYXNlImtleXByZXNzIjpjYXNlIm1vdXNlZG93biI6Y2FzZSJmb2N1c291dCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gSXgoZSl7cmV0dXJuIGU9ZS5kZXRhaWwsdHlwZW9mIGU9PSJvYmplY3QiJiYiZGF0YSJpbiBlP2UuZGF0YTpudWxsfXZhciBVaT0hMTtmdW5jdGlvbiBZVChlLHQpe3N3aXRjaChlKXtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZXR1cm4gSXgodCk7Y2FzZSJrZXlwcmVzcyI6cmV0dXJuIHQud2hpY2ghPT0zMj9udWxsOihVbT0hMCxCbSk7Y2FzZSJ0ZXh0SW5wdXQiOnJldHVybiBlPXQuZGF0YSxlPT09Qm0mJlVtP251bGw6ZTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBRVChlLHQpe2lmKFVpKXJldHVybiBlPT09ImNvbXBvc2l0aW9uZW5kInx8IVRoJiZBeChlLHQpPyhlPUV4KCksaWw9a2g9VHI9bnVsbCxVaT0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlInBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlImtleXByZXNzIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZXR1cm4gUHgmJnQubG9jYWxlIT09ImtvIj9udWxsOnQuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgWFQ9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsImRhdGV0aW1lLWxvY2FsIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uICRtKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD09PSJpbnB1dCI\/ISFYVFtlLnR5cGVdOnQ9PT0idGV4dGFyZWEifWZ1bmN0aW9uIE54KGUsdCxuLHIpe2F4KHIpLHQ9UmwodCwib25DaGFuZ2UiKSwwPHQubGVuZ3RoJiYobj1uZXcgU2goIm9uQ2hhbmdlIiwiY2hhbmdlIixudWxsLG4sciksZS5wdXNoKHtldmVudDpuLGxpc3RlbmVyczp0fSkpfXZhciBtcz1udWxsLE1zPW51bGw7ZnVuY3Rpb24gSlQoZSl7QngoZSwwKX1mdW5jdGlvbiB4dShlKXt2YXIgdD1xaShlKTtpZihleCh0KSlyZXR1cm4gZX1mdW5jdGlvbiBaVChlLHQpe2lmKGU9PT0iY2hhbmdlIilyZXR1cm4gdH12YXIgang9ITE7aWYoUW4pe3ZhciBtYztpZihRbil7dmFyIGdjPSJvbmlucHV0ImluIGRvY3VtZW50O2lmKCFnYyl7dmFyIEhtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0htLnNldEF0dHJpYnV0ZSgib25pbnB1dCIsInJldHVybjsiKSxnYz10eXBlb2YgSG0ub25pbnB1dD09ImZ1bmN0aW9uIn1tYz1nY31lbHNlIG1jPSExO2p4PW1jJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIHFtKCl7bXMmJihtcy5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsengpLE1zPW1zPW51bGwpfWZ1bmN0aW9uIHp4KGUpe2lmKGUucHJvcGVydHlOYW1lPT09InZhbHVlIiYmeHUoTXMpKXt2YXIgdD1bXTtOeCh0LE1zLGUseWgoZSkpLGR4KEpULHQpfX1mdW5jdGlvbiBlRShlLHQsbil7ZT09PSJmb2N1c2luIj8ocW0oKSxtcz10LE1zPW4sbXMuYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLHp4KSk6ZT09PSJmb2N1c291dCImJnFtKCl9ZnVuY3Rpb24gdEUoZSl7aWYoZT09PSJzZWxlY3Rpb25jaGFuZ2UifHxlPT09ImtleXVwInx8ZT09PSJrZXlkb3duIilyZXR1cm4geHUoTXMpfWZ1bmN0aW9uIG5FKGUsdCl7aWYoZT09PSJjbGljayIpcmV0dXJuIHh1KHQpfWZ1bmN0aW9uIHJFKGUsdCl7aWYoZT09PSJpbnB1dCJ8fGU9PT0iY2hhbmdlIilyZXR1cm4geHUodCl9ZnVuY3Rpb24gaUUoZSx0KXtyZXR1cm4gZT09PXQmJihlIT09MHx8MS9lPT09MS90KXx8ZSE9PWUmJnQhPT10fXZhciBobj10eXBlb2YgT2JqZWN0LmlzPT0iZnVuY3Rpb24iP09iamVjdC5pczppRTtmdW5jdGlvbiBMcyhlLHQpe2lmKGhuKGUsdCkpcmV0dXJuITA7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbHx8dHlwZW9mIHQhPSJvYmplY3QifHx0PT09bnVsbClyZXR1cm4hMTt2YXIgbj1PYmplY3Qua2V5cyhlKSxyPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGk9bltyXTtpZighbWQuY2FsbCh0LGkpfHwhaG4oZVtpXSx0W2ldKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBXbShlKXtmb3IoO2UmJmUuZmlyc3RDaGlsZDspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9ZnVuY3Rpb24gS20oZSx0KXt2YXIgbj1XbShlKTtlPTA7Zm9yKHZhciByO247KXtpZihuLm5vZGVUeXBlPT09Myl7aWYocj1lK24udGV4dENvbnRlbnQubGVuZ3RoLGU8PXQmJnI+PXQpcmV0dXJue25vZGU6bixvZmZzZXQ6dC1lfTtlPXJ9ZTp7Zm9yKDtuOyl7aWYobi5uZXh0U2libGluZyl7bj1uLm5leHRTaWJsaW5nO2JyZWFrIGV9bj1uLnBhcmVudE5vZGV9bj12b2lkIDB9bj1XbShuKX19ZnVuY3Rpb24gUngoZSx0KXtyZXR1cm4gZSYmdD9lPT09dD8hMDplJiZlLm5vZGVUeXBlPT09Mz8hMTp0JiZ0Lm5vZGVUeXBlPT09Mz9SeChlLHQucGFyZW50Tm9kZSk6ImNvbnRhaW5zImluIGU\/ZS5jb250YWlucyh0KTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPyEhKGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkmMTYpOiExOiExfWZ1bmN0aW9uIER4KCl7Zm9yKHZhciBlPXdpbmRvdyx0PUVsKCk7dCBpbnN0YW5jZW9mIGUuSFRNTElGcmFtZUVsZW1lbnQ7KXt0cnl7dmFyIG49dHlwZW9mIHQuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmPT0ic3RyaW5nIn1jYXRjaHtuPSExfWlmKG4pZT10LmNvbnRlbnRXaW5kb3c7ZWxzZSBicmVhazt0PUVsKGUuZG9jdW1lbnQpfXJldHVybiB0fWZ1bmN0aW9uIEVoKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKHQ9PT0iaW5wdXQiJiYoZS50eXBlPT09InRleHQifHxlLnR5cGU9PT0ic2VhcmNoInx8ZS50eXBlPT09InRlbCJ8fGUudHlwZT09PSJ1cmwifHxlLnR5cGU9PT0icGFzc3dvcmQiKXx8dD09PSJ0ZXh0YXJlYSJ8fGUuY29udGVudEVkaXRhYmxlPT09InRydWUiKX1mdW5jdGlvbiBvRShlKXt2YXIgdD1EeCgpLG49ZS5mb2N1c2VkRWxlbSxyPWUuc2VsZWN0aW9uUmFuZ2U7aWYodCE9PW4mJm4mJm4ub3duZXJEb2N1bWVudCYmUngobi5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuKSl7aWYociE9PW51bGwmJkVoKG4pKXtpZih0PXIuc3RhcnQsZT1yLmVuZCxlPT09dm9pZCAwJiYoZT10KSwic2VsZWN0aW9uU3RhcnQiaW4gbiluLnNlbGVjdGlvblN0YXJ0PXQsbi5zZWxlY3Rpb25FbmQ9TWF0aC5taW4oZSxuLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihlPSh0PW4ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZ0LmRlZmF1bHRWaWV3fHx3aW5kb3csZS5nZXRTZWxlY3Rpb24pe2U9ZS5nZXRTZWxlY3Rpb24oKTt2YXIgaT1uLnRleHRDb250ZW50Lmxlbmd0aCxvPU1hdGgubWluKHIuc3RhcnQsaSk7cj1yLmVuZD09PXZvaWQgMD9vOk1hdGgubWluKHIuZW5kLGkpLCFlLmV4dGVuZCYmbz5yJiYoaT1yLHI9byxvPWkpLGk9S20obixvKTt2YXIgcz1LbShuLHIpO2kmJnMmJihlLnJhbmdlQ291bnQhPT0xfHxlLmFuY2hvck5vZGUhPT1pLm5vZGV8fGUuYW5jaG9yT2Zmc2V0IT09aS5vZmZzZXR8fGUuZm9jdXNOb2RlIT09cy5ub2RlfHxlLmZvY3VzT2Zmc2V0IT09cy5vZmZzZXQpJiYodD10LmNyZWF0ZVJhbmdlKCksdC5zZXRTdGFydChpLm5vZGUsaS5vZmZzZXQpLGUucmVtb3ZlQWxsUmFuZ2VzKCksbz5yPyhlLmFkZFJhbmdlKHQpLGUuZXh0ZW5kKHMubm9kZSxzLm9mZnNldCkpOih0LnNldEVuZChzLm5vZGUscy5vZmZzZXQpLGUuYWRkUmFuZ2UodCkpKX19Zm9yKHQ9W10sZT1uO2U9ZS5wYXJlbnROb2RlOyllLm5vZGVUeXBlPT09MSYmdC5wdXNoKHtlbGVtZW50OmUsbGVmdDplLnNjcm9sbExlZnQsdG9wOmUuc2Nyb2xsVG9wfSk7Zm9yKHR5cGVvZiBuLmZvY3VzPT0iZnVuY3Rpb24iJiZuLmZvY3VzKCksbj0wO248dC5sZW5ndGg7bisrKWU9dFtuXSxlLmVsZW1lbnQuc2Nyb2xsTGVmdD1lLmxlZnQsZS5lbGVtZW50LnNjcm9sbFRvcD1lLnRvcH19dmFyIHNFPVFuJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLCRpPW51bGwsRGQ9bnVsbCxncz1udWxsLE1kPSExO2Z1bmN0aW9uIEdtKGUsdCxuKXt2YXIgcj1uLndpbmRvdz09PW4\/bi5kb2N1bWVudDpuLm5vZGVUeXBlPT09OT9uOm4ub3duZXJEb2N1bWVudDtNZHx8JGk9PW51bGx8fCRpIT09RWwocil8fChyPSRpLCJzZWxlY3Rpb25TdGFydCJpbiByJiZFaChyKT9yPXtzdGFydDpyLnNlbGVjdGlvblN0YXJ0LGVuZDpyLnNlbGVjdGlvbkVuZH06KHI9KHIub3duZXJEb2N1bWVudCYmci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLHI9e2FuY2hvck5vZGU6ci5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpyLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ci5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ci5mb2N1c09mZnNldH0pLGdzJiZMcyhncyxyKXx8KGdzPXIscj1SbChEZCwib25TZWxlY3QiKSwwPHIubGVuZ3RoJiYodD1uZXcgU2goIm9uU2VsZWN0Iiwic2VsZWN0IixudWxsLHQsbiksZS5wdXNoKHtldmVudDp0LGxpc3RlbmVyczpyfSksdC50YXJnZXQ9JGkpKSl9ZnVuY3Rpb24gUmEoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG59dmFyIEhpPXthbmltYXRpb25lbmQ6UmEoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpSYSgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6UmEoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpSYSgiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0seWM9e30sTXg9e307UW4mJihNeD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIEhpLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIEhpLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIEhpLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBIaS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO2Z1bmN0aW9uIHd1KGUpe2lmKHljW2VdKXJldHVybiB5Y1tlXTtpZighSGlbZV0pcmV0dXJuIGU7dmFyIHQ9SGlbZV0sbjtmb3IobiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gTXgpcmV0dXJuIHljW2VdPXRbbl07cmV0dXJuIGV9dmFyIEx4PXd1KCJhbmltYXRpb25lbmQiKSxPeD13dSgiYW5pbWF0aW9uaXRlcmF0aW9uIiksRng9d3UoImFuaW1hdGlvbnN0YXJ0IiksX3g9d3UoInRyYW5zaXRpb25lbmQiKSxWeD1uZXcgTWFwLFltPSJhYm9ydCBhdXhDbGljayBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHRvZ2dsZSB0b3VjaE1vdmUgd2FpdGluZyB3aGVlbCIuc3BsaXQoIiAiKTtmdW5jdGlvbiBxcihlLHQpe1Z4LnNldChlLHQpLElpKHQsW2VdKX1mb3IodmFyIHZjPTA7dmM8WW0ubGVuZ3RoO3ZjKyspe3ZhciB4Yz1ZbVt2Y10sYUU9eGMudG9Mb3dlckNhc2UoKSxsRT14Y1swXS50b1VwcGVyQ2FzZSgpK3hjLnNsaWNlKDEpO3FyKGFFLCJvbiIrbEUpfXFyKEx4LCJvbkFuaW1hdGlvbkVuZCIpO3FyKE94LCJvbkFuaW1hdGlvbkl0ZXJhdGlvbiIpO3FyKEZ4LCJvbkFuaW1hdGlvblN0YXJ0Iik7cXIoImRibGNsaWNrIiwib25Eb3VibGVDbGljayIpO3FyKCJmb2N1c2luIiwib25Gb2N1cyIpO3FyKCJmb2N1c291dCIsIm9uQmx1ciIpO3FyKF94LCJvblRyYW5zaXRpb25FbmQiKTtrbygib25Nb3VzZUVudGVyIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pO2tvKCJvbk1vdXNlTGVhdmUiLFsibW91c2VvdXQiLCJtb3VzZW92ZXIiXSk7a28oIm9uUG9pbnRlckVudGVyIixbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdKTtrbygib25Qb2ludGVyTGVhdmUiLFsicG9pbnRlcm91dCIsInBvaW50ZXJvdmVyIl0pO0lpKCJvbkNoYW5nZSIsImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKTtJaSgib25TZWxlY3QiLCJmb2N1c291dCBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzaW4ga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2UiLnNwbGl0KCIgIikpO0lpKCJvbkJlZm9yZUlucHV0IixbImNvbXBvc2l0aW9uZW5kIiwia2V5cHJlc3MiLCJ0ZXh0SW5wdXQiLCJwYXN0ZSJdKTtJaSgib25Db21wb3NpdGlvbkVuZCIsImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duIi5zcGxpdCgiICIpKTtJaSgib25Db21wb3NpdGlvblN0YXJ0IiwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7SWkoIm9uQ29tcG9zaXRpb25VcGRhdGUiLCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7dmFyIGNzPSJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyIuc3BsaXQoIiAiKSx1RT1uZXcgU2V0KCJjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCB0b2dnbGUiLnNwbGl0KCIgIikuY29uY2F0KGNzKSk7ZnVuY3Rpb24gUW0oZSx0LG4pe3ZhciByPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD1uLGFUKHIsdCx2b2lkIDAsZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gQngoZSx0KXt0PSh0JjQpIT09MDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXSxpPXIuZXZlbnQ7cj1yLmxpc3RlbmVycztlOnt2YXIgbz12b2lkIDA7aWYodClmb3IodmFyIHM9ci5sZW5ndGgtMTswPD1zO3MtLSl7dmFyIGE9cltzXSxsPWEuaW5zdGFuY2UsdT1hLmN1cnJlbnRUYXJnZXQ7aWYoYT1hLmxpc3RlbmVyLGwhPT1vJiZpLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgZTtRbShpLGEsdSksbz1sfWVsc2UgZm9yKHM9MDtzPHIubGVuZ3RoO3MrKyl7aWYoYT1yW3NdLGw9YS5pbnN0YW5jZSx1PWEuY3VycmVudFRhcmdldCxhPWEubGlzdGVuZXIsbCE9PW8mJmkuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO1FtKGksYSx1KSxvPWx9fX1pZihBbCl0aHJvdyBlPU5kLEFsPSExLE5kPW51bGwsZX1mdW5jdGlvbiB3ZShlLHQpe3ZhciBuPXRbVmRdO249PT12b2lkIDAmJihuPXRbVmRdPW5ldyBTZXQpO3ZhciByPWUrIl9fYnViYmxlIjtuLmhhcyhyKXx8KFV4KHQsZSwyLCExKSxuLmFkZChyKSl9ZnVuY3Rpb24gd2MoZSx0LG4pe3ZhciByPTA7dCYmKHJ8PTQpLFV4KG4sZSxyLHQpfXZhciBEYT0iX3JlYWN0TGlzdGVuaW5nIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBPcyhlKXtpZighZVtEYV0pe2VbRGFdPSEwLFkwLmZvckVhY2goZnVuY3Rpb24obil7biE9PSJzZWxlY3Rpb25jaGFuZ2UiJiYodUUuaGFzKG4pfHx3YyhuLCExLGUpLHdjKG4sITAsZSkpfSk7dmFyIHQ9ZS5ub2RlVHlwZT09PTk\/ZTplLm93bmVyRG9jdW1lbnQ7dD09PW51bGx8fHRbRGFdfHwodFtEYV09ITAsd2MoInNlbGVjdGlvbmNoYW5nZSIsITEsdCkpfX1mdW5jdGlvbiBVeChlLHQsbixyKXtzd2l0Y2goVHgodCkpe2Nhc2UgMTp2YXIgaT1TVDticmVhaztjYXNlIDQ6aT1DVDticmVhaztkZWZhdWx0Omk9Ymh9bj1pLmJpbmQobnVsbCx0LG4sZSksaT12b2lkIDAsIUlkfHx0IT09InRvdWNoc3RhcnQiJiZ0IT09InRvdWNobW92ZSImJnQhPT0id2hlZWwifHwoaT0hMCkscj9pIT09dm9pZCAwP2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4se2NhcHR1cmU6ITAscGFzc2l2ZTppfSk6ZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCk6aSE9PXZvaWQgMD9lLmFkZEV2ZW50TGlzdGVuZXIodCxuLHtwYXNzaXZlOml9KTplLmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKX1mdW5jdGlvbiBiYyhlLHQsbixyLGkpe3ZhciBvPXI7aWYoISh0JjEpJiYhKHQmMikmJnIhPT1udWxsKWU6Zm9yKDs7KXtpZihyPT09bnVsbClyZXR1cm47dmFyIHM9ci50YWc7aWYocz09PTN8fHM9PT00KXt2YXIgYT1yLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lmKGE9PT1pfHxhLm5vZGVUeXBlPT09OCYmYS5wYXJlbnROb2RlPT09aSlicmVhaztpZihzPT09NClmb3Iocz1yLnJldHVybjtzIT09bnVsbDspe3ZhciBsPXMudGFnO2lmKChsPT09M3x8bD09PTQpJiYobD1zLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGw9PT1pfHxsLm5vZGVUeXBlPT09OCYmbC5wYXJlbnROb2RlPT09aSkpcmV0dXJuO3M9cy5yZXR1cm59Zm9yKDthIT09bnVsbDspe2lmKHM9YWkoYSkscz09PW51bGwpcmV0dXJuO2lmKGw9cy50YWcsbD09PTV8fGw9PT02KXtyPW89cztjb250aW51ZSBlfWE9YS5wYXJlbnROb2RlfX1yPXIucmV0dXJufWR4KGZ1bmN0aW9uKCl7dmFyIHU9byxjPXloKG4pLGQ9W107ZTp7dmFyIGg9VnguZ2V0KGUpO2lmKGghPT12b2lkIDApe3ZhciBmPVNoLHk9ZTtzd2l0Y2goZSl7Y2FzZSJrZXlwcmVzcyI6aWYob2wobik9PT0wKWJyZWFrIGU7Y2FzZSJrZXlkb3duIjpjYXNlImtleXVwIjpmPV9UO2JyZWFrO2Nhc2UiZm9jdXNpbiI6eT0iZm9jdXMiLGY9cGM7YnJlYWs7Y2FzZSJmb2N1c291dCI6eT0iYmx1ciIsZj1wYzticmVhaztjYXNlImJlZm9yZWJsdXIiOmNhc2UiYWZ0ZXJibHVyIjpmPXBjO2JyZWFrO2Nhc2UiY2xpY2siOmlmKG4uYnV0dG9uPT09MilicmVhayBlO2Nhc2UiYXV4Y2xpY2siOmNhc2UiZGJsY2xpY2siOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNlbW92ZSI6Y2FzZSJtb3VzZXVwIjpjYXNlIm1vdXNlb3V0IjpjYXNlIm1vdXNlb3ZlciI6Y2FzZSJjb250ZXh0bWVudSI6Zj1GbTticmVhaztjYXNlImRyYWciOmNhc2UiZHJhZ2VuZCI6Y2FzZSJkcmFnZW50ZXIiOmNhc2UiZHJhZ2V4aXQiOmNhc2UiZHJhZ2xlYXZlIjpjYXNlImRyYWdvdmVyIjpjYXNlImRyYWdzdGFydCI6Y2FzZSJkcm9wIjpmPVBUO2JyZWFrO2Nhc2UidG91Y2hjYW5jZWwiOmNhc2UidG91Y2hlbmQiOmNhc2UidG91Y2htb3ZlIjpjYXNlInRvdWNoc3RhcnQiOmY9VVQ7YnJlYWs7Y2FzZSBMeDpjYXNlIE94OmNhc2UgRng6Zj1OVDticmVhaztjYXNlIF94OmY9SFQ7YnJlYWs7Y2FzZSJzY3JvbGwiOmY9VFQ7YnJlYWs7Y2FzZSJ3aGVlbCI6Zj1XVDticmVhaztjYXNlImNvcHkiOmNhc2UiY3V0IjpjYXNlInBhc3RlIjpmPXpUO2JyZWFrO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOmNhc2UibG9zdHBvaW50ZXJjYXB0dXJlIjpjYXNlInBvaW50ZXJjYW5jZWwiOmNhc2UicG9pbnRlcmRvd24iOmNhc2UicG9pbnRlcm1vdmUiOmNhc2UicG9pbnRlcm91dCI6Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJwb2ludGVydXAiOmY9Vm19dmFyIG09KHQmNCkhPT0wLHc9IW0mJmU9PT0ic2Nyb2xsIixwPW0\/aCE9PW51bGw\/aCsiQ2FwdHVyZSI6bnVsbDpoO209W107Zm9yKHZhciB2PXUseDt2IT09bnVsbDspe3g9djt2YXIgaz14LnN0YXRlTm9kZTtpZih4LnRhZz09PTUmJmshPT1udWxsJiYoeD1rLHAhPT1udWxsJiYoaz1qcyh2LHApLGshPW51bGwmJm0ucHVzaChGcyh2LGsseCkpKSksdylicmVhazt2PXYucmV0dXJufTA8bS5sZW5ndGgmJihoPW5ldyBmKGgseSxudWxsLG4sYyksZC5wdXNoKHtldmVudDpoLGxpc3RlbmVyczptfSkpfX1pZighKHQmNykpe2U6e2lmKGg9ZT09PSJtb3VzZW92ZXIifHxlPT09InBvaW50ZXJvdmVyIixmPWU9PT0ibW91c2VvdXQifHxlPT09InBvaW50ZXJvdXQiLGgmJm4hPT1QZCYmKHk9bi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KSYmKGFpKHkpfHx5W1huXSkpYnJlYWsgZTtpZigoZnx8aCkmJihoPWMud2luZG93PT09Yz9jOihoPWMub3duZXJEb2N1bWVudCk\/aC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3c6d2luZG93LGY\/KHk9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudCxmPXUseT15P2FpKHkpOm51bGwseSE9PW51bGwmJih3PU5pKHkpLHkhPT13fHx5LnRhZyE9PTUmJnkudGFnIT09NikmJih5PW51bGwpKTooZj1udWxsLHk9dSksZiE9PXkpKXtpZihtPUZtLGs9Im9uTW91c2VMZWF2ZSIscD0ib25Nb3VzZUVudGVyIix2PSJtb3VzZSIsKGU9PT0icG9pbnRlcm91dCJ8fGU9PT0icG9pbnRlcm92ZXIiKSYmKG09Vm0saz0ib25Qb2ludGVyTGVhdmUiLHA9Im9uUG9pbnRlckVudGVyIix2PSJwb2ludGVyIiksdz1mPT1udWxsP2g6cWkoZikseD15PT1udWxsP2g6cWkoeSksaD1uZXcgbShrLHYrImxlYXZlIixmLG4sYyksaC50YXJnZXQ9dyxoLnJlbGF0ZWRUYXJnZXQ9eCxrPW51bGwsYWkoYyk9PT11JiYobT1uZXcgbShwLHYrImVudGVyIix5LG4sYyksbS50YXJnZXQ9eCxtLnJlbGF0ZWRUYXJnZXQ9dyxrPW0pLHc9ayxmJiZ5KXQ6e2ZvcihtPWYscD15LHY9MCx4PW07eDt4PU9pKHgpKXYrKztmb3IoeD0wLGs9cDtrO2s9T2koaykpeCsrO2Zvcig7MDx2LXg7KW09T2kobSksdi0tO2Zvcig7MDx4LXY7KXA9T2kocCkseC0tO2Zvcig7di0tOyl7aWYobT09PXB8fHAhPT1udWxsJiZtPT09cC5hbHRlcm5hdGUpYnJlYWsgdDttPU9pKG0pLHA9T2kocCl9bT1udWxsfWVsc2UgbT1udWxsO2YhPT1udWxsJiZYbShkLGgsZixtLCExKSx5IT09bnVsbCYmdyE9PW51bGwmJlhtKGQsdyx5LG0sITApfX1lOntpZihoPXU\/cWkodSk6d2luZG93LGY9aC5ub2RlTmFtZSYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGY9PT0ic2VsZWN0Inx8Zj09PSJpbnB1dCImJmgudHlwZT09PSJmaWxlIil2YXIgVD1aVDtlbHNlIGlmKCRtKGgpKWlmKGp4KVQ9ckU7ZWxzZXtUPXRFO3ZhciBDPWVFfWVsc2UoZj1oLm5vZGVOYW1lKSYmZi50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmKGgudHlwZT09PSJjaGVja2JveCJ8fGgudHlwZT09PSJyYWRpbyIpJiYoVD1uRSk7aWYoVCYmKFQ9VChlLHUpKSl7TngoZCxULG4sYyk7YnJlYWsgZX1DJiZDKGUsaCx1KSxlPT09ImZvY3Vzb3V0IiYmKEM9aC5fd3JhcHBlclN0YXRlKSYmQy5jb250cm9sbGVkJiZoLnR5cGU9PT0ibnVtYmVyIiYma2QoaCwibnVtYmVyIixoLnZhbHVlKX1zd2l0Y2goQz11P3FpKHUpOndpbmRvdyxlKXtjYXNlImZvY3VzaW4iOigkbShDKXx8Qy5jb250ZW50RWRpdGFibGU9PT0idHJ1ZSIpJiYoJGk9QyxEZD11LGdzPW51bGwpO2JyZWFrO2Nhc2UiZm9jdXNvdXQiOmdzPURkPSRpPW51bGw7YnJlYWs7Y2FzZSJtb3VzZWRvd24iOk1kPSEwO2JyZWFrO2Nhc2UiY29udGV4dG1lbnUiOmNhc2UibW91c2V1cCI6Y2FzZSJkcmFnZW5kIjpNZD0hMSxHbShkLG4sYyk7YnJlYWs7Y2FzZSJzZWxlY3Rpb25jaGFuZ2UiOmlmKHNFKWJyZWFrO2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6R20oZCxuLGMpfXZhciBQO2lmKFRoKWU6e3N3aXRjaChlKXtjYXNlImNvbXBvc2l0aW9uc3RhcnQiOnZhciBBPSJvbkNvbXBvc2l0aW9uU3RhcnQiO2JyZWFrIGU7Y2FzZSJjb21wb3NpdGlvbmVuZCI6QT0ib25Db21wb3NpdGlvbkVuZCI7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9udXBkYXRlIjpBPSJvbkNvbXBvc2l0aW9uVXBkYXRlIjticmVhayBlfUE9dm9pZCAwfWVsc2UgVWk\/QXgoZSxuKSYmKEE9Im9uQ29tcG9zaXRpb25FbmQiKTplPT09ImtleWRvd24iJiZuLmtleUNvZGU9PT0yMjkmJihBPSJvbkNvbXBvc2l0aW9uU3RhcnQiKTtBJiYoUHgmJm4ubG9jYWxlIT09ImtvIiYmKFVpfHxBIT09Im9uQ29tcG9zaXRpb25TdGFydCI\/QT09PSJvbkNvbXBvc2l0aW9uRW5kIiYmVWkmJihQPUV4KCkpOihUcj1jLGtoPSJ2YWx1ZSJpbiBUcj9Uci52YWx1ZTpUci50ZXh0Q29udGVudCxVaT0hMCkpLEM9UmwodSxBKSwwPEMubGVuZ3RoJiYoQT1uZXcgX20oQSxlLG51bGwsbixjKSxkLnB1c2goe2V2ZW50OkEsbGlzdGVuZXJzOkN9KSxQP0EuZGF0YT1QOihQPUl4KG4pLFAhPT1udWxsJiYoQS5kYXRhPVApKSkpLChQPUdUP1lUKGUsbik6UVQoZSxuKSkmJih1PVJsKHUsIm9uQmVmb3JlSW5wdXQiKSwwPHUubGVuZ3RoJiYoYz1uZXcgX20oIm9uQmVmb3JlSW5wdXQiLCJiZWZvcmVpbnB1dCIsbnVsbCxuLGMpLGQucHVzaCh7ZXZlbnQ6YyxsaXN0ZW5lcnM6dX0pLGMuZGF0YT1QKSl9QngoZCx0KX0pfWZ1bmN0aW9uIEZzKGUsdCxuKXtyZXR1cm57aW5zdGFuY2U6ZSxsaXN0ZW5lcjp0LGN1cnJlbnRUYXJnZXQ6bn19ZnVuY3Rpb24gUmwoZSx0KXtmb3IodmFyIG49dCsiQ2FwdHVyZSIscj1bXTtlIT09bnVsbDspe3ZhciBpPWUsbz1pLnN0YXRlTm9kZTtpLnRhZz09PTUmJm8hPT1udWxsJiYoaT1vLG89anMoZSxuKSxvIT1udWxsJiZyLnVuc2hpZnQoRnMoZSxvLGkpKSxvPWpzKGUsdCksbyE9bnVsbCYmci5wdXNoKEZzKGUsbyxpKSkpLGU9ZS5yZXR1cm59cmV0dXJuIHJ9ZnVuY3Rpb24gT2koZSl7aWYoZT09PW51bGwpcmV0dXJuIG51bGw7ZG8gZT1lLnJldHVybjt3aGlsZShlJiZlLnRhZyE9PTUpO3JldHVybiBlfHxudWxsfWZ1bmN0aW9uIFhtKGUsdCxuLHIsaSl7Zm9yKHZhciBvPXQuX3JlYWN0TmFtZSxzPVtdO24hPT1udWxsJiZuIT09cjspe3ZhciBhPW4sbD1hLmFsdGVybmF0ZSx1PWEuc3RhdGVOb2RlO2lmKGwhPT1udWxsJiZsPT09cilicmVhazthLnRhZz09PTUmJnUhPT1udWxsJiYoYT11LGk\/KGw9anMobixvKSxsIT1udWxsJiZzLnVuc2hpZnQoRnMobixsLGEpKSk6aXx8KGw9anMobixvKSxsIT1udWxsJiZzLnB1c2goRnMobixsLGEpKSkpLG49bi5yZXR1cm59cy5sZW5ndGghPT0wJiZlLnB1c2goe2V2ZW50OnQsbGlzdGVuZXJzOnN9KX12YXIgY0U9L1xyXG4\/L2csZEU9L1x1MDAwMHxcdUZGRkQvZztmdW5jdGlvbiBKbShlKXtyZXR1cm4odHlwZW9mIGU9PSJzdHJpbmciP2U6IiIrZSkucmVwbGFjZShjRSxgCmApLnJlcGxhY2UoZEUsIiIpfWZ1bmN0aW9uIE1hKGUsdCxuKXtpZih0PUptKHQpLEptKGUpIT09dCYmbil0aHJvdyBFcnJvcihfKDQyNSkpfWZ1bmN0aW9uIERsKCl7fXZhciBMZD1udWxsLE9kPW51bGw7ZnVuY3Rpb24gRmQoZSx0KXtyZXR1cm4gZT09PSJ0ZXh0YXJlYSJ8fGU9PT0ibm9zY3JpcHQifHx0eXBlb2YgdC5jaGlsZHJlbj09InN0cmluZyJ8fHR5cGVvZiB0LmNoaWxkcmVuPT0ibnVtYmVyInx8dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9PSJvYmplY3QiJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIT09bnVsbCYmdC5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwhPW51bGx9dmFyIF9kPXR5cGVvZiBzZXRUaW1lb3V0PT0iZnVuY3Rpb24iP3NldFRpbWVvdXQ6dm9pZCAwLGZFPXR5cGVvZiBjbGVhclRpbWVvdXQ9PSJmdW5jdGlvbiI\/Y2xlYXJUaW1lb3V0OnZvaWQgMCxabT10eXBlb2YgUHJvbWlzZT09ImZ1bmN0aW9uIj9Qcm9taXNlOnZvaWQgMCxoRT10eXBlb2YgcXVldWVNaWNyb3Rhc2s9PSJmdW5jdGlvbiI\/cXVldWVNaWNyb3Rhc2s6dHlwZW9mIFptPCJ1Ij9mdW5jdGlvbihlKXtyZXR1cm4gWm0ucmVzb2x2ZShudWxsKS50aGVuKGUpLmNhdGNoKHBFKX06X2Q7ZnVuY3Rpb24gcEUoZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX1mdW5jdGlvbiBrYyhlLHQpe3ZhciBuPXQscj0wO2Rve3ZhciBpPW4ubmV4dFNpYmxpbmc7aWYoZS5yZW1vdmVDaGlsZChuKSxpJiZpLm5vZGVUeXBlPT09OClpZihuPWkuZGF0YSxuPT09Ii8kIil7aWYocj09PTApe2UucmVtb3ZlQ2hpbGQoaSksRHModCk7cmV0dXJufXItLX1lbHNlIG4hPT0iJCImJm4hPT0iJD8iJiZuIT09IiQhInx8cisrO249aX13aGlsZShuKTtEcyh0KX1mdW5jdGlvbiB6cihlKXtmb3IoO2UhPW51bGw7ZT1lLm5leHRTaWJsaW5nKXt2YXIgdD1lLm5vZGVUeXBlO2lmKHQ9PT0xfHx0PT09MylicmVhaztpZih0PT09OCl7aWYodD1lLmRhdGEsdD09PSIkInx8dD09PSIkISJ8fHQ9PT0iJD8iKWJyZWFrO2lmKHQ9PT0iLyQiKXJldHVybiBudWxsfX1yZXR1cm4gZX1mdW5jdGlvbiBlZyhlKXtlPWUucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgdD0wO2U7KXtpZihlLm5vZGVUeXBlPT09OCl7dmFyIG49ZS5kYXRhO2lmKG49PT0iJCJ8fG49PT0iJCEifHxuPT09IiQ\/Iil7aWYodD09PTApcmV0dXJuIGU7dC0tfWVsc2Ugbj09PSIvJCImJnQrK31lPWUucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfXZhciBMbz1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxFbj0iX19yZWFjdEZpYmVyJCIrTG8sX3M9Il9fcmVhY3RQcm9wcyQiK0xvLFhuPSJfX3JlYWN0Q29udGFpbmVyJCIrTG8sVmQ9Il9fcmVhY3RFdmVudHMkIitMbyxtRT0iX19yZWFjdExpc3RlbmVycyQiK0xvLGdFPSJfX3JlYWN0SGFuZGxlcyQiK0xvO2Z1bmN0aW9uIGFpKGUpe3ZhciB0PWVbRW5dO2lmKHQpcmV0dXJuIHQ7Zm9yKHZhciBuPWUucGFyZW50Tm9kZTtuOyl7aWYodD1uW1huXXx8bltFbl0pe2lmKG49dC5hbHRlcm5hdGUsdC5jaGlsZCE9PW51bGx8fG4hPT1udWxsJiZuLmNoaWxkIT09bnVsbClmb3IoZT1lZyhlKTtlIT09bnVsbDspe2lmKG49ZVtFbl0pcmV0dXJuIG47ZT1lZyhlKX1yZXR1cm4gdH1lPW4sbj1lLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY2EoZSl7cmV0dXJuIGU9ZVtFbl18fGVbWG5dLCFlfHxlLnRhZyE9PTUmJmUudGFnIT09NiYmZS50YWchPT0xMyYmZS50YWchPT0zP251bGw6ZX1mdW5jdGlvbiBxaShlKXtpZihlLnRhZz09PTV8fGUudGFnPT09NilyZXR1cm4gZS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IoXygzMykpfWZ1bmN0aW9uIGJ1KGUpe3JldHVybiBlW19zXXx8bnVsbH12YXIgQmQ9W10sV2k9LTE7ZnVuY3Rpb24gV3IoZSl7cmV0dXJue2N1cnJlbnQ6ZX19ZnVuY3Rpb24gYmUoZSl7MD5XaXx8KGUuY3VycmVudD1CZFtXaV0sQmRbV2ldPW51bGwsV2ktLSl9ZnVuY3Rpb24gZ2UoZSx0KXtXaSsrLEJkW1dpXT1lLmN1cnJlbnQsZS5jdXJyZW50PXR9dmFyIF9yPXt9LHR0PVdyKF9yKSx2dD1XcighMSksU2k9X3I7ZnVuY3Rpb24gU28oZSx0KXt2YXIgbj1lLnR5cGUuY29udGV4dFR5cGVzO2lmKCFuKXJldHVybiBfcjt2YXIgcj1lLnN0YXRlTm9kZTtpZihyJiZyLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9PT10KXJldHVybiByLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0O3ZhciBpPXt9LG87Zm9yKG8gaW4gbilpW29dPXRbb107cmV0dXJuIHImJihlPWUuc3RhdGVOb2RlLGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD10LGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9aSksaX1mdW5jdGlvbiB4dChlKXtyZXR1cm4gZT1lLmNoaWxkQ29udGV4dFR5cGVzLGUhPW51bGx9ZnVuY3Rpb24gTWwoKXtiZSh2dCksYmUodHQpfWZ1bmN0aW9uIHRnKGUsdCxuKXtpZih0dC5jdXJyZW50IT09X3IpdGhyb3cgRXJyb3IoXygxNjgpKTtnZSh0dCx0KSxnZSh2dCxuKX1mdW5jdGlvbiAkeChlLHQsbil7dmFyIHI9ZS5zdGF0ZU5vZGU7aWYodD10LmNoaWxkQ29udGV4dFR5cGVzLHR5cGVvZiByLmdldENoaWxkQ29udGV4dCE9ImZ1bmN0aW9uIilyZXR1cm4gbjtyPXIuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBpIGluIHIpaWYoIShpIGluIHQpKXRocm93IEVycm9yKF8oMTA4LGVUKGUpfHwiVW5rbm93biIsaSkpO3JldHVybiBJZSh7fSxuLHIpfWZ1bmN0aW9uIExsKGUpe3JldHVybiBlPShlPWUuc3RhdGVOb2RlKSYmZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8X3IsU2k9dHQuY3VycmVudCxnZSh0dCxlKSxnZSh2dCx2dC5jdXJyZW50KSwhMH1mdW5jdGlvbiBuZyhlLHQsbil7dmFyIHI9ZS5zdGF0ZU5vZGU7aWYoIXIpdGhyb3cgRXJyb3IoXygxNjkpKTtuPyhlPSR4KGUsdCxTaSksci5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dD1lLGJlKHZ0KSxiZSh0dCksZ2UodHQsZSkpOmJlKHZ0KSxnZSh2dCxuKX12YXIgcW49bnVsbCxrdT0hMSxTYz0hMTtmdW5jdGlvbiBIeChlKXtxbj09PW51bGw\/cW49W2VdOnFuLnB1c2goZSl9ZnVuY3Rpb24geUUoZSl7a3U9ITAsSHgoZSl9ZnVuY3Rpb24gS3IoKXtpZighU2MmJnFuIT09bnVsbCl7U2M9ITA7dmFyIGU9MCx0PWhlO3RyeXt2YXIgbj1xbjtmb3IoaGU9MTtlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9bltlXTtkbyByPXIoITApO3doaWxlKHIhPT1udWxsKX1xbj1udWxsLGt1PSExfWNhdGNoKGkpe3Rocm93IHFuIT09bnVsbCYmKHFuPXFuLnNsaWNlKGUrMSkpLG14KHZoLEtyKSxpfWZpbmFsbHl7aGU9dCxTYz0hMX19cmV0dXJuIG51bGx9dmFyIEtpPVtdLEdpPTAsT2w9bnVsbCxGbD0wLFZ0PVtdLEJ0PTAsQ2k9bnVsbCxLbj0xLEduPSIiO2Z1bmN0aW9uIG5pKGUsdCl7S2lbR2krK109RmwsS2lbR2krK109T2wsT2w9ZSxGbD10fWZ1bmN0aW9uIHF4KGUsdCxuKXtWdFtCdCsrXT1LbixWdFtCdCsrXT1HbixWdFtCdCsrXT1DaSxDaT1lO3ZhciByPUtuO2U9R247dmFyIGk9MzItY24ociktMTtyJj1+KDE8PGkpLG4rPTE7dmFyIG89MzItY24odCkraTtpZigzMDxvKXt2YXIgcz1pLWklNTtvPShyJigxPDxzKS0xKS50b1N0cmluZygzMikscj4+PXMsaS09cyxLbj0xPDwzMi1jbih0KStpfG48PGl8cixHbj1vK2V9ZWxzZSBLbj0xPDxvfG48PGl8cixHbj1lfWZ1bmN0aW9uIFBoKGUpe2UucmV0dXJuIT09bnVsbCYmKG5pKGUsMSkscXgoZSwxLDApKX1mdW5jdGlvbiBBaChlKXtmb3IoO2U9PT1PbDspT2w9S2lbLS1HaV0sS2lbR2ldPW51bGwsRmw9S2lbLS1HaV0sS2lbR2ldPW51bGw7Zm9yKDtlPT09Q2k7KUNpPVZ0Wy0tQnRdLFZ0W0J0XT1udWxsLEduPVZ0Wy0tQnRdLFZ0W0J0XT1udWxsLEtuPVZ0Wy0tQnRdLFZ0W0J0XT1udWxsfXZhciB6dD1udWxsLE50PW51bGwsQ2U9ITEsdW49bnVsbDtmdW5jdGlvbiBXeChlLHQpe3ZhciBuPSR0KDUsbnVsbCxudWxsLDApO24uZWxlbWVudFR5cGU9IkRFTEVURUQiLG4uc3RhdGVOb2RlPXQsbi5yZXR1cm49ZSx0PWUuZGVsZXRpb25zLHQ9PT1udWxsPyhlLmRlbGV0aW9ucz1bbl0sZS5mbGFnc3w9MTYpOnQucHVzaChuKX1mdW5jdGlvbiByZyhlLHQpe3N3aXRjaChlLnRhZyl7Y2FzZSA1OnZhciBuPWUudHlwZTtyZXR1cm4gdD10Lm5vZGVUeXBlIT09MXx8bi50b0xvd2VyQ2FzZSgpIT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6dCx0IT09bnVsbD8oZS5zdGF0ZU5vZGU9dCx6dD1lLE50PXpyKHQuZmlyc3RDaGlsZCksITApOiExO2Nhc2UgNjpyZXR1cm4gdD1lLnBlbmRpbmdQcm9wcz09PSIifHx0Lm5vZGVUeXBlIT09Mz9udWxsOnQsdCE9PW51bGw\/KGUuc3RhdGVOb2RlPXQsenQ9ZSxOdD1udWxsLCEwKTohMTtjYXNlIDEzOnJldHVybiB0PXQubm9kZVR5cGUhPT04P251bGw6dCx0IT09bnVsbD8obj1DaSE9PW51bGw\/e2lkOktuLG92ZXJmbG93OkdufTpudWxsLGUubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDp0LHRyZWVDb250ZXh0Om4scmV0cnlMYW5lOjEwNzM3NDE4MjR9LG49JHQoMTgsbnVsbCxudWxsLDApLG4uc3RhdGVOb2RlPXQsbi5yZXR1cm49ZSxlLmNoaWxkPW4senQ9ZSxOdD1udWxsLCEwKTohMTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBVZChlKXtyZXR1cm4oZS5tb2RlJjEpIT09MCYmKGUuZmxhZ3MmMTI4KT09PTB9ZnVuY3Rpb24gJGQoZSl7aWYoQ2Upe3ZhciB0PU50O2lmKHQpe3ZhciBuPXQ7aWYoIXJnKGUsdCkpe2lmKFVkKGUpKXRocm93IEVycm9yKF8oNDE4KSk7dD16cihuLm5leHRTaWJsaW5nKTt2YXIgcj16dDt0JiZyZyhlLHQpP1d4KHIsbik6KGUuZmxhZ3M9ZS5mbGFncyYtNDA5N3wyLENlPSExLHp0PWUpfX1lbHNle2lmKFVkKGUpKXRocm93IEVycm9yKF8oNDE4KSk7ZS5mbGFncz1lLmZsYWdzJi00MDk3fDIsQ2U9ITEsenQ9ZX19fWZ1bmN0aW9uIGlnKGUpe2ZvcihlPWUucmV0dXJuO2UhPT1udWxsJiZlLnRhZyE9PTUmJmUudGFnIT09MyYmZS50YWchPT0xMzspZT1lLnJldHVybjt6dD1lfWZ1bmN0aW9uIExhKGUpe2lmKGUhPT16dClyZXR1cm4hMTtpZighQ2UpcmV0dXJuIGlnKGUpLENlPSEwLCExO3ZhciB0O2lmKCh0PWUudGFnIT09MykmJiEodD1lLnRhZyE9PTUpJiYodD1lLnR5cGUsdD10IT09ImhlYWQiJiZ0IT09ImJvZHkiJiYhRmQoZS50eXBlLGUubWVtb2l6ZWRQcm9wcykpLHQmJih0PU50KSl7aWYoVWQoZSkpdGhyb3cgS3goKSxFcnJvcihfKDQxOCkpO2Zvcig7dDspV3goZSx0KSx0PXpyKHQubmV4dFNpYmxpbmcpfWlmKGlnKGUpLGUudGFnPT09MTMpe2lmKGU9ZS5tZW1vaXplZFN0YXRlLGU9ZSE9PW51bGw\/ZS5kZWh5ZHJhdGVkOm51bGwsIWUpdGhyb3cgRXJyb3IoXygzMTcpKTtlOntmb3IoZT1lLm5leHRTaWJsaW5nLHQ9MDtlOyl7aWYoZS5ub2RlVHlwZT09PTgpe3ZhciBuPWUuZGF0YTtpZihuPT09Ii8kIil7aWYodD09PTApe050PXpyKGUubmV4dFNpYmxpbmcpO2JyZWFrIGV9dC0tfWVsc2UgbiE9PSIkIiYmbiE9PSIkISImJm4hPT0iJD8ifHx0Kyt9ZT1lLm5leHRTaWJsaW5nfU50PW51bGx9fWVsc2UgTnQ9enQ\/enIoZS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gS3goKXtmb3IodmFyIGU9TnQ7ZTspZT16cihlLm5leHRTaWJsaW5nKX1mdW5jdGlvbiBDbygpe050PXp0PW51bGwsQ2U9ITF9ZnVuY3Rpb24gSWgoZSl7dW49PT1udWxsP3VuPVtlXTp1bi5wdXNoKGUpfXZhciB2RT1uci5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZztmdW5jdGlvbiBabyhlLHQsbil7aWYoZT1uLnJlZixlIT09bnVsbCYmdHlwZW9mIGUhPSJmdW5jdGlvbiImJnR5cGVvZiBlIT0ib2JqZWN0Iil7aWYobi5fb3duZXIpe2lmKG49bi5fb3duZXIsbil7aWYobi50YWchPT0xKXRocm93IEVycm9yKF8oMzA5KSk7dmFyIHI9bi5zdGF0ZU5vZGV9aWYoIXIpdGhyb3cgRXJyb3IoXygxNDcsZSkpO3ZhciBpPXIsbz0iIitlO3JldHVybiB0IT09bnVsbCYmdC5yZWYhPT1udWxsJiZ0eXBlb2YgdC5yZWY9PSJmdW5jdGlvbiImJnQucmVmLl9zdHJpbmdSZWY9PT1vP3QucmVmOih0PWZ1bmN0aW9uKHMpe3ZhciBhPWkucmVmcztzPT09bnVsbD9kZWxldGUgYVtvXTphW29dPXN9LHQuX3N0cmluZ1JlZj1vLHQpfWlmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBFcnJvcihfKDI4NCkpO2lmKCFuLl9vd25lcil0aHJvdyBFcnJvcihfKDI5MCxlKSl9cmV0dXJuIGV9ZnVuY3Rpb24gT2EoZSx0KXt0aHJvdyBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSxFcnJvcihfKDMxLGU9PT0iW29iamVjdCBPYmplY3RdIj8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyh0KS5qb2luKCIsICIpKyJ9IjplKSl9ZnVuY3Rpb24gb2coZSl7dmFyIHQ9ZS5faW5pdDtyZXR1cm4gdChlLl9wYXlsb2FkKX1mdW5jdGlvbiBHeChlKXtmdW5jdGlvbiB0KHAsdil7aWYoZSl7dmFyIHg9cC5kZWxldGlvbnM7eD09PW51bGw\/KHAuZGVsZXRpb25zPVt2XSxwLmZsYWdzfD0xNik6eC5wdXNoKHYpfX1mdW5jdGlvbiBuKHAsdil7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKDt2IT09bnVsbDspdChwLHYpLHY9di5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIHIocCx2KXtmb3IocD1uZXcgTWFwO3YhPT1udWxsOyl2LmtleSE9PW51bGw\/cC5zZXQodi5rZXksdik6cC5zZXQodi5pbmRleCx2KSx2PXYuc2libGluZztyZXR1cm4gcH1mdW5jdGlvbiBpKHAsdil7cmV0dXJuIHA9THIocCx2KSxwLmluZGV4PTAscC5zaWJsaW5nPW51bGwscH1mdW5jdGlvbiBvKHAsdix4KXtyZXR1cm4gcC5pbmRleD14LGU\/KHg9cC5hbHRlcm5hdGUseCE9PW51bGw\/KHg9eC5pbmRleCx4PHY\/KHAuZmxhZ3N8PTIsdik6eCk6KHAuZmxhZ3N8PTIsdikpOihwLmZsYWdzfD0xMDQ4NTc2LHYpfWZ1bmN0aW9uIHMocCl7cmV0dXJuIGUmJnAuYWx0ZXJuYXRlPT09bnVsbCYmKHAuZmxhZ3N8PTIpLHB9ZnVuY3Rpb24gYShwLHYseCxrKXtyZXR1cm4gdj09PW51bGx8fHYudGFnIT09Nj8odj1OYyh4LHAubW9kZSxrKSx2LnJldHVybj1wLHYpOih2PWkodix4KSx2LnJldHVybj1wLHYpfWZ1bmN0aW9uIGwocCx2LHgsayl7dmFyIFQ9eC50eXBlO3JldHVybiBUPT09Qmk\/YyhwLHYseC5wcm9wcy5jaGlsZHJlbixrLHgua2V5KTp2IT09bnVsbCYmKHYuZWxlbWVudFR5cGU9PT1UfHx0eXBlb2YgVD09Im9iamVjdCImJlQhPT1udWxsJiZULiQkdHlwZW9mPT09Z3ImJm9nKFQpPT09di50eXBlKT8oaz1pKHYseC5wcm9wcyksay5yZWY9Wm8ocCx2LHgpLGsucmV0dXJuPXAsayk6KGs9ZmwoeC50eXBlLHgua2V5LHgucHJvcHMsbnVsbCxwLm1vZGUsayksay5yZWY9Wm8ocCx2LHgpLGsucmV0dXJuPXAsayl9ZnVuY3Rpb24gdShwLHYseCxrKXtyZXR1cm4gdj09PW51bGx8fHYudGFnIT09NHx8di5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PXguY29udGFpbmVySW5mb3x8di5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT14LmltcGxlbWVudGF0aW9uPyh2PWpjKHgscC5tb2RlLGspLHYucmV0dXJuPXAsdik6KHY9aSh2LHguY2hpbGRyZW58fFtdKSx2LnJldHVybj1wLHYpfWZ1bmN0aW9uIGMocCx2LHgsayxUKXtyZXR1cm4gdj09PW51bGx8fHYudGFnIT09Nz8odj14aSh4LHAubW9kZSxrLFQpLHYucmV0dXJuPXAsdik6KHY9aSh2LHgpLHYucmV0dXJuPXAsdil9ZnVuY3Rpb24gZChwLHYseCl7aWYodHlwZW9mIHY9PSJzdHJpbmciJiZ2IT09IiJ8fHR5cGVvZiB2PT0ibnVtYmVyIilyZXR1cm4gdj1OYygiIit2LHAubW9kZSx4KSx2LnJldHVybj1wLHY7aWYodHlwZW9mIHY9PSJvYmplY3QiJiZ2IT09bnVsbCl7c3dpdGNoKHYuJCR0eXBlb2Ype2Nhc2UgRWE6cmV0dXJuIHg9Zmwodi50eXBlLHYua2V5LHYucHJvcHMsbnVsbCxwLm1vZGUseCkseC5yZWY9Wm8ocCxudWxsLHYpLHgucmV0dXJuPXAseDtjYXNlIFZpOnJldHVybiB2PWpjKHYscC5tb2RlLHgpLHYucmV0dXJuPXAsdjtjYXNlIGdyOnZhciBrPXYuX2luaXQ7cmV0dXJuIGQocCxrKHYuX3BheWxvYWQpLHgpfWlmKGxzKHYpfHxHbyh2KSlyZXR1cm4gdj14aSh2LHAubW9kZSx4LG51bGwpLHYucmV0dXJuPXAsdjtPYShwLHYpfXJldHVybiBudWxsfWZ1bmN0aW9uIGgocCx2LHgsayl7dmFyIFQ9diE9PW51bGw\/di5rZXk6bnVsbDtpZih0eXBlb2YgeD09InN0cmluZyImJnghPT0iInx8dHlwZW9mIHg9PSJudW1iZXIiKXJldHVybiBUIT09bnVsbD9udWxsOmEocCx2LCIiK3gsayk7aWYodHlwZW9mIHg9PSJvYmplY3QiJiZ4IT09bnVsbCl7c3dpdGNoKHguJCR0eXBlb2Ype2Nhc2UgRWE6cmV0dXJuIHgua2V5PT09VD9sKHAsdix4LGspOm51bGw7Y2FzZSBWaTpyZXR1cm4geC5rZXk9PT1UP3UocCx2LHgsayk6bnVsbDtjYXNlIGdyOnJldHVybiBUPXguX2luaXQsaChwLHYsVCh4Ll9wYXlsb2FkKSxrKX1pZihscyh4KXx8R28oeCkpcmV0dXJuIFQhPT1udWxsP251bGw6YyhwLHYseCxrLG51bGwpO09hKHAseCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZihwLHYseCxrLFQpe2lmKHR5cGVvZiBrPT0ic3RyaW5nIiYmayE9PSIifHx0eXBlb2Ygaz09Im51bWJlciIpcmV0dXJuIHA9cC5nZXQoeCl8fG51bGwsYSh2LHAsIiIrayxUKTtpZih0eXBlb2Ygaz09Im9iamVjdCImJmshPT1udWxsKXtzd2l0Y2goay4kJHR5cGVvZil7Y2FzZSBFYTpyZXR1cm4gcD1wLmdldChrLmtleT09PW51bGw\/eDprLmtleSl8fG51bGwsbCh2LHAsayxUKTtjYXNlIFZpOnJldHVybiBwPXAuZ2V0KGsua2V5PT09bnVsbD94Omsua2V5KXx8bnVsbCx1KHYscCxrLFQpO2Nhc2UgZ3I6dmFyIEM9ay5faW5pdDtyZXR1cm4gZihwLHYseCxDKGsuX3BheWxvYWQpLFQpfWlmKGxzKGspfHxHbyhrKSlyZXR1cm4gcD1wLmdldCh4KXx8bnVsbCxjKHYscCxrLFQsbnVsbCk7T2EodixrKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5KHAsdix4LGspe2Zvcih2YXIgVD1udWxsLEM9bnVsbCxQPXYsQT12PTAsaj1udWxsO1AhPT1udWxsJiZBPHgubGVuZ3RoO0ErKyl7UC5pbmRleD5BPyhqPVAsUD1udWxsKTpqPVAuc2libGluZzt2YXIgST1oKHAsUCx4W0FdLGspO2lmKEk9PT1udWxsKXtQPT09bnVsbCYmKFA9aik7YnJlYWt9ZSYmUCYmSS5hbHRlcm5hdGU9PT1udWxsJiZ0KHAsUCksdj1vKEksdixBKSxDPT09bnVsbD9UPUk6Qy5zaWJsaW5nPUksQz1JLFA9an1pZihBPT09eC5sZW5ndGgpcmV0dXJuIG4ocCxQKSxDZSYmbmkocCxBKSxUO2lmKFA9PT1udWxsKXtmb3IoO0E8eC5sZW5ndGg7QSsrKVA9ZChwLHhbQV0sayksUCE9PW51bGwmJih2PW8oUCx2LEEpLEM9PT1udWxsP1Q9UDpDLnNpYmxpbmc9UCxDPVApO3JldHVybiBDZSYmbmkocCxBKSxUfWZvcihQPXIocCxQKTtBPHgubGVuZ3RoO0ErKylqPWYoUCxwLEEseFtBXSxrKSxqIT09bnVsbCYmKGUmJmouYWx0ZXJuYXRlIT09bnVsbCYmUC5kZWxldGUoai5rZXk9PT1udWxsP0E6ai5rZXkpLHY9byhqLHYsQSksQz09PW51bGw\/VD1qOkMuc2libGluZz1qLEM9aik7cmV0dXJuIGUmJlAuZm9yRWFjaChmdW5jdGlvbihNKXtyZXR1cm4gdChwLE0pfSksQ2UmJm5pKHAsQSksVH1mdW5jdGlvbiBtKHAsdix4LGspe3ZhciBUPUdvKHgpO2lmKHR5cGVvZiBUIT0iZnVuY3Rpb24iKXRocm93IEVycm9yKF8oMTUwKSk7aWYoeD1ULmNhbGwoeCkseD09bnVsbCl0aHJvdyBFcnJvcihfKDE1MSkpO2Zvcih2YXIgQz1UPW51bGwsUD12LEE9dj0wLGo9bnVsbCxJPXgubmV4dCgpO1AhPT1udWxsJiYhSS5kb25lO0ErKyxJPXgubmV4dCgpKXtQLmluZGV4PkE\/KGo9UCxQPW51bGwpOmo9UC5zaWJsaW5nO3ZhciBNPWgocCxQLEkudmFsdWUsayk7aWYoTT09PW51bGwpe1A9PT1udWxsJiYoUD1qKTticmVha31lJiZQJiZNLmFsdGVybmF0ZT09PW51bGwmJnQocCxQKSx2PW8oTSx2LEEpLEM9PT1udWxsP1Q9TTpDLnNpYmxpbmc9TSxDPU0sUD1qfWlmKEkuZG9uZSlyZXR1cm4gbihwLFApLENlJiZuaShwLEEpLFQ7aWYoUD09PW51bGwpe2Zvcig7IUkuZG9uZTtBKyssST14Lm5leHQoKSlJPWQocCxJLnZhbHVlLGspLEkhPT1udWxsJiYodj1vKEksdixBKSxDPT09bnVsbD9UPUk6Qy5zaWJsaW5nPUksQz1JKTtyZXR1cm4gQ2UmJm5pKHAsQSksVH1mb3IoUD1yKHAsUCk7IUkuZG9uZTtBKyssST14Lm5leHQoKSlJPWYoUCxwLEEsSS52YWx1ZSxrKSxJIT09bnVsbCYmKGUmJkkuYWx0ZXJuYXRlIT09bnVsbCYmUC5kZWxldGUoSS5rZXk9PT1udWxsP0E6SS5rZXkpLHY9byhJLHYsQSksQz09PW51bGw\/VD1JOkMuc2libGluZz1JLEM9SSk7cmV0dXJuIGUmJlAuZm9yRWFjaChmdW5jdGlvbih6KXtyZXR1cm4gdChwLHopfSksQ2UmJm5pKHAsQSksVH1mdW5jdGlvbiB3KHAsdix4LGspe2lmKHR5cGVvZiB4PT0ib2JqZWN0IiYmeCE9PW51bGwmJngudHlwZT09PUJpJiZ4LmtleT09PW51bGwmJih4PXgucHJvcHMuY2hpbGRyZW4pLHR5cGVvZiB4PT0ib2JqZWN0IiYmeCE9PW51bGwpe3N3aXRjaCh4LiQkdHlwZW9mKXtjYXNlIEVhOmU6e2Zvcih2YXIgVD14LmtleSxDPXY7QyE9PW51bGw7KXtpZihDLmtleT09PVQpe2lmKFQ9eC50eXBlLFQ9PT1CaSl7aWYoQy50YWc9PT03KXtuKHAsQy5zaWJsaW5nKSx2PWkoQyx4LnByb3BzLmNoaWxkcmVuKSx2LnJldHVybj1wLHA9djticmVhayBlfX1lbHNlIGlmKEMuZWxlbWVudFR5cGU9PT1UfHx0eXBlb2YgVD09Im9iamVjdCImJlQhPT1udWxsJiZULiQkdHlwZW9mPT09Z3ImJm9nKFQpPT09Qy50eXBlKXtuKHAsQy5zaWJsaW5nKSx2PWkoQyx4LnByb3BzKSx2LnJlZj1abyhwLEMseCksdi5yZXR1cm49cCxwPXY7YnJlYWsgZX1uKHAsQyk7YnJlYWt9ZWxzZSB0KHAsQyk7Qz1DLnNpYmxpbmd9eC50eXBlPT09Qmk\/KHY9eGkoeC5wcm9wcy5jaGlsZHJlbixwLm1vZGUsayx4LmtleSksdi5yZXR1cm49cCxwPXYpOihrPWZsKHgudHlwZSx4LmtleSx4LnByb3BzLG51bGwscC5tb2RlLGspLGsucmVmPVpvKHAsdix4KSxrLnJldHVybj1wLHA9ayl9cmV0dXJuIHMocCk7Y2FzZSBWaTplOntmb3IoQz14LmtleTt2IT09bnVsbDspe2lmKHYua2V5PT09QylpZih2LnRhZz09PTQmJnYuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT14LmNvbnRhaW5lckluZm8mJnYuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09eC5pbXBsZW1lbnRhdGlvbil7bihwLHYuc2libGluZyksdj1pKHYseC5jaGlsZHJlbnx8W10pLHYucmV0dXJuPXAscD12O2JyZWFrIGV9ZWxzZXtuKHAsdik7YnJlYWt9ZWxzZSB0KHAsdik7dj12LnNpYmxpbmd9dj1qYyh4LHAubW9kZSxrKSx2LnJldHVybj1wLHA9dn1yZXR1cm4gcyhwKTtjYXNlIGdyOnJldHVybiBDPXguX2luaXQsdyhwLHYsQyh4Ll9wYXlsb2FkKSxrKX1pZihscyh4KSlyZXR1cm4geShwLHYseCxrKTtpZihHbyh4KSlyZXR1cm4gbShwLHYseCxrKTtPYShwLHgpfXJldHVybiB0eXBlb2YgeD09InN0cmluZyImJnghPT0iInx8dHlwZW9mIHg9PSJudW1iZXIiPyh4PSIiK3gsdiE9PW51bGwmJnYudGFnPT09Nj8obihwLHYuc2libGluZyksdj1pKHYseCksdi5yZXR1cm49cCxwPXYpOihuKHAsdiksdj1OYyh4LHAubW9kZSxrKSx2LnJldHVybj1wLHA9dikscyhwKSk6bihwLHYpfXJldHVybiB3fXZhciBUbz1HeCghMCksWXg9R3goITEpLF9sPVdyKG51bGwpLFZsPW51bGwsWWk9bnVsbCxOaD1udWxsO2Z1bmN0aW9uIGpoKCl7Tmg9WWk9Vmw9bnVsbH1mdW5jdGlvbiB6aChlKXt2YXIgdD1fbC5jdXJyZW50O2JlKF9sKSxlLl9jdXJyZW50VmFsdWU9dH1mdW5jdGlvbiBIZChlLHQsbil7Zm9yKDtlIT09bnVsbDspe3ZhciByPWUuYWx0ZXJuYXRlO2lmKChlLmNoaWxkTGFuZXMmdCkhPT10PyhlLmNoaWxkTGFuZXN8PXQsciE9PW51bGwmJihyLmNoaWxkTGFuZXN8PXQpKTpyIT09bnVsbCYmKHIuY2hpbGRMYW5lcyZ0KSE9PXQmJihyLmNoaWxkTGFuZXN8PXQpLGU9PT1uKWJyZWFrO2U9ZS5yZXR1cm59fWZ1bmN0aW9uIGFvKGUsdCl7Vmw9ZSxOaD1ZaT1udWxsLGU9ZS5kZXBlbmRlbmNpZXMsZSE9PW51bGwmJmUuZmlyc3RDb250ZXh0IT09bnVsbCYmKGUubGFuZXMmdCYmKHl0PSEwKSxlLmZpcnN0Q29udGV4dD1udWxsKX1mdW5jdGlvbiBLdChlKXt2YXIgdD1lLl9jdXJyZW50VmFsdWU7aWYoTmghPT1lKWlmKGU9e2NvbnRleHQ6ZSxtZW1vaXplZFZhbHVlOnQsbmV4dDpudWxsfSxZaT09PW51bGwpe2lmKFZsPT09bnVsbCl0aHJvdyBFcnJvcihfKDMwOCkpO1lpPWUsVmwuZGVwZW5kZW5jaWVzPXtsYW5lczowLGZpcnN0Q29udGV4dDplfX1lbHNlIFlpPVlpLm5leHQ9ZTtyZXR1cm4gdH12YXIgbGk9bnVsbDtmdW5jdGlvbiBSaChlKXtsaT09PW51bGw\/bGk9W2VdOmxpLnB1c2goZSl9ZnVuY3Rpb24gUXgoZSx0LG4scil7dmFyIGk9dC5pbnRlcmxlYXZlZDtyZXR1cm4gaT09PW51bGw\/KG4ubmV4dD1uLFJoKHQpKToobi5uZXh0PWkubmV4dCxpLm5leHQ9biksdC5pbnRlcmxlYXZlZD1uLEpuKGUscil9ZnVuY3Rpb24gSm4oZSx0KXtlLmxhbmVzfD10O3ZhciBuPWUuYWx0ZXJuYXRlO2ZvcihuIT09bnVsbCYmKG4ubGFuZXN8PXQpLG49ZSxlPWUucmV0dXJuO2UhPT1udWxsOyllLmNoaWxkTGFuZXN8PXQsbj1lLmFsdGVybmF0ZSxuIT09bnVsbCYmKG4uY2hpbGRMYW5lc3w9dCksbj1lLGU9ZS5yZXR1cm47cmV0dXJuIG4udGFnPT09Mz9uLnN0YXRlTm9kZTpudWxsfXZhciB5cj0hMTtmdW5jdGlvbiBEaChlKXtlLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6ZS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowfSxlZmZlY3RzOm51bGx9fWZ1bmN0aW9uIFh4KGUsdCl7ZT1lLnVwZGF0ZVF1ZXVlLHQudXBkYXRlUXVldWU9PT1lJiYodC51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmUuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTplLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDplLnNoYXJlZCxlZmZlY3RzOmUuZWZmZWN0c30pfWZ1bmN0aW9uIFluKGUsdCl7cmV0dXJue2V2ZW50VGltZTplLGxhbmU6dCx0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIFJyKGUsdCxuKXt2YXIgcj1lLnVwZGF0ZVF1ZXVlO2lmKHI9PT1udWxsKXJldHVybiBudWxsO2lmKHI9ci5zaGFyZWQsbGUmMil7dmFyIGk9ci5wZW5kaW5nO3JldHVybiBpPT09bnVsbD90Lm5leHQ9dDoodC5uZXh0PWkubmV4dCxpLm5leHQ9dCksci5wZW5kaW5nPXQsSm4oZSxuKX1yZXR1cm4gaT1yLmludGVybGVhdmVkLGk9PT1udWxsPyh0Lm5leHQ9dCxSaChyKSk6KHQubmV4dD1pLm5leHQsaS5uZXh0PXQpLHIuaW50ZXJsZWF2ZWQ9dCxKbihlLG4pfWZ1bmN0aW9uIHNsKGUsdCxuKXtpZih0PXQudXBkYXRlUXVldWUsdCE9PW51bGwmJih0PXQuc2hhcmVkLChuJjQxOTQyNDApIT09MCkpe3ZhciByPXQubGFuZXM7ciY9ZS5wZW5kaW5nTGFuZXMsbnw9cix0LmxhbmVzPW4seGgoZSxuKX19ZnVuY3Rpb24gc2coZSx0KXt2YXIgbj1lLnVwZGF0ZVF1ZXVlLHI9ZS5hbHRlcm5hdGU7aWYociE9PW51bGwmJihyPXIudXBkYXRlUXVldWUsbj09PXIpKXt2YXIgaT1udWxsLG89bnVsbDtpZihuPW4uZmlyc3RCYXNlVXBkYXRlLG4hPT1udWxsKXtkb3t2YXIgcz17ZXZlbnRUaW1lOm4uZXZlbnRUaW1lLGxhbmU6bi5sYW5lLHRhZzpuLnRhZyxwYXlsb2FkOm4ucGF5bG9hZCxjYWxsYmFjazpuLmNhbGxiYWNrLG5leHQ6bnVsbH07bz09PW51bGw\/aT1vPXM6bz1vLm5leHQ9cyxuPW4ubmV4dH13aGlsZShuIT09bnVsbCk7bz09PW51bGw\/aT1vPXQ6bz1vLm5leHQ9dH1lbHNlIGk9bz10O249e2Jhc2VTdGF0ZTpyLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6aSxsYXN0QmFzZVVwZGF0ZTpvLHNoYXJlZDpyLnNoYXJlZCxlZmZlY3RzOnIuZWZmZWN0c30sZS51cGRhdGVRdWV1ZT1uO3JldHVybn1lPW4ubGFzdEJhc2VVcGRhdGUsZT09PW51bGw\/bi5maXJzdEJhc2VVcGRhdGU9dDplLm5leHQ9dCxuLmxhc3RCYXNlVXBkYXRlPXR9ZnVuY3Rpb24gQmwoZSx0LG4scil7dmFyIGk9ZS51cGRhdGVRdWV1ZTt5cj0hMTt2YXIgbz1pLmZpcnN0QmFzZVVwZGF0ZSxzPWkubGFzdEJhc2VVcGRhdGUsYT1pLnNoYXJlZC5wZW5kaW5nO2lmKGEhPT1udWxsKXtpLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGw9YSx1PWwubmV4dDtsLm5leHQ9bnVsbCxzPT09bnVsbD9vPXU6cy5uZXh0PXUscz1sO3ZhciBjPWUuYWx0ZXJuYXRlO2MhPT1udWxsJiYoYz1jLnVwZGF0ZVF1ZXVlLGE9Yy5sYXN0QmFzZVVwZGF0ZSxhIT09cyYmKGE9PT1udWxsP2MuZmlyc3RCYXNlVXBkYXRlPXU6YS5uZXh0PXUsYy5sYXN0QmFzZVVwZGF0ZT1sKSl9aWYobyE9PW51bGwpe3ZhciBkPWkuYmFzZVN0YXRlO3M9MCxjPXU9bD1udWxsLGE9bztkb3t2YXIgaD1hLmxhbmUsZj1hLmV2ZW50VGltZTtpZigociZoKT09PWgpe2MhPT1udWxsJiYoYz1jLm5leHQ9e2V2ZW50VGltZTpmLGxhbmU6MCx0YWc6YS50YWcscGF5bG9hZDphLnBheWxvYWQsY2FsbGJhY2s6YS5jYWxsYmFjayxuZXh0Om51bGx9KTtlOnt2YXIgeT1lLG09YTtzd2l0Y2goaD10LGY9bixtLnRhZyl7Y2FzZSAxOmlmKHk9bS5wYXlsb2FkLHR5cGVvZiB5PT0iZnVuY3Rpb24iKXtkPXkuY2FsbChmLGQsaCk7YnJlYWsgZX1kPXk7YnJlYWsgZTtjYXNlIDM6eS5mbGFncz15LmZsYWdzJi02NTUzN3wxMjg7Y2FzZSAwOmlmKHk9bS5wYXlsb2FkLGg9dHlwZW9mIHk9PSJmdW5jdGlvbiI\/eS5jYWxsKGYsZCxoKTp5LGg9PW51bGwpYnJlYWsgZTtkPUllKHt9LGQsaCk7YnJlYWsgZTtjYXNlIDI6eXI9ITB9fWEuY2FsbGJhY2shPT1udWxsJiZhLmxhbmUhPT0wJiYoZS5mbGFnc3w9NjQsaD1pLmVmZmVjdHMsaD09PW51bGw\/aS5lZmZlY3RzPVthXTpoLnB1c2goYSkpfWVsc2UgZj17ZXZlbnRUaW1lOmYsbGFuZTpoLHRhZzphLnRhZyxwYXlsb2FkOmEucGF5bG9hZCxjYWxsYmFjazphLmNhbGxiYWNrLG5leHQ6bnVsbH0sYz09PW51bGw\/KHU9Yz1mLGw9ZCk6Yz1jLm5leHQ9ZixzfD1oO2lmKGE9YS5uZXh0LGE9PT1udWxsKXtpZihhPWkuc2hhcmVkLnBlbmRpbmcsYT09PW51bGwpYnJlYWs7aD1hLGE9aC5uZXh0LGgubmV4dD1udWxsLGkubGFzdEJhc2VVcGRhdGU9aCxpLnNoYXJlZC5wZW5kaW5nPW51bGx9fXdoaWxlKCEwKTtpZihjPT09bnVsbCYmKGw9ZCksaS5iYXNlU3RhdGU9bCxpLmZpcnN0QmFzZVVwZGF0ZT11LGkubGFzdEJhc2VVcGRhdGU9Yyx0PWkuc2hhcmVkLmludGVybGVhdmVkLHQhPT1udWxsKXtpPXQ7ZG8gc3w9aS5sYW5lLGk9aS5uZXh0O3doaWxlKGkhPT10KX1lbHNlIG89PT1udWxsJiYoaS5zaGFyZWQubGFuZXM9MCk7RWl8PXMsZS5sYW5lcz1zLGUubWVtb2l6ZWRTdGF0ZT1kfX1mdW5jdGlvbiBhZyhlLHQsbil7aWYoZT10LmVmZmVjdHMsdC5lZmZlY3RzPW51bGwsZSE9PW51bGwpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIHI9ZVt0XSxpPXIuY2FsbGJhY2s7aWYoaSE9PW51bGwpe2lmKHIuY2FsbGJhY2s9bnVsbCxyPW4sdHlwZW9mIGkhPSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IoXygxOTEsaSkpO2kuY2FsbChyKX19fXZhciBkYT17fSxObj1XcihkYSksVnM9V3IoZGEpLEJzPVdyKGRhKTtmdW5jdGlvbiB1aShlKXtpZihlPT09ZGEpdGhyb3cgRXJyb3IoXygxNzQpKTtyZXR1cm4gZX1mdW5jdGlvbiBNaChlLHQpe3N3aXRjaChnZShCcyx0KSxnZShWcyxlKSxnZShObixkYSksZT10Lm5vZGVUeXBlLGUpe2Nhc2UgOTpjYXNlIDExOnQ9KHQ9dC5kb2N1bWVudEVsZW1lbnQpP3QubmFtZXNwYWNlVVJJOkNkKG51bGwsIiIpO2JyZWFrO2RlZmF1bHQ6ZT1lPT09OD90LnBhcmVudE5vZGU6dCx0PWUubmFtZXNwYWNlVVJJfHxudWxsLGU9ZS50YWdOYW1lLHQ9Q2QodCxlKX1iZShObiksZ2UoTm4sdCl9ZnVuY3Rpb24gRW8oKXtiZShObiksYmUoVnMpLGJlKEJzKX1mdW5jdGlvbiBKeChlKXt1aShCcy5jdXJyZW50KTt2YXIgdD11aShObi5jdXJyZW50KSxuPUNkKHQsZS50eXBlKTt0IT09biYmKGdlKFZzLGUpLGdlKE5uLG4pKX1mdW5jdGlvbiBMaChlKXtWcy5jdXJyZW50PT09ZSYmKGJlKE5uKSxiZShWcykpfXZhciBFZT1XcigwKTtmdW5jdGlvbiBVbChlKXtmb3IodmFyIHQ9ZTt0IT09bnVsbDspe2lmKHQudGFnPT09MTMpe3ZhciBuPXQubWVtb2l6ZWRTdGF0ZTtpZihuIT09bnVsbCYmKG49bi5kZWh5ZHJhdGVkLG49PT1udWxsfHxuLmRhdGE9PT0iJD8ifHxuLmRhdGE9PT0iJCEiKSlyZXR1cm4gdH1lbHNlIGlmKHQudGFnPT09MTkmJnQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlciE9PXZvaWQgMCl7aWYodC5mbGFncyYxMjgpcmV0dXJuIHR9ZWxzZSBpZih0LmNoaWxkIT09bnVsbCl7dC5jaGlsZC5yZXR1cm49dCx0PXQuY2hpbGQ7Y29udGludWV9aWYodD09PWUpYnJlYWs7Zm9yKDt0LnNpYmxpbmc9PT1udWxsOyl7aWYodC5yZXR1cm49PT1udWxsfHx0LnJldHVybj09PWUpcmV0dXJuIG51bGw7dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfXJldHVybiBudWxsfXZhciBDYz1bXTtmdW5jdGlvbiBPaCgpe2Zvcih2YXIgZT0wO2U8Q2MubGVuZ3RoO2UrKylDY1tlXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO0NjLmxlbmd0aD0wfXZhciBhbD1uci5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLFRjPW5yLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLFRpPTAsQWU9bnVsbCxWZT1udWxsLCRlPW51bGwsJGw9ITEseXM9ITEsVXM9MCx4RT0wO2Z1bmN0aW9uIFhlKCl7dGhyb3cgRXJyb3IoXygzMjEpKX1mdW5jdGlvbiBGaChlLHQpe2lmKHQ9PT1udWxsKXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGgmJm48ZS5sZW5ndGg7bisrKWlmKCFobihlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIF9oKGUsdCxuLHIsaSxvKXtpZihUaT1vLEFlPXQsdC5tZW1vaXplZFN0YXRlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsLHQubGFuZXM9MCxhbC5jdXJyZW50PWU9PT1udWxsfHxlLm1lbW9pemVkU3RhdGU9PT1udWxsP1NFOkNFLGU9bihyLGkpLHlzKXtvPTA7ZG97aWYoeXM9ITEsVXM9MCwyNTw9byl0aHJvdyBFcnJvcihfKDMwMSkpO28rPTEsJGU9VmU9bnVsbCx0LnVwZGF0ZVF1ZXVlPW51bGwsYWwuY3VycmVudD1URSxlPW4ocixpKX13aGlsZSh5cyl9aWYoYWwuY3VycmVudD1IbCx0PVZlIT09bnVsbCYmVmUubmV4dCE9PW51bGwsVGk9MCwkZT1WZT1BZT1udWxsLCRsPSExLHQpdGhyb3cgRXJyb3IoXygzMDApKTtyZXR1cm4gZX1mdW5jdGlvbiBWaCgpe3ZhciBlPVVzIT09MDtyZXR1cm4gVXM9MCxlfWZ1bmN0aW9uIHduKCl7dmFyIGU9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07cmV0dXJuICRlPT09bnVsbD9BZS5tZW1vaXplZFN0YXRlPSRlPWU6JGU9JGUubmV4dD1lLCRlfWZ1bmN0aW9uIEd0KCl7aWYoVmU9PT1udWxsKXt2YXIgZT1BZS5hbHRlcm5hdGU7ZT1lIT09bnVsbD9lLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGU9VmUubmV4dDt2YXIgdD0kZT09PW51bGw\/QWUubWVtb2l6ZWRTdGF0ZTokZS5uZXh0O2lmKHQhPT1udWxsKSRlPXQsVmU9ZTtlbHNle2lmKGU9PT1udWxsKXRocm93IEVycm9yKF8oMzEwKSk7VmU9ZSxlPXttZW1vaXplZFN0YXRlOlZlLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOlZlLmJhc2VTdGF0ZSxiYXNlUXVldWU6VmUuYmFzZVF1ZXVlLHF1ZXVlOlZlLnF1ZXVlLG5leHQ6bnVsbH0sJGU9PT1udWxsP0FlLm1lbW9pemVkU3RhdGU9JGU9ZTokZT0kZS5uZXh0PWV9cmV0dXJuICRlfWZ1bmN0aW9uICRzKGUsdCl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoZSk6dH1mdW5jdGlvbiBFYyhlKXt2YXIgdD1HdCgpLG49dC5xdWV1ZTtpZihuPT09bnVsbCl0aHJvdyBFcnJvcihfKDMxMSkpO24ubGFzdFJlbmRlcmVkUmVkdWNlcj1lO3ZhciByPVZlLGk9ci5iYXNlUXVldWUsbz1uLnBlbmRpbmc7aWYobyE9PW51bGwpe2lmKGkhPT1udWxsKXt2YXIgcz1pLm5leHQ7aS5uZXh0PW8ubmV4dCxvLm5leHQ9c31yLmJhc2VRdWV1ZT1pPW8sbi5wZW5kaW5nPW51bGx9aWYoaSE9PW51bGwpe289aS5uZXh0LHI9ci5iYXNlU3RhdGU7dmFyIGE9cz1udWxsLGw9bnVsbCx1PW87ZG97dmFyIGM9dS5sYW5lO2lmKChUaSZjKT09PWMpbCE9PW51bGwmJihsPWwubmV4dD17bGFuZTowLGFjdGlvbjp1LmFjdGlvbixoYXNFYWdlclN0YXRlOnUuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOnUuZWFnZXJTdGF0ZSxuZXh0Om51bGx9KSxyPXUuaGFzRWFnZXJTdGF0ZT91LmVhZ2VyU3RhdGU6ZShyLHUuYWN0aW9uKTtlbHNle3ZhciBkPXtsYW5lOmMsYWN0aW9uOnUuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6dS5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6dS5lYWdlclN0YXRlLG5leHQ6bnVsbH07bD09PW51bGw\/KGE9bD1kLHM9cik6bD1sLm5leHQ9ZCxBZS5sYW5lc3w9YyxFaXw9Y311PXUubmV4dH13aGlsZSh1IT09bnVsbCYmdSE9PW8pO2w9PT1udWxsP3M9cjpsLm5leHQ9YSxobihyLHQubWVtb2l6ZWRTdGF0ZSl8fCh5dD0hMCksdC5tZW1vaXplZFN0YXRlPXIsdC5iYXNlU3RhdGU9cyx0LmJhc2VRdWV1ZT1sLG4ubGFzdFJlbmRlcmVkU3RhdGU9cn1pZihlPW4uaW50ZXJsZWF2ZWQsZSE9PW51bGwpe2k9ZTtkbyBvPWkubGFuZSxBZS5sYW5lc3w9byxFaXw9byxpPWkubmV4dDt3aGlsZShpIT09ZSl9ZWxzZSBpPT09bnVsbCYmKG4ubGFuZXM9MCk7cmV0dXJuW3QubWVtb2l6ZWRTdGF0ZSxuLmRpc3BhdGNoXX1mdW5jdGlvbiBQYyhlKXt2YXIgdD1HdCgpLG49dC5xdWV1ZTtpZihuPT09bnVsbCl0aHJvdyBFcnJvcihfKDMxMSkpO24ubGFzdFJlbmRlcmVkUmVkdWNlcj1lO3ZhciByPW4uZGlzcGF0Y2gsaT1uLnBlbmRpbmcsbz10Lm1lbW9pemVkU3RhdGU7aWYoaSE9PW51bGwpe24ucGVuZGluZz1udWxsO3ZhciBzPWk9aS5uZXh0O2RvIG89ZShvLHMuYWN0aW9uKSxzPXMubmV4dDt3aGlsZShzIT09aSk7aG4obyx0Lm1lbW9pemVkU3RhdGUpfHwoeXQ9ITApLHQubWVtb2l6ZWRTdGF0ZT1vLHQuYmFzZVF1ZXVlPT09bnVsbCYmKHQuYmFzZVN0YXRlPW8pLG4ubGFzdFJlbmRlcmVkU3RhdGU9b31yZXR1cm5bbyxyXX1mdW5jdGlvbiBaeCgpe31mdW5jdGlvbiBlMShlLHQpe3ZhciBuPUFlLHI9R3QoKSxpPXQoKSxvPSFobihyLm1lbW9pemVkU3RhdGUsaSk7aWYobyYmKHIubWVtb2l6ZWRTdGF0ZT1pLHl0PSEwKSxyPXIucXVldWUsQmgocjEuYmluZChudWxsLG4scixlKSxbZV0pLHIuZ2V0U25hcHNob3QhPT10fHxvfHwkZSE9PW51bGwmJiRlLm1lbW9pemVkU3RhdGUudGFnJjEpe2lmKG4uZmxhZ3N8PTIwNDgsSHMoOSxuMS5iaW5kKG51bGwsbixyLGksdCksdm9pZCAwLG51bGwpLEhlPT09bnVsbCl0aHJvdyBFcnJvcihfKDM0OSkpO1RpJjMwfHx0MShuLHQsaSl9cmV0dXJuIGl9ZnVuY3Rpb24gdDEoZSx0LG4pe2UuZmxhZ3N8PTE2Mzg0LGU9e2dldFNuYXBzaG90OnQsdmFsdWU6bn0sdD1BZS51cGRhdGVRdWV1ZSx0PT09bnVsbD8odD17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxBZS51cGRhdGVRdWV1ZT10LHQuc3RvcmVzPVtlXSk6KG49dC5zdG9yZXMsbj09PW51bGw\/dC5zdG9yZXM9W2VdOm4ucHVzaChlKSl9ZnVuY3Rpb24gbjEoZSx0LG4scil7dC52YWx1ZT1uLHQuZ2V0U25hcHNob3Q9cixpMSh0KSYmbzEoZSl9ZnVuY3Rpb24gcjEoZSx0LG4pe3JldHVybiBuKGZ1bmN0aW9uKCl7aTEodCkmJm8xKGUpfSl9ZnVuY3Rpb24gaTEoZSl7dmFyIHQ9ZS5nZXRTbmFwc2hvdDtlPWUudmFsdWU7dHJ5e3ZhciBuPXQoKTtyZXR1cm4haG4oZSxuKX1jYXRjaHtyZXR1cm4hMH19ZnVuY3Rpb24gbzEoZSl7dmFyIHQ9Sm4oZSwxKTt0IT09bnVsbCYmZG4odCxlLDEsLTEpfWZ1bmN0aW9uIGxnKGUpe3ZhciB0PXduKCk7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iJiYoZT1lKCkpLHQubWVtb2l6ZWRTdGF0ZT10LmJhc2VTdGF0ZT1lLGU9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOiRzLGxhc3RSZW5kZXJlZFN0YXRlOmV9LHQucXVldWU9ZSxlPWUuZGlzcGF0Y2g9a0UuYmluZChudWxsLEFlLGUpLFt0Lm1lbW9pemVkU3RhdGUsZV19ZnVuY3Rpb24gSHMoZSx0LG4scil7cmV0dXJuIGU9e3RhZzplLGNyZWF0ZTp0LGRlc3Ryb3k6bixkZXBzOnIsbmV4dDpudWxsfSx0PUFlLnVwZGF0ZVF1ZXVlLHQ9PT1udWxsPyh0PXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LEFlLnVwZGF0ZVF1ZXVlPXQsdC5sYXN0RWZmZWN0PWUubmV4dD1lKToobj10Lmxhc3RFZmZlY3Qsbj09PW51bGw\/dC5sYXN0RWZmZWN0PWUubmV4dD1lOihyPW4ubmV4dCxuLm5leHQ9ZSxlLm5leHQ9cix0Lmxhc3RFZmZlY3Q9ZSkpLGV9ZnVuY3Rpb24gczEoKXtyZXR1cm4gR3QoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGxsKGUsdCxuLHIpe3ZhciBpPXduKCk7QWUuZmxhZ3N8PWUsaS5tZW1vaXplZFN0YXRlPUhzKDF8dCxuLHZvaWQgMCxyPT09dm9pZCAwP251bGw6cil9ZnVuY3Rpb24gU3UoZSx0LG4scil7dmFyIGk9R3QoKTtyPXI9PT12b2lkIDA\/bnVsbDpyO3ZhciBvPXZvaWQgMDtpZihWZSE9PW51bGwpe3ZhciBzPVZlLm1lbW9pemVkU3RhdGU7aWYobz1zLmRlc3Ryb3ksciE9PW51bGwmJkZoKHIscy5kZXBzKSl7aS5tZW1vaXplZFN0YXRlPUhzKHQsbixvLHIpO3JldHVybn19QWUuZmxhZ3N8PWUsaS5tZW1vaXplZFN0YXRlPUhzKDF8dCxuLG8scil9ZnVuY3Rpb24gdWcoZSx0KXtyZXR1cm4gbGwoODM5MDY1Niw4LGUsdCl9ZnVuY3Rpb24gQmgoZSx0KXtyZXR1cm4gU3UoMjA0OCw4LGUsdCl9ZnVuY3Rpb24gYTEoZSx0KXtyZXR1cm4gU3UoNCwyLGUsdCl9ZnVuY3Rpb24gbDEoZSx0KXtyZXR1cm4gU3UoNCw0LGUsdCl9ZnVuY3Rpb24gdTEoZSx0KXtpZih0eXBlb2YgdD09ImZ1bmN0aW9uIilyZXR1cm4gZT1lKCksdChlKSxmdW5jdGlvbigpe3QobnVsbCl9O2lmKHQhPW51bGwpcmV0dXJuIGU9ZSgpLHQuY3VycmVudD1lLGZ1bmN0aW9uKCl7dC5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIGMxKGUsdCxuKXtyZXR1cm4gbj1uIT1udWxsP24uY29uY2F0KFtlXSk6bnVsbCxTdSg0LDQsdTEuYmluZChudWxsLHQsZSksbil9ZnVuY3Rpb24gVWgoKXt9ZnVuY3Rpb24gZDEoZSx0KXt2YXIgbj1HdCgpO3Q9dD09PXZvaWQgMD9udWxsOnQ7dmFyIHI9bi5tZW1vaXplZFN0YXRlO3JldHVybiByIT09bnVsbCYmdCE9PW51bGwmJkZoKHQsclsxXSk\/clswXToobi5tZW1vaXplZFN0YXRlPVtlLHRdLGUpfWZ1bmN0aW9uIGYxKGUsdCl7dmFyIG49R3QoKTt0PXQ9PT12b2lkIDA\/bnVsbDp0O3ZhciByPW4ubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gciE9PW51bGwmJnQhPT1udWxsJiZGaCh0LHJbMV0pP3JbMF06KGU9ZSgpLG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlKX1mdW5jdGlvbiBoMShlLHQsbil7cmV0dXJuIFRpJjIxPyhobihuLHQpfHwobj12eCgpLEFlLmxhbmVzfD1uLEVpfD1uLGUuYmFzZVN0YXRlPSEwKSx0KTooZS5iYXNlU3RhdGUmJihlLmJhc2VTdGF0ZT0hMSx5dD0hMCksZS5tZW1vaXplZFN0YXRlPW4pfWZ1bmN0aW9uIHdFKGUsdCl7dmFyIG49aGU7aGU9biE9PTAmJjQ+bj9uOjQsZSghMCk7dmFyIHI9VGMudHJhbnNpdGlvbjtUYy50cmFuc2l0aW9uPXt9O3RyeXtlKCExKSx0KCl9ZmluYWxseXtoZT1uLFRjLnRyYW5zaXRpb249cn19ZnVuY3Rpb24gcDEoKXtyZXR1cm4gR3QoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGJFKGUsdCxuKXt2YXIgcj1NcihlKTtpZihuPXtsYW5lOnIsYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxtMShlKSlnMSh0LG4pO2Vsc2UgaWYobj1ReChlLHQsbixyKSxuIT09bnVsbCl7dmFyIGk9Y3QoKTtkbihuLGUscixpKSx5MShuLHQscil9fWZ1bmN0aW9uIGtFKGUsdCxuKXt2YXIgcj1NcihlKSxpPXtsYW5lOnIsYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihtMShlKSlnMSh0LGkpO2Vsc2V7dmFyIG89ZS5hbHRlcm5hdGU7aWYoZS5sYW5lcz09PTAmJihvPT09bnVsbHx8by5sYW5lcz09PTApJiYobz10Lmxhc3RSZW5kZXJlZFJlZHVjZXIsbyE9PW51bGwpKXRyeXt2YXIgcz10Lmxhc3RSZW5kZXJlZFN0YXRlLGE9byhzLG4pO2lmKGkuaGFzRWFnZXJTdGF0ZT0hMCxpLmVhZ2VyU3RhdGU9YSxobihhLHMpKXt2YXIgbD10LmludGVybGVhdmVkO2w9PT1udWxsPyhpLm5leHQ9aSxSaCh0KSk6KGkubmV4dD1sLm5leHQsbC5uZXh0PWkpLHQuaW50ZXJsZWF2ZWQ9aTtyZXR1cm59fWNhdGNoe31maW5hbGx5e31uPVF4KGUsdCxpLHIpLG4hPT1udWxsJiYoaT1jdCgpLGRuKG4sZSxyLGkpLHkxKG4sdCxyKSl9fWZ1bmN0aW9uIG0xKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO3JldHVybiBlPT09QWV8fHQhPT1udWxsJiZ0PT09QWV9ZnVuY3Rpb24gZzEoZSx0KXt5cz0kbD0hMDt2YXIgbj1lLnBlbmRpbmc7bj09PW51bGw\/dC5uZXh0PXQ6KHQubmV4dD1uLm5leHQsbi5uZXh0PXQpLGUucGVuZGluZz10fWZ1bmN0aW9uIHkxKGUsdCxuKXtpZihuJjQxOTQyNDApe3ZhciByPXQubGFuZXM7ciY9ZS5wZW5kaW5nTGFuZXMsbnw9cix0LmxhbmVzPW4seGgoZSxuKX19dmFyIEhsPXtyZWFkQ29udGV4dDpLdCx1c2VDYWxsYmFjazpYZSx1c2VDb250ZXh0OlhlLHVzZUVmZmVjdDpYZSx1c2VJbXBlcmF0aXZlSGFuZGxlOlhlLHVzZUluc2VydGlvbkVmZmVjdDpYZSx1c2VMYXlvdXRFZmZlY3Q6WGUsdXNlTWVtbzpYZSx1c2VSZWR1Y2VyOlhlLHVzZVJlZjpYZSx1c2VTdGF0ZTpYZSx1c2VEZWJ1Z1ZhbHVlOlhlLHVzZURlZmVycmVkVmFsdWU6WGUsdXNlVHJhbnNpdGlvbjpYZSx1c2VNdXRhYmxlU291cmNlOlhlLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlhlLHVzZUlkOlhlLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sU0U9e3JlYWRDb250ZXh0Okt0LHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHduKCkubWVtb2l6ZWRTdGF0ZT1bZSx0PT09dm9pZCAwP251bGw6dF0sZX0sdXNlQ29udGV4dDpLdCx1c2VFZmZlY3Q6dWcsdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG49biE9bnVsbD9uLmNvbmNhdChbZV0pOm51bGwsbGwoNDE5NDMwOCw0LHUxLmJpbmQobnVsbCx0LGUpLG4pfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbGwoNDE5NDMwOCw0LGUsdCl9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBsbCg0LDIsZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3ZhciBuPXduKCk7cmV0dXJuIHQ9dD09PXZvaWQgMD9udWxsOnQsZT1lKCksbi5tZW1vaXplZFN0YXRlPVtlLHRdLGV9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXduKCk7cmV0dXJuIHQ9biE9PXZvaWQgMD9uKHQpOnQsci5tZW1vaXplZFN0YXRlPXIuYmFzZVN0YXRlPXQsZT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6ZSxsYXN0UmVuZGVyZWRTdGF0ZTp0fSxyLnF1ZXVlPWUsZT1lLmRpc3BhdGNoPWJFLmJpbmQobnVsbCxBZSxlKSxbci5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9d24oKTtyZXR1cm4gZT17Y3VycmVudDplfSx0Lm1lbW9pemVkU3RhdGU9ZX0sdXNlU3RhdGU6bGcsdXNlRGVidWdWYWx1ZTpVaCx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB3bigpLm1lbW9pemVkU3RhdGU9ZX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPWxnKCExKSx0PWVbMF07cmV0dXJuIGU9d0UuYmluZChudWxsLGVbMV0pLHduKCkubWVtb2l6ZWRTdGF0ZT1lLFt0LGVdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9QWUsaT13bigpO2lmKENlKXtpZihuPT09dm9pZCAwKXRocm93IEVycm9yKF8oNDA3KSk7bj1uKCl9ZWxzZXtpZihuPXQoKSxIZT09PW51bGwpdGhyb3cgRXJyb3IoXygzNDkpKTtUaSYzMHx8dDEocix0LG4pfWkubWVtb2l6ZWRTdGF0ZT1uO3ZhciBvPXt2YWx1ZTpuLGdldFNuYXBzaG90OnR9O3JldHVybiBpLnF1ZXVlPW8sdWcocjEuYmluZChudWxsLHIsbyxlKSxbZV0pLHIuZmxhZ3N8PTIwNDgsSHMoOSxuMS5iaW5kKG51bGwscixvLG4sdCksdm9pZCAwLG51bGwpLG59LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGU9d24oKSx0PUhlLmlkZW50aWZpZXJQcmVmaXg7aWYoQ2Upe3ZhciBuPUduLHI9S247bj0ociZ+KDE8PDMyLWNuKHIpLTEpKS50b1N0cmluZygzMikrbix0PSI6Iit0KyJSIituLG49VXMrKywwPG4mJih0Kz0iSCIrbi50b1N0cmluZygzMikpLHQrPSI6In1lbHNlIG49eEUrKyx0PSI6Iit0KyJyIituLnRvU3RyaW5nKDMyKSsiOiI7cmV0dXJuIGUubWVtb2l6ZWRTdGF0ZT10fSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LENFPXtyZWFkQ29udGV4dDpLdCx1c2VDYWxsYmFjazpkMSx1c2VDb250ZXh0Okt0LHVzZUVmZmVjdDpCaCx1c2VJbXBlcmF0aXZlSGFuZGxlOmMxLHVzZUluc2VydGlvbkVmZmVjdDphMSx1c2VMYXlvdXRFZmZlY3Q6bDEsdXNlTWVtbzpmMSx1c2VSZWR1Y2VyOkVjLHVzZVJlZjpzMSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBFYygkcyl9LHVzZURlYnVnVmFsdWU6VWgsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1HdCgpO3JldHVybiBoMSh0LFZlLm1lbW9pemVkU3RhdGUsZSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1FYygkcylbMF0sdD1HdCgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2UsdF19LHVzZU11dGFibGVTb3VyY2U6WngsdXNlU3luY0V4dGVybmFsU3RvcmU6ZTEsdXNlSWQ6cDEsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxURT17cmVhZENvbnRleHQ6S3QsdXNlQ2FsbGJhY2s6ZDEsdXNlQ29udGV4dDpLdCx1c2VFZmZlY3Q6QmgsdXNlSW1wZXJhdGl2ZUhhbmRsZTpjMSx1c2VJbnNlcnRpb25FZmZlY3Q6YTEsdXNlTGF5b3V0RWZmZWN0OmwxLHVzZU1lbW86ZjEsdXNlUmVkdWNlcjpQYyx1c2VSZWY6czEsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gUGMoJHMpfSx1c2VEZWJ1Z1ZhbHVlOlVoLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9R3QoKTtyZXR1cm4gVmU9PT1udWxsP3QubWVtb2l6ZWRTdGF0ZT1lOmgxKHQsVmUubWVtb2l6ZWRTdGF0ZSxlKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVBjKCRzKVswXSx0PUd0KCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bZSx0XX0sdXNlTXV0YWJsZVNvdXJjZTpaeCx1c2VTeW5jRXh0ZXJuYWxTdG9yZTplMSx1c2VJZDpwMSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIHJuKGUsdCl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3Q9SWUoe30sdCksZT1lLmRlZmF1bHRQcm9wcztmb3IodmFyIG4gaW4gZSl0W25dPT09dm9pZCAwJiYodFtuXT1lW25dKTtyZXR1cm4gdH1yZXR1cm4gdH1mdW5jdGlvbiBxZChlLHQsbixyKXt0PWUubWVtb2l6ZWRTdGF0ZSxuPW4ocix0KSxuPW49PW51bGw\/dDpJZSh7fSx0LG4pLGUubWVtb2l6ZWRTdGF0ZT1uLGUubGFuZXM9PT0wJiYoZS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9bil9dmFyIEN1PXtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGU9ZS5fcmVhY3RJbnRlcm5hbHMpP05pKGUpPT09ZTohMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPWN0KCksaT1NcihlKSxvPVluKHIsaSk7by5wYXlsb2FkPXQsbiE9bnVsbCYmKG8uY2FsbGJhY2s9biksdD1ScihlLG8saSksdCE9PW51bGwmJihkbih0LGUsaSxyKSxzbCh0LGUsaSkpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPWN0KCksaT1NcihlKSxvPVluKHIsaSk7by50YWc9MSxvLnBheWxvYWQ9dCxuIT1udWxsJiYoby5jYWxsYmFjaz1uKSx0PVJyKGUsbyxpKSx0IT09bnVsbCYmKGRuKHQsZSxpLHIpLHNsKHQsZSxpKSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlLHQpe2U9ZS5fcmVhY3RJbnRlcm5hbHM7dmFyIG49Y3QoKSxyPU1yKGUpLGk9WW4obixyKTtpLnRhZz0yLHQhPW51bGwmJihpLmNhbGxiYWNrPXQpLHQ9UnIoZSxpLHIpLHQhPT1udWxsJiYoZG4odCxlLHIsbiksc2wodCxlLHIpKX19O2Z1bmN0aW9uIGNnKGUsdCxuLHIsaSxvLHMpe3JldHVybiBlPWUuc3RhdGVOb2RlLHR5cGVvZiBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT09ImZ1bmN0aW9uIj9lLnNob3VsZENvbXBvbmVudFVwZGF0ZShyLG8scyk6dC5wcm90b3R5cGUmJnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFMcyhuLHIpfHwhTHMoaSxvKTohMH1mdW5jdGlvbiB2MShlLHQsbil7dmFyIHI9ITEsaT1fcixvPXQuY29udGV4dFR5cGU7cmV0dXJuIHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGw\/bz1LdChvKTooaT14dCh0KT9TaTp0dC5jdXJyZW50LHI9dC5jb250ZXh0VHlwZXMsbz0ocj1yIT1udWxsKT9TbyhlLGkpOl9yKSx0PW5ldyB0KG4sbyksZS5tZW1vaXplZFN0YXRlPXQuc3RhdGUhPT1udWxsJiZ0LnN0YXRlIT09dm9pZCAwP3Quc3RhdGU6bnVsbCx0LnVwZGF0ZXI9Q3UsZS5zdGF0ZU5vZGU9dCx0Ll9yZWFjdEludGVybmFscz1lLHImJihlPWUuc3RhdGVOb2RlLGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1pLGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9byksdH1mdW5jdGlvbiBkZyhlLHQsbixyKXtlPXQuc3RhdGUsdHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz09ImZ1bmN0aW9uIiYmdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4sciksdHlwZW9mIHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9PSJmdW5jdGlvbiImJnQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobixyKSx0LnN0YXRlIT09ZSYmQ3UuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0LHQuc3RhdGUsbnVsbCl9ZnVuY3Rpb24gV2QoZSx0LG4scil7dmFyIGk9ZS5zdGF0ZU5vZGU7aS5wcm9wcz1uLGkuc3RhdGU9ZS5tZW1vaXplZFN0YXRlLGkucmVmcz17fSxEaChlKTt2YXIgbz10LmNvbnRleHRUeXBlO3R5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGw\/aS5jb250ZXh0PUt0KG8pOihvPXh0KHQpP1NpOnR0LmN1cnJlbnQsaS5jb250ZXh0PVNvKGUsbykpLGkuc3RhdGU9ZS5tZW1vaXplZFN0YXRlLG89dC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsdHlwZW9mIG89PSJmdW5jdGlvbiImJihxZChlLHQsbyxuKSxpLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSksdHlwZW9mIHQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT0iZnVuY3Rpb24ifHx0eXBlb2YgaS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT09ImZ1bmN0aW9uInx8dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uIiYmdHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50IT0iZnVuY3Rpb24ifHwodD1pLnN0YXRlLHR5cGVvZiBpLmNvbXBvbmVudFdpbGxNb3VudD09ImZ1bmN0aW9uIiYmaS5jb21wb25lbnRXaWxsTW91bnQoKSx0eXBlb2YgaS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50PT0iZnVuY3Rpb24iJiZpLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSx0IT09aS5zdGF0ZSYmQ3UuZW5xdWV1ZVJlcGxhY2VTdGF0ZShpLGkuc3RhdGUsbnVsbCksQmwoZSxuLGksciksaS5zdGF0ZT1lLm1lbW9pemVkU3RhdGUpLHR5cGVvZiBpLmNvbXBvbmVudERpZE1vdW50PT0iZnVuY3Rpb24iJiYoZS5mbGFnc3w9NDE5NDMwOCl9ZnVuY3Rpb24gUG8oZSx0KXt0cnl7dmFyIG49IiIscj10O2RvIG4rPVpDKHIpLHI9ci5yZXR1cm47d2hpbGUocik7dmFyIGk9bn1jYXRjaChvKXtpPWAKRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogYCtvLm1lc3NhZ2UrYApgK28uc3RhY2t9cmV0dXJue3ZhbHVlOmUsc291cmNlOnQsc3RhY2s6aSxkaWdlc3Q6bnVsbH19ZnVuY3Rpb24gQWMoZSx0LG4pe3JldHVybnt2YWx1ZTplLHNvdXJjZTpudWxsLHN0YWNrOm4\/P251bGwsZGlnZXN0OnQ\/P251bGx9fWZ1bmN0aW9uIEtkKGUsdCl7dHJ5e2NvbnNvbGUuZXJyb3IodC52YWx1ZSl9Y2F0Y2gobil7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IG59KX19dmFyIEVFPXR5cGVvZiBXZWFrTWFwPT0iZnVuY3Rpb24iP1dlYWtNYXA6TWFwO2Z1bmN0aW9uIHgxKGUsdCxuKXtuPVluKC0xLG4pLG4udGFnPTMsbi5wYXlsb2FkPXtlbGVtZW50Om51bGx9O3ZhciByPXQudmFsdWU7cmV0dXJuIG4uY2FsbGJhY2s9ZnVuY3Rpb24oKXtXbHx8KFdsPSEwLHJmPXIpLEtkKGUsdCl9LG59ZnVuY3Rpb24gdzEoZSx0LG4pe249WW4oLTEsbiksbi50YWc9Mzt2YXIgcj1lLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKHR5cGVvZiByPT0iZnVuY3Rpb24iKXt2YXIgaT10LnZhbHVlO24ucGF5bG9hZD1mdW5jdGlvbigpe3JldHVybiByKGkpfSxuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7S2QoZSx0KX19dmFyIG89ZS5zdGF0ZU5vZGU7cmV0dXJuIG8hPT1udWxsJiZ0eXBlb2Ygby5jb21wb25lbnREaWRDYXRjaD09ImZ1bmN0aW9uIiYmKG4uY2FsbGJhY2s9ZnVuY3Rpb24oKXtLZChlLHQpLHR5cGVvZiByIT0iZnVuY3Rpb24iJiYoRHI9PT1udWxsP0RyPW5ldyBTZXQoW3RoaXNdKTpEci5hZGQodGhpcykpO3ZhciBzPXQuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaCh0LnZhbHVlLHtjb21wb25lbnRTdGFjazpzIT09bnVsbD9zOiIifSl9KSxufWZ1bmN0aW9uIGZnKGUsdCxuKXt2YXIgcj1lLnBpbmdDYWNoZTtpZihyPT09bnVsbCl7cj1lLnBpbmdDYWNoZT1uZXcgRUU7dmFyIGk9bmV3IFNldDtyLnNldCh0LGkpfWVsc2UgaT1yLmdldCh0KSxpPT09dm9pZCAwJiYoaT1uZXcgU2V0LHIuc2V0KHQsaSkpO2kuaGFzKG4pfHwoaS5hZGQobiksZT1WRS5iaW5kKG51bGwsZSx0LG4pLHQudGhlbihlLGUpKX1mdW5jdGlvbiBoZyhlKXtkb3t2YXIgdDtpZigodD1lLnRhZz09PTEzKSYmKHQ9ZS5tZW1vaXplZFN0YXRlLHQ9dCE9PW51bGw\/dC5kZWh5ZHJhdGVkIT09bnVsbDohMCksdClyZXR1cm4gZTtlPWUucmV0dXJufXdoaWxlKGUhPT1udWxsKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBwZyhlLHQsbixyLGkpe3JldHVybiBlLm1vZGUmMT8oZS5mbGFnc3w9NjU1MzYsZS5sYW5lcz1pLGUpOihlPT09dD9lLmZsYWdzfD02NTUzNjooZS5mbGFnc3w9MTI4LG4uZmxhZ3N8PTEzMTA3MixuLmZsYWdzJj0tNTI4MDUsbi50YWc9PT0xJiYobi5hbHRlcm5hdGU9PT1udWxsP24udGFnPTE3Oih0PVluKC0xLDEpLHQudGFnPTIsUnIobix0LDEpKSksbi5sYW5lc3w9MSksZSl9dmFyIFBFPW5yLlJlYWN0Q3VycmVudE93bmVyLHl0PSExO2Z1bmN0aW9uIHN0KGUsdCxuLHIpe3QuY2hpbGQ9ZT09PW51bGw\/WXgodCxudWxsLG4scik6VG8odCxlLmNoaWxkLG4scil9ZnVuY3Rpb24gbWcoZSx0LG4scixpKXtuPW4ucmVuZGVyO3ZhciBvPXQucmVmO3JldHVybiBhbyh0LGkpLHI9X2goZSx0LG4scixvLGkpLG49VmgoKSxlIT09bnVsbCYmIXl0Pyh0LnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdC5mbGFncyY9LTIwNTMsZS5sYW5lcyY9fmksWm4oZSx0LGkpKTooQ2UmJm4mJlBoKHQpLHQuZmxhZ3N8PTEsc3QoZSx0LHIsaSksdC5jaGlsZCl9ZnVuY3Rpb24gZ2coZSx0LG4scixpKXtpZihlPT09bnVsbCl7dmFyIG89bi50eXBlO3JldHVybiB0eXBlb2Ygbz09ImZ1bmN0aW9uIiYmIVFoKG8pJiZvLmRlZmF1bHRQcm9wcz09PXZvaWQgMCYmbi5jb21wYXJlPT09bnVsbCYmbi5kZWZhdWx0UHJvcHM9PT12b2lkIDA\/KHQudGFnPTE1LHQudHlwZT1vLGIxKGUsdCxvLHIsaSkpOihlPWZsKG4udHlwZSxudWxsLHIsdCx0Lm1vZGUsaSksZS5yZWY9dC5yZWYsZS5yZXR1cm49dCx0LmNoaWxkPWUpfWlmKG89ZS5jaGlsZCwhKGUubGFuZXMmaSkpe3ZhciBzPW8ubWVtb2l6ZWRQcm9wcztpZihuPW4uY29tcGFyZSxuPW4hPT1udWxsP246THMsbihzLHIpJiZlLnJlZj09PXQucmVmKXJldHVybiBabihlLHQsaSl9cmV0dXJuIHQuZmxhZ3N8PTEsZT1McihvLHIpLGUucmVmPXQucmVmLGUucmV0dXJuPXQsdC5jaGlsZD1lfWZ1bmN0aW9uIGIxKGUsdCxuLHIsaSl7aWYoZSE9PW51bGwpe3ZhciBvPWUubWVtb2l6ZWRQcm9wcztpZihMcyhvLHIpJiZlLnJlZj09PXQucmVmKWlmKHl0PSExLHQucGVuZGluZ1Byb3BzPXI9bywoZS5sYW5lcyZpKSE9PTApZS5mbGFncyYxMzEwNzImJih5dD0hMCk7ZWxzZSByZXR1cm4gdC5sYW5lcz1lLmxhbmVzLFpuKGUsdCxpKX1yZXR1cm4gR2QoZSx0LG4scixpKX1mdW5jdGlvbiBrMShlLHQsbil7dmFyIHI9dC5wZW5kaW5nUHJvcHMsaT1yLmNoaWxkcmVuLG89ZSE9PW51bGw\/ZS5tZW1vaXplZFN0YXRlOm51bGw7aWYoci5tb2RlPT09ImhpZGRlbiIpaWYoISh0Lm1vZGUmMSkpdC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxnZShYaSxBdCksQXR8PW47ZWxzZXtpZighKG4mMTA3Mzc0MTgyNCkpcmV0dXJuIGU9byE9PW51bGw\/by5iYXNlTGFuZXN8bjpuLHQubGFuZXM9dC5jaGlsZExhbmVzPTEwNzM3NDE4MjQsdC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6ZSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSx0LnVwZGF0ZVF1ZXVlPW51bGwsZ2UoWGksQXQpLEF0fD1lLG51bGw7dC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxyPW8hPT1udWxsP28uYmFzZUxhbmVzOm4sZ2UoWGksQXQpLEF0fD1yfWVsc2UgbyE9PW51bGw\/KHI9by5iYXNlTGFuZXN8bix0Lm1lbW9pemVkU3RhdGU9bnVsbCk6cj1uLGdlKFhpLEF0KSxBdHw9cjtyZXR1cm4gc3QoZSx0LGksbiksdC5jaGlsZH1mdW5jdGlvbiBTMShlLHQpe3ZhciBuPXQucmVmOyhlPT09bnVsbCYmbiE9PW51bGx8fGUhPT1udWxsJiZlLnJlZiE9PW4pJiYodC5mbGFnc3w9NTEyLHQuZmxhZ3N8PTIwOTcxNTIpfWZ1bmN0aW9uIEdkKGUsdCxuLHIsaSl7dmFyIG89eHQobik\/U2k6dHQuY3VycmVudDtyZXR1cm4gbz1Tbyh0LG8pLGFvKHQsaSksbj1faChlLHQsbixyLG8saSkscj1WaCgpLGUhPT1udWxsJiYheXQ\/KHQudXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0LmZsYWdzJj0tMjA1MyxlLmxhbmVzJj1+aSxabihlLHQsaSkpOihDZSYmciYmUGgodCksdC5mbGFnc3w9MSxzdChlLHQsbixpKSx0LmNoaWxkKX1mdW5jdGlvbiB5ZyhlLHQsbixyLGkpe2lmKHh0KG4pKXt2YXIgbz0hMDtMbCh0KX1lbHNlIG89ITE7aWYoYW8odCxpKSx0LnN0YXRlTm9kZT09PW51bGwpdWwoZSx0KSx2MSh0LG4sciksV2QodCxuLHIsaSkscj0hMDtlbHNlIGlmKGU9PT1udWxsKXt2YXIgcz10LnN0YXRlTm9kZSxhPXQubWVtb2l6ZWRQcm9wcztzLnByb3BzPWE7dmFyIGw9cy5jb250ZXh0LHU9bi5jb250ZXh0VHlwZTt0eXBlb2YgdT09Im9iamVjdCImJnUhPT1udWxsP3U9S3QodSk6KHU9eHQobik\/U2k6dHQuY3VycmVudCx1PVNvKHQsdSkpO3ZhciBjPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLGQ9dHlwZW9mIGM9PSJmdW5jdGlvbiJ8fHR5cGVvZiBzLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlPT0iZnVuY3Rpb24iO2R8fHR5cGVvZiBzLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT0iZnVuY3Rpb24iJiZ0eXBlb2Ygcy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT0iZnVuY3Rpb24ifHwoYSE9PXJ8fGwhPT11KSYmZGcodCxzLHIsdSkseXI9ITE7dmFyIGg9dC5tZW1vaXplZFN0YXRlO3Muc3RhdGU9aCxCbCh0LHIscyxpKSxsPXQubWVtb2l6ZWRTdGF0ZSxhIT09cnx8aCE9PWx8fHZ0LmN1cnJlbnR8fHlyPyh0eXBlb2YgYz09ImZ1bmN0aW9uIiYmKHFkKHQsbixjLHIpLGw9dC5tZW1vaXplZFN0YXRlKSwoYT15cnx8Y2codCxuLGEscixoLGwsdSkpPyhkfHx0eXBlb2Ygcy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IT0iZnVuY3Rpb24iJiZ0eXBlb2Ygcy5jb21wb25lbnRXaWxsTW91bnQhPSJmdW5jdGlvbiJ8fCh0eXBlb2Ygcy5jb21wb25lbnRXaWxsTW91bnQ9PSJmdW5jdGlvbiImJnMuY29tcG9uZW50V2lsbE1vdW50KCksdHlwZW9mIHMuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudD09ImZ1bmN0aW9uIiYmcy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLHR5cGVvZiBzLmNvbXBvbmVudERpZE1vdW50PT0iZnVuY3Rpb24iJiYodC5mbGFnc3w9NDE5NDMwOCkpOih0eXBlb2Ygcy5jb21wb25lbnREaWRNb3VudD09ImZ1bmN0aW9uIiYmKHQuZmxhZ3N8PTQxOTQzMDgpLHQubWVtb2l6ZWRQcm9wcz1yLHQubWVtb2l6ZWRTdGF0ZT1sKSxzLnByb3BzPXIscy5zdGF0ZT1sLHMuY29udGV4dD11LHI9YSk6KHR5cGVvZiBzLmNvbXBvbmVudERpZE1vdW50PT0iZnVuY3Rpb24iJiYodC5mbGFnc3w9NDE5NDMwOCkscj0hMSl9ZWxzZXtzPXQuc3RhdGVOb2RlLFh4KGUsdCksYT10Lm1lbW9pemVkUHJvcHMsdT10LnR5cGU9PT10LmVsZW1lbnRUeXBlP2E6cm4odC50eXBlLGEpLHMucHJvcHM9dSxkPXQucGVuZGluZ1Byb3BzLGg9cy5jb250ZXh0LGw9bi5jb250ZXh0VHlwZSx0eXBlb2YgbD09Im9iamVjdCImJmwhPT1udWxsP2w9S3QobCk6KGw9eHQobik\/U2k6dHQuY3VycmVudCxsPVNvKHQsbCkpO3ZhciBmPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyhjPXR5cGVvZiBmPT0iZnVuY3Rpb24ifHx0eXBlb2Ygcy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT09ImZ1bmN0aW9uIil8fHR5cGVvZiBzLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT0iZnVuY3Rpb24iJiZ0eXBlb2Ygcy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT0iZnVuY3Rpb24ifHwoYSE9PWR8fGghPT1sKSYmZGcodCxzLHIsbCkseXI9ITEsaD10Lm1lbW9pemVkU3RhdGUscy5zdGF0ZT1oLEJsKHQscixzLGkpO3ZhciB5PXQubWVtb2l6ZWRTdGF0ZTthIT09ZHx8aCE9PXl8fHZ0LmN1cnJlbnR8fHlyPyh0eXBlb2YgZj09ImZ1bmN0aW9uIiYmKHFkKHQsbixmLHIpLHk9dC5tZW1vaXplZFN0YXRlKSwodT15cnx8Y2codCxuLHUscixoLHksbCl8fCExKT8oY3x8dHlwZW9mIHMuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUhPSJmdW5jdGlvbiImJnR5cGVvZiBzLmNvbXBvbmVudFdpbGxVcGRhdGUhPSJmdW5jdGlvbiJ8fCh0eXBlb2Ygcy5jb21wb25lbnRXaWxsVXBkYXRlPT0iZnVuY3Rpb24iJiZzLmNvbXBvbmVudFdpbGxVcGRhdGUocix5LGwpLHR5cGVvZiBzLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlPT0iZnVuY3Rpb24iJiZzLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKHIseSxsKSksdHlwZW9mIHMuY29tcG9uZW50RGlkVXBkYXRlPT0iZnVuY3Rpb24iJiYodC5mbGFnc3w9NCksdHlwZW9mIHMuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9PSJmdW5jdGlvbiImJih0LmZsYWdzfD0xMDI0KSk6KHR5cGVvZiBzLmNvbXBvbmVudERpZFVwZGF0ZSE9ImZ1bmN0aW9uInx8YT09PWUubWVtb2l6ZWRQcm9wcyYmaD09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTQpLHR5cGVvZiBzLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIT0iZnVuY3Rpb24ifHxhPT09ZS5tZW1vaXplZFByb3BzJiZoPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9MTAyNCksdC5tZW1vaXplZFByb3BzPXIsdC5tZW1vaXplZFN0YXRlPXkpLHMucHJvcHM9cixzLnN0YXRlPXkscy5jb250ZXh0PWwscj11KToodHlwZW9mIHMuY29tcG9uZW50RGlkVXBkYXRlIT0iZnVuY3Rpb24ifHxhPT09ZS5tZW1vaXplZFByb3BzJiZoPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9NCksdHlwZW9mIHMuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUhPSJmdW5jdGlvbiJ8fGE9PT1lLm1lbW9pemVkUHJvcHMmJmg9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD0xMDI0KSxyPSExKX1yZXR1cm4gWWQoZSx0LG4scixvLGkpfWZ1bmN0aW9uIFlkKGUsdCxuLHIsaSxvKXtTMShlLHQpO3ZhciBzPSh0LmZsYWdzJjEyOCkhPT0wO2lmKCFyJiYhcylyZXR1cm4gaSYmbmcodCxuLCExKSxabihlLHQsbyk7cj10LnN0YXRlTm9kZSxQRS5jdXJyZW50PXQ7dmFyIGE9cyYmdHlwZW9mIG4uZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIT0iZnVuY3Rpb24iP251bGw6ci5yZW5kZXIoKTtyZXR1cm4gdC5mbGFnc3w9MSxlIT09bnVsbCYmcz8odC5jaGlsZD1Ubyh0LGUuY2hpbGQsbnVsbCxvKSx0LmNoaWxkPVRvKHQsbnVsbCxhLG8pKTpzdChlLHQsYSxvKSx0Lm1lbW9pemVkU3RhdGU9ci5zdGF0ZSxpJiZuZyh0LG4sITApLHQuY2hpbGR9ZnVuY3Rpb24gQzEoZSl7dmFyIHQ9ZS5zdGF0ZU5vZGU7dC5wZW5kaW5nQ29udGV4dD90ZyhlLHQucGVuZGluZ0NvbnRleHQsdC5wZW5kaW5nQ29udGV4dCE9PXQuY29udGV4dCk6dC5jb250ZXh0JiZ0ZyhlLHQuY29udGV4dCwhMSksTWgoZSx0LmNvbnRhaW5lckluZm8pfWZ1bmN0aW9uIHZnKGUsdCxuLHIsaSl7cmV0dXJuIENvKCksSWgoaSksdC5mbGFnc3w9MjU2LHN0KGUsdCxuLHIpLHQuY2hpbGR9dmFyIFFkPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MH07ZnVuY3Rpb24gWGQoZSl7cmV0dXJue2Jhc2VMYW5lczplLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9fWZ1bmN0aW9uIFQxKGUsdCxuKXt2YXIgcj10LnBlbmRpbmdQcm9wcyxpPUVlLmN1cnJlbnQsbz0hMSxzPSh0LmZsYWdzJjEyOCkhPT0wLGE7aWYoKGE9cyl8fChhPWUhPT1udWxsJiZlLm1lbW9pemVkU3RhdGU9PT1udWxsPyExOihpJjIpIT09MCksYT8obz0hMCx0LmZsYWdzJj0tMTI5KTooZT09PW51bGx8fGUubWVtb2l6ZWRTdGF0ZSE9PW51bGwpJiYoaXw9MSksZ2UoRWUsaSYxKSxlPT09bnVsbClyZXR1cm4gJGQodCksZT10Lm1lbW9pemVkU3RhdGUsZSE9PW51bGwmJihlPWUuZGVoeWRyYXRlZCxlIT09bnVsbCk\/KHQubW9kZSYxP2UuZGF0YT09PSIkISI\/dC5sYW5lcz04OnQubGFuZXM9MTA3Mzc0MTgyNDp0LmxhbmVzPTEsbnVsbCk6KHM9ci5jaGlsZHJlbixlPXIuZmFsbGJhY2ssbz8ocj10Lm1vZGUsbz10LmNoaWxkLHM9e21vZGU6ImhpZGRlbiIsY2hpbGRyZW46c30sIShyJjEpJiZvIT09bnVsbD8oby5jaGlsZExhbmVzPTAsby5wZW5kaW5nUHJvcHM9cyk6bz1QdShzLHIsMCxudWxsKSxlPXhpKGUscixuLG51bGwpLG8ucmV0dXJuPXQsZS5yZXR1cm49dCxvLnNpYmxpbmc9ZSx0LmNoaWxkPW8sdC5jaGlsZC5tZW1vaXplZFN0YXRlPVhkKG4pLHQubWVtb2l6ZWRTdGF0ZT1RZCxlKTokaCh0LHMpKTtpZihpPWUubWVtb2l6ZWRTdGF0ZSxpIT09bnVsbCYmKGE9aS5kZWh5ZHJhdGVkLGEhPT1udWxsKSlyZXR1cm4gQUUoZSx0LHMscixhLGksbik7aWYobyl7bz1yLmZhbGxiYWNrLHM9dC5tb2RlLGk9ZS5jaGlsZCxhPWkuc2libGluZzt2YXIgbD17bW9kZToiaGlkZGVuIixjaGlsZHJlbjpyLmNoaWxkcmVufTtyZXR1cm4hKHMmMSkmJnQuY2hpbGQhPT1pPyhyPXQuY2hpbGQsci5jaGlsZExhbmVzPTAsci5wZW5kaW5nUHJvcHM9bCx0LmRlbGV0aW9ucz1udWxsKToocj1McihpLGwpLHIuc3VidHJlZUZsYWdzPWkuc3VidHJlZUZsYWdzJjE0NjgwMDY0KSxhIT09bnVsbD9vPUxyKGEsbyk6KG89eGkobyxzLG4sbnVsbCksby5mbGFnc3w9Miksby5yZXR1cm49dCxyLnJldHVybj10LHIuc2libGluZz1vLHQuY2hpbGQ9cixyPW8sbz10LmNoaWxkLHM9ZS5jaGlsZC5tZW1vaXplZFN0YXRlLHM9cz09PW51bGw\/WGQobik6e2Jhc2VMYW5lczpzLmJhc2VMYW5lc3xuLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOnMudHJhbnNpdGlvbnN9LG8ubWVtb2l6ZWRTdGF0ZT1zLG8uY2hpbGRMYW5lcz1lLmNoaWxkTGFuZXMmfm4sdC5tZW1vaXplZFN0YXRlPVFkLHJ9cmV0dXJuIG89ZS5jaGlsZCxlPW8uc2libGluZyxyPUxyKG8se21vZGU6InZpc2libGUiLGNoaWxkcmVuOnIuY2hpbGRyZW59KSwhKHQubW9kZSYxKSYmKHIubGFuZXM9biksci5yZXR1cm49dCxyLnNpYmxpbmc9bnVsbCxlIT09bnVsbCYmKG49dC5kZWxldGlvbnMsbj09PW51bGw\/KHQuZGVsZXRpb25zPVtlXSx0LmZsYWdzfD0xNik6bi5wdXNoKGUpKSx0LmNoaWxkPXIsdC5tZW1vaXplZFN0YXRlPW51bGwscn1mdW5jdGlvbiAkaChlLHQpe3JldHVybiB0PVB1KHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjp0fSxlLm1vZGUsMCxudWxsKSx0LnJldHVybj1lLGUuY2hpbGQ9dH1mdW5jdGlvbiBGYShlLHQsbixyKXtyZXR1cm4gciE9PW51bGwmJkloKHIpLFRvKHQsZS5jaGlsZCxudWxsLG4pLGU9JGgodCx0LnBlbmRpbmdQcm9wcy5jaGlsZHJlbiksZS5mbGFnc3w9Mix0Lm1lbW9pemVkU3RhdGU9bnVsbCxlfWZ1bmN0aW9uIEFFKGUsdCxuLHIsaSxvLHMpe2lmKG4pcmV0dXJuIHQuZmxhZ3MmMjU2Pyh0LmZsYWdzJj0tMjU3LHI9QWMoRXJyb3IoXyg0MjIpKSksRmEoZSx0LHMscikpOnQubWVtb2l6ZWRTdGF0ZSE9PW51bGw\/KHQuY2hpbGQ9ZS5jaGlsZCx0LmZsYWdzfD0xMjgsbnVsbCk6KG89ci5mYWxsYmFjayxpPXQubW9kZSxyPVB1KHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjpyLmNoaWxkcmVufSxpLDAsbnVsbCksbz14aShvLGkscyxudWxsKSxvLmZsYWdzfD0yLHIucmV0dXJuPXQsby5yZXR1cm49dCxyLnNpYmxpbmc9byx0LmNoaWxkPXIsdC5tb2RlJjEmJlRvKHQsZS5jaGlsZCxudWxsLHMpLHQuY2hpbGQubWVtb2l6ZWRTdGF0ZT1YZChzKSx0Lm1lbW9pemVkU3RhdGU9UWQsbyk7aWYoISh0Lm1vZGUmMSkpcmV0dXJuIEZhKGUsdCxzLG51bGwpO2lmKGkuZGF0YT09PSIkISIpe2lmKHI9aS5uZXh0U2libGluZyYmaS5uZXh0U2libGluZy5kYXRhc2V0LHIpdmFyIGE9ci5kZ3N0O3JldHVybiByPWEsbz1FcnJvcihfKDQxOSkpLHI9QWMobyxyLHZvaWQgMCksRmEoZSx0LHMscil9aWYoYT0ocyZlLmNoaWxkTGFuZXMpIT09MCx5dHx8YSl7aWYocj1IZSxyIT09bnVsbCl7c3dpdGNoKHMmLXMpe2Nhc2UgNDppPTI7YnJlYWs7Y2FzZSAxNjppPTg7YnJlYWs7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0Omk9MzI7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6aT0yNjg0MzU0NTY7YnJlYWs7ZGVmYXVsdDppPTB9aT1pJihyLnN1c3BlbmRlZExhbmVzfHMpPzA6aSxpIT09MCYmaSE9PW8ucmV0cnlMYW5lJiYoby5yZXRyeUxhbmU9aSxKbihlLGkpLGRuKHIsZSxpLC0xKSl9cmV0dXJuIFloKCkscj1BYyhFcnJvcihfKDQyMSkpKSxGYShlLHQscyxyKX1yZXR1cm4gaS5kYXRhPT09IiQ\/Ij8odC5mbGFnc3w9MTI4LHQuY2hpbGQ9ZS5jaGlsZCx0PUJFLmJpbmQobnVsbCxlKSxpLl9yZWFjdFJldHJ5PXQsbnVsbCk6KGU9by50cmVlQ29udGV4dCxOdD16cihpLm5leHRTaWJsaW5nKSx6dD10LENlPSEwLHVuPW51bGwsZSE9PW51bGwmJihWdFtCdCsrXT1LbixWdFtCdCsrXT1HbixWdFtCdCsrXT1DaSxLbj1lLmlkLEduPWUub3ZlcmZsb3csQ2k9dCksdD0kaCh0LHIuY2hpbGRyZW4pLHQuZmxhZ3N8PTQwOTYsdCl9ZnVuY3Rpb24geGcoZSx0LG4pe2UubGFuZXN8PXQ7dmFyIHI9ZS5hbHRlcm5hdGU7ciE9PW51bGwmJihyLmxhbmVzfD10KSxIZChlLnJldHVybix0LG4pfWZ1bmN0aW9uIEljKGUsdCxuLHIsaSl7dmFyIG89ZS5tZW1vaXplZFN0YXRlO289PT1udWxsP2UubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6dCxyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OnIsdGFpbDpuLHRhaWxNb2RlOml9OihvLmlzQmFja3dhcmRzPXQsby5yZW5kZXJpbmc9bnVsbCxvLnJlbmRlcmluZ1N0YXJ0VGltZT0wLG8ubGFzdD1yLG8udGFpbD1uLG8udGFpbE1vZGU9aSl9ZnVuY3Rpb24gRTEoZSx0LG4pe3ZhciByPXQucGVuZGluZ1Byb3BzLGk9ci5yZXZlYWxPcmRlcixvPXIudGFpbDtpZihzdChlLHQsci5jaGlsZHJlbixuKSxyPUVlLmN1cnJlbnQsciYyKXI9ciYxfDIsdC5mbGFnc3w9MTI4O2Vsc2V7aWYoZSE9PW51bGwmJmUuZmxhZ3MmMTI4KWU6Zm9yKGU9dC5jaGlsZDtlIT09bnVsbDspe2lmKGUudGFnPT09MTMpZS5tZW1vaXplZFN0YXRlIT09bnVsbCYmeGcoZSxuLHQpO2Vsc2UgaWYoZS50YWc9PT0xOSl4ZyhlLG4sdCk7ZWxzZSBpZihlLmNoaWxkIT09bnVsbCl7ZS5jaGlsZC5yZXR1cm49ZSxlPWUuY2hpbGQ7Y29udGludWV9aWYoZT09PXQpYnJlYWsgZTtmb3IoO2Uuc2libGluZz09PW51bGw7KXtpZihlLnJldHVybj09PW51bGx8fGUucmV0dXJuPT09dClicmVhayBlO2U9ZS5yZXR1cm59ZS5zaWJsaW5nLnJldHVybj1lLnJldHVybixlPWUuc2libGluZ31yJj0xfWlmKGdlKEVlLHIpLCEodC5tb2RlJjEpKXQubWVtb2l6ZWRTdGF0ZT1udWxsO2Vsc2Ugc3dpdGNoKGkpe2Nhc2UiZm9yd2FyZHMiOmZvcihuPXQuY2hpbGQsaT1udWxsO24hPT1udWxsOyllPW4uYWx0ZXJuYXRlLGUhPT1udWxsJiZVbChlKT09PW51bGwmJihpPW4pLG49bi5zaWJsaW5nO249aSxuPT09bnVsbD8oaT10LmNoaWxkLHQuY2hpbGQ9bnVsbCk6KGk9bi5zaWJsaW5nLG4uc2libGluZz1udWxsKSxJYyh0LCExLGksbixvKTticmVhaztjYXNlImJhY2t3YXJkcyI6Zm9yKG49bnVsbCxpPXQuY2hpbGQsdC5jaGlsZD1udWxsO2khPT1udWxsOyl7aWYoZT1pLmFsdGVybmF0ZSxlIT09bnVsbCYmVWwoZSk9PT1udWxsKXt0LmNoaWxkPWk7YnJlYWt9ZT1pLnNpYmxpbmcsaS5zaWJsaW5nPW4sbj1pLGk9ZX1JYyh0LCEwLG4sbnVsbCxvKTticmVhaztjYXNlInRvZ2V0aGVyIjpJYyh0LCExLG51bGwsbnVsbCx2b2lkIDApO2JyZWFrO2RlZmF1bHQ6dC5tZW1vaXplZFN0YXRlPW51bGx9cmV0dXJuIHQuY2hpbGR9ZnVuY3Rpb24gdWwoZSx0KXshKHQubW9kZSYxKSYmZSE9PW51bGwmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5mbGFnc3w9Mil9ZnVuY3Rpb24gWm4oZSx0LG4pe2lmKGUhPT1udWxsJiYodC5kZXBlbmRlbmNpZXM9ZS5kZXBlbmRlbmNpZXMpLEVpfD10LmxhbmVzLCEobiZ0LmNoaWxkTGFuZXMpKXJldHVybiBudWxsO2lmKGUhPT1udWxsJiZ0LmNoaWxkIT09ZS5jaGlsZCl0aHJvdyBFcnJvcihfKDE1MykpO2lmKHQuY2hpbGQhPT1udWxsKXtmb3IoZT10LmNoaWxkLG49THIoZSxlLnBlbmRpbmdQcm9wcyksdC5jaGlsZD1uLG4ucmV0dXJuPXQ7ZS5zaWJsaW5nIT09bnVsbDspZT1lLnNpYmxpbmcsbj1uLnNpYmxpbmc9THIoZSxlLnBlbmRpbmdQcm9wcyksbi5yZXR1cm49dDtuLnNpYmxpbmc9bnVsbH1yZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBJRShlLHQsbil7c3dpdGNoKHQudGFnKXtjYXNlIDM6QzEodCksQ28oKTticmVhaztjYXNlIDU6SngodCk7YnJlYWs7Y2FzZSAxOnh0KHQudHlwZSkmJkxsKHQpO2JyZWFrO2Nhc2UgNDpNaCh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6dmFyIHI9dC50eXBlLl9jb250ZXh0LGk9dC5tZW1vaXplZFByb3BzLnZhbHVlO2dlKF9sLHIuX2N1cnJlbnRWYWx1ZSksci5fY3VycmVudFZhbHVlPWk7YnJlYWs7Y2FzZSAxMzppZihyPXQubWVtb2l6ZWRTdGF0ZSxyIT09bnVsbClyZXR1cm4gci5kZWh5ZHJhdGVkIT09bnVsbD8oZ2UoRWUsRWUuY3VycmVudCYxKSx0LmZsYWdzfD0xMjgsbnVsbCk6biZ0LmNoaWxkLmNoaWxkTGFuZXM\/VDEoZSx0LG4pOihnZShFZSxFZS5jdXJyZW50JjEpLGU9Wm4oZSx0LG4pLGUhPT1udWxsP2Uuc2libGluZzpudWxsKTtnZShFZSxFZS5jdXJyZW50JjEpO2JyZWFrO2Nhc2UgMTk6aWYocj0obiZ0LmNoaWxkTGFuZXMpIT09MCxlLmZsYWdzJjEyOCl7aWYocilyZXR1cm4gRTEoZSx0LG4pO3QuZmxhZ3N8PTEyOH1pZihpPXQubWVtb2l6ZWRTdGF0ZSxpIT09bnVsbCYmKGkucmVuZGVyaW5nPW51bGwsaS50YWlsPW51bGwsaS5sYXN0RWZmZWN0PW51bGwpLGdlKEVlLEVlLmN1cnJlbnQpLHIpYnJlYWs7cmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiB0LmxhbmVzPTAsazEoZSx0LG4pfXJldHVybiBabihlLHQsbil9dmFyIFAxLEpkLEExLEkxO1AxPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQuY2hpbGQ7biE9PW51bGw7KXtpZihuLnRhZz09PTV8fG4udGFnPT09NillLmFwcGVuZENoaWxkKG4uc3RhdGVOb2RlKTtlbHNlIGlmKG4udGFnIT09NCYmbi5jaGlsZCE9PW51bGwpe24uY2hpbGQucmV0dXJuPW4sbj1uLmNoaWxkO2NvbnRpbnVlfWlmKG49PT10KWJyZWFrO2Zvcig7bi5zaWJsaW5nPT09bnVsbDspe2lmKG4ucmV0dXJuPT09bnVsbHx8bi5yZXR1cm49PT10KXJldHVybjtuPW4ucmV0dXJufW4uc2libGluZy5yZXR1cm49bi5yZXR1cm4sbj1uLnNpYmxpbmd9fTtKZD1mdW5jdGlvbigpe307QTE9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5tZW1vaXplZFByb3BzO2lmKGkhPT1yKXtlPXQuc3RhdGVOb2RlLHVpKE5uLmN1cnJlbnQpO3ZhciBvPW51bGw7c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOmk9d2QoZSxpKSxyPXdkKGUsciksbz1bXTticmVhaztjYXNlInNlbGVjdCI6aT1JZSh7fSxpLHt2YWx1ZTp2b2lkIDB9KSxyPUllKHt9LHIse3ZhbHVlOnZvaWQgMH0pLG89W107YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1TZChlLGkpLHI9U2QoZSxyKSxvPVtdO2JyZWFrO2RlZmF1bHQ6dHlwZW9mIGkub25DbGljayE9ImZ1bmN0aW9uIiYmdHlwZW9mIHIub25DbGljaz09ImZ1bmN0aW9uIiYmKGUub25jbGljaz1EbCl9VGQobixyKTt2YXIgcztuPW51bGw7Zm9yKHUgaW4gaSlpZighci5oYXNPd25Qcm9wZXJ0eSh1KSYmaS5oYXNPd25Qcm9wZXJ0eSh1KSYmaVt1XSE9bnVsbClpZih1PT09InN0eWxlIil7dmFyIGE9aVt1XTtmb3IocyBpbiBhKWEuaGFzT3duUHJvcGVydHkocykmJihufHwobj17fSksbltzXT0iIil9ZWxzZSB1IT09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiYmdSE9PSJjaGlsZHJlbiImJnUhPT0ic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiYmdSE9PSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciJiZ1IT09ImF1dG9Gb2N1cyImJihJcy5oYXNPd25Qcm9wZXJ0eSh1KT9vfHwobz1bXSk6KG89b3x8W10pLnB1c2godSxudWxsKSk7Zm9yKHUgaW4gcil7dmFyIGw9clt1XTtpZihhPWkhPW51bGw\/aVt1XTp2b2lkIDAsci5oYXNPd25Qcm9wZXJ0eSh1KSYmbCE9PWEmJihsIT1udWxsfHxhIT1udWxsKSlpZih1PT09InN0eWxlIilpZihhKXtmb3IocyBpbiBhKSFhLmhhc093blByb3BlcnR5KHMpfHxsJiZsLmhhc093blByb3BlcnR5KHMpfHwobnx8KG49e30pLG5bc109IiIpO2ZvcihzIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShzKSYmYVtzXSE9PWxbc10mJihufHwobj17fSksbltzXT1sW3NdKX1lbHNlIG58fChvfHwobz1bXSksby5wdXNoKHUsbikpLG49bDtlbHNlIHU9PT0iZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPyhsPWw\/bC5fX2h0bWw6dm9pZCAwLGE9YT9hLl9faHRtbDp2b2lkIDAsbCE9bnVsbCYmYSE9PWwmJihvPW98fFtdKS5wdXNoKHUsbCkpOnU9PT0iY2hpbGRyZW4iP3R5cGVvZiBsIT0ic3RyaW5nIiYmdHlwZW9mIGwhPSJudW1iZXIifHwobz1vfHxbXSkucHVzaCh1LCIiK2wpOnUhPT0ic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiYmdSE9PSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciJiYoSXMuaGFzT3duUHJvcGVydHkodSk\/KGwhPW51bGwmJnU9PT0ib25TY3JvbGwiJiZ3ZSgic2Nyb2xsIixlKSxvfHxhPT09bHx8KG89W10pKToobz1vfHxbXSkucHVzaCh1LGwpKX1uJiYobz1vfHxbXSkucHVzaCgic3R5bGUiLG4pO3ZhciB1PW87KHQudXBkYXRlUXVldWU9dSkmJih0LmZsYWdzfD00KX19O0kxPWZ1bmN0aW9uKGUsdCxuLHIpe24hPT1yJiYodC5mbGFnc3w9NCl9O2Z1bmN0aW9uIGVzKGUsdCl7aWYoIUNlKXN3aXRjaChlLnRhaWxNb2RlKXtjYXNlImhpZGRlbiI6dD1lLnRhaWw7Zm9yKHZhciBuPW51bGw7dCE9PW51bGw7KXQuYWx0ZXJuYXRlIT09bnVsbCYmKG49dCksdD10LnNpYmxpbmc7bj09PW51bGw\/ZS50YWlsPW51bGw6bi5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSJjb2xsYXBzZWQiOm49ZS50YWlsO2Zvcih2YXIgcj1udWxsO24hPT1udWxsOyluLmFsdGVybmF0ZSE9PW51bGwmJihyPW4pLG49bi5zaWJsaW5nO3I9PT1udWxsP3R8fGUudGFpbD09PW51bGw\/ZS50YWlsPW51bGw6ZS50YWlsLnNpYmxpbmc9bnVsbDpyLnNpYmxpbmc9bnVsbH19ZnVuY3Rpb24gSmUoZSl7dmFyIHQ9ZS5hbHRlcm5hdGUhPT1udWxsJiZlLmFsdGVybmF0ZS5jaGlsZD09PWUuY2hpbGQsbj0wLHI9MDtpZih0KWZvcih2YXIgaT1lLmNoaWxkO2khPT1udWxsOylufD1pLmxhbmVzfGkuY2hpbGRMYW5lcyxyfD1pLnN1YnRyZWVGbGFncyYxNDY4MDA2NCxyfD1pLmZsYWdzJjE0NjgwMDY0LGkucmV0dXJuPWUsaT1pLnNpYmxpbmc7ZWxzZSBmb3IoaT1lLmNoaWxkO2khPT1udWxsOylufD1pLmxhbmVzfGkuY2hpbGRMYW5lcyxyfD1pLnN1YnRyZWVGbGFncyxyfD1pLmZsYWdzLGkucmV0dXJuPWUsaT1pLnNpYmxpbmc7cmV0dXJuIGUuc3VidHJlZUZsYWdzfD1yLGUuY2hpbGRMYW5lcz1uLHR9ZnVuY3Rpb24gTkUoZSx0LG4pe3ZhciByPXQucGVuZGluZ1Byb3BzO3N3aXRjaChBaCh0KSx0LnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIEplKHQpLG51bGw7Y2FzZSAxOnJldHVybiB4dCh0LnR5cGUpJiZNbCgpLEplKHQpLG51bGw7Y2FzZSAzOnJldHVybiByPXQuc3RhdGVOb2RlLEVvKCksYmUodnQpLGJlKHR0KSxPaCgpLHIucGVuZGluZ0NvbnRleHQmJihyLmNvbnRleHQ9ci5wZW5kaW5nQ29udGV4dCxyLnBlbmRpbmdDb250ZXh0PW51bGwpLChlPT09bnVsbHx8ZS5jaGlsZD09PW51bGwpJiYoTGEodCk\/dC5mbGFnc3w9NDplPT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmISh0LmZsYWdzJjI1Nil8fCh0LmZsYWdzfD0xMDI0LHVuIT09bnVsbCYmKGFmKHVuKSx1bj1udWxsKSkpLEpkKGUsdCksSmUodCksbnVsbDtjYXNlIDU6TGgodCk7dmFyIGk9dWkoQnMuY3VycmVudCk7aWYobj10LnR5cGUsZSE9PW51bGwmJnQuc3RhdGVOb2RlIT1udWxsKUExKGUsdCxuLHIsaSksZS5yZWYhPT10LnJlZiYmKHQuZmxhZ3N8PTUxMix0LmZsYWdzfD0yMDk3MTUyKTtlbHNle2lmKCFyKXtpZih0LnN0YXRlTm9kZT09PW51bGwpdGhyb3cgRXJyb3IoXygxNjYpKTtyZXR1cm4gSmUodCksbnVsbH1pZihlPXVpKE5uLmN1cnJlbnQpLExhKHQpKXtyPXQuc3RhdGVOb2RlLG49dC50eXBlO3ZhciBvPXQubWVtb2l6ZWRQcm9wcztzd2l0Y2gocltFbl09dCxyW19zXT1vLGU9KHQubW9kZSYxKSE9PTAsbil7Y2FzZSJkaWFsb2ciOndlKCJjYW5jZWwiLHIpLHdlKCJjbG9zZSIscik7YnJlYWs7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjpjYXNlImVtYmVkIjp3ZSgibG9hZCIscik7YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6Zm9yKGk9MDtpPGNzLmxlbmd0aDtpKyspd2UoY3NbaV0scik7YnJlYWs7Y2FzZSJzb3VyY2UiOndlKCJlcnJvciIscik7YnJlYWs7Y2FzZSJpbWciOmNhc2UiaW1hZ2UiOmNhc2UibGluayI6d2UoImVycm9yIixyKSx3ZSgibG9hZCIscik7YnJlYWs7Y2FzZSJkZXRhaWxzIjp3ZSgidG9nZ2xlIixyKTticmVhaztjYXNlImlucHV0IjpBbShyLG8pLHdlKCJpbnZhbGlkIixyKTticmVhaztjYXNlInNlbGVjdCI6ci5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIW8ubXVsdGlwbGV9LHdlKCJpbnZhbGlkIixyKTticmVhaztjYXNlInRleHRhcmVhIjpObShyLG8pLHdlKCJpbnZhbGlkIixyKX1UZChuLG8pLGk9bnVsbDtmb3IodmFyIHMgaW4gbylpZihvLmhhc093blByb3BlcnR5KHMpKXt2YXIgYT1vW3NdO3M9PT0iY2hpbGRyZW4iP3R5cGVvZiBhPT0ic3RyaW5nIj9yLnRleHRDb250ZW50IT09YSYmKG8uc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIT09ITAmJk1hKHIudGV4dENvbnRlbnQsYSxlKSxpPVsiY2hpbGRyZW4iLGFdKTp0eXBlb2YgYT09Im51bWJlciImJnIudGV4dENvbnRlbnQhPT0iIithJiYoby5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmchPT0hMCYmTWEoci50ZXh0Q29udGVudCxhLGUpLGk9WyJjaGlsZHJlbiIsIiIrYV0pOklzLmhhc093blByb3BlcnR5KHMpJiZhIT1udWxsJiZzPT09Im9uU2Nyb2xsIiYmd2UoInNjcm9sbCIscil9c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOlBhKHIpLEltKHIsbywhMCk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6UGEociksam0ocik7YnJlYWs7Y2FzZSJzZWxlY3QiOmNhc2Uib3B0aW9uIjpicmVhaztkZWZhdWx0OnR5cGVvZiBvLm9uQ2xpY2s9PSJmdW5jdGlvbiImJihyLm9uY2xpY2s9RGwpfXI9aSx0LnVwZGF0ZVF1ZXVlPXIsciE9PW51bGwmJih0LmZsYWdzfD00KX1lbHNle3M9aS5ub2RlVHlwZT09PTk\/aTppLm93bmVyRG9jdW1lbnQsZT09PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiYmKGU9cngobikpLGU9PT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI\/bj09PSJzY3JpcHQiPyhlPXMuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5pbm5lckhUTUw9IjxzY3JpcHQ+PFwvc2NyaXB0PiIsZT1lLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCkpOnR5cGVvZiByLmlzPT0ic3RyaW5nIj9lPXMuY3JlYXRlRWxlbWVudChuLHtpczpyLmlzfSk6KGU9cy5jcmVhdGVFbGVtZW50KG4pLG49PT0ic2VsZWN0IiYmKHM9ZSxyLm11bHRpcGxlP3MubXVsdGlwbGU9ITA6ci5zaXplJiYocy5zaXplPXIuc2l6ZSkpKTplPXMuY3JlYXRlRWxlbWVudE5TKGUsbiksZVtFbl09dCxlW19zXT1yLFAxKGUsdCwhMSwhMSksdC5zdGF0ZU5vZGU9ZTtlOntzd2l0Y2gocz1FZChuLHIpLG4pe2Nhc2UiZGlhbG9nIjp3ZSgiY2FuY2VsIixlKSx3ZSgiY2xvc2UiLGUpLGk9cjticmVhaztjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmNhc2UiZW1iZWQiOndlKCJsb2FkIixlKSxpPXI7YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6Zm9yKGk9MDtpPGNzLmxlbmd0aDtpKyspd2UoY3NbaV0sZSk7aT1yO2JyZWFrO2Nhc2Uic291cmNlIjp3ZSgiZXJyb3IiLGUpLGk9cjticmVhaztjYXNlImltZyI6Y2FzZSJpbWFnZSI6Y2FzZSJsaW5rIjp3ZSgiZXJyb3IiLGUpLHdlKCJsb2FkIixlKSxpPXI7YnJlYWs7Y2FzZSJkZXRhaWxzIjp3ZSgidG9nZ2xlIixlKSxpPXI7YnJlYWs7Y2FzZSJpbnB1dCI6QW0oZSxyKSxpPXdkKGUsciksd2UoImludmFsaWQiLGUpO2JyZWFrO2Nhc2Uib3B0aW9uIjppPXI7YnJlYWs7Y2FzZSJzZWxlY3QiOmUuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFyLm11bHRpcGxlfSxpPUllKHt9LHIse3ZhbHVlOnZvaWQgMH0pLHdlKCJpbnZhbGlkIixlKTticmVhaztjYXNlInRleHRhcmVhIjpObShlLHIpLGk9U2QoZSxyKSx3ZSgiaW52YWxpZCIsZSk7YnJlYWs7ZGVmYXVsdDppPXJ9VGQobixpKSxhPWk7Zm9yKG8gaW4gYSlpZihhLmhhc093blByb3BlcnR5KG8pKXt2YXIgbD1hW29dO289PT0ic3R5bGUiP3N4KGUsbCk6bz09PSJkYW5nZXJvdXNseVNldElubmVySFRNTCI\/KGw9bD9sLl9faHRtbDp2b2lkIDAsbCE9bnVsbCYmaXgoZSxsKSk6bz09PSJjaGlsZHJlbiI\/dHlwZW9mIGw9PSJzdHJpbmciPyhuIT09InRleHRhcmVhInx8bCE9PSIiKSYmTnMoZSxsKTp0eXBlb2YgbD09Im51bWJlciImJk5zKGUsIiIrbCk6byE9PSJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciJiZvIT09InN1cHByZXNzSHlkcmF0aW9uV2FybmluZyImJm8hPT0iYXV0b0ZvY3VzIiYmKElzLmhhc093blByb3BlcnR5KG8pP2whPW51bGwmJm89PT0ib25TY3JvbGwiJiZ3ZSgic2Nyb2xsIixlKTpsIT1udWxsJiZoaChlLG8sbCxzKSl9c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOlBhKGUpLEltKGUsciwhMSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6UGEoZSksam0oZSk7YnJlYWs7Y2FzZSJvcHRpb24iOnIudmFsdWUhPW51bGwmJmUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrRnIoci52YWx1ZSkpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLm11bHRpcGxlPSEhci5tdWx0aXBsZSxvPXIudmFsdWUsbyE9bnVsbD9ybyhlLCEhci5tdWx0aXBsZSxvLCExKTpyLmRlZmF1bHRWYWx1ZSE9bnVsbCYmcm8oZSwhIXIubXVsdGlwbGUsci5kZWZhdWx0VmFsdWUsITApO2JyZWFrO2RlZmF1bHQ6dHlwZW9mIGkub25DbGljaz09ImZ1bmN0aW9uIiYmKGUub25jbGljaz1EbCl9c3dpdGNoKG4pe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6cj0hIXIuYXV0b0ZvY3VzO2JyZWFrIGU7Y2FzZSJpbWciOnI9ITA7YnJlYWsgZTtkZWZhdWx0OnI9ITF9fXImJih0LmZsYWdzfD00KX10LnJlZiE9PW51bGwmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mil9cmV0dXJuIEplKHQpLG51bGw7Y2FzZSA2OmlmKGUmJnQuc3RhdGVOb2RlIT1udWxsKUkxKGUsdCxlLm1lbW9pemVkUHJvcHMscik7ZWxzZXtpZih0eXBlb2YgciE9InN0cmluZyImJnQuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihfKDE2NikpO2lmKG49dWkoQnMuY3VycmVudCksdWkoTm4uY3VycmVudCksTGEodCkpe2lmKHI9dC5zdGF0ZU5vZGUsbj10Lm1lbW9pemVkUHJvcHMscltFbl09dCwobz1yLm5vZGVWYWx1ZSE9PW4pJiYoZT16dCxlIT09bnVsbCkpc3dpdGNoKGUudGFnKXtjYXNlIDM6TWEoci5ub2RlVmFsdWUsbiwoZS5tb2RlJjEpIT09MCk7YnJlYWs7Y2FzZSA1OmUubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmchPT0hMCYmTWEoci5ub2RlVmFsdWUsbiwoZS5tb2RlJjEpIT09MCl9byYmKHQuZmxhZ3N8PTQpfWVsc2Ugcj0obi5ub2RlVHlwZT09PTk\/bjpuLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKHIpLHJbRW5dPXQsdC5zdGF0ZU5vZGU9cn1yZXR1cm4gSmUodCksbnVsbDtjYXNlIDEzOmlmKGJlKEVlKSxyPXQubWVtb2l6ZWRTdGF0ZSxlPT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlIT09bnVsbCYmZS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQhPT1udWxsKXtpZihDZSYmTnQhPT1udWxsJiZ0Lm1vZGUmMSYmISh0LmZsYWdzJjEyOCkpS3goKSxDbygpLHQuZmxhZ3N8PTk4NTYwLG89ITE7ZWxzZSBpZihvPUxhKHQpLHIhPT1udWxsJiZyLmRlaHlkcmF0ZWQhPT1udWxsKXtpZihlPT09bnVsbCl7aWYoIW8pdGhyb3cgRXJyb3IoXygzMTgpKTtpZihvPXQubWVtb2l6ZWRTdGF0ZSxvPW8hPT1udWxsP28uZGVoeWRyYXRlZDpudWxsLCFvKXRocm93IEVycm9yKF8oMzE3KSk7b1tFbl09dH1lbHNlIENvKCksISh0LmZsYWdzJjEyOCkmJih0Lm1lbW9pemVkU3RhdGU9bnVsbCksdC5mbGFnc3w9NDtKZSh0KSxvPSExfWVsc2UgdW4hPT1udWxsJiYoYWYodW4pLHVuPW51bGwpLG89ITA7aWYoIW8pcmV0dXJuIHQuZmxhZ3MmNjU1MzY\/dDpudWxsfXJldHVybiB0LmZsYWdzJjEyOD8odC5sYW5lcz1uLHQpOihyPXIhPT1udWxsLHIhPT0oZSE9PW51bGwmJmUubWVtb2l6ZWRTdGF0ZSE9PW51bGwpJiZyJiYodC5jaGlsZC5mbGFnc3w9ODE5Mix0Lm1vZGUmMSYmKGU9PT1udWxsfHxFZS5jdXJyZW50JjE\/QmU9PT0wJiYoQmU9Myk6WWgoKSkpLHQudXBkYXRlUXVldWUhPT1udWxsJiYodC5mbGFnc3w9NCksSmUodCksbnVsbCk7Y2FzZSA0OnJldHVybiBFbygpLEpkKGUsdCksZT09PW51bGwmJk9zKHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLEplKHQpLG51bGw7Y2FzZSAxMDpyZXR1cm4gemgodC50eXBlLl9jb250ZXh0KSxKZSh0KSxudWxsO2Nhc2UgMTc6cmV0dXJuIHh0KHQudHlwZSkmJk1sKCksSmUodCksbnVsbDtjYXNlIDE5OmlmKGJlKEVlKSxvPXQubWVtb2l6ZWRTdGF0ZSxvPT09bnVsbClyZXR1cm4gSmUodCksbnVsbDtpZihyPSh0LmZsYWdzJjEyOCkhPT0wLHM9by5yZW5kZXJpbmcscz09PW51bGwpaWYocillcyhvLCExKTtlbHNle2lmKEJlIT09MHx8ZSE9PW51bGwmJmUuZmxhZ3MmMTI4KWZvcihlPXQuY2hpbGQ7ZSE9PW51bGw7KXtpZihzPVVsKGUpLHMhPT1udWxsKXtmb3IodC5mbGFnc3w9MTI4LGVzKG8sITEpLHI9cy51cGRhdGVRdWV1ZSxyIT09bnVsbCYmKHQudXBkYXRlUXVldWU9cix0LmZsYWdzfD00KSx0LnN1YnRyZWVGbGFncz0wLHI9bixuPXQuY2hpbGQ7biE9PW51bGw7KW89bixlPXIsby5mbGFncyY9MTQ2ODAwNjYscz1vLmFsdGVybmF0ZSxzPT09bnVsbD8oby5jaGlsZExhbmVzPTAsby5sYW5lcz1lLG8uY2hpbGQ9bnVsbCxvLnN1YnRyZWVGbGFncz0wLG8ubWVtb2l6ZWRQcm9wcz1udWxsLG8ubWVtb2l6ZWRTdGF0ZT1udWxsLG8udXBkYXRlUXVldWU9bnVsbCxvLmRlcGVuZGVuY2llcz1udWxsLG8uc3RhdGVOb2RlPW51bGwpOihvLmNoaWxkTGFuZXM9cy5jaGlsZExhbmVzLG8ubGFuZXM9cy5sYW5lcyxvLmNoaWxkPXMuY2hpbGQsby5zdWJ0cmVlRmxhZ3M9MCxvLmRlbGV0aW9ucz1udWxsLG8ubWVtb2l6ZWRQcm9wcz1zLm1lbW9pemVkUHJvcHMsby5tZW1vaXplZFN0YXRlPXMubWVtb2l6ZWRTdGF0ZSxvLnVwZGF0ZVF1ZXVlPXMudXBkYXRlUXVldWUsby50eXBlPXMudHlwZSxlPXMuZGVwZW5kZW5jaWVzLG8uZGVwZW5kZW5jaWVzPWU9PT1udWxsP251bGw6e2xhbmVzOmUubGFuZXMsZmlyc3RDb250ZXh0OmUuZmlyc3RDb250ZXh0fSksbj1uLnNpYmxpbmc7cmV0dXJuIGdlKEVlLEVlLmN1cnJlbnQmMXwyKSx0LmNoaWxkfWU9ZS5zaWJsaW5nfW8udGFpbCE9PW51bGwmJnplKCk+QW8mJih0LmZsYWdzfD0xMjgscj0hMCxlcyhvLCExKSx0LmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIXIpaWYoZT1VbChzKSxlIT09bnVsbCl7aWYodC5mbGFnc3w9MTI4LHI9ITAsbj1lLnVwZGF0ZVF1ZXVlLG4hPT1udWxsJiYodC51cGRhdGVRdWV1ZT1uLHQuZmxhZ3N8PTQpLGVzKG8sITApLG8udGFpbD09PW51bGwmJm8udGFpbE1vZGU9PT0iaGlkZGVuIiYmIXMuYWx0ZXJuYXRlJiYhQ2UpcmV0dXJuIEplKHQpLG51bGx9ZWxzZSAyKnplKCktby5yZW5kZXJpbmdTdGFydFRpbWU+QW8mJm4hPT0xMDczNzQxODI0JiYodC5mbGFnc3w9MTI4LHI9ITAsZXMobywhMSksdC5sYW5lcz00MTk0MzA0KTtvLmlzQmFja3dhcmRzPyhzLnNpYmxpbmc9dC5jaGlsZCx0LmNoaWxkPXMpOihuPW8ubGFzdCxuIT09bnVsbD9uLnNpYmxpbmc9czp0LmNoaWxkPXMsby5sYXN0PXMpfXJldHVybiBvLnRhaWwhPT1udWxsPyh0PW8udGFpbCxvLnJlbmRlcmluZz10LG8udGFpbD10LnNpYmxpbmcsby5yZW5kZXJpbmdTdGFydFRpbWU9emUoKSx0LnNpYmxpbmc9bnVsbCxuPUVlLmN1cnJlbnQsZ2UoRWUscj9uJjF8MjpuJjEpLHQpOihKZSh0KSxudWxsKTtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIEdoKCkscj10Lm1lbW9pemVkU3RhdGUhPT1udWxsLGUhPT1udWxsJiZlLm1lbW9pemVkU3RhdGUhPT1udWxsIT09ciYmKHQuZmxhZ3N8PTgxOTIpLHImJnQubW9kZSYxP0F0JjEwNzM3NDE4MjQmJihKZSh0KSx0LnN1YnRyZWVGbGFncyY2JiYodC5mbGFnc3w9ODE5MikpOkplKHQpLG51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtjYXNlIDI1OnJldHVybiBudWxsfXRocm93IEVycm9yKF8oMTU2LHQudGFnKSl9ZnVuY3Rpb24gakUoZSx0KXtzd2l0Y2goQWgodCksdC50YWcpe2Nhc2UgMTpyZXR1cm4geHQodC50eXBlKSYmTWwoKSxlPXQuZmxhZ3MsZSY2NTUzNj8odC5mbGFncz1lJi02NTUzN3wxMjgsdCk6bnVsbDtjYXNlIDM6cmV0dXJuIEVvKCksYmUodnQpLGJlKHR0KSxPaCgpLGU9dC5mbGFncyxlJjY1NTM2JiYhKGUmMTI4KT8odC5mbGFncz1lJi02NTUzN3wxMjgsdCk6bnVsbDtjYXNlIDU6cmV0dXJuIExoKHQpLG51bGw7Y2FzZSAxMzppZihiZShFZSksZT10Lm1lbW9pemVkU3RhdGUsZSE9PW51bGwmJmUuZGVoeWRyYXRlZCE9PW51bGwpe2lmKHQuYWx0ZXJuYXRlPT09bnVsbCl0aHJvdyBFcnJvcihfKDM0MCkpO0NvKCl9cmV0dXJuIGU9dC5mbGFncyxlJjY1NTM2Pyh0LmZsYWdzPWUmLTY1NTM3fDEyOCx0KTpudWxsO2Nhc2UgMTk6cmV0dXJuIGJlKEVlKSxudWxsO2Nhc2UgNDpyZXR1cm4gRW8oKSxudWxsO2Nhc2UgMTA6cmV0dXJuIHpoKHQudHlwZS5fY29udGV4dCksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIEdoKCksbnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBfYT0hMSxldD0hMSx6RT10eXBlb2YgV2Vha1NldD09ImZ1bmN0aW9uIj9XZWFrU2V0OlNldCxXPW51bGw7ZnVuY3Rpb24gUWkoZSx0KXt2YXIgbj1lLnJlZjtpZihuIT09bnVsbClpZih0eXBlb2Ygbj09ImZ1bmN0aW9uIil0cnl7bihudWxsKX1jYXRjaChyKXtqZShlLHQscil9ZWxzZSBuLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBaZChlLHQsbil7dHJ5e24oKX1jYXRjaChyKXtqZShlLHQscil9fXZhciB3Zz0hMTtmdW5jdGlvbiBSRShlLHQpe2lmKExkPWpsLGU9RHgoKSxFaChlKSl7aWYoInNlbGVjdGlvblN0YXJ0ImluIGUpdmFyIG49e3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtlbHNlIGU6e249KG49ZS5vd25lckRvY3VtZW50KSYmbi5kZWZhdWx0Vmlld3x8d2luZG93O3ZhciByPW4uZ2V0U2VsZWN0aW9uJiZuLmdldFNlbGVjdGlvbigpO2lmKHImJnIucmFuZ2VDb3VudCE9PTApe249ci5hbmNob3JOb2RlO3ZhciBpPXIuYW5jaG9yT2Zmc2V0LG89ci5mb2N1c05vZGU7cj1yLmZvY3VzT2Zmc2V0O3RyeXtuLm5vZGVUeXBlLG8ubm9kZVR5cGV9Y2F0Y2h7bj1udWxsO2JyZWFrIGV9dmFyIHM9MCxhPS0xLGw9LTEsdT0wLGM9MCxkPWUsaD1udWxsO3Q6Zm9yKDs7KXtmb3IodmFyIGY7ZCE9PW58fGkhPT0wJiZkLm5vZGVUeXBlIT09M3x8KGE9cytpKSxkIT09b3x8ciE9PTAmJmQubm9kZVR5cGUhPT0zfHwobD1zK3IpLGQubm9kZVR5cGU9PT0zJiYocys9ZC5ub2RlVmFsdWUubGVuZ3RoKSwoZj1kLmZpcnN0Q2hpbGQpIT09bnVsbDspaD1kLGQ9Zjtmb3IoOzspe2lmKGQ9PT1lKWJyZWFrIHQ7aWYoaD09PW4mJisrdT09PWkmJihhPXMpLGg9PT1vJiYrK2M9PT1yJiYobD1zKSwoZj1kLm5leHRTaWJsaW5nKSE9PW51bGwpYnJlYWs7ZD1oLGg9ZC5wYXJlbnROb2RlfWQ9Zn1uPWE9PT0tMXx8bD09PS0xP251bGw6e3N0YXJ0OmEsZW5kOmx9fWVsc2Ugbj1udWxsfW49bnx8e3N0YXJ0OjAsZW5kOjB9fWVsc2Ugbj1udWxsO2ZvcihPZD17Zm9jdXNlZEVsZW06ZSxzZWxlY3Rpb25SYW5nZTpufSxqbD0hMSxXPXQ7VyE9PW51bGw7KWlmKHQ9VyxlPXQuY2hpbGQsKHQuc3VidHJlZUZsYWdzJjEwMjgpIT09MCYmZSE9PW51bGwpZS5yZXR1cm49dCxXPWU7ZWxzZSBmb3IoO1chPT1udWxsOyl7dD1XO3RyeXt2YXIgeT10LmFsdGVybmF0ZTtpZih0LmZsYWdzJjEwMjQpc3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO2Nhc2UgMTppZih5IT09bnVsbCl7dmFyIG09eS5tZW1vaXplZFByb3BzLHc9eS5tZW1vaXplZFN0YXRlLHA9dC5zdGF0ZU5vZGUsdj1wLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHQuZWxlbWVudFR5cGU9PT10LnR5cGU\/bTpybih0LnR5cGUsbSksdyk7cC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT12fWJyZWFrO2Nhc2UgMzp2YXIgeD10LnN0YXRlTm9kZS5jb250YWluZXJJbmZvO3gubm9kZVR5cGU9PT0xP3gudGV4dENvbnRlbnQ9IiI6eC5ub2RlVHlwZT09PTkmJnguZG9jdW1lbnRFbGVtZW50JiZ4LnJlbW92ZUNoaWxkKHguZG9jdW1lbnRFbGVtZW50KTticmVhaztjYXNlIDU6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OmJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoXygxNjMpKX19Y2F0Y2goayl7amUodCx0LnJldHVybixrKX1pZihlPXQuc2libGluZyxlIT09bnVsbCl7ZS5yZXR1cm49dC5yZXR1cm4sVz1lO2JyZWFrfVc9dC5yZXR1cm59cmV0dXJuIHk9d2csd2c9ITEseX1mdW5jdGlvbiB2cyhlLHQsbil7dmFyIHI9dC51cGRhdGVRdWV1ZTtpZihyPXIhPT1udWxsP3IubGFzdEVmZmVjdDpudWxsLHIhPT1udWxsKXt2YXIgaT1yPXIubmV4dDtkb3tpZigoaS50YWcmZSk9PT1lKXt2YXIgbz1pLmRlc3Ryb3k7aS5kZXN0cm95PXZvaWQgMCxvIT09dm9pZCAwJiZaZCh0LG4sbyl9aT1pLm5leHR9d2hpbGUoaSE9PXIpfX1mdW5jdGlvbiBUdShlLHQpe2lmKHQ9dC51cGRhdGVRdWV1ZSx0PXQhPT1udWxsP3QubGFzdEVmZmVjdDpudWxsLHQhPT1udWxsKXt2YXIgbj10PXQubmV4dDtkb3tpZigobi50YWcmZSk9PT1lKXt2YXIgcj1uLmNyZWF0ZTtuLmRlc3Ryb3k9cigpfW49bi5uZXh0fXdoaWxlKG4hPT10KX19ZnVuY3Rpb24gZWYoZSl7dmFyIHQ9ZS5yZWY7aWYodCE9PW51bGwpe3ZhciBuPWUuc3RhdGVOb2RlO3N3aXRjaChlLnRhZyl7Y2FzZSA1OmU9bjticmVhaztkZWZhdWx0OmU9bn10eXBlb2YgdD09ImZ1bmN0aW9uIj90KGUpOnQuY3VycmVudD1lfX1mdW5jdGlvbiBOMShlKXt2YXIgdD1lLmFsdGVybmF0ZTt0IT09bnVsbCYmKGUuYWx0ZXJuYXRlPW51bGwsTjEodCkpLGUuY2hpbGQ9bnVsbCxlLmRlbGV0aW9ucz1udWxsLGUuc2libGluZz1udWxsLGUudGFnPT09NSYmKHQ9ZS5zdGF0ZU5vZGUsdCE9PW51bGwmJihkZWxldGUgdFtFbl0sZGVsZXRlIHRbX3NdLGRlbGV0ZSB0W1ZkXSxkZWxldGUgdFttRV0sZGVsZXRlIHRbZ0VdKSksZS5zdGF0ZU5vZGU9bnVsbCxlLnJldHVybj1udWxsLGUuZGVwZW5kZW5jaWVzPW51bGwsZS5tZW1vaXplZFByb3BzPW51bGwsZS5tZW1vaXplZFN0YXRlPW51bGwsZS5wZW5kaW5nUHJvcHM9bnVsbCxlLnN0YXRlTm9kZT1udWxsLGUudXBkYXRlUXVldWU9bnVsbH1mdW5jdGlvbiBqMShlKXtyZXR1cm4gZS50YWc9PT01fHxlLnRhZz09PTN8fGUudGFnPT09NH1mdW5jdGlvbiBiZyhlKXtlOmZvcig7Oyl7Zm9yKDtlLnNpYmxpbmc9PT1udWxsOyl7aWYoZS5yZXR1cm49PT1udWxsfHxqMShlLnJldHVybikpcmV0dXJuIG51bGw7ZT1lLnJldHVybn1mb3IoZS5zaWJsaW5nLnJldHVybj1lLnJldHVybixlPWUuc2libGluZztlLnRhZyE9PTUmJmUudGFnIT09NiYmZS50YWchPT0xODspe2lmKGUuZmxhZ3MmMnx8ZS5jaGlsZD09PW51bGx8fGUudGFnPT09NCljb250aW51ZSBlO2UuY2hpbGQucmV0dXJuPWUsZT1lLmNoaWxkfWlmKCEoZS5mbGFncyYyKSlyZXR1cm4gZS5zdGF0ZU5vZGV9fWZ1bmN0aW9uIHRmKGUsdCxuKXt2YXIgcj1lLnRhZztpZihyPT09NXx8cj09PTYpZT1lLnN0YXRlTm9kZSx0P24ubm9kZVR5cGU9PT04P24ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0KTpuLmluc2VydEJlZm9yZShlLHQpOihuLm5vZGVUeXBlPT09OD8odD1uLnBhcmVudE5vZGUsdC5pbnNlcnRCZWZvcmUoZSxuKSk6KHQ9bix0LmFwcGVuZENoaWxkKGUpKSxuPW4uX3JlYWN0Um9vdENvbnRhaW5lcixuIT1udWxsfHx0Lm9uY2xpY2shPT1udWxsfHwodC5vbmNsaWNrPURsKSk7ZWxzZSBpZihyIT09NCYmKGU9ZS5jaGlsZCxlIT09bnVsbCkpZm9yKHRmKGUsdCxuKSxlPWUuc2libGluZztlIT09bnVsbDspdGYoZSx0LG4pLGU9ZS5zaWJsaW5nfWZ1bmN0aW9uIG5mKGUsdCxuKXt2YXIgcj1lLnRhZztpZihyPT09NXx8cj09PTYpZT1lLnN0YXRlTm9kZSx0P24uaW5zZXJ0QmVmb3JlKGUsdCk6bi5hcHBlbmRDaGlsZChlKTtlbHNlIGlmKHIhPT00JiYoZT1lLmNoaWxkLGUhPT1udWxsKSlmb3IobmYoZSx0LG4pLGU9ZS5zaWJsaW5nO2UhPT1udWxsOyluZihlLHQsbiksZT1lLnNpYmxpbmd9dmFyIHFlPW51bGwsbG49ITE7ZnVuY3Rpb24gdXIoZSx0LG4pe2ZvcihuPW4uY2hpbGQ7biE9PW51bGw7KXoxKGUsdCxuKSxuPW4uc2libGluZ31mdW5jdGlvbiB6MShlLHQsbil7aWYoSW4mJnR5cGVvZiBJbi5vbkNvbW1pdEZpYmVyVW5tb3VudD09ImZ1bmN0aW9uIil0cnl7SW4ub25Db21taXRGaWJlclVubW91bnQoeXUsbil9Y2F0Y2h7fXN3aXRjaChuLnRhZyl7Y2FzZSA1OmV0fHxRaShuLHQpO2Nhc2UgNjp2YXIgcj1xZSxpPWxuO3FlPW51bGwsdXIoZSx0LG4pLHFlPXIsbG49aSxxZSE9PW51bGwmJihsbj8oZT1xZSxuPW4uc3RhdGVOb2RlLGUubm9kZVR5cGU9PT04P2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKTplLnJlbW92ZUNoaWxkKG4pKTpxZS5yZW1vdmVDaGlsZChuLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgMTg6cWUhPT1udWxsJiYobG4\/KGU9cWUsbj1uLnN0YXRlTm9kZSxlLm5vZGVUeXBlPT09OD9rYyhlLnBhcmVudE5vZGUsbik6ZS5ub2RlVHlwZT09PTEmJmtjKGUsbiksRHMoZSkpOmtjKHFlLG4uc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OnI9cWUsaT1sbixxZT1uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGxuPSEwLHVyKGUsdCxuKSxxZT1yLGxuPWk7YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKCFldCYmKHI9bi51cGRhdGVRdWV1ZSxyIT09bnVsbCYmKHI9ci5sYXN0RWZmZWN0LHIhPT1udWxsKSkpe2k9cj1yLm5leHQ7ZG97dmFyIG89aSxzPW8uZGVzdHJveTtvPW8udGFnLHMhPT12b2lkIDAmJihvJjJ8fG8mNCkmJlpkKG4sdCxzKSxpPWkubmV4dH13aGlsZShpIT09cil9dXIoZSx0LG4pO2JyZWFrO2Nhc2UgMTppZighZXQmJihRaShuLHQpLHI9bi5zdGF0ZU5vZGUsdHlwZW9mIHIuY29tcG9uZW50V2lsbFVubW91bnQ9PSJmdW5jdGlvbiIpKXRyeXtyLnByb3BzPW4ubWVtb2l6ZWRQcm9wcyxyLnN0YXRlPW4ubWVtb2l6ZWRTdGF0ZSxyLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goYSl7amUobix0LGEpfXVyKGUsdCxuKTticmVhaztjYXNlIDIxOnVyKGUsdCxuKTticmVhaztjYXNlIDIyOm4ubW9kZSYxPyhldD0ocj1ldCl8fG4ubWVtb2l6ZWRTdGF0ZSE9PW51bGwsdXIoZSx0LG4pLGV0PXIpOnVyKGUsdCxuKTticmVhaztkZWZhdWx0OnVyKGUsdCxuKX19ZnVuY3Rpb24ga2coZSl7dmFyIHQ9ZS51cGRhdGVRdWV1ZTtpZih0IT09bnVsbCl7ZS51cGRhdGVRdWV1ZT1udWxsO3ZhciBuPWUuc3RhdGVOb2RlO249PT1udWxsJiYobj1lLnN0YXRlTm9kZT1uZXcgekUpLHQuZm9yRWFjaChmdW5jdGlvbihyKXt2YXIgaT1VRS5iaW5kKG51bGwsZSxyKTtuLmhhcyhyKXx8KG4uYWRkKHIpLHIudGhlbihpLGkpKX0pfX1mdW5jdGlvbiBadChlLHQpe3ZhciBuPXQuZGVsZXRpb25zO2lmKG4hPT1udWxsKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgaT1uW3JdO3RyeXt2YXIgbz1lLHM9dCxhPXM7ZTpmb3IoO2EhPT1udWxsOyl7c3dpdGNoKGEudGFnKXtjYXNlIDU6cWU9YS5zdGF0ZU5vZGUsbG49ITE7YnJlYWsgZTtjYXNlIDM6cWU9YS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxsbj0hMDticmVhayBlO2Nhc2UgNDpxZT1hLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGxuPSEwO2JyZWFrIGV9YT1hLnJldHVybn1pZihxZT09PW51bGwpdGhyb3cgRXJyb3IoXygxNjApKTt6MShvLHMsaSkscWU9bnVsbCxsbj0hMTt2YXIgbD1pLmFsdGVybmF0ZTtsIT09bnVsbCYmKGwucmV0dXJuPW51bGwpLGkucmV0dXJuPW51bGx9Y2F0Y2godSl7amUoaSx0LHUpfX1pZih0LnN1YnRyZWVGbGFncyYxMjg1NClmb3IodD10LmNoaWxkO3QhPT1udWxsOylSMSh0LGUpLHQ9dC5zaWJsaW5nfWZ1bmN0aW9uIFIxKGUsdCl7dmFyIG49ZS5hbHRlcm5hdGUscj1lLmZsYWdzO3N3aXRjaChlLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKFp0KHQsZSkseG4oZSksciY0KXt0cnl7dnMoMyxlLGUucmV0dXJuKSxUdSgzLGUpfWNhdGNoKG0pe2plKGUsZS5yZXR1cm4sbSl9dHJ5e3ZzKDUsZSxlLnJldHVybil9Y2F0Y2gobSl7amUoZSxlLnJldHVybixtKX19YnJlYWs7Y2FzZSAxOlp0KHQsZSkseG4oZSksciY1MTImJm4hPT1udWxsJiZRaShuLG4ucmV0dXJuKTticmVhaztjYXNlIDU6aWYoWnQodCxlKSx4bihlKSxyJjUxMiYmbiE9PW51bGwmJlFpKG4sbi5yZXR1cm4pLGUuZmxhZ3MmMzIpe3ZhciBpPWUuc3RhdGVOb2RlO3RyeXtOcyhpLCIiKX1jYXRjaChtKXtqZShlLGUucmV0dXJuLG0pfX1pZihyJjQmJihpPWUuc3RhdGVOb2RlLGkhPW51bGwpKXt2YXIgbz1lLm1lbW9pemVkUHJvcHMscz1uIT09bnVsbD9uLm1lbW9pemVkUHJvcHM6byxhPWUudHlwZSxsPWUudXBkYXRlUXVldWU7aWYoZS51cGRhdGVRdWV1ZT1udWxsLGwhPT1udWxsKXRyeXthPT09ImlucHV0IiYmby50eXBlPT09InJhZGlvIiYmby5uYW1lIT1udWxsJiZ0eChpLG8pLEVkKGEscyk7dmFyIHU9RWQoYSxvKTtmb3Iocz0wO3M8bC5sZW5ndGg7cys9Mil7dmFyIGM9bFtzXSxkPWxbcysxXTtjPT09InN0eWxlIj9zeChpLGQpOmM9PT0iZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiP2l4KGksZCk6Yz09PSJjaGlsZHJlbiI\/TnMoaSxkKTpoaChpLGMsZCx1KX1zd2l0Y2goYSl7Y2FzZSJpbnB1dCI6YmQoaSxvKTticmVhaztjYXNlInRleHRhcmVhIjpueChpLG8pO2JyZWFrO2Nhc2Uic2VsZWN0Ijp2YXIgaD1pLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7aS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhby5tdWx0aXBsZTt2YXIgZj1vLnZhbHVlO2YhPW51bGw\/cm8oaSwhIW8ubXVsdGlwbGUsZiwhMSk6aCE9PSEhby5tdWx0aXBsZSYmKG8uZGVmYXVsdFZhbHVlIT1udWxsP3JvKGksISFvLm11bHRpcGxlLG8uZGVmYXVsdFZhbHVlLCEwKTpybyhpLCEhby5tdWx0aXBsZSxvLm11bHRpcGxlP1tdOiIiLCExKSl9aVtfc109b31jYXRjaChtKXtqZShlLGUucmV0dXJuLG0pfX1icmVhaztjYXNlIDY6aWYoWnQodCxlKSx4bihlKSxyJjQpe2lmKGUuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihfKDE2MikpO2k9ZS5zdGF0ZU5vZGUsbz1lLm1lbW9pemVkUHJvcHM7dHJ5e2kubm9kZVZhbHVlPW99Y2F0Y2gobSl7amUoZSxlLnJldHVybixtKX19YnJlYWs7Y2FzZSAzOmlmKFp0KHQsZSkseG4oZSksciY0JiZuIT09bnVsbCYmbi5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7RHModC5jb250YWluZXJJbmZvKX1jYXRjaChtKXtqZShlLGUucmV0dXJuLG0pfWJyZWFrO2Nhc2UgNDpadCh0LGUpLHhuKGUpO2JyZWFrO2Nhc2UgMTM6WnQodCxlKSx4bihlKSxpPWUuY2hpbGQsaS5mbGFncyY4MTkyJiYobz1pLm1lbW9pemVkU3RhdGUhPT1udWxsLGkuc3RhdGVOb2RlLmlzSGlkZGVuPW8sIW98fGkuYWx0ZXJuYXRlIT09bnVsbCYmaS5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZSE9PW51bGx8fChXaD16ZSgpKSksciY0JiZrZyhlKTticmVhaztjYXNlIDIyOmlmKGM9biE9PW51bGwmJm4ubWVtb2l6ZWRTdGF0ZSE9PW51bGwsZS5tb2RlJjE\/KGV0PSh1PWV0KXx8YyxadCh0LGUpLGV0PXUpOlp0KHQsZSkseG4oZSksciY4MTkyKXtpZih1PWUubWVtb2l6ZWRTdGF0ZSE9PW51bGwsKGUuc3RhdGVOb2RlLmlzSGlkZGVuPXUpJiYhYyYmZS5tb2RlJjEpZm9yKFc9ZSxjPWUuY2hpbGQ7YyE9PW51bGw7KXtmb3IoZD1XPWM7VyE9PW51bGw7KXtzd2l0Y2goaD1XLGY9aC5jaGlsZCxoLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OnZzKDQsaCxoLnJldHVybik7YnJlYWs7Y2FzZSAxOlFpKGgsaC5yZXR1cm4pO3ZhciB5PWguc3RhdGVOb2RlO2lmKHR5cGVvZiB5LmNvbXBvbmVudFdpbGxVbm1vdW50PT0iZnVuY3Rpb24iKXtyPWgsbj1oLnJldHVybjt0cnl7dD1yLHkucHJvcHM9dC5tZW1vaXplZFByb3BzLHkuc3RhdGU9dC5tZW1vaXplZFN0YXRlLHkuY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChtKXtqZShyLG4sbSl9fWJyZWFrO2Nhc2UgNTpRaShoLGgucmV0dXJuKTticmVhaztjYXNlIDIyOmlmKGgubWVtb2l6ZWRTdGF0ZSE9PW51bGwpe0NnKGQpO2NvbnRpbnVlfX1mIT09bnVsbD8oZi5yZXR1cm49aCxXPWYpOkNnKGQpfWM9Yy5zaWJsaW5nfWU6Zm9yKGM9bnVsbCxkPWU7Oyl7aWYoZC50YWc9PT01KXtpZihjPT09bnVsbCl7Yz1kO3RyeXtpPWQuc3RhdGVOb2RlLHU\/KG89aS5zdHlsZSx0eXBlb2Ygby5zZXRQcm9wZXJ0eT09ImZ1bmN0aW9uIj9vLnNldFByb3BlcnR5KCJkaXNwbGF5Iiwibm9uZSIsImltcG9ydGFudCIpOm8uZGlzcGxheT0ibm9uZSIpOihhPWQuc3RhdGVOb2RlLGw9ZC5tZW1vaXplZFByb3BzLnN0eWxlLHM9bCE9bnVsbCYmbC5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP2wuZGlzcGxheTpudWxsLGEuc3R5bGUuZGlzcGxheT1veCgiZGlzcGxheSIscykpfWNhdGNoKG0pe2plKGUsZS5yZXR1cm4sbSl9fX1lbHNlIGlmKGQudGFnPT09Nil7aWYoYz09PW51bGwpdHJ5e2Quc3RhdGVOb2RlLm5vZGVWYWx1ZT11PyIiOmQubWVtb2l6ZWRQcm9wc31jYXRjaChtKXtqZShlLGUucmV0dXJuLG0pfX1lbHNlIGlmKChkLnRhZyE9PTIyJiZkLnRhZyE9PTIzfHxkLm1lbW9pemVkU3RhdGU9PT1udWxsfHxkPT09ZSkmJmQuY2hpbGQhPT1udWxsKXtkLmNoaWxkLnJldHVybj1kLGQ9ZC5jaGlsZDtjb250aW51ZX1pZihkPT09ZSlicmVhayBlO2Zvcig7ZC5zaWJsaW5nPT09bnVsbDspe2lmKGQucmV0dXJuPT09bnVsbHx8ZC5yZXR1cm49PT1lKWJyZWFrIGU7Yz09PWQmJihjPW51bGwpLGQ9ZC5yZXR1cm59Yz09PWQmJihjPW51bGwpLGQuc2libGluZy5yZXR1cm49ZC5yZXR1cm4sZD1kLnNpYmxpbmd9fWJyZWFrO2Nhc2UgMTk6WnQodCxlKSx4bihlKSxyJjQmJmtnKGUpO2JyZWFrO2Nhc2UgMjE6YnJlYWs7ZGVmYXVsdDpadCh0LGUpLHhuKGUpfX1mdW5jdGlvbiB4bihlKXt2YXIgdD1lLmZsYWdzO2lmKHQmMil7dHJ5e2U6e2Zvcih2YXIgbj1lLnJldHVybjtuIT09bnVsbDspe2lmKGoxKG4pKXt2YXIgcj1uO2JyZWFrIGV9bj1uLnJldHVybn10aHJvdyBFcnJvcihfKDE2MCkpfXN3aXRjaChyLnRhZyl7Y2FzZSA1OnZhciBpPXIuc3RhdGVOb2RlO3IuZmxhZ3MmMzImJihOcyhpLCIiKSxyLmZsYWdzJj0tMzMpO3ZhciBvPWJnKGUpO25mKGUsbyxpKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBzPXIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sYT1iZyhlKTt0ZihlLGEscyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihfKDE2MSkpfX1jYXRjaChsKXtqZShlLGUucmV0dXJuLGwpfWUuZmxhZ3MmPS0zfXQmNDA5NiYmKGUuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBERShlLHQsbil7Vz1lLEQxKGUpfWZ1bmN0aW9uIEQxKGUsdCxuKXtmb3IodmFyIHI9KGUubW9kZSYxKSE9PTA7VyE9PW51bGw7KXt2YXIgaT1XLG89aS5jaGlsZDtpZihpLnRhZz09PTIyJiZyKXt2YXIgcz1pLm1lbW9pemVkU3RhdGUhPT1udWxsfHxfYTtpZighcyl7dmFyIGE9aS5hbHRlcm5hdGUsbD1hIT09bnVsbCYmYS5tZW1vaXplZFN0YXRlIT09bnVsbHx8ZXQ7YT1fYTt2YXIgdT1ldDtpZihfYT1zLChldD1sKSYmIXUpZm9yKFc9aTtXIT09bnVsbDspcz1XLGw9cy5jaGlsZCxzLnRhZz09PTIyJiZzLm1lbW9pemVkU3RhdGUhPT1udWxsP1RnKGkpOmwhPT1udWxsPyhsLnJldHVybj1zLFc9bCk6VGcoaSk7Zm9yKDtvIT09bnVsbDspVz1vLEQxKG8pLG89by5zaWJsaW5nO1c9aSxfYT1hLGV0PXV9U2coZSl9ZWxzZSBpLnN1YnRyZWVGbGFncyY4NzcyJiZvIT09bnVsbD8oby5yZXR1cm49aSxXPW8pOlNnKGUpfX1mdW5jdGlvbiBTZyhlKXtmb3IoO1chPT1udWxsOyl7dmFyIHQ9VztpZih0LmZsYWdzJjg3NzIpe3ZhciBuPXQuYWx0ZXJuYXRlO3RyeXtpZih0LmZsYWdzJjg3NzIpc3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmV0fHxUdSg1LHQpO2JyZWFrO2Nhc2UgMTp2YXIgcj10LnN0YXRlTm9kZTtpZih0LmZsYWdzJjQmJiFldClpZihuPT09bnVsbClyLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgaT10LmVsZW1lbnRUeXBlPT09dC50eXBlP24ubWVtb2l6ZWRQcm9wczpybih0LnR5cGUsbi5tZW1vaXplZFByb3BzKTtyLmNvbXBvbmVudERpZFVwZGF0ZShpLG4ubWVtb2l6ZWRTdGF0ZSxyLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX12YXIgbz10LnVwZGF0ZVF1ZXVlO28hPT1udWxsJiZhZyh0LG8scik7YnJlYWs7Y2FzZSAzOnZhciBzPXQudXBkYXRlUXVldWU7aWYocyE9PW51bGwpe2lmKG49bnVsbCx0LmNoaWxkIT09bnVsbClzd2l0Y2godC5jaGlsZC50YWcpe2Nhc2UgNTpuPXQuY2hpbGQuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMTpuPXQuY2hpbGQuc3RhdGVOb2RlfWFnKHQscyxuKX1icmVhaztjYXNlIDU6dmFyIGE9dC5zdGF0ZU5vZGU7aWYobj09PW51bGwmJnQuZmxhZ3MmNCl7bj1hO3ZhciBsPXQubWVtb2l6ZWRQcm9wcztzd2l0Y2godC50eXBlKXtjYXNlImJ1dHRvbiI6Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOmwuYXV0b0ZvY3VzJiZuLmZvY3VzKCk7YnJlYWs7Y2FzZSJpbWciOmwuc3JjJiYobi5zcmM9bC5zcmMpfX1icmVhaztjYXNlIDY6YnJlYWs7Y2FzZSA0OmJyZWFrO2Nhc2UgMTI6YnJlYWs7Y2FzZSAxMzppZih0Lm1lbW9pemVkU3RhdGU9PT1udWxsKXt2YXIgdT10LmFsdGVybmF0ZTtpZih1IT09bnVsbCl7dmFyIGM9dS5tZW1vaXplZFN0YXRlO2lmKGMhPT1udWxsKXt2YXIgZD1jLmRlaHlkcmF0ZWQ7ZCE9PW51bGwmJkRzKGQpfX19YnJlYWs7Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDIzOmNhc2UgMjU6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihfKDE2MykpfWV0fHx0LmZsYWdzJjUxMiYmZWYodCl9Y2F0Y2goaCl7amUodCx0LnJldHVybixoKX19aWYodD09PWUpe1c9bnVsbDticmVha31pZihuPXQuc2libGluZyxuIT09bnVsbCl7bi5yZXR1cm49dC5yZXR1cm4sVz1uO2JyZWFrfVc9dC5yZXR1cm59fWZ1bmN0aW9uIENnKGUpe2Zvcig7VyE9PW51bGw7KXt2YXIgdD1XO2lmKHQ9PT1lKXtXPW51bGw7YnJlYWt9dmFyIG49dC5zaWJsaW5nO2lmKG4hPT1udWxsKXtuLnJldHVybj10LnJldHVybixXPW47YnJlYWt9Vz10LnJldHVybn19ZnVuY3Rpb24gVGcoZSl7Zm9yKDtXIT09bnVsbDspe3ZhciB0PVc7dHJ5e3N3aXRjaCh0LnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTp2YXIgbj10LnJldHVybjt0cnl7VHUoNCx0KX1jYXRjaChsKXtqZSh0LG4sbCl9YnJlYWs7Y2FzZSAxOnZhciByPXQuc3RhdGVOb2RlO2lmKHR5cGVvZiByLmNvbXBvbmVudERpZE1vdW50PT0iZnVuY3Rpb24iKXt2YXIgaT10LnJldHVybjt0cnl7ci5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGwpe2plKHQsaSxsKX19dmFyIG89dC5yZXR1cm47dHJ5e2VmKHQpfWNhdGNoKGwpe2plKHQsbyxsKX1icmVhaztjYXNlIDU6dmFyIHM9dC5yZXR1cm47dHJ5e2VmKHQpfWNhdGNoKGwpe2plKHQscyxsKX19fWNhdGNoKGwpe2plKHQsdC5yZXR1cm4sbCl9aWYodD09PWUpe1c9bnVsbDticmVha312YXIgYT10LnNpYmxpbmc7aWYoYSE9PW51bGwpe2EucmV0dXJuPXQucmV0dXJuLFc9YTticmVha31XPXQucmV0dXJufX12YXIgTUU9TWF0aC5jZWlsLHFsPW5yLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsSGg9bnIuUmVhY3RDdXJyZW50T3duZXIscXQ9bnIuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsbGU9MCxIZT1udWxsLE9lPW51bGwsR2U9MCxBdD0wLFhpPVdyKDApLEJlPTAscXM9bnVsbCxFaT0wLEV1PTAscWg9MCx4cz1udWxsLGd0PW51bGwsV2g9MCxBbz0xLzAsSG49bnVsbCxXbD0hMSxyZj1udWxsLERyPW51bGwsVmE9ITEsRXI9bnVsbCxLbD0wLHdzPTAsb2Y9bnVsbCxjbD0tMSxkbD0wO2Z1bmN0aW9uIGN0KCl7cmV0dXJuIGxlJjY\/emUoKTpjbCE9PS0xP2NsOmNsPXplKCl9ZnVuY3Rpb24gTXIoZSl7cmV0dXJuIGUubW9kZSYxP2xlJjImJkdlIT09MD9HZSYtR2U6dkUudHJhbnNpdGlvbiE9PW51bGw\/KGRsPT09MCYmKGRsPXZ4KCkpLGRsKTooZT1oZSxlIT09MHx8KGU9d2luZG93LmV2ZW50LGU9ZT09PXZvaWQgMD8xNjpUeChlLnR5cGUpKSxlKToxfWZ1bmN0aW9uIGRuKGUsdCxuLHIpe2lmKDUwPHdzKXRocm93IHdzPTAsb2Y9bnVsbCxFcnJvcihfKDE4NSkpO2xhKGUsbixyKSwoIShsZSYyKXx8ZSE9PUhlKSYmKGU9PT1IZSYmKCEobGUmMikmJihFdXw9biksQmU9PT00JiZ4cihlLEdlKSksd3QoZSxyKSxuPT09MSYmbGU9PT0wJiYhKHQubW9kZSYxKSYmKEFvPXplKCkrNTAwLGt1JiZLcigpKSl9ZnVuY3Rpb24gd3QoZSx0KXt2YXIgbj1lLmNhbGxiYWNrTm9kZTt2VChlLHQpO3ZhciByPU5sKGUsZT09PUhlP0dlOjApO2lmKHI9PT0wKW4hPT1udWxsJiZEbShuKSxlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wO2Vsc2UgaWYodD1yJi1yLGUuY2FsbGJhY2tQcmlvcml0eSE9PXQpe2lmKG4hPW51bGwmJkRtKG4pLHQ9PT0xKWUudGFnPT09MD95RShFZy5iaW5kKG51bGwsZSkpOkh4KEVnLmJpbmQobnVsbCxlKSksaEUoZnVuY3Rpb24oKXshKGxlJjYpJiZLcigpfSksbj1udWxsO2Vsc2V7c3dpdGNoKHh4KHIpKXtjYXNlIDE6bj12aDticmVhaztjYXNlIDQ6bj1neDticmVhaztjYXNlIDE2Om49SWw7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6bj15eDticmVhaztkZWZhdWx0Om49SWx9bj1VMShuLE0xLmJpbmQobnVsbCxlKSl9ZS5jYWxsYmFja1ByaW9yaXR5PXQsZS5jYWxsYmFja05vZGU9bn19ZnVuY3Rpb24gTTEoZSx0KXtpZihjbD0tMSxkbD0wLGxlJjYpdGhyb3cgRXJyb3IoXygzMjcpKTt2YXIgbj1lLmNhbGxiYWNrTm9kZTtpZihsbygpJiZlLmNhbGxiYWNrTm9kZSE9PW4pcmV0dXJuIG51bGw7dmFyIHI9TmwoZSxlPT09SGU\/R2U6MCk7aWYocj09PTApcmV0dXJuIG51bGw7aWYociYzMHx8ciZlLmV4cGlyZWRMYW5lc3x8dCl0PUdsKGUscik7ZWxzZXt0PXI7dmFyIGk9bGU7bGV8PTI7dmFyIG89TzEoKTsoSGUhPT1lfHxHZSE9PXQpJiYoSG49bnVsbCxBbz16ZSgpKzUwMCx2aShlLHQpKTtkbyB0cnl7RkUoKTticmVha31jYXRjaChhKXtMMShlLGEpfXdoaWxlKCEwKTtqaCgpLHFsLmN1cnJlbnQ9byxsZT1pLE9lIT09bnVsbD90PTA6KEhlPW51bGwsR2U9MCx0PUJlKX1pZih0IT09MCl7aWYodD09PTImJihpPWpkKGUpLGkhPT0wJiYocj1pLHQ9c2YoZSxpKSkpLHQ9PT0xKXRocm93IG49cXMsdmkoZSwwKSx4cihlLHIpLHd0KGUsemUoKSksbjtpZih0PT09Nil4cihlLHIpO2Vsc2V7aWYoaT1lLmN1cnJlbnQuYWx0ZXJuYXRlLCEociYzMCkmJiFMRShpKSYmKHQ9R2woZSxyKSx0PT09MiYmKG89amQoZSksbyE9PTAmJihyPW8sdD1zZihlLG8pKSksdD09PTEpKXRocm93IG49cXMsdmkoZSwwKSx4cihlLHIpLHd0KGUsemUoKSksbjtzd2l0Y2goZS5maW5pc2hlZFdvcms9aSxlLmZpbmlzaGVkTGFuZXM9cix0KXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKF8oMzQ1KSk7Y2FzZSAyOnJpKGUsZ3QsSG4pO2JyZWFrO2Nhc2UgMzppZih4cihlLHIpLChyJjEzMDAyMzQyNCk9PT1yJiYodD1XaCs1MDAtemUoKSwxMDx0KSl7aWYoTmwoZSwwKSE9PTApYnJlYWs7aWYoaT1lLnN1c3BlbmRlZExhbmVzLChpJnIpIT09cil7Y3QoKSxlLnBpbmdlZExhbmVzfD1lLnN1c3BlbmRlZExhbmVzJmk7YnJlYWt9ZS50aW1lb3V0SGFuZGxlPV9kKHJpLmJpbmQobnVsbCxlLGd0LEhuKSx0KTticmVha31yaShlLGd0LEhuKTticmVhaztjYXNlIDQ6aWYoeHIoZSxyKSwociY0MTk0MjQwKT09PXIpYnJlYWs7Zm9yKHQ9ZS5ldmVudFRpbWVzLGk9LTE7MDxyOyl7dmFyIHM9MzEtY24ocik7bz0xPDxzLHM9dFtzXSxzPmkmJihpPXMpLHImPX5vfWlmKHI9aSxyPXplKCktcixyPSgxMjA+cj8xMjA6NDgwPnI\/NDgwOjEwODA+cj8xMDgwOjE5MjA+cj8xOTIwOjNlMz5yPzNlMzo0MzIwPnI\/NDMyMDoxOTYwKk1FKHIvMTk2MCkpLXIsMTA8cil7ZS50aW1lb3V0SGFuZGxlPV9kKHJpLmJpbmQobnVsbCxlLGd0LEhuKSxyKTticmVha31yaShlLGd0LEhuKTticmVhaztjYXNlIDU6cmkoZSxndCxIbik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihfKDMyOSkpfX19cmV0dXJuIHd0KGUsemUoKSksZS5jYWxsYmFja05vZGU9PT1uP00xLmJpbmQobnVsbCxlKTpudWxsfWZ1bmN0aW9uIHNmKGUsdCl7dmFyIG49eHM7cmV0dXJuIGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmKHZpKGUsdCkuZmxhZ3N8PTI1NiksZT1HbChlLHQpLGUhPT0yJiYodD1ndCxndD1uLHQhPT1udWxsJiZhZih0KSksZX1mdW5jdGlvbiBhZihlKXtndD09PW51bGw\/Z3Q9ZTpndC5wdXNoLmFwcGx5KGd0LGUpfWZ1bmN0aW9uIExFKGUpe2Zvcih2YXIgdD1lOzspe2lmKHQuZmxhZ3MmMTYzODQpe3ZhciBuPXQudXBkYXRlUXVldWU7aWYobiE9PW51bGwmJihuPW4uc3RvcmVzLG4hPT1udWxsKSlmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGk9bltyXSxvPWkuZ2V0U25hcHNob3Q7aT1pLnZhbHVlO3RyeXtpZighaG4obygpLGkpKXJldHVybiExfWNhdGNoe3JldHVybiExfX19aWYobj10LmNoaWxkLHQuc3VidHJlZUZsYWdzJjE2Mzg0JiZuIT09bnVsbCluLnJldHVybj10LHQ9bjtlbHNle2lmKHQ9PT1lKWJyZWFrO2Zvcig7dC5zaWJsaW5nPT09bnVsbDspe2lmKHQucmV0dXJuPT09bnVsbHx8dC5yZXR1cm49PT1lKXJldHVybiEwO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ319cmV0dXJuITB9ZnVuY3Rpb24geHIoZSx0KXtmb3IodCY9fnFoLHQmPX5FdSxlLnN1c3BlbmRlZExhbmVzfD10LGUucGluZ2VkTGFuZXMmPX50LGU9ZS5leHBpcmF0aW9uVGltZXM7MDx0Oyl7dmFyIG49MzEtY24odCkscj0xPDxuO2Vbbl09LTEsdCY9fnJ9fWZ1bmN0aW9uIEVnKGUpe2lmKGxlJjYpdGhyb3cgRXJyb3IoXygzMjcpKTtsbygpO3ZhciB0PU5sKGUsMCk7aWYoISh0JjEpKXJldHVybiB3dChlLHplKCkpLG51bGw7dmFyIG49R2woZSx0KTtpZihlLnRhZyE9PTAmJm49PT0yKXt2YXIgcj1qZChlKTtyIT09MCYmKHQ9cixuPXNmKGUscikpfWlmKG49PT0xKXRocm93IG49cXMsdmkoZSwwKSx4cihlLHQpLHd0KGUsemUoKSksbjtpZihuPT09Nil0aHJvdyBFcnJvcihfKDM0NSkpO3JldHVybiBlLmZpbmlzaGVkV29yaz1lLmN1cnJlbnQuYWx0ZXJuYXRlLGUuZmluaXNoZWRMYW5lcz10LHJpKGUsZ3QsSG4pLHd0KGUsemUoKSksbnVsbH1mdW5jdGlvbiBLaChlLHQpe3ZhciBuPWxlO2xlfD0xO3RyeXtyZXR1cm4gZSh0KX1maW5hbGx5e2xlPW4sbGU9PT0wJiYoQW89emUoKSs1MDAsa3UmJktyKCkpfX1mdW5jdGlvbiBQaShlKXtFciE9PW51bGwmJkVyLnRhZz09PTAmJiEobGUmNikmJmxvKCk7dmFyIHQ9bGU7bGV8PTE7dmFyIG49cXQudHJhbnNpdGlvbixyPWhlO3RyeXtpZihxdC50cmFuc2l0aW9uPW51bGwsaGU9MSxlKXJldHVybiBlKCl9ZmluYWxseXtoZT1yLHF0LnRyYW5zaXRpb249bixsZT10LCEobGUmNikmJktyKCl9fWZ1bmN0aW9uIEdoKCl7QXQ9WGkuY3VycmVudCxiZShYaSl9ZnVuY3Rpb24gdmkoZSx0KXtlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRMYW5lcz0wO3ZhciBuPWUudGltZW91dEhhbmRsZTtpZihuIT09LTEmJihlLnRpbWVvdXRIYW5kbGU9LTEsZkUobikpLE9lIT09bnVsbClmb3Iobj1PZS5yZXR1cm47biE9PW51bGw7KXt2YXIgcj1uO3N3aXRjaChBaChyKSxyLnRhZyl7Y2FzZSAxOnI9ci50eXBlLmNoaWxkQ29udGV4dFR5cGVzLHIhPW51bGwmJk1sKCk7YnJlYWs7Y2FzZSAzOkVvKCksYmUodnQpLGJlKHR0KSxPaCgpO2JyZWFrO2Nhc2UgNTpMaChyKTticmVhaztjYXNlIDQ6RW8oKTticmVhaztjYXNlIDEzOmJlKEVlKTticmVhaztjYXNlIDE5OmJlKEVlKTticmVhaztjYXNlIDEwOnpoKHIudHlwZS5fY29udGV4dCk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOkdoKCl9bj1uLnJldHVybn1pZihIZT1lLE9lPWU9THIoZS5jdXJyZW50LG51bGwpLEdlPUF0PXQsQmU9MCxxcz1udWxsLHFoPUV1PUVpPTAsZ3Q9eHM9bnVsbCxsaSE9PW51bGwpe2Zvcih0PTA7dDxsaS5sZW5ndGg7dCsrKWlmKG49bGlbdF0scj1uLmludGVybGVhdmVkLHIhPT1udWxsKXtuLmludGVybGVhdmVkPW51bGw7dmFyIGk9ci5uZXh0LG89bi5wZW5kaW5nO2lmKG8hPT1udWxsKXt2YXIgcz1vLm5leHQ7by5uZXh0PWksci5uZXh0PXN9bi5wZW5kaW5nPXJ9bGk9bnVsbH1yZXR1cm4gZX1mdW5jdGlvbiBMMShlLHQpe2Rve3ZhciBuPU9lO3RyeXtpZihqaCgpLGFsLmN1cnJlbnQ9SGwsJGwpe2Zvcih2YXIgcj1BZS5tZW1vaXplZFN0YXRlO3IhPT1udWxsOyl7dmFyIGk9ci5xdWV1ZTtpIT09bnVsbCYmKGkucGVuZGluZz1udWxsKSxyPXIubmV4dH0kbD0hMX1pZihUaT0wLCRlPVZlPUFlPW51bGwseXM9ITEsVXM9MCxIaC5jdXJyZW50PW51bGwsbj09PW51bGx8fG4ucmV0dXJuPT09bnVsbCl7QmU9MSxxcz10LE9lPW51bGw7YnJlYWt9ZTp7dmFyIG89ZSxzPW4ucmV0dXJuLGE9bixsPXQ7aWYodD1HZSxhLmZsYWdzfD0zMjc2OCxsIT09bnVsbCYmdHlwZW9mIGw9PSJvYmplY3QiJiZ0eXBlb2YgbC50aGVuPT0iZnVuY3Rpb24iKXt2YXIgdT1sLGM9YSxkPWMudGFnO2lmKCEoYy5tb2RlJjEpJiYoZD09PTB8fGQ9PT0xMXx8ZD09PTE1KSl7dmFyIGg9Yy5hbHRlcm5hdGU7aD8oYy51cGRhdGVRdWV1ZT1oLnVwZGF0ZVF1ZXVlLGMubWVtb2l6ZWRTdGF0ZT1oLm1lbW9pemVkU3RhdGUsYy5sYW5lcz1oLmxhbmVzKTooYy51cGRhdGVRdWV1ZT1udWxsLGMubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgZj1oZyhzKTtpZihmIT09bnVsbCl7Zi5mbGFncyY9LTI1NyxwZyhmLHMsYSxvLHQpLGYubW9kZSYxJiZmZyhvLHUsdCksdD1mLGw9dTt2YXIgeT10LnVwZGF0ZVF1ZXVlO2lmKHk9PT1udWxsKXt2YXIgbT1uZXcgU2V0O20uYWRkKGwpLHQudXBkYXRlUXVldWU9bX1lbHNlIHkuYWRkKGwpO2JyZWFrIGV9ZWxzZXtpZighKHQmMSkpe2ZnKG8sdSx0KSxZaCgpO2JyZWFrIGV9bD1FcnJvcihfKDQyNikpfX1lbHNlIGlmKENlJiZhLm1vZGUmMSl7dmFyIHc9aGcocyk7aWYodyE9PW51bGwpeyEody5mbGFncyY2NTUzNikmJih3LmZsYWdzfD0yNTYpLHBnKHcscyxhLG8sdCksSWgoUG8obCxhKSk7YnJlYWsgZX19bz1sPVBvKGwsYSksQmUhPT00JiYoQmU9MikseHM9PT1udWxsP3hzPVtvXTp4cy5wdXNoKG8pLG89cztkb3tzd2l0Y2goby50YWcpe2Nhc2UgMzpvLmZsYWdzfD02NTUzNix0Jj0tdCxvLmxhbmVzfD10O3ZhciBwPXgxKG8sbCx0KTtzZyhvLHApO2JyZWFrIGU7Y2FzZSAxOmE9bDt2YXIgdj1vLnR5cGUseD1vLnN0YXRlTm9kZTtpZighKG8uZmxhZ3MmMTI4KSYmKHR5cGVvZiB2LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj09ImZ1bmN0aW9uInx8eCE9PW51bGwmJnR5cGVvZiB4LmNvbXBvbmVudERpZENhdGNoPT0iZnVuY3Rpb24iJiYoRHI9PT1udWxsfHwhRHIuaGFzKHgpKSkpe28uZmxhZ3N8PTY1NTM2LHQmPS10LG8ubGFuZXN8PXQ7dmFyIGs9dzEobyxhLHQpO3NnKG8sayk7YnJlYWsgZX19bz1vLnJldHVybn13aGlsZShvIT09bnVsbCl9XzEobil9Y2F0Y2goVCl7dD1ULE9lPT09biYmbiE9PW51bGwmJihPZT1uPW4ucmV0dXJuKTtjb250aW51ZX1icmVha313aGlsZSghMCl9ZnVuY3Rpb24gTzEoKXt2YXIgZT1xbC5jdXJyZW50O3JldHVybiBxbC5jdXJyZW50PUhsLGU9PT1udWxsP0hsOmV9ZnVuY3Rpb24gWWgoKXsoQmU9PT0wfHxCZT09PTN8fEJlPT09MikmJihCZT00KSxIZT09PW51bGx8fCEoRWkmMjY4NDM1NDU1KSYmIShFdSYyNjg0MzU0NTUpfHx4cihIZSxHZSl9ZnVuY3Rpb24gR2woZSx0KXt2YXIgbj1sZTtsZXw9Mjt2YXIgcj1PMSgpOyhIZSE9PWV8fEdlIT09dCkmJihIbj1udWxsLHZpKGUsdCkpO2RvIHRyeXtPRSgpO2JyZWFrfWNhdGNoKGkpe0wxKGUsaSl9d2hpbGUoITApO2lmKGpoKCksbGU9bixxbC5jdXJyZW50PXIsT2UhPT1udWxsKXRocm93IEVycm9yKF8oMjYxKSk7cmV0dXJuIEhlPW51bGwsR2U9MCxCZX1mdW5jdGlvbiBPRSgpe2Zvcig7T2UhPT1udWxsOylGMShPZSl9ZnVuY3Rpb24gRkUoKXtmb3IoO09lIT09bnVsbCYmIXVUKCk7KUYxKE9lKX1mdW5jdGlvbiBGMShlKXt2YXIgdD1CMShlLmFsdGVybmF0ZSxlLEF0KTtlLm1lbW9pemVkUHJvcHM9ZS5wZW5kaW5nUHJvcHMsdD09PW51bGw\/XzEoZSk6T2U9dCxIaC5jdXJyZW50PW51bGx9ZnVuY3Rpb24gXzEoZSl7dmFyIHQ9ZTtkb3t2YXIgbj10LmFsdGVybmF0ZTtpZihlPXQucmV0dXJuLHQuZmxhZ3MmMzI3Njgpe2lmKG49akUobix0KSxuIT09bnVsbCl7bi5mbGFncyY9MzI3NjcsT2U9bjtyZXR1cm59aWYoZSE9PW51bGwpZS5mbGFnc3w9MzI3NjgsZS5zdWJ0cmVlRmxhZ3M9MCxlLmRlbGV0aW9ucz1udWxsO2Vsc2V7QmU9NixPZT1udWxsO3JldHVybn19ZWxzZSBpZihuPU5FKG4sdCxBdCksbiE9PW51bGwpe09lPW47cmV0dXJufWlmKHQ9dC5zaWJsaW5nLHQhPT1udWxsKXtPZT10O3JldHVybn1PZT10PWV9d2hpbGUodCE9PW51bGwpO0JlPT09MCYmKEJlPTUpfWZ1bmN0aW9uIHJpKGUsdCxuKXt2YXIgcj1oZSxpPXF0LnRyYW5zaXRpb247dHJ5e3F0LnRyYW5zaXRpb249bnVsbCxoZT0xLF9FKGUsdCxuLHIpfWZpbmFsbHl7cXQudHJhbnNpdGlvbj1pLGhlPXJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gX0UoZSx0LG4scil7ZG8gbG8oKTt3aGlsZShFciE9PW51bGwpO2lmKGxlJjYpdGhyb3cgRXJyb3IoXygzMjcpKTtuPWUuZmluaXNoZWRXb3JrO3ZhciBpPWUuZmluaXNoZWRMYW5lcztpZihuPT09bnVsbClyZXR1cm4gbnVsbDtpZihlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRMYW5lcz0wLG49PT1lLmN1cnJlbnQpdGhyb3cgRXJyb3IoXygxNzcpKTtlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBvPW4ubGFuZXN8bi5jaGlsZExhbmVzO2lmKHhUKGUsbyksZT09PUhlJiYoT2U9SGU9bnVsbCxHZT0wKSwhKG4uc3VidHJlZUZsYWdzJjIwNjQpJiYhKG4uZmxhZ3MmMjA2NCl8fFZhfHwoVmE9ITAsVTEoSWwsZnVuY3Rpb24oKXtyZXR1cm4gbG8oKSxudWxsfSkpLG89KG4uZmxhZ3MmMTU5OTApIT09MCxuLnN1YnRyZWVGbGFncyYxNTk5MHx8byl7bz1xdC50cmFuc2l0aW9uLHF0LnRyYW5zaXRpb249bnVsbDt2YXIgcz1oZTtoZT0xO3ZhciBhPWxlO2xlfD00LEhoLmN1cnJlbnQ9bnVsbCxSRShlLG4pLFIxKG4sZSksb0UoT2QpLGpsPSEhTGQsT2Q9TGQ9bnVsbCxlLmN1cnJlbnQ9bixERShuKSxjVCgpLGxlPWEsaGU9cyxxdC50cmFuc2l0aW9uPW99ZWxzZSBlLmN1cnJlbnQ9bjtpZihWYSYmKFZhPSExLEVyPWUsS2w9aSksbz1lLnBlbmRpbmdMYW5lcyxvPT09MCYmKERyPW51bGwpLGhUKG4uc3RhdGVOb2RlKSx3dChlLHplKCkpLHQhPT1udWxsKWZvcihyPWUub25SZWNvdmVyYWJsZUVycm9yLG49MDtuPHQubGVuZ3RoO24rKylpPXRbbl0scihpLnZhbHVlLHtjb21wb25lbnRTdGFjazppLnN0YWNrLGRpZ2VzdDppLmRpZ2VzdH0pO2lmKFdsKXRocm93IFdsPSExLGU9cmYscmY9bnVsbCxlO3JldHVybiBLbCYxJiZlLnRhZyE9PTAmJmxvKCksbz1lLnBlbmRpbmdMYW5lcyxvJjE\/ZT09PW9mP3dzKys6KHdzPTAsb2Y9ZSk6d3M9MCxLcigpLG51bGx9ZnVuY3Rpb24gbG8oKXtpZihFciE9PW51bGwpe3ZhciBlPXh4KEtsKSx0PXF0LnRyYW5zaXRpb24sbj1oZTt0cnl7aWYocXQudHJhbnNpdGlvbj1udWxsLGhlPTE2PmU\/MTY6ZSxFcj09PW51bGwpdmFyIHI9ITE7ZWxzZXtpZihlPUVyLEVyPW51bGwsS2w9MCxsZSY2KXRocm93IEVycm9yKF8oMzMxKSk7dmFyIGk9bGU7Zm9yKGxlfD00LFc9ZS5jdXJyZW50O1chPT1udWxsOyl7dmFyIG89VyxzPW8uY2hpbGQ7aWYoVy5mbGFncyYxNil7dmFyIGE9by5kZWxldGlvbnM7aWYoYSE9PW51bGwpe2Zvcih2YXIgbD0wO2w8YS5sZW5ndGg7bCsrKXt2YXIgdT1hW2xdO2ZvcihXPXU7VyE9PW51bGw7KXt2YXIgYz1XO3N3aXRjaChjLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTp2cyg4LGMsbyl9dmFyIGQ9Yy5jaGlsZDtpZihkIT09bnVsbClkLnJldHVybj1jLFc9ZDtlbHNlIGZvcig7VyE9PW51bGw7KXtjPVc7dmFyIGg9Yy5zaWJsaW5nLGY9Yy5yZXR1cm47aWYoTjEoYyksYz09PXUpe1c9bnVsbDticmVha31pZihoIT09bnVsbCl7aC5yZXR1cm49ZixXPWg7YnJlYWt9Vz1mfX19dmFyIHk9by5hbHRlcm5hdGU7aWYoeSE9PW51bGwpe3ZhciBtPXkuY2hpbGQ7aWYobSE9PW51bGwpe3kuY2hpbGQ9bnVsbDtkb3t2YXIgdz1tLnNpYmxpbmc7bS5zaWJsaW5nPW51bGwsbT13fXdoaWxlKG0hPT1udWxsKX19Vz1vfX1pZihvLnN1YnRyZWVGbGFncyYyMDY0JiZzIT09bnVsbClzLnJldHVybj1vLFc9cztlbHNlIGU6Zm9yKDtXIT09bnVsbDspe2lmKG89VyxvLmZsYWdzJjIwNDgpc3dpdGNoKG8udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnZzKDksbyxvLnJldHVybil9dmFyIHA9by5zaWJsaW5nO2lmKHAhPT1udWxsKXtwLnJldHVybj1vLnJldHVybixXPXA7YnJlYWsgZX1XPW8ucmV0dXJufX12YXIgdj1lLmN1cnJlbnQ7Zm9yKFc9djtXIT09bnVsbDspe3M9Vzt2YXIgeD1zLmNoaWxkO2lmKHMuc3VidHJlZUZsYWdzJjIwNjQmJnghPT1udWxsKXgucmV0dXJuPXMsVz14O2Vsc2UgZTpmb3Iocz12O1chPT1udWxsOyl7aWYoYT1XLGEuZmxhZ3MmMjA0OCl0cnl7c3dpdGNoKGEudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlR1KDksYSl9fWNhdGNoKFQpe2plKGEsYS5yZXR1cm4sVCl9aWYoYT09PXMpe1c9bnVsbDticmVhayBlfXZhciBrPWEuc2libGluZztpZihrIT09bnVsbCl7ay5yZXR1cm49YS5yZXR1cm4sVz1rO2JyZWFrIGV9Vz1hLnJldHVybn19aWYobGU9aSxLcigpLEluJiZ0eXBlb2YgSW4ub25Qb3N0Q29tbWl0RmliZXJSb290PT0iZnVuY3Rpb24iKXRyeXtJbi5vblBvc3RDb21taXRGaWJlclJvb3QoeXUsZSl9Y2F0Y2h7fXI9ITB9cmV0dXJuIHJ9ZmluYWxseXtoZT1uLHF0LnRyYW5zaXRpb249dH19cmV0dXJuITF9ZnVuY3Rpb24gUGcoZSx0LG4pe3Q9UG8obix0KSx0PXgxKGUsdCwxKSxlPVJyKGUsdCwxKSx0PWN0KCksZSE9PW51bGwmJihsYShlLDEsdCksd3QoZSx0KSl9ZnVuY3Rpb24gamUoZSx0LG4pe2lmKGUudGFnPT09MylQZyhlLGUsbik7ZWxzZSBmb3IoO3QhPT1udWxsOyl7aWYodC50YWc9PT0zKXtQZyh0LGUsbik7YnJlYWt9ZWxzZSBpZih0LnRhZz09PTEpe3ZhciByPXQuc3RhdGVOb2RlO2lmKHR5cGVvZiB0LnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPT0iZnVuY3Rpb24ifHx0eXBlb2Ygci5jb21wb25lbnREaWRDYXRjaD09ImZ1bmN0aW9uIiYmKERyPT09bnVsbHx8IURyLmhhcyhyKSkpe2U9UG8obixlKSxlPXcxKHQsZSwxKSx0PVJyKHQsZSwxKSxlPWN0KCksdCE9PW51bGwmJihsYSh0LDEsZSksd3QodCxlKSk7YnJlYWt9fXQ9dC5yZXR1cm59fWZ1bmN0aW9uIFZFKGUsdCxuKXt2YXIgcj1lLnBpbmdDYWNoZTtyIT09bnVsbCYmci5kZWxldGUodCksdD1jdCgpLGUucGluZ2VkTGFuZXN8PWUuc3VzcGVuZGVkTGFuZXMmbixIZT09PWUmJihHZSZuKT09PW4mJihCZT09PTR8fEJlPT09MyYmKEdlJjEzMDAyMzQyNCk9PT1HZSYmNTAwPnplKCktV2g\/dmkoZSwwKTpxaHw9biksd3QoZSx0KX1mdW5jdGlvbiBWMShlLHQpe3Q9PT0wJiYoZS5tb2RlJjE\/KHQ9TmEsTmE8PD0xLCEoTmEmMTMwMDIzNDI0KSYmKE5hPTQxOTQzMDQpKTp0PTEpO3ZhciBuPWN0KCk7ZT1KbihlLHQpLGUhPT1udWxsJiYobGEoZSx0LG4pLHd0KGUsbikpfWZ1bmN0aW9uIEJFKGUpe3ZhciB0PWUubWVtb2l6ZWRTdGF0ZSxuPTA7dCE9PW51bGwmJihuPXQucmV0cnlMYW5lKSxWMShlLG4pfWZ1bmN0aW9uIFVFKGUsdCl7dmFyIG49MDtzd2l0Y2goZS50YWcpe2Nhc2UgMTM6dmFyIHI9ZS5zdGF0ZU5vZGUsaT1lLm1lbW9pemVkU3RhdGU7aSE9PW51bGwmJihuPWkucmV0cnlMYW5lKTticmVhaztjYXNlIDE5OnI9ZS5zdGF0ZU5vZGU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihfKDMxNCkpfXIhPT1udWxsJiZyLmRlbGV0ZSh0KSxWMShlLG4pfXZhciBCMTtCMT1mdW5jdGlvbihlLHQsbil7aWYoZSE9PW51bGwpaWYoZS5tZW1vaXplZFByb3BzIT09dC5wZW5kaW5nUHJvcHN8fHZ0LmN1cnJlbnQpeXQ9ITA7ZWxzZXtpZighKGUubGFuZXMmbikmJiEodC5mbGFncyYxMjgpKXJldHVybiB5dD0hMSxJRShlLHQsbik7eXQ9ISEoZS5mbGFncyYxMzEwNzIpfWVsc2UgeXQ9ITEsQ2UmJnQuZmxhZ3MmMTA0ODU3NiYmcXgodCxGbCx0LmluZGV4KTtzd2l0Y2godC5sYW5lcz0wLHQudGFnKXtjYXNlIDI6dmFyIHI9dC50eXBlO3VsKGUsdCksZT10LnBlbmRpbmdQcm9wczt2YXIgaT1Tbyh0LHR0LmN1cnJlbnQpO2FvKHQsbiksaT1faChudWxsLHQscixlLGksbik7dmFyIG89VmgoKTtyZXR1cm4gdC5mbGFnc3w9MSx0eXBlb2YgaT09Im9iamVjdCImJmkhPT1udWxsJiZ0eXBlb2YgaS5yZW5kZXI9PSJmdW5jdGlvbiImJmkuJCR0eXBlb2Y9PT12b2lkIDA\/KHQudGFnPTEsdC5tZW1vaXplZFN0YXRlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsLHh0KHIpPyhvPSEwLExsKHQpKTpvPSExLHQubWVtb2l6ZWRTdGF0ZT1pLnN0YXRlIT09bnVsbCYmaS5zdGF0ZSE9PXZvaWQgMD9pLnN0YXRlOm51bGwsRGgodCksaS51cGRhdGVyPUN1LHQuc3RhdGVOb2RlPWksaS5fcmVhY3RJbnRlcm5hbHM9dCxXZCh0LHIsZSxuKSx0PVlkKG51bGwsdCxyLCEwLG8sbikpOih0LnRhZz0wLENlJiZvJiZQaCh0KSxzdChudWxsLHQsaSxuKSx0PXQuY2hpbGQpLHQ7Y2FzZSAxNjpyPXQuZWxlbWVudFR5cGU7ZTp7c3dpdGNoKHVsKGUsdCksZT10LnBlbmRpbmdQcm9wcyxpPXIuX2luaXQscj1pKHIuX3BheWxvYWQpLHQudHlwZT1yLGk9dC50YWc9SEUociksZT1ybihyLGUpLGkpe2Nhc2UgMDp0PUdkKG51bGwsdCxyLGUsbik7YnJlYWsgZTtjYXNlIDE6dD15ZyhudWxsLHQscixlLG4pO2JyZWFrIGU7Y2FzZSAxMTp0PW1nKG51bGwsdCxyLGUsbik7YnJlYWsgZTtjYXNlIDE0OnQ9Z2cobnVsbCx0LHIscm4oci50eXBlLGUpLG4pO2JyZWFrIGV9dGhyb3cgRXJyb3IoXygzMDYsciwiIikpfXJldHVybiB0O2Nhc2UgMDpyZXR1cm4gcj10LnR5cGUsaT10LnBlbmRpbmdQcm9wcyxpPXQuZWxlbWVudFR5cGU9PT1yP2k6cm4ocixpKSxHZChlLHQscixpLG4pO2Nhc2UgMTpyZXR1cm4gcj10LnR5cGUsaT10LnBlbmRpbmdQcm9wcyxpPXQuZWxlbWVudFR5cGU9PT1yP2k6cm4ocixpKSx5ZyhlLHQscixpLG4pO2Nhc2UgMzplOntpZihDMSh0KSxlPT09bnVsbCl0aHJvdyBFcnJvcihfKDM4NykpO3I9dC5wZW5kaW5nUHJvcHMsbz10Lm1lbW9pemVkU3RhdGUsaT1vLmVsZW1lbnQsWHgoZSx0KSxCbCh0LHIsbnVsbCxuKTt2YXIgcz10Lm1lbW9pemVkU3RhdGU7aWYocj1zLmVsZW1lbnQsby5pc0RlaHlkcmF0ZWQpaWYobz17ZWxlbWVudDpyLGlzRGVoeWRyYXRlZDohMSxjYWNoZTpzLmNhY2hlLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6cy5wZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzLHRyYW5zaXRpb25zOnMudHJhbnNpdGlvbnN9LHQudXBkYXRlUXVldWUuYmFzZVN0YXRlPW8sdC5tZW1vaXplZFN0YXRlPW8sdC5mbGFncyYyNTYpe2k9UG8oRXJyb3IoXyg0MjMpKSx0KSx0PXZnKGUsdCxyLG4saSk7YnJlYWsgZX1lbHNlIGlmKHIhPT1pKXtpPVBvKEVycm9yKF8oNDI0KSksdCksdD12ZyhlLHQscixuLGkpO2JyZWFrIGV9ZWxzZSBmb3IoTnQ9enIodC5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx6dD10LENlPSEwLHVuPW51bGwsbj1ZeCh0LG51bGwscixuKSx0LmNoaWxkPW47bjspbi5mbGFncz1uLmZsYWdzJi0zfDQwOTYsbj1uLnNpYmxpbmc7ZWxzZXtpZihDbygpLHI9PT1pKXt0PVpuKGUsdCxuKTticmVhayBlfXN0KGUsdCxyLG4pfXQ9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDU6cmV0dXJuIEp4KHQpLGU9PT1udWxsJiYkZCh0KSxyPXQudHlwZSxpPXQucGVuZGluZ1Byb3BzLG89ZSE9PW51bGw\/ZS5tZW1vaXplZFByb3BzOm51bGwscz1pLmNoaWxkcmVuLEZkKHIsaSk\/cz1udWxsOm8hPT1udWxsJiZGZChyLG8pJiYodC5mbGFnc3w9MzIpLFMxKGUsdCksc3QoZSx0LHMsbiksdC5jaGlsZDtjYXNlIDY6cmV0dXJuIGU9PT1udWxsJiYkZCh0KSxudWxsO2Nhc2UgMTM6cmV0dXJuIFQxKGUsdCxuKTtjYXNlIDQ6cmV0dXJuIE1oKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykscj10LnBlbmRpbmdQcm9wcyxlPT09bnVsbD90LmNoaWxkPVRvKHQsbnVsbCxyLG4pOnN0KGUsdCxyLG4pLHQuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gcj10LnR5cGUsaT10LnBlbmRpbmdQcm9wcyxpPXQuZWxlbWVudFR5cGU9PT1yP2k6cm4ocixpKSxtZyhlLHQscixpLG4pO2Nhc2UgNzpyZXR1cm4gc3QoZSx0LHQucGVuZGluZ1Byb3BzLG4pLHQuY2hpbGQ7Y2FzZSA4OnJldHVybiBzdChlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDEyOnJldHVybiBzdChlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDEwOmU6e2lmKHI9dC50eXBlLl9jb250ZXh0LGk9dC5wZW5kaW5nUHJvcHMsbz10Lm1lbW9pemVkUHJvcHMscz1pLnZhbHVlLGdlKF9sLHIuX2N1cnJlbnRWYWx1ZSksci5fY3VycmVudFZhbHVlPXMsbyE9PW51bGwpaWYoaG4oby52YWx1ZSxzKSl7aWYoby5jaGlsZHJlbj09PWkuY2hpbGRyZW4mJiF2dC5jdXJyZW50KXt0PVpuKGUsdCxuKTticmVhayBlfX1lbHNlIGZvcihvPXQuY2hpbGQsbyE9PW51bGwmJihvLnJldHVybj10KTtvIT09bnVsbDspe3ZhciBhPW8uZGVwZW5kZW5jaWVzO2lmKGEhPT1udWxsKXtzPW8uY2hpbGQ7Zm9yKHZhciBsPWEuZmlyc3RDb250ZXh0O2whPT1udWxsOyl7aWYobC5jb250ZXh0PT09cil7aWYoby50YWc9PT0xKXtsPVluKC0xLG4mLW4pLGwudGFnPTI7dmFyIHU9by51cGRhdGVRdWV1ZTtpZih1IT09bnVsbCl7dT11LnNoYXJlZDt2YXIgYz11LnBlbmRpbmc7Yz09PW51bGw\/bC5uZXh0PWw6KGwubmV4dD1jLm5leHQsYy5uZXh0PWwpLHUucGVuZGluZz1sfX1vLmxhbmVzfD1uLGw9by5hbHRlcm5hdGUsbCE9PW51bGwmJihsLmxhbmVzfD1uKSxIZChvLnJldHVybixuLHQpLGEubGFuZXN8PW47YnJlYWt9bD1sLm5leHR9fWVsc2UgaWYoby50YWc9PT0xMClzPW8udHlwZT09PXQudHlwZT9udWxsOm8uY2hpbGQ7ZWxzZSBpZihvLnRhZz09PTE4KXtpZihzPW8ucmV0dXJuLHM9PT1udWxsKXRocm93IEVycm9yKF8oMzQxKSk7cy5sYW5lc3w9bixhPXMuYWx0ZXJuYXRlLGEhPT1udWxsJiYoYS5sYW5lc3w9biksSGQocyxuLHQpLHM9by5zaWJsaW5nfWVsc2Ugcz1vLmNoaWxkO2lmKHMhPT1udWxsKXMucmV0dXJuPW87ZWxzZSBmb3Iocz1vO3MhPT1udWxsOyl7aWYocz09PXQpe3M9bnVsbDticmVha31pZihvPXMuc2libGluZyxvIT09bnVsbCl7by5yZXR1cm49cy5yZXR1cm4scz1vO2JyZWFrfXM9cy5yZXR1cm59bz1zfXN0KGUsdCxpLmNoaWxkcmVuLG4pLHQ9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDk6cmV0dXJuIGk9dC50eXBlLHI9dC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYW8odCxuKSxpPUt0KGkpLHI9cihpKSx0LmZsYWdzfD0xLHN0KGUsdCxyLG4pLHQuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gcj10LnR5cGUsaT1ybihyLHQucGVuZGluZ1Byb3BzKSxpPXJuKHIudHlwZSxpKSxnZyhlLHQscixpLG4pO2Nhc2UgMTU6cmV0dXJuIGIxKGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMsbik7Y2FzZSAxNzpyZXR1cm4gcj10LnR5cGUsaT10LnBlbmRpbmdQcm9wcyxpPXQuZWxlbWVudFR5cGU9PT1yP2k6cm4ocixpKSx1bChlLHQpLHQudGFnPTEseHQocik\/KGU9ITAsTGwodCkpOmU9ITEsYW8odCxuKSx2MSh0LHIsaSksV2QodCxyLGksbiksWWQobnVsbCx0LHIsITAsZSxuKTtjYXNlIDE5OnJldHVybiBFMShlLHQsbik7Y2FzZSAyMjpyZXR1cm4gazEoZSx0LG4pfXRocm93IEVycm9yKF8oMTU2LHQudGFnKSl9O2Z1bmN0aW9uIFUxKGUsdCl7cmV0dXJuIG14KGUsdCl9ZnVuY3Rpb24gJEUoZSx0LG4scil7dGhpcy50YWc9ZSx0aGlzLmtleT1uLHRoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGwsdGhpcy5pbmRleD0wLHRoaXMucmVmPW51bGwsdGhpcy5wZW5kaW5nUHJvcHM9dCx0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbCx0aGlzLm1vZGU9cix0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTAsdGhpcy5kZWxldGlvbnM9bnVsbCx0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wLHRoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gJHQoZSx0LG4scil7cmV0dXJuIG5ldyAkRShlLHQsbixyKX1mdW5jdGlvbiBRaChlKXtyZXR1cm4gZT1lLnByb3RvdHlwZSwhKCFlfHwhZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBIRShlKXtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIilyZXR1cm4gUWgoZSk\/MTowO2lmKGUhPW51bGwpe2lmKGU9ZS4kJHR5cGVvZixlPT09bWgpcmV0dXJuIDExO2lmKGU9PT1naClyZXR1cm4gMTR9cmV0dXJuIDJ9ZnVuY3Rpb24gTHIoZSx0KXt2YXIgbj1lLmFsdGVybmF0ZTtyZXR1cm4gbj09PW51bGw\/KG49JHQoZS50YWcsdCxlLmtleSxlLm1vZGUpLG4uZWxlbWVudFR5cGU9ZS5lbGVtZW50VHlwZSxuLnR5cGU9ZS50eXBlLG4uc3RhdGVOb2RlPWUuc3RhdGVOb2RlLG4uYWx0ZXJuYXRlPWUsZS5hbHRlcm5hdGU9bik6KG4ucGVuZGluZ1Byb3BzPXQsbi50eXBlPWUudHlwZSxuLmZsYWdzPTAsbi5zdWJ0cmVlRmxhZ3M9MCxuLmRlbGV0aW9ucz1udWxsKSxuLmZsYWdzPWUuZmxhZ3MmMTQ2ODAwNjQsbi5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyxuLmxhbmVzPWUubGFuZXMsbi5jaGlsZD1lLmNoaWxkLG4ubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdD1lLmRlcGVuZGVuY2llcyxuLmRlcGVuZGVuY2llcz10PT09bnVsbD9udWxsOntsYW5lczp0LmxhbmVzLGZpcnN0Q29udGV4dDp0LmZpcnN0Q29udGV4dH0sbi5zaWJsaW5nPWUuc2libGluZyxuLmluZGV4PWUuaW5kZXgsbi5yZWY9ZS5yZWYsbn1mdW5jdGlvbiBmbChlLHQsbixyLGksbyl7dmFyIHM9MjtpZihyPWUsdHlwZW9mIGU9PSJmdW5jdGlvbiIpUWgoZSkmJihzPTEpO2Vsc2UgaWYodHlwZW9mIGU9PSJzdHJpbmciKXM9NTtlbHNlIGU6c3dpdGNoKGUpe2Nhc2UgQmk6cmV0dXJuIHhpKG4uY2hpbGRyZW4saSxvLHQpO2Nhc2UgcGg6cz04LGl8PTg7YnJlYWs7Y2FzZSBnZDpyZXR1cm4gZT0kdCgxMixuLHQsaXwyKSxlLmVsZW1lbnRUeXBlPWdkLGUubGFuZXM9byxlO2Nhc2UgeWQ6cmV0dXJuIGU9JHQoMTMsbix0LGkpLGUuZWxlbWVudFR5cGU9eWQsZS5sYW5lcz1vLGU7Y2FzZSB2ZDpyZXR1cm4gZT0kdCgxOSxuLHQsaSksZS5lbGVtZW50VHlwZT12ZCxlLmxhbmVzPW8sZTtjYXNlIEowOnJldHVybiBQdShuLGksbyx0KTtkZWZhdWx0OmlmKHR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGwpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgUTA6cz0xMDticmVhayBlO2Nhc2UgWDA6cz05O2JyZWFrIGU7Y2FzZSBtaDpzPTExO2JyZWFrIGU7Y2FzZSBnaDpzPTE0O2JyZWFrIGU7Y2FzZSBncjpzPTE2LHI9bnVsbDticmVhayBlfXRocm93IEVycm9yKF8oMTMwLGU9PW51bGw\/ZTp0eXBlb2YgZSwiIikpfXJldHVybiB0PSR0KHMsbix0LGkpLHQuZWxlbWVudFR5cGU9ZSx0LnR5cGU9cix0LmxhbmVzPW8sdH1mdW5jdGlvbiB4aShlLHQsbixyKXtyZXR1cm4gZT0kdCg3LGUscix0KSxlLmxhbmVzPW4sZX1mdW5jdGlvbiBQdShlLHQsbixyKXtyZXR1cm4gZT0kdCgyMixlLHIsdCksZS5lbGVtZW50VHlwZT1KMCxlLmxhbmVzPW4sZS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfSxlfWZ1bmN0aW9uIE5jKGUsdCxuKXtyZXR1cm4gZT0kdCg2LGUsbnVsbCx0KSxlLmxhbmVzPW4sZX1mdW5jdGlvbiBqYyhlLHQsbil7cmV0dXJuIHQ9JHQoNCxlLmNoaWxkcmVuIT09bnVsbD9lLmNoaWxkcmVuOltdLGUua2V5LHQpLHQubGFuZXM9bix0LnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzplLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246ZS5pbXBsZW1lbnRhdGlvbn0sdH1mdW5jdGlvbiBxRShlLHQsbixyLGkpe3RoaXMudGFnPXQsdGhpcy5jb250YWluZXJJbmZvPWUsdGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGwsdGhpcy50aW1lb3V0SGFuZGxlPS0xLHRoaXMuY2FsbGJhY2tOb2RlPXRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGwsdGhpcy5jYWxsYmFja1ByaW9yaXR5PTAsdGhpcy5ldmVudFRpbWVzPWRjKDApLHRoaXMuZXhwaXJhdGlvblRpbWVzPWRjKC0xKSx0aGlzLmVudGFuZ2xlZExhbmVzPXRoaXMuZmluaXNoZWRMYW5lcz10aGlzLm11dGFibGVSZWFkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTAsdGhpcy5lbnRhbmdsZW1lbnRzPWRjKDApLHRoaXMuaWRlbnRpZmllclByZWZpeD1yLHRoaXMub25SZWNvdmVyYWJsZUVycm9yPWksdGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPW51bGx9ZnVuY3Rpb24gWGgoZSx0LG4scixpLG8scyxhLGwpe3JldHVybiBlPW5ldyBxRShlLHQsbixhLGwpLHQ9PT0xPyh0PTEsbz09PSEwJiYodHw9OCkpOnQ9MCxvPSR0KDMsbnVsbCxudWxsLHQpLGUuY3VycmVudD1vLG8uc3RhdGVOb2RlPWUsby5tZW1vaXplZFN0YXRlPXtlbGVtZW50OnIsaXNEZWh5ZHJhdGVkOm4sY2FjaGU6bnVsbCx0cmFuc2l0aW9uczpudWxsLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6bnVsbH0sRGgobyksZX1mdW5jdGlvbiBXRShlLHQsbil7dmFyIHI9Mzxhcmd1bWVudHMubGVuZ3RoJiZhcmd1bWVudHNbM10hPT12b2lkIDA\/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOlZpLGtleTpyPT1udWxsP251bGw6IiIrcixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpufX1mdW5jdGlvbiAkMShlKXtpZighZSlyZXR1cm4gX3I7ZT1lLl9yZWFjdEludGVybmFscztlOntpZihOaShlKSE9PWV8fGUudGFnIT09MSl0aHJvdyBFcnJvcihfKDE3MCkpO3ZhciB0PWU7ZG97c3dpdGNoKHQudGFnKXtjYXNlIDM6dD10LnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGU7Y2FzZSAxOmlmKHh0KHQudHlwZSkpe3Q9dC5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgZX19dD10LnJldHVybn13aGlsZSh0IT09bnVsbCk7dGhyb3cgRXJyb3IoXygxNzEpKX1pZihlLnRhZz09PTEpe3ZhciBuPWUudHlwZTtpZih4dChuKSlyZXR1cm4gJHgoZSxuLHQpfXJldHVybiB0fWZ1bmN0aW9uIEgxKGUsdCxuLHIsaSxvLHMsYSxsKXtyZXR1cm4gZT1YaChuLHIsITAsZSxpLG8scyxhLGwpLGUuY29udGV4dD0kMShudWxsKSxuPWUuY3VycmVudCxyPWN0KCksaT1NcihuKSxvPVluKHIsaSksby5jYWxsYmFjaz10Pz9udWxsLFJyKG4sbyxpKSxlLmN1cnJlbnQubGFuZXM9aSxsYShlLGksciksd3QoZSxyKSxlfWZ1bmN0aW9uIEF1KGUsdCxuLHIpe3ZhciBpPXQuY3VycmVudCxvPWN0KCkscz1NcihpKTtyZXR1cm4gbj0kMShuKSx0LmNvbnRleHQ9PT1udWxsP3QuY29udGV4dD1uOnQucGVuZGluZ0NvbnRleHQ9bix0PVluKG8scyksdC5wYXlsb2FkPXtlbGVtZW50OmV9LHI9cj09PXZvaWQgMD9udWxsOnIsciE9PW51bGwmJih0LmNhbGxiYWNrPXIpLGU9UnIoaSx0LHMpLGUhPT1udWxsJiYoZG4oZSxpLHMsbyksc2woZSxpLHMpKSxzfWZ1bmN0aW9uIFlsKGUpe2lmKGU9ZS5jdXJyZW50LCFlLmNoaWxkKXJldHVybiBudWxsO3N3aXRjaChlLmNoaWxkLnRhZyl7Y2FzZSA1OnJldHVybiBlLmNoaWxkLnN0YXRlTm9kZTtkZWZhdWx0OnJldHVybiBlLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gQWcoZSx0KXtpZihlPWUubWVtb2l6ZWRTdGF0ZSxlIT09bnVsbCYmZS5kZWh5ZHJhdGVkIT09bnVsbCl7dmFyIG49ZS5yZXRyeUxhbmU7ZS5yZXRyeUxhbmU9biE9PTAmJm48dD9uOnR9fWZ1bmN0aW9uIEpoKGUsdCl7QWcoZSx0KSwoZT1lLmFsdGVybmF0ZSkmJkFnKGUsdCl9ZnVuY3Rpb24gS0UoKXtyZXR1cm4gbnVsbH12YXIgcTE9dHlwZW9mIHJlcG9ydEVycm9yPT0iZnVuY3Rpb24iP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGUpe2NvbnNvbGUuZXJyb3IoZSl9O2Z1bmN0aW9uIFpoKGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfUl1LnByb3RvdHlwZS5yZW5kZXI9WmgucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnRlcm5hbFJvb3Q7aWYodD09PW51bGwpdGhyb3cgRXJyb3IoXyg0MDkpKTtBdShlLHQsbnVsbCxudWxsKX07SXUucHJvdG90eXBlLnVubW91bnQ9WmgucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnRlcm5hbFJvb3Q7aWYoZSE9PW51bGwpe3RoaXMuX2ludGVybmFsUm9vdD1udWxsO3ZhciB0PWUuY29udGFpbmVySW5mbztQaShmdW5jdGlvbigpe0F1KG51bGwsZSxudWxsLG51bGwpfSksdFtYbl09bnVsbH19O2Z1bmN0aW9uIEl1KGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfUl1LnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihlKXtpZihlKXt2YXIgdD1reCgpO2U9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDplLHByaW9yaXR5OnR9O2Zvcih2YXIgbj0wO248dnIubGVuZ3RoJiZ0IT09MCYmdDx2cltuXS5wcmlvcml0eTtuKyspO3ZyLnNwbGljZShuLDAsZSksbj09PTAmJkN4KGUpfX07ZnVuY3Rpb24gZXAoZSl7cmV0dXJuISghZXx8ZS5ub2RlVHlwZSE9PTEmJmUubm9kZVR5cGUhPT05JiZlLm5vZGVUeXBlIT09MTEpfWZ1bmN0aW9uIE51KGUpe3JldHVybiEoIWV8fGUubm9kZVR5cGUhPT0xJiZlLm5vZGVUeXBlIT09OSYmZS5ub2RlVHlwZSE9PTExJiYoZS5ub2RlVHlwZSE9PTh8fGUubm9kZVZhbHVlIT09IiByZWFjdC1tb3VudC1wb2ludC11bnN0YWJsZSAiKSl9ZnVuY3Rpb24gSWcoKXt9ZnVuY3Rpb24gR0UoZSx0LG4scixpKXtpZihpKXtpZih0eXBlb2Ygcj09ImZ1bmN0aW9uIil7dmFyIG89cjtyPWZ1bmN0aW9uKCl7dmFyIHU9WWwocyk7by5jYWxsKHUpfX12YXIgcz1IMSh0LHIsZSwwLG51bGwsITEsITEsIiIsSWcpO3JldHVybiBlLl9yZWFjdFJvb3RDb250YWluZXI9cyxlW1huXT1zLmN1cnJlbnQsT3MoZS5ub2RlVHlwZT09PTg\/ZS5wYXJlbnROb2RlOmUpLFBpKCksc31mb3IoO2k9ZS5sYXN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQoaSk7aWYodHlwZW9mIHI9PSJmdW5jdGlvbiIpe3ZhciBhPXI7cj1mdW5jdGlvbigpe3ZhciB1PVlsKGwpO2EuY2FsbCh1KX19dmFyIGw9WGgoZSwwLCExLG51bGwsbnVsbCwhMSwhMSwiIixJZyk7cmV0dXJuIGUuX3JlYWN0Um9vdENvbnRhaW5lcj1sLGVbWG5dPWwuY3VycmVudCxPcyhlLm5vZGVUeXBlPT09OD9lLnBhcmVudE5vZGU6ZSksUGkoZnVuY3Rpb24oKXtBdSh0LGwsbixyKX0pLGx9ZnVuY3Rpb24ganUoZSx0LG4scixpKXt2YXIgbz1uLl9yZWFjdFJvb3RDb250YWluZXI7aWYobyl7dmFyIHM9bztpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7dmFyIGE9aTtpPWZ1bmN0aW9uKCl7dmFyIGw9WWwocyk7YS5jYWxsKGwpfX1BdSh0LHMsZSxpKX1lbHNlIHM9R0Uobix0LGUsaSxyKTtyZXR1cm4gWWwocyl9d3g9ZnVuY3Rpb24oZSl7c3dpdGNoKGUudGFnKXtjYXNlIDM6dmFyIHQ9ZS5zdGF0ZU5vZGU7aWYodC5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgbj11cyh0LnBlbmRpbmdMYW5lcyk7biE9PTAmJih4aCh0LG58MSksd3QodCx6ZSgpKSwhKGxlJjYpJiYoQW89emUoKSs1MDAsS3IoKSkpfWJyZWFrO2Nhc2UgMTM6UGkoZnVuY3Rpb24oKXt2YXIgcj1KbihlLDEpO2lmKHIhPT1udWxsKXt2YXIgaT1jdCgpO2RuKHIsZSwxLGkpfX0pLEpoKGUsMSl9fTt3aD1mdW5jdGlvbihlKXtpZihlLnRhZz09PTEzKXt2YXIgdD1KbihlLDEzNDIxNzcyOCk7aWYodCE9PW51bGwpe3ZhciBuPWN0KCk7ZG4odCxlLDEzNDIxNzcyOCxuKX1KaChlLDEzNDIxNzcyOCl9fTtieD1mdW5jdGlvbihlKXtpZihlLnRhZz09PTEzKXt2YXIgdD1NcihlKSxuPUpuKGUsdCk7aWYobiE9PW51bGwpe3ZhciByPWN0KCk7ZG4obixlLHQscil9SmgoZSx0KX19O2t4PWZ1bmN0aW9uKCl7cmV0dXJuIGhlfTtTeD1mdW5jdGlvbihlLHQpe3ZhciBuPWhlO3RyeXtyZXR1cm4gaGU9ZSx0KCl9ZmluYWxseXtoZT1ufX07QWQ9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaCh0KXtjYXNlImlucHV0IjppZihiZChlLG4pLHQ9bi5uYW1lLG4udHlwZT09PSJyYWRpbyImJnQhPW51bGwpe2ZvcihuPWU7bi5wYXJlbnROb2RlOyluPW4ucGFyZW50Tm9kZTtmb3Iobj1uLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W25hbWU9IitKU09OLnN0cmluZ2lmeSgiIit0KSsnXVt0eXBlPSJyYWRpbyJdJyksdD0wO3Q8bi5sZW5ndGg7dCsrKXt2YXIgcj1uW3RdO2lmKHIhPT1lJiZyLmZvcm09PT1lLmZvcm0pe3ZhciBpPWJ1KHIpO2lmKCFpKXRocm93IEVycm9yKF8oOTApKTtleChyKSxiZChyLGkpfX19YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6bngoZSxuKTticmVhaztjYXNlInNlbGVjdCI6dD1uLnZhbHVlLHQhPW51bGwmJnJvKGUsISFuLm11bHRpcGxlLHQsITEpfX07dXg9S2g7Y3g9UGk7dmFyIFlFPXt1c2luZ0NsaWVudEVudHJ5UG9pbnQ6ITEsRXZlbnRzOltjYSxxaSxidSxheCxseCxLaF19LHRzPXtmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTphaSxidW5kbGVUeXBlOjAsdmVyc2lvbjoiMTguMy4xIixyZW5kZXJlclBhY2thZ2VOYW1lOiJyZWFjdC1kb20ifSxRRT17YnVuZGxlVHlwZTp0cy5idW5kbGVUeXBlLHZlcnNpb246dHMudmVyc2lvbixyZW5kZXJlclBhY2thZ2VOYW1lOnRzLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6dHMucmVuZGVyZXJDb25maWcsb3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzUmVuYW1lUGF0aDpudWxsLHNldEVycm9ySGFuZGxlcjpudWxsLHNldFN1c3BlbnNlSGFuZGxlcjpudWxsLHNjaGVkdWxlVXBkYXRlOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6bnIuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1oeChlKSxlPT09bnVsbD9udWxsOmUuc3RhdGVOb2RlfSxmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTp0cy5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8S0UsZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbCxyZWNvbmNpbGVyVmVyc2lvbjoiMTguMy4xLW5leHQtZjEzMzhmODA4MC0yMDI0MDQyNiJ9O2lmKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX188InUiKXt2YXIgQmE9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCFCYS5pc0Rpc2FibGVkJiZCYS5zdXBwb3J0c0ZpYmVyKXRyeXt5dT1CYS5pbmplY3QoUUUpLEluPUJhfWNhdGNoe319THQuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9WUU7THQuY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGUsdCl7dmFyIG49Mjxhcmd1bWVudHMubGVuZ3RoJiZhcmd1bWVudHNbMl0hPT12b2lkIDA\/YXJndW1lbnRzWzJdOm51bGw7aWYoIWVwKHQpKXRocm93IEVycm9yKF8oMjAwKSk7cmV0dXJuIFdFKGUsdCxudWxsLG4pfTtMdC5jcmVhdGVSb290PWZ1bmN0aW9uKGUsdCl7aWYoIWVwKGUpKXRocm93IEVycm9yKF8oMjk5KSk7dmFyIG49ITEscj0iIixpPXExO3JldHVybiB0IT1udWxsJiYodC51bnN0YWJsZV9zdHJpY3RNb2RlPT09ITAmJihuPSEwKSx0LmlkZW50aWZpZXJQcmVmaXghPT12b2lkIDAmJihyPXQuaWRlbnRpZmllclByZWZpeCksdC5vblJlY292ZXJhYmxlRXJyb3IhPT12b2lkIDAmJihpPXQub25SZWNvdmVyYWJsZUVycm9yKSksdD1YaChlLDEsITEsbnVsbCxudWxsLG4sITEscixpKSxlW1huXT10LmN1cnJlbnQsT3MoZS5ub2RlVHlwZT09PTg\/ZS5wYXJlbnROb2RlOmUpLG5ldyBaaCh0KX07THQuZmluZERPTU5vZGU9ZnVuY3Rpb24oZSl7aWYoZT09bnVsbClyZXR1cm4gbnVsbDtpZihlLm5vZGVUeXBlPT09MSlyZXR1cm4gZTt2YXIgdD1lLl9yZWFjdEludGVybmFscztpZih0PT09dm9pZCAwKXRocm93IHR5cGVvZiBlLnJlbmRlcj09ImZ1bmN0aW9uIj9FcnJvcihfKDE4OCkpOihlPU9iamVjdC5rZXlzKGUpLmpvaW4oIiwiKSxFcnJvcihfKDI2OCxlKSkpO3JldHVybiBlPWh4KHQpLGU9ZT09PW51bGw\/bnVsbDplLnN0YXRlTm9kZSxlfTtMdC5mbHVzaFN5bmM9ZnVuY3Rpb24oZSl7cmV0dXJuIFBpKGUpfTtMdC5oeWRyYXRlPWZ1bmN0aW9uKGUsdCxuKXtpZighTnUodCkpdGhyb3cgRXJyb3IoXygyMDApKTtyZXR1cm4ganUobnVsbCxlLHQsITAsbil9O0x0Lmh5ZHJhdGVSb290PWZ1bmN0aW9uKGUsdCxuKXtpZighZXAoZSkpdGhyb3cgRXJyb3IoXyg0MDUpKTt2YXIgcj1uIT1udWxsJiZuLmh5ZHJhdGVkU291cmNlc3x8bnVsbCxpPSExLG89IiIscz1xMTtpZihuIT1udWxsJiYobi51bnN0YWJsZV9zdHJpY3RNb2RlPT09ITAmJihpPSEwKSxuLmlkZW50aWZpZXJQcmVmaXghPT12b2lkIDAmJihvPW4uaWRlbnRpZmllclByZWZpeCksbi5vblJlY292ZXJhYmxlRXJyb3IhPT12b2lkIDAmJihzPW4ub25SZWNvdmVyYWJsZUVycm9yKSksdD1IMSh0LG51bGwsZSwxLG4\/P251bGwsaSwhMSxvLHMpLGVbWG5dPXQuY3VycmVudCxPcyhlKSxyKWZvcihlPTA7ZTxyLmxlbmd0aDtlKyspbj1yW2VdLGk9bi5fZ2V0VmVyc2lvbixpPWkobi5fc291cmNlKSx0Lm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9PW51bGw\/dC5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVtuLGldOnQubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YS5wdXNoKG4saSk7cmV0dXJuIG5ldyBJdSh0KX07THQucmVuZGVyPWZ1bmN0aW9uKGUsdCxuKXtpZighTnUodCkpdGhyb3cgRXJyb3IoXygyMDApKTtyZXR1cm4ganUobnVsbCxlLHQsITEsbil9O0x0LnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oZSl7aWYoIU51KGUpKXRocm93IEVycm9yKF8oNDApKTtyZXR1cm4gZS5fcmVhY3RSb290Q29udGFpbmVyPyhQaShmdW5jdGlvbigpe2p1KG51bGwsbnVsbCxlLCExLGZ1bmN0aW9uKCl7ZS5fcmVhY3RSb290Q29udGFpbmVyPW51bGwsZVtYbl09bnVsbH0pfSksITApOiExfTtMdC51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1LaDtMdC51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihlLHQsbixyKXtpZighTnUobikpdGhyb3cgRXJyb3IoXygyMDApKTtpZihlPT1udWxsfHxlLl9yZWFjdEludGVybmFscz09PXZvaWQgMCl0aHJvdyBFcnJvcihfKDM4KSk7cmV0dXJuIGp1KGUsdCxuLCExLHIpfTtMdC52ZXJzaW9uPSIxOC4zLjEtbmV4dC1mMTMzOGY4MDgwLTIwMjQwNDI2IjtmdW5jdGlvbiBXMSgpe2lmKCEodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXz4idSJ8fHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UhPSJmdW5jdGlvbiIpKXRyeXtfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoVzEpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fVcxKCksVzAuZXhwb3J0cz1MdDt2YXIgZmE9VzAuZXhwb3J0cztjb25zdCBLMT1tdShmYSk7dmFyIEcxLE5nPWZhO0cxPU5nLmNyZWF0ZVJvb3QsTmcuaHlkcmF0ZVJvb3Q7dmFyIHp1PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5saXN0ZW5lcnM9bmV3IFNldCx0aGlzLnN1YnNjcmliZT10aGlzLnN1YnNjcmliZS5iaW5kKHRoaXMpfXN1YnNjcmliZShlKXtyZXR1cm4gdGhpcy5saXN0ZW5lcnMuYWRkKGUpLHRoaXMub25TdWJzY3JpYmUoKSwoKT0+e3RoaXMubGlzdGVuZXJzLmRlbGV0ZShlKSx0aGlzLm9uVW5zdWJzY3JpYmUoKX19aGFzTGlzdGVuZXJzKCl7cmV0dXJuIHRoaXMubGlzdGVuZXJzLnNpemU+MH1vblN1YnNjcmliZSgpe31vblVuc3Vic2NyaWJlKCl7fX0sUnU9dHlwZW9mIHdpbmRvdz4idSJ8fCJEZW5vImluIGdsb2JhbFRoaXM7ZnVuY3Rpb24gb24oKXt9ZnVuY3Rpb24gWEUoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI\/ZSh0KTplfWZ1bmN0aW9uIEpFKGUpe3JldHVybiB0eXBlb2YgZT09Im51bWJlciImJmU+PTAmJmUhPT0xLzB9ZnVuY3Rpb24gWkUoZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSsodHx8MCktRGF0ZS5ub3coKSwwKX1mdW5jdGlvbiBsZihlLHQpe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIj9lKHQpOmV9ZnVuY3Rpb24gZVAoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI\/ZSh0KTplfWZ1bmN0aW9uIGpnKGUsdCl7Y29uc3R7dHlwZTpuPSJhbGwiLGV4YWN0OnIsZmV0Y2hTdGF0dXM6aSxwcmVkaWNhdGU6byxxdWVyeUtleTpzLHN0YWxlOmF9PWU7aWYocyl7aWYocil7aWYodC5xdWVyeUhhc2ghPT10cChzLHQub3B0aW9ucykpcmV0dXJuITF9ZWxzZSBpZighS3ModC5xdWVyeUtleSxzKSlyZXR1cm4hMX1pZihuIT09ImFsbCIpe2NvbnN0IGw9dC5pc0FjdGl2ZSgpO2lmKG49PT0iYWN0aXZlIiYmIWx8fG49PT0iaW5hY3RpdmUiJiZsKXJldHVybiExfXJldHVybiEodHlwZW9mIGE9PSJib29sZWFuIiYmdC5pc1N0YWxlKCkhPT1hfHxpJiZpIT09dC5zdGF0ZS5mZXRjaFN0YXR1c3x8byYmIW8odCkpfWZ1bmN0aW9uIHpnKGUsdCl7Y29uc3R7ZXhhY3Q6bixzdGF0dXM6cixwcmVkaWNhdGU6aSxtdXRhdGlvbktleTpvfT1lO2lmKG8pe2lmKCF0Lm9wdGlvbnMubXV0YXRpb25LZXkpcmV0dXJuITE7aWYobil7aWYoV3ModC5vcHRpb25zLm11dGF0aW9uS2V5KSE9PVdzKG8pKXJldHVybiExfWVsc2UgaWYoIUtzKHQub3B0aW9ucy5tdXRhdGlvbktleSxvKSlyZXR1cm4hMX1yZXR1cm4hKHImJnQuc3RhdGUuc3RhdHVzIT09cnx8aSYmIWkodCkpfWZ1bmN0aW9uIHRwKGUsdCl7cmV0dXJuKCh0PT1udWxsP3ZvaWQgMDp0LnF1ZXJ5S2V5SGFzaEZuKXx8V3MpKGUpfWZ1bmN0aW9uIFdzKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlLCh0LG4pPT51ZihuKT9PYmplY3Qua2V5cyhuKS5zb3J0KCkucmVkdWNlKChyLGkpPT4ocltpXT1uW2ldLHIpLHt9KTpuKX1mdW5jdGlvbiBLcyhlLHQpe3JldHVybiBlPT09dD8hMDp0eXBlb2YgZSE9dHlwZW9mIHQ\/ITE6ZSYmdCYmdHlwZW9mIGU9PSJvYmplY3QiJiZ0eXBlb2YgdD09Im9iamVjdCI\/T2JqZWN0LmtleXModCkuZXZlcnkobj0+S3MoZVtuXSx0W25dKSk6ITF9ZnVuY3Rpb24gWTEoZSx0KXtpZihlPT09dClyZXR1cm4gZTtjb25zdCBuPVJnKGUpJiZSZyh0KTtpZihufHx1ZihlKSYmdWYodCkpe2NvbnN0IHI9bj9lOk9iamVjdC5rZXlzKGUpLGk9ci5sZW5ndGgsbz1uP3Q6T2JqZWN0LmtleXModCkscz1vLmxlbmd0aCxhPW4\/W106e30sbD1uZXcgU2V0KHIpO2xldCB1PTA7Zm9yKGxldCBjPTA7YzxzO2MrKyl7Y29uc3QgZD1uP2M6b1tjXTsoIW4mJmwuaGFzKGQpfHxuKSYmZVtkXT09PXZvaWQgMCYmdFtkXT09PXZvaWQgMD8oYVtkXT12b2lkIDAsdSsrKTooYVtkXT1ZMShlW2RdLHRbZF0pLGFbZF09PT1lW2RdJiZlW2RdIT09dm9pZCAwJiZ1KyspfXJldHVybiBpPT09cyYmdT09PWk\/ZTphfXJldHVybiB0fWZ1bmN0aW9uIFJnKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aH1mdW5jdGlvbiB1ZihlKXtpZighRGcoZSkpcmV0dXJuITE7Y29uc3QgdD1lLmNvbnN0cnVjdG9yO2lmKHQ9PT12b2lkIDApcmV0dXJuITA7Y29uc3Qgbj10LnByb3RvdHlwZTtyZXR1cm4hKCFEZyhuKXx8IW4uaGFzT3duUHJvcGVydHkoImlzUHJvdG90eXBlT2YiKXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpIT09T2JqZWN0LnByb3RvdHlwZSl9ZnVuY3Rpb24gRGcoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PSJbb2JqZWN0IE9iamVjdF0ifWZ1bmN0aW9uIHRQKGUpe3JldHVybiBuZXcgUHJvbWlzZSh0PT57c2V0VGltZW91dCh0LGUpfSl9ZnVuY3Rpb24gblAoZSx0LG4pe3JldHVybiB0eXBlb2Ygbi5zdHJ1Y3R1cmFsU2hhcmluZz09ImZ1bmN0aW9uIj9uLnN0cnVjdHVyYWxTaGFyaW5nKGUsdCk6bi5zdHJ1Y3R1cmFsU2hhcmluZyE9PSExP1kxKGUsdCk6dH1mdW5jdGlvbiByUChlLHQsbj0wKXtjb25zdCByPVsuLi5lLHRdO3JldHVybiBuJiZyLmxlbmd0aD5uP3Iuc2xpY2UoMSk6cn1mdW5jdGlvbiBpUChlLHQsbj0wKXtjb25zdCByPVt0LC4uLmVdO3JldHVybiBuJiZyLmxlbmd0aD5uP3Iuc2xpY2UoMCwtMSk6cn12YXIgbnA9U3ltYm9sKCk7ZnVuY3Rpb24gUTEoZSx0KXtyZXR1cm4hZS5xdWVyeUZuJiYodCE9bnVsbCYmdC5pbml0aWFsUHJvbWlzZSk\/KCk9PnQuaW5pdGlhbFByb21pc2U6IWUucXVlcnlGbnx8ZS5xdWVyeUZuPT09bnA\/KCk9PlByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgTWlzc2luZyBxdWVyeUZuOiAnJHtlLnF1ZXJ5SGFzaH0nYCkpOmUucXVlcnlGbn12YXIgZmksd3IscG8sUDAsb1A9KFAwPWNsYXNzIGV4dGVuZHMgenV7Y29uc3RydWN0b3IoKXtzdXBlcigpO2NlKHRoaXMsZmkpO2NlKHRoaXMsd3IpO2NlKHRoaXMscG8pO3RlKHRoaXMscG8sdD0+e2lmKCFSdSYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIpe2NvbnN0IG49KCk9PnQoKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLG4sITEpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLG4pfX19KX1vblN1YnNjcmliZSgpe0wodGhpcyx3cil8fHRoaXMuc2V0RXZlbnRMaXN0ZW5lcihMKHRoaXMscG8pKX1vblVuc3Vic2NyaWJlKCl7dmFyIHQ7dGhpcy5oYXNMaXN0ZW5lcnMoKXx8KCh0PUwodGhpcyx3cikpPT1udWxsfHx0LmNhbGwodGhpcyksdGUodGhpcyx3cix2b2lkIDApKX1zZXRFdmVudExpc3RlbmVyKHQpe3ZhciBuO3RlKHRoaXMscG8sdCksKG49TCh0aGlzLHdyKSk9PW51bGx8fG4uY2FsbCh0aGlzKSx0ZSh0aGlzLHdyLHQocj0+e3R5cGVvZiByPT0iYm9vbGVhbiI\/dGhpcy5zZXRGb2N1c2VkKHIpOnRoaXMub25Gb2N1cygpfSkpfXNldEZvY3VzZWQodCl7TCh0aGlzLGZpKSE9PXQmJih0ZSh0aGlzLGZpLHQpLHRoaXMub25Gb2N1cygpKX1vbkZvY3VzKCl7Y29uc3QgdD10aGlzLmlzRm9jdXNlZCgpO3RoaXMubGlzdGVuZXJzLmZvckVhY2gobj0+e24odCl9KX1pc0ZvY3VzZWQoKXt2YXIgdDtyZXR1cm4gdHlwZW9mIEwodGhpcyxmaSk9PSJib29sZWFuIj9MKHRoaXMsZmkpOigodD1nbG9iYWxUaGlzLmRvY3VtZW50KT09bnVsbD92b2lkIDA6dC52aXNpYmlsaXR5U3RhdGUpIT09ImhpZGRlbiJ9fSxmaT1uZXcgV2Vha01hcCx3cj1uZXcgV2Vha01hcCxwbz1uZXcgV2Vha01hcCxQMCksWDE9bmV3IG9QLG1vLGJyLGdvLEEwLHNQPShBMD1jbGFzcyBleHRlbmRzIHp1e2NvbnN0cnVjdG9yKCl7c3VwZXIoKTtjZSh0aGlzLG1vLCEwKTtjZSh0aGlzLGJyKTtjZSh0aGlzLGdvKTt0ZSh0aGlzLGdvLHQ9PntpZighUnUmJndpbmRvdy5hZGRFdmVudExpc3RlbmVyKXtjb25zdCBuPSgpPT50KCEwKSxyPSgpPT50KCExKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9ubGluZSIsbiwhMSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9mZmxpbmUiLHIsITEpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9ubGluZSIsbiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9mZmxpbmUiLHIpfX19KX1vblN1YnNjcmliZSgpe0wodGhpcyxicil8fHRoaXMuc2V0RXZlbnRMaXN0ZW5lcihMKHRoaXMsZ28pKX1vblVuc3Vic2NyaWJlKCl7dmFyIHQ7dGhpcy5oYXNMaXN0ZW5lcnMoKXx8KCh0PUwodGhpcyxicikpPT1udWxsfHx0LmNhbGwodGhpcyksdGUodGhpcyxicix2b2lkIDApKX1zZXRFdmVudExpc3RlbmVyKHQpe3ZhciBuO3RlKHRoaXMsZ28sdCksKG49TCh0aGlzLGJyKSk9PW51bGx8fG4uY2FsbCh0aGlzKSx0ZSh0aGlzLGJyLHQodGhpcy5zZXRPbmxpbmUuYmluZCh0aGlzKSkpfXNldE9ubGluZSh0KXtMKHRoaXMsbW8pIT09dCYmKHRlKHRoaXMsbW8sdCksdGhpcy5saXN0ZW5lcnMuZm9yRWFjaChyPT57cih0KX0pKX1pc09ubGluZSgpe3JldHVybiBMKHRoaXMsbW8pfX0sbW89bmV3IFdlYWtNYXAsYnI9bmV3IFdlYWtNYXAsZ289bmV3IFdlYWtNYXAsQTApLFFsPW5ldyBzUDtmdW5jdGlvbiBhUCgpe2xldCBlLHQ7Y29uc3Qgbj1uZXcgUHJvbWlzZSgoaSxvKT0+e2U9aSx0PW99KTtuLnN0YXR1cz0icGVuZGluZyIsbi5jYXRjaCgoKT0+e30pO2Z1bmN0aW9uIHIoaSl7T2JqZWN0LmFzc2lnbihuLGkpLGRlbGV0ZSBuLnJlc29sdmUsZGVsZXRlIG4ucmVqZWN0fXJldHVybiBuLnJlc29sdmU9aT0+e3Ioe3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTppfSksZShpKX0sbi5yZWplY3Q9aT0+e3Ioe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjppfSksdChpKX0sbn1mdW5jdGlvbiBsUChlKXtyZXR1cm4gTWF0aC5taW4oMWUzKjIqKmUsM2U0KX1mdW5jdGlvbiBKMShlKXtyZXR1cm4oZT8\/Im9ubGluZSIpPT09Im9ubGluZSI\/UWwuaXNPbmxpbmUoKTohMH12YXIgWjE9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcigiQ2FuY2VsbGVkRXJyb3IiKSx0aGlzLnJldmVydD1lPT1udWxsP3ZvaWQgMDplLnJldmVydCx0aGlzLnNpbGVudD1lPT1udWxsP3ZvaWQgMDplLnNpbGVudH19O2Z1bmN0aW9uIHpjKGUpe3JldHVybiBlIGluc3RhbmNlb2YgWjF9ZnVuY3Rpb24gZXcoZSl7bGV0IHQ9ITEsbj0wLHI9ITEsaTtjb25zdCBvPWFQKCkscz1tPT57dmFyIHc7cnx8KGgobmV3IFoxKG0pKSwodz1lLmFib3J0KT09bnVsbHx8dy5jYWxsKGUpKX0sYT0oKT0+e3Q9ITB9LGw9KCk9Pnt0PSExfSx1PSgpPT5YMS5pc0ZvY3VzZWQoKSYmKGUubmV0d29ya01vZGU9PT0iYWx3YXlzInx8UWwuaXNPbmxpbmUoKSkmJmUuY2FuUnVuKCksYz0oKT0+SjEoZS5uZXR3b3JrTW9kZSkmJmUuY2FuUnVuKCksZD1tPT57dmFyIHc7cnx8KHI9ITAsKHc9ZS5vblN1Y2Nlc3MpPT1udWxsfHx3LmNhbGwoZSxtKSxpPT1udWxsfHxpKCksby5yZXNvbHZlKG0pKX0saD1tPT57dmFyIHc7cnx8KHI9ITAsKHc9ZS5vbkVycm9yKT09bnVsbHx8dy5jYWxsKGUsbSksaT09bnVsbHx8aSgpLG8ucmVqZWN0KG0pKX0sZj0oKT0+bmV3IFByb21pc2UobT0+e3ZhciB3O2k9cD0+eyhyfHx1KCkpJiZtKHApfSwodz1lLm9uUGF1c2UpPT1udWxsfHx3LmNhbGwoZSl9KS50aGVuKCgpPT57dmFyIG07aT12b2lkIDAscnx8KG09ZS5vbkNvbnRpbnVlKT09bnVsbHx8bS5jYWxsKGUpfSkseT0oKT0+e2lmKHIpcmV0dXJuO2xldCBtO2NvbnN0IHc9bj09PTA\/ZS5pbml0aWFsUHJvbWlzZTp2b2lkIDA7dHJ5e209dz8\/ZS5mbigpfWNhdGNoKHApe209UHJvbWlzZS5yZWplY3QocCl9UHJvbWlzZS5yZXNvbHZlKG0pLnRoZW4oZCkuY2F0Y2gocD0+e3ZhciBDO2lmKHIpcmV0dXJuO2NvbnN0IHY9ZS5yZXRyeT8\/KFJ1PzA6MykseD1lLnJldHJ5RGVsYXk\/P2xQLGs9dHlwZW9mIHg9PSJmdW5jdGlvbiI\/eChuLHApOngsVD12PT09ITB8fHR5cGVvZiB2PT0ibnVtYmVyIiYmbjx2fHx0eXBlb2Ygdj09ImZ1bmN0aW9uIiYmdihuLHApO2lmKHR8fCFUKXtoKHApO3JldHVybn1uKyssKEM9ZS5vbkZhaWwpPT1udWxsfHxDLmNhbGwoZSxuLHApLHRQKGspLnRoZW4oKCk9PnUoKT92b2lkIDA6ZigpKS50aGVuKCgpPT57dD9oKHApOnkoKX0pfSl9O3JldHVybntwcm9taXNlOm8sY2FuY2VsOnMsY29udGludWU6KCk9PihpPT1udWxsfHxpKCksbyksY2FuY2VsUmV0cnk6YSxjb250aW51ZVJldHJ5OmwsY2FuU3RhcnQ6YyxzdGFydDooKT0+KGMoKT95KCk6ZigpLnRoZW4oeSksbyl9fXZhciB1UD1lPT5zZXRUaW1lb3V0KGUsMCk7ZnVuY3Rpb24gY1AoKXtsZXQgZT1bXSx0PTAsbj1hPT57YSgpfSxyPWE9PnthKCl9LGk9dVA7Y29uc3Qgbz1hPT57dD9lLnB1c2goYSk6aSgoKT0+e24oYSl9KX0scz0oKT0+e2NvbnN0IGE9ZTtlPVtdLGEubGVuZ3RoJiZpKCgpPT57cigoKT0+e2EuZm9yRWFjaChsPT57bihsKX0pfSl9KX07cmV0dXJue2JhdGNoOmE9PntsZXQgbDt0Kys7dHJ5e2w9YSgpfWZpbmFsbHl7dC0tLHR8fHMoKX1yZXR1cm4gbH0sYmF0Y2hDYWxsczphPT4oLi4ubCk9PntvKCgpPT57YSguLi5sKX0pfSxzY2hlZHVsZTpvLHNldE5vdGlmeUZ1bmN0aW9uOmE9PntuPWF9LHNldEJhdGNoTm90aWZ5RnVuY3Rpb246YT0+e3I9YX0sc2V0U2NoZWR1bGVyOmE9PntpPWF9fX12YXIgYXQ9Y1AoKSxoaSxJMCx0dz0oSTA9Y2xhc3N7Y29uc3RydWN0b3IoKXtjZSh0aGlzLGhpKX1kZXN0cm95KCl7dGhpcy5jbGVhckdjVGltZW91dCgpfXNjaGVkdWxlR2MoKXt0aGlzLmNsZWFyR2NUaW1lb3V0KCksSkUodGhpcy5nY1RpbWUpJiZ0ZSh0aGlzLGhpLHNldFRpbWVvdXQoKCk9Pnt0aGlzLm9wdGlvbmFsUmVtb3ZlKCl9LHRoaXMuZ2NUaW1lKSl9dXBkYXRlR2NUaW1lKGUpe3RoaXMuZ2NUaW1lPU1hdGgubWF4KHRoaXMuZ2NUaW1lfHwwLGU\/PyhSdT8xLzA6NSo2MCoxZTMpKX1jbGVhckdjVGltZW91dCgpe0wodGhpcyxoaSkmJihjbGVhclRpbWVvdXQoTCh0aGlzLGhpKSksdGUodGhpcyxoaSx2b2lkIDApKX19LGhpPW5ldyBXZWFrTWFwLEkwKSx5byxwaSxfdCxtaSxaZSxvYSxnaSxzbiwkbixOMCxkUD0oTjA9Y2xhc3MgZXh0ZW5kcyB0d3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpO2NlKHRoaXMsc24pO2NlKHRoaXMseW8pO2NlKHRoaXMscGkpO2NlKHRoaXMsX3QpO2NlKHRoaXMsbWkpO2NlKHRoaXMsWmUpO2NlKHRoaXMsb2EpO2NlKHRoaXMsZ2kpO3RlKHRoaXMsZ2ksITEpLHRlKHRoaXMsb2EsdC5kZWZhdWx0T3B0aW9ucyksdGhpcy5zZXRPcHRpb25zKHQub3B0aW9ucyksdGhpcy5vYnNlcnZlcnM9W10sdGUodGhpcyxtaSx0LmNsaWVudCksdGUodGhpcyxfdCxMKHRoaXMsbWkpLmdldFF1ZXJ5Q2FjaGUoKSksdGhpcy5xdWVyeUtleT10LnF1ZXJ5S2V5LHRoaXMucXVlcnlIYXNoPXQucXVlcnlIYXNoLHRlKHRoaXMseW8saFAodGhpcy5vcHRpb25zKSksdGhpcy5zdGF0ZT10LnN0YXRlPz9MKHRoaXMseW8pLHRoaXMuc2NoZWR1bGVHYygpfWdldCBtZXRhKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5tZXRhfWdldCBwcm9taXNlKCl7dmFyIHQ7cmV0dXJuKHQ9TCh0aGlzLFplKSk9PW51bGw\/dm9pZCAwOnQucHJvbWlzZX1zZXRPcHRpb25zKHQpe3RoaXMub3B0aW9ucz17Li4uTCh0aGlzLG9hKSwuLi50fSx0aGlzLnVwZGF0ZUdjVGltZSh0aGlzLm9wdGlvbnMuZ2NUaW1lKX1vcHRpb25hbFJlbW92ZSgpeyF0aGlzLm9ic2VydmVycy5sZW5ndGgmJnRoaXMuc3RhdGUuZmV0Y2hTdGF0dXM9PT0iaWRsZSImJkwodGhpcyxfdCkucmVtb3ZlKHRoaXMpfXNldERhdGEodCxuKXtjb25zdCByPW5QKHRoaXMuc3RhdGUuZGF0YSx0LHRoaXMub3B0aW9ucyk7cmV0dXJuIFFlKHRoaXMsc24sJG4pLmNhbGwodGhpcyx7ZGF0YTpyLHR5cGU6InN1Y2Nlc3MiLGRhdGFVcGRhdGVkQXQ6bj09bnVsbD92b2lkIDA6bi51cGRhdGVkQXQsbWFudWFsOm49PW51bGw\/dm9pZCAwOm4ubWFudWFsfSkscn1zZXRTdGF0ZSh0LG4pe1FlKHRoaXMsc24sJG4pLmNhbGwodGhpcyx7dHlwZToic2V0U3RhdGUiLHN0YXRlOnQsc2V0U3RhdGVPcHRpb25zOm59KX1jYW5jZWwodCl7dmFyIHIsaTtjb25zdCBuPShyPUwodGhpcyxaZSkpPT1udWxsP3ZvaWQgMDpyLnByb21pc2U7cmV0dXJuKGk9TCh0aGlzLFplKSk9PW51bGx8fGkuY2FuY2VsKHQpLG4\/bi50aGVuKG9uKS5jYXRjaChvbik6UHJvbWlzZS5yZXNvbHZlKCl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKSx0aGlzLmNhbmNlbCh7c2lsZW50OiEwfSl9cmVzZXQoKXt0aGlzLmRlc3Ryb3koKSx0aGlzLnNldFN0YXRlKEwodGhpcyx5bykpfWlzQWN0aXZlKCl7cmV0dXJuIHRoaXMub2JzZXJ2ZXJzLnNvbWUodD0+ZVAodC5vcHRpb25zLmVuYWJsZWQsdGhpcykhPT0hMSl9aXNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmdldE9ic2VydmVyc0NvdW50KCk+MD8hdGhpcy5pc0FjdGl2ZSgpOnRoaXMub3B0aW9ucy5xdWVyeUZuPT09bnB8fHRoaXMuc3RhdGUuZGF0YVVwZGF0ZUNvdW50K3RoaXMuc3RhdGUuZXJyb3JVcGRhdGVDb3VudD09PTB9aXNTdGF0aWMoKXtyZXR1cm4gdGhpcy5nZXRPYnNlcnZlcnNDb3VudCgpPjA\/dGhpcy5vYnNlcnZlcnMuc29tZSh0PT5sZih0Lm9wdGlvbnMuc3RhbGVUaW1lLHRoaXMpPT09InN0YXRpYyIpOiExfWlzU3RhbGUoKXtyZXR1cm4gdGhpcy5nZXRPYnNlcnZlcnNDb3VudCgpPjA\/dGhpcy5vYnNlcnZlcnMuc29tZSh0PT50LmdldEN1cnJlbnRSZXN1bHQoKS5pc1N0YWxlKTp0aGlzLnN0YXRlLmRhdGE9PT12b2lkIDB8fHRoaXMuc3RhdGUuaXNJbnZhbGlkYXRlZH1pc1N0YWxlQnlUaW1lKHQ9MCl7cmV0dXJuIHRoaXMuc3RhdGUuZGF0YT09PXZvaWQgMD8hMDp0PT09InN0YXRpYyI\/ITE6dGhpcy5zdGF0ZS5pc0ludmFsaWRhdGVkPyEwOiFaRSh0aGlzLnN0YXRlLmRhdGFVcGRhdGVkQXQsdCl9b25Gb2N1cygpe3ZhciBuO2NvbnN0IHQ9dGhpcy5vYnNlcnZlcnMuZmluZChyPT5yLnNob3VsZEZldGNoT25XaW5kb3dGb2N1cygpKTt0PT1udWxsfHx0LnJlZmV0Y2goe2NhbmNlbFJlZmV0Y2g6ITF9KSwobj1MKHRoaXMsWmUpKT09bnVsbHx8bi5jb250aW51ZSgpfW9uT25saW5lKCl7dmFyIG47Y29uc3QgdD10aGlzLm9ic2VydmVycy5maW5kKHI9PnIuc2hvdWxkRmV0Y2hPblJlY29ubmVjdCgpKTt0PT1udWxsfHx0LnJlZmV0Y2goe2NhbmNlbFJlZmV0Y2g6ITF9KSwobj1MKHRoaXMsWmUpKT09bnVsbHx8bi5jb250aW51ZSgpfWFkZE9ic2VydmVyKHQpe3RoaXMub2JzZXJ2ZXJzLmluY2x1ZGVzKHQpfHwodGhpcy5vYnNlcnZlcnMucHVzaCh0KSx0aGlzLmNsZWFyR2NUaW1lb3V0KCksTCh0aGlzLF90KS5ub3RpZnkoe3R5cGU6Im9ic2VydmVyQWRkZWQiLHF1ZXJ5OnRoaXMsb2JzZXJ2ZXI6dH0pKX1yZW1vdmVPYnNlcnZlcih0KXt0aGlzLm9ic2VydmVycy5pbmNsdWRlcyh0KSYmKHRoaXMub2JzZXJ2ZXJzPXRoaXMub2JzZXJ2ZXJzLmZpbHRlcihuPT5uIT09dCksdGhpcy5vYnNlcnZlcnMubGVuZ3RofHwoTCh0aGlzLFplKSYmKEwodGhpcyxnaSk\/TCh0aGlzLFplKS5jYW5jZWwoe3JldmVydDohMH0pOkwodGhpcyxaZSkuY2FuY2VsUmV0cnkoKSksdGhpcy5zY2hlZHVsZUdjKCkpLEwodGhpcyxfdCkubm90aWZ5KHt0eXBlOiJvYnNlcnZlclJlbW92ZWQiLHF1ZXJ5OnRoaXMsb2JzZXJ2ZXI6dH0pKX1nZXRPYnNlcnZlcnNDb3VudCgpe3JldHVybiB0aGlzLm9ic2VydmVycy5sZW5ndGh9aW52YWxpZGF0ZSgpe3RoaXMuc3RhdGUuaXNJbnZhbGlkYXRlZHx8UWUodGhpcyxzbiwkbikuY2FsbCh0aGlzLHt0eXBlOiJpbnZhbGlkYXRlIn0pfWZldGNoKHQsbil7dmFyIHUsYyxkO2lmKHRoaXMuc3RhdGUuZmV0Y2hTdGF0dXMhPT0iaWRsZSIpe2lmKHRoaXMuc3RhdGUuZGF0YSE9PXZvaWQgMCYmKG4hPW51bGwmJm4uY2FuY2VsUmVmZXRjaCkpdGhpcy5jYW5jZWwoe3NpbGVudDohMH0pO2Vsc2UgaWYoTCh0aGlzLFplKSlyZXR1cm4gTCh0aGlzLFplKS5jb250aW51ZVJldHJ5KCksTCh0aGlzLFplKS5wcm9taXNlfWlmKHQmJnRoaXMuc2V0T3B0aW9ucyh0KSwhdGhpcy5vcHRpb25zLnF1ZXJ5Rm4pe2NvbnN0IGg9dGhpcy5vYnNlcnZlcnMuZmluZChmPT5mLm9wdGlvbnMucXVlcnlGbik7aCYmdGhpcy5zZXRPcHRpb25zKGgub3B0aW9ucyl9Y29uc3Qgcj1uZXcgQWJvcnRDb250cm9sbGVyLGk9aD0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShoLCJzaWduYWwiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+KHRlKHRoaXMsZ2ksITApLHIuc2lnbmFsKX0pfSxvPSgpPT57Y29uc3QgaD1RMSh0aGlzLm9wdGlvbnMsbikseT0oKCk9Pntjb25zdCBtPXtjbGllbnQ6TCh0aGlzLG1pKSxxdWVyeUtleTp0aGlzLnF1ZXJ5S2V5LG1ldGE6dGhpcy5tZXRhfTtyZXR1cm4gaShtKSxtfSkoKTtyZXR1cm4gdGUodGhpcyxnaSwhMSksdGhpcy5vcHRpb25zLnBlcnNpc3Rlcj90aGlzLm9wdGlvbnMucGVyc2lzdGVyKGgseSx0aGlzKTpoKHkpfSxhPSgoKT0+e2NvbnN0IGg9e2ZldGNoT3B0aW9uczpuLG9wdGlvbnM6dGhpcy5vcHRpb25zLHF1ZXJ5S2V5OnRoaXMucXVlcnlLZXksY2xpZW50OkwodGhpcyxtaSksc3RhdGU6dGhpcy5zdGF0ZSxmZXRjaEZuOm99O3JldHVybiBpKGgpLGh9KSgpOyh1PXRoaXMub3B0aW9ucy5iZWhhdmlvcik9PW51bGx8fHUub25GZXRjaChhLHRoaXMpLHRlKHRoaXMscGksdGhpcy5zdGF0ZSksKHRoaXMuc3RhdGUuZmV0Y2hTdGF0dXM9PT0iaWRsZSJ8fHRoaXMuc3RhdGUuZmV0Y2hNZXRhIT09KChjPWEuZmV0Y2hPcHRpb25zKT09bnVsbD92b2lkIDA6Yy5tZXRhKSkmJlFlKHRoaXMsc24sJG4pLmNhbGwodGhpcyx7dHlwZToiZmV0Y2giLG1ldGE6KGQ9YS5mZXRjaE9wdGlvbnMpPT1udWxsP3ZvaWQgMDpkLm1ldGF9KTtjb25zdCBsPWg9Pnt2YXIgZix5LG0sdzt6YyhoKSYmaC5zaWxlbnR8fFFlKHRoaXMsc24sJG4pLmNhbGwodGhpcyx7dHlwZToiZXJyb3IiLGVycm9yOmh9KSx6YyhoKXx8KCh5PShmPUwodGhpcyxfdCkuY29uZmlnKS5vbkVycm9yKT09bnVsbHx8eS5jYWxsKGYsaCx0aGlzKSwodz0obT1MKHRoaXMsX3QpLmNvbmZpZykub25TZXR0bGVkKT09bnVsbHx8dy5jYWxsKG0sdGhpcy5zdGF0ZS5kYXRhLGgsdGhpcykpLHRoaXMuc2NoZWR1bGVHYygpfTtyZXR1cm4gdGUodGhpcyxaZSxldyh7aW5pdGlhbFByb21pc2U6bj09bnVsbD92b2lkIDA6bi5pbml0aWFsUHJvbWlzZSxmbjphLmZldGNoRm4sYWJvcnQ6ci5hYm9ydC5iaW5kKHIpLG9uU3VjY2VzczpoPT57dmFyIGYseSxtLHc7aWYoaD09PXZvaWQgMCl7bChuZXcgRXJyb3IoYCR7dGhpcy5xdWVyeUhhc2h9IGRhdGEgaXMgdW5kZWZpbmVkYCkpO3JldHVybn10cnl7dGhpcy5zZXREYXRhKGgpfWNhdGNoKHApe2wocCk7cmV0dXJufSh5PShmPUwodGhpcyxfdCkuY29uZmlnKS5vblN1Y2Nlc3MpPT1udWxsfHx5LmNhbGwoZixoLHRoaXMpLCh3PShtPUwodGhpcyxfdCkuY29uZmlnKS5vblNldHRsZWQpPT1udWxsfHx3LmNhbGwobSxoLHRoaXMuc3RhdGUuZXJyb3IsdGhpcyksdGhpcy5zY2hlZHVsZUdjKCl9LG9uRXJyb3I6bCxvbkZhaWw6KGgsZik9PntRZSh0aGlzLHNuLCRuKS5jYWxsKHRoaXMse3R5cGU6ImZhaWxlZCIsZmFpbHVyZUNvdW50OmgsZXJyb3I6Zn0pfSxvblBhdXNlOigpPT57UWUodGhpcyxzbiwkbikuY2FsbCh0aGlzLHt0eXBlOiJwYXVzZSJ9KX0sb25Db250aW51ZTooKT0+e1FlKHRoaXMsc24sJG4pLmNhbGwodGhpcyx7dHlwZToiY29udGludWUifSl9LHJldHJ5OmEub3B0aW9ucy5yZXRyeSxyZXRyeURlbGF5OmEub3B0aW9ucy5yZXRyeURlbGF5LG5ldHdvcmtNb2RlOmEub3B0aW9ucy5uZXR3b3JrTW9kZSxjYW5SdW46KCk9PiEwfSkpLEwodGhpcyxaZSkuc3RhcnQoKX19LHlvPW5ldyBXZWFrTWFwLHBpPW5ldyBXZWFrTWFwLF90PW5ldyBXZWFrTWFwLG1pPW5ldyBXZWFrTWFwLFplPW5ldyBXZWFrTWFwLG9hPW5ldyBXZWFrTWFwLGdpPW5ldyBXZWFrTWFwLHNuPW5ldyBXZWFrU2V0LCRuPWZ1bmN0aW9uKHQpe2NvbnN0IG49cj0+e3N3aXRjaCh0LnR5cGUpe2Nhc2UiZmFpbGVkIjpyZXR1cm57Li4ucixmZXRjaEZhaWx1cmVDb3VudDp0LmZhaWx1cmVDb3VudCxmZXRjaEZhaWx1cmVSZWFzb246dC5lcnJvcn07Y2FzZSJwYXVzZSI6cmV0dXJuey4uLnIsZmV0Y2hTdGF0dXM6InBhdXNlZCJ9O2Nhc2UiY29udGludWUiOnJldHVybnsuLi5yLGZldGNoU3RhdHVzOiJmZXRjaGluZyJ9O2Nhc2UiZmV0Y2giOnJldHVybnsuLi5yLC4uLmZQKHIuZGF0YSx0aGlzLm9wdGlvbnMpLGZldGNoTWV0YTp0Lm1ldGE\/P251bGx9O2Nhc2Uic3VjY2VzcyI6cmV0dXJuIHRlKHRoaXMscGksdm9pZCAwKSx7Li4ucixkYXRhOnQuZGF0YSxkYXRhVXBkYXRlQ291bnQ6ci5kYXRhVXBkYXRlQ291bnQrMSxkYXRhVXBkYXRlZEF0OnQuZGF0YVVwZGF0ZWRBdD8\/RGF0ZS5ub3coKSxlcnJvcjpudWxsLGlzSW52YWxpZGF0ZWQ6ITEsc3RhdHVzOiJzdWNjZXNzIiwuLi4hdC5tYW51YWwmJntmZXRjaFN0YXR1czoiaWRsZSIsZmV0Y2hGYWlsdXJlQ291bnQ6MCxmZXRjaEZhaWx1cmVSZWFzb246bnVsbH19O2Nhc2UiZXJyb3IiOmNvbnN0IGk9dC5lcnJvcjtyZXR1cm4gemMoaSkmJmkucmV2ZXJ0JiZMKHRoaXMscGkpP3suLi5MKHRoaXMscGkpLGZldGNoU3RhdHVzOiJpZGxlIn06ey4uLnIsZXJyb3I6aSxlcnJvclVwZGF0ZUNvdW50OnIuZXJyb3JVcGRhdGVDb3VudCsxLGVycm9yVXBkYXRlZEF0OkRhdGUubm93KCksZmV0Y2hGYWlsdXJlQ291bnQ6ci5mZXRjaEZhaWx1cmVDb3VudCsxLGZldGNoRmFpbHVyZVJlYXNvbjppLGZldGNoU3RhdHVzOiJpZGxlIixzdGF0dXM6ImVycm9yIn07Y2FzZSJpbnZhbGlkYXRlIjpyZXR1cm57Li4ucixpc0ludmFsaWRhdGVkOiEwfTtjYXNlInNldFN0YXRlIjpyZXR1cm57Li4uciwuLi50LnN0YXRlfX19O3RoaXMuc3RhdGU9bih0aGlzLnN0YXRlKSxhdC5iYXRjaCgoKT0+e3RoaXMub2JzZXJ2ZXJzLmZvckVhY2gocj0+e3Iub25RdWVyeVVwZGF0ZSgpfSksTCh0aGlzLF90KS5ub3RpZnkoe3F1ZXJ5OnRoaXMsdHlwZToidXBkYXRlZCIsYWN0aW9uOnR9KX0pfSxOMCk7ZnVuY3Rpb24gZlAoZSx0KXtyZXR1cm57ZmV0Y2hGYWlsdXJlQ291bnQ6MCxmZXRjaEZhaWx1cmVSZWFzb246bnVsbCxmZXRjaFN0YXR1czpKMSh0Lm5ldHdvcmtNb2RlKT8iZmV0Y2hpbmciOiJwYXVzZWQiLC4uLmU9PT12b2lkIDAmJntlcnJvcjpudWxsLHN0YXR1czoicGVuZGluZyJ9fX1mdW5jdGlvbiBoUChlKXtjb25zdCB0PXR5cGVvZiBlLmluaXRpYWxEYXRhPT0iZnVuY3Rpb24iP2UuaW5pdGlhbERhdGEoKTplLmluaXRpYWxEYXRhLG49dCE9PXZvaWQgMCxyPW4\/dHlwZW9mIGUuaW5pdGlhbERhdGFVcGRhdGVkQXQ9PSJmdW5jdGlvbiI\/ZS5pbml0aWFsRGF0YVVwZGF0ZWRBdCgpOmUuaW5pdGlhbERhdGFVcGRhdGVkQXQ6MDtyZXR1cm57ZGF0YTp0LGRhdGFVcGRhdGVDb3VudDowLGRhdGFVcGRhdGVkQXQ6bj9yPz9EYXRlLm5vdygpOjAsZXJyb3I6bnVsbCxlcnJvclVwZGF0ZUNvdW50OjAsZXJyb3JVcGRhdGVkQXQ6MCxmZXRjaEZhaWx1cmVDb3VudDowLGZldGNoRmFpbHVyZVJlYXNvbjpudWxsLGZldGNoTWV0YTpudWxsLGlzSW52YWxpZGF0ZWQ6ITEsc3RhdHVzOm4\/InN1Y2Nlc3MiOiJwZW5kaW5nIixmZXRjaFN0YXR1czoiaWRsZSJ9fXZhciBTbixqMCxwUD0oajA9Y2xhc3MgZXh0ZW5kcyB6dXtjb25zdHJ1Y3Rvcih0PXt9KXtzdXBlcigpO2NlKHRoaXMsU24pO3RoaXMuY29uZmlnPXQsdGUodGhpcyxTbixuZXcgTWFwKX1idWlsZCh0LG4scil7Y29uc3QgaT1uLnF1ZXJ5S2V5LG89bi5xdWVyeUhhc2g\/P3RwKGksbik7bGV0IHM9dGhpcy5nZXQobyk7cmV0dXJuIHN8fChzPW5ldyBkUCh7Y2xpZW50OnQscXVlcnlLZXk6aSxxdWVyeUhhc2g6byxvcHRpb25zOnQuZGVmYXVsdFF1ZXJ5T3B0aW9ucyhuKSxzdGF0ZTpyLGRlZmF1bHRPcHRpb25zOnQuZ2V0UXVlcnlEZWZhdWx0cyhpKX0pLHRoaXMuYWRkKHMpKSxzfWFkZCh0KXtMKHRoaXMsU24pLmhhcyh0LnF1ZXJ5SGFzaCl8fChMKHRoaXMsU24pLnNldCh0LnF1ZXJ5SGFzaCx0KSx0aGlzLm5vdGlmeSh7dHlwZToiYWRkZWQiLHF1ZXJ5OnR9KSl9cmVtb3ZlKHQpe2NvbnN0IG49TCh0aGlzLFNuKS5nZXQodC5xdWVyeUhhc2gpO24mJih0LmRlc3Ryb3koKSxuPT09dCYmTCh0aGlzLFNuKS5kZWxldGUodC5xdWVyeUhhc2gpLHRoaXMubm90aWZ5KHt0eXBlOiJyZW1vdmVkIixxdWVyeTp0fSkpfWNsZWFyKCl7YXQuYmF0Y2goKCk9Pnt0aGlzLmdldEFsbCgpLmZvckVhY2godD0+e3RoaXMucmVtb3ZlKHQpfSl9KX1nZXQodCl7cmV0dXJuIEwodGhpcyxTbikuZ2V0KHQpfWdldEFsbCgpe3JldHVyblsuLi5MKHRoaXMsU24pLnZhbHVlcygpXX1maW5kKHQpe2NvbnN0IG49e2V4YWN0OiEwLC4uLnR9O3JldHVybiB0aGlzLmdldEFsbCgpLmZpbmQocj0+amcobixyKSl9ZmluZEFsbCh0PXt9KXtjb25zdCBuPXRoaXMuZ2V0QWxsKCk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmxlbmd0aD4wP24uZmlsdGVyKHI9PmpnKHQscikpOm59bm90aWZ5KHQpe2F0LmJhdGNoKCgpPT57dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChuPT57bih0KX0pfSl9b25Gb2N1cygpe2F0LmJhdGNoKCgpPT57dGhpcy5nZXRBbGwoKS5mb3JFYWNoKHQ9Pnt0Lm9uRm9jdXMoKX0pfSl9b25PbmxpbmUoKXthdC5iYXRjaCgoKT0+e3RoaXMuZ2V0QWxsKCkuZm9yRWFjaCh0PT57dC5vbk9ubGluZSgpfSl9KX19LFNuPW5ldyBXZWFrTWFwLGowKSxDbixvdCx5aSxUbixocix6MCxtUD0oejA9Y2xhc3MgZXh0ZW5kcyB0d3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpO2NlKHRoaXMsVG4pO2NlKHRoaXMsQ24pO2NlKHRoaXMsb3QpO2NlKHRoaXMseWkpO3RoaXMubXV0YXRpb25JZD10Lm11dGF0aW9uSWQsdGUodGhpcyxvdCx0Lm11dGF0aW9uQ2FjaGUpLHRlKHRoaXMsQ24sW10pLHRoaXMuc3RhdGU9dC5zdGF0ZXx8Z1AoKSx0aGlzLnNldE9wdGlvbnModC5vcHRpb25zKSx0aGlzLnNjaGVkdWxlR2MoKX1zZXRPcHRpb25zKHQpe3RoaXMub3B0aW9ucz10LHRoaXMudXBkYXRlR2NUaW1lKHRoaXMub3B0aW9ucy5nY1RpbWUpfWdldCBtZXRhKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5tZXRhfWFkZE9ic2VydmVyKHQpe0wodGhpcyxDbikuaW5jbHVkZXModCl8fChMKHRoaXMsQ24pLnB1c2godCksdGhpcy5jbGVhckdjVGltZW91dCgpLEwodGhpcyxvdCkubm90aWZ5KHt0eXBlOiJvYnNlcnZlckFkZGVkIixtdXRhdGlvbjp0aGlzLG9ic2VydmVyOnR9KSl9cmVtb3ZlT2JzZXJ2ZXIodCl7dGUodGhpcyxDbixMKHRoaXMsQ24pLmZpbHRlcihuPT5uIT09dCkpLHRoaXMuc2NoZWR1bGVHYygpLEwodGhpcyxvdCkubm90aWZ5KHt0eXBlOiJvYnNlcnZlclJlbW92ZWQiLG11dGF0aW9uOnRoaXMsb2JzZXJ2ZXI6dH0pfW9wdGlvbmFsUmVtb3ZlKCl7TCh0aGlzLENuKS5sZW5ndGh8fCh0aGlzLnN0YXRlLnN0YXR1cz09PSJwZW5kaW5nIj90aGlzLnNjaGVkdWxlR2MoKTpMKHRoaXMsb3QpLnJlbW92ZSh0aGlzKSl9Y29udGludWUoKXt2YXIgdDtyZXR1cm4oKHQ9TCh0aGlzLHlpKSk9PW51bGw\/dm9pZCAwOnQuY29udGludWUoKSk\/P3RoaXMuZXhlY3V0ZSh0aGlzLnN0YXRlLnZhcmlhYmxlcyl9YXN5bmMgZXhlY3V0ZSh0KXt2YXIgbyxzLGEsbCx1LGMsZCxoLGYseSxtLHcscCx2LHgsayxULEMsUCxBO2NvbnN0IG49KCk9PntRZSh0aGlzLFRuLGhyKS5jYWxsKHRoaXMse3R5cGU6ImNvbnRpbnVlIn0pfTt0ZSh0aGlzLHlpLGV3KHtmbjooKT0+dGhpcy5vcHRpb25zLm11dGF0aW9uRm4\/dGhpcy5vcHRpb25zLm11dGF0aW9uRm4odCk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJObyBtdXRhdGlvbkZuIGZvdW5kIikpLG9uRmFpbDooaixJKT0+e1FlKHRoaXMsVG4saHIpLmNhbGwodGhpcyx7dHlwZToiZmFpbGVkIixmYWlsdXJlQ291bnQ6aixlcnJvcjpJfSl9LG9uUGF1c2U6KCk9PntRZSh0aGlzLFRuLGhyKS5jYWxsKHRoaXMse3R5cGU6InBhdXNlIn0pfSxvbkNvbnRpbnVlOm4scmV0cnk6dGhpcy5vcHRpb25zLnJldHJ5Pz8wLHJldHJ5RGVsYXk6dGhpcy5vcHRpb25zLnJldHJ5RGVsYXksbmV0d29ya01vZGU6dGhpcy5vcHRpb25zLm5ldHdvcmtNb2RlLGNhblJ1bjooKT0+TCh0aGlzLG90KS5jYW5SdW4odGhpcyl9KSk7Y29uc3Qgcj10aGlzLnN0YXRlLnN0YXR1cz09PSJwZW5kaW5nIixpPSFMKHRoaXMseWkpLmNhblN0YXJ0KCk7dHJ5e2lmKHIpbigpO2Vsc2V7UWUodGhpcyxUbixocikuY2FsbCh0aGlzLHt0eXBlOiJwZW5kaW5nIix2YXJpYWJsZXM6dCxpc1BhdXNlZDppfSksYXdhaXQoKHM9KG89TCh0aGlzLG90KS5jb25maWcpLm9uTXV0YXRlKT09bnVsbD92b2lkIDA6cy5jYWxsKG8sdCx0aGlzKSk7Y29uc3QgST1hd2FpdCgobD0oYT10aGlzLm9wdGlvbnMpLm9uTXV0YXRlKT09bnVsbD92b2lkIDA6bC5jYWxsKGEsdCkpO0khPT10aGlzLnN0YXRlLmNvbnRleHQmJlFlKHRoaXMsVG4saHIpLmNhbGwodGhpcyx7dHlwZToicGVuZGluZyIsY29udGV4dDpJLHZhcmlhYmxlczp0LGlzUGF1c2VkOml9KX1jb25zdCBqPWF3YWl0IEwodGhpcyx5aSkuc3RhcnQoKTtyZXR1cm4gYXdhaXQoKGM9KHU9TCh0aGlzLG90KS5jb25maWcpLm9uU3VjY2Vzcyk9PW51bGw\/dm9pZCAwOmMuY2FsbCh1LGosdCx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcykpLGF3YWl0KChoPShkPXRoaXMub3B0aW9ucykub25TdWNjZXNzKT09bnVsbD92b2lkIDA6aC5jYWxsKGQsaix0LHRoaXMuc3RhdGUuY29udGV4dCkpLGF3YWl0KCh5PShmPUwodGhpcyxvdCkuY29uZmlnKS5vblNldHRsZWQpPT1udWxsP3ZvaWQgMDp5LmNhbGwoZixqLG51bGwsdGhpcy5zdGF0ZS52YXJpYWJsZXMsdGhpcy5zdGF0ZS5jb250ZXh0LHRoaXMpKSxhd2FpdCgodz0obT10aGlzLm9wdGlvbnMpLm9uU2V0dGxlZCk9PW51bGw\/dm9pZCAwOncuY2FsbChtLGosbnVsbCx0LHRoaXMuc3RhdGUuY29udGV4dCkpLFFlKHRoaXMsVG4saHIpLmNhbGwodGhpcyx7dHlwZToic3VjY2VzcyIsZGF0YTpqfSksan1jYXRjaChqKXt0cnl7dGhyb3cgYXdhaXQoKHY9KHA9TCh0aGlzLG90KS5jb25maWcpLm9uRXJyb3IpPT1udWxsP3ZvaWQgMDp2LmNhbGwocCxqLHQsdGhpcy5zdGF0ZS5jb250ZXh0LHRoaXMpKSxhd2FpdCgoaz0oeD10aGlzLm9wdGlvbnMpLm9uRXJyb3IpPT1udWxsP3ZvaWQgMDprLmNhbGwoeCxqLHQsdGhpcy5zdGF0ZS5jb250ZXh0KSksYXdhaXQoKEM9KFQ9TCh0aGlzLG90KS5jb25maWcpLm9uU2V0dGxlZCk9PW51bGw\/dm9pZCAwOkMuY2FsbChULHZvaWQgMCxqLHRoaXMuc3RhdGUudmFyaWFibGVzLHRoaXMuc3RhdGUuY29udGV4dCx0aGlzKSksYXdhaXQoKEE9KFA9dGhpcy5vcHRpb25zKS5vblNldHRsZWQpPT1udWxsP3ZvaWQgMDpBLmNhbGwoUCx2b2lkIDAsaix0LHRoaXMuc3RhdGUuY29udGV4dCkpLGp9ZmluYWxseXtRZSh0aGlzLFRuLGhyKS5jYWxsKHRoaXMse3R5cGU6ImVycm9yIixlcnJvcjpqfSl9fWZpbmFsbHl7TCh0aGlzLG90KS5ydW5OZXh0KHRoaXMpfX19LENuPW5ldyBXZWFrTWFwLG90PW5ldyBXZWFrTWFwLHlpPW5ldyBXZWFrTWFwLFRuPW5ldyBXZWFrU2V0LGhyPWZ1bmN0aW9uKHQpe2NvbnN0IG49cj0+e3N3aXRjaCh0LnR5cGUpe2Nhc2UiZmFpbGVkIjpyZXR1cm57Li4ucixmYWlsdXJlQ291bnQ6dC5mYWlsdXJlQ291bnQsZmFpbHVyZVJlYXNvbjp0LmVycm9yfTtjYXNlInBhdXNlIjpyZXR1cm57Li4ucixpc1BhdXNlZDohMH07Y2FzZSJjb250aW51ZSI6cmV0dXJuey4uLnIsaXNQYXVzZWQ6ITF9O2Nhc2UicGVuZGluZyI6cmV0dXJuey4uLnIsY29udGV4dDp0LmNvbnRleHQsZGF0YTp2b2lkIDAsZmFpbHVyZUNvdW50OjAsZmFpbHVyZVJlYXNvbjpudWxsLGVycm9yOm51bGwsaXNQYXVzZWQ6dC5pc1BhdXNlZCxzdGF0dXM6InBlbmRpbmciLHZhcmlhYmxlczp0LnZhcmlhYmxlcyxzdWJtaXR0ZWRBdDpEYXRlLm5vdygpfTtjYXNlInN1Y2Nlc3MiOnJldHVybnsuLi5yLGRhdGE6dC5kYXRhLGZhaWx1cmVDb3VudDowLGZhaWx1cmVSZWFzb246bnVsbCxlcnJvcjpudWxsLHN0YXR1czoic3VjY2VzcyIsaXNQYXVzZWQ6ITF9O2Nhc2UiZXJyb3IiOnJldHVybnsuLi5yLGRhdGE6dm9pZCAwLGVycm9yOnQuZXJyb3IsZmFpbHVyZUNvdW50OnIuZmFpbHVyZUNvdW50KzEsZmFpbHVyZVJlYXNvbjp0LmVycm9yLGlzUGF1c2VkOiExLHN0YXR1czoiZXJyb3IifX19O3RoaXMuc3RhdGU9bih0aGlzLnN0YXRlKSxhdC5iYXRjaCgoKT0+e0wodGhpcyxDbikuZm9yRWFjaChyPT57ci5vbk11dGF0aW9uVXBkYXRlKHQpfSksTCh0aGlzLG90KS5ub3RpZnkoe211dGF0aW9uOnRoaXMsdHlwZToidXBkYXRlZCIsYWN0aW9uOnR9KX0pfSx6MCk7ZnVuY3Rpb24gZ1AoKXtyZXR1cm57Y29udGV4dDp2b2lkIDAsZGF0YTp2b2lkIDAsZXJyb3I6bnVsbCxmYWlsdXJlQ291bnQ6MCxmYWlsdXJlUmVhc29uOm51bGwsaXNQYXVzZWQ6ITEsc3RhdHVzOiJpZGxlIix2YXJpYWJsZXM6dm9pZCAwLHN1Ym1pdHRlZEF0OjB9fXZhciBXbixhbixzYSxSMCx5UD0oUjA9Y2xhc3MgZXh0ZW5kcyB6dXtjb25zdHJ1Y3Rvcih0PXt9KXtzdXBlcigpO2NlKHRoaXMsV24pO2NlKHRoaXMsYW4pO2NlKHRoaXMsc2EpO3RoaXMuY29uZmlnPXQsdGUodGhpcyxXbixuZXcgU2V0KSx0ZSh0aGlzLGFuLG5ldyBNYXApLHRlKHRoaXMsc2EsMCl9YnVpbGQodCxuLHIpe2NvbnN0IGk9bmV3IG1QKHttdXRhdGlvbkNhY2hlOnRoaXMsbXV0YXRpb25JZDorK0NhKHRoaXMsc2EpLl8sb3B0aW9uczp0LmRlZmF1bHRNdXRhdGlvbk9wdGlvbnMobiksc3RhdGU6cn0pO3JldHVybiB0aGlzLmFkZChpKSxpfWFkZCh0KXtMKHRoaXMsV24pLmFkZCh0KTtjb25zdCBuPVVhKHQpO2lmKHR5cGVvZiBuPT0ic3RyaW5nIil7Y29uc3Qgcj1MKHRoaXMsYW4pLmdldChuKTtyP3IucHVzaCh0KTpMKHRoaXMsYW4pLnNldChuLFt0XSl9dGhpcy5ub3RpZnkoe3R5cGU6ImFkZGVkIixtdXRhdGlvbjp0fSl9cmVtb3ZlKHQpe2lmKEwodGhpcyxXbikuZGVsZXRlKHQpKXtjb25zdCBuPVVhKHQpO2lmKHR5cGVvZiBuPT0ic3RyaW5nIil7Y29uc3Qgcj1MKHRoaXMsYW4pLmdldChuKTtpZihyKWlmKHIubGVuZ3RoPjEpe2NvbnN0IGk9ci5pbmRleE9mKHQpO2khPT0tMSYmci5zcGxpY2UoaSwxKX1lbHNlIHJbMF09PT10JiZMKHRoaXMsYW4pLmRlbGV0ZShuKX19dGhpcy5ub3RpZnkoe3R5cGU6InJlbW92ZWQiLG11dGF0aW9uOnR9KX1jYW5SdW4odCl7Y29uc3Qgbj1VYSh0KTtpZih0eXBlb2Ygbj09InN0cmluZyIpe2NvbnN0IHI9TCh0aGlzLGFuKS5nZXQobiksaT1yPT1udWxsP3ZvaWQgMDpyLmZpbmQobz0+by5zdGF0ZS5zdGF0dXM9PT0icGVuZGluZyIpO3JldHVybiFpfHxpPT09dH1lbHNlIHJldHVybiEwfXJ1bk5leHQodCl7dmFyIHI7Y29uc3Qgbj1VYSh0KTtpZih0eXBlb2Ygbj09InN0cmluZyIpe2NvbnN0IGk9KHI9TCh0aGlzLGFuKS5nZXQobikpPT1udWxsP3ZvaWQgMDpyLmZpbmQobz0+byE9PXQmJm8uc3RhdGUuaXNQYXVzZWQpO3JldHVybihpPT1udWxsP3ZvaWQgMDppLmNvbnRpbnVlKCkpPz9Qcm9taXNlLnJlc29sdmUoKX1lbHNlIHJldHVybiBQcm9taXNlLnJlc29sdmUoKX1jbGVhcigpe2F0LmJhdGNoKCgpPT57TCh0aGlzLFduKS5mb3JFYWNoKHQ9Pnt0aGlzLm5vdGlmeSh7dHlwZToicmVtb3ZlZCIsbXV0YXRpb246dH0pfSksTCh0aGlzLFduKS5jbGVhcigpLEwodGhpcyxhbikuY2xlYXIoKX0pfWdldEFsbCgpe3JldHVybiBBcnJheS5mcm9tKEwodGhpcyxXbikpfWZpbmQodCl7Y29uc3Qgbj17ZXhhY3Q6ITAsLi4udH07cmV0dXJuIHRoaXMuZ2V0QWxsKCkuZmluZChyPT56ZyhuLHIpKX1maW5kQWxsKHQ9e30pe3JldHVybiB0aGlzLmdldEFsbCgpLmZpbHRlcihuPT56Zyh0LG4pKX1ub3RpZnkodCl7YXQuYmF0Y2goKCk9Pnt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKG49PntuKHQpfSl9KX1yZXN1bWVQYXVzZWRNdXRhdGlvbnMoKXtjb25zdCB0PXRoaXMuZ2V0QWxsKCkuZmlsdGVyKG49Pm4uc3RhdGUuaXNQYXVzZWQpO3JldHVybiBhdC5iYXRjaCgoKT0+UHJvbWlzZS5hbGwodC5tYXAobj0+bi5jb250aW51ZSgpLmNhdGNoKG9uKSkpKX19LFduPW5ldyBXZWFrTWFwLGFuPW5ldyBXZWFrTWFwLHNhPW5ldyBXZWFrTWFwLFIwKTtmdW5jdGlvbiBVYShlKXt2YXIgdDtyZXR1cm4odD1lLm9wdGlvbnMuc2NvcGUpPT1udWxsP3ZvaWQgMDp0LmlkfWZ1bmN0aW9uIE1nKGUpe3JldHVybntvbkZldGNoOih0LG4pPT57dmFyIGMsZCxoLGYseTtjb25zdCByPXQub3B0aW9ucyxpPShoPShkPShjPXQuZmV0Y2hPcHRpb25zKT09bnVsbD92b2lkIDA6Yy5tZXRhKT09bnVsbD92b2lkIDA6ZC5mZXRjaE1vcmUpPT1udWxsP3ZvaWQgMDpoLmRpcmVjdGlvbixvPSgoZj10LnN0YXRlLmRhdGEpPT1udWxsP3ZvaWQgMDpmLnBhZ2VzKXx8W10scz0oKHk9dC5zdGF0ZS5kYXRhKT09bnVsbD92b2lkIDA6eS5wYWdlUGFyYW1zKXx8W107bGV0IGE9e3BhZ2VzOltdLHBhZ2VQYXJhbXM6W119LGw9MDtjb25zdCB1PWFzeW5jKCk9PntsZXQgbT0hMTtjb25zdCB3PXg9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwic2lnbmFsIix7ZW51bWVyYWJsZTohMCxnZXQ6KCk9Pih0LnNpZ25hbC5hYm9ydGVkP209ITA6dC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLCgpPT57bT0hMH0pLHQuc2lnbmFsKX0pfSxwPVExKHQub3B0aW9ucyx0LmZldGNoT3B0aW9ucyksdj1hc3luYyh4LGssVCk9PntpZihtKXJldHVybiBQcm9taXNlLnJlamVjdCgpO2lmKGs9PW51bGwmJngucGFnZXMubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoeCk7Y29uc3QgUD0oKCk9Pntjb25zdCBNPXtjbGllbnQ6dC5jbGllbnQscXVlcnlLZXk6dC5xdWVyeUtleSxwYWdlUGFyYW06ayxkaXJlY3Rpb246VD8iYmFja3dhcmQiOiJmb3J3YXJkIixtZXRhOnQub3B0aW9ucy5tZXRhfTtyZXR1cm4gdyhNKSxNfSkoKSxBPWF3YWl0IHAoUCkse21heFBhZ2VzOmp9PXQub3B0aW9ucyxJPVQ\/aVA6clA7cmV0dXJue3BhZ2VzOkkoeC5wYWdlcyxBLGopLHBhZ2VQYXJhbXM6SSh4LnBhZ2VQYXJhbXMsayxqKX19O2lmKGkmJm8ubGVuZ3RoKXtjb25zdCB4PWk9PT0iYmFja3dhcmQiLGs9eD92UDpMZyxUPXtwYWdlczpvLHBhZ2VQYXJhbXM6c30sQz1rKHIsVCk7YT1hd2FpdCB2KFQsQyx4KX1lbHNle2NvbnN0IHg9ZT8\/by5sZW5ndGg7ZG97Y29uc3Qgaz1sPT09MD9zWzBdPz9yLmluaXRpYWxQYWdlUGFyYW06TGcocixhKTtpZihsPjAmJms9PW51bGwpYnJlYWs7YT1hd2FpdCB2KGEsayksbCsrfXdoaWxlKGw8eCl9cmV0dXJuIGF9O3Qub3B0aW9ucy5wZXJzaXN0ZXI\/dC5mZXRjaEZuPSgpPT57dmFyIG0sdztyZXR1cm4odz0obT10Lm9wdGlvbnMpLnBlcnNpc3Rlcik9PW51bGw\/dm9pZCAwOncuY2FsbChtLHUse2NsaWVudDp0LmNsaWVudCxxdWVyeUtleTp0LnF1ZXJ5S2V5LG1ldGE6dC5vcHRpb25zLm1ldGEsc2lnbmFsOnQuc2lnbmFsfSxuKX06dC5mZXRjaEZuPXV9fX1mdW5jdGlvbiBMZyhlLHtwYWdlczp0LHBhZ2VQYXJhbXM6bn0pe2NvbnN0IHI9dC5sZW5ndGgtMTtyZXR1cm4gdC5sZW5ndGg+MD9lLmdldE5leHRQYWdlUGFyYW0odFtyXSx0LG5bcl0sbik6dm9pZCAwfWZ1bmN0aW9uIHZQKGUse3BhZ2VzOnQscGFnZVBhcmFtczpufSl7dmFyIHI7cmV0dXJuIHQubGVuZ3RoPjA\/KHI9ZS5nZXRQcmV2aW91c1BhZ2VQYXJhbSk9PW51bGw\/dm9pZCAwOnIuY2FsbChlLHRbMF0sdCxuWzBdLG4pOnZvaWQgMH12YXIgTmUsa3IsU3Isdm8seG8sQ3Isd28sYm8sRDAseFA9KEQwPWNsYXNze2NvbnN0cnVjdG9yKGU9e30pe2NlKHRoaXMsTmUpO2NlKHRoaXMsa3IpO2NlKHRoaXMsU3IpO2NlKHRoaXMsdm8pO2NlKHRoaXMseG8pO2NlKHRoaXMsQ3IpO2NlKHRoaXMsd28pO2NlKHRoaXMsYm8pO3RlKHRoaXMsTmUsZS5xdWVyeUNhY2hlfHxuZXcgcFApLHRlKHRoaXMsa3IsZS5tdXRhdGlvbkNhY2hlfHxuZXcgeVApLHRlKHRoaXMsU3IsZS5kZWZhdWx0T3B0aW9uc3x8e30pLHRlKHRoaXMsdm8sbmV3IE1hcCksdGUodGhpcyx4byxuZXcgTWFwKSx0ZSh0aGlzLENyLDApfW1vdW50KCl7Q2EodGhpcyxDcikuXysrLEwodGhpcyxDcik9PT0xJiYodGUodGhpcyx3byxYMS5zdWJzY3JpYmUoYXN5bmMgZT0+e2UmJihhd2FpdCB0aGlzLnJlc3VtZVBhdXNlZE11dGF0aW9ucygpLEwodGhpcyxOZSkub25Gb2N1cygpKX0pKSx0ZSh0aGlzLGJvLFFsLnN1YnNjcmliZShhc3luYyBlPT57ZSYmKGF3YWl0IHRoaXMucmVzdW1lUGF1c2VkTXV0YXRpb25zKCksTCh0aGlzLE5lKS5vbk9ubGluZSgpKX0pKSl9dW5tb3VudCgpe3ZhciBlLHQ7Q2EodGhpcyxDcikuXy0tLEwodGhpcyxDcik9PT0wJiYoKGU9TCh0aGlzLHdvKSk9PW51bGx8fGUuY2FsbCh0aGlzKSx0ZSh0aGlzLHdvLHZvaWQgMCksKHQ9TCh0aGlzLGJvKSk9PW51bGx8fHQuY2FsbCh0aGlzKSx0ZSh0aGlzLGJvLHZvaWQgMCkpfWlzRmV0Y2hpbmcoZSl7cmV0dXJuIEwodGhpcyxOZSkuZmluZEFsbCh7Li4uZSxmZXRjaFN0YXR1czoiZmV0Y2hpbmcifSkubGVuZ3RofWlzTXV0YXRpbmcoZSl7cmV0dXJuIEwodGhpcyxrcikuZmluZEFsbCh7Li4uZSxzdGF0dXM6InBlbmRpbmcifSkubGVuZ3RofWdldFF1ZXJ5RGF0YShlKXt2YXIgbjtjb25zdCB0PXRoaXMuZGVmYXVsdFF1ZXJ5T3B0aW9ucyh7cXVlcnlLZXk6ZX0pO3JldHVybihuPUwodGhpcyxOZSkuZ2V0KHQucXVlcnlIYXNoKSk9PW51bGw\/dm9pZCAwOm4uc3RhdGUuZGF0YX1lbnN1cmVRdWVyeURhdGEoZSl7Y29uc3QgdD10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnMoZSksbj1MKHRoaXMsTmUpLmJ1aWxkKHRoaXMsdCkscj1uLnN0YXRlLmRhdGE7cmV0dXJuIHI9PT12b2lkIDA\/dGhpcy5mZXRjaFF1ZXJ5KGUpOihlLnJldmFsaWRhdGVJZlN0YWxlJiZuLmlzU3RhbGVCeVRpbWUobGYodC5zdGFsZVRpbWUsbikpJiZ0aGlzLnByZWZldGNoUXVlcnkodCksUHJvbWlzZS5yZXNvbHZlKHIpKX1nZXRRdWVyaWVzRGF0YShlKXtyZXR1cm4gTCh0aGlzLE5lKS5maW5kQWxsKGUpLm1hcCgoe3F1ZXJ5S2V5OnQsc3RhdGU6bn0pPT57Y29uc3Qgcj1uLmRhdGE7cmV0dXJuW3Qscl19KX1zZXRRdWVyeURhdGEoZSx0LG4pe2NvbnN0IHI9dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHtxdWVyeUtleTplfSksaT1MKHRoaXMsTmUpLmdldChyLnF1ZXJ5SGFzaCksbz1pPT1udWxsP3ZvaWQgMDppLnN0YXRlLmRhdGEscz1YRSh0LG8pO2lmKHMhPT12b2lkIDApcmV0dXJuIEwodGhpcyxOZSkuYnVpbGQodGhpcyxyKS5zZXREYXRhKHMsey4uLm4sbWFudWFsOiEwfSl9c2V0UXVlcmllc0RhdGEoZSx0LG4pe3JldHVybiBhdC5iYXRjaCgoKT0+TCh0aGlzLE5lKS5maW5kQWxsKGUpLm1hcCgoe3F1ZXJ5S2V5OnJ9KT0+W3IsdGhpcy5zZXRRdWVyeURhdGEocix0LG4pXSkpfWdldFF1ZXJ5U3RhdGUoZSl7dmFyIG47Y29uc3QgdD10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnMoe3F1ZXJ5S2V5OmV9KTtyZXR1cm4obj1MKHRoaXMsTmUpLmdldCh0LnF1ZXJ5SGFzaCkpPT1udWxsP3ZvaWQgMDpuLnN0YXRlfXJlbW92ZVF1ZXJpZXMoZSl7Y29uc3QgdD1MKHRoaXMsTmUpO2F0LmJhdGNoKCgpPT57dC5maW5kQWxsKGUpLmZvckVhY2gobj0+e3QucmVtb3ZlKG4pfSl9KX1yZXNldFF1ZXJpZXMoZSx0KXtjb25zdCBuPUwodGhpcyxOZSk7cmV0dXJuIGF0LmJhdGNoKCgpPT4obi5maW5kQWxsKGUpLmZvckVhY2gocj0+e3IucmVzZXQoKX0pLHRoaXMucmVmZXRjaFF1ZXJpZXMoe3R5cGU6ImFjdGl2ZSIsLi4uZX0sdCkpKX1jYW5jZWxRdWVyaWVzKGUsdD17fSl7Y29uc3Qgbj17cmV2ZXJ0OiEwLC4uLnR9LHI9YXQuYmF0Y2goKCk9PkwodGhpcyxOZSkuZmluZEFsbChlKS5tYXAoaT0+aS5jYW5jZWwobikpKTtyZXR1cm4gUHJvbWlzZS5hbGwocikudGhlbihvbikuY2F0Y2gob24pfWludmFsaWRhdGVRdWVyaWVzKGUsdD17fSl7cmV0dXJuIGF0LmJhdGNoKCgpPT4oTCh0aGlzLE5lKS5maW5kQWxsKGUpLmZvckVhY2gobj0+e24uaW52YWxpZGF0ZSgpfSksKGU9PW51bGw\/dm9pZCAwOmUucmVmZXRjaFR5cGUpPT09Im5vbmUiP1Byb21pc2UucmVzb2x2ZSgpOnRoaXMucmVmZXRjaFF1ZXJpZXMoey4uLmUsdHlwZTooZT09bnVsbD92b2lkIDA6ZS5yZWZldGNoVHlwZSk\/PyhlPT1udWxsP3ZvaWQgMDplLnR5cGUpPz8iYWN0aXZlIn0sdCkpKX1yZWZldGNoUXVlcmllcyhlLHQ9e30pe2NvbnN0IG49ey4uLnQsY2FuY2VsUmVmZXRjaDp0LmNhbmNlbFJlZmV0Y2g\/PyEwfSxyPWF0LmJhdGNoKCgpPT5MKHRoaXMsTmUpLmZpbmRBbGwoZSkuZmlsdGVyKGk9PiFpLmlzRGlzYWJsZWQoKSYmIWkuaXNTdGF0aWMoKSkubWFwKGk9PntsZXQgbz1pLmZldGNoKHZvaWQgMCxuKTtyZXR1cm4gbi50aHJvd09uRXJyb3J8fChvPW8uY2F0Y2gob24pKSxpLnN0YXRlLmZldGNoU3RhdHVzPT09InBhdXNlZCI\/UHJvbWlzZS5yZXNvbHZlKCk6b30pKTtyZXR1cm4gUHJvbWlzZS5hbGwocikudGhlbihvbil9ZmV0Y2hRdWVyeShlKXtjb25zdCB0PXRoaXMuZGVmYXVsdFF1ZXJ5T3B0aW9ucyhlKTt0LnJldHJ5PT09dm9pZCAwJiYodC5yZXRyeT0hMSk7Y29uc3Qgbj1MKHRoaXMsTmUpLmJ1aWxkKHRoaXMsdCk7cmV0dXJuIG4uaXNTdGFsZUJ5VGltZShsZih0LnN0YWxlVGltZSxuKSk\/bi5mZXRjaCh0KTpQcm9taXNlLnJlc29sdmUobi5zdGF0ZS5kYXRhKX1wcmVmZXRjaFF1ZXJ5KGUpe3JldHVybiB0aGlzLmZldGNoUXVlcnkoZSkudGhlbihvbikuY2F0Y2gob24pfWZldGNoSW5maW5pdGVRdWVyeShlKXtyZXR1cm4gZS5iZWhhdmlvcj1NZyhlLnBhZ2VzKSx0aGlzLmZldGNoUXVlcnkoZSl9cHJlZmV0Y2hJbmZpbml0ZVF1ZXJ5KGUpe3JldHVybiB0aGlzLmZldGNoSW5maW5pdGVRdWVyeShlKS50aGVuKG9uKS5jYXRjaChvbil9ZW5zdXJlSW5maW5pdGVRdWVyeURhdGEoZSl7cmV0dXJuIGUuYmVoYXZpb3I9TWcoZS5wYWdlcyksdGhpcy5lbnN1cmVRdWVyeURhdGEoZSl9cmVzdW1lUGF1c2VkTXV0YXRpb25zKCl7cmV0dXJuIFFsLmlzT25saW5lKCk\/TCh0aGlzLGtyKS5yZXN1bWVQYXVzZWRNdXRhdGlvbnMoKTpQcm9taXNlLnJlc29sdmUoKX1nZXRRdWVyeUNhY2hlKCl7cmV0dXJuIEwodGhpcyxOZSl9Z2V0TXV0YXRpb25DYWNoZSgpe3JldHVybiBMKHRoaXMsa3IpfWdldERlZmF1bHRPcHRpb25zKCl7cmV0dXJuIEwodGhpcyxTcil9c2V0RGVmYXVsdE9wdGlvbnMoZSl7dGUodGhpcyxTcixlKX1zZXRRdWVyeURlZmF1bHRzKGUsdCl7TCh0aGlzLHZvKS5zZXQoV3MoZSkse3F1ZXJ5S2V5OmUsZGVmYXVsdE9wdGlvbnM6dH0pfWdldFF1ZXJ5RGVmYXVsdHMoZSl7Y29uc3QgdD1bLi4uTCh0aGlzLHZvKS52YWx1ZXMoKV0sbj17fTtyZXR1cm4gdC5mb3JFYWNoKHI9PntLcyhlLHIucXVlcnlLZXkpJiZPYmplY3QuYXNzaWduKG4sci5kZWZhdWx0T3B0aW9ucyl9KSxufXNldE11dGF0aW9uRGVmYXVsdHMoZSx0KXtMKHRoaXMseG8pLnNldChXcyhlKSx7bXV0YXRpb25LZXk6ZSxkZWZhdWx0T3B0aW9uczp0fSl9Z2V0TXV0YXRpb25EZWZhdWx0cyhlKXtjb25zdCB0PVsuLi5MKHRoaXMseG8pLnZhbHVlcygpXSxuPXt9O3JldHVybiB0LmZvckVhY2gocj0+e0tzKGUsci5tdXRhdGlvbktleSkmJk9iamVjdC5hc3NpZ24obixyLmRlZmF1bHRPcHRpb25zKX0pLG59ZGVmYXVsdFF1ZXJ5T3B0aW9ucyhlKXtpZihlLl9kZWZhdWx0ZWQpcmV0dXJuIGU7Y29uc3QgdD17Li4uTCh0aGlzLFNyKS5xdWVyaWVzLC4uLnRoaXMuZ2V0UXVlcnlEZWZhdWx0cyhlLnF1ZXJ5S2V5KSwuLi5lLF9kZWZhdWx0ZWQ6ITB9O3JldHVybiB0LnF1ZXJ5SGFzaHx8KHQucXVlcnlIYXNoPXRwKHQucXVlcnlLZXksdCkpLHQucmVmZXRjaE9uUmVjb25uZWN0PT09dm9pZCAwJiYodC5yZWZldGNoT25SZWNvbm5lY3Q9dC5uZXR3b3JrTW9kZSE9PSJhbHdheXMiKSx0LnRocm93T25FcnJvcj09PXZvaWQgMCYmKHQudGhyb3dPbkVycm9yPSEhdC5zdXNwZW5zZSksIXQubmV0d29ya01vZGUmJnQucGVyc2lzdGVyJiYodC5uZXR3b3JrTW9kZT0ib2ZmbGluZUZpcnN0IiksdC5xdWVyeUZuPT09bnAmJih0LmVuYWJsZWQ9ITEpLHR9ZGVmYXVsdE11dGF0aW9uT3B0aW9ucyhlKXtyZXR1cm4gZSE9bnVsbCYmZS5fZGVmYXVsdGVkP2U6ey4uLkwodGhpcyxTcikubXV0YXRpb25zLC4uLihlPT1udWxsP3ZvaWQgMDplLm11dGF0aW9uS2V5KSYmdGhpcy5nZXRNdXRhdGlvbkRlZmF1bHRzKGUubXV0YXRpb25LZXkpLC4uLmUsX2RlZmF1bHRlZDohMH19Y2xlYXIoKXtMKHRoaXMsTmUpLmNsZWFyKCksTCh0aGlzLGtyKS5jbGVhcigpfX0sTmU9bmV3IFdlYWtNYXAsa3I9bmV3IFdlYWtNYXAsU3I9bmV3IFdlYWtNYXAsdm89bmV3IFdlYWtNYXAseG89bmV3IFdlYWtNYXAsQ3I9bmV3IFdlYWtNYXAsd289bmV3IFdlYWtNYXAsYm89bmV3IFdlYWtNYXAsRDApLHdQPWIuY3JlYXRlQ29udGV4dCh2b2lkIDApLGJQPSh7Y2xpZW50OmUsY2hpbGRyZW46dH0pPT4oYi51c2VFZmZlY3QoKCk9PihlLm1vdW50KCksKCk9PntlLnVubW91bnQoKX0pLFtlXSksZy5qc3god1AuUHJvdmlkZXIse3ZhbHVlOmUsY2hpbGRyZW46dH0pKTsvKioKICogQHJlbWl4LXJ1bi9yb3V0ZXIgdjEuMjMuMAogKgogKiBDb3B5cmlnaHQgKGMpIFJlbWl4IFNvZnR3YXJlIEluYy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UubWQgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICoKICogQGxpY2Vuc2UgTUlUCiAqL2Z1bmN0aW9uIEdzKCl7cmV0dXJuIEdzPU9iamVjdC5hc3NpZ24\/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sR3MuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBQcjsoZnVuY3Rpb24oZSl7ZS5Qb3A9IlBPUCIsZS5QdXNoPSJQVVNIIixlLlJlcGxhY2U9IlJFUExBQ0UifSkoUHJ8fChQcj17fSkpO2NvbnN0IE9nPSJwb3BzdGF0ZSI7ZnVuY3Rpb24ga1AoZSl7ZT09PXZvaWQgMCYmKGU9e30pO2Z1bmN0aW9uIHQocixpKXtsZXR7cGF0aG5hbWU6byxzZWFyY2g6cyxoYXNoOmF9PXIubG9jYXRpb247cmV0dXJuIGNmKCIiLHtwYXRobmFtZTpvLHNlYXJjaDpzLGhhc2g6YX0saS5zdGF0ZSYmaS5zdGF0ZS51c3J8fG51bGwsaS5zdGF0ZSYmaS5zdGF0ZS5rZXl8fCJkZWZhdWx0Iil9ZnVuY3Rpb24gbihyLGkpe3JldHVybiB0eXBlb2YgaT09InN0cmluZyI\/aTpYbChpKX1yZXR1cm4gQ1AodCxuLG51bGwsZSl9ZnVuY3Rpb24gRmUoZSx0KXtpZihlPT09ITF8fGU9PT1udWxsfHx0eXBlb2YgZT4idSIpdGhyb3cgbmV3IEVycm9yKHQpfWZ1bmN0aW9uIG53KGUsdCl7aWYoIWUpe3R5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29sZS53YXJuKHQpO3RyeXt0aHJvdyBuZXcgRXJyb3IodCl9Y2F0Y2h7fX19ZnVuY3Rpb24gU1AoKXtyZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsOCl9ZnVuY3Rpb24gRmcoZSx0KXtyZXR1cm57dXNyOmUuc3RhdGUsa2V5OmUua2V5LGlkeDp0fX1mdW5jdGlvbiBjZihlLHQsbixyKXtyZXR1cm4gbj09PXZvaWQgMCYmKG49bnVsbCksR3Moe3BhdGhuYW1lOnR5cGVvZiBlPT0ic3RyaW5nIj9lOmUucGF0aG5hbWUsc2VhcmNoOiIiLGhhc2g6IiJ9LHR5cGVvZiB0PT0ic3RyaW5nIj9Pbyh0KTp0LHtzdGF0ZTpuLGtleTp0JiZ0LmtleXx8cnx8U1AoKX0pfWZ1bmN0aW9uIFhsKGUpe2xldHtwYXRobmFtZTp0PSIvIixzZWFyY2g6bj0iIixoYXNoOnI9IiJ9PWU7cmV0dXJuIG4mJm4hPT0iPyImJih0Kz1uLmNoYXJBdCgwKT09PSI\/Ij9uOiI\/IituKSxyJiZyIT09IiMiJiYodCs9ci5jaGFyQXQoMCk9PT0iIyI\/cjoiIyIrciksdH1mdW5jdGlvbiBPbyhlKXtsZXQgdD17fTtpZihlKXtsZXQgbj1lLmluZGV4T2YoIiMiKTtuPj0wJiYodC5oYXNoPWUuc3Vic3RyKG4pLGU9ZS5zdWJzdHIoMCxuKSk7bGV0IHI9ZS5pbmRleE9mKCI\/Iik7cj49MCYmKHQuc2VhcmNoPWUuc3Vic3RyKHIpLGU9ZS5zdWJzdHIoMCxyKSksZSYmKHQucGF0aG5hbWU9ZSl9cmV0dXJuIHR9ZnVuY3Rpb24gQ1AoZSx0LG4scil7cj09PXZvaWQgMCYmKHI9e30pO2xldHt3aW5kb3c6aT1kb2N1bWVudC5kZWZhdWx0Vmlldyx2NUNvbXBhdDpvPSExfT1yLHM9aS5oaXN0b3J5LGE9UHIuUG9wLGw9bnVsbCx1PWMoKTt1PT1udWxsJiYodT0wLHMucmVwbGFjZVN0YXRlKEdzKHt9LHMuc3RhdGUse2lkeDp1fSksIiIpKTtmdW5jdGlvbiBjKCl7cmV0dXJuKHMuc3RhdGV8fHtpZHg6bnVsbH0pLmlkeH1mdW5jdGlvbiBkKCl7YT1Qci5Qb3A7bGV0IHc9YygpLHA9dz09bnVsbD9udWxsOnctdTt1PXcsbCYmbCh7YWN0aW9uOmEsbG9jYXRpb246bS5sb2NhdGlvbixkZWx0YTpwfSl9ZnVuY3Rpb24gaCh3LHApe2E9UHIuUHVzaDtsZXQgdj1jZihtLmxvY2F0aW9uLHcscCk7dT1jKCkrMTtsZXQgeD1GZyh2LHUpLGs9bS5jcmVhdGVIcmVmKHYpO3RyeXtzLnB1c2hTdGF0ZSh4LCIiLGspfWNhdGNoKFQpe2lmKFQgaW5zdGFuY2VvZiBET01FeGNlcHRpb24mJlQubmFtZT09PSJEYXRhQ2xvbmVFcnJvciIpdGhyb3cgVDtpLmxvY2F0aW9uLmFzc2lnbihrKX1vJiZsJiZsKHthY3Rpb246YSxsb2NhdGlvbjptLmxvY2F0aW9uLGRlbHRhOjF9KX1mdW5jdGlvbiBmKHcscCl7YT1Qci5SZXBsYWNlO2xldCB2PWNmKG0ubG9jYXRpb24sdyxwKTt1PWMoKTtsZXQgeD1GZyh2LHUpLGs9bS5jcmVhdGVIcmVmKHYpO3MucmVwbGFjZVN0YXRlKHgsIiIsayksbyYmbCYmbCh7YWN0aW9uOmEsbG9jYXRpb246bS5sb2NhdGlvbixkZWx0YTowfSl9ZnVuY3Rpb24geSh3KXtsZXQgcD1pLmxvY2F0aW9uLm9yaWdpbiE9PSJudWxsIj9pLmxvY2F0aW9uLm9yaWdpbjppLmxvY2F0aW9uLmhyZWYsdj10eXBlb2Ygdz09InN0cmluZyI\/dzpYbCh3KTtyZXR1cm4gdj12LnJlcGxhY2UoLyAkLywiJTIwIiksRmUocCwiTm8gd2luZG93LmxvY2F0aW9uLihvcmlnaW58aHJlZikgYXZhaWxhYmxlIHRvIGNyZWF0ZSBVUkwgZm9yIGhyZWY6ICIrdiksbmV3IFVSTCh2LHApfWxldCBtPXtnZXQgYWN0aW9uKCl7cmV0dXJuIGF9LGdldCBsb2NhdGlvbigpe3JldHVybiBlKGkscyl9LGxpc3Rlbih3KXtpZihsKXRocm93IG5ldyBFcnJvcigiQSBoaXN0b3J5IG9ubHkgYWNjZXB0cyBvbmUgYWN0aXZlIGxpc3RlbmVyIik7cmV0dXJuIGkuYWRkRXZlbnRMaXN0ZW5lcihPZyxkKSxsPXcsKCk9PntpLnJlbW92ZUV2ZW50TGlzdGVuZXIoT2csZCksbD1udWxsfX0sY3JlYXRlSHJlZih3KXtyZXR1cm4gdChpLHcpfSxjcmVhdGVVUkw6eSxlbmNvZGVMb2NhdGlvbih3KXtsZXQgcD15KHcpO3JldHVybntwYXRobmFtZTpwLnBhdGhuYW1lLHNlYXJjaDpwLnNlYXJjaCxoYXNoOnAuaGFzaH19LHB1c2g6aCxyZXBsYWNlOmYsZ28odyl7cmV0dXJuIHMuZ28odyl9fTtyZXR1cm4gbX12YXIgX2c7KGZ1bmN0aW9uKGUpe2UuZGF0YT0iZGF0YSIsZS5kZWZlcnJlZD0iZGVmZXJyZWQiLGUucmVkaXJlY3Q9InJlZGlyZWN0IixlLmVycm9yPSJlcnJvciJ9KShfZ3x8KF9nPXt9KSk7ZnVuY3Rpb24gVFAoZSx0LG4pe3JldHVybiBuPT09dm9pZCAwJiYobj0iLyIpLEVQKGUsdCxuLCExKX1mdW5jdGlvbiBFUChlLHQsbixyKXtsZXQgaT10eXBlb2YgdD09InN0cmluZyI\/T28odCk6dCxvPXJwKGkucGF0aG5hbWV8fCIvIixuKTtpZihvPT1udWxsKXJldHVybiBudWxsO2xldCBzPXJ3KGUpO1BQKHMpO2xldCBhPW51bGw7Zm9yKGxldCBsPTA7YT09bnVsbCYmbDxzLmxlbmd0aDsrK2wpe2xldCB1PUZQKG8pO2E9TFAoc1tsXSx1LHIpfXJldHVybiBhfWZ1bmN0aW9uIHJ3KGUsdCxuLHIpe3Q9PT12b2lkIDAmJih0PVtdKSxuPT09dm9pZCAwJiYobj1bXSkscj09PXZvaWQgMCYmKHI9IiIpO2xldCBpPShvLHMsYSk9PntsZXQgbD17cmVsYXRpdmVQYXRoOmE9PT12b2lkIDA\/by5wYXRofHwiIjphLGNhc2VTZW5zaXRpdmU6by5jYXNlU2Vuc2l0aXZlPT09ITAsY2hpbGRyZW5JbmRleDpzLHJvdXRlOm99O2wucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoIi8iKSYmKEZlKGwucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgociksJ0Fic29sdXRlIHJvdXRlIHBhdGggIicrbC5yZWxhdGl2ZVBhdGgrJyIgbmVzdGVkIHVuZGVyIHBhdGggJysoJyInK3IrJyIgaXMgbm90IHZhbGlkLiBBbiBhYnNvbHV0ZSBjaGlsZCByb3V0ZSBwYXRoICcpKyJtdXN0IHN0YXJ0IHdpdGggdGhlIGNvbWJpbmVkIHBhdGggb2YgYWxsIGl0cyBwYXJlbnQgcm91dGVzLiIpLGwucmVsYXRpdmVQYXRoPWwucmVsYXRpdmVQYXRoLnNsaWNlKHIubGVuZ3RoKSk7bGV0IHU9T3IoW3IsbC5yZWxhdGl2ZVBhdGhdKSxjPW4uY29uY2F0KGwpO28uY2hpbGRyZW4mJm8uY2hpbGRyZW4ubGVuZ3RoPjAmJihGZShvLmluZGV4IT09ITAsIkluZGV4IHJvdXRlcyBtdXN0IG5vdCBoYXZlIGNoaWxkIHJvdXRlcy4gUGxlYXNlIHJlbW92ZSAiKygnYWxsIGNoaWxkIHJvdXRlcyBmcm9tIHJvdXRlIHBhdGggIicrdSsnIi4nKSkscncoby5jaGlsZHJlbix0LGMsdSkpLCEoby5wYXRoPT1udWxsJiYhby5pbmRleCkmJnQucHVzaCh7cGF0aDp1LHNjb3JlOkRQKHUsby5pbmRleCkscm91dGVzTWV0YTpjfSl9O3JldHVybiBlLmZvckVhY2goKG8scyk9Pnt2YXIgYTtpZihvLnBhdGg9PT0iInx8ISgoYT1vLnBhdGgpIT1udWxsJiZhLmluY2x1ZGVzKCI\/IikpKWkobyxzKTtlbHNlIGZvcihsZXQgbCBvZiBpdyhvLnBhdGgpKWkobyxzLGwpfSksdH1mdW5jdGlvbiBpdyhlKXtsZXQgdD1lLnNwbGl0KCIvIik7aWYodC5sZW5ndGg9PT0wKXJldHVybltdO2xldFtuLC4uLnJdPXQsaT1uLmVuZHNXaXRoKCI\/Iiksbz1uLnJlcGxhY2UoL1w\/JC8sIiIpO2lmKHIubGVuZ3RoPT09MClyZXR1cm4gaT9bbywiIl06W29dO2xldCBzPWl3KHIuam9pbigiLyIpKSxhPVtdO3JldHVybiBhLnB1c2goLi4ucy5tYXAobD0+bD09PSIiP286W28sbF0uam9pbigiLyIpKSksaSYmYS5wdXNoKC4uLnMpLGEubWFwKGw9PmUuc3RhcnRzV2l0aCgiLyIpJiZsPT09IiI\/Ii8iOmwpfWZ1bmN0aW9uIFBQKGUpe2Uuc29ydCgodCxuKT0+dC5zY29yZSE9PW4uc2NvcmU\/bi5zY29yZS10LnNjb3JlOk1QKHQucm91dGVzTWV0YS5tYXAocj0+ci5jaGlsZHJlbkluZGV4KSxuLnJvdXRlc01ldGEubWFwKHI9PnIuY2hpbGRyZW5JbmRleCkpKX1jb25zdCBBUD0vXjpbXHctXSskLyxJUD0zLE5QPTIsalA9MSx6UD0xMCxSUD0tMixWZz1lPT5lPT09IioiO2Z1bmN0aW9uIERQKGUsdCl7bGV0IG49ZS5zcGxpdCgiLyIpLHI9bi5sZW5ndGg7cmV0dXJuIG4uc29tZShWZykmJihyKz1SUCksdCYmKHIrPU5QKSxuLmZpbHRlcihpPT4hVmcoaSkpLnJlZHVjZSgoaSxvKT0+aSsoQVAudGVzdChvKT9JUDpvPT09IiI\/alA6elApLHIpfWZ1bmN0aW9uIE1QKGUsdCl7cmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGgmJmUuc2xpY2UoMCwtMSkuZXZlcnkoKHIsaSk9PnI9PT10W2ldKT9lW2UubGVuZ3RoLTFdLXRbdC5sZW5ndGgtMV06MH1mdW5jdGlvbiBMUChlLHQsbil7bGV0e3JvdXRlc01ldGE6cn09ZSxpPXt9LG89Ii8iLHM9W107Zm9yKGxldCBhPTA7YTxyLmxlbmd0aDsrK2Epe2xldCBsPXJbYV0sdT1hPT09ci5sZW5ndGgtMSxjPW89PT0iLyI\/dDp0LnNsaWNlKG8ubGVuZ3RoKXx8Ii8iLGQ9Qmcoe3BhdGg6bC5yZWxhdGl2ZVBhdGgsY2FzZVNlbnNpdGl2ZTpsLmNhc2VTZW5zaXRpdmUsZW5kOnV9LGMpLGg9bC5yb3V0ZTtpZighZCYmdSYmbiYmIXJbci5sZW5ndGgtMV0ucm91dGUuaW5kZXgmJihkPUJnKHtwYXRoOmwucmVsYXRpdmVQYXRoLGNhc2VTZW5zaXRpdmU6bC5jYXNlU2Vuc2l0aXZlLGVuZDohMX0sYykpLCFkKXJldHVybiBudWxsO09iamVjdC5hc3NpZ24oaSxkLnBhcmFtcykscy5wdXNoKHtwYXJhbXM6aSxwYXRobmFtZTpPcihbbyxkLnBhdGhuYW1lXSkscGF0aG5hbWVCYXNlOlVQKE9yKFtvLGQucGF0aG5hbWVCYXNlXSkpLHJvdXRlOmh9KSxkLnBhdGhuYW1lQmFzZSE9PSIvIiYmKG89T3IoW28sZC5wYXRobmFtZUJhc2VdKSl9cmV0dXJuIHN9ZnVuY3Rpb24gQmcoZSx0KXt0eXBlb2YgZT09InN0cmluZyImJihlPXtwYXRoOmUsY2FzZVNlbnNpdGl2ZTohMSxlbmQ6ITB9KTtsZXRbbixyXT1PUChlLnBhdGgsZS5jYXNlU2Vuc2l0aXZlLGUuZW5kKSxpPXQubWF0Y2gobik7aWYoIWkpcmV0dXJuIG51bGw7bGV0IG89aVswXSxzPW8ucmVwbGFjZSgvKC4pXC8rJC8sIiQxIiksYT1pLnNsaWNlKDEpO3JldHVybntwYXJhbXM6ci5yZWR1Y2UoKHUsYyxkKT0+e2xldHtwYXJhbU5hbWU6aCxpc09wdGlvbmFsOmZ9PWM7aWYoaD09PSIqIil7bGV0IG09YVtkXXx8IiI7cz1vLnNsaWNlKDAsby5sZW5ndGgtbS5sZW5ndGgpLnJlcGxhY2UoLyguKVwvKyQvLCIkMSIpfWNvbnN0IHk9YVtkXTtyZXR1cm4gZiYmIXk\/dVtoXT12b2lkIDA6dVtoXT0oeXx8IiIpLnJlcGxhY2UoLyUyRi9nLCIvIiksdX0se30pLHBhdGhuYW1lOm8scGF0aG5hbWVCYXNlOnMscGF0dGVybjplfX1mdW5jdGlvbiBPUChlLHQsbil7dD09PXZvaWQgMCYmKHQ9ITEpLG49PT12b2lkIDAmJihuPSEwKSxudyhlPT09IioifHwhZS5lbmRzV2l0aCgiKiIpfHxlLmVuZHNXaXRoKCIvKiIpLCdSb3V0ZSBwYXRoICInK2UrJyIgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgJysoJyInK2UucmVwbGFjZSgvXCokLywiLyoiKSsnIiBiZWNhdXNlIHRoZSBgKmAgY2hhcmFjdGVyIG11c3QgJykrImFsd2F5cyBmb2xsb3cgYSBgL2AgaW4gdGhlIHBhdHRlcm4uIFRvIGdldCByaWQgb2YgdGhpcyB3YXJuaW5nLCAiKygncGxlYXNlIGNoYW5nZSB0aGUgcm91dGUgcGF0aCB0byAiJytlLnJlcGxhY2UoL1wqJC8sIi8qIikrJyIuJykpO2xldCByPVtdLGk9Il4iK2UucmVwbGFjZSgvXC8qXCo\/JC8sIiIpLnJlcGxhY2UoL15cLyovLCIvIikucmVwbGFjZSgvW1xcLiorXiR7fXwoKVtcXV0vZywiXFwkJiIpLnJlcGxhY2UoL1wvOihbXHctXSspKFw\/KT8vZywocyxhLGwpPT4oci5wdXNoKHtwYXJhbU5hbWU6YSxpc09wdGlvbmFsOmwhPW51bGx9KSxsPyIvPyhbXlxcL10rKT8iOiIvKFteXFwvXSspIikpO3JldHVybiBlLmVuZHNXaXRoKCIqIik\/KHIucHVzaCh7cGFyYW1OYW1lOiIqIn0pLGkrPWU9PT0iKiJ8fGU9PT0iLyoiPyIoLiopJCI6Iig\/OlxcLyguKyl8XFwvKikkIik6bj9pKz0iXFwvKiQiOmUhPT0iIiYmZSE9PSIvIiYmKGkrPSIoPzooPz1cXC98JCkpIiksW25ldyBSZWdFeHAoaSx0P3ZvaWQgMDoiaSIpLHJdfWZ1bmN0aW9uIEZQKGUpe3RyeXtyZXR1cm4gZS5zcGxpdCgiLyIpLm1hcCh0PT5kZWNvZGVVUklDb21wb25lbnQodCkucmVwbGFjZSgvXC8vZywiJTJGIikpLmpvaW4oIi8iKX1jYXRjaCh0KXtyZXR1cm4gbncoITEsJ1RoZSBVUkwgcGF0aCAiJytlKyciIGNvdWxkIG5vdCBiZSBkZWNvZGVkIGJlY2F1c2UgaXQgaXMgaXMgYSBtYWxmb3JtZWQgVVJMIHNlZ21lbnQuIFRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIGEgYmFkIHBlcmNlbnQgJysoImVuY29kaW5nICgiK3QrIikuIikpLGV9fWZ1bmN0aW9uIHJwKGUsdCl7aWYodD09PSIvIilyZXR1cm4gZTtpZighZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodC50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gbnVsbDtsZXQgbj10LmVuZHNXaXRoKCIvIik\/dC5sZW5ndGgtMTp0Lmxlbmd0aCxyPWUuY2hhckF0KG4pO3JldHVybiByJiZyIT09Ii8iP251bGw6ZS5zbGljZShuKXx8Ii8ifWZ1bmN0aW9uIF9QKGUsdCl7dD09PXZvaWQgMCYmKHQ9Ii8iKTtsZXR7cGF0aG5hbWU6bixzZWFyY2g6cj0iIixoYXNoOmk9IiJ9PXR5cGVvZiBlPT0ic3RyaW5nIj9PbyhlKTplO3JldHVybntwYXRobmFtZTpuP24uc3RhcnRzV2l0aCgiLyIpP246VlAobix0KTp0LHNlYXJjaDokUChyKSxoYXNoOkhQKGkpfX1mdW5jdGlvbiBWUChlLHQpe2xldCBuPXQucmVwbGFjZSgvXC8rJC8sIiIpLnNwbGl0KCIvIik7cmV0dXJuIGUuc3BsaXQoIi8iKS5mb3JFYWNoKGk9PntpPT09Ii4uIj9uLmxlbmd0aD4xJiZuLnBvcCgpOmkhPT0iLiImJm4ucHVzaChpKX0pLG4ubGVuZ3RoPjE\/bi5qb2luKCIvIik6Ii8ifWZ1bmN0aW9uIFJjKGUsdCxuLHIpe3JldHVybiJDYW5ub3QgaW5jbHVkZSBhICciK2UrIicgY2hhcmFjdGVyIGluIGEgbWFudWFsbHkgc3BlY2lmaWVkICIrKCJgdG8uIit0KyJgIGZpZWxkIFsiK0pTT04uc3RyaW5naWZ5KHIpKyJdLiAgUGxlYXNlIHNlcGFyYXRlIGl0IG91dCB0byB0aGUgIikrKCJgdG8uIituKyJgIGZpZWxkLiBBbHRlcm5hdGl2ZWx5IHlvdSBtYXkgcHJvdmlkZSB0aGUgZnVsbCBwYXRoIGFzICIpKydhIHN0cmluZyBpbiA8TGluayB0bz0iLi4uIj4gYW5kIHRoZSByb3V0ZXIgd2lsbCBwYXJzZSBpdCBmb3IgeW91Lid9ZnVuY3Rpb24gQlAoZSl7cmV0dXJuIGUuZmlsdGVyKCh0LG4pPT5uPT09MHx8dC5yb3V0ZS5wYXRoJiZ0LnJvdXRlLnBhdGgubGVuZ3RoPjApfWZ1bmN0aW9uIG93KGUsdCl7bGV0IG49QlAoZSk7cmV0dXJuIHQ\/bi5tYXAoKHIsaSk9Pmk9PT1uLmxlbmd0aC0xP3IucGF0aG5hbWU6ci5wYXRobmFtZUJhc2UpOm4ubWFwKHI9PnIucGF0aG5hbWVCYXNlKX1mdW5jdGlvbiBzdyhlLHQsbixyKXtyPT09dm9pZCAwJiYocj0hMSk7bGV0IGk7dHlwZW9mIGU9PSJzdHJpbmciP2k9T28oZSk6KGk9R3Moe30sZSksRmUoIWkucGF0aG5hbWV8fCFpLnBhdGhuYW1lLmluY2x1ZGVzKCI\/IiksUmMoIj8iLCJwYXRobmFtZSIsInNlYXJjaCIsaSkpLEZlKCFpLnBhdGhuYW1lfHwhaS5wYXRobmFtZS5pbmNsdWRlcygiIyIpLFJjKCIjIiwicGF0aG5hbWUiLCJoYXNoIixpKSksRmUoIWkuc2VhcmNofHwhaS5zZWFyY2guaW5jbHVkZXMoIiMiKSxSYygiIyIsInNlYXJjaCIsImhhc2giLGkpKSk7bGV0IG89ZT09PSIifHxpLnBhdGhuYW1lPT09IiIscz1vPyIvIjppLnBhdGhuYW1lLGE7aWYocz09bnVsbClhPW47ZWxzZXtsZXQgZD10Lmxlbmd0aC0xO2lmKCFyJiZzLnN0YXJ0c1dpdGgoIi4uIikpe2xldCBoPXMuc3BsaXQoIi8iKTtmb3IoO2hbMF09PT0iLi4iOyloLnNoaWZ0KCksZC09MTtpLnBhdGhuYW1lPWguam9pbigiLyIpfWE9ZD49MD90W2RdOiIvIn1sZXQgbD1fUChpLGEpLHU9cyYmcyE9PSIvIiYmcy5lbmRzV2l0aCgiLyIpLGM9KG98fHM9PT0iLiIpJiZuLmVuZHNXaXRoKCIvIik7cmV0dXJuIWwucGF0aG5hbWUuZW5kc1dpdGgoIi8iKSYmKHV8fGMpJiYobC5wYXRobmFtZSs9Ii8iKSxsfWNvbnN0IE9yPWU9PmUuam9pbigiLyIpLnJlcGxhY2UoL1wvXC8rL2csIi8iKSxVUD1lPT5lLnJlcGxhY2UoL1wvKyQvLCIiKS5yZXBsYWNlKC9eXC8qLywiLyIpLCRQPWU9PiFlfHxlPT09Ij8iPyIiOmUuc3RhcnRzV2l0aCgiPyIpP2U6Ij8iK2UsSFA9ZT0+IWV8fGU9PT0iIyI\/IiI6ZS5zdGFydHNXaXRoKCIjIik\/ZToiIyIrZTtmdW5jdGlvbiBxUChlKXtyZXR1cm4gZSE9bnVsbCYmdHlwZW9mIGUuc3RhdHVzPT0ibnVtYmVyIiYmdHlwZW9mIGUuc3RhdHVzVGV4dD09InN0cmluZyImJnR5cGVvZiBlLmludGVybmFsPT0iYm9vbGVhbiImJiJkYXRhImluIGV9Y29uc3QgYXc9WyJwb3N0IiwicHV0IiwicGF0Y2giLCJkZWxldGUiXTtuZXcgU2V0KGF3KTtjb25zdCBXUD1bImdldCIsLi4uYXddO25ldyBTZXQoV1ApOy8qKgogKiBSZWFjdCBSb3V0ZXIgdjYuMzAuMQogKgogKiBDb3B5cmlnaHQgKGMpIFJlbWl4IFNvZnR3YXJlIEluYy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UubWQgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICoKICogQGxpY2Vuc2UgTUlUCiAqL2Z1bmN0aW9uIFlzKCl7cmV0dXJuIFlzPU9iamVjdC5hc3NpZ24\/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sWXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNvbnN0IGlwPWIuY3JlYXRlQ29udGV4dChudWxsKSxLUD1iLmNyZWF0ZUNvbnRleHQobnVsbCksamk9Yi5jcmVhdGVDb250ZXh0KG51bGwpLER1PWIuY3JlYXRlQ29udGV4dChudWxsKSx6aT1iLmNyZWF0ZUNvbnRleHQoe291dGxldDpudWxsLG1hdGNoZXM6W10saXNEYXRhUm91dGU6ITF9KSxsdz1iLmNyZWF0ZUNvbnRleHQobnVsbCk7ZnVuY3Rpb24gR1AoZSx0KXtsZXR7cmVsYXRpdmU6bn09dD09PXZvaWQgMD97fTp0O2hhKCl8fEZlKCExKTtsZXR7YmFzZW5hbWU6cixuYXZpZ2F0b3I6aX09Yi51c2VDb250ZXh0KGppKSx7aGFzaDpvLHBhdGhuYW1lOnMsc2VhcmNoOmF9PWN3KGUse3JlbGF0aXZlOm59KSxsPXM7cmV0dXJuIHIhPT0iLyImJihsPXM9PT0iLyI\/cjpPcihbcixzXSkpLGkuY3JlYXRlSHJlZih7cGF0aG5hbWU6bCxzZWFyY2g6YSxoYXNoOm99KX1mdW5jdGlvbiBoYSgpe3JldHVybiBiLnVzZUNvbnRleHQoRHUpIT1udWxsfWZ1bmN0aW9uIHBhKCl7cmV0dXJuIGhhKCl8fEZlKCExKSxiLnVzZUNvbnRleHQoRHUpLmxvY2F0aW9ufWZ1bmN0aW9uIHV3KGUpe2IudXNlQ29udGV4dChqaSkuc3RhdGljfHxiLnVzZUxheW91dEVmZmVjdChlKX1mdW5jdGlvbiBZUCgpe2xldHtpc0RhdGFSb3V0ZTplfT1iLnVzZUNvbnRleHQoemkpO3JldHVybiBlP2xBKCk6UVAoKX1mdW5jdGlvbiBRUCgpe2hhKCl8fEZlKCExKTtsZXQgZT1iLnVzZUNvbnRleHQoaXApLHtiYXNlbmFtZTp0LGZ1dHVyZTpuLG5hdmlnYXRvcjpyfT1iLnVzZUNvbnRleHQoamkpLHttYXRjaGVzOml9PWIudXNlQ29udGV4dCh6aSkse3BhdGhuYW1lOm99PXBhKCkscz1KU09OLnN0cmluZ2lmeShvdyhpLG4udjdfcmVsYXRpdmVTcGxhdFBhdGgpKSxhPWIudXNlUmVmKCExKTtyZXR1cm4gdXcoKCk9PnthLmN1cnJlbnQ9ITB9KSxiLnVzZUNhbGxiYWNrKGZ1bmN0aW9uKHUsYyl7aWYoYz09PXZvaWQgMCYmKGM9e30pLCFhLmN1cnJlbnQpcmV0dXJuO2lmKHR5cGVvZiB1PT0ibnVtYmVyIil7ci5nbyh1KTtyZXR1cm59bGV0IGQ9c3codSxKU09OLnBhcnNlKHMpLG8sYy5yZWxhdGl2ZT09PSJwYXRoIik7ZT09bnVsbCYmdCE9PSIvIiYmKGQucGF0aG5hbWU9ZC5wYXRobmFtZT09PSIvIj90Ok9yKFt0LGQucGF0aG5hbWVdKSksKGMucmVwbGFjZT9yLnJlcGxhY2U6ci5wdXNoKShkLGMuc3RhdGUsYyl9LFt0LHIscyxvLGVdKX1mdW5jdGlvbiBjdyhlLHQpe2xldHtyZWxhdGl2ZTpufT10PT09dm9pZCAwP3t9OnQse2Z1dHVyZTpyfT1iLnVzZUNvbnRleHQoamkpLHttYXRjaGVzOml9PWIudXNlQ29udGV4dCh6aSkse3BhdGhuYW1lOm99PXBhKCkscz1KU09OLnN0cmluZ2lmeShvdyhpLHIudjdfcmVsYXRpdmVTcGxhdFBhdGgpKTtyZXR1cm4gYi51c2VNZW1vKCgpPT5zdyhlLEpTT04ucGFyc2UocyksbyxuPT09InBhdGgiKSxbZSxzLG8sbl0pfWZ1bmN0aW9uIFhQKGUsdCl7cmV0dXJuIEpQKGUsdCl9ZnVuY3Rpb24gSlAoZSx0LG4scil7aGEoKXx8RmUoITEpO2xldHtuYXZpZ2F0b3I6aX09Yi51c2VDb250ZXh0KGppKSx7bWF0Y2hlczpvfT1iLnVzZUNvbnRleHQoemkpLHM9b1tvLmxlbmd0aC0xXSxhPXM\/cy5wYXJhbXM6e307cyYmcy5wYXRobmFtZTtsZXQgbD1zP3MucGF0aG5hbWVCYXNlOiIvIjtzJiZzLnJvdXRlO2xldCB1PXBhKCksYztpZih0KXt2YXIgZDtsZXQgdz10eXBlb2YgdD09InN0cmluZyI\/T28odCk6dDtsPT09Ii8ifHwoZD13LnBhdGhuYW1lKSE9bnVsbCYmZC5zdGFydHNXaXRoKGwpfHxGZSghMSksYz13fWVsc2UgYz11O2xldCBoPWMucGF0aG5hbWV8fCIvIixmPWg7aWYobCE9PSIvIil7bGV0IHc9bC5yZXBsYWNlKC9eXC8vLCIiKS5zcGxpdCgiLyIpO2Y9Ii8iK2gucmVwbGFjZSgvXlwvLywiIikuc3BsaXQoIi8iKS5zbGljZSh3Lmxlbmd0aCkuam9pbigiLyIpfWxldCB5PVRQKGUse3BhdGhuYW1lOmZ9KSxtPXJBKHkmJnkubWFwKHc9Pk9iamVjdC5hc3NpZ24oe30sdyx7cGFyYW1zOk9iamVjdC5hc3NpZ24oe30sYSx3LnBhcmFtcykscGF0aG5hbWU6T3IoW2wsaS5lbmNvZGVMb2NhdGlvbj9pLmVuY29kZUxvY2F0aW9uKHcucGF0aG5hbWUpLnBhdGhuYW1lOncucGF0aG5hbWVdKSxwYXRobmFtZUJhc2U6dy5wYXRobmFtZUJhc2U9PT0iLyI\/bDpPcihbbCxpLmVuY29kZUxvY2F0aW9uP2kuZW5jb2RlTG9jYXRpb24ody5wYXRobmFtZUJhc2UpLnBhdGhuYW1lOncucGF0aG5hbWVCYXNlXSl9KSksbyxuLHIpO3JldHVybiB0JiZtP2IuY3JlYXRlRWxlbWVudChEdS5Qcm92aWRlcix7dmFsdWU6e2xvY2F0aW9uOllzKHtwYXRobmFtZToiLyIsc2VhcmNoOiIiLGhhc2g6IiIsc3RhdGU6bnVsbCxrZXk6ImRlZmF1bHQifSxjKSxuYXZpZ2F0aW9uVHlwZTpQci5Qb3B9fSxtKTptfWZ1bmN0aW9uIFpQKCl7bGV0IGU9YUEoKSx0PXFQKGUpP2Uuc3RhdHVzKyIgIitlLnN0YXR1c1RleHQ6ZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTpKU09OLnN0cmluZ2lmeShlKSxuPWUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrOm51bGwsaT17cGFkZGluZzoiMC41cmVtIixiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMjAwLDIwMCwyMDAsIDAuNSkifTtyZXR1cm4gYi5jcmVhdGVFbGVtZW50KGIuRnJhZ21lbnQsbnVsbCxiLmNyZWF0ZUVsZW1lbnQoImgyIixudWxsLCJVbmV4cGVjdGVkIEFwcGxpY2F0aW9uIEVycm9yISIpLGIuY3JlYXRlRWxlbWVudCgiaDMiLHtzdHlsZTp7Zm9udFN0eWxlOiJpdGFsaWMifX0sdCksbj9iLmNyZWF0ZUVsZW1lbnQoInByZSIse3N0eWxlOml9LG4pOm51bGwsbnVsbCl9Y29uc3QgZUE9Yi5jcmVhdGVFbGVtZW50KFpQLG51bGwpO2NsYXNzIHRBIGV4dGVuZHMgYi5Db21wb25lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5zdGF0ZT17bG9jYXRpb246dC5sb2NhdGlvbixyZXZhbGlkYXRpb246dC5yZXZhbGlkYXRpb24sZXJyb3I6dC5lcnJvcn19c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcih0KXtyZXR1cm57ZXJyb3I6dH19c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyh0LG4pe3JldHVybiBuLmxvY2F0aW9uIT09dC5sb2NhdGlvbnx8bi5yZXZhbGlkYXRpb24hPT0iaWRsZSImJnQucmV2YWxpZGF0aW9uPT09ImlkbGUiP3tlcnJvcjp0LmVycm9yLGxvY2F0aW9uOnQubG9jYXRpb24scmV2YWxpZGF0aW9uOnQucmV2YWxpZGF0aW9ufTp7ZXJyb3I6dC5lcnJvciE9PXZvaWQgMD90LmVycm9yOm4uZXJyb3IsbG9jYXRpb246bi5sb2NhdGlvbixyZXZhbGlkYXRpb246dC5yZXZhbGlkYXRpb258fG4ucmV2YWxpZGF0aW9ufX1jb21wb25lbnREaWRDYXRjaCh0LG4pe2NvbnNvbGUuZXJyb3IoIlJlYWN0IFJvdXRlciBjYXVnaHQgdGhlIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgcmVuZGVyIix0LG4pfXJlbmRlcigpe3JldHVybiB0aGlzLnN0YXRlLmVycm9yIT09dm9pZCAwP2IuY3JlYXRlRWxlbWVudCh6aS5Qcm92aWRlcix7dmFsdWU6dGhpcy5wcm9wcy5yb3V0ZUNvbnRleHR9LGIuY3JlYXRlRWxlbWVudChsdy5Qcm92aWRlcix7dmFsdWU6dGhpcy5zdGF0ZS5lcnJvcixjaGlsZHJlbjp0aGlzLnByb3BzLmNvbXBvbmVudH0pKTp0aGlzLnByb3BzLmNoaWxkcmVufX1mdW5jdGlvbiBuQShlKXtsZXR7cm91dGVDb250ZXh0OnQsbWF0Y2g6bixjaGlsZHJlbjpyfT1lLGk9Yi51c2VDb250ZXh0KGlwKTtyZXR1cm4gaSYmaS5zdGF0aWMmJmkuc3RhdGljQ29udGV4dCYmKG4ucm91dGUuZXJyb3JFbGVtZW50fHxuLnJvdXRlLkVycm9yQm91bmRhcnkpJiYoaS5zdGF0aWNDb250ZXh0Ll9kZWVwZXN0UmVuZGVyZWRCb3VuZGFyeUlkPW4ucm91dGUuaWQpLGIuY3JlYXRlRWxlbWVudCh6aS5Qcm92aWRlcix7dmFsdWU6dH0scil9ZnVuY3Rpb24gckEoZSx0LG4scil7dmFyIGk7aWYodD09PXZvaWQgMCYmKHQ9W10pLG49PT12b2lkIDAmJihuPW51bGwpLHI9PT12b2lkIDAmJihyPW51bGwpLGU9PW51bGwpe3ZhciBvO2lmKCFuKXJldHVybiBudWxsO2lmKG4uZXJyb3JzKWU9bi5tYXRjaGVzO2Vsc2UgaWYoKG89cikhPW51bGwmJm8udjdfcGFydGlhbEh5ZHJhdGlvbiYmdC5sZW5ndGg9PT0wJiYhbi5pbml0aWFsaXplZCYmbi5tYXRjaGVzLmxlbmd0aD4wKWU9bi5tYXRjaGVzO2Vsc2UgcmV0dXJuIG51bGx9bGV0IHM9ZSxhPShpPW4pPT1udWxsP3ZvaWQgMDppLmVycm9ycztpZihhIT1udWxsKXtsZXQgYz1zLmZpbmRJbmRleChkPT5kLnJvdXRlLmlkJiYoYT09bnVsbD92b2lkIDA6YVtkLnJvdXRlLmlkXSkhPT12b2lkIDApO2M+PTB8fEZlKCExKSxzPXMuc2xpY2UoMCxNYXRoLm1pbihzLmxlbmd0aCxjKzEpKX1sZXQgbD0hMSx1PS0xO2lmKG4mJnImJnIudjdfcGFydGlhbEh5ZHJhdGlvbilmb3IobGV0IGM9MDtjPHMubGVuZ3RoO2MrKyl7bGV0IGQ9c1tjXTtpZigoZC5yb3V0ZS5IeWRyYXRlRmFsbGJhY2t8fGQucm91dGUuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCkmJih1PWMpLGQucm91dGUuaWQpe2xldHtsb2FkZXJEYXRhOmgsZXJyb3JzOmZ9PW4seT1kLnJvdXRlLmxvYWRlciYmaFtkLnJvdXRlLmlkXT09PXZvaWQgMCYmKCFmfHxmW2Qucm91dGUuaWRdPT09dm9pZCAwKTtpZihkLnJvdXRlLmxhenl8fHkpe2w9ITAsdT49MD9zPXMuc2xpY2UoMCx1KzEpOnM9W3NbMF1dO2JyZWFrfX19cmV0dXJuIHMucmVkdWNlUmlnaHQoKGMsZCxoKT0+e2xldCBmLHk9ITEsbT1udWxsLHc9bnVsbDtuJiYoZj1hJiZkLnJvdXRlLmlkP2FbZC5yb3V0ZS5pZF06dm9pZCAwLG09ZC5yb3V0ZS5lcnJvckVsZW1lbnR8fGVBLGwmJih1PDAmJmg9PT0wPyh5PSEwLHc9bnVsbCk6dT09PWgmJih5PSEwLHc9ZC5yb3V0ZS5oeWRyYXRlRmFsbGJhY2tFbGVtZW50fHxudWxsKSkpO2xldCBwPXQuY29uY2F0KHMuc2xpY2UoMCxoKzEpKSx2PSgpPT57bGV0IHg7cmV0dXJuIGY\/eD1tOnk\/eD13OmQucm91dGUuQ29tcG9uZW50P3g9Yi5jcmVhdGVFbGVtZW50KGQucm91dGUuQ29tcG9uZW50LG51bGwpOmQucm91dGUuZWxlbWVudD94PWQucm91dGUuZWxlbWVudDp4PWMsYi5jcmVhdGVFbGVtZW50KG5BLHttYXRjaDpkLHJvdXRlQ29udGV4dDp7b3V0bGV0OmMsbWF0Y2hlczpwLGlzRGF0YVJvdXRlOm4hPW51bGx9LGNoaWxkcmVuOnh9KX07cmV0dXJuIG4mJihkLnJvdXRlLkVycm9yQm91bmRhcnl8fGQucm91dGUuZXJyb3JFbGVtZW50fHxoPT09MCk\/Yi5jcmVhdGVFbGVtZW50KHRBLHtsb2NhdGlvbjpuLmxvY2F0aW9uLHJldmFsaWRhdGlvbjpuLnJldmFsaWRhdGlvbixjb21wb25lbnQ6bSxlcnJvcjpmLGNoaWxkcmVuOnYoKSxyb3V0ZUNvbnRleHQ6e291dGxldDpudWxsLG1hdGNoZXM6cCxpc0RhdGFSb3V0ZTohMH19KTp2KCl9LG51bGwpfXZhciBkdz1mdW5jdGlvbihlKXtyZXR1cm4gZS5Vc2VCbG9ja2VyPSJ1c2VCbG9ja2VyIixlLlVzZVJldmFsaWRhdG9yPSJ1c2VSZXZhbGlkYXRvciIsZS5Vc2VOYXZpZ2F0ZVN0YWJsZT0idXNlTmF2aWdhdGUiLGV9KGR3fHx7fSksSmw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuVXNlQmxvY2tlcj0idXNlQmxvY2tlciIsZS5Vc2VMb2FkZXJEYXRhPSJ1c2VMb2FkZXJEYXRhIixlLlVzZUFjdGlvbkRhdGE9InVzZUFjdGlvbkRhdGEiLGUuVXNlUm91dGVFcnJvcj0idXNlUm91dGVFcnJvciIsZS5Vc2VOYXZpZ2F0aW9uPSJ1c2VOYXZpZ2F0aW9uIixlLlVzZVJvdXRlTG9hZGVyRGF0YT0idXNlUm91dGVMb2FkZXJEYXRhIixlLlVzZU1hdGNoZXM9InVzZU1hdGNoZXMiLGUuVXNlUmV2YWxpZGF0b3I9InVzZVJldmFsaWRhdG9yIixlLlVzZU5hdmlnYXRlU3RhYmxlPSJ1c2VOYXZpZ2F0ZSIsZS5Vc2VSb3V0ZUlkPSJ1c2VSb3V0ZUlkIixlfShKbHx8e30pO2Z1bmN0aW9uIGlBKGUpe2xldCB0PWIudXNlQ29udGV4dChpcCk7cmV0dXJuIHR8fEZlKCExKSx0fWZ1bmN0aW9uIG9BKGUpe2xldCB0PWIudXNlQ29udGV4dChLUCk7cmV0dXJuIHR8fEZlKCExKSx0fWZ1bmN0aW9uIHNBKGUpe2xldCB0PWIudXNlQ29udGV4dCh6aSk7cmV0dXJuIHR8fEZlKCExKSx0fWZ1bmN0aW9uIGZ3KGUpe2xldCB0PXNBKCksbj10Lm1hdGNoZXNbdC5tYXRjaGVzLmxlbmd0aC0xXTtyZXR1cm4gbi5yb3V0ZS5pZHx8RmUoITEpLG4ucm91dGUuaWR9ZnVuY3Rpb24gYUEoKXt2YXIgZTtsZXQgdD1iLnVzZUNvbnRleHQobHcpLG49b0EoSmwuVXNlUm91dGVFcnJvcikscj1mdyhKbC5Vc2VSb3V0ZUVycm9yKTtyZXR1cm4gdCE9PXZvaWQgMD90OihlPW4uZXJyb3JzKT09bnVsbD92b2lkIDA6ZVtyXX1mdW5jdGlvbiBsQSgpe2xldHtyb3V0ZXI6ZX09aUEoZHcuVXNlTmF2aWdhdGVTdGFibGUpLHQ9ZncoSmwuVXNlTmF2aWdhdGVTdGFibGUpLG49Yi51c2VSZWYoITEpO3JldHVybiB1dygoKT0+e24uY3VycmVudD0hMH0pLGIudXNlQ2FsbGJhY2soZnVuY3Rpb24oaSxvKXtvPT09dm9pZCAwJiYobz17fSksbi5jdXJyZW50JiYodHlwZW9mIGk9PSJudW1iZXIiP2UubmF2aWdhdGUoaSk6ZS5uYXZpZ2F0ZShpLFlzKHtmcm9tUm91dGVJZDp0fSxvKSkpfSxbZSx0XSl9ZnVuY3Rpb24gdUEoZSx0KXtlPT1udWxsfHxlLnY3X3N0YXJ0VHJhbnNpdGlvbixlPT1udWxsfHxlLnY3X3JlbGF0aXZlU3BsYXRQYXRofWZ1bmN0aW9uIGlpKGUpe0ZlKCExKX1mdW5jdGlvbiBjQShlKXtsZXR7YmFzZW5hbWU6dD0iLyIsY2hpbGRyZW46bj1udWxsLGxvY2F0aW9uOnIsbmF2aWdhdGlvblR5cGU6aT1Qci5Qb3AsbmF2aWdhdG9yOm8sc3RhdGljOnM9ITEsZnV0dXJlOmF9PWU7aGEoKSYmRmUoITEpO2xldCBsPXQucmVwbGFjZSgvXlwvKi8sIi8iKSx1PWIudXNlTWVtbygoKT0+KHtiYXNlbmFtZTpsLG5hdmlnYXRvcjpvLHN0YXRpYzpzLGZ1dHVyZTpZcyh7djdfcmVsYXRpdmVTcGxhdFBhdGg6ITF9LGEpfSksW2wsYSxvLHNdKTt0eXBlb2Ygcj09InN0cmluZyImJihyPU9vKHIpKTtsZXR7cGF0aG5hbWU6Yz0iLyIsc2VhcmNoOmQ9IiIsaGFzaDpoPSIiLHN0YXRlOmY9bnVsbCxrZXk6eT0iZGVmYXVsdCJ9PXIsbT1iLnVzZU1lbW8oKCk9PntsZXQgdz1ycChjLGwpO3JldHVybiB3PT1udWxsP251bGw6e2xvY2F0aW9uOntwYXRobmFtZTp3LHNlYXJjaDpkLGhhc2g6aCxzdGF0ZTpmLGtleTp5fSxuYXZpZ2F0aW9uVHlwZTppfX0sW2wsYyxkLGgsZix5LGldKTtyZXR1cm4gbT09bnVsbD9udWxsOmIuY3JlYXRlRWxlbWVudChqaS5Qcm92aWRlcix7dmFsdWU6dX0sYi5jcmVhdGVFbGVtZW50KER1LlByb3ZpZGVyLHtjaGlsZHJlbjpuLHZhbHVlOm19KSl9ZnVuY3Rpb24gZEEoZSl7bGV0e2NoaWxkcmVuOnQsbG9jYXRpb246bn09ZTtyZXR1cm4gWFAoZGYodCksbil9bmV3IFByb21pc2UoKCk9Pnt9KTtmdW5jdGlvbiBkZihlLHQpe3Q9PT12b2lkIDAmJih0PVtdKTtsZXQgbj1bXTtyZXR1cm4gYi5DaGlsZHJlbi5mb3JFYWNoKGUsKHIsaSk9PntpZighYi5pc1ZhbGlkRWxlbWVudChyKSlyZXR1cm47bGV0IG89Wy4uLnQsaV07aWYoci50eXBlPT09Yi5GcmFnbWVudCl7bi5wdXNoLmFwcGx5KG4sZGYoci5wcm9wcy5jaGlsZHJlbixvKSk7cmV0dXJufXIudHlwZSE9PWlpJiZGZSghMSksIXIucHJvcHMuaW5kZXh8fCFyLnByb3BzLmNoaWxkcmVufHxGZSghMSk7bGV0IHM9e2lkOnIucHJvcHMuaWR8fG8uam9pbigiLSIpLGNhc2VTZW5zaXRpdmU6ci5wcm9wcy5jYXNlU2Vuc2l0aXZlLGVsZW1lbnQ6ci5wcm9wcy5lbGVtZW50LENvbXBvbmVudDpyLnByb3BzLkNvbXBvbmVudCxpbmRleDpyLnByb3BzLmluZGV4LHBhdGg6ci5wcm9wcy5wYXRoLGxvYWRlcjpyLnByb3BzLmxvYWRlcixhY3Rpb246ci5wcm9wcy5hY3Rpb24sZXJyb3JFbGVtZW50OnIucHJvcHMuZXJyb3JFbGVtZW50LEVycm9yQm91bmRhcnk6ci5wcm9wcy5FcnJvckJvdW5kYXJ5LGhhc0Vycm9yQm91bmRhcnk6ci5wcm9wcy5FcnJvckJvdW5kYXJ5IT1udWxsfHxyLnByb3BzLmVycm9yRWxlbWVudCE9bnVsbCxzaG91bGRSZXZhbGlkYXRlOnIucHJvcHMuc2hvdWxkUmV2YWxpZGF0ZSxoYW5kbGU6ci5wcm9wcy5oYW5kbGUsbGF6eTpyLnByb3BzLmxhenl9O3IucHJvcHMuY2hpbGRyZW4mJihzLmNoaWxkcmVuPWRmKHIucHJvcHMuY2hpbGRyZW4sbykpLG4ucHVzaChzKX0pLG59LyoqCiAqIFJlYWN0IFJvdXRlciBET00gdjYuMzAuMQogKgogKiBDb3B5cmlnaHQgKGMpIFJlbWl4IFNvZnR3YXJlIEluYy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UubWQgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICoKICogQGxpY2Vuc2UgTUlUCiAqL2Z1bmN0aW9uIGZmKCl7cmV0dXJuIGZmPU9iamVjdC5hc3NpZ24\/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sZmYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGZBKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj17fSxyPU9iamVjdC5rZXlzKGUpLGksbztmb3Iobz0wO288ci5sZW5ndGg7bysrKWk9cltvXSwhKHQuaW5kZXhPZihpKT49MCkmJihuW2ldPWVbaV0pO3JldHVybiBufWZ1bmN0aW9uIGhBKGUpe3JldHVybiEhKGUubWV0YUtleXx8ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5zaGlmdEtleSl9ZnVuY3Rpb24gcEEoZSx0KXtyZXR1cm4gZS5idXR0b249PT0wJiYoIXR8fHQ9PT0iX3NlbGYiKSYmIWhBKGUpfWNvbnN0IG1BPVsib25DbGljayIsInJlbGF0aXZlIiwicmVsb2FkRG9jdW1lbnQiLCJyZXBsYWNlIiwic3RhdGUiLCJ0YXJnZXQiLCJ0byIsInByZXZlbnRTY3JvbGxSZXNldCIsInZpZXdUcmFuc2l0aW9uIl0sZ0E9IjYiO3RyeXt3aW5kb3cuX19yZWFjdFJvdXRlclZlcnNpb249Z0F9Y2F0Y2h7fWNvbnN0IHlBPSJzdGFydFRyYW5zaXRpb24iLFVnPWNoW3lBXTtmdW5jdGlvbiB2QShlKXtsZXR7YmFzZW5hbWU6dCxjaGlsZHJlbjpuLGZ1dHVyZTpyLHdpbmRvdzppfT1lLG89Yi51c2VSZWYoKTtvLmN1cnJlbnQ9PW51bGwmJihvLmN1cnJlbnQ9a1Aoe3dpbmRvdzppLHY1Q29tcGF0OiEwfSkpO2xldCBzPW8uY3VycmVudCxbYSxsXT1iLnVzZVN0YXRlKHthY3Rpb246cy5hY3Rpb24sbG9jYXRpb246cy5sb2NhdGlvbn0pLHt2N19zdGFydFRyYW5zaXRpb246dX09cnx8e30sYz1iLnVzZUNhbGxiYWNrKGQ9Pnt1JiZVZz9VZygoKT0+bChkKSk6bChkKX0sW2wsdV0pO3JldHVybiBiLnVzZUxheW91dEVmZmVjdCgoKT0+cy5saXN0ZW4oYyksW3MsY10pLGIudXNlRWZmZWN0KCgpPT51QShyKSxbcl0pLGIuY3JlYXRlRWxlbWVudChjQSx7YmFzZW5hbWU6dCxjaGlsZHJlbjpuLGxvY2F0aW9uOmEubG9jYXRpb24sbmF2aWdhdGlvblR5cGU6YS5hY3Rpb24sbmF2aWdhdG9yOnMsZnV0dXJlOnJ9KX1jb25zdCB4QT10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5kb2N1bWVudDwidSImJnR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudDwidSIsd0E9L14oPzpbYS16XVthLXowLTkrLi1dKjp8XC9cLykvaSxRcz1iLmZvcndhcmRSZWYoZnVuY3Rpb24odCxuKXtsZXR7b25DbGljazpyLHJlbGF0aXZlOmkscmVsb2FkRG9jdW1lbnQ6byxyZXBsYWNlOnMsc3RhdGU6YSx0YXJnZXQ6bCx0bzp1LHByZXZlbnRTY3JvbGxSZXNldDpjLHZpZXdUcmFuc2l0aW9uOmR9PXQsaD1mQSh0LG1BKSx7YmFzZW5hbWU6Zn09Yi51c2VDb250ZXh0KGppKSx5LG09ITE7aWYodHlwZW9mIHU9PSJzdHJpbmciJiZ3QS50ZXN0KHUpJiYoeT11LHhBKSl0cnl7bGV0IHg9bmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZiksaz11LnN0YXJ0c1dpdGgoIi8vIik\/bmV3IFVSTCh4LnByb3RvY29sK3UpOm5ldyBVUkwodSksVD1ycChrLnBhdGhuYW1lLGYpO2sub3JpZ2luPT09eC5vcmlnaW4mJlQhPW51bGw\/dT1UK2suc2VhcmNoK2suaGFzaDptPSEwfWNhdGNoe31sZXQgdz1HUCh1LHtyZWxhdGl2ZTppfSkscD1iQSh1LHtyZXBsYWNlOnMsc3RhdGU6YSx0YXJnZXQ6bCxwcmV2ZW50U2Nyb2xsUmVzZXQ6YyxyZWxhdGl2ZTppLHZpZXdUcmFuc2l0aW9uOmR9KTtmdW5jdGlvbiB2KHgpe3ImJnIoeCkseC5kZWZhdWx0UHJldmVudGVkfHxwKHgpfXJldHVybiBiLmNyZWF0ZUVsZW1lbnQoImEiLGZmKHt9LGgse2hyZWY6eXx8dyxvbkNsaWNrOm18fG8\/cjp2LHJlZjpuLHRhcmdldDpsfSkpfSk7dmFyICRnOyhmdW5jdGlvbihlKXtlLlVzZVNjcm9sbFJlc3RvcmF0aW9uPSJ1c2VTY3JvbGxSZXN0b3JhdGlvbiIsZS5Vc2VTdWJtaXQ9InVzZVN1Ym1pdCIsZS5Vc2VTdWJtaXRGZXRjaGVyPSJ1c2VTdWJtaXRGZXRjaGVyIixlLlVzZUZldGNoZXI9InVzZUZldGNoZXIiLGUudXNlVmlld1RyYW5zaXRpb25TdGF0ZT0idXNlVmlld1RyYW5zaXRpb25TdGF0ZSJ9KSgkZ3x8KCRnPXt9KSk7dmFyIEhnOyhmdW5jdGlvbihlKXtlLlVzZUZldGNoZXI9InVzZUZldGNoZXIiLGUuVXNlRmV0Y2hlcnM9InVzZUZldGNoZXJzIixlLlVzZVNjcm9sbFJlc3RvcmF0aW9uPSJ1c2VTY3JvbGxSZXN0b3JhdGlvbiJ9KShIZ3x8KEhnPXt9KSk7ZnVuY3Rpb24gYkEoZSx0KXtsZXR7dGFyZ2V0Om4scmVwbGFjZTpyLHN0YXRlOmkscHJldmVudFNjcm9sbFJlc2V0Om8scmVsYXRpdmU6cyx2aWV3VHJhbnNpdGlvbjphfT10PT09dm9pZCAwP3t9OnQsbD1ZUCgpLHU9cGEoKSxjPWN3KGUse3JlbGF0aXZlOnN9KTtyZXR1cm4gYi51c2VDYWxsYmFjayhkPT57aWYocEEoZCxuKSl7ZC5wcmV2ZW50RGVmYXVsdCgpO2xldCBoPXIhPT12b2lkIDA\/cjpYbCh1KT09PVhsKGMpO2woZSx7cmVwbGFjZTpoLHN0YXRlOmkscHJldmVudFNjcm9sbFJlc2V0Om8scmVsYXRpdmU6cyx2aWV3VHJhbnNpdGlvbjphfSl9fSxbdSxsLGMscixpLG4sZSxvLHMsYV0pfXZhciBxZz1bImxpZ2h0IiwiZGFyayJdLGtBPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIixTQT1iLmNyZWF0ZUNvbnRleHQodm9pZCAwKSxDQT17c2V0VGhlbWU6ZT0+e30sdGhlbWVzOltdfSxUQT0oKT0+e3ZhciBlO3JldHVybihlPWIudXNlQ29udGV4dChTQSkpIT1udWxsP2U6Q0F9O2IubWVtbygoe2ZvcmNlZFRoZW1lOmUsc3RvcmFnZUtleTp0LGF0dHJpYnV0ZTpuLGVuYWJsZVN5c3RlbTpyLGVuYWJsZUNvbG9yU2NoZW1lOmksZGVmYXVsdFRoZW1lOm8sdmFsdWU6cyxhdHRyczphLG5vbmNlOmx9KT0+e2xldCB1PW89PT0ic3lzdGVtIixjPW49PT0iY2xhc3MiP2B2YXIgZD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYz1kLmNsYXNzTGlzdDske2BjLnJlbW92ZSgke2EubWFwKHk9PmAnJHt5fSdgKS5qb2luKCIsIil9KWB9O2A6YHZhciBkPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuPScke259JyxzPSdzZXRBdHRyaWJ1dGUnO2AsZD1pP3FnLmluY2x1ZGVzKG8pJiZvP2BpZihlPT09J2xpZ2h0J3x8ZT09PSdkYXJrJ3x8IWUpZC5zdHlsZS5jb2xvclNjaGVtZT1lfHwnJHtvfSdgOiJpZihlPT09J2xpZ2h0J3x8ZT09PSdkYXJrJylkLnN0eWxlLmNvbG9yU2NoZW1lPWUiOiIiLGg9KHksbT0hMSx3PSEwKT0+e2xldCBwPXM\/c1t5XTp5LHY9bT95KyJ8fCAnJyI6YCcke3B9J2AseD0iIjtyZXR1cm4gaSYmdyYmIW0mJnFnLmluY2x1ZGVzKHkpJiYoeCs9YGQuc3R5bGUuY29sb3JTY2hlbWUgPSAnJHt5fSc7YCksbj09PSJjbGFzcyI\/bXx8cD94Kz1gYy5hZGQoJHt2fSlgOngrPSJudWxsIjpwJiYoeCs9YGRbc10obiwke3Z9KWApLHh9LGY9ZT9gIWZ1bmN0aW9uKCl7JHtjfSR7aChlKX19KClgOnI\/YCFmdW5jdGlvbigpe3RyeXske2N9dmFyIGU9bG9jYWxTdG9yYWdlLmdldEl0ZW0oJyR7dH0nKTtpZignc3lzdGVtJz09PWV8fCghZSYmJHt1fSkpe3ZhciB0PScke2tBfScsbT13aW5kb3cubWF0Y2hNZWRpYSh0KTtpZihtLm1lZGlhIT09dHx8bS5tYXRjaGVzKXske2goImRhcmsiKX19ZWxzZXske2goImxpZ2h0Iil9fX1lbHNlIGlmKGUpeyR7cz9gdmFyIHg9JHtKU09OLnN0cmluZ2lmeShzKX07YDoiIn0ke2gocz8ieFtlXSI6ImUiLCEwKX19JHt1PyIiOiJlbHNleyIraChvLCExLCExKSsifSJ9JHtkfX1jYXRjaChlKXt9fSgpYDpgIWZ1bmN0aW9uKCl7dHJ5eyR7Y312YXIgZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnJHt0fScpO2lmKGUpeyR7cz9gdmFyIHg9JHtKU09OLnN0cmluZ2lmeShzKX07YDoiIn0ke2gocz8ieFtlXSI6ImUiLCEwKX19ZWxzZXske2gobywhMSwhMSl9O30ke2R9fWNhdGNoKHQpe319KCk7YDtyZXR1cm4gYi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiLHtub25jZTpsLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6Zn19KX0pO3ZhciBFQT1lPT57c3dpdGNoKGUpe2Nhc2Uic3VjY2VzcyI6cmV0dXJuIElBO2Nhc2UiaW5mbyI6cmV0dXJuIGpBO2Nhc2Uid2FybmluZyI6cmV0dXJuIE5BO2Nhc2UiZXJyb3IiOnJldHVybiB6QTtkZWZhdWx0OnJldHVybiBudWxsfX0sUEE9QXJyYXkoMTIpLmZpbGwoMCksQUE9KHt2aXNpYmxlOmUsY2xhc3NOYW1lOnR9KT0+Ri5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6WyJzb25uZXItbG9hZGluZy13cmFwcGVyIix0XS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpLCJkYXRhLXZpc2libGUiOmV9LEYuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJzb25uZXItc3Bpbm5lciJ9LFBBLm1hcCgobixyKT0+Ri5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InNvbm5lci1sb2FkaW5nLWJhciIsa2V5OmBzcGlubmVyLWJhci0ke3J9YH0pKSkpLElBPUYuY3JlYXRlRWxlbWVudCgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix2aWV3Qm94OiIwIDAgMjAgMjAiLGZpbGw6ImN1cnJlbnRDb2xvciIsaGVpZ2h0OiIyMCIsd2lkdGg6IjIwIn0sRi5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjg1Ny05LjgwOWEuNzUuNzUgMCAwMC0xLjIxNC0uODgybC0zLjQ4MyA0Ljc5LTEuODgtMS44OGEuNzUuNzUgMCAxMC0xLjA2IDEuMDYxbDIuNSAyLjVhLjc1Ljc1IDAgMDAxLjEzNy0uMDg5bDQtNS41eiIsY2xpcFJ1bGU6ImV2ZW5vZGQifSkpLE5BPUYuY3JlYXRlRWxlbWVudCgic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6ImN1cnJlbnRDb2xvciIsaGVpZ2h0OiIyMCIsd2lkdGg6IjIwIn0sRi5jcmVhdGVFbGVtZW50KCJwYXRoIix7ZmlsbFJ1bGU6ImV2ZW5vZGQiLGQ6Ik05LjQwMSAzLjAwM2MxLjE1NS0yIDQuMDQzLTIgNS4xOTcgMGw3LjM1NSAxMi43NDhjMS4xNTQgMi0uMjkgNC41LTIuNTk5IDQuNUg0LjY0NWMtMi4zMDkgMC0zLjc1Mi0yLjUtMi41OTgtNC41TDkuNCAzLjAwM3pNMTIgOC4yNWEuNzUuNzUgMCAwMS43NS43NXYzLjc1YS43NS43NSAwIDAxLTEuNSAwVjlhLjc1Ljc1IDAgMDEuNzUtLjc1em0wIDguMjVhLjc1Ljc1IDAgMTAwLTEuNS43NS43NSAwIDAwMCAxLjV6IixjbGlwUnVsZToiZXZlbm9kZCJ9KSksakE9Ri5jcmVhdGVFbGVtZW50KCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyMCAyMCIsZmlsbDoiY3VycmVudENvbG9yIixoZWlnaHQ6IjIwIix3aWR0aDoiMjAifSxGLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tNy00YTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHpNOSA5YS43NS43NSAwIDAwMCAxLjVoLjI1M2EuMjUuMjUgMCAwMS4yNDQuMzA0bC0uNDU5IDIuMDY2QTEuNzUgMS43NSAwIDAwMTAuNzQ3IDE1SDExYS43NS43NSAwIDAwMC0xLjVoLS4yNTNhLjI1LjI1IDAgMDEtLjI0NC0uMzA0bC40NTktMi4wNjZBMS43NSAxLjc1IDAgMDA5LjI1MyA5SDl6IixjbGlwUnVsZToiZXZlbm9kZCJ9KSksekE9Ri5jcmVhdGVFbGVtZW50KCJzdmciLHt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyMCAyMCIsZmlsbDoiY3VycmVudENvbG9yIixoZWlnaHQ6IjIwIix3aWR0aDoiMjAifSxGLmNyZWF0ZUVsZW1lbnQoInBhdGgiLHtmaWxsUnVsZToiZXZlbm9kZCIsZDoiTTE4IDEwYTggOCAwIDExLTE2IDAgOCA4IDAgMDExNiAwem0tOC01YS43NS43NSAwIDAxLjc1Ljc1djQuNWEuNzUuNzUgMCAwMS0xLjUgMHYtNC41QS43NS43NSAwIDAxMTAgNXptMCAxMGExIDEgMCAxMDAtMiAxIDEgMCAwMDAgMnoiLGNsaXBSdWxlOiJldmVub2RkIn0pKSxSQT1GLmNyZWF0ZUVsZW1lbnQoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjEyIixoZWlnaHQ6IjEyIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIn0sRi5jcmVhdGVFbGVtZW50KCJsaW5lIix7eDE6IjE4Iix5MToiNiIseDI6IjYiLHkyOiIxOCJ9KSxGLmNyZWF0ZUVsZW1lbnQoImxpbmUiLHt4MToiNiIseTE6IjYiLHgyOiIxOCIseTI6IjE4In0pKSxEQT0oKT0+e2xldFtlLHRdPUYudXNlU3RhdGUoZG9jdW1lbnQuaGlkZGVuKTtyZXR1cm4gRi51c2VFZmZlY3QoKCk9PntsZXQgbj0oKT0+e3QoZG9jdW1lbnQuaGlkZGVuKX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLG4pLCgpPT53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsbil9LFtdKSxlfSxoZj0xLE1BPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zdWJzY3JpYmU9ZT0+KHRoaXMuc3Vic2NyaWJlcnMucHVzaChlKSwoKT0+e2xldCB0PXRoaXMuc3Vic2NyaWJlcnMuaW5kZXhPZihlKTt0aGlzLnN1YnNjcmliZXJzLnNwbGljZSh0LDEpfSksdGhpcy5wdWJsaXNoPWU9Pnt0aGlzLnN1YnNjcmliZXJzLmZvckVhY2godD0+dChlKSl9LHRoaXMuYWRkVG9hc3Q9ZT0+e3RoaXMucHVibGlzaChlKSx0aGlzLnRvYXN0cz1bLi4udGhpcy50b2FzdHMsZV19LHRoaXMuY3JlYXRlPWU9Pnt2YXIgdDtsZXR7bWVzc2FnZTpuLC4uLnJ9PWUsaT10eXBlb2YoZT09bnVsbD92b2lkIDA6ZS5pZCk9PSJudW1iZXIifHwoKHQ9ZS5pZCk9PW51bGw\/dm9pZCAwOnQubGVuZ3RoKT4wP2UuaWQ6aGYrKyxvPXRoaXMudG9hc3RzLmZpbmQoYT0+YS5pZD09PWkpLHM9ZS5kaXNtaXNzaWJsZT09PXZvaWQgMD8hMDplLmRpc21pc3NpYmxlO3JldHVybiB0aGlzLmRpc21pc3NlZFRvYXN0cy5oYXMoaSkmJnRoaXMuZGlzbWlzc2VkVG9hc3RzLmRlbGV0ZShpKSxvP3RoaXMudG9hc3RzPXRoaXMudG9hc3RzLm1hcChhPT5hLmlkPT09aT8odGhpcy5wdWJsaXNoKHsuLi5hLC4uLmUsaWQ6aSx0aXRsZTpufSksey4uLmEsLi4uZSxpZDppLGRpc21pc3NpYmxlOnMsdGl0bGU6bn0pOmEpOnRoaXMuYWRkVG9hc3Qoe3RpdGxlOm4sLi4ucixkaXNtaXNzaWJsZTpzLGlkOml9KSxpfSx0aGlzLmRpc21pc3M9ZT0+KHRoaXMuZGlzbWlzc2VkVG9hc3RzLmFkZChlKSxlfHx0aGlzLnRvYXN0cy5mb3JFYWNoKHQ9Pnt0aGlzLnN1YnNjcmliZXJzLmZvckVhY2gobj0+bih7aWQ6dC5pZCxkaXNtaXNzOiEwfSkpfSksdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKHQ9PnQoe2lkOmUsZGlzbWlzczohMH0pKSxlKSx0aGlzLm1lc3NhZ2U9KGUsdCk9PnRoaXMuY3JlYXRlKHsuLi50LG1lc3NhZ2U6ZX0pLHRoaXMuZXJyb3I9KGUsdCk9PnRoaXMuY3JlYXRlKHsuLi50LG1lc3NhZ2U6ZSx0eXBlOiJlcnJvciJ9KSx0aGlzLnN1Y2Nlc3M9KGUsdCk9PnRoaXMuY3JlYXRlKHsuLi50LHR5cGU6InN1Y2Nlc3MiLG1lc3NhZ2U6ZX0pLHRoaXMuaW5mbz0oZSx0KT0+dGhpcy5jcmVhdGUoey4uLnQsdHlwZToiaW5mbyIsbWVzc2FnZTplfSksdGhpcy53YXJuaW5nPShlLHQpPT50aGlzLmNyZWF0ZSh7Li4udCx0eXBlOiJ3YXJuaW5nIixtZXNzYWdlOmV9KSx0aGlzLmxvYWRpbmc9KGUsdCk9PnRoaXMuY3JlYXRlKHsuLi50LHR5cGU6ImxvYWRpbmciLG1lc3NhZ2U6ZX0pLHRoaXMucHJvbWlzZT0oZSx0KT0+e2lmKCF0KXJldHVybjtsZXQgbjt0LmxvYWRpbmchPT12b2lkIDAmJihuPXRoaXMuY3JlYXRlKHsuLi50LHByb21pc2U6ZSx0eXBlOiJsb2FkaW5nIixtZXNzYWdlOnQubG9hZGluZyxkZXNjcmlwdGlvbjp0eXBlb2YgdC5kZXNjcmlwdGlvbiE9ImZ1bmN0aW9uIj90LmRlc2NyaXB0aW9uOnZvaWQgMH0pKTtsZXQgcj1lIGluc3RhbmNlb2YgUHJvbWlzZT9lOmUoKSxpPW4hPT12b2lkIDAsbyxzPXIudGhlbihhc3luYyBsPT57aWYobz1bInJlc29sdmUiLGxdLEYuaXNWYWxpZEVsZW1lbnQobCkpaT0hMSx0aGlzLmNyZWF0ZSh7aWQ6bix0eXBlOiJkZWZhdWx0IixtZXNzYWdlOmx9KTtlbHNlIGlmKE9BKGwpJiYhbC5vayl7aT0hMTtsZXQgdT10eXBlb2YgdC5lcnJvcj09ImZ1bmN0aW9uIj9hd2FpdCB0LmVycm9yKGBIVFRQIGVycm9yISBzdGF0dXM6ICR7bC5zdGF0dXN9YCk6dC5lcnJvcixjPXR5cGVvZiB0LmRlc2NyaXB0aW9uPT0iZnVuY3Rpb24iP2F3YWl0IHQuZGVzY3JpcHRpb24oYEhUVFAgZXJyb3IhIHN0YXR1czogJHtsLnN0YXR1c31gKTp0LmRlc2NyaXB0aW9uO3RoaXMuY3JlYXRlKHtpZDpuLHR5cGU6ImVycm9yIixtZXNzYWdlOnUsZGVzY3JpcHRpb246Y30pfWVsc2UgaWYodC5zdWNjZXNzIT09dm9pZCAwKXtpPSExO2xldCB1PXR5cGVvZiB0LnN1Y2Nlc3M9PSJmdW5jdGlvbiI\/YXdhaXQgdC5zdWNjZXNzKGwpOnQuc3VjY2VzcyxjPXR5cGVvZiB0LmRlc2NyaXB0aW9uPT0iZnVuY3Rpb24iP2F3YWl0IHQuZGVzY3JpcHRpb24obCk6dC5kZXNjcmlwdGlvbjt0aGlzLmNyZWF0ZSh7aWQ6bix0eXBlOiJzdWNjZXNzIixtZXNzYWdlOnUsZGVzY3JpcHRpb246Y30pfX0pLmNhdGNoKGFzeW5jIGw9PntpZihvPVsicmVqZWN0IixsXSx0LmVycm9yIT09dm9pZCAwKXtpPSExO2xldCB1PXR5cGVvZiB0LmVycm9yPT0iZnVuY3Rpb24iP2F3YWl0IHQuZXJyb3IobCk6dC5lcnJvcixjPXR5cGVvZiB0LmRlc2NyaXB0aW9uPT0iZnVuY3Rpb24iP2F3YWl0IHQuZGVzY3JpcHRpb24obCk6dC5kZXNjcmlwdGlvbjt0aGlzLmNyZWF0ZSh7aWQ6bix0eXBlOiJlcnJvciIsbWVzc2FnZTp1LGRlc2NyaXB0aW9uOmN9KX19KS5maW5hbGx5KCgpPT57dmFyIGw7aSYmKHRoaXMuZGlzbWlzcyhuKSxuPXZvaWQgMCksKGw9dC5maW5hbGx5KT09bnVsbHx8bC5jYWxsKHQpfSksYT0oKT0+bmV3IFByb21pc2UoKGwsdSk9PnMudGhlbigoKT0+b1swXT09PSJyZWplY3QiP3Uob1sxXSk6bChvWzFdKSkuY2F0Y2godSkpO3JldHVybiB0eXBlb2YgbiE9InN0cmluZyImJnR5cGVvZiBuIT0ibnVtYmVyIj97dW53cmFwOmF9Ok9iamVjdC5hc3NpZ24obix7dW53cmFwOmF9KX0sdGhpcy5jdXN0b209KGUsdCk9PntsZXQgbj0odD09bnVsbD92b2lkIDA6dC5pZCl8fGhmKys7cmV0dXJuIHRoaXMuY3JlYXRlKHtqc3g6ZShuKSxpZDpuLC4uLnR9KSxufSx0aGlzLmdldEFjdGl2ZVRvYXN0cz0oKT0+dGhpcy50b2FzdHMuZmlsdGVyKGU9PiF0aGlzLmRpc21pc3NlZFRvYXN0cy5oYXMoZS5pZCkpLHRoaXMuc3Vic2NyaWJlcnM9W10sdGhpcy50b2FzdHM9W10sdGhpcy5kaXNtaXNzZWRUb2FzdHM9bmV3IFNldH19LG10PW5ldyBNQSxMQT0oZSx0KT0+e2xldCBuPSh0PT1udWxsP3ZvaWQgMDp0LmlkKXx8aGYrKztyZXR1cm4gbXQuYWRkVG9hc3Qoe3RpdGxlOmUsLi4udCxpZDpufSksbn0sT0E9ZT0+ZSYmdHlwZW9mIGU9PSJvYmplY3QiJiYib2siaW4gZSYmdHlwZW9mIGUub2s9PSJib29sZWFuIiYmInN0YXR1cyJpbiBlJiZ0eXBlb2YgZS5zdGF0dXM9PSJudW1iZXIiLEZBPUxBLF9BPSgpPT5tdC50b2FzdHMsVkE9KCk9Pm10LmdldEFjdGl2ZVRvYXN0cygpO09iamVjdC5hc3NpZ24oRkEse3N1Y2Nlc3M6bXQuc3VjY2VzcyxpbmZvOm10LmluZm8sd2FybmluZzptdC53YXJuaW5nLGVycm9yOm10LmVycm9yLGN1c3RvbTptdC5jdXN0b20sbWVzc2FnZTptdC5tZXNzYWdlLHByb21pc2U6bXQucHJvbWlzZSxkaXNtaXNzOm10LmRpc21pc3MsbG9hZGluZzptdC5sb2FkaW5nfSx7Z2V0SGlzdG9yeTpfQSxnZXRUb2FzdHM6VkF9KTtmdW5jdGlvbiBCQShlLHtpbnNlcnRBdDp0fT17fSl7aWYodHlwZW9mIGRvY3VtZW50PiJ1IilyZXR1cm47bGV0IG49ZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ci50eXBlPSJ0ZXh0L2NzcyIsdD09PSJ0b3AiJiZuLmZpcnN0Q2hpbGQ\/bi5pbnNlcnRCZWZvcmUocixuLmZpcnN0Q2hpbGQpOm4uYXBwZW5kQ2hpbGQociksci5zdHlsZVNoZWV0P3Iuc3R5bGVTaGVldC5jc3NUZXh0PWU6ci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSl9QkEoYDp3aGVyZShodG1sW2Rpcj0ibHRyIl0pLDp3aGVyZShbZGF0YS1zb25uZXItdG9hc3Rlcl1bZGlyPSJsdHIiXSl7LS10b2FzdC1pY29uLW1hcmdpbi1zdGFydDogLTNweDstLXRvYXN0LWljb24tbWFyZ2luLWVuZDogNHB4Oy0tdG9hc3Qtc3ZnLW1hcmdpbi1zdGFydDogLTFweDstLXRvYXN0LXN2Zy1tYXJnaW4tZW5kOiAwcHg7LS10b2FzdC1idXR0b24tbWFyZ2luLXN0YXJ0OiBhdXRvOy0tdG9hc3QtYnV0dG9uLW1hcmdpbi1lbmQ6IDA7LS10b2FzdC1jbG9zZS1idXR0b24tc3RhcnQ6IDA7LS10b2FzdC1jbG9zZS1idXR0b24tZW5kOiB1bnNldDstLXRvYXN0LWNsb3NlLWJ1dHRvbi10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzUlLCAtMzUlKX06d2hlcmUoaHRtbFtkaXI9InJ0bCJdKSw6d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0ZXJdW2Rpcj0icnRsIl0pey0tdG9hc3QtaWNvbi1tYXJnaW4tc3RhcnQ6IDRweDstLXRvYXN0LWljb24tbWFyZ2luLWVuZDogLTNweDstLXRvYXN0LXN2Zy1tYXJnaW4tc3RhcnQ6IDBweDstLXRvYXN0LXN2Zy1tYXJnaW4tZW5kOiAtMXB4Oy0tdG9hc3QtYnV0dG9uLW1hcmdpbi1zdGFydDogMDstLXRvYXN0LWJ1dHRvbi1tYXJnaW4tZW5kOiBhdXRvOy0tdG9hc3QtY2xvc2UtYnV0dG9uLXN0YXJ0OiB1bnNldDstLXRvYXN0LWNsb3NlLWJ1dHRvbi1lbmQ6IDA7LS10b2FzdC1jbG9zZS1idXR0b24tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMzUlLCAtMzUlKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0ZXJdKXtwb3NpdGlvbjpmaXhlZDt3aWR0aDp2YXIoLS13aWR0aCk7Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLEhlbHZldGljYSBOZXVlLEFyaWFsLE5vdG8gU2FucyxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppOy0tZ3JheTE6IGhzbCgwLCAwJSwgOTklKTstLWdyYXkyOiBoc2woMCwgMCUsIDk3LjMlKTstLWdyYXkzOiBoc2woMCwgMCUsIDk1LjElKTstLWdyYXk0OiBoc2woMCwgMCUsIDkzJSk7LS1ncmF5NTogaHNsKDAsIDAlLCA5MC45JSk7LS1ncmF5NjogaHNsKDAsIDAlLCA4OC43JSk7LS1ncmF5NzogaHNsKDAsIDAlLCA4NS44JSk7LS1ncmF5ODogaHNsKDAsIDAlLCA3OCUpOy0tZ3JheTk6IGhzbCgwLCAwJSwgNTYuMSUpOy0tZ3JheTEwOiBoc2woMCwgMCUsIDUyLjMlKTstLWdyYXkxMTogaHNsKDAsIDAlLCA0My41JSk7LS1ncmF5MTI6IGhzbCgwLCAwJSwgOSUpOy0tYm9yZGVyLXJhZGl1czogOHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjA7bWFyZ2luOjA7bGlzdC1zdHlsZTpub25lO291dGxpbmU6bm9uZTt6LWluZGV4Ojk5OTk5OTk5OTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNHMgZWFzZX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtbGlmdGVkPSJ0cnVlIl0pe3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMHB4KX1AbWVkaWEgKGhvdmVyOiBub25lKSBhbmQgKHBvaW50ZXI6IGNvYXJzZSl7OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLWxpZnRlZD0idHJ1ZSJdKXt0cmFuc2Zvcm06bm9uZX19OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249InJpZ2h0Il0pe3JpZ2h0OnZhcigtLW9mZnNldC1yaWdodCl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249ImxlZnQiXSl7bGVmdDp2YXIoLS1vZmZzZXQtbGVmdCl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXgtcG9zaXRpb249ImNlbnRlciJdKXtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS15LXBvc2l0aW9uPSJ0b3AiXSl7dG9wOnZhcigtLW9mZnNldC10b3ApfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS15LXBvc2l0aW9uPSJib3R0b20iXSl7Ym90dG9tOnZhcigtLW9mZnNldC1ib3R0b20pfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKXstLXk6IHRyYW5zbGF0ZVkoMTAwJSk7LS1saWZ0LWFtb3VudDogY2FsYyh2YXIoLS1saWZ0KSAqIHZhcigtLWdhcCkpO3otaW5kZXg6dmFyKC0tei1pbmRleCk7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO3RyYW5zZm9ybTp2YXIoLS15KTtmaWx0ZXI6Ymx1cigwKTt0b3VjaC1hY3Rpb246bm9uZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNHMsb3BhY2l0eSAuNHMsaGVpZ2h0IC40cyxib3gtc2hhZG93IC4ycztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3V0bGluZTpub25lO292ZXJmbG93LXdyYXA6YW55d2hlcmV9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zdHlsZWQ9InRydWUiXSl7cGFkZGluZzoxNnB4O2JhY2tncm91bmQ6dmFyKC0tbm9ybWFsLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLW5vcm1hbC1ib3JkZXIpO2NvbG9yOnZhcigtLW5vcm1hbC10ZXh0KTtib3JkZXItcmFkaXVzOnZhcigtLWJvcmRlci1yYWRpdXMpO2JveC1zaGFkb3c6MCA0cHggMTJweCAjMDAwMDAwMWE7d2lkdGg6dmFyKC0td2lkdGgpO2ZvbnQtc2l6ZToxM3B4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweH06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XTpmb2N1cy12aXNpYmxlKXtib3gtc2hhZG93OjAgNHB4IDEycHggIzAwMDAwMDFhLDAgMCAwIDJweCAjMDAwM306d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXktcG9zaXRpb249InRvcCJdKXt0b3A6MDstLXk6IHRyYW5zbGF0ZVkoLTEwMCUpOy0tbGlmdDogMTstLWxpZnQtYW1vdW50OiBjYWxjKDEgKiB2YXIoLS1nYXApKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXktcG9zaXRpb249ImJvdHRvbSJdKXtib3R0b206MDstLXk6IHRyYW5zbGF0ZVkoMTAwJSk7LS1saWZ0OiAtMTstLWxpZnQtYW1vdW50OiBjYWxjKHZhcigtLWxpZnQpICogdmFyKC0tZ2FwKSl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS1kZXNjcmlwdGlvbl0pe2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjQ7Y29sb3I6aW5oZXJpdH06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSkgOndoZXJlKFtkYXRhLXRpdGxlXSl7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjppbmhlcml0fTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKSA6d2hlcmUoW2RhdGEtaWNvbl0pe2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTZweDt3aWR0aDoxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXNocmluazowO21hcmdpbi1sZWZ0OnZhcigtLXRvYXN0LWljb24tbWFyZ2luLXN0YXJ0KTttYXJnaW4tcmlnaHQ6dmFyKC0tdG9hc3QtaWNvbi1tYXJnaW4tZW5kKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXByb21pc2U9InRydWUiXSkgOndoZXJlKFtkYXRhLWljb25dKT5zdmd7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOCk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7YW5pbWF0aW9uOnNvbm5lci1mYWRlLWluIC4zcyBlYXNlIGZvcndhcmRzfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKSA6d2hlcmUoW2RhdGEtaWNvbl0pPip7ZmxleC1zaHJpbms6MH06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSkgOndoZXJlKFtkYXRhLWljb25dKSBzdmd7bWFyZ2luLWxlZnQ6dmFyKC0tdG9hc3Qtc3ZnLW1hcmdpbi1zdGFydCk7bWFyZ2luLXJpZ2h0OnZhcigtLXRvYXN0LXN2Zy1tYXJnaW4tZW5kKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSkgOndoZXJlKFtkYXRhLWNvbnRlbnRdKXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHh9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN0eWxlZD10cnVlXSBbZGF0YS1idXR0b25de2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDo4cHg7aGVpZ2h0OjI0cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tbm9ybWFsLWJnKTtiYWNrZ3JvdW5kOnZhcigtLW5vcm1hbC10ZXh0KTttYXJnaW4tbGVmdDp2YXIoLS10b2FzdC1idXR0b24tbWFyZ2luLXN0YXJ0KTttYXJnaW4tcmlnaHQ6dmFyKC0tdG9hc3QtYnV0dG9uLW1hcmdpbi1lbmQpO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtc2hyaW5rOjA7dHJhbnNpdGlvbjpvcGFjaXR5IC40cyxib3gtc2hhZG93IC4yc306d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSkgOndoZXJlKFtkYXRhLWJ1dHRvbl0pOmZvY3VzLXZpc2libGV7Ym94LXNoYWRvdzowIDAgMCAycHggIzAwMDZ9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS1idXR0b25dKTpmaXJzdC1vZi10eXBle21hcmdpbi1sZWZ0OnZhcigtLXRvYXN0LWJ1dHRvbi1tYXJnaW4tc3RhcnQpO21hcmdpbi1yaWdodDp2YXIoLS10b2FzdC1idXR0b24tbWFyZ2luLWVuZCl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS1jYW5jZWxdKXtjb2xvcjp2YXIoLS1ub3JtYWwtdGV4dCk7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wOCl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS10aGVtZT0iZGFyayJdKSA6d2hlcmUoW2RhdGEtY2FuY2VsXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4zKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XSkgOndoZXJlKFtkYXRhLWNsb3NlLWJ1dHRvbl0pe3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6dmFyKC0tdG9hc3QtY2xvc2UtYnV0dG9uLXN0YXJ0KTtyaWdodDp2YXIoLS10b2FzdC1jbG9zZS1idXR0b24tZW5kKTt0b3A6MDtoZWlnaHQ6MjBweDt3aWR0aDoyMHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjA7Y29sb3I6dmFyKC0tZ3JheTEyKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWdyYXk0KTt0cmFuc2Zvcm06dmFyKC0tdG9hc3QtY2xvc2UtYnV0dG9uLXRyYW5zZm9ybSk7Ym9yZGVyLXJhZGl1czo1MCU7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoxO3RyYW5zaXRpb246b3BhY2l0eSAuMXMsYmFja2dyb3VuZCAuMnMsYm9yZGVyLWNvbG9yIC4yc31bZGF0YS1zb25uZXItdG9hc3RdIFtkYXRhLWNsb3NlLWJ1dHRvbl17YmFja2dyb3VuZDp2YXIoLS1ncmF5MSl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pIDp3aGVyZShbZGF0YS1jbG9zZS1idXR0b25dKTpmb2N1cy12aXNpYmxle2JveC1zaGFkb3c6MCA0cHggMTJweCAjMDAwMDAwMWEsMCAwIDAgMnB4ICMwMDAzfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKSA6d2hlcmUoW2RhdGEtZGlzYWJsZWQ9InRydWUiXSl7Y3Vyc29yOm5vdC1hbGxvd2VkfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdKTpob3ZlciA6d2hlcmUoW2RhdGEtY2xvc2UtYnV0dG9uXSk6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1ncmF5Mik7Ym9yZGVyLWNvbG9yOnZhcigtLWdyYXk1KX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBpbmc9InRydWUiXSk6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotNTAlO3JpZ2h0Oi01MCU7aGVpZ2h0OjEwMCU7ei1pbmRleDotMX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXktcG9zaXRpb249InRvcCJdW2RhdGEtc3dpcGluZz0idHJ1ZSJdKTpiZWZvcmV7Ym90dG9tOjUwJTt0cmFuc2Zvcm06c2NhbGVZKDMpIHRyYW5zbGF0ZVkoNTAlKX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXktcG9zaXRpb249ImJvdHRvbSJdW2RhdGEtc3dpcGluZz0idHJ1ZSJdKTpiZWZvcmV7dG9wOjUwJTt0cmFuc2Zvcm06c2NhbGVZKDMpIHRyYW5zbGF0ZVkoLTUwJSl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwaW5nPSJmYWxzZSJdW2RhdGEtcmVtb3ZlZD0idHJ1ZSJdKTpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3RyYW5zZm9ybTpzY2FsZVkoMil9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2hlaWdodDpjYWxjKHZhcigtLWdhcCkgKyAxcHgpO2JvdHRvbToxMDAlO3dpZHRoOjEwMCV9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1tb3VudGVkPSJ0cnVlIl0pey0teTogdHJhbnNsYXRlWSgwKTtvcGFjaXR5OjF9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1leHBhbmRlZD0iZmFsc2UiXVtkYXRhLWZyb250PSJmYWxzZSJdKXstLXNjYWxlOiB2YXIoLS10b2FzdHMtYmVmb3JlKSAqIC4wNSArIDE7LS15OiB0cmFuc2xhdGVZKGNhbGModmFyKC0tbGlmdC1hbW91bnQpICogdmFyKC0tdG9hc3RzLWJlZm9yZSkpKSBzY2FsZShjYWxjKC0xICogdmFyKC0tc2NhbGUpKSk7aGVpZ2h0OnZhcigtLWZyb250LXRvYXN0LWhlaWdodCl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF0pPip7dHJhbnNpdGlvbjpvcGFjaXR5IC40c306d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLWV4cGFuZGVkPSJmYWxzZSJdW2RhdGEtZnJvbnQ9ImZhbHNlIl1bZGF0YS1zdHlsZWQ9InRydWUiXSk+KntvcGFjaXR5OjB9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS12aXNpYmxlPSJmYWxzZSJdKXtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZX06d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLW1vdW50ZWQ9InRydWUiXVtkYXRhLWV4cGFuZGVkPSJ0cnVlIl0pey0teTogdHJhbnNsYXRlWShjYWxjKHZhcigtLWxpZnQpICogdmFyKC0tb2Zmc2V0KSkpO2hlaWdodDp2YXIoLS1pbml0aWFsLWhlaWdodCl9OndoZXJlKFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1yZW1vdmVkPSJ0cnVlIl1bZGF0YS1mcm9udD0idHJ1ZSJdW2RhdGEtc3dpcGUtb3V0PSJmYWxzZSJdKXstLXk6IHRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1saWZ0KSAqIC0xMDAlKSk7b3BhY2l0eTowfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtcmVtb3ZlZD0idHJ1ZSJdW2RhdGEtZnJvbnQ9ImZhbHNlIl1bZGF0YS1zd2lwZS1vdXQ9ImZhbHNlIl1bZGF0YS1leHBhbmRlZD0idHJ1ZSJdKXstLXk6IHRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1saWZ0KSAqIHZhcigtLW9mZnNldCkgKyB2YXIoLS1saWZ0KSAqIC0xMDAlKSk7b3BhY2l0eTowfTp3aGVyZShbZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtcmVtb3ZlZD0idHJ1ZSJdW2RhdGEtZnJvbnQ9ImZhbHNlIl1bZGF0YS1zd2lwZS1vdXQ9ImZhbHNlIl1bZGF0YS1leHBhbmRlZD0iZmFsc2UiXSl7LS15OiB0cmFuc2xhdGVZKDQwJSk7b3BhY2l0eTowO3RyYW5zaXRpb246dHJhbnNmb3JtIC41cyxvcGFjaXR5IC4yc306d2hlcmUoW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXJlbW92ZWQ9InRydWUiXVtkYXRhLWZyb250PSJmYWxzZSJdKTpiZWZvcmV7aGVpZ2h0OmNhbGModmFyKC0taW5pdGlhbC1oZWlnaHQpICsgMjAlKX1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGluZz10cnVlXXt0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWSh2YXIoLS1zd2lwZS1hbW91bnQteSwgMHB4KSkgdHJhbnNsYXRlKHZhcigtLXN3aXBlLWFtb3VudC14LCAwcHgpKTt0cmFuc2l0aW9uOm5vbmV9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlZD10cnVlXXt1c2VyLXNlbGVjdDpub25lfVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZS1vdXQ9dHJ1ZV1bZGF0YS15LXBvc2l0aW9uPWJvdHRvbV0sW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlLW91dD10cnVlXVtkYXRhLXktcG9zaXRpb249dG9wXXthbmltYXRpb24tZHVyYXRpb246LjJzO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXQ7YW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkc31bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGUtb3V0PXRydWVdW2RhdGEtc3dpcGUtZGlyZWN0aW9uPWxlZnRde2FuaW1hdGlvbi1uYW1lOnN3aXBlLW91dC1sZWZ0fVtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1zd2lwZS1vdXQ9dHJ1ZV1bZGF0YS1zd2lwZS1kaXJlY3Rpb249cmlnaHRde2FuaW1hdGlvbi1uYW1lOnN3aXBlLW91dC1yaWdodH1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtc3dpcGUtb3V0PXRydWVdW2RhdGEtc3dpcGUtZGlyZWN0aW9uPXVwXXthbmltYXRpb24tbmFtZTpzd2lwZS1vdXQtdXB9W2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXN3aXBlLW91dD10cnVlXVtkYXRhLXN3aXBlLWRpcmVjdGlvbj1kb3duXXthbmltYXRpb24tbmFtZTpzd2lwZS1vdXQtZG93bn1Aa2V5ZnJhbWVzIHN3aXBlLW91dC1sZWZ0ezAle3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGUodmFyKC0tc3dpcGUtYW1vdW50LXgpKTtvcGFjaXR5OjF9dG97dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZShjYWxjKHZhcigtLXN3aXBlLWFtb3VudC14KSAtIDEwMCUpKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgc3dpcGUtb3V0LXJpZ2h0ezAle3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGUodmFyKC0tc3dpcGUtYW1vdW50LXgpKTtvcGFjaXR5OjF9dG97dHJhbnNmb3JtOnZhcigtLXkpIHRyYW5zbGF0ZShjYWxjKHZhcigtLXN3aXBlLWFtb3VudC14KSArIDEwMCUpKTtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgc3dpcGUtb3V0LXVwezAle3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKHZhcigtLXN3aXBlLWFtb3VudC15KSk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTp2YXIoLS15KSB0cmFuc2xhdGVZKGNhbGModmFyKC0tc3dpcGUtYW1vdW50LXkpIC0gMTAwJSkpO29wYWNpdHk6MH19QGtleWZyYW1lcyBzd2lwZS1vdXQtZG93bnswJXt0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWSh2YXIoLS1zd2lwZS1hbW91bnQteSkpO29wYWNpdHk6MX10b3t0cmFuc2Zvcm06dmFyKC0teSkgdHJhbnNsYXRlWShjYWxjKHZhcigtLXN3aXBlLWFtb3VudC15KSArIDEwMCUpKTtvcGFjaXR5OjB9fUBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCl7W2RhdGEtc29ubmVyLXRvYXN0ZXJde3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OnZhcigtLW1vYmlsZS1vZmZzZXQtcmlnaHQpO2xlZnQ6dmFyKC0tbW9iaWxlLW9mZnNldC1sZWZ0KTt3aWR0aDoxMDAlfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkaXI9cnRsXXtsZWZ0OmNhbGModmFyKC0tbW9iaWxlLW9mZnNldC1sZWZ0KSAqIC0xKX1bZGF0YS1zb25uZXItdG9hc3Rlcl0gW2RhdGEtc29ubmVyLXRvYXN0XXtsZWZ0OjA7cmlnaHQ6MDt3aWR0aDpjYWxjKDEwMCUgLSB2YXIoLS1tb2JpbGUtb2Zmc2V0LWxlZnQpICogMil9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteC1wb3NpdGlvbj1sZWZ0XXtsZWZ0OnZhcigtLW1vYmlsZS1vZmZzZXQtbGVmdCl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteS1wb3NpdGlvbj1ib3R0b21de2JvdHRvbTp2YXIoLS1tb2JpbGUtb2Zmc2V0LWJvdHRvbSl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteS1wb3NpdGlvbj10b3Bde3RvcDp2YXIoLS1tb2JpbGUtb2Zmc2V0LXRvcCl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEteC1wb3NpdGlvbj1jZW50ZXJde2xlZnQ6dmFyKC0tbW9iaWxlLW9mZnNldC1sZWZ0KTtyaWdodDp2YXIoLS1tb2JpbGUtb2Zmc2V0LXJpZ2h0KTt0cmFuc2Zvcm06bm9uZX19W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtdGhlbWU9bGlnaHRdey0tbm9ybWFsLWJnOiAjZmZmOy0tbm9ybWFsLWJvcmRlcjogdmFyKC0tZ3JheTQpOy0tbm9ybWFsLXRleHQ6IHZhcigtLWdyYXkxMik7LS1zdWNjZXNzLWJnOiBoc2woMTQzLCA4NSUsIDk2JSk7LS1zdWNjZXNzLWJvcmRlcjogaHNsKDE0NSwgOTIlLCA5MSUpOy0tc3VjY2Vzcy10ZXh0OiBoc2woMTQwLCAxMDAlLCAyNyUpOy0taW5mby1iZzogaHNsKDIwOCwgMTAwJSwgOTclKTstLWluZm8tYm9yZGVyOiBoc2woMjIxLCA5MSUsIDkxJSk7LS1pbmZvLXRleHQ6IGhzbCgyMTAsIDkyJSwgNDUlKTstLXdhcm5pbmctYmc6IGhzbCg0OSwgMTAwJSwgOTclKTstLXdhcm5pbmctYm9yZGVyOiBoc2woNDksIDkxJSwgOTElKTstLXdhcm5pbmctdGV4dDogaHNsKDMxLCA5MiUsIDQ1JSk7LS1lcnJvci1iZzogaHNsKDM1OSwgMTAwJSwgOTclKTstLWVycm9yLWJvcmRlcjogaHNsKDM1OSwgMTAwJSwgOTQlKTstLWVycm9yLXRleHQ6IGhzbCgzNjAsIDEwMCUsIDQ1JSl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtdGhlbWU9bGlnaHRdIFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1pbnZlcnQ9dHJ1ZV17LS1ub3JtYWwtYmc6ICMwMDA7LS1ub3JtYWwtYm9yZGVyOiBoc2woMCwgMCUsIDIwJSk7LS1ub3JtYWwtdGV4dDogdmFyKC0tZ3JheTEpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXRoZW1lPWRhcmtdIFtkYXRhLXNvbm5lci10b2FzdF1bZGF0YS1pbnZlcnQ9dHJ1ZV17LS1ub3JtYWwtYmc6ICNmZmY7LS1ub3JtYWwtYm9yZGVyOiB2YXIoLS1ncmF5Myk7LS1ub3JtYWwtdGV4dDogdmFyKC0tZ3JheTEyKX1bZGF0YS1zb25uZXItdG9hc3Rlcl1bZGF0YS10aGVtZT1kYXJrXXstLW5vcm1hbC1iZzogIzAwMDstLW5vcm1hbC1iZy1ob3ZlcjogaHNsKDAsIDAlLCAxMiUpOy0tbm9ybWFsLWJvcmRlcjogaHNsKDAsIDAlLCAyMCUpOy0tbm9ybWFsLWJvcmRlci1ob3ZlcjogaHNsKDAsIDAlLCAyNSUpOy0tbm9ybWFsLXRleHQ6IHZhcigtLWdyYXkxKTstLXN1Y2Nlc3MtYmc6IGhzbCgxNTAsIDEwMCUsIDYlKTstLXN1Y2Nlc3MtYm9yZGVyOiBoc2woMTQ3LCAxMDAlLCAxMiUpOy0tc3VjY2Vzcy10ZXh0OiBoc2woMTUwLCA4NiUsIDY1JSk7LS1pbmZvLWJnOiBoc2woMjE1LCAxMDAlLCA2JSk7LS1pbmZvLWJvcmRlcjogaHNsKDIyMywgMTAwJSwgMTIlKTstLWluZm8tdGV4dDogaHNsKDIxNiwgODclLCA2NSUpOy0td2FybmluZy1iZzogaHNsKDY0LCAxMDAlLCA2JSk7LS13YXJuaW5nLWJvcmRlcjogaHNsKDYwLCAxMDAlLCAxMiUpOy0td2FybmluZy10ZXh0OiBoc2woNDYsIDg3JSwgNjUlKTstLWVycm9yLWJnOiBoc2woMzU4LCA3NiUsIDEwJSk7LS1lcnJvci1ib3JkZXI6IGhzbCgzNTcsIDg5JSwgMTYlKTstLWVycm9yLXRleHQ6IGhzbCgzNTgsIDEwMCUsIDgxJSl9W2RhdGEtc29ubmVyLXRvYXN0ZXJdW2RhdGEtdGhlbWU9ZGFya10gW2RhdGEtc29ubmVyLXRvYXN0XSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0tbm9ybWFsLWJnKTtib3JkZXItY29sb3I6dmFyKC0tbm9ybWFsLWJvcmRlcik7Y29sb3I6dmFyKC0tbm9ybWFsLXRleHQpfVtkYXRhLXNvbm5lci10b2FzdGVyXVtkYXRhLXRoZW1lPWRhcmtdIFtkYXRhLXNvbm5lci10b2FzdF0gW2RhdGEtY2xvc2UtYnV0dG9uXTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLW5vcm1hbC1iZy1ob3Zlcik7Ym9yZGVyLWNvbG9yOnZhcigtLW5vcm1hbC1ib3JkZXItaG92ZXIpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9c3VjY2Vzc10sW2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT1zdWNjZXNzXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0tc3VjY2Vzcy1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLXN1Y2Nlc3MtYm9yZGVyKTtjb2xvcjp2YXIoLS1zdWNjZXNzLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9aW5mb10sW2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT1pbmZvXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0taW5mby1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWluZm8tYm9yZGVyKTtjb2xvcjp2YXIoLS1pbmZvLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9d2FybmluZ10sW2RhdGEtcmljaC1jb2xvcnM9dHJ1ZV1bZGF0YS1zb25uZXItdG9hc3RdW2RhdGEtdHlwZT13YXJuaW5nXSBbZGF0YS1jbG9zZS1idXR0b25de2JhY2tncm91bmQ6dmFyKC0td2FybmluZy1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLXdhcm5pbmctYm9yZGVyKTtjb2xvcjp2YXIoLS13YXJuaW5nLXRleHQpfVtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9ZXJyb3JdLFtkYXRhLXJpY2gtY29sb3JzPXRydWVdW2RhdGEtc29ubmVyLXRvYXN0XVtkYXRhLXR5cGU9ZXJyb3JdIFtkYXRhLWNsb3NlLWJ1dHRvbl17YmFja2dyb3VuZDp2YXIoLS1lcnJvci1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWVycm9yLWJvcmRlcik7Y29sb3I6dmFyKC0tZXJyb3ItdGV4dCl9LnNvbm5lci1sb2FkaW5nLXdyYXBwZXJ7LS1zaXplOiAxNnB4O2hlaWdodDp2YXIoLS1zaXplKTt3aWR0aDp2YXIoLS1zaXplKTtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3otaW5kZXg6MTB9LnNvbm5lci1sb2FkaW5nLXdyYXBwZXJbZGF0YS12aXNpYmxlPWZhbHNlXXt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjthbmltYXRpb246c29ubmVyLWZhZGUtb3V0IC4ycyBlYXNlIGZvcndhcmRzfS5zb25uZXItc3Bpbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6NTAlO2xlZnQ6NTAlO2hlaWdodDp2YXIoLS1zaXplKTt3aWR0aDp2YXIoLS1zaXplKX0uc29ubmVyLWxvYWRpbmctYmFye2FuaW1hdGlvbjpzb25uZXItc3BpbiAxLjJzIGxpbmVhciBpbmZpbml0ZTtiYWNrZ3JvdW5kOnZhcigtLWdyYXkxMSk7Ym9yZGVyLXJhZGl1czo2cHg7aGVpZ2h0OjglO2xlZnQ6LTEwJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTMuOSU7d2lkdGg6MjQlfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDEpe2FuaW1hdGlvbi1kZWxheTotMS4yczt0cmFuc2Zvcm06cm90YXRlKC4wMDAxZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi0xLjFzO3RyYW5zZm9ybTpyb3RhdGUoMzBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCgzKXthbmltYXRpb24tZGVsYXk6LTFzO3RyYW5zZm9ybTpyb3RhdGUoNjBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LS45czt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoNSl7YW5pbWF0aW9uLWRlbGF5Oi0uOHM7dHJhbnNmb3JtOnJvdGF0ZSgxMjBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCg2KXthbmltYXRpb24tZGVsYXk6LS43czt0cmFuc2Zvcm06cm90YXRlKDE1MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDcpe2FuaW1hdGlvbi1kZWxheTotLjZzO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKSB0cmFuc2xhdGUoMTQ2JSl9LnNvbm5lci1sb2FkaW5nLWJhcjpudGgtY2hpbGQoOCl7YW5pbWF0aW9uLWRlbGF5Oi0uNXM7dHJhbnNmb3JtOnJvdGF0ZSgyMTBkZWcpIHRyYW5zbGF0ZSgxNDYlKX0uc29ubmVyLWxvYWRpbmctYmFyOm50aC1jaGlsZCg5KXthbmltYXRpb24tZGVsYXk6LS40czt0cmFuc2Zvcm06cm90YXRlKDI0MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDEwKXthbmltYXRpb24tZGVsYXk6LS4zczt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDExKXthbmltYXRpb24tZGVsYXk6LS4yczt0cmFuc2Zvcm06cm90YXRlKDMwMGRlZykgdHJhbnNsYXRlKDE0NiUpfS5zb25uZXItbG9hZGluZy1iYXI6bnRoLWNoaWxkKDEyKXthbmltYXRpb24tZGVsYXk6LS4xczt0cmFuc2Zvcm06cm90YXRlKDMzMGRlZykgdHJhbnNsYXRlKDE0NiUpfUBrZXlmcmFtZXMgc29ubmVyLWZhZGUtaW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOCl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxKX19QGtleWZyYW1lcyBzb25uZXItZmFkZS1vdXR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZSgxKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlKC44KX19QGtleWZyYW1lcyBzb25uZXItc3BpbnswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTouMTV9fUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbil7W2RhdGEtc29ubmVyLXRvYXN0XSxbZGF0YS1zb25uZXItdG9hc3RdPiosLnNvbm5lci1sb2FkaW5nLWJhcnt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50O2FuaW1hdGlvbjpub25lIWltcG9ydGFudH19LnNvbm5lci1sb2FkZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyx0cmFuc2Zvcm0gLjJzfS5zb25uZXItbG9hZGVyW2RhdGEtdmlzaWJsZT1mYWxzZV17b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZSguOCkgdHJhbnNsYXRlKC01MCUsLTUwJSl9CmApO2Z1bmN0aW9uICRhKGUpe3JldHVybiBlLmxhYmVsIT09dm9pZCAwfXZhciBVQT0zLCRBPSIzMnB4IixIQT0iMTZweCIsV2c9NGUzLHFBPTM1NixXQT0xNCxLQT0yMCxHQT0yMDA7ZnVuY3Rpb24gZW4oLi4uZSl7cmV0dXJuIGUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKX1mdW5jdGlvbiBZQShlKXtsZXRbdCxuXT1lLnNwbGl0KCItIikscj1bXTtyZXR1cm4gdCYmci5wdXNoKHQpLG4mJnIucHVzaChuKSxyfXZhciBRQT1lPT57dmFyIHQsbixyLGksbyxzLGEsbCx1LGMsZDtsZXR7aW52ZXJ0OmgsdG9hc3Q6Zix1bnN0eWxlZDp5LGludGVyYWN0aW5nOm0sc2V0SGVpZ2h0czp3LHZpc2libGVUb2FzdHM6cCxoZWlnaHRzOnYsaW5kZXg6eCx0b2FzdHM6ayxleHBhbmRlZDpULHJlbW92ZVRvYXN0OkMsZGVmYXVsdFJpY2hDb2xvcnM6UCxjbG9zZUJ1dHRvbjpBLHN0eWxlOmosY2FuY2VsQnV0dG9uU3R5bGU6SSxhY3Rpb25CdXR0b25TdHlsZTpNLGNsYXNzTmFtZTp6PSIiLGRlc2NyaXB0aW9uQ2xhc3NOYW1lOiQ9IiIsZHVyYXRpb246Tyxwb3NpdGlvbjpVLGdhcDpILGxvYWRpbmdJY29uOkcsZXhwYW5kQnlEZWZhdWx0Ok4sY2xhc3NOYW1lczpSLGljb25zOlMsY2xvc2VCdXR0b25BcmlhTGFiZWw6WT0iQ2xvc2UgdG9hc3QiLHBhdXNlV2hlblBhZ2VJc0hpZGRlbjpxfT1lLFtFLFhdPUYudXNlU3RhdGUobnVsbCksW2ZlLGFlXT1GLnVzZVN0YXRlKG51bGwpLFtzZSxydF09Ri51c2VTdGF0ZSghMSksW2l0LGh0XT1GLnVzZVN0YXRlKCExKSxbQ3QscnJdPUYudXNlU3RhdGUoITEpLFt5bixEaV09Ri51c2VTdGF0ZSghMSksW01pLFhyXT1GLnVzZVN0YXRlKCExKSxbTGksSnJdPUYudXNlU3RhdGUoMCksW1ZuLEtvXT1GLnVzZVN0YXRlKDApLFpyPUYudXNlUmVmKGYuZHVyYXRpb258fE98fFdnKSxTYT1GLnVzZVJlZihudWxsKSxCbj1GLnVzZVJlZihudWxsKSxuYz14PT09MCxyYz14KzE8PXAsRD1mLnR5cGUsQj1mLmRpc21pc3NpYmxlIT09ITEsWj1mLmNsYXNzTmFtZXx8IiIsaWU9Zi5kZXNjcmlwdGlvbkNsYXNzTmFtZXx8IiIsdWU9Ri51c2VNZW1vKCgpPT52LmZpbmRJbmRleChlZT0+ZWUudG9hc3RJZD09PWYuaWQpfHwwLFt2LGYuaWRdKSxUdD1GLnVzZU1lbW8oKCk9Pnt2YXIgZWU7cmV0dXJuKGVlPWYuY2xvc2VCdXR0b24pIT1udWxsP2VlOkF9LFtmLmNsb3NlQnV0dG9uLEFdKSx2bj1GLnVzZU1lbW8oKCk9PmYuZHVyYXRpb258fE98fFdnLFtmLmR1cmF0aW9uLE9dKSxFdD1GLnVzZVJlZigwKSxGdD1GLnVzZVJlZigwKSxpcj1GLnVzZVJlZigwKSxEZT1GLnVzZVJlZihudWxsKSxbb3IsWXRdPVUuc3BsaXQoIi0iKSx4bT1GLnVzZU1lbW8oKCk9PnYucmVkdWNlKChlZSxwZSxTZSk9PlNlPj11ZT9lZTplZStwZS5oZWlnaHQsMCksW3YsdWVdKSx3bT1EQSgpLFNDPWYuaW52ZXJ0fHxoLGljPUQ9PT0ibG9hZGluZyI7RnQuY3VycmVudD1GLnVzZU1lbW8oKCk9PnVlKkgreG0sW3VlLHhtXSksRi51c2VFZmZlY3QoKCk9Pntaci5jdXJyZW50PXZufSxbdm5dKSxGLnVzZUVmZmVjdCgoKT0+e3J0KCEwKX0sW10pLEYudXNlRWZmZWN0KCgpPT57bGV0IGVlPUJuLmN1cnJlbnQ7aWYoZWUpe2xldCBwZT1lZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7cmV0dXJuIEtvKHBlKSx3KFNlPT5be3RvYXN0SWQ6Zi5pZCxoZWlnaHQ6cGUscG9zaXRpb246Zi5wb3NpdGlvbn0sLi4uU2VdKSwoKT0+dyhTZT0+U2UuZmlsdGVyKFF0PT5RdC50b2FzdElkIT09Zi5pZCkpfX0sW3csZi5pZF0pLEYudXNlTGF5b3V0RWZmZWN0KCgpPT57aWYoIXNlKXJldHVybjtsZXQgZWU9Qm4uY3VycmVudCxwZT1lZS5zdHlsZS5oZWlnaHQ7ZWUuc3R5bGUuaGVpZ2h0PSJhdXRvIjtsZXQgU2U9ZWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O2VlLnN0eWxlLmhlaWdodD1wZSxLbyhTZSksdyhRdD0+UXQuZmluZChYdD0+WHQudG9hc3RJZD09PWYuaWQpP1F0Lm1hcChYdD0+WHQudG9hc3RJZD09PWYuaWQ\/ey4uLlh0LGhlaWdodDpTZX06WHQpOlt7dG9hc3RJZDpmLmlkLGhlaWdodDpTZSxwb3NpdGlvbjpmLnBvc2l0aW9ufSwuLi5RdF0pfSxbc2UsZi50aXRsZSxmLmRlc2NyaXB0aW9uLHcsZi5pZF0pO2xldCBzcj1GLnVzZUNhbGxiYWNrKCgpPT57aHQoITApLEpyKEZ0LmN1cnJlbnQpLHcoZWU9PmVlLmZpbHRlcihwZT0+cGUudG9hc3RJZCE9PWYuaWQpKSxzZXRUaW1lb3V0KCgpPT57QyhmKX0sR0EpfSxbZixDLHcsRnRdKTtGLnVzZUVmZmVjdCgoKT0+e2lmKGYucHJvbWlzZSYmRD09PSJsb2FkaW5nInx8Zi5kdXJhdGlvbj09PTEvMHx8Zi50eXBlPT09ImxvYWRpbmciKXJldHVybjtsZXQgZWU7cmV0dXJuIFR8fG18fHEmJndtPygoKT0+e2lmKGlyLmN1cnJlbnQ8RXQuY3VycmVudCl7bGV0IHBlPW5ldyBEYXRlKCkuZ2V0VGltZSgpLUV0LmN1cnJlbnQ7WnIuY3VycmVudD1aci5jdXJyZW50LXBlfWlyLmN1cnJlbnQ9bmV3IERhdGUoKS5nZXRUaW1lKCl9KSgpOlpyLmN1cnJlbnQhPT0xLzAmJihFdC5jdXJyZW50PW5ldyBEYXRlKCkuZ2V0VGltZSgpLGVlPXNldFRpbWVvdXQoKCk9Pnt2YXIgcGU7KHBlPWYub25BdXRvQ2xvc2UpPT1udWxsfHxwZS5jYWxsKGYsZiksc3IoKX0sWnIuY3VycmVudCkpLCgpPT5jbGVhclRpbWVvdXQoZWUpfSxbVCxtLGYsRCxxLHdtLHNyXSksRi51c2VFZmZlY3QoKCk9PntmLmRlbGV0ZSYmc3IoKX0sW3NyLGYuZGVsZXRlXSk7ZnVuY3Rpb24gQ0MoKXt2YXIgZWUscGUsU2U7cmV0dXJuIFMhPW51bGwmJlMubG9hZGluZz9GLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTplbihSPT1udWxsP3ZvaWQgMDpSLmxvYWRlciwoZWU9Zj09bnVsbD92b2lkIDA6Zi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6ZWUubG9hZGVyLCJzb25uZXItbG9hZGVyIiksImRhdGEtdmlzaWJsZSI6RD09PSJsb2FkaW5nIn0sUy5sb2FkaW5nKTpHP0YuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOmVuKFI9PW51bGw\/dm9pZCAwOlIubG9hZGVyLChwZT1mPT1udWxsP3ZvaWQgMDpmLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpwZS5sb2FkZXIsInNvbm5lci1sb2FkZXIiKSwiZGF0YS12aXNpYmxlIjpEPT09ImxvYWRpbmcifSxHKTpGLmNyZWF0ZUVsZW1lbnQoQUEse2NsYXNzTmFtZTplbihSPT1udWxsP3ZvaWQgMDpSLmxvYWRlciwoU2U9Zj09bnVsbD92b2lkIDA6Zi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6U2UubG9hZGVyKSx2aXNpYmxlOkQ9PT0ibG9hZGluZyJ9KX1yZXR1cm4gRi5jcmVhdGVFbGVtZW50KCJsaSIse3RhYkluZGV4OjAscmVmOkJuLGNsYXNzTmFtZTplbih6LFosUj09bnVsbD92b2lkIDA6Ui50b2FzdCwodD1mPT1udWxsP3ZvaWQgMDpmLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDp0LnRvYXN0LFI9PW51bGw\/dm9pZCAwOlIuZGVmYXVsdCxSPT1udWxsP3ZvaWQgMDpSW0RdLChuPWY9PW51bGw\/dm9pZCAwOmYuY2xhc3NOYW1lcyk9PW51bGw\/dm9pZCAwOm5bRF0pLCJkYXRhLXNvbm5lci10b2FzdCI6IiIsImRhdGEtcmljaC1jb2xvcnMiOihyPWYucmljaENvbG9ycykhPW51bGw\/cjpQLCJkYXRhLXN0eWxlZCI6IShmLmpzeHx8Zi51bnN0eWxlZHx8eSksImRhdGEtbW91bnRlZCI6c2UsImRhdGEtcHJvbWlzZSI6ISFmLnByb21pc2UsImRhdGEtc3dpcGVkIjpNaSwiZGF0YS1yZW1vdmVkIjppdCwiZGF0YS12aXNpYmxlIjpyYywiZGF0YS15LXBvc2l0aW9uIjpvciwiZGF0YS14LXBvc2l0aW9uIjpZdCwiZGF0YS1pbmRleCI6eCwiZGF0YS1mcm9udCI6bmMsImRhdGEtc3dpcGluZyI6Q3QsImRhdGEtZGlzbWlzc2libGUiOkIsImRhdGEtdHlwZSI6RCwiZGF0YS1pbnZlcnQiOlNDLCJkYXRhLXN3aXBlLW91dCI6eW4sImRhdGEtc3dpcGUtZGlyZWN0aW9uIjpmZSwiZGF0YS1leHBhbmRlZCI6ISEoVHx8TiYmc2UpLHN0eWxlOnsiLS1pbmRleCI6eCwiLS10b2FzdHMtYmVmb3JlIjp4LCItLXotaW5kZXgiOmsubGVuZ3RoLXgsIi0tb2Zmc2V0IjpgJHtpdD9MaTpGdC5jdXJyZW50fXB4YCwiLS1pbml0aWFsLWhlaWdodCI6Tj8iYXV0byI6YCR7Vm59cHhgLC4uLmosLi4uZi5zdHlsZX0sb25EcmFnRW5kOigpPT57cnIoITEpLFgobnVsbCksRGUuY3VycmVudD1udWxsfSxvblBvaW50ZXJEb3duOmVlPT57aWN8fCFCfHwoU2EuY3VycmVudD1uZXcgRGF0ZSxKcihGdC5jdXJyZW50KSxlZS50YXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZWUucG9pbnRlcklkKSxlZS50YXJnZXQudGFnTmFtZSE9PSJCVVRUT04iJiYocnIoITApLERlLmN1cnJlbnQ9e3g6ZWUuY2xpZW50WCx5OmVlLmNsaWVudFl9KSl9LG9uUG9pbnRlclVwOigpPT57dmFyIGVlLHBlLFNlLFF0O2lmKHlufHwhQilyZXR1cm47RGUuY3VycmVudD1udWxsO2xldCBYdD1OdW1iZXIoKChlZT1Cbi5jdXJyZW50KT09bnVsbD92b2lkIDA6ZWUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1zd2lwZS1hbW91bnQteCIpLnJlcGxhY2UoInB4IiwiIikpfHwwKSxhcj1OdW1iZXIoKChwZT1Cbi5jdXJyZW50KT09bnVsbD92b2lkIDA6cGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiLS1zd2lwZS1hbW91bnQteSIpLnJlcGxhY2UoInB4IiwiIikpfHwwKSxlaT1uZXcgRGF0ZSgpLmdldFRpbWUoKS0oKFNlPVNhLmN1cnJlbnQpPT1udWxsP3ZvaWQgMDpTZS5nZXRUaW1lKCkpLEp0PUU9PT0ieCI\/WHQ6YXIsbHI9TWF0aC5hYnMoSnQpL2VpO2lmKE1hdGguYWJzKEp0KT49S0F8fGxyPi4xMSl7SnIoRnQuY3VycmVudCksKFF0PWYub25EaXNtaXNzKT09bnVsbHx8UXQuY2FsbChmLGYpLGFlKEU9PT0ieCI\/WHQ+MD8icmlnaHQiOiJsZWZ0Ijphcj4wPyJkb3duIjoidXAiKSxzcigpLERpKCEwKSxYcighMSk7cmV0dXJufXJyKCExKSxYKG51bGwpfSxvblBvaW50ZXJNb3ZlOmVlPT57dmFyIHBlLFNlLFF0LFh0O2lmKCFEZS5jdXJyZW50fHwhQnx8KChwZT13aW5kb3cuZ2V0U2VsZWN0aW9uKCkpPT1udWxsP3ZvaWQgMDpwZS50b1N0cmluZygpLmxlbmd0aCk+MClyZXR1cm47bGV0IGFyPWVlLmNsaWVudFktRGUuY3VycmVudC55LGVpPWVlLmNsaWVudFgtRGUuY3VycmVudC54LEp0PShTZT1lLnN3aXBlRGlyZWN0aW9ucykhPW51bGw\/U2U6WUEoVSk7IUUmJihNYXRoLmFicyhlaSk+MXx8TWF0aC5hYnMoYXIpPjEpJiZYKE1hdGguYWJzKGVpKT5NYXRoLmFicyhhcik\/IngiOiJ5Iik7bGV0IGxyPXt4OjAseTowfTtFPT09InkiPyhKdC5pbmNsdWRlcygidG9wIil8fEp0LmluY2x1ZGVzKCJib3R0b20iKSkmJihKdC5pbmNsdWRlcygidG9wIikmJmFyPDB8fEp0LmluY2x1ZGVzKCJib3R0b20iKSYmYXI+MCkmJihsci55PWFyKTpFPT09IngiJiYoSnQuaW5jbHVkZXMoImxlZnQiKXx8SnQuaW5jbHVkZXMoInJpZ2h0IikpJiYoSnQuaW5jbHVkZXMoImxlZnQiKSYmZWk8MHx8SnQuaW5jbHVkZXMoInJpZ2h0IikmJmVpPjApJiYobHIueD1laSksKE1hdGguYWJzKGxyLngpPjB8fE1hdGguYWJzKGxyLnkpPjApJiZYcighMCksKFF0PUJuLmN1cnJlbnQpPT1udWxsfHxRdC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1zd2lwZS1hbW91bnQteCIsYCR7bHIueH1weGApLChYdD1Cbi5jdXJyZW50KT09bnVsbHx8WHQuc3R5bGUuc2V0UHJvcGVydHkoIi0tc3dpcGUtYW1vdW50LXkiLGAke2xyLnl9cHhgKX19LFR0JiYhZi5qc3g\/Ri5jcmVhdGVFbGVtZW50KCJidXR0b24iLHsiYXJpYS1sYWJlbCI6WSwiZGF0YS1kaXNhYmxlZCI6aWMsImRhdGEtY2xvc2UtYnV0dG9uIjohMCxvbkNsaWNrOmljfHwhQj8oKT0+e306KCk9Pnt2YXIgZWU7c3IoKSwoZWU9Zi5vbkRpc21pc3MpPT1udWxsfHxlZS5jYWxsKGYsZil9LGNsYXNzTmFtZTplbihSPT1udWxsP3ZvaWQgMDpSLmNsb3NlQnV0dG9uLChpPWY9PW51bGw\/dm9pZCAwOmYuY2xhc3NOYW1lcyk9PW51bGw\/dm9pZCAwOmkuY2xvc2VCdXR0b24pfSwobz1TPT1udWxsP3ZvaWQgMDpTLmNsb3NlKSE9bnVsbD9vOlJBKTpudWxsLGYuanN4fHxiLmlzVmFsaWRFbGVtZW50KGYudGl0bGUpP2YuanN4P2YuanN4OnR5cGVvZiBmLnRpdGxlPT0iZnVuY3Rpb24iP2YudGl0bGUoKTpmLnRpdGxlOkYuY3JlYXRlRWxlbWVudChGLkZyYWdtZW50LG51bGwsRHx8Zi5pY29ufHxmLnByb21pc2U\/Ri5jcmVhdGVFbGVtZW50KCJkaXYiLHsiZGF0YS1pY29uIjoiIixjbGFzc05hbWU6ZW4oUj09bnVsbD92b2lkIDA6Ui5pY29uLChzPWY9PW51bGw\/dm9pZCAwOmYuY2xhc3NOYW1lcyk9PW51bGw\/dm9pZCAwOnMuaWNvbil9LGYucHJvbWlzZXx8Zi50eXBlPT09ImxvYWRpbmciJiYhZi5pY29uP2YuaWNvbnx8Q0MoKTpudWxsLGYudHlwZSE9PSJsb2FkaW5nIj9mLmljb258fChTPT1udWxsP3ZvaWQgMDpTW0RdKXx8RUEoRCk6bnVsbCk6bnVsbCxGLmNyZWF0ZUVsZW1lbnQoImRpdiIseyJkYXRhLWNvbnRlbnQiOiIiLGNsYXNzTmFtZTplbihSPT1udWxsP3ZvaWQgMDpSLmNvbnRlbnQsKGE9Zj09bnVsbD92b2lkIDA6Zi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6YS5jb250ZW50KX0sRi5jcmVhdGVFbGVtZW50KCJkaXYiLHsiZGF0YS10aXRsZSI6IiIsY2xhc3NOYW1lOmVuKFI9PW51bGw\/dm9pZCAwOlIudGl0bGUsKGw9Zj09bnVsbD92b2lkIDA6Zi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6bC50aXRsZSl9LHR5cGVvZiBmLnRpdGxlPT0iZnVuY3Rpb24iP2YudGl0bGUoKTpmLnRpdGxlKSxmLmRlc2NyaXB0aW9uP0YuY3JlYXRlRWxlbWVudCgiZGl2Iix7ImRhdGEtZGVzY3JpcHRpb24iOiIiLGNsYXNzTmFtZTplbigkLGllLFI9PW51bGw\/dm9pZCAwOlIuZGVzY3JpcHRpb24sKHU9Zj09bnVsbD92b2lkIDA6Zi5jbGFzc05hbWVzKT09bnVsbD92b2lkIDA6dS5kZXNjcmlwdGlvbil9LHR5cGVvZiBmLmRlc2NyaXB0aW9uPT0iZnVuY3Rpb24iP2YuZGVzY3JpcHRpb24oKTpmLmRlc2NyaXB0aW9uKTpudWxsKSxiLmlzVmFsaWRFbGVtZW50KGYuY2FuY2VsKT9mLmNhbmNlbDpmLmNhbmNlbCYmJGEoZi5jYW5jZWwpP0YuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7ImRhdGEtYnV0dG9uIjohMCwiZGF0YS1jYW5jZWwiOiEwLHN0eWxlOmYuY2FuY2VsQnV0dG9uU3R5bGV8fEksb25DbGljazplZT0+e3ZhciBwZSxTZTskYShmLmNhbmNlbCkmJkImJigoU2U9KHBlPWYuY2FuY2VsKS5vbkNsaWNrKT09bnVsbHx8U2UuY2FsbChwZSxlZSksc3IoKSl9LGNsYXNzTmFtZTplbihSPT1udWxsP3ZvaWQgMDpSLmNhbmNlbEJ1dHRvbiwoYz1mPT1udWxsP3ZvaWQgMDpmLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpjLmNhbmNlbEJ1dHRvbil9LGYuY2FuY2VsLmxhYmVsKTpudWxsLGIuaXNWYWxpZEVsZW1lbnQoZi5hY3Rpb24pP2YuYWN0aW9uOmYuYWN0aW9uJiYkYShmLmFjdGlvbik\/Ri5jcmVhdGVFbGVtZW50KCJidXR0b24iLHsiZGF0YS1idXR0b24iOiEwLCJkYXRhLWFjdGlvbiI6ITAsc3R5bGU6Zi5hY3Rpb25CdXR0b25TdHlsZXx8TSxvbkNsaWNrOmVlPT57dmFyIHBlLFNlOyRhKGYuYWN0aW9uKSYmKChTZT0ocGU9Zi5hY3Rpb24pLm9uQ2xpY2spPT1udWxsfHxTZS5jYWxsKHBlLGVlKSwhZWUuZGVmYXVsdFByZXZlbnRlZCYmc3IoKSl9LGNsYXNzTmFtZTplbihSPT1udWxsP3ZvaWQgMDpSLmFjdGlvbkJ1dHRvbiwoZD1mPT1udWxsP3ZvaWQgMDpmLmNsYXNzTmFtZXMpPT1udWxsP3ZvaWQgMDpkLmFjdGlvbkJ1dHRvbil9LGYuYWN0aW9uLmxhYmVsKTpudWxsKSl9O2Z1bmN0aW9uIEtnKCl7aWYodHlwZW9mIHdpbmRvdz4idSJ8fHR5cGVvZiBkb2N1bWVudD4idSIpcmV0dXJuImx0ciI7bGV0IGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIik7cmV0dXJuIGU9PT0iYXV0byJ8fCFlP3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZGlyZWN0aW9uOmV9ZnVuY3Rpb24gWEEoZSx0KXtsZXQgbj17fTtyZXR1cm5bZSx0XS5mb3JFYWNoKChyLGkpPT57bGV0IG89aT09PTEscz1vPyItLW1vYmlsZS1vZmZzZXQiOiItLW9mZnNldCIsYT1vP0hBOiRBO2Z1bmN0aW9uIGwodSl7WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5mb3JFYWNoKGM9PntuW2Ake3N9LSR7Y31gXT10eXBlb2YgdT09Im51bWJlciI\/YCR7dX1weGA6dX0pfXR5cGVvZiByPT0ibnVtYmVyInx8dHlwZW9mIHI9PSJzdHJpbmciP2wocik6dHlwZW9mIHI9PSJvYmplY3QiP1sidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0uZm9yRWFjaCh1PT57clt1XT09PXZvaWQgMD9uW2Ake3N9LSR7dX1gXT1hOm5bYCR7c30tJHt1fWBdPXR5cGVvZiByW3VdPT0ibnVtYmVyIj9gJHtyW3VdfXB4YDpyW3VdfSk6bChhKX0pLG59dmFyIEpBPWIuZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtpbnZlcnQ6bixwb3NpdGlvbjpyPSJib3R0b20tcmlnaHQiLGhvdGtleTppPVsiYWx0S2V5IiwiS2V5VCJdLGV4cGFuZDpvLGNsb3NlQnV0dG9uOnMsY2xhc3NOYW1lOmEsb2Zmc2V0OmwsbW9iaWxlT2Zmc2V0OnUsdGhlbWU6Yz0ibGlnaHQiLHJpY2hDb2xvcnM6ZCxkdXJhdGlvbjpoLHN0eWxlOmYsdmlzaWJsZVRvYXN0czp5PVVBLHRvYXN0T3B0aW9uczptLGRpcjp3PUtnKCksZ2FwOnA9V0EsbG9hZGluZ0ljb246dixpY29uczp4LGNvbnRhaW5lckFyaWFMYWJlbDprPSJOb3RpZmljYXRpb25zIixwYXVzZVdoZW5QYWdlSXNIaWRkZW46VH09ZSxbQyxQXT1GLnVzZVN0YXRlKFtdKSxBPUYudXNlTWVtbygoKT0+QXJyYXkuZnJvbShuZXcgU2V0KFtyXS5jb25jYXQoQy5maWx0ZXIocT0+cS5wb3NpdGlvbikubWFwKHE9PnEucG9zaXRpb24pKSkpLFtDLHJdKSxbaixJXT1GLnVzZVN0YXRlKFtdKSxbTSx6XT1GLnVzZVN0YXRlKCExKSxbJCxPXT1GLnVzZVN0YXRlKCExKSxbVSxIXT1GLnVzZVN0YXRlKGMhPT0ic3lzdGVtIj9jOnR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5tYXRjaGVzPyJkYXJrIjoibGlnaHQiKSxHPUYudXNlUmVmKG51bGwpLE49aS5qb2luKCIrIikucmVwbGFjZSgvS2V5L2csIiIpLnJlcGxhY2UoL0RpZ2l0L2csIiIpLFI9Ri51c2VSZWYobnVsbCksUz1GLnVzZVJlZighMSksWT1GLnVzZUNhbGxiYWNrKHE9PntQKEU9Pnt2YXIgWDtyZXR1cm4oWD1FLmZpbmQoZmU9PmZlLmlkPT09cS5pZCkpIT1udWxsJiZYLmRlbGV0ZXx8bXQuZGlzbWlzcyhxLmlkKSxFLmZpbHRlcigoe2lkOmZlfSk9PmZlIT09cS5pZCl9KX0sW10pO3JldHVybiBGLnVzZUVmZmVjdCgoKT0+bXQuc3Vic2NyaWJlKHE9PntpZihxLmRpc21pc3Mpe1AoRT0+RS5tYXAoWD0+WC5pZD09PXEuaWQ\/ey4uLlgsZGVsZXRlOiEwfTpYKSk7cmV0dXJufXNldFRpbWVvdXQoKCk9PntLMS5mbHVzaFN5bmMoKCk9PntQKEU9PntsZXQgWD1FLmZpbmRJbmRleChmZT0+ZmUuaWQ9PT1xLmlkKTtyZXR1cm4gWCE9PS0xP1suLi5FLnNsaWNlKDAsWCksey4uLkVbWF0sLi4ucX0sLi4uRS5zbGljZShYKzEpXTpbcSwuLi5FXX0pfSl9KX0pLFtdKSxGLnVzZUVmZmVjdCgoKT0+e2lmKGMhPT0ic3lzdGVtIil7SChjKTtyZXR1cm59aWYoYz09PSJzeXN0ZW0iJiYod2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcz9IKCJkYXJrIik6SCgibGlnaHQiKSksdHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuO2xldCBxPXdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIik7dHJ5e3EuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoe21hdGNoZXM6RX0pPT57SChFPyJkYXJrIjoibGlnaHQiKX0pfWNhdGNoe3EuYWRkTGlzdGVuZXIoKHttYXRjaGVzOlh9KT0+e3RyeXtIKFg\/ImRhcmsiOiJsaWdodCIpfWNhdGNoKGZlKXtjb25zb2xlLmVycm9yKGZlKX19KX19LFtjXSksRi51c2VFZmZlY3QoKCk9PntDLmxlbmd0aDw9MSYmeighMSl9LFtDXSksRi51c2VFZmZlY3QoKCk9PntsZXQgcT1FPT57dmFyIFgsZmU7aS5ldmVyeShhZT0+RVthZV18fEUuY29kZT09PWFlKSYmKHooITApLChYPUcuY3VycmVudCk9PW51bGx8fFguZm9jdXMoKSksRS5jb2RlPT09IkVzY2FwZSImJihkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09Ry5jdXJyZW50fHwoZmU9Ry5jdXJyZW50KSE9bnVsbCYmZmUuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpJiZ6KCExKX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHEpLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixxKX0sW2ldKSxGLnVzZUVmZmVjdCgoKT0+e2lmKEcuY3VycmVudClyZXR1cm4oKT0+e1IuY3VycmVudCYmKFIuY3VycmVudC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLFIuY3VycmVudD1udWxsLFMuY3VycmVudD0hMSl9fSxbRy5jdXJyZW50XSksRi5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIix7cmVmOnQsImFyaWEtbGFiZWwiOmAke2t9ICR7Tn1gLHRhYkluZGV4Oi0xLCJhcmlhLWxpdmUiOiJwb2xpdGUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIHRleHQiLCJhcmlhLWF0b21pYyI6ImZhbHNlIixzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6ITB9LEEubWFwKChxLEUpPT57dmFyIFg7bGV0W2ZlLGFlXT1xLnNwbGl0KCItIik7cmV0dXJuIEMubGVuZ3RoP0YuY3JlYXRlRWxlbWVudCgib2wiLHtrZXk6cSxkaXI6dz09PSJhdXRvIj9LZygpOncsdGFiSW5kZXg6LTEscmVmOkcsY2xhc3NOYW1lOmEsImRhdGEtc29ubmVyLXRvYXN0ZXIiOiEwLCJkYXRhLXRoZW1lIjpVLCJkYXRhLXktcG9zaXRpb24iOmZlLCJkYXRhLWxpZnRlZCI6TSYmQy5sZW5ndGg+MSYmIW8sImRhdGEteC1wb3NpdGlvbiI6YWUsc3R5bGU6eyItLWZyb250LXRvYXN0LWhlaWdodCI6YCR7KChYPWpbMF0pPT1udWxsP3ZvaWQgMDpYLmhlaWdodCl8fDB9cHhgLCItLXdpZHRoIjpgJHtxQX1weGAsIi0tZ2FwIjpgJHtwfXB4YCwuLi5mLC4uLlhBKGwsdSl9LG9uQmx1cjpzZT0+e1MuY3VycmVudCYmIXNlLmN1cnJlbnRUYXJnZXQuY29udGFpbnMoc2UucmVsYXRlZFRhcmdldCkmJihTLmN1cnJlbnQ9ITEsUi5jdXJyZW50JiYoUi5jdXJyZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksUi5jdXJyZW50PW51bGwpKX0sb25Gb2N1czpzZT0+e3NlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZzZS50YXJnZXQuZGF0YXNldC5kaXNtaXNzaWJsZT09PSJmYWxzZSJ8fFMuY3VycmVudHx8KFMuY3VycmVudD0hMCxSLmN1cnJlbnQ9c2UucmVsYXRlZFRhcmdldCl9LG9uTW91c2VFbnRlcjooKT0+eighMCksb25Nb3VzZU1vdmU6KCk9PnooITApLG9uTW91c2VMZWF2ZTooKT0+eyR8fHooITEpfSxvbkRyYWdFbmQ6KCk9PnooITEpLG9uUG9pbnRlckRvd246c2U9PntzZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmc2UudGFyZ2V0LmRhdGFzZXQuZGlzbWlzc2libGU9PT0iZmFsc2UifHxPKCEwKX0sb25Qb2ludGVyVXA6KCk9Pk8oITEpfSxDLmZpbHRlcihzZT0+IXNlLnBvc2l0aW9uJiZFPT09MHx8c2UucG9zaXRpb249PT1xKS5tYXAoKHNlLHJ0KT0+e3ZhciBpdCxodDtyZXR1cm4gRi5jcmVhdGVFbGVtZW50KFFBLHtrZXk6c2UuaWQsaWNvbnM6eCxpbmRleDpydCx0b2FzdDpzZSxkZWZhdWx0UmljaENvbG9yczpkLGR1cmF0aW9uOihpdD1tPT1udWxsP3ZvaWQgMDptLmR1cmF0aW9uKSE9bnVsbD9pdDpoLGNsYXNzTmFtZTptPT1udWxsP3ZvaWQgMDptLmNsYXNzTmFtZSxkZXNjcmlwdGlvbkNsYXNzTmFtZTptPT1udWxsP3ZvaWQgMDptLmRlc2NyaXB0aW9uQ2xhc3NOYW1lLGludmVydDpuLHZpc2libGVUb2FzdHM6eSxjbG9zZUJ1dHRvbjooaHQ9bT09bnVsbD92b2lkIDA6bS5jbG9zZUJ1dHRvbikhPW51bGw\/aHQ6cyxpbnRlcmFjdGluZzokLHBvc2l0aW9uOnEsc3R5bGU6bT09bnVsbD92b2lkIDA6bS5zdHlsZSx1bnN0eWxlZDptPT1udWxsP3ZvaWQgMDptLnVuc3R5bGVkLGNsYXNzTmFtZXM6bT09bnVsbD92b2lkIDA6bS5jbGFzc05hbWVzLGNhbmNlbEJ1dHRvblN0eWxlOm09PW51bGw\/dm9pZCAwOm0uY2FuY2VsQnV0dG9uU3R5bGUsYWN0aW9uQnV0dG9uU3R5bGU6bT09bnVsbD92b2lkIDA6bS5hY3Rpb25CdXR0b25TdHlsZSxyZW1vdmVUb2FzdDpZLHRvYXN0czpDLmZpbHRlcihDdD0+Q3QucG9zaXRpb249PXNlLnBvc2l0aW9uKSxoZWlnaHRzOmouZmlsdGVyKEN0PT5DdC5wb3NpdGlvbj09c2UucG9zaXRpb24pLHNldEhlaWdodHM6SSxleHBhbmRCeURlZmF1bHQ6byxnYXA6cCxsb2FkaW5nSWNvbjp2LGV4cGFuZGVkOk0scGF1c2VXaGVuUGFnZUlzSGlkZGVuOlQsc3dpcGVEaXJlY3Rpb25zOmUuc3dpcGVEaXJlY3Rpb25zfSl9KSk6bnVsbH0pKX0pO2NvbnN0IFpBPSh7Li4uZX0pPT57Y29uc3R7dGhlbWU6dD0ic3lzdGVtIn09VEEoKTtyZXR1cm4gZy5qc3goSkEse3RoZW1lOnQsY2xhc3NOYW1lOiJ0b2FzdGVyIGdyb3VwIix0b2FzdE9wdGlvbnM6e2NsYXNzTmFtZXM6e3RvYXN0OiJncm91cCB0b2FzdCBncm91cC1bLnRvYXN0ZXJdOmJnLWJhY2tncm91bmQgZ3JvdXAtWy50b2FzdGVyXTp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy50b2FzdGVyXTpib3JkZXItYm9yZGVyIGdyb3VwLVsudG9hc3Rlcl06c2hhZG93LWxnIixkZXNjcmlwdGlvbjoiZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixhY3Rpb25CdXR0b246Imdyb3VwLVsudG9hc3RdOmJnLXByaW1hcnkgZ3JvdXAtWy50b2FzdF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmQiLGNhbmNlbEJ1dHRvbjoiZ3JvdXAtWy50b2FzdF06YmctbXV0ZWQgZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIn19LC4uLmV9KX0sZTI9MSx0Mj0xZTY7bGV0IERjPTA7ZnVuY3Rpb24gbjIoKXtyZXR1cm4gRGM9KERjKzEpJU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLERjLnRvU3RyaW5nKCl9Y29uc3QgTWM9bmV3IE1hcCxHZz1lPT57aWYoTWMuaGFzKGUpKXJldHVybjtjb25zdCB0PXNldFRpbWVvdXQoKCk9PntNYy5kZWxldGUoZSksYnMoe3R5cGU6IlJFTU9WRV9UT0FTVCIsdG9hc3RJZDplfSl9LHQyKTtNYy5zZXQoZSx0KX0scjI9KGUsdCk9Pntzd2l0Y2godC50eXBlKXtjYXNlIkFERF9UT0FTVCI6cmV0dXJuey4uLmUsdG9hc3RzOlt0LnRvYXN0LC4uLmUudG9hc3RzXS5zbGljZSgwLGUyKX07Y2FzZSJVUERBVEVfVE9BU1QiOnJldHVybnsuLi5lLHRvYXN0czplLnRvYXN0cy5tYXAobj0+bi5pZD09PXQudG9hc3QuaWQ\/ey4uLm4sLi4udC50b2FzdH06bil9O2Nhc2UiRElTTUlTU19UT0FTVCI6e2NvbnN0e3RvYXN0SWQ6bn09dDtyZXR1cm4gbj9HZyhuKTplLnRvYXN0cy5mb3JFYWNoKHI9PntHZyhyLmlkKX0pLHsuLi5lLHRvYXN0czplLnRvYXN0cy5tYXAocj0+ci5pZD09PW58fG49PT12b2lkIDA\/ey4uLnIsb3BlbjohMX06cil9fWNhc2UiUkVNT1ZFX1RPQVNUIjpyZXR1cm4gdC50b2FzdElkPT09dm9pZCAwP3suLi5lLHRvYXN0czpbXX06ey4uLmUsdG9hc3RzOmUudG9hc3RzLmZpbHRlcihuPT5uLmlkIT09dC50b2FzdElkKX19fSxobD1bXTtsZXQgcGw9e3RvYXN0czpbXX07ZnVuY3Rpb24gYnMoZSl7cGw9cjIocGwsZSksaGwuZm9yRWFjaCh0PT57dChwbCl9KX1mdW5jdGlvbiBpMih7Li4uZX0pe2NvbnN0IHQ9bjIoKSxuPWk9PmJzKHt0eXBlOiJVUERBVEVfVE9BU1QiLHRvYXN0OnsuLi5pLGlkOnR9fSkscj0oKT0+YnMoe3R5cGU6IkRJU01JU1NfVE9BU1QiLHRvYXN0SWQ6dH0pO3JldHVybiBicyh7dHlwZToiQUREX1RPQVNUIix0b2FzdDp7Li4uZSxpZDp0LG9wZW46ITAsb25PcGVuQ2hhbmdlOmk9PntpfHxyKCl9fX0pLHtpZDp0LGRpc21pc3M6cix1cGRhdGU6bn19ZnVuY3Rpb24gbzIoKXtjb25zdFtlLHRdPWIudXNlU3RhdGUocGwpO3JldHVybiBiLnVzZUVmZmVjdCgoKT0+KGhsLnB1c2godCksKCk9Pntjb25zdCBuPWhsLmluZGV4T2YodCk7bj4tMSYmaGwuc3BsaWNlKG4sMSl9KSxbZV0pLHsuLi5lLHRvYXN0OmkyLGRpc21pc3M6bj0+YnMoe3R5cGU6IkRJU01JU1NfVE9BU1QiLHRvYXN0SWQ6bn0pfX1mdW5jdGlvbiBSZShlLHQse2NoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDpuPSEwfT17fSl7cmV0dXJuIGZ1bmN0aW9uKGkpe2lmKGU9PW51bGx8fGUoaSksbj09PSExfHwhaS5kZWZhdWx0UHJldmVudGVkKXJldHVybiB0PT1udWxsP3ZvaWQgMDp0KGkpfX1mdW5jdGlvbiBZZyhlLHQpe2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXJldHVybiBlKHQpO2UhPW51bGwmJihlLmN1cnJlbnQ9dCl9ZnVuY3Rpb24gaHcoLi4uZSl7cmV0dXJuIHQ9PntsZXQgbj0hMTtjb25zdCByPWUubWFwKGk9Pntjb25zdCBvPVlnKGksdCk7cmV0dXJuIW4mJnR5cGVvZiBvPT0iZnVuY3Rpb24iJiYobj0hMCksb30pO2lmKG4pcmV0dXJuKCk9Pntmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7Y29uc3Qgbz1yW2ldO3R5cGVvZiBvPT0iZnVuY3Rpb24iP28oKTpZZyhlW2ldLG51bGwpfX19fWZ1bmN0aW9uIE10KC4uLmUpe3JldHVybiBiLnVzZUNhbGxiYWNrKGh3KC4uLmUpLGUpfWZ1bmN0aW9uIEZvKGUsdD1bXSl7bGV0IG49W107ZnVuY3Rpb24gcihvLHMpe2NvbnN0IGE9Yi5jcmVhdGVDb250ZXh0KHMpLGw9bi5sZW5ndGg7bj1bLi4ubixzXTtjb25zdCB1PWQ9Pnt2YXIgcDtjb25zdHtzY29wZTpoLGNoaWxkcmVuOmYsLi4ueX09ZCxtPSgocD1oPT1udWxsP3ZvaWQgMDpoW2VdKT09bnVsbD92b2lkIDA6cFtsXSl8fGEsdz1iLnVzZU1lbW8oKCk9PnksT2JqZWN0LnZhbHVlcyh5KSk7cmV0dXJuIGcuanN4KG0uUHJvdmlkZXIse3ZhbHVlOncsY2hpbGRyZW46Zn0pfTt1LmRpc3BsYXlOYW1lPW8rIlByb3ZpZGVyIjtmdW5jdGlvbiBjKGQsaCl7dmFyIG07Y29uc3QgZj0oKG09aD09bnVsbD92b2lkIDA6aFtlXSk9PW51bGw\/dm9pZCAwOm1bbF0pfHxhLHk9Yi51c2VDb250ZXh0KGYpO2lmKHkpcmV0dXJuIHk7aWYocyE9PXZvaWQgMClyZXR1cm4gczt0aHJvdyBuZXcgRXJyb3IoYFxgJHtkfVxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXGAke299XGBgKX1yZXR1cm5bdSxjXX1jb25zdCBpPSgpPT57Y29uc3Qgbz1uLm1hcChzPT5iLmNyZWF0ZUNvbnRleHQocykpO3JldHVybiBmdW5jdGlvbihhKXtjb25zdCBsPShhPT1udWxsP3ZvaWQgMDphW2VdKXx8bztyZXR1cm4gYi51c2VNZW1vKCgpPT4oe1tgX19zY29wZSR7ZX1gXTp7Li4uYSxbZV06bH19KSxbYSxsXSl9fTtyZXR1cm4gaS5zY29wZU5hbWU9ZSxbcixzMihpLC4uLnQpXX1mdW5jdGlvbiBzMiguLi5lKXtjb25zdCB0PWVbMF07aWYoZS5sZW5ndGg9PT0xKXJldHVybiB0O2NvbnN0IG49KCk9Pntjb25zdCByPWUubWFwKGk9Pih7dXNlU2NvcGU6aSgpLHNjb3BlTmFtZTppLnNjb3BlTmFtZX0pKTtyZXR1cm4gZnVuY3Rpb24obyl7Y29uc3Qgcz1yLnJlZHVjZSgoYSx7dXNlU2NvcGU6bCxzY29wZU5hbWU6dX0pPT57Y29uc3QgZD1sKG8pW2BfX3Njb3BlJHt1fWBdO3JldHVybnsuLi5hLC4uLmR9fSx7fSk7cmV0dXJuIGIudXNlTWVtbygoKT0+KHtbYF9fc2NvcGUke3Quc2NvcGVOYW1lfWBdOnN9KSxbc10pfX07cmV0dXJuIG4uc2NvcGVOYW1lPXQuc2NvcGVOYW1lLG59ZnVuY3Rpb24gcGYoZSl7Y29uc3QgdD1hMihlKSxuPWIuZm9yd2FyZFJlZigocixpKT0+e2NvbnN0e2NoaWxkcmVuOm8sLi4uc309cixhPWIuQ2hpbGRyZW4udG9BcnJheShvKSxsPWEuZmluZCh1Mik7aWYobCl7Y29uc3QgdT1sLnByb3BzLmNoaWxkcmVuLGM9YS5tYXAoZD0+ZD09PWw\/Yi5DaGlsZHJlbi5jb3VudCh1KT4xP2IuQ2hpbGRyZW4ub25seShudWxsKTpiLmlzVmFsaWRFbGVtZW50KHUpP3UucHJvcHMuY2hpbGRyZW46bnVsbDpkKTtyZXR1cm4gZy5qc3godCx7Li4ucyxyZWY6aSxjaGlsZHJlbjpiLmlzVmFsaWRFbGVtZW50KHUpP2IuY2xvbmVFbGVtZW50KHUsdm9pZCAwLGMpOm51bGx9KX1yZXR1cm4gZy5qc3godCx7Li4ucyxyZWY6aSxjaGlsZHJlbjpvfSl9KTtyZXR1cm4gbi5kaXNwbGF5TmFtZT1gJHtlfS5TbG90YCxufWZ1bmN0aW9uIGEyKGUpe2NvbnN0IHQ9Yi5mb3J3YXJkUmVmKChuLHIpPT57Y29uc3R7Y2hpbGRyZW46aSwuLi5vfT1uO2lmKGIuaXNWYWxpZEVsZW1lbnQoaSkpe2NvbnN0IHM9ZDIoaSksYT1jMihvLGkucHJvcHMpO3JldHVybiBpLnR5cGUhPT1iLkZyYWdtZW50JiYoYS5yZWY9cj9odyhyLHMpOnMpLGIuY2xvbmVFbGVtZW50KGksYSl9cmV0dXJuIGIuQ2hpbGRyZW4uY291bnQoaSk+MT9iLkNoaWxkcmVuLm9ubHkobnVsbCk6bnVsbH0pO3JldHVybiB0LmRpc3BsYXlOYW1lPWAke2V9LlNsb3RDbG9uZWAsdH12YXIgcHc9U3ltYm9sKCJyYWRpeC5zbG90dGFibGUiKTtmdW5jdGlvbiBsMihlKXtjb25zdCB0PSh7Y2hpbGRyZW46bn0pPT5nLmpzeChnLkZyYWdtZW50LHtjaGlsZHJlbjpufSk7cmV0dXJuIHQuZGlzcGxheU5hbWU9YCR7ZX0uU2xvdHRhYmxlYCx0Ll9fcmFkaXhJZD1wdyx0fWZ1bmN0aW9uIHUyKGUpe3JldHVybiBiLmlzVmFsaWRFbGVtZW50KGUpJiZ0eXBlb2YgZS50eXBlPT0iZnVuY3Rpb24iJiYiX19yYWRpeElkImluIGUudHlwZSYmZS50eXBlLl9fcmFkaXhJZD09PXB3fWZ1bmN0aW9uIGMyKGUsdCl7Y29uc3Qgbj17Li4udH07Zm9yKGNvbnN0IHIgaW4gdCl7Y29uc3QgaT1lW3JdLG89dFtyXTsvXm9uW0EtWl0vLnRlc3Qocik\/aSYmbz9uW3JdPSguLi5hKT0+e2NvbnN0IGw9byguLi5hKTtyZXR1cm4gaSguLi5hKSxsfTppJiYobltyXT1pKTpyPT09InN0eWxlIj9uW3JdPXsuLi5pLC4uLm99OnI9PT0iY2xhc3NOYW1lIiYmKG5bcl09W2ksb10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSl9cmV0dXJuey4uLmUsLi4ubn19ZnVuY3Rpb24gZDIoZSl7dmFyIHIsaTtsZXQgdD0ocj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUucHJvcHMsInJlZiIpKT09bnVsbD92b2lkIDA6ci5nZXQsbj10JiYiaXNSZWFjdFdhcm5pbmciaW4gdCYmdC5pc1JlYWN0V2FybmluZztyZXR1cm4gbj9lLnJlZjoodD0oaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsInJlZiIpKT09bnVsbD92b2lkIDA6aS5nZXQsbj10JiYiaXNSZWFjdFdhcm5pbmciaW4gdCYmdC5pc1JlYWN0V2FybmluZyxuP2UucHJvcHMucmVmOmUucHJvcHMucmVmfHxlLnJlZil9ZnVuY3Rpb24gbXcoZSl7Y29uc3QgdD1lKyJDb2xsZWN0aW9uUHJvdmlkZXIiLFtuLHJdPUZvKHQpLFtpLG9dPW4odCx7Y29sbGVjdGlvblJlZjp7Y3VycmVudDpudWxsfSxpdGVtTWFwOm5ldyBNYXB9KSxzPW09Pntjb25zdHtzY29wZTp3LGNoaWxkcmVuOnB9PW0sdj1GLnVzZVJlZihudWxsKSx4PUYudXNlUmVmKG5ldyBNYXApLmN1cnJlbnQ7cmV0dXJuIGcuanN4KGkse3Njb3BlOncsaXRlbU1hcDp4LGNvbGxlY3Rpb25SZWY6dixjaGlsZHJlbjpwfSl9O3MuZGlzcGxheU5hbWU9dDtjb25zdCBhPWUrIkNvbGxlY3Rpb25TbG90IixsPXBmKGEpLHU9Ri5mb3J3YXJkUmVmKChtLHcpPT57Y29uc3R7c2NvcGU6cCxjaGlsZHJlbjp2fT1tLHg9byhhLHApLGs9TXQodyx4LmNvbGxlY3Rpb25SZWYpO3JldHVybiBnLmpzeChsLHtyZWY6ayxjaGlsZHJlbjp2fSl9KTt1LmRpc3BsYXlOYW1lPWE7Y29uc3QgYz1lKyJDb2xsZWN0aW9uSXRlbVNsb3QiLGQ9ImRhdGEtcmFkaXgtY29sbGVjdGlvbi1pdGVtIixoPXBmKGMpLGY9Ri5mb3J3YXJkUmVmKChtLHcpPT57Y29uc3R7c2NvcGU6cCxjaGlsZHJlbjp2LC4uLnh9PW0saz1GLnVzZVJlZihudWxsKSxUPU10KHcsayksQz1vKGMscCk7cmV0dXJuIEYudXNlRWZmZWN0KCgpPT4oQy5pdGVtTWFwLnNldChrLHtyZWY6aywuLi54fSksKCk9PnZvaWQgQy5pdGVtTWFwLmRlbGV0ZShrKSkpLGcuanN4KGgse1tkXToiIixyZWY6VCxjaGlsZHJlbjp2fSl9KTtmLmRpc3BsYXlOYW1lPWM7ZnVuY3Rpb24geShtKXtjb25zdCB3PW8oZSsiQ29sbGVjdGlvbkNvbnN1bWVyIixtKTtyZXR1cm4gRi51c2VDYWxsYmFjaygoKT0+e2NvbnN0IHY9dy5jb2xsZWN0aW9uUmVmLmN1cnJlbnQ7aWYoIXYpcmV0dXJuW107Y29uc3QgeD1BcnJheS5mcm9tKHYucXVlcnlTZWxlY3RvckFsbChgWyR7ZH1dYCkpO3JldHVybiBBcnJheS5mcm9tKHcuaXRlbU1hcC52YWx1ZXMoKSkuc29ydCgoQyxQKT0+eC5pbmRleE9mKEMucmVmLmN1cnJlbnQpLXguaW5kZXhPZihQLnJlZi5jdXJyZW50KSl9LFt3LmNvbGxlY3Rpb25SZWYsdy5pdGVtTWFwXSl9cmV0dXJuW3tQcm92aWRlcjpzLFNsb3Q6dSxJdGVtU2xvdDpmfSx5LHJdfXZhciBmMj1bImEiLCJidXR0b24iLCJkaXYiLCJmb3JtIiwiaDIiLCJoMyIsImltZyIsImlucHV0IiwibGFiZWwiLCJsaSIsIm5hdiIsIm9sIiwicCIsInNlbGVjdCIsInNwYW4iLCJzdmciLCJ1bCJdLFVlPWYyLnJlZHVjZSgoZSx0KT0+e2NvbnN0IG49cGYoYFByaW1pdGl2ZS4ke3R9YCkscj1iLmZvcndhcmRSZWYoKGksbyk9Pntjb25zdHthc0NoaWxkOnMsLi4uYX09aSxsPXM\/bjp0O3JldHVybiB0eXBlb2Ygd2luZG93PCJ1IiYmKHdpbmRvd1tTeW1ib2wuZm9yKCJyYWRpeC11aSIpXT0hMCksZy5qc3gobCx7Li4uYSxyZWY6b30pfSk7cmV0dXJuIHIuZGlzcGxheU5hbWU9YFByaW1pdGl2ZS4ke3R9YCx7Li4uZSxbdF06cn19LHt9KTtmdW5jdGlvbiBndyhlLHQpe2UmJmZhLmZsdXNoU3luYygoKT0+ZS5kaXNwYXRjaEV2ZW50KHQpKX1mdW5jdGlvbiBWcihlKXtjb25zdCB0PWIudXNlUmVmKGUpO3JldHVybiBiLnVzZUVmZmVjdCgoKT0+e3QuY3VycmVudD1lfSksYi51c2VNZW1vKCgpPT4oLi4ubik9Pnt2YXIgcjtyZXR1cm4ocj10LmN1cnJlbnQpPT1udWxsP3ZvaWQgMDpyLmNhbGwodCwuLi5uKX0sW10pfWZ1bmN0aW9uIGgyKGUsdD1nbG9iYWxUaGlzPT1udWxsP3ZvaWQgMDpnbG9iYWxUaGlzLmRvY3VtZW50KXtjb25zdCBuPVZyKGUpO2IudXNlRWZmZWN0KCgpPT57Y29uc3Qgcj1pPT57aS5rZXk9PT0iRXNjYXBlIiYmbihpKX07cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIscix7Y2FwdHVyZTohMH0pLCgpPT50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHIse2NhcHR1cmU6ITB9KX0sW24sdF0pfXZhciBwMj0iRGlzbWlzc2FibGVMYXllciIsbWY9ImRpc21pc3NhYmxlTGF5ZXIudXBkYXRlIixtMj0iZGlzbWlzc2FibGVMYXllci5wb2ludGVyRG93bk91dHNpZGUiLGcyPSJkaXNtaXNzYWJsZUxheWVyLmZvY3VzT3V0c2lkZSIsUWcseXc9Yi5jcmVhdGVDb250ZXh0KHtsYXllcnM6bmV3IFNldCxsYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZDpuZXcgU2V0LGJyYW5jaGVzOm5ldyBTZXR9KSxvcD1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6bj0hMSxvbkVzY2FwZUtleURvd246cixvblBvaW50ZXJEb3duT3V0c2lkZTppLG9uRm9jdXNPdXRzaWRlOm8sb25JbnRlcmFjdE91dHNpZGU6cyxvbkRpc21pc3M6YSwuLi5sfT1lLHU9Yi51c2VDb250ZXh0KHl3KSxbYyxkXT1iLnVzZVN0YXRlKG51bGwpLGg9KGM9PW51bGw\/dm9pZCAwOmMub3duZXJEb2N1bWVudCk\/PyhnbG9iYWxUaGlzPT1udWxsP3ZvaWQgMDpnbG9iYWxUaGlzLmRvY3VtZW50KSxbLGZdPWIudXNlU3RhdGUoe30pLHk9TXQodCxQPT5kKFApKSxtPUFycmF5LmZyb20odS5sYXllcnMpLFt3XT1bLi4udS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZF0uc2xpY2UoLTEpLHA9bS5pbmRleE9mKHcpLHY9Yz9tLmluZGV4T2YoYyk6LTEseD11LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU+MCxrPXY+PXAsVD12MihQPT57Y29uc3QgQT1QLnRhcmdldCxqPVsuLi51LmJyYW5jaGVzXS5zb21lKEk9PkkuY29udGFpbnMoQSkpOyFrfHxqfHwoaT09bnVsbHx8aShQKSxzPT1udWxsfHxzKFApLFAuZGVmYXVsdFByZXZlbnRlZHx8YT09bnVsbHx8YSgpKX0saCksQz14MihQPT57Y29uc3QgQT1QLnRhcmdldDtbLi4udS5icmFuY2hlc10uc29tZShJPT5JLmNvbnRhaW5zKEEpKXx8KG89PW51bGx8fG8oUCkscz09bnVsbHx8cyhQKSxQLmRlZmF1bHRQcmV2ZW50ZWR8fGE9PW51bGx8fGEoKSl9LGgpO3JldHVybiBoMihQPT57dj09PXUubGF5ZXJzLnNpemUtMSYmKHI9PW51bGx8fHIoUCksIVAuZGVmYXVsdFByZXZlbnRlZCYmYSYmKFAucHJldmVudERlZmF1bHQoKSxhKCkpKX0saCksYi51c2VFZmZlY3QoKCk9PntpZihjKXJldHVybiBuJiYodS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplPT09MCYmKFFnPWguYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzLGguYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIiksdS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5hZGQoYykpLHUubGF5ZXJzLmFkZChjKSxYZygpLCgpPT57biYmdS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplPT09MSYmKGguYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPVFnKX19LFtjLGgsbix1XSksYi51c2VFZmZlY3QoKCk9PigpPT57YyYmKHUubGF5ZXJzLmRlbGV0ZShjKSx1LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmRlbGV0ZShjKSxYZygpKX0sW2MsdV0pLGIudXNlRWZmZWN0KCgpPT57Y29uc3QgUD0oKT0+Zih7fSk7cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIobWYsUCksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobWYsUCl9LFtdKSxnLmpzeChVZS5kaXYsey4uLmwscmVmOnksc3R5bGU6e3BvaW50ZXJFdmVudHM6eD9rPyJhdXRvIjoibm9uZSI6dm9pZCAwLC4uLmUuc3R5bGV9LG9uRm9jdXNDYXB0dXJlOlJlKGUub25Gb2N1c0NhcHR1cmUsQy5vbkZvY3VzQ2FwdHVyZSksb25CbHVyQ2FwdHVyZTpSZShlLm9uQmx1ckNhcHR1cmUsQy5vbkJsdXJDYXB0dXJlKSxvblBvaW50ZXJEb3duQ2FwdHVyZTpSZShlLm9uUG9pbnRlckRvd25DYXB0dXJlLFQub25Qb2ludGVyRG93bkNhcHR1cmUpfSl9KTtvcC5kaXNwbGF5TmFtZT1wMjt2YXIgeTI9IkRpc21pc3NhYmxlTGF5ZXJCcmFuY2giLHZ3PWIuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0IG49Yi51c2VDb250ZXh0KHl3KSxyPWIudXNlUmVmKG51bGwpLGk9TXQodCxyKTtyZXR1cm4gYi51c2VFZmZlY3QoKCk9Pntjb25zdCBvPXIuY3VycmVudDtpZihvKXJldHVybiBuLmJyYW5jaGVzLmFkZChvKSwoKT0+e24uYnJhbmNoZXMuZGVsZXRlKG8pfX0sW24uYnJhbmNoZXNdKSxnLmpzeChVZS5kaXYsey4uLmUscmVmOml9KX0pO3Z3LmRpc3BsYXlOYW1lPXkyO2Z1bmN0aW9uIHYyKGUsdD1nbG9iYWxUaGlzPT1udWxsP3ZvaWQgMDpnbG9iYWxUaGlzLmRvY3VtZW50KXtjb25zdCBuPVZyKGUpLHI9Yi51c2VSZWYoITEpLGk9Yi51c2VSZWYoKCk9Pnt9KTtyZXR1cm4gYi51c2VFZmZlY3QoKCk9Pntjb25zdCBvPWE9PntpZihhLnRhcmdldCYmIXIuY3VycmVudCl7bGV0IGw9ZnVuY3Rpb24oKXt4dyhtMixuLHUse2Rpc2NyZXRlOiEwfSl9O2NvbnN0IHU9e29yaWdpbmFsRXZlbnQ6YX07YS5wb2ludGVyVHlwZT09PSJ0b3VjaCI\/KHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLGkuY3VycmVudCksaS5jdXJyZW50PWwsdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsaS5jdXJyZW50LHtvbmNlOiEwfSkpOmwoKX1lbHNlIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLGkuY3VycmVudCk7ci5jdXJyZW50PSExfSxzPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsbyl9LDApO3JldHVybigpPT57d2luZG93LmNsZWFyVGltZW91dChzKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixvKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixpLmN1cnJlbnQpfX0sW3Qsbl0pLHtvblBvaW50ZXJEb3duQ2FwdHVyZTooKT0+ci5jdXJyZW50PSEwfX1mdW5jdGlvbiB4MihlLHQ9Z2xvYmFsVGhpcz09bnVsbD92b2lkIDA6Z2xvYmFsVGhpcy5kb2N1bWVudCl7Y29uc3Qgbj1WcihlKSxyPWIudXNlUmVmKCExKTtyZXR1cm4gYi51c2VFZmZlY3QoKCk9Pntjb25zdCBpPW89PntvLnRhcmdldCYmIXIuY3VycmVudCYmeHcoZzIsbix7b3JpZ2luYWxFdmVudDpvfSx7ZGlzY3JldGU6ITF9KX07cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsaSksKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsaSl9LFt0LG5dKSx7b25Gb2N1c0NhcHR1cmU6KCk9PnIuY3VycmVudD0hMCxvbkJsdXJDYXB0dXJlOigpPT5yLmN1cnJlbnQ9ITF9fWZ1bmN0aW9uIFhnKCl7Y29uc3QgZT1uZXcgQ3VzdG9tRXZlbnQobWYpO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQoZSl9ZnVuY3Rpb24geHcoZSx0LG4se2Rpc2NyZXRlOnJ9KXtjb25zdCBpPW4ub3JpZ2luYWxFdmVudC50YXJnZXQsbz1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmaS5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHI\/Z3coaSxvKTppLmRpc3BhdGNoRXZlbnQobyl9dmFyIHcyPW9wLGIyPXZ3LFJuPWdsb2JhbFRoaXMhPW51bGwmJmdsb2JhbFRoaXMuZG9jdW1lbnQ\/Yi51c2VMYXlvdXRFZmZlY3Q6KCk9Pnt9LGsyPSJQb3J0YWwiLHd3PWIuZm9yd2FyZFJlZigoZSx0KT0+e3ZhciBhO2NvbnN0e2NvbnRhaW5lcjpuLC4uLnJ9PWUsW2ksb109Yi51c2VTdGF0ZSghMSk7Um4oKCk9Pm8oITApLFtdKTtjb25zdCBzPW58fGkmJigoYT1nbG9iYWxUaGlzPT1udWxsP3ZvaWQgMDpnbG9iYWxUaGlzLmRvY3VtZW50KT09bnVsbD92b2lkIDA6YS5ib2R5KTtyZXR1cm4gcz9LMS5jcmVhdGVQb3J0YWwoZy5qc3goVWUuZGl2LHsuLi5yLHJlZjp0fSkscyk6bnVsbH0pO3d3LmRpc3BsYXlOYW1lPWsyO2Z1bmN0aW9uIFMyKGUsdCl7cmV0dXJuIGIudXNlUmVkdWNlcigobixyKT0+dFtuXVtyXT8\/bixlKX12YXIgTXU9ZT0+e2NvbnN0e3ByZXNlbnQ6dCxjaGlsZHJlbjpufT1lLHI9QzIodCksaT10eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKHtwcmVzZW50OnIuaXNQcmVzZW50fSk6Yi5DaGlsZHJlbi5vbmx5KG4pLG89TXQoci5yZWYsVDIoaSkpO3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uInx8ci5pc1ByZXNlbnQ\/Yi5jbG9uZUVsZW1lbnQoaSx7cmVmOm99KTpudWxsfTtNdS5kaXNwbGF5TmFtZT0iUHJlc2VuY2UiO2Z1bmN0aW9uIEMyKGUpe2NvbnN0W3Qsbl09Yi51c2VTdGF0ZSgpLHI9Yi51c2VSZWYobnVsbCksaT1iLnVzZVJlZihlKSxvPWIudXNlUmVmKCJub25lIikscz1lPyJtb3VudGVkIjoidW5tb3VudGVkIixbYSxsXT1TMihzLHttb3VudGVkOntVTk1PVU5UOiJ1bm1vdW50ZWQiLEFOSU1BVElPTl9PVVQ6InVubW91bnRTdXNwZW5kZWQifSx1bm1vdW50U3VzcGVuZGVkOntNT1VOVDoibW91bnRlZCIsQU5JTUFUSU9OX0VORDoidW5tb3VudGVkIn0sdW5tb3VudGVkOntNT1VOVDoibW91bnRlZCJ9fSk7cmV0dXJuIGIudXNlRWZmZWN0KCgpPT57Y29uc3QgdT1IYShyLmN1cnJlbnQpO28uY3VycmVudD1hPT09Im1vdW50ZWQiP3U6Im5vbmUifSxbYV0pLFJuKCgpPT57Y29uc3QgdT1yLmN1cnJlbnQsYz1pLmN1cnJlbnQ7aWYoYyE9PWUpe2NvbnN0IGg9by5jdXJyZW50LGY9SGEodSk7ZT9sKCJNT1VOVCIpOmY9PT0ibm9uZSJ8fCh1PT1udWxsP3ZvaWQgMDp1LmRpc3BsYXkpPT09Im5vbmUiP2woIlVOTU9VTlQiKTpsKGMmJmghPT1mPyJBTklNQVRJT05fT1VUIjoiVU5NT1VOVCIpLGkuY3VycmVudD1lfX0sW2UsbF0pLFJuKCgpPT57aWYodCl7bGV0IHU7Y29uc3QgYz10Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc\/P3dpbmRvdyxkPWY9Pntjb25zdCBtPUhhKHIuY3VycmVudCkuaW5jbHVkZXMoZi5hbmltYXRpb25OYW1lKTtpZihmLnRhcmdldD09PXQmJm0mJihsKCJBTklNQVRJT05fRU5EIiksIWkuY3VycmVudCkpe2NvbnN0IHc9dC5zdHlsZS5hbmltYXRpb25GaWxsTW9kZTt0LnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPSJmb3J3YXJkcyIsdT1jLnNldFRpbWVvdXQoKCk9Pnt0LnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPT09ImZvcndhcmRzIiYmKHQuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGU9dyl9KX19LGg9Zj0+e2YudGFyZ2V0PT09dCYmKG8uY3VycmVudD1IYShyLmN1cnJlbnQpKX07cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uc3RhcnQiLGgpLHQuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uY2FuY2VsIixkKSx0LmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmVuZCIsZCksKCk9PntjLmNsZWFyVGltZW91dCh1KSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbnN0YXJ0IixoKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbmNhbmNlbCIsZCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJhbmltYXRpb25lbmQiLGQpfX1lbHNlIGwoIkFOSU1BVElPTl9FTkQiKX0sW3QsbF0pLHtpc1ByZXNlbnQ6WyJtb3VudGVkIiwidW5tb3VudFN1c3BlbmRlZCJdLmluY2x1ZGVzKGEpLHJlZjpiLnVzZUNhbGxiYWNrKHU9PntyLmN1cnJlbnQ9dT9nZXRDb21wdXRlZFN0eWxlKHUpOm51bGwsbih1KX0sW10pfX1mdW5jdGlvbiBIYShlKXtyZXR1cm4oZT09bnVsbD92b2lkIDA6ZS5hbmltYXRpb25OYW1lKXx8Im5vbmUifWZ1bmN0aW9uIFQyKGUpe3ZhciByLGk7bGV0IHQ9KHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLnByb3BzLCJyZWYiKSk9PW51bGw\/dm9pZCAwOnIuZ2V0LG49dCYmImlzUmVhY3RXYXJuaW5nImluIHQmJnQuaXNSZWFjdFdhcm5pbmc7cmV0dXJuIG4\/ZS5yZWY6KHQ9KGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCJyZWYiKSk9PW51bGw\/dm9pZCAwOmkuZ2V0LG49dCYmImlzUmVhY3RXYXJuaW5nImluIHQmJnQuaXNSZWFjdFdhcm5pbmcsbj9lLnByb3BzLnJlZjplLnByb3BzLnJlZnx8ZS5yZWYpfXZhciBFMj1jaFsiIHVzZUluc2VydGlvbkVmZmVjdCAiLnRyaW0oKS50b1N0cmluZygpXXx8Um47ZnVuY3Rpb24gTHUoe3Byb3A6ZSxkZWZhdWx0UHJvcDp0LG9uQ2hhbmdlOm49KCk9Pnt9LGNhbGxlcjpyfSl7Y29uc3RbaSxvLHNdPVAyKHtkZWZhdWx0UHJvcDp0LG9uQ2hhbmdlOm59KSxhPWUhPT12b2lkIDAsbD1hP2U6aTt7Y29uc3QgYz1iLnVzZVJlZihlIT09dm9pZCAwKTtiLnVzZUVmZmVjdCgoKT0+e2NvbnN0IGQ9Yy5jdXJyZW50O2QhPT1hJiZjb25zb2xlLndhcm4oYCR7cn0gaXMgY2hhbmdpbmcgZnJvbSAke2Q\/ImNvbnRyb2xsZWQiOiJ1bmNvbnRyb2xsZWQifSB0byAke2E\/ImNvbnRyb2xsZWQiOiJ1bmNvbnRyb2xsZWQifS4gQ29tcG9uZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCB2YWx1ZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuYCksYy5jdXJyZW50PWF9LFthLHJdKX1jb25zdCB1PWIudXNlQ2FsbGJhY2soYz0+e3ZhciBkO2lmKGEpe2NvbnN0IGg9QTIoYyk\/YyhlKTpjO2ghPT1lJiYoKGQ9cy5jdXJyZW50KT09bnVsbHx8ZC5jYWxsKHMsaCkpfWVsc2UgbyhjKX0sW2EsZSxvLHNdKTtyZXR1cm5bbCx1XX1mdW5jdGlvbiBQMih7ZGVmYXVsdFByb3A6ZSxvbkNoYW5nZTp0fSl7Y29uc3RbbixyXT1iLnVzZVN0YXRlKGUpLGk9Yi51c2VSZWYobiksbz1iLnVzZVJlZih0KTtyZXR1cm4gRTIoKCk9PntvLmN1cnJlbnQ9dH0sW3RdKSxiLnVzZUVmZmVjdCgoKT0+e3ZhciBzO2kuY3VycmVudCE9PW4mJigocz1vLmN1cnJlbnQpPT1udWxsfHxzLmNhbGwobyxuKSxpLmN1cnJlbnQ9bil9LFtuLGldKSxbbixyLG9dfWZ1bmN0aW9uIEEyKGUpe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIn12YXIgSTI9T2JqZWN0LmZyZWV6ZSh7cG9zaXRpb246ImFic29sdXRlIixib3JkZXI6MCx3aWR0aDoxLGhlaWdodDoxLHBhZGRpbmc6MCxtYXJnaW46LTEsb3ZlcmZsb3c6ImhpZGRlbiIsY2xpcDoicmVjdCgwLCAwLCAwLCAwKSIsd2hpdGVTcGFjZToibm93cmFwIix3b3JkV3JhcDoibm9ybWFsIn0pLE4yPSJWaXN1YWxseUhpZGRlbiIsT3U9Yi5mb3J3YXJkUmVmKChlLHQpPT5nLmpzeChVZS5zcGFuLHsuLi5lLHJlZjp0LHN0eWxlOnsuLi5JMiwuLi5lLnN0eWxlfX0pKTtPdS5kaXNwbGF5TmFtZT1OMjt2YXIgajI9T3Usc3A9IlRvYXN0UHJvdmlkZXIiLFthcCx6MixSMl09bXcoIlRvYXN0IiksW2J3LFYzXT1GbygiVG9hc3QiLFtSMl0pLFtEMixGdV09Yncoc3ApLGt3PWU9Pntjb25zdHtfX3Njb3BlVG9hc3Q6dCxsYWJlbDpuPSJOb3RpZmljYXRpb24iLGR1cmF0aW9uOnI9NWUzLHN3aXBlRGlyZWN0aW9uOmk9InJpZ2h0Iixzd2lwZVRocmVzaG9sZDpvPTUwLGNoaWxkcmVuOnN9PWUsW2EsbF09Yi51c2VTdGF0ZShudWxsKSxbdSxjXT1iLnVzZVN0YXRlKDApLGQ9Yi51c2VSZWYoITEpLGg9Yi51c2VSZWYoITEpO3JldHVybiBuLnRyaW0oKXx8Y29uc29sZS5lcnJvcihgSW52YWxpZCBwcm9wIFxgbGFiZWxcYCBzdXBwbGllZCB0byBcYCR7c3B9XGAuIEV4cGVjdGVkIG5vbi1lbXB0eSBcYHN0cmluZ1xgLmApLGcuanN4KGFwLlByb3ZpZGVyLHtzY29wZTp0LGNoaWxkcmVuOmcuanN4KEQyLHtzY29wZTp0LGxhYmVsOm4sZHVyYXRpb246cixzd2lwZURpcmVjdGlvbjppLHN3aXBlVGhyZXNob2xkOm8sdG9hc3RDb3VudDp1LHZpZXdwb3J0OmEsb25WaWV3cG9ydENoYW5nZTpsLG9uVG9hc3RBZGQ6Yi51c2VDYWxsYmFjaygoKT0+YyhmPT5mKzEpLFtdKSxvblRvYXN0UmVtb3ZlOmIudXNlQ2FsbGJhY2soKCk9PmMoZj0+Zi0xKSxbXSksaXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmOmQsaXNDbG9zZVBhdXNlZFJlZjpoLGNoaWxkcmVuOnN9KX0pfTtrdy5kaXNwbGF5TmFtZT1zcDt2YXIgU3c9IlRvYXN0Vmlld3BvcnQiLE0yPVsiRjgiXSxnZj0idG9hc3Qudmlld3BvcnRQYXVzZSIseWY9InRvYXN0LnZpZXdwb3J0UmVzdW1lIixDdz1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVG9hc3Q6bixob3RrZXk6cj1NMixsYWJlbDppPSJOb3RpZmljYXRpb25zICh7aG90a2V5fSkiLC4uLm99PWUscz1GdShTdyxuKSxhPXoyKG4pLGw9Yi51c2VSZWYobnVsbCksdT1iLnVzZVJlZihudWxsKSxjPWIudXNlUmVmKG51bGwpLGQ9Yi51c2VSZWYobnVsbCksaD1NdCh0LGQscy5vblZpZXdwb3J0Q2hhbmdlKSxmPXIuam9pbigiKyIpLnJlcGxhY2UoL0tleS9nLCIiKS5yZXBsYWNlKC9EaWdpdC9nLCIiKSx5PXMudG9hc3RDb3VudD4wO2IudXNlRWZmZWN0KCgpPT57Y29uc3Qgdz1wPT57dmFyIHg7ci5sZW5ndGghPT0wJiZyLmV2ZXJ5KGs9PnBba118fHAuY29kZT09PWspJiYoKHg9ZC5jdXJyZW50KT09bnVsbHx8eC5mb2N1cygpKX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHcpLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix3KX0sW3JdKSxiLnVzZUVmZmVjdCgoKT0+e2NvbnN0IHc9bC5jdXJyZW50LHA9ZC5jdXJyZW50O2lmKHkmJncmJnApe2NvbnN0IHY9KCk9PntpZighcy5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQpe2NvbnN0IEM9bmV3IEN1c3RvbUV2ZW50KGdmKTtwLmRpc3BhdGNoRXZlbnQoQykscy5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQ9ITB9fSx4PSgpPT57aWYocy5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQpe2NvbnN0IEM9bmV3IEN1c3RvbUV2ZW50KHlmKTtwLmRpc3BhdGNoRXZlbnQoQykscy5pc0Nsb3NlUGF1c2VkUmVmLmN1cnJlbnQ9ITF9fSxrPUM9Pnshdy5jb250YWlucyhDLnJlbGF0ZWRUYXJnZXQpJiZ4KCl9LFQ9KCk9Pnt3LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfHx4KCl9O3JldHVybiB3LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHYpLHcuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLGspLHcuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHYpLHcuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixUKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix4KSwoKT0+e3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdiksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsayksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsdiksdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLFQpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix2KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHgpfX19LFt5LHMuaXNDbG9zZVBhdXNlZFJlZl0pO2NvbnN0IG09Yi51c2VDYWxsYmFjaygoe3RhYmJpbmdEaXJlY3Rpb246d30pPT57Y29uc3Qgdj1hKCkubWFwKHg9Pntjb25zdCBrPXgucmVmLmN1cnJlbnQsVD1baywuLi5HMihrKV07cmV0dXJuIHc9PT0iZm9yd2FyZHMiP1Q6VC5yZXZlcnNlKCl9KTtyZXR1cm4odz09PSJmb3J3YXJkcyI\/di5yZXZlcnNlKCk6dikuZmxhdCgpfSxbYV0pO3JldHVybiBiLnVzZUVmZmVjdCgoKT0+e2NvbnN0IHc9ZC5jdXJyZW50O2lmKHcpe2NvbnN0IHA9dj0+e3ZhciBULEMsUDtjb25zdCB4PXYuYWx0S2V5fHx2LmN0cmxLZXl8fHYubWV0YUtleTtpZih2LmtleT09PSJUYWIiJiYheCl7Y29uc3QgQT1kb2N1bWVudC5hY3RpdmVFbGVtZW50LGo9di5zaGlmdEtleTtpZih2LnRhcmdldD09PXcmJmopeyhUPXUuY3VycmVudCk9PW51bGx8fFQuZm9jdXMoKTtyZXR1cm59Y29uc3Qgej1tKHt0YWJiaW5nRGlyZWN0aW9uOmo\/ImJhY2t3YXJkcyI6ImZvcndhcmRzIn0pLCQ9ei5maW5kSW5kZXgoTz0+Tz09PUEpO0xjKHouc2xpY2UoJCsxKSk\/di5wcmV2ZW50RGVmYXVsdCgpOmo\/KEM9dS5jdXJyZW50KT09bnVsbHx8Qy5mb2N1cygpOihQPWMuY3VycmVudCk9PW51bGx8fFAuZm9jdXMoKX19O3JldHVybiB3LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHApLCgpPT53LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHApfX0sW2EsbV0pLGcuanN4cyhiMix7cmVmOmwscm9sZToicmVnaW9uIiwiYXJpYS1sYWJlbCI6aS5yZXBsYWNlKCJ7aG90a2V5fSIsZiksdGFiSW5kZXg6LTEsc3R5bGU6e3BvaW50ZXJFdmVudHM6eT92b2lkIDA6Im5vbmUifSxjaGlsZHJlbjpbeSYmZy5qc3godmYse3JlZjp1LG9uRm9jdXNGcm9tT3V0c2lkZVZpZXdwb3J0OigpPT57Y29uc3Qgdz1tKHt0YWJiaW5nRGlyZWN0aW9uOiJmb3J3YXJkcyJ9KTtMYyh3KX19KSxnLmpzeChhcC5TbG90LHtzY29wZTpuLGNoaWxkcmVuOmcuanN4KFVlLm9sLHt0YWJJbmRleDotMSwuLi5vLHJlZjpofSl9KSx5JiZnLmpzeCh2Zix7cmVmOmMsb25Gb2N1c0Zyb21PdXRzaWRlVmlld3BvcnQ6KCk9Pntjb25zdCB3PW0oe3RhYmJpbmdEaXJlY3Rpb246ImJhY2t3YXJkcyJ9KTtMYyh3KX19KV19KX0pO0N3LmRpc3BsYXlOYW1lPVN3O3ZhciBUdz0iVG9hc3RGb2N1c1Byb3h5Iix2Zj1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVG9hc3Q6bixvbkZvY3VzRnJvbU91dHNpZGVWaWV3cG9ydDpyLC4uLml9PWUsbz1GdShUdyxuKTtyZXR1cm4gZy5qc3goT3UseyJhcmlhLWhpZGRlbiI6ITAsdGFiSW5kZXg6MCwuLi5pLHJlZjp0LHN0eWxlOntwb3NpdGlvbjoiZml4ZWQifSxvbkZvY3VzOnM9Pnt2YXIgdTtjb25zdCBhPXMucmVsYXRlZFRhcmdldDshKCh1PW8udmlld3BvcnQpIT1udWxsJiZ1LmNvbnRhaW5zKGEpKSYmcigpfX0pfSk7dmYuZGlzcGxheU5hbWU9VHc7dmFyIG1hPSJUb2FzdCIsTDI9InRvYXN0LnN3aXBlU3RhcnQiLE8yPSJ0b2FzdC5zd2lwZU1vdmUiLEYyPSJ0b2FzdC5zd2lwZUNhbmNlbCIsXzI9InRvYXN0LnN3aXBlRW5kIixFdz1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtmb3JjZU1vdW50Om4sb3BlbjpyLGRlZmF1bHRPcGVuOmksb25PcGVuQ2hhbmdlOm8sLi4uc309ZSxbYSxsXT1MdSh7cHJvcDpyLGRlZmF1bHRQcm9wOmk\/PyEwLG9uQ2hhbmdlOm8sY2FsbGVyOm1hfSk7cmV0dXJuIGcuanN4KE11LHtwcmVzZW50Om58fGEsY2hpbGRyZW46Zy5qc3goVTIse29wZW46YSwuLi5zLHJlZjp0LG9uQ2xvc2U6KCk9PmwoITEpLG9uUGF1c2U6VnIoZS5vblBhdXNlKSxvblJlc3VtZTpWcihlLm9uUmVzdW1lKSxvblN3aXBlU3RhcnQ6UmUoZS5vblN3aXBlU3RhcnQsdT0+e3UuY3VycmVudFRhcmdldC5zZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGUiLCJzdGFydCIpfSksb25Td2lwZU1vdmU6UmUoZS5vblN3aXBlTW92ZSx1PT57Y29uc3R7eDpjLHk6ZH09dS5kZXRhaWwuZGVsdGE7dS5jdXJyZW50VGFyZ2V0LnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZSIsIm1vdmUiKSx1LmN1cnJlbnRUYXJnZXQuc3R5bGUuc2V0UHJvcGVydHkoIi0tcmFkaXgtdG9hc3Qtc3dpcGUtbW92ZS14IixgJHtjfXB4YCksdS5jdXJyZW50VGFyZ2V0LnN0eWxlLnNldFByb3BlcnR5KCItLXJhZGl4LXRvYXN0LXN3aXBlLW1vdmUteSIsYCR7ZH1weGApfSksb25Td2lwZUNhbmNlbDpSZShlLm9uU3dpcGVDYW5jZWwsdT0+e3UuY3VycmVudFRhcmdldC5zZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGUiLCJjYW5jZWwiKSx1LmN1cnJlbnRUYXJnZXQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmFkaXgtdG9hc3Qtc3dpcGUtbW92ZS14IiksdS5jdXJyZW50VGFyZ2V0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJhZGl4LXRvYXN0LXN3aXBlLW1vdmUteSIpLHUuY3VycmVudFRhcmdldC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yYWRpeC10b2FzdC1zd2lwZS1lbmQteCIpLHUuY3VycmVudFRhcmdldC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiLS1yYWRpeC10b2FzdC1zd2lwZS1lbmQteSIpfSksb25Td2lwZUVuZDpSZShlLm9uU3dpcGVFbmQsdT0+e2NvbnN0e3g6Yyx5OmR9PXUuZGV0YWlsLmRlbHRhO3UuY3VycmVudFRhcmdldC5zZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGUiLCJlbmQiKSx1LmN1cnJlbnRUYXJnZXQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIi0tcmFkaXgtdG9hc3Qtc3dpcGUtbW92ZS14IiksdS5jdXJyZW50VGFyZ2V0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCItLXJhZGl4LXRvYXN0LXN3aXBlLW1vdmUteSIpLHUuY3VycmVudFRhcmdldC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1yYWRpeC10b2FzdC1zd2lwZS1lbmQteCIsYCR7Y31weGApLHUuY3VycmVudFRhcmdldC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1yYWRpeC10b2FzdC1zd2lwZS1lbmQteSIsYCR7ZH1weGApLGwoITEpfSl9KX0pfSk7RXcuZGlzcGxheU5hbWU9bWE7dmFyW1YyLEIyXT1idyhtYSx7b25DbG9zZSgpe319KSxVMj1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVG9hc3Q6bix0eXBlOnI9ImZvcmVncm91bmQiLGR1cmF0aW9uOmksb3BlbjpvLG9uQ2xvc2U6cyxvbkVzY2FwZUtleURvd246YSxvblBhdXNlOmwsb25SZXN1bWU6dSxvblN3aXBlU3RhcnQ6YyxvblN3aXBlTW92ZTpkLG9uU3dpcGVDYW5jZWw6aCxvblN3aXBlRW5kOmYsLi4ueX09ZSxtPUZ1KG1hLG4pLFt3LHBdPWIudXNlU3RhdGUobnVsbCksdj1NdCh0LE89PnAoTykpLHg9Yi51c2VSZWYobnVsbCksaz1iLnVzZVJlZihudWxsKSxUPWl8fG0uZHVyYXRpb24sQz1iLnVzZVJlZigwKSxQPWIudXNlUmVmKFQpLEE9Yi51c2VSZWYoMCkse29uVG9hc3RBZGQ6aixvblRvYXN0UmVtb3ZlOkl9PW0sTT1WcigoKT0+e3ZhciBVOyh3PT1udWxsP3ZvaWQgMDp3LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSYmKChVPW0udmlld3BvcnQpPT1udWxsfHxVLmZvY3VzKCkpLHMoKX0pLHo9Yi51c2VDYWxsYmFjayhPPT57IU98fE89PT0xLzB8fCh3aW5kb3cuY2xlYXJUaW1lb3V0KEEuY3VycmVudCksQy5jdXJyZW50PW5ldyBEYXRlKCkuZ2V0VGltZSgpLEEuY3VycmVudD13aW5kb3cuc2V0VGltZW91dChNLE8pKX0sW01dKTtiLnVzZUVmZmVjdCgoKT0+e2NvbnN0IE89bS52aWV3cG9ydDtpZihPKXtjb25zdCBVPSgpPT57eihQLmN1cnJlbnQpLHU9PW51bGx8fHUoKX0sSD0oKT0+e2NvbnN0IEc9bmV3IERhdGUoKS5nZXRUaW1lKCktQy5jdXJyZW50O1AuY3VycmVudD1QLmN1cnJlbnQtRyx3aW5kb3cuY2xlYXJUaW1lb3V0KEEuY3VycmVudCksbD09bnVsbHx8bCgpfTtyZXR1cm4gTy5hZGRFdmVudExpc3RlbmVyKGdmLEgpLE8uYWRkRXZlbnRMaXN0ZW5lcih5ZixVKSwoKT0+e08ucmVtb3ZlRXZlbnRMaXN0ZW5lcihnZixIKSxPLnJlbW92ZUV2ZW50TGlzdGVuZXIoeWYsVSl9fX0sW20udmlld3BvcnQsVCxsLHUsel0pLGIudXNlRWZmZWN0KCgpPT57byYmIW0uaXNDbG9zZVBhdXNlZFJlZi5jdXJyZW50JiZ6KFQpfSxbbyxULG0uaXNDbG9zZVBhdXNlZFJlZix6XSksYi51c2VFZmZlY3QoKCk9PihqKCksKCk9PkkoKSksW2osSV0pO2NvbnN0ICQ9Yi51c2VNZW1vKCgpPT53P1J3KHcpOm51bGwsW3ddKTtyZXR1cm4gbS52aWV3cG9ydD9nLmpzeHMoZy5GcmFnbWVudCx7Y2hpbGRyZW46WyQmJmcuanN4KCQyLHtfX3Njb3BlVG9hc3Q6bixyb2xlOiJzdGF0dXMiLCJhcmlhLWxpdmUiOnI9PT0iZm9yZWdyb3VuZCI\/ImFzc2VydGl2ZSI6InBvbGl0ZSIsImFyaWEtYXRvbWljIjohMCxjaGlsZHJlbjokfSksZy5qc3goVjIse3Njb3BlOm4sb25DbG9zZTpNLGNoaWxkcmVuOmZhLmNyZWF0ZVBvcnRhbChnLmpzeChhcC5JdGVtU2xvdCx7c2NvcGU6bixjaGlsZHJlbjpnLmpzeCh3Mix7YXNDaGlsZDohMCxvbkVzY2FwZUtleURvd246UmUoYSwoKT0+e20uaXNGb2N1c2VkVG9hc3RFc2NhcGVLZXlEb3duUmVmLmN1cnJlbnR8fE0oKSxtLmlzRm9jdXNlZFRvYXN0RXNjYXBlS2V5RG93blJlZi5jdXJyZW50PSExfSksY2hpbGRyZW46Zy5qc3goVWUubGkse3JvbGU6InN0YXR1cyIsImFyaWEtbGl2ZSI6Im9mZiIsImFyaWEtYXRvbWljIjohMCx0YWJJbmRleDowLCJkYXRhLXN0YXRlIjpvPyJvcGVuIjoiY2xvc2VkIiwiZGF0YS1zd2lwZS1kaXJlY3Rpb24iOm0uc3dpcGVEaXJlY3Rpb24sLi4ueSxyZWY6dixzdHlsZTp7dXNlclNlbGVjdDoibm9uZSIsdG91Y2hBY3Rpb246Im5vbmUiLC4uLmUuc3R5bGV9LG9uS2V5RG93bjpSZShlLm9uS2V5RG93bixPPT57Ty5rZXk9PT0iRXNjYXBlIiYmKGE9PW51bGx8fGEoTy5uYXRpdmVFdmVudCksTy5uYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkfHwobS5pc0ZvY3VzZWRUb2FzdEVzY2FwZUtleURvd25SZWYuY3VycmVudD0hMCxNKCkpKX0pLG9uUG9pbnRlckRvd246UmUoZS5vblBvaW50ZXJEb3duLE89PntPLmJ1dHRvbj09PTAmJih4LmN1cnJlbnQ9e3g6Ty5jbGllbnRYLHk6Ty5jbGllbnRZfSl9KSxvblBvaW50ZXJNb3ZlOlJlKGUub25Qb2ludGVyTW92ZSxPPT57aWYoIXguY3VycmVudClyZXR1cm47Y29uc3QgVT1PLmNsaWVudFgteC5jdXJyZW50LngsSD1PLmNsaWVudFkteC5jdXJyZW50LnksRz0hIWsuY3VycmVudCxOPVsibGVmdCIsInJpZ2h0Il0uaW5jbHVkZXMobS5zd2lwZURpcmVjdGlvbiksUj1bImxlZnQiLCJ1cCJdLmluY2x1ZGVzKG0uc3dpcGVEaXJlY3Rpb24pP01hdGgubWluOk1hdGgubWF4LFM9Tj9SKDAsVSk6MCxZPU4\/MDpSKDAsSCkscT1PLnBvaW50ZXJUeXBlPT09InRvdWNoIj8xMDoyLEU9e3g6Uyx5Oll9LFg9e29yaWdpbmFsRXZlbnQ6TyxkZWx0YTpFfTtHPyhrLmN1cnJlbnQ9RSxxYShPMixkLFgse2Rpc2NyZXRlOiExfSkpOkpnKEUsbS5zd2lwZURpcmVjdGlvbixxKT8oay5jdXJyZW50PUUscWEoTDIsYyxYLHtkaXNjcmV0ZTohMX0pLE8udGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKE8ucG9pbnRlcklkKSk6KE1hdGguYWJzKFUpPnF8fE1hdGguYWJzKEgpPnEpJiYoeC5jdXJyZW50PW51bGwpfSksb25Qb2ludGVyVXA6UmUoZS5vblBvaW50ZXJVcCxPPT57Y29uc3QgVT1rLmN1cnJlbnQsSD1PLnRhcmdldDtpZihILmhhc1BvaW50ZXJDYXB0dXJlKE8ucG9pbnRlcklkKSYmSC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoTy5wb2ludGVySWQpLGsuY3VycmVudD1udWxsLHguY3VycmVudD1udWxsLFUpe2NvbnN0IEc9Ty5jdXJyZW50VGFyZ2V0LE49e29yaWdpbmFsRXZlbnQ6TyxkZWx0YTpVfTtKZyhVLG0uc3dpcGVEaXJlY3Rpb24sbS5zd2lwZVRocmVzaG9sZCk\/cWEoXzIsZixOLHtkaXNjcmV0ZTohMH0pOnFhKEYyLGgsTix7ZGlzY3JldGU6ITB9KSxHLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixSPT5SLnByZXZlbnREZWZhdWx0KCkse29uY2U6ITB9KX19KX0pfSl9KSxtLnZpZXdwb3J0KX0pXX0pOm51bGx9KSwkMj1lPT57Y29uc3R7X19zY29wZVRvYXN0OnQsY2hpbGRyZW46biwuLi5yfT1lLGk9RnUobWEsdCksW28sc109Yi51c2VTdGF0ZSghMSksW2EsbF09Yi51c2VTdGF0ZSghMSk7cmV0dXJuIFcyKCgpPT5zKCEwKSksYi51c2VFZmZlY3QoKCk9Pntjb25zdCB1PXdpbmRvdy5zZXRUaW1lb3V0KCgpPT5sKCEwKSwxZTMpO3JldHVybigpPT53aW5kb3cuY2xlYXJUaW1lb3V0KHUpfSxbXSksYT9udWxsOmcuanN4KHd3LHthc0NoaWxkOiEwLGNoaWxkcmVuOmcuanN4KE91LHsuLi5yLGNoaWxkcmVuOm8mJmcuanN4cyhnLkZyYWdtZW50LHtjaGlsZHJlbjpbaS5sYWJlbCwiICIsbl19KX0pfSl9LEgyPSJUb2FzdFRpdGxlIixQdz1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVG9hc3Q6biwuLi5yfT1lO3JldHVybiBnLmpzeChVZS5kaXYsey4uLnIscmVmOnR9KX0pO1B3LmRpc3BsYXlOYW1lPUgyO3ZhciBxMj0iVG9hc3REZXNjcmlwdGlvbiIsQXc9Yi5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRvYXN0Om4sLi4ucn09ZTtyZXR1cm4gZy5qc3goVWUuZGl2LHsuLi5yLHJlZjp0fSl9KTtBdy5kaXNwbGF5TmFtZT1xMjt2YXIgSXc9IlRvYXN0QWN0aW9uIixOdz1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHthbHRUZXh0Om4sLi4ucn09ZTtyZXR1cm4gbi50cmltKCk\/Zy5qc3goencse2FsdFRleHQ6bixhc0NoaWxkOiEwLGNoaWxkcmVuOmcuanN4KGxwLHsuLi5yLHJlZjp0fSl9KTooY29uc29sZS5lcnJvcihgSW52YWxpZCBwcm9wIFxgYWx0VGV4dFxgIHN1cHBsaWVkIHRvIFxgJHtJd31cYC4gRXhwZWN0ZWQgbm9uLWVtcHR5IFxgc3RyaW5nXGAuYCksbnVsbCl9KTtOdy5kaXNwbGF5TmFtZT1Jdzt2YXIganc9IlRvYXN0Q2xvc2UiLGxwPWIuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVUb2FzdDpuLC4uLnJ9PWUsaT1CMihqdyxuKTtyZXR1cm4gZy5qc3goencse2FzQ2hpbGQ6ITAsY2hpbGRyZW46Zy5qc3goVWUuYnV0dG9uLHt0eXBlOiJidXR0b24iLC4uLnIscmVmOnQsb25DbGljazpSZShlLm9uQ2xpY2ssaS5vbkNsb3NlKX0pfSl9KTtscC5kaXNwbGF5TmFtZT1qdzt2YXIgenc9Yi5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVRvYXN0Om4sYWx0VGV4dDpyLC4uLml9PWU7cmV0dXJuIGcuanN4KFVlLmRpdix7ImRhdGEtcmFkaXgtdG9hc3QtYW5ub3VuY2UtZXhjbHVkZSI6IiIsImRhdGEtcmFkaXgtdG9hc3QtYW5ub3VuY2UtYWx0IjpyfHx2b2lkIDAsLi4uaSxyZWY6dH0pfSk7ZnVuY3Rpb24gUncoZSl7Y29uc3QgdD1bXTtyZXR1cm4gQXJyYXkuZnJvbShlLmNoaWxkTm9kZXMpLmZvckVhY2gocj0+e2lmKHIubm9kZVR5cGU9PT1yLlRFWFRfTk9ERSYmci50ZXh0Q29udGVudCYmdC5wdXNoKHIudGV4dENvbnRlbnQpLEsyKHIpKXtjb25zdCBpPXIuYXJpYUhpZGRlbnx8ci5oaWRkZW58fHIuc3R5bGUuZGlzcGxheT09PSJub25lIixvPXIuZGF0YXNldC5yYWRpeFRvYXN0QW5ub3VuY2VFeGNsdWRlPT09IiI7aWYoIWkpaWYobyl7Y29uc3Qgcz1yLmRhdGFzZXQucmFkaXhUb2FzdEFubm91bmNlQWx0O3MmJnQucHVzaChzKX1lbHNlIHQucHVzaCguLi5SdyhyKSl9fSksdH1mdW5jdGlvbiBxYShlLHQsbix7ZGlzY3JldGU6cn0pe2NvbnN0IGk9bi5vcmlnaW5hbEV2ZW50LmN1cnJlbnRUYXJnZXQsbz1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmaS5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHI\/Z3coaSxvKTppLmRpc3BhdGNoRXZlbnQobyl9dmFyIEpnPShlLHQsbj0wKT0+e2NvbnN0IHI9TWF0aC5hYnMoZS54KSxpPU1hdGguYWJzKGUueSksbz1yPmk7cmV0dXJuIHQ9PT0ibGVmdCJ8fHQ9PT0icmlnaHQiP28mJnI+bjohbyYmaT5ufTtmdW5jdGlvbiBXMihlPSgpPT57fSl7Y29uc3QgdD1WcihlKTtSbigoKT0+e2xldCBuPTAscj0wO3JldHVybiBuPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnI9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0KSksKCk9Pnt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUobiksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHIpfX0sW3RdKX1mdW5jdGlvbiBLMihlKXtyZXR1cm4gZS5ub2RlVHlwZT09PWUuRUxFTUVOVF9OT0RFfWZ1bmN0aW9uIEcyKGUpe2NvbnN0IHQ9W10sbj1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGUsTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQse2FjY2VwdE5vZGU6cj0+e2NvbnN0IGk9ci50YWdOYW1lPT09IklOUFVUIiYmci50eXBlPT09ImhpZGRlbiI7cmV0dXJuIHIuZGlzYWJsZWR8fHIuaGlkZGVufHxpP05vZGVGaWx0ZXIuRklMVEVSX1NLSVA6ci50YWJJbmRleD49MD9Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ6Tm9kZUZpbHRlci5GSUxURVJfU0tJUH19KTtmb3IoO24ubmV4dE5vZGUoKTspdC5wdXNoKG4uY3VycmVudE5vZGUpO3JldHVybiB0fWZ1bmN0aW9uIExjKGUpe2NvbnN0IHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtyZXR1cm4gZS5zb21lKG49Pm49PT10PyEwOihuLmZvY3VzKCksZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXQpKX12YXIgWTI9a3csRHc9Q3csTXc9RXcsTHc9UHcsT3c9QXcsRnc9TncsX3c9bHA7ZnVuY3Rpb24gVncoZSl7dmFyIHQsbixyPSIiO2lmKHR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGU9PSJudW1iZXIiKXIrPWU7ZWxzZSBpZih0eXBlb2YgZT09Im9iamVjdCIpaWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIGk9ZS5sZW5ndGg7Zm9yKHQ9MDt0PGk7dCsrKWVbdF0mJihuPVZ3KGVbdF0pKSYmKHImJihyKz0iICIpLHIrPW4pfWVsc2UgZm9yKG4gaW4gZSllW25dJiYociYmKHIrPSIgIikscis9bik7cmV0dXJuIHJ9ZnVuY3Rpb24gQncoKXtmb3IodmFyIGUsdCxuPTAscj0iIixpPWFyZ3VtZW50cy5sZW5ndGg7bjxpO24rKykoZT1hcmd1bWVudHNbbl0pJiYodD1WdyhlKSkmJihyJiYocis9IiAiKSxyKz10KTtyZXR1cm4gcn1jb25zdCBaZz1lPT50eXBlb2YgZT09ImJvb2xlYW4iP2Ake2V9YDplPT09MD8iMCI6ZSxleT1CdyxRMj0oZSx0KT0+bj0+e3ZhciByO2lmKCh0PT1udWxsP3ZvaWQgMDp0LnZhcmlhbnRzKT09bnVsbClyZXR1cm4gZXkoZSxuPT1udWxsP3ZvaWQgMDpuLmNsYXNzLG49PW51bGw\/dm9pZCAwOm4uY2xhc3NOYW1lKTtjb25zdHt2YXJpYW50czppLGRlZmF1bHRWYXJpYW50czpvfT10LHM9T2JqZWN0LmtleXMoaSkubWFwKHU9Pntjb25zdCBjPW49PW51bGw\/dm9pZCAwOm5bdV0sZD1vPT1udWxsP3ZvaWQgMDpvW3VdO2lmKGM9PT1udWxsKXJldHVybiBudWxsO2NvbnN0IGg9WmcoYyl8fFpnKGQpO3JldHVybiBpW3VdW2hdfSksYT1uJiZPYmplY3QuZW50cmllcyhuKS5yZWR1Y2UoKHUsYyk9PntsZXRbZCxoXT1jO3JldHVybiBoPT09dm9pZCAwfHwodVtkXT1oKSx1fSx7fSksbD10PT1udWxsfHwocj10LmNvbXBvdW5kVmFyaWFudHMpPT09bnVsbHx8cj09PXZvaWQgMD92b2lkIDA6ci5yZWR1Y2UoKHUsYyk9PntsZXR7Y2xhc3M6ZCxjbGFzc05hbWU6aCwuLi5mfT1jO3JldHVybiBPYmplY3QuZW50cmllcyhmKS5ldmVyeSh5PT57bGV0W20sd109eTtyZXR1cm4gQXJyYXkuaXNBcnJheSh3KT93LmluY2x1ZGVzKHsuLi5vLC4uLmF9W21dKTp7Li4ubywuLi5hfVttXT09PXd9KT9bLi4udSxkLGhdOnV9LFtdKTtyZXR1cm4gZXkoZSxzLGwsbj09bnVsbD92b2lkIDA6bi5jbGFzcyxuPT1udWxsP3ZvaWQgMDpuLmNsYXNzTmFtZSl9Oy8qKgogKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDYyLjAgLSBJU0MKICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi9jb25zdCBYMj1lPT5lLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csIiQxLSQyIikudG9Mb3dlckNhc2UoKSxVdz0oLi4uZSk9PmUuZmlsdGVyKCh0LG4scik9PiEhdCYmdC50cmltKCkhPT0iIiYmci5pbmRleE9mKHQpPT09bikuam9pbigiICIpLnRyaW0oKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovdmFyIEoyPXt4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOjI0LGhlaWdodDoyNCx2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoyLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQifTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgWjI9Yi5mb3J3YXJkUmVmKCh7Y29sb3I6ZT0iY3VycmVudENvbG9yIixzaXplOnQ9MjQsc3Ryb2tlV2lkdGg6bj0yLGFic29sdXRlU3Ryb2tlV2lkdGg6cixjbGFzc05hbWU6aT0iIixjaGlsZHJlbjpvLGljb25Ob2RlOnMsLi4uYX0sbCk9PmIuY3JlYXRlRWxlbWVudCgic3ZnIix7cmVmOmwsLi4uSjIsd2lkdGg6dCxoZWlnaHQ6dCxzdHJva2U6ZSxzdHJva2VXaWR0aDpyP051bWJlcihuKSoyNC9OdW1iZXIodCk6bixjbGFzc05hbWU6VXcoImx1Y2lkZSIsaSksLi4uYX0sWy4uLnMubWFwKChbdSxjXSk9PmIuY3JlYXRlRWxlbWVudCh1LGMpKSwuLi5BcnJheS5pc0FycmF5KG8pP286W29dXSkpOy8qKgogKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDYyLjAgLSBJU0MKICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi9jb25zdCBrZT0oZSx0KT0+e2NvbnN0IG49Yi5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOnIsLi4uaX0sbyk9PmIuY3JlYXRlRWxlbWVudChaMix7cmVmOm8saWNvbk5vZGU6dCxjbGFzc05hbWU6VXcoYGx1Y2lkZS0ke1gyKGUpfWAsciksLi4uaX0pKTtyZXR1cm4gbi5kaXNwbGF5TmFtZT1gJHtlfWAsbn07LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0ICR3PWtlKCJBcnJvd0xlZnQiLFtbInBhdGgiLHtkOiJtMTIgMTktNy03IDctNyIsa2V5OiIxbDcyOW4ifV0sWyJwYXRoIix7ZDoiTTE5IDEySDUiLGtleToieDN4MHpsIn1dXSk7LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0IGVJPWtlKCJDaGVjayIsW1sicGF0aCIse2Q6Ik0yMCA2IDkgMTdsLTUtNSIsa2V5OiIxZ21mMmMifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgdEk9a2UoIkNoZXZyb25Eb3duIixbWyJwYXRoIix7ZDoibTYgOSA2IDYgNi02IixrZXk6InFydW5zbCJ9XV0pOy8qKgogKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDYyLjAgLSBJU0MKICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi9jb25zdCBuST1rZSgiQ2hldnJvbkxlZnQiLFtbInBhdGgiLHtkOiJtMTUgMTgtNi02IDYtNiIsa2V5OiIxd25mZzMifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3Qgckk9a2UoIkNoZXZyb25SaWdodCIsW1sicGF0aCIse2Q6Im05IDE4IDYtNi02LTYiLGtleToibXRoaHdxIn1dXSk7LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0IGlJPWtlKCJDaXJjbGVVc2VyIixbWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAiLGtleToiMW1nbGF5In1dLFsiY2lyY2xlIix7Y3g6IjEyIixjeToiMTAiLHI6IjMiLGtleToiaWxxaHI3In1dLFsicGF0aCIse2Q6Ik03IDIwLjY2MlYxOWEyIDIgMCAwIDEgMi0yaDZhMiAyIDAgMCAxIDIgMnYxLjY2MiIsa2V5OiIxNTRlZ2YifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3Qgb0k9a2UoIkRvd25sb2FkIixbWyJwYXRoIix7ZDoiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQiLGtleToiaWg3bjNoIn1dLFsicG9seWxpbmUiLHtwb2ludHM6IjcgMTAgMTIgMTUgMTcgMTAiLGtleToiMmdncXZ5In1dLFsibGluZSIse3gxOiIxMiIseDI6IjEyIix5MToiMTUiLHkyOiIzIixrZXk6IjF2azJqZSJ9XV0pOy8qKgogKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDYyLjAgLSBJU0MKICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi9jb25zdCBzST1rZSgiRXh0ZXJuYWxMaW5rIixbWyJwYXRoIix7ZDoiTTE1IDNoNnY2IixrZXk6IjFxOWZ3dCJ9XSxbInBhdGgiLHtkOiJNMTAgMTQgMjEgMyIsa2V5OiJncGxoNnIifV0sWyJwYXRoIix7ZDoiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiLGtleToiYTZ4cXFwIn1dXSk7LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0IGFJPWtlKCJFeWUiLFtbInBhdGgiLHtkOiJNMi4wNjIgMTIuMzQ4YTEgMSAwIDAgMSAwLS42OTYgMTAuNzUgMTAuNzUgMCAwIDEgMTkuODc2IDAgMSAxIDAgMCAxIDAgLjY5NiAxMC43NSAxMC43NSAwIDAgMS0xOS44NzYgMCIsa2V5OiIxbmNsYzAifV0sWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMyIsa2V5OiIxdjd6cmQifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgbEk9a2UoIkZpbGVUZXh0IixbWyJwYXRoIix7ZDoiTTE1IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY3WiIsa2V5OiIxcnFmejcifV0sWyJwYXRoIix7ZDoiTTE0IDJ2NGEyIDIgMCAwIDAgMiAyaDQiLGtleToidG5xcmxiIn1dLFsicGF0aCIse2Q6Ik0xMCA5SDgiLGtleToiYjFtcmxyIn1dLFsicGF0aCIse2Q6Ik0xNiAxM0g4IixrZXk6InQ0ZTAwMiJ9XSxbInBhdGgiLHtkOiJNMTYgMTdIOCIsa2V5OiJ6MXVoM2EifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgdXA9a2UoIkdsb2JlIixbWyJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAiLGtleToiMW1nbGF5In1dLFsicGF0aCIse2Q6Ik0xMiAyYTE0LjUgMTQuNSAwIDAgMCAwIDIwIDE0LjUgMTQuNSAwIDAgMCAwLTIwIixrZXk6IjEzbzF6bCJ9XSxbInBhdGgiLHtkOiJNMiAxMmgyMCIsa2V5OiI5aTRwdTQifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgdUk9a2UoIkxpYnJhcnkiLFtbInBhdGgiLHtkOiJtMTYgNiA0IDE0IixrZXk6ImppMzN1ZiJ9XSxbInBhdGgiLHtkOiJNMTIgNnYxNCIsa2V5OiIxbjdndXMifV0sWyJwYXRoIix7ZDoiTTggOHYxMiIsa2V5OiIxZ2c3eTkifV0sWyJwYXRoIix7ZDoiTTQgNHYxNiIsa2V5OiI2cWtrbGkifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgY0k9a2UoIkxvYWRlckNpcmNsZSIsW1sicGF0aCIse2Q6Ik0yMSAxMmE5IDkgMCAxIDEtNi4yMTktOC41NiIsa2V5OiIxM3phbGQifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgZEk9a2UoIk1lbnUiLFtbImxpbmUiLHt4MToiNCIseDI6IjIwIix5MToiMTIiLHkyOiIxMiIsa2V5OiIxZTBhOWkifV0sWyJsaW5lIix7eDE6IjQiLHgyOiIyMCIseTE6IjYiLHkyOiI2IixrZXk6IjFvd29iMyJ9XSxbImxpbmUiLHt4MToiNCIseDI6IjIwIix5MToiMTgiLHkyOiIxOCIsa2V5OiJ5azV6ajEifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgdHk9a2UoIk1lc3NhZ2VDaXJjbGUiLFtbInBhdGgiLHtkOiJNNy45IDIwQTkgOSAwIDEgMCA0IDE2LjFMMiAyMloiLGtleToidnYxMXNkIn1dXSk7LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0IGZJPWtlKCJNaWMiLFtbInBhdGgiLHtkOiJNMTIgMmEzIDMgMCAwIDAtMyAzdjdhMyAzIDAgMCAwIDYgMFY1YTMgMyAwIDAgMC0zLTNaIixrZXk6IjEzMTk2MSJ9XSxbInBhdGgiLHtkOiJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMiIsa2V5OiIxdmM3OGIifV0sWyJsaW5lIix7eDE6IjEyIix4MjoiMTIiLHkxOiIxOSIseTI6IjIyIixrZXk6IngzdnI1diJ9XV0pOy8qKgogKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDYyLjAgLSBJU0MKICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi9jb25zdCBoST1rZSgiUmVmcmVzaEN3IixbWyJwYXRoIix7ZDoiTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDgiLGtleToidjloNXZjIn1dLFsicGF0aCIse2Q6Ik0yMSAzdjVoLTUiLGtleToiMXE3dG8wIn1dLFsicGF0aCIse2Q6Ik0yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNiIsa2V5OiIzdWlmbDMifV0sWyJwYXRoIix7ZDoiTTggMTZIM3Y1IixrZXk6IjFjdjY3OCJ9XV0pOy8qKgogKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDYyLjAgLSBJU0MKICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi9jb25zdCBwST1rZSgiU2VuZCIsW1sicGF0aCIse2Q6Ik0xNC41MzYgMjEuNjg2YS41LjUgMCAwIDAgLjkzNy0uMDI0bDYuNS0xOWEuNDk2LjQ5NiAwIDAgMC0uNjM1LS42MzVsLTE5IDYuNWEuNS41IDAgMCAwLS4wMjQuOTM3bDcuOTMgMy4xOGEyIDIgMCAwIDEgMS4xMTIgMS4xMXoiLGtleToiMWZmeHkzIn1dLFsicGF0aCIse2Q6Im0yMS44NTQgMi4xNDctMTAuOTQgMTAuOTM5IixrZXk6IjEyY2pwYSJ9XV0pOy8qKgogKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDYyLjAgLSBJU0MKICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi9jb25zdCBtST1rZSgiU2hpZWxkQ2hlY2siLFtbInBhdGgiLHtkOiJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiLGtleToib2VsNDF5In1dLFsicGF0aCIse2Q6Im05IDEyIDIgMiA0LTQiLGtleToiZHptbTc0In1dXSk7LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0IGdJPWtlKCJTaGllbGQiLFtbInBhdGgiLHtkOiJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiLGtleToib2VsNDF5In1dXSk7LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0IHdpPWtlKCJTcGFya2xlcyIsW1sicGF0aCIse2Q6Ik05LjkzNyAxNS41QTIgMiAwIDAgMCA4LjUgMTQuMDYzbC02LjEzNS0xLjU4MmEuNS41IDAgMCAxIDAtLjk2Mkw4LjUgOS45MzZBMiAyIDAgMCAwIDkuOTM3IDguNWwxLjU4Mi02LjEzNWEuNS41IDAgMCAxIC45NjMgMEwxNC4wNjMgOC41QTIgMiAwIDAgMCAxNS41IDkuOTM3bDYuMTM1IDEuNTgxYS41LjUgMCAwIDEgMCAuOTY0TDE1LjUgMTQuMDYzYTIgMiAwIDAgMC0xLjQzNyAxLjQzN2wtMS41ODIgNi4xMzVhLjUuNSAwIDAgMS0uOTYzIDB6IixrZXk6IjRwajJ5eCJ9XSxbInBhdGgiLHtkOiJNMjAgM3Y0IixrZXk6IjFvbGxpMSJ9XSxbInBhdGgiLHtkOiJNMjIgNWgtNCIsa2V5OiIxZ3ZxYXUifV0sWyJwYXRoIix7ZDoiTTQgMTd2MiIsa2V5OiJ2dW1naHQifV0sWyJwYXRoIix7ZDoiTTUgMThIMyIsa2V5OiJ6Y2hwaHMifV1dKTsvKioKICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ2Mi4wIC0gSVNDCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLgogKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovY29uc3QgeUk9a2UoIlN0YXIiLFtbInBhdGgiLHtkOiJNMTEuNTI1IDIuMjk1YS41My41MyAwIDAgMSAuOTUgMGwyLjMxIDQuNjc5YTIuMTIzIDIuMTIzIDAgMCAwIDEuNTk1IDEuMTZsNS4xNjYuNzU2YS41My41MyAwIDAgMSAuMjk0LjkwNGwtMy43MzYgMy42MzhhMi4xMjMgMi4xMjMgMCAwIDAtLjYxMSAxLjg3OGwuODgyIDUuMTRhLjUzLjUzIDAgMCAxLS43NzEuNTZsLTQuNjE4LTIuNDI4YTIuMTIyIDIuMTIyIDAgMCAwLTEuOTczIDBMNi4zOTYgMjEuMDFhLjUzLjUzIDAgMCAxLS43Ny0uNTZsLjg4MS01LjEzOWEyLjEyMiAyLjEyMiAwIDAgMC0uNjExLTEuODc5TDIuMTYgOS43OTVhLjUzLjUzIDAgMCAxIC4yOTQtLjkwNmw1LjE2NS0uNzU1YTIuMTIyIDIuMTIyIDAgMCAwIDEuNTk3LTEuMTZ6IixrZXk6InIwNHM3cyJ9XV0pOy8qKgogKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDYyLjAgLSBJU0MKICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuCiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi9jb25zdCB2ST1rZSgiVXNlcnMiLFtbInBhdGgiLHtkOiJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiIsa2V5OiIxeXlpdHEifV0sWyJjaXJjbGUiLHtjeDoiOSIsY3k6IjciLHI6IjQiLGtleToibnVmazgifV0sWyJwYXRoIix7ZDoiTTIyIDIxdi0yYTQgNCAwIDAgMC0zLTMuODciLGtleToia3NoZWdkIn1dLFsicGF0aCIse2Q6Ik0xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzUiLGtleToiMWRhOWNlIn1dXSk7LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0IHhJPWtlKCJXYW5kU3BhcmtsZXMiLFtbInBhdGgiLHtkOiJtMjEuNjQgMy42NC0xLjI4LTEuMjhhMS4yMSAxLjIxIDAgMCAwLTEuNzIgMEwyLjM2IDE4LjY0YTEuMjEgMS4yMSAwIDAgMCAwIDEuNzJsMS4yOCAxLjI4YTEuMiAxLjIgMCAwIDAgMS43MiAwTDIxLjY0IDUuMzZhMS4yIDEuMiAwIDAgMCAwLTEuNzIiLGtleToidWw3NG82In1dLFsicGF0aCIse2Q6Im0xNCA3IDMgMyIsa2V5OiIxcjVuNDIifV0sWyJwYXRoIix7ZDoiTTUgNnY0IixrZXk6ImlsYjhiYSJ9XSxbInBhdGgiLHtkOiJNMTkgMTR2NCIsa2V5OiJibGhwdWcifV0sWyJwYXRoIix7ZDoiTTEwIDJ2MiIsa2V5OiI3dTBxZGMifV0sWyJwYXRoIix7ZDoiTTcgOEgzIixrZXk6InpmYjZ5ciJ9XSxbInBhdGgiLHtkOiJNMjEgMTZoLTQiLGtleToiMWNubW94In1dLFsicGF0aCIse2Q6Ik0xMSAzSDkiLGtleToiMW9icDd1In1dXSk7LyoqCiAqIEBsaWNlbnNlIGx1Y2lkZS1yZWFjdCB2MC40NjIuMCAtIElTQwogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4KICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL2NvbnN0IGNwPWtlKCJYIixbWyJwYXRoIix7ZDoiTTE4IDYgNiAxOCIsa2V5OiIxYmw1ZjgifV0sWyJwYXRoIix7ZDoibTYgNiAxMiAxMiIsa2V5OiJkOGJrNnYifV1dKSxkcD0iLSIsd0k9ZT0+e2NvbnN0IHQ9a0koZSkse2NvbmZsaWN0aW5nQ2xhc3NHcm91cHM6bixjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6cn09ZTtyZXR1cm57Z2V0Q2xhc3NHcm91cElkOnM9Pntjb25zdCBhPXMuc3BsaXQoZHApO3JldHVybiBhWzBdPT09IiImJmEubGVuZ3RoIT09MSYmYS5zaGlmdCgpLEh3KGEsdCl8fGJJKHMpfSxnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6KHMsYSk9Pntjb25zdCBsPW5bc118fFtdO3JldHVybiBhJiZyW3NdP1suLi5sLC4uLnJbc11dOmx9fX0sSHc9KGUsdCk9Pnt2YXIgcztpZihlLmxlbmd0aD09PTApcmV0dXJuIHQuY2xhc3NHcm91cElkO2NvbnN0IG49ZVswXSxyPXQubmV4dFBhcnQuZ2V0KG4pLGk9cj9IdyhlLnNsaWNlKDEpLHIpOnZvaWQgMDtpZihpKXJldHVybiBpO2lmKHQudmFsaWRhdG9ycy5sZW5ndGg9PT0wKXJldHVybjtjb25zdCBvPWUuam9pbihkcCk7cmV0dXJuKHM9dC52YWxpZGF0b3JzLmZpbmQoKHt2YWxpZGF0b3I6YX0pPT5hKG8pKSk9PW51bGw\/dm9pZCAwOnMuY2xhc3NHcm91cElkfSxueT0vXlxbKC4rKVxdJC8sYkk9ZT0+e2lmKG55LnRlc3QoZSkpe2NvbnN0IHQ9bnkuZXhlYyhlKVsxXSxuPXQ9PW51bGw\/dm9pZCAwOnQuc3Vic3RyaW5nKDAsdC5pbmRleE9mKCI6IikpO2lmKG4pcmV0dXJuImFyYml0cmFyeS4uIitufX0sa0k9ZT0+e2NvbnN0e3RoZW1lOnQscHJlZml4Om59PWUscj17bmV4dFBhcnQ6bmV3IE1hcCx2YWxpZGF0b3JzOltdfTtyZXR1cm4gQ0koT2JqZWN0LmVudHJpZXMoZS5jbGFzc0dyb3VwcyksbikuZm9yRWFjaCgoW28sc10pPT57eGYocyxyLG8sdCl9KSxyfSx4Zj0oZSx0LG4scik9PntlLmZvckVhY2goaT0+e2lmKHR5cGVvZiBpPT0ic3RyaW5nIil7Y29uc3Qgbz1pPT09IiI\/dDpyeSh0LGkpO28uY2xhc3NHcm91cElkPW47cmV0dXJufWlmKHR5cGVvZiBpPT0iZnVuY3Rpb24iKXtpZihTSShpKSl7eGYoaShyKSx0LG4scik7cmV0dXJufXQudmFsaWRhdG9ycy5wdXNoKHt2YWxpZGF0b3I6aSxjbGFzc0dyb3VwSWQ6bn0pO3JldHVybn1PYmplY3QuZW50cmllcyhpKS5mb3JFYWNoKChbbyxzXSk9Pnt4ZihzLHJ5KHQsbyksbixyKX0pfSl9LHJ5PShlLHQpPT57bGV0IG49ZTtyZXR1cm4gdC5zcGxpdChkcCkuZm9yRWFjaChyPT57bi5uZXh0UGFydC5oYXMocil8fG4ubmV4dFBhcnQuc2V0KHIse25leHRQYXJ0Om5ldyBNYXAsdmFsaWRhdG9yczpbXX0pLG49bi5uZXh0UGFydC5nZXQocil9KSxufSxTST1lPT5lLmlzVGhlbWVHZXR0ZXIsQ0k9KGUsdCk9PnQ\/ZS5tYXAoKFtuLHJdKT0+e2NvbnN0IGk9ci5tYXAobz0+dHlwZW9mIG89PSJzdHJpbmciP3Qrbzp0eXBlb2Ygbz09Im9iamVjdCI\/T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG8pLm1hcCgoW3MsYV0pPT5bdCtzLGFdKSk6byk7cmV0dXJuW24saV19KTplLFRJPWU9PntpZihlPDEpcmV0dXJue2dldDooKT0+e30sc2V0OigpPT57fX07bGV0IHQ9MCxuPW5ldyBNYXAscj1uZXcgTWFwO2NvbnN0IGk9KG8scyk9PntuLnNldChvLHMpLHQrKyx0PmUmJih0PTAscj1uLG49bmV3IE1hcCl9O3JldHVybntnZXQobyl7bGV0IHM9bi5nZXQobyk7aWYocyE9PXZvaWQgMClyZXR1cm4gcztpZigocz1yLmdldChvKSkhPT12b2lkIDApcmV0dXJuIGkobyxzKSxzfSxzZXQobyxzKXtuLmhhcyhvKT9uLnNldChvLHMpOmkobyxzKX19fSxxdz0iISIsRUk9ZT0+e2NvbnN0e3NlcGFyYXRvcjp0LGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lOm59PWUscj10Lmxlbmd0aD09PTEsaT10WzBdLG89dC5sZW5ndGgscz1hPT57Y29uc3QgbD1bXTtsZXQgdT0wLGM9MCxkO2ZvcihsZXQgdz0wO3c8YS5sZW5ndGg7dysrKXtsZXQgcD1hW3ddO2lmKHU9PT0wKXtpZihwPT09aSYmKHJ8fGEuc2xpY2Uodyx3K28pPT09dCkpe2wucHVzaChhLnNsaWNlKGMsdykpLGM9dytvO2NvbnRpbnVlfWlmKHA9PT0iLyIpe2Q9dztjb250aW51ZX19cD09PSJbIj91Kys6cD09PSJdIiYmdS0tfWNvbnN0IGg9bC5sZW5ndGg9PT0wP2E6YS5zdWJzdHJpbmcoYyksZj1oLnN0YXJ0c1dpdGgocXcpLHk9Zj9oLnN1YnN0cmluZygxKTpoLG09ZCYmZD5jP2QtYzp2b2lkIDA7cmV0dXJue21vZGlmaWVyczpsLGhhc0ltcG9ydGFudE1vZGlmaWVyOmYsYmFzZUNsYXNzTmFtZTp5LG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246bX19O3JldHVybiBuP2E9Pm4oe2NsYXNzTmFtZTphLHBhcnNlQ2xhc3NOYW1lOnN9KTpzfSxQST1lPT57aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3QgdD1bXTtsZXQgbj1bXTtyZXR1cm4gZS5mb3JFYWNoKHI9PntyWzBdPT09IlsiPyh0LnB1c2goLi4ubi5zb3J0KCksciksbj1bXSk6bi5wdXNoKHIpfSksdC5wdXNoKC4uLm4uc29ydCgpKSx0fSxBST1lPT4oe2NhY2hlOlRJKGUuY2FjaGVTaXplKSxwYXJzZUNsYXNzTmFtZTpFSShlKSwuLi53SShlKX0pLElJPS9ccysvLE5JPShlLHQpPT57Y29uc3R7cGFyc2VDbGFzc05hbWU6bixnZXRDbGFzc0dyb3VwSWQ6cixnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6aX09dCxvPVtdLHM9ZS50cmltKCkuc3BsaXQoSUkpO2xldCBhPSIiO2ZvcihsZXQgbD1zLmxlbmd0aC0xO2w+PTA7bC09MSl7Y29uc3QgdT1zW2xdLHttb2RpZmllcnM6YyxoYXNJbXBvcnRhbnRNb2RpZmllcjpkLGJhc2VDbGFzc05hbWU6aCxtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uOmZ9PW4odSk7bGV0IHk9ISFmLG09cih5P2guc3Vic3RyaW5nKDAsZik6aCk7aWYoIW0pe2lmKCF5KXthPXUrKGEubGVuZ3RoPjA\/IiAiK2E6YSk7Y29udGludWV9aWYobT1yKGgpLCFtKXthPXUrKGEubGVuZ3RoPjA\/IiAiK2E6YSk7Y29udGludWV9eT0hMX1jb25zdCB3PVBJKGMpLmpvaW4oIjoiKSxwPWQ\/dytxdzp3LHY9cCttO2lmKG8uaW5jbHVkZXModikpY29udGludWU7by5wdXNoKHYpO2NvbnN0IHg9aShtLHkpO2ZvcihsZXQgaz0wO2s8eC5sZW5ndGg7KytrKXtjb25zdCBUPXhba107by5wdXNoKHArVCl9YT11KyhhLmxlbmd0aD4wPyIgIithOmEpfXJldHVybiBhfTtmdW5jdGlvbiBqSSgpe2xldCBlPTAsdCxuLHI9IiI7Zm9yKDtlPGFyZ3VtZW50cy5sZW5ndGg7KSh0PWFyZ3VtZW50c1tlKytdKSYmKG49V3codCkpJiYociYmKHIrPSIgIikscis9bik7cmV0dXJuIHJ9Y29uc3QgV3c9ZT0+e2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gZTtsZXQgdCxuPSIiO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0mJih0PVd3KGVbcl0pKSYmKG4mJihuKz0iICIpLG4rPXQpO3JldHVybiBufTtmdW5jdGlvbiB6SShlLC4uLnQpe2xldCBuLHIsaSxvPXM7ZnVuY3Rpb24gcyhsKXtjb25zdCB1PXQucmVkdWNlKChjLGQpPT5kKGMpLGUoKSk7cmV0dXJuIG49QUkodSkscj1uLmNhY2hlLmdldCxpPW4uY2FjaGUuc2V0LG89YSxhKGwpfWZ1bmN0aW9uIGEobCl7Y29uc3QgdT1yKGwpO2lmKHUpcmV0dXJuIHU7Y29uc3QgYz1OSShsLG4pO3JldHVybiBpKGwsYyksY31yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbyhqSS5hcHBseShudWxsLGFyZ3VtZW50cykpfX1jb25zdCB4ZT1lPT57Y29uc3QgdD1uPT5uW2VdfHxbXTtyZXR1cm4gdC5pc1RoZW1lR2V0dGVyPSEwLHR9LEt3PS9eXFsoPzooW2Etei1dKyk6KT8oLispXF0kL2ksUkk9L15cZCtcL1xkKyQvLERJPW5ldyBTZXQoWyJweCIsImZ1bGwiLCJzY3JlZW4iXSksTUk9L14oXGQrKFwuXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLyxMST0vXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXCguK1wpfF4wJC8sT0k9L14ocmdiYT98aHNsYT98aHdifChvayk\/KGxhYnxsY2gpKVwoLitcKSQvLEZJPS9eKGluc2V0Xyk\/LT8oKFxkKyk\/XC4\/KFxkKylbYS16XSt8MClfLT8oKFxkKyk\/XC4\/KFxkKylbYS16XSt8MCkvLF9JPS9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXCguK1wpJC8sVW49ZT0+dW8oZSl8fERJLmhhcyhlKXx8UkkudGVzdChlKSxjcj1lPT5fbyhlLCJsZW5ndGgiLEtJKSx1bz1lPT4hIWUmJiFOdW1iZXIuaXNOYU4oTnVtYmVyKGUpKSxPYz1lPT5fbyhlLCJudW1iZXIiLHVvKSxucz1lPT4hIWUmJk51bWJlci5pc0ludGVnZXIoTnVtYmVyKGUpKSxWST1lPT5lLmVuZHNXaXRoKCIlIikmJnVvKGUuc2xpY2UoMCwtMSkpLG5lPWU9Pkt3LnRlc3QoZSksZHI9ZT0+TUkudGVzdChlKSxCST1uZXcgU2V0KFsibGVuZ3RoIiwic2l6ZSIsInBlcmNlbnRhZ2UiXSksVUk9ZT0+X28oZSxCSSxHdyksJEk9ZT0+X28oZSwicG9zaXRpb24iLEd3KSxIST1uZXcgU2V0KFsiaW1hZ2UiLCJ1cmwiXSkscUk9ZT0+X28oZSxISSxZSSksV0k9ZT0+X28oZSwiIixHSSkscnM9KCk9PiEwLF9vPShlLHQsbik9Pntjb25zdCByPUt3LmV4ZWMoZSk7cmV0dXJuIHI\/clsxXT90eXBlb2YgdD09InN0cmluZyI\/clsxXT09PXQ6dC5oYXMoclsxXSk6bihyWzJdKTohMX0sS0k9ZT0+TEkudGVzdChlKSYmIU9JLnRlc3QoZSksR3c9KCk9PiExLEdJPWU9PkZJLnRlc3QoZSksWUk9ZT0+X0kudGVzdChlKSxRST0oKT0+e2NvbnN0IGU9eGUoImNvbG9ycyIpLHQ9eGUoInNwYWNpbmciKSxuPXhlKCJibHVyIikscj14ZSgiYnJpZ2h0bmVzcyIpLGk9eGUoImJvcmRlckNvbG9yIiksbz14ZSgiYm9yZGVyUmFkaXVzIikscz14ZSgiYm9yZGVyU3BhY2luZyIpLGE9eGUoImJvcmRlcldpZHRoIiksbD14ZSgiY29udHJhc3QiKSx1PXhlKCJncmF5c2NhbGUiKSxjPXhlKCJodWVSb3RhdGUiKSxkPXhlKCJpbnZlcnQiKSxoPXhlKCJnYXAiKSxmPXhlKCJncmFkaWVudENvbG9yU3RvcHMiKSx5PXhlKCJncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyIpLG09eGUoImluc2V0Iiksdz14ZSgibWFyZ2luIikscD14ZSgib3BhY2l0eSIpLHY9eGUoInBhZGRpbmciKSx4PXhlKCJzYXR1cmF0ZSIpLGs9eGUoInNjYWxlIiksVD14ZSgic2VwaWEiKSxDPXhlKCJza2V3IiksUD14ZSgic3BhY2UiKSxBPXhlKCJ0cmFuc2xhdGUiKSxqPSgpPT5bImF1dG8iLCJjb250YWluIiwibm9uZSJdLEk9KCk9PlsiYXV0byIsImhpZGRlbiIsImNsaXAiLCJ2aXNpYmxlIiwic2Nyb2xsIl0sTT0oKT0+WyJhdXRvIixuZSx0XSx6PSgpPT5bbmUsdF0sJD0oKT0+WyIiLFVuLGNyXSxPPSgpPT5bImF1dG8iLHVvLG5lXSxVPSgpPT5bImJvdHRvbSIsImNlbnRlciIsImxlZnQiLCJsZWZ0LWJvdHRvbSIsImxlZnQtdG9wIiwicmlnaHQiLCJyaWdodC1ib3R0b20iLCJyaWdodC10b3AiLCJ0b3AiXSxIPSgpPT5bInNvbGlkIiwiZGFzaGVkIiwiZG90dGVkIiwiZG91YmxlIiwibm9uZSJdLEc9KCk9Plsibm9ybWFsIiwibXVsdGlwbHkiLCJzY3JlZW4iLCJvdmVybGF5IiwiZGFya2VuIiwibGlnaHRlbiIsImNvbG9yLWRvZGdlIiwiY29sb3ItYnVybiIsImhhcmQtbGlnaHQiLCJzb2Z0LWxpZ2h0IiwiZGlmZmVyZW5jZSIsImV4Y2x1c2lvbiIsImh1ZSIsInNhdHVyYXRpb24iLCJjb2xvciIsImx1bWlub3NpdHkiXSxOPSgpPT5bInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwiYmV0d2VlbiIsImFyb3VuZCIsImV2ZW5seSIsInN0cmV0Y2giXSxSPSgpPT5bIiIsIjAiLG5lXSxTPSgpPT5bImF1dG8iLCJhdm9pZCIsImFsbCIsImF2b2lkLXBhZ2UiLCJwYWdlIiwibGVmdCIsInJpZ2h0IiwiY29sdW1uIl0sWT0oKT0+W3VvLG5lXTtyZXR1cm57Y2FjaGVTaXplOjUwMCxzZXBhcmF0b3I6IjoiLHRoZW1lOntjb2xvcnM6W3JzXSxzcGFjaW5nOltVbixjcl0sYmx1cjpbIm5vbmUiLCIiLGRyLG5lXSxicmlnaHRuZXNzOlkoKSxib3JkZXJDb2xvcjpbZV0sYm9yZGVyUmFkaXVzOlsibm9uZSIsIiIsImZ1bGwiLGRyLG5lXSxib3JkZXJTcGFjaW5nOnooKSxib3JkZXJXaWR0aDokKCksY29udHJhc3Q6WSgpLGdyYXlzY2FsZTpSKCksaHVlUm90YXRlOlkoKSxpbnZlcnQ6UigpLGdhcDp6KCksZ3JhZGllbnRDb2xvclN0b3BzOltlXSxncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczpbVkksY3JdLGluc2V0Ok0oKSxtYXJnaW46TSgpLG9wYWNpdHk6WSgpLHBhZGRpbmc6eigpLHNhdHVyYXRlOlkoKSxzY2FsZTpZKCksc2VwaWE6UigpLHNrZXc6WSgpLHNwYWNlOnooKSx0cmFuc2xhdGU6eigpfSxjbGFzc0dyb3Vwczp7YXNwZWN0Olt7YXNwZWN0OlsiYXV0byIsInNxdWFyZSIsInZpZGVvIixuZV19XSxjb250YWluZXI6WyJjb250YWluZXIiXSxjb2x1bW5zOlt7Y29sdW1uczpbZHJdfV0sImJyZWFrLWFmdGVyIjpbeyJicmVhay1hZnRlciI6UygpfV0sImJyZWFrLWJlZm9yZSI6W3siYnJlYWstYmVmb3JlIjpTKCl9XSwiYnJlYWstaW5zaWRlIjpbeyJicmVhay1pbnNpZGUiOlsiYXV0byIsImF2b2lkIiwiYXZvaWQtcGFnZSIsImF2b2lkLWNvbHVtbiJdfV0sImJveC1kZWNvcmF0aW9uIjpbeyJib3gtZGVjb3JhdGlvbiI6WyJzbGljZSIsImNsb25lIl19XSxib3g6W3tib3g6WyJib3JkZXIiLCJjb250ZW50Il19XSxkaXNwbGF5OlsiYmxvY2siLCJpbmxpbmUtYmxvY2siLCJpbmxpbmUiLCJmbGV4IiwiaW5saW5lLWZsZXgiLCJ0YWJsZSIsImlubGluZS10YWJsZSIsInRhYmxlLWNhcHRpb24iLCJ0YWJsZS1jZWxsIiwidGFibGUtY29sdW1uIiwidGFibGUtY29sdW1uLWdyb3VwIiwidGFibGUtZm9vdGVyLWdyb3VwIiwidGFibGUtaGVhZGVyLWdyb3VwIiwidGFibGUtcm93LWdyb3VwIiwidGFibGUtcm93IiwiZmxvdy1yb290IiwiZ3JpZCIsImlubGluZS1ncmlkIiwiY29udGVudHMiLCJsaXN0LWl0ZW0iLCJoaWRkZW4iXSxmbG9hdDpbe2Zsb2F0OlsicmlnaHQiLCJsZWZ0Iiwibm9uZSIsInN0YXJ0IiwiZW5kIl19XSxjbGVhcjpbe2NsZWFyOlsibGVmdCIsInJpZ2h0IiwiYm90aCIsIm5vbmUiLCJzdGFydCIsImVuZCJdfV0saXNvbGF0aW9uOlsiaXNvbGF0ZSIsImlzb2xhdGlvbi1hdXRvIl0sIm9iamVjdC1maXQiOlt7b2JqZWN0OlsiY29udGFpbiIsImNvdmVyIiwiZmlsbCIsIm5vbmUiLCJzY2FsZS1kb3duIl19XSwib2JqZWN0LXBvc2l0aW9uIjpbe29iamVjdDpbLi4uVSgpLG5lXX1dLG92ZXJmbG93Olt7b3ZlcmZsb3c6SSgpfV0sIm92ZXJmbG93LXgiOlt7Im92ZXJmbG93LXgiOkkoKX1dLCJvdmVyZmxvdy15IjpbeyJvdmVyZmxvdy15IjpJKCl9XSxvdmVyc2Nyb2xsOlt7b3ZlcnNjcm9sbDpqKCl9XSwib3ZlcnNjcm9sbC14IjpbeyJvdmVyc2Nyb2xsLXgiOmooKX1dLCJvdmVyc2Nyb2xsLXkiOlt7Im92ZXJzY3JvbGwteSI6aigpfV0scG9zaXRpb246WyJzdGF0aWMiLCJmaXhlZCIsImFic29sdXRlIiwicmVsYXRpdmUiLCJzdGlja3kiXSxpbnNldDpbe2luc2V0OlttXX1dLCJpbnNldC14IjpbeyJpbnNldC14IjpbbV19XSwiaW5zZXQteSI6W3siaW5zZXQteSI6W21dfV0sc3RhcnQ6W3tzdGFydDpbbV19XSxlbmQ6W3tlbmQ6W21dfV0sdG9wOlt7dG9wOlttXX1dLHJpZ2h0Olt7cmlnaHQ6W21dfV0sYm90dG9tOlt7Ym90dG9tOlttXX1dLGxlZnQ6W3tsZWZ0OlttXX1dLHZpc2liaWxpdHk6WyJ2aXNpYmxlIiwiaW52aXNpYmxlIiwiY29sbGFwc2UiXSx6Olt7ejpbImF1dG8iLG5zLG5lXX1dLGJhc2lzOlt7YmFzaXM6TSgpfV0sImZsZXgtZGlyZWN0aW9uIjpbe2ZsZXg6WyJyb3ciLCJyb3ctcmV2ZXJzZSIsImNvbCIsImNvbC1yZXZlcnNlIl19XSwiZmxleC13cmFwIjpbe2ZsZXg6WyJ3cmFwIiwid3JhcC1yZXZlcnNlIiwibm93cmFwIl19XSxmbGV4Olt7ZmxleDpbIjEiLCJhdXRvIiwiaW5pdGlhbCIsIm5vbmUiLG5lXX1dLGdyb3c6W3tncm93OlIoKX1dLHNocmluazpbe3NocmluazpSKCl9XSxvcmRlcjpbe29yZGVyOlsiZmlyc3QiLCJsYXN0Iiwibm9uZSIsbnMsbmVdfV0sImdyaWQtY29scyI6W3siZ3JpZC1jb2xzIjpbcnNdfV0sImNvbC1zdGFydC1lbmQiOlt7Y29sOlsiYXV0byIse3NwYW46WyJmdWxsIixucyxuZV19LG5lXX1dLCJjb2wtc3RhcnQiOlt7ImNvbC1zdGFydCI6TygpfV0sImNvbC1lbmQiOlt7ImNvbC1lbmQiOk8oKX1dLCJncmlkLXJvd3MiOlt7ImdyaWQtcm93cyI6W3JzXX1dLCJyb3ctc3RhcnQtZW5kIjpbe3JvdzpbImF1dG8iLHtzcGFuOltucyxuZV19LG5lXX1dLCJyb3ctc3RhcnQiOlt7InJvdy1zdGFydCI6TygpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOk8oKX1dLCJncmlkLWZsb3ciOlt7ImdyaWQtZmxvdyI6WyJyb3ciLCJjb2wiLCJkZW5zZSIsInJvdy1kZW5zZSIsImNvbC1kZW5zZSJdfV0sImF1dG8tY29scyI6W3siYXV0by1jb2xzIjpbImF1dG8iLCJtaW4iLCJtYXgiLCJmciIsbmVdfV0sImF1dG8tcm93cyI6W3siYXV0by1yb3dzIjpbImF1dG8iLCJtaW4iLCJtYXgiLCJmciIsbmVdfV0sZ2FwOlt7Z2FwOltoXX1dLCJnYXAteCI6W3siZ2FwLXgiOltoXX1dLCJnYXAteSI6W3siZ2FwLXkiOltoXX1dLCJqdXN0aWZ5LWNvbnRlbnQiOlt7anVzdGlmeTpbIm5vcm1hbCIsLi4uTigpXX1dLCJqdXN0aWZ5LWl0ZW1zIjpbeyJqdXN0aWZ5LWl0ZW1zIjpbInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwic3RyZXRjaCJdfV0sImp1c3RpZnktc2VsZiI6W3sianVzdGlmeS1zZWxmIjpbImF1dG8iLCJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giXX1dLCJhbGlnbi1jb250ZW50Ijpbe2NvbnRlbnQ6WyJub3JtYWwiLC4uLk4oKSwiYmFzZWxpbmUiXX1dLCJhbGlnbi1pdGVtcyI6W3tpdGVtczpbInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwiYmFzZWxpbmUiLCJzdHJldGNoIl19XSwiYWxpZ24tc2VsZiI6W3tzZWxmOlsiYXV0byIsInN0YXJ0IiwiZW5kIiwiY2VudGVyIiwic3RyZXRjaCIsImJhc2VsaW5lIl19XSwicGxhY2UtY29udGVudCI6W3sicGxhY2UtY29udGVudCI6Wy4uLk4oKSwiYmFzZWxpbmUiXX1dLCJwbGFjZS1pdGVtcyI6W3sicGxhY2UtaXRlbXMiOlsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJiYXNlbGluZSIsInN0cmV0Y2giXX1dLCJwbGFjZS1zZWxmIjpbeyJwbGFjZS1zZWxmIjpbImF1dG8iLCJzdGFydCIsImVuZCIsImNlbnRlciIsInN0cmV0Y2giXX1dLHA6W3twOlt2XX1dLHB4Olt7cHg6W3ZdfV0scHk6W3tweTpbdl19XSxwczpbe3BzOlt2XX1dLHBlOlt7cGU6W3ZdfV0scHQ6W3twdDpbdl19XSxwcjpbe3ByOlt2XX1dLHBiOlt7cGI6W3ZdfV0scGw6W3twbDpbdl19XSxtOlt7bTpbd119XSxteDpbe214Olt3XX1dLG15Olt7bXk6W3ddfV0sbXM6W3ttczpbd119XSxtZTpbe21lOlt3XX1dLG10Olt7bXQ6W3ddfV0sbXI6W3ttcjpbd119XSxtYjpbe21iOlt3XX1dLG1sOlt7bWw6W3ddfV0sInNwYWNlLXgiOlt7InNwYWNlLXgiOltQXX1dLCJzcGFjZS14LXJldmVyc2UiOlsic3BhY2UteC1yZXZlcnNlIl0sInNwYWNlLXkiOlt7InNwYWNlLXkiOltQXX1dLCJzcGFjZS15LXJldmVyc2UiOlsic3BhY2UteS1yZXZlcnNlIl0sdzpbe3c6WyJhdXRvIiwibWluIiwibWF4IiwiZml0Iiwic3Z3IiwibHZ3IiwiZHZ3IixuZSx0XX1dLCJtaW4tdyI6W3sibWluLXciOltuZSx0LCJtaW4iLCJtYXgiLCJmaXQiXX1dLCJtYXgtdyI6W3sibWF4LXciOltuZSx0LCJub25lIiwiZnVsbCIsIm1pbiIsIm1heCIsImZpdCIsInByb3NlIix7c2NyZWVuOltkcl19LGRyXX1dLGg6W3toOltuZSx0LCJhdXRvIiwibWluIiwibWF4IiwiZml0Iiwic3ZoIiwibHZoIiwiZHZoIl19XSwibWluLWgiOlt7Im1pbi1oIjpbbmUsdCwibWluIiwibWF4IiwiZml0Iiwic3ZoIiwibHZoIiwiZHZoIl19XSwibWF4LWgiOlt7Im1heC1oIjpbbmUsdCwibWluIiwibWF4IiwiZml0Iiwic3ZoIiwibHZoIiwiZHZoIl19XSxzaXplOlt7c2l6ZTpbbmUsdCwiYXV0byIsIm1pbiIsIm1heCIsImZpdCJdfV0sImZvbnQtc2l6ZSI6W3t0ZXh0OlsiYmFzZSIsZHIsY3JdfV0sImZvbnQtc21vb3RoaW5nIjpbImFudGlhbGlhc2VkIiwic3VicGl4ZWwtYW50aWFsaWFzZWQiXSwiZm9udC1zdHlsZSI6WyJpdGFsaWMiLCJub3QtaXRhbGljIl0sImZvbnQtd2VpZ2h0Ijpbe2ZvbnQ6WyJ0aGluIiwiZXh0cmFsaWdodCIsImxpZ2h0Iiwibm9ybWFsIiwibWVkaXVtIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwiYmxhY2siLE9jXX1dLCJmb250LWZhbWlseSI6W3tmb250Oltyc119XSwiZnZuLW5vcm1hbCI6WyJub3JtYWwtbnVtcyJdLCJmdm4tb3JkaW5hbCI6WyJvcmRpbmFsIl0sImZ2bi1zbGFzaGVkLXplcm8iOlsic2xhc2hlZC16ZXJvIl0sImZ2bi1maWd1cmUiOlsibGluaW5nLW51bXMiLCJvbGRzdHlsZS1udW1zIl0sImZ2bi1zcGFjaW5nIjpbInByb3BvcnRpb25hbC1udW1zIiwidGFidWxhci1udW1zIl0sImZ2bi1mcmFjdGlvbiI6WyJkaWFnb25hbC1mcmFjdGlvbnMiLCJzdGFja2VkLWZyYWN0aW9ucyJdLHRyYWNraW5nOlt7dHJhY2tpbmc6WyJ0aWdodGVyIiwidGlnaHQiLCJub3JtYWwiLCJ3aWRlIiwid2lkZXIiLCJ3aWRlc3QiLG5lXX1dLCJsaW5lLWNsYW1wIjpbeyJsaW5lLWNsYW1wIjpbIm5vbmUiLHVvLE9jXX1dLGxlYWRpbmc6W3tsZWFkaW5nOlsibm9uZSIsInRpZ2h0Iiwic251ZyIsIm5vcm1hbCIsInJlbGF4ZWQiLCJsb29zZSIsVW4sbmVdfV0sImxpc3QtaW1hZ2UiOlt7Imxpc3QtaW1hZ2UiOlsibm9uZSIsbmVdfV0sImxpc3Qtc3R5bGUtdHlwZSI6W3tsaXN0Olsibm9uZSIsImRpc2MiLCJkZWNpbWFsIixuZV19XSwibGlzdC1zdHlsZS1wb3NpdGlvbiI6W3tsaXN0OlsiaW5zaWRlIiwib3V0c2lkZSJdfV0sInBsYWNlaG9sZGVyLWNvbG9yIjpbe3BsYWNlaG9sZGVyOltlXX1dLCJwbGFjZWhvbGRlci1vcGFjaXR5IjpbeyJwbGFjZWhvbGRlci1vcGFjaXR5IjpbcF19XSwidGV4dC1hbGlnbm1lbnQiOlt7dGV4dDpbImxlZnQiLCJjZW50ZXIiLCJyaWdodCIsImp1c3RpZnkiLCJzdGFydCIsImVuZCJdfV0sInRleHQtY29sb3IiOlt7dGV4dDpbZV19XSwidGV4dC1vcGFjaXR5IjpbeyJ0ZXh0LW9wYWNpdHkiOltwXX1dLCJ0ZXh0LWRlY29yYXRpb24iOlsidW5kZXJsaW5lIiwib3ZlcmxpbmUiLCJsaW5lLXRocm91Z2giLCJuby11bmRlcmxpbmUiXSwidGV4dC1kZWNvcmF0aW9uLXN0eWxlIjpbe2RlY29yYXRpb246Wy4uLkgoKSwid2F2eSJdfV0sInRleHQtZGVjb3JhdGlvbi10aGlja25lc3MiOlt7ZGVjb3JhdGlvbjpbImF1dG8iLCJmcm9tLWZvbnQiLFVuLGNyXX1dLCJ1bmRlcmxpbmUtb2Zmc2V0IjpbeyJ1bmRlcmxpbmUtb2Zmc2V0IjpbImF1dG8iLFVuLG5lXX1dLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiOlt7ZGVjb3JhdGlvbjpbZV19XSwidGV4dC10cmFuc2Zvcm0iOlsidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsIm5vcm1hbC1jYXNlIl0sInRleHQtb3ZlcmZsb3ciOlsidHJ1bmNhdGUiLCJ0ZXh0LWVsbGlwc2lzIiwidGV4dC1jbGlwIl0sInRleHQtd3JhcCI6W3t0ZXh0Olsid3JhcCIsIm5vd3JhcCIsImJhbGFuY2UiLCJwcmV0dHkiXX1dLGluZGVudDpbe2luZGVudDp6KCl9XSwidmVydGljYWwtYWxpZ24iOlt7YWxpZ246WyJiYXNlbGluZSIsInRvcCIsIm1pZGRsZSIsImJvdHRvbSIsInRleHQtdG9wIiwidGV4dC1ib3R0b20iLCJzdWIiLCJzdXBlciIsbmVdfV0sd2hpdGVzcGFjZTpbe3doaXRlc3BhY2U6WyJub3JtYWwiLCJub3dyYXAiLCJwcmUiLCJwcmUtbGluZSIsInByZS13cmFwIiwiYnJlYWstc3BhY2VzIl19XSxicmVhazpbe2JyZWFrOlsibm9ybWFsIiwid29yZHMiLCJhbGwiLCJrZWVwIl19XSxoeXBoZW5zOlt7aHlwaGVuczpbIm5vbmUiLCJtYW51YWwiLCJhdXRvIl19XSxjb250ZW50Olt7Y29udGVudDpbIm5vbmUiLG5lXX1dLCJiZy1hdHRhY2htZW50Ijpbe2JnOlsiZml4ZWQiLCJsb2NhbCIsInNjcm9sbCJdfV0sImJnLWNsaXAiOlt7ImJnLWNsaXAiOlsiYm9yZGVyIiwicGFkZGluZyIsImNvbnRlbnQiLCJ0ZXh0Il19XSwiYmctb3BhY2l0eSI6W3siYmctb3BhY2l0eSI6W3BdfV0sImJnLW9yaWdpbiI6W3siYmctb3JpZ2luIjpbImJvcmRlciIsInBhZGRpbmciLCJjb250ZW50Il19XSwiYmctcG9zaXRpb24iOlt7Ymc6Wy4uLlUoKSwkSV19XSwiYmctcmVwZWF0Ijpbe2JnOlsibm8tcmVwZWF0Iix7cmVwZWF0OlsiIiwieCIsInkiLCJyb3VuZCIsInNwYWNlIl19XX1dLCJiZy1zaXplIjpbe2JnOlsiYXV0byIsImNvdmVyIiwiY29udGFpbiIsVUldfV0sImJnLWltYWdlIjpbe2JnOlsibm9uZSIseyJncmFkaWVudC10byI6WyJ0IiwidHIiLCJyIiwiYnIiLCJiIiwiYmwiLCJsIiwidGwiXX0scUldfV0sImJnLWNvbG9yIjpbe2JnOltlXX1dLCJncmFkaWVudC1mcm9tLXBvcyI6W3tmcm9tOlt5XX1dLCJncmFkaWVudC12aWEtcG9zIjpbe3ZpYTpbeV19XSwiZ3JhZGllbnQtdG8tcG9zIjpbe3RvOlt5XX1dLCJncmFkaWVudC1mcm9tIjpbe2Zyb206W2ZdfV0sImdyYWRpZW50LXZpYSI6W3t2aWE6W2ZdfV0sImdyYWRpZW50LXRvIjpbe3RvOltmXX1dLHJvdW5kZWQ6W3tyb3VuZGVkOltvXX1dLCJyb3VuZGVkLXMiOlt7InJvdW5kZWQtcyI6W29dfV0sInJvdW5kZWQtZSI6W3sicm91bmRlZC1lIjpbb119XSwicm91bmRlZC10IjpbeyJyb3VuZGVkLXQiOltvXX1dLCJyb3VuZGVkLXIiOlt7InJvdW5kZWQtciI6W29dfV0sInJvdW5kZWQtYiI6W3sicm91bmRlZC1iIjpbb119XSwicm91bmRlZC1sIjpbeyJyb3VuZGVkLWwiOltvXX1dLCJyb3VuZGVkLXNzIjpbeyJyb3VuZGVkLXNzIjpbb119XSwicm91bmRlZC1zZSI6W3sicm91bmRlZC1zZSI6W29dfV0sInJvdW5kZWQtZWUiOlt7InJvdW5kZWQtZWUiOltvXX1dLCJyb3VuZGVkLWVzIjpbeyJyb3VuZGVkLWVzIjpbb119XSwicm91bmRlZC10bCI6W3sicm91bmRlZC10bCI6W29dfV0sInJvdW5kZWQtdHIiOlt7InJvdW5kZWQtdHIiOltvXX1dLCJyb3VuZGVkLWJyIjpbeyJyb3VuZGVkLWJyIjpbb119XSwicm91bmRlZC1ibCI6W3sicm91bmRlZC1ibCI6W29dfV0sImJvcmRlci13Ijpbe2JvcmRlcjpbYV19XSwiYm9yZGVyLXcteCI6W3siYm9yZGVyLXgiOlthXX1dLCJib3JkZXItdy15IjpbeyJib3JkZXIteSI6W2FdfV0sImJvcmRlci13LXMiOlt7ImJvcmRlci1zIjpbYV19XSwiYm9yZGVyLXctZSI6W3siYm9yZGVyLWUiOlthXX1dLCJib3JkZXItdy10IjpbeyJib3JkZXItdCI6W2FdfV0sImJvcmRlci13LXIiOlt7ImJvcmRlci1yIjpbYV19XSwiYm9yZGVyLXctYiI6W3siYm9yZGVyLWIiOlthXX1dLCJib3JkZXItdy1sIjpbeyJib3JkZXItbCI6W2FdfV0sImJvcmRlci1vcGFjaXR5IjpbeyJib3JkZXItb3BhY2l0eSI6W3BdfV0sImJvcmRlci1zdHlsZSI6W3tib3JkZXI6Wy4uLkgoKSwiaGlkZGVuIl19XSwiZGl2aWRlLXgiOlt7ImRpdmlkZS14IjpbYV19XSwiZGl2aWRlLXgtcmV2ZXJzZSI6WyJkaXZpZGUteC1yZXZlcnNlIl0sImRpdmlkZS15IjpbeyJkaXZpZGUteSI6W2FdfV0sImRpdmlkZS15LXJldmVyc2UiOlsiZGl2aWRlLXktcmV2ZXJzZSJdLCJkaXZpZGUtb3BhY2l0eSI6W3siZGl2aWRlLW9wYWNpdHkiOltwXX1dLCJkaXZpZGUtc3R5bGUiOlt7ZGl2aWRlOkgoKX1dLCJib3JkZXItY29sb3IiOlt7Ym9yZGVyOltpXX1dLCJib3JkZXItY29sb3IteCI6W3siYm9yZGVyLXgiOltpXX1dLCJib3JkZXItY29sb3IteSI6W3siYm9yZGVyLXkiOltpXX1dLCJib3JkZXItY29sb3ItcyI6W3siYm9yZGVyLXMiOltpXX1dLCJib3JkZXItY29sb3ItZSI6W3siYm9yZGVyLWUiOltpXX1dLCJib3JkZXItY29sb3ItdCI6W3siYm9yZGVyLXQiOltpXX1dLCJib3JkZXItY29sb3ItciI6W3siYm9yZGVyLXIiOltpXX1dLCJib3JkZXItY29sb3ItYiI6W3siYm9yZGVyLWIiOltpXX1dLCJib3JkZXItY29sb3ItbCI6W3siYm9yZGVyLWwiOltpXX1dLCJkaXZpZGUtY29sb3IiOlt7ZGl2aWRlOltpXX1dLCJvdXRsaW5lLXN0eWxlIjpbe291dGxpbmU6WyIiLC4uLkgoKV19XSwib3V0bGluZS1vZmZzZXQiOlt7Im91dGxpbmUtb2Zmc2V0IjpbVW4sbmVdfV0sIm91dGxpbmUtdyI6W3tvdXRsaW5lOltVbixjcl19XSwib3V0bGluZS1jb2xvciI6W3tvdXRsaW5lOltlXX1dLCJyaW5nLXciOlt7cmluZzokKCl9XSwicmluZy13LWluc2V0IjpbInJpbmctaW5zZXQiXSwicmluZy1jb2xvciI6W3tyaW5nOltlXX1dLCJyaW5nLW9wYWNpdHkiOlt7InJpbmctb3BhY2l0eSI6W3BdfV0sInJpbmctb2Zmc2V0LXciOlt7InJpbmctb2Zmc2V0IjpbVW4sY3JdfV0sInJpbmctb2Zmc2V0LWNvbG9yIjpbeyJyaW5nLW9mZnNldCI6W2VdfV0sc2hhZG93Olt7c2hhZG93OlsiIiwiaW5uZXIiLCJub25lIixkcixXSV19XSwic2hhZG93LWNvbG9yIjpbe3NoYWRvdzpbcnNdfV0sb3BhY2l0eTpbe29wYWNpdHk6W3BdfV0sIm1peC1ibGVuZCI6W3sibWl4LWJsZW5kIjpbLi4uRygpLCJwbHVzLWxpZ2h0ZXIiLCJwbHVzLWRhcmtlciJdfV0sImJnLWJsZW5kIjpbeyJiZy1ibGVuZCI6RygpfV0sZmlsdGVyOlt7ZmlsdGVyOlsiIiwibm9uZSJdfV0sYmx1cjpbe2JsdXI6W25dfV0sYnJpZ2h0bmVzczpbe2JyaWdodG5lc3M6W3JdfV0sY29udHJhc3Q6W3tjb250cmFzdDpbbF19XSwiZHJvcC1zaGFkb3ciOlt7ImRyb3Atc2hhZG93IjpbIiIsIm5vbmUiLGRyLG5lXX1dLGdyYXlzY2FsZTpbe2dyYXlzY2FsZTpbdV19XSwiaHVlLXJvdGF0ZSI6W3siaHVlLXJvdGF0ZSI6W2NdfV0saW52ZXJ0Olt7aW52ZXJ0OltkXX1dLHNhdHVyYXRlOlt7c2F0dXJhdGU6W3hdfV0sc2VwaWE6W3tzZXBpYTpbVF19XSwiYmFja2Ryb3AtZmlsdGVyIjpbeyJiYWNrZHJvcC1maWx0ZXIiOlsiIiwibm9uZSJdfV0sImJhY2tkcm9wLWJsdXIiOlt7ImJhY2tkcm9wLWJsdXIiOltuXX1dLCJiYWNrZHJvcC1icmlnaHRuZXNzIjpbeyJiYWNrZHJvcC1icmlnaHRuZXNzIjpbcl19XSwiYmFja2Ryb3AtY29udHJhc3QiOlt7ImJhY2tkcm9wLWNvbnRyYXN0IjpbbF19XSwiYmFja2Ryb3AtZ3JheXNjYWxlIjpbeyJiYWNrZHJvcC1ncmF5c2NhbGUiOlt1XX1dLCJiYWNrZHJvcC1odWUtcm90YXRlIjpbeyJiYWNrZHJvcC1odWUtcm90YXRlIjpbY119XSwiYmFja2Ryb3AtaW52ZXJ0IjpbeyJiYWNrZHJvcC1pbnZlcnQiOltkXX1dLCJiYWNrZHJvcC1vcGFjaXR5IjpbeyJiYWNrZHJvcC1vcGFjaXR5IjpbcF19XSwiYmFja2Ryb3Atc2F0dXJhdGUiOlt7ImJhY2tkcm9wLXNhdHVyYXRlIjpbeF19XSwiYmFja2Ryb3Atc2VwaWEiOlt7ImJhY2tkcm9wLXNlcGlhIjpbVF19XSwiYm9yZGVyLWNvbGxhcHNlIjpbe2JvcmRlcjpbImNvbGxhcHNlIiwic2VwYXJhdGUiXX1dLCJib3JkZXItc3BhY2luZyI6W3siYm9yZGVyLXNwYWNpbmciOltzXX1dLCJib3JkZXItc3BhY2luZy14IjpbeyJib3JkZXItc3BhY2luZy14Ijpbc119XSwiYm9yZGVyLXNwYWNpbmcteSI6W3siYm9yZGVyLXNwYWNpbmcteSI6W3NdfV0sInRhYmxlLWxheW91dCI6W3t0YWJsZTpbImF1dG8iLCJmaXhlZCJdfV0sY2FwdGlvbjpbe2NhcHRpb246WyJ0b3AiLCJib3R0b20iXX1dLHRyYW5zaXRpb246W3t0cmFuc2l0aW9uOlsibm9uZSIsImFsbCIsIiIsImNvbG9ycyIsIm9wYWNpdHkiLCJzaGFkb3ciLCJ0cmFuc2Zvcm0iLG5lXX1dLGR1cmF0aW9uOlt7ZHVyYXRpb246WSgpfV0sZWFzZTpbe2Vhc2U6WyJsaW5lYXIiLCJpbiIsIm91dCIsImluLW91dCIsbmVdfV0sZGVsYXk6W3tkZWxheTpZKCl9XSxhbmltYXRlOlt7YW5pbWF0ZTpbIm5vbmUiLCJzcGluIiwicGluZyIsInB1bHNlIiwiYm91bmNlIixuZV19XSx0cmFuc2Zvcm06W3t0cmFuc2Zvcm06WyIiLCJncHUiLCJub25lIl19XSxzY2FsZTpbe3NjYWxlOltrXX1dLCJzY2FsZS14IjpbeyJzY2FsZS14Ijpba119XSwic2NhbGUteSI6W3sic2NhbGUteSI6W2tdfV0scm90YXRlOlt7cm90YXRlOltucyxuZV19XSwidHJhbnNsYXRlLXgiOlt7InRyYW5zbGF0ZS14IjpbQV19XSwidHJhbnNsYXRlLXkiOlt7InRyYW5zbGF0ZS15IjpbQV19XSwic2tldy14IjpbeyJza2V3LXgiOltDXX1dLCJza2V3LXkiOlt7InNrZXcteSI6W0NdfV0sInRyYW5zZm9ybS1vcmlnaW4iOlt7b3JpZ2luOlsiY2VudGVyIiwidG9wIiwidG9wLXJpZ2h0IiwicmlnaHQiLCJib3R0b20tcmlnaHQiLCJib3R0b20iLCJib3R0b20tbGVmdCIsImxlZnQiLCJ0b3AtbGVmdCIsbmVdfV0sYWNjZW50Olt7YWNjZW50OlsiYXV0byIsZV19XSxhcHBlYXJhbmNlOlt7YXBwZWFyYW5jZTpbIm5vbmUiLCJhdXRvIl19XSxjdXJzb3I6W3tjdXJzb3I6WyJhdXRvIiwiZGVmYXVsdCIsInBvaW50ZXIiLCJ3YWl0IiwidGV4dCIsIm1vdmUiLCJoZWxwIiwibm90LWFsbG93ZWQiLCJub25lIiwiY29udGV4dC1tZW51IiwicHJvZ3Jlc3MiLCJjZWxsIiwiY3Jvc3NoYWlyIiwidmVydGljYWwtdGV4dCIsImFsaWFzIiwiY29weSIsIm5vLWRyb3AiLCJncmFiIiwiZ3JhYmJpbmciLCJhbGwtc2Nyb2xsIiwiY29sLXJlc2l6ZSIsInJvdy1yZXNpemUiLCJuLXJlc2l6ZSIsImUtcmVzaXplIiwicy1yZXNpemUiLCJ3LXJlc2l6ZSIsIm5lLXJlc2l6ZSIsIm53LXJlc2l6ZSIsInNlLXJlc2l6ZSIsInN3LXJlc2l6ZSIsImV3LXJlc2l6ZSIsIm5zLXJlc2l6ZSIsIm5lc3ctcmVzaXplIiwibndzZS1yZXNpemUiLCJ6b29tLWluIiwiem9vbS1vdXQiLG5lXX1dLCJjYXJldC1jb2xvciI6W3tjYXJldDpbZV19XSwicG9pbnRlci1ldmVudHMiOlt7InBvaW50ZXItZXZlbnRzIjpbIm5vbmUiLCJhdXRvIl19XSxyZXNpemU6W3tyZXNpemU6WyJub25lIiwieSIsIngiLCIiXX1dLCJzY3JvbGwtYmVoYXZpb3IiOlt7c2Nyb2xsOlsiYXV0byIsInNtb290aCJdfV0sInNjcm9sbC1tIjpbeyJzY3JvbGwtbSI6eigpfV0sInNjcm9sbC1teCI6W3sic2Nyb2xsLW14Ijp6KCl9XSwic2Nyb2xsLW15IjpbeyJzY3JvbGwtbXkiOnooKX1dLCJzY3JvbGwtbXMiOlt7InNjcm9sbC1tcyI6eigpfV0sInNjcm9sbC1tZSI6W3sic2Nyb2xsLW1lIjp6KCl9XSwic2Nyb2xsLW10IjpbeyJzY3JvbGwtbXQiOnooKX1dLCJzY3JvbGwtbXIiOlt7InNjcm9sbC1tciI6eigpfV0sInNjcm9sbC1tYiI6W3sic2Nyb2xsLW1iIjp6KCl9XSwic2Nyb2xsLW1sIjpbeyJzY3JvbGwtbWwiOnooKX1dLCJzY3JvbGwtcCI6W3sic2Nyb2xsLXAiOnooKX1dLCJzY3JvbGwtcHgiOlt7InNjcm9sbC1weCI6eigpfV0sInNjcm9sbC1weSI6W3sic2Nyb2xsLXB5Ijp6KCl9XSwic2Nyb2xsLXBzIjpbeyJzY3JvbGwtcHMiOnooKX1dLCJzY3JvbGwtcGUiOlt7InNjcm9sbC1wZSI6eigpfV0sInNjcm9sbC1wdCI6W3sic2Nyb2xsLXB0Ijp6KCl9XSwic2Nyb2xsLXByIjpbeyJzY3JvbGwtcHIiOnooKX1dLCJzY3JvbGwtcGIiOlt7InNjcm9sbC1wYiI6eigpfV0sInNjcm9sbC1wbCI6W3sic2Nyb2xsLXBsIjp6KCl9XSwic25hcC1hbGlnbiI6W3tzbmFwOlsic3RhcnQiLCJlbmQiLCJjZW50ZXIiLCJhbGlnbi1ub25lIl19XSwic25hcC1zdG9wIjpbe3NuYXA6WyJub3JtYWwiLCJhbHdheXMiXX1dLCJzbmFwLXR5cGUiOlt7c25hcDpbIm5vbmUiLCJ4IiwieSIsImJvdGgiXX1dLCJzbmFwLXN0cmljdG5lc3MiOlt7c25hcDpbIm1hbmRhdG9yeSIsInByb3hpbWl0eSJdfV0sdG91Y2g6W3t0b3VjaDpbImF1dG8iLCJub25lIiwibWFuaXB1bGF0aW9uIl19XSwidG91Y2gteCI6W3sidG91Y2gtcGFuIjpbIngiLCJsZWZ0IiwicmlnaHQiXX1dLCJ0b3VjaC15IjpbeyJ0b3VjaC1wYW4iOlsieSIsInVwIiwiZG93biJdfV0sInRvdWNoLXB6IjpbInRvdWNoLXBpbmNoLXpvb20iXSxzZWxlY3Q6W3tzZWxlY3Q6WyJub25lIiwidGV4dCIsImFsbCIsImF1dG8iXX1dLCJ3aWxsLWNoYW5nZSI6W3sid2lsbC1jaGFuZ2UiOlsiYXV0byIsInNjcm9sbCIsImNvbnRlbnRzIiwidHJhbnNmb3JtIixuZV19XSxmaWxsOlt7ZmlsbDpbZSwibm9uZSJdfV0sInN0cm9rZS13Ijpbe3N0cm9rZTpbVW4sY3IsT2NdfV0sc3Ryb2tlOlt7c3Ryb2tlOltlLCJub25lIl19XSxzcjpbInNyLW9ubHkiLCJub3Qtc3Itb25seSJdLCJmb3JjZWQtY29sb3ItYWRqdXN0IjpbeyJmb3JjZWQtY29sb3ItYWRqdXN0IjpbImF1dG8iLCJub25lIl19XX0sY29uZmxpY3RpbmdDbGFzc0dyb3Vwczp7b3ZlcmZsb3c6WyJvdmVyZmxvdy14Iiwib3ZlcmZsb3cteSJdLG92ZXJzY3JvbGw6WyJvdmVyc2Nyb2xsLXgiLCJvdmVyc2Nyb2xsLXkiXSxpbnNldDpbImluc2V0LXgiLCJpbnNldC15Iiwic3RhcnQiLCJlbmQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSwiaW5zZXQteCI6WyJyaWdodCIsImxlZnQiXSwiaW5zZXQteSI6WyJ0b3AiLCJib3R0b20iXSxmbGV4OlsiYmFzaXMiLCJncm93Iiwic2hyaW5rIl0sZ2FwOlsiZ2FwLXgiLCJnYXAteSJdLHA6WyJweCIsInB5IiwicHMiLCJwZSIsInB0IiwicHIiLCJwYiIsInBsIl0scHg6WyJwciIsInBsIl0scHk6WyJwdCIsInBiIl0sbTpbIm14IiwibXkiLCJtcyIsIm1lIiwibXQiLCJtciIsIm1iIiwibWwiXSxteDpbIm1yIiwibWwiXSxteTpbIm10IiwibWIiXSxzaXplOlsidyIsImgiXSwiZm9udC1zaXplIjpbImxlYWRpbmciXSwiZnZuLW5vcm1hbCI6WyJmdm4tb3JkaW5hbCIsImZ2bi1zbGFzaGVkLXplcm8iLCJmdm4tZmlndXJlIiwiZnZuLXNwYWNpbmciLCJmdm4tZnJhY3Rpb24iXSwiZnZuLW9yZGluYWwiOlsiZnZuLW5vcm1hbCJdLCJmdm4tc2xhc2hlZC16ZXJvIjpbImZ2bi1ub3JtYWwiXSwiZnZuLWZpZ3VyZSI6WyJmdm4tbm9ybWFsIl0sImZ2bi1zcGFjaW5nIjpbImZ2bi1ub3JtYWwiXSwiZnZuLWZyYWN0aW9uIjpbImZ2bi1ub3JtYWwiXSwibGluZS1jbGFtcCI6WyJkaXNwbGF5Iiwib3ZlcmZsb3ciXSxyb3VuZGVkOlsicm91bmRlZC1zIiwicm91bmRlZC1lIiwicm91bmRlZC10Iiwicm91bmRlZC1yIiwicm91bmRlZC1iIiwicm91bmRlZC1sIiwicm91bmRlZC1zcyIsInJvdW5kZWQtc2UiLCJyb3VuZGVkLWVlIiwicm91bmRlZC1lcyIsInJvdW5kZWQtdGwiLCJyb3VuZGVkLXRyIiwicm91bmRlZC1iciIsInJvdW5kZWQtYmwiXSwicm91bmRlZC1zIjpbInJvdW5kZWQtc3MiLCJyb3VuZGVkLWVzIl0sInJvdW5kZWQtZSI6WyJyb3VuZGVkLXNlIiwicm91bmRlZC1lZSJdLCJyb3VuZGVkLXQiOlsicm91bmRlZC10bCIsInJvdW5kZWQtdHIiXSwicm91bmRlZC1yIjpbInJvdW5kZWQtdHIiLCJyb3VuZGVkLWJyIl0sInJvdW5kZWQtYiI6WyJyb3VuZGVkLWJyIiwicm91bmRlZC1ibCJdLCJyb3VuZGVkLWwiOlsicm91bmRlZC10bCIsInJvdW5kZWQtYmwiXSwiYm9yZGVyLXNwYWNpbmciOlsiYm9yZGVyLXNwYWNpbmcteCIsImJvcmRlci1zcGFjaW5nLXkiXSwiYm9yZGVyLXciOlsiYm9yZGVyLXctcyIsImJvcmRlci13LWUiLCJib3JkZXItdy10IiwiYm9yZGVyLXctciIsImJvcmRlci13LWIiLCJib3JkZXItdy1sIl0sImJvcmRlci13LXgiOlsiYm9yZGVyLXctciIsImJvcmRlci13LWwiXSwiYm9yZGVyLXcteSI6WyJib3JkZXItdy10IiwiYm9yZGVyLXctYiJdLCJib3JkZXItY29sb3IiOlsiYm9yZGVyLWNvbG9yLXMiLCJib3JkZXItY29sb3ItZSIsImJvcmRlci1jb2xvci10IiwiYm9yZGVyLWNvbG9yLXIiLCJib3JkZXItY29sb3ItYiIsImJvcmRlci1jb2xvci1sIl0sImJvcmRlci1jb2xvci14IjpbImJvcmRlci1jb2xvci1yIiwiYm9yZGVyLWNvbG9yLWwiXSwiYm9yZGVyLWNvbG9yLXkiOlsiYm9yZGVyLWNvbG9yLXQiLCJib3JkZXItY29sb3ItYiJdLCJzY3JvbGwtbSI6WyJzY3JvbGwtbXgiLCJzY3JvbGwtbXkiLCJzY3JvbGwtbXMiLCJzY3JvbGwtbWUiLCJzY3JvbGwtbXQiLCJzY3JvbGwtbXIiLCJzY3JvbGwtbWIiLCJzY3JvbGwtbWwiXSwic2Nyb2xsLW14IjpbInNjcm9sbC1tciIsInNjcm9sbC1tbCJdLCJzY3JvbGwtbXkiOlsic2Nyb2xsLW10Iiwic2Nyb2xsLW1iIl0sInNjcm9sbC1wIjpbInNjcm9sbC1weCIsInNjcm9sbC1weSIsInNjcm9sbC1wcyIsInNjcm9sbC1wZSIsInNjcm9sbC1wdCIsInNjcm9sbC1wciIsInNjcm9sbC1wYiIsInNjcm9sbC1wbCJdLCJzY3JvbGwtcHgiOlsic2Nyb2xsLXByIiwic2Nyb2xsLXBsIl0sInNjcm9sbC1weSI6WyJzY3JvbGwtcHQiLCJzY3JvbGwtcGIiXSx0b3VjaDpbInRvdWNoLXgiLCJ0b3VjaC15IiwidG91Y2gtcHoiXSwidG91Y2gteCI6WyJ0b3VjaCJdLCJ0b3VjaC15IjpbInRvdWNoIl0sInRvdWNoLXB6IjpbInRvdWNoIl19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczp7ImZvbnQtc2l6ZSI6WyJsZWFkaW5nIl19fX0sWEk9ekkoUUkpO2Z1bmN0aW9uIE9uKC4uLmUpe3JldHVybiBYSShCdyhlKSl9Y29uc3QgSkk9WTIsWXc9Yi5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PmcuanN4KER3LHtyZWY6bixjbGFzc05hbWU6T24oImZpeGVkIHRvcC0wIHotWzEwMF0gZmxleCBtYXgtaC1zY3JlZW4gdy1mdWxsIGZsZXgtY29sLXJldmVyc2UgcC00IHNtOmJvdHRvbS0wIHNtOnJpZ2h0LTAgc206dG9wLWF1dG8gc206ZmxleC1jb2wgbWQ6bWF4LXctWzQyMHB4XSIsZSksLi4udH0pKTtZdy5kaXNwbGF5TmFtZT1Edy5kaXNwbGF5TmFtZTtjb25zdCBaST1RMigiZ3JvdXAgcG9pbnRlci1ldmVudHMtYXV0byByZWxhdGl2ZSBmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHNwYWNlLXgtNCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgcC02IHByLTggc2hhZG93LWxnIHRyYW5zaXRpb24tYWxsIGRhdGEtW3N3aXBlPWNhbmNlbF06dHJhbnNsYXRlLXgtMCBkYXRhLVtzd2lwZT1lbmRdOnRyYW5zbGF0ZS14LVt2YXIoLS1yYWRpeC10b2FzdC1zd2lwZS1lbmQteCldIGRhdGEtW3N3aXBlPW1vdmVdOnRyYW5zbGF0ZS14LVt2YXIoLS1yYWRpeC10b2FzdC1zd2lwZS1tb3ZlLXgpXSBkYXRhLVtzd2lwZT1tb3ZlXTp0cmFuc2l0aW9uLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N3aXBlPWVuZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC04MCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1yaWdodC1mdWxsIGRhdGEtW3N0YXRlPW9wZW5dOnNsaWRlLWluLWZyb20tdG9wLWZ1bGwgZGF0YS1bc3RhdGU9b3Blbl06c206c2xpZGUtaW4tZnJvbS1ib3R0b20tZnVsbCIse3ZhcmlhbnRzOnt2YXJpYW50OntkZWZhdWx0OiJib3JkZXIgYmctYmFja2dyb3VuZCB0ZXh0LWZvcmVncm91bmQiLGRlc3RydWN0aXZlOiJkZXN0cnVjdGl2ZSBncm91cCBib3JkZXItZGVzdHJ1Y3RpdmUgYmctZGVzdHJ1Y3RpdmUgdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIn19LGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDoiZGVmYXVsdCJ9fSksUXc9Yi5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsdmFyaWFudDp0LC4uLm59LHIpPT5nLmpzeChNdyx7cmVmOnIsY2xhc3NOYW1lOk9uKFpJKHt2YXJpYW50OnR9KSxlKSwuLi5ufSkpO1F3LmRpc3BsYXlOYW1lPU13LmRpc3BsYXlOYW1lO2NvbnN0IGVOPWIuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLC4uLnR9LG4pPT5nLmpzeChGdyx7cmVmOm4sY2xhc3NOYW1lOk9uKCJpbmxpbmUtZmxleCBoLTggc2hyaW5rLTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJnLXRyYW5zcGFyZW50IHB4LTMgdGV4dC1zbSBmb250LW1lZGl1bSByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOmJvcmRlci1tdXRlZC80MCBob3ZlcjpiZy1zZWNvbmRhcnkgZ3JvdXAtWy5kZXN0cnVjdGl2ZV06aG92ZXI6Ym9yZGVyLWRlc3RydWN0aXZlLzMwIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOmhvdmVyOmJnLWRlc3RydWN0aXZlIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOmhvdmVyOnRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOmZvY3VzOnJpbmctZGVzdHJ1Y3RpdmUgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIixlKSwuLi50fSkpO2VOLmRpc3BsYXlOYW1lPUZ3LmRpc3BsYXlOYW1lO2NvbnN0IFh3PWIuZm9yd2FyZFJlZigoe2NsYXNzTmFtZTplLC4uLnR9LG4pPT5nLmpzeChfdyx7cmVmOm4sY2xhc3NOYW1lOk9uKCJhYnNvbHV0ZSByaWdodC0yIHRvcC0yIHJvdW5kZWQtbWQgcC0xIHRleHQtZm9yZWdyb3VuZC81MCBvcGFjaXR5LTAgdHJhbnNpdGlvbi1vcGFjaXR5IGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIGdyb3VwLVsuZGVzdHJ1Y3RpdmVdOnRleHQtcmVkLTMwMCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy5kZXN0cnVjdGl2ZV06aG92ZXI6dGV4dC1yZWQtNTAgZm9jdXM6b3BhY2l0eS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBncm91cC1bLmRlc3RydWN0aXZlXTpmb2N1czpyaW5nLXJlZC00MDAgZ3JvdXAtWy5kZXN0cnVjdGl2ZV06Zm9jdXM6cmluZy1vZmZzZXQtcmVkLTYwMCIsZSksInRvYXN0LWNsb3NlIjoiIiwuLi50LGNoaWxkcmVuOmcuanN4KGNwLHtjbGFzc05hbWU6ImgtNCB3LTQifSl9KSk7WHcuZGlzcGxheU5hbWU9X3cuZGlzcGxheU5hbWU7Y29uc3QgSnc9Yi5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PmcuanN4KEx3LHtyZWY6bixjbGFzc05hbWU6T24oInRleHQtc20gZm9udC1zZW1pYm9sZCIsZSksLi4udH0pKTtKdy5kaXNwbGF5TmFtZT1Mdy5kaXNwbGF5TmFtZTtjb25zdCBadz1iLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSwuLi50fSxuKT0+Zy5qc3goT3cse3JlZjpuLGNsYXNzTmFtZTpPbigidGV4dC1zbSBvcGFjaXR5LTkwIixlKSwuLi50fSkpO1p3LmRpc3BsYXlOYW1lPU93LmRpc3BsYXlOYW1lO2Z1bmN0aW9uIHROKCl7Y29uc3R7dG9hc3RzOmV9PW8yKCk7cmV0dXJuIGcuanN4cyhKSSx7Y2hpbGRyZW46W2UubWFwKGZ1bmN0aW9uKHtpZDp0LHRpdGxlOm4sZGVzY3JpcHRpb246cixhY3Rpb246aSwuLi5vfSl7cmV0dXJuIGcuanN4cyhRdyx7Li4ubyxjaGlsZHJlbjpbZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTEiLGNoaWxkcmVuOltuJiZnLmpzeChKdyx7Y2hpbGRyZW46bn0pLHImJmcuanN4KFp3LHtjaGlsZHJlbjpyfSldfSksaSxnLmpzeChYdyx7fSldfSx0KX0pLGcuanN4KFl3LHt9KV19KX12YXIgbk49Y2hbIiB1c2VJZCAiLnRyaW0oKS50b1N0cmluZygpXXx8KCgpPT57fSksck49MDtmdW5jdGlvbiBlYihlKXtjb25zdFt0LG5dPWIudXNlU3RhdGUobk4oKSk7cmV0dXJuIFJuKCgpPT57bihyPT5yPz9TdHJpbmcock4rKykpfSxbZV0pLHQ\/YHJhZGl4LSR7dH1gOiIifWNvbnN0IGlOPVsidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0sQnI9TWF0aC5taW4sSXQ9TWF0aC5tYXgsWmw9TWF0aC5yb3VuZCxXYT1NYXRoLmZsb29yLGpuPWU9Pih7eDplLHk6ZX0pLG9OPXtsZWZ0OiJyaWdodCIscmlnaHQ6ImxlZnQiLGJvdHRvbToidG9wIix0b3A6ImJvdHRvbSJ9LHNOPXtzdGFydDoiZW5kIixlbmQ6InN0YXJ0In07ZnVuY3Rpb24gd2YoZSx0LG4pe3JldHVybiBJdChlLEJyKHQsbikpfWZ1bmN0aW9uIGVyKGUsdCl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iP2UodCk6ZX1mdW5jdGlvbiB0cihlKXtyZXR1cm4gZS5zcGxpdCgiLSIpWzBdfWZ1bmN0aW9uIFZvKGUpe3JldHVybiBlLnNwbGl0KCItIilbMV19ZnVuY3Rpb24gZnAoZSl7cmV0dXJuIGU9PT0ieCI\/InkiOiJ4In1mdW5jdGlvbiBocChlKXtyZXR1cm4gZT09PSJ5Ij8iaGVpZ2h0Ijoid2lkdGgifWNvbnN0IGFOPW5ldyBTZXQoWyJ0b3AiLCJib3R0b20iXSk7ZnVuY3Rpb24gQW4oZSl7cmV0dXJuIGFOLmhhcyh0cihlKSk\/InkiOiJ4In1mdW5jdGlvbiBwcChlKXtyZXR1cm4gZnAoQW4oZSkpfWZ1bmN0aW9uIGxOKGUsdCxuKXtuPT09dm9pZCAwJiYobj0hMSk7Y29uc3Qgcj1WbyhlKSxpPXBwKGUpLG89aHAoaSk7bGV0IHM9aT09PSJ4Ij9yPT09KG4\/ImVuZCI6InN0YXJ0Iik\/InJpZ2h0IjoibGVmdCI6cj09PSJzdGFydCI\/ImJvdHRvbSI6InRvcCI7cmV0dXJuIHQucmVmZXJlbmNlW29dPnQuZmxvYXRpbmdbb10mJihzPWV1KHMpKSxbcyxldShzKV19ZnVuY3Rpb24gdU4oZSl7Y29uc3QgdD1ldShlKTtyZXR1cm5bYmYoZSksdCxiZih0KV19ZnVuY3Rpb24gYmYoZSl7cmV0dXJuIGUucmVwbGFjZSgvc3RhcnR8ZW5kL2csdD0+c05bdF0pfWNvbnN0IGl5PVsibGVmdCIsInJpZ2h0Il0sb3k9WyJyaWdodCIsImxlZnQiXSxjTj1bInRvcCIsImJvdHRvbSJdLGROPVsiYm90dG9tIiwidG9wIl07ZnVuY3Rpb24gZk4oZSx0LG4pe3N3aXRjaChlKXtjYXNlInRvcCI6Y2FzZSJib3R0b20iOnJldHVybiBuP3Q\/b3k6aXk6dD9peTpveTtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnJldHVybiB0P2NOOmROO2RlZmF1bHQ6cmV0dXJuW119fWZ1bmN0aW9uIGhOKGUsdCxuLHIpe2NvbnN0IGk9Vm8oZSk7bGV0IG89Zk4odHIoZSksbj09PSJzdGFydCIscik7cmV0dXJuIGkmJihvPW8ubWFwKHM9PnMrIi0iK2kpLHQmJihvPW8uY29uY2F0KG8ubWFwKGJmKSkpKSxvfWZ1bmN0aW9uIGV1KGUpe3JldHVybiBlLnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLHQ9Pm9OW3RdKX1mdW5jdGlvbiBwTihlKXtyZXR1cm57dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjAsLi4uZX19ZnVuY3Rpb24gdGIoZSl7cmV0dXJuIHR5cGVvZiBlIT0ibnVtYmVyIj9wTihlKTp7dG9wOmUscmlnaHQ6ZSxib3R0b206ZSxsZWZ0OmV9fWZ1bmN0aW9uIHR1KGUpe2NvbnN0e3g6dCx5Om4sd2lkdGg6cixoZWlnaHQ6aX09ZTtyZXR1cm57d2lkdGg6cixoZWlnaHQ6aSx0b3A6bixsZWZ0OnQscmlnaHQ6dCtyLGJvdHRvbTpuK2kseDp0LHk6bn19ZnVuY3Rpb24gc3koZSx0LG4pe2xldHtyZWZlcmVuY2U6cixmbG9hdGluZzppfT1lO2NvbnN0IG89QW4odCkscz1wcCh0KSxhPWhwKHMpLGw9dHIodCksdT1vPT09InkiLGM9ci54K3Iud2lkdGgvMi1pLndpZHRoLzIsZD1yLnkrci5oZWlnaHQvMi1pLmhlaWdodC8yLGg9clthXS8yLWlbYV0vMjtsZXQgZjtzd2l0Y2gobCl7Y2FzZSJ0b3AiOmY9e3g6Yyx5OnIueS1pLmhlaWdodH07YnJlYWs7Y2FzZSJib3R0b20iOmY9e3g6Yyx5OnIueStyLmhlaWdodH07YnJlYWs7Y2FzZSJyaWdodCI6Zj17eDpyLngrci53aWR0aCx5OmR9O2JyZWFrO2Nhc2UibGVmdCI6Zj17eDpyLngtaS53aWR0aCx5OmR9O2JyZWFrO2RlZmF1bHQ6Zj17eDpyLngseTpyLnl9fXN3aXRjaChWbyh0KSl7Y2FzZSJzdGFydCI6ZltzXS09aCoobiYmdT8tMToxKTticmVhaztjYXNlImVuZCI6ZltzXSs9aCoobiYmdT8tMToxKTticmVha31yZXR1cm4gZn1jb25zdCBtTj1hc3luYyhlLHQsbik9Pntjb25zdHtwbGFjZW1lbnQ6cj0iYm90dG9tIixzdHJhdGVneTppPSJhYnNvbHV0ZSIsbWlkZGxld2FyZTpvPVtdLHBsYXRmb3JtOnN9PW4sYT1vLmZpbHRlcihCb29sZWFuKSxsPWF3YWl0KHMuaXNSVEw9PW51bGw\/dm9pZCAwOnMuaXNSVEwodCkpO2xldCB1PWF3YWl0IHMuZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Oml9KSx7eDpjLHk6ZH09c3kodSxyLGwpLGg9cixmPXt9LHk9MDtmb3IobGV0IG09MDttPGEubGVuZ3RoO20rKyl7Y29uc3R7bmFtZTp3LGZuOnB9PWFbbV0se3g6dix5OngsZGF0YTprLHJlc2V0OlR9PWF3YWl0IHAoe3g6Yyx5OmQsaW5pdGlhbFBsYWNlbWVudDpyLHBsYWNlbWVudDpoLHN0cmF0ZWd5OmksbWlkZGxld2FyZURhdGE6ZixyZWN0czp1LHBsYXRmb3JtOnMsZWxlbWVudHM6e3JlZmVyZW5jZTplLGZsb2F0aW5nOnR9fSk7Yz12Pz9jLGQ9eD8\/ZCxmPXsuLi5mLFt3XTp7Li4uZlt3XSwuLi5rfX0sVCYmeTw9NTAmJih5KyssdHlwZW9mIFQ9PSJvYmplY3QiJiYoVC5wbGFjZW1lbnQmJihoPVQucGxhY2VtZW50KSxULnJlY3RzJiYodT1ULnJlY3RzPT09ITA\/YXdhaXQgcy5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6aX0pOlQucmVjdHMpLHt4OmMseTpkfT1zeSh1LGgsbCkpLG09LTEpfXJldHVybnt4OmMseTpkLHBsYWNlbWVudDpoLHN0cmF0ZWd5OmksbWlkZGxld2FyZURhdGE6Zn19O2FzeW5jIGZ1bmN0aW9uIFhzKGUsdCl7dmFyIG47dD09PXZvaWQgMCYmKHQ9e30pO2NvbnN0e3g6cix5OmkscGxhdGZvcm06byxyZWN0czpzLGVsZW1lbnRzOmEsc3RyYXRlZ3k6bH09ZSx7Ym91bmRhcnk6dT0iY2xpcHBpbmdBbmNlc3RvcnMiLHJvb3RCb3VuZGFyeTpjPSJ2aWV3cG9ydCIsZWxlbWVudENvbnRleHQ6ZD0iZmxvYXRpbmciLGFsdEJvdW5kYXJ5Omg9ITEscGFkZGluZzpmPTB9PWVyKHQsZSkseT10YihmKSx3PWFbaD9kPT09ImZsb2F0aW5nIj8icmVmZXJlbmNlIjoiZmxvYXRpbmciOmRdLHA9dHUoYXdhaXQgby5nZXRDbGlwcGluZ1JlY3Qoe2VsZW1lbnQ6KG49YXdhaXQoby5pc0VsZW1lbnQ9PW51bGw\/dm9pZCAwOm8uaXNFbGVtZW50KHcpKSk9PW51bGx8fG4\/dzp3LmNvbnRleHRFbGVtZW50fHxhd2FpdChvLmdldERvY3VtZW50RWxlbWVudD09bnVsbD92b2lkIDA6by5nZXREb2N1bWVudEVsZW1lbnQoYS5mbG9hdGluZykpLGJvdW5kYXJ5OnUscm9vdEJvdW5kYXJ5OmMsc3RyYXRlZ3k6bH0pKSx2PWQ9PT0iZmxvYXRpbmciP3t4OnIseTppLHdpZHRoOnMuZmxvYXRpbmcud2lkdGgsaGVpZ2h0OnMuZmxvYXRpbmcuaGVpZ2h0fTpzLnJlZmVyZW5jZSx4PWF3YWl0KG8uZ2V0T2Zmc2V0UGFyZW50PT1udWxsP3ZvaWQgMDpvLmdldE9mZnNldFBhcmVudChhLmZsb2F0aW5nKSksaz1hd2FpdChvLmlzRWxlbWVudD09bnVsbD92b2lkIDA6by5pc0VsZW1lbnQoeCkpP2F3YWl0KG8uZ2V0U2NhbGU9PW51bGw\/dm9pZCAwOm8uZ2V0U2NhbGUoeCkpfHx7eDoxLHk6MX06e3g6MSx5OjF9LFQ9dHUoby5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdD9hd2FpdCBvLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtlbGVtZW50czphLHJlY3Q6dixvZmZzZXRQYXJlbnQ6eCxzdHJhdGVneTpsfSk6dik7cmV0dXJue3RvcDoocC50b3AtVC50b3AreS50b3ApL2sueSxib3R0b206KFQuYm90dG9tLXAuYm90dG9tK3kuYm90dG9tKS9rLnksbGVmdDoocC5sZWZ0LVQubGVmdCt5LmxlZnQpL2sueCxyaWdodDooVC5yaWdodC1wLnJpZ2h0K3kucmlnaHQpL2sueH19Y29uc3QgZ049ZT0+KHtuYW1lOiJhcnJvdyIsb3B0aW9uczplLGFzeW5jIGZuKHQpe2NvbnN0e3g6bix5OnIscGxhY2VtZW50OmkscmVjdHM6byxwbGF0Zm9ybTpzLGVsZW1lbnRzOmEsbWlkZGxld2FyZURhdGE6bH09dCx7ZWxlbWVudDp1LHBhZGRpbmc6Yz0wfT1lcihlLHQpfHx7fTtpZih1PT1udWxsKXJldHVybnt9O2NvbnN0IGQ9dGIoYyksaD17eDpuLHk6cn0sZj1wcChpKSx5PWhwKGYpLG09YXdhaXQgcy5nZXREaW1lbnNpb25zKHUpLHc9Zj09PSJ5IixwPXc\/InRvcCI6ImxlZnQiLHY9dz8iYm90dG9tIjoicmlnaHQiLHg9dz8iY2xpZW50SGVpZ2h0IjoiY2xpZW50V2lkdGgiLGs9by5yZWZlcmVuY2VbeV0rby5yZWZlcmVuY2VbZl0taFtmXS1vLmZsb2F0aW5nW3ldLFQ9aFtmXS1vLnJlZmVyZW5jZVtmXSxDPWF3YWl0KHMuZ2V0T2Zmc2V0UGFyZW50PT1udWxsP3ZvaWQgMDpzLmdldE9mZnNldFBhcmVudCh1KSk7bGV0IFA9Qz9DW3hdOjA7KCFQfHwhYXdhaXQocy5pc0VsZW1lbnQ9PW51bGw\/dm9pZCAwOnMuaXNFbGVtZW50KEMpKSkmJihQPWEuZmxvYXRpbmdbeF18fG8uZmxvYXRpbmdbeV0pO2NvbnN0IEE9ay8yLVQvMixqPVAvMi1tW3ldLzItMSxJPUJyKGRbcF0saiksTT1CcihkW3ZdLGopLHo9SSwkPVAtbVt5XS1NLE89UC8yLW1beV0vMitBLFU9d2YoeixPLCQpLEg9IWwuYXJyb3cmJlZvKGkpIT1udWxsJiZPIT09VSYmby5yZWZlcmVuY2VbeV0vMi0oTzx6P0k6TSktbVt5XS8yPDAsRz1IP088ej9PLXo6Ty0kOjA7cmV0dXJue1tmXTpoW2ZdK0csZGF0YTp7W2ZdOlUsY2VudGVyT2Zmc2V0Ok8tVS1HLC4uLkgmJnthbGlnbm1lbnRPZmZzZXQ6R319LHJlc2V0Okh9fX0pLHlOPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6ImZsaXAiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXt2YXIgbixyO2NvbnN0e3BsYWNlbWVudDppLG1pZGRsZXdhcmVEYXRhOm8scmVjdHM6cyxpbml0aWFsUGxhY2VtZW50OmEscGxhdGZvcm06bCxlbGVtZW50czp1fT10LHttYWluQXhpczpjPSEwLGNyb3NzQXhpczpkPSEwLGZhbGxiYWNrUGxhY2VtZW50czpoLGZhbGxiYWNrU3RyYXRlZ3k6Zj0iYmVzdEZpdCIsZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbjp5PSJub25lIixmbGlwQWxpZ25tZW50Om09ITAsLi4ud309ZXIoZSx0KTtpZigobj1vLmFycm93KSE9bnVsbCYmbi5hbGlnbm1lbnRPZmZzZXQpcmV0dXJue307Y29uc3QgcD10cihpKSx2PUFuKGEpLHg9dHIoYSk9PT1hLGs9YXdhaXQobC5pc1JUTD09bnVsbD92b2lkIDA6bC5pc1JUTCh1LmZsb2F0aW5nKSksVD1ofHwoeHx8IW0\/W2V1KGEpXTp1TihhKSksQz15IT09Im5vbmUiOyFoJiZDJiZULnB1c2goLi4uaE4oYSxtLHksaykpO2NvbnN0IFA9W2EsLi4uVF0sQT1hd2FpdCBYcyh0LHcpLGo9W107bGV0IEk9KChyPW8uZmxpcCk9PW51bGw\/dm9pZCAwOnIub3ZlcmZsb3dzKXx8W107aWYoYyYmai5wdXNoKEFbcF0pLGQpe2NvbnN0IE89bE4oaSxzLGspO2oucHVzaChBW09bMF1dLEFbT1sxXV0pfWlmKEk9Wy4uLkkse3BsYWNlbWVudDppLG92ZXJmbG93czpqfV0sIWouZXZlcnkoTz0+Tzw9MCkpe3ZhciBNLHo7Y29uc3QgTz0oKChNPW8uZmxpcCk9PW51bGw\/dm9pZCAwOk0uaW5kZXgpfHwwKSsxLFU9UFtPXTtpZihVJiYoIShkPT09ImFsaWdubWVudCI\/diE9PUFuKFUpOiExKXx8SS5ldmVyeShOPT5OLm92ZXJmbG93c1swXT4wJiZBbihOLnBsYWNlbWVudCk9PT12KSkpcmV0dXJue2RhdGE6e2luZGV4Ok8sb3ZlcmZsb3dzOkl9LHJlc2V0OntwbGFjZW1lbnQ6VX19O2xldCBIPSh6PUkuZmlsdGVyKEc9Pkcub3ZlcmZsb3dzWzBdPD0wKS5zb3J0KChHLE4pPT5HLm92ZXJmbG93c1sxXS1OLm92ZXJmbG93c1sxXSlbMF0pPT1udWxsP3ZvaWQgMDp6LnBsYWNlbWVudDtpZighSClzd2l0Y2goZil7Y2FzZSJiZXN0Rml0Ijp7dmFyICQ7Y29uc3QgRz0oJD1JLmZpbHRlcihOPT57aWYoQyl7Y29uc3QgUj1BbihOLnBsYWNlbWVudCk7cmV0dXJuIFI9PT12fHxSPT09InkifXJldHVybiEwfSkubWFwKE49PltOLnBsYWNlbWVudCxOLm92ZXJmbG93cy5maWx0ZXIoUj0+Uj4wKS5yZWR1Y2UoKFIsUyk9PlIrUywwKV0pLnNvcnQoKE4sUik9Pk5bMV0tUlsxXSlbMF0pPT1udWxsP3ZvaWQgMDokWzBdO0cmJihIPUcpO2JyZWFrfWNhc2UiaW5pdGlhbFBsYWNlbWVudCI6SD1hO2JyZWFrfWlmKGkhPT1IKXJldHVybntyZXNldDp7cGxhY2VtZW50Okh9fX1yZXR1cm57fX19fTtmdW5jdGlvbiBheShlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiBseShlKXtyZXR1cm4gaU4uc29tZSh0PT5lW3RdPj0wKX1jb25zdCB2Tj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOiJoaWRlIixvcHRpb25zOmUsYXN5bmMgZm4odCl7Y29uc3R7cmVjdHM6bn09dCx7c3RyYXRlZ3k6cj0icmVmZXJlbmNlSGlkZGVuIiwuLi5pfT1lcihlLHQpO3N3aXRjaChyKXtjYXNlInJlZmVyZW5jZUhpZGRlbiI6e2NvbnN0IG89YXdhaXQgWHModCx7Li4uaSxlbGVtZW50Q29udGV4dDoicmVmZXJlbmNlIn0pLHM9YXkobyxuLnJlZmVyZW5jZSk7cmV0dXJue2RhdGE6e3JlZmVyZW5jZUhpZGRlbk9mZnNldHM6cyxyZWZlcmVuY2VIaWRkZW46bHkocyl9fX1jYXNlImVzY2FwZWQiOntjb25zdCBvPWF3YWl0IFhzKHQsey4uLmksYWx0Qm91bmRhcnk6ITB9KSxzPWF5KG8sbi5mbG9hdGluZyk7cmV0dXJue2RhdGE6e2VzY2FwZWRPZmZzZXRzOnMsZXNjYXBlZDpseShzKX19fWRlZmF1bHQ6cmV0dXJue319fX19LG5iPW5ldyBTZXQoWyJsZWZ0IiwidG9wIl0pO2FzeW5jIGZ1bmN0aW9uIHhOKGUsdCl7Y29uc3R7cGxhY2VtZW50Om4scGxhdGZvcm06cixlbGVtZW50czppfT1lLG89YXdhaXQoci5pc1JUTD09bnVsbD92b2lkIDA6ci5pc1JUTChpLmZsb2F0aW5nKSkscz10cihuKSxhPVZvKG4pLGw9QW4obik9PT0ieSIsdT1uYi5oYXMocyk\/LTE6MSxjPW8mJmw\/LTE6MSxkPWVyKHQsZSk7bGV0e21haW5BeGlzOmgsY3Jvc3NBeGlzOmYsYWxpZ25tZW50QXhpczp5fT10eXBlb2YgZD09Im51bWJlciI\/e21haW5BeGlzOmQsY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6ZC5tYWluQXhpc3x8MCxjcm9zc0F4aXM6ZC5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczpkLmFsaWdubWVudEF4aXN9O3JldHVybiBhJiZ0eXBlb2YgeT09Im51bWJlciImJihmPWE9PT0iZW5kIj95Ki0xOnkpLGw\/e3g6ZipjLHk6aCp1fTp7eDpoKnUseTpmKmN9fWNvbnN0IHdOPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0wKSx7bmFtZToib2Zmc2V0IixvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG4scjtjb25zdHt4OmkseTpvLHBsYWNlbWVudDpzLG1pZGRsZXdhcmVEYXRhOmF9PXQsbD1hd2FpdCB4Tih0LGUpO3JldHVybiBzPT09KChuPWEub2Zmc2V0KT09bnVsbD92b2lkIDA6bi5wbGFjZW1lbnQpJiYocj1hLmFycm93KSE9bnVsbCYmci5hbGlnbm1lbnRPZmZzZXQ\/e306e3g6aStsLngseTpvK2wueSxkYXRhOnsuLi5sLHBsYWNlbWVudDpzfX19fX0sYk49ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZToic2hpZnQiLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtjb25zdHt4Om4seTpyLHBsYWNlbWVudDppfT10LHttYWluQXhpczpvPSEwLGNyb3NzQXhpczpzPSExLGxpbWl0ZXI6YT17Zm46dz0+e2xldHt4OnAseTp2fT13O3JldHVybnt4OnAseTp2fX19LC4uLmx9PWVyKGUsdCksdT17eDpuLHk6cn0sYz1hd2FpdCBYcyh0LGwpLGQ9QW4odHIoaSkpLGg9ZnAoZCk7bGV0IGY9dVtoXSx5PXVbZF07aWYobyl7Y29uc3Qgdz1oPT09InkiPyJ0b3AiOiJsZWZ0IixwPWg9PT0ieSI\/ImJvdHRvbSI6InJpZ2h0Iix2PWYrY1t3XSx4PWYtY1twXTtmPXdmKHYsZix4KX1pZihzKXtjb25zdCB3PWQ9PT0ieSI\/InRvcCI6ImxlZnQiLHA9ZD09PSJ5Ij8iYm90dG9tIjoicmlnaHQiLHY9eStjW3ddLHg9eS1jW3BdO3k9d2Yodix5LHgpfWNvbnN0IG09YS5mbih7Li4udCxbaF06ZixbZF06eX0pO3JldHVybnsuLi5tLGRhdGE6e3g6bS54LW4seTptLnktcixlbmFibGVkOntbaF06byxbZF06c319fX19fSxrTj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtvcHRpb25zOmUsZm4odCl7Y29uc3R7eDpuLHk6cixwbGFjZW1lbnQ6aSxyZWN0czpvLG1pZGRsZXdhcmVEYXRhOnN9PXQse29mZnNldDphPTAsbWFpbkF4aXM6bD0hMCxjcm9zc0F4aXM6dT0hMH09ZXIoZSx0KSxjPXt4Om4seTpyfSxkPUFuKGkpLGg9ZnAoZCk7bGV0IGY9Y1toXSx5PWNbZF07Y29uc3QgbT1lcihhLHQpLHc9dHlwZW9mIG09PSJudW1iZXIiP3ttYWluQXhpczptLGNyb3NzQXhpczowfTp7bWFpbkF4aXM6MCxjcm9zc0F4aXM6MCwuLi5tfTtpZihsKXtjb25zdCB4PWg9PT0ieSI\/ImhlaWdodCI6IndpZHRoIixrPW8ucmVmZXJlbmNlW2hdLW8uZmxvYXRpbmdbeF0rdy5tYWluQXhpcyxUPW8ucmVmZXJlbmNlW2hdK28ucmVmZXJlbmNlW3hdLXcubWFpbkF4aXM7ZjxrP2Y9azpmPlQmJihmPVQpfWlmKHUpe3ZhciBwLHY7Y29uc3QgeD1oPT09InkiPyJ3aWR0aCI6ImhlaWdodCIsaz1uYi5oYXModHIoaSkpLFQ9by5yZWZlcmVuY2VbZF0tby5mbG9hdGluZ1t4XSsoayYmKChwPXMub2Zmc2V0KT09bnVsbD92b2lkIDA6cFtkXSl8fDApKyhrPzA6dy5jcm9zc0F4aXMpLEM9by5yZWZlcmVuY2VbZF0rby5yZWZlcmVuY2VbeF0rKGs\/MDooKHY9cy5vZmZzZXQpPT1udWxsP3ZvaWQgMDp2W2RdKXx8MCktKGs\/dy5jcm9zc0F4aXM6MCk7eTxUP3k9VDp5PkMmJih5PUMpfXJldHVybntbaF06ZixbZF06eX19fX0sU049ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZToic2l6ZSIsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuLHI7Y29uc3R7cGxhY2VtZW50OmkscmVjdHM6byxwbGF0Zm9ybTpzLGVsZW1lbnRzOmF9PXQse2FwcGx5Omw9KCk9Pnt9LC4uLnV9PWVyKGUsdCksYz1hd2FpdCBYcyh0LHUpLGQ9dHIoaSksaD1WbyhpKSxmPUFuKGkpPT09InkiLHt3aWR0aDp5LGhlaWdodDptfT1vLmZsb2F0aW5nO2xldCB3LHA7ZD09PSJ0b3AifHxkPT09ImJvdHRvbSI\/KHc9ZCxwPWg9PT0oYXdhaXQocy5pc1JUTD09bnVsbD92b2lkIDA6cy5pc1JUTChhLmZsb2F0aW5nKSk\/InN0YXJ0IjoiZW5kIik\/ImxlZnQiOiJyaWdodCIpOihwPWQsdz1oPT09ImVuZCI\/InRvcCI6ImJvdHRvbSIpO2NvbnN0IHY9bS1jLnRvcC1jLmJvdHRvbSx4PXktYy5sZWZ0LWMucmlnaHQsaz1CcihtLWNbd10sdiksVD1Ccih5LWNbcF0seCksQz0hdC5taWRkbGV3YXJlRGF0YS5zaGlmdDtsZXQgUD1rLEE9VDtpZigobj10Lm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSE9bnVsbCYmbi5lbmFibGVkLngmJihBPXgpLChyPXQubWlkZGxld2FyZURhdGEuc2hpZnQpIT1udWxsJiZyLmVuYWJsZWQueSYmKFA9diksQyYmIWgpe2NvbnN0IEk9SXQoYy5sZWZ0LDApLE09SXQoYy5yaWdodCwwKSx6PUl0KGMudG9wLDApLCQ9SXQoYy5ib3R0b20sMCk7Zj9BPXktMiooSSE9PTB8fE0hPT0wP0krTTpJdChjLmxlZnQsYy5yaWdodCkpOlA9bS0yKih6IT09MHx8JCE9PTA\/eiskOkl0KGMudG9wLGMuYm90dG9tKSl9YXdhaXQgbCh7Li4udCxhdmFpbGFibGVXaWR0aDpBLGF2YWlsYWJsZUhlaWdodDpQfSk7Y29uc3Qgaj1hd2FpdCBzLmdldERpbWVuc2lvbnMoYS5mbG9hdGluZyk7cmV0dXJuIHkhPT1qLndpZHRofHxtIT09ai5oZWlnaHQ\/e3Jlc2V0OntyZWN0czohMH19Ont9fX19O2Z1bmN0aW9uIF91KCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c8InUifWZ1bmN0aW9uIEJvKGUpe3JldHVybiByYihlKT8oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk6IiNkb2N1bWVudCJ9ZnVuY3Rpb24gUnQoZSl7dmFyIHQ7cmV0dXJuKGU9PW51bGx8fCh0PWUub3duZXJEb2N1bWVudCk9PW51bGw\/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9ZnVuY3Rpb24gRm4oZSl7dmFyIHQ7cmV0dXJuKHQ9KHJiKGUpP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50KXx8d2luZG93LmRvY3VtZW50KT09bnVsbD92b2lkIDA6dC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gcmIoZSl7cmV0dXJuIF91KCk\/ZSBpbnN0YW5jZW9mIE5vZGV8fGUgaW5zdGFuY2VvZiBSdChlKS5Ob2RlOiExfWZ1bmN0aW9uIHBuKGUpe3JldHVybiBfdSgpP2UgaW5zdGFuY2VvZiBFbGVtZW50fHxlIGluc3RhbmNlb2YgUnQoZSkuRWxlbWVudDohMX1mdW5jdGlvbiBEbihlKXtyZXR1cm4gX3UoKT9lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fGUgaW5zdGFuY2VvZiBSdChlKS5IVE1MRWxlbWVudDohMX1mdW5jdGlvbiB1eShlKXtyZXR1cm4hX3UoKXx8dHlwZW9mIFNoYWRvd1Jvb3Q+InUiPyExOmUgaW5zdGFuY2VvZiBTaGFkb3dSb290fHxlIGluc3RhbmNlb2YgUnQoZSkuU2hhZG93Um9vdH1jb25zdCBDTj1uZXcgU2V0KFsiaW5saW5lIiwiY29udGVudHMiXSk7ZnVuY3Rpb24gZ2EoZSl7Y29uc3R7b3ZlcmZsb3c6dCxvdmVyZmxvd1g6bixvdmVyZmxvd1k6cixkaXNwbGF5Oml9PW1uKGUpO3JldHVybi9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KHQrcituKSYmIUNOLmhhcyhpKX1jb25zdCBUTj1uZXcgU2V0KFsidGFibGUiLCJ0ZCIsInRoIl0pO2Z1bmN0aW9uIEVOKGUpe3JldHVybiBUTi5oYXMoQm8oZSkpfWNvbnN0IFBOPVsiOnBvcG92ZXItb3BlbiIsIjptb2RhbCJdO2Z1bmN0aW9uIFZ1KGUpe3JldHVybiBQTi5zb21lKHQ9Pnt0cnl7cmV0dXJuIGUubWF0Y2hlcyh0KX1jYXRjaHtyZXR1cm4hMX19KX1jb25zdCBBTj1bInRyYW5zZm9ybSIsInRyYW5zbGF0ZSIsInNjYWxlIiwicm90YXRlIiwicGVyc3BlY3RpdmUiXSxJTj1bInRyYW5zZm9ybSIsInRyYW5zbGF0ZSIsInNjYWxlIiwicm90YXRlIiwicGVyc3BlY3RpdmUiLCJmaWx0ZXIiXSxOTj1bInBhaW50IiwibGF5b3V0Iiwic3RyaWN0IiwiY29udGVudCJdO2Z1bmN0aW9uIG1wKGUpe2NvbnN0IHQ9Z3AoKSxuPXBuKGUpP21uKGUpOmU7cmV0dXJuIEFOLnNvbWUocj0+bltyXT9uW3JdIT09Im5vbmUiOiExKXx8KG4uY29udGFpbmVyVHlwZT9uLmNvbnRhaW5lclR5cGUhPT0ibm9ybWFsIjohMSl8fCF0JiYobi5iYWNrZHJvcEZpbHRlcj9uLmJhY2tkcm9wRmlsdGVyIT09Im5vbmUiOiExKXx8IXQmJihuLmZpbHRlcj9uLmZpbHRlciE9PSJub25lIjohMSl8fElOLnNvbWUocj0+KG4ud2lsbENoYW5nZXx8IiIpLmluY2x1ZGVzKHIpKXx8Tk4uc29tZShyPT4obi5jb250YWlufHwiIikuaW5jbHVkZXMocikpfWZ1bmN0aW9uIGpOKGUpe2xldCB0PVVyKGUpO2Zvcig7RG4odCkmJiFJbyh0KTspe2lmKG1wKHQpKXJldHVybiB0O2lmKFZ1KHQpKXJldHVybiBudWxsO3Q9VXIodCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZ3AoKXtyZXR1cm4gdHlwZW9mIENTUz4idSJ8fCFDU1Muc3VwcG9ydHM\/ITE6Q1NTLnN1cHBvcnRzKCItd2Via2l0LWJhY2tkcm9wLWZpbHRlciIsIm5vbmUiKX1jb25zdCB6Tj1uZXcgU2V0KFsiaHRtbCIsImJvZHkiLCIjZG9jdW1lbnQiXSk7ZnVuY3Rpb24gSW8oZSl7cmV0dXJuIHpOLmhhcyhCbyhlKSl9ZnVuY3Rpb24gbW4oZSl7cmV0dXJuIFJ0KGUpLmdldENvbXB1dGVkU3R5bGUoZSl9ZnVuY3Rpb24gQnUoZSl7cmV0dXJuIHBuKGUpP3tzY3JvbGxMZWZ0OmUuc2Nyb2xsTGVmdCxzY3JvbGxUb3A6ZS5zY3JvbGxUb3B9OntzY3JvbGxMZWZ0OmUuc2Nyb2xsWCxzY3JvbGxUb3A6ZS5zY3JvbGxZfX1mdW5jdGlvbiBVcihlKXtpZihCbyhlKT09PSJodG1sIilyZXR1cm4gZTtjb25zdCB0PWUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGV8fHV5KGUpJiZlLmhvc3R8fEZuKGUpO3JldHVybiB1eSh0KT90Lmhvc3Q6dH1mdW5jdGlvbiBpYihlKXtjb25zdCB0PVVyKGUpO3JldHVybiBJbyh0KT9lLm93bmVyRG9jdW1lbnQ\/ZS5vd25lckRvY3VtZW50LmJvZHk6ZS5ib2R5OkRuKHQpJiZnYSh0KT90OmliKHQpfWZ1bmN0aW9uIEpzKGUsdCxuKXt2YXIgcjt0PT09dm9pZCAwJiYodD1bXSksbj09PXZvaWQgMCYmKG49ITApO2NvbnN0IGk9aWIoZSksbz1pPT09KChyPWUub3duZXJEb2N1bWVudCk9PW51bGw\/dm9pZCAwOnIuYm9keSkscz1SdChpKTtpZihvKXtjb25zdCBhPWtmKHMpO3JldHVybiB0LmNvbmNhdChzLHMudmlzdWFsVmlld3BvcnR8fFtdLGdhKGkpP2k6W10sYSYmbj9KcyhhKTpbXSl9cmV0dXJuIHQuY29uY2F0KGksSnMoaSxbXSxuKSl9ZnVuY3Rpb24ga2YoZSl7cmV0dXJuIGUucGFyZW50JiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wYXJlbnQpP2UuZnJhbWVFbGVtZW50Om51bGx9ZnVuY3Rpb24gb2IoZSl7Y29uc3QgdD1tbihlKTtsZXQgbj1wYXJzZUZsb2F0KHQud2lkdGgpfHwwLHI9cGFyc2VGbG9hdCh0LmhlaWdodCl8fDA7Y29uc3QgaT1EbihlKSxvPWk\/ZS5vZmZzZXRXaWR0aDpuLHM9aT9lLm9mZnNldEhlaWdodDpyLGE9WmwobikhPT1vfHxabChyKSE9PXM7cmV0dXJuIGEmJihuPW8scj1zKSx7d2lkdGg6bixoZWlnaHQ6ciwkOmF9fWZ1bmN0aW9uIHlwKGUpe3JldHVybiBwbihlKT9lOmUuY29udGV4dEVsZW1lbnR9ZnVuY3Rpb24gY28oZSl7Y29uc3QgdD15cChlKTtpZighRG4odCkpcmV0dXJuIGpuKDEpO2NvbnN0IG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7d2lkdGg6cixoZWlnaHQ6aSwkOm99PW9iKHQpO2xldCBzPShvP1psKG4ud2lkdGgpOm4ud2lkdGgpL3IsYT0obz9abChuLmhlaWdodCk6bi5oZWlnaHQpL2k7cmV0dXJuKCFzfHwhTnVtYmVyLmlzRmluaXRlKHMpKSYmKHM9MSksKCFhfHwhTnVtYmVyLmlzRmluaXRlKGEpKSYmKGE9MSkse3g6cyx5OmF9fWNvbnN0IFJOPWpuKDApO2Z1bmN0aW9uIHNiKGUpe2NvbnN0IHQ9UnQoZSk7cmV0dXJuIWdwKCl8fCF0LnZpc3VhbFZpZXdwb3J0P1JOOnt4OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCx5OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wfX1mdW5jdGlvbiBETihlLHQsbil7cmV0dXJuIHQ9PT12b2lkIDAmJih0PSExKSwhbnx8dCYmbiE9PVJ0KGUpPyExOnR9ZnVuY3Rpb24gQWkoZSx0LG4scil7dD09PXZvaWQgMCYmKHQ9ITEpLG49PT12b2lkIDAmJihuPSExKTtjb25zdCBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz15cChlKTtsZXQgcz1qbigxKTt0JiYocj9wbihyKSYmKHM9Y28ocikpOnM9Y28oZSkpO2NvbnN0IGE9RE4obyxuLHIpP3NiKG8pOmpuKDApO2xldCBsPShpLmxlZnQrYS54KS9zLngsdT0oaS50b3ArYS55KS9zLnksYz1pLndpZHRoL3MueCxkPWkuaGVpZ2h0L3MueTtpZihvKXtjb25zdCBoPVJ0KG8pLGY9ciYmcG4ocik\/UnQocik6cjtsZXQgeT1oLG09a2YoeSk7Zm9yKDttJiZyJiZmIT09eTspe2NvbnN0IHc9Y28obSkscD1tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHY9bW4obSkseD1wLmxlZnQrKG0uY2xpZW50TGVmdCtwYXJzZUZsb2F0KHYucGFkZGluZ0xlZnQpKSp3Lngsaz1wLnRvcCsobS5jbGllbnRUb3ArcGFyc2VGbG9hdCh2LnBhZGRpbmdUb3ApKSp3Lnk7bCo9dy54LHUqPXcueSxjKj13LngsZCo9dy55LGwrPXgsdSs9ayx5PVJ0KG0pLG09a2YoeSl9fXJldHVybiB0dSh7d2lkdGg6YyxoZWlnaHQ6ZCx4OmwseTp1fSl9ZnVuY3Rpb24gdnAoZSx0KXtjb25zdCBuPUJ1KGUpLnNjcm9sbExlZnQ7cmV0dXJuIHQ\/dC5sZWZ0K246QWkoRm4oZSkpLmxlZnQrbn1mdW5jdGlvbiBhYihlLHQsbil7bj09PXZvaWQgMCYmKG49ITEpO2NvbnN0IHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXIubGVmdCt0LnNjcm9sbExlZnQtKG4\/MDp2cChlLHIpKSxvPXIudG9wK3Quc2Nyb2xsVG9wO3JldHVybnt4OmkseTpvfX1mdW5jdGlvbiBNTihlKXtsZXR7ZWxlbWVudHM6dCxyZWN0Om4sb2Zmc2V0UGFyZW50OnIsc3RyYXRlZ3k6aX09ZTtjb25zdCBvPWk9PT0iZml4ZWQiLHM9Rm4ociksYT10P1Z1KHQuZmxvYXRpbmcpOiExO2lmKHI9PT1zfHxhJiZvKXJldHVybiBuO2xldCBsPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LHU9am4oMSk7Y29uc3QgYz1qbigwKSxkPURuKHIpO2lmKChkfHwhZCYmIW8pJiYoKEJvKHIpIT09ImJvZHkifHxnYShzKSkmJihsPUJ1KHIpKSxEbihyKSkpe2NvbnN0IGY9QWkocik7dT1jbyhyKSxjLng9Zi54K3IuY2xpZW50TGVmdCxjLnk9Zi55K3IuY2xpZW50VG9wfWNvbnN0IGg9cyYmIWQmJiFvP2FiKHMsbCwhMCk6am4oMCk7cmV0dXJue3dpZHRoOm4ud2lkdGgqdS54LGhlaWdodDpuLmhlaWdodCp1LnkseDpuLngqdS54LWwuc2Nyb2xsTGVmdCp1LngrYy54K2gueCx5Om4ueSp1LnktbC5zY3JvbGxUb3AqdS55K2MueStoLnl9fWZ1bmN0aW9uIExOKGUpe3JldHVybiBBcnJheS5mcm9tKGUuZ2V0Q2xpZW50UmVjdHMoKSl9ZnVuY3Rpb24gT04oZSl7Y29uc3QgdD1GbihlKSxuPUJ1KGUpLHI9ZS5vd25lckRvY3VtZW50LmJvZHksaT1JdCh0LnNjcm9sbFdpZHRoLHQuY2xpZW50V2lkdGgsci5zY3JvbGxXaWR0aCxyLmNsaWVudFdpZHRoKSxvPUl0KHQuc2Nyb2xsSGVpZ2h0LHQuY2xpZW50SGVpZ2h0LHIuc2Nyb2xsSGVpZ2h0LHIuY2xpZW50SGVpZ2h0KTtsZXQgcz0tbi5zY3JvbGxMZWZ0K3ZwKGUpO2NvbnN0IGE9LW4uc2Nyb2xsVG9wO3JldHVybiBtbihyKS5kaXJlY3Rpb249PT0icnRsIiYmKHMrPUl0KHQuY2xpZW50V2lkdGgsci5jbGllbnRXaWR0aCktaSkse3dpZHRoOmksaGVpZ2h0Om8seDpzLHk6YX19ZnVuY3Rpb24gRk4oZSx0KXtjb25zdCBuPVJ0KGUpLHI9Rm4oZSksaT1uLnZpc3VhbFZpZXdwb3J0O2xldCBvPXIuY2xpZW50V2lkdGgscz1yLmNsaWVudEhlaWdodCxhPTAsbD0wO2lmKGkpe289aS53aWR0aCxzPWkuaGVpZ2h0O2NvbnN0IHU9Z3AoKTsoIXV8fHUmJnQ9PT0iZml4ZWQiKSYmKGE9aS5vZmZzZXRMZWZ0LGw9aS5vZmZzZXRUb3ApfXJldHVybnt3aWR0aDpvLGhlaWdodDpzLHg6YSx5Omx9fWNvbnN0IF9OPW5ldyBTZXQoWyJhYnNvbHV0ZSIsImZpeGVkIl0pO2Z1bmN0aW9uIFZOKGUsdCl7Y29uc3Qgbj1BaShlLCEwLHQ9PT0iZml4ZWQiKSxyPW4udG9wK2UuY2xpZW50VG9wLGk9bi5sZWZ0K2UuY2xpZW50TGVmdCxvPURuKGUpP2NvKGUpOmpuKDEpLHM9ZS5jbGllbnRXaWR0aCpvLngsYT1lLmNsaWVudEhlaWdodCpvLnksbD1pKm8ueCx1PXIqby55O3JldHVybnt3aWR0aDpzLGhlaWdodDphLHg6bCx5OnV9fWZ1bmN0aW9uIGN5KGUsdCxuKXtsZXQgcjtpZih0PT09InZpZXdwb3J0IilyPUZOKGUsbik7ZWxzZSBpZih0PT09ImRvY3VtZW50IilyPU9OKEZuKGUpKTtlbHNlIGlmKHBuKHQpKXI9Vk4odCxuKTtlbHNle2NvbnN0IGk9c2IoZSk7cj17eDp0LngtaS54LHk6dC55LWkueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19cmV0dXJuIHR1KHIpfWZ1bmN0aW9uIGxiKGUsdCl7Y29uc3Qgbj1VcihlKTtyZXR1cm4gbj09PXR8fCFwbihuKXx8SW8obik\/ITE6bW4obikucG9zaXRpb249PT0iZml4ZWQifHxsYihuLHQpfWZ1bmN0aW9uIEJOKGUsdCl7Y29uc3Qgbj10LmdldChlKTtpZihuKXJldHVybiBuO2xldCByPUpzKGUsW10sITEpLmZpbHRlcihhPT5wbihhKSYmQm8oYSkhPT0iYm9keSIpLGk9bnVsbDtjb25zdCBvPW1uKGUpLnBvc2l0aW9uPT09ImZpeGVkIjtsZXQgcz1vP1VyKGUpOmU7Zm9yKDtwbihzKSYmIUlvKHMpOyl7Y29uc3QgYT1tbihzKSxsPW1wKHMpOyFsJiZhLnBvc2l0aW9uPT09ImZpeGVkIiYmKGk9bnVsbCksKG8\/IWwmJiFpOiFsJiZhLnBvc2l0aW9uPT09InN0YXRpYyImJiEhaSYmX04uaGFzKGkucG9zaXRpb24pfHxnYShzKSYmIWwmJmxiKGUscykpP3I9ci5maWx0ZXIoYz0+YyE9PXMpOmk9YSxzPVVyKHMpfXJldHVybiB0LnNldChlLHIpLHJ9ZnVuY3Rpb24gVU4oZSl7bGV0e2VsZW1lbnQ6dCxib3VuZGFyeTpuLHJvb3RCb3VuZGFyeTpyLHN0cmF0ZWd5Oml9PWU7Y29uc3Qgcz1bLi4ubj09PSJjbGlwcGluZ0FuY2VzdG9ycyI\/VnUodCk\/W106Qk4odCx0aGlzLl9jKTpbXS5jb25jYXQobikscl0sYT1zWzBdLGw9cy5yZWR1Y2UoKHUsYyk9Pntjb25zdCBkPWN5KHQsYyxpKTtyZXR1cm4gdS50b3A9SXQoZC50b3AsdS50b3ApLHUucmlnaHQ9QnIoZC5yaWdodCx1LnJpZ2h0KSx1LmJvdHRvbT1CcihkLmJvdHRvbSx1LmJvdHRvbSksdS5sZWZ0PUl0KGQubGVmdCx1LmxlZnQpLHV9LGN5KHQsYSxpKSk7cmV0dXJue3dpZHRoOmwucmlnaHQtbC5sZWZ0LGhlaWdodDpsLmJvdHRvbS1sLnRvcCx4OmwubGVmdCx5OmwudG9wfX1mdW5jdGlvbiAkTihlKXtjb25zdHt3aWR0aDp0LGhlaWdodDpufT1vYihlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19ZnVuY3Rpb24gSE4oZSx0LG4pe2NvbnN0IHI9RG4odCksaT1Gbih0KSxvPW49PT0iZml4ZWQiLHM9QWkoZSwhMCxvLHQpO2xldCBhPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9O2NvbnN0IGw9am4oMCk7ZnVuY3Rpb24gdSgpe2wueD12cChpKX1pZihyfHwhciYmIW8paWYoKEJvKHQpIT09ImJvZHkifHxnYShpKSkmJihhPUJ1KHQpKSxyKXtjb25zdCBmPUFpKHQsITAsbyx0KTtsLng9Zi54K3QuY2xpZW50TGVmdCxsLnk9Zi55K3QuY2xpZW50VG9wfWVsc2UgaSYmdSgpO28mJiFyJiZpJiZ1KCk7Y29uc3QgYz1pJiYhciYmIW8\/YWIoaSxhKTpqbigwKSxkPXMubGVmdCthLnNjcm9sbExlZnQtbC54LWMueCxoPXMudG9wK2Euc2Nyb2xsVG9wLWwueS1jLnk7cmV0dXJue3g6ZCx5Omgsd2lkdGg6cy53aWR0aCxoZWlnaHQ6cy5oZWlnaHR9fWZ1bmN0aW9uIEZjKGUpe3JldHVybiBtbihlKS5wb3NpdGlvbj09PSJzdGF0aWMifWZ1bmN0aW9uIGR5KGUsdCl7aWYoIURuKGUpfHxtbihlKS5wb3NpdGlvbj09PSJmaXhlZCIpcmV0dXJuIG51bGw7aWYodClyZXR1cm4gdChlKTtsZXQgbj1lLm9mZnNldFBhcmVudDtyZXR1cm4gRm4oZSk9PT1uJiYobj1uLm93bmVyRG9jdW1lbnQuYm9keSksbn1mdW5jdGlvbiB1YihlLHQpe2NvbnN0IG49UnQoZSk7aWYoVnUoZSkpcmV0dXJuIG47aWYoIURuKGUpKXtsZXQgaT1VcihlKTtmb3IoO2kmJiFJbyhpKTspe2lmKHBuKGkpJiYhRmMoaSkpcmV0dXJuIGk7aT1VcihpKX1yZXR1cm4gbn1sZXQgcj1keShlLHQpO2Zvcig7ciYmRU4ocikmJkZjKHIpOylyPWR5KHIsdCk7cmV0dXJuIHImJklvKHIpJiZGYyhyKSYmIW1wKHIpP246cnx8ak4oZSl8fG59Y29uc3QgcU49YXN5bmMgZnVuY3Rpb24oZSl7Y29uc3QgdD10aGlzLmdldE9mZnNldFBhcmVudHx8dWIsbj10aGlzLmdldERpbWVuc2lvbnMscj1hd2FpdCBuKGUuZmxvYXRpbmcpO3JldHVybntyZWZlcmVuY2U6SE4oZS5yZWZlcmVuY2UsYXdhaXQgdChlLmZsb2F0aW5nKSxlLnN0cmF0ZWd5KSxmbG9hdGluZzp7eDowLHk6MCx3aWR0aDpyLndpZHRoLGhlaWdodDpyLmhlaWdodH19fTtmdW5jdGlvbiBXTihlKXtyZXR1cm4gbW4oZSkuZGlyZWN0aW9uPT09InJ0bCJ9Y29uc3QgS049e2NvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Ok1OLGdldERvY3VtZW50RWxlbWVudDpGbixnZXRDbGlwcGluZ1JlY3Q6VU4sZ2V0T2Zmc2V0UGFyZW50OnViLGdldEVsZW1lbnRSZWN0czpxTixnZXRDbGllbnRSZWN0czpMTixnZXREaW1lbnNpb25zOiROLGdldFNjYWxlOmNvLGlzRWxlbWVudDpwbixpc1JUTDpXTn07ZnVuY3Rpb24gY2IoZSx0KXtyZXR1cm4gZS54PT09dC54JiZlLnk9PT10LnkmJmUud2lkdGg9PT10LndpZHRoJiZlLmhlaWdodD09PXQuaGVpZ2h0fWZ1bmN0aW9uIEdOKGUsdCl7bGV0IG49bnVsbCxyO2NvbnN0IGk9Rm4oZSk7ZnVuY3Rpb24gbygpe3ZhciBhO2NsZWFyVGltZW91dChyKSwoYT1uKT09bnVsbHx8YS5kaXNjb25uZWN0KCksbj1udWxsfWZ1bmN0aW9uIHMoYSxsKXthPT09dm9pZCAwJiYoYT0hMSksbD09PXZvaWQgMCYmKGw9MSksbygpO2NvbnN0IHU9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7bGVmdDpjLHRvcDpkLHdpZHRoOmgsaGVpZ2h0OmZ9PXU7aWYoYXx8dCgpLCFofHwhZilyZXR1cm47Y29uc3QgeT1XYShkKSxtPVdhKGkuY2xpZW50V2lkdGgtKGMraCkpLHc9V2EoaS5jbGllbnRIZWlnaHQtKGQrZikpLHA9V2EoYykseD17cm9vdE1hcmdpbjoteSsicHggIistbSsicHggIistdysicHggIistcCsicHgiLHRocmVzaG9sZDpJdCgwLEJyKDEsbCkpfHwxfTtsZXQgaz0hMDtmdW5jdGlvbiBUKEMpe2NvbnN0IFA9Q1swXS5pbnRlcnNlY3Rpb25SYXRpbztpZihQIT09bCl7aWYoIWspcmV0dXJuIHMoKTtQP3MoITEsUCk6cj1zZXRUaW1lb3V0KCgpPT57cyghMSwxZS03KX0sMWUzKX1QPT09MSYmIWNiKHUsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkmJnMoKSxrPSExfXRyeXtuPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihULHsuLi54LHJvb3Q6aS5vd25lckRvY3VtZW50fSl9Y2F0Y2h7bj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoVCx4KX1uLm9ic2VydmUoZSl9cmV0dXJuIHMoITApLG99ZnVuY3Rpb24gWU4oZSx0LG4scil7cj09PXZvaWQgMCYmKHI9e30pO2NvbnN0e2FuY2VzdG9yU2Nyb2xsOmk9ITAsYW5jZXN0b3JSZXNpemU6bz0hMCxlbGVtZW50UmVzaXplOnM9dHlwZW9mIFJlc2l6ZU9ic2VydmVyPT0iZnVuY3Rpb24iLGxheW91dFNoaWZ0OmE9dHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyPT0iZnVuY3Rpb24iLGFuaW1hdGlvbkZyYW1lOmw9ITF9PXIsdT15cChlKSxjPWl8fG8\/Wy4uLnU\/SnModSk6W10sLi4uSnModCldOltdO2MuZm9yRWFjaChwPT57aSYmcC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLG4se3Bhc3NpdmU6ITB9KSxvJiZwLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbil9KTtjb25zdCBkPXUmJmE\/R04odSxuKTpudWxsO2xldCBoPS0xLGY9bnVsbDtzJiYoZj1uZXcgUmVzaXplT2JzZXJ2ZXIocD0+e2xldFt2XT1wO3YmJnYudGFyZ2V0PT09dSYmZiYmKGYudW5vYnNlcnZlKHQpLGNhbmNlbEFuaW1hdGlvbkZyYW1lKGgpLGg9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIHg7KHg9Zik9PW51bGx8fHgub2JzZXJ2ZSh0KX0pKSxuKCl9KSx1JiYhbCYmZi5vYnNlcnZlKHUpLGYub2JzZXJ2ZSh0KSk7bGV0IHksbT1sP0FpKGUpOm51bGw7bCYmdygpO2Z1bmN0aW9uIHcoKXtjb25zdCBwPUFpKGUpO20mJiFjYihtLHApJiZuKCksbT1wLHk9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHcpfXJldHVybiBuKCksKCk9Pnt2YXIgcDtjLmZvckVhY2godj0+e2kmJnYucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixuKSxvJiZ2LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbil9KSxkPT1udWxsfHxkKCksKHA9Zik9PW51bGx8fHAuZGlzY29ubmVjdCgpLGY9bnVsbCxsJiZjYW5jZWxBbmltYXRpb25GcmFtZSh5KX19Y29uc3QgUU49d04sWE49Yk4sSk49eU4sWk49U04sZWo9dk4sZnk9Z04sdGo9a04sbmo9KGUsdCxuKT0+e2NvbnN0IHI9bmV3IE1hcCxpPXtwbGF0Zm9ybTpLTiwuLi5ufSxvPXsuLi5pLnBsYXRmb3JtLF9jOnJ9O3JldHVybiBtTihlLHQsey4uLmkscGxhdGZvcm06b30pfTt2YXIgcmo9dHlwZW9mIGRvY3VtZW50PCJ1Iixpaj1mdW5jdGlvbigpe30sbWw9cmo\/Yi51c2VMYXlvdXRFZmZlY3Q6aWo7ZnVuY3Rpb24gbnUoZSx0KXtpZihlPT09dClyZXR1cm4hMDtpZih0eXBlb2YgZSE9dHlwZW9mIHQpcmV0dXJuITE7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiImJmUudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKSlyZXR1cm4hMDtsZXQgbixyLGk7aWYoZSYmdCYmdHlwZW9mIGU9PSJvYmplY3QiKXtpZihBcnJheS5pc0FycmF5KGUpKXtpZihuPWUubGVuZ3RoLG4hPT10Lmxlbmd0aClyZXR1cm4hMTtmb3Iocj1uO3ItLSE9PTA7KWlmKCFudShlW3JdLHRbcl0pKXJldHVybiExO3JldHVybiEwfWlmKGk9T2JqZWN0LmtleXMoZSksbj1pLmxlbmd0aCxuIT09T2JqZWN0LmtleXModCkubGVuZ3RoKXJldHVybiExO2ZvcihyPW47ci0tIT09MDspaWYoIXt9Lmhhc093blByb3BlcnR5LmNhbGwodCxpW3JdKSlyZXR1cm4hMTtmb3Iocj1uO3ItLSE9PTA7KXtjb25zdCBvPWlbcl07aWYoIShvPT09Il9vd25lciImJmUuJCR0eXBlb2YpJiYhbnUoZVtvXSx0W29dKSlyZXR1cm4hMX1yZXR1cm4hMH1yZXR1cm4gZSE9PWUmJnQhPT10fWZ1bmN0aW9uIGRiKGUpe3JldHVybiB0eXBlb2Ygd2luZG93PiJ1Ij8xOihlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZGV2aWNlUGl4ZWxSYXRpb3x8MX1mdW5jdGlvbiBoeShlLHQpe2NvbnN0IG49ZGIoZSk7cmV0dXJuIE1hdGgucm91bmQodCpuKS9ufWZ1bmN0aW9uIF9jKGUpe2NvbnN0IHQ9Yi51c2VSZWYoZSk7cmV0dXJuIG1sKCgpPT57dC5jdXJyZW50PWV9KSx0fWZ1bmN0aW9uIG9qKGUpe2U9PT12b2lkIDAmJihlPXt9KTtjb25zdHtwbGFjZW1lbnQ6dD0iYm90dG9tIixzdHJhdGVneTpuPSJhYnNvbHV0ZSIsbWlkZGxld2FyZTpyPVtdLHBsYXRmb3JtOmksZWxlbWVudHM6e3JlZmVyZW5jZTpvLGZsb2F0aW5nOnN9PXt9LHRyYW5zZm9ybTphPSEwLHdoaWxlRWxlbWVudHNNb3VudGVkOmwsb3Blbjp1fT1lLFtjLGRdPWIudXNlU3RhdGUoe3g6MCx5OjAsc3RyYXRlZ3k6bixwbGFjZW1lbnQ6dCxtaWRkbGV3YXJlRGF0YTp7fSxpc1Bvc2l0aW9uZWQ6ITF9KSxbaCxmXT1iLnVzZVN0YXRlKHIpO251KGgscil8fGYocik7Y29uc3RbeSxtXT1iLnVzZVN0YXRlKG51bGwpLFt3LHBdPWIudXNlU3RhdGUobnVsbCksdj1iLnVzZUNhbGxiYWNrKE49PntOIT09Qy5jdXJyZW50JiYoQy5jdXJyZW50PU4sbShOKSl9LFtdKSx4PWIudXNlQ2FsbGJhY2soTj0+e04hPT1QLmN1cnJlbnQmJihQLmN1cnJlbnQ9TixwKE4pKX0sW10pLGs9b3x8eSxUPXN8fHcsQz1iLnVzZVJlZihudWxsKSxQPWIudXNlUmVmKG51bGwpLEE9Yi51c2VSZWYoYyksaj1sIT1udWxsLEk9X2MobCksTT1fYyhpKSx6PV9jKHUpLCQ9Yi51c2VDYWxsYmFjaygoKT0+e2lmKCFDLmN1cnJlbnR8fCFQLmN1cnJlbnQpcmV0dXJuO2NvbnN0IE49e3BsYWNlbWVudDp0LHN0cmF0ZWd5Om4sbWlkZGxld2FyZTpofTtNLmN1cnJlbnQmJihOLnBsYXRmb3JtPU0uY3VycmVudCksbmooQy5jdXJyZW50LFAuY3VycmVudCxOKS50aGVuKFI9Pntjb25zdCBTPXsuLi5SLGlzUG9zaXRpb25lZDp6LmN1cnJlbnQhPT0hMX07Ty5jdXJyZW50JiYhbnUoQS5jdXJyZW50LFMpJiYoQS5jdXJyZW50PVMsZmEuZmx1c2hTeW5jKCgpPT57ZChTKX0pKX0pfSxbaCx0LG4sTSx6XSk7bWwoKCk9Pnt1PT09ITEmJkEuY3VycmVudC5pc1Bvc2l0aW9uZWQmJihBLmN1cnJlbnQuaXNQb3NpdGlvbmVkPSExLGQoTj0+KHsuLi5OLGlzUG9zaXRpb25lZDohMX0pKSl9LFt1XSk7Y29uc3QgTz1iLnVzZVJlZighMSk7bWwoKCk9PihPLmN1cnJlbnQ9ITAsKCk9PntPLmN1cnJlbnQ9ITF9KSxbXSksbWwoKCk9PntpZihrJiYoQy5jdXJyZW50PWspLFQmJihQLmN1cnJlbnQ9VCksayYmVCl7aWYoSS5jdXJyZW50KXJldHVybiBJLmN1cnJlbnQoayxULCQpOyQoKX19LFtrLFQsJCxJLGpdKTtjb25zdCBVPWIudXNlTWVtbygoKT0+KHtyZWZlcmVuY2U6QyxmbG9hdGluZzpQLHNldFJlZmVyZW5jZTp2LHNldEZsb2F0aW5nOnh9KSxbdix4XSksSD1iLnVzZU1lbW8oKCk9Pih7cmVmZXJlbmNlOmssZmxvYXRpbmc6VH0pLFtrLFRdKSxHPWIudXNlTWVtbygoKT0+e2NvbnN0IE49e3Bvc2l0aW9uOm4sbGVmdDowLHRvcDowfTtpZighSC5mbG9hdGluZylyZXR1cm4gTjtjb25zdCBSPWh5KEguZmxvYXRpbmcsYy54KSxTPWh5KEguZmxvYXRpbmcsYy55KTtyZXR1cm4gYT97Li4uTix0cmFuc2Zvcm06InRyYW5zbGF0ZSgiK1IrInB4LCAiK1MrInB4KSIsLi4uZGIoSC5mbG9hdGluZyk+PTEuNSYme3dpbGxDaGFuZ2U6InRyYW5zZm9ybSJ9fTp7cG9zaXRpb246bixsZWZ0OlIsdG9wOlN9fSxbbixhLEguZmxvYXRpbmcsYy54LGMueV0pO3JldHVybiBiLnVzZU1lbW8oKCk9Pih7Li4uYyx1cGRhdGU6JCxyZWZzOlUsZWxlbWVudHM6SCxmbG9hdGluZ1N0eWxlczpHfSksW2MsJCxVLEgsR10pfWNvbnN0IHNqPWU9PntmdW5jdGlvbiB0KG4pe3JldHVybnt9Lmhhc093blByb3BlcnR5LmNhbGwobiwiY3VycmVudCIpfXJldHVybntuYW1lOiJhcnJvdyIsb3B0aW9uczplLGZuKG4pe2NvbnN0e2VsZW1lbnQ6cixwYWRkaW5nOml9PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2Uobik6ZTtyZXR1cm4gciYmdChyKT9yLmN1cnJlbnQhPW51bGw\/Znkoe2VsZW1lbnQ6ci5jdXJyZW50LHBhZGRpbmc6aX0pLmZuKG4pOnt9OnI\/Znkoe2VsZW1lbnQ6cixwYWRkaW5nOml9KS5mbihuKTp7fX19fSxhaj0oZSx0KT0+KHsuLi5RTihlKSxvcHRpb25zOltlLHRdfSksbGo9KGUsdCk9Pih7Li4uWE4oZSksb3B0aW9uczpbZSx0XX0pLHVqPShlLHQpPT4oey4uLnRqKGUpLG9wdGlvbnM6W2UsdF19KSxjaj0oZSx0KT0+KHsuLi5KTihlKSxvcHRpb25zOltlLHRdfSksZGo9KGUsdCk9Pih7Li4uWk4oZSksb3B0aW9uczpbZSx0XX0pLGZqPShlLHQpPT4oey4uLmVqKGUpLG9wdGlvbnM6W2UsdF19KSxoaj0oZSx0KT0+KHsuLi5zaihlKSxvcHRpb25zOltlLHRdfSk7dmFyIHBqPSJBcnJvdyIsZmI9Yi5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7Y2hpbGRyZW46bix3aWR0aDpyPTEwLGhlaWdodDppPTUsLi4ub309ZTtyZXR1cm4gZy5qc3goVWUuc3ZnLHsuLi5vLHJlZjp0LHdpZHRoOnIsaGVpZ2h0Omksdmlld0JveDoiMCAwIDMwIDEwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIixjaGlsZHJlbjplLmFzQ2hpbGQ\/bjpnLmpzeCgicG9seWdvbiIse3BvaW50czoiMCwwIDMwLDAgMTUsMTAifSl9KX0pO2ZiLmRpc3BsYXlOYW1lPXBqO3ZhciBtaj1mYjtmdW5jdGlvbiBnaihlKXtjb25zdFt0LG5dPWIudXNlU3RhdGUodm9pZCAwKTtyZXR1cm4gUm4oKCk9PntpZihlKXtuKHt3aWR0aDplLm9mZnNldFdpZHRoLGhlaWdodDplLm9mZnNldEhlaWdodH0pO2NvbnN0IHI9bmV3IFJlc2l6ZU9ic2VydmVyKGk9PntpZighQXJyYXkuaXNBcnJheShpKXx8IWkubGVuZ3RoKXJldHVybjtjb25zdCBvPWlbMF07bGV0IHMsYTtpZigiYm9yZGVyQm94U2l6ZSJpbiBvKXtjb25zdCBsPW8uYm9yZGVyQm94U2l6ZSx1PUFycmF5LmlzQXJyYXkobCk\/bFswXTpsO3M9dS5pbmxpbmVTaXplLGE9dS5ibG9ja1NpemV9ZWxzZSBzPWUub2Zmc2V0V2lkdGgsYT1lLm9mZnNldEhlaWdodDtuKHt3aWR0aDpzLGhlaWdodDphfSl9KTtyZXR1cm4gci5vYnNlcnZlKGUse2JveDoiYm9yZGVyLWJveCJ9KSwoKT0+ci51bm9ic2VydmUoZSl9ZWxzZSBuKHZvaWQgMCl9LFtlXSksdH12YXIgaGI9IlBvcHBlciIsW3BiLG1iXT1GbyhoYiksW0IzLGdiXT1wYihoYikseWI9IlBvcHBlckFuY2hvciIsdmI9Yi5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZVBvcHBlcjpuLHZpcnR1YWxSZWY6ciwuLi5pfT1lLG89Z2IoeWIsbikscz1iLnVzZVJlZihudWxsKSxhPU10KHQscyk7cmV0dXJuIGIudXNlRWZmZWN0KCgpPT57by5vbkFuY2hvckNoYW5nZSgocj09bnVsbD92b2lkIDA6ci5jdXJyZW50KXx8cy5jdXJyZW50KX0pLHI\/bnVsbDpnLmpzeChVZS5kaXYsey4uLmkscmVmOmF9KX0pO3ZiLmRpc3BsYXlOYW1lPXliO3ZhciB4cD0iUG9wcGVyQ29udGVudCIsW3lqLHZqXT1wYih4cCkseGI9Yi5mb3J3YXJkUmVmKChlLHQpPT57dmFyIHNlLHJ0LGl0LGh0LEN0LHJyO2NvbnN0e19fc2NvcGVQb3BwZXI6bixzaWRlOnI9ImJvdHRvbSIsc2lkZU9mZnNldDppPTAsYWxpZ246bz0iY2VudGVyIixhbGlnbk9mZnNldDpzPTAsYXJyb3dQYWRkaW5nOmE9MCxhdm9pZENvbGxpc2lvbnM6bD0hMCxjb2xsaXNpb25Cb3VuZGFyeTp1PVtdLGNvbGxpc2lvblBhZGRpbmc6Yz0wLHN0aWNreTpkPSJwYXJ0aWFsIixoaWRlV2hlbkRldGFjaGVkOmg9ITEsdXBkYXRlUG9zaXRpb25TdHJhdGVneTpmPSJvcHRpbWl6ZWQiLG9uUGxhY2VkOnksLi4ubX09ZSx3PWdiKHhwLG4pLFtwLHZdPWIudXNlU3RhdGUobnVsbCkseD1NdCh0LHluPT52KHluKSksW2ssVF09Yi51c2VTdGF0ZShudWxsKSxDPWdqKGspLFA9KEM9PW51bGw\/dm9pZCAwOkMud2lkdGgpPz8wLEE9KEM9PW51bGw\/dm9pZCAwOkMuaGVpZ2h0KT8\/MCxqPXIrKG8hPT0iY2VudGVyIj8iLSIrbzoiIiksST10eXBlb2YgYz09Im51bWJlciI\/Yzp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjAsLi4uY30sTT1BcnJheS5pc0FycmF5KHUpP3U6W3VdLHo9TS5sZW5ndGg+MCwkPXtwYWRkaW5nOkksYm91bmRhcnk6TS5maWx0ZXIod2opLGFsdEJvdW5kYXJ5Onp9LHtyZWZzOk8sZmxvYXRpbmdTdHlsZXM6VSxwbGFjZW1lbnQ6SCxpc1Bvc2l0aW9uZWQ6RyxtaWRkbGV3YXJlRGF0YTpOfT1vaih7c3RyYXRlZ3k6ImZpeGVkIixwbGFjZW1lbnQ6aix3aGlsZUVsZW1lbnRzTW91bnRlZDooLi4ueW4pPT5ZTiguLi55bix7YW5pbWF0aW9uRnJhbWU6Zj09PSJhbHdheXMifSksZWxlbWVudHM6e3JlZmVyZW5jZTp3LmFuY2hvcn0sbWlkZGxld2FyZTpbYWooe21haW5BeGlzOmkrQSxhbGlnbm1lbnRBeGlzOnN9KSxsJiZsaih7bWFpbkF4aXM6ITAsY3Jvc3NBeGlzOiExLGxpbWl0ZXI6ZD09PSJwYXJ0aWFsIj91aigpOnZvaWQgMCwuLi4kfSksbCYmY2ooey4uLiR9KSxkaih7Li4uJCxhcHBseTooe2VsZW1lbnRzOnluLHJlY3RzOkRpLGF2YWlsYWJsZVdpZHRoOk1pLGF2YWlsYWJsZUhlaWdodDpYcn0pPT57Y29uc3R7d2lkdGg6TGksaGVpZ2h0OkpyfT1EaS5yZWZlcmVuY2UsVm49eW4uZmxvYXRpbmcuc3R5bGU7Vm4uc2V0UHJvcGVydHkoIi0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCIsYCR7TWl9cHhgKSxWbi5zZXRQcm9wZXJ0eSgiLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCIsYCR7WHJ9cHhgKSxWbi5zZXRQcm9wZXJ0eSgiLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoIixgJHtMaX1weGApLFZuLnNldFByb3BlcnR5KCItLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0IixgJHtKcn1weGApfX0pLGsmJmhqKHtlbGVtZW50OmsscGFkZGluZzphfSksYmooe2Fycm93V2lkdGg6UCxhcnJvd0hlaWdodDpBfSksaCYmZmooe3N0cmF0ZWd5OiJyZWZlcmVuY2VIaWRkZW4iLC4uLiR9KV19KSxbUixTXT1rYihIKSxZPVZyKHkpO1JuKCgpPT57RyYmKFk9PW51bGx8fFkoKSl9LFtHLFldKTtjb25zdCBxPShzZT1OLmFycm93KT09bnVsbD92b2lkIDA6c2UueCxFPShydD1OLmFycm93KT09bnVsbD92b2lkIDA6cnQueSxYPSgoaXQ9Ti5hcnJvdyk9PW51bGw\/dm9pZCAwOml0LmNlbnRlck9mZnNldCkhPT0wLFtmZSxhZV09Yi51c2VTdGF0ZSgpO3JldHVybiBSbigoKT0+e3AmJmFlKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHApLnpJbmRleCl9LFtwXSksZy5qc3goImRpdiIse3JlZjpPLnNldEZsb2F0aW5nLCJkYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXIiOiIiLHN0eWxlOnsuLi5VLHRyYW5zZm9ybTpHP1UudHJhbnNmb3JtOiJ0cmFuc2xhdGUoMCwgLTIwMCUpIixtaW5XaWR0aDoibWF4LWNvbnRlbnQiLHpJbmRleDpmZSwiLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiI6WyhodD1OLnRyYW5zZm9ybU9yaWdpbik9PW51bGw\/dm9pZCAwOmh0LngsKEN0PU4udHJhbnNmb3JtT3JpZ2luKT09bnVsbD92b2lkIDA6Q3QueV0uam9pbigiICIpLC4uLigocnI9Ti5oaWRlKT09bnVsbD92b2lkIDA6cnIucmVmZXJlbmNlSGlkZGVuKSYme3Zpc2liaWxpdHk6ImhpZGRlbiIscG9pbnRlckV2ZW50czoibm9uZSJ9fSxkaXI6ZS5kaXIsY2hpbGRyZW46Zy5qc3goeWose3Njb3BlOm4scGxhY2VkU2lkZTpSLG9uQXJyb3dDaGFuZ2U6VCxhcnJvd1g6cSxhcnJvd1k6RSxzaG91bGRIaWRlQXJyb3c6WCxjaGlsZHJlbjpnLmpzeChVZS5kaXYseyJkYXRhLXNpZGUiOlIsImRhdGEtYWxpZ24iOlMsLi4ubSxyZWY6eCxzdHlsZTp7Li4ubS5zdHlsZSxhbmltYXRpb246Rz92b2lkIDA6Im5vbmUifX0pfSl9KX0pO3hiLmRpc3BsYXlOYW1lPXhwO3ZhciB3Yj0iUG9wcGVyQXJyb3ciLHhqPXt0b3A6ImJvdHRvbSIscmlnaHQ6ImxlZnQiLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCJ9LGJiPWIuZm9yd2FyZFJlZihmdW5jdGlvbih0LG4pe2NvbnN0e19fc2NvcGVQb3BwZXI6ciwuLi5pfT10LG89dmood2Iscikscz14altvLnBsYWNlZFNpZGVdO3JldHVybiBnLmpzeCgic3BhbiIse3JlZjpvLm9uQXJyb3dDaGFuZ2Usc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpvLmFycm93WCx0b3A6by5hcnJvd1ksW3NdOjAsdHJhbnNmb3JtT3JpZ2luOnt0b3A6IiIscmlnaHQ6IjAgMCIsYm90dG9tOiJjZW50ZXIgMCIsbGVmdDoiMTAwJSAwIn1bby5wbGFjZWRTaWRlXSx0cmFuc2Zvcm06e3RvcDoidHJhbnNsYXRlWSgxMDAlKSIscmlnaHQ6InRyYW5zbGF0ZVkoNTAlKSByb3RhdGUoOTBkZWcpIHRyYW5zbGF0ZVgoLTUwJSkiLGJvdHRvbToicm90YXRlKDE4MGRlZykiLGxlZnQ6InRyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSkifVtvLnBsYWNlZFNpZGVdLHZpc2liaWxpdHk6by5zaG91bGRIaWRlQXJyb3c\/ImhpZGRlbiI6dm9pZCAwfSxjaGlsZHJlbjpnLmpzeChtaix7Li4uaSxyZWY6bixzdHlsZTp7Li4uaS5zdHlsZSxkaXNwbGF5OiJibG9jayJ9fSl9KX0pO2JiLmRpc3BsYXlOYW1lPXdiO2Z1bmN0aW9uIHdqKGUpe3JldHVybiBlIT09bnVsbH12YXIgYmo9ZT0+KHtuYW1lOiJ0cmFuc2Zvcm1PcmlnaW4iLG9wdGlvbnM6ZSxmbih0KXt2YXIgdyxwLHY7Y29uc3R7cGxhY2VtZW50Om4scmVjdHM6cixtaWRkbGV3YXJlRGF0YTppfT10LHM9KCh3PWkuYXJyb3cpPT1udWxsP3ZvaWQgMDp3LmNlbnRlck9mZnNldCkhPT0wLGE9cz8wOmUuYXJyb3dXaWR0aCxsPXM\/MDplLmFycm93SGVpZ2h0LFt1LGNdPWtiKG4pLGQ9e3N0YXJ0OiIwJSIsY2VudGVyOiI1MCUiLGVuZDoiMTAwJSJ9W2NdLGg9KCgocD1pLmFycm93KT09bnVsbD92b2lkIDA6cC54KT8\/MCkrYS8yLGY9KCgodj1pLmFycm93KT09bnVsbD92b2lkIDA6di55KT8\/MCkrbC8yO2xldCB5PSIiLG09IiI7cmV0dXJuIHU9PT0iYm90dG9tIj8oeT1zP2Q6YCR7aH1weGAsbT1gJHstbH1weGApOnU9PT0idG9wIj8oeT1zP2Q6YCR7aH1weGAsbT1gJHtyLmZsb2F0aW5nLmhlaWdodCtsfXB4YCk6dT09PSJyaWdodCI\/KHk9YCR7LWx9cHhgLG09cz9kOmAke2Z9cHhgKTp1PT09ImxlZnQiJiYoeT1gJHtyLmZsb2F0aW5nLndpZHRoK2x9cHhgLG09cz9kOmAke2Z9cHhgKSx7ZGF0YTp7eDp5LHk6bX19fX0pO2Z1bmN0aW9uIGtiKGUpe2NvbnN0W3Qsbj0iY2VudGVyIl09ZS5zcGxpdCgiLSIpO3JldHVyblt0LG5dfXZhciBraj12YixTaj14YixDaj1iYixbVXUsVTNdPUZvKCJUb29sdGlwIixbbWJdKSx3cD1tYigpLFNiPSJUb29sdGlwUHJvdmlkZXIiLFRqPTcwMCxweT0idG9vbHRpcC5vcGVuIixbRWosQ2JdPVV1KFNiKSxUYj1lPT57Y29uc3R7X19zY29wZVRvb2x0aXA6dCxkZWxheUR1cmF0aW9uOm49VGosc2tpcERlbGF5RHVyYXRpb246cj0zMDAsZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6aT0hMSxjaGlsZHJlbjpvfT1lLHM9Yi51c2VSZWYoITApLGE9Yi51c2VSZWYoITEpLGw9Yi51c2VSZWYoMCk7cmV0dXJuIGIudXNlRWZmZWN0KCgpPT57Y29uc3QgdT1sLmN1cnJlbnQ7cmV0dXJuKCk9PndpbmRvdy5jbGVhclRpbWVvdXQodSl9LFtdKSxnLmpzeChFaix7c2NvcGU6dCxpc09wZW5EZWxheWVkUmVmOnMsZGVsYXlEdXJhdGlvbjpuLG9uT3BlbjpiLnVzZUNhbGxiYWNrKCgpPT57d2luZG93LmNsZWFyVGltZW91dChsLmN1cnJlbnQpLHMuY3VycmVudD0hMX0sW10pLG9uQ2xvc2U6Yi51c2VDYWxsYmFjaygoKT0+e3dpbmRvdy5jbGVhclRpbWVvdXQobC5jdXJyZW50KSxsLmN1cnJlbnQ9d2luZG93LnNldFRpbWVvdXQoKCk9PnMuY3VycmVudD0hMCxyKX0sW3JdKSxpc1BvaW50ZXJJblRyYW5zaXRSZWY6YSxvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2U6Yi51c2VDYWxsYmFjayh1PT57YS5jdXJyZW50PXV9LFtdKSxkaXNhYmxlSG92ZXJhYmxlQ29udGVudDppLGNoaWxkcmVuOm99KX07VGIuZGlzcGxheU5hbWU9U2I7dmFyIEViPSJUb29sdGlwIixbJDMsJHVdPVV1KEViKSxTZj0iVG9vbHRpcFRyaWdnZXIiLFBqPWIuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVUb29sdGlwOm4sLi4ucn09ZSxpPSR1KFNmLG4pLG89Q2IoU2Ysbikscz13cChuKSxhPWIudXNlUmVmKG51bGwpLGw9TXQodCxhLGkub25UcmlnZ2VyQ2hhbmdlKSx1PWIudXNlUmVmKCExKSxjPWIudXNlUmVmKCExKSxkPWIudXNlQ2FsbGJhY2soKCk9PnUuY3VycmVudD0hMSxbXSk7cmV0dXJuIGIudXNlRWZmZWN0KCgpPT4oKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixkKSxbZF0pLGcuanN4KGtqLHthc0NoaWxkOiEwLC4uLnMsY2hpbGRyZW46Zy5qc3goVWUuYnV0dG9uLHsiYXJpYS1kZXNjcmliZWRieSI6aS5vcGVuP2kuY29udGVudElkOnZvaWQgMCwiZGF0YS1zdGF0ZSI6aS5zdGF0ZUF0dHJpYnV0ZSwuLi5yLHJlZjpsLG9uUG9pbnRlck1vdmU6UmUoZS5vblBvaW50ZXJNb3ZlLGg9PntoLnBvaW50ZXJUeXBlIT09InRvdWNoIiYmIWMuY3VycmVudCYmIW8uaXNQb2ludGVySW5UcmFuc2l0UmVmLmN1cnJlbnQmJihpLm9uVHJpZ2dlckVudGVyKCksYy5jdXJyZW50PSEwKX0pLG9uUG9pbnRlckxlYXZlOlJlKGUub25Qb2ludGVyTGVhdmUsKCk9PntpLm9uVHJpZ2dlckxlYXZlKCksYy5jdXJyZW50PSExfSksb25Qb2ludGVyRG93bjpSZShlLm9uUG9pbnRlckRvd24sKCk9PntpLm9wZW4mJmkub25DbG9zZSgpLHUuY3VycmVudD0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLGQse29uY2U6ITB9KX0pLG9uRm9jdXM6UmUoZS5vbkZvY3VzLCgpPT57dS5jdXJyZW50fHxpLm9uT3BlbigpfSksb25CbHVyOlJlKGUub25CbHVyLGkub25DbG9zZSksb25DbGljazpSZShlLm9uQ2xpY2ssaS5vbkNsb3NlKX0pfSl9KTtQai5kaXNwbGF5TmFtZT1TZjt2YXIgQWo9IlRvb2x0aXBQb3J0YWwiLFtIMyxJal09VXUoQWose2ZvcmNlTW91bnQ6dm9pZCAwfSksTm89IlRvb2x0aXBDb250ZW50IixQYj1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdCBuPUlqKE5vLGUuX19zY29wZVRvb2x0aXApLHtmb3JjZU1vdW50OnI9bi5mb3JjZU1vdW50LHNpZGU6aT0idG9wIiwuLi5vfT1lLHM9JHUoTm8sZS5fX3Njb3BlVG9vbHRpcCk7cmV0dXJuIGcuanN4KE11LHtwcmVzZW50OnJ8fHMub3BlbixjaGlsZHJlbjpzLmRpc2FibGVIb3ZlcmFibGVDb250ZW50P2cuanN4KEFiLHtzaWRlOmksLi4ubyxyZWY6dH0pOmcuanN4KE5qLHtzaWRlOmksLi4ubyxyZWY6dH0pfSl9KSxOaj1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdCBuPSR1KE5vLGUuX19zY29wZVRvb2x0aXApLHI9Q2IoTm8sZS5fX3Njb3BlVG9vbHRpcCksaT1iLnVzZVJlZihudWxsKSxvPU10KHQsaSksW3MsYV09Yi51c2VTdGF0ZShudWxsKSx7dHJpZ2dlcjpsLG9uQ2xvc2U6dX09bixjPWkuY3VycmVudCx7b25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlOmR9PXIsaD1iLnVzZUNhbGxiYWNrKCgpPT57YShudWxsKSxkKCExKX0sW2RdKSxmPWIudXNlQ2FsbGJhY2soKHksbSk9Pntjb25zdCB3PXkuY3VycmVudFRhcmdldCxwPXt4OnkuY2xpZW50WCx5OnkuY2xpZW50WX0sdj1NaihwLHcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLHg9TGoocCx2KSxrPU9qKG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLFQ9X2ooWy4uLngsLi4ua10pO2EoVCksZCghMCl9LFtkXSk7cmV0dXJuIGIudXNlRWZmZWN0KCgpPT4oKT0+aCgpLFtoXSksYi51c2VFZmZlY3QoKCk9PntpZihsJiZjKXtjb25zdCB5PXc9PmYodyxjKSxtPXc9PmYodyxsKTtyZXR1cm4gbC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLHkpLGMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIixtKSwoKT0+e2wucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIix5KSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsbSl9fX0sW2wsYyxmLGhdKSxiLnVzZUVmZmVjdCgoKT0+e2lmKHMpe2NvbnN0IHk9bT0+e2NvbnN0IHc9bS50YXJnZXQscD17eDptLmNsaWVudFgseTptLmNsaWVudFl9LHY9KGw9PW51bGw\/dm9pZCAwOmwuY29udGFpbnModykpfHwoYz09bnVsbD92b2lkIDA6Yy5jb250YWlucyh3KSkseD0hRmoocCxzKTt2P2goKTp4JiYoaCgpLHUoKSl9O3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIseSksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix5KX19LFtsLGMscyx1LGhdKSxnLmpzeChBYix7Li4uZSxyZWY6b30pfSksW2pqLHpqXT1VdShFYix7aXNJbnNpZGU6ITF9KSxSaj1sMigiVG9vbHRpcENvbnRlbnQiKSxBYj1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVG9vbHRpcDpuLGNoaWxkcmVuOnIsImFyaWEtbGFiZWwiOmksb25Fc2NhcGVLZXlEb3duOm8sb25Qb2ludGVyRG93bk91dHNpZGU6cywuLi5hfT1lLGw9JHUoTm8sbiksdT13cChuKSx7b25DbG9zZTpjfT1sO3JldHVybiBiLnVzZUVmZmVjdCgoKT0+KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIocHksYyksKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIocHksYykpLFtjXSksYi51c2VFZmZlY3QoKCk9PntpZihsLnRyaWdnZXIpe2NvbnN0IGQ9aD0+e2NvbnN0IGY9aC50YXJnZXQ7ZiE9bnVsbCYmZi5jb250YWlucyhsLnRyaWdnZXIpJiZjKCl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixkLHtjYXB0dXJlOiEwfSksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLGQse2NhcHR1cmU6ITB9KX19LFtsLnRyaWdnZXIsY10pLGcuanN4KG9wLHthc0NoaWxkOiEwLGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czohMSxvbkVzY2FwZUtleURvd246byxvblBvaW50ZXJEb3duT3V0c2lkZTpzLG9uRm9jdXNPdXRzaWRlOmQ9PmQucHJldmVudERlZmF1bHQoKSxvbkRpc21pc3M6YyxjaGlsZHJlbjpnLmpzeHMoU2oseyJkYXRhLXN0YXRlIjpsLnN0YXRlQXR0cmlidXRlLC4uLnUsLi4uYSxyZWY6dCxzdHlsZTp7Li4uYS5zdHlsZSwiLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbiI6InZhcigtLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKSIsIi0tcmFkaXgtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCI6InZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtd2lkdGgpIiwiLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCI6InZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KSIsIi0tcmFkaXgtdG9vbHRpcC10cmlnZ2VyLXdpZHRoIjoidmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCkiLCItLXJhZGl4LXRvb2x0aXAtdHJpZ2dlci1oZWlnaHQiOiJ2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLWhlaWdodCkifSxjaGlsZHJlbjpbZy5qc3goUmose2NoaWxkcmVuOnJ9KSxnLmpzeChqaix7c2NvcGU6bixpc0luc2lkZTohMCxjaGlsZHJlbjpnLmpzeChqMix7aWQ6bC5jb250ZW50SWQscm9sZToidG9vbHRpcCIsY2hpbGRyZW46aXx8cn0pfSldfSl9KX0pO1BiLmRpc3BsYXlOYW1lPU5vO3ZhciBJYj0iVG9vbHRpcEFycm93IixEaj1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlVG9vbHRpcDpuLC4uLnJ9PWUsaT13cChuKTtyZXR1cm4gemooSWIsbikuaXNJbnNpZGU\/bnVsbDpnLmpzeChDaix7Li4uaSwuLi5yLHJlZjp0fSl9KTtEai5kaXNwbGF5TmFtZT1JYjtmdW5jdGlvbiBNaihlLHQpe2NvbnN0IG49TWF0aC5hYnModC50b3AtZS55KSxyPU1hdGguYWJzKHQuYm90dG9tLWUueSksaT1NYXRoLmFicyh0LnJpZ2h0LWUueCksbz1NYXRoLmFicyh0LmxlZnQtZS54KTtzd2l0Y2goTWF0aC5taW4obixyLGksbykpe2Nhc2UgbzpyZXR1cm4ibGVmdCI7Y2FzZSBpOnJldHVybiJyaWdodCI7Y2FzZSBuOnJldHVybiJ0b3AiO2Nhc2UgcjpyZXR1cm4iYm90dG9tIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24gTGooZSx0LG49NSl7Y29uc3Qgcj1bXTtzd2l0Y2godCl7Y2FzZSJ0b3AiOnIucHVzaCh7eDplLngtbix5OmUueStufSx7eDplLngrbix5OmUueStufSk7YnJlYWs7Y2FzZSJib3R0b20iOnIucHVzaCh7eDplLngtbix5OmUueS1ufSx7eDplLngrbix5OmUueS1ufSk7YnJlYWs7Y2FzZSJsZWZ0IjpyLnB1c2goe3g6ZS54K24seTplLnktbn0se3g6ZS54K24seTplLnkrbn0pO2JyZWFrO2Nhc2UicmlnaHQiOnIucHVzaCh7eDplLngtbix5OmUueS1ufSx7eDplLngtbix5OmUueStufSk7YnJlYWt9cmV0dXJuIHJ9ZnVuY3Rpb24gT2ooZSl7Y29uc3R7dG9wOnQscmlnaHQ6bixib3R0b206cixsZWZ0Oml9PWU7cmV0dXJuW3t4OmkseTp0fSx7eDpuLHk6dH0se3g6bix5OnJ9LHt4OmkseTpyfV19ZnVuY3Rpb24gRmooZSx0KXtjb25zdHt4Om4seTpyfT1lO2xldCBpPSExO2ZvcihsZXQgbz0wLHM9dC5sZW5ndGgtMTtvPHQubGVuZ3RoO3M9bysrKXtjb25zdCBhPXRbb10sbD10W3NdLHU9YS54LGM9YS55LGQ9bC54LGg9bC55O2M+ciE9aD5yJiZuPChkLXUpKihyLWMpLyhoLWMpK3UmJihpPSFpKX1yZXR1cm4gaX1mdW5jdGlvbiBfaihlKXtjb25zdCB0PWUuc2xpY2UoKTtyZXR1cm4gdC5zb3J0KChuLHIpPT5uLng8ci54Py0xOm4ueD5yLng\/MTpuLnk8ci55Py0xOm4ueT5yLnk\/MTowKSxWaih0KX1mdW5jdGlvbiBWaihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5zbGljZSgpO2NvbnN0IHQ9W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IGk9ZVtyXTtmb3IoO3QubGVuZ3RoPj0yOyl7Y29uc3Qgbz10W3QubGVuZ3RoLTFdLHM9dFt0Lmxlbmd0aC0yXTtpZigoby54LXMueCkqKGkueS1zLnkpPj0oby55LXMueSkqKGkueC1zLngpKXQucG9wKCk7ZWxzZSBicmVha310LnB1c2goaSl9dC5wb3AoKTtjb25zdCBuPVtdO2ZvcihsZXQgcj1lLmxlbmd0aC0xO3I+PTA7ci0tKXtjb25zdCBpPWVbcl07Zm9yKDtuLmxlbmd0aD49Mjspe2NvbnN0IG89bltuLmxlbmd0aC0xXSxzPW5bbi5sZW5ndGgtMl07aWYoKG8ueC1zLngpKihpLnktcy55KT49KG8ueS1zLnkpKihpLngtcy54KSluLnBvcCgpO2Vsc2UgYnJlYWt9bi5wdXNoKGkpfXJldHVybiBuLnBvcCgpLHQubGVuZ3RoPT09MSYmbi5sZW5ndGg9PT0xJiZ0WzBdLng9PT1uWzBdLngmJnRbMF0ueT09PW5bMF0ueT90OnQuY29uY2F0KG4pfXZhciBCaj1UYixOYj1QYjtjb25zdCBVaj1Caiwkaj1iLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSxzaWRlT2Zmc2V0OnQ9NCwuLi5ufSxyKT0+Zy5qc3goTmIse3JlZjpyLHNpZGVPZmZzZXQ6dCxjbGFzc05hbWU6T24oInotNTAgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJnLXBvcG92ZXIgcHgtMyBweS0xLjUgdGV4dC1zbSB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBzaGFkb3ctbWQgYW5pbWF0ZS1pbiBmYWRlLWluLTAgem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yIixlKSwuLi5ufSkpOyRqLmRpc3BsYXlOYW1lPU5iLmRpc3BsYXlOYW1lO2NvbnN0IHJ1PVt7Y29kZToiZW4iLG5hbWU6IkVuZ2xpc2giLG5hdGl2ZU5hbWU6IkVuZ2xpc2giLGZsYWc6IvCfh7rwn4e4IixkaXI6Imx0ciJ9LHtjb2RlOiJhciIsbmFtZToiQXJhYmljIixuYXRpdmVOYW1lOiLYp9mE2LnYsdio2YrYqSIsZmxhZzoi8J+HuPCfh6YiLGRpcjoicnRsIn0se2NvZGU6ImZhIixuYW1lOiJQZXJzaWFuIixuYXRpdmVOYW1lOiLZgdin2LHYs9uMIixmbGFnOiLwn4eu8J+HtyIsZGlyOiJydGwifSx7Y29kZToiZnIiLG5hbWU6IkZyZW5jaCIsbmF0aXZlTmFtZToiRnJhbsOnYWlzIixmbGFnOiLwn4er8J+HtyIsZGlyOiJsdHIifSx7Y29kZToiZXMiLG5hbWU6IlNwYW5pc2giLG5hdGl2ZU5hbWU6IkVzcGHDsW9sIixmbGFnOiLwn4eq8J+HuCIsZGlyOiJsdHIifSx7Y29kZToiZGUiLG5hbWU6Ikdlcm1hbiIsbmF0aXZlTmFtZToiRGV1dHNjaCIsZmxhZzoi8J+HqfCfh6oiLGRpcjoibHRyIn0se2NvZGU6Iml0IixuYW1lOiJJdGFsaWFuIixuYXRpdmVOYW1lOiJJdGFsaWFubyIsZmxhZzoi8J+HrvCfh7kiLGRpcjoibHRyIn0se2NvZGU6InB0IixuYW1lOiJQb3J0dWd1ZXNlIixuYXRpdmVOYW1lOiJQb3J0dWd1w6pzIixmbGFnOiLwn4en8J+HtyIsZGlyOiJsdHIifSx7Y29kZToibmwiLG5hbWU6IkR1dGNoIixuYXRpdmVOYW1lOiJOZWRlcmxhbmRzIixmbGFnOiLwn4ez8J+HsSIsZGlyOiJsdHIifSx7Y29kZToic3YiLG5hbWU6IlN3ZWRpc2giLG5hdGl2ZU5hbWU6IlN2ZW5za2EiLGZsYWc6IvCfh7jwn4eqIixkaXI6Imx0ciJ9LHtjb2RlOiJwbCIsbmFtZToiUG9saXNoIixuYXRpdmVOYW1lOiJQb2xza2kiLGZsYWc6IvCfh7Xwn4exIixkaXI6Imx0ciJ9LHtjb2RlOiJ0ciIsbmFtZToiVHVya2lzaCIsbmF0aXZlTmFtZToiVMO8cmvDp2UiLGZsYWc6IvCfh7nwn4e3IixkaXI6Imx0ciJ9LHtjb2RlOiJydSIsbmFtZToiUnVzc2lhbiIsbmF0aXZlTmFtZToi0KDRg9GB0YHQutC40LkiLGZsYWc6IvCfh7fwn4e6IixkaXI6Imx0ciJ9LHtjb2RlOiJoaSIsbmFtZToiSGluZGkiLG5hdGl2ZU5hbWU6IuCkueCkv+CkqOCljeCkpuClgCIsZmxhZzoi8J+HrvCfh7MiLGRpcjoibHRyIn0se2NvZGU6ImphIixuYW1lOiJKYXBhbmVzZSIsbmF0aXZlTmFtZToi5pel5pys6KqeIixmbGFnOiLwn4ev8J+HtSIsZGlyOiJsdHIifSx7Y29kZToia28iLG5hbWU6IktvcmVhbiIsbmF0aXZlTmFtZToi7ZWc6rWt7Ja0IixmbGFnOiLwn4ew8J+HtyIsZGlyOiJsdHIifSx7Y29kZToiemgiLG5hbWU6IkNoaW5lc2UiLG5hdGl2ZU5hbWU6IuS4reaWhyIsZmxhZzoi8J+HqPCfh7MiLGRpcjoibHRyIn0se2NvZGU6ImlkIixuYW1lOiJJbmRvbmVzaWFuIixuYXRpdmVOYW1lOiJCYWhhc2EgSW5kb25lc2lhIixmbGFnOiLwn4eu8J+HqSIsZGlyOiJsdHIifV0sSGo9ZT0+cnUuZmluZCh0PT50LmNvZGU9PT1lKXx8cnVbMF0scWo9KCk9Pntjb25zdCBlPW5hdmlnYXRvci5sYW5ndWFnZS5zcGxpdCgiLSIpWzBdLnRvTG93ZXJDYXNlKCksdD1ydS5maW5kKG49Pm4uY29kZT09PWUpO3JldHVybiB0P3QuY29kZToiZW4ifSxXaj17bmF2OntmZWF0dXJlczoiRmVhdHVyZXMiLGZvcllvdToiRm9yIFlvdSIsb3VyU3Rvcnk6Ik91ciBTdG9yeSIsZmFxOiJGQVEiLGxpYnJhcnk6IkxpYnJhcnkiLHRyeUZyZWU6IlRyeSBGcmVlIE5vdyJ9LGhlcm86e2JhZGdlOiLinKggWW91ciBNYWdpY2FsIFN0b3J5dGVsbGVyIix0aXRsZTE6IllvdXIgTWFnaWNhbCIsdGl0bGUyOiJTdG9yeXRlbGxlciIsZGVzY3JpcHRpb246IlR1cm4gYW55IFBERiwgRVBVQiwgb3IgVFhUIGJvb2sgaW50byBhbiBpbW1lcnNpdmUgYXVkaW9ib29rIGluc3RhbnRseS4gVXBsb2FkLCB0cmFuc2xhdGUsIGFuZCBsaXN0ZW4gaW4gMTgrIGxhbmd1YWdlcyB3aXRoIG5hdHVyYWwgQUkgdm9pY2VzIGFuZCBhdG1vc3BoZXJpYyBtdXNpYy4ifSxib29rczp7YmFkZ2U6IkFJLVBvd2VyZWQgTGlicmFyeSIsdGl0bGU6IkV4cGxvcmUgT3VyIE1hZ2ljYWwgTGlicmFyeSDinKgiLGRlc2NyaXB0aW9uOiJEaXNjb3ZlciBib29rcyBhbmQgbGV0IEFJIG5hcnJhdGUgdGhlbSBpbiBhbnkgbGFuZ3VhZ2UgeW91IHdhbnQiLGN0YToiU3RhcnQgTGlzdGVuaW5nIEZyZWUiLGFpTmFycmF0ZWQ6IkFJIE5hcnJhdGVkIn0sZmVhdHVyZXM6e2JhZGdlOiJQb3dlcmVkIGJ5IEFJIE1hZ2ljIix0aXRsZToiRW5jaGFudGluZyBGZWF0dXJlcyDinKgiLGRlc2NyaXB0aW9uOiJFdmVyeSBmZWF0dXJlIGlzIGNyYWZ0ZWQgd2l0aCBBSSBpbnRlbGxpZ2VuY2UgdG8gbWFrZSB5b3VyIHJlYWRpbmcgZXhwZXJpZW5jZSB0cnVseSBtYWdpY2FsIixpdGVtczp7dm9pY2VUaXRsZToiQUkgVm9pY2UgTmFycmF0aW9uIix2b2ljZURlc2M6Ik1hbGUgYW5kIGZlbWFsZSBBSSB2b2ljZXMgd2l0aCBhdG1vc3BoZXJpYyBiYWNrZ3JvdW5kIG11c2ljIGZvciBpbW1lcnNpdmUgc3Rvcnl0ZWxsaW5nIix0cmFuc2xhdGVUaXRsZToiU21hcnQgVHJhbnNsYXRpb24iLHRyYW5zbGF0ZURlc2M6Ikluc3RhbnRseSB0cmFuc2xhdGUgYW5kIG5hcnJhdGUgaW4gMTgrIGxhbmd1YWdlcyBpbmNsdWRpbmcgRW5nbGlzaCwgRnJlbmNoLCBBcmFiaWMsIGFuZCBtb3JlIixsaWJyYXJ5VGl0bGU6IlBlcnNvbmFsIEFJIExpYnJhcnkiLGxpYnJhcnlEZXNjOiJBSS1wb3dlcmVkIHN1bW1hcmllcywgcmVjb21tZW5kYXRpb25zLCBhbmQgc21hcnQgc3VnZ2VzdGlvbnMgdGFpbG9yZWQganVzdCBmb3IgeW91IixmYW1pbHlUaXRsZToiRmFtaWx5IFN0b3J5dGVsbGluZyIsZmFtaWx5RGVzYzoiTGV0IHlvdXIga2lkcyBsaXN0ZW4gdG8gYm9va3MgZnJvbSBhbnkgY3VsdHVyZSDigJQgcGVyZmVjdCBmb3IgbGFuZ3VhZ2UgbGVhcm5pbmciLGFjY2Vzc1RpdGxlOiJBY2Nlc3NpYmlsaXR5IEZpcnN0IixhY2Nlc3NEZXNjOiJObyByZXN0cmljdGlvbnMgb24gYm9vayB0eXBlLiBQZXJmZWN0IGZvciB2aXNpb24gY2hhbGxlbmdlcyDigJQgZW5qb3kgbGlzdGVuaW5nIGFnYWluIixzeW5jVGl0bGU6IlN5bmMgRXZlcnl3aGVyZSIsc3luY0Rlc2M6IllvdXIgbGlicmFyeSBzeW5jcyBhY3Jvc3MgYWxsIGRldmljZXMuIFN0YXJ0IG9uIHBob25lLCBjb250aW51ZSBvbiB0YWJsZXQifX0sYXVkaWVuY2VzOnt0aXRsZToiUGVyZmVjdCBGb3IgRXZlcnlvbmUg8J+MnyIsZGVzY3JpcHRpb246IldoYXRldmVyIHlvdXIgcmVhc29uIGZvciBsb3Zpbmcgc3RvcmllcywgU2hhaHJ6YWQgaGFzIHlvdSBjb3ZlcmVkIixwYXJlbnRzOnt0aXRsZToiUGFyZW50cyAmIEZhbWlsaWVzIixkZXNjOiJDcmVhdGUgbWFnaWNhbCBiZWR0aW1lIGV4cGVyaWVuY2VzIGFuZCBpbnRyb2R1Y2UgY2hpbGRyZW4gdG8gc3RvcmllcyBmcm9tIGFyb3VuZCB0aGUgd29ybGQiLHBvaW50czpbIlVwbG9hZCBmYW1pbHktZmF2b3JpdGUgYm9va3MiLCJFeHBvc2Uga2lkcyB0byBtdWx0aXBsZSBsYW5ndWFnZXMiLCJTYWZlLCBhZC1mcmVlIGxpc3RlbmluZyJdfSxsZWFybmVyczp7dGl0bGU6Ikxhbmd1YWdlIExlYXJuZXJzIixkZXNjOiJNYXN0ZXIgbmV3IGxhbmd1YWdlcyB0aHJvdWdoIGltbWVyc2l2ZSBzdG9yeXRlbGxpbmcgd2l0aCBuYXRpdmUgcHJvbnVuY2lhdGlvbiIscG9pbnRzOlsiTGlzdGVuIGluIHlvdXIgdGFyZ2V0IGxhbmd1YWdlIiwiQ29tcGFyZSB0cmFuc2xhdGlvbnMgc2lkZS1ieS1zaWRlIiwiMTgrIGxhbmd1YWdlcyBhdmFpbGFibGUiXX0sYWNjZXNzaWJpbGl0eTp7dGl0bGU6IkFjY2Vzc2liaWxpdHkgVXNlcnMiLGRlc2M6IlJlZGlzY292ZXIgdGhlIGpveSBvZiByZWFkaW5nIHJlZ2FyZGxlc3Mgb2YgdmlzdWFsIGxpbWl0YXRpb25zIixwb2ludHM6WyJBbnkgYm9vayBiZWNvbWVzIGFuIGF1ZGlvYm9vayIsIkFkanVzdGFibGUgc3BlZWQgYW5kIHZvaWNlIiwiV29ya3Mgd2l0aCBhbnkgZm9ybWF0Il19LHJlYWRlcnM6e3RpdGxlOiJCb29rIENsdWJzICYgUmVhZGVycyIsZGVzYzoiVHJhbnNmb3JtIHlvdXIgcmVhZGluZyBleHBlcmllbmNlIGFuZCBzaGFyZSBzdG9yaWVzIHdpdGggZnJpZW5kcyIscG9pbnRzOlsiTGlzdGVuIHdoaWxlIGNvbW11dGluZyIsIkFJLWdlbmVyYXRlZCBzdW1tYXJpZXMiLCJTeW5jIGFjcm9zcyBhbGwgZGV2aWNlcyJdfX0sc3Rvcnk6e2JhZGdlOiLwn5KrIE91ciBTdG9yeSIsdGl0bGUxOiJJbnNwaXJlZCBieSIsdGl0bGUyOiIxMDAxIE5pZ2h0cyIscDE6IlNoYWhyemFkIGlzIG5hbWVkIGFmdGVyIHRoZSBsZWdlbmRhcnkgc3Rvcnl0ZWxsZXIgZnJvbSBPbmUgVGhvdXNhbmQgYW5kIE9uZSBOaWdodHMg4oCUIHRoZSBjbGV2ZXIgcHJpbmNlc3Mgd2hvIHNhdmVkIGhlciBvd24gbGlmZSB0aHJvdWdoIHRoZSBwb3dlciBvZiBjYXB0aXZhdGluZyBzdG9yaWVzLiBMaWtlIGhlciwgd2UgYmVsaWV2ZSBzdG9yaWVzIGhhdmUgdHJhbnNmb3JtYXRpdmUgcG93ZXIgdGhhdCB0cmFuc2NlbmRzIGxhbmd1YWdlIGFuZCBjdWx0dXJlLiIscXVvdGU6IkV2ZXJ5IHBlcnNvbiBzaG91bGQgaGF2ZSBhY2Nlc3MgdG8gZXZlcnkgc3RvcnksIGluIGV2ZXJ5IGxhbmd1YWdlLCBpbiBhIHZvaWNlIHRoYXQgc3BlYWtzIHRvIHRoZWlyIHNvdWwuIixwMjoiT3VyIG1pc3Npb24gaXMgdG8gZGVtb2NyYXRpemUgc3Rvcnl0ZWxsaW5nIHRocm91Z2ggQUkgdGVjaG5vbG9neS4gV2hldGhlciB5b3UncmUgYSBwYXJlbnQgd2FudGluZyB0byBzaGFyZSBjdWx0dXJhbCBoZXJpdGFnZSwgYSBsYW5ndWFnZSBsZWFybmVyIHNlZWtpbmcgaW1tZXJzaW9uLCBvciBzaW1wbHkgYSBib29rIGxvdmVyIHdhbnRpbmcgbW9yZSBvcHRpb25zIOKAlCBTaGFocnphZCB3YXMgYnVpbHQgZm9yIHlvdS4ifSxmYXE6e2JhZGdlOiJHb3QgUXVlc3Rpb25zPyIsdGl0bGU6IkZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIixkZXNjcmlwdGlvbjoiRXZlcnl0aGluZyB5b3UgbmVlZCB0byBrbm93IGFib3V0IFNoYWhyemFkJ3MgQUkgbWFnaWMiLGl0ZW1zOlt7cToiSG93IGRvZXMgU2hhaHJ6YWQncyBBSSBuYXJyYXRpb24gd29yaz8iLGE6Ik91ciBBSSBhbmFseXplcyB0aGUgdGV4dCwgdW5kZXJzdGFuZHMgY29udGV4dCBhbmQgZW1vdGlvbiwgdGhlbiBnZW5lcmF0ZXMgbmF0dXJhbC1zb3VuZGluZyBuYXJyYXRpb24gd2l0aCB0aGUgcGVyZmVjdCB0b25lIOKAlCBjb21wbGV0ZSB3aXRoIGF0bW9zcGhlcmljIGJhY2tncm91bmQgbXVzaWMuIn0se3E6IldoYXQgYm9vayBmb3JtYXRzIGRvZXMgU2hhaHJ6YWQgc3VwcG9ydD8iLGE6IlNoYWhyemFkIHN1cHBvcnRzIFBERiwgRVBVQiwgYW5kIFRYVCBmb3JtYXRzLiBTaW1wbHkgdXBsb2FkIHlvdXIgZmlsZSBhbmQgb3VyIEFJIHdpbGwgcHJvY2VzcyBpdCBmb3IgbmFycmF0aW9uLiJ9LHtxOiJIb3cgbWFueSBsYW5ndWFnZXMgYXJlIGF2YWlsYWJsZT8iLGE6IjE4KyBsYW5ndWFnZXMgaW5jbHVkaW5nIEVuZ2xpc2gsIEZyZW5jaCwgQXJhYmljLCBNYW5kYXJpbiwgU3BhbmlzaCwgUnVzc2lhbiwgR2VybWFuLCBKYXBhbmVzZSwgYW5kIG1vcmUg4oCUIGVhY2ggd2l0aCBtYWxlIGFuZCBmZW1hbGUgdm9pY2Ugb3B0aW9ucy4ifSx7cToiQ2FuIEkgdXNlIFNoYWhyemFkIG9mZmxpbmU\/IixhOiJPbmNlIGEgYm9vayBpcyBwcm9jZXNzZWQgYW5kIGRvd25sb2FkZWQsIHlvdSBjYW4gbGlzdGVuIG9mZmxpbmUuIEluaXRpYWwgcHJvY2Vzc2luZyByZXF1aXJlcyBhbiBpbnRlcm5ldCBjb25uZWN0aW9uLiJ9LHtxOiJJcyBteSB1cGxvYWRlZCBjb250ZW50IHByaXZhdGU\/IixhOiJBYnNvbHV0ZWx5LiBZb3VyIGJvb2tzIGFuZCBsaWJyYXJ5IGFyZSBwcml2YXRlIHRvIHlvdXIgYWNjb3VudC4gV2UgZG9uJ3Qgc2hhcmUgY29udGVudCB3aXRoIHRoaXJkIHBhcnRpZXMuIn0se3E6IkhvdyBkb2VzIFNoYWhyemFkIGNvbXBhcmUgdG8gQXVkaWJsZT8iLGE6IlVubGlrZSB0cmFkaXRpb25hbCBzZXJ2aWNlcywgU2hhaHJ6YWQgbGV0cyB5b3UgdXBsb2FkIEFOWSBib29rIGZvciBpbnN0YW50IEFJIG5hcnJhdGlvbi4gUGx1cywgdHJhbnNsYXRlIGFuZCBsaXN0ZW4gaW4gbXVsdGlwbGUgbGFuZ3VhZ2VzIOKAlCB3aXRoIHRoZSBtYWdpYyBvZiBBSSB2b2ljZXMuIn1dfSxmb290ZXI6e2NvcHlyaWdodDoiwqkge3llYXJ9IFNoYWhyemFkLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBZb3VyIE1hZ2ljYWwgQUkgU3Rvcnl0ZWxsZXIg4pyoIixwcml2YWN5OiJQcml2YWN5IFBvbGljeSIsdGVybXM6IlRlcm1zIG9mIFVzZSJ9LGNoYXQ6e2dyZWV0aW5nOiJIaSB0aGVyZSEg8J+RiyBJJ20gU2hhaHJ6YWQncyBBSSBhc3Npc3RhbnQuIEhvdyBjYW4gSSBoZWxwIHlvdSB0b2RheT8iLHBsYWNlaG9sZGVyOiJUeXBlIHlvdXIgbWVzc2FnZS4uLiIsZW5kQ2hhdDoiRW5kIGNoYXQgJiBsZWF2ZSBjb250YWN0IGluZm8iLGNvbnRhY3RQcm9tcHQ6IkxlYXZlIHlvdXIgZGV0YWlscyBzbyB3ZSBjYW4gZm9sbG93IHVwIixuYW1lUGxhY2Vob2xkZXI6IllvdXIgbmFtZSIsY29udGFjdFBsYWNlaG9sZGVyOiJFbWFpbCBvciBwaG9uZSBudW1iZXIiLHN1Ym1pdDoiU3VibWl0Iixza2lwOiJTa2lwIixzZW5kaW5nOiJTZW5kaW5nLi4uIixuZXdDb252ZXJzYXRpb246IlN0YXJ0IGEgbmV3IGNvbnZlcnNhdGlvbiIsYXNzaXN0YW50OiJTaGFocnphZCBBc3Npc3RhbnQiLG9ubGluZToiT25saW5lIn19LEtqPXtuYXY6e2ZlYXR1cmVzOiLYp9mE2YXZhdmK2LLYp9iqIixmb3JZb3U6ItmE2KPYrNmE2YMiLG91clN0b3J5OiLZgti12KrZhtinIixmYXE6Itin2YTYo9iz2KbZhNipINin2YTYtNin2KbYudipIixsaWJyYXJ5OiLYp9mE2YXZg9iq2KjYqSIsdHJ5RnJlZToi2KzYsdmR2Kgg2YXYrNin2YbYp9mLIn0saGVybzp7YmFkZ2U6IuKcqCDYsdin2YjZitiq2YMg2KfZhNiz2K3YsdmK2KkiLHRpdGxlMToi2LHYp9mI2YrYqtmDIix0aXRsZTI6Itin2YTYs9it2LHZitipIixkZXNjcmlwdGlvbjoi2K3ZiNmR2YQg2KPZiiDZg9iq2KfYqCBQREYg2KPZiCBFUFVCINij2YggVFhUINil2YTZiSDZg9iq2KfYqCDYtdmI2KrZiiDZgdmI2LHYp9mLLiDYp9ix2YHYudiMINiq2LHYrNmF2Iwg2YjYp9iz2KrZhdi5INio2KPZg9ir2LEg2YXZhiAxOCDZhNi62Kkg2KjYo9i12YjYp9iqINiw2YPYp9ihINin2LXYt9mG2KfYudmKINi32KjZiti52YrYqSDZiNmF2YjYs9mK2YLZiSDYrNmI2YrYqS4ifSxib29rczp7YmFkZ2U6ItmF2YPYqtio2Kkg2KjYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKIix0aXRsZToi2KfYs9iq2YPYtNmBINmF2YPYqtio2KrZhtinINin2YTYs9it2LHZitipIOKcqCIsZGVzY3JpcHRpb246Itin2YPYqti02YEg2KfZhNmD2KrYqCDZiNiv2Lkg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZiiDZitix2YjZitmH2Kcg2KjYo9mKINmE2LrYqSDYqtix2YrYryIsY3RhOiLYp9io2K\/YoyDYp9mE2KfYs9iq2YXYp9i5INmF2KzYp9mG2KfZiyIsYWlOYXJyYXRlZDoi2LHZiNin2YrYqSBBSSJ9LGZlYXR1cmVzOntiYWRnZToi2YXYr9i52YjZhSDYqNiz2K3YsSBBSSIsdGl0bGU6ItmF2YXZitiy2KfYqiDYs9in2K3YsdipIOKcqCIsZGVzY3JpcHRpb246ItmD2YQg2YXZitiy2Kkg2YXYtdmF2YXYqSDYqNiw2YPYp9ihINin2LXYt9mG2KfYudmKINmE2KzYudmEINiq2KzYsdio2Kkg2KfZhNmC2LHYp9ih2Kkg2LPYrdix2YrYqSDYrdmC2KfZiyIsaXRlbXM6e3ZvaWNlVGl0bGU6Itix2YjYp9mK2Kkg2LXZiNiq2YrYqSDYqNin2YTZgCBBSSIsdm9pY2VEZXNjOiLYo9i12YjYp9iqINiw2YPZiNixINmI2KXZhtin2Ksg2YXYuSDZhdmI2LPZitmC2Ykg2K7ZhNmB2YrYqSDYrNmI2YrYqSDZhNix2YjYp9mK2Kkg2LrYp9mF2LHYqSIsdHJhbnNsYXRlVGl0bGU6Itiq2LHYrNmF2Kkg2LDZg9mK2KkiLHRyYW5zbGF0ZURlc2M6Itiq2LHYrNmFINmB2YjYsdin2Ysg2YjYp9ix2Ygg2KjYo9mD2KvYsSDZhdmGIDE4INmE2LrYqSDYqti02YXZhCDYp9mE2KXZhtis2YTZitiy2YrYqSDZiNin2YTZgdix2YbYs9mK2Kkg2YjYp9mE2LnYsdio2YrYqSDZiNij2YPYq9ixIixsaWJyYXJ5VGl0bGU6ItmF2YPYqtio2KrZgyDYp9mE2LTYrti12YrYqSIsbGlicmFyeURlc2M6ItmF2YTYrti12KfYqiDZiNiq2YjYtdmK2KfYqiDZiNin2YLYqtix2KfYrdin2Kog2LDZg9mK2Kkg2YXYtdmF2YXYqSDYrti12YrYtdin2Ysg2YTZgyIsZmFtaWx5VGl0bGU6Itix2YjYp9mK2Kkg2LnYp9im2YTZitipIixmYW1pbHlEZXNjOiLYr9i5INij2LfZgdin2YTZgyDZitiz2KrZhdi52YjZhiDZhNmD2KrYqCDZhdmGINij2Yog2KvZgtin2YHYqSDigJQg2YXYq9in2YTZiiDZhNiq2LnZhNmFINin2YTZhNi62KfYqiIsYWNjZXNzVGl0bGU6Itil2YXZg9in2YbZitipINin2YTZiNi12YjZhCDYo9mI2YTYp9mLIixhY2Nlc3NEZXNjOiLZhNinINmC2YrZiNivINi52YTZiSDZhtmI2Lkg2KfZhNmD2KrYp9ioLiDZhdir2KfZhNmKINmE2YXZhiDZiti52KfZhtmKINmF2YYg2KrYrdiv2YrYp9iqINio2LXYsdmK2KkiLHN5bmNUaXRsZToi2YXYstin2YXZhtipINmB2Yog2YPZhCDZhdmD2KfZhiIsc3luY0Rlc2M6ItmF2YPYqtio2KrZgyDYqtiq2LLYp9mF2YYg2LnYqNixINis2YXZiti5INin2YTYo9is2YfYstipLiDYp9io2K\/YoyDYudmE2Ykg2KfZhNmH2KfYqtmB2Iwg2KPZg9mF2YQg2LnZhNmJINin2YTYrNmH2KfYsiDYp9mE2YTZiNit2YoifX0sYXVkaWVuY2VzOnt0aXRsZToi2YXYq9in2YTZiiDZhNmE2KzZhdmK2Lkg8J+MnyIsZGVzY3JpcHRpb246ItmF2YfZhdinINmD2KfZhiDYs9io2Kgg2K3YqNmDINmE2YTZgti12LXYjCDYtNmH2LHYstin2K8g2KrYuti32YrZgyIscGFyZW50czp7dGl0bGU6Itin2YTYotio2KfYoSDZiNin2YTYudin2KbZhNin2KoiLGRlc2M6Itin2LXZhti5INiq2KzYp9ix2Kgg2YbZiNmFINiz2K3YsdmK2Kkg2YjYudix2ZHZgSDYo9i32YHYp9mE2YMg2LnZhNmJINmC2LXYtSDZhdmGINit2YjZhCDYp9mE2LnYp9mE2YUiLHBvaW50czpbItin2LHZgdi5INmD2KrYqCDYp9mE2LnYp9im2YTYqSDYp9mE2YXZgdi22YTYqSIsIti52LHZkdi2INij2LfZgdin2YTZgyDZhNi52K\/YqSDZhNi62KfYqiIsItin2LPYqtmF2KfYuSDYotmF2YYg2KjYr9mI2YYg2KXYudmE2KfZhtin2KoiXX0sbGVhcm5lcnM6e3RpdGxlOiLZhdiq2LnZhNmF2Ygg2KfZhNmE2LrYp9iqIixkZXNjOiLYo9iq2YLZhiDZhNi62KfYqiDYrNiv2YrYr9ipINmF2YYg2K7ZhNin2YQg2LHZiNin2YrYqSDZgti12LXZitipINi62KfZhdix2Kkg2KjZhti32YIg2KPYtdmE2YoiLHBvaW50czpbItin2LPYqtmF2Lkg2KjZhNi62KrZgyDYp9mE2YXYs9iq2YfYr9mB2KkiLCLZgtin2LHZhiDYp9mE2KrYsdis2YXYp9iqINis2YbYqNin2Ysg2KXZhNmJINis2YbYqCIsItij2YPYq9ixINmF2YYgMTgg2YTYutipINmF2KrYp9it2KkiXX0sYWNjZXNzaWJpbGl0eTp7dGl0bGU6ItmF2LPYqtiu2K\/ZhdmIINil2YXZg9in2YbZitipINin2YTZiNi12YjZhCIsZGVzYzoi2KPYudivINin2YPYqti02KfZgSDZhdiq2LnYqSDYp9mE2YLYsdin2KHYqSDYqNi62LYg2KfZhNmG2LjYsSDYudmGINin2YTZgtmK2YjYryDYp9mE2KjYtdix2YrYqSIscG9pbnRzOlsi2KPZiiDZg9iq2KfYqCDZiti12KjYrSDZg9iq2KfYqNin2Ysg2LXZiNiq2YrYp9mLIiwi2LPYsdi52Kkg2YjYtdmI2Kog2YLYp9io2YTYp9mGINmE2YTYqti52K\/ZitmEIiwi2YrYudmF2YQg2YXYuSDYo9mKINi12YrYutipIl19LHJlYWRlcnM6e3RpdGxlOiLZhtmI2KfYr9mKINin2YTZg9iq2Kgg2YjYp9mE2YLYsdin2KEiLGRlc2M6Itit2YjZkdmEINiq2KzYsdio2Kkg2YLYsdin2KHYqtmDINmI2LTYp9ix2YMg2KfZhNmC2LXYtSDZhdi5INin2YTYo9i12K\/Zgtin2KEiLHBvaW50czpbItin2LPYqtmF2Lkg2KPYq9mG2KfYoSDYp9mE2KrZhtmC2YQiLCLZhdmE2K7Ytdin2Kog2KjYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKIiwi2YXYstin2YXZhtipINi52KjYsSDYrNmF2YrYuSDYp9mE2KPYrNmH2LLYqSJdfX0sc3Rvcnk6e2JhZGdlOiLwn5KrINmC2LXYqtmG2KciLHRpdGxlMToi2YXYs9iq2YjYrdin2Kkg2YXZhiIsdGl0bGUyOiLYo9mE2YEg2YTZitmE2Kkg2YjZhNmK2YTYqSIscDE6Iti02YfYsdiy2KfYryDYs9mP2YXZitiqINi52YTZiSDYp9iz2YUg2KfZhNix2KfZiNmK2Kkg2KfZhNij2LPYt9mI2LHZitipINmF2YYg2KPZhNmBINmE2YrZhNipINmI2YTZitmE2Kkg4oCUINin2YTYo9mF2YrYsdipINin2YTYsNmD2YrYqSDYp9mE2KrZiiDYo9mG2YLYsNiqINit2YrYp9iq2YfYpyDYqNmC2YjYqSDYp9mE2YLYtdi1INin2YTYotiz2LHYqS4g2YXYq9mE2YfYp9iMINmG2KTZhdmGINij2YYg2KfZhNmC2LXYtSDZhNmH2Kcg2YLZiNipINiq2K3ZiNmK2YTZitipINiq2KrYrNin2YjYsiDYp9mE2YTYutipINmI2KfZhNir2YLYp9mB2KkuIixxdW90ZToi2YPZhCDYtNiu2LUg2YrYs9iq2K3ZgiDYp9mE2YjYtdmI2YQg2KXZhNmJINmD2YQg2YLYtdip2Iwg2KjZg9mEINmE2LrYqdiMINio2LXZiNiqINmK2KrYrdiv2Ksg2KXZhNmJINix2YjYrdmHLiIscDI6ItmF2YfZhdiq2YbYpyDZh9mKINil2KrYp9it2Kkg2LHZiNin2YrYqSDYp9mE2YLYtdi1INmE2YTYrNmF2YrYuSDZhdmGINiu2YTYp9mEINiq2YLZhtmK2Kkg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZii4g2LPZiNin2KEg2YPZhtiqINmI2KfZhNiv2KfZiyDZitix2YrYryDZhdi02KfYsdmD2Kkg2KfZhNiq2LHYp9irINin2YTYq9mC2KfZgdmK2Iwg2KPZiCDZhdiq2LnZhNmFINmE2LrYp9iqINmK2KjYrdirINi52YYg2KfZhNin2YbYutmF2KfYs9iMINij2Ygg2KjYqNiz2KfYt9ipINmF2K3YqCDZhNmE2YPYqtioINmK2LHZitivINiu2YrYp9ix2KfYqiDYo9mD2KvYsSDigJQg2LTZh9ix2LLYp9ivINio2Y\/ZhtmK2Kog2YTYo9is2YTZgy4ifSxmYXE6e2JhZGdlOiLZhNiv2YrZgyDYo9iz2KbZhNip2J8iLHRpdGxlOiLYp9mE2KPYs9im2YTYqSDYp9mE2LTYp9im2LnYqSIsZGVzY3JpcHRpb246ItmD2YQg2YXYpyDYqtit2KrYp9isINmF2LnYsdmB2KrZhyDYudmGINiz2K3YsSDYtNmH2LHYstin2K8iLGl0ZW1zOlt7cToi2YPZitmBINiq2LnZhdmEINix2YjYp9mK2Kkg2LTZh9ix2LLYp9ivINio2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZitifIixhOiLZitit2YTZhCDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKINin2YTZhti12Iwg2YrZgdmH2YUg2KfZhNiz2YrYp9mCINmI2KfZhNi52KfYt9mB2KnYjCDYq9mFINmK2YjZhNmR2K8g2LHZiNin2YrYqSDYt9io2YrYudmK2Kkg2KjYp9mE2YbYqNix2Kkg2KfZhNmF2KvYp9mE2YrYqSDigJQg2YXYuSDZhdmI2LPZitmC2Ykg2K7ZhNmB2YrYqSDYrNmI2YrYqS4ifSx7cToi2YXYpyDYtdmK2Log2KfZhNmD2KrYqCDYp9mE2KrZiiDYqtiv2LnZhdmH2Kcg2LTZh9ix2LLYp9iv2J8iLGE6Itiq2K\/YudmFINi02YfYsdiy2KfYryDYtdmK2LogUERGINmIIEVQVUIg2YggVFhULiDYqNio2LPYp9i32Kkg2KfYsdmB2Lkg2YXZhNmB2YMg2YjYs9mK2LnYp9mE2KzZhyDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKINmE2YTYsdmI2KfZitipLiJ9LHtxOiLZg9mFINi52K\/YryDYp9mE2YTYutin2Kog2KfZhNmF2KrYp9it2KnYnyIsYToi2KPZg9ir2LEg2YXZhiAxOCDZhNi62Kkg2KrYtNmF2YQg2KfZhNil2YbYrNmE2YrYstmK2Kkg2YjYp9mE2YHYsdmG2LPZitipINmI2KfZhNi52LHYqNmK2Kkg2YjYp9mE2LXZitmG2YrYqSDZiNin2YTYpdiz2KjYp9mG2YrYqSDZiNin2YTYsdmI2LPZitipINmI2KfZhNij2YTZhdin2YbZitipINmI2KfZhNmK2KfYqNin2YbZitipINmI2KPZg9ir2LEg4oCUINmD2YQg2YXZhtmH2Kcg2KjYrtmK2KfYsdin2Kog2LXZiNiqINiw2YPZiNixINmI2KXZhtin2KsuIn0se3E6ItmH2YQg2YrZhdmD2YbZhtmKINin2LPYqtiu2K\/Yp9mFINi02YfYsdiy2KfYryDYqNiv2YjZhiDYpdmG2KrYsdmG2KrYnyIsYToi2KjZhdis2LHYryDZhdi52KfZhNis2Kkg2KfZhNmD2KrYp9ioINmI2KrYrdmF2YrZhNmH2Iwg2YrZhdmD2YbZgyDYp9mE2KfYs9iq2YXYp9i5INio2K\/ZiNmGINil2YbYqtix2YbYqi4g2KfZhNmF2LnYp9mE2KzYqSDYp9mE2KPZiNmE2YrYqSDYqtiq2LfZhNioINin2KrYtdin2YTYp9mLINio2KfZhNil2YbYqtix2YbYqi4ifSx7cToi2YfZhCDZhdit2KrZiNin2Yog2KfZhNmF2LHZgdmI2Lkg2K7Yp9i12J8iLGE6Itio2KfZhNiq2KPZg9mK2K8uINmD2KrYqNmDINmI2YXZg9iq2KjYqtmDINiu2KfYtdipINio2K3Ys9in2KjZgy4g2YTYpyDZhti02KfYsdmDINin2YTZhdit2KrZiNmJINmF2Lkg2KPYt9ix2KfZgSDYq9in2YTYq9ipLiJ9LHtxOiLZg9mK2YEg2KrZgtin2LHZhiDYtNmH2LHYstin2K8g2KjZgCBBdWRpYmxl2J8iLGE6Iti52YTZiSDYudmD2LMg2KfZhNiu2K\/Zhdin2Kog2KfZhNiq2YLZhNmK2K\/Zitip2Iwg2KrYqtmK2K0g2YTZgyDYtNmH2LHYstin2K8g2LHZgdi5INij2Yog2YPYqtin2Kgg2YTZhNix2YjYp9mK2Kkg2KfZhNmB2YjYsdmK2Kkg2KjYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKLiDYqNin2YTYpdi22KfZgdipINil2YTZiSDYp9mE2KrYsdis2YXYqSDZiNin2YTYp9iz2KrZhdin2Lkg2KjYudiv2Kkg2YTYutin2KouIn1dfSxmb290ZXI6e2NvcHlyaWdodDoiwqkge3llYXJ9INi02YfYsdiy2KfYry4g2KzZhdmK2Lkg2KfZhNit2YLZiNmCINmF2K3ZgdmI2LjYqS4g2LHYp9mI2YrYqtmDINin2YTYs9it2LHZitipIOKcqCIscHJpdmFjeToi2LPZitin2LPYqSDYp9mE2K7YtdmI2LXZitipIix0ZXJtczoi2LTYsdmI2Lcg2KfZhNin2LPYqtiu2K\/Yp9mFIn0sY2hhdDp7Z3JlZXRpbmc6ItmF2LHYrdio2KfZiyEg8J+RiyDYo9mG2Kcg2YXYs9in2LnYryDYtNmH2LHYstin2K8uINmD2YrZgSDZitmF2YPZhtmG2Yog2YXYs9in2LnYr9iq2YMg2KfZhNmK2YjZhdifIixwbGFjZWhvbGRlcjoi2KfZg9iq2Kgg2LHYs9in2YTYqtmDLi4uIixlbmRDaGF0OiLYpdmG2YfYp9ihINin2YTZhdit2KfYr9ir2Kkg2YjYqtix2YMg2YXYudmE2YjZhdin2Kog2KfZhNin2KrYtdin2YQiLGNvbnRhY3RQcm9tcHQ6Itin2KrYsdmDINio2YrYp9mG2KfYqtmDINit2KrZiSDZhtiq2YXZg9mGINmF2YYg2KfZhNmF2KrYp9io2LnYqSIsbmFtZVBsYWNlaG9sZGVyOiLYp9iz2YXZgyIsY29udGFjdFBsYWNlaG9sZGVyOiLYp9mE2KjYsdmK2K8g2KfZhNil2YTZg9iq2LHZiNmG2Yog2KPZiCDYsdmC2YUg2KfZhNmH2KfYqtmBIixzdWJtaXQ6Itil2LHYs9in2YQiLHNraXA6Itiq2K7Yt9mKIixzZW5kaW5nOiLYrNin2LHZiiDYp9mE2KXYsdiz2KfZhC4uLiIsbmV3Q29udmVyc2F0aW9uOiLYqNiv2KEg2YXYrdin2K\/Yq9ipINis2K\/Zitiv2KkiLGFzc2lzdGFudDoi2YXYs9in2LnYryDYtNmH2LHYstin2K8iLG9ubGluZToi2YXYqti12YQifX0sR2o9e25hdjp7ZmVhdHVyZXM6IkZvbmN0aW9ubmFsaXTDqXMiLGZvcllvdToiUG91ciBWb3VzIixvdXJTdG9yeToiTm90cmUgSGlzdG9pcmUiLGZhcToiRkFRIixsaWJyYXJ5OiJCaWJsaW90aMOocXVlIix0cnlGcmVlOiJFc3NheWVyIEdyYXR1aXRlbWVudCJ9LGhlcm86e2JhZGdlOiLinKggVm90cmUgQ29udGV1c2UgTWFnaXF1ZSIsdGl0bGUxOiJWb3RyZSBDb250ZXVzZSIsdGl0bGUyOiJNYWdpcXVlIixkZXNjcmlwdGlvbjoiVHJhbnNmb3JtZXogbidpbXBvcnRlIHF1ZWwgbGl2cmUgUERGLCBFUFVCIG91IFRYVCBlbiBsaXZyZSBhdWRpbyBpbW1lcnNpZiBpbnN0YW50YW7DqW1lbnQuIFTDqWzDqWNoYXJnZXosIHRyYWR1aXNleiBldCDDqWNvdXRleiBkYW5zIHBsdXMgZGUgMTggbGFuZ3VlcyBhdmVjIGRlcyB2b2l4IElBIG5hdHVyZWxsZXMgZXQgdW5lIG11c2lxdWUgYXRtb3NwaMOpcmlxdWUuIn0sYm9va3M6e2JhZGdlOiJCaWJsaW90aMOocXVlIElBIix0aXRsZToiRXhwbG9yZXogTm90cmUgQmlibGlvdGjDqHF1ZSBNYWdpcXVlIOKcqCIsZGVzY3JpcHRpb246IkTDqWNvdXZyZXogZGVzIGxpdnJlcyBldCBsYWlzc2V6IGwnSUEgbGVzIG5hcnJlciBkYW5zIGxhIGxhbmd1ZSBkZSB2b3RyZSBjaG9peCIsY3RhOiJDb21tZW5jZXIgw6Agw4ljb3V0ZXIgR3JhdHVpdGVtZW50IixhaU5hcnJhdGVkOiJOYXJyw6kgcGFyIElBIn0sZmVhdHVyZXM6e2JhZGdlOiJQcm9wdWxzw6kgcGFyIGxhIE1hZ2llIElBIix0aXRsZToiRm9uY3Rpb25uYWxpdMOpcyBFbmNoYW50w6llcyDinKgiLGRlc2NyaXB0aW9uOiJDaGFxdWUgZm9uY3Rpb25uYWxpdMOpIGVzdCBjb27Dp3VlIGF2ZWMgbCdpbnRlbGxpZ2VuY2UgYXJ0aWZpY2llbGxlIHBvdXIgcmVuZHJlIHZvdHJlIGV4cMOpcmllbmNlIGRlIGxlY3R1cmUgdnJhaW1lbnQgbWFnaXF1ZSIsaXRlbXM6e3ZvaWNlVGl0bGU6Ik5hcnJhdGlvbiBWb2NhbGUgSUEiLHZvaWNlRGVzYzoiVm9peCBtYXNjdWxpbmVzIGV0IGbDqW1pbmluZXMgYXZlYyBtdXNpcXVlIGF0bW9zcGjDqXJpcXVlIHBvdXIgdW5lIG5hcnJhdGlvbiBpbW1lcnNpdmUiLHRyYW5zbGF0ZVRpdGxlOiJUcmFkdWN0aW9uIEludGVsbGlnZW50ZSIsdHJhbnNsYXRlRGVzYzoiVHJhZHVpc2V6IGV0IG5hcnJleiBpbnN0YW50YW7DqW1lbnQgZGFucyBwbHVzIGRlIDE4IGxhbmd1ZXMiLGxpYnJhcnlUaXRsZToiQmlibGlvdGjDqHF1ZSBJQSBQZXJzb25uZWxsZSIsbGlicmFyeURlc2M6IlLDqXN1bcOpcywgcmVjb21tYW5kYXRpb25zIGV0IHN1Z2dlc3Rpb25zIGludGVsbGlnZW50ZXMgYWRhcHTDqXMgcG91ciB2b3VzIixmYW1pbHlUaXRsZToiTGVjdHVyZSBGYW1pbGlhbGUiLGZhbWlseURlc2M6IkxhaXNzZXogdm9zIGVuZmFudHMgw6ljb3V0ZXIgZGVzIGxpdnJlcyBkZSB0b3V0ZSBjdWx0dXJlIOKAlCBwYXJmYWl0IHBvdXIgbCdhcHByZW50aXNzYWdlIGRlcyBsYW5ndWVzIixhY2Nlc3NUaXRsZToiQWNjZXNzaWJpbGl0w6kgZCdBYm9yZCIsYWNjZXNzRGVzYzoiQXVjdW5lIHJlc3RyaWN0aW9uIHN1ciBsZSB0eXBlIGRlIGxpdnJlLiBQYXJmYWl0IHBvdXIgbGVzIGTDqWZpcyB2aXN1ZWxzIixzeW5jVGl0bGU6IlN5bmNocm9uaXNhdGlvbiBQYXJ0b3V0IixzeW5jRGVzYzoiVm90cmUgYmlibGlvdGjDqHF1ZSBzZSBzeW5jaHJvbmlzZSBzdXIgdG91cyBsZXMgYXBwYXJlaWxzIn19LGF1ZGllbmNlczp7dGl0bGU6IlBhcmZhaXQgUG91ciBUb3VzIPCfjJ8iLGRlc2NyaXB0aW9uOiJRdWVsbGUgcXVlIHNvaXQgdm90cmUgcmFpc29uIGQnYWltZXIgbGVzIGhpc3RvaXJlcywgU2hhaHJ6YWQgdm91cyBhY2NvbXBhZ25lIixwYXJlbnRzOnt0aXRsZToiUGFyZW50cyAmIEZhbWlsbGVzIixkZXNjOiJDcsOpZXogZGVzIGV4cMOpcmllbmNlcyBtYWdpcXVlcyBhdSBjb3VjaGVyIGV0IGluaXRpZXogdm9zIGVuZmFudHMgYXV4IGhpc3RvaXJlcyBkdSBtb25kZSBlbnRpZXIiLHBvaW50czpbIlTDqWzDqWNoYXJnZXogdm9zIGxpdnJlcyBwcsOpZsOpcsOpcyIsIkV4cG9zZXogbGVzIGVuZmFudHMgw6AgcGx1c2lldXJzIGxhbmd1ZXMiLCLDiWNvdXRlIHPDu3JlIGV0IHNhbnMgcHViIl19LGxlYXJuZXJzOnt0aXRsZToiQXBwcmVuYW50cyBkZSBMYW5ndWVzIixkZXNjOiJNYcOudHJpc2V6IGRlIG5vdXZlbGxlcyBsYW5ndWVzIGdyw6JjZSDDoCBsYSBuYXJyYXRpb24gaW1tZXJzaXZlIixwb2ludHM6WyLDiWNvdXRleiBkYW5zIHZvdHJlIGxhbmd1ZSBjaWJsZSIsIkNvbXBhcmV6IGxlcyB0cmFkdWN0aW9ucyIsIlBsdXMgZGUgMTggbGFuZ3VlcyBkaXNwb25pYmxlcyJdfSxhY2Nlc3NpYmlsaXR5Ont0aXRsZToiQWNjZXNzaWJpbGl0w6kiLGRlc2M6IlJlZMOpY291dnJleiBsZSBwbGFpc2lyIGRlIGxhIGxlY3R1cmUgbWFsZ3LDqSBsZXMgbGltaXRhdGlvbnMgdmlzdWVsbGVzIixwb2ludHM6WyJUb3V0IGxpdnJlIGRldmllbnQgdW4gbGl2cmUgYXVkaW8iLCJWaXRlc3NlIGV0IHZvaXggYWp1c3RhYmxlcyIsIkZvbmN0aW9ubmUgYXZlYyB0b3V0IGZvcm1hdCJdfSxyZWFkZXJzOnt0aXRsZToiQ2x1YnMgZGUgTGVjdHVyZSIsZGVzYzoiVHJhbnNmb3JtZXogdm90cmUgZXhww6lyaWVuY2UgZGUgbGVjdHVyZSBldCBwYXJ0YWdleiBhdmVjIHZvcyBhbWlzIixwb2ludHM6WyLDiWNvdXRleiBlbiBkw6lwbGFjZW1lbnQiLCJSw6lzdW3DqXMgZ8OpbsOpcsOpcyBwYXIgSUEiLCJTeW5jaHJvbmlzYXRpb24gbXVsdGktYXBwYXJlaWxzIl19fSxzdG9yeTp7YmFkZ2U6IvCfkqsgTm90cmUgSGlzdG9pcmUiLHRpdGxlMToiSW5zcGlyw6kgcGFyIix0aXRsZTI6IkxlcyBNaWxsZSBldCBVbmUgTnVpdHMiLHAxOiJTaGFocnphZCB0aXJlIHNvbiBub20gZGUgbGEgbMOpZ2VuZGFpcmUgY29udGV1c2UgZGVzIE1pbGxlIGV0IFVuZSBOdWl0cyDigJQgbGEgcHJpbmNlc3NlIHF1aSBzYXV2YSBzYSBwcm9wcmUgdmllIHBhciBsZSBwb3V2b2lyIGRlcyBoaXN0b2lyZXMgY2FwdGl2YW50ZXMuIixxdW90ZToiQ2hhcXVlIHBlcnNvbm5lIGRldnJhaXQgYXZvaXIgYWNjw6hzIMOgIGNoYXF1ZSBoaXN0b2lyZSwgZGFucyBjaGFxdWUgbGFuZ3VlLCBhdmVjIHVuZSB2b2l4IHF1aSBwYXJsZSDDoCBzb24gw6JtZS4iLHAyOiJOb3RyZSBtaXNzaW9uIGVzdCBkZSBkw6ltb2NyYXRpc2VyIGxhIG5hcnJhdGlvbiBncsOiY2Ugw6AgbGEgdGVjaG5vbG9naWUgSUEuIFF1ZSB2b3VzIHNveWV6IHBhcmVudCwgYXBwcmVuYW50IGRlIGxhbmd1ZXMgb3Ugc2ltcGxlbWVudCBhbWF0ZXVyIGRlIGxpdnJlcyDigJQgU2hhaHJ6YWQgYSDDqXTDqSBjcsOpw6kgcG91ciB2b3VzLiJ9LGZhcTp7YmFkZ2U6IkRlcyBRdWVzdGlvbnMgPyIsdGl0bGU6IlF1ZXN0aW9ucyBGcsOpcXVlbnRlcyIsZGVzY3JpcHRpb246IlRvdXQgY2UgcXVlIHZvdXMgZGV2ZXogc2F2b2lyIHN1ciBsYSBtYWdpZSBJQSBkZSBTaGFocnphZCIsaXRlbXM6W3txOiJDb21tZW50IGZvbmN0aW9ubmUgbGEgbmFycmF0aW9uIElBIGRlIFNoYWhyemFkID8iLGE6Ik5vdHJlIElBIGFuYWx5c2UgbGUgdGV4dGUsIGNvbXByZW5kIGxlIGNvbnRleHRlIGV0IGwnw6ltb3Rpb24sIHB1aXMgZ8OpbsOocmUgdW5lIG5hcnJhdGlvbiBuYXR1cmVsbGUgYXZlYyBsZSB0b24gcGFyZmFpdCDigJQgYWNjb21wYWduw6llIGRlIG11c2lxdWUgYXRtb3NwaMOpcmlxdWUuIn0se3E6IlF1ZWxzIGZvcm1hdHMgZGUgbGl2cmVzIHNvbnQgc3VwcG9ydMOpcyA\/IixhOiJTaGFocnphZCBzdXBwb3J0ZSBsZXMgZm9ybWF0cyBQREYsIEVQVUIgZXQgVFhULiBUw6lsw6ljaGFyZ2V6IHNpbXBsZW1lbnQgdm90cmUgZmljaGllciBldCBub3RyZSBJQSBsZSB0cmFpdGVyYS4ifSx7cToiQ29tYmllbiBkZSBsYW5ndWVzIHNvbnQgZGlzcG9uaWJsZXMgPyIsYToiUGx1cyBkZSAxOCBsYW5ndWVzIGluY2x1YW50IGwnYW5nbGFpcywgbGUgZnJhbsOnYWlzLCBsJ2FyYWJlLCBsZSBtYW5kYXJpbiwgbCdlc3BhZ25vbCBldCBwbHVzIGVuY29yZS4ifSx7cToiUHVpcy1qZSB1dGlsaXNlciBTaGFocnphZCBob3JzIGxpZ25lID8iLGE6IlVuZSBmb2lzIGxlIGxpdnJlIHRyYWl0w6kgZXQgdMOpbMOpY2hhcmfDqSwgdm91cyBwb3V2ZXogw6ljb3V0ZXIgaG9ycyBsaWduZS4ifSx7cToiTW9uIGNvbnRlbnUgZXN0LWlsIHByaXbDqSA\/IixhOiJBYnNvbHVtZW50LiBWb3MgbGl2cmVzIGV0IHZvdHJlIGJpYmxpb3Row6hxdWUgc29udCBwcml2w6lzLiBOb3VzIG5lIHBhcnRhZ2VvbnMgcmllbiBhdmVjIGRlcyB0aWVycy4ifSx7cToiQ29tbWVudCBTaGFocnphZCBzZSBjb21wYXJlIMOgIEF1ZGlibGUgPyIsYToiQ29udHJhaXJlbWVudCBhdXggc2VydmljZXMgdHJhZGl0aW9ubmVscywgU2hhaHJ6YWQgdm91cyBwZXJtZXQgZGUgdMOpbMOpY2hhcmdlciBOJ0lNUE9SVEUgUVVFTCBsaXZyZSBwb3VyIHVuZSBuYXJyYXRpb24gSUEgaW5zdGFudGFuw6llIGRhbnMgcGx1c2lldXJzIGxhbmd1ZXMuIn1dfSxmb290ZXI6e2NvcHlyaWdodDoiwqkge3llYXJ9IFNoYWhyemFkLiBUb3VzIGRyb2l0cyByw6lzZXJ2w6lzLiBWb3RyZSBDb250ZXVzZSBNYWdpcXVlIOKcqCIscHJpdmFjeToiUG9saXRpcXVlIGRlIENvbmZpZGVudGlhbGl0w6kiLHRlcm1zOiJDb25kaXRpb25zIGQnVXRpbGlzYXRpb24ifSxjaGF0OntncmVldGluZzoiQm9uam91ciAhIPCfkYsgSmUgc3VpcyBsJ2Fzc2lzdGFudCBJQSBkZSBTaGFocnphZC4gQ29tbWVudCBwdWlzLWplIHZvdXMgYWlkZXIgPyIscGxhY2Vob2xkZXI6IlRhcGV6IHZvdHJlIG1lc3NhZ2UuLi4iLGVuZENoYXQ6IlRlcm1pbmVyIGV0IGxhaXNzZXIgdm9zIGNvb3Jkb25uw6llcyIsY29udGFjdFByb21wdDoiTGFpc3NleiB2b3MgY29vcmRvbm7DqWVzIHBvdXIgdW4gc3VpdmkiLG5hbWVQbGFjZWhvbGRlcjoiVm90cmUgbm9tIixjb250YWN0UGxhY2Vob2xkZXI6IkVtYWlsIG91IHTDqWzDqXBob25lIixzdWJtaXQ6IkVudm95ZXIiLHNraXA6IlBhc3NlciIsc2VuZGluZzoiRW52b2kuLi4iLG5ld0NvbnZlcnNhdGlvbjoiTm91dmVsbGUgY29udmVyc2F0aW9uIixhc3Npc3RhbnQ6IkFzc2lzdGFudCBTaGFocnphZCIsb25saW5lOiJFbiBsaWduZSJ9fSxZaj17bmF2OntmZWF0dXJlczoiRnVuY2lvbmVzIixmb3JZb3U6IlBhcmEgVGkiLG91clN0b3J5OiJOdWVzdHJhIEhpc3RvcmlhIixmYXE6IkZBUSIsbGlicmFyeToiQmlibGlvdGVjYSIsdHJ5RnJlZToiUHJvYmFyIEdyYXRpcyJ9LGhlcm86e2JhZGdlOiLinKggVHUgTmFycmFkb3JhIE3DoWdpY2EiLHRpdGxlMToiVHUgTmFycmFkb3JhIix0aXRsZTI6Ik3DoWdpY2EiLGRlc2NyaXB0aW9uOiJDb252aWVydGUgY3VhbHF1aWVyIGxpYnJvIFBERiwgRVBVQiBvIFRYVCBlbiB1biBhdWRpb2xpYnJvIGlubWVyc2l2byBhbCBpbnN0YW50ZS4gU3ViZSwgdHJhZHVjZSB5IGVzY3VjaGEgZW4gbcOhcyBkZSAxOCBpZGlvbWFzIGNvbiB2b2NlcyBJQSBuYXR1cmFsZXMgeSBtw7pzaWNhIGF0bW9zZsOpcmljYS4ifSxib29rczp7YmFkZ2U6IkJpYmxpb3RlY2EgSUEiLHRpdGxlOiJFeHBsb3JhIE51ZXN0cmEgQmlibGlvdGVjYSBNw6FnaWNhIOKcqCIsZGVzY3JpcHRpb246IkRlc2N1YnJlIGxpYnJvcyB5IGRlamEgcXVlIGxhIElBIGxvcyBuYXJyZSBlbiBlbCBpZGlvbWEgcXVlIHF1aWVyYXMiLGN0YToiRW1waWV6YSBhIEVzY3VjaGFyIEdyYXRpcyIsYWlOYXJyYXRlZDoiTmFycmFkbyBwb3IgSUEifSxmZWF0dXJlczp7YmFkZ2U6IkltcHVsc2FkbyBwb3IgTWFnaWEgSUEiLHRpdGxlOiJGdW5jaW9uZXMgRW5jYW50YWRvcmFzIOKcqCIsZGVzY3JpcHRpb246IkNhZGEgZnVuY2nDs24gZXN0w6EgZGlzZcOxYWRhIGNvbiBpbnRlbGlnZW5jaWEgYXJ0aWZpY2lhbCBwYXJhIGhhY2VyIHR1IGV4cGVyaWVuY2lhIGRlIGxlY3R1cmEgbcOhZ2ljYSIsaXRlbXM6e3ZvaWNlVGl0bGU6Ik5hcnJhY2nDs24gZGUgVm96IElBIix2b2ljZURlc2M6IlZvY2VzIG1hc2N1bGluYXMgeSBmZW1lbmluYXMgY29uIG3DunNpY2EgYXRtb3Nmw6lyaWNhIHBhcmEgdW5hIG5hcnJhY2nDs24gaW5tZXJzaXZhIix0cmFuc2xhdGVUaXRsZToiVHJhZHVjY2nDs24gSW50ZWxpZ2VudGUiLHRyYW5zbGF0ZURlc2M6IlRyYWR1Y2UgeSBuYXJyYSBpbnN0YW50w6FuZWFtZW50ZSBlbiBtw6FzIGRlIDE4IGlkaW9tYXMiLGxpYnJhcnlUaXRsZToiQmlibGlvdGVjYSBJQSBQZXJzb25hbCIsbGlicmFyeURlc2M6IlJlc8O6bWVuZXMsIHJlY29tZW5kYWNpb25lcyB5IHN1Z2VyZW5jaWFzIGludGVsaWdlbnRlcyBwZXJzb25hbGl6YWRhcyIsZmFtaWx5VGl0bGU6IkxlY3R1cmEgRmFtaWxpYXIiLGZhbWlseURlc2M6IkRlamEgcXVlIHR1cyBoaWpvcyBlc2N1Y2hlbiBsaWJyb3MgZGUgY3VhbHF1aWVyIGN1bHR1cmEg4oCUIHBlcmZlY3RvIHBhcmEgYXByZW5kZXIgaWRpb21hcyIsYWNjZXNzVGl0bGU6IkFjY2VzaWJpbGlkYWQgUHJpbWVybyIsYWNjZXNzRGVzYzoiU2luIHJlc3RyaWNjaW9uZXMgZGUgdGlwbyBkZSBsaWJyby4gUGVyZmVjdG8gcGFyYSBkZXNhZsOtb3MgdmlzdWFsZXMiLHN5bmNUaXRsZToiU2luY3Jvbml6YWNpw7NuIFRvdGFsIixzeW5jRGVzYzoiVHUgYmlibGlvdGVjYSBzZSBzaW5jcm9uaXphIGVuIHRvZG9zIGxvcyBkaXNwb3NpdGl2b3MifX0sYXVkaWVuY2VzOnt0aXRsZToiUGVyZmVjdG8gUGFyYSBUb2RvcyDwn4yfIixkZXNjcmlwdGlvbjoiU2VhIGN1YWwgc2VhIHR1IHJhesOzbiBwYXJhIGFtYXIgbGFzIGhpc3RvcmlhcywgU2hhaHJ6YWQgdGUgY3VicmUiLHBhcmVudHM6e3RpdGxlOiJQYWRyZXMgeSBGYW1pbGlhcyIsZGVzYzoiQ3JlYSBleHBlcmllbmNpYXMgbcOhZ2ljYXMgYSBsYSBob3JhIGRlIGRvcm1pciIscG9pbnRzOlsiU3ViZSBsaWJyb3MgZmF2b3JpdG9zIGRlIGxhIGZhbWlsaWEiLCJFeHDDs24gYSBsb3MgbmnDsW9zIGEgbcO6bHRpcGxlcyBpZGlvbWFzIiwiRXNjdWNoYSBzZWd1cmEgc2luIGFudW5jaW9zIl19LGxlYXJuZXJzOnt0aXRsZToiRXN0dWRpYW50ZXMgZGUgSWRpb21hcyIsZGVzYzoiRG9taW5hIG51ZXZvcyBpZGlvbWFzIGEgdHJhdsOpcyBkZSBuYXJyYWNpw7NuIGlubWVyc2l2YSIscG9pbnRzOlsiRXNjdWNoYSBlbiB0dSBpZGlvbWEgb2JqZXRpdm8iLCJDb21wYXJhIHRyYWR1Y2Npb25lcyIsIk3DoXMgZGUgMTggaWRpb21hcyJdfSxhY2Nlc3NpYmlsaXR5Ont0aXRsZToiQWNjZXNpYmlsaWRhZCIsZGVzYzoiUmVkZXNjdWJyZSBlbCBwbGFjZXIgZGUgbGVlciBzaW4gaW1wb3J0YXIgbGltaXRhY2lvbmVzIHZpc3VhbGVzIixwb2ludHM6WyJDdWFscXVpZXIgbGlicm8gc2UgY29udmllcnRlIGVuIGF1ZGlvbGlicm8iLCJWZWxvY2lkYWQgeSB2b3ogYWp1c3RhYmxlcyIsIkZ1bmNpb25hIGNvbiBjdWFscXVpZXIgZm9ybWF0byJdfSxyZWFkZXJzOnt0aXRsZToiQ2x1YmVzIGRlIExlY3R1cmEiLGRlc2M6IlRyYW5zZm9ybWEgdHUgZXhwZXJpZW5jaWEgZGUgbGVjdHVyYSIscG9pbnRzOlsiRXNjdWNoYSBtaWVudHJhcyB2aWFqYXMiLCJSZXPDum1lbmVzIGdlbmVyYWRvcyBwb3IgSUEiLCJTaW5jcm9uaXphY2nDs24gbXVsdGktZGlzcG9zaXRpdm8iXX19LHN0b3J5OntiYWRnZToi8J+SqyBOdWVzdHJhIEhpc3RvcmlhIix0aXRsZTE6Ikluc3BpcmFkbyBlbiIsdGl0bGUyOiJMYXMgTWlsIHkgVW5hIE5vY2hlcyIscDE6IlNoYWhyemFkIGxsZXZhIGVsIG5vbWJyZSBkZSBsYSBsZWdlbmRhcmlhIG5hcnJhZG9yYSBkZSBMYXMgTWlsIHkgVW5hIE5vY2hlcyDigJQgbGEgcHJpbmNlc2EgcXVlIHNhbHbDsyBzdSB2aWRhIGNvbiBlbCBwb2RlciBkZSBsYXMgaGlzdG9yaWFzIGNhdXRpdmFkb3Jhcy4iLHF1b3RlOiJDYWRhIHBlcnNvbmEgZGViZXLDrWEgdGVuZXIgYWNjZXNvIGEgY2FkYSBoaXN0b3JpYSwgZW4gY2FkYSBpZGlvbWEsIGNvbiB1bmEgdm96IHF1ZSBoYWJsZSBhIHN1IGFsbWEuIixwMjoiTnVlc3RyYSBtaXNpw7NuIGVzIGRlbW9jcmF0aXphciBsYSBuYXJyYWNpw7NuIGEgdHJhdsOpcyBkZSBsYSB0ZWNub2xvZ8OtYSBJQS4gU2hhaHJ6YWQgZnVlIGNyZWFkYSBwYXJhIHRpLiJ9LGZhcTp7YmFkZ2U6IsK\/UHJlZ3VudGFzPyIsdGl0bGU6IlByZWd1bnRhcyBGcmVjdWVudGVzIixkZXNjcmlwdGlvbjoiVG9kbyBsbyBxdWUgbmVjZXNpdGFzIHNhYmVyIHNvYnJlIGxhIG1hZ2lhIElBIGRlIFNoYWhyemFkIixpdGVtczpbe3E6IsK\/Q8OzbW8gZnVuY2lvbmEgbGEgbmFycmFjacOzbiBJQT8iLGE6Ik51ZXN0cmEgSUEgYW5hbGl6YSBlbCB0ZXh0bywgZW50aWVuZGUgZWwgY29udGV4dG8geSBsYSBlbW9jacOzbiwgeSBnZW5lcmEgbmFycmFjacOzbiBuYXR1cmFsIGNvbiBtw7pzaWNhIGF0bW9zZsOpcmljYS4ifSx7cToiwr9RdcOpIGZvcm1hdG9zIGRlIGxpYnJvcyBzb3BvcnRhPyIsYToiUERGLCBFUFVCIHkgVFhULiBTaW1wbGVtZW50ZSBzdWJlIHR1IGFyY2hpdm8uIn0se3E6IsK\/Q3XDoW50b3MgaWRpb21hcyBoYXkgZGlzcG9uaWJsZXM\/IixhOiJNw6FzIGRlIDE4IGlkaW9tYXMgY29uIG9wY2lvbmVzIGRlIHZveiBtYXNjdWxpbmEgeSBmZW1lbmluYS4ifSx7cToiwr9QdWVkbyB1c2FyIFNoYWhyemFkIHNpbiBjb25leGnDs24\/IixhOiJVbmEgdmV6IHByb2Nlc2FkbyB5IGRlc2NhcmdhZG8sIHB1ZWRlcyBlc2N1Y2hhciBzaW4gY29uZXhpw7NuLiJ9LHtxOiLCv01pIGNvbnRlbmlkbyBlcyBwcml2YWRvPyIsYToiQWJzb2x1dGFtZW50ZS4gVHVzIGxpYnJvcyBzb24gcHJpdmFkb3MuIE5vIGNvbXBhcnRpbW9zIGNvbiB0ZXJjZXJvcy4ifSx7cToiwr9Dw7NtbyBzZSBjb21wYXJhIGNvbiBBdWRpYmxlPyIsYToiQSBkaWZlcmVuY2lhIGRlIHNlcnZpY2lvcyB0cmFkaWNpb25hbGVzLCBTaGFocnphZCB0ZSBwZXJtaXRlIHN1YmlyIENVQUxRVUlFUiBsaWJybyBwYXJhIG5hcnJhY2nDs24gSUEgaW5zdGFudMOhbmVhIGVuIG3Dumx0aXBsZXMgaWRpb21hcy4ifV19LGZvb3Rlcjp7Y29weXJpZ2h0OiLCqSB7eWVhcn0gU2hhaHJ6YWQuIFRvZG9zIGxvcyBkZXJlY2hvcyByZXNlcnZhZG9zIOKcqCIscHJpdmFjeToiUG9sw610aWNhIGRlIFByaXZhY2lkYWQiLHRlcm1zOiJUw6lybWlub3MgZGUgVXNvIn0sY2hhdDp7Z3JlZXRpbmc6IsKhSG9sYSEg8J+RiyBTb3kgZWwgYXNpc3RlbnRlIElBIGRlIFNoYWhyemFkLiDCv0PDs21vIHB1ZWRvIGF5dWRhcnRlPyIscGxhY2Vob2xkZXI6IkVzY3JpYmUgdHUgbWVuc2FqZS4uLiIsZW5kQ2hhdDoiVGVybWluYXIgY2hhdCB5IGRlamFyIGNvbnRhY3RvIixjb250YWN0UHJvbXB0OiJEZWphIHR1cyBkYXRvcyBwYXJhIHNlZ3VpbWllbnRvIixuYW1lUGxhY2Vob2xkZXI6IlR1IG5vbWJyZSIsY29udGFjdFBsYWNlaG9sZGVyOiJFbWFpbCBvIHRlbMOpZm9ubyIsc3VibWl0OiJFbnZpYXIiLHNraXA6Ik9taXRpciIsc2VuZGluZzoiRW52aWFuZG8uLi4iLG5ld0NvbnZlcnNhdGlvbjoiTnVldmEgY29udmVyc2FjacOzbiIsYXNzaXN0YW50OiJBc2lzdGVudGUgU2hhaHJ6YWQiLG9ubGluZToiRW4gbMOtbmVhIn19LFFqPXtuYXY6e2ZlYXR1cmVzOiJGdW5rdGlvbmVuIixmb3JZb3U6IkbDvHIgRGljaCIsb3VyU3Rvcnk6IlVuc2VyZSBHZXNjaGljaHRlIixmYXE6IkZBUSIsbGlicmFyeToiQmlibGlvdGhlayIsdHJ5RnJlZToiS29zdGVubG9zIFRlc3RlbiJ9LGhlcm86e2JhZGdlOiLinKggRGVpbmUgTWFnaXNjaGUgRXJ6w6RobGVyaW4iLHRpdGxlMToiRGVpbmUgTWFnaXNjaGUiLHRpdGxlMjoiRXJ6w6RobGVyaW4iLGRlc2NyaXB0aW9uOiJWZXJ3YW5kbGUgamVkZXMgUERGLCBFUFVCIG9kZXIgVFhULUJ1Y2ggc29mb3J0IGluIGVpbiBpbW1lcnNpdmVzIEjDtnJidWNoLiBMYWRlIGhvY2gsIMO8YmVyc2V0emUgdW5kIGjDtnJlIGluIMO8YmVyIDE4IFNwcmFjaGVuIG1pdCBuYXTDvHJsaWNoZW4gS0ktU3RpbW1lbi4ifSxib29rczp7YmFkZ2U6IktJLUJpYmxpb3RoZWsiLHRpdGxlOiJFbnRkZWNrZSBVbnNlcmUgTWFnaXNjaGUgQmlibGlvdGhlayDinKgiLGRlc2NyaXB0aW9uOiJFbnRkZWNrZSBCw7xjaGVyIHVuZCBsYXNzIEtJIHNpZSBpbiBqZWRlciBnZXfDvG5zY2h0ZW4gU3ByYWNoZSBlcnrDpGhsZW4iLGN0YToiSmV0enQgS29zdGVubG9zIEjDtnJlbiIsYWlOYXJyYXRlZDoiS0ktRXJ6w6RobHQifSxmZWF0dXJlczp7YmFkZ2U6IktJLU1hZ2llIix0aXRsZToiVmVyemF1YmVybmRlIEZ1bmt0aW9uZW4g4pyoIixkZXNjcmlwdGlvbjoiSmVkZSBGdW5rdGlvbiB3dXJkZSBtaXQgS0ktSW50ZWxsaWdlbnogZW50d2lja2VsdCIsaXRlbXM6e3ZvaWNlVGl0bGU6IktJLVNwcmFjaGVyesOkaGx1bmciLHZvaWNlRGVzYzoiTcOkbm5saWNoZSB1bmQgd2VpYmxpY2hlIEtJLVN0aW1tZW4gbWl0IGF0bW9zcGjDpHJpc2NoZXIgSGludGVyZ3J1bmRtdXNpayIsdHJhbnNsYXRlVGl0bGU6IkludGVsbGlnZW50ZSDDnGJlcnNldHp1bmciLHRyYW5zbGF0ZURlc2M6IlNvZm9ydGlnZSDDnGJlcnNldHp1bmcgdW5kIEVyesOkaGx1bmcgaW4gw7xiZXIgMTggU3ByYWNoZW4iLGxpYnJhcnlUaXRsZToiUGVyc8O2bmxpY2hlIEtJLUJpYmxpb3RoZWsiLGxpYnJhcnlEZXNjOiJLSS1nZXN0w7x0enRlIFp1c2FtbWVuZmFzc3VuZ2VuIHVuZCBFbXBmZWhsdW5nZW4iLGZhbWlseVRpdGxlOiJGYW1pbGllbi1FcnrDpGhsdW5nIixmYW1pbHlEZXNjOiJMYXNzIGRlaW5lIEtpbmRlciBCw7xjaGVyIGF1cyBqZWRlciBLdWx0dXIgaMO2cmVuIixhY2Nlc3NUaXRsZToiQmFycmllcmVmcmVpaGVpdCBadWVyc3QiLGFjY2Vzc0Rlc2M6IktlaW5lIEVpbnNjaHLDpG5rdW5nZW4gYmVpbSBCdWNodHlwLiBQZXJmZWt0IGJlaSBTZWhiZWVpbnRyw6RjaHRpZ3VuZ2VuIixzeW5jVGl0bGU6IsOcYmVyYWxsIFN5bmNocm9uaXNpZXJ0IixzeW5jRGVzYzoiRGVpbmUgQmlibGlvdGhlayBzeW5jaHJvbmlzaWVydCBzaWNoIGF1ZiBhbGxlbiBHZXLDpHRlbiJ9fSxhdWRpZW5jZXM6e3RpdGxlOiJQZXJmZWt0IEbDvHIgQWxsZSDwn4yfIixkZXNjcmlwdGlvbjoiV2FzIGF1Y2ggaW1tZXIgZGVpbiBHcnVuZCBpc3QsIEdlc2NoaWNodGVuIHp1IGxpZWJlbiDigJQgU2hhaHJ6YWQgaXN0IGbDvHIgZGljaCBkYSIscGFyZW50czp7dGl0bGU6IkVsdGVybiAmIEZhbWlsaWVuIixkZXNjOiJTY2hhZmZlIG1hZ2lzY2hlIEd1dGUtTmFjaHQtRXJsZWJuaXNzZSIscG9pbnRzOlsiTGFkZSBMaWVibGluZ3Niw7xjaGVyIGhvY2giLCJNZWhyZXJlIFNwcmFjaGVuIGbDvHIgS2luZGVyIiwiU2ljaGVyZXMsIHdlcmJlZnJlaWVzIEjDtnJlbiJdfSxsZWFybmVyczp7dGl0bGU6IlNwcmFjaGxlcm5lciIsZGVzYzoiTWVpc3RlcmUgbmV1ZSBTcHJhY2hlbiBkdXJjaCBpbW1lcnNpdmVzIEVyesOkaGxlbiIscG9pbnRzOlsiSMO2cmUgaW4gZGVpbmVyIFppZWxzcHJhY2hlIiwiVmVyZ2xlaWNoZSDDnGJlcnNldHp1bmdlbiIsIjE4KyBTcHJhY2hlbiB2ZXJmw7xnYmFyIl19LGFjY2Vzc2liaWxpdHk6e3RpdGxlOiJCYXJyaWVyZWZyZWloZWl0IixkZXNjOiJFbnRkZWNrZSBkaWUgRnJldWRlIGFtIExlc2VuIHdpZWRlciIscG9pbnRzOlsiSmVkZXMgQnVjaCB3aXJkIHp1bSBIw7ZyYnVjaCIsIkdlc2Nod2luZGlna2VpdCB1bmQgU3RpbW1lIGFucGFzc2JhciIsIkZ1bmt0aW9uaWVydCBtaXQgamVkZW0gRm9ybWF0Il19LHJlYWRlcnM6e3RpdGxlOiJCdWNoY2x1YnMgJiBMZXNlciIsZGVzYzoiVmVyd2FuZGxlIGRlaW4gTGVzZWVybGVibmlzIixwb2ludHM6WyJIw7ZyZSBiZWltIFBlbmRlbG4iLCJLSS1adXNhbW1lbmZhc3N1bmdlbiIsIlN5bmNocm9uaXNhdGlvbiDDvGJlcmFsbCJdfX0sc3Rvcnk6e2JhZGdlOiLwn5KrIFVuc2VyZSBHZXNjaGljaHRlIix0aXRsZTE6Ikluc3BpcmllcnQgdm9uIix0aXRsZTI6IlRhdXNlbmR1bmRlaW5lciBOYWNodCIscDE6IlNoYWhyemFkIGlzdCBuYWNoIGRlciBsZWdlbmTDpHJlbiBFcnrDpGhsZXJpbiBhdXMgVGF1c2VuZHVuZGVpbmVyIE5hY2h0IGJlbmFubnQg4oCUIGRpZSBrbHVnZSBQcmluemVzc2luLCBkaWUgaWhyIExlYmVuIGR1cmNoIGRpZSBLcmFmdCBmZXNzZWxuZGVyIEdlc2NoaWNodGVuIHJldHRldGUuIixxdW90ZToiSmVkZXIgTWVuc2NoIHNvbGx0ZSBadWdhbmcgenUgamVkZXIgR2VzY2hpY2h0ZSBoYWJlbiwgaW4gamVkZXIgU3ByYWNoZSwgbWl0IGVpbmVyIFN0aW1tZSwgZGllIHp1IHNlaW5lciBTZWVsZSBzcHJpY2h0LiIscDI6IlVuc2VyZSBNaXNzaW9uIGlzdCBlcywgZGFzIEVyesOkaGxlbiBkdXJjaCBLSS1UZWNobm9sb2dpZSB6dSBkZW1va3JhdGlzaWVyZW4uIFNoYWhyemFkIHd1cmRlIGbDvHIgZGljaCBnZWJhdXQuIn0sZmFxOntiYWRnZToiRnJhZ2VuPyIsdGl0bGU6IkjDpHVmaWcgR2VzdGVsbHRlIEZyYWdlbiIsZGVzY3JpcHRpb246IkFsbGVzIMO8YmVyIFNoYWhyemFkcyBLSS1NYWdpZSIsaXRlbXM6W3txOiJXaWUgZnVua3Rpb25pZXJ0IGRpZSBLSS1FcnrDpGhsdW5nPyIsYToiVW5zZXJlIEtJIGFuYWx5c2llcnQgZGVuIFRleHQsIHZlcnN0ZWh0IEtvbnRleHQgdW5kIEVtb3Rpb24gdW5kIGVyemV1Z3QgbmF0w7xybGljaGUgRXJ6w6RobHVuZyBtaXQgSGludGVyZ3J1bmRtdXNpay4ifSx7cToiV2VsY2hlIEJ1Y2hmb3JtYXRlIHdlcmRlbiB1bnRlcnN0w7x0enQ\/IixhOiJQREYsIEVQVUIgdW5kIFRYVC4gTGFkZSBlaW5mYWNoIGRlaW5lIERhdGVpIGhvY2guIn0se3E6IldpZSB2aWVsZSBTcHJhY2hlbiBzaW5kIHZlcmbDvGdiYXI\/IixhOiLDnGJlciAxOCBTcHJhY2hlbiBtaXQgbcOkbm5saWNoZW4gdW5kIHdlaWJsaWNoZW4gU3RpbW1vcHRpb25lbi4ifSx7cToiS2FubiBpY2ggU2hhaHJ6YWQgb2ZmbGluZSBudXR6ZW4\/IixhOiJOYWNoIGRlciBWZXJhcmJlaXR1bmcgdW5kIGRlbSBEb3dubG9hZCBrYW5uc3QgZHUgb2ZmbGluZSBow7ZyZW4uIn0se3E6IlNpbmQgbWVpbmUgSW5oYWx0ZSBwcml2YXQ\/IixhOiJBYnNvbHV0LiBEZWluZSBCw7xjaGVyIHNpbmQgcHJpdmF0IHVuZCB3ZXJkZW4gbmljaHQgbWl0IERyaXR0ZW4gZ2V0ZWlsdC4ifSx7cToiV2llIHZlcmdsZWljaHQgc2ljaCBTaGFocnphZCBtaXQgQXVkaWJsZT8iLGE6IkltIEdlZ2Vuc2F0eiB6dSB0cmFkaXRpb25lbGxlbiBEaWVuc3RlbiBrYW5uc3QgZHUgYmVpIFNoYWhyemFkIEpFREVTIEJ1Y2ggZsO8ciBzb2ZvcnRpZ2UgS0ktRXJ6w6RobHVuZyBpbiBtZWhyZXJlbiBTcHJhY2hlbiBob2NobGFkZW4uIn1dfSxmb290ZXI6e2NvcHlyaWdodDoiwqkge3llYXJ9IFNoYWhyemFkLiBBbGxlIFJlY2h0ZSB2b3JiZWhhbHRlbiDinKgiLHByaXZhY3k6IkRhdGVuc2NodXR6Iix0ZXJtczoiTnV0enVuZ3NiZWRpbmd1bmdlbiJ9LGNoYXQ6e2dyZWV0aW5nOiJIYWxsbyEg8J+RiyBJY2ggYmluIFNoYWhyemFkcyBLSS1Bc3Npc3RlbnQuIFdpZSBrYW5uIGljaCBkaXIgaGVsZmVuPyIscGxhY2Vob2xkZXI6Ik5hY2hyaWNodCBlaW5nZWJlbi4uLiIsZW5kQ2hhdDoiQ2hhdCBiZWVuZGVuICYgS29udGFrdCBoaW50ZXJsYXNzZW4iLGNvbnRhY3RQcm9tcHQ6IkhpbnRlcmxhc3NlIGRlaW5lIERhdGVuIGbDvHIgUsO8Y2ttZWxkdW5nIixuYW1lUGxhY2Vob2xkZXI6IkRlaW4gTmFtZSIsY29udGFjdFBsYWNlaG9sZGVyOiJFLU1haWwgb2RlciBUZWxlZm9uIixzdWJtaXQ6IlNlbmRlbiIsc2tpcDoiw5xiZXJzcHJpbmdlbiIsc2VuZGluZzoiV2lyZCBnZXNlbmRldC4uLiIsbmV3Q29udmVyc2F0aW9uOiJOZXVlcyBHZXNwcsOkY2giLGFzc2lzdGFudDoiU2hhaHJ6YWQgQXNzaXN0ZW50IixvbmxpbmU6Ik9ubGluZSJ9fSxYaj17bmF2OntmZWF0dXJlczoi2YjbjNqY2q\/bjOKAjNmH2KciLGZvcllvdToi2KjYsdin24wg2LTZhdinIixvdXJTdG9yeToi2K\/Yp9iz2KrYp9mGINmF2KciLGZhcToi2LPZiNin2YTYp9iqINmF2KrYr9in2YjZhCIsbGlicmFyeToi2qnYqtin2KjYrtin2YbZhyIsdHJ5RnJlZToi2LHYp9uM2q\/Yp9mGINin2YXYqtit2KfZhiDaqdmG24zYryJ9LGhlcm86e2JhZGdlOiLinKgg2YLYtdmH4oCM2q\/ZiNuMINis2KfYr9mI24zbjCDYtNmF2KciLHRpdGxlMToi2YLYtdmH4oCM2q\/ZiNuMIix0aXRsZTI6Itis2KfYr9mI24zbjCDYtNmF2KciLGRlc2NyaXB0aW9uOiLZh9ixINqp2KrYp9ioIFBERtiMIEVQVUIg24zYpyBUWFQg2LHYpyDZgdmI2LHYp9mLINio2Ycg2qnYqtin2Kgg2LXZiNiq24wg2KrYqNiv24zZhCDaqdmG24zYry4g2KLZvtmE2YjYryDaqdmG24zYr9iMINiq2LHYrNmF2Ycg2qnZhtuM2K8g2Ygg2KjZhyDYqNuM2LQg2KfYsiDbsdu4INiy2KjYp9mGINio2Kcg2LXYr9in2YfYp9uMINmH2YjYtCDZhdi12YbZiNi524wg2LfYqNuM2LnbjCDar9mI2LQg2K\/Zh9uM2K8uIn0sYm9va3M6e2JhZGdlOiLaqdiq2KfYqNiu2KfZhtmHINmH2YjYtCDZhdi12YbZiNi524wiLHRpdGxlOiLaqdiq2KfYqNiu2KfZhtmHINis2KfYr9mI24zbjCDZhdinINix2Kcg2qnYp9mI2LQg2qnZhtuM2K8g4pyoIixkZXNjcmlwdGlvbjoi2qnYqtin2KjigIzZh9inINix2Kcg2qnYtNmBINqp2YbbjNivINmIINio2q\/YsNin2LHbjNivINmH2YjYtCDZhdi12YbZiNi524wg2KLZhtmH2Kcg2LHYpyDYqNmHINmH2LEg2LLYqNin2YbbjCDYsdmI2KfbjNiqINqp2YbYryIsY3RhOiLYtNix2YjYuSDar9mI2LQg2K\/Yp9iv2YYg2LHYp9uM2q\/Yp9mGIixhaU5hcnJhdGVkOiLYsdmI2KfbjNiqIEFJIn0sZmVhdHVyZXM6e2JhZGdlOiLYqNinINis2KfYr9mI24wgQUkiLHRpdGxlOiLZiNuM2pjar9uM4oCM2YfYp9uMINis2KfYr9mI24zbjCDinKgiLGRlc2NyaXB0aW9uOiLZh9ixINmI24zamNqv24wg2KjYpyDZh9mI2LQg2YXYtdmG2YjYuduMINi32LHYp9it24wg2LTYr9mHINiq2Kcg2KrYrNix2KjZhyDZhdi32KfZhNi52Ycg2LTZhdinINmI2KfZgti52KfZiyDYrNin2K\/ZiNuM24wg2KjYp9i02K8iLGl0ZW1zOnt2b2ljZVRpdGxlOiLYsdmI2KfbjNiqINi12YjYqtuMIEFJIix2b2ljZURlc2M6Iti12K\/Yp9mH2KfbjCDZhdix2K\/Yp9mG2Ycg2Ygg2LLZhtin2YbZhyDYqNinINmF2YjYs9uM2YLbjCDZgdi22KfbjNuMINio2LHYp9uMINix2YjYp9uM2Kog2LrZiNi32YfigIzZiNixIix0cmFuc2xhdGVUaXRsZToi2KrYsdis2YXZhyDZh9mI2LTZhdmG2K8iLHRyYW5zbGF0ZURlc2M6ItmB2YjYsdin2Ysg2KjZhyDYqNuM2LQg2KfYsiDbsdu4INiy2KjYp9mGINiq2LHYrNmF2Ycg2Ygg2LHZiNin24zYqiDaqdmG24zYryIsbGlicmFyeVRpdGxlOiLaqdiq2KfYqNiu2KfZhtmHINi02K7YtduMIEFJIixsaWJyYXJ5RGVzYzoi2K7ZhNin2LXZh+KAjNmH2KfYjCDZvtuM2LTZhtmH2KfYr9in2Kog2Ygg2KrZiNi124zZh+KAjNmH2KfbjCDZh9mI2LTZhdmG2K8g2YXYrti12YjYtSDYtNmF2KciLGZhbWlseVRpdGxlOiLYr9in2LPYqtin2YbigIzar9mI24zbjCDYrtin2YbZiNin2K\/ar9uMIixmYW1pbHlEZXNjOiLYqNqv2LDYp9ix24zYryDZgdix2LLZhtiv2KfZhtiq2KfZhiDYqNmHINqp2KrYp9io4oCM2YfYp9uMINmH2LEg2YHYsdmH2Ybar9uMINqv2YjYtCDYr9mH2YbYryIsYWNjZXNzVGl0bGU6Itiv2LPYqtix2LPbjOKAjNm+2LDbjNix24wg2KfZiNmEIixhY2Nlc3NEZXNjOiLZh9uM2oYg2YXYrdiv2YjYr9uM2KrbjCDYr9ixINmG2YjYuSDaqdiq2KfYqC4g2LnYp9mE24wg2KjYsdin24wg2obYp9mE2LTigIzZh9in24wg2KjbjNmG2KfbjNuMIixzeW5jVGl0bGU6ItmH2YXar9in2YXigIzYs9in2LLbjCDZh9mF2Ycg2KzYpyIsc3luY0Rlc2M6Itqp2KrYp9io2K7Yp9mG2Ycg2LTZhdinINiv2LEg2YfZhdmHINiv2LPYqtqv2KfZh+KAjNmH2Kcg2YfZhdqv2KfZhSDZhduM4oCM2LTZiNivIn19LGF1ZGllbmNlczp7dGl0bGU6Iti52KfZhNuMINio2LHYp9uMINmH2YXZhyDwn4yfIixkZXNjcmlwdGlvbjoi2YfYsSDYr9mE24zZhNuMINqp2Ycg2KjYsdin24wg2LnYtNmCINio2Ycg2K\/Yp9iz2KrYp9mG4oCM2YfYpyDYr9in2LHbjNiv2Iwg2LTZh9ix2LLYp9ivINiv2LEg2K7Yr9mF2Kog2LTZhdin2LPYqiIscGFyZW50czp7dGl0bGU6ItmI2KfZhNiv24zZhiDZiCDYrtin2YbZiNin2K\/Zh+KAjNmH2KciLGRlc2M6Itiq2KzYsdio2YfigIzZh9in24wg2KzYp9iv2YjbjNuMINiu2YjYp9ioINin24zYrNin2K8g2qnZhtuM2K8iLHBvaW50czpbItqp2KrYp9io4oCM2YfYp9uMINmF2YjYsdivINi52YTYp9mC2Ycg2K7Yp9mG2YjYp9iv2Ycg2LHYpyDYotm+2YTZiNivINqp2YbbjNivIiwi2qnZiNiv2qnYp9mGINix2Kcg2KjYpyDahtmG2K8g2LLYqNin2YYg2KLYtNmG2Kcg2qnZhtuM2K8iLCLar9mI2LQg2K\/Yp9iv2YYg2KfZhdmGINio2K\/ZiNmGINiq2KjZhNuM2LrYp9iqIl19LGxlYXJuZXJzOnt0aXRsZToi2LLYqNin2YbigIzYotmF2YjYstin2YYiLGRlc2M6Itiy2KjYp9mG4oCM2YfYp9uMINis2K\/bjNivINix2Kcg2KfYsiDYt9ix24zZgiDYr9in2LPYqtin2YbigIzar9mI24zbjCDYutmI2LfZh+KAjNmI2LEg24zYp9ivINio2q\/bjNix24zYryIscG9pbnRzOlsi2KjZhyDYstio2KfZhiDZh9iv2YEg2K7ZiNivINqv2YjYtCDYr9mH24zYryIsItiq2LHYrNmF2YfigIzZh9inINix2Kcg2YXZgtin24zYs9mHINqp2YbbjNivIiwi2KjbjNi0INin2LIg27HbuCDYstio2KfZhiJdfSxhY2Nlc3NpYmlsaXR5Ont0aXRsZToi2K\/Ys9iq2LHYs9uM4oCM2b7YsNuM2LHbjCIsZGVzYzoi2YTYsNiqINmF2LfYp9mE2LnZhyDYsdinINio2K\/ZiNmGINiq2YjYrNmHINio2Ycg2YXYrdiv2YjYr9uM2KrigIzZh9in24wg2KjbjNmG2KfbjNuMINqp2LTZgSDaqdmG24zYryIscG9pbnRzOlsi2YfYsSDaqdiq2KfYqNuMINqp2KrYp9ioINi12YjYqtuMINmF24zigIzYtNmI2K8iLCLYs9ix2LnYqiDZiCDYtdiv2Kcg2YLYp9io2YQg2KrZhti424zZhSIsItio2Kcg2YfYsSDZgdix2YXYqtuMINqp2KfYsSDZhduM4oCM2qnZhtivIl19LHJlYWRlcnM6e3RpdGxlOiLYqNin2LTar9in2YfigIzZh9in24wg2qnYqtin2KgiLGRlc2M6Itiq2KzYsdio2Ycg2YXYt9in2YTYudmHINiu2YjYryDYsdinINmF2KrYrdmI2YQg2qnZhtuM2K8iLHBvaW50czpbItmH2Ybar9in2YUg2LHZgdiqINmIINii2YXYryDar9mI2LQg2K\/Zh9uM2K8iLCLYrtmE2KfYtdmH4oCM2YfYp9uMIEFJIiwi2YfZhdqv2KfZheKAjNiz2KfYstuMINmH2YXZhyDYr9iz2Krar9in2YfigIzZh9inIl19fSxzdG9yeTp7YmFkZ2U6IvCfkqsg2K\/Yp9iz2KrYp9mGINmF2KciLHRpdGxlMToi2KfZhNmH2KfZhSDar9ix2YHYqtmHINin2LIiLHRpdGxlMjoi2YfYstin2LEg2Ygg24zaqSDYtNioIixwMToi2LTZh9ix2LLYp9ivINin2LIg2K\/Yp9iz2KrYp9mG4oCM2LPYsdin24wg2KfZgdiz2KfZhtmH4oCM2KfbjCDZh9iy2KfYsSDZiCDbjNqpINi02Kgg2YbYp9mFINqv2LHZgdiq2Ycg4oCUINi02KfZh9iy2KfYr9mHINio2KfZh9mI2LTbjCDaqdmHINis2KfZhiDYrtmI2K8g2LHYpyDYqNinINmC2K\/YsdiqINiv2KfYs9iq2KfZhuKAjNmH2KfbjCDYrNiw2KfYqCDZhtis2KfYqiDYr9in2K8uIixxdW90ZToi2YfYsSDYtNiu2LXbjCDYqNin24zYryDYqNmHINmH2LEg2K\/Yp9iz2KrYp9mG24zYjCDYqNmHINmH2LEg2LLYqNin2YbbjNiMINio2Kcg2LXYr9in24zbjCDaqdmHINio2Kcg2LHZiNit2LQg2LXYrdio2Kog2YXbjOKAjNqp2YbYryDYr9iz2KrYsdiz24wg2K\/Yp9i02KrZhyDYqNin2LTYry4iLHAyOiLZhdij2YXZiNix24zYqiDZhdinINiv2YXZiNqp2LHYp9iq24zYstmHINqp2LHYr9mGINiv2KfYs9iq2KfZhuKAjNqv2YjbjNuMINin2LIg2LfYsduM2YIg2YHZhtin2YjYsduMINmH2YjYtCDZhdi12YbZiNi524wg2KfYs9iqLiDYtNmH2LHYstin2K8g2KjYsdin24wg2LTZhdinINiz2KfYrtiq2Ycg2LTYr9mHLiJ9LGZhcTp7YmFkZ2U6Itiz2YjYp9mE24wg2K\/Yp9ix24zYr9ifIix0aXRsZToi2LPZiNin2YTYp9iqINmF2KrYr9in2YjZhCIsZGVzY3JpcHRpb246ItmH2YXZhyDahtuM2LIg2K\/Ysdio2KfYsdmHINis2KfYr9mI24wgQUkg2LTZh9ix2LLYp9ivIixpdGVtczpbe3E6Itix2YjYp9uM2KogQUkg2LTZh9ix2LLYp9ivINqG2q\/ZiNmG2Ycg2qnYp9ixINmF24zigIzaqdmG2K\/YnyIsYToiQUkg2YXYpyDZhdiq2YYg2LHYpyDYqtit2YTbjNmEINmF24zigIzaqdmG2K\/YjCDYstmF24zZhtmHINmIINin2K3Ys9in2LMg2LHYpyDYr9ix2qkg2YXbjOKAjNqp2YbYryDZiCDYsdmI2KfbjNiq24wg2LfYqNuM2LnbjCDYqNinINmF2YjYs9uM2YLbjCDZgdi22KfbjNuMINiq2YjZhNuM2K8g2YXbjOKAjNqp2YbYry4ifSx7cToi2LTZh9ix2LLYp9ivINin2LIg2obZhyDZgdix2YXYquKAjNmH2KfbjNuMINm+2LTYqtuM2KjYp9mG24wg2YXbjOKAjNqp2YbYr9ifIixhOiJQREbYjCBFUFVCINmIIFRYVC4g2YHZgti3INmB2KfbjNmEINiu2YjYryDYsdinINii2b7ZhNmI2K8g2qnZhtuM2K8uIn0se3E6ItqG2YbYryDYstio2KfZhiDZhdmI2KzZiNivINin2LPYqtifIixhOiLYqNuM2LQg2KfYsiDbsdu4INiy2KjYp9mGINio2Kcg2LXYr9in2YfYp9uMINmF2LHYr9in2YbZhyDZiCDYstmG2KfZhtmHLiJ9LHtxOiLYotuM2Kcg2YXbjOKAjNiq2YjYp9mG2YUg2KLZgdmE2KfbjNmGINin2LPYqtmB2KfYr9mHINqp2YbZhdifIixhOiLZvtizINin2LIg2b7Ysdiv2KfYsti0INmIINiv2KfZhtmE2YjYr9iMINmF24zigIzYqtmI2KfZhtuM2K8g2KLZgdmE2KfbjNmGINqv2YjYtCDYr9mH24zYry4ifSx7cToi2KLbjNinINmF2K3YqtmI2KfbjCDZhdmGINiu2LXZiNi124wg2KfYs9iq2J8iLGE6ItmC2LfYudin2YsuINqp2KrYp9io4oCM2YfYp9uMINi02YXYpyDYrti12YjYtduMINmH2LPYqtmG2K8uIn0se3E6Iti02YfYsdiy2KfYryDYr9ixINmF2YLYp9uM2LPZhyDYqNinIEF1ZGlibGUg2obar9mI2YbZhyDYp9iz2KrYnyIsYToi2KjYsdiu2YTYp9mBINiz2LHZiNuM2LPigIzZh9in24wg2LPZhtiq24zYjCDYtNmH2LHYstin2K8g2KjZhyDYtNmF2Kcg2KfZhdqp2KfZhiDYotm+2YTZiNivINmH2LEg2qnYqtin2KjbjCDYqNix2KfbjCDYsdmI2KfbjNiqINmB2YjYsduMIEFJINiv2LEg2obZhtiv24zZhiDYstio2KfZhiDYsdinINmF24zigIzYr9mH2K8uIn1dfSxmb290ZXI6e2NvcHlyaWdodDoiwqkge3llYXJ9INi02YfYsdiy2KfYry4g2KrZhdin2YXbjCDYrdmC2YjZgiDZhdit2YHZiNi4INin2LPYqiDinKgiLHByaXZhY3k6Itit2LHbjNmFINiu2LXZiNi124wiLHRlcm1zOiLYtNix2KfbjNi3INin2LPYqtmB2KfYr9mHIn0sY2hhdDp7Z3JlZXRpbmc6Itiz2YTYp9mFISDwn5GLINmF2YYg2K\/Ys9iq24zYp9ixIEFJINi02YfYsdiy2KfYryDZh9iz2KrZhS4g2obar9mI2YbZhyDZhduM4oCM2KrZiNin2YbZhSDaqdmF2qnYqtin2YYg2qnZhtmF2J8iLHBsYWNlaG9sZGVyOiLZvtuM2KfZhSDYrtmI2K8g2LHYpyDYqNmG2YjbjNiz24zYry4uLiIsZW5kQ2hhdDoi2b7Yp9uM2KfZhiDar9mB2Krar9mIINmIINir2KjYqiDYp9i32YTYp9i52KfYqiDYqtmF2KfYsyIsY29udGFjdFByb21wdDoi2KfYt9mE2KfYudin2Kog2K7ZiNivINix2Kcg2Kjar9iw2KfYsduM2K8g2KrYpyDZvtuM2q\/bjNix24wg2qnZhtuM2YUiLG5hbWVQbGFjZWhvbGRlcjoi2YbYp9mFINi02YXYpyIsY29udGFjdFBsYWNlaG9sZGVyOiLYp9uM2YXbjNmEINuM2Kcg2LTZhdin2LHZhyDYqtmE2YHZhiIsc3VibWl0OiLYp9ix2LPYp9mEIixza2lwOiLYsdivINi02K\/ZhiIsc2VuZGluZzoi2K\/YsSDYrdin2YQg2KfYsdiz2KfZhC4uLiIsbmV3Q29udmVyc2F0aW9uOiLar9mB2Krar9mI24wg2KzYr9uM2K8iLGFzc2lzdGFudDoi2K\/Ys9iq24zYp9ixINi02YfYsdiy2KfYryIsb25saW5lOiLYotmG2YTYp9uM2YYifX0sSmo9e25hdjp7ZmVhdHVyZXM6IkZ1bnppb25hbGl0w6AiLGZvcllvdToiUGVyIFRlIixvdXJTdG9yeToiTGEgTm9zdHJhIFN0b3JpYSIsZmFxOiJGQVEiLGxpYnJhcnk6IkJpYmxpb3RlY2EiLHRyeUZyZWU6IlByb3ZhIEdyYXRpcyJ9LGhlcm86e2JhZGdlOiLinKggTGEgVHVhIE5hcnJhdHJpY2UgTWFnaWNhIix0aXRsZTE6IkxhIFR1YSBOYXJyYXRyaWNlIix0aXRsZTI6Ik1hZ2ljYSIsZGVzY3JpcHRpb246IlRyYXNmb3JtYSBxdWFsc2lhc2kgbGlicm8gUERGLCBFUFVCIG8gVFhUIGluIHVuIGF1ZGlvbGlicm8gaW1tZXJzaXZvLiBDYXJpY2EsIHRyYWR1Y2kgZSBhc2NvbHRhIGluIG9sdHJlIDE4IGxpbmd1ZSBjb24gdm9jaSBJQSBuYXR1cmFsaS4ifSxib29rczp7YmFkZ2U6IkJpYmxpb3RlY2EgSUEiLHRpdGxlOiJFc3Bsb3JhIGxhIE5vc3RyYSBCaWJsaW90ZWNhIE1hZ2ljYSDinKgiLGRlc2NyaXB0aW9uOiJTY29wcmkgbGlicmkgZSBsYXNjaWEgY2hlIGwnSUEgbGkgbmFycmkgbmVsbGEgbGluZ3VhIGNoZSBkZXNpZGVyaSIsY3RhOiJJbml6aWEgYWQgQXNjb2x0YXJlIEdyYXRpcyIsYWlOYXJyYXRlZDoiTmFycmF0byBkYSBJQSJ9LGZlYXR1cmVzOntiYWRnZToiTWFnaWEgSUEiLHRpdGxlOiJGdW56aW9uYWxpdMOgIEluY2FudGV2b2xpIOKcqCIsZGVzY3JpcHRpb246Ik9nbmkgZnVuemlvbmUgw6ggcHJvZ2V0dGF0YSBjb24gaW50ZWxsaWdlbnphIGFydGlmaWNpYWxlIixpdGVtczp7dm9pY2VUaXRsZToiTmFycmF6aW9uZSBWb2NhbGUgSUEiLHZvaWNlRGVzYzoiVm9jaSBtYXNjaGlsaSBlIGZlbW1pbmlsaSBjb24gbXVzaWNhIGF0bW9zZmVyaWNhIix0cmFuc2xhdGVUaXRsZToiVHJhZHV6aW9uZSBJbnRlbGxpZ2VudGUiLHRyYW5zbGF0ZURlc2M6IlRyYWR1Y2kgZSBuYXJyYSBpbiBvbHRyZSAxOCBsaW5ndWUgaXN0YW50YW5lYW1lbnRlIixsaWJyYXJ5VGl0bGU6IkJpYmxpb3RlY2EgSUEgUGVyc29uYWxlIixsaWJyYXJ5RGVzYzoiUmlhc3N1bnRpLCByYWNjb21hbmRhemlvbmkgZSBzdWdnZXJpbWVudGkgaW50ZWxsaWdlbnRpIixmYW1pbHlUaXRsZToiTGV0dHVyYSBGYW1pbGlhcmUiLGZhbWlseURlc2M6IkkgdHVvaSBmaWdsaSBwb3Nzb25vIGFzY29sdGFyZSBsaWJyaSBkaSBvZ25pIGN1bHR1cmEiLGFjY2Vzc1RpdGxlOiJBY2Nlc3NpYmlsaXTDoCBQcmltYSIsYWNjZXNzRGVzYzoiTmVzc3VuYSByZXN0cml6aW9uZS4gUGVyZmV0dG8gcGVyIGRpZmZpY29sdMOgIHZpc2l2ZSIsc3luY1RpdGxlOiJTaW5jcm9uaXp6YXppb25lIE92dW5xdWUiLHN5bmNEZXNjOiJMYSB0dWEgYmlibGlvdGVjYSBzaSBzaW5jcm9uaXp6YSBzdSB0dXR0aSBpIGRpc3Bvc2l0aXZpIn19LGF1ZGllbmNlczp7dGl0bGU6IlBlcmZldHRvIFBlciBUdXR0aSDwn4yfIixkZXNjcmlwdGlvbjoiUXVhbHVucXVlIHNpYSBpbCB0dW8gbW90aXZvIHBlciBhbWFyZSBsZSBzdG9yaWUsIFNoYWhyemFkIHRpIGNvcHJlIixwYXJlbnRzOnt0aXRsZToiR2VuaXRvcmkgZSBGYW1pZ2xpZSIsZGVzYzoiQ3JlYSBlc3BlcmllbnplIG1hZ2ljaGUgZGVsbGEgYnVvbmFub3R0ZSIscG9pbnRzOlsiQ2FyaWNhIGkgbGlicmkgcHJlZmVyaXRpIiwiRXNwb25pIGkgYmFtYmluaSBhIHBpw7kgbGluZ3VlIiwiQXNjb2x0byBzaWN1cm8gc2VuemEgcHViYmxpY2l0w6AiXX0sbGVhcm5lcnM6e3RpdGxlOiJTdHVkZW50aSBkaSBMaW5ndWUiLGRlc2M6IlBhZHJvbmVnZ2lhIG51b3ZlIGxpbmd1ZSBhdHRyYXZlcnNvIGxhIG5hcnJhemlvbmUgaW1tZXJzaXZhIixwb2ludHM6WyJBc2NvbHRhIG5lbGxhIGxpbmd1YSB0YXJnZXQiLCJDb25mcm9udGEgdHJhZHV6aW9uaSIsIk9sdHJlIDE4IGxpbmd1ZSJdfSxhY2Nlc3NpYmlsaXR5Ont0aXRsZToiQWNjZXNzaWJpbGl0w6AiLGRlc2M6IlJpc2NvcHJpIGlsIHBpYWNlcmUgZGVsbGEgbGV0dHVyYSIscG9pbnRzOlsiT2duaSBsaWJybyBkaXZlbnRhIHVuIGF1ZGlvbGlicm8iLCJWZWxvY2l0w6AgZSB2b2NlIHJlZ29sYWJpbGkiLCJGdW56aW9uYSBjb24gb2duaSBmb3JtYXRvIl19LHJlYWRlcnM6e3RpdGxlOiJDbHViIGRlbCBMaWJybyIsZGVzYzoiVHJhc2Zvcm1hIGxhIHR1YSBlc3BlcmllbnphIGRpIGxldHR1cmEiLHBvaW50czpbIkFzY29sdGEgaW4gdmlhZ2dpbyIsIlJpYXNzdW50aSBJQSIsIlNpbmNyb25penphemlvbmUgbXVsdGktZGlzcG9zaXRpdm8iXX19LHN0b3J5OntiYWRnZToi8J+SqyBMYSBOb3N0cmEgU3RvcmlhIix0aXRsZTE6IklzcGlyYXRvIGRhIix0aXRsZTI6IkxlIE1pbGxlIGUgVW5hIE5vdHRlIixwMToiU2hhaHJ6YWQgcHJlbmRlIGlsIG5vbWUgZGFsbGEgbGVnZ2VuZGFyaWEgbmFycmF0cmljZSBkZSBMZSBNaWxsZSBlIFVuYSBOb3R0ZS4iLHF1b3RlOiJPZ25pIHBlcnNvbmEgZG92cmViYmUgYXZlcmUgYWNjZXNzbyBhIG9nbmkgc3RvcmlhLCBpbiBvZ25pIGxpbmd1YSwgY29uIHVuYSB2b2NlIGNoZSBwYXJsaSBhbGxhIHN1YSBhbmltYS4iLHAyOiJMYSBub3N0cmEgbWlzc2lvbmUgw6ggZGVtb2NyYXRpenphcmUgbGEgbmFycmF6aW9uZSBhdHRyYXZlcnNvIGxhIHRlY25vbG9naWEgSUEuIn0sZmFxOntiYWRnZToiRG9tYW5kZT8iLHRpdGxlOiJEb21hbmRlIEZyZXF1ZW50aSIsZGVzY3JpcHRpb246IlR1dHRvIHN1bGxhIG1hZ2lhIElBIGRpIFNoYWhyemFkIixpdGVtczpbe3E6IkNvbWUgZnVuemlvbmEgbGEgbmFycmF6aW9uZSBJQT8iLGE6IkxhIG5vc3RyYSBJQSBhbmFsaXp6YSBpbCB0ZXN0byBlIGdlbmVyYSBuYXJyYXppb25lIG5hdHVyYWxlIGNvbiBtdXNpY2EgYXRtb3NmZXJpY2EuIn0se3E6IlF1YWxpIGZvcm1hdGkgc29ubyBzdXBwb3J0YXRpPyIsYToiUERGLCBFUFVCIGUgVFhULiJ9LHtxOiJRdWFudGUgbGluZ3VlIHNvbm8gZGlzcG9uaWJpbGk\/IixhOiJPbHRyZSAxOCBsaW5ndWUgY29uIHZvY2kgbWFzY2hpbGkgZSBmZW1taW5pbGkuIn0se3E6IlBvc3NvIHVzYXJlIFNoYWhyemFkIG9mZmxpbmU\/IixhOiJTw6wsIGRvcG8gaWwgZG93bmxvYWQgcHVvaSBhc2NvbHRhcmUgb2ZmbGluZS4ifSx7cToiSSBtaWVpIGNvbnRlbnV0aSBzb25vIHByaXZhdGk\/IixhOiJBc3NvbHV0YW1lbnRlLiBJIHR1b2kgbGlicmkgc29ubyBwcml2YXRpLiJ9LHtxOiJDb21lIHNpIGNvbmZyb250YSBjb24gQXVkaWJsZT8iLGE6IlNoYWhyemFkIHRpIHBlcm1ldHRlIGRpIGNhcmljYXJlIFFVQUxTSUFTSSBsaWJybyBwZXIgbmFycmF6aW9uZSBJQSBpc3RhbnRhbmVhIGluIHBpw7kgbGluZ3VlLiJ9XX0sZm9vdGVyOntjb3B5cmlnaHQ6IsKpIHt5ZWFyfSBTaGFocnphZC4gVHV0dGkgaSBkaXJpdHRpIHJpc2VydmF0aSDinKgiLHByaXZhY3k6IlByaXZhY3kiLHRlcm1zOiJUZXJtaW5pIGRpIFV0aWxpenpvIn0sY2hhdDp7Z3JlZXRpbmc6IkNpYW8hIPCfkYsgU29ubyBsJ2Fzc2lzdGVudGUgSUEgZGkgU2hhaHJ6YWQuIENvbWUgcG9zc28gYWl1dGFydGk\/IixwbGFjZWhvbGRlcjoiU2NyaXZpIGlsIHR1byBtZXNzYWdnaW8uLi4iLGVuZENoYXQ6IlRlcm1pbmEgY2hhdCBlIGxhc2NpYSBjb250YXR0byIsY29udGFjdFByb21wdDoiTGFzY2lhIGkgdHVvaSBkYXRpIHBlciBpbCBmb2xsb3ctdXAiLG5hbWVQbGFjZWhvbGRlcjoiSWwgdHVvIG5vbWUiLGNvbnRhY3RQbGFjZWhvbGRlcjoiRW1haWwgbyB0ZWxlZm9ubyIsc3VibWl0OiJJbnZpYSIsc2tpcDoiU2FsdGEiLHNlbmRpbmc6IkludmlvLi4uIixuZXdDb252ZXJzYXRpb246Ik51b3ZhIGNvbnZlcnNhemlvbmUiLGFzc2lzdGFudDoiQXNzaXN0ZW50ZSBTaGFocnphZCIsb25saW5lOiJPbmxpbmUifX0sWmo9e25hdjp7ZmVhdHVyZXM6IlJlY3Vyc29zIixmb3JZb3U6IlBhcmEgVm9jw6oiLG91clN0b3J5OiJOb3NzYSBIaXN0w7NyaWEiLGZhcToiRkFRIixsaWJyYXJ5OiJCaWJsaW90ZWNhIix0cnlGcmVlOiJFeHBlcmltZW50ZSBHcsOhdGlzIn0saGVybzp7YmFkZ2U6IuKcqCBTdWEgQ29udGFkb3JhIE3DoWdpY2EiLHRpdGxlMToiU3VhIENvbnRhZG9yYSIsdGl0bGUyOiJNw6FnaWNhIixkZXNjcmlwdGlvbjoiVHJhbnNmb3JtZSBxdWFscXVlciBsaXZybyBQREYsIEVQVUIgb3UgVFhUIGVtIGF1ZGlvbGl2cm8gaW1lcnNpdm8uIEVudmllLCB0cmFkdXphIGUgb3XDp2EgZW0gbWFpcyBkZSAxOCBpZGlvbWFzIGNvbSB2b3plcyBJQSBuYXR1cmFpcy4ifSxib29rczp7YmFkZ2U6IkJpYmxpb3RlY2EgSUEiLHRpdGxlOiJFeHBsb3JlIE5vc3NhIEJpYmxpb3RlY2EgTcOhZ2ljYSDinKgiLGRlc2NyaXB0aW9uOiJEZXNjdWJyYSBsaXZyb3MgZSBkZWl4ZSBhIElBIG5hcnLDoS1sb3Mgbm8gaWRpb21hIHF1ZSBxdWlzZXIiLGN0YToiQ29tZWNlIGEgT3V2aXIgR3LDoXRpcyIsYWlOYXJyYXRlZDoiTmFycmFkbyBwb3IgSUEifSxmZWF0dXJlczp7YmFkZ2U6Ik1hZ2lhIElBIix0aXRsZToiUmVjdXJzb3MgRW5jYW50YWRvcmVzIOKcqCIsZGVzY3JpcHRpb246IkNhZGEgcmVjdXJzbyDDqSBjcmlhZG8gY29tIGludGVsaWfDqm5jaWEgYXJ0aWZpY2lhbCIsaXRlbXM6e3ZvaWNlVGl0bGU6Ik5hcnJhw6fDo28gVm9jYWwgSUEiLHZvaWNlRGVzYzoiVm96ZXMgbWFzY3VsaW5hcyBlIGZlbWluaW5hcyBjb20gbcO6c2ljYSBhdG1vc2bDqXJpY2EiLHRyYW5zbGF0ZVRpdGxlOiJUcmFkdcOnw6NvIEludGVsaWdlbnRlIix0cmFuc2xhdGVEZXNjOiJUcmFkdXphIGUgbmFycmUgZW0gbWFpcyBkZSAxOCBpZGlvbWFzIixsaWJyYXJ5VGl0bGU6IkJpYmxpb3RlY2EgSUEgUGVzc29hbCIsbGlicmFyeURlc2M6IlJlc3Vtb3MgZSByZWNvbWVuZGHDp8O1ZXMgaW50ZWxpZ2VudGVzIixmYW1pbHlUaXRsZToiTGVpdHVyYSBGYW1pbGlhciIsZmFtaWx5RGVzYzoiRGVpeGUgc2V1cyBmaWxob3Mgb3V2aXJlbSBsaXZyb3MgZGUgcXVhbHF1ZXIgY3VsdHVyYSIsYWNjZXNzVGl0bGU6IkFjZXNzaWJpbGlkYWRlIFByaW1laXJvIixhY2Nlc3NEZXNjOiJTZW0gcmVzdHJpw6fDtWVzLiBQZXJmZWl0byBwYXJhIGRlc2FmaW9zIHZpc3VhaXMiLHN5bmNUaXRsZToiU2luY3Jvbml6YcOnw6NvIFRvdGFsIixzeW5jRGVzYzoiU3VhIGJpYmxpb3RlY2Egc2luY3Jvbml6YSBlbSB0b2RvcyBvcyBkaXNwb3NpdGl2b3MifX0sYXVkaWVuY2VzOnt0aXRsZToiUGVyZmVpdG8gUGFyYSBUb2RvcyDwn4yfIixkZXNjcmlwdGlvbjoiU2VqYSBxdWFsIGZvciBzZXUgbW90aXZvIHBhcmEgYW1hciBoaXN0w7NyaWFzLCBTaGFocnphZCB0ZSBhdGVuZGUiLHBhcmVudHM6e3RpdGxlOiJQYWlzIGUgRmFtw61saWFzIixkZXNjOiJDcmllIGV4cGVyacOqbmNpYXMgbcOhZ2ljYXMgbmEgaG9yYSBkZSBkb3JtaXIiLHBvaW50czpbIkVudmllIGxpdnJvcyBmYXZvcml0b3MiLCJFeHBvbmhhIGNyaWFuw6dhcyBhIG3Dumx0aXBsb3MgaWRpb21hcyIsIkF1ZGnDp8OjbyBzZWd1cmEgc2VtIGFuw7puY2lvcyJdfSxsZWFybmVyczp7dGl0bGU6IkVzdHVkYW50ZXMgZGUgSWRpb21hcyIsZGVzYzoiRG9taW5lIG5vdm9zIGlkaW9tYXMgcGVsYSBuYXJyYcOnw6NvIGltZXJzaXZhIixwb2ludHM6WyJPdcOnYSBubyBpZGlvbWEgYWx2byIsIkNvbXBhcmUgdHJhZHXDp8O1ZXMiLCJNYWlzIGRlIDE4IGlkaW9tYXMiXX0sYWNjZXNzaWJpbGl0eTp7dGl0bGU6IkFjZXNzaWJpbGlkYWRlIixkZXNjOiJSZWRlc2N1YnJhIG8gcHJhemVyIGRhIGxlaXR1cmEiLHBvaW50czpbIlF1YWxxdWVyIGxpdnJvIHZpcmEgYXVkaW9saXZybyIsIlZlbG9jaWRhZGUgZSB2b3ogYWp1c3TDoXZlaXMiLCJGdW5jaW9uYSBjb20gcXVhbHF1ZXIgZm9ybWF0byJdfSxyZWFkZXJzOnt0aXRsZToiQ2x1YmVzIGRvIExpdnJvIixkZXNjOiJUcmFuc2Zvcm1lIHN1YSBleHBlcmnDqm5jaWEgZGUgbGVpdHVyYSIscG9pbnRzOlsiT3XDp2Egbm8gdHJhamV0byIsIlJlc3Vtb3MgcG9yIElBIiwiU2luY3Jvbml6YcOnw6NvIG11bHRpLWRpc3Bvc2l0aXZvIl19fSxzdG9yeTp7YmFkZ2U6IvCfkqsgTm9zc2EgSGlzdMOzcmlhIix0aXRsZTE6Ikluc3BpcmFkbyBlbSIsdGl0bGUyOiJBcyBNaWwgZSBVbWEgTm9pdGVzIixwMToiU2hhaHJ6YWQgbGV2YSBvIG5vbWUgZGEgbGVuZMOhcmlhIGNvbnRhZG9yYSBkZSBBcyBNaWwgZSBVbWEgTm9pdGVzLiIscXVvdGU6IlRvZGEgcGVzc29hIGRldmVyaWEgdGVyIGFjZXNzbyBhIHRvZGEgaGlzdMOzcmlhLCBlbSB0b2RvIGlkaW9tYSwgY29tIHVtYSB2b3ogcXVlIGZhbGUgw6Agc3VhIGFsbWEuIixwMjoiTm9zc2EgbWlzc8OjbyDDqSBkZW1vY3JhdGl6YXIgYSBuYXJyYcOnw6NvIGF0cmF2w6lzIGRhIHRlY25vbG9naWEgSUEuIn0sZmFxOntiYWRnZToiUGVyZ3VudGFzPyIsdGl0bGU6IlBlcmd1bnRhcyBGcmVxdWVudGVzIixkZXNjcmlwdGlvbjoiVHVkbyBzb2JyZSBhIG1hZ2lhIElBIGRlIFNoYWhyemFkIixpdGVtczpbe3E6IkNvbW8gZnVuY2lvbmEgYSBuYXJyYcOnw6NvIElBPyIsYToiTm9zc2EgSUEgYW5hbGlzYSBvIHRleHRvIGUgZ2VyYSBuYXJyYcOnw6NvIG5hdHVyYWwgY29tIG3DunNpY2EgYXRtb3Nmw6lyaWNhLiJ9LHtxOiJRdWFpcyBmb3JtYXRvcyBzw6NvIHN1cG9ydGFkb3M\/IixhOiJQREYsIEVQVUIgZSBUWFQuIn0se3E6IlF1YW50b3MgaWRpb21hcyBkaXNwb27DrXZlaXM\/IixhOiJNYWlzIGRlIDE4IGlkaW9tYXMgY29tIHZvemVzIG1hc2N1bGluYXMgZSBmZW1pbmluYXMuIn0se3E6IlBvc3NvIHVzYXIgb2ZmbGluZT8iLGE6IlNpbSwgYXDDs3MgZG93bmxvYWQgdm9jw6ogcG9kZSBvdXZpciBvZmZsaW5lLiJ9LHtxOiJNZXUgY29udGXDumRvIMOpIHByaXZhZG8\/IixhOiJBYnNvbHV0YW1lbnRlLiBTZXVzIGxpdnJvcyBzw6NvIHByaXZhZG9zLiJ9LHtxOiJDb21vIHNlIGNvbXBhcmEgYW8gQXVkaWJsZT8iLGE6IlNoYWhyemFkIHBlcm1pdGUgZW52aWFyIFFVQUxRVUVSIGxpdnJvIHBhcmEgbmFycmHDp8OjbyBJQSBpbnN0YW50w6JuZWEgZW0gbcO6bHRpcGxvcyBpZGlvbWFzLiJ9XX0sZm9vdGVyOntjb3B5cmlnaHQ6IsKpIHt5ZWFyfSBTaGFocnphZC4gVG9kb3Mgb3MgZGlyZWl0b3MgcmVzZXJ2YWRvcyDinKgiLHByaXZhY3k6IlByaXZhY2lkYWRlIix0ZXJtczoiVGVybW9zIGRlIFVzbyJ9LGNoYXQ6e2dyZWV0aW5nOiJPbMOhISDwn5GLIFNvdSBvIGFzc2lzdGVudGUgSUEgZGUgU2hhaHJ6YWQuIENvbW8gcG9zc28gYWp1ZGFyPyIscGxhY2Vob2xkZXI6IkRpZ2l0ZSBzdWEgbWVuc2FnZW0uLi4iLGVuZENoYXQ6IkVuY2VycmFyIGUgZGVpeGFyIGNvbnRhdG8iLGNvbnRhY3RQcm9tcHQ6IkRlaXhlIHNldXMgZGFkb3MgcGFyYSByZXRvcm5vIixuYW1lUGxhY2Vob2xkZXI6IlNldSBub21lIixjb250YWN0UGxhY2Vob2xkZXI6IkVtYWlsIG91IHRlbGVmb25lIixzdWJtaXQ6IkVudmlhciIsc2tpcDoiUHVsYXIiLHNlbmRpbmc6IkVudmlhbmRvLi4uIixuZXdDb252ZXJzYXRpb246Ik5vdmEgY29udmVyc2EiLGFzc2lzdGFudDoiQXNzaXN0ZW50ZSBTaGFocnphZCIsb25saW5lOiJPbmxpbmUifX0sZXo9e25hdjp7ZmVhdHVyZXM6IkZ1bmN0aWVzIixmb3JZb3U6IlZvb3IgSm91IixvdXJTdG9yeToiT25zIFZlcmhhYWwiLGZhcToiRkFRIixsaWJyYXJ5OiJCaWJsaW90aGVlayIsdHJ5RnJlZToiR3JhdGlzIFByb2JlcmVuIn0saGVybzp7YmFkZ2U6IuKcqCBKb3V3IE1hZ2lzY2hlIFZlcnRlbHN0ZXIiLHRpdGxlMToiSm91dyBNYWdpc2NoZSIsdGl0bGUyOiJWZXJ0ZWxzdGVyIixkZXNjcmlwdGlvbjoiVmVyYW5kZXIgZWxrIFBERiwgRVBVQiBvZiBUWFQtYm9layBpbiBlZW4gbWVlc2xlcGVuZCBhdWRpb2JvZWsuIFVwbG9hZCwgdmVydGFhbCBlbiBsdWlzdGVyIGluIDE4KyB0YWxlbiBtZXQgbmF0dXVybGlqa2UgQUktc3RlbW1lbi4ifSxib29rczp7YmFkZ2U6IkFJLUJpYmxpb3RoZWVrIix0aXRsZToiT250ZGVrIE9uemUgTWFnaXNjaGUgQmlibGlvdGhlZWsg4pyoIixkZXNjcmlwdGlvbjoiT250ZGVrIGJvZWtlbiBlbiBsYWF0IEFJIHplIGluIGVsa2UgZ2V3ZW5zdGUgdGFhbCB2ZXJ0ZWxsZW4iLGN0YToiQmVnaW4gR3JhdGlzIHRlIEx1aXN0ZXJlbiIsYWlOYXJyYXRlZDoiQUkgVmVydGVsZCJ9LGZlYXR1cmVzOntiYWRnZToiQUktTWFnaWUiLHRpdGxlOiJCZXRvdmVyZW5kZSBGdW5jdGllcyDinKgiLGRlc2NyaXB0aW9uOiJFbGtlIGZ1bmN0aWUgaXMgb250d29ycGVuIG1ldCBBSS1pbnRlbGxpZ2VudGllIixpdGVtczp7dm9pY2VUaXRsZToiQUkgU3ByYWFrdmVydGVsbGluZyIsdm9pY2VEZXNjOiJNYW5uZWxpamtlIGVuIHZyb3V3ZWxpamtlIHN0ZW1tZW4gbWV0IGF0bW9zZmVyaXNjaGUgbXV6aWVrIix0cmFuc2xhdGVUaXRsZToiU2xpbW1lIFZlcnRhbGluZyIsdHJhbnNsYXRlRGVzYzoiRGlyZWN0IHZlcnRhbGVuIGVuIHZlcnRlbGxlbiBpbiAxOCsgdGFsZW4iLGxpYnJhcnlUaXRsZToiUGVyc29vbmxpamtlIEFJLUJpYmxpb3RoZWVrIixsaWJyYXJ5RGVzYzoiQUktc2FtZW52YXR0aW5nZW4gZW4gc2xpbW1lIGFhbmJldmVsaW5nZW4iLGZhbWlseVRpdGxlOiJGYW1pbGllIFZlcnRlbGxlbiIsZmFtaWx5RGVzYzoiTGFhdCBraW5kZXJlbiBsdWlzdGVyZW4gbmFhciBib2VrZW4gdWl0IGVsa2UgY3VsdHV1ciIsYWNjZXNzVGl0bGU6IlRvZWdhbmtlbGlqa2hlaWQgRWVyc3QiLGFjY2Vzc0Rlc2M6IkdlZW4gYmVwZXJraW5nZW4uIFBlcmZlY3QgYmlqIHZpc3VlbGUgdWl0ZGFnaW5nZW4iLHN5bmNUaXRsZToiT3ZlcmFsIEdlc3luY2hyb25pc2VlcmQiLHN5bmNEZXNjOiJKZSBiaWJsaW90aGVlayBzeW5jaHJvbmlzZWVydCBvcCBhbGxlIGFwcGFyYXRlbiJ9fSxhdWRpZW5jZXM6e3RpdGxlOiJQZXJmZWN0IFZvb3IgSWVkZXJlZW4g8J+MnyIsZGVzY3JpcHRpb246IldhdCBqZSByZWRlbiBvb2sgaXMgb20gdmFuIHZlcmhhbGVuIHRlIGhvdWRlbiwgU2hhaHJ6YWQgaXMgZXIgdm9vciBqb3UiLHBhcmVudHM6e3RpdGxlOiJPdWRlcnMgJiBHZXppbm5lbiIsZGVzYzoiQ3Jlw6tlciBtYWdpc2NoZSBzbGFhcHRpamRlcnZhcmluZ2VuIixwb2ludHM6WyJVcGxvYWQgZmF2b3JpZXRlIGJvZWtlbiIsIlN0ZWwga2luZGVyZW4gYmxvb3QgYWFuIG1lZXJkZXJlIHRhbGVuIiwiVmVpbGlnLCByZWNsYW1ldnJpaiBsdWlzdGVyZW4iXX0sbGVhcm5lcnM6e3RpdGxlOiJUYWFsbGVlcmRlcnMiLGRlc2M6IkJlaGVlcnMgbmlldXdlIHRhbGVuIGRvb3IgbWVlc2xlcGVuZCB2ZXJ0ZWxsZW4iLHBvaW50czpbIkx1aXN0ZXIgaW4gamUgZG9lbHRhYWwiLCJWZXJnZWxpamsgdmVydGFsaW5nZW4iLCIxOCsgdGFsZW4gYmVzY2hpa2JhYXIiXX0sYWNjZXNzaWJpbGl0eTp7dGl0bGU6IlRvZWdhbmtlbGlqa2hlaWQiLGRlc2M6Ikhlcm9udGRlayBoZXQgcGxlemllciB2YW4gbGV6ZW4iLHBvaW50czpbIkVsayBib2VrIHdvcmR0IGVlbiBhdWRpb2JvZWsiLCJTbmVsaGVpZCBlbiBzdGVtIGFhbnBhc2JhYXIiLCJXZXJrdCBtZXQgZWxrIGZvcm1hYXQiXX0scmVhZGVyczp7dGl0bGU6IkJvZWtjbHVicyAmIExlemVycyIsZGVzYzoiVHJhbnNmb3JtZWVyIGplIGxlZXNlcnZhcmluZyIscG9pbnRzOlsiTHVpc3RlciBvbmRlcndlZyIsIkFJLXNhbWVudmF0dGluZ2VuIiwiTXVsdGktZGV2aWNlIHN5bmNocm9uaXNhdGllIl19fSxzdG9yeTp7YmFkZ2U6IvCfkqsgT25zIFZlcmhhYWwiLHRpdGxlMToiR2XDr25zcGlyZWVyZCBkb29yIix0aXRsZTI6IkR1aXplbmQtZW4tw6nDqW4tbmFjaHQiLHAxOiJTaGFocnphZCBpcyB2ZXJub2VtZCBuYWFyIGRlIGxlZ2VuZGFyaXNjaGUgdmVydGVsc3RlciB1aXQgRHVpemVuZC1lbi3DqcOpbi1uYWNodC4iLHF1b3RlOiJJZWRlcmVlbiB6b3UgdG9lZ2FuZyBtb2V0ZW4gaGViYmVuIHRvdCBlbGsgdmVyaGFhbCwgaW4gZWxrZSB0YWFsLCBtZXQgZWVuIHN0ZW0gZGllIHRvdCBkZSB6aWVsIHNwcmVla3QuIixwMjoiT256ZSBtaXNzaWUgaXMgaGV0IGRlbW9jcmF0aXNlcmVuIHZhbiB2ZXJoYWxlbiB2ZXJ0ZWxsZW4gZG9vciBBSS10ZWNobm9sb2dpZS4ifSxmYXE6e2JhZGdlOiJWcmFnZW4\/Iix0aXRsZToiVmVlbGdlc3RlbGRlIFZyYWdlbiIsZGVzY3JpcHRpb246IkFsbGVzIG92ZXIgU2hhaHJ6YWRzIEFJLW1hZ2llIixpdGVtczpbe3E6IkhvZSB3ZXJrdCBkZSBBSS12ZXJ0ZWxsaW5nPyIsYToiT256ZSBBSSBhbmFseXNlZXJ0IHRla3N0IGVuIGdlbmVyZWVydCBuYXR1dXJsaWprZSB2ZXJ0ZWxsaW5nIG1ldCBtdXppZWsuIn0se3E6IldlbGtlIGZvcm1hdGVuIHdvcmRlbiBvbmRlcnN0ZXVuZD8iLGE6IlBERiwgRVBVQiBlbiBUWFQuIn0se3E6IkhvZXZlZWwgdGFsZW4gYmVzY2hpa2JhYXI\/IixhOiIxOCsgdGFsZW4gbWV0IG1hbm5lbGlqa2UgZW4gdnJvdXdlbGlqa2Ugc3RlbW1lbi4ifSx7cToiS2FuIGlrIG9mZmxpbmUgZ2VicnVpa2VuPyIsYToiSmEsIG5hIGRvd25sb2FkIGt1biBqZSBvZmZsaW5lIGx1aXN0ZXJlbi4ifSx7cToiSXMgbWlqbiBjb250ZW50IHByaXbDqT8iLGE6IkFic29sdXV0LiBKZSBib2VrZW4gemlqbiBwcml2w6kuIn0se3E6IkhvZSB2ZXJob3VkdCBoZXQgemljaCB0b3QgQXVkaWJsZT8iLGE6IlNoYWhyemFkIGxhYXQgamUgRUxLIGJvZWsgdXBsb2FkZW4gdm9vciBkaXJlY3RlIEFJLXZlcnRlbGxpbmcgaW4gbWVlcmRlcmUgdGFsZW4uIn1dfSxmb290ZXI6e2NvcHlyaWdodDoiwqkge3llYXJ9IFNoYWhyemFkLiBBbGxlIHJlY2h0ZW4gdm9vcmJlaG91ZGVuIOKcqCIscHJpdmFjeToiUHJpdmFjeSIsdGVybXM6IkdlYnJ1aWtzdm9vcndhYXJkZW4ifSxjaGF0OntncmVldGluZzoiSG9pISDwn5GLIElrIGJlbiBTaGFocnphZHMgQUktYXNzaXN0ZW50LiBIb2Uga2FuIGlrIGplIGhlbHBlbj8iLHBsYWNlaG9sZGVyOiJUeXAgamUgYmVyaWNodC4uLiIsZW5kQ2hhdDoiQ2hhdCBiZcOraW5kaWdlbiAmIGNvbnRhY3QgYWNodGVybGF0ZW4iLGNvbnRhY3RQcm9tcHQ6IkxhYXQgamUgZ2VnZXZlbnMgYWNodGVyIHZvb3IgZm9sbG93LXVwIixuYW1lUGxhY2Vob2xkZXI6IkplIG5hYW0iLGNvbnRhY3RQbGFjZWhvbGRlcjoiRS1tYWlsIG9mIHRlbGVmb29uIixzdWJtaXQ6IlZlcnplbmRlbiIsc2tpcDoiT3ZlcnNsYWFuIixzZW5kaW5nOiJWZXJ6ZW5kZW4uLi4iLG5ld0NvbnZlcnNhdGlvbjoiTmlldXcgZ2VzcHJlayIsYXNzaXN0YW50OiJTaGFocnphZCBBc3Npc3RlbnQiLG9ubGluZToiT25saW5lIn19LHR6PXtuYXY6e2ZlYXR1cmVzOiJGdW5rdGlvbmVyIixmb3JZb3U6IkbDtnIgRGlnIixvdXJTdG9yeToiVsOlciBIaXN0b3JpYSIsZmFxOiJGQVEiLGxpYnJhcnk6IkJpYmxpb3RlayIsdHJ5RnJlZToiVGVzdGEgR3JhdGlzIn0saGVybzp7YmFkZ2U6IuKcqCBEaW4gTWFnaXNrYSBCZXLDpHR0YXJlIix0aXRsZTE6IkRpbiBNYWdpc2thIix0aXRsZTI6IkJlcsOkdHRhcmUiLGRlc2NyaXB0aW9uOiJGw7ZydmFuZGxhIHZpbGtlbiBQREYsIEVQVUIgZWxsZXIgVFhULWJvayBzb20gaGVsc3QgdGlsbCBlbiB1cHBzbHVrYW5kZSBsanVkYm9rLiBMYWRkYSB1cHAsIMO2dmVyc8OkdHQgb2NoIGx5c3NuYSBww6UgMTgrIHNwcsOlay4ifSxib29rczp7YmFkZ2U6IkFJLUJpYmxpb3RlayIsdGl0bGU6IlV0Zm9yc2thIFbDpXJ0IE1hZ2lza2EgQmlibGlvdGVrIOKcqCIsZGVzY3JpcHRpb246IlVwcHTDpGNrIGLDtmNrZXIgb2NoIGzDpXQgQUkgYmVyw6R0dGEgZGVtIHDDpSB2YWxmcml0dCBzcHLDpWsiLGN0YToiQsO2cmphIEx5c3NuYSBHcmF0aXMiLGFpTmFycmF0ZWQ6IkFJLUJlcsOkdHRhZCJ9LGZlYXR1cmVzOntiYWRnZToiQUktTWFnaSIsdGl0bGU6IkbDtnJ0cm9sbGFuZGUgRnVua3Rpb25lciDinKgiLGRlc2NyaXB0aW9uOiJWYXJqZSBmdW5rdGlvbiDDpHIgc2thcGFkIG1lZCBBSS1pbnRlbGxpZ2VucyIsaXRlbXM6e3ZvaWNlVGl0bGU6IkFJLVLDtnN0YmVyw6R0dGFuZGUiLHZvaWNlRGVzYzoiTWFubGlnYSBvY2gga3Zpbm5saWdhIHLDtnN0ZXIgbWVkIGF0bW9zZsOkcmlzayBtdXNpayIsdHJhbnNsYXRlVGl0bGU6IlNtYXJ0IMOWdmVyc8OkdHRuaW5nIix0cmFuc2xhdGVEZXNjOiLDlnZlcnPDpHR0IG9jaCBiZXLDpHR0YSBkaXJla3QgcMOlIDE4KyBzcHLDpWsiLGxpYnJhcnlUaXRsZToiUGVyc29ubGlndCBBSS1CaWJsaW90ZWsiLGxpYnJhcnlEZXNjOiJBSS1zYW1tYW5mYXR0bmluZ2FyIG9jaCBzbWFydGEgcmVrb21tZW5kYXRpb25lciIsZmFtaWx5VGl0bGU6IkZhbWlsamViZXLDpHR0YW5kZSIsZmFtaWx5RGVzYzoiTMOldCBiYXJuZW4gbHlzc25hIHDDpSBiw7Zja2VyIGZyw6VuIGFsbGEga3VsdHVyZXIiLGFjY2Vzc1RpdGxlOiJUaWxsZ8OkbmdsaWdoZXQgRsO2cnN0IixhY2Nlc3NEZXNjOiJJbmdhIGJlZ3LDpG5zbmluZ2FyLiBQZXJmZWt0IHZpZCBzeW5zdsOlcmlnaGV0ZXIiLHN5bmNUaXRsZToiU3lua3JvbmlzZXJpbmcgw5Z2ZXJhbGx0IixzeW5jRGVzYzoiRGl0dCBiaWJsaW90ZWsgc3lua3JvbmlzZXJhcyBww6UgYWxsYSBlbmhldGVyIn19LGF1ZGllbmNlczp7dGl0bGU6IlBlcmZla3QgRsO2ciBBbGxhIPCfjJ8iLGRlc2NyaXB0aW9uOiJPYXZzZXR0IHZhcmbDtnIgZHUgw6Rsc2thciBiZXLDpHR0ZWxzZXIsIFNoYWhyemFkIGhhciBkaWciLHBhcmVudHM6e3RpdGxlOiJGw7Zyw6RsZHJhciAmIEZhbWlsamVyIixkZXNjOiJTa2FwYSBtYWdpc2thIGdvZG5hdHRzdHVuZGVyIixwb2ludHM6WyJMYWRkYSB1cHAgZmF2b3JpdGLDtmNrZXIiLCJFeHBvbmVyYSBiYXJuIGbDtnIgZmxlcmEgc3Byw6VrIiwiU8Oka2VydCwgcmVrbGFtZnJpdHQgbHlzc25hbmRlIl19LGxlYXJuZXJzOnt0aXRsZToiU3Byw6Vrc3R1ZGVudGVyIixkZXNjOiJCZW3DpHN0cmEgbnlhIHNwcsOlayBnZW5vbSB1cHBzbHVrYW5kZSBiZXLDpHR0YW5kZSIscG9pbnRzOlsiTHlzc25hIHDDpSBkaXR0IG3DpWxzcHLDpWsiLCJKw6RtZsO2ciDDtnZlcnPDpHR0bmluZ2FyIiwiMTgrIHNwcsOlayJdfSxhY2Nlc3NpYmlsaXR5Ont0aXRsZToiVGlsbGfDpG5nbGlnaGV0IixkZXNjOiLDhXRlcnVwcHTDpGNrIGzDpHNnbMOkZGplIixwb2ludHM6WyJWYXJqZSBib2sgYmxpciBlbiBsanVkYm9rIiwiSnVzdGVyYmFyIGhhc3RpZ2hldCBvY2ggcsO2c3QiLCJGdW5nZXJhciBtZWQgYWxsYSBmb3JtYXQiXX0scmVhZGVyczp7dGl0bGU6IkJva2tsdWJiYXIgJiBMw6RzYXJlIixkZXNjOiJGw7ZydmFuZGxhIGRpbiBsw6RzdXBwbGV2ZWxzZSIscG9pbnRzOlsiTHlzc25hIHDDpSBwZW5kbGluZ2VuIiwiQUktc2FtbWFuZmF0dG5pbmdhciIsIk11bHRpLWVuaGV0c3N5bmsiXX19LHN0b3J5OntiYWRnZToi8J+SqyBWw6VyIEhpc3RvcmlhIix0aXRsZTE6Ikluc3BpcmVyYWQgYXYiLHRpdGxlMjoiVHVzZW4gb2NoIEVuIE5hdHQiLHAxOiJTaGFocnphZCDDpHIgdXBwa2FsbGFkIGVmdGVyIGRlbiBsZWdlbmRhcmlza2EgYmVyw6R0dGFyZW4gZnLDpW4gVHVzZW4gb2NoIEVuIE5hdHQuIixxdW90ZToiVmFyamUgcGVyc29uIGJvcmRlIGhhIHRpbGxnw6VuZyB0aWxsIHZhcmplIGJlcsOkdHRlbHNlLCBww6UgdmFyamUgc3Byw6VrLCBtZWQgZW4gcsO2c3Qgc29tIHRhbGFyIHRpbGwgc2rDpGxlbi4iLHAyOiJWw6VydCB1cHBkcmFnIMOkciBhdHQgZGVtb2tyYXRpc2VyYSBiZXLDpHR0YW5kZSBnZW5vbSBBSS10ZWtuaWsuIn0sZmFxOntiYWRnZToiRnLDpWdvcj8iLHRpdGxlOiJWYW5saWdhIEZyw6Vnb3IiLGRlc2NyaXB0aW9uOiJBbGx0IG9tIFNoYWhyemFkcyBBSS1tYWdpIixpdGVtczpbe3E6Ikh1ciBmdW5nZXJhciBBSS1iZXLDpHR0YW5kZXQ\/IixhOiJWw6VyIEFJIGFuYWx5c2VyYXIgdGV4dCBvY2ggc2thcGFyIG5hdHVybGlndCBiZXLDpHR0YW5kZSBtZWQgbXVzaWsuIn0se3E6IlZpbGthIGZvcm1hdCBzdMO2ZHM\/IixhOiJQREYsIEVQVUIgb2NoIFRYVC4ifSx7cToiSHVyIG3DpW5nYSBzcHLDpWs\/IixhOiIxOCsgc3Byw6VrIG1lZCBtYW5saWdhIG9jaCBrdmlubmxpZ2EgcsO2c3Rlci4ifSx7cToiS2FuIGphZyBhbnbDpG5kYSBvZmZsaW5lPyIsYToiSmEsIGVmdGVyIG5lZGxhZGRuaW5nIGthbiBkdSBseXNzbmEgb2ZmbGluZS4ifSx7cToiw4RyIG1pdHQgaW5uZWjDpWxsIHByaXZhdD8iLGE6IkFic29sdXQuIERpbmEgYsO2Y2tlciDDpHIgcHJpdmF0YS4ifSx7cToiSHVyIGrDpG1mw7ZycyBkZXQgbWVkIEF1ZGlibGU\/IixhOiJTaGFocnphZCBsw6V0ZXIgZGlnIGxhZGRhIHVwcCBWSUxLRU4gYm9rIHNvbSBoZWxzdCBmw7ZyIGRpcmVrdCBBSS1iZXLDpHR0YW5kZSBww6UgZmxlcmEgc3Byw6VrLiJ9XX0sZm9vdGVyOntjb3B5cmlnaHQ6IsKpIHt5ZWFyfSBTaGFocnphZC4gQWxsYSByw6R0dGlnaGV0ZXIgZsO2cmJlaMOlbGxuYSDinKgiLHByaXZhY3k6IkludGVncml0ZXQiLHRlcm1zOiJWaWxsa29yIn0sY2hhdDp7Z3JlZXRpbmc6IkhlaiEg8J+RiyBKYWcgw6RyIFNoYWhyemFkcyBBSS1hc3Npc3RlbnQuIEh1ciBrYW4gamFnIGhqw6RscGEgZGlnPyIscGxhY2Vob2xkZXI6IlNrcml2IGRpdHQgbWVkZGVsYW5kZS4uLiIsZW5kQ2hhdDoiQXZzbHV0YSBjaGF0dCAmIGzDpG1uYSBrb250YWt0Iixjb250YWN0UHJvbXB0OiJMw6RtbmEgZGluYSB1cHBnaWZ0ZXIgZsO2ciB1cHBmw7Zsam5pbmciLG5hbWVQbGFjZWhvbGRlcjoiRGl0dCBuYW1uIixjb250YWN0UGxhY2Vob2xkZXI6IkUtcG9zdCBlbGxlciB0ZWxlZm9uIixzdWJtaXQ6IlNraWNrYSIsc2tpcDoiSG9wcGEgw7Z2ZXIiLHNlbmRpbmc6IlNraWNrYXIuLi4iLG5ld0NvbnZlcnNhdGlvbjoiTnkga29udmVyc2F0aW9uIixhc3Npc3RhbnQ6IlNoYWhyemFkIEFzc2lzdGVudCIsb25saW5lOiJPbmxpbmUifX0sbno9e25hdjp7ZmVhdHVyZXM6IkZ1bmtjamUiLGZvcllvdToiRGxhIENpZWJpZSIsb3VyU3Rvcnk6Ik5hc3phIEhpc3RvcmlhIixmYXE6IkZBUSIsbGlicmFyeToiQmlibGlvdGVrYSIsdHJ5RnJlZToiV3lwcsOzYnVqIFphIERhcm1vIn0saGVybzp7YmFkZ2U6IuKcqCBUd29qYSBNYWdpY3puYSBOYXJyYXRvcmthIix0aXRsZTE6IlR3b2phIE1hZ2ljem5hIix0aXRsZTI6Ik5hcnJhdG9ya2EiLGRlc2NyaXB0aW9uOiJaYW1pZcWEIGRvd29sbsSFIGtzacSFxbxrxJkgUERGLCBFUFVCIGx1YiBUWFQgdyBpbW1lcnN5am55IGF1ZGlvYm9vay4gUHJ6ZcWbbGlqLCBwcnpldMWCdW1hY3ogaSBzxYJ1Y2hhaiB3IHBvbmFkIDE4IGrEmXp5a2FjaC4ifSxib29rczp7YmFkZ2U6IkJpYmxpb3Rla2EgQUkiLHRpdGxlOiJPZGtyeWogTmFzesSFIE1hZ2ljem7EhSBCaWJsaW90ZWvEmSDinKgiLGRlc2NyaXB0aW9uOiJPZGtyeXdhaiBrc2nEhcW8a2kgaSBwb3p3w7NsIEFJIG5hcnJvd2HEhyBqZSB3IGRvd29sbnltIGrEmXp5a3UiLGN0YToiWmFjem5paiBTxYJ1Y2hhxIcgWmEgRGFybW8iLGFpTmFycmF0ZWQ6Ik5hcnJhY2phIEFJIn0sZmVhdHVyZXM6e2JhZGdlOiJNYWdpYSBBSSIsdGl0bGU6IkN6YXJ1asSFY2UgRnVua2NqZSDinKgiLGRlc2NyaXB0aW9uOiJLYcW8ZGEgZnVua2NqYSBqZXN0IHR3b3J6b25hIHogaW50ZWxpZ2VuY2rEhSBBSSIsaXRlbXM6e3ZvaWNlVGl0bGU6Ik5hcnJhY2phIEfFgm9zb3dhIEFJIix2b2ljZURlc2M6IkfFgm9zeSBtxJlza2llIGkgxbxlxYRza2llIHogYXRtb3NmZXJ5Y3puxIUgbXV6eWvEhSIsdHJhbnNsYXRlVGl0bGU6IkludGVsaWdlbnRuZSBUxYJ1bWFjemVuaWUiLHRyYW5zbGF0ZURlc2M6Ik5hdHljaG1pYXN0b3dlIHTFgnVtYWN6ZW5pZSBpIG5hcnJhY2phIHcgMTgrIGrEmXp5a2FjaCIsbGlicmFyeVRpdGxlOiJPc29iaXN0YSBCaWJsaW90ZWthIEFJIixsaWJyYXJ5RGVzYzoiU3RyZXN6Y3plbmlhIGkgaW50ZWxpZ2VudG5lIHJla29tZW5kYWNqZSIsZmFtaWx5VGl0bGU6IkN6eXRhbmllIFJvZHppbm5lIixmYW1pbHlEZXNjOiJOaWVjaCBkemllY2kgc8WCdWNoYWrEhSBrc2nEhcW8ZWsgeiBrYcW8ZGVqIGt1bHR1cnkiLGFjY2Vzc1RpdGxlOiJEb3N0xJlwbm\/Fm8SHIFByemVkZSBXc3p5c3RraW0iLGFjY2Vzc0Rlc2M6IkJleiBvZ3JhbmljemXFhC4gSWRlYWxuZSBwcnp5IHByb2JsZW1hY2ggemUgd3pyb2tpZW0iLHN5bmNUaXRsZToiU3luY2hyb25pemFjamEgV3N6xJlkemllIixzeW5jRGVzYzoiQmlibGlvdGVrYSBzeW5jaHJvbml6dWplIHNpxJkgbmEgd3N6eXN0a2ljaCB1cnrEhWR6ZW5pYWNoIn19LGF1ZGllbmNlczp7dGl0bGU6IklkZWFsbmUgRGxhIEthxbxkZWdvIPCfjJ8iLGRlc2NyaXB0aW9uOiJOaWV6YWxlxbxuaWUgb2QgcG93b2R1LCBkbGEga3TDs3JlZ28ga29jaGFzeiBoaXN0b3JpZSIscGFyZW50czp7dGl0bGU6IlJvZHppY2UgaSBSb2R6aW55IixkZXNjOiJUd8OzcnogbWFnaWN6bmUgZG\/Fm3dpYWRjemVuaWEgbmEgZG9icmFub2MiLHBvaW50czpbIlByemXFm2xpaiB1bHViaW9uZSBrc2nEhcW8a2kiLCJOYXJhxbxhaiBkemllY2kgbmEgd2llbGUgasSZenlrw7N3IiwiQmV6cGllY3puZSBzxYJ1Y2hhbmllIGJleiByZWtsYW0iXX0sbGVhcm5lcnM6e3RpdGxlOiJVY3rEhWN5IHNpxJkgSsSZenlrw7N3IixkZXNjOiJPcGFudWogbm93ZSBqxJl6eWtpIHByemV6IGltbWVyc3lqbsSFIG5hcnJhY2rEmSIscG9pbnRzOlsiU8WCdWNoYWogdyBqxJl6eWt1IGRvY2Vsb3d5bSIsIlBvcsOzd251aiB0xYJ1bWFjemVuaWEiLCIxOCsgasSZenlrw7N3Il19LGFjY2Vzc2liaWxpdHk6e3RpdGxlOiJEb3N0xJlwbm\/Fm8SHIixkZXNjOiJPZGtyeWogbmEgbm93byByYWRvxZvEhyBjenl0YW5pYSIscG9pbnRzOlsiS2HFvGRhIGtzacSFxbxrYSBzdGFqZSBzacSZIGF1ZGlvYm9va2llbSIsIlJlZ3Vsb3dhbmEgcHLEmWRrb8WbxIcgaSBnxYJvcyIsIkR6aWHFgmEgeiBrYcW8ZHltIGZvcm1hdGVtIl19LHJlYWRlcnM6e3RpdGxlOiJLbHVieSBLc2nEhcW8a2kiLGRlc2M6IlByemVrc3p0YcWCxIcgc3dvamUgZG\/Fm3dpYWRjemVuaWUgY3p5dGVsbmljemUiLHBvaW50czpbIlPFgnVjaGFqIHcgcG9kcsOzxbx5IiwiU3RyZXN6Y3plbmlhIEFJIiwiU3luY2hyb25pemFjamEgbXVsdGktdXJ6xIVkemVuaW93YSJdfX0sc3Rvcnk6e2JhZGdlOiLwn5KrIE5hc3phIEhpc3RvcmlhIix0aXRsZTE6Ikluc3Bpcm93YW5lIHByemV6Iix0aXRsZTI6IlR5c2nEhWMgaSBKZWRuxIUgTm9jIixwMToiU2hhaHJ6YWQgbm9zaSBpbWnEmSBsZWdlbmRhcm5laiBuYXJyYXRvcmtpIHogVHlzacSFY2EgaSBKZWRuZWogTm9jeS4iLHF1b3RlOiJLYcW8ZHkgcG93aW5pZW4gbWllxIcgZG9zdMSZcCBkbyBrYcW8ZGVqIGhpc3RvcmlpLCB3IGthxbxkeW0gasSZenlrdSwgZ8WCb3NlbSBrdMOzcnkgcHJ6ZW1hd2lhIGRvIGR1c3p5LiIscDI6Ik5hc3rEhSBtaXNqxIUgamVzdCBkZW1va3JhdHl6YWNqYSBvcG93aWFkYW5pYSBoaXN0b3JpaSBwcnpleiB0ZWNobm9sb2dpxJkgQUkuIn0sZmFxOntiYWRnZToiUHl0YW5pYT8iLHRpdGxlOiJOYWpjesSZxZtjaWVqIFphZGF3YW5lIFB5dGFuaWEiLGRlc2NyaXB0aW9uOiJXc3p5c3RrbyBvIG1hZ2lpIEFJIFNoYWhyemFkIixpdGVtczpbe3E6IkphayBkemlhxYJhIG5hcnJhY2phIEFJPyIsYToiTmFzemUgQUkgYW5hbGl6dWplIHRla3N0IGkgZ2VuZXJ1amUgbmF0dXJhbG7EhSBuYXJyYWNqxJkgeiBtdXp5a8SFLiJ9LHtxOiJKYWtpZSBmb3JtYXR5IHPEhSBvYnPFgnVnaXdhbmU\/IixhOiJQREYsIEVQVUIgaSBUWFQuIn0se3E6IklsZSBqxJl6eWvDs3cgamVzdCBkb3N0xJlwbnljaD8iLGE6IjE4KyBqxJl6eWvDs3cgeiBnxYJvc2FtaSBtxJlza2ltaSBpIMW8ZcWEc2tpbWkuIn0se3E6IkN6eSBtb2fEmSB1xbx5d2HEhyBvZmZsaW5lPyIsYToiVGFrLCBwbyBwb2JyYW5pdSBtb8W8ZXN6IHPFgnVjaGHEhyBvZmZsaW5lLiJ9LHtxOiJDenkgbW9qYSB0cmXFm8SHIGplc3QgcHJ5d2F0bmE\/IixhOiJBYnNvbHV0bmllLiBUd29qZSBrc2nEhcW8a2kgc8SFIHByeXdhdG5lLiJ9LHtxOiJKYWsgd3lwYWRhIHcgcG9yw7N3bmFuaXUgeiBBdWRpYmxlPyIsYToiU2hhaHJ6YWQgcG96d2FsYSBwcnplc8WCYcSHIERPV09MTsSEIGtzacSFxbxrxJkgZG8gbmF0eWNobWlhc3Rvd2VqIG5hcnJhY2ppIEFJIHcgd2llbHUgasSZenlrYWNoLiJ9XX0sZm9vdGVyOntjb3B5cmlnaHQ6IsKpIHt5ZWFyfSBTaGFocnphZC4gV3N6ZWxraWUgcHJhd2EgemFzdHJ6ZcW8b25lIOKcqCIscHJpdmFjeToiUHJ5d2F0bm\/Fm8SHIix0ZXJtczoiUmVndWxhbWluIn0sY2hhdDp7Z3JlZXRpbmc6IkN6ZcWbxIchIPCfkYsgSmVzdGVtIGFzeXN0ZW50ZW0gQUkgU2hhaHJ6YWQuIEphayBtb2fEmSBwb23Ds2M\/IixwbGFjZWhvbGRlcjoiV3Bpc3ogd2lhZG9tb8WbxIcuLi4iLGVuZENoYXQ6Ilpha2\/FhGN6IGN6YXQgaSB6b3N0YXcga29udGFrdCIsY29udGFjdFByb21wdDoiWm9zdGF3IGRhbmUgZG8ga29udGFrdHUiLG5hbWVQbGFjZWhvbGRlcjoiVHdvamUgaW1pxJkiLGNvbnRhY3RQbGFjZWhvbGRlcjoiRW1haWwgbHViIHRlbGVmb24iLHN1Ym1pdDoiV3nFm2xpaiIsc2tpcDoiUG9tacWEIixzZW5kaW5nOiJXeXN5xYJhbmllLi4uIixuZXdDb252ZXJzYXRpb246Ik5vd2Egcm96bW93YSIsYXNzaXN0YW50OiJBc3lzdGVudCBTaGFocnphZCIsb25saW5lOiJPbmxpbmUifX0scno9e25hdjp7ZmVhdHVyZXM6IsOWemVsbGlrbGVyIixmb3JZb3U6IlNlbmluIMSww6dpbiIsb3VyU3Rvcnk6Ikhpa2F5ZW1peiIsZmFxOiJTU1MiLGxpYnJhcnk6IkvDvHTDvHBoYW5lIix0cnlGcmVlOiLDnGNyZXRzaXogRGVuZSJ9LGhlcm86e2JhZGdlOiLinKggU2loaXJsaSBIaWtheWUgQW5sYXTEsWPEsW4iLHRpdGxlMToiU2loaXJsaSIsdGl0bGUyOiJIaWtheWUgQW5sYXTEsWPEsW4iLGRlc2NyaXB0aW9uOiJIZXJoYW5naSBiaXIgUERGLCBFUFVCIHZleWEgVFhUIGtpdGFixLFuxLEgYW7EsW5kYSBzw7xyw7xrbGV5aWNpIGJpciBzZXNsaSBraXRhYmEgZMO2bsO8xZ90w7xyLiBZw7xrbGUsIMOnZXZpciB2ZSAxOCsgZGlsZGUgZG\/En2FsIEFJIHNlc2xlcml5bGUgZGlubGUuIn0sYm9va3M6e2JhZGdlOiJBSSBLw7x0w7xwaGFuZXNpIix0aXRsZToiU2loaXJsaSBLw7x0w7xwaGFuZW1pemkgS2XFn2ZldCDinKgiLGRlc2NyaXB0aW9uOiJLaXRhcGxhcsSxIGtlxZ9mZXQgdmUgQUknxLFuIGlzdGVkacSfaW4gZGlsZGUgYW5sYXRtYXPEsW5hIGl6aW4gdmVyIixjdGE6IsOcY3JldHNpeiBEaW5sZW1leWUgQmHFn2xhIixhaU5hcnJhdGVkOiJBSSBBbmxhdMSxbWzEsSJ9LGZlYXR1cmVzOntiYWRnZToiQUkgU2locmkiLHRpdGxlOiJCw7x5w7xsZXlpY2kgw5Z6ZWxsaWtsZXIg4pyoIixkZXNjcmlwdGlvbjoiSGVyIMO2emVsbGlrIEFJIHpla2FzxLF5bGEgdGFzYXJsYW5txLHFn3TEsXIiLGl0ZW1zOnt2b2ljZVRpdGxlOiJBSSBTZXMgQW5sYXTEsW3EsSIsdm9pY2VEZXNjOiJBdG1vc2ZlcmlrIG3DvHppa2xlIGVya2VrIHZlIGthZMSxbiBBSSBzZXNsZXJpIix0cmFuc2xhdGVUaXRsZToiQWvEsWxsxLEgw4dldmlyaSIsdHJhbnNsYXRlRGVzYzoiMTgrIGRpbGRlIGFuxLFuZGEgw6dldmlyaSB2ZSBhbmxhdMSxbSIsbGlicmFyeVRpdGxlOiJLacWfaXNlbCBBSSBLw7x0w7xwaGFuZXNpIixsaWJyYXJ5RGVzYzoiQUkgw7Z6ZXRsZXJpIHZlIGFrxLFsbMSxIMO2bmVyaWxlciIsZmFtaWx5VGl0bGU6IkFpbGUgSGlrYXllIEFubGF0xLFtxLEiLGZhbWlseURlc2M6IsOHb2N1a2xhcsSxbsSxeiBoZXIga8O8bHTDvHJkZW4ga2l0YXAgZGlubGVzaW4iLGFjY2Vzc1RpdGxlOiJFcmnFn2lsZWJpbGlybGlrIMOWbmNlbGlrbGkiLGFjY2Vzc0Rlc2M6IktpdGFwIHTDvHLDvCBrxLFzxLF0bGFtYXPEsSB5b2suIEfDtnJtZSB6b3JsdWtsYXLEsW5kYSBpZGVhbCIsc3luY1RpdGxlOiJIZXIgWWVyZGUgU2Vua3Jvbml6ZSIsc3luY0Rlc2M6IkvDvHTDvHBoYW5lbiB0w7xtIGNpaGF6bGFyZGEgc2Vua3Jvbml6ZSJ9fSxhdWRpZW5jZXM6e3RpdGxlOiJIZXJrZXMgxLDDp2luIE3DvGtlbW1lbCDwn4yfIixkZXNjcmlwdGlvbjoiSGlrYXllbGVyaSBzZXZtZSBuZWRlbmluIG5lIG9sdXJzYSBvbHN1biwgU2hhaHJ6YWQgeWFuxLFuZGEiLHBhcmVudHM6e3RpdGxlOiJFYmV2ZXlubGVyIHZlIEFpbGVsZXIiLGRlc2M6IlNpaGlybGkgdXlrdSB2YWt0aSBkZW5leWltbGVyaSB5YXJhdCIscG9pbnRzOlsiRmF2b3JpIGtpdGFwbGFyxLEgecO8a2xlIiwiw4dvY3VrbGFyxLEgYmlyZGVuIGZhemxhIGRpbGUgbWFydXogYsSxcmFrIiwiR8O8dmVubGksIHJla2xhbXPEsXogZGlubGVtZSJdfSxsZWFybmVyczp7dGl0bGU6IkRpbCDDlsSfcmVuZW5sZXIiLGRlc2M6IlPDvHLDvGtsZXlpY2kgYW5sYXTEsW1sYSB5ZW5pIGRpbGxlciDDtsSfcmVuIixwb2ludHM6WyJIZWRlZiBkaWxpbmRlIGRpbmxlIiwiw4dldmlyaWxlcmkga2FyxZ\/EsWxhxZ90xLFyIiwiMTgrIGRpbCJdfSxhY2Nlc3NpYmlsaXR5Ont0aXRsZToiRXJpxZ9pbGViaWxpcmxpayIsZGVzYzoiT2t1bWEga2V5ZmluaSB5ZW5pZGVuIGtlxZ9mZXQiLHBvaW50czpbIkhlciBraXRhcCBzZXNsaSBraXRhcCBvbHVyIiwiQXlhcmxhbmFiaWxpciBoxLF6IHZlIHNlcyIsIkhlciBmb3JtYXRsYSDDp2FsxLHFn8SxciJdfSxyZWFkZXJzOnt0aXRsZToiS2l0YXAgS3Vsw7xwbGVyaSIsZGVzYzoiT2t1bWEgZGVuZXlpbWluaSBkw7Zuw7zFn3TDvHIiLHBvaW50czpbIllvbGRhIGRpbmxlIiwiQUkgw7Z6ZXRsZXJpIiwiw4dva2x1IGNpaGF6IHNlbmtyb25pemFzeW9udSJdfX0sc3Rvcnk6e2JhZGdlOiLwn5KrIEhpa2F5ZW1peiIsdGl0bGUxOiLEsGxoYW0gS2F5bmHEn8SxIix0aXRsZTI6IkJpbmJpciBHZWNlIE1hc2FsbGFyxLEiLHAxOiJTaGFocnphZCwgQmluYmlyIEdlY2UgTWFzYWxsYXLEsSduZGFraSBlZnNhbmV2aSBoaWtheWUgYW5sYXTEsWPEsXPEsW5kYW4gYWTEsW7EsSBhbG3EscWfdMSxci4iLHF1b3RlOiJIZXIgaW5zYW4sIGhlciBoaWtheWV5ZSwgaGVyIGRpbGRlLCBydWh1bmEgaGl0YXAgZWRlbiBiaXIgc2VzbGUgZXJpxZ9lYmlsbWVsaWRpci4iLHAyOiJNaXN5b251bXV6LCBBSSB0ZWtub2xvamlzaXlsZSBoaWtheWUgYW5sYXTEsW3EsW7EsSBkZW1va3JhdGlrbGXFn3Rpcm1la3Rpci4ifSxmYXE6e2JhZGdlOiJTb3J1bGFyxLFuIG3EsSB2YXI\/Iix0aXRsZToiU8SxayBTb3J1bGFuIFNvcnVsYXIiLGRlc2NyaXB0aW9uOiJTaGFocnphZCfEsW4gQUkgc2locmkgaGFra8SxbmRhIGhlciDFn2V5IixpdGVtczpbe3E6IkFJIGFubGF0xLFtxLEgbmFzxLFsIMOnYWzEscWfxLFyPyIsYToiQUknbcSxeiBtZXRuaSBhbmFsaXogZWRlciB2ZSBhdG1vc2ZlcmlrIG3DvHppa2xlIGRvxJ9hbCBhbmxhdMSxbSDDvHJldGlyLiJ9LHtxOiJIYW5naSBmb3JtYXRsYXIgZGVzdGVrbGVuaXI\/IixhOiJQREYsIEVQVUIgdmUgVFhULiJ9LHtxOiJLYcOnIGRpbCBtZXZjdXQ\/IixhOiIxOCsgZGlsLCBlcmtlayB2ZSBrYWTEsW4gc2VzIHNlw6dlbmVrbGVyaXlsZS4ifSx7cToiw4dldnJpbWTEscWfxLEga3VsbGFuYWJpbGlyIG1peWltPyIsYToixLBuZGlyZGlrdGVuIHNvbnJhIMOnZXZyaW1kxLHFn8SxIGRpbmxleWViaWxpcnNpbi4ifSx7cToixLDDp2VyacSfaW0gw7Z6ZWwgbWk\/IixhOiJLZXNpbmxpa2xlLiBLaXRhcGxhcsSxbiDDtnplbGRpci4ifSx7cToiQXVkaWJsZSBpbGUgbmFzxLFsIGthcsWfxLFsYcWfdMSxcsSxbMSxcj8iLGE6IlNoYWhyemFkLCBIRVJIQU5HxLAgYmlyIGtpdGFixLEgecO8a2xleWlwIGJpcmRlbiBmYXpsYSBkaWxkZSBhbsSxbmRhIEFJIGFubGF0xLFtxLEgYWxhYmlsbWVuaSBzYcSfbGFyLiJ9XX0sZm9vdGVyOntjb3B5cmlnaHQ6IsKpIHt5ZWFyfSBTaGFocnphZC4gVMO8bSBoYWtsYXLEsSBzYWtsxLFkxLFyIOKcqCIscHJpdmFjeToiR2l6bGlsaWsiLHRlcm1zOiJLdWxsYW7EsW0gS2\/Fn3VsbGFyxLEifSxjaGF0OntncmVldGluZzoiTWVyaGFiYSEg8J+RiyBCZW4gU2hhaHJ6YWQnxLFuIEFJIGFzaXN0YW7EsXnEsW0uIE5hc8SxbCB5YXJkxLFtY8SxIG9sYWJpbGlyaW0\/IixwbGFjZWhvbGRlcjoiTWVzYWrEsW7EsSB5YXouLi4iLGVuZENoYXQ6IlNvaGJldGkgYml0aXIgdmUgaWxldGnFn2ltIGLEsXJhayIsY29udGFjdFByb21wdDoiVGFraXAgacOnaW4gYmlsZ2lsZXJpbmkgYsSxcmFrIixuYW1lUGxhY2Vob2xkZXI6IkFkxLFuIixjb250YWN0UGxhY2Vob2xkZXI6IkUtcG9zdGEgdmV5YSB0ZWxlZm9uIixzdWJtaXQ6IkfDtm5kZXIiLHNraXA6IkF0bGEiLHNlbmRpbmc6IkfDtm5kZXJpbGl5b3IuLi4iLG5ld0NvbnZlcnNhdGlvbjoiWWVuaSBzb2hiZXQiLGFzc2lzdGFudDoiU2hhaHJ6YWQgQXNpc3RhbiIsb25saW5lOiLDh2V2cmltacOnaSJ9fSxpej17bmF2OntmZWF0dXJlczoi0KTRg9C90LrRhtC40LgiLGZvcllvdToi0JTQu9GPINCS0LDRgSIsb3VyU3Rvcnk6ItCd0LDRiNCwINCY0YHRgtC+0YDQuNGPIixmYXE6IkZBUSIsbGlicmFyeToi0JHQuNCx0LvQuNC+0YLQtdC60LAiLHRyeUZyZWU6ItCf0L7Qv9GA0L7QsdC+0LLQsNGC0Ywg0JHQtdGB0L\/Qu9Cw0YLQvdC+In0saGVybzp7YmFkZ2U6IuKcqCDQktCw0YjQsCDQktC+0LvRiNC10LHQvdCw0Y8g0KDQsNGB0YHQutCw0LfRh9C40YbQsCIsdGl0bGUxOiLQktCw0YjQsCDQktC+0LvRiNC10LHQvdCw0Y8iLHRpdGxlMjoi0KDQsNGB0YHQutCw0LfRh9C40YbQsCIsZGVzY3JpcHRpb246ItCf0YDQtdCy0YDQsNGC0LjRgtC1INC70Y7QsdGD0Y4g0LrQvdC40LPRgyBQREYsIEVQVUIg0LjQu9C4IFRYVCDQsiDQt9Cw0YXQstCw0YLRi9Cy0LDRjtGJ0YPRjiDQsNGD0LTQuNC+0LrQvdC40LPRgy4g0JfQsNCz0YDRg9C30LjRgtC1LCDQv9C10YDQtdCy0LXQtNC40YLQtSDQuCDRgdC70YPRiNCw0LnRgtC1INC90LAgMTgrINGP0LfRi9C60LDRhSDRgSDQtdGB0YLQtdGB0YLQstC10L3QvdGL0LzQuCBBSS3Qs9C+0LvQvtGB0LDQvNC4LiJ9LGJvb2tzOntiYWRnZToiQUkt0JHQuNCx0LvQuNC+0YLQtdC60LAiLHRpdGxlOiLQmNGB0YHQu9C10LTRg9C50YLQtSDQndCw0YjRgyDQktC+0LvRiNC10LHQvdGD0Y4g0JHQuNCx0LvQuNC+0YLQtdC60YMg4pyoIixkZXNjcmlwdGlvbjoi0J7RgtC60YDQvtC50YLQtSDQutC90LjQs9C4INC4INC\/0L7Qt9Cy0L7Qu9GM0YLQtSBBSSDQvtC30LLRg9GH0LjRgtGMINC40YUg0L3QsCDQu9GO0LHQvtC8INGP0LfRi9C60LUiLGN0YToi0J3QsNGH0LDRgtGMINCh0LvRg9GI0LDRgtGMINCR0LXRgdC\/0LvQsNGC0L3QviIsYWlOYXJyYXRlZDoiQUkg0J7Qt9Cy0YPRh9C60LAifSxmZWF0dXJlczp7YmFkZ2U6ItCc0LDQs9C40Y8gQUkiLHRpdGxlOiLQktC+0LvRiNC10LHQvdGL0LUg0KTRg9C90LrRhtC40Lgg4pyoIixkZXNjcmlwdGlvbjoi0JrQsNC20LTQsNGPINGE0YPQvdC60YbQuNGPINGB0L7Qt9C00LDQvdCwINGBINC\/0L7QvNC+0YnRjNGOIEFJLdC40L3RgtC10LvQu9C10LrRgtCwIixpdGVtczp7dm9pY2VUaXRsZToiQUkg0JPQvtC70L7RgdC+0LLQvtC1INCe0LfQstGD0YfQuNCy0LDQvdC40LUiLHZvaWNlRGVzYzoi0JzRg9C20YHQutC40LUg0Lgg0LbQtdC90YHQutC40LUgQUkt0LPQvtC70L7RgdCwINGBINCw0YLQvNC+0YHRhNC10YDQvdC+0Lkg0LzRg9C30YvQutC+0LkiLHRyYW5zbGF0ZVRpdGxlOiLQo9C80L3Ri9C5INCf0LXRgNC10LLQvtC0Iix0cmFuc2xhdGVEZXNjOiLQnNCz0L3QvtCy0LXQvdC90YvQuSDQv9C10YDQtdCy0L7QtCDQuCDQvtC30LLRg9GH0LrQsCDQvdCwIDE4KyDRj9C30YvQutCw0YUiLGxpYnJhcnlUaXRsZToi0JvQuNGH0L3QsNGPIEFJLdCR0LjQsdC70LjQvtGC0LXQutCwIixsaWJyYXJ5RGVzYzoiQUkt0YDQtdC30Y7QvNC1INC4INGD0LzQvdGL0LUg0YDQtdC60L7QvNC10L3QtNCw0YbQuNC4IixmYW1pbHlUaXRsZToi0KHQtdC80LXQudC90L7QtSDQp9GC0LXQvdC40LUiLGZhbWlseURlc2M6ItCf0YPRgdGC0Ywg0LTQtdGC0Lgg0YHQu9GD0YjQsNGO0YIg0LrQvdC40LPQuCDQuNC3INC70Y7QsdC+0Lkg0LrRg9C70YzRgtGD0YDRiyIsYWNjZXNzVGl0bGU6ItCU0L7RgdGC0YPQv9C90L7RgdGC0Ywg0J\/RgNC10LbQtNC1INCS0YHQtdCz0L4iLGFjY2Vzc0Rlc2M6ItCR0LXQtyDQvtCz0YDQsNC90LjRh9C10L3QuNC5LiDQmNC00LXQsNC70YzQvdC+INC\/0YDQuCDQv9GA0L7QsdC70LXQvNCw0YUg0YHQviDQt9GA0LXQvdC40LXQvCIsc3luY1RpdGxlOiLQodC40L3RhdGA0L7QvdC40LfQsNGG0LjRjyDQktC10LfQtNC1IixzeW5jRGVzYzoi0JLQsNGI0LAg0LHQuNCx0LvQuNC+0YLQtdC60LAg0YHQuNC90YXRgNC+0L3QuNC30LjRgNGD0LXRgtGB0Y8g0L3QsCDQstGB0LXRhSDRg9GB0YLRgNC+0LnRgdGC0LLQsNGFIn19LGF1ZGllbmNlczp7dGl0bGU6ItCY0LTQtdCw0LvRjNC90L4g0JTQu9GPINCS0YHQtdGFIPCfjJ8iLGRlc2NyaXB0aW9uOiLQmtCw0LrQvtCy0LAg0LHRiyDQvdC4INCx0YvQu9CwINCy0LDRiNCwINC\/0YDQuNGH0LjQvdCwINC70Y7QsdC40YLRjCDQuNGB0YLQvtGA0LjQuCwgU2hhaHJ6YWQg0LTQu9GPINCy0LDRgSIscGFyZW50czp7dGl0bGU6ItCg0L7QtNC40YLQtdC70Lgg0Lgg0KHQtdC80YzQuCIsZGVzYzoi0KHQvtC30LTQsNCy0LDQudGC0LUg0LLQvtC70YjQtdCx0L3Ri9C1INCy0LXRh9C10YDQvdC40LUg0LjRgdGC0L7RgNC40LgiLHBvaW50czpbItCX0LDQs9GA0YPQttCw0LnRgtC1INC70Y7QsdC40LzRi9C1INC60L3QuNCz0LgiLCLQl9C90LDQutC+0LzRjNGC0LUg0LTQtdGC0LXQuSDRgSDRgNCw0LfQvdGL0LzQuCDRj9C30YvQutCw0LzQuCIsItCR0LXQt9C+0L\/QsNGB0L3QvtC1INC\/0YDQvtGB0LvRg9GI0LjQstCw0L3QuNC1INCx0LXQtyDRgNC10LrQu9Cw0LzRiyJdfSxsZWFybmVyczp7dGl0bGU6ItCY0LfRg9GH0LDRjtGJ0LjQtSDQr9C30YvQutC4IixkZXNjOiLQntGB0LLQsNC40LLQsNC50YLQtSDQvdC+0LLRi9C1INGP0LfRi9C60Lgg0YfQtdGA0LXQtyDQv9C+0LPRgNGD0LbQtdC90LjQtSDQsiDQuNGB0YLQvtGA0LjQuCIscG9pbnRzOlsi0KHQu9GD0YjQsNC50YLQtSDQvdCwINGG0LXQu9C10LLQvtC8INGP0LfRi9C60LUiLCLQodGA0LDQstC90LjQstCw0LnRgtC1INC\/0LXRgNC10LLQvtC00YsiLCIxOCsg0Y\/Qt9GL0LrQvtCyIl19LGFjY2Vzc2liaWxpdHk6e3RpdGxlOiLQlNC+0YHRgtGD0L\/QvdC+0YHRgtGMIixkZXNjOiLQl9Cw0L3QvtCy0L4g0L7RgtC60YDQvtC50YLQtSDRgNCw0LTQvtGB0YLRjCDRh9GC0LXQvdC40Y8iLHBvaW50czpbItCb0Y7QsdCw0Y8g0LrQvdC40LPQsCDRgdGC0LDQvdC+0LLQuNGC0YHRjyDQsNGD0LTQuNC+0LrQvdC40LPQvtC5Iiwi0J3QsNGB0YLRgNCw0LjQstCw0LXQvNCw0Y8g0YHQutC+0YDQvtGB0YLRjCDQuCDQs9C+0LvQvtGBIiwi0KDQsNCx0L7RgtCw0LXRgiDRgSDQu9GO0LHRi9C8INGE0L7RgNC80LDRgtC+0LwiXX0scmVhZGVyczp7dGl0bGU6ItCa0L3QuNC20L3Ri9C1INCa0LvRg9Cx0YsiLGRlc2M6ItCf0YDQtdC+0LHRgNCw0LfQuNGC0LUg0YHQstC+0Lkg0L7Qv9GL0YIg0YfRgtC10L3QuNGPIixwb2ludHM6WyLQodC70YPRiNCw0LnRgtC1INCyINC00L7RgNC+0LPQtSIsIkFJLdGA0LXQt9GO0LzQtSIsItCc0YPQu9GM0YLQuC3Rg9GB0YLRgNC+0LnRgdGC0LLQtdC90L3QsNGPINGB0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNGPIl19fSxzdG9yeTp7YmFkZ2U6IvCfkqsg0J3QsNGI0LAg0JjRgdGC0L7RgNC40Y8iLHRpdGxlMToi0JLQtNC+0YXQvdC+0LLQu9GR0L3QvdGL0LUiLHRpdGxlMjoi0KLRi9GB0Y\/Rh9CwINC4INCe0LTQvdCwINCd0L7Rh9GMIixwMToiU2hhaHJ6YWQg0L3QsNC30LLQsNC90LAg0LIg0YfQtdGB0YLRjCDQu9C10LPQtdC90LTQsNGA0L3QvtC5INGA0LDRgdGB0LrQsNC30YfQuNGG0Ysg0LjQtyDQotGL0YHRj9GH0Lgg0Lgg0J7QtNC90L7QuSDQndC+0YfQuC4iLHF1b3RlOiLQmtCw0LbQtNGL0Lkg0YfQtdC70L7QstC10Log0LTQvtC70LbQtdC9INC40LzQtdGC0Ywg0LTQvtGB0YLRg9C\/INC6INC60LDQttC00L7QuSDQuNGB0YLQvtGA0LjQuCwg0L3QsCDQutCw0LbQtNC+0Lwg0Y\/Qt9GL0LrQtSwg0LPQvtC70L7RgdC+0LwsINC60L7RgtC+0YDRi9C5INCz0L7QstC+0YDQuNGCINGBINC10LPQviDQtNGD0YjQvtC5LiIscDI6ItCd0LDRiNCwINC80LjRgdGB0LjRjyDigJQg0LTQtdC80L7QutGA0LDRgtC40LfQuNGA0L7QstCw0YLRjCDRgNCw0YHRgdC60LDQt9GL0LLQsNC90LjQtSDQuNGB0YLQvtGA0LjQuSDRgSDQv9C+0LzQvtGJ0YzRjiBBSS3RgtC10YXQvdC+0LvQvtCz0LjQuS4ifSxmYXE6e2JhZGdlOiLQktC+0L\/RgNC+0YHRiz8iLHRpdGxlOiLQp9Cw0YHRgtC+INCX0LDQtNCw0LLQsNC10LzRi9C1INCS0L7Qv9GA0L7RgdGLIixkZXNjcmlwdGlvbjoi0JLRgdGRINC+INC80LDQs9C40LggQUkgU2hhaHJ6YWQiLGl0ZW1zOlt7cToi0JrQsNC6INGA0LDQsdC+0YLQsNC10YIgQUkt0L7Qt9Cy0YPRh9C60LA\/IixhOiLQndCw0YggQUkg0LDQvdCw0LvQuNC30LjRgNGD0LXRgiDRgtC10LrRgdGCINC4INGB0L7Qt9C00LDRkdGCINC10YHRgtC10YHRgtCy0LXQvdC90L7QtSDQvtC30LLRg9GH0LjQstCw0L3QuNC1INGBINC80YPQt9GL0LrQvtC5LiJ9LHtxOiLQmtCw0LrQuNC1INGE0L7RgNC80LDRgtGLINC\/0L7QtNC00LXRgNC20LjQstCw0Y7RgtGB0Y8\/IixhOiJQREYsIEVQVUIg0LggVFhULiJ9LHtxOiLQodC60L7Qu9GM0LrQviDRj9C30YvQutC+0LIg0LTQvtGB0YLRg9C\/0L3Qvj8iLGE6IjE4KyDRj9C30YvQutC+0LIg0YEg0LzRg9C20YHQutC40LzQuCDQuCDQttC10L3RgdC60LjQvNC4INCz0L7Qu9C+0YHQsNC80LguIn0se3E6ItCc0L7QttC90L4g0LjRgdC\/0L7Qu9GM0LfQvtCy0LDRgtGMINC+0YTQu9Cw0LnQvT8iLGE6ItCU0LAsINC\/0L7RgdC70LUg0YHQutCw0YfQuNCy0LDQvdC40Y8g0LzQvtC20L3QviDRgdC70YPRiNCw0YLRjCDQvtGE0LvQsNC50L0uIn0se3E6ItCc0L7QuSDQutC+0L3RgtC10L3RgiDQv9GA0LjQstCw0YLQtdC9PyIsYToi0JDQsdGB0L7Qu9GO0YLQvdC+LiDQktCw0YjQuCDQutC90LjQs9C4INC\/0YDQuNCy0LDRgtC90YsuIn0se3E6ItCa0LDQuiDRgdGA0LDQstC90LjRgtGMINGBIEF1ZGlibGU\/IixhOiJTaGFocnphZCDQv9C+0LfQstC+0LvRj9C10YIg0LfQsNCz0YDRg9C30LjRgtGMINCb0K7QkdCj0K4g0LrQvdC40LPRgyDQtNC70Y8g0LzQs9C90L7QstC10L3QvdC+0LkgQUkt0L7Qt9Cy0YPRh9C60Lgg0L3QsCDQvdC10YHQutC+0LvRjNC60LjRhSDRj9C30YvQutCw0YUuIn1dfSxmb290ZXI6e2NvcHlyaWdodDoiwqkge3llYXJ9IFNoYWhyemFkLiDQktGB0LUg0L\/RgNCw0LLQsCDQt9Cw0YnQuNGJ0LXQvdGLIOKcqCIscHJpdmFjeToi0JrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtGMIix0ZXJtczoi0KPRgdC70L7QstC40Y8g0JjRgdC\/0L7Qu9GM0LfQvtCy0LDQvdC40Y8ifSxjaGF0OntncmVldGluZzoi0J\/RgNC40LLQtdGCISDwn5GLINCvIEFJLdCw0YHRgdC40YHRgtC10L3RgiBTaGFocnphZC4g0KfQtdC8INC80L7Qs9GDINC\/0L7QvNC+0YfRjD8iLHBsYWNlaG9sZGVyOiLQktCy0LXQtNC40YLQtSDRgdC+0L7QsdGJ0LXQvdC40LUuLi4iLGVuZENoYXQ6ItCX0LDQstC10YDRiNC40YLRjCDRh9Cw0YIg0Lgg0L7RgdGC0LDQstC40YLRjCDQutC+0L3RgtCw0LrRgiIsY29udGFjdFByb21wdDoi0J7RgdGC0LDQstGM0YLQtSDQtNCw0L3QvdGL0LUg0LTQu9GPINGB0LLRj9C30LgiLG5hbWVQbGFjZWhvbGRlcjoi0JLQsNGI0LUg0LjQvNGPIixjb250YWN0UGxhY2Vob2xkZXI6IkVtYWlsINC40LvQuCDRgtC10LvQtdGE0L7QvSIsc3VibWl0OiLQntGC0L\/RgNCw0LLQuNGC0YwiLHNraXA6ItCf0YDQvtC\/0YPRgdGC0LjRgtGMIixzZW5kaW5nOiLQntGC0L\/RgNCw0LLQutCwLi4uIixuZXdDb252ZXJzYXRpb246ItCd0L7QstGL0Lkg0YDQsNC30LPQvtCy0L7RgCIsYXNzaXN0YW50OiLQkNGB0YHQuNGB0YLQtdC90YIgU2hhaHJ6YWQiLG9ubGluZToi0J7QvdC70LDQudC9In19LG96PXtuYXY6e2ZlYXR1cmVzOiLgpLXgpL\/gpLbgpYfgpLfgpKTgpL7gpI\/gpIIiLGZvcllvdToi4KSG4KSq4KSV4KWHIOCksuCkv+CkjyIsb3VyU3Rvcnk6IuCkueCkruCkvuCksOClgCDgpJXgpLngpL7gpKjgpYAiLGZhcToiRkFRIixsaWJyYXJ5OiLgpKrgpYHgpLjgpY3gpKTgpJXgpL7gpLLgpK8iLHRyeUZyZWU6IuCkruClgeCkq+CljeCkpCDgpIbgpJzgpLzgpK7gpL7gpI\/gpIIifSxoZXJvOntiYWRnZToi4pyoIOCkhuCkquCkleClgCDgpJzgpL7gpKbgpYHgpIgg4KSV4KS54KS+4KSo4KWA4KSV4KS+4KSwIix0aXRsZTE6IuCkhuCkquCkleClgCDgpJzgpL7gpKbgpYHgpIgiLHRpdGxlMjoi4KSV4KS54KS+4KSo4KWA4KSV4KS+4KSwIixkZXNjcmlwdGlvbjoi4KSV4KS\/4KS44KWAIOCkreClgCBQREYsIEVQVUIg4KSv4KS+IFRYVCDgpJXgpL\/gpKTgpL7gpKwg4KSV4KWLIOCkpOClgeCksOCkguCkpCDgpJHgpKHgpL\/gpK\/gpYvgpKzgpYHgpJUg4KSu4KWH4KSCIOCkrOCkpuCksuClh+CkguClpCDgpIXgpKrgpLLgpYvgpKEg4KSV4KSw4KWH4KSCLCDgpIXgpKjgpYHgpLXgpL7gpKYg4KSV4KSw4KWH4KSCIOCklOCksCAxOCsg4KSt4KS+4KS34KS+4KST4KSCIOCkruClh+CkgiDgpKrgpY3gpLDgpL7gpJXgpYPgpKTgpL\/gpJUgQUkg4KSG4KS14KS+4KSc4KS84KWL4KSCIOCkleClhyDgpLjgpL7gpKUg4KS44KWB4KSo4KWH4KSC4KWkIn0sYm9va3M6e2JhZGdlOiJBSSDgpKrgpYHgpLjgpY3gpKTgpJXgpL7gpLLgpK8iLHRpdGxlOiLgpLngpK7gpL7gpLDgpL4g4KSc4KS+4KSm4KWB4KSIIOCkquClgeCkuOCljeCkpOCkleCkvuCksuCkryDgpJbgpYvgpJzgpYfgpIIg4pyoIixkZXNjcmlwdGlvbjoi4KSV4KS\/4KSk4KS+4KSs4KWH4KSCIOCkluCli+CknOClh+CkgiDgpJTgpLAgQUkg4KSV4KWLIOCkleCkv+CkuOClgCDgpK3gpYAg4KSt4KS+4KS34KS+IOCkruClh+CkgiDgpLjgpYHgpKjgpL7gpKjgpYcg4KSm4KWH4KSCIixjdGE6IuCkruClgeCkq+CljeCkpCDgpLjgpYHgpKjgpKjgpL4g4KS24KWB4KSw4KWCIOCkleCksOClh+CkgiIsYWlOYXJyYXRlZDoiQUkg4KS14KSw4KWN4KSj4KSoIn0sZmVhdHVyZXM6e2JhZGdlOiJBSSDgpJzgpL7gpKbgpYIiLHRpdGxlOiLgpK7gpILgpKTgpY3gpLDgpK7gpYHgpJfgpY3gpKcg4KSV4KSw4KSo4KWHIOCkteCkvuCksuClgCDgpLXgpL\/gpLbgpYfgpLfgpKTgpL7gpI\/gpIIg4pyoIixkZXNjcmlwdGlvbjoi4KS54KSwIOCkteCkv+CktuClh+Ckt+CkpOCkviBBSSDgpKzgpYHgpKbgpY3gpKfgpL\/gpK7gpKTgpY3gpKTgpL4g4KS44KWHIOCkrOCkqOCkvuCkiCDgpJfgpIgg4KS54KWIIixpdGVtczp7dm9pY2VUaXRsZToiQUkg4KS14KWJ4KSH4KS4IOCkqOCliOCksOClh+CktuCkqCIsdm9pY2VEZXNjOiLgpLXgpL7gpK\/gpYHgpK7gpILgpKHgpLLgpYDgpK8g4KS44KSC4KSX4KWA4KSkIOCkleClhyDgpLjgpL7gpKUg4KSq4KWB4KSw4KWB4KS3IOCklOCksCDgpK7gpLngpL\/gpLLgpL4gQUkg4KSG4KS14KS+4KSc4KS84KWH4KSCIix0cmFuc2xhdGVUaXRsZToi4KS44KWN4KSu4KS+4KSw4KWN4KSfIOCkheCkqOClgeCkteCkvuCkpiIsdHJhbnNsYXRlRGVzYzoiMTgrIOCkreCkvuCkt+CkvuCkk+CkgiDgpK7gpYfgpIIg4KSk4KWB4KSw4KSC4KSkIOCkheCkqOClgeCkteCkvuCkpiDgpJTgpLAg4KS14KSw4KWN4KSj4KSoIixsaWJyYXJ5VGl0bGU6IuCkteCljeCkr+CkleCljeCkpOCkv+Ckl+CkpCBBSSDgpKrgpYHgpLjgpY3gpKTgpJXgpL7gpLLgpK8iLGxpYnJhcnlEZXNjOiJBSSDgpLjgpL7gpLDgpL7gpILgpLYg4KSU4KSwIOCkuOCljeCkruCkvuCksOCljeCknyDgpLjgpL\/gpKvgpL7gpLDgpL\/gpLbgpYfgpIIiLGZhbWlseVRpdGxlOiLgpKrgpL7gpLDgpL\/gpLXgpL7gpLDgpL\/gpJUg4KSV4KS54KS+4KSo4KWAIixmYW1pbHlEZXNjOiLgpKzgpJrgpY3gpJrgpYvgpIIg4KSV4KWLIOCkueCksCDgpLjgpILgpLjgpY3gpJXgpYPgpKTgpL8g4KSV4KWAIOCkleCkv+CkpOCkvuCkrOClh+CkgiDgpLjgpYHgpKjgpKjgpYcg4KSm4KWH4KSCIixhY2Nlc3NUaXRsZToi4KS44KWB4KSy4KSt4KSk4KS+IOCkuOCkrOCkuOClhyDgpKrgpLngpLLgpYciLGFjY2Vzc0Rlc2M6IuCkleCli+CkiCDgpKrgpY3gpLDgpKTgpL\/gpKzgpILgpKcg4KSo4KS54KWA4KSC4KWkIOCkpuClg+Ckt+CljeCkn+CkvyDgpJrgpYHgpKjgpYzgpKTgpL\/gpK\/gpYvgpIIg4KSV4KWHIOCksuCkv+CkjyDgpIngpKTgpY3gpKTgpK4iLHN5bmNUaXRsZToi4KS54KSwIOCknOCkl+CkuSDgpLjgpL\/gpILgpJUiLHN5bmNEZXNjOiLgpIbgpKrgpJXgpL4g4KSq4KWB4KS44KWN4KSk4KSV4KS+4KSy4KSvIOCkuOCkreClgCDgpIngpKrgpJXgpLDgpKPgpYvgpIIg4KSq4KSwIOCkuOCkv+CkguCklSDgpLngpYvgpKTgpL4g4KS54KWIIn19LGF1ZGllbmNlczp7dGl0bGU6IuCkuOCkreClgCDgpJXgpYcg4KSy4KS\/4KSPIOCkuOCkn+ClgOCklSDwn4yfIixkZXNjcmlwdGlvbjoi4KSV4KS54KS+4KSo4KS\/4KSv4KWL4KSCIOCkuOClhyDgpKrgpY3gpK\/gpL7gpLAg4KSV4KSw4KSo4KWHIOCkleCkviDgpJXgpYvgpIgg4KSt4KWAIOCkleCkvuCksOCkoyDgpLngpYssIOCktuCkueCksOCknOCkvOCkvuCkpiDgpIbgpKrgpJXgpYcg4KS44KS+4KSlIOCkueCliCIscGFyZW50czp7dGl0bGU6IuCkruCkvuCkpOCkvi3gpKrgpL\/gpKTgpL4g4KSU4KSwIOCkquCksOCkv+CkteCkvuCksCIsZGVzYzoi4KSc4KS+4KSm4KWB4KSIIOCkuOCli+CkqOClhyDgpJXgpYAg4KSV4KS54KS+4KSo4KS\/4KSv4KS+4KSCIOCkrOCkqOCkvuCkj+CkgiIscG9pbnRzOlsi4KSq4KS44KSC4KSm4KWA4KSm4KS+IOCkleCkv+CkpOCkvuCkrOClh+CkgiDgpIXgpKrgpLLgpYvgpKEg4KSV4KSw4KWH4KSCIiwi4KSs4KSa4KWN4KSa4KWL4KSCIOCkleCliyDgpJXgpIgg4KSt4KS+4KS34KS+4KST4KSCIOCkuOClhyDgpKrgpLDgpL\/gpJrgpL\/gpKQg4KSV4KSw4KS+4KSP4KSCIiwi4KS44KWB4KSw4KSV4KWN4KS34KS\/4KSkLCDgpLXgpL\/gpJzgpY3gpJ7gpL7gpKrgpKgt4KSu4KWB4KSV4KWN4KSkIl19LGxlYXJuZXJzOnt0aXRsZToi4KSt4KS+4KS34KS+IOCkuOClgOCkluCkqOClhyDgpLXgpL7gpLLgpYciLGRlc2M6IuCkleCkueCkvuCkqOClgCDgpLjgpYHgpKjgpJXgpLAg4KSo4KSIIOCkreCkvuCkt+CkvuCkj+CkgiDgpLjgpYDgpJbgpYfgpIIiLHBvaW50czpbIuCksuCkleCljeCkt+CljeCkryDgpK3gpL7gpLfgpL4g4KSu4KWH4KSCIOCkuOClgeCkqOClh+CkgiIsIuCkheCkqOClgeCkteCkvuCkpuCli+CkgiDgpJXgpYAg4KSk4KWB4KSy4KSo4KS+IOCkleCksOClh+CkgiIsIjE4KyDgpK3gpL7gpLfgpL7gpI\/gpIIiXX0sYWNjZXNzaWJpbGl0eTp7dGl0bGU6IuCkuOClgeCksuCkreCkpOCkviIsZGVzYzoi4KSq4KSi4KS84KSo4KWHIOCkleCkviDgpIbgpKjgpILgpKYg4KSr4KS\/4KSwIOCkuOClhyDgpJbgpYvgpJzgpYfgpIIiLHBvaW50czpbIuCkueCksCDgpJXgpL\/gpKTgpL7gpKwg4KSR4KSh4KS\/4KSv4KWL4KSs4KWB4KSVIOCkrOCkqOCkpOClgCDgpLngpYgiLCLgpLjgpK7gpL7gpK\/gpYvgpJzgpY3gpK8g4KSX4KSk4KS\/IOCklOCksCDgpIbgpLXgpL7gpJzgpLwiLCLgpLngpLAg4KSq4KWN4KSw4KS+4KSw4KWC4KSqIOCkleClhyDgpLjgpL7gpKUg4KSV4KS+4KSuIOCkleCksOCkpOCkviDgpLngpYgiXX0scmVhZGVyczp7dGl0bGU6IuCkrOClgeCklSDgpJXgpY3gpLLgpKwiLGRlc2M6IuCkheCkquCkqOClhyDgpKrgpKLgpLzgpKjgpYcg4KSV4KWHIOCkheCkqOClgeCkreCktSDgpJXgpYsg4KSs4KSm4KSy4KWH4KSCIixwb2ludHM6WyLgpK\/gpL7gpKTgpY3gpLDgpL4g4KSu4KWH4KSCIOCkuOClgeCkqOClh+CkgiIsIkFJIOCkuOCkvuCksOCkvuCkguCktiIsIuCkruCksuCljeCkn+ClgC3gpKHgpL\/gpLXgpL7gpIfgpLgg4KS44KS\/4KSC4KSVIl19fSxzdG9yeTp7YmFkZ2U6IvCfkqsg4KS54KSu4KS+4KSw4KWAIOCkleCkueCkvuCkqOClgCIsdGl0bGUxOiLgpKrgpY3gpLDgpYfgpLDgpL\/gpKQiLHRpdGxlMjoi4KSF4KSy4KS\/4KSrIOCksuCliOCksuCkviDgpLjgpYciLHAxOiLgpLbgpLngpLDgpJzgpLzgpL7gpKYg4KSV4KS+IOCkqOCkvuCkriDgpIXgpLLgpL\/gpKsg4KSy4KWI4KSy4KS+IOCkleClgCDgpKrgpYzgpLDgpL7gpKPgpL\/gpJUg4KSV4KS54KS+4KSo4KWA4KSV4KS+4KSwIOCkleClhyDgpKjgpL7gpK4g4KSq4KSwIOCksOCkluCkviDgpJfgpK\/gpL4g4KS54KWI4KWkIixxdW90ZToi4KS54KSwIOCkteCljeCkr+CkleCljeCkpOCkvyDgpJXgpYsg4KS54KSwIOCkleCkueCkvuCkqOClgCDgpKTgpJUsIOCkueCksCDgpK3gpL7gpLfgpL4g4KSu4KWH4KSCLCDgpI\/gpJUg4KSQ4KS44KWAIOCkhuCkteCkvuCknOCkvCDgpK7gpYfgpIIg4KSq4KS54KWB4KSC4KSaIOCkueCli+CkqOClgCDgpJrgpL7gpLngpL\/gpI8g4KSc4KWLIOCkieCkuOCkleClgCDgpIbgpKTgpY3gpK7gpL4g4KS44KWHIOCkrOCkvuCkpCDgpJXgpLDgpYfgpaQiLHAyOiLgpLngpK7gpL7gpLDgpL4g4KSu4KS\/4KS24KSoIEFJIOCkpOCkleCkqOClgOCklSDgpJXgpYcg4KSu4KS+4KSn4KWN4KSv4KSuIOCkuOClhyDgpJXgpLngpL7gpKjgpYAg4KSV4KS54KSo4KWHIOCkleCliyDgpLLgpYvgpJXgpKTgpL7gpILgpKTgpY3gpLDgpL\/gpJUg4KSs4KSo4KS+4KSo4KS+IOCkueCliOClpCJ9LGZhcTp7YmFkZ2U6IuCkuOCkteCkvuCksj8iLHRpdGxlOiLgpIXgpJXgpY3gpLjgpLAg4KSq4KWC4KSb4KWHIOCknOCkvuCkqOClhyDgpLXgpL7gpLLgpYcg4KSq4KWN4KSw4KS24KWN4KSoIixkZXNjcmlwdGlvbjoi4KS24KS54KSw4KSc4KS84KS+4KSmIOCkleClgCBBSSDgpJzgpL7gpKbgpYIg4KSV4KWHIOCkrOCkvuCksOClhyDgpK7gpYfgpIIg4KS44KSsIOCkleClgeCkmyIsaXRlbXM6W3txOiJBSSDgpKjgpYjgpLDgpYfgpLbgpKgg4KSV4KWI4KS44KWHIOCkleCkvuCkriDgpJXgpLDgpKTgpL4g4KS54KWIPyIsYToi4KS54KSu4KS+4KSw4KS+IEFJIOCkquCkvuCkoCDgpJXgpL4g4KS14KS\/4KS24KWN4KSy4KWH4KS34KSjIOCkleCksOCkpOCkviDgpLngpYgg4KSU4KSwIOCkuOCkguCkl+ClgOCkpCDgpJXgpYcg4KS44KS+4KSlIOCkquCljeCksOCkvuCkleClg+CkpOCkv+CklSDgpLXgpLDgpY3gpKPgpKgg4KSJ4KSk4KWN4KSq4KSo4KWN4KSoIOCkleCksOCkpOCkviDgpLngpYjgpaQifSx7cToi4KSV4KWM4KSoIOCkuOClhyDgpKrgpY3gpLDgpL7gpLDgpYLgpKog4KS44KSu4KSw4KWN4KSl4KS\/4KSkIOCkueCliOCkgj8iLGE6IlBERiwgRVBVQiDgpJTgpLAgVFhU4KWkIn0se3E6IuCkleCkv+CkpOCkqOClgCDgpK3gpL7gpLfgpL7gpI\/gpIIg4KSJ4KSq4KSy4KSs4KWN4KSnIOCkueCliOCkgj8iLGE6IjE4KyDgpK3gpL7gpLfgpL7gpI\/gpIIg4KSq4KWB4KSw4KWB4KS3IOCklOCksCDgpK7gpLngpL\/gpLLgpL4g4KSG4KS14KS+4KSc4KS8IOCkteCkv+CkleCksuCljeCkquCli+CkgiDgpJXgpYcg4KS44KS+4KSl4KWkIn0se3E6IuCkleCljeCkr+CkviDgpJHgpKvgpLLgpL7gpIfgpKgg4KSH4KS44KWN4KSk4KWH4KSu4KS+4KSyIOCkleCksCDgpLjgpJXgpKTgpYcg4KS54KWI4KSCPyIsYToi4KS54KS+4KSCLCDgpKHgpL7gpIngpKjgpLLgpYvgpKEg4KSV4KWHIOCkrOCkvuCkpiDgpJHgpKvgpLLgpL7gpIfgpKgg4KS44KWB4KSoIOCkuOCkleCkpOClhyDgpLngpYjgpILgpaQifSx7cToi4KSV4KWN4KSv4KS+IOCkruClh+CksOClgCDgpLjgpL7gpK7gpJfgpY3gpLDgpYAg4KSo4KS\/4KSc4KWAIOCkueCliD8iLGE6IuCkrOCkv+CksuCljeCkleClgeCksuClpCDgpIbgpKrgpJXgpYAg4KSV4KS\/4KSk4KS+4KSs4KWH4KSCIOCkqOCkv+CknOClgCDgpLngpYjgpILgpaQifSx7cToiQXVkaWJsZSDgpLjgpYcg4KSV4KWI4KS44KWHIOCkpOClgeCksuCkqOCkviDgpJXgpLDgpYfgpII\/IixhOiLgpLbgpLngpLDgpJzgpLzgpL7gpKYg4KSG4KSq4KSV4KWLIOCkleCli+CkiCDgpK3gpYAg4KSV4KS\/4KSk4KS+4KSsIOCkheCkquCksuCli+CkoSDgpJXgpLDgpJXgpYcg4KSV4KSIIOCkreCkvuCkt+CkvuCkk+CkgiDgpK7gpYfgpIIg4KSk4KWB4KSw4KSC4KSkIEFJIOCkteCksOCljeCko+CkqCDgpKrgpY3gpLDgpL7gpKrgpY3gpKQg4KSV4KSw4KSo4KWHIOCkpuClh+CkpOCkviDgpLngpYjgpaQifV19LGZvb3Rlcjp7Y29weXJpZ2h0OiLCqSB7eWVhcn0g4KS24KS54KSw4KSc4KS84KS+4KSm4KWkIOCkuOCksOCljeCkteCkvuCkp+Ckv+CkleCkvuCksCDgpLjgpYHgpLDgpJXgpY3gpLfgpL\/gpKQg4pyoIixwcml2YWN5OiLgpJfgpYvgpKrgpKjgpYDgpK\/gpKTgpL4iLHRlcm1zOiLgpIngpKrgpK\/gpYvgpJcg4KSV4KWAIOCktuCksOCljeCkpOClh+CkgiJ9LGNoYXQ6e2dyZWV0aW5nOiLgpKjgpK7gpLjgpY3gpKTgpYchIPCfkYsg4KSu4KWI4KSCIOCktuCkueCksOCknOCkvOCkvuCkpiDgpJXgpL4gQUkg4KS44KS54KS+4KSv4KSVIOCkueClguCkguClpCDgpJXgpYjgpLjgpYcg4KSu4KSm4KSmIOCkleCksCDgpLjgpJXgpKTgpL4g4KS54KWC4KSCPyIscGxhY2Vob2xkZXI6IuCkheCkquCkqOCkviDgpLjgpILgpKbgpYfgpLYg4KSy4KS\/4KSW4KWH4KSCLi4uIixlbmRDaGF0OiLgpJrgpYjgpJ8g4KS44KSu4KS+4KSq4KWN4KSkIOCkleCksOClh+CkgiDgpJTgpLAg4KS44KSC4KSq4KSw4KWN4KSVIOCkm+Cli+CkoeCkvOClh+CkgiIsY29udGFjdFByb21wdDoi4KSr4KWJ4KSy4KWLLeCkheCkqiDgpJXgpYcg4KSy4KS\/4KSPIOCkheCkquCkqOCkviDgpLXgpL\/gpLXgpLDgpKMg4KSb4KWL4KSh4KS84KWH4KSCIixuYW1lUGxhY2Vob2xkZXI6IuCkhuCkquCkleCkviDgpKjgpL7gpK4iLGNvbnRhY3RQbGFjZWhvbGRlcjoi4KSI4KSu4KWH4KSyIOCkr+CkviDgpKvgpYvgpKgiLHN1Ym1pdDoi4KSt4KWH4KSc4KWH4KSCIixza2lwOiLgpJvgpYvgpKHgpLzgpYfgpIIiLHNlbmRpbmc6IuCkreClh+CknCDgpLDgpLngpYcg4KS54KWI4KSCLi4uIixuZXdDb252ZXJzYXRpb246IuCkqOCkiCDgpKzgpL7gpKTgpJrgpYDgpKQiLGFzc2lzdGFudDoi4KS24KS54KSw4KSc4KS84KS+4KSmIOCkuOCkueCkvuCkr+CklSIsb25saW5lOiLgpJHgpKjgpLLgpL7gpIfgpKgifX0sc3o9e25hdjp7ZmVhdHVyZXM6Iuapn+iDvSIsZm9yWW91OiLjgYLjgarjgZ\/jgbgiLG91clN0b3J5OiLnp4HjgZ\/jgaHjga7nianoqp4iLGZhcToiRkFRIixsaWJyYXJ5OiLjg6njgqTjg5bjg6njg6oiLHRyeUZyZWU6IueEoeaWmeOBp+ippuOBmSJ9LGhlcm86e2JhZGdlOiLinKgg44GC44Gq44Gf44Gu6a2U5rOV44Gu6Kqe44KK6YOoIix0aXRsZTE6IuOBguOBquOBn+OBrumtlOazleOBriIsdGl0bGUyOiLoqp7jgorpg6giLGRlc2NyaXB0aW9uOiLjgYLjgonjgobjgotQREbjgIFFUFVC44CBVFhU44Gu5pys44KS5rKh5YWl5Z6L44Kq44O844OH44Kj44Kq44OW44OD44Kv44Gr5aSJ5o+b44CC44Ki44OD44OX44Ot44O844OJ44CB57+76Kiz44CBMTjku6XkuIrjga7oqIDoqp7jgafoh6rnhLbjgapBSemfs+WjsOOBp+iBtOOBjeOBvuOBl+OCh+OBhuOAgiJ9LGJvb2tzOntiYWRnZToiQUnjg6njgqTjg5bjg6njg6oiLHRpdGxlOiLprZTms5Xjga7jg6njgqTjg5bjg6njg6rjgpLmjqLntKIg4pyoIixkZXNjcmlwdGlvbjoi5pys44KS6KaL44Gk44GR44Gm44CBQUnjgavjgYrlpb3jgY3jgaroqIDoqp7jgafmnJfoqq3jgZXjgZvjgb7jgZfjgofjgYYiLGN0YToi54Sh5paZ44Gn6IG044GN5aeL44KB44KLIixhaU5hcnJhdGVkOiJBSeacl+iqrSJ9LGZlYXR1cmVzOntiYWRnZToiQUnjga7prZTms5UiLHRpdGxlOiLprYXlipvnmoTjgarmqZ\/og70g4pyoIixkZXNjcmlwdGlvbjoi44GZ44G544Gm44Gu5qmf6IO944GMQUnjgafoqK3oqIjjgZXjgozjgabjgYTjgb7jgZkiLGl0ZW1zOnt2b2ljZVRpdGxlOiJBSemfs+WjsOacl+iqrSIsdm9pY2VEZXNjOiLpm7Dlm7LmsJfjga7jgYLjgovpn7Pmpb3ku5jjgY3jga7nlLfmgKfjg7vlpbPmgKdBSemfs+WjsCIsdHJhbnNsYXRlVGl0bGU6IuOCueODnuODvOODiOe\/u+iosyIsdHJhbnNsYXRlRGVzYzoiMTjku6XkuIrjga7oqIDoqp7jgafljbPluqfjgavnv7voqLPjg7vmnJfoqq0iLGxpYnJhcnlUaXRsZToi44OR44O844K944OK44OrQUnjg6njgqTjg5bjg6njg6oiLGxpYnJhcnlEZXNjOiJBSeimgee0hOOBqOOCueODnuODvOODiOOBquaOqOiWpiIsZmFtaWx5VGl0bGU6IuODleOCoeODn+ODquODvOacl+iqrSIsZmFtaWx5RGVzYzoi44GK5a2Q5qeY44Gr44GC44KJ44KG44KL5paH5YyW44Gu5pys44KS6IG044GL44Gb44G+44GX44KH44GGIixhY2Nlc3NUaXRsZToi44Ki44Kv44K744K344OT44Oq44OG44Kj5YSq5YWIIixhY2Nlc3NEZXNjOiLliLbpmZDjgarjgZfjgILoppbopprnmoTjgaroqrLpoYzjgavmnIDpgakiLHN5bmNUaXRsZToi44Gp44GT44Gn44KC5ZCM5pyfIixzeW5jRGVzYzoi44Op44Kk44OW44Op44Oq44Gv44GZ44G544Gm44Gu44OH44OQ44Kk44K544Gn5ZCM5pyfIn19LGF1ZGllbmNlczp7dGl0bGU6IuOBv+OCk+OBquOBq+acgOmBqSDwn4yfIixkZXNjcmlwdGlvbjoi54mp6Kqe44KS5oSb44GZ44KL55CG55Sx44GM5L2V44Gn44GC44KM44CB44K344Oj44OP44Op44K244O844OJ44Gv44GC44Gq44Gf44Gu44Gf44KB44GrIixwYXJlbnRzOnt0aXRsZToi6Kaq44Go5a625pePIixkZXNjOiLprZTms5Xjga7jgYrjgoTjgZnjgb\/kvZPpqJPjgpLkvZzjgorjgb7jgZfjgofjgYYiLHBvaW50czpbIuOBiuawl+OBq+WFpeOCiuOBruacrOOCkuOCouODg+ODl+ODreODvOODiSIsIuWtkOS+m+OCkuWkmuiogOiqnuOBq+inpuOCjOOBleOBm+OCiyIsIuWuieWFqOOBp+W6g+WRiuOBquOBlyJdfSxsZWFybmVyczp7dGl0bGU6IuiqnuWtpuWtpue\/kuiAhSIsZGVzYzoi5rKh5YWl5Z6L44Gu54mp6Kqe44Gn5paw44GX44GE6KiA6Kqe44KS44Oe44K544K\/44O8Iixwb2ludHM6WyLjgr\/jg7zjgrLjg4Pjg4joqIDoqp7jgafogbTjgY8iLCLnv7voqLPjgpLmr5TovIMiLCIxOOS7peS4iuOBruiogOiqniJdfSxhY2Nlc3NpYmlsaXR5Ont0aXRsZToi44Ki44Kv44K744K344OT44Oq44OG44KjIixkZXNjOiLoqq3mm7jjga7llpzjgbPjgpLlho3nmbroposiLHBvaW50czpbIuOBqeOCk+OBquacrOOCguOCquODvOODh+OCo+OCquODluODg+OCr+OBqyIsIumAn+W6puOBqOmfs+WjsOOCkuiqv+aVtOWPr+iDvSIsIuOBguOCieOChuOCi+W9ouW8j+OBq+WvvuW\/nCJdfSxyZWFkZXJzOnt0aXRsZToi44OW44OD44Kv44Kv44Op44OWIixkZXNjOiLoqq3mm7jkvZPpqJPjgpLlpInpnakiLHBvaW50czpbIumAmuWLpOS4reOBq+iBtOOBjyIsIkFJ6KaB57SEIiwi44Oe44Or44OB44OH44OQ44Kk44K55ZCM5pyfIl19fSxzdG9yeTp7YmFkZ2U6IvCfkqsg56eB44Gf44Gh44Gu54mp6KqeIix0aXRsZTE6IuOCpOODs+OCueODlOODrOODvOOCt+ODp+ODsyIsdGl0bGUyOiLljYPlpJzkuIDlpJznianoqp4iLHAxOiLjgrfjg6Pjg4\/jg6njgrbjg7zjg4njga\/ljYPlpJzkuIDlpJznianoqp7jga7kvJ3oqqznmoTjgaroqp7jgorpg6jjgYvjgonlkI3liY3jgpLjgajjgaPjgabjgYTjgb7jgZnjgIIiLHF1b3RlOiLjgZnjgbnjgabjga7kurrjgYzjgIHjgZnjgbnjgabjga7nianoqp7jgavjgIHjgZnjgbnjgabjga7oqIDoqp7jgafjgIHprYLjgavoqp7jgorjgYvjgZHjgovlo7DjgafjgqLjgq\/jgrvjgrnjgafjgY3jgovjgbnjgY3jgafjgZnjgIIiLHAyOiLnp4HjgZ\/jgaHjga7kvb\/lkb3jga9BSeaKgOihk+OBp+eJqeiqnuOCkuawkeS4u+WMluOBmeOCi+OBk+OBqOOBp+OBmeOAgiJ9LGZhcTp7YmFkZ2U6IuizquWVj+OBr++8nyIsdGl0bGU6IuOCiOOBj+OBguOCi+izquWVjyIsZGVzY3JpcHRpb246IuOCt+ODo+ODj+ODqeOCtuODvOODieOBrkFJ6a2U5rOV44Gr44Gk44GE44GmIixpdGVtczpbe3E6IkFJ5pyX6Kqt44Gv44Gp44Gu44KI44GG44Gr5qmf6IO944GX44G+44GZ44GL77yfIixhOiJBSeOBjOODhuOCreOCueODiOOCkuWIhuaekOOBl+OAgemfs+alveS7mOOBjeOBruiHqueEtuOBquacl+iqreOCkueUn+aIkOOBl+OBvuOBmeOAgiJ9LHtxOiLjganjga7jg5Xjgqnjg7zjg57jg4Pjg4jjgavlr77lv5zjgZfjgabjgYTjgb7jgZnjgYvvvJ8iLGE6IlBERuOAgUVQVULjgIFUWFTjgIIifSx7cToi44GE44GP44Gk44Gu6KiA6Kqe44GM5Yip55So5Y+v6IO944Gn44GZ44GL77yfIixhOiLnlLfmgKfjg7vlpbPmgKfjga7pn7Plo7Djgqrjg5fjgrfjg6fjg7Pku5jjgY3jgacxOOS7peS4iuOBruiogOiqnuOAgiJ9LHtxOiLjgqrjg5Xjg6njgqTjg7Pjgafkvb\/nlKjjgafjgY3jgb7jgZnjgYvvvJ8iLGE6IuODgOOCpuODs+ODreODvOODieW+jOOBr+OCquODleODqeOCpOODs+OBp+iBtOOBkeOBvuOBmeOAgiJ9LHtxOiLjgrPjg7Pjg4bjg7Pjg4Tjga\/jg5fjg6njgqTjg5njg7zjg4jjgafjgZnjgYvvvJ8iLGE6IuOBr+OBhOOAguOBguOBquOBn+OBruacrOOBr+ODl+ODqeOCpOODmeODvOODiOOBp+OBmeOAgiJ9LHtxOiJBdWRpYmxl44Go44Gu5q+U6LyD44Gv77yfIixhOiLjgrfjg6Pjg4\/jg6njgrbjg7zjg4njga\/jgIHjganjgpPjgarmnKzjgafjgoLjgqLjg4Pjg5fjg63jg7zjg4njgZfjgabopIfmlbDjga7oqIDoqp7jgafljbPluqfjgatBSeacl+iqreOCkuWPl+OBkeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgiJ9XX0sZm9vdGVyOntjb3B5cmlnaHQ6IsKpIHt5ZWFyfSDjgrfjg6Pjg4\/jg6njgrbjg7zjg4njgILlhajokZfkvZzmqKnmiYDmnIkg4pyoIixwcml2YWN5OiLjg5fjg6njgqTjg5Djgrfjg7wiLHRlcm1zOiLliKnnlKjopo\/ntIQifSxjaGF0OntncmVldGluZzoi44GT44KT44Gr44Gh44Gv77yB8J+RiyDjgrfjg6Pjg4\/jg6njgrbjg7zjg4njga5BSeOCouOCt+OCueOCv+ODs+ODiOOBp+OBmeOAguOBiuaJi+S8neOBhOOBl+OBvuOBl+OCh+OBhuOBi++8nyIscGxhY2Vob2xkZXI6IuODoeODg+OCu+ODvOOCuOOCkuWFpeWKmy4uLiIsZW5kQ2hhdDoi44OB44Oj44OD44OI44KS57WC5LqG44GX44Gm6YCj57Wh5YWI44KS5q6L44GZIixjb250YWN0UHJvbXB0OiLjg5Xjgqnjg63jg7zjgqLjg4Pjg5fjga7jgZ\/jgoHjgavpgKPntaHlhYjjgpLmrovjgZfjgabjgY\/jgaDjgZXjgYQiLG5hbWVQbGFjZWhvbGRlcjoi44GK5ZCN5YmNIixjb250YWN0UGxhY2Vob2xkZXI6IuODoeODvOODq+OBvuOBn+OBr+mbu+ipsSIsc3VibWl0OiLpgIHkv6EiLHNraXA6IuOCueOCreODg+ODlyIsc2VuZGluZzoi6YCB5L+h5LitLi4uIixuZXdDb252ZXJzYXRpb246IuaWsOOBl+OBhOS8muipsSIsYXNzaXN0YW50OiLjgrfjg6Pjg4\/jg6njgrbjg7zjg4kg44Ki44K344K544K\/44Oz44OIIixvbmxpbmU6IuOCquODs+ODqeOCpOODsyJ9fSxhej17bmF2OntmZWF0dXJlczoi6riw64qlIixmb3JZb3U6IuuLueyLoOydhCDsnITtlbQiLG91clN0b3J5OiLsmrDrpqzsnZgg7J207JW86riwIixmYXE6IkZBUSIsbGlicmFyeToi64+E7ISc6rSAIix0cnlGcmVlOiLrrLTro4wg7LK07ZeYIn0saGVybzp7YmFkZ2U6IuKcqCDri7nsi6DsnZgg66eI67KVIOydtOyVvOq4sOq+vCIsdGl0bGUxOiLri7nsi6DsnZgg66eI67KVIix0aXRsZTI6IuydtOyVvOq4sOq+vCIsZGVzY3JpcHRpb246IuuqqOuToCBQREYsIEVQVUIg65iQ64qUIFRYVCDssYXsnYQg7KaJ7IucIOuqsOyehe2YlSDsmKTrlJTsmKTrtoHsnLzroZwg67OA7ZmY7ZWY7IS47JqULiDsl4XroZzrk5wsIOuyiOyXrSwgMTjqsJwg7J207IOBIOyWuOyWtOuhnCDsnpDsl7DsiqTrn6zsmrQgQUkg7J2M7ISx7Jy866GcIOuTpOycvOyEuOyalC4ifSxib29rczp7YmFkZ2U6IkFJIOuPhOyEnOq0gCIsdGl0bGU6IuuniOuyleydmCDrj4TshJzqtIAg7YOQ7IOJIOKcqCIsZGVzY3JpcHRpb246IuyxheydhCDrsJzqsqztlZjqs6AgQUnqsIAg7JuQ7ZWY64qUIOyWuOyWtOuhnCDrk6TroKTso7zqsowg7ZWY7IS47JqUIixjdGE6IuustOujjOuhnCDrk6PquLAg7Iuc7J6RIixhaU5hcnJhdGVkOiJBSSDrgq3rj4UifSxmZWF0dXJlczp7YmFkZ2U6IkFJIOuniOuylSIsdGl0bGU6IuunpO2YueyggeyduCDquLDriqUg4pyoIixkZXNjcmlwdGlvbjoi66qo65OgIOq4sOuKpeydgCBBSSDsp4DriqXsnLzroZwg7KCc7J6R65CY7JeI7Iq164uI64ukIixpdGVtczp7dm9pY2VUaXRsZToiQUkg7J2M7ISxIOuCtOugiOydtOyFmCIsdm9pY2VEZXNjOiLrtoTsnITquLAg7J6I64qUIOydjOyVheqzvCDrgqjrhYAgQUkg7J2M7ISxIix0cmFuc2xhdGVUaXRsZToi7Iqk66eI7Yq4IOuyiOyXrSIsdHJhbnNsYXRlRGVzYzoiMTjqsJwg7J207IOBIOyWuOyWtOuhnCDsponsi5wg67KI7JetIOuwjyDrgq3rj4UiLGxpYnJhcnlUaXRsZToi6rCc7J24IEFJIOuPhOyEnOq0gCIsbGlicmFyeURlc2M6IkFJIOyalOyVveqzvCDsiqTrp4jtirgg7LaU7LKcIixmYW1pbHlUaXRsZToi6rCA7KGxIOyKpO2GoOumrO2FlOungSIsZmFtaWx5RGVzYzoi7JWE7J2065Ok7J20IOuqqOuToCDrrLjtmZTsnZgg7LGF7J2EIOuTo+qyjCDtlZjshLjsmpQiLGFjY2Vzc1RpdGxlOiLsoJHqt7zshLEg7Jqw7ISgIixhY2Nlc3NEZXNjOiLsoJztlZwg7JeG7J2MLiDsi5zqsIEg7J6l7JWg7JeQIOyZhOuyvSIsc3luY1RpdGxlOiLslrTrlJTshJzrgpgg64+Z6riw7ZmUIixzeW5jRGVzYzoi64+E7ISc6rSA7J20IOuqqOuToCDquLDquLDsl5DshJwg64+Z6riw7ZmUIn19LGF1ZGllbmNlczp7dGl0bGU6IuuqqOuRkOyXkOqyjCDsmYTrsr0g8J+MnyIsZGVzY3JpcHRpb246IuydtOyVvOq4sOulvCDsgqzrnpHtlZjripQg7J207Jyg6rCAIOustOyXh+ydtOuToCwg7IWw7Zek65287J6Q65Oc6rCAIOyeiOyKteuLiOuLpCIscGFyZW50czp7dGl0bGU6Iuu2gOuqqOyZgCDqsIDsobEiLGRlc2M6IuuniOuylSDqsJnsnYAg7J6g7J6Q66asIOqyve2XmOydhCDrp4zrk5zshLjsmpQiLHBvaW50czpbIuyii+yVhO2VmOuKlCDssYUg7JeF66Gc65OcIiwi7JWE7J2065Ok7J2EIOyXrOufrCDslrjslrTsl5Ag64W47LacIiwi7JWI7KCE7ZWcIOq0keqzoCDsl4bripQg65Oj6riwIl19LGxlYXJuZXJzOnt0aXRsZToi7Ja47Ja0IO2VmeyKteyekCIsZGVzYzoi66qw7J6F7ZiVIOyKpO2GoOumrO2FlOungeycvOuhnCDsg4gg7Ja47Ja0IOuniOyKpO2EsCIscG9pbnRzOlsi66qp7ZGcIOyWuOyWtOuhnCDrk6PquLAiLCLrsojsl60g67mE6rWQIiwiMTjqsJwg7J207IOBIOyWuOyWtCJdfSxhY2Nlc3NpYmlsaXR5Ont0aXRsZToi7KCR6re87ISxIixkZXNjOiLsnb3quLDsnZgg7KaQ6rGw7JuA7J2EIOyerOuwnOqyrCIscG9pbnRzOlsi66qo65OgIOyxheydtCDsmKTrlJTsmKTrtoHsnLzroZwiLCLsobDsoIgg6rCA64ql7ZWcIOyGjeuPhOyZgCDsnYzshLEiLCLrqqjrk6Ag7ZiV7IudIOyngOybkCJdfSxyZWFkZXJzOnt0aXRsZToi67aB7YG065+96rO8IOuPheyekCIsZGVzYzoi7J296riwIOqyve2XmOydhCDrs4DtmZgiLHBvaW50czpbIuy2nO2HtOq3vCDspJEg65Oj6riwIiwiQUkg7JqU7JW9Iiwi66mA7YuwIOq4sOq4sCDrj5nquLDtmZQiXX19LHN0b3J5OntiYWRnZToi8J+SqyDsmrDrpqzsnZgg7J207JW86riwIix0aXRsZTE6IuyYgeqwkOydmCDsm5DsspwiLHRpdGxlMjoi7LKc7J287JW87ZmUIixwMToi7IWw7Zek65287J6Q65Oc64qUIOyynOydvOyVvO2ZlOydmCDsoITshKTsoIHsnbgg7J207JW86riw6r687JeQ7IScIOydtOumhOydhCDrlLDsmZTsirXri4jri6QuIixxdW90ZToi66qo65OgIOyCrOuejOydgCDrqqjrk6Ag7J207JW86riw7JeQLCDrqqjrk6Ag7Ja47Ja066GcLCDsmIHtmLzsl5Ag66eQ7ZWY64qUIOuqqeyGjOumrOuhnCDsoJHqt7ztlaAg7IiYIOyeiOyWtOyVvCDtlanri4jri6QuIixwMjoi7Jqw66as7J2YIOyCrOuqheydgCBBSSDquLDsiKDroZwg7Iqk7Yag66as7YWU66eB7J2EIOuvvOyjvO2ZlO2VmOuKlCDqsoPsnoXri4jri6QuIn0sZmFxOntiYWRnZToi7KeI66y47J20IOyeiOuCmOyalD8iLHRpdGxlOiLsnpDso7wg66y764qUIOyniOusuCIsZGVzY3JpcHRpb246IuyFsO2XpOudvOyekOuTnCBBSSDrp4jrspXsl5Ag64yA7ZWcIOuqqOuToCDqsoMiLGl0ZW1zOlt7cToiQUkg64K066CI7J207IWY7J2AIOyWtOuWu+qyjCDsnpHrj5ntlZjrgpjsmpQ\/IixhOiJBSeqwgCDthY3siqTtirjrpbwg67aE7ISd7ZWY6rOgIOydjOyVheqzvCDtlajqu5gg7J6Q7Jew7Iqk65+s7Jq0IOuCtOugiOydtOyFmOydhCDsg53shLHtlanri4jri6QuIn0se3E6IuyWtOuWpCDtmJXsi53snbQg7KeA7JuQ65CY64KY7JqUPyIsYToiUERGLCBFUFVCLCBUWFQuIn0se3E6IuuqhyDqsJwg7Ja47Ja06rCAIOqwgOuKpe2VnOqwgOyalD8iLGE6IuuCqOuFgCDsnYzshLEg7Ji17IWY7J20IOyeiOuKlCAxOOqwnCDsnbTsg4Eg7Ja47Ja0LiJ9LHtxOiLsmKTtlITrnbzsnbgg7IKs7Jqp7J20IOqwgOuKpe2VnOqwgOyalD8iLGE6IuuLpOyatOuhnOuTnCDtm4Qg7Jik7ZSE65287J247Jy866GcIOuTpOydhCDsiJgg7J6I7Iq164uI64ukLiJ9LHtxOiLrgrQg7L2Y7YWQ7Lig64qUIOu5hOqzteqwnOyduOqwgOyalD8iLGE6IuuEpC4g64u57Iug7J2YIOyxheydgCDruYTqs7XqsJzsnoXri4jri6QuIn0se3E6IkF1ZGlibGXqs7wg67mE6rWQ7ZWY66m0PyIsYToi7IWw7Zek65287J6Q65Oc64qUIOyWtOuWpCDssYXsnbTrk6Ag7JeF66Gc65Oc7ZWY7JesIOyXrOufrCDslrjslrTroZwg7KaJ7IucIEFJIOuCtOugiOydtOyFmOydhCDrsJvsnYQg7IiYIOyeiOyKteuLiOuLpC4ifV19LGZvb3Rlcjp7Y29weXJpZ2h0OiLCqSB7eWVhcn0g7IWw7Zek65287J6Q65OcLiDrqqjrk6Ag6raM66asIOuztOycoCDinKgiLHByaXZhY3k6IuqwnOyduOygleuztCIsdGVybXM6IuydtOyaqeyVveq0gCJ9LGNoYXQ6e2dyZWV0aW5nOiLslYjrhZXtlZjshLjsmpQhIPCfkYsg7IWw7Zek65287J6Q65OcIEFJIOyWtOyLnOyKpO2EtO2KuOyeheuLiOuLpC4g7Ja065a76rKMIOuPhOyZgOuTnOumtOq5jOyalD8iLHBsYWNlaG9sZGVyOiLrqZTsi5zsp4Drpbwg7J6F66Cl7ZWY7IS47JqULi4uIixlbmRDaGF0OiLssYTtjIUg7KKF66OMIOuwjyDsl7Drnb3sspgg64Ko6riw6riwIixjb250YWN0UHJvbXB0OiLtm4Tsho0g7KGw7LmY66W8IOychO2VtCDsoJXrs7Trpbwg64Ko6rKo7KO87IS47JqUIixuYW1lUGxhY2Vob2xkZXI6IuydtOumhCIsY29udGFjdFBsYWNlaG9sZGVyOiLsnbTrqZTsnbwg65iQ64qUIOyghO2ZlCIsc3VibWl0OiLsoJzstpwiLHNraXA6IuqxtOuEiOubsOq4sCIsc2VuZGluZzoi7KCE7IahIOykkS4uLiIsbmV3Q29udmVyc2F0aW9uOiLsg4gg64yA7ZmUIixhc3Npc3RhbnQ6IuyFsO2XpOudvOyekOuTnCDslrTsi5zsiqTthLTtirgiLG9ubGluZToi7Jio65287J24In19LGx6PXtuYXY6e2ZlYXR1cmVzOiLlip\/og70iLGZvcllvdToi5Li65L2gIixvdXJTdG9yeToi5oiR5Lus55qE5pWF5LqLIixmYXE6IuW4uOingemXrumimCIsbGlicmFyeToi5Zu+5Lmm6aaGIix0cnlGcmVlOiLlhY3otLnor5XnlKgifSxoZXJvOntiYWRnZToi4pyoIOS9oOeahOmtlOazleaVheS6i+iusui\/sOiAhSIsdGl0bGUxOiLkvaDnmoTprZTms5UiLHRpdGxlMjoi5pWF5LqL6K6y6L+w6ICFIixkZXNjcmlwdGlvbjoi5bCG5Lu75L2VUERG44CBRVBVQuaIllRYVOS5puexjeWNs+aXtui9rOWMluS4uuayiea1uOW8j+acieWjsOS5puOAguS4iuS8oOOAgee\/u+ivke+8jOeUqOiHqueEtkFJ6K+t6Z+z5ZyoMTjlpJrnp43or63oqIDkuK3ogYblkKzjgIIifSxib29rczp7YmFkZ2U6IkFJ5Zu+5Lmm6aaGIix0aXRsZToi5o6i57Si5oiR5Lus55qE6a2U5rOV5Zu+5Lmm6aaGIOKcqCIsZGVzY3JpcHRpb246IuWPkeeOsOS5puexje+8jOiuqUFJ55So5L2g5oOz6KaB55qE6K+t6KiA5pyX6K+7IixjdGE6IuWFjei0ueW8gOWni+iBhuWQrCIsYWlOYXJyYXRlZDoiQUnmnJfor7sifSxmZWF0dXJlczp7YmFkZ2U6IkFJ6a2U5rOVIix0aXRsZToi6L+35Lq655qE5Yqf6IO9IOKcqCIsZGVzY3JpcHRpb246Iuavj+S4quWKn+iDvemDveeUsUFJ5pm66IO95omT6YCgIixpdGVtczp7dm9pY2VUaXRsZToiQUnor63pn7PmnJfor7siLHZvaWNlRGVzYzoi6YWN5pyJ5rCb5Zu06Z+z5LmQ55qE55S35aWzQUnor63pn7MiLHRyYW5zbGF0ZVRpdGxlOiLmmbrog73nv7vor5EiLHRyYW5zbGF0ZURlc2M6IuWNs+aXtue\/u+ivkeWSjOacl+ivuzE45aSa56eN6K+t6KiAIixsaWJyYXJ5VGl0bGU6IuS4quS6ukFJ5Zu+5Lmm6aaGIixsaWJyYXJ5RGVzYzoiQUnmkZjopoHlkozmmbrog73mjqjojZAiLGZhbWlseVRpdGxlOiLlrrbluq3mlYXkuosiLGZhbWlseURlc2M6IuiuqeWtqeWtkOiBhuWQrOWQhOenjeaWh+WMlueahOS5puexjSIsYWNjZXNzVGl0bGU6IuaXoOmanOeijeS8mOWFiCIsYWNjZXNzRGVzYzoi5peg6ZmQ5Yi244CC6YCC5ZCI6KeG5Yqb6Zqc56KN6ICFIixzeW5jVGl0bGU6IuWFqOW5s+WPsOWQjOatpSIsc3luY0Rlc2M6IuS9oOeahOWbvuS5pummhuWcqOaJgOacieiuvuWkh+WQjOatpSJ9fSxhdWRpZW5jZXM6e3RpdGxlOiLpgILlkIjmr4\/kuKrkurog8J+MnyIsZGVzY3JpcHRpb246IuaXoOiuuuS9oOeIseaVheS6i+eahOWOn+WboOaYr+S7gOS5iO+8jOiOjui1q+aJjuW+t+S4uuS9oOWHhuWkhyIscGFyZW50czp7dGl0bGU6IueItuavjeWSjOWutuW6rSIsZGVzYzoi5Yib6YCg56We5aWH55qE552h5YmN5L2T6aqMIixwb2ludHM6WyLkuIrkvKDllpzniLHnmoTkuabnsY0iLCLorqnlranlrZDmjqXop6blpJrnp43or63oqIAiLCLlronlhajml6Dlub\/lkYoiXX0sbGVhcm5lcnM6e3RpdGxlOiLor63oqIDlrabkuaDogIUiLGRlc2M6IumAmui\/h+ayiea1uOW8j+aVheS6i+aOjOaPoeaWsOivreiogCIscG9pbnRzOlsi55So55uu5qCH6K+t6KiA6IGG5ZCsIiwi5q+U6L6D57+76K+RIiwiMTgr6K+t6KiAIl19LGFjY2Vzc2liaWxpdHk6e3RpdGxlOiLml6Dpmpznoo0iLGRlc2M6IumHjeaWsOWPkeeOsOmYheivu+eahOS5kOi2oyIscG9pbnRzOlsi5Lu75L2V5Lmm6YO96IO95Y+Y5oiQ5pyJ5aOw5LmmIiwi5Y+v6LCD6IqC6YCf5bqm5ZKM6K+t6Z+zIiwi5pSv5oyB5omA5pyJ5qC85byPIl19LHJlYWRlcnM6e3RpdGxlOiLor7vkuabkvJoiLGRlc2M6IuaUueWPmOS9oOeahOmYheivu+S9k+mqjCIscG9pbnRzOlsi6YCa5Yuk6Lev5LiK5ZCsIiwiQUnmkZjopoEiLCLlpJrorr7lpIflkIzmraUiXX19LHN0b3J5OntiYWRnZToi8J+SqyDmiJHku6znmoTmlYXkuosiLHRpdGxlMToi54G15oSf5p2l6IeqIix0aXRsZTI6IuS4gOWNg+mbtuS4gOWknCIscDE6IuiOjui1q+aJjuW+t+S7peS4gOWNg+mbtuS4gOWknOS4reS8oOWlh+eahOaVheS6i+iusui\/sOiAheWRveWQjeOAgiIscXVvdGU6Iuavj+S4quS6uumDveW6lOivpeiDveS7peavj+enjeivreiogOOAgeeUqOinpuWKqOeBtemtgueahOWjsOmfs+adpeaOpeinpuavj+S4gOS4quaVheS6i+OAgiIscDI6IuaIkeS7rOeahOS9v+WRveaYr+mAmui\/h0FJ5oqA5pyv6K6p6K6y5pWF5LqL5rCR5Li75YyW44CCIn0sZmFxOntiYWRnZToi5pyJ6Zeu6aKY77yfIix0aXRsZToi5bi46KeB6Zeu6aKYIixkZXNjcmlwdGlvbjoi5YWz5LqO6I6O6LWr5omO5b63QUnprZTms5XnmoTkuIDliIciLGl0ZW1zOlt7cToiQUnmnJfor7vlpoLkvZXlt6XkvZzvvJ8iLGE6IuaIkeS7rOeahEFJ5YiG5p6Q5paH5pys5bm255Sf5oiQ6YWN5pyJ6Z+z5LmQ55qE6Ieq54S25pyX6K+744CCIn0se3E6IuaUr+aMgeWTquS6m+agvOW8j++8nyIsYToiUERG44CBRVBVQuWSjFRYVOOAgiJ9LHtxOiLmnInlpJrlsJHnp43or63oqIDvvJ8iLGE6IjE4K+enjeivreiogO+8jOmFjeacieeUt+Wls+WjsOmfs+mAiemhueOAgiJ9LHtxOiLlj6\/ku6Xnprvnur\/kvb\/nlKjlkJfvvJ8iLGE6IuS4i+i9veWQjuWPr+S7peemu+e6v+aUtuWQrOOAgiJ9LHtxOiLmiJHnmoTlhoXlrrnmmK\/np4Hlr4bnmoTlkJfvvJ8iLGE6IuW9k+eEtuOAguS9oOeahOS5puexjeaYr+engeWvhueahOOAgiJ9LHtxOiLkuI5BdWRpYmxl55u45q+U5aaC5L2V77yfIixhOiLojo7otavmiY7lvrflhYHorrjkvaDkuIrkvKDku7vkvZXkuabnsY3vvIzljbPml7bojrflvpflpJror63oqIBBSeacl+ivu+OAgiJ9XX0sZm9vdGVyOntjb3B5cmlnaHQ6IsKpIHt5ZWFyfSDojo7otavmiY7lvrfjgILniYjmnYPmiYDmnIkg4pyoIixwcml2YWN5OiLpmpDnp4HmlL\/nrZYiLHRlcm1zOiLkvb\/nlKjmnaHmrL4ifSxjaGF0OntncmVldGluZzoi5L2g5aW977yB8J+RiyDmiJHmmK\/ojo7otavmiY7lvrfnmoRBSeWKqeaJi+OAguacieS7gOS5iOWPr+S7peW4ruaCqOeahOWQl++8nyIscGxhY2Vob2xkZXI6Iui+k+WFpea2iOaBry4uLiIsZW5kQ2hhdDoi57uT5p2f6IGK5aSp5bm255WZ5LiL6IGU57O75pa55byPIixjb250YWN0UHJvbXB0OiLnlZnkuIvmgqjnmoTkv6Hmga\/ku6Xkvr\/ot5\/ov5siLG5hbWVQbGFjZWhvbGRlcjoi5oKo55qE5aeT5ZCNIixjb250YWN0UGxhY2Vob2xkZXI6IumCrueuseaIlueUteivnSIsc3VibWl0OiLmj5DkuqQiLHNraXA6Iui3s+i\/hyIsc2VuZGluZzoi5Y+R6YCB5LitLi4uIixuZXdDb252ZXJzYXRpb246IuaWsOWvueivnSIsYXNzaXN0YW50OiLojo7otavmiY7lvrfliqnmiYsiLG9ubGluZToi5Zyo57q\/In19LHV6PXtuYXY6e2ZlYXR1cmVzOiJGaXR1ciIsZm9yWW91OiJVbnR1ayBBbmRhIixvdXJTdG9yeToiQ2VyaXRhIEthbWkiLGZhcToiRkFRIixsaWJyYXJ5OiJQZXJwdXN0YWthYW4iLHRyeUZyZWU6IkNvYmEgR3JhdGlzIn0saGVybzp7YmFkZ2U6IuKcqCBQZW5kb25nZW5nIEFqYWliIEFuZGEiLHRpdGxlMToiUGVuZG9uZ2VuZyIsdGl0bGUyOiJBamFpYiBBbmRhIixkZXNjcmlwdGlvbjoiVWJhaCBidWt1IFBERiwgRVBVQiwgYXRhdSBUWFQgbWVuamFkaSBhdWRpb2Jvb2sgaW1lcnNpZi4gVW5nZ2FoLCB0ZXJqZW1haGthbiwgZGFuIGRlbmdhcmthbiBkYWxhbSAxOCsgYmFoYXNhIGRlbmdhbiBzdWFyYSBBSSBhbGFtaS4ifSxib29rczp7YmFkZ2U6IlBlcnB1c3Rha2FhbiBBSSIsdGl0bGU6IkplbGFqYWhpIFBlcnB1c3Rha2FhbiBBamFpYiBLYW1pIOKcqCIsZGVzY3JpcHRpb246IlRlbXVrYW4gYnVrdSBkYW4gYmlhcmthbiBBSSBtZW5hcmFzaWthbm55YSBkYWxhbSBiYWhhc2EgcGlsaWhhbiIsY3RhOiJNdWxhaSBEZW5nYXJrYW4gR3JhdGlzIixhaU5hcnJhdGVkOiJOYXJhc2kgQUkifSxmZWF0dXJlczp7YmFkZ2U6IlNpaGlyIEFJIix0aXRsZToiRml0dXIgTWVtdWthdSDinKgiLGRlc2NyaXB0aW9uOiJTZXRpYXAgZml0dXIgZGlyYW5jYW5nIGRlbmdhbiBrZWNlcmRhc2FuIEFJIixpdGVtczp7dm9pY2VUaXRsZToiTmFyYXNpIFN1YXJhIEFJIix2b2ljZURlc2M6IlN1YXJhIHByaWEgZGFuIHdhbml0YSBkZW5nYW4gbXVzaWsgYXRtb3NmZXJpayIsdHJhbnNsYXRlVGl0bGU6IlRlcmplbWFoYW4gQ2VyZGFzIix0cmFuc2xhdGVEZXNjOiJUZXJqZW1haGthbiBkYW4gbmFyYXNpa2FuIGRhbGFtIDE4KyBiYWhhc2EiLGxpYnJhcnlUaXRsZToiUGVycHVzdGFrYWFuIEFJIFByaWJhZGkiLGxpYnJhcnlEZXNjOiJSaW5na2FzYW4gQUkgZGFuIHJla29tZW5kYXNpIGNlcmRhcyIsZmFtaWx5VGl0bGU6IkRvbmdlbmcgS2VsdWFyZ2EiLGZhbWlseURlc2M6IkJpYXJrYW4gYW5hay1hbmFrIG1lbmRlbmdhcmthbiBidWt1IGRhcmkgYnVkYXlhIGFwYSBwdW4iLGFjY2Vzc1RpdGxlOiJBa3Nlc2liaWxpdGFzIFBlcnRhbWEiLGFjY2Vzc0Rlc2M6IlRhbnBhIGJhdGFzYW4uIFNlbXB1cm5hIHVudHVrIHRhbnRhbmdhbiB2aXN1YWwiLHN5bmNUaXRsZToiU2lua3JvbmlzYXNpIGRpIE1hbmEgU2FqYSIsc3luY0Rlc2M6IlBlcnB1c3Rha2FhbiBBbmRhIHRlcnNpbmtyb24gZGkgc2VtdWEgcGVyYW5na2F0In19LGF1ZGllbmNlczp7dGl0bGU6IlNlbXB1cm5hIFVudHVrIFNlbXVhIPCfjJ8iLGRlc2NyaXB0aW9uOiJBcGFwdW4gYWxhc2FuIEFuZGEgbWVuY2ludGFpIGNlcml0YSwgU2hhaHJ6YWQgc2lhcCBtZWxheWFuaSIscGFyZW50czp7dGl0bGU6Ik9yYW5nIFR1YSAmIEtlbHVhcmdhIixkZXNjOiJDaXB0YWthbiBwZW5nYWxhbWFuIHRpZHVyIHlhbmcgYWphaWIiLHBvaW50czpbIlVuZ2dhaCBidWt1IGZhdm9yaXQiLCJQZXJrZW5hbGthbiBhbmFrIHBhZGEgYmFueWFrIGJhaGFzYSIsIk1lbmRlbmdhcmthbiBhbWFuIHRhbnBhIGlrbGFuIl19LGxlYXJuZXJzOnt0aXRsZToiUGVsYWphciBCYWhhc2EiLGRlc2M6Ikt1YXNhaSBiYWhhc2EgYmFydSBtZWxhbHVpIG5hcmFzaSBpbWVyc2lmIixwb2ludHM6WyJEZW5nYXJrYW4gZGFsYW0gYmFoYXNhIHRhcmdldCIsIkJhbmRpbmdrYW4gdGVyamVtYWhhbiIsIjE4KyBiYWhhc2EiXX0sYWNjZXNzaWJpbGl0eTp7dGl0bGU6IkFrc2VzaWJpbGl0YXMiLGRlc2M6IlRlbXVrYW4ga2VtYmFsaSBrZXNlbmFuZ2FuIG1lbWJhY2EiLHBvaW50czpbIlNldGlhcCBidWt1IGphZGkgYXVkaW9ib29rIiwiS2VjZXBhdGFuIGRhbiBzdWFyYSBkYXBhdCBkaXNlc3VhaWthbiIsIkJla2VyamEgZGVuZ2FuIGZvcm1hdCBhcGEgcHVuIl19LHJlYWRlcnM6e3RpdGxlOiJLbHViIEJ1a3UiLGRlc2M6IlViYWggcGVuZ2FsYW1hbiBtZW1iYWNhIEFuZGEiLHBvaW50czpbIkRlbmdhcmthbiBzYWF0IHBlcmphbGFuYW4iLCJSaW5na2FzYW4gQUkiLCJTaW5rcm9uaXNhc2kgbXVsdGktcGVyYW5na2F0Il19fSxzdG9yeTp7YmFkZ2U6IvCfkqsgQ2VyaXRhIEthbWkiLHRpdGxlMToiVGVyaW5zcGlyYXNpIGRhcmkiLHRpdGxlMjoiU2VyaWJ1IFNhdHUgTWFsYW0iLHAxOiJTaGFocnphZCBkaW5hbWFpIGRhcmkgcGVuZG9uZ2VuZyBsZWdlbmRhcmlzIFNlcmlidSBTYXR1IE1hbGFtLiIscXVvdGU6IlNldGlhcCBvcmFuZyBoYXJ1cyBtZW1pbGlraSBha3NlcyBrZSBzZXRpYXAgY2VyaXRhLCBkYWxhbSBzZXRpYXAgYmFoYXNhLCBkZW5nYW4gc3VhcmEgeWFuZyBiZXJiaWNhcmEga2VwYWRhIGppd2FueWEuIixwMjoiTWlzaSBrYW1pIGFkYWxhaCBtZW5kZW1va3JhdGlzYXNpIGRvbmdlbmcgbWVsYWx1aSB0ZWtub2xvZ2kgQUkuIn0sZmFxOntiYWRnZToiQWRhIFBlcnRhbnlhYW4\/Iix0aXRsZToiUGVydGFueWFhbiBVbXVtIixkZXNjcmlwdGlvbjoiU2VtdWEgdGVudGFuZyBzaWhpciBBSSBTaGFocnphZCIsaXRlbXM6W3txOiJCYWdhaW1hbmEgbmFyYXNpIEFJIGJla2VyamE\/IixhOiJBSSBrYW1pIG1lbmdhbmFsaXNpcyB0ZWtzIGRhbiBtZW5naGFzaWxrYW4gbmFyYXNpIGFsYW1pIGRlbmdhbiBtdXNpay4ifSx7cToiRm9ybWF0IGFwYSB5YW5nIGRpZHVrdW5nPyIsYToiUERGLCBFUFVCLCBkYW4gVFhULiJ9LHtxOiJCZXJhcGEgYmFoYXNhIHRlcnNlZGlhPyIsYToiMTgrIGJhaGFzYSBkZW5nYW4gcGlsaWhhbiBzdWFyYSBwcmlhIGRhbiB3YW5pdGEuIn0se3E6IkJpc2EgZGlndW5ha2FuIG9mZmxpbmU\/IixhOiJZYSwgc2V0ZWxhaCBkaXVuZHVoIEFuZGEgYmlzYSBtZW5kZW5nYXJrYW4gb2ZmbGluZS4ifSx7cToiQXBha2FoIGtvbnRlbiBzYXlhIHByaXZhdD8iLGE6IlRlbnR1IHNhamEuIEJ1a3UgQW5kYSBiZXJzaWZhdCBwcml2YXQuIn0se3E6IkJhZ2FpbWFuYSBkaWJhbmRpbmdrYW4gZGVuZ2FuIEF1ZGlibGU\/IixhOiJTaGFocnphZCBtZW11bmdraW5rYW4gQW5kYSBtZW5ndW5nZ2FoIGJ1a3UgQVBBIFBVTiB1bnR1ayBuYXJhc2kgQUkgaW5zdGFuIGRhbGFtIGJlcmJhZ2FpIGJhaGFzYS4ifV19LGZvb3Rlcjp7Y29weXJpZ2h0OiLCqSB7eWVhcn0gU2hhaHJ6YWQuIEhhayBjaXB0YSBkaWxpbmR1bmdpIOKcqCIscHJpdmFjeToiUHJpdmFzaSIsdGVybXM6IktldGVudHVhbiBQZW5nZ3VuYWFuIn0sY2hhdDp7Z3JlZXRpbmc6IkhhbG8hIPCfkYsgU2F5YSBhc2lzdGVuIEFJIFNoYWhyemFkLiBBZGEgeWFuZyBiaXNhIHNheWEgYmFudHU\/IixwbGFjZWhvbGRlcjoiS2V0aWsgcGVzYW4gQW5kYS4uLiIsZW5kQ2hhdDoiQWtoaXJpIGNoYXQgJiB0aW5nZ2Fsa2FuIGtvbnRhayIsY29udGFjdFByb21wdDoiVGluZ2dhbGthbiBkYXRhIEFuZGEgdW50dWsgdGluZGFrIGxhbmp1dCIsbmFtZVBsYWNlaG9sZGVyOiJOYW1hIEFuZGEiLGNvbnRhY3RQbGFjZWhvbGRlcjoiRW1haWwgYXRhdSB0ZWxlcG9uIixzdWJtaXQ6IktpcmltIixza2lwOiJMZXdhdGkiLHNlbmRpbmc6Ik1lbmdpcmltLi4uIixuZXdDb252ZXJzYXRpb246IlBlcmNha2FwYW4gYmFydSIsYXNzaXN0YW50OiJBc2lzdGVuIFNoYWhyemFkIixvbmxpbmU6Ik9ubGluZSJ9fSxWYz17ZW46V2osYXI6S2osZnI6R2osZXM6WWosZGU6UWosZmE6WGosaXQ6SmoscHQ6Wmosbmw6ZXosc3Y6dHoscGw6bnosdHI6cnoscnU6aXosaGk6b3osamE6c3osa286YXosemg6bHosaWQ6dXp9LGpiPWIuY3JlYXRlQ29udGV4dCh2b2lkIDApLG15PSJzaGFocnphZC1sYW5nIixjej0oe2NoaWxkcmVuOmV9KT0+e2NvbnN0W3Qsbl09Yi51c2VTdGF0ZSgoKT0+e2NvbnN0IHM9bG9jYWxTdG9yYWdlLmdldEl0ZW0obXkpO3JldHVybiBzJiZWY1tzXT9zOnFqKCl9KSxyPXM9PntuKHMpLGxvY2FsU3RvcmFnZS5zZXRJdGVtKG15LHMpfSxpPUhqKHQpLG89VmNbdF18fFZjLmVuO3JldHVybiBiLnVzZUVmZmVjdCgoKT0+e2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nPXQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRpcj1pLmRpcn0sW3QsaV0pLGcuanN4KGpiLlByb3ZpZGVyLHt2YWx1ZTp7bGFuZ3VhZ2U6dCxzZXRMYW5ndWFnZTpyLHQ6byxsYW5nSW5mbzppfSxjaGlsZHJlbjplfSl9LF9uPSgpPT57Y29uc3QgZT1iLnVzZUNvbnRleHQoamIpO2lmKCFlKXRocm93IG5ldyBFcnJvcigidXNlTGFuZ3VhZ2UgbXVzdCBiZSB1c2VkIHdpdGhpbiBMYW5ndWFnZVByb3ZpZGVyIik7cmV0dXJuIGV9LGJwPWIuY3JlYXRlQ29udGV4dCh7fSk7ZnVuY3Rpb24ga3AoZSl7Y29uc3QgdD1iLnVzZVJlZihudWxsKTtyZXR1cm4gdC5jdXJyZW50PT09bnVsbCYmKHQuY3VycmVudD1lKCkpLHQuY3VycmVudH1jb25zdCBkej10eXBlb2Ygd2luZG93PCJ1Iix6Yj1kej9iLnVzZUxheW91dEVmZmVjdDpiLnVzZUVmZmVjdCxIdT1iLmNyZWF0ZUNvbnRleHQobnVsbCk7ZnVuY3Rpb24gU3AoZSx0KXtlLmluZGV4T2YodCk9PT0tMSYmZS5wdXNoKHQpfWZ1bmN0aW9uIGl1KGUsdCl7Y29uc3Qgbj1lLmluZGV4T2YodCk7bj4tMSYmZS5zcGxpY2UobiwxKX1jb25zdCBNbj0oZSx0LG4pPT5uPnQ\/dDpuPGU\/ZTpuO2xldCBxdT0oKT0+e30sam89KCk9Pnt9O2NvbnN0ICRyPXt9LFJiPWU9Pi9eLT8oPzpcZCsoPzpcLlxkKyk\/fFwuXGQrKSQvdS50ZXN0KGUpO2Z1bmN0aW9uIERiKGUpe3JldHVybiB0eXBlb2YgZT09Im9iamVjdCImJmUhPT1udWxsfWNvbnN0IE1iPWU9Pi9eMFteLlxzXSskL3UudGVzdChlKTtmdW5jdGlvbiBMYihlKXtsZXQgdDtyZXR1cm4oKT0+KHQ9PT12b2lkIDAmJih0PWUoKSksdCl9Y29uc3QgV3Q9ZT0+ZSxmej0oZSx0KT0+bj0+dChlKG4pKSx5YT0oLi4uZSk9PmUucmVkdWNlKGZ6KSxacz0oZSx0LG4pPT57Y29uc3Qgcj10LWU7cmV0dXJuIHI9PT0wPzE6KG4tZSkvcn07Y2xhc3MgQ3B7Y29uc3RydWN0b3IoKXt0aGlzLnN1YnNjcmlwdGlvbnM9W119YWRkKHQpe3JldHVybiBTcCh0aGlzLnN1YnNjcmlwdGlvbnMsdCksKCk9Pml1KHRoaXMuc3Vic2NyaXB0aW9ucyx0KX1ub3RpZnkodCxuLHIpe2NvbnN0IGk9dGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aDtpZihpKWlmKGk9PT0xKXRoaXMuc3Vic2NyaXB0aW9uc1swXSh0LG4scik7ZWxzZSBmb3IobGV0IG89MDtvPGk7bysrKXtjb25zdCBzPXRoaXMuc3Vic2NyaXB0aW9uc1tvXTtzJiZzKHQsbixyKX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RofWNsZWFyKCl7dGhpcy5zdWJzY3JpcHRpb25zLmxlbmd0aD0wfX1jb25zdCBidD1lPT5lKjFlMyxIdD1lPT5lLzFlMztmdW5jdGlvbiBPYihlLHQpe3JldHVybiB0P2UqKDFlMy90KTowfWNvbnN0IEZiPShlLHQsbik9PigoKDEtMypuKzMqdCkqZSsoMypuLTYqdCkpKmUrMyp0KSplLGh6PTFlLTcscHo9MTI7ZnVuY3Rpb24gbXooZSx0LG4scixpKXtsZXQgbyxzLGE9MDtkbyBzPXQrKG4tdCkvMixvPUZiKHMscixpKS1lLG8+MD9uPXM6dD1zO3doaWxlKE1hdGguYWJzKG8pPmh6JiYrK2E8cHopO3JldHVybiBzfWZ1bmN0aW9uIHZhKGUsdCxuLHIpe2lmKGU9PT10JiZuPT09cilyZXR1cm4gV3Q7Y29uc3QgaT1vPT5teihvLDAsMSxlLG4pO3JldHVybiBvPT5vPT09MHx8bz09PTE\/bzpGYihpKG8pLHQscil9Y29uc3QgX2I9ZT0+dD0+dDw9LjU\/ZSgyKnQpLzI6KDItZSgyKigxLXQpKSkvMixWYj1lPT50PT4xLWUoMS10KSxCYj12YSguMzMsMS41MywuNjksLjk5KSxUcD1WYihCYiksVWI9X2IoVHApLCRiPWU9PmU+PTE\/MTooZSo9Mik8MT8uNSpUcChlKTouNSooMi1NYXRoLnBvdygyLC0xMCooZS0xKSkpLEVwPWU9PjEtTWF0aC5zaW4oTWF0aC5hY29zKGUpKSxIYj1WYihFcCkscWI9X2IoRXApLGd6PXZhKC40MiwwLDEsMSkseXo9dmEoMCwwLC41OCwxKSxXYj12YSguNDIsMCwuNTgsMSksdno9ZT0+QXJyYXkuaXNBcnJheShlKSYmdHlwZW9mIGVbMF0hPSJudW1iZXIiLEtiPWU9PkFycmF5LmlzQXJyYXkoZSkmJnR5cGVvZiBlWzBdPT0ibnVtYmVyIixneT17bGluZWFyOld0LGVhc2VJbjpneixlYXNlSW5PdXQ6V2IsZWFzZU91dDp5eixjaXJjSW46RXAsY2lyY0luT3V0OnFiLGNpcmNPdXQ6SGIsYmFja0luOlRwLGJhY2tJbk91dDpVYixiYWNrT3V0OkJiLGFudGljaXBhdGU6JGJ9LHh6PWU9PnR5cGVvZiBlPT0ic3RyaW5nIix5eT1lPT57aWYoS2IoZSkpe2pvKGUubGVuZ3RoPT09NCwiQ3ViaWMgYmV6aWVyIGFycmF5cyBtdXN0IGNvbnRhaW4gZm91ciBudW1lcmljYWwgdmFsdWVzLiIsImN1YmljLWJlemllci1sZW5ndGgiKTtjb25zdFt0LG4scixpXT1lO3JldHVybiB2YSh0LG4scixpKX1lbHNlIGlmKHh6KGUpKXJldHVybiBqbyhneVtlXSE9PXZvaWQgMCxgSW52YWxpZCBlYXNpbmcgdHlwZSAnJHtlfSdgLCJpbnZhbGlkLWVhc2luZy10eXBlIiksZ3lbZV07cmV0dXJuIGV9LEthPVsic2V0dXAiLCJyZWFkIiwicmVzb2x2ZUtleWZyYW1lcyIsInByZVVwZGF0ZSIsInVwZGF0ZSIsInByZVJlbmRlciIsInJlbmRlciIsInBvc3RSZW5kZXIiXSx2eT17dmFsdWU6bnVsbCxhZGRQcm9qZWN0aW9uTWV0cmljczpudWxsfTtmdW5jdGlvbiB3eihlLHQpe2xldCBuPW5ldyBTZXQscj1uZXcgU2V0LGk9ITEsbz0hMTtjb25zdCBzPW5ldyBXZWFrU2V0O2xldCBhPXtkZWx0YTowLHRpbWVzdGFtcDowLGlzUHJvY2Vzc2luZzohMX0sbD0wO2Z1bmN0aW9uIHUoZCl7cy5oYXMoZCkmJihjLnNjaGVkdWxlKGQpLGUoKSksbCsrLGQoYSl9Y29uc3QgYz17c2NoZWR1bGU6KGQsaD0hMSxmPSExKT0+e2NvbnN0IG09ZiYmaT9uOnI7cmV0dXJuIGgmJnMuYWRkKGQpLG0uYWRkKGQpLGR9LGNhbmNlbDpkPT57ci5kZWxldGUoZCkscy5kZWxldGUoZCl9LHByb2Nlc3M6ZD0+e2lmKGE9ZCxpKXtvPSEwO3JldHVybn1pPSEwO2NvbnN0IGg9bjtuPXIscj1oLG4uZm9yRWFjaCh1KSx0JiZ2eS52YWx1ZSYmdnkudmFsdWUuZnJhbWVsb29wW3RdLnB1c2gobCksbD0wLG4uY2xlYXIoKSxpPSExLG8mJihvPSExLGMucHJvY2VzcyhkKSl9fTtyZXR1cm4gY31jb25zdCBiej00MDtmdW5jdGlvbiBHYihlLHQpe2xldCBuPSExLHI9ITA7Y29uc3QgaT17ZGVsdGE6MCx0aW1lc3RhbXA6MCxpc1Byb2Nlc3Npbmc6ITF9LG89KCk9Pm49ITAscz1LYS5yZWR1Y2UoKHgsayk9Pih4W2tdPXd6KG8sdD9rOnZvaWQgMCkseCkse30pLHtzZXR1cDphLHJlYWQ6bCxyZXNvbHZlS2V5ZnJhbWVzOnUscHJlVXBkYXRlOmMsdXBkYXRlOmQscHJlUmVuZGVyOmgscmVuZGVyOmYscG9zdFJlbmRlcjp5fT1zLG09KCk9Pntjb25zdCB4PSRyLnVzZU1hbnVhbFRpbWluZyxrPXg\/aS50aW1lc3RhbXA6cGVyZm9ybWFuY2Uubm93KCk7bj0hMSx4fHwoaS5kZWx0YT1yPzFlMy82MDpNYXRoLm1heChNYXRoLm1pbihrLWkudGltZXN0YW1wLGJ6KSwxKSksaS50aW1lc3RhbXA9ayxpLmlzUHJvY2Vzc2luZz0hMCxhLnByb2Nlc3MoaSksbC5wcm9jZXNzKGkpLHUucHJvY2VzcyhpKSxjLnByb2Nlc3MoaSksZC5wcm9jZXNzKGkpLGgucHJvY2VzcyhpKSxmLnByb2Nlc3MoaSkseS5wcm9jZXNzKGkpLGkuaXNQcm9jZXNzaW5nPSExLG4mJnQmJihyPSExLGUobSkpfSx3PSgpPT57bj0hMCxyPSEwLGkuaXNQcm9jZXNzaW5nfHxlKG0pfTtyZXR1cm57c2NoZWR1bGU6S2EucmVkdWNlKCh4LGspPT57Y29uc3QgVD1zW2tdO3JldHVybiB4W2tdPShDLFA9ITEsQT0hMSk9PihufHx3KCksVC5zY2hlZHVsZShDLFAsQSkpLHh9LHt9KSxjYW5jZWw6eD0+e2ZvcihsZXQgaz0wO2s8S2EubGVuZ3RoO2srKylzW0thW2tdXS5jYW5jZWwoeCl9LHN0YXRlOmksc3RlcHM6c319Y29uc3R7c2NoZWR1bGU6dmUsY2FuY2VsOkhyLHN0YXRlOldlLHN0ZXBzOkJjfT1HYih0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPCJ1Ij9yZXF1ZXN0QW5pbWF0aW9uRnJhbWU6V3QsITApO2xldCBnbDtmdW5jdGlvbiBreigpe2dsPXZvaWQgMH1jb25zdCBsdD17bm93OigpPT4oZ2w9PT12b2lkIDAmJmx0LnNldChXZS5pc1Byb2Nlc3Npbmd8fCRyLnVzZU1hbnVhbFRpbWluZz9XZS50aW1lc3RhbXA6cGVyZm9ybWFuY2Uubm93KCkpLGdsKSxzZXQ6ZT0+e2dsPWUscXVldWVNaWNyb3Rhc2soa3opfX0sWWI9ZT0+dD0+dHlwZW9mIHQ9PSJzdHJpbmciJiZ0LnN0YXJ0c1dpdGgoZSksUWI9WWIoIi0tIiksU3o9WWIoInZhcigtLSIpLFBwPWU9PlN6KGUpP0N6LnRlc3QoZS5zcGxpdCgiLyoiKVswXS50cmltKCkpOiExLEN6PS92YXJcKC0tKD86W1x3LV0rXHMqfFtcdy1dK1xzKiwoPzpccypbXikoXHNdfFxzKlwoKD86W14pKF18XChbXikoXSpcKSkqXCkpK1xzKilcKSQvaXU7ZnVuY3Rpb24geHkoZSl7cmV0dXJuIHR5cGVvZiBlIT0ic3RyaW5nIj8hMTplLnNwbGl0KCIvKiIpWzBdLmluY2x1ZGVzKCJ2YXIoLS0iKX1jb25zdCBVbz17dGVzdDplPT50eXBlb2YgZT09Im51bWJlciIscGFyc2U6cGFyc2VGbG9hdCx0cmFuc2Zvcm06ZT0+ZX0sZWE9ey4uLlVvLHRyYW5zZm9ybTplPT5NbigwLDEsZSl9LEdhPXsuLi5VbyxkZWZhdWx0OjF9LGtzPWU9Pk1hdGgucm91bmQoZSoxZTUpLzFlNSxBcD0vLT8oPzpcZCsoPzpcLlxkKyk\/fFwuXGQrKS9ndTtmdW5jdGlvbiBUeihlKXtyZXR1cm4gZT09bnVsbH1jb25zdCBFej0vXig\/OiNbXGRhLWZdezMsOH18KD86cmdifGhzbClhP1woKD86LT9bXGQuXSslP1ssXHNdKyl7Mn0tP1tcZC5dKyU\/XHMqKD86WywvXVxzKik\/KD86XGJcZCsoPzpcLlxkKyk\/fFwuXGQrKT8lP1wpKSQvaXUsSXA9KGUsdCk9Pm49PiEhKHR5cGVvZiBuPT0ic3RyaW5nIiYmRXoudGVzdChuKSYmbi5zdGFydHNXaXRoKGUpfHx0JiYhVHoobikmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpKSxYYj0oZSx0LG4pPT5yPT57aWYodHlwZW9mIHIhPSJzdHJpbmciKXJldHVybiByO2NvbnN0W2ksbyxzLGFdPXIubWF0Y2goQXApO3JldHVybntbZV06cGFyc2VGbG9hdChpKSxbdF06cGFyc2VGbG9hdChvKSxbbl06cGFyc2VGbG9hdChzKSxhbHBoYTphIT09dm9pZCAwP3BhcnNlRmxvYXQoYSk6MX19LFB6PWU9Pk1uKDAsMjU1LGUpLFVjPXsuLi5Vbyx0cmFuc2Zvcm06ZT0+TWF0aC5yb3VuZChQeihlKSl9LGNpPXt0ZXN0OklwKCJyZ2IiLCJyZWQiKSxwYXJzZTpYYigicmVkIiwiZ3JlZW4iLCJibHVlIiksdHJhbnNmb3JtOih7cmVkOmUsZ3JlZW46dCxibHVlOm4sYWxwaGE6cj0xfSk9PiJyZ2JhKCIrVWMudHJhbnNmb3JtKGUpKyIsICIrVWMudHJhbnNmb3JtKHQpKyIsICIrVWMudHJhbnNmb3JtKG4pKyIsICIra3MoZWEudHJhbnNmb3JtKHIpKSsiKSJ9O2Z1bmN0aW9uIEF6KGUpe2xldCB0PSIiLG49IiIscj0iIixpPSIiO3JldHVybiBlLmxlbmd0aD41Pyh0PWUuc3Vic3RyaW5nKDEsMyksbj1lLnN1YnN0cmluZygzLDUpLHI9ZS5zdWJzdHJpbmcoNSw3KSxpPWUuc3Vic3RyaW5nKDcsOSkpOih0PWUuc3Vic3RyaW5nKDEsMiksbj1lLnN1YnN0cmluZygyLDMpLHI9ZS5zdWJzdHJpbmcoMyw0KSxpPWUuc3Vic3RyaW5nKDQsNSksdCs9dCxuKz1uLHIrPXIsaSs9aSkse3JlZDpwYXJzZUludCh0LDE2KSxncmVlbjpwYXJzZUludChuLDE2KSxibHVlOnBhcnNlSW50KHIsMTYpLGFscGhhOmk\/cGFyc2VJbnQoaSwxNikvMjU1OjF9fWNvbnN0IENmPXt0ZXN0OklwKCIjIikscGFyc2U6QXosdHJhbnNmb3JtOmNpLnRyYW5zZm9ybX0seGE9ZT0+KHt0ZXN0OnQ9PnR5cGVvZiB0PT0ic3RyaW5nIiYmdC5lbmRzV2l0aChlKSYmdC5zcGxpdCgiICIpLmxlbmd0aD09PTEscGFyc2U6cGFyc2VGbG9hdCx0cmFuc2Zvcm06dD0+YCR7dH0ke2V9YH0pLHByPXhhKCJkZWciKSx6bj14YSgiJSIpLFE9eGEoInB4IiksSXo9eGEoInZoIiksTno9eGEoInZ3Iiksd3k9ey4uLnpuLHBhcnNlOmU9PnpuLnBhcnNlKGUpLzEwMCx0cmFuc2Zvcm06ZT0+em4udHJhbnNmb3JtKGUqMTAwKX0sSmk9e3Rlc3Q6SXAoImhzbCIsImh1ZSIpLHBhcnNlOlhiKCJodWUiLCJzYXR1cmF0aW9uIiwibGlnaHRuZXNzIiksdHJhbnNmb3JtOih7aHVlOmUsc2F0dXJhdGlvbjp0LGxpZ2h0bmVzczpuLGFscGhhOnI9MX0pPT4iaHNsYSgiK01hdGgucm91bmQoZSkrIiwgIit6bi50cmFuc2Zvcm0oa3ModCkpKyIsICIrem4udHJhbnNmb3JtKGtzKG4pKSsiLCAiK2tzKGVhLnRyYW5zZm9ybShyKSkrIikifSxMZT17dGVzdDplPT5jaS50ZXN0KGUpfHxDZi50ZXN0KGUpfHxKaS50ZXN0KGUpLHBhcnNlOmU9PmNpLnRlc3QoZSk\/Y2kucGFyc2UoZSk6SmkudGVzdChlKT9KaS5wYXJzZShlKTpDZi5wYXJzZShlKSx0cmFuc2Zvcm06ZT0+dHlwZW9mIGU9PSJzdHJpbmciP2U6ZS5oYXNPd25Qcm9wZXJ0eSgicmVkIik\/Y2kudHJhbnNmb3JtKGUpOkppLnRyYW5zZm9ybShlKSxnZXRBbmltYXRhYmxlTm9uZTplPT57Y29uc3QgdD1MZS5wYXJzZShlKTtyZXR1cm4gdC5hbHBoYT0wLExlLnRyYW5zZm9ybSh0KX19LGp6PS8oPzojW1xkYS1mXXszLDh9fCg\/OnJnYnxoc2wpYT9cKCg\/Oi0\/W1xkLl0rJT9bLFxzXSspezJ9LT9bXGQuXSslP1xzKig\/OlssL11ccyopPyg\/OlxiXGQrKD86XC5cZCspP3xcLlxkKyk\/JT9cKSkvZ2l1O2Z1bmN0aW9uIHp6KGUpe3ZhciB0LG47cmV0dXJuIGlzTmFOKGUpJiZ0eXBlb2YgZT09InN0cmluZyImJigoKHQ9ZS5tYXRjaChBcCkpPT1udWxsP3ZvaWQgMDp0Lmxlbmd0aCl8fDApKygoKG49ZS5tYXRjaChqeikpPT1udWxsP3ZvaWQgMDpuLmxlbmd0aCl8fDApPjB9Y29uc3QgSmI9Im51bWJlciIsWmI9ImNvbG9yIixSej0idmFyIixEej0idmFyKCIsYnk9IiR7fSIsTXo9L3ZhclxzKlwoXHMqLS0oPzpbXHctXStccyp8W1x3LV0rXHMqLCg\/OlxzKlteKShcc118XHMqXCgoPzpbXikoXXxcKFteKShdKlwpKSpcKSkrXHMqKVwpfCNbXGRhLWZdezMsOH18KD86cmdifGhzbClhP1woKD86LT9bXGQuXSslP1ssXHNdKyl7Mn0tP1tcZC5dKyU\/XHMqKD86WywvXVxzKik\/KD86XGJcZCsoPzpcLlxkKyk\/fFwuXGQrKT8lP1wpfC0\/KD86XGQrKD86XC5cZCspP3xcLlxkKykvZ2l1O2Z1bmN0aW9uIHpvKGUpe2NvbnN0IHQ9ZS50b1N0cmluZygpLG49W10scj17Y29sb3I6W10sbnVtYmVyOltdLHZhcjpbXX0saT1bXTtsZXQgbz0wO2NvbnN0IGE9dC5yZXBsYWNlKE16LGw9PihMZS50ZXN0KGwpPyhyLmNvbG9yLnB1c2gobyksaS5wdXNoKFpiKSxuLnB1c2goTGUucGFyc2UobCkpKTpsLnN0YXJ0c1dpdGgoRHopPyhyLnZhci5wdXNoKG8pLGkucHVzaChSeiksbi5wdXNoKGwpKTooci5udW1iZXIucHVzaChvKSxpLnB1c2goSmIpLG4ucHVzaChwYXJzZUZsb2F0KGwpKSksKytvLGJ5KSkuc3BsaXQoYnkpO3JldHVybnt2YWx1ZXM6bixzcGxpdDphLGluZGV4ZXM6cix0eXBlczppfX1mdW5jdGlvbiBMeihlKXtyZXR1cm4gem8oZSkudmFsdWVzfWZ1bmN0aW9uIGVrKHtzcGxpdDplLHR5cGVzOnR9KXtjb25zdCBuPWUubGVuZ3RoO3JldHVybiByPT57bGV0IGk9IiI7Zm9yKGxldCBvPTA7bzxuO28rKylpZihpKz1lW29dLHJbb10hPT12b2lkIDApe2NvbnN0IHM9dFtvXTtzPT09SmI\/aSs9a3MocltvXSk6cz09PVpiP2krPUxlLnRyYW5zZm9ybShyW29dKTppKz1yW29dfXJldHVybiBpfX1mdW5jdGlvbiBPeihlKXtyZXR1cm4gZWsoem8oZSkpfWNvbnN0IEZ6PWU9PnR5cGVvZiBlPT0ibnVtYmVyIj8wOkxlLnRlc3QoZSk\/TGUuZ2V0QW5pbWF0YWJsZU5vbmUoZSk6ZSxfej0oZSx0KT0+dHlwZW9mIGU9PSJudW1iZXIiP3QhPW51bGwmJnQudHJpbSgpLmVuZHNXaXRoKCIvIik\/ZTowOkZ6KGUpO2Z1bmN0aW9uIFZ6KGUpe2NvbnN0IHQ9em8oZSk7cmV0dXJuIGVrKHQpKHQudmFsdWVzLm1hcCgocixpKT0+X3oocix0LnNwbGl0W2ldKSkpfWNvbnN0IGZuPXt0ZXN0Onp6LHBhcnNlOkx6LGNyZWF0ZVRyYW5zZm9ybWVyOk96LGdldEFuaW1hdGFibGVOb25lOlZ6fTtmdW5jdGlvbiAkYyhlLHQsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmKG4tPTEpLG48MS82P2UrKHQtZSkqNipuOm48MS8yP3Q6bjwyLzM\/ZSsodC1lKSooMi8zLW4pKjY6ZX1mdW5jdGlvbiBCeih7aHVlOmUsc2F0dXJhdGlvbjp0LGxpZ2h0bmVzczpuLGFscGhhOnJ9KXtlLz0zNjAsdC89MTAwLG4vPTEwMDtsZXQgaT0wLG89MCxzPTA7aWYoIXQpaT1vPXM9bjtlbHNle2NvbnN0IGE9bjwuNT9uKigxK3QpOm4rdC1uKnQsbD0yKm4tYTtpPSRjKGwsYSxlKzEvMyksbz0kYyhsLGEsZSkscz0kYyhsLGEsZS0xLzMpfXJldHVybntyZWQ6TWF0aC5yb3VuZChpKjI1NSksZ3JlZW46TWF0aC5yb3VuZChvKjI1NSksYmx1ZTpNYXRoLnJvdW5kKHMqMjU1KSxhbHBoYTpyfX1mdW5jdGlvbiBvdShlLHQpe3JldHVybiBuPT5uPjA\/dDplfWNvbnN0IFBlPShlLHQsbik9PmUrKHQtZSkqbixIYz0oZSx0LG4pPT57Y29uc3Qgcj1lKmUsaT1uKih0KnQtcikrcjtyZXR1cm4gaTwwPzA6TWF0aC5zcXJ0KGkpfSxVej1bQ2YsY2ksSmldLCR6PWU9PlV6LmZpbmQodD0+dC50ZXN0KGUpKTtmdW5jdGlvbiBreShlKXtjb25zdCB0PSR6KGUpO2lmKHF1KCEhdCxgJyR7ZX0nIGlzIG5vdCBhbiBhbmltYXRhYmxlIGNvbG9yLiBVc2UgdGhlIGVxdWl2YWxlbnQgY29sb3IgY29kZSBpbnN0ZWFkLmAsImNvbG9yLW5vdC1hbmltYXRhYmxlIiksIXQpcmV0dXJuITE7bGV0IG49dC5wYXJzZShlKTtyZXR1cm4gdD09PUppJiYobj1CeihuKSksbn1jb25zdCBTeT0oZSx0KT0+e2NvbnN0IG49a3koZSkscj1reSh0KTtpZighbnx8IXIpcmV0dXJuIG91KGUsdCk7Y29uc3QgaT17Li4ubn07cmV0dXJuIG89PihpLnJlZD1IYyhuLnJlZCxyLnJlZCxvKSxpLmdyZWVuPUhjKG4uZ3JlZW4sci5ncmVlbixvKSxpLmJsdWU9SGMobi5ibHVlLHIuYmx1ZSxvKSxpLmFscGhhPVBlKG4uYWxwaGEsci5hbHBoYSxvKSxjaS50cmFuc2Zvcm0oaSkpfSxUZj1uZXcgU2V0KFsibm9uZSIsImhpZGRlbiJdKTtmdW5jdGlvbiBIeihlLHQpe3JldHVybiBUZi5oYXMoZSk\/bj0+bjw9MD9lOnQ6bj0+bj49MT90OmV9ZnVuY3Rpb24gcXooZSx0KXtyZXR1cm4gbj0+UGUoZSx0LG4pfWZ1bmN0aW9uIE5wKGUpe3JldHVybiB0eXBlb2YgZT09Im51bWJlciI\/cXo6dHlwZW9mIGU9PSJzdHJpbmciP1BwKGUpP291OkxlLnRlc3QoZSk\/U3k6R3o6QXJyYXkuaXNBcnJheShlKT90azp0eXBlb2YgZT09Im9iamVjdCI\/TGUudGVzdChlKT9TeTpXejpvdX1mdW5jdGlvbiB0ayhlLHQpe2NvbnN0IG49Wy4uLmVdLHI9bi5sZW5ndGgsaT1lLm1hcCgobyxzKT0+TnAobykobyx0W3NdKSk7cmV0dXJuIG89Pntmb3IobGV0IHM9MDtzPHI7cysrKW5bc109aVtzXShvKTtyZXR1cm4gbn19ZnVuY3Rpb24gV3ooZSx0KXtjb25zdCBuPXsuLi5lLC4uLnR9LHI9e307Zm9yKGNvbnN0IGkgaW4gbillW2ldIT09dm9pZCAwJiZ0W2ldIT09dm9pZCAwJiYocltpXT1OcChlW2ldKShlW2ldLHRbaV0pKTtyZXR1cm4gaT0+e2Zvcihjb25zdCBvIGluIHIpbltvXT1yW29dKGkpO3JldHVybiBufX1mdW5jdGlvbiBLeihlLHQpe2NvbnN0IG49W10scj17Y29sb3I6MCx2YXI6MCxudW1iZXI6MH07Zm9yKGxldCBpPTA7aTx0LnZhbHVlcy5sZW5ndGg7aSsrKXtjb25zdCBvPXQudHlwZXNbaV0scz1lLmluZGV4ZXNbb11bcltvXV0sYT1lLnZhbHVlc1tzXT8\/MDtuW2ldPWEscltvXSsrfXJldHVybiBufWNvbnN0IEd6PShlLHQpPT57Y29uc3Qgbj1mbi5jcmVhdGVUcmFuc2Zvcm1lcih0KSxyPXpvKGUpLGk9em8odCk7cmV0dXJuIHIuaW5kZXhlcy52YXIubGVuZ3RoPT09aS5pbmRleGVzLnZhci5sZW5ndGgmJnIuaW5kZXhlcy5jb2xvci5sZW5ndGg9PT1pLmluZGV4ZXMuY29sb3IubGVuZ3RoJiZyLmluZGV4ZXMubnVtYmVyLmxlbmd0aD49aS5pbmRleGVzLm51bWJlci5sZW5ndGg\/VGYuaGFzKGUpJiYhaS52YWx1ZXMubGVuZ3RofHxUZi5oYXModCkmJiFyLnZhbHVlcy5sZW5ndGg\/SHooZSx0KTp5YSh0ayhLeihyLGkpLGkudmFsdWVzKSxuKToocXUoITAsYENvbXBsZXggdmFsdWVzICcke2V9JyBhbmQgJyR7dH0nIHRvbyBkaWZmZXJlbnQgdG8gbWl4LiBFbnN1cmUgYWxsIGNvbG9ycyBhcmUgb2YgdGhlIHNhbWUgdHlwZSwgYW5kIHRoYXQgZWFjaCBjb250YWlucyB0aGUgc2FtZSBxdWFudGl0eSBvZiBudW1iZXIgYW5kIGNvbG9yIHZhbHVlcy4gRmFsbGluZyBiYWNrIHRvIGluc3RhbnQgdHJhbnNpdGlvbi5gLCJjb21wbGV4LXZhbHVlcy1kaWZmZXJlbnQiKSxvdShlLHQpKX07ZnVuY3Rpb24gbmsoZSx0LG4pe3JldHVybiB0eXBlb2YgZT09Im51bWJlciImJnR5cGVvZiB0PT0ibnVtYmVyIiYmdHlwZW9mIG49PSJudW1iZXIiP1BlKGUsdCxuKTpOcChlKShlLHQpfWNvbnN0IFl6PWU9Pntjb25zdCB0PSh7dGltZXN0YW1wOm59KT0+ZShuKTtyZXR1cm57c3RhcnQ6KG49ITApPT52ZS51cGRhdGUodCxuKSxzdG9wOigpPT5Icih0KSxub3c6KCk9PldlLmlzUHJvY2Vzc2luZz9XZS50aW1lc3RhbXA6bHQubm93KCl9fSxyaz0oZSx0LG49MTApPT57bGV0IHI9IiI7Y29uc3QgaT1NYXRoLm1heChNYXRoLnJvdW5kKHQvbiksMik7Zm9yKGxldCBvPTA7bzxpO28rKylyKz1NYXRoLnJvdW5kKGUoby8oaS0xKSkqMWU0KS8xZTQrIiwgIjtyZXR1cm5gbGluZWFyKCR7ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC0yKX0pYH0sc3U9MmU0O2Z1bmN0aW9uIGpwKGUpe2xldCB0PTA7Y29uc3Qgbj01MDtsZXQgcj1lLm5leHQodCk7Zm9yKDshci5kb25lJiZ0PHN1Oyl0Kz1uLHI9ZS5uZXh0KHQpO3JldHVybiB0Pj1zdT8xLzA6dH1mdW5jdGlvbiBReihlLHQ9MTAwLG4pe2NvbnN0IHI9bih7Li4uZSxrZXlmcmFtZXM6WzAsdF19KSxpPU1hdGgubWluKGpwKHIpLHN1KTtyZXR1cm57dHlwZToia2V5ZnJhbWVzIixlYXNlOm89PnIubmV4dChpKm8pLnZhbHVlL3QsZHVyYXRpb246SHQoaSl9fWNvbnN0IFRlPXtzdGlmZm5lc3M6MTAwLGRhbXBpbmc6MTAsbWFzczoxLHZlbG9jaXR5OjAsZHVyYXRpb246ODAwLGJvdW5jZTouMyx2aXN1YWxEdXJhdGlvbjouMyxyZXN0U3BlZWQ6e2dyYW51bGFyOi4wMSxkZWZhdWx0OjJ9LHJlc3REZWx0YTp7Z3JhbnVsYXI6LjAwNSxkZWZhdWx0Oi41fSxtaW5EdXJhdGlvbjouMDEsbWF4RHVyYXRpb246MTAsbWluRGFtcGluZzouMDUsbWF4RGFtcGluZzoxfTtmdW5jdGlvbiBFZihlLHQpe3JldHVybiBlKk1hdGguc3FydCgxLXQqdCl9Y29uc3QgWHo9MTI7ZnVuY3Rpb24gSnooZSx0LG4pe2xldCByPW47Zm9yKGxldCBpPTE7aTxYejtpKyspcj1yLWUocikvdChyKTtyZXR1cm4gcn1jb25zdCBxYz0uMDAxO2Z1bmN0aW9uIFp6KHtkdXJhdGlvbjplPVRlLmR1cmF0aW9uLGJvdW5jZTp0PVRlLmJvdW5jZSx2ZWxvY2l0eTpuPVRlLnZlbG9jaXR5LG1hc3M6cj1UZS5tYXNzfSl7bGV0IGksbztxdShlPD1idChUZS5tYXhEdXJhdGlvbiksIlNwcmluZyBkdXJhdGlvbiBtdXN0IGJlIDEwIHNlY29uZHMgb3IgbGVzcyIsInNwcmluZy1kdXJhdGlvbi1saW1pdCIpO2xldCBzPTEtdDtzPU1uKFRlLm1pbkRhbXBpbmcsVGUubWF4RGFtcGluZyxzKSxlPU1uKFRlLm1pbkR1cmF0aW9uLFRlLm1heER1cmF0aW9uLEh0KGUpKSxzPDE\/KGk9dT0+e2NvbnN0IGM9dSpzLGQ9YyplLGg9Yy1uLGY9RWYodSxzKSx5PU1hdGguZXhwKC1kKTtyZXR1cm4gcWMtaC9mKnl9LG89dT0+e2NvbnN0IGQ9dSpzKmUsaD1kKm4rbixmPU1hdGgucG93KHMsMikqTWF0aC5wb3codSwyKSplLHk9TWF0aC5leHAoLWQpLG09RWYoTWF0aC5wb3codSwyKSxzKTtyZXR1cm4oLWkodSkrcWM+MD8tMToxKSooKGgtZikqeSkvbX0pOihpPXU9Pntjb25zdCBjPU1hdGguZXhwKC11KmUpLGQ9KHUtbikqZSsxO3JldHVybi1xYytjKmR9LG89dT0+e2NvbnN0IGM9TWF0aC5leHAoLXUqZSksZD0obi11KSooZSplKTtyZXR1cm4gYypkfSk7Y29uc3QgYT01L2UsbD1KeihpLG8sYSk7aWYoZT1idChlKSxpc05hTihsKSlyZXR1cm57c3RpZmZuZXNzOlRlLnN0aWZmbmVzcyxkYW1waW5nOlRlLmRhbXBpbmcsZHVyYXRpb246ZX07e2NvbnN0IHU9TWF0aC5wb3cobCwyKSpyO3JldHVybntzdGlmZm5lc3M6dSxkYW1waW5nOnMqMipNYXRoLnNxcnQocip1KSxkdXJhdGlvbjplfX19Y29uc3QgZVI9WyJkdXJhdGlvbiIsImJvdW5jZSJdLHRSPVsic3RpZmZuZXNzIiwiZGFtcGluZyIsIm1hc3MiXTtmdW5jdGlvbiBDeShlLHQpe3JldHVybiB0LnNvbWUobj0+ZVtuXSE9PXZvaWQgMCl9ZnVuY3Rpb24gblIoZSl7bGV0IHQ9e3ZlbG9jaXR5OlRlLnZlbG9jaXR5LHN0aWZmbmVzczpUZS5zdGlmZm5lc3MsZGFtcGluZzpUZS5kYW1waW5nLG1hc3M6VGUubWFzcyxpc1Jlc29sdmVkRnJvbUR1cmF0aW9uOiExLC4uLmV9O2lmKCFDeShlLHRSKSYmQ3koZSxlUikpaWYodC52ZWxvY2l0eT0wLGUudmlzdWFsRHVyYXRpb24pe2NvbnN0IG49ZS52aXN1YWxEdXJhdGlvbixyPTIqTWF0aC5QSS8obioxLjIpLGk9cipyLG89MipNbiguMDUsMSwxLShlLmJvdW5jZXx8MCkpKk1hdGguc3FydChpKTt0PXsuLi50LG1hc3M6VGUubWFzcyxzdGlmZm5lc3M6aSxkYW1waW5nOm99fWVsc2V7Y29uc3Qgbj1aeih7Li4uZSx2ZWxvY2l0eTowfSk7dD17Li4udCwuLi5uLG1hc3M6VGUubWFzc30sdC5pc1Jlc29sdmVkRnJvbUR1cmF0aW9uPSEwfXJldHVybiB0fWZ1bmN0aW9uIGF1KGU9VGUudmlzdWFsRHVyYXRpb24sdD1UZS5ib3VuY2Upe2NvbnN0IG49dHlwZW9mIGUhPSJvYmplY3QiP3t2aXN1YWxEdXJhdGlvbjplLGtleWZyYW1lczpbMCwxXSxib3VuY2U6dH06ZTtsZXR7cmVzdFNwZWVkOnIscmVzdERlbHRhOml9PW47Y29uc3Qgbz1uLmtleWZyYW1lc1swXSxzPW4ua2V5ZnJhbWVzW24ua2V5ZnJhbWVzLmxlbmd0aC0xXSxhPXtkb25lOiExLHZhbHVlOm99LHtzdGlmZm5lc3M6bCxkYW1waW5nOnUsbWFzczpjLGR1cmF0aW9uOmQsdmVsb2NpdHk6aCxpc1Jlc29sdmVkRnJvbUR1cmF0aW9uOmZ9PW5SKHsuLi5uLHZlbG9jaXR5Oi1IdChuLnZlbG9jaXR5fHwwKX0pLHk9aHx8MCxtPXUvKDIqTWF0aC5zcXJ0KGwqYykpLHc9cy1vLHA9SHQoTWF0aC5zcXJ0KGwvYykpLHY9TWF0aC5hYnModyk8NTtyfHwocj12P1RlLnJlc3RTcGVlZC5ncmFudWxhcjpUZS5yZXN0U3BlZWQuZGVmYXVsdCksaXx8KGk9dj9UZS5yZXN0RGVsdGEuZ3JhbnVsYXI6VGUucmVzdERlbHRhLmRlZmF1bHQpO2xldCB4LGssVCxDLFAsQTtpZihtPDEpVD1FZihwLG0pLEM9KHkrbSpwKncpL1QseD1JPT57Y29uc3QgTT1NYXRoLmV4cCgtbSpwKkkpO3JldHVybiBzLU0qKEMqTWF0aC5zaW4oVCpJKSt3Kk1hdGguY29zKFQqSSkpfSxQPW0qcCpDK3cqVCxBPW0qcCp3LUMqVCxrPUk9Pk1hdGguZXhwKC1tKnAqSSkqKFAqTWF0aC5zaW4oVCpJKStBKk1hdGguY29zKFQqSSkpO2Vsc2UgaWYobT09PTEpe3g9TT0+cy1NYXRoLmV4cCgtcCpNKSoodysoeStwKncpKk0pO2NvbnN0IEk9eStwKnc7az1NPT5NYXRoLmV4cCgtcCpNKSoocCpJKk0teSl9ZWxzZXtjb25zdCBJPXAqTWF0aC5zcXJ0KG0qbS0xKTt4PU89Pntjb25zdCBVPU1hdGguZXhwKC1tKnAqTyksSD1NYXRoLm1pbihJKk8sMzAwKTtyZXR1cm4gcy1VKigoeSttKnAqdykqTWF0aC5zaW5oKEgpK0kqdypNYXRoLmNvc2goSCkpL0l9O2NvbnN0IE09KHkrbSpwKncpL0ksej1tKnAqTS13KkksJD1tKnAqdy1NKkk7az1PPT57Y29uc3QgVT1NYXRoLmV4cCgtbSpwKk8pLEg9TWF0aC5taW4oSSpPLDMwMCk7cmV0dXJuIFUqKHoqTWF0aC5zaW5oKEgpKyQqTWF0aC5jb3NoKEgpKX19Y29uc3Qgaj17Y2FsY3VsYXRlZER1cmF0aW9uOmYmJmR8fG51bGwsdmVsb2NpdHk6ST0+YnQoayhJKSksbmV4dDpJPT57aWYoIWYmJm08MSl7Y29uc3Qgej1NYXRoLmV4cCgtbSpwKkkpLCQ9TWF0aC5zaW4oVCpJKSxPPU1hdGguY29zKFQqSSksVT1zLXoqKEMqJCt3Kk8pLEg9YnQoeiooUCokK0EqTykpO3JldHVybiBhLmRvbmU9TWF0aC5hYnMoSCk8PXImJk1hdGguYWJzKHMtVSk8PWksYS52YWx1ZT1hLmRvbmU\/czpVLGF9Y29uc3QgTT14KEkpO2lmKGYpYS5kb25lPUk+PWQ7ZWxzZXtjb25zdCB6PWJ0KGsoSSkpO2EuZG9uZT1NYXRoLmFicyh6KTw9ciYmTWF0aC5hYnMocy1NKTw9aX1yZXR1cm4gYS52YWx1ZT1hLmRvbmU\/czpNLGF9LHRvU3RyaW5nOigpPT57Y29uc3QgST1NYXRoLm1pbihqcChqKSxzdSksTT1yayh6PT5qLm5leHQoSSp6KS52YWx1ZSxJLDMwKTtyZXR1cm4gSSsibXMgIitNfSx0b1RyYW5zaXRpb246KCk9Pnt9fTtyZXR1cm4gan1hdS5hcHBseVRvT3B0aW9ucz1lPT57Y29uc3QgdD1ReihlLDEwMCxhdSk7cmV0dXJuIGUuZWFzZT10LmVhc2UsZS5kdXJhdGlvbj1idCh0LmR1cmF0aW9uKSxlLnR5cGU9ImtleWZyYW1lcyIsZX07Y29uc3QgclI9NTtmdW5jdGlvbiBpayhlLHQsbil7Y29uc3Qgcj1NYXRoLm1heCh0LXJSLDApO3JldHVybiBPYihuLWUociksdC1yKX1mdW5jdGlvbiBQZih7a2V5ZnJhbWVzOmUsdmVsb2NpdHk6dD0wLHBvd2VyOm49LjgsdGltZUNvbnN0YW50OnI9MzI1LGJvdW5jZURhbXBpbmc6aT0xMCxib3VuY2VTdGlmZm5lc3M6bz01MDAsbW9kaWZ5VGFyZ2V0OnMsbWluOmEsbWF4OmwscmVzdERlbHRhOnU9LjUscmVzdFNwZWVkOmN9KXtjb25zdCBkPWVbMF0saD17ZG9uZTohMSx2YWx1ZTpkfSxmPUE9PmEhPT12b2lkIDAmJkE8YXx8bCE9PXZvaWQgMCYmQT5sLHk9QT0+YT09PXZvaWQgMD9sOmw9PT12b2lkIDB8fE1hdGguYWJzKGEtQSk8TWF0aC5hYnMobC1BKT9hOmw7bGV0IG09bip0O2NvbnN0IHc9ZCttLHA9cz09PXZvaWQgMD93OnModyk7cCE9PXcmJihtPXAtZCk7Y29uc3Qgdj1BPT4tbSpNYXRoLmV4cCgtQS9yKSx4PUE9PnArdihBKSxrPUE9Pntjb25zdCBqPXYoQSksST14KEEpO2guZG9uZT1NYXRoLmFicyhqKTw9dSxoLnZhbHVlPWguZG9uZT9wOkl9O2xldCBULEM7Y29uc3QgUD1BPT57ZihoLnZhbHVlKSYmKFQ9QSxDPWF1KHtrZXlmcmFtZXM6W2gudmFsdWUseShoLnZhbHVlKV0sdmVsb2NpdHk6aWsoeCxBLGgudmFsdWUpLGRhbXBpbmc6aSxzdGlmZm5lc3M6byxyZXN0RGVsdGE6dSxyZXN0U3BlZWQ6Y30pKX07cmV0dXJuIFAoMCkse2NhbGN1bGF0ZWREdXJhdGlvbjpudWxsLG5leHQ6QT0+e2xldCBqPSExO3JldHVybiFDJiZUPT09dm9pZCAwJiYoaj0hMCxrKEEpLFAoQSkpLFQhPT12b2lkIDAmJkE+PVQ\/Qy5uZXh0KEEtVCk6KCFqJiZrKEEpLGgpfX19ZnVuY3Rpb24gaVIoZSx0LG4pe2NvbnN0IHI9W10saT1ufHwkci5taXh8fG5rLG89ZS5sZW5ndGgtMTtmb3IobGV0IHM9MDtzPG87cysrKXtsZXQgYT1pKGVbc10sZVtzKzFdKTtpZih0KXtjb25zdCBsPUFycmF5LmlzQXJyYXkodCk\/dFtzXXx8V3Q6dDthPXlhKGwsYSl9ci5wdXNoKGEpfXJldHVybiByfWZ1bmN0aW9uIG9SKGUsdCx7Y2xhbXA6bj0hMCxlYXNlOnIsbWl4ZXI6aX09e30pe2NvbnN0IG89ZS5sZW5ndGg7aWYoam8obz09PXQubGVuZ3RoLCJCb3RoIGlucHV0IGFuZCBvdXRwdXQgcmFuZ2VzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIiwicmFuZ2UtbGVuZ3RoIiksbz09PTEpcmV0dXJuKCk9PnRbMF07aWYobz09PTImJnRbMF09PT10WzFdKXJldHVybigpPT50WzFdO2NvbnN0IHM9ZVswXT09PWVbMV07ZVswXT5lW28tMV0mJihlPVsuLi5lXS5yZXZlcnNlKCksdD1bLi4udF0ucmV2ZXJzZSgpKTtjb25zdCBhPWlSKHQscixpKSxsPWEubGVuZ3RoLHU9Yz0+e2lmKHMmJmM8ZVswXSlyZXR1cm4gdFswXTtsZXQgZD0wO2lmKGw+MSlmb3IoO2Q8ZS5sZW5ndGgtMiYmIShjPGVbZCsxXSk7ZCsrKTtjb25zdCBoPVpzKGVbZF0sZVtkKzFdLGMpO3JldHVybiBhW2RdKGgpfTtyZXR1cm4gbj9jPT51KE1uKGVbMF0sZVtvLTFdLGMpKTp1fWZ1bmN0aW9uIHNSKGUsdCl7Y29uc3Qgbj1lW2UubGVuZ3RoLTFdO2ZvcihsZXQgcj0xO3I8PXQ7cisrKXtjb25zdCBpPVpzKDAsdCxyKTtlLnB1c2goUGUobiwxLGkpKX19ZnVuY3Rpb24gYVIoZSl7Y29uc3QgdD1bMF07cmV0dXJuIHNSKHQsZS5sZW5ndGgtMSksdH1mdW5jdGlvbiBsUihlLHQpe3JldHVybiBlLm1hcChuPT5uKnQpfWZ1bmN0aW9uIHVSKGUsdCl7cmV0dXJuIGUubWFwKCgpPT50fHxXYikuc3BsaWNlKDAsZS5sZW5ndGgtMSl9ZnVuY3Rpb24gU3Moe2R1cmF0aW9uOmU9MzAwLGtleWZyYW1lczp0LHRpbWVzOm4sZWFzZTpyPSJlYXNlSW5PdXQifSl7Y29uc3QgaT12eihyKT9yLm1hcCh5eSk6eXkociksbz17ZG9uZTohMSx2YWx1ZTp0WzBdfSxzPWxSKG4mJm4ubGVuZ3RoPT09dC5sZW5ndGg\/bjphUih0KSxlKSxhPW9SKHMsdCx7ZWFzZTpBcnJheS5pc0FycmF5KGkpP2k6dVIodCxpKX0pO3JldHVybntjYWxjdWxhdGVkRHVyYXRpb246ZSxuZXh0Omw9PihvLnZhbHVlPWEobCksby5kb25lPWw+PWUsbyl9fWNvbnN0IGNSPWU9PmUhPT1udWxsO2Z1bmN0aW9uIHpwKGUse3JlcGVhdDp0LHJlcGVhdFR5cGU6bj0ibG9vcCJ9LHIsaT0xKXtjb25zdCBvPWUuZmlsdGVyKGNSKSxhPWk8MHx8dCYmbiE9PSJsb29wIiYmdCUyPT09MT8wOm8ubGVuZ3RoLTE7cmV0dXJuIWF8fHI9PT12b2lkIDA\/b1thXTpyfWNvbnN0IGRSPXtkZWNheTpQZixpbmVydGlhOlBmLHR3ZWVuOlNzLGtleWZyYW1lczpTcyxzcHJpbmc6YXV9O2Z1bmN0aW9uIG9rKGUpe3R5cGVvZiBlLnR5cGU9PSJzdHJpbmciJiYoZS50eXBlPWRSW2UudHlwZV0pfWNsYXNzIFJwe2NvbnN0cnVjdG9yKCl7dGhpcy51cGRhdGVGaW5pc2hlZCgpfWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9maW5pc2hlZH11cGRhdGVGaW5pc2hlZCgpe3RoaXMuX2ZpbmlzaGVkPW5ldyBQcm9taXNlKHQ9Pnt0aGlzLnJlc29sdmU9dH0pfW5vdGlmeUZpbmlzaGVkKCl7dGhpcy5yZXNvbHZlKCl9dGhlbih0LG4pe3JldHVybiB0aGlzLmZpbmlzaGVkLnRoZW4odCxuKX19Y29uc3QgZlI9ZT0+ZS8xMDA7Y2xhc3MgRHAgZXh0ZW5kcyBScHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuc3RhdGU9ImlkbGUiLHRoaXMuc3RhcnRUaW1lPW51bGwsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5jdXJyZW50VGltZT0wLHRoaXMuaG9sZFRpbWU9bnVsbCx0aGlzLnBsYXliYWNrU3BlZWQ9MSx0aGlzLnN0b3A9KCk9Pnt2YXIgcixpO2NvbnN0e21vdGlvblZhbHVlOm59PXRoaXMub3B0aW9ucztuJiZuLnVwZGF0ZWRBdCE9PWx0Lm5vdygpJiZ0aGlzLnRpY2sobHQubm93KCkpLHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuc3RhdGUhPT0iaWRsZSImJih0aGlzLnRlYXJkb3duKCksKGk9KHI9dGhpcy5vcHRpb25zKS5vblN0b3ApPT1udWxsfHxpLmNhbGwocikpfSx0aGlzLm9wdGlvbnM9dCx0aGlzLmluaXRBbmltYXRpb24oKSx0aGlzLnBsYXkoKSx0LmF1dG9wbGF5PT09ITEmJnRoaXMucGF1c2UoKX1pbml0QW5pbWF0aW9uKCl7Y29uc3R7b3B0aW9uczp0fT10aGlzO29rKHQpO2NvbnN0e3R5cGU6bj1TcyxyZXBlYXQ6cj0wLHJlcGVhdERlbGF5Omk9MCxyZXBlYXRUeXBlOm8sdmVsb2NpdHk6cz0wfT10O2xldHtrZXlmcmFtZXM6YX09dDtjb25zdCBsPW58fFNzO2whPT1TcyYmdHlwZW9mIGFbMF0hPSJudW1iZXIiJiYodGhpcy5taXhLZXlmcmFtZXM9eWEoZlIsbmsoYVswXSxhWzFdKSksYT1bMCwxMDBdKTtjb25zdCB1PWwoey4uLnQsa2V5ZnJhbWVzOmF9KTtvPT09Im1pcnJvciImJih0aGlzLm1pcnJvcmVkR2VuZXJhdG9yPWwoey4uLnQsa2V5ZnJhbWVzOlsuLi5hXS5yZXZlcnNlKCksdmVsb2NpdHk6LXN9KSksdS5jYWxjdWxhdGVkRHVyYXRpb249PT1udWxsJiYodS5jYWxjdWxhdGVkRHVyYXRpb249anAodSkpO2NvbnN0e2NhbGN1bGF0ZWREdXJhdGlvbjpjfT11O3RoaXMuY2FsY3VsYXRlZER1cmF0aW9uPWMsdGhpcy5yZXNvbHZlZER1cmF0aW9uPWMraSx0aGlzLnRvdGFsRHVyYXRpb249dGhpcy5yZXNvbHZlZER1cmF0aW9uKihyKzEpLWksdGhpcy5nZW5lcmF0b3I9dX11cGRhdGVUaW1lKHQpe2NvbnN0IG49TWF0aC5yb3VuZCh0LXRoaXMuc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrU3BlZWQ7dGhpcy5ob2xkVGltZSE9PW51bGw\/dGhpcy5jdXJyZW50VGltZT10aGlzLmhvbGRUaW1lOnRoaXMuY3VycmVudFRpbWU9bn10aWNrKHQsbj0hMSl7Y29uc3R7Z2VuZXJhdG9yOnIsdG90YWxEdXJhdGlvbjppLG1peEtleWZyYW1lczpvLG1pcnJvcmVkR2VuZXJhdG9yOnMscmVzb2x2ZWREdXJhdGlvbjphLGNhbGN1bGF0ZWREdXJhdGlvbjpsfT10aGlzO2lmKHRoaXMuc3RhcnRUaW1lPT09bnVsbClyZXR1cm4gci5uZXh0KDApO2NvbnN0e2RlbGF5OnU9MCxrZXlmcmFtZXM6YyxyZXBlYXQ6ZCxyZXBlYXRUeXBlOmgscmVwZWF0RGVsYXk6Zix0eXBlOnksb25VcGRhdGU6bSxmaW5hbEtleWZyYW1lOnd9PXRoaXMub3B0aW9uczt0aGlzLnNwZWVkPjA\/dGhpcy5zdGFydFRpbWU9TWF0aC5taW4odGhpcy5zdGFydFRpbWUsdCk6dGhpcy5zcGVlZDwwJiYodGhpcy5zdGFydFRpbWU9TWF0aC5taW4odC1pL3RoaXMuc3BlZWQsdGhpcy5zdGFydFRpbWUpKSxuP3RoaXMuY3VycmVudFRpbWU9dDp0aGlzLnVwZGF0ZVRpbWUodCk7Y29uc3QgcD10aGlzLmN1cnJlbnRUaW1lLXUqKHRoaXMucGxheWJhY2tTcGVlZD49MD8xOi0xKSx2PXRoaXMucGxheWJhY2tTcGVlZD49MD9wPDA6cD5pO3RoaXMuY3VycmVudFRpbWU9TWF0aC5tYXgocCwwKSx0aGlzLnN0YXRlPT09ImZpbmlzaGVkIiYmdGhpcy5ob2xkVGltZT09PW51bGwmJih0aGlzLmN1cnJlbnRUaW1lPWkpO2xldCB4PXRoaXMuY3VycmVudFRpbWUsaz1yO2lmKGQpe2NvbnN0IEE9TWF0aC5taW4odGhpcy5jdXJyZW50VGltZSxpKS9hO2xldCBqPU1hdGguZmxvb3IoQSksST1BJTE7IUkmJkE+PTEmJihJPTEpLEk9PT0xJiZqLS0saj1NYXRoLm1pbihqLGQrMSksISEoaiUyKSYmKGg9PT0icmV2ZXJzZSI\/KEk9MS1JLGYmJihJLT1mL2EpKTpoPT09Im1pcnJvciImJihrPXMpKSx4PU1uKDAsMSxJKSphfWNvbnN0IFQ9dj97ZG9uZTohMSx2YWx1ZTpjWzBdfTprLm5leHQoeCk7byYmIXYmJihULnZhbHVlPW8oVC52YWx1ZSkpO2xldHtkb25lOkN9PVQ7IXYmJmwhPT1udWxsJiYoQz10aGlzLnBsYXliYWNrU3BlZWQ+PTA\/dGhpcy5jdXJyZW50VGltZT49aTp0aGlzLmN1cnJlbnRUaW1lPD0wKTtjb25zdCBQPXRoaXMuaG9sZFRpbWU9PT1udWxsJiYodGhpcy5zdGF0ZT09PSJmaW5pc2hlZCJ8fHRoaXMuc3RhdGU9PT0icnVubmluZyImJkMpO3JldHVybiBQJiZ5IT09UGYmJihULnZhbHVlPXpwKGMsdGhpcy5vcHRpb25zLHcsdGhpcy5zcGVlZCkpLG0mJm0oVC52YWx1ZSksUCYmdGhpcy5maW5pc2goKSxUfXRoZW4odCxuKXtyZXR1cm4gdGhpcy5maW5pc2hlZC50aGVuKHQsbil9Z2V0IGR1cmF0aW9uKCl7cmV0dXJuIEh0KHRoaXMuY2FsY3VsYXRlZER1cmF0aW9uKX1nZXQgaXRlcmF0aW9uRHVyYXRpb24oKXtjb25zdHtkZWxheTp0PTB9PXRoaXMub3B0aW9uc3x8e307cmV0dXJuIHRoaXMuZHVyYXRpb24rSHQodCl9Z2V0IHRpbWUoKXtyZXR1cm4gSHQodGhpcy5jdXJyZW50VGltZSl9c2V0IHRpbWUodCl7dD1idCh0KSx0aGlzLmN1cnJlbnRUaW1lPXQsdGhpcy5zdGFydFRpbWU9PT1udWxsfHx0aGlzLmhvbGRUaW1lIT09bnVsbHx8dGhpcy5wbGF5YmFja1NwZWVkPT09MD90aGlzLmhvbGRUaW1lPXQ6dGhpcy5kcml2ZXImJih0aGlzLnN0YXJ0VGltZT10aGlzLmRyaXZlci5ub3coKS10L3RoaXMucGxheWJhY2tTcGVlZCksdGhpcy5kcml2ZXI\/dGhpcy5kcml2ZXIuc3RhcnQoITEpOih0aGlzLnN0YXJ0VGltZT0wLHRoaXMuc3RhdGU9InBhdXNlZCIsdGhpcy5ob2xkVGltZT10LHRoaXMudGljayh0KSl9Z2V0R2VuZXJhdG9yVmVsb2NpdHkoKXtjb25zdCB0PXRoaXMuY3VycmVudFRpbWU7aWYodDw9MClyZXR1cm4gdGhpcy5vcHRpb25zLnZlbG9jaXR5fHwwO2lmKHRoaXMuZ2VuZXJhdG9yLnZlbG9jaXR5KXJldHVybiB0aGlzLmdlbmVyYXRvci52ZWxvY2l0eSh0KTtjb25zdCBuPXRoaXMuZ2VuZXJhdG9yLm5leHQodCkudmFsdWU7cmV0dXJuIGlrKHI9PnRoaXMuZ2VuZXJhdG9yLm5leHQocikudmFsdWUsdCxuKX1nZXQgc3BlZWQoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1NwZWVkfXNldCBzcGVlZCh0KXtjb25zdCBuPXRoaXMucGxheWJhY2tTcGVlZCE9PXQ7biYmdGhpcy5kcml2ZXImJnRoaXMudXBkYXRlVGltZShsdC5ub3coKSksdGhpcy5wbGF5YmFja1NwZWVkPXQsbiYmdGhpcy5kcml2ZXImJih0aGlzLnRpbWU9SHQodGhpcy5jdXJyZW50VGltZSkpfXBsYXkoKXt2YXIgaSxvO2lmKHRoaXMuaXNTdG9wcGVkKXJldHVybjtjb25zdHtkcml2ZXI6dD1ZeixzdGFydFRpbWU6bn09dGhpcy5vcHRpb25zO3RoaXMuZHJpdmVyfHwodGhpcy5kcml2ZXI9dChzPT50aGlzLnRpY2socykpKSwobz0oaT10aGlzLm9wdGlvbnMpLm9uUGxheSk9PW51bGx8fG8uY2FsbChpKTtjb25zdCByPXRoaXMuZHJpdmVyLm5vdygpO3RoaXMuc3RhdGU9PT0iZmluaXNoZWQiPyh0aGlzLnVwZGF0ZUZpbmlzaGVkKCksdGhpcy5zdGFydFRpbWU9cik6dGhpcy5ob2xkVGltZSE9PW51bGw\/dGhpcy5zdGFydFRpbWU9ci10aGlzLmhvbGRUaW1lOnRoaXMuc3RhcnRUaW1lfHwodGhpcy5zdGFydFRpbWU9bj8\/ciksdGhpcy5zdGF0ZT09PSJmaW5pc2hlZCImJnRoaXMuc3BlZWQ8MCYmKHRoaXMuc3RhcnRUaW1lKz10aGlzLmNhbGN1bGF0ZWREdXJhdGlvbiksdGhpcy5ob2xkVGltZT1udWxsLHRoaXMuc3RhdGU9InJ1bm5pbmciLHRoaXMuZHJpdmVyLnN0YXJ0KCl9cGF1c2UoKXt0aGlzLnN0YXRlPSJwYXVzZWQiLHRoaXMudXBkYXRlVGltZShsdC5ub3coKSksdGhpcy5ob2xkVGltZT10aGlzLmN1cnJlbnRUaW1lfWNvbXBsZXRlKCl7dGhpcy5zdGF0ZSE9PSJydW5uaW5nIiYmdGhpcy5wbGF5KCksdGhpcy5zdGF0ZT0iZmluaXNoZWQiLHRoaXMuaG9sZFRpbWU9bnVsbH1maW5pc2goKXt2YXIgdCxuO3RoaXMubm90aWZ5RmluaXNoZWQoKSx0aGlzLnRlYXJkb3duKCksdGhpcy5zdGF0ZT0iZmluaXNoZWQiLChuPSh0PXRoaXMub3B0aW9ucykub25Db21wbGV0ZSk9PW51bGx8fG4uY2FsbCh0KX1jYW5jZWwoKXt2YXIgdCxuO3RoaXMuaG9sZFRpbWU9bnVsbCx0aGlzLnN0YXJ0VGltZT0wLHRoaXMudGljaygwKSx0aGlzLnRlYXJkb3duKCksKG49KHQ9dGhpcy5vcHRpb25zKS5vbkNhbmNlbCk9PW51bGx8fG4uY2FsbCh0KX10ZWFyZG93bigpe3RoaXMuc3RhdGU9ImlkbGUiLHRoaXMuc3RvcERyaXZlcigpLHRoaXMuc3RhcnRUaW1lPXRoaXMuaG9sZFRpbWU9bnVsbH1zdG9wRHJpdmVyKCl7dGhpcy5kcml2ZXImJih0aGlzLmRyaXZlci5zdG9wKCksdGhpcy5kcml2ZXI9dm9pZCAwKX1zYW1wbGUodCl7cmV0dXJuIHRoaXMuc3RhcnRUaW1lPTAsdGhpcy50aWNrKHQsITApfWF0dGFjaFRpbWVsaW5lKHQpe3ZhciBuO3JldHVybiB0aGlzLm9wdGlvbnMuYWxsb3dGbGF0dGVuJiYodGhpcy5vcHRpb25zLnR5cGU9ImtleWZyYW1lcyIsdGhpcy5vcHRpb25zLmVhc2U9ImxpbmVhciIsdGhpcy5pbml0QW5pbWF0aW9uKCkpLChuPXRoaXMuZHJpdmVyKT09bnVsbHx8bi5zdG9wKCksdC5vYnNlcnZlKHRoaXMpfX1mdW5jdGlvbiBoUihlKXtmb3IobGV0IHQ9MTt0PGUubGVuZ3RoO3QrKyllW3RdPz8oZVt0XT1lW3QtMV0pfWNvbnN0IGRpPWU9PmUqMTgwL01hdGguUEksQWY9ZT0+e2NvbnN0IHQ9ZGkoTWF0aC5hdGFuMihlWzFdLGVbMF0pKTtyZXR1cm4gSWYodCl9LHBSPXt4OjQseTo1LHRyYW5zbGF0ZVg6NCx0cmFuc2xhdGVZOjUsc2NhbGVYOjAsc2NhbGVZOjMsc2NhbGU6ZT0+KE1hdGguYWJzKGVbMF0pK01hdGguYWJzKGVbM10pKS8yLHJvdGF0ZTpBZixyb3RhdGVaOkFmLHNrZXdYOmU9PmRpKE1hdGguYXRhbihlWzFdKSksc2tld1k6ZT0+ZGkoTWF0aC5hdGFuKGVbMl0pKSxza2V3OmU9PihNYXRoLmFicyhlWzFdKStNYXRoLmFicyhlWzJdKSkvMn0sSWY9ZT0+KGU9ZSUzNjAsZTwwJiYoZSs9MzYwKSxlKSxUeT1BZixFeT1lPT5NYXRoLnNxcnQoZVswXSplWzBdK2VbMV0qZVsxXSksUHk9ZT0+TWF0aC5zcXJ0KGVbNF0qZVs0XStlWzVdKmVbNV0pLG1SPXt4OjEyLHk6MTMsejoxNCx0cmFuc2xhdGVYOjEyLHRyYW5zbGF0ZVk6MTMsdHJhbnNsYXRlWjoxNCxzY2FsZVg6RXksc2NhbGVZOlB5LHNjYWxlOmU9PihFeShlKStQeShlKSkvMixyb3RhdGVYOmU9PklmKGRpKE1hdGguYXRhbjIoZVs2XSxlWzVdKSkpLHJvdGF0ZVk6ZT0+SWYoZGkoTWF0aC5hdGFuMigtZVsyXSxlWzBdKSkpLHJvdGF0ZVo6VHkscm90YXRlOlR5LHNrZXdYOmU9PmRpKE1hdGguYXRhbihlWzRdKSksc2tld1k6ZT0+ZGkoTWF0aC5hdGFuKGVbMV0pKSxza2V3OmU9PihNYXRoLmFicyhlWzFdKStNYXRoLmFicyhlWzRdKSkvMn07ZnVuY3Rpb24gTmYoZSl7cmV0dXJuIGUuaW5jbHVkZXMoInNjYWxlIik\/MTowfWZ1bmN0aW9uIGpmKGUsdCl7aWYoIWV8fGU9PT0ibm9uZSIpcmV0dXJuIE5mKHQpO2NvbnN0IG49ZS5tYXRjaCgvXm1hdHJpeDNkXCgoWy1cZC5lXHMsXSspXCkkL3UpO2xldCByLGk7aWYobilyPW1SLGk9bjtlbHNle2NvbnN0IGE9ZS5tYXRjaCgvXm1hdHJpeFwoKFstXGQuZVxzLF0rKVwpJC91KTtyPXBSLGk9YX1pZighaSlyZXR1cm4gTmYodCk7Y29uc3Qgbz1yW3RdLHM9aVsxXS5zcGxpdCgiLCIpLm1hcCh5Uik7cmV0dXJuIHR5cGVvZiBvPT0iZnVuY3Rpb24iP28ocyk6c1tvXX1jb25zdCBnUj0oZSx0KT0+e2NvbnN0e3RyYW5zZm9ybTpuPSJub25lIn09Z2V0Q29tcHV0ZWRTdHlsZShlKTtyZXR1cm4gamYobix0KX07ZnVuY3Rpb24geVIoZSl7cmV0dXJuIHBhcnNlRmxvYXQoZS50cmltKCkpfWNvbnN0ICRvPVsidHJhbnNmb3JtUGVyc3BlY3RpdmUiLCJ4IiwieSIsInoiLCJ0cmFuc2xhdGVYIiwidHJhbnNsYXRlWSIsInRyYW5zbGF0ZVoiLCJzY2FsZSIsInNjYWxlWCIsInNjYWxlWSIsInJvdGF0ZSIsInJvdGF0ZVgiLCJyb3RhdGVZIiwicm90YXRlWiIsInNrZXciLCJza2V3WCIsInNrZXdZIl0sSG89bmV3IFNldCgkbyksQXk9ZT0+ZT09PVVvfHxlPT09USx2Uj1uZXcgU2V0KFsieCIsInkiLCJ6Il0pLHhSPSRvLmZpbHRlcihlPT4hdlIuaGFzKGUpKTtmdW5jdGlvbiB3UihlKXtjb25zdCB0PVtdO3JldHVybiB4Ui5mb3JFYWNoKG49Pntjb25zdCByPWUuZ2V0VmFsdWUobik7ciE9PXZvaWQgMCYmKHQucHVzaChbbixyLmdldCgpXSksci5zZXQobi5zdGFydHNXaXRoKCJzY2FsZSIpPzE6MCkpfSksdH1jb25zdCBBcj17d2lkdGg6KHt4OmV9LHtwYWRkaW5nTGVmdDp0PSIwIixwYWRkaW5nUmlnaHQ6bj0iMCIsYm94U2l6aW5nOnJ9KT0+e2NvbnN0IGk9ZS5tYXgtZS5taW47cmV0dXJuIHI9PT0iYm9yZGVyLWJveCI\/aTppLXBhcnNlRmxvYXQodCktcGFyc2VGbG9hdChuKX0saGVpZ2h0Oih7eTplfSx7cGFkZGluZ1RvcDp0PSIwIixwYWRkaW5nQm90dG9tOm49IjAiLGJveFNpemluZzpyfSk9Pntjb25zdCBpPWUubWF4LWUubWluO3JldHVybiByPT09ImJvcmRlci1ib3giP2k6aS1wYXJzZUZsb2F0KHQpLXBhcnNlRmxvYXQobil9LHRvcDooZSx7dG9wOnR9KT0+cGFyc2VGbG9hdCh0KSxsZWZ0OihlLHtsZWZ0OnR9KT0+cGFyc2VGbG9hdCh0KSxib3R0b206KHt5OmV9LHt0b3A6dH0pPT5wYXJzZUZsb2F0KHQpKyhlLm1heC1lLm1pbikscmlnaHQ6KHt4OmV9LHtsZWZ0OnR9KT0+cGFyc2VGbG9hdCh0KSsoZS5tYXgtZS5taW4pLHg6KGUse3RyYW5zZm9ybTp0fSk9PmpmKHQsIngiKSx5OihlLHt0cmFuc2Zvcm06dH0pPT5qZih0LCJ5Iil9O0FyLnRyYW5zbGF0ZVg9QXIueDtBci50cmFuc2xhdGVZPUFyLnk7Y29uc3QgYmk9bmV3IFNldDtsZXQgemY9ITEsUmY9ITEsRGY9ITE7ZnVuY3Rpb24gc2soKXtpZihSZil7Y29uc3QgZT1BcnJheS5mcm9tKGJpKS5maWx0ZXIocj0+ci5uZWVkc01lYXN1cmVtZW50KSx0PW5ldyBTZXQoZS5tYXAocj0+ci5lbGVtZW50KSksbj1uZXcgTWFwO3QuZm9yRWFjaChyPT57Y29uc3QgaT13UihyKTtpLmxlbmd0aCYmKG4uc2V0KHIsaSksci5yZW5kZXIoKSl9KSxlLmZvckVhY2gocj0+ci5tZWFzdXJlSW5pdGlhbFN0YXRlKCkpLHQuZm9yRWFjaChyPT57ci5yZW5kZXIoKTtjb25zdCBpPW4uZ2V0KHIpO2kmJmkuZm9yRWFjaCgoW28sc10pPT57dmFyIGE7KGE9ci5nZXRWYWx1ZShvKSk9PW51bGx8fGEuc2V0KHMpfSl9KSxlLmZvckVhY2gocj0+ci5tZWFzdXJlRW5kU3RhdGUoKSksZS5mb3JFYWNoKHI9PntyLnN1c3BlbmRlZFNjcm9sbFkhPT12b2lkIDAmJndpbmRvdy5zY3JvbGxUbygwLHIuc3VzcGVuZGVkU2Nyb2xsWSl9KX1SZj0hMSx6Zj0hMSxiaS5mb3JFYWNoKGU9PmUuY29tcGxldGUoRGYpKSxiaS5jbGVhcigpfWZ1bmN0aW9uIGFrKCl7YmkuZm9yRWFjaChlPT57ZS5yZWFkS2V5ZnJhbWVzKCksZS5uZWVkc01lYXN1cmVtZW50JiYoUmY9ITApfSl9ZnVuY3Rpb24gYlIoKXtEZj0hMCxhaygpLHNrKCksRGY9ITF9Y2xhc3MgTXB7Y29uc3RydWN0b3IodCxuLHIsaSxvLHM9ITEpe3RoaXMuc3RhdGU9InBlbmRpbmciLHRoaXMuaXNBc3luYz0hMSx0aGlzLm5lZWRzTWVhc3VyZW1lbnQ9ITEsdGhpcy51bnJlc29sdmVkS2V5ZnJhbWVzPVsuLi50XSx0aGlzLm9uQ29tcGxldGU9bix0aGlzLm5hbWU9cix0aGlzLm1vdGlvblZhbHVlPWksdGhpcy5lbGVtZW50PW8sdGhpcy5pc0FzeW5jPXN9c2NoZWR1bGVSZXNvbHZlKCl7dGhpcy5zdGF0ZT0ic2NoZWR1bGVkIix0aGlzLmlzQXN5bmM\/KGJpLmFkZCh0aGlzKSx6Znx8KHpmPSEwLHZlLnJlYWQoYWspLHZlLnJlc29sdmVLZXlmcmFtZXMoc2spKSk6KHRoaXMucmVhZEtleWZyYW1lcygpLHRoaXMuY29tcGxldGUoKSl9cmVhZEtleWZyYW1lcygpe2NvbnN0e3VucmVzb2x2ZWRLZXlmcmFtZXM6dCxuYW1lOm4sZWxlbWVudDpyLG1vdGlvblZhbHVlOml9PXRoaXM7aWYodFswXT09PW51bGwpe2NvbnN0IG89aT09bnVsbD92b2lkIDA6aS5nZXQoKSxzPXRbdC5sZW5ndGgtMV07aWYobyE9PXZvaWQgMCl0WzBdPW87ZWxzZSBpZihyJiZuKXtjb25zdCBhPXIucmVhZFZhbHVlKG4scyk7YSE9bnVsbCYmKHRbMF09YSl9dFswXT09PXZvaWQgMCYmKHRbMF09cyksaSYmbz09PXZvaWQgMCYmaS5zZXQodFswXSl9aFIodCl9c2V0RmluYWxLZXlmcmFtZSgpe31tZWFzdXJlSW5pdGlhbFN0YXRlKCl7fXJlbmRlckVuZFN0eWxlcygpe31tZWFzdXJlRW5kU3RhdGUoKXt9Y29tcGxldGUodD0hMSl7dGhpcy5zdGF0ZT0iY29tcGxldGUiLHRoaXMub25Db21wbGV0ZSh0aGlzLnVucmVzb2x2ZWRLZXlmcmFtZXMsdGhpcy5maW5hbEtleWZyYW1lLHQpLGJpLmRlbGV0ZSh0aGlzKX1jYW5jZWwoKXt0aGlzLnN0YXRlPT09InNjaGVkdWxlZCImJihiaS5kZWxldGUodGhpcyksdGhpcy5zdGF0ZT0icGVuZGluZyIpfXJlc3VtZSgpe3RoaXMuc3RhdGU9PT0icGVuZGluZyImJnRoaXMuc2NoZWR1bGVSZXNvbHZlKCl9fWNvbnN0IGtSPWU9PmUuc3RhcnRzV2l0aCgiLS0iKTtmdW5jdGlvbiBsayhlLHQsbil7a1IodCk\/ZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pOmUuc3R5bGVbdF09bn1jb25zdCBTUj17fTtmdW5jdGlvbiB1ayhlLHQpe2NvbnN0IG49TGIoZSk7cmV0dXJuKCk9PlNSW3RdPz9uKCl9Y29uc3QgQ1I9dWsoKCk9PndpbmRvdy5TY3JvbGxUaW1lbGluZSE9PXZvaWQgMCwic2Nyb2xsVGltZWxpbmUiKSxjaz11aygoKT0+e3RyeXtkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5hbmltYXRlKHtvcGFjaXR5OjB9LHtlYXNpbmc6ImxpbmVhcigwLCAxKSJ9KX1jYXRjaHtyZXR1cm4hMX1yZXR1cm4hMH0sImxpbmVhckVhc2luZyIpLGRzPShbZSx0LG4scl0pPT5gY3ViaWMtYmV6aWVyKCR7ZX0sICR7dH0sICR7bn0sICR7cn0pYCxJeT17bGluZWFyOiJsaW5lYXIiLGVhc2U6ImVhc2UiLGVhc2VJbjoiZWFzZS1pbiIsZWFzZU91dDoiZWFzZS1vdXQiLGVhc2VJbk91dDoiZWFzZS1pbi1vdXQiLGNpcmNJbjpkcyhbMCwuNjUsLjU1LDFdKSxjaXJjT3V0OmRzKFsuNTUsMCwxLC40NV0pLGJhY2tJbjpkcyhbLjMxLC4wMSwuNjYsLS41OV0pLGJhY2tPdXQ6ZHMoWy4zMywxLjUzLC42OSwuOTldKX07ZnVuY3Rpb24gZGsoZSx0KXtpZihlKXJldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIj9jaygpP3JrKGUsdCk6ImVhc2Utb3V0IjpLYihlKT9kcyhlKTpBcnJheS5pc0FycmF5KGUpP2UubWFwKG49PmRrKG4sdCl8fEl5LmVhc2VPdXQpOkl5W2VdfWZ1bmN0aW9uIFRSKGUsdCxuLHtkZWxheTpyPTAsZHVyYXRpb246aT0zMDAscmVwZWF0Om89MCxyZXBlYXRUeXBlOnM9Imxvb3AiLGVhc2U6YT0iZWFzZU91dCIsdGltZXM6bH09e30sdT12b2lkIDApe2NvbnN0IGM9e1t0XTpufTtsJiYoYy5vZmZzZXQ9bCk7Y29uc3QgZD1kayhhLGkpO0FycmF5LmlzQXJyYXkoZCkmJihjLmVhc2luZz1kKTtjb25zdCBoPXtkZWxheTpyLGR1cmF0aW9uOmksZWFzaW5nOkFycmF5LmlzQXJyYXkoZCk\/ImxpbmVhciI6ZCxmaWxsOiJib3RoIixpdGVyYXRpb25zOm8rMSxkaXJlY3Rpb246cz09PSJyZXZlcnNlIj8iYWx0ZXJuYXRlIjoibm9ybWFsIn07cmV0dXJuIHUmJihoLnBzZXVkb0VsZW1lbnQ9dSksZS5hbmltYXRlKGMsaCl9ZnVuY3Rpb24gZmsoZSl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iJiYiYXBwbHlUb09wdGlvbnMiaW4gZX1mdW5jdGlvbiBFUih7dHlwZTplLC4uLnR9KXtyZXR1cm4gZmsoZSkmJmNrKCk\/ZS5hcHBseVRvT3B0aW9ucyh0KToodC5kdXJhdGlvbj8\/KHQuZHVyYXRpb249MzAwKSx0LmVhc2U\/Pyh0LmVhc2U9ImVhc2VPdXQiKSx0KX1jbGFzcyBoayBleHRlbmRzIFJwe2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy5maW5pc2hlZFRpbWU9bnVsbCx0aGlzLmlzU3RvcHBlZD0hMSx0aGlzLm1hbnVhbFN0YXJ0VGltZT1udWxsLCF0KXJldHVybjtjb25zdHtlbGVtZW50Om4sbmFtZTpyLGtleWZyYW1lczppLHBzZXVkb0VsZW1lbnQ6byxhbGxvd0ZsYXR0ZW46cz0hMSxmaW5hbEtleWZyYW1lOmEsb25Db21wbGV0ZTpsfT10O3RoaXMuaXNQc2V1ZG9FbGVtZW50PSEhbyx0aGlzLmFsbG93RmxhdHRlbj1zLHRoaXMub3B0aW9ucz10LGpvKHR5cGVvZiB0LnR5cGUhPSJzdHJpbmciLGBNaW5pIGFuaW1hdGUoKSBkb2Vzbid0IHN1cHBvcnQgInR5cGUiIGFzIGEgc3RyaW5nLmAsIm1pbmktc3ByaW5nIik7Y29uc3QgdT1FUih0KTt0aGlzLmFuaW1hdGlvbj1UUihuLHIsaSx1LG8pLHUuYXV0b3BsYXk9PT0hMSYmdGhpcy5hbmltYXRpb24ucGF1c2UoKSx0aGlzLmFuaW1hdGlvbi5vbmZpbmlzaD0oKT0+e2lmKHRoaXMuZmluaXNoZWRUaW1lPXRoaXMudGltZSwhbyl7Y29uc3QgYz16cChpLHRoaXMub3B0aW9ucyxhLHRoaXMuc3BlZWQpO3RoaXMudXBkYXRlTW90aW9uVmFsdWUmJnRoaXMudXBkYXRlTW90aW9uVmFsdWUoYyksbGsobixyLGMpLHRoaXMuYW5pbWF0aW9uLmNhbmNlbCgpfWw9PW51bGx8fGwoKSx0aGlzLm5vdGlmeUZpbmlzaGVkKCl9fXBsYXkoKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMubWFudWFsU3RhcnRUaW1lPW51bGwsdGhpcy5hbmltYXRpb24ucGxheSgpLHRoaXMuc3RhdGU9PT0iZmluaXNoZWQiJiZ0aGlzLnVwZGF0ZUZpbmlzaGVkKCkpfXBhdXNlKCl7dGhpcy5hbmltYXRpb24ucGF1c2UoKX1jb21wbGV0ZSgpe3ZhciB0LG47KG49KHQ9dGhpcy5hbmltYXRpb24pLmZpbmlzaCk9PW51bGx8fG4uY2FsbCh0KX1jYW5jZWwoKXt0cnl7dGhpcy5hbmltYXRpb24uY2FuY2VsKCl9Y2F0Y2h7fX1zdG9wKCl7aWYodGhpcy5pc1N0b3BwZWQpcmV0dXJuO3RoaXMuaXNTdG9wcGVkPSEwO2NvbnN0e3N0YXRlOnR9PXRoaXM7dD09PSJpZGxlInx8dD09PSJmaW5pc2hlZCJ8fCh0aGlzLnVwZGF0ZU1vdGlvblZhbHVlP3RoaXMudXBkYXRlTW90aW9uVmFsdWUoKTp0aGlzLmNvbW1pdFN0eWxlcygpLHRoaXMuaXNQc2V1ZG9FbGVtZW50fHx0aGlzLmNhbmNlbCgpKX1jb21taXRTdHlsZXMoKXt2YXIgbixyLGk7Y29uc3QgdD0obj10aGlzLm9wdGlvbnMpPT1udWxsP3ZvaWQgMDpuLmVsZW1lbnQ7IXRoaXMuaXNQc2V1ZG9FbGVtZW50JiYodCE9bnVsbCYmdC5pc0Nvbm5lY3RlZCkmJigoaT0ocj10aGlzLmFuaW1hdGlvbikuY29tbWl0U3R5bGVzKT09bnVsbHx8aS5jYWxsKHIpKX1nZXQgZHVyYXRpb24oKXt2YXIgbixyO2NvbnN0IHQ9KChyPShuPXRoaXMuYW5pbWF0aW9uLmVmZmVjdCk9PW51bGw\/dm9pZCAwOm4uZ2V0Q29tcHV0ZWRUaW1pbmcpPT1udWxsP3ZvaWQgMDpyLmNhbGwobikuZHVyYXRpb24pfHwwO3JldHVybiBIdChOdW1iZXIodCkpfWdldCBpdGVyYXRpb25EdXJhdGlvbigpe2NvbnN0e2RlbGF5OnQ9MH09dGhpcy5vcHRpb25zfHx7fTtyZXR1cm4gdGhpcy5kdXJhdGlvbitIdCh0KX1nZXQgdGltZSgpe3JldHVybiBIdChOdW1iZXIodGhpcy5hbmltYXRpb24uY3VycmVudFRpbWUpfHwwKX1zZXQgdGltZSh0KXtjb25zdCBuPXRoaXMuZmluaXNoZWRUaW1lIT09bnVsbDt0aGlzLm1hbnVhbFN0YXJ0VGltZT1udWxsLHRoaXMuZmluaXNoZWRUaW1lPW51bGwsdGhpcy5hbmltYXRpb24uY3VycmVudFRpbWU9YnQodCksbiYmdGhpcy5hbmltYXRpb24ucGF1c2UoKX1nZXQgc3BlZWQoKXtyZXR1cm4gdGhpcy5hbmltYXRpb24ucGxheWJhY2tSYXRlfXNldCBzcGVlZCh0KXt0PDAmJih0aGlzLmZpbmlzaGVkVGltZT1udWxsKSx0aGlzLmFuaW1hdGlvbi5wbGF5YmFja1JhdGU9dH1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5maW5pc2hlZFRpbWUhPT1udWxsPyJmaW5pc2hlZCI6dGhpcy5hbmltYXRpb24ucGxheVN0YXRlfWdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5tYW51YWxTdGFydFRpbWU\/P051bWJlcih0aGlzLmFuaW1hdGlvbi5zdGFydFRpbWUpfXNldCBzdGFydFRpbWUodCl7dGhpcy5tYW51YWxTdGFydFRpbWU9dGhpcy5hbmltYXRpb24uc3RhcnRUaW1lPXR9YXR0YWNoVGltZWxpbmUoe3RpbWVsaW5lOnQscmFuZ2VTdGFydDpuLHJhbmdlRW5kOnIsb2JzZXJ2ZTppfSl7dmFyIG87cmV0dXJuIHRoaXMuYWxsb3dGbGF0dGVuJiYoKG89dGhpcy5hbmltYXRpb24uZWZmZWN0KT09bnVsbHx8by51cGRhdGVUaW1pbmcoe2Vhc2luZzoibGluZWFyIn0pKSx0aGlzLmFuaW1hdGlvbi5vbmZpbmlzaD1udWxsLHQmJkNSKCk\/KHRoaXMuYW5pbWF0aW9uLnRpbWVsaW5lPXQsbiYmKHRoaXMuYW5pbWF0aW9uLnJhbmdlU3RhcnQ9biksciYmKHRoaXMuYW5pbWF0aW9uLnJhbmdlRW5kPXIpLFd0KTppKHRoaXMpfX1jb25zdCBwaz17YW50aWNpcGF0ZTokYixiYWNrSW5PdXQ6VWIsY2lyY0luT3V0OnFifTtmdW5jdGlvbiBQUihlKXtyZXR1cm4gZSBpbiBwa31mdW5jdGlvbiBBUihlKXt0eXBlb2YgZS5lYXNlPT0ic3RyaW5nIiYmUFIoZS5lYXNlKSYmKGUuZWFzZT1wa1tlLmVhc2VdKX1jb25zdCBXYz0xMDtjbGFzcyBJUiBleHRlbmRzIGhre2NvbnN0cnVjdG9yKHQpe0FSKHQpLG9rKHQpLHN1cGVyKHQpLHQuc3RhcnRUaW1lIT09dm9pZCAwJiZ0LmF1dG9wbGF5IT09ITEmJih0aGlzLnN0YXJ0VGltZT10LnN0YXJ0VGltZSksdGhpcy5vcHRpb25zPXR9dXBkYXRlTW90aW9uVmFsdWUodCl7Y29uc3R7bW90aW9uVmFsdWU6bixvblVwZGF0ZTpyLG9uQ29tcGxldGU6aSxlbGVtZW50Om8sLi4uc309dGhpcy5vcHRpb25zO2lmKCFuKXJldHVybjtpZih0IT09dm9pZCAwKXtuLnNldCh0KTtyZXR1cm59Y29uc3QgYT1uZXcgRHAoey4uLnMsYXV0b3BsYXk6ITF9KSxsPU1hdGgubWF4KFdjLGx0Lm5vdygpLXRoaXMuc3RhcnRUaW1lKSx1PU1uKDAsV2MsbC1XYyksYz1hLnNhbXBsZShsKS52YWx1ZSx7bmFtZTpkfT10aGlzLm9wdGlvbnM7byYmZCYmbGsobyxkLGMpLG4uc2V0V2l0aFZlbG9jaXR5KGEuc2FtcGxlKE1hdGgubWF4KDAsbC11KSkudmFsdWUsYyx1KSxhLnN0b3AoKX19Y29uc3QgTnk9KGUsdCk9PnQ9PT0iekluZGV4Ij8hMTohISh0eXBlb2YgZT09Im51bWJlciJ8fEFycmF5LmlzQXJyYXkoZSl8fHR5cGVvZiBlPT0ic3RyaW5nIiYmKGZuLnRlc3QoZSl8fGU9PT0iMCIpJiYhZS5zdGFydHNXaXRoKCJ1cmwoIikpO2Z1bmN0aW9uIE5SKGUpe2NvbnN0IHQ9ZVswXTtpZihlLmxlbmd0aD09PTEpcmV0dXJuITA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYoZVtuXSE9PXQpcmV0dXJuITB9ZnVuY3Rpb24galIoZSx0LG4scil7Y29uc3QgaT1lWzBdO2lmKGk9PT1udWxsKXJldHVybiExO2lmKHQ9PT0iZGlzcGxheSJ8fHQ9PT0idmlzaWJpbGl0eSIpcmV0dXJuITA7Y29uc3Qgbz1lW2UubGVuZ3RoLTFdLHM9TnkoaSx0KSxhPU55KG8sdCk7cmV0dXJuIHF1KHM9PT1hLGBZb3UgYXJlIHRyeWluZyB0byBhbmltYXRlICR7dH0gZnJvbSAiJHtpfSIgdG8gIiR7b30iLiAiJHtzP286aX0iIGlzIG5vdCBhbiBhbmltYXRhYmxlIHZhbHVlLmAsInZhbHVlLW5vdC1hbmltYXRhYmxlIiksIXN8fCFhPyExOk5SKGUpfHwobj09PSJzcHJpbmcifHxmayhuKSkmJnJ9ZnVuY3Rpb24gTWYoZSl7ZS5kdXJhdGlvbj0wLGUudHlwZT0ia2V5ZnJhbWVzIn1jb25zdCB6Uj1uZXcgU2V0KFsib3BhY2l0eSIsImNsaXBQYXRoIiwiZmlsdGVyIiwidHJhbnNmb3JtIl0pLFJSPUxiKCgpPT5PYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChFbGVtZW50LnByb3RvdHlwZSwiYW5pbWF0ZSIpKTtmdW5jdGlvbiBEUihlKXt2YXIgYztjb25zdHttb3Rpb25WYWx1ZTp0LG5hbWU6bixyZXBlYXREZWxheTpyLHJlcGVhdFR5cGU6aSxkYW1waW5nOm8sdHlwZTpzfT1lO2lmKCEoKChjPXQ9PW51bGw\/dm9pZCAwOnQub3duZXIpPT1udWxsP3ZvaWQgMDpjLmN1cnJlbnQpaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpcmV0dXJuITE7Y29uc3R7b25VcGRhdGU6bCx0cmFuc2Zvcm1UZW1wbGF0ZTp1fT10Lm93bmVyLmdldFByb3BzKCk7cmV0dXJuIFJSKCkmJm4mJnpSLmhhcyhuKSYmKG4hPT0idHJhbnNmb3JtInx8IXUpJiYhbCYmIXImJmkhPT0ibWlycm9yIiYmbyE9PTAmJnMhPT0iaW5lcnRpYSJ9Y29uc3QgTVI9NDA7Y2xhc3MgTFIgZXh0ZW5kcyBScHtjb25zdHJ1Y3Rvcih7YXV0b3BsYXk6dD0hMCxkZWxheTpuPTAsdHlwZTpyPSJrZXlmcmFtZXMiLHJlcGVhdDppPTAscmVwZWF0RGVsYXk6bz0wLHJlcGVhdFR5cGU6cz0ibG9vcCIsa2V5ZnJhbWVzOmEsbmFtZTpsLG1vdGlvblZhbHVlOnUsZWxlbWVudDpjLC4uLmR9KXt2YXIgeTtzdXBlcigpLHRoaXMuc3RvcD0oKT0+e3ZhciBtLHc7dGhpcy5fYW5pbWF0aW9uJiYodGhpcy5fYW5pbWF0aW9uLnN0b3AoKSwobT10aGlzLnN0b3BUaW1lbGluZSk9PW51bGx8fG0uY2FsbCh0aGlzKSksKHc9dGhpcy5rZXlmcmFtZVJlc29sdmVyKT09bnVsbHx8dy5jYW5jZWwoKX0sdGhpcy5jcmVhdGVkQXQ9bHQubm93KCk7Y29uc3QgaD17YXV0b3BsYXk6dCxkZWxheTpuLHR5cGU6cixyZXBlYXQ6aSxyZXBlYXREZWxheTpvLHJlcGVhdFR5cGU6cyxuYW1lOmwsbW90aW9uVmFsdWU6dSxlbGVtZW50OmMsLi4uZH0sZj0oYz09bnVsbD92b2lkIDA6Yy5LZXlmcmFtZVJlc29sdmVyKXx8TXA7dGhpcy5rZXlmcmFtZVJlc29sdmVyPW5ldyBmKGEsKG0sdyxwKT0+dGhpcy5vbktleWZyYW1lc1Jlc29sdmVkKG0sdyxoLCFwKSxsLHUsYyksKHk9dGhpcy5rZXlmcmFtZVJlc29sdmVyKT09bnVsbHx8eS5zY2hlZHVsZVJlc29sdmUoKX1vbktleWZyYW1lc1Jlc29sdmVkKHQsbixyLGkpe3ZhciBwLHY7dGhpcy5rZXlmcmFtZVJlc29sdmVyPXZvaWQgMDtjb25zdHtuYW1lOm8sdHlwZTpzLHZlbG9jaXR5OmEsZGVsYXk6bCxpc0hhbmRvZmY6dSxvblVwZGF0ZTpjfT1yO3RoaXMucmVzb2x2ZWRBdD1sdC5ub3coKTtsZXQgZD0hMDtqUih0LG8scyxhKXx8KGQ9ITEsKCRyLmluc3RhbnRBbmltYXRpb25zfHwhbCkmJihjPT1udWxsfHxjKHpwKHQscixuKSkpLHRbMF09dFt0Lmxlbmd0aC0xXSxNZihyKSxyLnJlcGVhdD0wKTtjb25zdCBmPXtzdGFydFRpbWU6aT90aGlzLnJlc29sdmVkQXQ\/dGhpcy5yZXNvbHZlZEF0LXRoaXMuY3JlYXRlZEF0Pk1SP3RoaXMucmVzb2x2ZWRBdDp0aGlzLmNyZWF0ZWRBdDp0aGlzLmNyZWF0ZWRBdDp2b2lkIDAsZmluYWxLZXlmcmFtZTpuLC4uLnIsa2V5ZnJhbWVzOnR9LHk9ZCYmIXUmJkRSKGYpLG09KHY9KHA9Zi5tb3Rpb25WYWx1ZSk9PW51bGw\/dm9pZCAwOnAub3duZXIpPT1udWxsP3ZvaWQgMDp2LmN1cnJlbnQsdz15P25ldyBJUih7Li4uZixlbGVtZW50Om19KTpuZXcgRHAoZik7dy5maW5pc2hlZC50aGVuKCgpPT57dGhpcy5ub3RpZnlGaW5pc2hlZCgpfSkuY2F0Y2goV3QpLHRoaXMucGVuZGluZ1RpbWVsaW5lJiYodGhpcy5zdG9wVGltZWxpbmU9dy5hdHRhY2hUaW1lbGluZSh0aGlzLnBlbmRpbmdUaW1lbGluZSksdGhpcy5wZW5kaW5nVGltZWxpbmU9dm9pZCAwKSx0aGlzLl9hbmltYXRpb249d31nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uP3RoaXMuYW5pbWF0aW9uLmZpbmlzaGVkOnRoaXMuX2ZpbmlzaGVkfXRoZW4odCxuKXtyZXR1cm4gdGhpcy5maW5pc2hlZC5maW5hbGx5KHQpLnRoZW4oKCk9Pnt9KX1nZXQgYW5pbWF0aW9uKCl7dmFyIHQ7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbnx8KCh0PXRoaXMua2V5ZnJhbWVSZXNvbHZlcik9PW51bGx8fHQucmVzdW1lKCksYlIoKSksdGhpcy5fYW5pbWF0aW9ufWdldCBkdXJhdGlvbigpe3JldHVybiB0aGlzLmFuaW1hdGlvbi5kdXJhdGlvbn1nZXQgaXRlcmF0aW9uRHVyYXRpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRpb24uaXRlcmF0aW9uRHVyYXRpb259Z2V0IHRpbWUoKXtyZXR1cm4gdGhpcy5hbmltYXRpb24udGltZX1zZXQgdGltZSh0KXt0aGlzLmFuaW1hdGlvbi50aW1lPXR9Z2V0IHNwZWVkKCl7cmV0dXJuIHRoaXMuYW5pbWF0aW9uLnNwZWVkfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmFuaW1hdGlvbi5zdGF0ZX1zZXQgc3BlZWQodCl7dGhpcy5hbmltYXRpb24uc3BlZWQ9dH1nZXQgc3RhcnRUaW1lKCl7cmV0dXJuIHRoaXMuYW5pbWF0aW9uLnN0YXJ0VGltZX1hdHRhY2hUaW1lbGluZSh0KXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uP3RoaXMuc3RvcFRpbWVsaW5lPXRoaXMuYW5pbWF0aW9uLmF0dGFjaFRpbWVsaW5lKHQpOnRoaXMucGVuZGluZ1RpbWVsaW5lPXQsKCk9PnRoaXMuc3RvcCgpfXBsYXkoKXt0aGlzLmFuaW1hdGlvbi5wbGF5KCl9cGF1c2UoKXt0aGlzLmFuaW1hdGlvbi5wYXVzZSgpfWNvbXBsZXRlKCl7dGhpcy5hbmltYXRpb24uY29tcGxldGUoKX1jYW5jZWwoKXt2YXIgdDt0aGlzLl9hbmltYXRpb24mJnRoaXMuYW5pbWF0aW9uLmNhbmNlbCgpLCh0PXRoaXMua2V5ZnJhbWVSZXNvbHZlcik9PW51bGx8fHQuY2FuY2VsKCl9fWZ1bmN0aW9uIG1rKGUsdCxuLHI9MCxpPTEpe2NvbnN0IG89QXJyYXkuZnJvbShlKS5zb3J0KCh1LGMpPT51LnNvcnROb2RlUG9zaXRpb24oYykpLmluZGV4T2YodCkscz1lLnNpemUsYT0ocy0xKSpyO3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKG8scyk6aT09PTE\/bypyOmEtbypyfWNvbnN0IE9SPS9edmFyXCgtLSg\/OihbXHctXSspfChbXHctXSspLCA\/KFthLXpBLVpcZCAoKSUjLiwtXSspKVwpL3U7ZnVuY3Rpb24gRlIoZSl7Y29uc3QgdD1PUi5leGVjKGUpO2lmKCF0KXJldHVyblssXTtjb25zdFssbixyLGldPXQ7cmV0dXJuW2AtLSR7bj8\/cn1gLGldfWNvbnN0IF9SPTQ7ZnVuY3Rpb24gZ2soZSx0LG49MSl7am8objw9X1IsYE1heCBDU1MgdmFyaWFibGUgZmFsbGJhY2sgZGVwdGggZGV0ZWN0ZWQgaW4gcHJvcGVydHkgIiR7ZX0iLiBUaGlzIG1heSBpbmRpY2F0ZSBhIGNpcmN1bGFyIGZhbGxiYWNrIGRlcGVuZGVuY3kuYCwibWF4LWNzcy12YXItZGVwdGgiKTtjb25zdFtyLGldPUZSKGUpO2lmKCFyKXJldHVybjtjb25zdCBvPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUocik7aWYobyl7Y29uc3Qgcz1vLnRyaW0oKTtyZXR1cm4gUmIocyk\/cGFyc2VGbG9hdChzKTpzfXJldHVybiBQcChpKT9nayhpLHQsbisxKTppfWNvbnN0IFZSPXt0eXBlOiJzcHJpbmciLHN0aWZmbmVzczo1MDAsZGFtcGluZzoyNSxyZXN0U3BlZWQ6MTB9LEJSPWU9Pih7dHlwZToic3ByaW5nIixzdGlmZm5lc3M6NTUwLGRhbXBpbmc6ZT09PTA\/MipNYXRoLnNxcnQoNTUwKTozMCxyZXN0U3BlZWQ6MTB9KSxVUj17dHlwZToia2V5ZnJhbWVzIixkdXJhdGlvbjouOH0sJFI9e3R5cGU6ImtleWZyYW1lcyIsZWFzZTpbLjI1LC4xLC4zNSwxXSxkdXJhdGlvbjouM30sSFI9KGUse2tleWZyYW1lczp0fSk9PnQubGVuZ3RoPjI\/VVI6SG8uaGFzKGUpP2Uuc3RhcnRzV2l0aCgic2NhbGUiKT9CUih0WzFdKTpWUjokUixxUj1lPT5lIT09bnVsbDtmdW5jdGlvbiBXUihlLHtyZXBlYXQ6dCxyZXBlYXRUeXBlOm49Imxvb3AifSxyKXtjb25zdCBpPWUuZmlsdGVyKHFSKSxvPXQmJm4hPT0ibG9vcCImJnQlMj09PTE\/MDppLmxlbmd0aC0xO3JldHVybiFvfHxyPT09dm9pZCAwP2lbb106cn1mdW5jdGlvbiB5ayhlLHQpe2lmKGUhPW51bGwmJmUuaW5oZXJpdCYmdCl7Y29uc3R7aW5oZXJpdDpuLC4uLnJ9PWU7cmV0dXJuey4uLnQsLi4ucn19cmV0dXJuIGV9ZnVuY3Rpb24gTHAoZSx0KXtjb25zdCBuPShlPT1udWxsP3ZvaWQgMDplW3RdKT8\/KGU9PW51bGw\/dm9pZCAwOmUuZGVmYXVsdCk\/P2U7cmV0dXJuIG4hPT1lP3lrKG4sZSk6bn1mdW5jdGlvbiBLUih7d2hlbjplLGRlbGF5OnQsZGVsYXlDaGlsZHJlbjpuLHN0YWdnZXJDaGlsZHJlbjpyLHN0YWdnZXJEaXJlY3Rpb246aSxyZXBlYXQ6byxyZXBlYXRUeXBlOnMscmVwZWF0RGVsYXk6YSxmcm9tOmwsZWxhcHNlZDp1LC4uLmN9KXtyZXR1cm4hIU9iamVjdC5rZXlzKGMpLmxlbmd0aH1jb25zdCBPcD0oZSx0LG4scj17fSxpLG8pPT5zPT57Y29uc3QgYT1McChyLGUpfHx7fSxsPWEuZGVsYXl8fHIuZGVsYXl8fDA7bGV0e2VsYXBzZWQ6dT0wfT1yO3U9dS1idChsKTtjb25zdCBjPXtrZXlmcmFtZXM6QXJyYXkuaXNBcnJheShuKT9uOltudWxsLG5dLGVhc2U6ImVhc2VPdXQiLHZlbG9jaXR5OnQuZ2V0VmVsb2NpdHkoKSwuLi5hLGRlbGF5Oi11LG9uVXBkYXRlOmg9Pnt0LnNldChoKSxhLm9uVXBkYXRlJiZhLm9uVXBkYXRlKGgpfSxvbkNvbXBsZXRlOigpPT57cygpLGEub25Db21wbGV0ZSYmYS5vbkNvbXBsZXRlKCl9LG5hbWU6ZSxtb3Rpb25WYWx1ZTp0LGVsZW1lbnQ6bz92b2lkIDA6aX07S1IoYSl8fE9iamVjdC5hc3NpZ24oYyxIUihlLGMpKSxjLmR1cmF0aW9uJiYoYy5kdXJhdGlvbj1idChjLmR1cmF0aW9uKSksYy5yZXBlYXREZWxheSYmKGMucmVwZWF0RGVsYXk9YnQoYy5yZXBlYXREZWxheSkpLGMuZnJvbSE9PXZvaWQgMCYmKGMua2V5ZnJhbWVzWzBdPWMuZnJvbSk7bGV0IGQ9ITE7aWYoKGMudHlwZT09PSExfHxjLmR1cmF0aW9uPT09MCYmIWMucmVwZWF0RGVsYXkpJiYoTWYoYyksYy5kZWxheT09PTAmJihkPSEwKSksKCRyLmluc3RhbnRBbmltYXRpb25zfHwkci5za2lwQW5pbWF0aW9uc3x8aSE9bnVsbCYmaS5zaG91bGRTa2lwQW5pbWF0aW9ucykmJihkPSEwLE1mKGMpLGMuZGVsYXk9MCksYy5hbGxvd0ZsYXR0ZW49IWEudHlwZSYmIWEuZWFzZSxkJiYhbyYmdC5nZXQoKSE9PXZvaWQgMCl7Y29uc3QgaD1XUihjLmtleWZyYW1lcyxhKTtpZihoIT09dm9pZCAwKXt2ZS51cGRhdGUoKCk9PntjLm9uVXBkYXRlKGgpLGMub25Db21wbGV0ZSgpfSk7cmV0dXJufX1yZXR1cm4gYS5pc1N5bmM\/bmV3IERwKGMpOm5ldyBMUihjKX07ZnVuY3Rpb24gankoZSl7Y29uc3QgdD1be30se31dO3JldHVybiBlPT1udWxsfHxlLnZhbHVlcy5mb3JFYWNoKChuLHIpPT57dFswXVtyXT1uLmdldCgpLHRbMV1bcl09bi5nZXRWZWxvY2l0eSgpfSksdH1mdW5jdGlvbiBGcChlLHQsbixyKXtpZih0eXBlb2YgdD09ImZ1bmN0aW9uIil7Y29uc3RbaSxvXT1qeShyKTt0PXQobiE9PXZvaWQgMD9uOmUuY3VzdG9tLGksbyl9aWYodHlwZW9mIHQ9PSJzdHJpbmciJiYodD1lLnZhcmlhbnRzJiZlLnZhcmlhbnRzW3RdKSx0eXBlb2YgdD09ImZ1bmN0aW9uIil7Y29uc3RbaSxvXT1qeShyKTt0PXQobiE9PXZvaWQgMD9uOmUuY3VzdG9tLGksbyl9cmV0dXJuIHR9ZnVuY3Rpb24ga2koZSx0LG4pe2NvbnN0IHI9ZS5nZXRQcm9wcygpO3JldHVybiBGcChyLHQsbiE9PXZvaWQgMD9uOnIuY3VzdG9tLGUpfWNvbnN0IHZrPW5ldyBTZXQoWyJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJyaWdodCIsImJvdHRvbSIsLi4uJG9dKSx6eT0zMCxHUj1lPT4haXNOYU4ocGFyc2VGbG9hdChlKSk7Y2xhc3MgWVJ7Y29uc3RydWN0b3IodCxuPXt9KXt0aGlzLmNhblRyYWNrVmVsb2NpdHk9bnVsbCx0aGlzLmV2ZW50cz17fSx0aGlzLnVwZGF0ZUFuZE5vdGlmeT1yPT57dmFyIG87Y29uc3QgaT1sdC5ub3coKTtpZih0aGlzLnVwZGF0ZWRBdCE9PWkmJnRoaXMuc2V0UHJldkZyYW1lVmFsdWUoKSx0aGlzLnByZXY9dGhpcy5jdXJyZW50LHRoaXMuc2V0Q3VycmVudChyKSx0aGlzLmN1cnJlbnQhPT10aGlzLnByZXYmJigobz10aGlzLmV2ZW50cy5jaGFuZ2UpPT1udWxsfHxvLm5vdGlmeSh0aGlzLmN1cnJlbnQpLHRoaXMuZGVwZW5kZW50cykpZm9yKGNvbnN0IHMgb2YgdGhpcy5kZXBlbmRlbnRzKXMuZGlydHkoKX0sdGhpcy5oYXNBbmltYXRlZD0hMSx0aGlzLnNldEN1cnJlbnQodCksdGhpcy5vd25lcj1uLm93bmVyfXNldEN1cnJlbnQodCl7dGhpcy5jdXJyZW50PXQsdGhpcy51cGRhdGVkQXQ9bHQubm93KCksdGhpcy5jYW5UcmFja1ZlbG9jaXR5PT09bnVsbCYmdCE9PXZvaWQgMCYmKHRoaXMuY2FuVHJhY2tWZWxvY2l0eT1HUih0aGlzLmN1cnJlbnQpKX1zZXRQcmV2RnJhbWVWYWx1ZSh0PXRoaXMuY3VycmVudCl7dGhpcy5wcmV2RnJhbWVWYWx1ZT10LHRoaXMucHJldlVwZGF0ZWRBdD10aGlzLnVwZGF0ZWRBdH1vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5vbigiY2hhbmdlIix0KX1vbih0LG4pe3RoaXMuZXZlbnRzW3RdfHwodGhpcy5ldmVudHNbdF09bmV3IENwKTtjb25zdCByPXRoaXMuZXZlbnRzW3RdLmFkZChuKTtyZXR1cm4gdD09PSJjaGFuZ2UiPygpPT57cigpLHZlLnJlYWQoKCk9Pnt0aGlzLmV2ZW50cy5jaGFuZ2UuZ2V0U2l6ZSgpfHx0aGlzLnN0b3AoKX0pfTpyfWNsZWFyTGlzdGVuZXJzKCl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5ldmVudHMpdGhpcy5ldmVudHNbdF0uY2xlYXIoKX1hdHRhY2godCxuKXt0aGlzLnBhc3NpdmVFZmZlY3Q9dCx0aGlzLnN0b3BQYXNzaXZlRWZmZWN0PW59c2V0KHQpe3RoaXMucGFzc2l2ZUVmZmVjdD90aGlzLnBhc3NpdmVFZmZlY3QodCx0aGlzLnVwZGF0ZUFuZE5vdGlmeSk6dGhpcy51cGRhdGVBbmROb3RpZnkodCl9c2V0V2l0aFZlbG9jaXR5KHQsbixyKXt0aGlzLnNldChuKSx0aGlzLnByZXY9dm9pZCAwLHRoaXMucHJldkZyYW1lVmFsdWU9dCx0aGlzLnByZXZVcGRhdGVkQXQ9dGhpcy51cGRhdGVkQXQtcn1qdW1wKHQsbj0hMCl7dGhpcy51cGRhdGVBbmROb3RpZnkodCksdGhpcy5wcmV2PXQsdGhpcy5wcmV2VXBkYXRlZEF0PXRoaXMucHJldkZyYW1lVmFsdWU9dm9pZCAwLG4mJnRoaXMuc3RvcCgpLHRoaXMuc3RvcFBhc3NpdmVFZmZlY3QmJnRoaXMuc3RvcFBhc3NpdmVFZmZlY3QoKX1kaXJ0eSgpe3ZhciB0Oyh0PXRoaXMuZXZlbnRzLmNoYW5nZSk9PW51bGx8fHQubm90aWZ5KHRoaXMuY3VycmVudCl9YWRkRGVwZW5kZW50KHQpe3RoaXMuZGVwZW5kZW50c3x8KHRoaXMuZGVwZW5kZW50cz1uZXcgU2V0KSx0aGlzLmRlcGVuZGVudHMuYWRkKHQpfXJlbW92ZURlcGVuZGVudCh0KXt0aGlzLmRlcGVuZGVudHMmJnRoaXMuZGVwZW5kZW50cy5kZWxldGUodCl9Z2V0KCl7cmV0dXJuIHRoaXMuY3VycmVudH1nZXRQcmV2aW91cygpe3JldHVybiB0aGlzLnByZXZ9Z2V0VmVsb2NpdHkoKXtjb25zdCB0PWx0Lm5vdygpO2lmKCF0aGlzLmNhblRyYWNrVmVsb2NpdHl8fHRoaXMucHJldkZyYW1lVmFsdWU9PT12b2lkIDB8fHQtdGhpcy51cGRhdGVkQXQ+enkpcmV0dXJuIDA7Y29uc3Qgbj1NYXRoLm1pbih0aGlzLnVwZGF0ZWRBdC10aGlzLnByZXZVcGRhdGVkQXQsenkpO3JldHVybiBPYihwYXJzZUZsb2F0KHRoaXMuY3VycmVudCktcGFyc2VGbG9hdCh0aGlzLnByZXZGcmFtZVZhbHVlKSxuKX1zdGFydCh0KXtyZXR1cm4gdGhpcy5zdG9wKCksbmV3IFByb21pc2Uobj0+e3RoaXMuaGFzQW5pbWF0ZWQ9ITAsdGhpcy5hbmltYXRpb249dChuKSx0aGlzLmV2ZW50cy5hbmltYXRpb25TdGFydCYmdGhpcy5ldmVudHMuYW5pbWF0aW9uU3RhcnQubm90aWZ5KCl9KS50aGVuKCgpPT57dGhpcy5ldmVudHMuYW5pbWF0aW9uQ29tcGxldGUmJnRoaXMuZXZlbnRzLmFuaW1hdGlvbkNvbXBsZXRlLm5vdGlmeSgpLHRoaXMuY2xlYXJBbmltYXRpb24oKX0pfXN0b3AoKXt0aGlzLmFuaW1hdGlvbiYmKHRoaXMuYW5pbWF0aW9uLnN0b3AoKSx0aGlzLmV2ZW50cy5hbmltYXRpb25DYW5jZWwmJnRoaXMuZXZlbnRzLmFuaW1hdGlvbkNhbmNlbC5ub3RpZnkoKSksdGhpcy5jbGVhckFuaW1hdGlvbigpfWlzQW5pbWF0aW5nKCl7cmV0dXJuISF0aGlzLmFuaW1hdGlvbn1jbGVhckFuaW1hdGlvbigpe2RlbGV0ZSB0aGlzLmFuaW1hdGlvbn1kZXN0cm95KCl7dmFyIHQsbjsodD10aGlzLmRlcGVuZGVudHMpPT1udWxsfHx0LmNsZWFyKCksKG49dGhpcy5ldmVudHMuZGVzdHJveSk9PW51bGx8fG4ubm90aWZ5KCksdGhpcy5jbGVhckxpc3RlbmVycygpLHRoaXMuc3RvcCgpLHRoaXMuc3RvcFBhc3NpdmVFZmZlY3QmJnRoaXMuc3RvcFBhc3NpdmVFZmZlY3QoKX19ZnVuY3Rpb24gUm8oZSx0KXtyZXR1cm4gbmV3IFlSKGUsdCl9Y29uc3QgTGY9ZT0+QXJyYXkuaXNBcnJheShlKTtmdW5jdGlvbiBRUihlLHQsbil7ZS5oYXNWYWx1ZSh0KT9lLmdldFZhbHVlKHQpLnNldChuKTplLmFkZFZhbHVlKHQsUm8obikpfWZ1bmN0aW9uIFhSKGUpe3JldHVybiBMZihlKT9lW2UubGVuZ3RoLTFdfHwwOmV9ZnVuY3Rpb24gSlIoZSx0KXtjb25zdCBuPWtpKGUsdCk7bGV0e3RyYW5zaXRpb25FbmQ6cj17fSx0cmFuc2l0aW9uOmk9e30sLi4ub309bnx8e307bz17Li4ubywuLi5yfTtmb3IoY29uc3QgcyBpbiBvKXtjb25zdCBhPVhSKG9bc10pO1FSKGUscyxhKX19Y29uc3QgS2U9ZT0+ISEoZSYmZS5nZXRWZWxvY2l0eSk7ZnVuY3Rpb24gWlIoZSl7cmV0dXJuISEoS2UoZSkmJmUuYWRkKX1mdW5jdGlvbiBPZihlLHQpe2NvbnN0IG49ZS5nZXRWYWx1ZSgid2lsbENoYW5nZSIpO2lmKFpSKG4pKXJldHVybiBuLmFkZCh0KTtpZighbiYmJHIuV2lsbENoYW5nZSl7Y29uc3Qgcj1uZXcgJHIuV2lsbENoYW5nZSgiYXV0byIpO2UuYWRkVmFsdWUoIndpbGxDaGFuZ2UiLHIpLHIuYWRkKHQpfX1mdW5jdGlvbiBfcChlKXtyZXR1cm4gZS5yZXBsYWNlKC8oW0EtWl0pL2csdD0+YC0ke3QudG9Mb3dlckNhc2UoKX1gKX1jb25zdCBlRD0iZnJhbWVyQXBwZWFySWQiLHhrPSJkYXRhLSIrX3AoZUQpO2Z1bmN0aW9uIHdrKGUpe3JldHVybiBlLnByb3BzW3hrXX1mdW5jdGlvbiB0RCh7cHJvdGVjdGVkS2V5czplLG5lZWRzQW5pbWF0aW5nOnR9LG4pe2NvbnN0IHI9ZS5oYXNPd25Qcm9wZXJ0eShuKSYmdFtuXSE9PSEwO3JldHVybiB0W25dPSExLHJ9ZnVuY3Rpb24gYmsoZSx0LHtkZWxheTpuPTAsdHJhbnNpdGlvbk92ZXJyaWRlOnIsdHlwZTppfT17fSl7bGV0e3RyYW5zaXRpb246byx0cmFuc2l0aW9uRW5kOnMsLi4uYX09dDtjb25zdCBsPWUuZ2V0RGVmYXVsdFRyYW5zaXRpb24oKTtvPW8\/eWsobyxsKTpsO2NvbnN0IHU9bz09bnVsbD92b2lkIDA6by5yZWR1Y2VNb3Rpb247ciYmKG89cik7Y29uc3QgYz1bXSxkPWkmJmUuYW5pbWF0aW9uU3RhdGUmJmUuYW5pbWF0aW9uU3RhdGUuZ2V0U3RhdGUoKVtpXTtmb3IoY29uc3QgaCBpbiBhKXtjb25zdCBmPWUuZ2V0VmFsdWUoaCxlLmxhdGVzdFZhbHVlc1toXT8\/bnVsbCkseT1hW2hdO2lmKHk9PT12b2lkIDB8fGQmJnREKGQsaCkpY29udGludWU7Y29uc3QgbT17ZGVsYXk6biwuLi5McChvfHx7fSxoKX0sdz1mLmdldCgpO2lmKHchPT12b2lkIDAmJiFmLmlzQW5pbWF0aW5nJiYhQXJyYXkuaXNBcnJheSh5KSYmeT09PXcmJiFtLnZlbG9jaXR5KWNvbnRpbnVlO2xldCBwPSExO2lmKHdpbmRvdy5Nb3Rpb25IYW5kb2ZmQW5pbWF0aW9uKXtjb25zdCBrPXdrKGUpO2lmKGspe2NvbnN0IFQ9d2luZG93Lk1vdGlvbkhhbmRvZmZBbmltYXRpb24oayxoLHZlKTtUIT09bnVsbCYmKG0uc3RhcnRUaW1lPVQscD0hMCl9fU9mKGUsaCk7Y29uc3Qgdj11Pz9lLnNob3VsZFJlZHVjZU1vdGlvbjtmLnN0YXJ0KE9wKGgsZix5LHYmJnZrLmhhcyhoKT97dHlwZTohMX06bSxlLHApKTtjb25zdCB4PWYuYW5pbWF0aW9uO3gmJmMucHVzaCh4KX1pZihzKXtjb25zdCBoPSgpPT52ZS51cGRhdGUoKCk9PntzJiZKUihlLHMpfSk7Yy5sZW5ndGg\/UHJvbWlzZS5hbGwoYykudGhlbihoKTpoKCl9cmV0dXJuIGN9ZnVuY3Rpb24gRmYoZSx0LG49e30pe3ZhciBsO2NvbnN0IHI9a2koZSx0LG4udHlwZT09PSJleGl0Ij8obD1lLnByZXNlbmNlQ29udGV4dCk9PW51bGw\/dm9pZCAwOmwuY3VzdG9tOnZvaWQgMCk7bGV0e3RyYW5zaXRpb246aT1lLmdldERlZmF1bHRUcmFuc2l0aW9uKCl8fHt9fT1yfHx7fTtuLnRyYW5zaXRpb25PdmVycmlkZSYmKGk9bi50cmFuc2l0aW9uT3ZlcnJpZGUpO2NvbnN0IG89cj8oKT0+UHJvbWlzZS5hbGwoYmsoZSxyLG4pKTooKT0+UHJvbWlzZS5yZXNvbHZlKCkscz1lLnZhcmlhbnRDaGlsZHJlbiYmZS52YXJpYW50Q2hpbGRyZW4uc2l6ZT8odT0wKT0+e2NvbnN0e2RlbGF5Q2hpbGRyZW46Yz0wLHN0YWdnZXJDaGlsZHJlbjpkLHN0YWdnZXJEaXJlY3Rpb246aH09aTtyZXR1cm4gbkQoZSx0LHUsYyxkLGgsbil9OigpPT5Qcm9taXNlLnJlc29sdmUoKSx7d2hlbjphfT1pO2lmKGEpe2NvbnN0W3UsY109YT09PSJiZWZvcmVDaGlsZHJlbiI\/W28sc106W3Msb107cmV0dXJuIHUoKS50aGVuKCgpPT5jKCkpfWVsc2UgcmV0dXJuIFByb21pc2UuYWxsKFtvKCkscyhuLmRlbGF5KV0pfWZ1bmN0aW9uIG5EKGUsdCxuPTAscj0wLGk9MCxvPTEscyl7Y29uc3QgYT1bXTtmb3IoY29uc3QgbCBvZiBlLnZhcmlhbnRDaGlsZHJlbilsLm5vdGlmeSgiQW5pbWF0aW9uU3RhcnQiLHQpLGEucHVzaChGZihsLHQsey4uLnMsZGVsYXk6bisodHlwZW9mIHI9PSJmdW5jdGlvbiI\/MDpyKSttayhlLnZhcmlhbnRDaGlsZHJlbixsLHIsaSxvKX0pLnRoZW4oKCk9Pmwubm90aWZ5KCJBbmltYXRpb25Db21wbGV0ZSIsdCkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoYSl9ZnVuY3Rpb24gckQoZSx0LG49e30pe2Uubm90aWZ5KCJBbmltYXRpb25TdGFydCIsdCk7bGV0IHI7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgaT10Lm1hcChvPT5GZihlLG8sbikpO3I9UHJvbWlzZS5hbGwoaSl9ZWxzZSBpZih0eXBlb2YgdD09InN0cmluZyIpcj1GZihlLHQsbik7ZWxzZXtjb25zdCBpPXR5cGVvZiB0PT0iZnVuY3Rpb24iP2tpKGUsdCxuLmN1c3RvbSk6dDtyPVByb21pc2UuYWxsKGJrKGUsaSxuKSl9cmV0dXJuIHIudGhlbigoKT0+e2Uubm90aWZ5KCJBbmltYXRpb25Db21wbGV0ZSIsdCl9KX1jb25zdCBpRD17dGVzdDplPT5lPT09ImF1dG8iLHBhcnNlOmU9PmV9LGtrPWU9PnQ9PnQudGVzdChlKSxTaz1bVW8sUSx6bixwcixOeixJeixpRF0sUnk9ZT0+U2suZmluZChrayhlKSk7ZnVuY3Rpb24gb0QoZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIj9lPT09MDplIT09bnVsbD9lPT09Im5vbmUifHxlPT09IjAifHxNYihlKTohMH1jb25zdCBzRD1uZXcgU2V0KFsiYnJpZ2h0bmVzcyIsImNvbnRyYXN0Iiwic2F0dXJhdGUiLCJvcGFjaXR5Il0pO2Z1bmN0aW9uIGFEKGUpe2NvbnN0W3Qsbl09ZS5zbGljZSgwLC0xKS5zcGxpdCgiKCIpO2lmKHQ9PT0iZHJvcC1zaGFkb3ciKXJldHVybiBlO2NvbnN0W3JdPW4ubWF0Y2goQXApfHxbXTtpZighcilyZXR1cm4gZTtjb25zdCBpPW4ucmVwbGFjZShyLCIiKTtsZXQgbz1zRC5oYXModCk\/MTowO3JldHVybiByIT09biYmKG8qPTEwMCksdCsiKCIrbytpKyIpIn1jb25zdCBsRD0vXGIoW2Etei1dKilcKC4qP1wpL2d1LF9mPXsuLi5mbixnZXRBbmltYXRhYmxlTm9uZTplPT57Y29uc3QgdD1lLm1hdGNoKGxEKTtyZXR1cm4gdD90Lm1hcChhRCkuam9pbigiICIpOmV9fSxWZj17Li4uZm4sZ2V0QW5pbWF0YWJsZU5vbmU6ZT0+e2NvbnN0IHQ9Zm4ucGFyc2UoZSk7cmV0dXJuIGZuLmNyZWF0ZVRyYW5zZm9ybWVyKGUpKHQubWFwKHI9PnR5cGVvZiByPT0ibnVtYmVyIj8wOnR5cGVvZiByPT0ib2JqZWN0Ij97Li4ucixhbHBoYToxfTpyKSl9fSxEeT17Li4uVW8sdHJhbnNmb3JtOk1hdGgucm91bmR9LHVEPXtyb3RhdGU6cHIscm90YXRlWDpwcixyb3RhdGVZOnByLHJvdGF0ZVo6cHIsc2NhbGU6R2Esc2NhbGVYOkdhLHNjYWxlWTpHYSxzY2FsZVo6R2Esc2tldzpwcixza2V3WDpwcixza2V3WTpwcixkaXN0YW5jZTpRLHRyYW5zbGF0ZVg6USx0cmFuc2xhdGVZOlEsdHJhbnNsYXRlWjpRLHg6USx5OlEsejpRLHBlcnNwZWN0aXZlOlEsdHJhbnNmb3JtUGVyc3BlY3RpdmU6USxvcGFjaXR5OmVhLG9yaWdpblg6d3ksb3JpZ2luWTp3eSxvcmlnaW5aOlF9LFZwPXtib3JkZXJXaWR0aDpRLGJvcmRlclRvcFdpZHRoOlEsYm9yZGVyUmlnaHRXaWR0aDpRLGJvcmRlckJvdHRvbVdpZHRoOlEsYm9yZGVyTGVmdFdpZHRoOlEsYm9yZGVyUmFkaXVzOlEsYm9yZGVyVG9wTGVmdFJhZGl1czpRLGJvcmRlclRvcFJpZ2h0UmFkaXVzOlEsYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6USxib3JkZXJCb3R0b21MZWZ0UmFkaXVzOlEsd2lkdGg6USxtYXhXaWR0aDpRLGhlaWdodDpRLG1heEhlaWdodDpRLHRvcDpRLHJpZ2h0OlEsYm90dG9tOlEsbGVmdDpRLGluc2V0OlEsaW5zZXRCbG9jazpRLGluc2V0QmxvY2tTdGFydDpRLGluc2V0QmxvY2tFbmQ6USxpbnNldElubGluZTpRLGluc2V0SW5saW5lU3RhcnQ6USxpbnNldElubGluZUVuZDpRLHBhZGRpbmc6USxwYWRkaW5nVG9wOlEscGFkZGluZ1JpZ2h0OlEscGFkZGluZ0JvdHRvbTpRLHBhZGRpbmdMZWZ0OlEscGFkZGluZ0Jsb2NrOlEscGFkZGluZ0Jsb2NrU3RhcnQ6USxwYWRkaW5nQmxvY2tFbmQ6USxwYWRkaW5nSW5saW5lOlEscGFkZGluZ0lubGluZVN0YXJ0OlEscGFkZGluZ0lubGluZUVuZDpRLG1hcmdpbjpRLG1hcmdpblRvcDpRLG1hcmdpblJpZ2h0OlEsbWFyZ2luQm90dG9tOlEsbWFyZ2luTGVmdDpRLG1hcmdpbkJsb2NrOlEsbWFyZ2luQmxvY2tTdGFydDpRLG1hcmdpbkJsb2NrRW5kOlEsbWFyZ2luSW5saW5lOlEsbWFyZ2luSW5saW5lU3RhcnQ6USxtYXJnaW5JbmxpbmVFbmQ6USxmb250U2l6ZTpRLGJhY2tncm91bmRQb3NpdGlvblg6USxiYWNrZ3JvdW5kUG9zaXRpb25ZOlEsLi4udUQsekluZGV4OkR5LGZpbGxPcGFjaXR5OmVhLHN0cm9rZU9wYWNpdHk6ZWEsbnVtT2N0YXZlczpEeX0sY0Q9ey4uLlZwLGNvbG9yOkxlLGJhY2tncm91bmRDb2xvcjpMZSxvdXRsaW5lQ29sb3I6TGUsZmlsbDpMZSxzdHJva2U6TGUsYm9yZGVyQ29sb3I6TGUsYm9yZGVyVG9wQ29sb3I6TGUsYm9yZGVyUmlnaHRDb2xvcjpMZSxib3JkZXJCb3R0b21Db2xvcjpMZSxib3JkZXJMZWZ0Q29sb3I6TGUsZmlsdGVyOl9mLFdlYmtpdEZpbHRlcjpfZixtYXNrOlZmLFdlYmtpdE1hc2s6VmZ9LENrPWU9PmNEW2VdLGREPW5ldyBTZXQoW19mLFZmXSk7ZnVuY3Rpb24gVGsoZSx0KXtsZXQgbj1DayhlKTtyZXR1cm4gZEQuaGFzKG4pfHwobj1mbiksbi5nZXRBbmltYXRhYmxlTm9uZT9uLmdldEFuaW1hdGFibGVOb25lKHQpOnZvaWQgMH1jb25zdCBmRD1uZXcgU2V0KFsiYXV0byIsIm5vbmUiLCIwIl0pO2Z1bmN0aW9uIGhEKGUsdCxuKXtsZXQgcj0wLGk7Zm9yKDtyPGUubGVuZ3RoJiYhaTspe2NvbnN0IG89ZVtyXTt0eXBlb2Ygbz09InN0cmluZyImJiFmRC5oYXMobykmJnpvKG8pLnZhbHVlcy5sZW5ndGgmJihpPWVbcl0pLHIrK31pZihpJiZuKWZvcihjb25zdCBvIG9mIHQpZVtvXT1UayhuLGkpfWNsYXNzIHBEIGV4dGVuZHMgTXB7Y29uc3RydWN0b3IodCxuLHIsaSxvKXtzdXBlcih0LG4scixpLG8sITApfXJlYWRLZXlmcmFtZXMoKXtjb25zdHt1bnJlc29sdmVkS2V5ZnJhbWVzOnQsZWxlbWVudDpuLG5hbWU6cn09dGhpcztpZighbnx8IW4uY3VycmVudClyZXR1cm47c3VwZXIucmVhZEtleWZyYW1lcygpO2ZvcihsZXQgYz0wO2M8dC5sZW5ndGg7YysrKXtsZXQgZD10W2NdO2lmKHR5cGVvZiBkPT0ic3RyaW5nIiYmKGQ9ZC50cmltKCksUHAoZCkpKXtjb25zdCBoPWdrKGQsbi5jdXJyZW50KTtoIT09dm9pZCAwJiYodFtjXT1oKSxjPT09dC5sZW5ndGgtMSYmKHRoaXMuZmluYWxLZXlmcmFtZT1kKX19aWYodGhpcy5yZXNvbHZlTm9uZUtleWZyYW1lcygpLCF2ay5oYXMocil8fHQubGVuZ3RoIT09MilyZXR1cm47Y29uc3RbaSxvXT10LHM9UnkoaSksYT1SeShvKSxsPXh5KGkpLHU9eHkobyk7aWYobCE9PXUmJkFyW3JdKXt0aGlzLm5lZWRzTWVhc3VyZW1lbnQ9ITA7cmV0dXJufWlmKHMhPT1hKWlmKEF5KHMpJiZBeShhKSlmb3IobGV0IGM9MDtjPHQubGVuZ3RoO2MrKyl7Y29uc3QgZD10W2NdO3R5cGVvZiBkPT0ic3RyaW5nIiYmKHRbY109cGFyc2VGbG9hdChkKSl9ZWxzZSBBcltyXSYmKHRoaXMubmVlZHNNZWFzdXJlbWVudD0hMCl9cmVzb2x2ZU5vbmVLZXlmcmFtZXMoKXtjb25zdHt1bnJlc29sdmVkS2V5ZnJhbWVzOnQsbmFtZTpufT10aGlzLHI9W107Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspKHRbaV09PT1udWxsfHxvRCh0W2ldKSkmJnIucHVzaChpKTtyLmxlbmd0aCYmaEQodCxyLG4pfW1lYXN1cmVJbml0aWFsU3RhdGUoKXtjb25zdHtlbGVtZW50OnQsdW5yZXNvbHZlZEtleWZyYW1lczpuLG5hbWU6cn09dGhpcztpZighdHx8IXQuY3VycmVudClyZXR1cm47cj09PSJoZWlnaHQiJiYodGhpcy5zdXNwZW5kZWRTY3JvbGxZPXdpbmRvdy5wYWdlWU9mZnNldCksdGhpcy5tZWFzdXJlZE9yaWdpbj1BcltyXSh0Lm1lYXN1cmVWaWV3cG9ydEJveCgpLHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQuY3VycmVudCkpLG5bMF09dGhpcy5tZWFzdXJlZE9yaWdpbjtjb25zdCBpPW5bbi5sZW5ndGgtMV07aSE9PXZvaWQgMCYmdC5nZXRWYWx1ZShyLGkpLmp1bXAoaSwhMSl9bWVhc3VyZUVuZFN0YXRlKCl7dmFyIGE7Y29uc3R7ZWxlbWVudDp0LG5hbWU6bix1bnJlc29sdmVkS2V5ZnJhbWVzOnJ9PXRoaXM7aWYoIXR8fCF0LmN1cnJlbnQpcmV0dXJuO2NvbnN0IGk9dC5nZXRWYWx1ZShuKTtpJiZpLmp1bXAodGhpcy5tZWFzdXJlZE9yaWdpbiwhMSk7Y29uc3Qgbz1yLmxlbmd0aC0xLHM9cltvXTtyW29dPUFyW25dKHQubWVhc3VyZVZpZXdwb3J0Qm94KCksd2luZG93LmdldENvbXB1dGVkU3R5bGUodC5jdXJyZW50KSkscyE9PW51bGwmJnRoaXMuZmluYWxLZXlmcmFtZT09PXZvaWQgMCYmKHRoaXMuZmluYWxLZXlmcmFtZT1zKSwoYT10aGlzLnJlbW92ZWRUcmFuc2Zvcm1zKSE9bnVsbCYmYS5sZW5ndGgmJnRoaXMucmVtb3ZlZFRyYW5zZm9ybXMuZm9yRWFjaCgoW2wsdV0pPT57dC5nZXRWYWx1ZShsKS5zZXQodSl9KSx0aGlzLnJlc29sdmVOb25lS2V5ZnJhbWVzKCl9fWNvbnN0IG1EPW5ldyBTZXQoWyJvcGFjaXR5IiwiY2xpcFBhdGgiLCJmaWx0ZXIiLCJ0cmFuc2Zvcm0iXSk7ZnVuY3Rpb24gRWsoZSx0LG4pe2lmKGU9PW51bGwpcmV0dXJuW107aWYoZSBpbnN0YW5jZW9mIEV2ZW50VGFyZ2V0KXJldHVybltlXTtpZih0eXBlb2YgZT09InN0cmluZyIpe2NvbnN0IGk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKTtyZXR1cm4gaT9BcnJheS5mcm9tKGkpOltdfXJldHVybiBBcnJheS5mcm9tKGUpLmZpbHRlcihyPT5yIT1udWxsKX1jb25zdCBQaz0oZSx0KT0+dCYmdHlwZW9mIGU9PSJudW1iZXIiP3QudHJhbnNmb3JtKGUpOmU7ZnVuY3Rpb24geWwoZSl7cmV0dXJuIERiKGUpJiYib2Zmc2V0SGVpZ2h0ImluIGUmJiEoIm93bmVyU1ZHRWxlbWVudCJpbiBlKX1jb25zdHtzY2hlZHVsZTpCcCxjYW5jZWw6cTN9PUdiKHF1ZXVlTWljcm90YXNrLCExKSxubj17eDohMSx5OiExfTtmdW5jdGlvbiBBaygpe3JldHVybiBubi54fHxubi55fWZ1bmN0aW9uIGdEKGUpe3JldHVybiBlPT09IngifHxlPT09InkiP25uW2VdP251bGw6KG5uW2VdPSEwLCgpPT57bm5bZV09ITF9KTpubi54fHxubi55P251bGw6KG5uLng9bm4ueT0hMCwoKT0+e25uLng9bm4ueT0hMX0pfWZ1bmN0aW9uIElrKGUsdCl7Y29uc3Qgbj1FayhlKSxyPW5ldyBBYm9ydENvbnRyb2xsZXIsaT17cGFzc2l2ZTohMCwuLi50LHNpZ25hbDpyLnNpZ25hbH07cmV0dXJuW24saSwoKT0+ci5hYm9ydCgpXX1mdW5jdGlvbiB5RChlKXtyZXR1cm4hKGUucG9pbnRlclR5cGU9PT0idG91Y2gifHxBaygpKX1mdW5jdGlvbiB2RChlLHQsbj17fSl7Y29uc3RbcixpLG9dPUlrKGUsbik7cmV0dXJuIHIuZm9yRWFjaChzPT57bGV0IGE9ITEsbD0hMSx1O2NvbnN0IGM9KCk9PntzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIseSl9LGQ9dz0+e3UmJih1KHcpLHU9dm9pZCAwKSxjKCl9LGg9dz0+e2E9ITEsd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsaCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLGgpLGwmJihsPSExLGQodykpfSxmPSgpPT57YT0hMCx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixoLGkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixoLGkpfSx5PXc9PntpZih3LnBvaW50ZXJUeXBlIT09InRvdWNoIil7aWYoYSl7bD0hMDtyZXR1cm59ZCh3KX19LG09dz0+e2lmKCF5RCh3KSlyZXR1cm47bD0hMTtjb25zdCBwPXQocyx3KTt0eXBlb2YgcD09ImZ1bmN0aW9uIiYmKHU9cCxzLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIseSxpKSl9O3MuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmVudGVyIixtLGkpLHMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLGYsaSl9KSxvfWNvbnN0IE5rPShlLHQpPT50P2U9PT10PyEwOk5rKGUsdC5wYXJlbnRFbGVtZW50KTohMSxVcD1lPT5lLnBvaW50ZXJUeXBlPT09Im1vdXNlIj90eXBlb2YgZS5idXR0b24hPSJudW1iZXIifHxlLmJ1dHRvbjw9MDplLmlzUHJpbWFyeSE9PSExLHhEPW5ldyBTZXQoWyJCVVRUT04iLCJJTlBVVCIsIlNFTEVDVCIsIlRFWFRBUkVBIiwiQSJdKTtmdW5jdGlvbiB3RChlKXtyZXR1cm4geEQuaGFzKGUudGFnTmFtZSl8fGUuaXNDb250ZW50RWRpdGFibGU9PT0hMH1jb25zdCBiRD1uZXcgU2V0KFsiSU5QVVQiLCJTRUxFQ1QiLCJURVhUQVJFQSJdKTtmdW5jdGlvbiBrRChlKXtyZXR1cm4gYkQuaGFzKGUudGFnTmFtZSl8fGUuaXNDb250ZW50RWRpdGFibGU9PT0hMH1jb25zdCB2bD1uZXcgV2Vha1NldDtmdW5jdGlvbiBNeShlKXtyZXR1cm4gdD0+e3Qua2V5PT09IkVudGVyIiYmZSh0KX19ZnVuY3Rpb24gS2MoZSx0KXtlLmRpc3BhdGNoRXZlbnQobmV3IFBvaW50ZXJFdmVudCgicG9pbnRlciIrdCx7aXNQcmltYXJ5OiEwLGJ1YmJsZXM6ITB9KSl9Y29uc3QgU0Q9KGUsdCk9Pntjb25zdCBuPWUuY3VycmVudFRhcmdldDtpZighbilyZXR1cm47Y29uc3Qgcj1NeSgoKT0+e2lmKHZsLmhhcyhuKSlyZXR1cm47S2MobiwiZG93biIpO2NvbnN0IGk9TXkoKCk9PntLYyhuLCJ1cCIpfSksbz0oKT0+S2MobiwiY2FuY2VsIik7bi5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsaSx0KSxuLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLG8sdCl9KTtuLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHIsdCksbi5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+bi5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixyKSx0KX07ZnVuY3Rpb24gTHkoZSl7cmV0dXJuIFVwKGUpJiYhQWsoKX1jb25zdCBPeT1uZXcgV2Vha1NldDtmdW5jdGlvbiBDRChlLHQsbj17fSl7Y29uc3RbcixpLG9dPUlrKGUsbikscz1hPT57Y29uc3QgbD1hLmN1cnJlbnRUYXJnZXQ7aWYoIUx5KGEpfHxPeS5oYXMoYSkpcmV0dXJuO3ZsLmFkZChsKSxuLnN0b3BQcm9wYWdhdGlvbiYmT3kuYWRkKGEpO2NvbnN0IHU9dChsLGEpLGM9KGYseSk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixkKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsaCksdmwuaGFzKGwpJiZ2bC5kZWxldGUobCksTHkoZikmJnR5cGVvZiB1PT0iZnVuY3Rpb24iJiZ1KGYse3N1Y2Nlc3M6eX0pfSxkPWY9PntjKGYsbD09PXdpbmRvd3x8bD09PWRvY3VtZW50fHxuLnVzZUdsb2JhbFRhcmdldHx8TmsobCxmLnRhcmdldCkpfSxoPWY9PntjKGYsITEpfTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixkLGkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixoLGkpfTtyZXR1cm4gci5mb3JFYWNoKGE9Pnsobi51c2VHbG9iYWxUYXJnZXQ\/d2luZG93OmEpLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixzLGkpLHlsKGEpJiYoYS5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdT0+U0QodSxpKSksIXdEKGEpJiYhYS5oYXNBdHRyaWJ1dGUoInRhYmluZGV4IikmJihhLnRhYkluZGV4PTApKX0pLG99ZnVuY3Rpb24gJHAoZSl7cmV0dXJuIERiKGUpJiYib3duZXJTVkdFbGVtZW50ImluIGV9Y29uc3QgeGw9bmV3IFdlYWtNYXA7bGV0IG1yO2NvbnN0IGprPShlLHQsbik9PihyLGkpPT5pJiZpWzBdP2lbMF1bZSsiU2l6ZSJdOiRwKHIpJiYiZ2V0QkJveCJpbiByP3IuZ2V0QkJveCgpW3RdOnJbbl0sVEQ9amsoImlubGluZSIsIndpZHRoIiwib2Zmc2V0V2lkdGgiKSxFRD1qaygiYmxvY2siLCJoZWlnaHQiLCJvZmZzZXRIZWlnaHQiKTtmdW5jdGlvbiBQRCh7dGFyZ2V0OmUsYm9yZGVyQm94U2l6ZTp0fSl7dmFyIG47KG49eGwuZ2V0KGUpKT09bnVsbHx8bi5mb3JFYWNoKHI9PntyKGUse2dldCB3aWR0aCgpe3JldHVybiBURChlLHQpfSxnZXQgaGVpZ2h0KCl7cmV0dXJuIEVEKGUsdCl9fSl9KX1mdW5jdGlvbiBBRChlKXtlLmZvckVhY2goUEQpfWZ1bmN0aW9uIElEKCl7dHlwZW9mIFJlc2l6ZU9ic2VydmVyPiJ1Inx8KG1yPW5ldyBSZXNpemVPYnNlcnZlcihBRCkpfWZ1bmN0aW9uIE5EKGUsdCl7bXJ8fElEKCk7Y29uc3Qgbj1FayhlKTtyZXR1cm4gbi5mb3JFYWNoKHI9PntsZXQgaT14bC5nZXQocik7aXx8KGk9bmV3IFNldCx4bC5zZXQocixpKSksaS5hZGQodCksbXI9PW51bGx8fG1yLm9ic2VydmUocil9KSwoKT0+e24uZm9yRWFjaChyPT57Y29uc3QgaT14bC5nZXQocik7aT09bnVsbHx8aS5kZWxldGUodCksaSE9bnVsbCYmaS5zaXplfHxtcj09bnVsbHx8bXIudW5vYnNlcnZlKHIpfSl9fWNvbnN0IHdsPW5ldyBTZXQ7bGV0IFppO2Z1bmN0aW9uIGpEKCl7Wmk9KCk9Pntjb25zdCBlPXtnZXQgd2lkdGgoKXtyZXR1cm4gd2luZG93LmlubmVyV2lkdGh9LGdldCBoZWlnaHQoKXtyZXR1cm4gd2luZG93LmlubmVySGVpZ2h0fX07d2wuZm9yRWFjaCh0PT50KGUpKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsWmkpfWZ1bmN0aW9uIHpEKGUpe3JldHVybiB3bC5hZGQoZSksWml8fGpEKCksKCk9Pnt3bC5kZWxldGUoZSksIXdsLnNpemUmJnR5cGVvZiBaaT09ImZ1bmN0aW9uIiYmKHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLFppKSxaaT12b2lkIDApfX1mdW5jdGlvbiBGeShlLHQpe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIj96RChlKTpORChlLHQpfWZ1bmN0aW9uIFJEKGUpe3JldHVybiAkcChlKSYmZS50YWdOYW1lPT09InN2ZyJ9Y29uc3QgREQ9Wy4uLlNrLExlLGZuXSxNRD1lPT5ERC5maW5kKGtrKGUpKSxfeT0oKT0+KHt0cmFuc2xhdGU6MCxzY2FsZToxLG9yaWdpbjowLG9yaWdpblBvaW50OjB9KSxlbz0oKT0+KHt4Ol95KCkseTpfeSgpfSksVnk9KCk9Pih7bWluOjAsbWF4OjB9KSxfZT0oKT0+KHt4OlZ5KCkseTpWeSgpfSksTEQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gV3UoZSl7cmV0dXJuIGUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCImJnR5cGVvZiBlLnN0YXJ0PT0iZnVuY3Rpb24ifWZ1bmN0aW9uIHRhKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyJ8fEFycmF5LmlzQXJyYXkoZSl9Y29uc3QgSHA9WyJhbmltYXRlIiwid2hpbGVJblZpZXciLCJ3aGlsZUZvY3VzIiwid2hpbGVIb3ZlciIsIndoaWxlVGFwIiwid2hpbGVEcmFnIiwiZXhpdCJdLHFwPVsiaW5pdGlhbCIsLi4uSHBdO2Z1bmN0aW9uIEt1KGUpe3JldHVybiBXdShlLmFuaW1hdGUpfHxxcC5zb21lKHQ9PnRhKGVbdF0pKX1mdW5jdGlvbiB6ayhlKXtyZXR1cm4hIShLdShlKXx8ZS52YXJpYW50cyl9ZnVuY3Rpb24gT0QoZSx0LG4pe2Zvcihjb25zdCByIGluIHQpe2NvbnN0IGk9dFtyXSxvPW5bcl07aWYoS2UoaSkpZS5hZGRWYWx1ZShyLGkpO2Vsc2UgaWYoS2UobykpZS5hZGRWYWx1ZShyLFJvKGkse293bmVyOmV9KSk7ZWxzZSBpZihvIT09aSlpZihlLmhhc1ZhbHVlKHIpKXtjb25zdCBzPWUuZ2V0VmFsdWUocik7cy5saXZlU3R5bGU9PT0hMD9zLmp1bXAoaSk6cy5oYXNBbmltYXRlZHx8cy5zZXQoaSl9ZWxzZXtjb25zdCBzPWUuZ2V0U3RhdGljVmFsdWUocik7ZS5hZGRWYWx1ZShyLFJvKHMhPT12b2lkIDA\/czppLHtvd25lcjplfSkpfX1mb3IoY29uc3QgciBpbiBuKXRbcl09PT12b2lkIDAmJmUucmVtb3ZlVmFsdWUocik7cmV0dXJuIHR9Y29uc3QgQmY9e2N1cnJlbnQ6bnVsbH0sUms9e2N1cnJlbnQ6ITF9LEZEPXR5cGVvZiB3aW5kb3c8InUiO2Z1bmN0aW9uIF9EKCl7aWYoUmsuY3VycmVudD0hMCwhIUZEKWlmKHdpbmRvdy5tYXRjaE1lZGlhKXtjb25zdCBlPXdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikiKSx0PSgpPT5CZi5jdXJyZW50PWUubWF0Y2hlcztlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdCksdCgpfWVsc2UgQmYuY3VycmVudD0hMX1jb25zdCBCeT1bIkFuaW1hdGlvblN0YXJ0IiwiQW5pbWF0aW9uQ29tcGxldGUiLCJVcGRhdGUiLCJCZWZvcmVMYXlvdXRNZWFzdXJlIiwiTGF5b3V0TWVhc3VyZSIsIkxheW91dEFuaW1hdGlvblN0YXJ0IiwiTGF5b3V0QW5pbWF0aW9uQ29tcGxldGUiXTtsZXQgbHU9e307ZnVuY3Rpb24gRGsoZSl7bHU9ZX1mdW5jdGlvbiBWRCgpe3JldHVybiBsdX1jbGFzcyBCRHtzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHModCxuLHIpe3JldHVybnt9fWNvbnN0cnVjdG9yKHtwYXJlbnQ6dCxwcm9wczpuLHByZXNlbmNlQ29udGV4dDpyLHJlZHVjZWRNb3Rpb25Db25maWc6aSxza2lwQW5pbWF0aW9uczpvLGJsb2NrSW5pdGlhbEFuaW1hdGlvbjpzLHZpc3VhbFN0YXRlOmF9LGw9e30pe3RoaXMuY3VycmVudD1udWxsLHRoaXMuY2hpbGRyZW49bmV3IFNldCx0aGlzLmlzVmFyaWFudE5vZGU9ITEsdGhpcy5pc0NvbnRyb2xsaW5nVmFyaWFudHM9ITEsdGhpcy5zaG91bGRSZWR1Y2VNb3Rpb249bnVsbCx0aGlzLnNob3VsZFNraXBBbmltYXRpb25zPSExLHRoaXMudmFsdWVzPW5ldyBNYXAsdGhpcy5LZXlmcmFtZVJlc29sdmVyPU1wLHRoaXMuZmVhdHVyZXM9e30sdGhpcy52YWx1ZVN1YnNjcmlwdGlvbnM9bmV3IE1hcCx0aGlzLnByZXZNb3Rpb25WYWx1ZXM9e30sdGhpcy5oYXNCZWVuTW91bnRlZD0hMSx0aGlzLmV2ZW50cz17fSx0aGlzLnByb3BFdmVudFN1YnNjcmlwdGlvbnM9e30sdGhpcy5ub3RpZnlVcGRhdGU9KCk9PnRoaXMubm90aWZ5KCJVcGRhdGUiLHRoaXMubGF0ZXN0VmFsdWVzKSx0aGlzLnJlbmRlcj0oKT0+e3RoaXMuY3VycmVudCYmKHRoaXMudHJpZ2dlckJ1aWxkKCksdGhpcy5yZW5kZXJJbnN0YW5jZSh0aGlzLmN1cnJlbnQsdGhpcy5yZW5kZXJTdGF0ZSx0aGlzLnByb3BzLnN0eWxlLHRoaXMucHJvamVjdGlvbikpfSx0aGlzLnJlbmRlclNjaGVkdWxlZEF0PTAsdGhpcy5zY2hlZHVsZVJlbmRlcj0oKT0+e2NvbnN0IGY9bHQubm93KCk7dGhpcy5yZW5kZXJTY2hlZHVsZWRBdDxmJiYodGhpcy5yZW5kZXJTY2hlZHVsZWRBdD1mLHZlLnJlbmRlcih0aGlzLnJlbmRlciwhMSwhMCkpfTtjb25zdHtsYXRlc3RWYWx1ZXM6dSxyZW5kZXJTdGF0ZTpjfT1hO3RoaXMubGF0ZXN0VmFsdWVzPXUsdGhpcy5iYXNlVGFyZ2V0PXsuLi51fSx0aGlzLmluaXRpYWxWYWx1ZXM9bi5pbml0aWFsP3suLi51fTp7fSx0aGlzLnJlbmRlclN0YXRlPWMsdGhpcy5wYXJlbnQ9dCx0aGlzLnByb3BzPW4sdGhpcy5wcmVzZW5jZUNvbnRleHQ9cix0aGlzLmRlcHRoPXQ\/dC5kZXB0aCsxOjAsdGhpcy5yZWR1Y2VkTW90aW9uQ29uZmlnPWksdGhpcy5za2lwQW5pbWF0aW9uc0NvbmZpZz1vLHRoaXMub3B0aW9ucz1sLHRoaXMuYmxvY2tJbml0aWFsQW5pbWF0aW9uPSEhcyx0aGlzLmlzQ29udHJvbGxpbmdWYXJpYW50cz1LdShuKSx0aGlzLmlzVmFyaWFudE5vZGU9emsobiksdGhpcy5pc1ZhcmlhbnROb2RlJiYodGhpcy52YXJpYW50Q2hpbGRyZW49bmV3IFNldCksdGhpcy5tYW51YWxseUFuaW1hdGVPbk1vdW50PSEhKHQmJnQuY3VycmVudCk7Y29uc3R7d2lsbENoYW5nZTpkLC4uLmh9PXRoaXMuc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzKG4se30sdGhpcyk7Zm9yKGNvbnN0IGYgaW4gaCl7Y29uc3QgeT1oW2ZdO3VbZl0hPT12b2lkIDAmJktlKHkpJiZ5LnNldCh1W2ZdKX19bW91bnQodCl7dmFyIG4scjtpZih0aGlzLmhhc0JlZW5Nb3VudGVkKWZvcihjb25zdCBpIGluIHRoaXMuaW5pdGlhbFZhbHVlcykobj10aGlzLnZhbHVlcy5nZXQoaSkpPT1udWxsfHxuLmp1bXAodGhpcy5pbml0aWFsVmFsdWVzW2ldKSx0aGlzLmxhdGVzdFZhbHVlc1tpXT10aGlzLmluaXRpYWxWYWx1ZXNbaV07dGhpcy5jdXJyZW50PXQsTEQuc2V0KHQsdGhpcyksdGhpcy5wcm9qZWN0aW9uJiYhdGhpcy5wcm9qZWN0aW9uLmluc3RhbmNlJiZ0aGlzLnByb2plY3Rpb24ubW91bnQodCksdGhpcy5wYXJlbnQmJnRoaXMuaXNWYXJpYW50Tm9kZSYmIXRoaXMuaXNDb250cm9sbGluZ1ZhcmlhbnRzJiYodGhpcy5yZW1vdmVGcm9tVmFyaWFudFRyZWU9dGhpcy5wYXJlbnQuYWRkVmFyaWFudENoaWxkKHRoaXMpKSx0aGlzLnZhbHVlcy5mb3JFYWNoKChpLG8pPT50aGlzLmJpbmRUb01vdGlvblZhbHVlKG8saSkpLHRoaXMucmVkdWNlZE1vdGlvbkNvbmZpZz09PSJuZXZlciI\/dGhpcy5zaG91bGRSZWR1Y2VNb3Rpb249ITE6dGhpcy5yZWR1Y2VkTW90aW9uQ29uZmlnPT09ImFsd2F5cyI\/dGhpcy5zaG91bGRSZWR1Y2VNb3Rpb249ITA6KFJrLmN1cnJlbnR8fF9EKCksdGhpcy5zaG91bGRSZWR1Y2VNb3Rpb249QmYuY3VycmVudCksdGhpcy5zaG91bGRTa2lwQW5pbWF0aW9ucz10aGlzLnNraXBBbmltYXRpb25zQ29uZmlnPz8hMSwocj10aGlzLnBhcmVudCk9PW51bGx8fHIuYWRkQ2hpbGQodGhpcyksdGhpcy51cGRhdGUodGhpcy5wcm9wcyx0aGlzLnByZXNlbmNlQ29udGV4dCksdGhpcy5oYXNCZWVuTW91bnRlZD0hMH11bm1vdW50KCl7dmFyIHQ7dGhpcy5wcm9qZWN0aW9uJiZ0aGlzLnByb2plY3Rpb24udW5tb3VudCgpLEhyKHRoaXMubm90aWZ5VXBkYXRlKSxIcih0aGlzLnJlbmRlciksdGhpcy52YWx1ZVN1YnNjcmlwdGlvbnMuZm9yRWFjaChuPT5uKCkpLHRoaXMudmFsdWVTdWJzY3JpcHRpb25zLmNsZWFyKCksdGhpcy5yZW1vdmVGcm9tVmFyaWFudFRyZWUmJnRoaXMucmVtb3ZlRnJvbVZhcmlhbnRUcmVlKCksKHQ9dGhpcy5wYXJlbnQpPT1udWxsfHx0LnJlbW92ZUNoaWxkKHRoaXMpO2Zvcihjb25zdCBuIGluIHRoaXMuZXZlbnRzKXRoaXMuZXZlbnRzW25dLmNsZWFyKCk7Zm9yKGNvbnN0IG4gaW4gdGhpcy5mZWF0dXJlcyl7Y29uc3Qgcj10aGlzLmZlYXR1cmVzW25dO3ImJihyLnVubW91bnQoKSxyLmlzTW91bnRlZD0hMSl9dGhpcy5jdXJyZW50PW51bGx9YWRkQ2hpbGQodCl7dGhpcy5jaGlsZHJlbi5hZGQodCksdGhpcy5lbnRlcmluZ0NoaWxkcmVuPz8odGhpcy5lbnRlcmluZ0NoaWxkcmVuPW5ldyBTZXQpLHRoaXMuZW50ZXJpbmdDaGlsZHJlbi5hZGQodCl9cmVtb3ZlQ2hpbGQodCl7dGhpcy5jaGlsZHJlbi5kZWxldGUodCksdGhpcy5lbnRlcmluZ0NoaWxkcmVuJiZ0aGlzLmVudGVyaW5nQ2hpbGRyZW4uZGVsZXRlKHQpfWJpbmRUb01vdGlvblZhbHVlKHQsbil7aWYodGhpcy52YWx1ZVN1YnNjcmlwdGlvbnMuaGFzKHQpJiZ0aGlzLnZhbHVlU3Vic2NyaXB0aW9ucy5nZXQodCkoKSxuLmFjY2VsZXJhdGUmJm1ELmhhcyh0KSYmdGhpcy5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe2NvbnN0e2ZhY3Rvcnk6cyxrZXlmcmFtZXM6YSx0aW1lczpsLGVhc2U6dSxkdXJhdGlvbjpjfT1uLmFjY2VsZXJhdGUsZD1uZXcgaGsoe2VsZW1lbnQ6dGhpcy5jdXJyZW50LG5hbWU6dCxrZXlmcmFtZXM6YSx0aW1lczpsLGVhc2U6dSxkdXJhdGlvbjpidChjKX0pLGg9cyhkKTt0aGlzLnZhbHVlU3Vic2NyaXB0aW9ucy5zZXQodCwoKT0+e2goKSxkLmNhbmNlbCgpfSk7cmV0dXJufWNvbnN0IHI9SG8uaGFzKHQpO3ImJnRoaXMub25CaW5kVHJhbnNmb3JtJiZ0aGlzLm9uQmluZFRyYW5zZm9ybSgpO2NvbnN0IGk9bi5vbigiY2hhbmdlIixzPT57dGhpcy5sYXRlc3RWYWx1ZXNbdF09cyx0aGlzLnByb3BzLm9uVXBkYXRlJiZ2ZS5wcmVSZW5kZXIodGhpcy5ub3RpZnlVcGRhdGUpLHImJnRoaXMucHJvamVjdGlvbiYmKHRoaXMucHJvamVjdGlvbi5pc1RyYW5zZm9ybURpcnR5PSEwKSx0aGlzLnNjaGVkdWxlUmVuZGVyKCl9KTtsZXQgbzt0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lk1vdGlvbkNoZWNrQXBwZWFyU3luYyYmKG89d2luZG93Lk1vdGlvbkNoZWNrQXBwZWFyU3luYyh0aGlzLHQsbikpLHRoaXMudmFsdWVTdWJzY3JpcHRpb25zLnNldCh0LCgpPT57aSgpLG8mJm8oKSxuLm93bmVyJiZuLnN0b3AoKX0pfXNvcnROb2RlUG9zaXRpb24odCl7cmV0dXJuIXRoaXMuY3VycmVudHx8IXRoaXMuc29ydEluc3RhbmNlTm9kZVBvc2l0aW9ufHx0aGlzLnR5cGUhPT10LnR5cGU\/MDp0aGlzLnNvcnRJbnN0YW5jZU5vZGVQb3NpdGlvbih0aGlzLmN1cnJlbnQsdC5jdXJyZW50KX11cGRhdGVGZWF0dXJlcygpe2xldCB0PSJhbmltYXRpb24iO2Zvcih0IGluIGx1KXtjb25zdCBuPWx1W3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0e2lzRW5hYmxlZDpyLEZlYXR1cmU6aX09bjtpZighdGhpcy5mZWF0dXJlc1t0XSYmaSYmcih0aGlzLnByb3BzKSYmKHRoaXMuZmVhdHVyZXNbdF09bmV3IGkodGhpcykpLHRoaXMuZmVhdHVyZXNbdF0pe2NvbnN0IG89dGhpcy5mZWF0dXJlc1t0XTtvLmlzTW91bnRlZD9vLnVwZGF0ZSgpOihvLm1vdW50KCksby5pc01vdW50ZWQ9ITApfX19dHJpZ2dlckJ1aWxkKCl7dGhpcy5idWlsZCh0aGlzLnJlbmRlclN0YXRlLHRoaXMubGF0ZXN0VmFsdWVzLHRoaXMucHJvcHMpfW1lYXN1cmVWaWV3cG9ydEJveCgpe3JldHVybiB0aGlzLmN1cnJlbnQ\/dGhpcy5tZWFzdXJlSW5zdGFuY2VWaWV3cG9ydEJveCh0aGlzLmN1cnJlbnQsdGhpcy5wcm9wcyk6X2UoKX1nZXRTdGF0aWNWYWx1ZSh0KXtyZXR1cm4gdGhpcy5sYXRlc3RWYWx1ZXNbdF19c2V0U3RhdGljVmFsdWUodCxuKXt0aGlzLmxhdGVzdFZhbHVlc1t0XT1ufXVwZGF0ZSh0LG4peyh0LnRyYW5zZm9ybVRlbXBsYXRlfHx0aGlzLnByb3BzLnRyYW5zZm9ybVRlbXBsYXRlKSYmdGhpcy5zY2hlZHVsZVJlbmRlcigpLHRoaXMucHJldlByb3BzPXRoaXMucHJvcHMsdGhpcy5wcm9wcz10LHRoaXMucHJldlByZXNlbmNlQ29udGV4dD10aGlzLnByZXNlbmNlQ29udGV4dCx0aGlzLnByZXNlbmNlQ29udGV4dD1uO2ZvcihsZXQgcj0wO3I8QnkubGVuZ3RoO3IrKyl7Y29uc3QgaT1CeVtyXTt0aGlzLnByb3BFdmVudFN1YnNjcmlwdGlvbnNbaV0mJih0aGlzLnByb3BFdmVudFN1YnNjcmlwdGlvbnNbaV0oKSxkZWxldGUgdGhpcy5wcm9wRXZlbnRTdWJzY3JpcHRpb25zW2ldKTtjb25zdCBvPSJvbiIraSxzPXRbb107cyYmKHRoaXMucHJvcEV2ZW50U3Vic2NyaXB0aW9uc1tpXT10aGlzLm9uKGkscykpfXRoaXMucHJldk1vdGlvblZhbHVlcz1PRCh0aGlzLHRoaXMuc2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzKHQsdGhpcy5wcmV2UHJvcHN8fHt9LHRoaXMpLHRoaXMucHJldk1vdGlvblZhbHVlcyksdGhpcy5oYW5kbGVDaGlsZE1vdGlvblZhbHVlJiZ0aGlzLmhhbmRsZUNoaWxkTW90aW9uVmFsdWUoKX1nZXRQcm9wcygpe3JldHVybiB0aGlzLnByb3BzfWdldFZhcmlhbnQodCl7cmV0dXJuIHRoaXMucHJvcHMudmFyaWFudHM\/dGhpcy5wcm9wcy52YXJpYW50c1t0XTp2b2lkIDB9Z2V0RGVmYXVsdFRyYW5zaXRpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy50cmFuc2l0aW9ufWdldFRyYW5zZm9ybVBhZ2VQb2ludCgpe3JldHVybiB0aGlzLnByb3BzLnRyYW5zZm9ybVBhZ2VQb2ludH1nZXRDbG9zZXN0VmFyaWFudE5vZGUoKXtyZXR1cm4gdGhpcy5pc1ZhcmlhbnROb2RlP3RoaXM6dGhpcy5wYXJlbnQ\/dGhpcy5wYXJlbnQuZ2V0Q2xvc2VzdFZhcmlhbnROb2RlKCk6dm9pZCAwfWFkZFZhcmlhbnRDaGlsZCh0KXtjb25zdCBuPXRoaXMuZ2V0Q2xvc2VzdFZhcmlhbnROb2RlKCk7aWYobilyZXR1cm4gbi52YXJpYW50Q2hpbGRyZW4mJm4udmFyaWFudENoaWxkcmVuLmFkZCh0KSwoKT0+bi52YXJpYW50Q2hpbGRyZW4uZGVsZXRlKHQpfWFkZFZhbHVlKHQsbil7Y29uc3Qgcj10aGlzLnZhbHVlcy5nZXQodCk7biE9PXImJihyJiZ0aGlzLnJlbW92ZVZhbHVlKHQpLHRoaXMuYmluZFRvTW90aW9uVmFsdWUodCxuKSx0aGlzLnZhbHVlcy5zZXQodCxuKSx0aGlzLmxhdGVzdFZhbHVlc1t0XT1uLmdldCgpKX1yZW1vdmVWYWx1ZSh0KXt0aGlzLnZhbHVlcy5kZWxldGUodCk7Y29uc3Qgbj10aGlzLnZhbHVlU3Vic2NyaXB0aW9ucy5nZXQodCk7biYmKG4oKSx0aGlzLnZhbHVlU3Vic2NyaXB0aW9ucy5kZWxldGUodCkpLGRlbGV0ZSB0aGlzLmxhdGVzdFZhbHVlc1t0XSx0aGlzLnJlbW92ZVZhbHVlRnJvbVJlbmRlclN0YXRlKHQsdGhpcy5yZW5kZXJTdGF0ZSl9aGFzVmFsdWUodCl7cmV0dXJuIHRoaXMudmFsdWVzLmhhcyh0KX1nZXRWYWx1ZSh0LG4pe2lmKHRoaXMucHJvcHMudmFsdWVzJiZ0aGlzLnByb3BzLnZhbHVlc1t0XSlyZXR1cm4gdGhpcy5wcm9wcy52YWx1ZXNbdF07bGV0IHI9dGhpcy52YWx1ZXMuZ2V0KHQpO3JldHVybiByPT09dm9pZCAwJiZuIT09dm9pZCAwJiYocj1SbyhuPT09bnVsbD92b2lkIDA6bix7b3duZXI6dGhpc30pLHRoaXMuYWRkVmFsdWUodCxyKSkscn1yZWFkVmFsdWUodCxuKXtsZXQgcj10aGlzLmxhdGVzdFZhbHVlc1t0XSE9PXZvaWQgMHx8IXRoaXMuY3VycmVudD90aGlzLmxhdGVzdFZhbHVlc1t0XTp0aGlzLmdldEJhc2VUYXJnZXRGcm9tUHJvcHModGhpcy5wcm9wcyx0KT8\/dGhpcy5yZWFkVmFsdWVGcm9tSW5zdGFuY2UodGhpcy5jdXJyZW50LHQsdGhpcy5vcHRpb25zKTtyZXR1cm4gciE9bnVsbCYmKHR5cGVvZiByPT0ic3RyaW5nIiYmKFJiKHIpfHxNYihyKSk\/cj1wYXJzZUZsb2F0KHIpOiFNRChyKSYmZm4udGVzdChuKSYmKHI9VGsodCxuKSksdGhpcy5zZXRCYXNlVGFyZ2V0KHQsS2Uocik\/ci5nZXQoKTpyKSksS2Uocik\/ci5nZXQoKTpyfXNldEJhc2VUYXJnZXQodCxuKXt0aGlzLmJhc2VUYXJnZXRbdF09bn1nZXRCYXNlVGFyZ2V0KHQpe3ZhciBvO2NvbnN0e2luaXRpYWw6bn09dGhpcy5wcm9wcztsZXQgcjtpZih0eXBlb2Ygbj09InN0cmluZyJ8fHR5cGVvZiBuPT0ib2JqZWN0Iil7Y29uc3Qgcz1GcCh0aGlzLnByb3BzLG4sKG89dGhpcy5wcmVzZW5jZUNvbnRleHQpPT1udWxsP3ZvaWQgMDpvLmN1c3RvbSk7cyYmKHI9c1t0XSl9aWYobiYmciE9PXZvaWQgMClyZXR1cm4gcjtjb25zdCBpPXRoaXMuZ2V0QmFzZVRhcmdldEZyb21Qcm9wcyh0aGlzLnByb3BzLHQpO3JldHVybiBpIT09dm9pZCAwJiYhS2UoaSk\/aTp0aGlzLmluaXRpYWxWYWx1ZXNbdF0hPT12b2lkIDAmJnI9PT12b2lkIDA\/dm9pZCAwOnRoaXMuYmFzZVRhcmdldFt0XX1vbih0LG4pe3JldHVybiB0aGlzLmV2ZW50c1t0XXx8KHRoaXMuZXZlbnRzW3RdPW5ldyBDcCksdGhpcy5ldmVudHNbdF0uYWRkKG4pfW5vdGlmeSh0LC4uLm4pe3RoaXMuZXZlbnRzW3RdJiZ0aGlzLmV2ZW50c1t0XS5ub3RpZnkoLi4ubil9c2NoZWR1bGVSZW5kZXJNaWNyb3Rhc2soKXtCcC5yZW5kZXIodGhpcy5yZW5kZXIpfX1jbGFzcyBNayBleHRlbmRzIEJEe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLktleWZyYW1lUmVzb2x2ZXI9cER9c29ydEluc3RhbmNlTm9kZVBvc2l0aW9uKHQsbil7cmV0dXJuIHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikmMj8xOi0xfWdldEJhc2VUYXJnZXRGcm9tUHJvcHModCxuKXtjb25zdCByPXQuc3R5bGU7cmV0dXJuIHI\/cltuXTp2b2lkIDB9cmVtb3ZlVmFsdWVGcm9tUmVuZGVyU3RhdGUodCx7dmFyczpuLHN0eWxlOnJ9KXtkZWxldGUgblt0XSxkZWxldGUgclt0XX1oYW5kbGVDaGlsZE1vdGlvblZhbHVlKCl7dGhpcy5jaGlsZFN1YnNjcmlwdGlvbiYmKHRoaXMuY2hpbGRTdWJzY3JpcHRpb24oKSxkZWxldGUgdGhpcy5jaGlsZFN1YnNjcmlwdGlvbik7Y29uc3R7Y2hpbGRyZW46dH09dGhpcy5wcm9wcztLZSh0KSYmKHRoaXMuY2hpbGRTdWJzY3JpcHRpb249dC5vbigiY2hhbmdlIixuPT57dGhpcy5jdXJyZW50JiYodGhpcy5jdXJyZW50LnRleHRDb250ZW50PWAke259YCl9KSl9fWNsYXNzIEdye2NvbnN0cnVjdG9yKHQpe3RoaXMuaXNNb3VudGVkPSExLHRoaXMubm9kZT10fXVwZGF0ZSgpe319ZnVuY3Rpb24gTGsoe3RvcDplLGxlZnQ6dCxyaWdodDpuLGJvdHRvbTpyfSl7cmV0dXJue3g6e21pbjp0LG1heDpufSx5OnttaW46ZSxtYXg6cn19fWZ1bmN0aW9uIFVEKHt4OmUseTp0fSl7cmV0dXJue3RvcDp0Lm1pbixyaWdodDplLm1heCxib3R0b206dC5tYXgsbGVmdDplLm1pbn19ZnVuY3Rpb24gJEQoZSx0KXtpZighdClyZXR1cm4gZTtjb25zdCBuPXQoe3g6ZS5sZWZ0LHk6ZS50b3B9KSxyPXQoe3g6ZS5yaWdodCx5OmUuYm90dG9tfSk7cmV0dXJue3RvcDpuLnksbGVmdDpuLngsYm90dG9tOnIueSxyaWdodDpyLnh9fWZ1bmN0aW9uIEdjKGUpe3JldHVybiBlPT09dm9pZCAwfHxlPT09MX1mdW5jdGlvbiBVZih7c2NhbGU6ZSxzY2FsZVg6dCxzY2FsZVk6bn0pe3JldHVybiFHYyhlKXx8IUdjKHQpfHwhR2Mobil9ZnVuY3Rpb24gb2koZSl7cmV0dXJuIFVmKGUpfHxPayhlKXx8ZS56fHxlLnJvdGF0ZXx8ZS5yb3RhdGVYfHxlLnJvdGF0ZVl8fGUuc2tld1h8fGUuc2tld1l9ZnVuY3Rpb24gT2soZSl7cmV0dXJuIFV5KGUueCl8fFV5KGUueSl9ZnVuY3Rpb24gVXkoZSl7cmV0dXJuIGUmJmUhPT0iMCUifWZ1bmN0aW9uIHV1KGUsdCxuKXtjb25zdCByPWUtbixpPXQqcjtyZXR1cm4gbitpfWZ1bmN0aW9uICR5KGUsdCxuLHIsaSl7cmV0dXJuIGkhPT12b2lkIDAmJihlPXV1KGUsaSxyKSksdXUoZSxuLHIpK3R9ZnVuY3Rpb24gJGYoZSx0PTAsbj0xLHIsaSl7ZS5taW49JHkoZS5taW4sdCxuLHIsaSksZS5tYXg9JHkoZS5tYXgsdCxuLHIsaSl9ZnVuY3Rpb24gRmsoZSx7eDp0LHk6bn0peyRmKGUueCx0LnRyYW5zbGF0ZSx0LnNjYWxlLHQub3JpZ2luUG9pbnQpLCRmKGUueSxuLnRyYW5zbGF0ZSxuLnNjYWxlLG4ub3JpZ2luUG9pbnQpfWNvbnN0IEh5PS45OTk5OTk5OTk5OTkscXk9MS4wMDAwMDAwMDAwMDAxO2Z1bmN0aW9uIEhEKGUsdCxuLHI9ITEpe3ZhciBhO2NvbnN0IGk9bi5sZW5ndGg7aWYoIWkpcmV0dXJuO3QueD10Lnk9MTtsZXQgbyxzO2ZvcihsZXQgbD0wO2w8aTtsKyspe289bltsXSxzPW8ucHJvamVjdGlvbkRlbHRhO2NvbnN0e3Zpc3VhbEVsZW1lbnQ6dX09by5vcHRpb25zO3UmJnUucHJvcHMuc3R5bGUmJnUucHJvcHMuc3R5bGUuZGlzcGxheT09PSJjb250ZW50cyJ8fChyJiZvLm9wdGlvbnMubGF5b3V0U2Nyb2xsJiZvLnNjcm9sbCYmbyE9PW8ucm9vdCYmbm8oZSx7eDotby5zY3JvbGwub2Zmc2V0LngseTotby5zY3JvbGwub2Zmc2V0Lnl9KSxzJiYodC54Kj1zLnguc2NhbGUsdC55Kj1zLnkuc2NhbGUsRmsoZSxzKSksciYmb2koby5sYXRlc3RWYWx1ZXMpJiZubyhlLG8ubGF0ZXN0VmFsdWVzLChhPW8ubGF5b3V0KT09bnVsbD92b2lkIDA6YS5sYXlvdXRCb3gpKX10Lng8cXkmJnQueD5IeSYmKHQueD0xKSx0Lnk8cXkmJnQueT5IeSYmKHQueT0xKX1mdW5jdGlvbiB0byhlLHQpe2UubWluPWUubWluK3QsZS5tYXg9ZS5tYXgrdH1mdW5jdGlvbiBXeShlLHQsbixyLGk9LjUpe2NvbnN0IG89UGUoZS5taW4sZS5tYXgsaSk7JGYoZSx0LG4sbyxyKX1mdW5jdGlvbiBLeShlLHQpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyI\/cGFyc2VGbG9hdChlKS8xMDAqKHQubWF4LXQubWluKTplfWZ1bmN0aW9uIG5vKGUsdCxuKXtjb25zdCByPW4\/P2U7V3koZS54LEt5KHQueCxyLngpLHQuc2NhbGVYLHQuc2NhbGUsdC5vcmlnaW5YKSxXeShlLnksS3kodC55LHIueSksdC5zY2FsZVksdC5zY2FsZSx0Lm9yaWdpblkpfWZ1bmN0aW9uIF9rKGUsdCl7cmV0dXJuIExrKCREKGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdCkpfWZ1bmN0aW9uIHFEKGUsdCxuKXtjb25zdCByPV9rKGUsbikse3Njcm9sbDppfT10O3JldHVybiBpJiYodG8oci54LGkub2Zmc2V0LngpLHRvKHIueSxpLm9mZnNldC55KSkscn1jb25zdCBXRD17eDoidHJhbnNsYXRlWCIseToidHJhbnNsYXRlWSIsejoidHJhbnNsYXRlWiIsdHJhbnNmb3JtUGVyc3BlY3RpdmU6InBlcnNwZWN0aXZlIn0sS0Q9JG8ubGVuZ3RoO2Z1bmN0aW9uIEdEKGUsdCxuKXtsZXQgcj0iIixpPSEwO2ZvcihsZXQgbz0wO288S0Q7bysrKXtjb25zdCBzPSRvW29dLGE9ZVtzXTtpZihhPT09dm9pZCAwKWNvbnRpbnVlO2xldCBsPSEwO2lmKHR5cGVvZiBhPT0ibnVtYmVyIilsPWE9PT0ocy5zdGFydHNXaXRoKCJzY2FsZSIpPzE6MCk7ZWxzZXtjb25zdCB1PXBhcnNlRmxvYXQoYSk7bD1zLnN0YXJ0c1dpdGgoInNjYWxlIik\/dT09PTE6dT09PTB9aWYoIWx8fG4pe2NvbnN0IHU9UGsoYSxWcFtzXSk7aWYoIWwpe2k9ITE7Y29uc3QgYz1XRFtzXXx8cztyKz1gJHtjfSgke3V9KSBgfW4mJih0W3NdPXUpfX1yZXR1cm4gcj1yLnRyaW0oKSxuP3I9bih0LGk\/IiI6cik6aSYmKHI9Im5vbmUiKSxyfWZ1bmN0aW9uIFdwKGUsdCxuKXtjb25zdHtzdHlsZTpyLHZhcnM6aSx0cmFuc2Zvcm1PcmlnaW46b309ZTtsZXQgcz0hMSxhPSExO2Zvcihjb25zdCBsIGluIHQpe2NvbnN0IHU9dFtsXTtpZihIby5oYXMobCkpe3M9ITA7Y29udGludWV9ZWxzZSBpZihRYihsKSl7aVtsXT11O2NvbnRpbnVlfWVsc2V7Y29uc3QgYz1Qayh1LFZwW2xdKTtsLnN0YXJ0c1dpdGgoIm9yaWdpbiIpPyhhPSEwLG9bbF09Yyk6cltsXT1jfX1pZih0LnRyYW5zZm9ybXx8KHN8fG4\/ci50cmFuc2Zvcm09R0QodCxlLnRyYW5zZm9ybSxuKTpyLnRyYW5zZm9ybSYmKHIudHJhbnNmb3JtPSJub25lIikpLGEpe2NvbnN0e29yaWdpblg6bD0iNTAlIixvcmlnaW5ZOnU9IjUwJSIsb3JpZ2luWjpjPTB9PW87ci50cmFuc2Zvcm1PcmlnaW49YCR7bH0gJHt1fSAke2N9YH19ZnVuY3Rpb24gVmsoZSx7c3R5bGU6dCx2YXJzOm59LHIsaSl7Y29uc3Qgbz1lLnN0eWxlO2xldCBzO2ZvcihzIGluIHQpb1tzXT10W3NdO2k9PW51bGx8fGkuYXBwbHlQcm9qZWN0aW9uU3R5bGVzKG8scik7Zm9yKHMgaW4gbilvLnNldFByb3BlcnR5KHMsbltzXSl9ZnVuY3Rpb24gR3koZSx0KXtyZXR1cm4gdC5tYXg9PT10Lm1pbj8wOmUvKHQubWF4LXQubWluKSoxMDB9Y29uc3QgaXM9e2NvcnJlY3Q6KGUsdCk9PntpZighdC50YXJnZXQpcmV0dXJuIGU7aWYodHlwZW9mIGU9PSJzdHJpbmciKWlmKFEudGVzdChlKSllPXBhcnNlRmxvYXQoZSk7ZWxzZSByZXR1cm4gZTtjb25zdCBuPUd5KGUsdC50YXJnZXQueCkscj1HeShlLHQudGFyZ2V0LnkpO3JldHVybmAke259JSAke3J9JWB9fSxZRD17Y29ycmVjdDooZSx7dHJlZVNjYWxlOnQscHJvamVjdGlvbkRlbHRhOm59KT0+e2NvbnN0IHI9ZSxpPWZuLnBhcnNlKGUpO2lmKGkubGVuZ3RoPjUpcmV0dXJuIHI7Y29uc3Qgbz1mbi5jcmVhdGVUcmFuc2Zvcm1lcihlKSxzPXR5cGVvZiBpWzBdIT0ibnVtYmVyIj8xOjAsYT1uLnguc2NhbGUqdC54LGw9bi55LnNjYWxlKnQueTtpWzArc10vPWEsaVsxK3NdLz1sO2NvbnN0IHU9UGUoYSxsLC41KTtyZXR1cm4gdHlwZW9mIGlbMitzXT09Im51bWJlciImJihpWzIrc10vPXUpLHR5cGVvZiBpWzMrc109PSJudW1iZXIiJiYoaVszK3NdLz11KSxvKGkpfX0sSGY9e2JvcmRlclJhZGl1czp7Li4uaXMsYXBwbHlUbzpbImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsImJvcmRlckJvdHRvbUxlZnRSYWRpdXMiLCJib3JkZXJCb3R0b21SaWdodFJhZGl1cyJdfSxib3JkZXJUb3BMZWZ0UmFkaXVzOmlzLGJvcmRlclRvcFJpZ2h0UmFkaXVzOmlzLGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6aXMsYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6aXMsYm94U2hhZG93OllEfTtmdW5jdGlvbiBCayhlLHtsYXlvdXQ6dCxsYXlvdXRJZDpufSl7cmV0dXJuIEhvLmhhcyhlKXx8ZS5zdGFydHNXaXRoKCJvcmlnaW4iKXx8KHR8fG4hPT12b2lkIDApJiYoISFIZltlXXx8ZT09PSJvcGFjaXR5Iil9ZnVuY3Rpb24gS3AoZSx0LG4pe3ZhciBzO2NvbnN0IHI9ZS5zdHlsZSxpPXQ9PW51bGw\/dm9pZCAwOnQuc3R5bGUsbz17fTtpZighcilyZXR1cm4gbztmb3IoY29uc3QgYSBpbiByKShLZShyW2FdKXx8aSYmS2UoaVthXSl8fEJrKGEsZSl8fCgocz1uPT1udWxsP3ZvaWQgMDpuLmdldFZhbHVlKGEpKT09bnVsbD92b2lkIDA6cy5saXZlU3R5bGUpIT09dm9pZCAwKSYmKG9bYV09clthXSk7cmV0dXJuIG99ZnVuY3Rpb24gUUQoZSl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpfWNsYXNzIFhEIGV4dGVuZHMgTWt7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0iaHRtbCIsdGhpcy5yZW5kZXJJbnN0YW5jZT1Wa31yZWFkVmFsdWVGcm9tSW5zdGFuY2UodCxuKXt2YXIgcjtpZihIby5oYXMobikpcmV0dXJuKHI9dGhpcy5wcm9qZWN0aW9uKSE9bnVsbCYmci5pc1Byb2plY3Rpbmc\/TmYobik6Z1IodCxuKTt7Y29uc3QgaT1RRCh0KSxvPShRYihuKT9pLmdldFByb3BlcnR5VmFsdWUobik6aVtuXSl8fDA7cmV0dXJuIHR5cGVvZiBvPT0ic3RyaW5nIj9vLnRyaW0oKTpvfX1tZWFzdXJlSW5zdGFuY2VWaWV3cG9ydEJveCh0LHt0cmFuc2Zvcm1QYWdlUG9pbnQ6bn0pe3JldHVybiBfayh0LG4pfWJ1aWxkKHQsbixyKXtXcCh0LG4sci50cmFuc2Zvcm1UZW1wbGF0ZSl9c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzKHQsbixyKXtyZXR1cm4gS3AodCxuLHIpfX1jb25zdCBKRD17b2Zmc2V0OiJzdHJva2UtZGFzaG9mZnNldCIsYXJyYXk6InN0cm9rZS1kYXNoYXJyYXkifSxaRD17b2Zmc2V0OiJzdHJva2VEYXNob2Zmc2V0IixhcnJheToic3Ryb2tlRGFzaGFycmF5In07ZnVuY3Rpb24gZU0oZSx0LG49MSxyPTAsaT0hMCl7ZS5wYXRoTGVuZ3RoPTE7Y29uc3Qgbz1pP0pEOlpEO2Vbby5vZmZzZXRdPWAkey1yfWAsZVtvLmFycmF5XT1gJHt0fSAke259YH1jb25zdCB0TT1bIm9mZnNldERpc3RhbmNlIiwib2Zmc2V0UGF0aCIsIm9mZnNldFJvdGF0ZSIsIm9mZnNldEFuY2hvciJdO2Z1bmN0aW9uIFVrKGUse2F0dHJYOnQsYXR0clk6bixhdHRyU2NhbGU6cixwYXRoTGVuZ3RoOmkscGF0aFNwYWNpbmc6bz0xLHBhdGhPZmZzZXQ6cz0wLC4uLmF9LGwsdSxjKXtpZihXcChlLGEsdSksbCl7ZS5zdHlsZS52aWV3Qm94JiYoZS5hdHRycy52aWV3Qm94PWUuc3R5bGUudmlld0JveCk7cmV0dXJufWUuYXR0cnM9ZS5zdHlsZSxlLnN0eWxlPXt9O2NvbnN0e2F0dHJzOmQsc3R5bGU6aH09ZTtkLnRyYW5zZm9ybSYmKGgudHJhbnNmb3JtPWQudHJhbnNmb3JtLGRlbGV0ZSBkLnRyYW5zZm9ybSksKGgudHJhbnNmb3JtfHxkLnRyYW5zZm9ybU9yaWdpbikmJihoLnRyYW5zZm9ybU9yaWdpbj1kLnRyYW5zZm9ybU9yaWdpbj8\/IjUwJSA1MCUiLGRlbGV0ZSBkLnRyYW5zZm9ybU9yaWdpbiksaC50cmFuc2Zvcm0mJihoLnRyYW5zZm9ybUJveD0oYz09bnVsbD92b2lkIDA6Yy50cmFuc2Zvcm1Cb3gpPz8iZmlsbC1ib3giLGRlbGV0ZSBkLnRyYW5zZm9ybUJveCk7Zm9yKGNvbnN0IGYgb2YgdE0pZFtmXSE9PXZvaWQgMCYmKGhbZl09ZFtmXSxkZWxldGUgZFtmXSk7dCE9PXZvaWQgMCYmKGQueD10KSxuIT09dm9pZCAwJiYoZC55PW4pLHIhPT12b2lkIDAmJihkLnNjYWxlPXIpLGkhPT12b2lkIDAmJmVNKGQsaSxvLHMsITEpfWNvbnN0ICRrPW5ldyBTZXQoWyJiYXNlRnJlcXVlbmN5IiwiZGlmZnVzZUNvbnN0YW50Iiwia2VybmVsTWF0cml4Iiwia2VybmVsVW5pdExlbmd0aCIsImtleVNwbGluZXMiLCJrZXlUaW1lcyIsImxpbWl0aW5nQ29uZUFuZ2xlIiwibWFya2VySGVpZ2h0IiwibWFya2VyV2lkdGgiLCJudW1PY3RhdmVzIiwidGFyZ2V0WCIsInRhcmdldFkiLCJzdXJmYWNlU2NhbGUiLCJzcGVjdWxhckNvbnN0YW50Iiwic3BlY3VsYXJFeHBvbmVudCIsInN0ZERldmlhdGlvbiIsInRhYmxlVmFsdWVzIiwidmlld0JveCIsImdyYWRpZW50VHJhbnNmb3JtIiwicGF0aExlbmd0aCIsInN0YXJ0T2Zmc2V0IiwidGV4dExlbmd0aCIsImxlbmd0aEFkanVzdCJdKSxIaz1lPT50eXBlb2YgZT09InN0cmluZyImJmUudG9Mb3dlckNhc2UoKT09PSJzdmciO2Z1bmN0aW9uIG5NKGUsdCxuLHIpe1ZrKGUsdCx2b2lkIDAscik7Zm9yKGNvbnN0IGkgaW4gdC5hdHRycyllLnNldEF0dHJpYnV0ZSgkay5oYXMoaSk\/aTpfcChpKSx0LmF0dHJzW2ldKX1mdW5jdGlvbiBxayhlLHQsbil7Y29uc3Qgcj1LcChlLHQsbik7Zm9yKGNvbnN0IGkgaW4gZSlpZihLZShlW2ldKXx8S2UodFtpXSkpe2NvbnN0IG89JG8uaW5kZXhPZihpKSE9PS0xPyJhdHRyIitpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2kuc3Vic3RyaW5nKDEpOmk7cltvXT1lW2ldfXJldHVybiByfWNsYXNzIHJNIGV4dGVuZHMgTWt7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudHlwZT0ic3ZnIix0aGlzLmlzU1ZHVGFnPSExLHRoaXMubWVhc3VyZUluc3RhbmNlVmlld3BvcnRCb3g9X2V9Z2V0QmFzZVRhcmdldEZyb21Qcm9wcyh0LG4pe3JldHVybiB0W25dfXJlYWRWYWx1ZUZyb21JbnN0YW5jZSh0LG4pe2lmKEhvLmhhcyhuKSl7Y29uc3Qgcj1DayhuKTtyZXR1cm4gciYmci5kZWZhdWx0fHwwfXJldHVybiBuPSRrLmhhcyhuKT9uOl9wKG4pLHQuZ2V0QXR0cmlidXRlKG4pfXNjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wcyh0LG4scil7cmV0dXJuIHFrKHQsbixyKX1idWlsZCh0LG4scil7VWsodCxuLHRoaXMuaXNTVkdUYWcsci50cmFuc2Zvcm1UZW1wbGF0ZSxyLnN0eWxlKX1yZW5kZXJJbnN0YW5jZSh0LG4scixpKXtuTSh0LG4scixpKX1tb3VudCh0KXt0aGlzLmlzU1ZHVGFnPUhrKHQudGFnTmFtZSksc3VwZXIubW91bnQodCl9fWNvbnN0IGlNPXFwLmxlbmd0aDtmdW5jdGlvbiBXayhlKXtpZighZSlyZXR1cm47aWYoIWUuaXNDb250cm9sbGluZ1ZhcmlhbnRzKXtjb25zdCBuPWUucGFyZW50P1drKGUucGFyZW50KXx8e306e307cmV0dXJuIGUucHJvcHMuaW5pdGlhbCE9PXZvaWQgMCYmKG4uaW5pdGlhbD1lLnByb3BzLmluaXRpYWwpLG59Y29uc3QgdD17fTtmb3IobGV0IG49MDtuPGlNO24rKyl7Y29uc3Qgcj1xcFtuXSxpPWUucHJvcHNbcl07KHRhKGkpfHxpPT09ITEpJiYodFtyXT1pKX1yZXR1cm4gdH1mdW5jdGlvbiBLayhlLHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiExO2NvbnN0IG49dC5sZW5ndGg7aWYobiE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wO3I8bjtyKyspaWYodFtyXSE9PWVbcl0pcmV0dXJuITE7cmV0dXJuITB9Y29uc3Qgb009Wy4uLkhwXS5yZXZlcnNlKCksc009SHAubGVuZ3RoO2Z1bmN0aW9uIGFNKGUpe3JldHVybiB0PT5Qcm9taXNlLmFsbCh0Lm1hcCgoe2FuaW1hdGlvbjpuLG9wdGlvbnM6cn0pPT5yRChlLG4scikpKX1mdW5jdGlvbiBsTShlKXtsZXQgdD1hTShlKSxuPVl5KCkscj0hMCxpPSExO2NvbnN0IG89dT0+KGMsZCk9Pnt2YXIgZjtjb25zdCBoPWtpKGUsZCx1PT09ImV4aXQiPyhmPWUucHJlc2VuY2VDb250ZXh0KT09bnVsbD92b2lkIDA6Zi5jdXN0b206dm9pZCAwKTtpZihoKXtjb25zdHt0cmFuc2l0aW9uOnksdHJhbnNpdGlvbkVuZDptLC4uLnd9PWg7Yz17Li4uYywuLi53LC4uLm19fXJldHVybiBjfTtmdW5jdGlvbiBzKHUpe3Q9dShlKX1mdW5jdGlvbiBhKHUpe2NvbnN0e3Byb3BzOmN9PWUsZD1XayhlLnBhcmVudCl8fHt9LGg9W10sZj1uZXcgU2V0O2xldCB5PXt9LG09MS8wO2ZvcihsZXQgcD0wO3A8c007cCsrKXtjb25zdCB2PW9NW3BdLHg9blt2XSxrPWNbdl0hPT12b2lkIDA\/Y1t2XTpkW3ZdLFQ9dGEoayksQz12PT09dT94LmlzQWN0aXZlOm51bGw7Qz09PSExJiYobT1wKTtsZXQgUD1rPT09ZFt2XSYmayE9PWNbdl0mJlQ7aWYoUCYmKHJ8fGkpJiZlLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQmJihQPSExKSx4LnByb3RlY3RlZEtleXM9ey4uLnl9LCF4LmlzQWN0aXZlJiZDPT09bnVsbHx8IWsmJiF4LnByZXZQcm9wfHxXdShrKXx8dHlwZW9mIGs9PSJib29sZWFuIiljb250aW51ZTtpZih2PT09ImV4aXQiJiZ4LmlzQWN0aXZlJiZDIT09ITApe3gucHJldlJlc29sdmVkVmFsdWVzJiYoeT17Li4ueSwuLi54LnByZXZSZXNvbHZlZFZhbHVlc30pO2NvbnRpbnVlfWNvbnN0IEE9dU0oeC5wcmV2UHJvcCxrKTtsZXQgaj1BfHx2PT09dSYmeC5pc0FjdGl2ZSYmIVAmJlR8fHA+bSYmVCxJPSExO2NvbnN0IE09QXJyYXkuaXNBcnJheShrKT9rOltrXTtsZXQgej1NLnJlZHVjZShvKHYpLHt9KTtDPT09ITEmJih6PXt9KTtjb25zdHtwcmV2UmVzb2x2ZWRWYWx1ZXM6JD17fX09eCxPPXsuLi4kLC4uLnp9LFU9Tj0+e2o9ITAsZi5oYXMoTikmJihJPSEwLGYuZGVsZXRlKE4pKSx4Lm5lZWRzQW5pbWF0aW5nW05dPSEwO2NvbnN0IFI9ZS5nZXRWYWx1ZShOKTtSJiYoUi5saXZlU3R5bGU9ITEpfTtmb3IoY29uc3QgTiBpbiBPKXtjb25zdCBSPXpbTl0sUz0kW05dO2lmKHkuaGFzT3duUHJvcGVydHkoTikpY29udGludWU7bGV0IFk9ITE7TGYoUikmJkxmKFMpP1k9IUtrKFIsUyk6WT1SIT09UyxZP1IhPW51bGw\/VShOKTpmLmFkZChOKTpSIT09dm9pZCAwJiZmLmhhcyhOKT9VKE4pOngucHJvdGVjdGVkS2V5c1tOXT0hMH14LnByZXZQcm9wPWsseC5wcmV2UmVzb2x2ZWRWYWx1ZXM9eix4LmlzQWN0aXZlJiYoeT17Li4ueSwuLi56fSksKHJ8fGkpJiZlLmJsb2NrSW5pdGlhbEFuaW1hdGlvbiYmKGo9ITEpO2NvbnN0IEg9UCYmQTtqJiYoIUh8fEkpJiZoLnB1c2goLi4uTS5tYXAoTj0+e2NvbnN0IFI9e3R5cGU6dn07aWYodHlwZW9mIE49PSJzdHJpbmciJiYocnx8aSkmJiFIJiZlLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQmJmUucGFyZW50KXtjb25zdHtwYXJlbnQ6U309ZSxZPWtpKFMsTik7aWYoUy5lbnRlcmluZ0NoaWxkcmVuJiZZKXtjb25zdHtkZWxheUNoaWxkcmVuOnF9PVkudHJhbnNpdGlvbnx8e307Ui5kZWxheT1tayhTLmVudGVyaW5nQ2hpbGRyZW4sZSxxKX19cmV0dXJue2FuaW1hdGlvbjpOLG9wdGlvbnM6Un19KSl9aWYoZi5zaXplKXtjb25zdCBwPXt9O2lmKHR5cGVvZiBjLmluaXRpYWwhPSJib29sZWFuIil7Y29uc3Qgdj1raShlLEFycmF5LmlzQXJyYXkoYy5pbml0aWFsKT9jLmluaXRpYWxbMF06Yy5pbml0aWFsKTt2JiZ2LnRyYW5zaXRpb24mJihwLnRyYW5zaXRpb249di50cmFuc2l0aW9uKX1mLmZvckVhY2godj0+e2NvbnN0IHg9ZS5nZXRCYXNlVGFyZ2V0KHYpLGs9ZS5nZXRWYWx1ZSh2KTtrJiYoay5saXZlU3R5bGU9ITApLHBbdl09eD8\/bnVsbH0pLGgucHVzaCh7YW5pbWF0aW9uOnB9KX1sZXQgdz0hIWgubGVuZ3RoO3JldHVybiByJiYoYy5pbml0aWFsPT09ITF8fGMuaW5pdGlhbD09PWMuYW5pbWF0ZSkmJiFlLm1hbnVhbGx5QW5pbWF0ZU9uTW91bnQmJih3PSExKSxyPSExLGk9ITEsdz90KGgpOlByb21pc2UucmVzb2x2ZSgpfWZ1bmN0aW9uIGwodSxjKXt2YXIgaDtpZihuW3VdLmlzQWN0aXZlPT09YylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7KGg9ZS52YXJpYW50Q2hpbGRyZW4pPT1udWxsfHxoLmZvckVhY2goZj0+e3ZhciB5O3JldHVybih5PWYuYW5pbWF0aW9uU3RhdGUpPT1udWxsP3ZvaWQgMDp5LnNldEFjdGl2ZSh1LGMpfSksblt1XS5pc0FjdGl2ZT1jO2NvbnN0IGQ9YSh1KTtmb3IoY29uc3QgZiBpbiBuKW5bZl0ucHJvdGVjdGVkS2V5cz17fTtyZXR1cm4gZH1yZXR1cm57YW5pbWF0ZUNoYW5nZXM6YSxzZXRBY3RpdmU6bCxzZXRBbmltYXRlRnVuY3Rpb246cyxnZXRTdGF0ZTooKT0+bixyZXNldDooKT0+e249WXkoKSxpPSEwfX19ZnVuY3Rpb24gdU0oZSx0KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3QhPT1lOkFycmF5LmlzQXJyYXkodCk\/IUtrKHQsZSk6ITF9ZnVuY3Rpb24gdGkoZT0hMSl7cmV0dXJue2lzQWN0aXZlOmUscHJvdGVjdGVkS2V5czp7fSxuZWVkc0FuaW1hdGluZzp7fSxwcmV2UmVzb2x2ZWRWYWx1ZXM6e319fWZ1bmN0aW9uIFl5KCl7cmV0dXJue2FuaW1hdGU6dGkoITApLHdoaWxlSW5WaWV3OnRpKCksd2hpbGVIb3Zlcjp0aSgpLHdoaWxlVGFwOnRpKCksd2hpbGVEcmFnOnRpKCksd2hpbGVGb2N1czp0aSgpLGV4aXQ6dGkoKX19ZnVuY3Rpb24gcWYoZSx0KXtlLm1pbj10Lm1pbixlLm1heD10Lm1heH1mdW5jdGlvbiB0bihlLHQpe3FmKGUueCx0LngpLHFmKGUueSx0LnkpfWZ1bmN0aW9uIFF5KGUsdCl7ZS50cmFuc2xhdGU9dC50cmFuc2xhdGUsZS5zY2FsZT10LnNjYWxlLGUub3JpZ2luUG9pbnQ9dC5vcmlnaW5Qb2ludCxlLm9yaWdpbj10Lm9yaWdpbn1jb25zdCBHaz0xZS00LGNNPTEtR2ssZE09MStHayxZaz0uMDEsZk09MC1ZayxoTT0wK1lrO2Z1bmN0aW9uIHV0KGUpe3JldHVybiBlLm1heC1lLm1pbn1mdW5jdGlvbiBwTShlLHQsbil7cmV0dXJuIE1hdGguYWJzKGUtdCk8PW59ZnVuY3Rpb24gWHkoZSx0LG4scj0uNSl7ZS5vcmlnaW49cixlLm9yaWdpblBvaW50PVBlKHQubWluLHQubWF4LGUub3JpZ2luKSxlLnNjYWxlPXV0KG4pL3V0KHQpLGUudHJhbnNsYXRlPVBlKG4ubWluLG4ubWF4LGUub3JpZ2luKS1lLm9yaWdpblBvaW50LChlLnNjYWxlPj1jTSYmZS5zY2FsZTw9ZE18fGlzTmFOKGUuc2NhbGUpKSYmKGUuc2NhbGU9MSksKGUudHJhbnNsYXRlPj1mTSYmZS50cmFuc2xhdGU8PWhNfHxpc05hTihlLnRyYW5zbGF0ZSkpJiYoZS50cmFuc2xhdGU9MCl9ZnVuY3Rpb24gQ3MoZSx0LG4scil7WHkoZS54LHQueCxuLngscj9yLm9yaWdpblg6dm9pZCAwKSxYeShlLnksdC55LG4ueSxyP3Iub3JpZ2luWTp2b2lkIDApfWZ1bmN0aW9uIEp5KGUsdCxuKXtlLm1pbj1uLm1pbit0Lm1pbixlLm1heD1lLm1pbit1dCh0KX1mdW5jdGlvbiBtTShlLHQsbil7SnkoZS54LHQueCxuLngpLEp5KGUueSx0Lnksbi55KX1mdW5jdGlvbiBaeShlLHQsbil7ZS5taW49dC5taW4tbi5taW4sZS5tYXg9ZS5taW4rdXQodCl9ZnVuY3Rpb24gY3UoZSx0LG4pe1p5KGUueCx0Lngsbi54KSxaeShlLnksdC55LG4ueSl9ZnVuY3Rpb24gZXYoZSx0LG4scixpKXtyZXR1cm4gZS09dCxlPXV1KGUsMS9uLHIpLGkhPT12b2lkIDAmJihlPXV1KGUsMS9pLHIpKSxlfWZ1bmN0aW9uIGdNKGUsdD0wLG49MSxyPS41LGksbz1lLHM9ZSl7aWYoem4udGVzdCh0KSYmKHQ9cGFyc2VGbG9hdCh0KSx0PVBlKHMubWluLHMubWF4LHQvMTAwKS1zLm1pbiksdHlwZW9mIHQhPSJudW1iZXIiKXJldHVybjtsZXQgYT1QZShvLm1pbixvLm1heCxyKTtlPT09byYmKGEtPXQpLGUubWluPWV2KGUubWluLHQsbixhLGkpLGUubWF4PWV2KGUubWF4LHQsbixhLGkpfWZ1bmN0aW9uIHR2KGUsdCxbbixyLGldLG8scyl7Z00oZSx0W25dLHRbcl0sdFtpXSx0LnNjYWxlLG8scyl9Y29uc3QgeU09WyJ4Iiwic2NhbGVYIiwib3JpZ2luWCJdLHZNPVsieSIsInNjYWxlWSIsIm9yaWdpblkiXTtmdW5jdGlvbiBudihlLHQsbixyKXt0dihlLngsdCx5TSxuP24ueDp2b2lkIDAscj9yLng6dm9pZCAwKSx0dihlLnksdCx2TSxuP24ueTp2b2lkIDAscj9yLnk6dm9pZCAwKX1mdW5jdGlvbiBydihlKXtyZXR1cm4gZS50cmFuc2xhdGU9PT0wJiZlLnNjYWxlPT09MX1mdW5jdGlvbiBRayhlKXtyZXR1cm4gcnYoZS54KSYmcnYoZS55KX1mdW5jdGlvbiBpdihlLHQpe3JldHVybiBlLm1pbj09PXQubWluJiZlLm1heD09PXQubWF4fWZ1bmN0aW9uIHhNKGUsdCl7cmV0dXJuIGl2KGUueCx0LngpJiZpdihlLnksdC55KX1mdW5jdGlvbiBvdihlLHQpe3JldHVybiBNYXRoLnJvdW5kKGUubWluKT09PU1hdGgucm91bmQodC5taW4pJiZNYXRoLnJvdW5kKGUubWF4KT09PU1hdGgucm91bmQodC5tYXgpfWZ1bmN0aW9uIFhrKGUsdCl7cmV0dXJuIG92KGUueCx0LngpJiZvdihlLnksdC55KX1mdW5jdGlvbiBzdihlKXtyZXR1cm4gdXQoZS54KS91dChlLnkpfWZ1bmN0aW9uIGF2KGUsdCl7cmV0dXJuIGUudHJhbnNsYXRlPT09dC50cmFuc2xhdGUmJmUuc2NhbGU9PT10LnNjYWxlJiZlLm9yaWdpblBvaW50PT09dC5vcmlnaW5Qb2ludH1mdW5jdGlvbiBibihlKXtyZXR1cm5bZSgieCIpLGUoInkiKV19ZnVuY3Rpb24gd00oZSx0LG4pe2xldCByPSIiO2NvbnN0IGk9ZS54LnRyYW5zbGF0ZS90Lngsbz1lLnkudHJhbnNsYXRlL3QueSxzPShuPT1udWxsP3ZvaWQgMDpuLnopfHwwO2lmKChpfHxvfHxzKSYmKHI9YHRyYW5zbGF0ZTNkKCR7aX1weCwgJHtvfXB4LCAke3N9cHgpIGApLCh0LnghPT0xfHx0LnkhPT0xKSYmKHIrPWBzY2FsZSgkezEvdC54fSwgJHsxL3QueX0pIGApLG4pe2NvbnN0e3RyYW5zZm9ybVBlcnNwZWN0aXZlOnUscm90YXRlOmMscm90YXRlWDpkLHJvdGF0ZVk6aCxza2V3WDpmLHNrZXdZOnl9PW47dSYmKHI9YHBlcnNwZWN0aXZlKCR7dX1weCkgJHtyfWApLGMmJihyKz1gcm90YXRlKCR7Y31kZWcpIGApLGQmJihyKz1gcm90YXRlWCgke2R9ZGVnKSBgKSxoJiYocis9YHJvdGF0ZVkoJHtofWRlZykgYCksZiYmKHIrPWBza2V3WCgke2Z9ZGVnKSBgKSx5JiYocis9YHNrZXdZKCR7eX1kZWcpIGApfWNvbnN0IGE9ZS54LnNjYWxlKnQueCxsPWUueS5zY2FsZSp0Lnk7cmV0dXJuKGEhPT0xfHxsIT09MSkmJihyKz1gc2NhbGUoJHthfSwgJHtsfSlgKSxyfHwibm9uZSJ9Y29uc3QgSms9WyJUb3BMZWZ0IiwiVG9wUmlnaHQiLCJCb3R0b21MZWZ0IiwiQm90dG9tUmlnaHQiXSxiTT1Kay5sZW5ndGgsbHY9ZT0+dHlwZW9mIGU9PSJzdHJpbmciP3BhcnNlRmxvYXQoZSk6ZSx1dj1lPT50eXBlb2YgZT09Im51bWJlciJ8fFEudGVzdChlKTtmdW5jdGlvbiBrTShlLHQsbixyLGksbyl7aT8oZS5vcGFjaXR5PVBlKDAsbi5vcGFjaXR5Pz8xLFNNKHIpKSxlLm9wYWNpdHlFeGl0PVBlKHQub3BhY2l0eT8\/MSwwLENNKHIpKSk6byYmKGUub3BhY2l0eT1QZSh0Lm9wYWNpdHk\/PzEsbi5vcGFjaXR5Pz8xLHIpKTtmb3IobGV0IHM9MDtzPGJNO3MrKyl7Y29uc3QgYT1gYm9yZGVyJHtKa1tzXX1SYWRpdXNgO2xldCBsPWN2KHQsYSksdT1jdihuLGEpO2lmKGw9PT12b2lkIDAmJnU9PT12b2lkIDApY29udGludWU7bHx8KGw9MCksdXx8KHU9MCksbD09PTB8fHU9PT0wfHx1dihsKT09PXV2KHUpPyhlW2FdPU1hdGgubWF4KFBlKGx2KGwpLGx2KHUpLHIpLDApLCh6bi50ZXN0KHUpfHx6bi50ZXN0KGwpKSYmKGVbYV0rPSIlIikpOmVbYV09dX0odC5yb3RhdGV8fG4ucm90YXRlKSYmKGUucm90YXRlPVBlKHQucm90YXRlfHwwLG4ucm90YXRlfHwwLHIpKX1mdW5jdGlvbiBjdihlLHQpe3JldHVybiBlW3RdIT09dm9pZCAwP2VbdF06ZS5ib3JkZXJSYWRpdXN9Y29uc3QgU009WmsoMCwuNSxIYiksQ009WmsoLjUsLjk1LFd0KTtmdW5jdGlvbiBaayhlLHQsbil7cmV0dXJuIHI9PnI8ZT8wOnI+dD8xOm4oWnMoZSx0LHIpKX1mdW5jdGlvbiBUTShlLHQsbil7Y29uc3Qgcj1LZShlKT9lOlJvKGUpO3JldHVybiByLnN0YXJ0KE9wKCIiLHIsdCxuKSksci5hbmltYXRpb259ZnVuY3Rpb24gbmEoZSx0LG4scj17cGFzc2l2ZTohMH0pe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX1jb25zdCBFTT0oZSx0KT0+ZS5kZXB0aC10LmRlcHRoO2NsYXNzIFBNe2NvbnN0cnVjdG9yKCl7dGhpcy5jaGlsZHJlbj1bXSx0aGlzLmlzRGlydHk9ITF9YWRkKHQpe1NwKHRoaXMuY2hpbGRyZW4sdCksdGhpcy5pc0RpcnR5PSEwfXJlbW92ZSh0KXtpdSh0aGlzLmNoaWxkcmVuLHQpLHRoaXMuaXNEaXJ0eT0hMH1mb3JFYWNoKHQpe3RoaXMuaXNEaXJ0eSYmdGhpcy5jaGlsZHJlbi5zb3J0KEVNKSx0aGlzLmlzRGlydHk9ITEsdGhpcy5jaGlsZHJlbi5mb3JFYWNoKHQpfX1mdW5jdGlvbiBBTShlLHQpe2NvbnN0IG49bHQubm93KCkscj0oe3RpbWVzdGFtcDppfSk9Pntjb25zdCBvPWktbjtvPj10JiYoSHIociksZShvLXQpKX07cmV0dXJuIHZlLnNldHVwKHIsITApLCgpPT5IcihyKX1mdW5jdGlvbiBibChlKXtyZXR1cm4gS2UoZSk\/ZS5nZXQoKTplfWNsYXNzIElNe2NvbnN0cnVjdG9yKCl7dGhpcy5tZW1iZXJzPVtdfWFkZCh0KXtTcCh0aGlzLm1lbWJlcnMsdCk7Zm9yKGxldCBuPXRoaXMubWVtYmVycy5sZW5ndGgtMTtuPj0wO24tLSl7Y29uc3Qgcj10aGlzLm1lbWJlcnNbbl07aWYocj09PXR8fHI9PT10aGlzLmxlYWR8fHI9PT10aGlzLnByZXZMZWFkKWNvbnRpbnVlO2NvbnN0IGk9ci5pbnN0YW5jZTsoIWl8fGkuaXNDb25uZWN0ZWQ9PT0hMSkmJiFyLnNuYXBzaG90JiYoaXUodGhpcy5tZW1iZXJzLHIpLHIudW5tb3VudCgpKX10LnNjaGVkdWxlUmVuZGVyKCl9cmVtb3ZlKHQpe2lmKGl1KHRoaXMubWVtYmVycyx0KSx0PT09dGhpcy5wcmV2TGVhZCYmKHRoaXMucHJldkxlYWQ9dm9pZCAwKSx0PT09dGhpcy5sZWFkKXtjb25zdCBuPXRoaXMubWVtYmVyc1t0aGlzLm1lbWJlcnMubGVuZ3RoLTFdO24mJnRoaXMucHJvbW90ZShuKX19cmVsZWdhdGUodCl7dmFyIG47Zm9yKGxldCByPXRoaXMubWVtYmVycy5pbmRleE9mKHQpLTE7cj49MDtyLS0pe2NvbnN0IGk9dGhpcy5tZW1iZXJzW3JdO2lmKGkuaXNQcmVzZW50IT09ITEmJigobj1pLmluc3RhbmNlKT09bnVsbD92b2lkIDA6bi5pc0Nvbm5lY3RlZCkhPT0hMSlyZXR1cm4gdGhpcy5wcm9tb3RlKGkpLCEwfXJldHVybiExfXByb21vdGUodCxuKXt2YXIgaTtjb25zdCByPXRoaXMubGVhZDtpZih0IT09ciYmKHRoaXMucHJldkxlYWQ9cix0aGlzLmxlYWQ9dCx0LnNob3coKSxyKSl7ci51cGRhdGVTbmFwc2hvdCgpLHQuc2NoZWR1bGVSZW5kZXIoKTtjb25zdHtsYXlvdXREZXBlbmRlbmN5Om99PXIub3B0aW9ucyx7bGF5b3V0RGVwZW5kZW5jeTpzfT10Lm9wdGlvbnM7KG89PT12b2lkIDB8fG8hPT1zKSYmKHQucmVzdW1lRnJvbT1yLG4mJihyLnByZXNlcnZlT3BhY2l0eT0hMCksci5zbmFwc2hvdCYmKHQuc25hcHNob3Q9ci5zbmFwc2hvdCx0LnNuYXBzaG90LmxhdGVzdFZhbHVlcz1yLmFuaW1hdGlvblZhbHVlc3x8ci5sYXRlc3RWYWx1ZXMpLChpPXQucm9vdCkhPW51bGwmJmkuaXNVcGRhdGluZyYmKHQuaXNMYXlvdXREaXJ0eT0hMCkpLHQub3B0aW9ucy5jcm9zc2ZhZGU9PT0hMSYmci5oaWRlKCl9fWV4aXRBbmltYXRpb25Db21wbGV0ZSgpe3RoaXMubWVtYmVycy5mb3JFYWNoKHQ9Pnt2YXIgbixyLGksbyxzOyhyPShuPXQub3B0aW9ucykub25FeGl0Q29tcGxldGUpPT1udWxsfHxyLmNhbGwobiksKHM9KGk9dC5yZXN1bWluZ0Zyb20pPT1udWxsP3ZvaWQgMDoobz1pLm9wdGlvbnMpLm9uRXhpdENvbXBsZXRlKT09bnVsbHx8cy5jYWxsKG8pfSl9c2NoZWR1bGVSZW5kZXIoKXt0aGlzLm1lbWJlcnMuZm9yRWFjaCh0PT50Lmluc3RhbmNlJiZ0LnNjaGVkdWxlUmVuZGVyKCExKSl9cmVtb3ZlTGVhZFNuYXBzaG90KCl7dmFyIHQ7KHQ9dGhpcy5sZWFkKSE9bnVsbCYmdC5zbmFwc2hvdCYmKHRoaXMubGVhZC5zbmFwc2hvdD12b2lkIDApfX1jb25zdCBrbD17aGFzQW5pbWF0ZWRTaW5jZVJlc2l6ZTohMCxoYXNFdmVyVXBkYXRlZDohMX0sWWM9WyIiLCJYIiwiWSIsIloiXSxOTT0xZTM7bGV0IGpNPTA7ZnVuY3Rpb24gUWMoZSx0LG4scil7Y29uc3R7bGF0ZXN0VmFsdWVzOml9PXQ7aVtlXSYmKG5bZV09aVtlXSx0LnNldFN0YXRpY1ZhbHVlKGUsMCksciYmKHJbZV09MCkpfWZ1bmN0aW9uIGVTKGUpe2lmKGUuaGFzQ2hlY2tlZE9wdGltaXNlZEFwcGVhcj0hMCxlLnJvb3Q9PT1lKXJldHVybjtjb25zdHt2aXN1YWxFbGVtZW50OnR9PWUub3B0aW9ucztpZighdClyZXR1cm47Y29uc3Qgbj13ayh0KTtpZih3aW5kb3cuTW90aW9uSGFzT3B0aW1pc2VkQW5pbWF0aW9uKG4sInRyYW5zZm9ybSIpKXtjb25zdHtsYXlvdXQ6aSxsYXlvdXRJZDpvfT1lLm9wdGlvbnM7d2luZG93Lk1vdGlvbkNhbmNlbE9wdGltaXNlZEFuaW1hdGlvbihuLCJ0cmFuc2Zvcm0iLHZlLCEoaXx8bykpfWNvbnN0e3BhcmVudDpyfT1lO3ImJiFyLmhhc0NoZWNrZWRPcHRpbWlzZWRBcHBlYXImJmVTKHIpfWZ1bmN0aW9uIHRTKHthdHRhY2hSZXNpemVMaXN0ZW5lcjplLGRlZmF1bHRQYXJlbnQ6dCxtZWFzdXJlU2Nyb2xsOm4sY2hlY2tJc1Njcm9sbFJvb3Q6cixyZXNldFRyYW5zZm9ybTppfSl7cmV0dXJuIGNsYXNze2NvbnN0cnVjdG9yKHM9e30sYT10PT1udWxsP3ZvaWQgMDp0KCkpe3RoaXMuaWQ9ak0rKyx0aGlzLmFuaW1hdGlvbklkPTAsdGhpcy5hbmltYXRpb25Db21taXRJZD0wLHRoaXMuY2hpbGRyZW49bmV3IFNldCx0aGlzLm9wdGlvbnM9e30sdGhpcy5pc1RyZWVBbmltYXRpbmc9ITEsdGhpcy5pc0FuaW1hdGlvbkJsb2NrZWQ9ITEsdGhpcy5pc0xheW91dERpcnR5PSExLHRoaXMuaXNQcm9qZWN0aW9uRGlydHk9ITEsdGhpcy5pc1NoYXJlZFByb2plY3Rpb25EaXJ0eT0hMSx0aGlzLmlzVHJhbnNmb3JtRGlydHk9ITEsdGhpcy51cGRhdGVNYW51YWxseUJsb2NrZWQ9ITEsdGhpcy51cGRhdGVCbG9ja2VkQnlSZXNpemU9ITEsdGhpcy5pc1VwZGF0aW5nPSExLHRoaXMuaXNTVkc9ITEsdGhpcy5uZWVkc1Jlc2V0PSExLHRoaXMuc2hvdWxkUmVzZXRUcmFuc2Zvcm09ITEsdGhpcy5oYXNDaGVja2VkT3B0aW1pc2VkQXBwZWFyPSExLHRoaXMudHJlZVNjYWxlPXt4OjEseToxfSx0aGlzLmV2ZW50SGFuZGxlcnM9bmV3IE1hcCx0aGlzLmhhc1RyZWVBbmltYXRlZD0hMSx0aGlzLmxheW91dFZlcnNpb249MCx0aGlzLnVwZGF0ZVNjaGVkdWxlZD0hMSx0aGlzLnNjaGVkdWxlVXBkYXRlPSgpPT50aGlzLnVwZGF0ZSgpLHRoaXMucHJvamVjdGlvblVwZGF0ZVNjaGVkdWxlZD0hMSx0aGlzLmNoZWNrVXBkYXRlRmFpbGVkPSgpPT57dGhpcy5pc1VwZGF0aW5nJiYodGhpcy5pc1VwZGF0aW5nPSExLHRoaXMuY2xlYXJBbGxTbmFwc2hvdHMoKSl9LHRoaXMudXBkYXRlUHJvamVjdGlvbj0oKT0+e3RoaXMucHJvamVjdGlvblVwZGF0ZVNjaGVkdWxlZD0hMSx0aGlzLm5vZGVzLmZvckVhY2goRE0pLHRoaXMubm9kZXMuZm9yRWFjaChGTSksdGhpcy5ub2Rlcy5mb3JFYWNoKF9NKSx0aGlzLm5vZGVzLmZvckVhY2goTU0pfSx0aGlzLnJlc29sdmVkUmVsYXRpdmVUYXJnZXRBdD0wLHRoaXMubGlua2VkUGFyZW50VmVyc2lvbj0wLHRoaXMuaGFzUHJvamVjdGVkPSExLHRoaXMuaXNWaXNpYmxlPSEwLHRoaXMuYW5pbWF0aW9uUHJvZ3Jlc3M9MCx0aGlzLnNoYXJlZE5vZGVzPW5ldyBNYXAsdGhpcy5sYXRlc3RWYWx1ZXM9cyx0aGlzLnJvb3Q9YT9hLnJvb3R8fGE6dGhpcyx0aGlzLnBhdGg9YT9bLi4uYS5wYXRoLGFdOltdLHRoaXMucGFyZW50PWEsdGhpcy5kZXB0aD1hP2EuZGVwdGgrMTowO2ZvcihsZXQgbD0wO2w8dGhpcy5wYXRoLmxlbmd0aDtsKyspdGhpcy5wYXRoW2xdLnNob3VsZFJlc2V0VHJhbnNmb3JtPSEwO3RoaXMucm9vdD09PXRoaXMmJih0aGlzLm5vZGVzPW5ldyBQTSl9YWRkRXZlbnRMaXN0ZW5lcihzLGEpe3JldHVybiB0aGlzLmV2ZW50SGFuZGxlcnMuaGFzKHMpfHx0aGlzLmV2ZW50SGFuZGxlcnMuc2V0KHMsbmV3IENwKSx0aGlzLmV2ZW50SGFuZGxlcnMuZ2V0KHMpLmFkZChhKX1ub3RpZnlMaXN0ZW5lcnMocywuLi5hKXtjb25zdCBsPXRoaXMuZXZlbnRIYW5kbGVycy5nZXQocyk7bCYmbC5ub3RpZnkoLi4uYSl9aGFzTGlzdGVuZXJzKHMpe3JldHVybiB0aGlzLmV2ZW50SGFuZGxlcnMuaGFzKHMpfW1vdW50KHMpe2lmKHRoaXMuaW5zdGFuY2UpcmV0dXJuO3RoaXMuaXNTVkc9JHAocykmJiFSRChzKSx0aGlzLmluc3RhbmNlPXM7Y29uc3R7bGF5b3V0SWQ6YSxsYXlvdXQ6bCx2aXN1YWxFbGVtZW50OnV9PXRoaXMub3B0aW9ucztpZih1JiYhdS5jdXJyZW50JiZ1Lm1vdW50KHMpLHRoaXMucm9vdC5ub2Rlcy5hZGQodGhpcyksdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LmNoaWxkcmVuLmFkZCh0aGlzKSx0aGlzLnJvb3QuaGFzVHJlZUFuaW1hdGVkJiYobHx8YSkmJih0aGlzLmlzTGF5b3V0RGlydHk9ITApLGUpe2xldCBjLGQ9MDtjb25zdCBoPSgpPT50aGlzLnJvb3QudXBkYXRlQmxvY2tlZEJ5UmVzaXplPSExO3ZlLnJlYWQoKCk9PntkPXdpbmRvdy5pbm5lcldpZHRofSksZShzLCgpPT57Y29uc3QgZj13aW5kb3cuaW5uZXJXaWR0aDtmIT09ZCYmKGQ9Zix0aGlzLnJvb3QudXBkYXRlQmxvY2tlZEJ5UmVzaXplPSEwLGMmJmMoKSxjPUFNKGgsMjUwKSxrbC5oYXNBbmltYXRlZFNpbmNlUmVzaXplJiYoa2wuaGFzQW5pbWF0ZWRTaW5jZVJlc2l6ZT0hMSx0aGlzLm5vZGVzLmZvckVhY2goaHYpKSl9KX1hJiZ0aGlzLnJvb3QucmVnaXN0ZXJTaGFyZWROb2RlKGEsdGhpcyksdGhpcy5vcHRpb25zLmFuaW1hdGUhPT0hMSYmdSYmKGF8fGwpJiZ0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImRpZFVwZGF0ZSIsKHtkZWx0YTpjLGhhc0xheW91dENoYW5nZWQ6ZCxoYXNSZWxhdGl2ZUxheW91dENoYW5nZWQ6aCxsYXlvdXQ6Zn0pPT57aWYodGhpcy5pc1RyZWVBbmltYXRpb25CbG9ja2VkKCkpe3RoaXMudGFyZ2V0PXZvaWQgMCx0aGlzLnJlbGF0aXZlVGFyZ2V0PXZvaWQgMDtyZXR1cm59Y29uc3QgeT10aGlzLm9wdGlvbnMudHJhbnNpdGlvbnx8dS5nZXREZWZhdWx0VHJhbnNpdGlvbigpfHxITSx7b25MYXlvdXRBbmltYXRpb25TdGFydDptLG9uTGF5b3V0QW5pbWF0aW9uQ29tcGxldGU6d309dS5nZXRQcm9wcygpLHA9IXRoaXMudGFyZ2V0TGF5b3V0fHwhWGsodGhpcy50YXJnZXRMYXlvdXQsZiksdj0hZCYmaDtpZih0aGlzLm9wdGlvbnMubGF5b3V0Um9vdHx8dGhpcy5yZXN1bWVGcm9tfHx2fHxkJiYocHx8IXRoaXMuY3VycmVudEFuaW1hdGlvbikpe3RoaXMucmVzdW1lRnJvbSYmKHRoaXMucmVzdW1pbmdGcm9tPXRoaXMucmVzdW1lRnJvbSx0aGlzLnJlc3VtaW5nRnJvbS5yZXN1bWluZ0Zyb209dm9pZCAwKTtjb25zdCB4PXsuLi5McCh5LCJsYXlvdXQiKSxvblBsYXk6bSxvbkNvbXBsZXRlOnd9Oyh1LnNob3VsZFJlZHVjZU1vdGlvbnx8dGhpcy5vcHRpb25zLmxheW91dFJvb3QpJiYoeC5kZWxheT0wLHgudHlwZT0hMSksdGhpcy5zdGFydEFuaW1hdGlvbih4KSx0aGlzLnNldEFuaW1hdGlvbk9yaWdpbihjLHYpfWVsc2UgZHx8aHYodGhpcyksdGhpcy5pc0xlYWQoKSYmdGhpcy5vcHRpb25zLm9uRXhpdENvbXBsZXRlJiZ0aGlzLm9wdGlvbnMub25FeGl0Q29tcGxldGUoKTt0aGlzLnRhcmdldExheW91dD1mfSl9dW5tb3VudCgpe3RoaXMub3B0aW9ucy5sYXlvdXRJZCYmdGhpcy53aWxsVXBkYXRlKCksdGhpcy5yb290Lm5vZGVzLnJlbW92ZSh0aGlzKTtjb25zdCBzPXRoaXMuZ2V0U3RhY2soKTtzJiZzLnJlbW92ZSh0aGlzKSx0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuY2hpbGRyZW4uZGVsZXRlKHRoaXMpLHRoaXMuaW5zdGFuY2U9dm9pZCAwLHRoaXMuZXZlbnRIYW5kbGVycy5jbGVhcigpLEhyKHRoaXMudXBkYXRlUHJvamVjdGlvbil9YmxvY2tVcGRhdGUoKXt0aGlzLnVwZGF0ZU1hbnVhbGx5QmxvY2tlZD0hMH11bmJsb2NrVXBkYXRlKCl7dGhpcy51cGRhdGVNYW51YWxseUJsb2NrZWQ9ITF9aXNVcGRhdGVCbG9ja2VkKCl7cmV0dXJuIHRoaXMudXBkYXRlTWFudWFsbHlCbG9ja2VkfHx0aGlzLnVwZGF0ZUJsb2NrZWRCeVJlc2l6ZX1pc1RyZWVBbmltYXRpb25CbG9ja2VkKCl7cmV0dXJuIHRoaXMuaXNBbmltYXRpb25CbG9ja2VkfHx0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuaXNUcmVlQW5pbWF0aW9uQmxvY2tlZCgpfHwhMX1zdGFydFVwZGF0ZSgpe3RoaXMuaXNVcGRhdGVCbG9ja2VkKCl8fCh0aGlzLmlzVXBkYXRpbmc9ITAsdGhpcy5ub2RlcyYmdGhpcy5ub2Rlcy5mb3JFYWNoKFZNKSx0aGlzLmFuaW1hdGlvbklkKyspfWdldFRyYW5zZm9ybVRlbXBsYXRlKCl7Y29uc3R7dmlzdWFsRWxlbWVudDpzfT10aGlzLm9wdGlvbnM7cmV0dXJuIHMmJnMuZ2V0UHJvcHMoKS50cmFuc2Zvcm1UZW1wbGF0ZX13aWxsVXBkYXRlKHM9ITApe2lmKHRoaXMucm9vdC5oYXNUcmVlQW5pbWF0ZWQ9ITAsdGhpcy5yb290LmlzVXBkYXRlQmxvY2tlZCgpKXt0aGlzLm9wdGlvbnMub25FeGl0Q29tcGxldGUmJnRoaXMub3B0aW9ucy5vbkV4aXRDb21wbGV0ZSgpO3JldHVybn1pZih3aW5kb3cuTW90aW9uQ2FuY2VsT3B0aW1pc2VkQW5pbWF0aW9uJiYhdGhpcy5oYXNDaGVja2VkT3B0aW1pc2VkQXBwZWFyJiZlUyh0aGlzKSwhdGhpcy5yb290LmlzVXBkYXRpbmcmJnRoaXMucm9vdC5zdGFydFVwZGF0ZSgpLHRoaXMuaXNMYXlvdXREaXJ0eSlyZXR1cm47dGhpcy5pc0xheW91dERpcnR5PSEwO2ZvcihsZXQgYz0wO2M8dGhpcy5wYXRoLmxlbmd0aDtjKyspe2NvbnN0IGQ9dGhpcy5wYXRoW2NdO2Quc2hvdWxkUmVzZXRUcmFuc2Zvcm09ITAsKHR5cGVvZiBkLmxhdGVzdFZhbHVlcy54PT0ic3RyaW5nInx8dHlwZW9mIGQubGF0ZXN0VmFsdWVzLnk9PSJzdHJpbmciKSYmKGQuaXNMYXlvdXREaXJ0eT0hMCksZC51cGRhdGVTY3JvbGwoInNuYXBzaG90IiksZC5vcHRpb25zLmxheW91dFJvb3QmJmQud2lsbFVwZGF0ZSghMSl9Y29uc3R7bGF5b3V0SWQ6YSxsYXlvdXQ6bH09dGhpcy5vcHRpb25zO2lmKGE9PT12b2lkIDAmJiFsKXJldHVybjtjb25zdCB1PXRoaXMuZ2V0VHJhbnNmb3JtVGVtcGxhdGUoKTt0aGlzLnByZXZUcmFuc2Zvcm1UZW1wbGF0ZVZhbHVlPXU\/dSh0aGlzLmxhdGVzdFZhbHVlcywiIik6dm9pZCAwLHRoaXMudXBkYXRlU25hcHNob3QoKSxzJiZ0aGlzLm5vdGlmeUxpc3RlbmVycygid2lsbFVwZGF0ZSIpfXVwZGF0ZSgpe2lmKHRoaXMudXBkYXRlU2NoZWR1bGVkPSExLHRoaXMuaXNVcGRhdGVCbG9ja2VkKCkpe3RoaXMudW5ibG9ja1VwZGF0ZSgpLHRoaXMuY2xlYXJBbGxTbmFwc2hvdHMoKSx0aGlzLm5vZGVzLmZvckVhY2goZHYpO3JldHVybn1pZih0aGlzLmFuaW1hdGlvbklkPD10aGlzLmFuaW1hdGlvbkNvbW1pdElkKXt0aGlzLm5vZGVzLmZvckVhY2goZnYpO3JldHVybn10aGlzLmFuaW1hdGlvbkNvbW1pdElkPXRoaXMuYW5pbWF0aW9uSWQsdGhpcy5pc1VwZGF0aW5nPyh0aGlzLmlzVXBkYXRpbmc9ITEsdGhpcy5ub2Rlcy5mb3JFYWNoKE9NKSx0aGlzLm5vZGVzLmZvckVhY2goek0pLHRoaXMubm9kZXMuZm9yRWFjaChSTSkpOnRoaXMubm9kZXMuZm9yRWFjaChmdiksdGhpcy5jbGVhckFsbFNuYXBzaG90cygpO2NvbnN0IGE9bHQubm93KCk7V2UuZGVsdGE9TW4oMCwxZTMvNjAsYS1XZS50aW1lc3RhbXApLFdlLnRpbWVzdGFtcD1hLFdlLmlzUHJvY2Vzc2luZz0hMCxCYy51cGRhdGUucHJvY2VzcyhXZSksQmMucHJlUmVuZGVyLnByb2Nlc3MoV2UpLEJjLnJlbmRlci5wcm9jZXNzKFdlKSxXZS5pc1Byb2Nlc3Npbmc9ITF9ZGlkVXBkYXRlKCl7dGhpcy51cGRhdGVTY2hlZHVsZWR8fCh0aGlzLnVwZGF0ZVNjaGVkdWxlZD0hMCxCcC5yZWFkKHRoaXMuc2NoZWR1bGVVcGRhdGUpKX1jbGVhckFsbFNuYXBzaG90cygpe3RoaXMubm9kZXMuZm9yRWFjaChMTSksdGhpcy5zaGFyZWROb2Rlcy5mb3JFYWNoKEJNKX1zY2hlZHVsZVVwZGF0ZVByb2plY3Rpb24oKXt0aGlzLnByb2plY3Rpb25VcGRhdGVTY2hlZHVsZWR8fCh0aGlzLnByb2plY3Rpb25VcGRhdGVTY2hlZHVsZWQ9ITAsdmUucHJlUmVuZGVyKHRoaXMudXBkYXRlUHJvamVjdGlvbiwhMSwhMCkpfXNjaGVkdWxlQ2hlY2tBZnRlclVubW91bnQoKXt2ZS5wb3N0UmVuZGVyKCgpPT57dGhpcy5pc0xheW91dERpcnR5P3RoaXMucm9vdC5kaWRVcGRhdGUoKTp0aGlzLnJvb3QuY2hlY2tVcGRhdGVGYWlsZWQoKX0pfXVwZGF0ZVNuYXBzaG90KCl7dGhpcy5zbmFwc2hvdHx8IXRoaXMuaW5zdGFuY2V8fCh0aGlzLnNuYXBzaG90PXRoaXMubWVhc3VyZSgpLHRoaXMuc25hcHNob3QmJiF1dCh0aGlzLnNuYXBzaG90Lm1lYXN1cmVkQm94LngpJiYhdXQodGhpcy5zbmFwc2hvdC5tZWFzdXJlZEJveC55KSYmKHRoaXMuc25hcHNob3Q9dm9pZCAwKSl9dXBkYXRlTGF5b3V0KCl7aWYoIXRoaXMuaW5zdGFuY2V8fCh0aGlzLnVwZGF0ZVNjcm9sbCgpLCEodGhpcy5vcHRpb25zLmFsd2F5c01lYXN1cmVMYXlvdXQmJnRoaXMuaXNMZWFkKCkpJiYhdGhpcy5pc0xheW91dERpcnR5KSlyZXR1cm47aWYodGhpcy5yZXN1bWVGcm9tJiYhdGhpcy5yZXN1bWVGcm9tLmluc3RhbmNlKWZvcihsZXQgbD0wO2w8dGhpcy5wYXRoLmxlbmd0aDtsKyspdGhpcy5wYXRoW2xdLnVwZGF0ZVNjcm9sbCgpO2NvbnN0IHM9dGhpcy5sYXlvdXQ7dGhpcy5sYXlvdXQ9dGhpcy5tZWFzdXJlKCExKSx0aGlzLmxheW91dFZlcnNpb24rKyx0aGlzLmxheW91dENvcnJlY3RlZD1fZSgpLHRoaXMuaXNMYXlvdXREaXJ0eT0hMSx0aGlzLnByb2plY3Rpb25EZWx0YT12b2lkIDAsdGhpcy5ub3RpZnlMaXN0ZW5lcnMoIm1lYXN1cmUiLHRoaXMubGF5b3V0LmxheW91dEJveCk7Y29uc3R7dmlzdWFsRWxlbWVudDphfT10aGlzLm9wdGlvbnM7YSYmYS5ub3RpZnkoIkxheW91dE1lYXN1cmUiLHRoaXMubGF5b3V0LmxheW91dEJveCxzP3MubGF5b3V0Qm94OnZvaWQgMCl9dXBkYXRlU2Nyb2xsKHM9Im1lYXN1cmUiKXtsZXQgYT0hISh0aGlzLm9wdGlvbnMubGF5b3V0U2Nyb2xsJiZ0aGlzLmluc3RhbmNlKTtpZih0aGlzLnNjcm9sbCYmdGhpcy5zY3JvbGwuYW5pbWF0aW9uSWQ9PT10aGlzLnJvb3QuYW5pbWF0aW9uSWQmJnRoaXMuc2Nyb2xsLnBoYXNlPT09cyYmKGE9ITEpLGEmJnRoaXMuaW5zdGFuY2Upe2NvbnN0IGw9cih0aGlzLmluc3RhbmNlKTt0aGlzLnNjcm9sbD17YW5pbWF0aW9uSWQ6dGhpcy5yb290LmFuaW1hdGlvbklkLHBoYXNlOnMsaXNSb290Omwsb2Zmc2V0Om4odGhpcy5pbnN0YW5jZSksd2FzUm9vdDp0aGlzLnNjcm9sbD90aGlzLnNjcm9sbC5pc1Jvb3Q6bH19fXJlc2V0VHJhbnNmb3JtKCl7aWYoIWkpcmV0dXJuO2NvbnN0IHM9dGhpcy5pc0xheW91dERpcnR5fHx0aGlzLnNob3VsZFJlc2V0VHJhbnNmb3JtfHx0aGlzLm9wdGlvbnMuYWx3YXlzTWVhc3VyZUxheW91dCxhPXRoaXMucHJvamVjdGlvbkRlbHRhJiYhUWsodGhpcy5wcm9qZWN0aW9uRGVsdGEpLGw9dGhpcy5nZXRUcmFuc2Zvcm1UZW1wbGF0ZSgpLHU9bD9sKHRoaXMubGF0ZXN0VmFsdWVzLCIiKTp2b2lkIDAsYz11IT09dGhpcy5wcmV2VHJhbnNmb3JtVGVtcGxhdGVWYWx1ZTtzJiZ0aGlzLmluc3RhbmNlJiYoYXx8b2kodGhpcy5sYXRlc3RWYWx1ZXMpfHxjKSYmKGkodGhpcy5pbnN0YW5jZSx1KSx0aGlzLnNob3VsZFJlc2V0VHJhbnNmb3JtPSExLHRoaXMuc2NoZWR1bGVSZW5kZXIoKSl9bWVhc3VyZShzPSEwKXtjb25zdCBhPXRoaXMubWVhc3VyZVBhZ2VCb3goKTtsZXQgbD10aGlzLnJlbW92ZUVsZW1lbnRTY3JvbGwoYSk7cmV0dXJuIHMmJihsPXRoaXMucmVtb3ZlVHJhbnNmb3JtKGwpKSxxTShsKSx7YW5pbWF0aW9uSWQ6dGhpcy5yb290LmFuaW1hdGlvbklkLG1lYXN1cmVkQm94OmEsbGF5b3V0Qm94OmwsbGF0ZXN0VmFsdWVzOnt9LHNvdXJjZTp0aGlzLmlkfX1tZWFzdXJlUGFnZUJveCgpe3ZhciB1O2NvbnN0e3Zpc3VhbEVsZW1lbnQ6c309dGhpcy5vcHRpb25zO2lmKCFzKXJldHVybiBfZSgpO2NvbnN0IGE9cy5tZWFzdXJlVmlld3BvcnRCb3goKTtpZighKCgodT10aGlzLnNjcm9sbCk9PW51bGw\/dm9pZCAwOnUud2FzUm9vdCl8fHRoaXMucGF0aC5zb21lKFdNKSkpe2NvbnN0e3Njcm9sbDpjfT10aGlzLnJvb3Q7YyYmKHRvKGEueCxjLm9mZnNldC54KSx0byhhLnksYy5vZmZzZXQueSkpfXJldHVybiBhfXJlbW92ZUVsZW1lbnRTY3JvbGwocyl7dmFyIGw7Y29uc3QgYT1fZSgpO2lmKHRuKGEscyksKGw9dGhpcy5zY3JvbGwpIT1udWxsJiZsLndhc1Jvb3QpcmV0dXJuIGE7Zm9yKGxldCB1PTA7dTx0aGlzLnBhdGgubGVuZ3RoO3UrKyl7Y29uc3QgYz10aGlzLnBhdGhbdV0se3Njcm9sbDpkLG9wdGlvbnM6aH09YztjIT09dGhpcy5yb290JiZkJiZoLmxheW91dFNjcm9sbCYmKGQud2FzUm9vdCYmdG4oYSxzKSx0byhhLngsZC5vZmZzZXQueCksdG8oYS55LGQub2Zmc2V0LnkpKX1yZXR1cm4gYX1hcHBseVRyYW5zZm9ybShzLGE9ITEpe3ZhciB1LGM7Y29uc3QgbD1fZSgpO3RuKGwscyk7Zm9yKGxldCBkPTA7ZDx0aGlzLnBhdGgubGVuZ3RoO2QrKyl7Y29uc3QgaD10aGlzLnBhdGhbZF07IWEmJmgub3B0aW9ucy5sYXlvdXRTY3JvbGwmJmguc2Nyb2xsJiZoIT09aC5yb290JiZubyhsLHt4Oi1oLnNjcm9sbC5vZmZzZXQueCx5Oi1oLnNjcm9sbC5vZmZzZXQueX0pLG9pKGgubGF0ZXN0VmFsdWVzKSYmbm8obCxoLmxhdGVzdFZhbHVlcywodT1oLmxheW91dCk9PW51bGw\/dm9pZCAwOnUubGF5b3V0Qm94KX1yZXR1cm4gb2kodGhpcy5sYXRlc3RWYWx1ZXMpJiZubyhsLHRoaXMubGF0ZXN0VmFsdWVzLChjPXRoaXMubGF5b3V0KT09bnVsbD92b2lkIDA6Yy5sYXlvdXRCb3gpLGx9cmVtb3ZlVHJhbnNmb3JtKHMpe3ZhciBsO2NvbnN0IGE9X2UoKTt0bihhLHMpO2ZvcihsZXQgdT0wO3U8dGhpcy5wYXRoLmxlbmd0aDt1Kyspe2NvbnN0IGM9dGhpcy5wYXRoW3VdO2lmKCFvaShjLmxhdGVzdFZhbHVlcykpY29udGludWU7bGV0IGQ7Yy5pbnN0YW5jZSYmKFVmKGMubGF0ZXN0VmFsdWVzKSYmYy51cGRhdGVTbmFwc2hvdCgpLGQ9X2UoKSx0bihkLGMubWVhc3VyZVBhZ2VCb3goKSkpLG52KGEsYy5sYXRlc3RWYWx1ZXMsKGw9Yy5zbmFwc2hvdCk9PW51bGw\/dm9pZCAwOmwubGF5b3V0Qm94LGQpfXJldHVybiBvaSh0aGlzLmxhdGVzdFZhbHVlcykmJm52KGEsdGhpcy5sYXRlc3RWYWx1ZXMpLGF9c2V0VGFyZ2V0RGVsdGEocyl7dGhpcy50YXJnZXREZWx0YT1zLHRoaXMucm9vdC5zY2hlZHVsZVVwZGF0ZVByb2plY3Rpb24oKSx0aGlzLmlzUHJvamVjdGlvbkRpcnR5PSEwfXNldE9wdGlvbnMocyl7dGhpcy5vcHRpb25zPXsuLi50aGlzLm9wdGlvbnMsLi4ucyxjcm9zc2ZhZGU6cy5jcm9zc2ZhZGUhPT12b2lkIDA\/cy5jcm9zc2ZhZGU6ITB9fWNsZWFyTWVhc3VyZW1lbnRzKCl7dGhpcy5zY3JvbGw9dm9pZCAwLHRoaXMubGF5b3V0PXZvaWQgMCx0aGlzLnNuYXBzaG90PXZvaWQgMCx0aGlzLnByZXZUcmFuc2Zvcm1UZW1wbGF0ZVZhbHVlPXZvaWQgMCx0aGlzLnRhcmdldERlbHRhPXZvaWQgMCx0aGlzLnRhcmdldD12b2lkIDAsdGhpcy5pc0xheW91dERpcnR5PSExfWZvcmNlUmVsYXRpdmVQYXJlbnRUb1Jlc29sdmVUYXJnZXQoKXt0aGlzLnJlbGF0aXZlUGFyZW50JiZ0aGlzLnJlbGF0aXZlUGFyZW50LnJlc29sdmVkUmVsYXRpdmVUYXJnZXRBdCE9PVdlLnRpbWVzdGFtcCYmdGhpcy5yZWxhdGl2ZVBhcmVudC5yZXNvbHZlVGFyZ2V0RGVsdGEoITApfXJlc29sdmVUYXJnZXREZWx0YShzPSExKXt2YXIgZjtjb25zdCBhPXRoaXMuZ2V0TGVhZCgpO3RoaXMuaXNQcm9qZWN0aW9uRGlydHl8fCh0aGlzLmlzUHJvamVjdGlvbkRpcnR5PWEuaXNQcm9qZWN0aW9uRGlydHkpLHRoaXMuaXNUcmFuc2Zvcm1EaXJ0eXx8KHRoaXMuaXNUcmFuc2Zvcm1EaXJ0eT1hLmlzVHJhbnNmb3JtRGlydHkpLHRoaXMuaXNTaGFyZWRQcm9qZWN0aW9uRGlydHl8fCh0aGlzLmlzU2hhcmVkUHJvamVjdGlvbkRpcnR5PWEuaXNTaGFyZWRQcm9qZWN0aW9uRGlydHkpO2NvbnN0IGw9ISF0aGlzLnJlc3VtaW5nRnJvbXx8dGhpcyE9PWE7aWYoIShzfHxsJiZ0aGlzLmlzU2hhcmVkUHJvamVjdGlvbkRpcnR5fHx0aGlzLmlzUHJvamVjdGlvbkRpcnR5fHwoZj10aGlzLnBhcmVudCkhPW51bGwmJmYuaXNQcm9qZWN0aW9uRGlydHl8fHRoaXMuYXR0ZW1wdFRvUmVzb2x2ZVJlbGF0aXZlVGFyZ2V0fHx0aGlzLnJvb3QudXBkYXRlQmxvY2tlZEJ5UmVzaXplKSlyZXR1cm47Y29uc3R7bGF5b3V0OmMsbGF5b3V0SWQ6ZH09dGhpcy5vcHRpb25zO2lmKCF0aGlzLmxheW91dHx8IShjfHxkKSlyZXR1cm47dGhpcy5yZXNvbHZlZFJlbGF0aXZlVGFyZ2V0QXQ9V2UudGltZXN0YW1wO2NvbnN0IGg9dGhpcy5nZXRDbG9zZXN0UHJvamVjdGluZ1BhcmVudCgpO2gmJnRoaXMubGlua2VkUGFyZW50VmVyc2lvbiE9PWgubGF5b3V0VmVyc2lvbiYmIWgub3B0aW9ucy5sYXlvdXRSb290JiZ0aGlzLnJlbW92ZVJlbGF0aXZlVGFyZ2V0KCksIXRoaXMudGFyZ2V0RGVsdGEmJiF0aGlzLnJlbGF0aXZlVGFyZ2V0JiYoaCYmaC5sYXlvdXQ\/dGhpcy5jcmVhdGVSZWxhdGl2ZVRhcmdldChoLHRoaXMubGF5b3V0LmxheW91dEJveCxoLmxheW91dC5sYXlvdXRCb3gpOnRoaXMucmVtb3ZlUmVsYXRpdmVUYXJnZXQoKSksISghdGhpcy5yZWxhdGl2ZVRhcmdldCYmIXRoaXMudGFyZ2V0RGVsdGEpJiYodGhpcy50YXJnZXR8fCh0aGlzLnRhcmdldD1fZSgpLHRoaXMudGFyZ2V0V2l0aFRyYW5zZm9ybXM9X2UoKSksdGhpcy5yZWxhdGl2ZVRhcmdldCYmdGhpcy5yZWxhdGl2ZVRhcmdldE9yaWdpbiYmdGhpcy5yZWxhdGl2ZVBhcmVudCYmdGhpcy5yZWxhdGl2ZVBhcmVudC50YXJnZXQ\/KHRoaXMuZm9yY2VSZWxhdGl2ZVBhcmVudFRvUmVzb2x2ZVRhcmdldCgpLG1NKHRoaXMudGFyZ2V0LHRoaXMucmVsYXRpdmVUYXJnZXQsdGhpcy5yZWxhdGl2ZVBhcmVudC50YXJnZXQpKTp0aGlzLnRhcmdldERlbHRhPyh0aGlzLnJlc3VtaW5nRnJvbT90aGlzLnRhcmdldD10aGlzLmFwcGx5VHJhbnNmb3JtKHRoaXMubGF5b3V0LmxheW91dEJveCk6dG4odGhpcy50YXJnZXQsdGhpcy5sYXlvdXQubGF5b3V0Qm94KSxGayh0aGlzLnRhcmdldCx0aGlzLnRhcmdldERlbHRhKSk6dG4odGhpcy50YXJnZXQsdGhpcy5sYXlvdXQubGF5b3V0Qm94KSx0aGlzLmF0dGVtcHRUb1Jlc29sdmVSZWxhdGl2ZVRhcmdldCYmKHRoaXMuYXR0ZW1wdFRvUmVzb2x2ZVJlbGF0aXZlVGFyZ2V0PSExLGgmJiEhaC5yZXN1bWluZ0Zyb209PSEhdGhpcy5yZXN1bWluZ0Zyb20mJiFoLm9wdGlvbnMubGF5b3V0U2Nyb2xsJiZoLnRhcmdldCYmdGhpcy5hbmltYXRpb25Qcm9ncmVzcyE9PTE\/dGhpcy5jcmVhdGVSZWxhdGl2ZVRhcmdldChoLHRoaXMudGFyZ2V0LGgudGFyZ2V0KTp0aGlzLnJlbGF0aXZlUGFyZW50PXRoaXMucmVsYXRpdmVUYXJnZXQ9dm9pZCAwKSl9Z2V0Q2xvc2VzdFByb2plY3RpbmdQYXJlbnQoKXtpZighKCF0aGlzLnBhcmVudHx8VWYodGhpcy5wYXJlbnQubGF0ZXN0VmFsdWVzKXx8T2sodGhpcy5wYXJlbnQubGF0ZXN0VmFsdWVzKSkpcmV0dXJuIHRoaXMucGFyZW50LmlzUHJvamVjdGluZygpP3RoaXMucGFyZW50OnRoaXMucGFyZW50LmdldENsb3Nlc3RQcm9qZWN0aW5nUGFyZW50KCl9aXNQcm9qZWN0aW5nKCl7cmV0dXJuISEoKHRoaXMucmVsYXRpdmVUYXJnZXR8fHRoaXMudGFyZ2V0RGVsdGF8fHRoaXMub3B0aW9ucy5sYXlvdXRSb290KSYmdGhpcy5sYXlvdXQpfWNyZWF0ZVJlbGF0aXZlVGFyZ2V0KHMsYSxsKXt0aGlzLnJlbGF0aXZlUGFyZW50PXMsdGhpcy5saW5rZWRQYXJlbnRWZXJzaW9uPXMubGF5b3V0VmVyc2lvbix0aGlzLmZvcmNlUmVsYXRpdmVQYXJlbnRUb1Jlc29sdmVUYXJnZXQoKSx0aGlzLnJlbGF0aXZlVGFyZ2V0PV9lKCksdGhpcy5yZWxhdGl2ZVRhcmdldE9yaWdpbj1fZSgpLGN1KHRoaXMucmVsYXRpdmVUYXJnZXRPcmlnaW4sYSxsKSx0bih0aGlzLnJlbGF0aXZlVGFyZ2V0LHRoaXMucmVsYXRpdmVUYXJnZXRPcmlnaW4pfXJlbW92ZVJlbGF0aXZlVGFyZ2V0KCl7dGhpcy5yZWxhdGl2ZVBhcmVudD10aGlzLnJlbGF0aXZlVGFyZ2V0PXZvaWQgMH1jYWxjUHJvamVjdGlvbigpe3ZhciB5O2NvbnN0IHM9dGhpcy5nZXRMZWFkKCksYT0hIXRoaXMucmVzdW1pbmdGcm9tfHx0aGlzIT09cztsZXQgbD0hMDtpZigodGhpcy5pc1Byb2plY3Rpb25EaXJ0eXx8KHk9dGhpcy5wYXJlbnQpIT1udWxsJiZ5LmlzUHJvamVjdGlvbkRpcnR5KSYmKGw9ITEpLGEmJih0aGlzLmlzU2hhcmVkUHJvamVjdGlvbkRpcnR5fHx0aGlzLmlzVHJhbnNmb3JtRGlydHkpJiYobD0hMSksdGhpcy5yZXNvbHZlZFJlbGF0aXZlVGFyZ2V0QXQ9PT1XZS50aW1lc3RhbXAmJihsPSExKSxsKXJldHVybjtjb25zdHtsYXlvdXQ6dSxsYXlvdXRJZDpjfT10aGlzLm9wdGlvbnM7aWYodGhpcy5pc1RyZWVBbmltYXRpbmc9ISEodGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LmlzVHJlZUFuaW1hdGluZ3x8dGhpcy5jdXJyZW50QW5pbWF0aW9ufHx0aGlzLnBlbmRpbmdBbmltYXRpb24pLHRoaXMuaXNUcmVlQW5pbWF0aW5nfHwodGhpcy50YXJnZXREZWx0YT10aGlzLnJlbGF0aXZlVGFyZ2V0PXZvaWQgMCksIXRoaXMubGF5b3V0fHwhKHV8fGMpKXJldHVybjt0bih0aGlzLmxheW91dENvcnJlY3RlZCx0aGlzLmxheW91dC5sYXlvdXRCb3gpO2NvbnN0IGQ9dGhpcy50cmVlU2NhbGUueCxoPXRoaXMudHJlZVNjYWxlLnk7SEQodGhpcy5sYXlvdXRDb3JyZWN0ZWQsdGhpcy50cmVlU2NhbGUsdGhpcy5wYXRoLGEpLHMubGF5b3V0JiYhcy50YXJnZXQmJih0aGlzLnRyZWVTY2FsZS54IT09MXx8dGhpcy50cmVlU2NhbGUueSE9PTEpJiYocy50YXJnZXQ9cy5sYXlvdXQubGF5b3V0Qm94LHMudGFyZ2V0V2l0aFRyYW5zZm9ybXM9X2UoKSk7Y29uc3R7dGFyZ2V0OmZ9PXM7aWYoIWYpe3RoaXMucHJldlByb2plY3Rpb25EZWx0YSYmKHRoaXMuY3JlYXRlUHJvamVjdGlvbkRlbHRhcygpLHRoaXMuc2NoZWR1bGVSZW5kZXIoKSk7cmV0dXJufSF0aGlzLnByb2plY3Rpb25EZWx0YXx8IXRoaXMucHJldlByb2plY3Rpb25EZWx0YT90aGlzLmNyZWF0ZVByb2plY3Rpb25EZWx0YXMoKTooUXkodGhpcy5wcmV2UHJvamVjdGlvbkRlbHRhLngsdGhpcy5wcm9qZWN0aW9uRGVsdGEueCksUXkodGhpcy5wcmV2UHJvamVjdGlvbkRlbHRhLnksdGhpcy5wcm9qZWN0aW9uRGVsdGEueSkpLENzKHRoaXMucHJvamVjdGlvbkRlbHRhLHRoaXMubGF5b3V0Q29ycmVjdGVkLGYsdGhpcy5sYXRlc3RWYWx1ZXMpLCh0aGlzLnRyZWVTY2FsZS54IT09ZHx8dGhpcy50cmVlU2NhbGUueSE9PWh8fCFhdih0aGlzLnByb2plY3Rpb25EZWx0YS54LHRoaXMucHJldlByb2plY3Rpb25EZWx0YS54KXx8IWF2KHRoaXMucHJvamVjdGlvbkRlbHRhLnksdGhpcy5wcmV2UHJvamVjdGlvbkRlbHRhLnkpKSYmKHRoaXMuaGFzUHJvamVjdGVkPSEwLHRoaXMuc2NoZWR1bGVSZW5kZXIoKSx0aGlzLm5vdGlmeUxpc3RlbmVycygicHJvamVjdGlvblVwZGF0ZSIsZikpfWhpZGUoKXt0aGlzLmlzVmlzaWJsZT0hMX1zaG93KCl7dGhpcy5pc1Zpc2libGU9ITB9c2NoZWR1bGVSZW5kZXIocz0hMCl7dmFyIGE7aWYoKGE9dGhpcy5vcHRpb25zLnZpc3VhbEVsZW1lbnQpPT1udWxsfHxhLnNjaGVkdWxlUmVuZGVyKCkscyl7Y29uc3QgbD10aGlzLmdldFN0YWNrKCk7bCYmbC5zY2hlZHVsZVJlbmRlcigpfXRoaXMucmVzdW1pbmdGcm9tJiYhdGhpcy5yZXN1bWluZ0Zyb20uaW5zdGFuY2UmJih0aGlzLnJlc3VtaW5nRnJvbT12b2lkIDApfWNyZWF0ZVByb2plY3Rpb25EZWx0YXMoKXt0aGlzLnByZXZQcm9qZWN0aW9uRGVsdGE9ZW8oKSx0aGlzLnByb2plY3Rpb25EZWx0YT1lbygpLHRoaXMucHJvamVjdGlvbkRlbHRhV2l0aFRyYW5zZm9ybT1lbygpfXNldEFuaW1hdGlvbk9yaWdpbihzLGE9ITEpe2NvbnN0IGw9dGhpcy5zbmFwc2hvdCx1PWw\/bC5sYXRlc3RWYWx1ZXM6e30sYz17Li4udGhpcy5sYXRlc3RWYWx1ZXN9LGQ9ZW8oKTsoIXRoaXMucmVsYXRpdmVQYXJlbnR8fCF0aGlzLnJlbGF0aXZlUGFyZW50Lm9wdGlvbnMubGF5b3V0Um9vdCkmJih0aGlzLnJlbGF0aXZlVGFyZ2V0PXRoaXMucmVsYXRpdmVUYXJnZXRPcmlnaW49dm9pZCAwKSx0aGlzLmF0dGVtcHRUb1Jlc29sdmVSZWxhdGl2ZVRhcmdldD0hYTtjb25zdCBoPV9lKCksZj1sP2wuc291cmNlOnZvaWQgMCx5PXRoaXMubGF5b3V0P3RoaXMubGF5b3V0LnNvdXJjZTp2b2lkIDAsbT1mIT09eSx3PXRoaXMuZ2V0U3RhY2soKSxwPSF3fHx3Lm1lbWJlcnMubGVuZ3RoPD0xLHY9ISEobSYmIXAmJnRoaXMub3B0aW9ucy5jcm9zc2ZhZGU9PT0hMCYmIXRoaXMucGF0aC5zb21lKCRNKSk7dGhpcy5hbmltYXRpb25Qcm9ncmVzcz0wO2xldCB4O3RoaXMubWl4VGFyZ2V0RGVsdGE9az0+e2NvbnN0IFQ9ay8xZTM7cHYoZC54LHMueCxUKSxwdihkLnkscy55LFQpLHRoaXMuc2V0VGFyZ2V0RGVsdGEoZCksdGhpcy5yZWxhdGl2ZVRhcmdldCYmdGhpcy5yZWxhdGl2ZVRhcmdldE9yaWdpbiYmdGhpcy5sYXlvdXQmJnRoaXMucmVsYXRpdmVQYXJlbnQmJnRoaXMucmVsYXRpdmVQYXJlbnQubGF5b3V0JiYoY3UoaCx0aGlzLmxheW91dC5sYXlvdXRCb3gsdGhpcy5yZWxhdGl2ZVBhcmVudC5sYXlvdXQubGF5b3V0Qm94KSxVTSh0aGlzLnJlbGF0aXZlVGFyZ2V0LHRoaXMucmVsYXRpdmVUYXJnZXRPcmlnaW4saCxUKSx4JiZ4TSh0aGlzLnJlbGF0aXZlVGFyZ2V0LHgpJiYodGhpcy5pc1Byb2plY3Rpb25EaXJ0eT0hMSkseHx8KHg9X2UoKSksdG4oeCx0aGlzLnJlbGF0aXZlVGFyZ2V0KSksbSYmKHRoaXMuYW5pbWF0aW9uVmFsdWVzPWMsa00oYyx1LHRoaXMubGF0ZXN0VmFsdWVzLFQsdixwKSksdGhpcy5yb290LnNjaGVkdWxlVXBkYXRlUHJvamVjdGlvbigpLHRoaXMuc2NoZWR1bGVSZW5kZXIoKSx0aGlzLmFuaW1hdGlvblByb2dyZXNzPVR9LHRoaXMubWl4VGFyZ2V0RGVsdGEodGhpcy5vcHRpb25zLmxheW91dFJvb3Q\/MWUzOjApfXN0YXJ0QW5pbWF0aW9uKHMpe3ZhciBhLGwsdTt0aGlzLm5vdGlmeUxpc3RlbmVycygiYW5pbWF0aW9uU3RhcnQiKSwoYT10aGlzLmN1cnJlbnRBbmltYXRpb24pPT1udWxsfHxhLnN0b3AoKSwodT0obD10aGlzLnJlc3VtaW5nRnJvbSk9PW51bGw\/dm9pZCAwOmwuY3VycmVudEFuaW1hdGlvbik9PW51bGx8fHUuc3RvcCgpLHRoaXMucGVuZGluZ0FuaW1hdGlvbiYmKEhyKHRoaXMucGVuZGluZ0FuaW1hdGlvbiksdGhpcy5wZW5kaW5nQW5pbWF0aW9uPXZvaWQgMCksdGhpcy5wZW5kaW5nQW5pbWF0aW9uPXZlLnVwZGF0ZSgoKT0+e2tsLmhhc0FuaW1hdGVkU2luY2VSZXNpemU9ITAsdGhpcy5tb3Rpb25WYWx1ZXx8KHRoaXMubW90aW9uVmFsdWU9Um8oMCkpLHRoaXMubW90aW9uVmFsdWUuanVtcCgwLCExKSx0aGlzLmN1cnJlbnRBbmltYXRpb249VE0odGhpcy5tb3Rpb25WYWx1ZSxbMCwxZTNdLHsuLi5zLHZlbG9jaXR5OjAsaXNTeW5jOiEwLG9uVXBkYXRlOmM9Pnt0aGlzLm1peFRhcmdldERlbHRhKGMpLHMub25VcGRhdGUmJnMub25VcGRhdGUoYyl9LG9uU3RvcDooKT0+e30sb25Db21wbGV0ZTooKT0+e3Mub25Db21wbGV0ZSYmcy5vbkNvbXBsZXRlKCksdGhpcy5jb21wbGV0ZUFuaW1hdGlvbigpfX0pLHRoaXMucmVzdW1pbmdGcm9tJiYodGhpcy5yZXN1bWluZ0Zyb20uY3VycmVudEFuaW1hdGlvbj10aGlzLmN1cnJlbnRBbmltYXRpb24pLHRoaXMucGVuZGluZ0FuaW1hdGlvbj12b2lkIDB9KX1jb21wbGV0ZUFuaW1hdGlvbigpe3RoaXMucmVzdW1pbmdGcm9tJiYodGhpcy5yZXN1bWluZ0Zyb20uY3VycmVudEFuaW1hdGlvbj12b2lkIDAsdGhpcy5yZXN1bWluZ0Zyb20ucHJlc2VydmVPcGFjaXR5PXZvaWQgMCk7Y29uc3Qgcz10aGlzLmdldFN0YWNrKCk7cyYmcy5leGl0QW5pbWF0aW9uQ29tcGxldGUoKSx0aGlzLnJlc3VtaW5nRnJvbT10aGlzLmN1cnJlbnRBbmltYXRpb249dGhpcy5hbmltYXRpb25WYWx1ZXM9dm9pZCAwLHRoaXMubm90aWZ5TGlzdGVuZXJzKCJhbmltYXRpb25Db21wbGV0ZSIpfWZpbmlzaEFuaW1hdGlvbigpe3RoaXMuY3VycmVudEFuaW1hdGlvbiYmKHRoaXMubWl4VGFyZ2V0RGVsdGEmJnRoaXMubWl4VGFyZ2V0RGVsdGEoTk0pLHRoaXMuY3VycmVudEFuaW1hdGlvbi5zdG9wKCkpLHRoaXMuY29tcGxldGVBbmltYXRpb24oKX1hcHBseVRyYW5zZm9ybXNUb1RhcmdldCgpe2NvbnN0IHM9dGhpcy5nZXRMZWFkKCk7bGV0e3RhcmdldFdpdGhUcmFuc2Zvcm1zOmEsdGFyZ2V0OmwsbGF5b3V0OnUsbGF0ZXN0VmFsdWVzOmN9PXM7aWYoISghYXx8IWx8fCF1KSl7aWYodGhpcyE9PXMmJnRoaXMubGF5b3V0JiZ1JiZuUyh0aGlzLm9wdGlvbnMuYW5pbWF0aW9uVHlwZSx0aGlzLmxheW91dC5sYXlvdXRCb3gsdS5sYXlvdXRCb3gpKXtsPXRoaXMudGFyZ2V0fHxfZSgpO2NvbnN0IGQ9dXQodGhpcy5sYXlvdXQubGF5b3V0Qm94LngpO2wueC5taW49cy50YXJnZXQueC5taW4sbC54Lm1heD1sLngubWluK2Q7Y29uc3QgaD11dCh0aGlzLmxheW91dC5sYXlvdXRCb3gueSk7bC55Lm1pbj1zLnRhcmdldC55Lm1pbixsLnkubWF4PWwueS5taW4raH10bihhLGwpLG5vKGEsYyksQ3ModGhpcy5wcm9qZWN0aW9uRGVsdGFXaXRoVHJhbnNmb3JtLHRoaXMubGF5b3V0Q29ycmVjdGVkLGEsYyl9fXJlZ2lzdGVyU2hhcmVkTm9kZShzLGEpe3RoaXMuc2hhcmVkTm9kZXMuaGFzKHMpfHx0aGlzLnNoYXJlZE5vZGVzLnNldChzLG5ldyBJTSksdGhpcy5zaGFyZWROb2Rlcy5nZXQocykuYWRkKGEpO2NvbnN0IHU9YS5vcHRpb25zLmluaXRpYWxQcm9tb3Rpb25Db25maWc7YS5wcm9tb3RlKHt0cmFuc2l0aW9uOnU\/dS50cmFuc2l0aW9uOnZvaWQgMCxwcmVzZXJ2ZUZvbGxvd09wYWNpdHk6dSYmdS5zaG91bGRQcmVzZXJ2ZUZvbGxvd09wYWNpdHk\/dS5zaG91bGRQcmVzZXJ2ZUZvbGxvd09wYWNpdHkoYSk6dm9pZCAwfSl9aXNMZWFkKCl7Y29uc3Qgcz10aGlzLmdldFN0YWNrKCk7cmV0dXJuIHM\/cy5sZWFkPT09dGhpczohMH1nZXRMZWFkKCl7dmFyIGE7Y29uc3R7bGF5b3V0SWQ6c309dGhpcy5vcHRpb25zO3JldHVybiBzPygoYT10aGlzLmdldFN0YWNrKCkpPT1udWxsP3ZvaWQgMDphLmxlYWQpfHx0aGlzOnRoaXN9Z2V0UHJldkxlYWQoKXt2YXIgYTtjb25zdHtsYXlvdXRJZDpzfT10aGlzLm9wdGlvbnM7cmV0dXJuIHM\/KGE9dGhpcy5nZXRTdGFjaygpKT09bnVsbD92b2lkIDA6YS5wcmV2TGVhZDp2b2lkIDB9Z2V0U3RhY2soKXtjb25zdHtsYXlvdXRJZDpzfT10aGlzLm9wdGlvbnM7aWYocylyZXR1cm4gdGhpcy5yb290LnNoYXJlZE5vZGVzLmdldChzKX1wcm9tb3RlKHtuZWVkc1Jlc2V0OnMsdHJhbnNpdGlvbjphLHByZXNlcnZlRm9sbG93T3BhY2l0eTpsfT17fSl7Y29uc3QgdT10aGlzLmdldFN0YWNrKCk7dSYmdS5wcm9tb3RlKHRoaXMsbCkscyYmKHRoaXMucHJvamVjdGlvbkRlbHRhPXZvaWQgMCx0aGlzLm5lZWRzUmVzZXQ9ITApLGEmJnRoaXMuc2V0T3B0aW9ucyh7dHJhbnNpdGlvbjphfSl9cmVsZWdhdGUoKXtjb25zdCBzPXRoaXMuZ2V0U3RhY2soKTtyZXR1cm4gcz9zLnJlbGVnYXRlKHRoaXMpOiExfXJlc2V0U2tld0FuZFJvdGF0aW9uKCl7Y29uc3R7dmlzdWFsRWxlbWVudDpzfT10aGlzLm9wdGlvbnM7aWYoIXMpcmV0dXJuO2xldCBhPSExO2NvbnN0e2xhdGVzdFZhbHVlczpsfT1zO2lmKChsLnp8fGwucm90YXRlfHxsLnJvdGF0ZVh8fGwucm90YXRlWXx8bC5yb3RhdGVafHxsLnNrZXdYfHxsLnNrZXdZKSYmKGE9ITApLCFhKXJldHVybjtjb25zdCB1PXt9O2wueiYmUWMoInoiLHMsdSx0aGlzLmFuaW1hdGlvblZhbHVlcyk7Zm9yKGxldCBjPTA7YzxZYy5sZW5ndGg7YysrKVFjKGByb3RhdGUke1ljW2NdfWAscyx1LHRoaXMuYW5pbWF0aW9uVmFsdWVzKSxRYyhgc2tldyR7WWNbY119YCxzLHUsdGhpcy5hbmltYXRpb25WYWx1ZXMpO3MucmVuZGVyKCk7Zm9yKGNvbnN0IGMgaW4gdSlzLnNldFN0YXRpY1ZhbHVlKGMsdVtjXSksdGhpcy5hbmltYXRpb25WYWx1ZXMmJih0aGlzLmFuaW1hdGlvblZhbHVlc1tjXT11W2NdKTtzLnNjaGVkdWxlUmVuZGVyKCl9YXBwbHlQcm9qZWN0aW9uU3R5bGVzKHMsYSl7aWYoIXRoaXMuaW5zdGFuY2V8fHRoaXMuaXNTVkcpcmV0dXJuO2lmKCF0aGlzLmlzVmlzaWJsZSl7cy52aXNpYmlsaXR5PSJoaWRkZW4iO3JldHVybn1jb25zdCBsPXRoaXMuZ2V0VHJhbnNmb3JtVGVtcGxhdGUoKTtpZih0aGlzLm5lZWRzUmVzZXQpe3RoaXMubmVlZHNSZXNldD0hMSxzLnZpc2liaWxpdHk9IiIscy5vcGFjaXR5PSIiLHMucG9pbnRlckV2ZW50cz1ibChhPT1udWxsP3ZvaWQgMDphLnBvaW50ZXJFdmVudHMpfHwiIixzLnRyYW5zZm9ybT1sP2wodGhpcy5sYXRlc3RWYWx1ZXMsIiIpOiJub25lIjtyZXR1cm59Y29uc3QgdT10aGlzLmdldExlYWQoKTtpZighdGhpcy5wcm9qZWN0aW9uRGVsdGF8fCF0aGlzLmxheW91dHx8IXUudGFyZ2V0KXt0aGlzLm9wdGlvbnMubGF5b3V0SWQmJihzLm9wYWNpdHk9dGhpcy5sYXRlc3RWYWx1ZXMub3BhY2l0eSE9PXZvaWQgMD90aGlzLmxhdGVzdFZhbHVlcy5vcGFjaXR5OjEscy5wb2ludGVyRXZlbnRzPWJsKGE9PW51bGw\/dm9pZCAwOmEucG9pbnRlckV2ZW50cyl8fCIiKSx0aGlzLmhhc1Byb2plY3RlZCYmIW9pKHRoaXMubGF0ZXN0VmFsdWVzKSYmKHMudHJhbnNmb3JtPWw\/bCh7fSwiIik6Im5vbmUiLHRoaXMuaGFzUHJvamVjdGVkPSExKTtyZXR1cm59cy52aXNpYmlsaXR5PSIiO2NvbnN0IGM9dS5hbmltYXRpb25WYWx1ZXN8fHUubGF0ZXN0VmFsdWVzO3RoaXMuYXBwbHlUcmFuc2Zvcm1zVG9UYXJnZXQoKTtsZXQgZD13TSh0aGlzLnByb2plY3Rpb25EZWx0YVdpdGhUcmFuc2Zvcm0sdGhpcy50cmVlU2NhbGUsYyk7bCYmKGQ9bChjLGQpKSxzLnRyYW5zZm9ybT1kO2NvbnN0e3g6aCx5OmZ9PXRoaXMucHJvamVjdGlvbkRlbHRhO3MudHJhbnNmb3JtT3JpZ2luPWAke2gub3JpZ2luKjEwMH0lICR7Zi5vcmlnaW4qMTAwfSUgMGAsdS5hbmltYXRpb25WYWx1ZXM\/cy5vcGFjaXR5PXU9PT10aGlzP2Mub3BhY2l0eT8\/dGhpcy5sYXRlc3RWYWx1ZXMub3BhY2l0eT8\/MTp0aGlzLnByZXNlcnZlT3BhY2l0eT90aGlzLmxhdGVzdFZhbHVlcy5vcGFjaXR5OmMub3BhY2l0eUV4aXQ6cy5vcGFjaXR5PXU9PT10aGlzP2Mub3BhY2l0eSE9PXZvaWQgMD9jLm9wYWNpdHk6IiI6Yy5vcGFjaXR5RXhpdCE9PXZvaWQgMD9jLm9wYWNpdHlFeGl0OjA7Zm9yKGNvbnN0IHkgaW4gSGYpe2lmKGNbeV09PT12b2lkIDApY29udGludWU7Y29uc3R7Y29ycmVjdDptLGFwcGx5VG86dyxpc0NTU1ZhcmlhYmxlOnB9PUhmW3ldLHY9ZD09PSJub25lIj9jW3ldOm0oY1t5XSx1KTtpZih3KXtjb25zdCB4PXcubGVuZ3RoO2ZvcihsZXQgaz0wO2s8eDtrKyspc1t3W2tdXT12fWVsc2UgcD90aGlzLm9wdGlvbnMudmlzdWFsRWxlbWVudC5yZW5kZXJTdGF0ZS52YXJzW3ldPXY6c1t5XT12fXRoaXMub3B0aW9ucy5sYXlvdXRJZCYmKHMucG9pbnRlckV2ZW50cz11PT09dGhpcz9ibChhPT1udWxsP3ZvaWQgMDphLnBvaW50ZXJFdmVudHMpfHwiIjoibm9uZSIpfWNsZWFyU25hcHNob3QoKXt0aGlzLnJlc3VtZUZyb209dGhpcy5zbmFwc2hvdD12b2lkIDB9cmVzZXRUcmVlKCl7dGhpcy5yb290Lm5vZGVzLmZvckVhY2gocz0+e3ZhciBhO3JldHVybihhPXMuY3VycmVudEFuaW1hdGlvbik9PW51bGw\/dm9pZCAwOmEuc3RvcCgpfSksdGhpcy5yb290Lm5vZGVzLmZvckVhY2goZHYpLHRoaXMucm9vdC5zaGFyZWROb2Rlcy5jbGVhcigpfX19ZnVuY3Rpb24gek0oZSl7ZS51cGRhdGVMYXlvdXQoKX1mdW5jdGlvbiBSTShlKXt2YXIgbjtjb25zdCB0PSgobj1lLnJlc3VtZUZyb20pPT1udWxsP3ZvaWQgMDpuLnNuYXBzaG90KXx8ZS5zbmFwc2hvdDtpZihlLmlzTGVhZCgpJiZlLmxheW91dCYmdCYmZS5oYXNMaXN0ZW5lcnMoImRpZFVwZGF0ZSIpKXtjb25zdHtsYXlvdXRCb3g6cixtZWFzdXJlZEJveDppfT1lLmxheW91dCx7YW5pbWF0aW9uVHlwZTpvfT1lLm9wdGlvbnMscz10LnNvdXJjZSE9PWUubGF5b3V0LnNvdXJjZTtpZihvPT09InNpemUiKWJuKGQ9Pntjb25zdCBoPXM\/dC5tZWFzdXJlZEJveFtkXTp0LmxheW91dEJveFtkXSxmPXV0KGgpO2gubWluPXJbZF0ubWluLGgubWF4PWgubWluK2Z9KTtlbHNlIGlmKG89PT0ieCJ8fG89PT0ieSIpe2NvbnN0IGQ9bz09PSJ4Ij8ieSI6IngiO3FmKHM\/dC5tZWFzdXJlZEJveFtkXTp0LmxheW91dEJveFtkXSxyW2RdKX1lbHNlIG5TKG8sdC5sYXlvdXRCb3gscikmJmJuKGQ9Pntjb25zdCBoPXM\/dC5tZWFzdXJlZEJveFtkXTp0LmxheW91dEJveFtkXSxmPXV0KHJbZF0pO2gubWF4PWgubWluK2YsZS5yZWxhdGl2ZVRhcmdldCYmIWUuY3VycmVudEFuaW1hdGlvbiYmKGUuaXNQcm9qZWN0aW9uRGlydHk9ITAsZS5yZWxhdGl2ZVRhcmdldFtkXS5tYXg9ZS5yZWxhdGl2ZVRhcmdldFtkXS5taW4rZil9KTtjb25zdCBhPWVvKCk7Q3MoYSxyLHQubGF5b3V0Qm94KTtjb25zdCBsPWVvKCk7cz9DcyhsLGUuYXBwbHlUcmFuc2Zvcm0oaSwhMCksdC5tZWFzdXJlZEJveCk6Q3MobCxyLHQubGF5b3V0Qm94KTtjb25zdCB1PSFRayhhKTtsZXQgYz0hMTtpZighZS5yZXN1bWVGcm9tKXtjb25zdCBkPWUuZ2V0Q2xvc2VzdFByb2plY3RpbmdQYXJlbnQoKTtpZihkJiYhZC5yZXN1bWVGcm9tKXtjb25zdHtzbmFwc2hvdDpoLGxheW91dDpmfT1kO2lmKGgmJmYpe2NvbnN0IHk9X2UoKTtjdSh5LHQubGF5b3V0Qm94LGgubGF5b3V0Qm94KTtjb25zdCBtPV9lKCk7Y3UobSxyLGYubGF5b3V0Qm94KSxYayh5LG0pfHwoYz0hMCksZC5vcHRpb25zLmxheW91dFJvb3QmJihlLnJlbGF0aXZlVGFyZ2V0PW0sZS5yZWxhdGl2ZVRhcmdldE9yaWdpbj15LGUucmVsYXRpdmVQYXJlbnQ9ZCl9fX1lLm5vdGlmeUxpc3RlbmVycygiZGlkVXBkYXRlIix7bGF5b3V0OnIsc25hcHNob3Q6dCxkZWx0YTpsLGxheW91dERlbHRhOmEsaGFzTGF5b3V0Q2hhbmdlZDp1LGhhc1JlbGF0aXZlTGF5b3V0Q2hhbmdlZDpjfSl9ZWxzZSBpZihlLmlzTGVhZCgpKXtjb25zdHtvbkV4aXRDb21wbGV0ZTpyfT1lLm9wdGlvbnM7ciYmcigpfWUub3B0aW9ucy50cmFuc2l0aW9uPXZvaWQgMH1mdW5jdGlvbiBETShlKXtlLnBhcmVudCYmKGUuaXNQcm9qZWN0aW5nKCl8fChlLmlzUHJvamVjdGlvbkRpcnR5PWUucGFyZW50LmlzUHJvamVjdGlvbkRpcnR5KSxlLmlzU2hhcmVkUHJvamVjdGlvbkRpcnR5fHwoZS5pc1NoYXJlZFByb2plY3Rpb25EaXJ0eT0hIShlLmlzUHJvamVjdGlvbkRpcnR5fHxlLnBhcmVudC5pc1Byb2plY3Rpb25EaXJ0eXx8ZS5wYXJlbnQuaXNTaGFyZWRQcm9qZWN0aW9uRGlydHkpKSxlLmlzVHJhbnNmb3JtRGlydHl8fChlLmlzVHJhbnNmb3JtRGlydHk9ZS5wYXJlbnQuaXNUcmFuc2Zvcm1EaXJ0eSkpfWZ1bmN0aW9uIE1NKGUpe2UuaXNQcm9qZWN0aW9uRGlydHk9ZS5pc1NoYXJlZFByb2plY3Rpb25EaXJ0eT1lLmlzVHJhbnNmb3JtRGlydHk9ITF9ZnVuY3Rpb24gTE0oZSl7ZS5jbGVhclNuYXBzaG90KCl9ZnVuY3Rpb24gZHYoZSl7ZS5jbGVhck1lYXN1cmVtZW50cygpfWZ1bmN0aW9uIGZ2KGUpe2UuaXNMYXlvdXREaXJ0eT0hMX1mdW5jdGlvbiBPTShlKXtjb25zdHt2aXN1YWxFbGVtZW50OnR9PWUub3B0aW9uczt0JiZ0LmdldFByb3BzKCkub25CZWZvcmVMYXlvdXRNZWFzdXJlJiZ0Lm5vdGlmeSgiQmVmb3JlTGF5b3V0TWVhc3VyZSIpLGUucmVzZXRUcmFuc2Zvcm0oKX1mdW5jdGlvbiBodihlKXtlLmZpbmlzaEFuaW1hdGlvbigpLGUudGFyZ2V0RGVsdGE9ZS5yZWxhdGl2ZVRhcmdldD1lLnRhcmdldD12b2lkIDAsZS5pc1Byb2plY3Rpb25EaXJ0eT0hMH1mdW5jdGlvbiBGTShlKXtlLnJlc29sdmVUYXJnZXREZWx0YSgpfWZ1bmN0aW9uIF9NKGUpe2UuY2FsY1Byb2plY3Rpb24oKX1mdW5jdGlvbiBWTShlKXtlLnJlc2V0U2tld0FuZFJvdGF0aW9uKCl9ZnVuY3Rpb24gQk0oZSl7ZS5yZW1vdmVMZWFkU25hcHNob3QoKX1mdW5jdGlvbiBwdihlLHQsbil7ZS50cmFuc2xhdGU9UGUodC50cmFuc2xhdGUsMCxuKSxlLnNjYWxlPVBlKHQuc2NhbGUsMSxuKSxlLm9yaWdpbj10Lm9yaWdpbixlLm9yaWdpblBvaW50PXQub3JpZ2luUG9pbnR9ZnVuY3Rpb24gbXYoZSx0LG4scil7ZS5taW49UGUodC5taW4sbi5taW4sciksZS5tYXg9UGUodC5tYXgsbi5tYXgscil9ZnVuY3Rpb24gVU0oZSx0LG4scil7bXYoZS54LHQueCxuLngsciksbXYoZS55LHQueSxuLnkscil9ZnVuY3Rpb24gJE0oZSl7cmV0dXJuIGUuYW5pbWF0aW9uVmFsdWVzJiZlLmFuaW1hdGlvblZhbHVlcy5vcGFjaXR5RXhpdCE9PXZvaWQgMH1jb25zdCBITT17ZHVyYXRpb246LjQ1LGVhc2U6Wy40LDAsLjEsMV19LGd2PWU9PnR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZSkseXY9Z3YoImFwcGxld2Via2l0LyIpJiYhZ3YoImNocm9tZS8iKT9NYXRoLnJvdW5kOld0O2Z1bmN0aW9uIHZ2KGUpe2UubWluPXl2KGUubWluKSxlLm1heD15dihlLm1heCl9ZnVuY3Rpb24gcU0oZSl7dnYoZS54KSx2dihlLnkpfWZ1bmN0aW9uIG5TKGUsdCxuKXtyZXR1cm4gZT09PSJwb3NpdGlvbiJ8fGU9PT0icHJlc2VydmUtYXNwZWN0IiYmIXBNKHN2KHQpLHN2KG4pLC4yKX1mdW5jdGlvbiBXTShlKXt2YXIgdDtyZXR1cm4gZSE9PWUucm9vdCYmKCh0PWUuc2Nyb2xsKT09bnVsbD92b2lkIDA6dC53YXNSb290KX1jb25zdCBLTT10Uyh7YXR0YWNoUmVzaXplTGlzdGVuZXI6KGUsdCk9Pm5hKGUsInJlc2l6ZSIsdCksbWVhc3VyZVNjcm9sbDooKT0+e3ZhciBlLHQ7cmV0dXJue3g6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8fCgoZT1kb2N1bWVudC5ib2R5KT09bnVsbD92b2lkIDA6ZS5zY3JvbGxMZWZ0KXx8MCx5OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fCgodD1kb2N1bWVudC5ib2R5KT09bnVsbD92b2lkIDA6dC5zY3JvbGxUb3ApfHwwfX0sY2hlY2tJc1Njcm9sbFJvb3Q6KCk9PiEwfSksWGM9e2N1cnJlbnQ6dm9pZCAwfSxyUz10Uyh7bWVhc3VyZVNjcm9sbDplPT4oe3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9KSxkZWZhdWx0UGFyZW50OigpPT57aWYoIVhjLmN1cnJlbnQpe2NvbnN0IGU9bmV3IEtNKHt9KTtlLm1vdW50KHdpbmRvdyksZS5zZXRPcHRpb25zKHtsYXlvdXRTY3JvbGw6ITB9KSxYYy5jdXJyZW50PWV9cmV0dXJuIFhjLmN1cnJlbnR9LHJlc2V0VHJhbnNmb3JtOihlLHQpPT57ZS5zdHlsZS50cmFuc2Zvcm09dCE9PXZvaWQgMD90OiJub25lIn0sY2hlY2tJc1Njcm9sbFJvb3Q6ZT0+d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkucG9zaXRpb249PT0iZml4ZWQifSksR3A9Yi5jcmVhdGVDb250ZXh0KHt0cmFuc2Zvcm1QYWdlUG9pbnQ6ZT0+ZSxpc1N0YXRpYzohMSxyZWR1Y2VkTW90aW9uOiJuZXZlciJ9KTtmdW5jdGlvbiB4dihlLHQpe2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXJldHVybiBlKHQpO2UhPW51bGwmJihlLmN1cnJlbnQ9dCl9ZnVuY3Rpb24gR00oLi4uZSl7cmV0dXJuIHQ9PntsZXQgbj0hMTtjb25zdCByPWUubWFwKGk9Pntjb25zdCBvPXh2KGksdCk7cmV0dXJuIW4mJnR5cGVvZiBvPT0iZnVuY3Rpb24iJiYobj0hMCksb30pO2lmKG4pcmV0dXJuKCk9Pntmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7Y29uc3Qgbz1yW2ldO3R5cGVvZiBvPT0iZnVuY3Rpb24iP28oKTp4dihlW2ldLG51bGwpfX19fWZ1bmN0aW9uIFlNKC4uLmUpe3JldHVybiBiLnVzZUNhbGxiYWNrKEdNKC4uLmUpLGUpfWNsYXNzIFFNIGV4dGVuZHMgYi5Db21wb25lbnR7Z2V0U25hcHNob3RCZWZvcmVVcGRhdGUodCl7Y29uc3Qgbj10aGlzLnByb3BzLmNoaWxkUmVmLmN1cnJlbnQ7aWYoeWwobikmJnQuaXNQcmVzZW50JiYhdGhpcy5wcm9wcy5pc1ByZXNlbnQmJnRoaXMucHJvcHMucG9wIT09ITEpe2NvbnN0IHI9bi5vZmZzZXRQYXJlbnQsaT15bChyKSYmci5vZmZzZXRXaWR0aHx8MCxvPXlsKHIpJiZyLm9mZnNldEhlaWdodHx8MCxzPWdldENvbXB1dGVkU3R5bGUobiksYT10aGlzLnByb3BzLnNpemVSZWYuY3VycmVudDthLmhlaWdodD1wYXJzZUZsb2F0KHMuaGVpZ2h0KSxhLndpZHRoPXBhcnNlRmxvYXQocy53aWR0aCksYS50b3A9bi5vZmZzZXRUb3AsYS5sZWZ0PW4ub2Zmc2V0TGVmdCxhLnJpZ2h0PWktYS53aWR0aC1hLmxlZnQsYS5ib3R0b209by1hLmhlaWdodC1hLnRvcH1yZXR1cm4gbnVsbH1jb21wb25lbnREaWRVcGRhdGUoKXt9cmVuZGVyKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW59fWZ1bmN0aW9uIFhNKHtjaGlsZHJlbjplLGlzUHJlc2VudDp0LGFuY2hvclg6bixhbmNob3JZOnIscm9vdDppLHBvcDpvfSl7dmFyIGg7Y29uc3Qgcz1iLnVzZUlkKCksYT1iLnVzZVJlZihudWxsKSxsPWIudXNlUmVmKHt3aWR0aDowLGhlaWdodDowLHRvcDowLGxlZnQ6MCxyaWdodDowLGJvdHRvbTowfSkse25vbmNlOnV9PWIudXNlQ29udGV4dChHcCksYz0oKGg9ZS5wcm9wcyk9PW51bGw\/dm9pZCAwOmgucmVmKT8\/KGU9PW51bGw\/dm9pZCAwOmUucmVmKSxkPVlNKGEsYyk7cmV0dXJuIGIudXNlSW5zZXJ0aW9uRWZmZWN0KCgpPT57Y29uc3R7d2lkdGg6ZixoZWlnaHQ6eSx0b3A6bSxsZWZ0OncscmlnaHQ6cCxib3R0b206dn09bC5jdXJyZW50O2lmKHR8fG89PT0hMXx8IWEuY3VycmVudHx8IWZ8fCF5KXJldHVybjtjb25zdCB4PW49PT0ibGVmdCI\/YGxlZnQ6ICR7d31gOmByaWdodDogJHtwfWAsaz1yPT09ImJvdHRvbSI\/YGJvdHRvbTogJHt2fWA6YHRvcDogJHttfWA7YS5jdXJyZW50LmRhdGFzZXQubW90aW9uUG9wSWQ9cztjb25zdCBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dSYmKFQubm9uY2U9dSk7Y29uc3QgQz1pPz9kb2N1bWVudC5oZWFkO3JldHVybiBDLmFwcGVuZENoaWxkKFQpLFQuc2hlZXQmJlQuc2hlZXQuaW5zZXJ0UnVsZShgCiAgICAgICAgICBbZGF0YS1tb3Rpb24tcG9wLWlkPSIke3N9Il0gewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6ICR7Zn1weCAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6ICR7eX1weCAhaW1wb3J0YW50OwogICAgICAgICAgICAke3h9cHggIWltcG9ydGFudDsKICAgICAgICAgICAgJHtrfXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICB9CiAgICAgICAgYCksKCk9Pnt2YXIgUDsoUD1hLmN1cnJlbnQpPT1udWxsfHxQLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1tb3Rpb24tcG9wLWlkIiksQy5jb250YWlucyhUKSYmQy5yZW1vdmVDaGlsZChUKX19LFt0XSksZy5qc3goUU0se2lzUHJlc2VudDp0LGNoaWxkUmVmOmEsc2l6ZVJlZjpsLHBvcDpvLGNoaWxkcmVuOm89PT0hMT9lOmIuY2xvbmVFbGVtZW50KGUse3JlZjpkfSl9KX1jb25zdCBKTT0oe2NoaWxkcmVuOmUsaW5pdGlhbDp0LGlzUHJlc2VudDpuLG9uRXhpdENvbXBsZXRlOnIsY3VzdG9tOmkscHJlc2VuY2VBZmZlY3RzTGF5b3V0Om8sbW9kZTpzLGFuY2hvclg6YSxhbmNob3JZOmwscm9vdDp1fSk9Pntjb25zdCBjPWtwKFpNKSxkPWIudXNlSWQoKTtsZXQgaD0hMCxmPWIudXNlTWVtbygoKT0+KGg9ITEse2lkOmQsaW5pdGlhbDp0LGlzUHJlc2VudDpuLGN1c3RvbTppLG9uRXhpdENvbXBsZXRlOnk9PntjLnNldCh5LCEwKTtmb3IoY29uc3QgbSBvZiBjLnZhbHVlcygpKWlmKCFtKXJldHVybjtyJiZyKCl9LHJlZ2lzdGVyOnk9PihjLnNldCh5LCExKSwoKT0+Yy5kZWxldGUoeSkpfSksW24sYyxyXSk7cmV0dXJuIG8mJmgmJihmPXsuLi5mfSksYi51c2VNZW1vKCgpPT57Yy5mb3JFYWNoKCh5LG0pPT5jLnNldChtLCExKSl9LFtuXSksYi51c2VFZmZlY3QoKCk9PnshbiYmIWMuc2l6ZSYmciYmcigpfSxbbl0pLGU9Zy5qc3goWE0se3BvcDpzPT09InBvcExheW91dCIsaXNQcmVzZW50Om4sYW5jaG9yWDphLGFuY2hvclk6bCxyb290OnUsY2hpbGRyZW46ZX0pLGcuanN4KEh1LlByb3ZpZGVyLHt2YWx1ZTpmLGNoaWxkcmVuOmV9KX07ZnVuY3Rpb24gWk0oKXtyZXR1cm4gbmV3IE1hcH1mdW5jdGlvbiBpUyhlPSEwKXtjb25zdCB0PWIudXNlQ29udGV4dChIdSk7aWYodD09PW51bGwpcmV0dXJuWyEwLG51bGxdO2NvbnN0e2lzUHJlc2VudDpuLG9uRXhpdENvbXBsZXRlOnIscmVnaXN0ZXI6aX09dCxvPWIudXNlSWQoKTtiLnVzZUVmZmVjdCgoKT0+e2lmKGUpcmV0dXJuIGkobyl9LFtlXSk7Y29uc3Qgcz1iLnVzZUNhbGxiYWNrKCgpPT5lJiZyJiZyKG8pLFtvLHIsZV0pO3JldHVybiFuJiZyP1shMSxzXTpbITBdfWNvbnN0IFlhPWU9PmUua2V5fHwiIjtmdW5jdGlvbiB3dihlKXtjb25zdCB0PVtdO3JldHVybiBiLkNoaWxkcmVuLmZvckVhY2goZSxuPT57Yi5pc1ZhbGlkRWxlbWVudChuKSYmdC5wdXNoKG4pfSksdH1jb25zdCByYT0oe2NoaWxkcmVuOmUsY3VzdG9tOnQsaW5pdGlhbDpuPSEwLG9uRXhpdENvbXBsZXRlOnIscHJlc2VuY2VBZmZlY3RzTGF5b3V0Omk9ITAsbW9kZTpvPSJzeW5jIixwcm9wYWdhdGU6cz0hMSxhbmNob3JYOmE9ImxlZnQiLGFuY2hvclk6bD0idG9wIixyb290OnV9KT0+e2NvbnN0W2MsZF09aVMocyksaD1iLnVzZU1lbW8oKCk9Pnd2KGUpLFtlXSksZj1zJiYhYz9bXTpoLm1hcChZYSkseT1iLnVzZVJlZighMCksbT1iLnVzZVJlZihoKSx3PWtwKCgpPT5uZXcgTWFwKSxwPWIudXNlUmVmKG5ldyBTZXQpLFt2LHhdPWIudXNlU3RhdGUoaCksW2ssVF09Yi51c2VTdGF0ZShoKTt6YigoKT0+e3kuY3VycmVudD0hMSxtLmN1cnJlbnQ9aDtmb3IobGV0IEE9MDtBPGsubGVuZ3RoO0ErKyl7Y29uc3Qgaj1ZYShrW0FdKTtmLmluY2x1ZGVzKGopPyh3LmRlbGV0ZShqKSxwLmN1cnJlbnQuZGVsZXRlKGopKTp3LmdldChqKSE9PSEwJiZ3LnNldChqLCExKX19LFtrLGYubGVuZ3RoLGYuam9pbigiLSIpXSk7Y29uc3QgQz1bXTtpZihoIT09dil7bGV0IEE9Wy4uLmhdO2ZvcihsZXQgaj0wO2o8ay5sZW5ndGg7aisrKXtjb25zdCBJPWtbal0sTT1ZYShJKTtmLmluY2x1ZGVzKE0pfHwoQS5zcGxpY2UoaiwwLEkpLEMucHVzaChJKSl9cmV0dXJuIG89PT0id2FpdCImJkMubGVuZ3RoJiYoQT1DKSxUKHd2KEEpKSx4KGgpLG51bGx9Y29uc3R7Zm9yY2VSZW5kZXI6UH09Yi51c2VDb250ZXh0KGJwKTtyZXR1cm4gZy5qc3goZy5GcmFnbWVudCx7Y2hpbGRyZW46ay5tYXAoQT0+e2NvbnN0IGo9WWEoQSksST1zJiYhYz8hMTpoPT09a3x8Zi5pbmNsdWRlcyhqKSxNPSgpPT57aWYocC5jdXJyZW50LmhhcyhqKSlyZXR1cm47aWYody5oYXMoaikpcC5jdXJyZW50LmFkZChqKSx3LnNldChqLCEwKTtlbHNlIHJldHVybjtsZXQgej0hMDt3LmZvckVhY2goJD0+eyR8fCh6PSExKX0pLHomJihQPT1udWxsfHxQKCksVChtLmN1cnJlbnQpLHMmJihkPT1udWxsfHxkKCkpLHImJnIoKSl9O3JldHVybiBnLmpzeChKTSx7aXNQcmVzZW50OkksaW5pdGlhbDoheS5jdXJyZW50fHxuP3ZvaWQgMDohMSxjdXN0b206dCxwcmVzZW5jZUFmZmVjdHNMYXlvdXQ6aSxtb2RlOm8scm9vdDp1LG9uRXhpdENvbXBsZXRlOkk\/dm9pZCAwOk0sYW5jaG9yWDphLGFuY2hvclk6bCxjaGlsZHJlbjpBfSxqKX0pfSl9LG9TPWIuY3JlYXRlQ29udGV4dCh7c3RyaWN0OiExfSksYnY9e2FuaW1hdGlvbjpbImFuaW1hdGUiLCJ2YXJpYW50cyIsIndoaWxlSG92ZXIiLCJ3aGlsZVRhcCIsImV4aXQiLCJ3aGlsZUluVmlldyIsIndoaWxlRm9jdXMiLCJ3aGlsZURyYWciXSxleGl0OlsiZXhpdCJdLGRyYWc6WyJkcmFnIiwiZHJhZ0NvbnRyb2xzIl0sZm9jdXM6WyJ3aGlsZUZvY3VzIl0saG92ZXI6WyJ3aGlsZUhvdmVyIiwib25Ib3ZlclN0YXJ0Iiwib25Ib3ZlckVuZCJdLHRhcDpbIndoaWxlVGFwIiwib25UYXAiLCJvblRhcFN0YXJ0Iiwib25UYXBDYW5jZWwiXSxwYW46WyJvblBhbiIsIm9uUGFuU3RhcnQiLCJvblBhblNlc3Npb25TdGFydCIsIm9uUGFuRW5kIl0saW5WaWV3Olsid2hpbGVJblZpZXciLCJvblZpZXdwb3J0RW50ZXIiLCJvblZpZXdwb3J0TGVhdmUiXSxsYXlvdXQ6WyJsYXlvdXQiLCJsYXlvdXRJZCJdfTtsZXQga3Y9ITE7ZnVuY3Rpb24gZUwoKXtpZihrdilyZXR1cm47Y29uc3QgZT17fTtmb3IoY29uc3QgdCBpbiBidillW3RdPXtpc0VuYWJsZWQ6bj0+YnZbdF0uc29tZShyPT4hIW5bcl0pfTtEayhlKSxrdj0hMH1mdW5jdGlvbiBzUygpe3JldHVybiBlTCgpLFZEKCl9ZnVuY3Rpb24gdEwoZSl7Y29uc3QgdD1zUygpO2Zvcihjb25zdCBuIGluIGUpdFtuXT17Li4udFtuXSwuLi5lW25dfTtEayh0KX1jb25zdCBuTD1uZXcgU2V0KFsiYW5pbWF0ZSIsImV4aXQiLCJ2YXJpYW50cyIsImluaXRpYWwiLCJzdHlsZSIsInZhbHVlcyIsInZhcmlhbnRzIiwidHJhbnNpdGlvbiIsInRyYW5zZm9ybVRlbXBsYXRlIiwiY3VzdG9tIiwiaW5oZXJpdCIsIm9uQmVmb3JlTGF5b3V0TWVhc3VyZSIsIm9uQW5pbWF0aW9uU3RhcnQiLCJvbkFuaW1hdGlvbkNvbXBsZXRlIiwib25VcGRhdGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZyIsIm9uRHJhZ0VuZCIsIm9uTWVhc3VyZURyYWdDb25zdHJhaW50cyIsIm9uRGlyZWN0aW9uTG9jayIsIm9uRHJhZ1RyYW5zaXRpb25FbmQiLCJfZHJhZ1giLCJfZHJhZ1kiLCJvbkhvdmVyU3RhcnQiLCJvbkhvdmVyRW5kIiwib25WaWV3cG9ydEVudGVyIiwib25WaWV3cG9ydExlYXZlIiwiZ2xvYmFsVGFwVGFyZ2V0IiwicHJvcGFnYXRlIiwiaWdub3JlU3RyaWN0Iiwidmlld3BvcnQiXSk7ZnVuY3Rpb24gZHUoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgid2hpbGUiKXx8ZS5zdGFydHNXaXRoKCJkcmFnIikmJmUhPT0iZHJhZ2dhYmxlInx8ZS5zdGFydHNXaXRoKCJsYXlvdXQiKXx8ZS5zdGFydHNXaXRoKCJvblRhcCIpfHxlLnN0YXJ0c1dpdGgoIm9uUGFuIil8fGUuc3RhcnRzV2l0aCgib25MYXlvdXQiKXx8bkwuaGFzKGUpfWxldCBhUz1lPT4hZHUoZSk7ZnVuY3Rpb24gckwoZSl7dHlwZW9mIGU9PSJmdW5jdGlvbiImJihhUz10PT50LnN0YXJ0c1dpdGgoIm9uIik\/IWR1KHQpOmUodCkpfXRyeXtyTChyZXF1aXJlKCJAZW1vdGlvbi9pcy1wcm9wLXZhbGlkIikuZGVmYXVsdCl9Y2F0Y2h7fWZ1bmN0aW9uIGlMKGUsdCxuKXtjb25zdCByPXt9O2Zvcihjb25zdCBpIGluIGUpaT09PSJ2YWx1ZXMiJiZ0eXBlb2YgZS52YWx1ZXM9PSJvYmplY3QifHxLZShlW2ldKXx8KGFTKGkpfHxuPT09ITAmJmR1KGkpfHwhdCYmIWR1KGkpfHxlLmRyYWdnYWJsZSYmaS5zdGFydHNXaXRoKCJvbkRyYWciKSkmJihyW2ldPWVbaV0pO3JldHVybiByfWNvbnN0IEd1PWIuY3JlYXRlQ29udGV4dCh7fSk7ZnVuY3Rpb24gb0woZSx0KXtpZihLdShlKSl7Y29uc3R7aW5pdGlhbDpuLGFuaW1hdGU6cn09ZTtyZXR1cm57aW5pdGlhbDpuPT09ITF8fHRhKG4pP246dm9pZCAwLGFuaW1hdGU6dGEocik\/cjp2b2lkIDB9fXJldHVybiBlLmluaGVyaXQhPT0hMT90Ont9fWZ1bmN0aW9uIHNMKGUpe2NvbnN0e2luaXRpYWw6dCxhbmltYXRlOm59PW9MKGUsYi51c2VDb250ZXh0KEd1KSk7cmV0dXJuIGIudXNlTWVtbygoKT0+KHtpbml0aWFsOnQsYW5pbWF0ZTpufSksW1N2KHQpLFN2KG4pXSl9ZnVuY3Rpb24gU3YoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/ZS5qb2luKCIgIik6ZX1jb25zdCBZcD0oKT0+KHtzdHlsZTp7fSx0cmFuc2Zvcm06e30sdHJhbnNmb3JtT3JpZ2luOnt9LHZhcnM6e319KTtmdW5jdGlvbiBsUyhlLHQsbil7Zm9yKGNvbnN0IHIgaW4gdCkhS2UodFtyXSkmJiFCayhyLG4pJiYoZVtyXT10W3JdKX1mdW5jdGlvbiBhTCh7dHJhbnNmb3JtVGVtcGxhdGU6ZX0sdCl7cmV0dXJuIGIudXNlTWVtbygoKT0+e2NvbnN0IG49WXAoKTtyZXR1cm4gV3Aobix0LGUpLE9iamVjdC5hc3NpZ24oe30sbi52YXJzLG4uc3R5bGUpfSxbdF0pfWZ1bmN0aW9uIGxMKGUsdCl7Y29uc3Qgbj1lLnN0eWxlfHx7fSxyPXt9O3JldHVybiBsUyhyLG4sZSksT2JqZWN0LmFzc2lnbihyLGFMKGUsdCkpLHJ9ZnVuY3Rpb24gdUwoZSx0KXtjb25zdCBuPXt9LHI9bEwoZSx0KTtyZXR1cm4gZS5kcmFnJiZlLmRyYWdMaXN0ZW5lciE9PSExJiYobi5kcmFnZ2FibGU9ITEsci51c2VyU2VsZWN0PXIuV2Via2l0VXNlclNlbGVjdD1yLldlYmtpdFRvdWNoQ2FsbG91dD0ibm9uZSIsci50b3VjaEFjdGlvbj1lLmRyYWc9PT0hMD8ibm9uZSI6YHBhbi0ke2UuZHJhZz09PSJ4Ij8ieSI6IngifWApLGUudGFiSW5kZXg9PT12b2lkIDAmJihlLm9uVGFwfHxlLm9uVGFwU3RhcnR8fGUud2hpbGVUYXApJiYobi50YWJJbmRleD0wKSxuLnN0eWxlPXIsbn1jb25zdCB1Uz0oKT0+KHsuLi5ZcCgpLGF0dHJzOnt9fSk7ZnVuY3Rpb24gY0woZSx0LG4scil7Y29uc3QgaT1iLnVzZU1lbW8oKCk9Pntjb25zdCBvPXVTKCk7cmV0dXJuIFVrKG8sdCxIayhyKSxlLnRyYW5zZm9ybVRlbXBsYXRlLGUuc3R5bGUpLHsuLi5vLmF0dHJzLHN0eWxlOnsuLi5vLnN0eWxlfX19LFt0XSk7aWYoZS5zdHlsZSl7Y29uc3Qgbz17fTtsUyhvLGUuc3R5bGUsZSksaS5zdHlsZT17Li4ubywuLi5pLnN0eWxlfX1yZXR1cm4gaX1jb25zdCBkTD1bImFuaW1hdGUiLCJjaXJjbGUiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwiZmlsdGVyIiwibWFya2VyIiwibWFzayIsIm1ldGFkYXRhIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyZWN0Iiwic3RvcCIsInN3aXRjaCIsInN5bWJvbCIsInN2ZyIsInRleHQiLCJ0c3BhbiIsInVzZSIsInZpZXciXTtmdW5jdGlvbiBRcChlKXtyZXR1cm4gdHlwZW9mIGUhPSJzdHJpbmcifHxlLmluY2x1ZGVzKCItIik\/ITE6ISEoZEwuaW5kZXhPZihlKT4tMXx8L1tBLVpdL3UudGVzdChlKSl9ZnVuY3Rpb24gZkwoZSx0LG4se2xhdGVzdFZhbHVlczpyfSxpLG89ITEscyl7Y29uc3QgbD0ocz8\/UXAoZSk\/Y0w6dUwpKHQscixpLGUpLHU9aUwodCx0eXBlb2YgZT09InN0cmluZyIsbyksYz1lIT09Yi5GcmFnbWVudD97Li4udSwuLi5sLHJlZjpufTp7fSx7Y2hpbGRyZW46ZH09dCxoPWIudXNlTWVtbygoKT0+S2UoZCk\/ZC5nZXQoKTpkLFtkXSk7cmV0dXJuIGIuY3JlYXRlRWxlbWVudChlLHsuLi5jLGNoaWxkcmVuOmh9KX1mdW5jdGlvbiBoTCh7c2NyYXBlTW90aW9uVmFsdWVzRnJvbVByb3BzOmUsY3JlYXRlUmVuZGVyU3RhdGU6dH0sbixyLGkpe3JldHVybntsYXRlc3RWYWx1ZXM6cEwobixyLGksZSkscmVuZGVyU3RhdGU6dCgpfX1mdW5jdGlvbiBwTChlLHQsbixyKXtjb25zdCBpPXt9LG89cihlLHt9KTtmb3IoY29uc3QgaCBpbiBvKWlbaF09Ymwob1toXSk7bGV0e2luaXRpYWw6cyxhbmltYXRlOmF9PWU7Y29uc3QgbD1LdShlKSx1PXprKGUpO3QmJnUmJiFsJiZlLmluaGVyaXQhPT0hMSYmKHM9PT12b2lkIDAmJihzPXQuaW5pdGlhbCksYT09PXZvaWQgMCYmKGE9dC5hbmltYXRlKSk7bGV0IGM9bj9uLmluaXRpYWw9PT0hMTohMTtjPWN8fHM9PT0hMTtjb25zdCBkPWM\/YTpzO2lmKGQmJnR5cGVvZiBkIT0iYm9vbGVhbiImJiFXdShkKSl7Y29uc3QgaD1BcnJheS5pc0FycmF5KGQpP2Q6W2RdO2ZvcihsZXQgZj0wO2Y8aC5sZW5ndGg7ZisrKXtjb25zdCB5PUZwKGUsaFtmXSk7aWYoeSl7Y29uc3R7dHJhbnNpdGlvbkVuZDptLHRyYW5zaXRpb246dywuLi5wfT15O2Zvcihjb25zdCB2IGluIHApe2xldCB4PXBbdl07aWYoQXJyYXkuaXNBcnJheSh4KSl7Y29uc3Qgaz1jP3gubGVuZ3RoLTE6MDt4PXhba119eCE9PW51bGwmJihpW3ZdPXgpfWZvcihjb25zdCB2IGluIG0paVt2XT1tW3ZdfX19cmV0dXJuIGl9Y29uc3QgY1M9ZT0+KHQsbik9Pntjb25zdCByPWIudXNlQ29udGV4dChHdSksaT1iLnVzZUNvbnRleHQoSHUpLG89KCk9PmhMKGUsdCxyLGkpO3JldHVybiBuP28oKTprcChvKX0sbUw9Y1Moe3NjcmFwZU1vdGlvblZhbHVlc0Zyb21Qcm9wczpLcCxjcmVhdGVSZW5kZXJTdGF0ZTpZcH0pLGdMPWNTKHtzY3JhcGVNb3Rpb25WYWx1ZXNGcm9tUHJvcHM6cWssY3JlYXRlUmVuZGVyU3RhdGU6dVN9KSx5TD1TeW1ib2wuZm9yKCJtb3Rpb25Db21wb25lbnRTeW1ib2wiKTtmdW5jdGlvbiB2TChlLHQsbil7Y29uc3Qgcj1iLnVzZVJlZihuKTtiLnVzZUluc2VydGlvbkVmZmVjdCgoKT0+e3IuY3VycmVudD1ufSk7Y29uc3QgaT1iLnVzZVJlZihudWxsKTtyZXR1cm4gYi51c2VDYWxsYmFjayhvPT57dmFyIGE7byYmKChhPWUub25Nb3VudCk9PW51bGx8fGEuY2FsbChlLG8pKTtjb25zdCBzPXIuY3VycmVudDtpZih0eXBlb2Ygcz09ImZ1bmN0aW9uIilpZihvKXtjb25zdCBsPXMobyk7dHlwZW9mIGw9PSJmdW5jdGlvbiImJihpLmN1cnJlbnQ9bCl9ZWxzZSBpLmN1cnJlbnQ\/KGkuY3VycmVudCgpLGkuY3VycmVudD1udWxsKTpzKG8pO2Vsc2UgcyYmKHMuY3VycmVudD1vKTt0JiYobz90Lm1vdW50KG8pOnQudW5tb3VudCgpKX0sW3RdKX1jb25zdCBkUz1iLmNyZWF0ZUNvbnRleHQoe30pO2Z1bmN0aW9uIF9pKGUpe3JldHVybiBlJiZ0eXBlb2YgZT09Im9iamVjdCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJjdXJyZW50Iil9ZnVuY3Rpb24geEwoZSx0LG4scixpLG8pe3ZhciB4LGs7Y29uc3R7dmlzdWFsRWxlbWVudDpzfT1iLnVzZUNvbnRleHQoR3UpLGE9Yi51c2VDb250ZXh0KG9TKSxsPWIudXNlQ29udGV4dChIdSksdT1iLnVzZUNvbnRleHQoR3ApLGM9dS5yZWR1Y2VkTW90aW9uLGQ9dS5za2lwQW5pbWF0aW9ucyxoPWIudXNlUmVmKG51bGwpLGY9Yi51c2VSZWYoITEpO3I9cnx8YS5yZW5kZXJlciwhaC5jdXJyZW50JiZyJiYoaC5jdXJyZW50PXIoZSx7dmlzdWFsU3RhdGU6dCxwYXJlbnQ6cyxwcm9wczpuLHByZXNlbmNlQ29udGV4dDpsLGJsb2NrSW5pdGlhbEFuaW1hdGlvbjpsP2wuaW5pdGlhbD09PSExOiExLHJlZHVjZWRNb3Rpb25Db25maWc6Yyxza2lwQW5pbWF0aW9uczpkLGlzU1ZHOm99KSxmLmN1cnJlbnQmJmguY3VycmVudCYmKGguY3VycmVudC5tYW51YWxseUFuaW1hdGVPbk1vdW50PSEwKSk7Y29uc3QgeT1oLmN1cnJlbnQsbT1iLnVzZUNvbnRleHQoZFMpO3kmJiF5LnByb2plY3Rpb24mJmkmJih5LnR5cGU9PT0iaHRtbCJ8fHkudHlwZT09PSJzdmciKSYmd0woaC5jdXJyZW50LG4saSxtKTtjb25zdCB3PWIudXNlUmVmKCExKTtiLnVzZUluc2VydGlvbkVmZmVjdCgoKT0+e3kmJncuY3VycmVudCYmeS51cGRhdGUobixsKX0pO2NvbnN0IHA9blt4a10sdj1iLnVzZVJlZighIXAmJnR5cGVvZiB3aW5kb3c8InUiJiYhKCh4PXdpbmRvdy5Nb3Rpb25IYW5kb2ZmSXNDb21wbGV0ZSkhPW51bGwmJnguY2FsbCh3aW5kb3cscCkpJiYoKGs9d2luZG93Lk1vdGlvbkhhc09wdGltaXNlZEFuaW1hdGlvbik9PW51bGw\/dm9pZCAwOmsuY2FsbCh3aW5kb3cscCkpKTtyZXR1cm4gemIoKCk9PntmLmN1cnJlbnQ9ITAseSYmKHcuY3VycmVudD0hMCx3aW5kb3cuTW90aW9uSXNNb3VudGVkPSEwLHkudXBkYXRlRmVhdHVyZXMoKSx5LnNjaGVkdWxlUmVuZGVyTWljcm90YXNrKCksdi5jdXJyZW50JiZ5LmFuaW1hdGlvblN0YXRlJiZ5LmFuaW1hdGlvblN0YXRlLmFuaW1hdGVDaGFuZ2VzKCkpfSksYi51c2VFZmZlY3QoKCk9Pnt5JiYoIXYuY3VycmVudCYmeS5hbmltYXRpb25TdGF0ZSYmeS5hbmltYXRpb25TdGF0ZS5hbmltYXRlQ2hhbmdlcygpLHYuY3VycmVudCYmKHF1ZXVlTWljcm90YXNrKCgpPT57dmFyIFQ7KFQ9d2luZG93Lk1vdGlvbkhhbmRvZmZNYXJrQXNDb21wbGV0ZSk9PW51bGx8fFQuY2FsbCh3aW5kb3cscCl9KSx2LmN1cnJlbnQ9ITEpLHkuZW50ZXJpbmdDaGlsZHJlbj12b2lkIDApfSkseX1mdW5jdGlvbiB3TChlLHQsbixyKXtjb25zdHtsYXlvdXRJZDppLGxheW91dDpvLGRyYWc6cyxkcmFnQ29uc3RyYWludHM6YSxsYXlvdXRTY3JvbGw6bCxsYXlvdXRSb290OnUsbGF5b3V0Q3Jvc3NmYWRlOmN9PXQ7ZS5wcm9qZWN0aW9uPW5ldyBuKGUubGF0ZXN0VmFsdWVzLHRbImRhdGEtZnJhbWVyLXBvcnRhbC1pZCJdP3ZvaWQgMDpmUyhlLnBhcmVudCkpLGUucHJvamVjdGlvbi5zZXRPcHRpb25zKHtsYXlvdXRJZDppLGxheW91dDpvLGFsd2F5c01lYXN1cmVMYXlvdXQ6ISFzfHxhJiZfaShhKSx2aXN1YWxFbGVtZW50OmUsYW5pbWF0aW9uVHlwZTp0eXBlb2Ygbz09InN0cmluZyI\/bzoiYm90aCIsaW5pdGlhbFByb21vdGlvbkNvbmZpZzpyLGNyb3NzZmFkZTpjLGxheW91dFNjcm9sbDpsLGxheW91dFJvb3Q6dX0pfWZ1bmN0aW9uIGZTKGUpe2lmKGUpcmV0dXJuIGUub3B0aW9ucy5hbGxvd1Byb2plY3Rpb24hPT0hMT9lLnByb2plY3Rpb246ZlMoZS5wYXJlbnQpfWZ1bmN0aW9uIEpjKGUse2ZvcndhcmRNb3Rpb25Qcm9wczp0PSExLHR5cGU6bn09e30scixpKXtyJiZ0TChyKTtjb25zdCBvPW4\/bj09PSJzdmciOlFwKGUpLHM9bz9nTDptTDtmdW5jdGlvbiBhKHUsYyl7bGV0IGQ7Y29uc3QgaD17Li4uYi51c2VDb250ZXh0KEdwKSwuLi51LGxheW91dElkOmJMKHUpfSx7aXNTdGF0aWM6Zn09aCx5PXNMKHUpLG09cyh1LGYpO2lmKCFmJiZ0eXBlb2Ygd2luZG93PCJ1Iil7a0woKTtjb25zdCB3PVNMKGgpO2Q9dy5NZWFzdXJlTGF5b3V0LHkudmlzdWFsRWxlbWVudD14TChlLG0saCxpLHcuUHJvamVjdGlvbk5vZGUsbyl9cmV0dXJuIGcuanN4cyhHdS5Qcm92aWRlcix7dmFsdWU6eSxjaGlsZHJlbjpbZCYmeS52aXN1YWxFbGVtZW50P2cuanN4KGQse3Zpc3VhbEVsZW1lbnQ6eS52aXN1YWxFbGVtZW50LC4uLmh9KTpudWxsLGZMKGUsdSx2TChtLHkudmlzdWFsRWxlbWVudCxjKSxtLGYsdCxvKV19KX1hLmRpc3BsYXlOYW1lPWBtb3Rpb24uJHt0eXBlb2YgZT09InN0cmluZyI\/ZTpgY3JlYXRlKCR7ZS5kaXNwbGF5TmFtZT8\/ZS5uYW1lPz8iIn0pYH1gO2NvbnN0IGw9Yi5mb3J3YXJkUmVmKGEpO3JldHVybiBsW3lMXT1lLGx9ZnVuY3Rpb24gYkwoe2xheW91dElkOmV9KXtjb25zdCB0PWIudXNlQ29udGV4dChicCkuaWQ7cmV0dXJuIHQmJmUhPT12b2lkIDA\/dCsiLSIrZTplfWZ1bmN0aW9uIGtMKGUsdCl7Yi51c2VDb250ZXh0KG9TKS5zdHJpY3R9ZnVuY3Rpb24gU0woZSl7Y29uc3QgdD1zUygpLHtkcmFnOm4sbGF5b3V0OnJ9PXQ7aWYoIW4mJiFyKXJldHVybnt9O2NvbnN0IGk9ey4uLm4sLi4ucn07cmV0dXJue01lYXN1cmVMYXlvdXQ6biE9bnVsbCYmbi5pc0VuYWJsZWQoZSl8fHIhPW51bGwmJnIuaXNFbmFibGVkKGUpP2kuTWVhc3VyZUxheW91dDp2b2lkIDAsUHJvamVjdGlvbk5vZGU6aS5Qcm9qZWN0aW9uTm9kZX19ZnVuY3Rpb24gQ0woZSx0KXtpZih0eXBlb2YgUHJveHk+InUiKXJldHVybiBKYztjb25zdCBuPW5ldyBNYXAscj0obyxzKT0+SmMobyxzLGUsdCksaT0obyxzKT0+cihvLHMpO3JldHVybiBuZXcgUHJveHkoaSx7Z2V0OihvLHMpPT5zPT09ImNyZWF0ZSI\/cjoobi5oYXMocyl8fG4uc2V0KHMsSmMocyx2b2lkIDAsZSx0KSksbi5nZXQocykpfSl9Y29uc3QgVEw9KGUsdCk9PnQuaXNTVkc\/P1FwKGUpP25ldyByTSh0KTpuZXcgWEQodCx7YWxsb3dQcm9qZWN0aW9uOmUhPT1iLkZyYWdtZW50fSk7Y2xhc3MgRUwgZXh0ZW5kcyBHcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0LmFuaW1hdGlvblN0YXRlfHwodC5hbmltYXRpb25TdGF0ZT1sTSh0KSl9dXBkYXRlQW5pbWF0aW9uQ29udHJvbHNTdWJzY3JpcHRpb24oKXtjb25zdHthbmltYXRlOnR9PXRoaXMubm9kZS5nZXRQcm9wcygpO1d1KHQpJiYodGhpcy51bm1vdW50Q29udHJvbHM9dC5zdWJzY3JpYmUodGhpcy5ub2RlKSl9bW91bnQoKXt0aGlzLnVwZGF0ZUFuaW1hdGlvbkNvbnRyb2xzU3Vic2NyaXB0aW9uKCl9dXBkYXRlKCl7Y29uc3R7YW5pbWF0ZTp0fT10aGlzLm5vZGUuZ2V0UHJvcHMoKSx7YW5pbWF0ZTpufT10aGlzLm5vZGUucHJldlByb3BzfHx7fTt0IT09biYmdGhpcy51cGRhdGVBbmltYXRpb25Db250cm9sc1N1YnNjcmlwdGlvbigpfXVubW91bnQoKXt2YXIgdDt0aGlzLm5vZGUuYW5pbWF0aW9uU3RhdGUucmVzZXQoKSwodD10aGlzLnVubW91bnRDb250cm9scyk9PW51bGx8fHQuY2FsbCh0aGlzKX19bGV0IFBMPTA7Y2xhc3MgQUwgZXh0ZW5kcyBHcntjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pZD1QTCsrLHRoaXMuaXNFeGl0Q29tcGxldGU9ITF9dXBkYXRlKCl7dmFyIG87aWYoIXRoaXMubm9kZS5wcmVzZW5jZUNvbnRleHQpcmV0dXJuO2NvbnN0e2lzUHJlc2VudDp0LG9uRXhpdENvbXBsZXRlOm59PXRoaXMubm9kZS5wcmVzZW5jZUNvbnRleHQse2lzUHJlc2VudDpyfT10aGlzLm5vZGUucHJldlByZXNlbmNlQ29udGV4dHx8e307aWYoIXRoaXMubm9kZS5hbmltYXRpb25TdGF0ZXx8dD09PXIpcmV0dXJuO2lmKHQmJnI9PT0hMSl7aWYodGhpcy5pc0V4aXRDb21wbGV0ZSl7Y29uc3R7aW5pdGlhbDpzLGN1c3RvbTphfT10aGlzLm5vZGUuZ2V0UHJvcHMoKTtpZih0eXBlb2Ygcz09InN0cmluZyIpe2NvbnN0IGw9a2kodGhpcy5ub2RlLHMsYSk7aWYobCl7Y29uc3R7dHJhbnNpdGlvbjp1LHRyYW5zaXRpb25FbmQ6YywuLi5kfT1sO2Zvcihjb25zdCBoIGluIGQpKG89dGhpcy5ub2RlLmdldFZhbHVlKGgpKT09bnVsbHx8by5qdW1wKGRbaF0pfX10aGlzLm5vZGUuYW5pbWF0aW9uU3RhdGUucmVzZXQoKSx0aGlzLm5vZGUuYW5pbWF0aW9uU3RhdGUuYW5pbWF0ZUNoYW5nZXMoKX1lbHNlIHRoaXMubm9kZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoImV4aXQiLCExKTt0aGlzLmlzRXhpdENvbXBsZXRlPSExO3JldHVybn1jb25zdCBpPXRoaXMubm9kZS5hbmltYXRpb25TdGF0ZS5zZXRBY3RpdmUoImV4aXQiLCF0KTtuJiYhdCYmaS50aGVuKCgpPT57dGhpcy5pc0V4aXRDb21wbGV0ZT0hMCxuKHRoaXMuaWQpfSl9bW91bnQoKXtjb25zdHtyZWdpc3Rlcjp0LG9uRXhpdENvbXBsZXRlOm59PXRoaXMubm9kZS5wcmVzZW5jZUNvbnRleHR8fHt9O24mJm4odGhpcy5pZCksdCYmKHRoaXMudW5tb3VudD10KHRoaXMuaWQpKX11bm1vdW50KCl7fX1jb25zdCBJTD17YW5pbWF0aW9uOntGZWF0dXJlOkVMfSxleGl0OntGZWF0dXJlOkFMfX07ZnVuY3Rpb24gd2EoZSl7cmV0dXJue3BvaW50Ont4OmUucGFnZVgseTplLnBhZ2VZfX19Y29uc3QgTkw9ZT0+dD0+VXAodCkmJmUodCx3YSh0KSk7ZnVuY3Rpb24gVHMoZSx0LG4scil7cmV0dXJuIG5hKGUsdCxOTChuKSxyKX1jb25zdCBoUz0oe2N1cnJlbnQ6ZX0pPT5lP2Uub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzpudWxsLEN2PShlLHQpPT5NYXRoLmFicyhlLXQpO2Z1bmN0aW9uIGpMKGUsdCl7Y29uc3Qgbj1DdihlLngsdC54KSxyPUN2KGUueSx0LnkpO3JldHVybiBNYXRoLnNxcnQobioqMityKioyKX1jb25zdCBUdj1uZXcgU2V0KFsiYXV0byIsInNjcm9sbCJdKTtjbGFzcyBwU3tjb25zdHJ1Y3Rvcih0LG4se3RyYW5zZm9ybVBhZ2VQb2ludDpyLGNvbnRleHRXaW5kb3c6aT13aW5kb3csZHJhZ1NuYXBUb09yaWdpbjpvPSExLGRpc3RhbmNlVGhyZXNob2xkOnM9MyxlbGVtZW50OmF9PXt9KXtpZih0aGlzLnN0YXJ0RXZlbnQ9bnVsbCx0aGlzLmxhc3RNb3ZlRXZlbnQ9bnVsbCx0aGlzLmxhc3RNb3ZlRXZlbnRJbmZvPW51bGwsdGhpcy5sYXN0UmF3TW92ZUV2ZW50SW5mbz1udWxsLHRoaXMuaGFuZGxlcnM9e30sdGhpcy5jb250ZXh0V2luZG93PXdpbmRvdyx0aGlzLnNjcm9sbFBvc2l0aW9ucz1uZXcgTWFwLHRoaXMucmVtb3ZlU2Nyb2xsTGlzdGVuZXJzPW51bGwsdGhpcy5vbkVsZW1lbnRTY3JvbGw9Zj0+e3RoaXMuaGFuZGxlU2Nyb2xsKGYudGFyZ2V0KX0sdGhpcy5vbldpbmRvd1Njcm9sbD0oKT0+e3RoaXMuaGFuZGxlU2Nyb2xsKHdpbmRvdyl9LHRoaXMudXBkYXRlUG9pbnQ9KCk9PntpZighKHRoaXMubGFzdE1vdmVFdmVudCYmdGhpcy5sYXN0TW92ZUV2ZW50SW5mbykpcmV0dXJuO3RoaXMubGFzdFJhd01vdmVFdmVudEluZm8mJih0aGlzLmxhc3RNb3ZlRXZlbnRJbmZvPVFhKHRoaXMubGFzdFJhd01vdmVFdmVudEluZm8sdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQpKTtjb25zdCBmPVpjKHRoaXMubGFzdE1vdmVFdmVudEluZm8sdGhpcy5oaXN0b3J5KSx5PXRoaXMuc3RhcnRFdmVudCE9PW51bGwsbT1qTChmLm9mZnNldCx7eDowLHk6MH0pPj10aGlzLmRpc3RhbmNlVGhyZXNob2xkO2lmKCF5JiYhbSlyZXR1cm47Y29uc3R7cG9pbnQ6d309Zix7dGltZXN0YW1wOnB9PVdlO3RoaXMuaGlzdG9yeS5wdXNoKHsuLi53LHRpbWVzdGFtcDpwfSk7Y29uc3R7b25TdGFydDp2LG9uTW92ZTp4fT10aGlzLmhhbmRsZXJzO3l8fCh2JiZ2KHRoaXMubGFzdE1vdmVFdmVudCxmKSx0aGlzLnN0YXJ0RXZlbnQ9dGhpcy5sYXN0TW92ZUV2ZW50KSx4JiZ4KHRoaXMubGFzdE1vdmVFdmVudCxmKX0sdGhpcy5oYW5kbGVQb2ludGVyTW92ZT0oZix5KT0+e3RoaXMubGFzdE1vdmVFdmVudD1mLHRoaXMubGFzdFJhd01vdmVFdmVudEluZm89eSx0aGlzLmxhc3RNb3ZlRXZlbnRJbmZvPVFhKHksdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQpLHZlLnVwZGF0ZSh0aGlzLnVwZGF0ZVBvaW50LCEwKX0sdGhpcy5oYW5kbGVQb2ludGVyVXA9KGYseSk9Pnt0aGlzLmVuZCgpO2NvbnN0e29uRW5kOm0sb25TZXNzaW9uRW5kOncscmVzdW1lQW5pbWF0aW9uOnB9PXRoaXMuaGFuZGxlcnM7aWYoKHRoaXMuZHJhZ1NuYXBUb09yaWdpbnx8IXRoaXMuc3RhcnRFdmVudCkmJnAmJnAoKSwhKHRoaXMubGFzdE1vdmVFdmVudCYmdGhpcy5sYXN0TW92ZUV2ZW50SW5mbykpcmV0dXJuO2NvbnN0IHY9WmMoZi50eXBlPT09InBvaW50ZXJjYW5jZWwiP3RoaXMubGFzdE1vdmVFdmVudEluZm86UWEoeSx0aGlzLnRyYW5zZm9ybVBhZ2VQb2ludCksdGhpcy5oaXN0b3J5KTt0aGlzLnN0YXJ0RXZlbnQmJm0mJm0oZix2KSx3JiZ3KGYsdil9LCFVcCh0KSlyZXR1cm47dGhpcy5kcmFnU25hcFRvT3JpZ2luPW8sdGhpcy5oYW5kbGVycz1uLHRoaXMudHJhbnNmb3JtUGFnZVBvaW50PXIsdGhpcy5kaXN0YW5jZVRocmVzaG9sZD1zLHRoaXMuY29udGV4dFdpbmRvdz1pfHx3aW5kb3c7Y29uc3QgbD13YSh0KSx1PVFhKGwsdGhpcy50cmFuc2Zvcm1QYWdlUG9pbnQpLHtwb2ludDpjfT11LHt0aW1lc3RhbXA6ZH09V2U7dGhpcy5oaXN0b3J5PVt7Li4uYyx0aW1lc3RhbXA6ZH1dO2NvbnN0e29uU2Vzc2lvblN0YXJ0Omh9PW47aCYmaCh0LFpjKHUsdGhpcy5oaXN0b3J5KSksdGhpcy5yZW1vdmVMaXN0ZW5lcnM9eWEoVHModGhpcy5jb250ZXh0V2luZG93LCJwb2ludGVybW92ZSIsdGhpcy5oYW5kbGVQb2ludGVyTW92ZSksVHModGhpcy5jb250ZXh0V2luZG93LCJwb2ludGVydXAiLHRoaXMuaGFuZGxlUG9pbnRlclVwKSxUcyh0aGlzLmNvbnRleHRXaW5kb3csInBvaW50ZXJjYW5jZWwiLHRoaXMuaGFuZGxlUG9pbnRlclVwKSksYSYmdGhpcy5zdGFydFNjcm9sbFRyYWNraW5nKGEpfXN0YXJ0U2Nyb2xsVHJhY2tpbmcodCl7bGV0IG49dC5wYXJlbnRFbGVtZW50O2Zvcig7bjspe2NvbnN0IHI9Z2V0Q29tcHV0ZWRTdHlsZShuKTsoVHYuaGFzKHIub3ZlcmZsb3dYKXx8VHYuaGFzKHIub3ZlcmZsb3dZKSkmJnRoaXMuc2Nyb2xsUG9zaXRpb25zLnNldChuLHt4Om4uc2Nyb2xsTGVmdCx5Om4uc2Nyb2xsVG9wfSksbj1uLnBhcmVudEVsZW1lbnR9dGhpcy5zY3JvbGxQb3NpdGlvbnMuc2V0KHdpbmRvdyx7eDp3aW5kb3cuc2Nyb2xsWCx5OndpbmRvdy5zY3JvbGxZfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5vbkVsZW1lbnRTY3JvbGwse2NhcHR1cmU6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLm9uV2luZG93U2Nyb2xsKSx0aGlzLnJlbW92ZVNjcm9sbExpc3RlbmVycz0oKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMub25FbGVtZW50U2Nyb2xsLHtjYXB0dXJlOiEwfSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5vbldpbmRvd1Njcm9sbCl9fWhhbmRsZVNjcm9sbCh0KXtjb25zdCBuPXRoaXMuc2Nyb2xsUG9zaXRpb25zLmdldCh0KTtpZighbilyZXR1cm47Y29uc3Qgcj10PT09d2luZG93LGk9cj97eDp3aW5kb3cuc2Nyb2xsWCx5OndpbmRvdy5zY3JvbGxZfTp7eDp0LnNjcm9sbExlZnQseTp0LnNjcm9sbFRvcH0sbz17eDppLngtbi54LHk6aS55LW4ueX07by54PT09MCYmby55PT09MHx8KHI\/dGhpcy5sYXN0TW92ZUV2ZW50SW5mbyYmKHRoaXMubGFzdE1vdmVFdmVudEluZm8ucG9pbnQueCs9by54LHRoaXMubGFzdE1vdmVFdmVudEluZm8ucG9pbnQueSs9by55KTp0aGlzLmhpc3RvcnkubGVuZ3RoPjAmJih0aGlzLmhpc3RvcnlbMF0ueC09by54LHRoaXMuaGlzdG9yeVswXS55LT1vLnkpLHRoaXMuc2Nyb2xsUG9zaXRpb25zLnNldCh0LGkpLHZlLnVwZGF0ZSh0aGlzLnVwZGF0ZVBvaW50LCEwKSl9dXBkYXRlSGFuZGxlcnModCl7dGhpcy5oYW5kbGVycz10fWVuZCgpe3RoaXMucmVtb3ZlTGlzdGVuZXJzJiZ0aGlzLnJlbW92ZUxpc3RlbmVycygpLHRoaXMucmVtb3ZlU2Nyb2xsTGlzdGVuZXJzJiZ0aGlzLnJlbW92ZVNjcm9sbExpc3RlbmVycygpLHRoaXMuc2Nyb2xsUG9zaXRpb25zLmNsZWFyKCksSHIodGhpcy51cGRhdGVQb2ludCl9fWZ1bmN0aW9uIFFhKGUsdCl7cmV0dXJuIHQ\/e3BvaW50OnQoZS5wb2ludCl9OmV9ZnVuY3Rpb24gRXYoZSx0KXtyZXR1cm57eDplLngtdC54LHk6ZS55LXQueX19ZnVuY3Rpb24gWmMoe3BvaW50OmV9LHQpe3JldHVybntwb2ludDplLGRlbHRhOkV2KGUsbVModCkpLG9mZnNldDpFdihlLHpMKHQpKSx2ZWxvY2l0eTpSTCh0LC4xKX19ZnVuY3Rpb24gekwoZSl7cmV0dXJuIGVbMF19ZnVuY3Rpb24gbVMoZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24gUkwoZSx0KXtpZihlLmxlbmd0aDwyKXJldHVybnt4OjAseTowfTtsZXQgbj1lLmxlbmd0aC0xLHI9bnVsbDtjb25zdCBpPW1TKGUpO2Zvcig7bj49MCYmKHI9ZVtuXSwhKGkudGltZXN0YW1wLXIudGltZXN0YW1wPmJ0KHQpKSk7KW4tLTtpZighcilyZXR1cm57eDowLHk6MH07cj09PWVbMF0mJmUubGVuZ3RoPjImJmkudGltZXN0YW1wLXIudGltZXN0YW1wPmJ0KHQpKjImJihyPWVbMV0pO2NvbnN0IG89SHQoaS50aW1lc3RhbXAtci50aW1lc3RhbXApO2lmKG89PT0wKXJldHVybnt4OjAseTowfTtjb25zdCBzPXt4OihpLngtci54KS9vLHk6KGkueS1yLnkpL299O3JldHVybiBzLng9PT0xLzAmJihzLng9MCkscy55PT09MS8wJiYocy55PTApLHN9ZnVuY3Rpb24gREwoZSx7bWluOnQsbWF4Om59LHIpe3JldHVybiB0IT09dm9pZCAwJiZlPHQ\/ZT1yP1BlKHQsZSxyLm1pbik6TWF0aC5tYXgoZSx0KTpuIT09dm9pZCAwJiZlPm4mJihlPXI\/UGUobixlLHIubWF4KTpNYXRoLm1pbihlLG4pKSxlfWZ1bmN0aW9uIFB2KGUsdCxuKXtyZXR1cm57bWluOnQhPT12b2lkIDA\/ZS5taW4rdDp2b2lkIDAsbWF4Om4hPT12b2lkIDA\/ZS5tYXgrbi0oZS5tYXgtZS5taW4pOnZvaWQgMH19ZnVuY3Rpb24gTUwoZSx7dG9wOnQsbGVmdDpuLGJvdHRvbTpyLHJpZ2h0Oml9KXtyZXR1cm57eDpQdihlLngsbixpKSx5OlB2KGUueSx0LHIpfX1mdW5jdGlvbiBBdihlLHQpe2xldCBuPXQubWluLWUubWluLHI9dC5tYXgtZS5tYXg7cmV0dXJuIHQubWF4LXQubWluPGUubWF4LWUubWluJiYoW24scl09W3Isbl0pLHttaW46bixtYXg6cn19ZnVuY3Rpb24gTEwoZSx0KXtyZXR1cm57eDpBdihlLngsdC54KSx5OkF2KGUueSx0LnkpfX1mdW5jdGlvbiBPTChlLHQpe2xldCBuPS41O2NvbnN0IHI9dXQoZSksaT11dCh0KTtyZXR1cm4gaT5yP249WnModC5taW4sdC5tYXgtcixlLm1pbik6cj5pJiYobj1acyhlLm1pbixlLm1heC1pLHQubWluKSksTW4oMCwxLG4pfWZ1bmN0aW9uIEZMKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4gdC5taW4hPT12b2lkIDAmJihuLm1pbj10Lm1pbi1lLm1pbiksdC5tYXghPT12b2lkIDAmJihuLm1heD10Lm1heC1lLm1pbiksbn1jb25zdCBXZj0uMzU7ZnVuY3Rpb24gX0woZT1XZil7cmV0dXJuIGU9PT0hMT9lPTA6ZT09PSEwJiYoZT1XZikse3g6SXYoZSwibGVmdCIsInJpZ2h0IikseTpJdihlLCJ0b3AiLCJib3R0b20iKX19ZnVuY3Rpb24gSXYoZSx0LG4pe3JldHVybnttaW46TnYoZSx0KSxtYXg6TnYoZSxuKX19ZnVuY3Rpb24gTnYoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJudW1iZXIiP2U6ZVt0XXx8MH1jb25zdCBWTD1uZXcgV2Vha01hcDtjbGFzcyBCTHtjb25zdHJ1Y3Rvcih0KXt0aGlzLm9wZW5EcmFnTG9jaz1udWxsLHRoaXMuaXNEcmFnZ2luZz0hMSx0aGlzLmN1cnJlbnREaXJlY3Rpb249bnVsbCx0aGlzLm9yaWdpblBvaW50PXt4OjAseTowfSx0aGlzLmNvbnN0cmFpbnRzPSExLHRoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSExLHRoaXMuZWxhc3RpYz1fZSgpLHRoaXMubGF0ZXN0UG9pbnRlckV2ZW50PW51bGwsdGhpcy5sYXRlc3RQYW5JbmZvPW51bGwsdGhpcy52aXN1YWxFbGVtZW50PXR9c3RhcnQodCx7c25hcFRvQ3Vyc29yOm49ITEsZGlzdGFuY2VUaHJlc2hvbGQ6cn09e30pe2NvbnN0e3ByZXNlbmNlQ29udGV4dDppfT10aGlzLnZpc3VhbEVsZW1lbnQ7aWYoaSYmaS5pc1ByZXNlbnQ9PT0hMSlyZXR1cm47Y29uc3Qgbz1kPT57biYmdGhpcy5zbmFwVG9DdXJzb3Iod2EoZCkucG9pbnQpLHRoaXMuc3RvcEFuaW1hdGlvbigpfSxzPShkLGgpPT57Y29uc3R7ZHJhZzpmLGRyYWdQcm9wYWdhdGlvbjp5LG9uRHJhZ1N0YXJ0Om19PXRoaXMuZ2V0UHJvcHMoKTtpZihmJiYheSYmKHRoaXMub3BlbkRyYWdMb2NrJiZ0aGlzLm9wZW5EcmFnTG9jaygpLHRoaXMub3BlbkRyYWdMb2NrPWdEKGYpLCF0aGlzLm9wZW5EcmFnTG9jaykpcmV0dXJuO3RoaXMubGF0ZXN0UG9pbnRlckV2ZW50PWQsdGhpcy5sYXRlc3RQYW5JbmZvPWgsdGhpcy5pc0RyYWdnaW5nPSEwLHRoaXMuY3VycmVudERpcmVjdGlvbj1udWxsLHRoaXMucmVzb2x2ZUNvbnN0cmFpbnRzKCksdGhpcy52aXN1YWxFbGVtZW50LnByb2plY3Rpb24mJih0aGlzLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbi5pc0FuaW1hdGlvbkJsb2NrZWQ9ITAsdGhpcy52aXN1YWxFbGVtZW50LnByb2plY3Rpb24udGFyZ2V0PXZvaWQgMCksYm4ocD0+e2xldCB2PXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKHApLmdldCgpfHwwO2lmKHpuLnRlc3Qodikpe2NvbnN0e3Byb2plY3Rpb246eH09dGhpcy52aXN1YWxFbGVtZW50O2lmKHgmJngubGF5b3V0KXtjb25zdCBrPXgubGF5b3V0LmxheW91dEJveFtwXTtrJiYodj11dChrKSoocGFyc2VGbG9hdCh2KS8xMDApKX19dGhpcy5vcmlnaW5Qb2ludFtwXT12fSksbSYmdmUudXBkYXRlKCgpPT5tKGQsaCksITEsITApLE9mKHRoaXMudmlzdWFsRWxlbWVudCwidHJhbnNmb3JtIik7Y29uc3R7YW5pbWF0aW9uU3RhdGU6d309dGhpcy52aXN1YWxFbGVtZW50O3cmJncuc2V0QWN0aXZlKCJ3aGlsZURyYWciLCEwKX0sYT0oZCxoKT0+e3RoaXMubGF0ZXN0UG9pbnRlckV2ZW50PWQsdGhpcy5sYXRlc3RQYW5JbmZvPWg7Y29uc3R7ZHJhZ1Byb3BhZ2F0aW9uOmYsZHJhZ0RpcmVjdGlvbkxvY2s6eSxvbkRpcmVjdGlvbkxvY2s6bSxvbkRyYWc6d309dGhpcy5nZXRQcm9wcygpO2lmKCFmJiYhdGhpcy5vcGVuRHJhZ0xvY2spcmV0dXJuO2NvbnN0e29mZnNldDpwfT1oO2lmKHkmJnRoaXMuY3VycmVudERpcmVjdGlvbj09PW51bGwpe3RoaXMuY3VycmVudERpcmVjdGlvbj0kTChwKSx0aGlzLmN1cnJlbnREaXJlY3Rpb24hPT1udWxsJiZtJiZtKHRoaXMuY3VycmVudERpcmVjdGlvbik7cmV0dXJufXRoaXMudXBkYXRlQXhpcygieCIsaC5wb2ludCxwKSx0aGlzLnVwZGF0ZUF4aXMoInkiLGgucG9pbnQscCksdGhpcy52aXN1YWxFbGVtZW50LnJlbmRlcigpLHcmJnZlLnVwZGF0ZSgoKT0+dyhkLGgpLCExLCEwKX0sbD0oZCxoKT0+e3RoaXMubGF0ZXN0UG9pbnRlckV2ZW50PWQsdGhpcy5sYXRlc3RQYW5JbmZvPWgsdGhpcy5zdG9wKGQsaCksdGhpcy5sYXRlc3RQb2ludGVyRXZlbnQ9bnVsbCx0aGlzLmxhdGVzdFBhbkluZm89bnVsbH0sdT0oKT0+e2NvbnN0e2RyYWdTbmFwVG9PcmlnaW46ZH09dGhpcy5nZXRQcm9wcygpOyhkfHx0aGlzLmNvbnN0cmFpbnRzKSYmdGhpcy5zdGFydEFuaW1hdGlvbih7eDowLHk6MH0pfSx7ZHJhZ1NuYXBUb09yaWdpbjpjfT10aGlzLmdldFByb3BzKCk7dGhpcy5wYW5TZXNzaW9uPW5ldyBwUyh0LHtvblNlc3Npb25TdGFydDpvLG9uU3RhcnQ6cyxvbk1vdmU6YSxvblNlc3Npb25FbmQ6bCxyZXN1bWVBbmltYXRpb246dX0se3RyYW5zZm9ybVBhZ2VQb2ludDp0aGlzLnZpc3VhbEVsZW1lbnQuZ2V0VHJhbnNmb3JtUGFnZVBvaW50KCksZHJhZ1NuYXBUb09yaWdpbjpjLGRpc3RhbmNlVGhyZXNob2xkOnIsY29udGV4dFdpbmRvdzpoUyh0aGlzLnZpc3VhbEVsZW1lbnQpLGVsZW1lbnQ6dGhpcy52aXN1YWxFbGVtZW50LmN1cnJlbnR9KX1zdG9wKHQsbil7Y29uc3Qgcj10fHx0aGlzLmxhdGVzdFBvaW50ZXJFdmVudCxpPW58fHRoaXMubGF0ZXN0UGFuSW5mbyxvPXRoaXMuaXNEcmFnZ2luZztpZih0aGlzLmNhbmNlbCgpLCFvfHwhaXx8IXIpcmV0dXJuO2NvbnN0e3ZlbG9jaXR5OnN9PWk7dGhpcy5zdGFydEFuaW1hdGlvbihzKTtjb25zdHtvbkRyYWdFbmQ6YX09dGhpcy5nZXRQcm9wcygpO2EmJnZlLnBvc3RSZW5kZXIoKCk9PmEocixpKSl9Y2FuY2VsKCl7dGhpcy5pc0RyYWdnaW5nPSExO2NvbnN0e3Byb2plY3Rpb246dCxhbmltYXRpb25TdGF0ZTpufT10aGlzLnZpc3VhbEVsZW1lbnQ7dCYmKHQuaXNBbmltYXRpb25CbG9ja2VkPSExKSx0aGlzLmVuZFBhblNlc3Npb24oKTtjb25zdHtkcmFnUHJvcGFnYXRpb246cn09dGhpcy5nZXRQcm9wcygpOyFyJiZ0aGlzLm9wZW5EcmFnTG9jayYmKHRoaXMub3BlbkRyYWdMb2NrKCksdGhpcy5vcGVuRHJhZ0xvY2s9bnVsbCksbiYmbi5zZXRBY3RpdmUoIndoaWxlRHJhZyIsITEpfWVuZFBhblNlc3Npb24oKXt0aGlzLnBhblNlc3Npb24mJnRoaXMucGFuU2Vzc2lvbi5lbmQoKSx0aGlzLnBhblNlc3Npb249dm9pZCAwfXVwZGF0ZUF4aXModCxuLHIpe2NvbnN0e2RyYWc6aX09dGhpcy5nZXRQcm9wcygpO2lmKCFyfHwhWGEodCxpLHRoaXMuY3VycmVudERpcmVjdGlvbikpcmV0dXJuO2NvbnN0IG89dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUodCk7bGV0IHM9dGhpcy5vcmlnaW5Qb2ludFt0XStyW3RdO3RoaXMuY29uc3RyYWludHMmJnRoaXMuY29uc3RyYWludHNbdF0mJihzPURMKHMsdGhpcy5jb25zdHJhaW50c1t0XSx0aGlzLmVsYXN0aWNbdF0pKSxvLnNldChzKX1yZXNvbHZlQ29uc3RyYWludHMoKXt2YXIgbztjb25zdHtkcmFnQ29uc3RyYWludHM6dCxkcmFnRWxhc3RpYzpufT10aGlzLmdldFByb3BzKCkscj10aGlzLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbiYmIXRoaXMudmlzdWFsRWxlbWVudC5wcm9qZWN0aW9uLmxheW91dD90aGlzLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbi5tZWFzdXJlKCExKToobz10aGlzLnZpc3VhbEVsZW1lbnQucHJvamVjdGlvbik9PW51bGw\/dm9pZCAwOm8ubGF5b3V0LGk9dGhpcy5jb25zdHJhaW50czt0JiZfaSh0KT90aGlzLmNvbnN0cmFpbnRzfHwodGhpcy5jb25zdHJhaW50cz10aGlzLnJlc29sdmVSZWZDb25zdHJhaW50cygpKTp0JiZyP3RoaXMuY29uc3RyYWludHM9TUwoci5sYXlvdXRCb3gsdCk6dGhpcy5jb25zdHJhaW50cz0hMSx0aGlzLmVsYXN0aWM9X0wobiksaSE9PXRoaXMuY29uc3RyYWludHMmJiFfaSh0KSYmciYmdGhpcy5jb25zdHJhaW50cyYmIXRoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzJiZibihzPT57dGhpcy5jb25zdHJhaW50cyE9PSExJiZ0aGlzLmdldEF4aXNNb3Rpb25WYWx1ZShzKSYmKHRoaXMuY29uc3RyYWludHNbc109Rkwoci5sYXlvdXRCb3hbc10sdGhpcy5jb25zdHJhaW50c1tzXSkpfSl9cmVzb2x2ZVJlZkNvbnN0cmFpbnRzKCl7Y29uc3R7ZHJhZ0NvbnN0cmFpbnRzOnQsb25NZWFzdXJlRHJhZ0NvbnN0cmFpbnRzOm59PXRoaXMuZ2V0UHJvcHMoKTtpZighdHx8IV9pKHQpKXJldHVybiExO2NvbnN0IHI9dC5jdXJyZW50O2pvKHIhPT1udWxsLCJJZiBgZHJhZ0NvbnN0cmFpbnRzYCBpcyBzZXQgYXMgYSBSZWFjdCByZWYsIHRoYXQgcmVmIG11c3QgYmUgcGFzc2VkIHRvIGFub3RoZXIgY29tcG9uZW50J3MgYHJlZmAgcHJvcC4iLCJkcmFnLWNvbnN0cmFpbnRzLXJlZiIpO2NvbnN0e3Byb2plY3Rpb246aX09dGhpcy52aXN1YWxFbGVtZW50O2lmKCFpfHwhaS5sYXlvdXQpcmV0dXJuITE7Y29uc3Qgbz1xRChyLGkucm9vdCx0aGlzLnZpc3VhbEVsZW1lbnQuZ2V0VHJhbnNmb3JtUGFnZVBvaW50KCkpO2xldCBzPUxMKGkubGF5b3V0LmxheW91dEJveCxvKTtpZihuKXtjb25zdCBhPW4oVUQocykpO3RoaXMuaGFzTXV0YXRlZENvbnN0cmFpbnRzPSEhYSxhJiYocz1MayhhKSl9cmV0dXJuIHN9c3RhcnRBbmltYXRpb24odCl7Y29uc3R7ZHJhZzpuLGRyYWdNb21lbnR1bTpyLGRyYWdFbGFzdGljOmksZHJhZ1RyYW5zaXRpb246byxkcmFnU25hcFRvT3JpZ2luOnMsb25EcmFnVHJhbnNpdGlvbkVuZDphfT10aGlzLmdldFByb3BzKCksbD10aGlzLmNvbnN0cmFpbnRzfHx7fSx1PWJuKGM9PntpZighWGEoYyxuLHRoaXMuY3VycmVudERpcmVjdGlvbikpcmV0dXJuO2xldCBkPWwmJmxbY118fHt9OyhzPT09ITB8fHM9PT1jKSYmKGQ9e21pbjowLG1heDowfSk7Y29uc3QgaD1pPzIwMDoxZTYsZj1pPzQwOjFlNyx5PXt0eXBlOiJpbmVydGlhIix2ZWxvY2l0eTpyP3RbY106MCxib3VuY2VTdGlmZm5lc3M6aCxib3VuY2VEYW1waW5nOmYsdGltZUNvbnN0YW50Ojc1MCxyZXN0RGVsdGE6MSxyZXN0U3BlZWQ6MTAsLi4ubywuLi5kfTtyZXR1cm4gdGhpcy5zdGFydEF4aXNWYWx1ZUFuaW1hdGlvbihjLHkpfSk7cmV0dXJuIFByb21pc2UuYWxsKHUpLnRoZW4oYSl9c3RhcnRBeGlzVmFsdWVBbmltYXRpb24odCxuKXtjb25zdCByPXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKHQpO3JldHVybiBPZih0aGlzLnZpc3VhbEVsZW1lbnQsdCksci5zdGFydChPcCh0LHIsMCxuLHRoaXMudmlzdWFsRWxlbWVudCwhMSkpfXN0b3BBbmltYXRpb24oKXtibih0PT50aGlzLmdldEF4aXNNb3Rpb25WYWx1ZSh0KS5zdG9wKCkpfWdldEF4aXNNb3Rpb25WYWx1ZSh0KXtjb25zdCBuPWBfZHJhZyR7dC50b1VwcGVyQ2FzZSgpfWAscj10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0UHJvcHMoKSxpPXJbbl07cmV0dXJuIGl8fHRoaXMudmlzdWFsRWxlbWVudC5nZXRWYWx1ZSh0LChyLmluaXRpYWw\/ci5pbml0aWFsW3RdOnZvaWQgMCl8fDApfXNuYXBUb0N1cnNvcih0KXtibihuPT57Y29uc3R7ZHJhZzpyfT10aGlzLmdldFByb3BzKCk7aWYoIVhhKG4scix0aGlzLmN1cnJlbnREaXJlY3Rpb24pKXJldHVybjtjb25zdHtwcm9qZWN0aW9uOml9PXRoaXMudmlzdWFsRWxlbWVudCxvPXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKG4pO2lmKGkmJmkubGF5b3V0KXtjb25zdHttaW46cyxtYXg6YX09aS5sYXlvdXQubGF5b3V0Qm94W25dLGw9by5nZXQoKXx8MDtvLnNldCh0W25dLVBlKHMsYSwuNSkrbCl9fSl9c2NhbGVQb3NpdGlvbldpdGhpbkNvbnN0cmFpbnRzKCl7aWYoIXRoaXMudmlzdWFsRWxlbWVudC5jdXJyZW50KXJldHVybjtjb25zdHtkcmFnOnQsZHJhZ0NvbnN0cmFpbnRzOm59PXRoaXMuZ2V0UHJvcHMoKSx7cHJvamVjdGlvbjpyfT10aGlzLnZpc3VhbEVsZW1lbnQ7aWYoIV9pKG4pfHwhcnx8IXRoaXMuY29uc3RyYWludHMpcmV0dXJuO3RoaXMuc3RvcEFuaW1hdGlvbigpO2NvbnN0IGk9e3g6MCx5OjB9O2JuKHM9Pntjb25zdCBhPXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKHMpO2lmKGEmJnRoaXMuY29uc3RyYWludHMhPT0hMSl7Y29uc3QgbD1hLmdldCgpO2lbc109T0woe21pbjpsLG1heDpsfSx0aGlzLmNvbnN0cmFpbnRzW3NdKX19KTtjb25zdHt0cmFuc2Zvcm1UZW1wbGF0ZTpvfT10aGlzLnZpc3VhbEVsZW1lbnQuZ2V0UHJvcHMoKTt0aGlzLnZpc3VhbEVsZW1lbnQuY3VycmVudC5zdHlsZS50cmFuc2Zvcm09bz9vKHt9LCIiKToibm9uZSIsci5yb290JiZyLnJvb3QudXBkYXRlU2Nyb2xsKCksci51cGRhdGVMYXlvdXQoKSx0aGlzLmNvbnN0cmFpbnRzPSExLHRoaXMucmVzb2x2ZUNvbnN0cmFpbnRzKCksYm4ocz0+e2lmKCFYYShzLHQsbnVsbCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5nZXRBeGlzTW90aW9uVmFsdWUocykse21pbjpsLG1heDp1fT10aGlzLmNvbnN0cmFpbnRzW3NdO2Euc2V0KFBlKGwsdSxpW3NdKSl9KSx0aGlzLnZpc3VhbEVsZW1lbnQucmVuZGVyKCl9YWRkTGlzdGVuZXJzKCl7aWYoIXRoaXMudmlzdWFsRWxlbWVudC5jdXJyZW50KXJldHVybjtWTC5zZXQodGhpcy52aXN1YWxFbGVtZW50LHRoaXMpO2NvbnN0IHQ9dGhpcy52aXN1YWxFbGVtZW50LmN1cnJlbnQsbj1Ucyh0LCJwb2ludGVyZG93biIsdT0+e2NvbnN0e2RyYWc6YyxkcmFnTGlzdGVuZXI6ZD0hMH09dGhpcy5nZXRQcm9wcygpLGg9dS50YXJnZXQsZj1oIT09dCYma0QoaCk7YyYmZCYmIWYmJnRoaXMuc3RhcnQodSl9KTtsZXQgcjtjb25zdCBpPSgpPT57Y29uc3R7ZHJhZ0NvbnN0cmFpbnRzOnV9PXRoaXMuZ2V0UHJvcHMoKTtfaSh1KSYmdS5jdXJyZW50JiYodGhpcy5jb25zdHJhaW50cz10aGlzLnJlc29sdmVSZWZDb25zdHJhaW50cygpLHJ8fChyPVVMKHQsdS5jdXJyZW50LCgpPT50aGlzLnNjYWxlUG9zaXRpb25XaXRoaW5Db25zdHJhaW50cygpKSkpfSx7cHJvamVjdGlvbjpvfT10aGlzLnZpc3VhbEVsZW1lbnQscz1vLmFkZEV2ZW50TGlzdGVuZXIoIm1lYXN1cmUiLGkpO28mJiFvLmxheW91dCYmKG8ucm9vdCYmby5yb290LnVwZGF0ZVNjcm9sbCgpLG8udXBkYXRlTGF5b3V0KCkpLHZlLnJlYWQoaSk7Y29uc3QgYT1uYSh3aW5kb3csInJlc2l6ZSIsKCk9PnRoaXMuc2NhbGVQb3NpdGlvbldpdGhpbkNvbnN0cmFpbnRzKCkpLGw9by5hZGRFdmVudExpc3RlbmVyKCJkaWRVcGRhdGUiLCh7ZGVsdGE6dSxoYXNMYXlvdXRDaGFuZ2VkOmN9KT0+e3RoaXMuaXNEcmFnZ2luZyYmYyYmKGJuKGQ9Pntjb25zdCBoPXRoaXMuZ2V0QXhpc01vdGlvblZhbHVlKGQpO2gmJih0aGlzLm9yaWdpblBvaW50W2RdKz11W2RdLnRyYW5zbGF0ZSxoLnNldChoLmdldCgpK3VbZF0udHJhbnNsYXRlKSl9KSx0aGlzLnZpc3VhbEVsZW1lbnQucmVuZGVyKCkpfSk7cmV0dXJuKCk9PnthKCksbigpLHMoKSxsJiZsKCksciYmcigpfX1nZXRQcm9wcygpe2NvbnN0IHQ9dGhpcy52aXN1YWxFbGVtZW50LmdldFByb3BzKCkse2RyYWc6bj0hMSxkcmFnRGlyZWN0aW9uTG9jazpyPSExLGRyYWdQcm9wYWdhdGlvbjppPSExLGRyYWdDb25zdHJhaW50czpvPSExLGRyYWdFbGFzdGljOnM9V2YsZHJhZ01vbWVudHVtOmE9ITB9PXQ7cmV0dXJuey4uLnQsZHJhZzpuLGRyYWdEaXJlY3Rpb25Mb2NrOnIsZHJhZ1Byb3BhZ2F0aW9uOmksZHJhZ0NvbnN0cmFpbnRzOm8sZHJhZ0VsYXN0aWM6cyxkcmFnTW9tZW50dW06YX19fWZ1bmN0aW9uIGp2KGUpe2xldCB0PSEwO3JldHVybigpPT57aWYodCl7dD0hMTtyZXR1cm59ZSgpfX1mdW5jdGlvbiBVTChlLHQsbil7Y29uc3Qgcj1GeShlLGp2KG4pKSxpPUZ5KHQsanYobikpO3JldHVybigpPT57cigpLGkoKX19ZnVuY3Rpb24gWGEoZSx0LG4pe3JldHVybih0PT09ITB8fHQ9PT1lKSYmKG49PT1udWxsfHxuPT09ZSl9ZnVuY3Rpb24gJEwoZSx0PTEwKXtsZXQgbj1udWxsO3JldHVybiBNYXRoLmFicyhlLnkpPnQ\/bj0ieSI6TWF0aC5hYnMoZS54KT50JiYobj0ieCIpLG59Y2xhc3MgSEwgZXh0ZW5kcyBHcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnJlbW92ZUdyb3VwQ29udHJvbHM9V3QsdGhpcy5yZW1vdmVMaXN0ZW5lcnM9V3QsdGhpcy5jb250cm9scz1uZXcgQkwodCl9bW91bnQoKXtjb25zdHtkcmFnQ29udHJvbHM6dH09dGhpcy5ub2RlLmdldFByb3BzKCk7dCYmKHRoaXMucmVtb3ZlR3JvdXBDb250cm9scz10LnN1YnNjcmliZSh0aGlzLmNvbnRyb2xzKSksdGhpcy5yZW1vdmVMaXN0ZW5lcnM9dGhpcy5jb250cm9scy5hZGRMaXN0ZW5lcnMoKXx8V3R9dXBkYXRlKCl7Y29uc3R7ZHJhZ0NvbnRyb2xzOnR9PXRoaXMubm9kZS5nZXRQcm9wcygpLHtkcmFnQ29udHJvbHM6bn09dGhpcy5ub2RlLnByZXZQcm9wc3x8e307dCE9PW4mJih0aGlzLnJlbW92ZUdyb3VwQ29udHJvbHMoKSx0JiYodGhpcy5yZW1vdmVHcm91cENvbnRyb2xzPXQuc3Vic2NyaWJlKHRoaXMuY29udHJvbHMpKSl9dW5tb3VudCgpe3RoaXMucmVtb3ZlR3JvdXBDb250cm9scygpLHRoaXMucmVtb3ZlTGlzdGVuZXJzKCksdGhpcy5jb250cm9scy5pc0RyYWdnaW5nfHx0aGlzLmNvbnRyb2xzLmVuZFBhblNlc3Npb24oKX19Y29uc3QgZWQ9ZT0+KHQsbik9PntlJiZ2ZS51cGRhdGUoKCk9PmUodCxuKSwhMSwhMCl9O2NsYXNzIHFMIGV4dGVuZHMgR3J7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVtb3ZlUG9pbnRlckRvd25MaXN0ZW5lcj1XdH1vblBvaW50ZXJEb3duKHQpe3RoaXMuc2Vzc2lvbj1uZXcgcFModCx0aGlzLmNyZWF0ZVBhbkhhbmRsZXJzKCkse3RyYW5zZm9ybVBhZ2VQb2ludDp0aGlzLm5vZGUuZ2V0VHJhbnNmb3JtUGFnZVBvaW50KCksY29udGV4dFdpbmRvdzpoUyh0aGlzLm5vZGUpfSl9Y3JlYXRlUGFuSGFuZGxlcnMoKXtjb25zdHtvblBhblNlc3Npb25TdGFydDp0LG9uUGFuU3RhcnQ6bixvblBhbjpyLG9uUGFuRW5kOml9PXRoaXMubm9kZS5nZXRQcm9wcygpO3JldHVybntvblNlc3Npb25TdGFydDplZCh0KSxvblN0YXJ0OmVkKG4pLG9uTW92ZTplZChyKSxvbkVuZDoobyxzKT0+e2RlbGV0ZSB0aGlzLnNlc3Npb24saSYmdmUucG9zdFJlbmRlcigoKT0+aShvLHMpKX19fW1vdW50KCl7dGhpcy5yZW1vdmVQb2ludGVyRG93bkxpc3RlbmVyPVRzKHRoaXMubm9kZS5jdXJyZW50LCJwb2ludGVyZG93biIsdD0+dGhpcy5vblBvaW50ZXJEb3duKHQpKX11cGRhdGUoKXt0aGlzLnNlc3Npb24mJnRoaXMuc2Vzc2lvbi51cGRhdGVIYW5kbGVycyh0aGlzLmNyZWF0ZVBhbkhhbmRsZXJzKCkpfXVubW91bnQoKXt0aGlzLnJlbW92ZVBvaW50ZXJEb3duTGlzdGVuZXIoKSx0aGlzLnNlc3Npb24mJnRoaXMuc2Vzc2lvbi5lbmQoKX19bGV0IHRkPSExO2NsYXNzIFdMIGV4dGVuZHMgYi5Db21wb25lbnR7Y29tcG9uZW50RGlkTW91bnQoKXtjb25zdHt2aXN1YWxFbGVtZW50OnQsbGF5b3V0R3JvdXA6bixzd2l0Y2hMYXlvdXRHcm91cDpyLGxheW91dElkOml9PXRoaXMucHJvcHMse3Byb2plY3Rpb246b309dDtvJiYobi5ncm91cCYmbi5ncm91cC5hZGQobyksciYmci5yZWdpc3RlciYmaSYmci5yZWdpc3RlcihvKSx0ZCYmby5yb290LmRpZFVwZGF0ZSgpLG8uYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uQ29tcGxldGUiLCgpPT57dGhpcy5zYWZlVG9SZW1vdmUoKX0pLG8uc2V0T3B0aW9ucyh7Li4uby5vcHRpb25zLGxheW91dERlcGVuZGVuY3k6dGhpcy5wcm9wcy5sYXlvdXREZXBlbmRlbmN5LG9uRXhpdENvbXBsZXRlOigpPT50aGlzLnNhZmVUb1JlbW92ZSgpfSkpLGtsLmhhc0V2ZXJVcGRhdGVkPSEwfWdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHQpe2NvbnN0e2xheW91dERlcGVuZGVuY3k6bix2aXN1YWxFbGVtZW50OnIsZHJhZzppLGlzUHJlc2VudDpvfT10aGlzLnByb3BzLHtwcm9qZWN0aW9uOnN9PXI7cmV0dXJuIHMmJihzLmlzUHJlc2VudD1vLHQubGF5b3V0RGVwZW5kZW5jeSE9PW4mJnMuc2V0T3B0aW9ucyh7Li4ucy5vcHRpb25zLGxheW91dERlcGVuZGVuY3k6bn0pLHRkPSEwLGl8fHQubGF5b3V0RGVwZW5kZW5jeSE9PW58fG49PT12b2lkIDB8fHQuaXNQcmVzZW50IT09bz9zLndpbGxVcGRhdGUoKTp0aGlzLnNhZmVUb1JlbW92ZSgpLHQuaXNQcmVzZW50IT09byYmKG8\/cy5wcm9tb3RlKCk6cy5yZWxlZ2F0ZSgpfHx2ZS5wb3N0UmVuZGVyKCgpPT57Y29uc3QgYT1zLmdldFN0YWNrKCk7KCFhfHwhYS5tZW1iZXJzLmxlbmd0aCkmJnRoaXMuc2FmZVRvUmVtb3ZlKCl9KSkpLG51bGx9Y29tcG9uZW50RGlkVXBkYXRlKCl7Y29uc3R7cHJvamVjdGlvbjp0fT10aGlzLnByb3BzLnZpc3VhbEVsZW1lbnQ7dCYmKHQucm9vdC5kaWRVcGRhdGUoKSxCcC5wb3N0UmVuZGVyKCgpPT57IXQuY3VycmVudEFuaW1hdGlvbiYmdC5pc0xlYWQoKSYmdGhpcy5zYWZlVG9SZW1vdmUoKX0pKX1jb21wb25lbnRXaWxsVW5tb3VudCgpe2NvbnN0e3Zpc3VhbEVsZW1lbnQ6dCxsYXlvdXRHcm91cDpuLHN3aXRjaExheW91dEdyb3VwOnJ9PXRoaXMucHJvcHMse3Byb2plY3Rpb246aX09dDt0ZD0hMCxpJiYoaS5zY2hlZHVsZUNoZWNrQWZ0ZXJVbm1vdW50KCksbiYmbi5ncm91cCYmbi5ncm91cC5yZW1vdmUoaSksciYmci5kZXJlZ2lzdGVyJiZyLmRlcmVnaXN0ZXIoaSkpfXNhZmVUb1JlbW92ZSgpe2NvbnN0e3NhZmVUb1JlbW92ZTp0fT10aGlzLnByb3BzO3QmJnQoKX1yZW5kZXIoKXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZ1MoZSl7Y29uc3RbdCxuXT1pUygpLHI9Yi51c2VDb250ZXh0KGJwKTtyZXR1cm4gZy5qc3goV0wsey4uLmUsbGF5b3V0R3JvdXA6cixzd2l0Y2hMYXlvdXRHcm91cDpiLnVzZUNvbnRleHQoZFMpLGlzUHJlc2VudDp0LHNhZmVUb1JlbW92ZTpufSl9Y29uc3QgS0w9e3Bhbjp7RmVhdHVyZTpxTH0sZHJhZzp7RmVhdHVyZTpITCxQcm9qZWN0aW9uTm9kZTpyUyxNZWFzdXJlTGF5b3V0OmdTfX07ZnVuY3Rpb24genYoZSx0LG4pe2NvbnN0e3Byb3BzOnJ9PWU7ZS5hbmltYXRpb25TdGF0ZSYmci53aGlsZUhvdmVyJiZlLmFuaW1hdGlvblN0YXRlLnNldEFjdGl2ZSgid2hpbGVIb3ZlciIsbj09PSJTdGFydCIpO2NvbnN0IGk9Im9uSG92ZXIiK24sbz1yW2ldO28mJnZlLnBvc3RSZW5kZXIoKCk9Pm8odCx3YSh0KSkpfWNsYXNzIEdMIGV4dGVuZHMgR3J7bW91bnQoKXtjb25zdHtjdXJyZW50OnR9PXRoaXMubm9kZTt0JiYodGhpcy51bm1vdW50PXZEKHQsKG4scik9Pih6dih0aGlzLm5vZGUsciwiU3RhcnQiKSxpPT56dih0aGlzLm5vZGUsaSwiRW5kIikpKSl9dW5tb3VudCgpe319Y2xhc3MgWUwgZXh0ZW5kcyBHcntjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pc0FjdGl2ZT0hMX1vbkZvY3VzKCl7bGV0IHQ9ITE7dHJ5e3Q9dGhpcy5ub2RlLmN1cnJlbnQubWF0Y2hlcygiOmZvY3VzLXZpc2libGUiKX1jYXRjaHt0PSEwfSF0fHwhdGhpcy5ub2RlLmFuaW1hdGlvblN0YXRlfHwodGhpcy5ub2RlLmFuaW1hdGlvblN0YXRlLnNldEFjdGl2ZSgid2hpbGVGb2N1cyIsITApLHRoaXMuaXNBY3RpdmU9ITApfW9uQmx1cigpeyF0aGlzLmlzQWN0aXZlfHwhdGhpcy5ub2RlLmFuaW1hdGlvblN0YXRlfHwodGhpcy5ub2RlLmFuaW1hdGlvblN0YXRlLnNldEFjdGl2ZSgid2hpbGVGb2N1cyIsITEpLHRoaXMuaXNBY3RpdmU9ITEpfW1vdW50KCl7dGhpcy51bm1vdW50PXlhKG5hKHRoaXMubm9kZS5jdXJyZW50LCJmb2N1cyIsKCk9PnRoaXMub25Gb2N1cygpKSxuYSh0aGlzLm5vZGUuY3VycmVudCwiYmx1ciIsKCk9PnRoaXMub25CbHVyKCkpKX11bm1vdW50KCl7fX1mdW5jdGlvbiBSdihlLHQsbil7Y29uc3R7cHJvcHM6cn09ZTtpZihlLmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MQnV0dG9uRWxlbWVudCYmZS5jdXJyZW50LmRpc2FibGVkKXJldHVybjtlLmFuaW1hdGlvblN0YXRlJiZyLndoaWxlVGFwJiZlLmFuaW1hdGlvblN0YXRlLnNldEFjdGl2ZSgid2hpbGVUYXAiLG49PT0iU3RhcnQiKTtjb25zdCBpPSJvblRhcCIrKG49PT0iRW5kIj8iIjpuKSxvPXJbaV07byYmdmUucG9zdFJlbmRlcigoKT0+byh0LHdhKHQpKSl9Y2xhc3MgUUwgZXh0ZW5kcyBHcnttb3VudCgpe2NvbnN0e2N1cnJlbnQ6dH09dGhpcy5ub2RlO2lmKCF0KXJldHVybjtjb25zdHtnbG9iYWxUYXBUYXJnZXQ6bixwcm9wYWdhdGU6cn09dGhpcy5ub2RlLnByb3BzO3RoaXMudW5tb3VudD1DRCh0LChpLG8pPT4oUnYodGhpcy5ub2RlLG8sIlN0YXJ0IiksKHMse3N1Y2Nlc3M6YX0pPT5Sdih0aGlzLm5vZGUscyxhPyJFbmQiOiJDYW5jZWwiKSkse3VzZUdsb2JhbFRhcmdldDpuLHN0b3BQcm9wYWdhdGlvbjoocj09bnVsbD92b2lkIDA6ci50YXApPT09ITF9KX11bm1vdW50KCl7fX1jb25zdCBLZj1uZXcgV2Vha01hcCxuZD1uZXcgV2Vha01hcCxYTD1lPT57Y29uc3QgdD1LZi5nZXQoZS50YXJnZXQpO3QmJnQoZSl9LEpMPWU9PntlLmZvckVhY2goWEwpfTtmdW5jdGlvbiBaTCh7cm9vdDplLC4uLnR9KXtjb25zdCBuPWV8fGRvY3VtZW50O25kLmhhcyhuKXx8bmQuc2V0KG4se30pO2NvbnN0IHI9bmQuZ2V0KG4pLGk9SlNPTi5zdHJpbmdpZnkodCk7cmV0dXJuIHJbaV18fChyW2ldPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihKTCx7cm9vdDplLC4uLnR9KSkscltpXX1mdW5jdGlvbiBlTyhlLHQsbil7Y29uc3Qgcj1aTCh0KTtyZXR1cm4gS2Yuc2V0KGUsbiksci5vYnNlcnZlKGUpLCgpPT57S2YuZGVsZXRlKGUpLHIudW5vYnNlcnZlKGUpfX1jb25zdCB0Tz17c29tZTowLGFsbDoxfTtjbGFzcyBuTyBleHRlbmRzIEdye2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmhhc0VudGVyZWRWaWV3PSExLHRoaXMuaXNJblZpZXc9ITF9c3RhcnRPYnNlcnZlcigpe3RoaXMudW5tb3VudCgpO2NvbnN0e3ZpZXdwb3J0OnQ9e319PXRoaXMubm9kZS5nZXRQcm9wcygpLHtyb290Om4sbWFyZ2luOnIsYW1vdW50Omk9InNvbWUiLG9uY2U6b309dCxzPXtyb290Om4\/bi5jdXJyZW50OnZvaWQgMCxyb290TWFyZ2luOnIsdGhyZXNob2xkOnR5cGVvZiBpPT0ibnVtYmVyIj9pOnRPW2ldfSxhPWw9Pntjb25zdHtpc0ludGVyc2VjdGluZzp1fT1sO2lmKHRoaXMuaXNJblZpZXc9PT11fHwodGhpcy5pc0luVmlldz11LG8mJiF1JiZ0aGlzLmhhc0VudGVyZWRWaWV3KSlyZXR1cm47dSYmKHRoaXMuaGFzRW50ZXJlZFZpZXc9ITApLHRoaXMubm9kZS5hbmltYXRpb25TdGF0ZSYmdGhpcy5ub2RlLmFuaW1hdGlvblN0YXRlLnNldEFjdGl2ZSgid2hpbGVJblZpZXciLHUpO2NvbnN0e29uVmlld3BvcnRFbnRlcjpjLG9uVmlld3BvcnRMZWF2ZTpkfT10aGlzLm5vZGUuZ2V0UHJvcHMoKSxoPXU\/YzpkO2gmJmgobCl9O3JldHVybiBlTyh0aGlzLm5vZGUuY3VycmVudCxzLGEpfW1vdW50KCl7dGhpcy5zdGFydE9ic2VydmVyKCl9dXBkYXRlKCl7aWYodHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyPiJ1IilyZXR1cm47Y29uc3R7cHJvcHM6dCxwcmV2UHJvcHM6bn09dGhpcy5ub2RlO1siYW1vdW50IiwibWFyZ2luIiwicm9vdCJdLnNvbWUock8odCxuKSkmJnRoaXMuc3RhcnRPYnNlcnZlcigpfXVubW91bnQoKXt9fWZ1bmN0aW9uIHJPKHt2aWV3cG9ydDplPXt9fSx7dmlld3BvcnQ6dD17fX09e30pe3JldHVybiBuPT5lW25dIT09dFtuXX1jb25zdCBpTz17aW5WaWV3OntGZWF0dXJlOm5PfSx0YXA6e0ZlYXR1cmU6UUx9LGZvY3VzOntGZWF0dXJlOllMfSxob3Zlcjp7RmVhdHVyZTpHTH19LG9PPXtsYXlvdXQ6e1Byb2plY3Rpb25Ob2RlOnJTLE1lYXN1cmVMYXlvdXQ6Z1N9fSxzTz17Li4uSUwsLi4uaU8sLi4uS0wsLi4ub099LEs9Q0woc08sVEwpLHlTPSIvYXNzZXRzL2xvZ28tQmExbnVRWjAucG5nIixEdj0oKT0+e2NvbnN0e2xhbmd1YWdlOmUsc2V0TGFuZ3VhZ2U6dCxsYW5nSW5mbzpufT1fbigpLFtyLGldPWIudXNlU3RhdGUoITEpLG89Yi51c2VSZWYobnVsbCk7cmV0dXJuIGIudXNlRWZmZWN0KCgpPT57Y29uc3Qgcz1hPT57by5jdXJyZW50JiYhby5jdXJyZW50LmNvbnRhaW5zKGEudGFyZ2V0KSYmaSghMSl9O3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHMpLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHMpfSxbXSksZy5qc3hzKCJkaXYiLHtyZWY6byxjbGFzc05hbWU6InJlbGF0aXZlIixjaGlsZHJlbjpbZy5qc3hzKEsuYnV0dG9uLHt3aGlsZUhvdmVyOntzY2FsZToxLjA1fSx3aGlsZVRhcDp7c2NhbGU6Ljk1fSxvbkNsaWNrOigpPT5pKCFyKSxjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1jYXJkLzgwIGJhY2tkcm9wLWJsdXItc20gcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kIGhvdmVyOmJvcmRlci1wcmltYXJ5LzMwIHRyYW5zaXRpb24tY29sb3JzIiwiYXJpYS1sYWJlbCI6IkNoYW5nZSBsYW5ndWFnZSIsY2hpbGRyZW46W2cuanN4KHVwLHtzaXplOjE0LGNsYXNzTmFtZToidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIn0pLGcuanN4KCJzcGFuIix7Y2hpbGRyZW46bi5mbGFnfSksZy5qc3goInNwYW4iLHtjbGFzc05hbWU6ImhpZGRlbiBzbTppbmxpbmUiLGNoaWxkcmVuOm4ubmF0aXZlTmFtZX0pXX0pLGcuanN4KHJhLHtjaGlsZHJlbjpyJiZnLmpzeChLLmRpdix7aW5pdGlhbDp7b3BhY2l0eTowLHk6LTgsc2NhbGU6Ljk1fSxhbmltYXRlOntvcGFjaXR5OjEseTowLHNjYWxlOjF9LGV4aXQ6e29wYWNpdHk6MCx5Oi04LHNjYWxlOi45NX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246LjE1fSxjbGFzc05hbWU6ImFic29sdXRlIGVuZC0wIHRvcC1mdWxsIG10LTIgdy02NCBtYXgtaC04MCBvdmVyZmxvdy15LWF1dG8gcm91bmRlZC14bCBiZy1jYXJkIGJvcmRlciBib3JkZXItYm9yZGVyIHNoYWRvdy14bCB6LTUwIixjaGlsZHJlbjpnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJwLTIgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMC41IixjaGlsZHJlbjpydS5tYXAocz0+Zy5qc3hzKCJidXR0b24iLHtvbkNsaWNrOigpPT57dChzLmNvZGUpLGkoITEpfSxjbGFzc05hbWU6YGZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHctZnVsbCBweC0zIHB5LTIuNSByb3VuZGVkLWxnIHRleHQtc20gdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1zdGFydCAke2U9PT1zLmNvZGU\/ImJnLXByaW1hcnkvMTAgdGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQiOiJ0ZXh0LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5In1gLGNoaWxkcmVuOltnLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1sZyIsY2hpbGRyZW46cy5mbGFnfSksZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wiLGNoaWxkcmVuOltnLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1tZWRpdW0iLGNoaWxkcmVuOnMubmF0aXZlTmFtZX0pLGcuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46cy5uYW1lfSldfSldfSxzLmNvZGUpKX0pfSl9KV19KX0sYU89KCk9Pntjb25zdFtlLHRdPWIudXNlU3RhdGUoITEpLHt0Om59PV9uKCkscj1be2xhYmVsOm4ubmF2LmZlYXR1cmVzLGhyZWY6IiNmZWF0dXJlcyJ9LHtsYWJlbDpuLm5hdi5mb3JZb3UsaHJlZjoiI2F1ZGllbmNlcyJ9LHtsYWJlbDpuLm5hdi5vdXJTdG9yeSxocmVmOiIjc3RvcnkifSx7bGFiZWw6bi5uYXYuZmFxLGhyZWY6IiNmYXEifSx7bGFiZWw6bi5uYXYubGlicmFyeSxocmVmOiIjbGlicmFyeSJ9XTtyZXR1cm4gZy5qc3hzKCJuYXYiLHtjbGFzc05hbWU6ImZpeGVkIHRvcC0wIGxlZnQtMCByaWdodC0wIHotNTAgYmctYmFja2dyb3VuZC83MCBiYWNrZHJvcC1ibHVyLXhsIGJvcmRlci1iIGJvcmRlci1ib3JkZXIvNTAiLGNoaWxkcmVuOltnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBoLTE2IG1kOmgtMjAiLGNoaWxkcmVuOltnLmpzeHMoImEiLHtocmVmOiIjIixjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIGdyb3VwIixjaGlsZHJlbjpbZy5qc3hzKEsuZGl2LHt3aGlsZUhvdmVyOntyb3RhdGU6WzAsLTEwLDEwLDBdfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouNX0sY2xhc3NOYW1lOiJyZWxhdGl2ZSIsY2hpbGRyZW46W2cuanN4KCJpbWciLHtzcmM6eVMsYWx0OiJTaGFocnphZCIsY2xhc3NOYW1lOiJoLTEwIHctMTAgcm91bmRlZC1mdWxsIG9iamVjdC1jb3ZlciByaW5nLTIgcmluZy1wcmltYXJ5LzIwIn0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIC1pbnNldC0xIHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5LzEwIGJsdXItc20gb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSJ9KV19KSxnLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQteGwgZm9udC1ib2xkIHRyYWNraW5nLXRpZ2h0IHRleHQtZm9yZWdyb3VuZCIsY2hpbGRyZW46IlNoYWhyemFkIn0pXX0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJoaWRkZW4gbWQ6ZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTYiLGNoaWxkcmVuOltyLm1hcChpPT5nLmpzeHMoImEiLHtocmVmOmkuaHJlZixjbGFzc05hbWU6ImZvbnQtYm9keSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnMgcmVsYXRpdmUgZ3JvdXAiLGNoaWxkcmVuOltpLmxhYmVsLGcuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSAtYm90dG9tLTEgbGVmdC0wIHctMCBoLTAuNSBiZy1wcmltYXJ5IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBncm91cC1ob3Zlcjp3LWZ1bGwifSldfSxpLmhyZWYpKSxnLmpzeChEdix7fSksZy5qc3hzKEsuYSx7aHJlZjoiaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5zaGFocnphZC5zaGFocnphZF9hcHAiLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIG5vcmVmZXJyZXIiLHdoaWxlSG92ZXI6e3NjYWxlOjEuMDN9LHdoaWxlVGFwOntzY2FsZTouOTd9LGNsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQteGwgYmctcHJpbWFyeSBweC01IHB5LTIuNSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgc2hhZG93LVt2YXIoLS1nbG93LXNoYWRvdyldIGhvdmVyOnNoYWRvdy1sZyB0cmFuc2l0aW9uLXNoYWRvdyIsY2hpbGRyZW46W2cuanN4KHdpLHtzaXplOjE0fSksbi5uYXYudHJ5RnJlZV19KV19KSxnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgbWQ6aGlkZGVuIixjaGlsZHJlbjpbZy5qc3goRHYse30pLGcuanN4KCJidXR0b24iLHtvbkNsaWNrOigpPT50KCFlKSxjbGFzc05hbWU6InAtMiB0ZXh0LWZvcmVncm91bmQiLCJhcmlhLWxhYmVsIjoiVG9nZ2xlIG1lbnUiLGNoaWxkcmVuOmU\/Zy5qc3goY3Ase3NpemU6MjR9KTpnLmpzeChkSSx7c2l6ZToyNH0pfSldfSldfSksZy5qc3gocmEse2NoaWxkcmVuOmUmJmcuanN4KEsuZGl2LHtpbml0aWFsOntoZWlnaHQ6MCxvcGFjaXR5OjB9LGFuaW1hdGU6e2hlaWdodDoiYXV0byIsb3BhY2l0eToxfSxleGl0OntoZWlnaHQ6MCxvcGFjaXR5OjB9LGNsYXNzTmFtZToibWQ6aGlkZGVuIG92ZXJmbG93LWhpZGRlbiBiZy1iYWNrZ3JvdW5kLzk1IGJhY2tkcm9wLWJsdXIteGwgYm9yZGVyLWIgYm9yZGVyLWJvcmRlciIsY2hpbGRyZW46Zy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImNvbnRhaW5lciBmbGV4IGZsZXgtY29sIGdhcC00IHB5LTYiLGNoaWxkcmVuOltyLm1hcChpPT5nLmpzeCgiYSIse2hyZWY6aS5ocmVmLG9uQ2xpY2s6KCk9PnQoITEpLGNsYXNzTmFtZToiZm9udC1ib2R5IHRleHQtYmFzZSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIixjaGlsZHJlbjppLmxhYmVsfSxpLmhyZWYpKSxnLmpzeHMoImEiLHtocmVmOiJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM\/aWQ9Y29tLnNoYWhyemFkLnNoYWhyemFkX2FwcCIsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsY2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgcm91bmRlZC14bCBiZy1wcmltYXJ5IHB4LTUgcHktMyB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQiLGNoaWxkcmVuOltnLmpzeCh3aSx7c2l6ZToxNH0pLG4ubmF2LnRyeUZyZWVdfSldfSl9KX0pXX0pfSxsTz0iL2Fzc2V0cy9oZXJvLWJnLUI3dV93U3pwLmpwZyIsdlM9Ii9hc3NldHMvZ29vZ2xlLXBsYXktQmZna0dKT0MucG5nIix4Uz0iL2Fzc2V0cy9hcHAtc3RvcmUtQ05fcUNxdDMucG5nIixZcj0oe2NvdW50OmU9MzAsY2xhc3NOYW1lOnQ9IiJ9KT0+e2NvbnN0W24scl09Yi51c2VTdGF0ZShbXSk7cmV0dXJuIGIudXNlRWZmZWN0KCgpPT57Y29uc3QgaT1BcnJheS5mcm9tKHtsZW5ndGg6ZX0sKG8scyk9Pih7aWQ6cyx4Ok1hdGgucmFuZG9tKCkqMTAwLHk6TWF0aC5yYW5kb20oKSoxMDAsc2l6ZTpNYXRoLnJhbmRvbSgpKjQrMixkdXJhdGlvbjpNYXRoLnJhbmRvbSgpKjgrNixkZWxheTpNYXRoLnJhbmRvbSgpKjUsb3BhY2l0eTpNYXRoLnJhbmRvbSgpKi41Ky4yfSkpO3IoaSl9LFtlXSksZy5qc3goImRpdiIse2NsYXNzTmFtZTpgYWJzb2x1dGUgaW5zZXQtMCBvdmVyZmxvdy1oaWRkZW4gcG9pbnRlci1ldmVudHMtbm9uZSAke3R9YCxjaGlsZHJlbjpuLm1hcChpPT5nLmpzeChLLmRpdix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSByb3VuZGVkLWZ1bGwgYmctYWNjZW50IixzdHlsZTp7bGVmdDpgJHtpLnh9JWAsdG9wOmAke2kueX0lYCx3aWR0aDppLnNpemUsaGVpZ2h0Omkuc2l6ZX0sYW5pbWF0ZTp7eTpbMCwtNDAsMF0seDpbMCxNYXRoLnJhbmRvbSgpPi41PzE1Oi0xNSwwXSxvcGFjaXR5OltpLm9wYWNpdHksaS5vcGFjaXR5KjEuOCxpLm9wYWNpdHldLHNjYWxlOlsxLDEuNSwxXX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246aS5kdXJhdGlvbixkZWxheTppLmRlbGF5LHJlcGVhdDoxLzAsZWFzZToiZWFzZUluT3V0In19LGkuaWQpKX0pfSx1Tz1be3RvcDoiMTAlIixsZWZ0OiIxNSUiLGRlbGF5OjAsc2l6ZToyMH0se3RvcDoiMjUlIixsZWZ0OiI4MCUiLGRlbGF5OjEuMixzaXplOjE2fSx7dG9wOiI2MCUiLGxlZnQ6IjEwJSIsZGVsYXk6LjYsc2l6ZToxNH0se3RvcDoiNzAlIixsZWZ0OiI5MCUiLGRlbGF5OjEuOCxzaXplOjE4fSx7dG9wOiI0MCUiLGxlZnQ6IjUwJSIsZGVsYXk6Mi40LHNpemU6MTJ9LHt0b3A6Ijg1JSIsbGVmdDoiMzAlIixkZWxheTouMyxzaXplOjE2fSx7dG9wOiIxNSUiLGxlZnQ6IjY1JSIsZGVsYXk6MS41LHNpemU6MjJ9LHt0b3A6IjUwJSIsbGVmdDoiNzUlIixkZWxheToyLjEsc2l6ZToxNH1dLGNPPSh7dG9wOmUsbGVmdDp0LGRlbGF5Om4sc2l6ZTpyfSk9PmcuanN4KEsuc3ZnLHtjbGFzc05hbWU6ImFic29sdXRlIHBvaW50ZXItZXZlbnRzLW5vbmUgdGV4dC1hY2NlbnQiLHN0eWxlOnt0b3A6ZSxsZWZ0OnR9LHdpZHRoOnIsaGVpZ2h0OnIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGFuaW1hdGU6e3NjYWxlOlswLDEsMF0sb3BhY2l0eTpbMCwxLDBdLHJvdGF0ZTpbMCwxODBdfSx0cmFuc2l0aW9uOntkdXJhdGlvbjozLGRlbGF5Om4scmVwZWF0OjEvMCxlYXNlOiJlYXNlSW5PdXQifSxjaGlsZHJlbjpnLmpzeCgicGF0aCIse2Q6Ik0xMiAwTDE0LjU5IDkuNDFMMjQgMTJMMTQuNTkgMTQuNTlMMTIgMjRMOS40MSAxNC41OUwwIDEyTDkuNDEgOS40MUwxMiAwWiJ9KX0pLFhwPSh7Y2xhc3NOYW1lOmU9IiJ9KT0+Zy5qc3goImRpdiIse2NsYXNzTmFtZTpgYWJzb2x1dGUgaW5zZXQtMCBvdmVyZmxvdy1oaWRkZW4gcG9pbnRlci1ldmVudHMtbm9uZSAke2V9YCxjaGlsZHJlbjp1Ty5tYXAoKHQsbik9PmcuanN4KGNPLHsuLi50fSxuKSl9KSxkTz0oKT0+e2NvbnN0e3Q6ZX09X24oKTtyZXR1cm4gZy5qc3hzKCJzZWN0aW9uIix7ImFyaWEtbGFiZWwiOiJIZXJvIixjbGFzc05hbWU6InJlbGF0aXZlIG1pbi1oLVs5MHZoXSBmbGV4IGl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcHQtMjAiLGNoaWxkcmVuOltnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCIsY2hpbGRyZW46W2cuanN4KEsuaW1nLHtzcmM6bE8sYWx0OiJTaGFocnphZCBBSSBhdWRpb2Jvb2sgYXBwIOKAlCB0cmFuc2Zvcm0gYW55IGJvb2sgaW50byBhbiBpbW1lcnNpdmUgYXVkaW8gZXhwZXJpZW5jZSIsY2xhc3NOYW1lOiJ3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlciIsbG9hZGluZzoiZWFnZXIiLGluaXRpYWw6e3NjYWxlOjEuMX0sYW5pbWF0ZTp7c2NhbGU6MX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246MixlYXNlOiJlYXNlT3V0In19KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1mb3JlZ3JvdW5kLzk1IHZpYS1mb3JlZ3JvdW5kLzc1IHRvLWZvcmVncm91bmQvMzAifSksZy5qc3goImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by10IGZyb20tZm9yZWdyb3VuZC81MCB2aWEtdHJhbnNwYXJlbnQgdG8tdHJhbnNwYXJlbnQifSldfSksZy5qc3goWXIse2NvdW50OjQwfSksZy5qc3goWHAse30pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0xLzQgcmlnaHQtMS80IHctOTYgaC05NiByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeS8xMCBibHVyLVsxMjBweF0gcG9pbnRlci1ldmVudHMtbm9uZSJ9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBib3R0b20tMS80IGxlZnQtMS8zIHctNzIgaC03MiByb3VuZGVkLWZ1bGwgYmctYWNjZW50LzE1IGJsdXItWzEwMHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImNvbnRhaW5lciByZWxhdGl2ZSB6LTEwIixjaGlsZHJlbjpnLmpzeHMoImRpdiIse2NsYXNzTmFtZToibWF4LXctMnhsIixjaGlsZHJlbjpbZy5qc3goSy5kaXYse2luaXRpYWw6e29wYWNpdHk6MCx5OjMwfSxhbmltYXRlOntvcGFjaXR5OjEseTowfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouOH0sY2hpbGRyZW46Zy5qc3goSy5zcGFuLHtjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1hY2NlbnQvMzAgYmctYWNjZW50LzEwIHB4LTQgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hY2NlbnQgYmFja2Ryb3AtYmx1ci1tZCBtYi02IixhbmltYXRlOntib3hTaGFkb3c6WyIwIDAgMTVweCBoc2woMzYgODAlIDU1JSAvIDAuMikiLCIwIDAgMzBweCBoc2woMzYgODAlIDU1JSAvIDAuNCkiLCIwIDAgMTVweCBoc2woMzYgODAlIDU1JSAvIDAuMikiXX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246MyxyZXBlYXQ6MS8wLGVhc2U6ImVhc2VJbk91dCJ9LGNoaWxkcmVuOmUuaGVyby5iYWRnZX0pfSksZy5qc3hzKEsuaDEse2luaXRpYWw6e29wYWNpdHk6MCx5OjMwfSxhbmltYXRlOntvcGFjaXR5OjEseTowfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouOCxkZWxheTouMTV9LGNsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQtNXhsIG1kOnRleHQtN3hsIGZvbnQtYm9sZCBsZWFkaW5nLVsxLjFdIHRyYWNraW5nLXRpZ2h0IG1iLTYiLHN0eWxlOntjb2xvcjoiaHNsKDAgMCUgMTAwJSkifSxjaGlsZHJlbjpbZS5oZXJvLnRpdGxlMSwiICIsZy5qc3goSy5zcGFuLHtjbGFzc05hbWU6Iml0YWxpYyB0ZXh0LWFjY2VudCBpbmxpbmUtYmxvY2siLGFuaW1hdGU6e3RleHRTaGFkb3c6WyIwIDAgMjBweCBoc2woMzYgODAlIDU1JSAvIDAuMykiLCIwIDAgNDBweCBoc2woMzYgODAlIDU1JSAvIDAuNikiLCIwIDAgMjBweCBoc2woMzYgODAlIDU1JSAvIDAuMykiXX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246NCxyZXBlYXQ6MS8wLGVhc2U6ImVhc2VJbk91dCJ9LGNoaWxkcmVuOmUuaGVyby50aXRsZTJ9KV19KSxnLmpzeChLLnAse2luaXRpYWw6e29wYWNpdHk6MCx5OjMwfSxhbmltYXRlOntvcGFjaXR5OjEseTowfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouOCxkZWxheTouM30sY2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1sZyBtZDp0ZXh0LXhsIGxlYWRpbmctcmVsYXhlZCBtYi0xMCBtYXgtdy14bCIsc3R5bGU6e2NvbG9yOiJoc2woMCAwJSAxMDAlIC8gMC44KSJ9LGNoaWxkcmVuOmUuaGVyby5kZXNjcmlwdGlvbn0pLGcuanN4cyhLLmRpdix7aW5pdGlhbDp7b3BhY2l0eTowLHk6MzB9LGFuaW1hdGU6e29wYWNpdHk6MSx5OjB9LHRyYW5zaXRpb246e2R1cmF0aW9uOi44LGRlbGF5Oi40NX0sY2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBnYXAtNCIsY2hpbGRyZW46W2cuanN4KEsuYSx7aHJlZjoiaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5zaGFocnphZC5zaGFocnphZF9hcHAiLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIG5vcmVmZXJyZXIiLHdoaWxlSG92ZXI6e3NjYWxlOjEuMDUseTotMn0sd2hpbGVUYXA6e3NjYWxlOi45OH0sY2xhc3NOYW1lOiJ0cmFuc2l0aW9uLXNoYWRvdyBob3ZlcjpzaGFkb3ctbGcgaG92ZXI6c2hhZG93LXByaW1hcnkvMjAgcm91bmRlZC1sZyIsY2hpbGRyZW46Zy5qc3goImltZyIse3NyYzp2UyxhbHQ6IkdldCBpdCBvbiBHb29nbGUgUGxheSIsY2xhc3NOYW1lOiJoLTE0In0pfSksZy5qc3goSy5hLHtocmVmOiJodHRwczovL2FwcHMuYXBwbGUuY29tL2FwcC9pZDE1Nzc3MzEwODYiLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIG5vcmVmZXJyZXIiLHdoaWxlSG92ZXI6e3NjYWxlOjEuMDUseTotMn0sd2hpbGVUYXA6e3NjYWxlOi45OH0sY2xhc3NOYW1lOiJ0cmFuc2l0aW9uLXNoYWRvdyBob3ZlcjpzaGFkb3ctbGcgaG92ZXI6c2hhZG93LXByaW1hcnkvMjAgcm91bmRlZC1sZyIsY2hpbGRyZW46Zy5qc3goImltZyIse3NyYzp4UyxhbHQ6IkRvd25sb2FkIG9uIEFwcCBTdG9yZSIsY2xhc3NOYW1lOiJoLTE0In0pfSldfSldfSl9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCBoLTMyIGJnLWdyYWRpZW50LXRvLXQgZnJvbS1iYWNrZ3JvdW5kIHRvLXRyYW5zcGFyZW50In0pXX0pfSxmTz1be2ljb246b0ksdmFsdWU6IjEwSysiLGxhYmVsS2V5OiJkb3dubG9hZHMifSx7aWNvbjp5SSx2YWx1ZToiNC434piFIixsYWJlbEtleToicmF0aW5nIn0se2ljb246bUksdmFsdWU6IjEwMCUiLGxhYmVsS2V5OiJub0FkcyJ9LHtpY29uOnVwLHZhbHVlOiIxNysiLGxhYmVsS2V5OiJsYW5ndWFnZXMifV0scmQ9e2Rvd25sb2Fkczp7ZW46IkRvd25sb2FkcyIsYXI6Itiq2K3ZhdmK2YTYp9iqIixmcjoiVMOpbMOpY2hhcmdlbWVudHMiLGVzOiJEZXNjYXJnYXMiLGRlOiJEb3dubG9hZHMiLGZhOiLYr9in2YbZhNmI2K8ifSxyYXRpbmc6e2VuOiJBcHAgU3RvcmUgUmF0aW5nIixhcjoi2KrZgtmK2YrZhSDYp9mE2YXYqtis2LEiLGZyOiJOb3RlIEFwcCBTdG9yZSIsZXM6IkNhbGlmaWNhY2nDs24iLGRlOiJBcHAgU3RvcmUgQmV3ZXJ0dW5nIixmYToi2KfZhdiq24zYp9iyINmB2LHZiNi02q\/Yp9mHIn0sbm9BZHM6e2VuOiJGcmVlLCBObyBBZHMiLGFyOiLZhdis2KfZhtmKINio2K\/ZiNmGINil2LnZhNin2YbYp9iqIixmcjoiR3JhdHVpdCwgc2FucyBwdWIiLGVzOiJHcmF0aXMsIHNpbiBhbnVuY2lvcyIsZGU6Iktvc3Rlbmxvcywga2VpbmUgV2VyYnVuZyIsZmE6Itix2KfbjNqv2KfZhtiMINio2K\/ZiNmGINiq2KjZhNuM2LoifSxsYW5ndWFnZXM6e2VuOiJMYW5ndWFnZXMiLGFyOiLZhNi62KkiLGZyOiJMYW5ndWVzIixlczoiSWRpb21hcyIsZGU6IlNwcmFjaGVuIixmYToi2LLYqNin2YYifX0saE89KCk9Pntjb25zdHtsYW5ndWFnZTplfT1fbigpLHQ9ZSBpbiByZC5kb3dubG9hZHM\/ZToiZW4iO3JldHVybiBnLmpzeCgic2VjdGlvbiIse2NsYXNzTmFtZToicmVsYXRpdmUgcHktNiBiZy1jYXJkIGJvcmRlci15IGJvcmRlci1ib3JkZXIiLGNoaWxkcmVuOmcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImNvbnRhaW5lciIsY2hpbGRyZW46Zy5qc3goSy5kaXYse2luaXRpYWw6e29wYWNpdHk6MCx5OjIwfSx3aGlsZUluVmlldzp7b3BhY2l0eToxLHk6MH0sdmlld3BvcnQ6e29uY2U6ITB9LHRyYW5zaXRpb246e2R1cmF0aW9uOi42fSxjbGFzc05hbWU6ImdyaWQgZ3JpZC1jb2xzLTIgbWQ6Z3JpZC1jb2xzLTQgZ2FwLTYgbWQ6Z2FwLTQiLGNoaWxkcmVuOmZPLm1hcCgobixyKT0+Zy5qc3hzKEsuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAsc2NhbGU6Ljl9LHdoaWxlSW5WaWV3OntvcGFjaXR5OjEsc2NhbGU6MX0sdmlld3BvcnQ6e29uY2U6ITB9LHRyYW5zaXRpb246e2R1cmF0aW9uOi40LGRlbGF5OnIqLjF9LGNsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTMiLGNoaWxkcmVuOltnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LTEwIGgtMTAgcm91bmRlZC14bCBiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeSBzaHJpbmstMCIsY2hpbGRyZW46Zy5qc3gobi5pY29uLHtzaXplOjIwfSl9KSxnLmpzeHMoImRpdiIse2NoaWxkcmVuOltnLmpzeCgicCIse2NsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQteGwgZm9udC1ib2xkIHRleHQtZm9yZWdyb3VuZCBsZWFkaW5nLXRpZ2h0IixjaGlsZHJlbjpuLnZhbHVlfSksZy5qc3goInAiLHtjbGFzc05hbWU6ImZvbnQtYm9keSB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46cmRbbi5sYWJlbEtleV1bdF18fHJkW24ubGFiZWxLZXldLmVufSldfSldfSxuLmxhYmVsS2V5KSl9KX0pfSl9LHBPPSgpPT57Y29uc3R7dDplfT1fbigpLFt0LG5dPWIudXNlU3RhdGUoW10pLFtyLGldPWIudXNlU3RhdGUoITApLG89Yi51c2VSZWYobnVsbCksW3MsYV09Yi51c2VTdGF0ZSghMSksW2wsdV09Yi51c2VTdGF0ZShudWxsKTtiLnVzZUVmZmVjdCgoKT0+e2ZldGNoKCJodHRwczovL3VzLWNlbnRyYWwxLXNoYWhyemFkLTMxMDExOS5jbG91ZGZ1bmN0aW9ucy5uZXQvbGlzdC1ib29rcyIpLnRoZW4oaD0+aC5qc29uKCkpLnRoZW4oaD0+e24oaCksaSghMSl9KS5jYXRjaCgoKT0+aSghMSkpfSxbXSksYi51c2VFZmZlY3QoKCk9PntpZihyfHxzfHx0Lmxlbmd0aD09PTApcmV0dXJuO2NvbnN0IGg9by5jdXJyZW50O2lmKCFoKXJldHVybjtjb25zdCBmPXNldEludGVydmFsKCgpPT57Y29uc3QgeT1oLnNjcm9sbFdpZHRoLWguY2xpZW50V2lkdGg7aC5zY3JvbGxMZWZ0Pj15LTI\/aC5zY3JvbGxUbyh7bGVmdDowLGJlaGF2aW9yOiJzbW9vdGgifSk6aC5zY3JvbGxCeSh7bGVmdDoxLGJlaGF2aW9yOiJhdXRvIn0pfSwyMCk7cmV0dXJuKCk9PmNsZWFySW50ZXJ2YWwoZil9LFtyLHMsdF0pO2NvbnN0IGM9Yi51c2VDYWxsYmFjayhoPT57by5jdXJyZW50JiZvLmN1cnJlbnQuc2Nyb2xsQnkoe2xlZnQ6aD09PSJsZWZ0Ij8tMzIwOjMyMCxiZWhhdmlvcjoic21vb3RoIn0pfSxbXSksZD17RW5nbGlzaDoiYmctcHJpbWFyeS85MCIsRnJlbmNoOiJiZy1hY2NlbnQvOTAiLEFyYWJpYzoiYmctZGVzdHJ1Y3RpdmUvODAiLFNwYW5pc2g6ImJnLXByaW1hcnkvODAiLEdlcm1hbjoiYmctYWNjZW50LzgwIn07cmV0dXJuIGcuanN4cygic2VjdGlvbiIse2NsYXNzTmFtZToicmVsYXRpdmUgcHktMjQgbWQ6cHktMzIgYmctc2Vjb25kYXJ5LzUwIG92ZXJmbG93LWhpZGRlbiIsY2hpbGRyZW46W2cuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0wIGxlZnQtMS80IHctOTYgaC05NiByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeS81IGJsdXItWzEyMHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTEvNCB3LTk2IGgtOTYgcm91bmRlZC1mdWxsIGJnLWFjY2VudC84IGJsdXItWzEyMHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0xLzIgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHctWzUwMHB4XSBoLVs1MDBweF0gcm91bmRlZC1mdWxsIGJnLXByaW1hcnkvMyBibHVyLVsxNTBweF0gcG9pbnRlci1ldmVudHMtbm9uZSJ9KSxnLmpzeChZcix7Y291bnQ6MTV9KSxnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyIHJlbGF0aXZlIixjaGlsZHJlbjpbZy5qc3hzKEsuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAseToyMH0sd2hpbGVJblZpZXc6e29wYWNpdHk6MSx5OjB9LHZpZXdwb3J0OntvbmNlOiEwfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouNn0sY2xhc3NOYW1lOiJ0ZXh0LWNlbnRlciBtYi0xNCIsY2hpbGRyZW46W2cuanN4cyhLLnNwYW4se2NsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXByaW1hcnkvMjAgYmctcHJpbWFyeS81IHB4LTQgcHktMS41IHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXByaW1hcnkgYmFja2Ryb3AtYmx1ci1tZCBtYi01IixhbmltYXRlOntib3hTaGFkb3c6WyIwIDAgMTBweCBoc2woMjcwIDYwJSA1MCUgLyAwLjEpIiwiMCAwIDI1cHggaHNsKDI3MCA2MCUgNTAlIC8gMC4yNSkiLCIwIDAgMTBweCBoc2woMjcwIDYwJSA1MCUgLyAwLjEpIl19LHRyYW5zaXRpb246e2R1cmF0aW9uOjMscmVwZWF0OjEvMCxlYXNlOiJlYXNlSW5PdXQifSxjaGlsZHJlbjpbZy5qc3god2kse3NpemU6MTR9KSxlLmJvb2tzLmJhZGdlXX0pLGcuanN4KEsuaDIse2NsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQtM3hsIG1kOnRleHQtNXhsIGZvbnQtYm9sZCB0ZXh0LWZvcmVncm91bmQgbWItNCIsYW5pbWF0ZTp7dGV4dFNoYWRvdzpbIjAgMCAwcHggdHJhbnNwYXJlbnQiLCIwIDAgMzBweCBoc2woMjcwIDYwJSA1MCUgLyAwLjIpIiwiMCAwIDBweCB0cmFuc3BhcmVudCJdfSx0cmFuc2l0aW9uOntkdXJhdGlvbjo0LHJlcGVhdDoxLzB9LGNoaWxkcmVuOmUuYm9va3MudGl0bGV9KSxnLmpzeCgicCIse2NsYXNzTmFtZToiZm9udC1ib2R5IHRleHQtbGcgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1heC13LTJ4bCBteC1hdXRvIixjaGlsZHJlbjplLmJvb2tzLmRlc2NyaXB0aW9ufSldfSksZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIGdyb3VwIixvbk1vdXNlRW50ZXI6KCk9PmEoITApLG9uTW91c2VMZWF2ZTooKT0+YSghMSksY2hpbGRyZW46W2cuanN4KEsuYnV0dG9uLHt3aGlsZUhvdmVyOntzY2FsZToxLjE1fSx3aGlsZVRhcDp7c2NhbGU6Ljl9LG9uQ2xpY2s6KCk9PmMoImxlZnQiKSxjbGFzc05hbWU6ImFic29sdXRlIGxlZnQtMCB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgei0xMCB3LTEyIGgtMTIgcm91bmRlZC1mdWxsIGJnLWNhcmQvOTAgYmFja2Ryb3AtYmx1ci1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1mb3JlZ3JvdW5kIG9wYWNpdHktMCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgLXRyYW5zbGF0ZS14LTQgaG92ZXI6YmctcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBob3ZlcjpzaGFkb3ctW3ZhcigtLWdsb3ctc2hhZG93KV0gaG92ZXI6Ym9yZGVyLXByaW1hcnkvMzAiLGNoaWxkcmVuOmcuanN4KG5JLHtzaXplOjIyfSl9KSxnLmpzeChLLmJ1dHRvbix7d2hpbGVIb3Zlcjp7c2NhbGU6MS4xNX0sd2hpbGVUYXA6e3NjYWxlOi45fSxvbkNsaWNrOigpPT5jKCJyaWdodCIpLGNsYXNzTmFtZToiYWJzb2x1dGUgcmlnaHQtMCB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgei0xMCB3LTEyIGgtMTIgcm91bmRlZC1mdWxsIGJnLWNhcmQvOTAgYmFja2Ryb3AtYmx1ci1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1mb3JlZ3JvdW5kIG9wYWNpdHktMCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgdHJhbnNsYXRlLXgtNCBob3ZlcjpiZy1wcmltYXJ5IGhvdmVyOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIGhvdmVyOnNoYWRvdy1bdmFyKC0tZ2xvdy1zaGFkb3cpXSBob3Zlcjpib3JkZXItcHJpbWFyeS8zMCIsY2hpbGRyZW46Zy5qc3gockkse3NpemU6MjJ9KX0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGxlZnQtMCB0b3AtMCBib3R0b20tMCB3LTIwIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1zZWNvbmRhcnkvODAgdG8tdHJhbnNwYXJlbnQgei1bNV0gcG9pbnRlci1ldmVudHMtbm9uZSJ9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSByaWdodC0wIHRvcC0wIGJvdHRvbS0wIHctMjAgYmctZ3JhZGllbnQtdG8tbCBmcm9tLXNlY29uZGFyeS84MCB0by10cmFuc3BhcmVudCB6LVs1XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KCJkaXYiLHtyZWY6byxjbGFzc05hbWU6ImZsZXggZ2FwLTUgb3ZlcmZsb3cteC1hdXRvIHBiLTQgcHgtMiIsc3R5bGU6e3Njcm9sbGJhcldpZHRoOiJub25lIixtc092ZXJmbG93U3R5bGU6Im5vbmUifSxjaGlsZHJlbjpyP0FycmF5LmZyb20oe2xlbmd0aDo4fSkubWFwKChoLGYpPT5nLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleC1zaHJpbmstMCB3LVsyNDBweF0gcm91bmRlZC0yeGwgYmctY2FyZCBib3JkZXIgYm9yZGVyLWJvcmRlciBhbmltYXRlLXB1bHNlIixjaGlsZHJlbjpbZy5qc3goImRpdiIse2NsYXNzTmFtZToidy1mdWxsIGgtWzMyMHB4XSByb3VuZGVkLXQtMnhsIGJnLW11dGVkIn0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJwLTQgc3BhY2UteS0yLjUiLGNoaWxkcmVuOltnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJoLTUgYmctbXV0ZWQgcm91bmRlZCB3LTMvNCJ9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJoLTQgYmctbXV0ZWQgcm91bmRlZCB3LTEvMiJ9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJoLTMgYmctbXV0ZWQgcm91bmRlZCB3LTEvMyJ9KV19KV19LGYpKTp0Lm1hcCgoaCxmKT0+Zy5qc3hzKEsuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAseTozMH0sd2hpbGVJblZpZXc6e29wYWNpdHk6MSx5OjB9LHZpZXdwb3J0OntvbmNlOiEwfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouNSxkZWxheTpNYXRoLm1pbihmKi4wMywuNCl9LG9uSG92ZXJTdGFydDooKT0+dShoLmlkKSxvbkhvdmVyRW5kOigpPT51KG51bGwpLHdoaWxlSG92ZXI6e3k6LTEwLHRyYW5zaXRpb246e2R1cmF0aW9uOi4zLHR5cGU6InNwcmluZyIsc3RpZmZuZXNzOjMwMH19LGNsYXNzTmFtZToiZmxleC1zaHJpbmstMCB3LVsyNDBweF0gcm91bmRlZC0yeGwgYmctY2FyZCBib3JkZXIgYm9yZGVyLWJvcmRlciBzaGFkb3ctW3ZhcigtLWNhcmQtc2hhZG93KV0gaG92ZXI6c2hhZG93LVt2YXIoLS1jYXJkLWhvdmVyLXNoYWRvdyldIGhvdmVyOmJvcmRlci1wcmltYXJ5LzMwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBvdmVyZmxvdy1oaWRkZW4gZ3JvdXAvY2FyZCBjdXJzb3ItcG9pbnRlciIsY2hpbGRyZW46W2cuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSB3LWZ1bGwgaC1bMzIwcHhdIG92ZXJmbG93LWhpZGRlbiIsY2hpbGRyZW46W2cuanN4KCJpbWciLHtzcmM6aC5pbWcsYWx0OmgubmFtZSxjbGFzc05hbWU6InctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTcwMCBncm91cC1ob3Zlci9jYXJkOnNjYWxlLTExMCIsbG9hZGluZzoibGF6eSJ9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIGJnLWdyYWRpZW50LXRvLXQgZnJvbS1mb3JlZ3JvdW5kLzcwIHZpYS1mb3JlZ3JvdW5kLzEwIHRvLXRyYW5zcGFyZW50In0pLGcuanN4KHJhLHtjaGlsZHJlbjpsPT09aC5pZCYmZy5qc3goSy5kaXYse2luaXRpYWw6e29wYWNpdHk6MH0sYW5pbWF0ZTp7b3BhY2l0eToxfSxleGl0OntvcGFjaXR5OjB9LGNsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by10IGZyb20tcHJpbWFyeS8yMCB2aWEtdHJhbnNwYXJlbnQgdG8tYWNjZW50LzEwIHBvaW50ZXItZXZlbnRzLW5vbmUifSl9KSxnLmpzeChLLnNwYW4se2NsYXNzTmFtZTpgYWJzb2x1dGUgdG9wLTMgcmlnaHQtMyBweC0zIHB5LTEgcm91bmRlZC1mdWxsICR7ZFtoLmxhbmd1YWdlXXx8ImJnLXByaW1hcnkvODAifSB0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBiYWNrZHJvcC1ibHVyLXNtIHNoYWRvdy1tZGAsd2hpbGVIb3Zlcjp7c2NhbGU6MS4xfSxjaGlsZHJlbjpoLmxhbmd1YWdlfSksZy5qc3goImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgcC00IixjaGlsZHJlbjpnLmpzeCgiaDMiLHtjbGFzc05hbWU6ImZvbnQtZGlzcGxheSB0ZXh0LXNtIGZvbnQtYm9sZCBsZWFkaW5nLXNudWcgbGluZS1jbGFtcC0yIHRleHQtd2hpdGUgZHJvcC1zaGFkb3ctbGciLGNoaWxkcmVuOmgubmFtZX0pfSldfSksZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InAtNCIsY2hpbGRyZW46W2cuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yIixjaGlsZHJlbjpbZy5qc3goImRpdiIse2NsYXNzTmFtZToidy02IGgtNiByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeS8xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmbGV4LXNocmluay0wIixjaGlsZHJlbjpnLmpzeCh3aSx7c2l6ZToxMCxjbGFzc05hbWU6InRleHQtcHJpbWFyeSJ9KX0pLGcuanN4KCJwIix7Y2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbGluZS1jbGFtcC0xIixjaGlsZHJlbjpoLmF1dGhvcn0pXX0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IixjaGlsZHJlbjpbZy5qc3goImRpdiIse2NsYXNzTmFtZToiZmxleCBnYXAtMC41IixjaGlsZHJlbjpbLi4uQXJyYXkoMyldLm1hcCgoeSxtKT0+Zy5qc3goSy5kaXYse2NsYXNzTmFtZToidy0xIHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5LzYwIixhbmltYXRlOntoZWlnaHQ6WzQsMTIsNF19LHRyYW5zaXRpb246e2R1cmF0aW9uOi44LGRlbGF5Om0qLjE1LHJlcGVhdDoxLzAsZWFzZToiZWFzZUluT3V0In19LG0pKX0pLGcuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1bMTBweF0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzcwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciIsY2hpbGRyZW46ZS5ib29rcy5haU5hcnJhdGVkfSldfSldfSldfSxoLmlkKSl9KV19KSxnLmpzeChLLmRpdix7aW5pdGlhbDp7b3BhY2l0eTowLHk6MTZ9LHdoaWxlSW5WaWV3OntvcGFjaXR5OjEseTowfSx2aWV3cG9ydDp7b25jZTohMH0sdHJhbnNpdGlvbjp7ZHVyYXRpb246LjUsZGVsYXk6LjN9LGNsYXNzTmFtZToidGV4dC1jZW50ZXIgbXQtMTAiLGNoaWxkcmVuOmcuanN4cyhLLmEse2hyZWY6Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20uc2hhaHJ6YWQuc2hhaHJ6YWRfYXBwIix0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIix3aGlsZUhvdmVyOntzY2FsZToxLjA1LHk6LTN9LHdoaWxlVGFwOntzY2FsZTouOTd9LGNsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yLjUgcm91bmRlZC14bCBiZy1wcmltYXJ5IHB4LTggcHktNCBmb250LWJvZHkgdGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgc2hhZG93LVt2YXIoLS1nbG93LXNoYWRvdyldIGhvdmVyOnNoYWRvdy1sZyB0cmFuc2l0aW9uLWFsbCIsY2hpbGRyZW46W2cuanN4KHdpLHtzaXplOjE4fSksZS5ib29rcy5jdGFdfSl9KV19KV19KX0sbU89e2hpZGRlbjp7fSxzaG93Ont0cmFuc2l0aW9uOntzdGFnZ2VyQ2hpbGRyZW46LjEyfX19LGdPPXtoaWRkZW46e29wYWNpdHk6MCx5OjMwLHNjYWxlOi45NX0sc2hvdzp7b3BhY2l0eToxLHk6MCxzY2FsZToxLHRyYW5zaXRpb246e2R1cmF0aW9uOi42LHR5cGU6InNwcmluZyIsc3RpZmZuZXNzOjIwMH19fSx5Tz0oKT0+e2NvbnN0e3Q6ZX09X24oKSx0PVt7aWNvbjpmSSx0aXRsZTplLmZlYXR1cmVzLml0ZW1zLnZvaWNlVGl0bGUsZGVzYzplLmZlYXR1cmVzLml0ZW1zLnZvaWNlRGVzYyxjb2xvcjoiZnJvbS1wcmltYXJ5LzEwIHRvLXByaW1hcnkvNSIsaWNvbkJnOiJiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeSBncm91cC1ob3ZlcjpiZy1wcmltYXJ5IGdyb3VwLWhvdmVyOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIn0se2ljb246dXAsdGl0bGU6ZS5mZWF0dXJlcy5pdGVtcy50cmFuc2xhdGVUaXRsZSxkZXNjOmUuZmVhdHVyZXMuaXRlbXMudHJhbnNsYXRlRGVzYyxjb2xvcjoiZnJvbS1hY2NlbnQvMTAgdG8tYWNjZW50LzUiLGljb25CZzoiYmctYWNjZW50LzEwIHRleHQtYWNjZW50IGdyb3VwLWhvdmVyOmJnLWFjY2VudCBncm91cC1ob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIn0se2ljb246dUksdGl0bGU6ZS5mZWF0dXJlcy5pdGVtcy5saWJyYXJ5VGl0bGUsZGVzYzplLmZlYXR1cmVzLml0ZW1zLmxpYnJhcnlEZXNjLGNvbG9yOiJmcm9tLXByaW1hcnkvMTAgdG8tYWNjZW50LzUiLGljb25CZzoiYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnkgZ3JvdXAtaG92ZXI6YmctcHJpbWFyeSBncm91cC1ob3Zlcjp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCJ9LHtpY29uOnZJLHRpdGxlOmUuZmVhdHVyZXMuaXRlbXMuZmFtaWx5VGl0bGUsZGVzYzplLmZlYXR1cmVzLml0ZW1zLmZhbWlseURlc2MsY29sb3I6ImZyb20tYWNjZW50LzEwIHRvLXByaW1hcnkvNSIsaWNvbkJnOiJiZy1hY2NlbnQvMTAgdGV4dC1hY2NlbnQgZ3JvdXAtaG92ZXI6YmctYWNjZW50IGdyb3VwLWhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQifSx7aWNvbjphSSx0aXRsZTplLmZlYXR1cmVzLml0ZW1zLmFjY2Vzc1RpdGxlLGRlc2M6ZS5mZWF0dXJlcy5pdGVtcy5hY2Nlc3NEZXNjLGNvbG9yOiJmcm9tLXByaW1hcnkvMTAgdG8tcHJpbWFyeS81IixpY29uQmc6ImJnLXByaW1hcnkvMTAgdGV4dC1wcmltYXJ5IGdyb3VwLWhvdmVyOmJnLXByaW1hcnkgZ3JvdXAtaG92ZXI6dGV4dC1wcmltYXJ5LWZvcmVncm91bmQifSx7aWNvbjpoSSx0aXRsZTplLmZlYXR1cmVzLml0ZW1zLnN5bmNUaXRsZSxkZXNjOmUuZmVhdHVyZXMuaXRlbXMuc3luY0Rlc2MsY29sb3I6ImZyb20tYWNjZW50LzEwIHRvLWFjY2VudC81IixpY29uQmc6ImJnLWFjY2VudC8xMCB0ZXh0LWFjY2VudCBncm91cC1ob3ZlcjpiZy1hY2NlbnQgZ3JvdXAtaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCJ9XTtyZXR1cm4gZy5qc3hzKCJzZWN0aW9uIix7aWQ6ImZlYXR1cmVzIiwiYXJpYS1sYWJlbCI6IkZlYXR1cmVzIixjbGFzc05hbWU6InJlbGF0aXZlIHB5LTI0IG1kOnB5LTMyIG92ZXJmbG93LWhpZGRlbiIsY2hpbGRyZW46W2cuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0xLzMgcmlnaHQtMCB3LTk2IGgtOTYgcm91bmRlZC1mdWxsIGJnLXByaW1hcnkvNSBibHVyLVsxMjBweF0gcG9pbnRlci1ldmVudHMtbm9uZSJ9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBib3R0b20tMS8zIGxlZnQtMCB3LTk2IGgtOTYgcm91bmRlZC1mdWxsIGJnLWFjY2VudC81IGJsdXItWzEyMHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KFlyLHtjb3VudDoxMn0pLGcuanN4KFhwLHt9KSxnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyIHJlbGF0aXZlIixjaGlsZHJlbjpbZy5qc3hzKEsuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAseToyMH0sd2hpbGVJblZpZXc6e29wYWNpdHk6MSx5OjB9LHZpZXdwb3J0OntvbmNlOiEwfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouNn0sY2xhc3NOYW1lOiJ0ZXh0LWNlbnRlciBtYi0xNiIsY2hpbGRyZW46W2cuanN4cyhLLnNwYW4se2NsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXByaW1hcnkvMjAgYmctcHJpbWFyeS81IHB4LTQgcHktMS41IHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXByaW1hcnkgYmFja2Ryb3AtYmx1ci1tZCBtYi01IixhbmltYXRlOntib3hTaGFkb3c6WyIwIDAgMTBweCBoc2woMjcwIDYwJSA1MCUgLyAwLjEpIiwiMCAwIDIwcHggaHNsKDI3MCA2MCUgNTAlIC8gMC4yKSIsIjAgMCAxMHB4IGhzbCgyNzAgNjAlIDUwJSAvIDAuMSkiXX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246MyxyZXBlYXQ6MS8wfSxjaGlsZHJlbjpbZy5qc3goeEkse3NpemU6MTR9KSxlLmZlYXR1cmVzLmJhZGdlXX0pLGcuanN4KEsuaDIse2NsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQtM3hsIG1kOnRleHQtNXhsIGZvbnQtYm9sZCB0ZXh0LWZvcmVncm91bmQgbWItNCIsYW5pbWF0ZTp7dGV4dFNoYWRvdzpbIjAgMCAwcHggdHJhbnNwYXJlbnQiLCIwIDAgMjVweCBoc2woMjcwIDYwJSA1MCUgLyAwLjE1KSIsIjAgMCAwcHggdHJhbnNwYXJlbnQiXX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246NCxyZXBlYXQ6MS8wfSxjaGlsZHJlbjplLmZlYXR1cmVzLnRpdGxlfSksZy5qc3goInAiLHtjbGFzc05hbWU6ImZvbnQtYm9keSB0ZXh0LWxnIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtYXgtdy0yeGwgbXgtYXV0byIsY2hpbGRyZW46ZS5mZWF0dXJlcy5kZXNjcmlwdGlvbn0pXX0pLGcuanN4KEsuZGl2LHt2YXJpYW50czptTyxpbml0aWFsOiJoaWRkZW4iLHdoaWxlSW5WaWV3OiJzaG93Iix2aWV3cG9ydDp7b25jZTohMH0sY2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC02IixjaGlsZHJlbjp0Lm1hcChuPT5nLmpzeHMoSy5kaXYse3ZhcmlhbnRzOmdPLHdoaWxlSG92ZXI6e3k6LTgsdHJhbnNpdGlvbjp7ZHVyYXRpb246LjMsdHlwZToic3ByaW5nIixzdGlmZm5lc3M6MzAwfX0sY2xhc3NOYW1lOmBncm91cCByZWxhdGl2ZSByb3VuZGVkLTJ4bCBiZy1ncmFkaWVudC10by1iciAke24uY29sb3J9IGJnLWNhcmQgcC04IHNoYWRvdy1bdmFyKC0tY2FyZC1zaGFkb3cpXSBob3ZlcjpzaGFkb3ctW3ZhcigtLWNhcmQtaG92ZXItc2hhZG93KV0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGJvcmRlciBib3JkZXItYm9yZGVyIGhvdmVyOmJvcmRlci1wcmltYXJ5LzIwIG92ZXJmbG93LWhpZGRlbmAsY2hpbGRyZW46W2cuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi03MDAgcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46Zy5qc3goImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgLXRvcC0xMCAtcmlnaHQtMTAgdy00OCBoLTQ4IHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5LzEwIGJsdXItWzYwcHhdIn0pfSksZy5qc3goSy5kaXYse2NsYXNzTmFtZTpgcmVsYXRpdmUgei0xMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy0xNCBoLTE0IHJvdW5kZWQteGwgJHtuLmljb25CZ30gbWItNSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgc2hhZG93LXNtYCx3aGlsZUhvdmVyOntyb3RhdGU6WzAsLTEyLDEyLDBdLHNjYWxlOjEuMX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246LjV9LGNoaWxkcmVuOmcuanN4KG4uaWNvbix7c2l6ZToyNn0pfSksZy5qc3goImgzIix7Y2xhc3NOYW1lOiJmb250LWRpc3BsYXkgdGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtY2FyZC1mb3JlZ3JvdW5kIG1iLTMgcmVsYXRpdmUgei0xMCIsY2hpbGRyZW46bi50aXRsZX0pLGcuanN4KCJwIix7Y2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGxlYWRpbmctcmVsYXhlZCByZWxhdGl2ZSB6LTEwIixjaGlsZHJlbjpuLmRlc2N9KSxnLmpzeChLLmRpdix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCBoLVsycHhdIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10cmFuc3BhcmVudCB2aWEtcHJpbWFyeS80MCB0by10cmFuc3BhcmVudCIsaW5pdGlhbDp7c2NhbGVYOjB9LHdoaWxlSW5WaWV3OntzY2FsZVg6MX0sdmlld3BvcnQ6e29uY2U6ITB9LHRyYW5zaXRpb246e2R1cmF0aW9uOjEuNSxkZWxheTouM319KV19LG4udGl0bGUpKX0pXX0pXX0pfSx2Tz0oKT0+e2NvbnN0e3Q6ZX09X24oKSx0PVt7ZW1vamk6IvCfkajigI3wn5Gp4oCN8J+Rp+KAjfCfkaYiLC4uLmUuYXVkaWVuY2VzLnBhcmVudHMsZ3JhZGllbnQ6ImZyb20tcHJpbWFyeS81IHRvLWFjY2VudC81In0se2Vtb2ppOiLwn4yQIiwuLi5lLmF1ZGllbmNlcy5sZWFybmVycyxncmFkaWVudDoiZnJvbS1hY2NlbnQvNSB0by1wcmltYXJ5LzUifSx7ZW1vamk6IvCfkZMiLC4uLmUuYXVkaWVuY2VzLmFjY2Vzc2liaWxpdHksZ3JhZGllbnQ6ImZyb20tcHJpbWFyeS81IHRvLXByaW1hcnkvNSJ9LHtlbW9qaToi8J+TmiIsLi4uZS5hdWRpZW5jZXMucmVhZGVycyxncmFkaWVudDoiZnJvbS1hY2NlbnQvNSB0by1hY2NlbnQvNSJ9XTtyZXR1cm4gZy5qc3hzKCJzZWN0aW9uIix7aWQ6ImF1ZGllbmNlcyIsImFyaWEtbGFiZWwiOiJXaG8gU2hhaHJ6YWQgaXMgZm9yIixjbGFzc05hbWU6InJlbGF0aXZlIHB5LTI0IG1kOnB5LTMyIGJnLXNlY29uZGFyeS81MCBvdmVyZmxvdy1oaWRkZW4iLGNoaWxkcmVuOltnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSB0b3AtMCByaWdodC0xLzMgdy04MCBoLTgwIHJvdW5kZWQtZnVsbCBiZy1hY2NlbnQvNSBibHVyLVsxMjBweF0gcG9pbnRlci1ldmVudHMtbm9uZSJ9KSxnLmpzeChZcix7Y291bnQ6MTB9KSxnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyIHJlbGF0aXZlIixjaGlsZHJlbjpbZy5qc3hzKEsuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAseToyMH0sd2hpbGVJblZpZXc6e29wYWNpdHk6MSx5OjB9LHZpZXdwb3J0OntvbmNlOiEwfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouNn0sY2xhc3NOYW1lOiJ0ZXh0LWNlbnRlciBtYi0xNiIsY2hpbGRyZW46W2cuanN4KEsuaDIse2NsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQtM3hsIG1kOnRleHQtNXhsIGZvbnQtYm9sZCB0ZXh0LWZvcmVncm91bmQgbWItNCIsY2hpbGRyZW46ZS5hdWRpZW5jZXMudGl0bGV9KSxnLmpzeCgicCIse2NsYXNzTmFtZToiZm9udC1ib2R5IHRleHQtbGcgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjplLmF1ZGllbmNlcy5kZXNjcmlwdGlvbn0pXX0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTYiLGNoaWxkcmVuOnQubWFwKChuLHIpPT5nLmpzeHMoSy5kaXYse2luaXRpYWw6e29wYWNpdHk6MCx5OjMwfSx3aGlsZUluVmlldzp7b3BhY2l0eToxLHk6MH0sdmlld3BvcnQ6e29uY2U6ITB9LHRyYW5zaXRpb246e2R1cmF0aW9uOi41LGRlbGF5OnIqLjF9LHdoaWxlSG92ZXI6e3k6LTZ9LGNsYXNzTmFtZTpgZ3JvdXAgcmVsYXRpdmUgcm91bmRlZC0yeGwgYmctZ3JhZGllbnQtdG8tYnIgJHtuLmdyYWRpZW50fSBiZy1jYXJkIHAtOCBzaGFkb3ctW3ZhcigtLWNhcmQtc2hhZG93KV0gYm9yZGVyIGJvcmRlci1ib3JkZXIgaG92ZXI6c2hhZG93LVt2YXIoLS1jYXJkLWhvdmVyLXNoYWRvdyldIGhvdmVyOmJvcmRlci1wcmltYXJ5LzIwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBvdmVyZmxvdy1oaWRkZW5gLGNoaWxkcmVuOltnLmpzeChLLnNwYW4se2NsYXNzTmFtZToidGV4dC01eGwgbWItNSBibG9jayByZWxhdGl2ZSB6LTEwIixhbmltYXRlOnt5OlswLC02LDBdfSx0cmFuc2l0aW9uOntkdXJhdGlvbjozLHJlcGVhdDoxLzAsZGVsYXk6ciouM30sY2hpbGRyZW46bi5lbW9qaX0pLGcuanN4KCJoMyIse2NsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC1jYXJkLWZvcmVncm91bmQgbWItMiByZWxhdGl2ZSB6LTEwIixjaGlsZHJlbjpuLnRpdGxlfSksZy5qc3goInAiLHtjbGFzc05hbWU6ImZvbnQtYm9keSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbWItNSByZWxhdGl2ZSB6LTEwIixjaGlsZHJlbjpuLmRlc2N9KSxnLmpzeCgidWwiLHtjbGFzc05hbWU6InNwYWNlLXktMi41IHJlbGF0aXZlIHotMTAiLGNoaWxkcmVuOm4ucG9pbnRzLm1hcChpPT5nLmpzeHMoImxpIix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMi41IGZvbnQtYm9keSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46W2cuanN4KCJkaXYiLHtjbGFzc05hbWU6InctNSBoLTUgcm91bmRlZC1mdWxsIGJnLXByaW1hcnkvMTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZmxleC1zaHJpbmstMCIsY2hpbGRyZW46Zy5qc3goZUkse3NpemU6MTAsY2xhc3NOYW1lOiJ0ZXh0LXByaW1hcnkifSl9KSxpXX0saSkpfSldfSxuLnRpdGxlKSl9KV19KV19KX0seE89KCk9Pntjb25zdHt0OmV9PV9uKCk7cmV0dXJuIGcuanN4cygic2VjdGlvbiIse2lkOiJzdG9yeSIsImFyaWEtbGFiZWwiOiJPdXIgU3RvcnkiLGNsYXNzTmFtZToicmVsYXRpdmUgcHktMjQgbWQ6cHktMzIgb3ZlcmZsb3ctaGlkZGVuIixjaGlsZHJlbjpbZy5qc3goImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgdy1bNzAwcHhdIGgtWzcwMHB4XSByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeS81IGJsdXItWzE4MHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KFhwLHt9KSxnLmpzeChZcix7Y291bnQ6MTJ9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJjb250YWluZXIgcmVsYXRpdmUiLGNoaWxkcmVuOmcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJtYXgtdy0zeGwgbXgtYXV0byB0ZXh0LWNlbnRlciIsY2hpbGRyZW46W2cuanN4KEsuc3Bhbix7aW5pdGlhbDp7b3BhY2l0eTowLHNjYWxlOi44fSx3aGlsZUluVmlldzp7b3BhY2l0eToxLHNjYWxlOjF9LHZpZXdwb3J0OntvbmNlOiEwfSxjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1hY2NlbnQvMzAgYmctYWNjZW50LzEwIHB4LTQgcHktMS41IGZvbnQtYm9keSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1hY2NlbnQgYmFja2Ryb3AtYmx1ci1tZCBtYi01IixjaGlsZHJlbjplLnN0b3J5LmJhZGdlfSksZy5qc3hzKEsuaDIse2luaXRpYWw6e29wYWNpdHk6MCx5OjIwfSx3aGlsZUluVmlldzp7b3BhY2l0eToxLHk6MH0sdmlld3BvcnQ6e29uY2U6ITB9LHRyYW5zaXRpb246e2R1cmF0aW9uOi42fSxjbGFzc05hbWU6ImZvbnQtZGlzcGxheSB0ZXh0LTN4bCBtZDp0ZXh0LTV4bCBmb250LWJvbGQgdGV4dC1mb3JlZ3JvdW5kIG1iLTgiLGNoaWxkcmVuOltlLnN0b3J5LnRpdGxlMSwiICIsZy5qc3goSy5zcGFuLHtjbGFzc05hbWU6Iml0YWxpYyB0ZXh0LXByaW1hcnkgaW5saW5lLWJsb2NrIixhbmltYXRlOnt0ZXh0U2hhZG93OlsiMCAwIDBweCB0cmFuc3BhcmVudCIsIjAgMCAzMHB4IGhzbCgyNzAgNjAlIDUwJSAvIDAuMzUpIiwiMCAwIDBweCB0cmFuc3BhcmVudCJdfSx0cmFuc2l0aW9uOntkdXJhdGlvbjozLHJlcGVhdDoxLzB9LGNoaWxkcmVuOmUuc3RvcnkudGl0bGUyfSksIiAiLCLinKgiXX0pLGcuanN4cyhLLmRpdix7aW5pdGlhbDp7b3BhY2l0eTowLHk6MjB9LHdoaWxlSW5WaWV3OntvcGFjaXR5OjEseTowfSx2aWV3cG9ydDp7b25jZTohMH0sdHJhbnNpdGlvbjp7ZHVyYXRpb246LjYsZGVsYXk6LjE1fSxjbGFzc05hbWU6InNwYWNlLXktNiBmb250LWJvZHkgdGV4dC1sZyB0ZXh0LW11dGVkLWZvcmVncm91bmQgbGVhZGluZy1yZWxheGVkIixjaGlsZHJlbjpbZy5qc3goInAiLHtjaGlsZHJlbjplLnN0b3J5LnAxfSksZy5qc3hzKEsuYmxvY2txdW90ZSx7Y2xhc3NOYW1lOiJyZWxhdGl2ZSByb3VuZGVkLTJ4bCBiZy1ncmFkaWVudC10by1yIGZyb20tcHJpbWFyeS81IHZpYS1jYXJkIHRvLWFjY2VudC81IGJvcmRlciBib3JkZXItcHJpbWFyeS8yMCBwLTggdGV4dC1mb3JlZ3JvdW5kIGZvbnQtZGlzcGxheSB0ZXh0LXhsIGl0YWxpYyBzaGFkb3ctW3ZhcigtLWNhcmQtc2hhZG93KV0gb3ZlcmZsb3ctaGlkZGVuIixjaGlsZHJlbjpbZy5qc3goInNwYW4iLHtjbGFzc05hbWU6ImFic29sdXRlIC10b3AtNCBsZWZ0LTggdGV4dC01eGwgdGV4dC1wcmltYXJ5LzMwIixjaGlsZHJlbjonIid9KSxnLmpzeCgic3BhbiIse2NsYXNzTmFtZToicmVsYXRpdmUgei0xMCIsY2hpbGRyZW46ZS5zdG9yeS5xdW90ZX0pLGcuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSAtYm90dG9tLTQgcmlnaHQtOCB0ZXh0LTV4bCB0ZXh0LXByaW1hcnkvMzAiLGNoaWxkcmVuOiciJ30pXX0pLGcuanN4KCJwIix7Y2hpbGRyZW46ZS5zdG9yeS5wMn0pXX0pXX0pfSldfSl9O3ZhciBZdT0iQ29sbGFwc2libGUiLFt3Tyx3U109Rm8oWXUpLFtiTyxKcF09d08oWXUpLGJTPWIuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVDb2xsYXBzaWJsZTpuLG9wZW46cixkZWZhdWx0T3BlbjppLGRpc2FibGVkOm8sb25PcGVuQ2hhbmdlOnMsLi4uYX09ZSxbbCx1XT1MdSh7cHJvcDpyLGRlZmF1bHRQcm9wOmk\/PyExLG9uQ2hhbmdlOnMsY2FsbGVyOll1fSk7cmV0dXJuIGcuanN4KGJPLHtzY29wZTpuLGRpc2FibGVkOm8sY29udGVudElkOmViKCksb3BlbjpsLG9uT3BlblRvZ2dsZTpiLnVzZUNhbGxiYWNrKCgpPT51KGM9PiFjKSxbdV0pLGNoaWxkcmVuOmcuanN4KFVlLmRpdix7ImRhdGEtc3RhdGUiOmVtKGwpLCJkYXRhLWRpc2FibGVkIjpvPyIiOnZvaWQgMCwuLi5hLHJlZjp0fSl9KX0pO2JTLmRpc3BsYXlOYW1lPVl1O3ZhciBrUz0iQ29sbGFwc2libGVUcmlnZ2VyIixTUz1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtfX3Njb3BlQ29sbGFwc2libGU6biwuLi5yfT1lLGk9SnAoa1Msbik7cmV0dXJuIGcuanN4KFVlLmJ1dHRvbix7dHlwZToiYnV0dG9uIiwiYXJpYS1jb250cm9scyI6aS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOmkub3Blbnx8ITEsImRhdGEtc3RhdGUiOmVtKGkub3BlbiksImRhdGEtZGlzYWJsZWQiOmkuZGlzYWJsZWQ\/IiI6dm9pZCAwLGRpc2FibGVkOmkuZGlzYWJsZWQsLi4ucixyZWY6dCxvbkNsaWNrOlJlKGUub25DbGljayxpLm9uT3BlblRvZ2dsZSl9KX0pO1NTLmRpc3BsYXlOYW1lPWtTO3ZhciBacD0iQ29sbGFwc2libGVDb250ZW50IixDUz1iLmZvcndhcmRSZWYoKGUsdCk9Pntjb25zdHtmb3JjZU1vdW50Om4sLi4ucn09ZSxpPUpwKFpwLGUuX19zY29wZUNvbGxhcHNpYmxlKTtyZXR1cm4gZy5qc3goTXUse3ByZXNlbnQ6bnx8aS5vcGVuLGNoaWxkcmVuOih7cHJlc2VudDpvfSk9PmcuanN4KGtPLHsuLi5yLHJlZjp0LHByZXNlbnQ6b30pfSl9KTtDUy5kaXNwbGF5TmFtZT1acDt2YXIga089Yi5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZUNvbGxhcHNpYmxlOm4scHJlc2VudDpyLGNoaWxkcmVuOmksLi4ub309ZSxzPUpwKFpwLG4pLFthLGxdPWIudXNlU3RhdGUociksdT1iLnVzZVJlZihudWxsKSxjPU10KHQsdSksZD1iLnVzZVJlZigwKSxoPWQuY3VycmVudCxmPWIudXNlUmVmKDApLHk9Zi5jdXJyZW50LG09cy5vcGVufHxhLHc9Yi51c2VSZWYobSkscD1iLnVzZVJlZih2b2lkIDApO3JldHVybiBiLnVzZUVmZmVjdCgoKT0+e2NvbnN0IHY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT53LmN1cnJlbnQ9ITEpO3JldHVybigpPT5jYW5jZWxBbmltYXRpb25GcmFtZSh2KX0sW10pLFJuKCgpPT57Y29uc3Qgdj11LmN1cnJlbnQ7aWYodil7cC5jdXJyZW50PXAuY3VycmVudHx8e3RyYW5zaXRpb25EdXJhdGlvbjp2LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbixhbmltYXRpb25OYW1lOnYuc3R5bGUuYW5pbWF0aW9uTmFtZX0sdi5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249IjBzIix2LnN0eWxlLmFuaW1hdGlvbk5hbWU9Im5vbmUiO2NvbnN0IHg9di5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtkLmN1cnJlbnQ9eC5oZWlnaHQsZi5jdXJyZW50PXgud2lkdGgsdy5jdXJyZW50fHwodi5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249cC5jdXJyZW50LnRyYW5zaXRpb25EdXJhdGlvbix2LnN0eWxlLmFuaW1hdGlvbk5hbWU9cC5jdXJyZW50LmFuaW1hdGlvbk5hbWUpLGwocil9fSxbcy5vcGVuLHJdKSxnLmpzeChVZS5kaXYseyJkYXRhLXN0YXRlIjplbShzLm9wZW4pLCJkYXRhLWRpc2FibGVkIjpzLmRpc2FibGVkPyIiOnZvaWQgMCxpZDpzLmNvbnRlbnRJZCxoaWRkZW46IW0sLi4ubyxyZWY6YyxzdHlsZTp7Ii0tcmFkaXgtY29sbGFwc2libGUtY29udGVudC1oZWlnaHQiOmg\/YCR7aH1weGA6dm9pZCAwLCItLXJhZGl4LWNvbGxhcHNpYmxlLWNvbnRlbnQtd2lkdGgiOnk\/YCR7eX1weGA6dm9pZCAwLC4uLmUuc3R5bGV9LGNoaWxkcmVuOm0mJml9KX0pO2Z1bmN0aW9uIGVtKGUpe3JldHVybiBlPyJvcGVuIjoiY2xvc2VkIn12YXIgU089YlMsQ089U1MsVE89Q1MsRU89Yi5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gUE8oZSl7Y29uc3QgdD1iLnVzZUNvbnRleHQoRU8pO3JldHVybiBlfHx0fHwibHRyIn12YXIgZ249IkFjY29yZGlvbiIsQU89WyJIb21lIiwiRW5kIiwiQXJyb3dEb3duIiwiQXJyb3dVcCIsIkFycm93TGVmdCIsIkFycm93UmlnaHQiXSxbdG0sSU8sTk9dPW13KGduKSxbUXUsSzNdPUZvKGduLFtOTyx3U10pLG5tPXdTKCksVFM9Ri5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7dHlwZTpuLC4uLnJ9PWUsaT1yLG89cjtyZXR1cm4gZy5qc3godG0uUHJvdmlkZXIse3Njb3BlOmUuX19zY29wZUFjY29yZGlvbixjaGlsZHJlbjpuPT09Im11bHRpcGxlIj9nLmpzeChETyx7Li4ubyxyZWY6dH0pOmcuanN4KFJPLHsuLi5pLHJlZjp0fSl9KX0pO1RTLmRpc3BsYXlOYW1lPWduO3ZhcltFUyxqT109UXUoZ24pLFtQUyx6T109UXUoZ24se2NvbGxhcHNpYmxlOiExfSksUk89Ri5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7dmFsdWU6bixkZWZhdWx0VmFsdWU6cixvblZhbHVlQ2hhbmdlOmk9KCk9Pnt9LGNvbGxhcHNpYmxlOm89ITEsLi4uc309ZSxbYSxsXT1MdSh7cHJvcDpuLGRlZmF1bHRQcm9wOnI\/PyIiLG9uQ2hhbmdlOmksY2FsbGVyOmdufSk7cmV0dXJuIGcuanN4KEVTLHtzY29wZTplLl9fc2NvcGVBY2NvcmRpb24sdmFsdWU6Ri51c2VNZW1vKCgpPT5hP1thXTpbXSxbYV0pLG9uSXRlbU9wZW46bCxvbkl0ZW1DbG9zZTpGLnVzZUNhbGxiYWNrKCgpPT5vJiZsKCIiKSxbbyxsXSksY2hpbGRyZW46Zy5qc3goUFMse3Njb3BlOmUuX19zY29wZUFjY29yZGlvbixjb2xsYXBzaWJsZTpvLGNoaWxkcmVuOmcuanN4KEFTLHsuLi5zLHJlZjp0fSl9KX0pfSksRE89Ri5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7dmFsdWU6bixkZWZhdWx0VmFsdWU6cixvblZhbHVlQ2hhbmdlOmk9KCk9Pnt9LC4uLm99PWUsW3MsYV09THUoe3Byb3A6bixkZWZhdWx0UHJvcDpyPz9bXSxvbkNoYW5nZTppLGNhbGxlcjpnbn0pLGw9Ri51c2VDYWxsYmFjayhjPT5hKChkPVtdKT0+Wy4uLmQsY10pLFthXSksdT1GLnVzZUNhbGxiYWNrKGM9PmEoKGQ9W10pPT5kLmZpbHRlcihoPT5oIT09YykpLFthXSk7cmV0dXJuIGcuanN4KEVTLHtzY29wZTplLl9fc2NvcGVBY2NvcmRpb24sdmFsdWU6cyxvbkl0ZW1PcGVuOmwsb25JdGVtQ2xvc2U6dSxjaGlsZHJlbjpnLmpzeChQUyx7c2NvcGU6ZS5fX3Njb3BlQWNjb3JkaW9uLGNvbGxhcHNpYmxlOiEwLGNoaWxkcmVuOmcuanN4KEFTLHsuLi5vLHJlZjp0fSl9KX0pfSksW01PLFh1XT1RdShnbiksQVM9Ri5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZUFjY29yZGlvbjpuLGRpc2FibGVkOnIsZGlyOmksb3JpZW50YXRpb246bz0idmVydGljYWwiLC4uLnN9PWUsYT1GLnVzZVJlZihudWxsKSxsPU10KGEsdCksdT1JTyhuKSxkPVBPKGkpPT09Imx0ciIsaD1SZShlLm9uS2V5RG93bixmPT57dmFyIEE7aWYoIUFPLmluY2x1ZGVzKGYua2V5KSlyZXR1cm47Y29uc3QgeT1mLnRhcmdldCxtPXUoKS5maWx0ZXIoaj0+e3ZhciBJO3JldHVybiEoKEk9ai5yZWYuY3VycmVudCkhPW51bGwmJkkuZGlzYWJsZWQpfSksdz1tLmZpbmRJbmRleChqPT5qLnJlZi5jdXJyZW50PT09eSkscD1tLmxlbmd0aDtpZih3PT09LTEpcmV0dXJuO2YucHJldmVudERlZmF1bHQoKTtsZXQgdj13O2NvbnN0IHg9MCxrPXAtMSxUPSgpPT57dj13KzEsdj5rJiYodj14KX0sQz0oKT0+e3Y9dy0xLHY8eCYmKHY9ayl9O3N3aXRjaChmLmtleSl7Y2FzZSJIb21lIjp2PXg7YnJlYWs7Y2FzZSJFbmQiOnY9azticmVhaztjYXNlIkFycm93UmlnaHQiOm89PT0iaG9yaXpvbnRhbCImJihkP1QoKTpDKCkpO2JyZWFrO2Nhc2UiQXJyb3dEb3duIjpvPT09InZlcnRpY2FsIiYmVCgpO2JyZWFrO2Nhc2UiQXJyb3dMZWZ0IjpvPT09Imhvcml6b250YWwiJiYoZD9DKCk6VCgpKTticmVhaztjYXNlIkFycm93VXAiOm89PT0idmVydGljYWwiJiZDKCk7YnJlYWt9Y29uc3QgUD12JXA7KEE9bVtQXS5yZWYuY3VycmVudCk9PW51bGx8fEEuZm9jdXMoKX0pO3JldHVybiBnLmpzeChNTyx7c2NvcGU6bixkaXNhYmxlZDpyLGRpcmVjdGlvbjppLG9yaWVudGF0aW9uOm8sY2hpbGRyZW46Zy5qc3godG0uU2xvdCx7c2NvcGU6bixjaGlsZHJlbjpnLmpzeChVZS5kaXYsey4uLnMsImRhdGEtb3JpZW50YXRpb24iOm8scmVmOmwsb25LZXlEb3duOnI\/dm9pZCAwOmh9KX0pfSl9KSxmdT0iQWNjb3JkaW9uSXRlbSIsW0xPLHJtXT1RdShmdSksSVM9Ri5mb3J3YXJkUmVmKChlLHQpPT57Y29uc3R7X19zY29wZUFjY29yZGlvbjpuLHZhbHVlOnIsLi4uaX09ZSxvPVh1KGZ1LG4pLHM9ak8oZnUsbiksYT1ubShuKSxsPWViKCksdT1yJiZzLnZhbHVlLmluY2x1ZGVzKHIpfHwhMSxjPW8uZGlzYWJsZWR8fGUuZGlzYWJsZWQ7cmV0dXJuIGcuanN4KExPLHtzY29wZTpuLG9wZW46dSxkaXNhYmxlZDpjLHRyaWdnZXJJZDpsLGNoaWxkcmVuOmcuanN4KFNPLHsiZGF0YS1vcmllbnRhdGlvbiI6by5vcmllbnRhdGlvbiwiZGF0YS1zdGF0ZSI6TVModSksLi4uYSwuLi5pLHJlZjp0LGRpc2FibGVkOmMsb3Blbjp1LG9uT3BlbkNoYW5nZTpkPT57ZD9zLm9uSXRlbU9wZW4ocik6cy5vbkl0ZW1DbG9zZShyKX19KX0pfSk7SVMuZGlzcGxheU5hbWU9ZnU7dmFyIE5TPSJBY2NvcmRpb25IZWFkZXIiLGpTPUYuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVBY2NvcmRpb246biwuLi5yfT1lLGk9WHUoZ24sbiksbz1ybShOUyxuKTtyZXR1cm4gZy5qc3goVWUuaDMseyJkYXRhLW9yaWVudGF0aW9uIjppLm9yaWVudGF0aW9uLCJkYXRhLXN0YXRlIjpNUyhvLm9wZW4pLCJkYXRhLWRpc2FibGVkIjpvLmRpc2FibGVkPyIiOnZvaWQgMCwuLi5yLHJlZjp0fSl9KTtqUy5kaXNwbGF5TmFtZT1OUzt2YXIgR2Y9IkFjY29yZGlvblRyaWdnZXIiLHpTPUYuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVBY2NvcmRpb246biwuLi5yfT1lLGk9WHUoZ24sbiksbz1ybShHZixuKSxzPXpPKEdmLG4pLGE9bm0obik7cmV0dXJuIGcuanN4KHRtLkl0ZW1TbG90LHtzY29wZTpuLGNoaWxkcmVuOmcuanN4KENPLHsiYXJpYS1kaXNhYmxlZCI6by5vcGVuJiYhcy5jb2xsYXBzaWJsZXx8dm9pZCAwLCJkYXRhLW9yaWVudGF0aW9uIjppLm9yaWVudGF0aW9uLGlkOm8udHJpZ2dlcklkLC4uLmEsLi4ucixyZWY6dH0pfSl9KTt6Uy5kaXNwbGF5TmFtZT1HZjt2YXIgUlM9IkFjY29yZGlvbkNvbnRlbnQiLERTPUYuZm9yd2FyZFJlZigoZSx0KT0+e2NvbnN0e19fc2NvcGVBY2NvcmRpb246biwuLi5yfT1lLGk9WHUoZ24sbiksbz1ybShSUyxuKSxzPW5tKG4pO3JldHVybiBnLmpzeChUTyx7cm9sZToicmVnaW9uIiwiYXJpYS1sYWJlbGxlZGJ5IjpvLnRyaWdnZXJJZCwiZGF0YS1vcmllbnRhdGlvbiI6aS5vcmllbnRhdGlvbiwuLi5zLC4uLnIscmVmOnQsc3R5bGU6eyItLXJhZGl4LWFjY29yZGlvbi1jb250ZW50LWhlaWdodCI6InZhcigtLXJhZGl4LWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KSIsIi0tcmFkaXgtYWNjb3JkaW9uLWNvbnRlbnQtd2lkdGgiOiJ2YXIoLS1yYWRpeC1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoKSIsLi4uZS5zdHlsZX19KX0pO0RTLmRpc3BsYXlOYW1lPVJTO2Z1bmN0aW9uIE1TKGUpe3JldHVybiBlPyJvcGVuIjoiY2xvc2VkIn12YXIgT089VFMsRk89SVMsX089alMsTFM9elMsT1M9RFM7Y29uc3QgVk89T08sRlM9Yi5mb3J3YXJkUmVmKCh7Y2xhc3NOYW1lOmUsLi4udH0sbik9PmcuanN4KEZPLHtyZWY6bixjbGFzc05hbWU6T24oImJvcmRlci1iIixlKSwuLi50fSkpO0ZTLmRpc3BsYXlOYW1lPSJBY2NvcmRpb25JdGVtIjtjb25zdCBfUz1iLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSxjaGlsZHJlbjp0LC4uLm59LHIpPT5nLmpzeChfTyx7Y2xhc3NOYW1lOiJmbGV4IixjaGlsZHJlbjpnLmpzeHMoTFMse3JlZjpyLGNsYXNzTmFtZTpPbigiZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweS00IGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tYWxsIGhvdmVyOnVuZGVybGluZSBbJltkYXRhLXN0YXRlPW9wZW5dPnN2Z106cm90YXRlLTE4MCIsZSksLi4ubixjaGlsZHJlbjpbdCxnLmpzeCh0SSx7Y2xhc3NOYW1lOiJoLTQgdy00IHNocmluay0wIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTIwMCJ9KV19KX0pKTtfUy5kaXNwbGF5TmFtZT1MUy5kaXNwbGF5TmFtZTtjb25zdCBWUz1iLmZvcndhcmRSZWYoKHtjbGFzc05hbWU6ZSxjaGlsZHJlbjp0LC4uLm59LHIpPT5nLmpzeChPUyx7cmVmOnIsY2xhc3NOYW1lOiJvdmVyZmxvdy1oaWRkZW4gdGV4dC1zbSB0cmFuc2l0aW9uLWFsbCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtYWNjb3JkaW9uLXVwIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtYWNjb3JkaW9uLWRvd24iLC4uLm4sY2hpbGRyZW46Zy5qc3goImRpdiIse2NsYXNzTmFtZTpPbigicGItNCBwdC0wIixlKSxjaGlsZHJlbjp0fSl9KSk7VlMuZGlzcGxheU5hbWU9T1MuZGlzcGxheU5hbWU7Y29uc3QgQk89KCk9Pntjb25zdHt0OmV9PV9uKCk7cmV0dXJuIGcuanN4cygic2VjdGlvbiIse2lkOiJmYXEiLCJhcmlhLWxhYmVsIjoiRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMiLGNsYXNzTmFtZToicmVsYXRpdmUgcHktMjQgbWQ6cHktMzIgYmctc2Vjb25kYXJ5LzUwIG92ZXJmbG93LWhpZGRlbiIsY2hpbGRyZW46W2cuanN4KFlyLHtjb3VudDo4fSksZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImNvbnRhaW5lciBtYXgtdy0zeGwgcmVsYXRpdmUiLGNoaWxkcmVuOltnLmpzeHMoSy5kaXYse2luaXRpYWw6e29wYWNpdHk6MCx5OjIwfSx3aGlsZUluVmlldzp7b3BhY2l0eToxLHk6MH0sdmlld3BvcnQ6e29uY2U6ITB9LGNsYXNzTmFtZToidGV4dC1jZW50ZXIgbWItMTIiLGNoaWxkcmVuOltnLmpzeHMoSy5zcGFuLHtjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1wcmltYXJ5LzIwIGJnLXByaW1hcnkvNSBweC00IHB5LTEuNSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1wcmltYXJ5IGJhY2tkcm9wLWJsdXItbWQgbWItNSIsY2hpbGRyZW46W2cuanN4KHdpLHtzaXplOjE0fSksZS5mYXEuYmFkZ2VdfSksZy5qc3goImgyIix7Y2xhc3NOYW1lOiJmb250LWRpc3BsYXkgdGV4dC0zeGwgbWQ6dGV4dC01eGwgZm9udC1ib2xkIHRleHQtZm9yZWdyb3VuZCBtYi00IixjaGlsZHJlbjplLmZhcS50aXRsZX0pLGcuanN4KCJwIix7Y2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1sZyB0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOmUuZmFxLmRlc2NyaXB0aW9ufSldfSksZy5qc3goVk8se3R5cGU6InNpbmdsZSIsY29sbGFwc2libGU6ITAsY2xhc3NOYW1lOiJzcGFjZS15LTMiLGNoaWxkcmVuOmUuZmFxLml0ZW1zLm1hcCgodCxuKT0+Zy5qc3goSy5kaXYse2luaXRpYWw6e29wYWNpdHk6MCx4Oi0yMH0sd2hpbGVJblZpZXc6e29wYWNpdHk6MSx4OjB9LHZpZXdwb3J0OntvbmNlOiEwfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouNCxkZWxheTpuKi4wOH0sY2hpbGRyZW46Zy5qc3hzKEZTLHt2YWx1ZTpgZmFxLSR7bn1gLGNsYXNzTmFtZToicm91bmRlZC14bCBiZy1jYXJkIGJvcmRlciBib3JkZXItYm9yZGVyIHB4LTYgc2hhZG93LVt2YXIoLS1jYXJkLXNoYWRvdyldIGhvdmVyOnNoYWRvdy1bdmFyKC0tY2FyZC1ob3Zlci1zaGFkb3cpXSBob3Zlcjpib3JkZXItcHJpbWFyeS8yMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAiLGNoaWxkcmVuOltnLmpzeChfUyx7Y2xhc3NOYW1lOiJmb250LWRpc3BsYXkgdGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtY2FyZC1mb3JlZ3JvdW5kIGhvdmVyOm5vLXVuZGVybGluZSBweS01IixjaGlsZHJlbjp0LnF9KSxnLmpzeChWUyx7Y2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGxlYWRpbmctcmVsYXhlZCBwYi01IixjaGlsZHJlbjp0LmF9KV19KX0sbikpfSldfSldfSl9LFVPPSgpPT57Y29uc3R7dDplfT1fbigpO3JldHVybiBnLmpzeCgiZm9vdGVyIix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSBib3JkZXItdCBib3JkZXItYm9yZGVyIHB5LTE2IG92ZXJmbG93LWhpZGRlbiIsY2hpbGRyZW46Zy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImNvbnRhaW5lciByZWxhdGl2ZSIsY2hpbGRyZW46W2cuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTgiLGNoaWxkcmVuOltnLmpzeHMoSy5kaXYse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMiLHdoaWxlSG92ZXI6e3NjYWxlOjEuMDJ9LGNoaWxkcmVuOltnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSIsY2hpbGRyZW46Zy5qc3goImltZyIse3NyYzp5UyxhbHQ6IlNoYWhyemFkIixjbGFzc05hbWU6ImgtMTAgdy0xMCByb3VuZGVkLWZ1bGwgb2JqZWN0LWNvdmVyIHJpbmctMiByaW5nLXByaW1hcnkvMjAifSl9KSxnLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQteGwgZm9udC1ib2xkIHRleHQtZm9yZWdyb3VuZCIsY2hpbGRyZW46IlNoYWhyemFkIn0pLGcuanN4KHdpLHtzaXplOjE0LGNsYXNzTmFtZToidGV4dC1hY2NlbnQifSldfSksZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC00IixjaGlsZHJlbjpbZy5qc3goSy5hLHtocmVmOiJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM\/aWQ9Y29tLnNoYWhyemFkLnNoYWhyemFkX2FwcCIsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsd2hpbGVIb3Zlcjp7c2NhbGU6MS4wNSx5Oi0yfSxjbGFzc05hbWU6InRyYW5zaXRpb24tc2hhZG93IGhvdmVyOnNoYWRvdy1tZCByb3VuZGVkLWxnIixjaGlsZHJlbjpnLmpzeCgiaW1nIix7c3JjOnZTLGFsdDoiR29vZ2xlIFBsYXkiLGNsYXNzTmFtZToiaC0xMCJ9KX0pLGcuanN4KEsuYSx7aHJlZjoiaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS9hcHAvaWQxNTc3NzMxMDg2Iix0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIix3aGlsZUhvdmVyOntzY2FsZToxLjA1LHk6LTJ9LGNsYXNzTmFtZToidHJhbnNpdGlvbi1zaGFkb3cgaG92ZXI6c2hhZG93LW1kIHJvdW5kZWQtbGciLGNoaWxkcmVuOmcuanN4KCJpbWciLHtzcmM6eFMsYWx0OiJBcHAgU3RvcmUiLGNsYXNzTmFtZToiaC0xMCJ9KX0pXX0pXX0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJtdC0xMCBwdC04IGJvcmRlci10IGJvcmRlci1ib3JkZXIgZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00IixjaGlsZHJlbjpbZy5qc3goInAiLHtjbGFzc05hbWU6ImZvbnQtYm9keSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCIsY2hpbGRyZW46ZS5mb290ZXIuY29weXJpZ2h0LnJlcGxhY2UoInt5ZWFyfSIsbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkpfSksZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC02IixjaGlsZHJlbjpbZy5qc3goUXMse3RvOiIvcHJpdmFjeS1wb2xpY3kiLGNsYXNzTmFtZToiZm9udC1ib2R5IHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9ycyIsY2hpbGRyZW46ZS5mb290ZXIucHJpdmFjeX0pLGcuanN4KFFzLHt0bzoiL3Rlcm1zLW9mLXVzZSIsY2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIixjaGlsZHJlbjplLmZvb3Rlci50ZXJtc30pXX0pXX0pXX0pfSl9O2Z1bmN0aW9uICRPKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4oZVtlLmxlbmd0aC0xXT09PSIiP1suLi5lLCIiXTplKS5qb2luKChuLnBhZFJpZ2h0PyIgIjoiIikrIiwiKyhuLnBhZExlZnQ9PT0hMT8iIjoiICIpKS50cmltKCl9Y29uc3QgSE89L15bJF9ccHtJRF9TdGFydH1dWyRfXHV7MjAwQ31cdXsyMDBEfVxwe0lEX0NvbnRpbnVlfV0qJC91LHFPPS9eWyRfXHB7SURfU3RhcnR9XVstJF9cdXsyMDBDfVx1ezIwMER9XHB7SURfQ29udGludWV9XSokL3UsV089e307ZnVuY3Rpb24gTXYoZSx0KXtyZXR1cm4oV08uanN4P3FPOkhPKS50ZXN0KGUpfWNvbnN0IEtPPS9bIFx0XG5cZlxyXS9nO2Z1bmN0aW9uIEdPKGUpe3JldHVybiB0eXBlb2YgZT09Im9iamVjdCI\/ZS50eXBlPT09InRleHQiP0x2KGUudmFsdWUpOiExOkx2KGUpfWZ1bmN0aW9uIEx2KGUpe3JldHVybiBlLnJlcGxhY2UoS08sIiIpPT09IiJ9Y2xhc3MgYmF7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMubm9ybWFsPW4sdGhpcy5wcm9wZXJ0eT10LHImJih0aGlzLnNwYWNlPXIpfX1iYS5wcm90b3R5cGUubm9ybWFsPXt9O2JhLnByb3RvdHlwZS5wcm9wZXJ0eT17fTtiYS5wcm90b3R5cGUuc3BhY2U9dm9pZCAwO2Z1bmN0aW9uIEJTKGUsdCl7Y29uc3Qgbj17fSxyPXt9O2Zvcihjb25zdCBpIG9mIGUpT2JqZWN0LmFzc2lnbihuLGkucHJvcGVydHkpLE9iamVjdC5hc3NpZ24ocixpLm5vcm1hbCk7cmV0dXJuIG5ldyBiYShuLHIsdCl9ZnVuY3Rpb24gWWYoZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX1jbGFzcyBTdHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuYXR0cmlidXRlPW4sdGhpcy5wcm9wZXJ0eT10fX1TdC5wcm90b3R5cGUuYXR0cmlidXRlPSIiO1N0LnByb3RvdHlwZS5ib29sZWFuaXNoPSExO1N0LnByb3RvdHlwZS5ib29sZWFuPSExO1N0LnByb3RvdHlwZS5jb21tYU9yU3BhY2VTZXBhcmF0ZWQ9ITE7U3QucHJvdG90eXBlLmNvbW1hU2VwYXJhdGVkPSExO1N0LnByb3RvdHlwZS5kZWZpbmVkPSExO1N0LnByb3RvdHlwZS5tdXN0VXNlUHJvcGVydHk9ITE7U3QucHJvdG90eXBlLm51bWJlcj0hMTtTdC5wcm90b3R5cGUub3ZlcmxvYWRlZEJvb2xlYW49ITE7U3QucHJvdG90eXBlLnByb3BlcnR5PSIiO1N0LnByb3RvdHlwZS5zcGFjZVNlcGFyYXRlZD0hMTtTdC5wcm90b3R5cGUuc3BhY2U9dm9pZCAwO2xldCBZTz0wO2NvbnN0IHJlPVJpKCksTWU9UmkoKSxRZj1SaSgpLFY9UmkoKSxtZT1SaSgpLGZvPVJpKCksUHQ9UmkoKTtmdW5jdGlvbiBSaSgpe3JldHVybiAyKiorK1lPfWNvbnN0IFhmPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxib29sZWFuOnJlLGJvb2xlYW5pc2g6TWUsY29tbWFPclNwYWNlU2VwYXJhdGVkOlB0LGNvbW1hU2VwYXJhdGVkOmZvLG51bWJlcjpWLG92ZXJsb2FkZWRCb29sZWFuOlFmLHNwYWNlU2VwYXJhdGVkOm1lfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGlkPU9iamVjdC5rZXlzKFhmKTtjbGFzcyBpbSBleHRlbmRzIFN0e2NvbnN0cnVjdG9yKHQsbixyLGkpe2xldCBvPS0xO2lmKHN1cGVyKHQsbiksT3YodGhpcywic3BhY2UiLGkpLHR5cGVvZiByPT0ibnVtYmVyIilmb3IoOysrbzxpZC5sZW5ndGg7KXtjb25zdCBzPWlkW29dO092KHRoaXMsaWRbb10sKHImWGZbc10pPT09WGZbc10pfX19aW0ucHJvdG90eXBlLmRlZmluZWQ9ITA7ZnVuY3Rpb24gT3YoZSx0LG4pe24mJihlW3RdPW4pfWZ1bmN0aW9uIHFvKGUpe2NvbnN0IHQ9e30sbj17fTtmb3IoY29uc3RbcixpXW9mIE9iamVjdC5lbnRyaWVzKGUucHJvcGVydGllcykpe2NvbnN0IG89bmV3IGltKHIsZS50cmFuc2Zvcm0oZS5hdHRyaWJ1dGVzfHx7fSxyKSxpLGUuc3BhY2UpO2UubXVzdFVzZVByb3BlcnR5JiZlLm11c3RVc2VQcm9wZXJ0eS5pbmNsdWRlcyhyKSYmKG8ubXVzdFVzZVByb3BlcnR5PSEwKSx0W3JdPW8sbltZZihyKV09cixuW1lmKG8uYXR0cmlidXRlKV09cn1yZXR1cm4gbmV3IGJhKHQsbixlLnNwYWNlKX1jb25zdCBVUz1xbyh7cHJvcGVydGllczp7YXJpYUFjdGl2ZURlc2NlbmRhbnQ6bnVsbCxhcmlhQXRvbWljOk1lLGFyaWFBdXRvQ29tcGxldGU6bnVsbCxhcmlhQnVzeTpNZSxhcmlhQ2hlY2tlZDpNZSxhcmlhQ29sQ291bnQ6VixhcmlhQ29sSW5kZXg6VixhcmlhQ29sU3BhbjpWLGFyaWFDb250cm9sczptZSxhcmlhQ3VycmVudDpudWxsLGFyaWFEZXNjcmliZWRCeTptZSxhcmlhRGV0YWlsczpudWxsLGFyaWFEaXNhYmxlZDpNZSxhcmlhRHJvcEVmZmVjdDptZSxhcmlhRXJyb3JNZXNzYWdlOm51bGwsYXJpYUV4cGFuZGVkOk1lLGFyaWFGbG93VG86bWUsYXJpYUdyYWJiZWQ6TWUsYXJpYUhhc1BvcHVwOm51bGwsYXJpYUhpZGRlbjpNZSxhcmlhSW52YWxpZDpudWxsLGFyaWFLZXlTaG9ydGN1dHM6bnVsbCxhcmlhTGFiZWw6bnVsbCxhcmlhTGFiZWxsZWRCeTptZSxhcmlhTGV2ZWw6VixhcmlhTGl2ZTpudWxsLGFyaWFNb2RhbDpNZSxhcmlhTXVsdGlMaW5lOk1lLGFyaWFNdWx0aVNlbGVjdGFibGU6TWUsYXJpYU9yaWVudGF0aW9uOm51bGwsYXJpYU93bnM6bWUsYXJpYVBsYWNlaG9sZGVyOm51bGwsYXJpYVBvc0luU2V0OlYsYXJpYVByZXNzZWQ6TWUsYXJpYVJlYWRPbmx5Ok1lLGFyaWFSZWxldmFudDpudWxsLGFyaWFSZXF1aXJlZDpNZSxhcmlhUm9sZURlc2NyaXB0aW9uOm1lLGFyaWFSb3dDb3VudDpWLGFyaWFSb3dJbmRleDpWLGFyaWFSb3dTcGFuOlYsYXJpYVNlbGVjdGVkOk1lLGFyaWFTZXRTaXplOlYsYXJpYVNvcnQ6bnVsbCxhcmlhVmFsdWVNYXg6VixhcmlhVmFsdWVNaW46VixhcmlhVmFsdWVOb3c6VixhcmlhVmFsdWVUZXh0Om51bGwscm9sZTpudWxsfSx0cmFuc2Zvcm0oZSx0KXtyZXR1cm4gdD09PSJyb2xlIj90OiJhcmlhLSIrdC5zbGljZSg0KS50b0xvd2VyQ2FzZSgpfX0pO2Z1bmN0aW9uICRTKGUsdCl7cmV0dXJuIHQgaW4gZT9lW3RdOnR9ZnVuY3Rpb24gSFMoZSx0KXtyZXR1cm4gJFMoZSx0LnRvTG93ZXJDYXNlKCkpfWNvbnN0IFFPPXFvKHthdHRyaWJ1dGVzOnthY2NlcHRjaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NuYW1lOiJjbGFzcyIsaHRtbGZvcjoiZm9yIixodHRwZXF1aXY6Imh0dHAtZXF1aXYifSxtdXN0VXNlUHJvcGVydHk6WyJjaGVja2VkIiwibXVsdGlwbGUiLCJtdXRlZCIsInNlbGVjdGVkIl0scHJvcGVydGllczp7YWJicjpudWxsLGFjY2VwdDpmbyxhY2NlcHRDaGFyc2V0Om1lLGFjY2Vzc0tleTptZSxhY3Rpb246bnVsbCxhbGxvdzpudWxsLGFsbG93RnVsbFNjcmVlbjpyZSxhbGxvd1BheW1lbnRSZXF1ZXN0OnJlLGFsbG93VXNlck1lZGlhOnJlLGFsdDpudWxsLGFzOm51bGwsYXN5bmM6cmUsYXV0b0NhcGl0YWxpemU6bnVsbCxhdXRvQ29tcGxldGU6bWUsYXV0b0ZvY3VzOnJlLGF1dG9QbGF5OnJlLGJsb2NraW5nOm1lLGNhcHR1cmU6bnVsbCxjaGFyU2V0Om51bGwsY2hlY2tlZDpyZSxjaXRlOm51bGwsY2xhc3NOYW1lOm1lLGNvbHM6Vixjb2xTcGFuOm51bGwsY29udGVudDpudWxsLGNvbnRlbnRFZGl0YWJsZTpNZSxjb250cm9sczpyZSxjb250cm9sc0xpc3Q6bWUsY29vcmRzOlZ8Zm8sY3Jvc3NPcmlnaW46bnVsbCxkYXRhOm51bGwsZGF0ZVRpbWU6bnVsbCxkZWNvZGluZzpudWxsLGRlZmF1bHQ6cmUsZGVmZXI6cmUsZGlyOm51bGwsZGlyTmFtZTpudWxsLGRpc2FibGVkOnJlLGRvd25sb2FkOlFmLGRyYWdnYWJsZTpNZSxlbmNUeXBlOm51bGwsZW50ZXJLZXlIaW50Om51bGwsZmV0Y2hQcmlvcml0eTpudWxsLGZvcm06bnVsbCxmb3JtQWN0aW9uOm51bGwsZm9ybUVuY1R5cGU6bnVsbCxmb3JtTWV0aG9kOm51bGwsZm9ybU5vVmFsaWRhdGU6cmUsZm9ybVRhcmdldDpudWxsLGhlYWRlcnM6bWUsaGVpZ2h0OlYsaGlkZGVuOlFmLGhpZ2g6VixocmVmOm51bGwsaHJlZkxhbmc6bnVsbCxodG1sRm9yOm1lLGh0dHBFcXVpdjptZSxpZDpudWxsLGltYWdlU2l6ZXM6bnVsbCxpbWFnZVNyY1NldDpudWxsLGluZXJ0OnJlLGlucHV0TW9kZTpudWxsLGludGVncml0eTpudWxsLGlzOm51bGwsaXNNYXA6cmUsaXRlbUlkOm51bGwsaXRlbVByb3A6bWUsaXRlbVJlZjptZSxpdGVtU2NvcGU6cmUsaXRlbVR5cGU6bWUsa2luZDpudWxsLGxhYmVsOm51bGwsbGFuZzpudWxsLGxhbmd1YWdlOm51bGwsbGlzdDpudWxsLGxvYWRpbmc6bnVsbCxsb29wOnJlLGxvdzpWLG1hbmlmZXN0Om51bGwsbWF4Om51bGwsbWF4TGVuZ3RoOlYsbWVkaWE6bnVsbCxtZXRob2Q6bnVsbCxtaW46bnVsbCxtaW5MZW5ndGg6VixtdWx0aXBsZTpyZSxtdXRlZDpyZSxuYW1lOm51bGwsbm9uY2U6bnVsbCxub01vZHVsZTpyZSxub1ZhbGlkYXRlOnJlLG9uQWJvcnQ6bnVsbCxvbkFmdGVyUHJpbnQ6bnVsbCxvbkF1eENsaWNrOm51bGwsb25CZWZvcmVNYXRjaDpudWxsLG9uQmVmb3JlUHJpbnQ6bnVsbCxvbkJlZm9yZVRvZ2dsZTpudWxsLG9uQmVmb3JlVW5sb2FkOm51bGwsb25CbHVyOm51bGwsb25DYW5jZWw6bnVsbCxvbkNhblBsYXk6bnVsbCxvbkNhblBsYXlUaHJvdWdoOm51bGwsb25DaGFuZ2U6bnVsbCxvbkNsaWNrOm51bGwsb25DbG9zZTpudWxsLG9uQ29udGV4dExvc3Q6bnVsbCxvbkNvbnRleHRNZW51Om51bGwsb25Db250ZXh0UmVzdG9yZWQ6bnVsbCxvbkNvcHk6bnVsbCxvbkN1ZUNoYW5nZTpudWxsLG9uQ3V0Om51bGwsb25EYmxDbGljazpudWxsLG9uRHJhZzpudWxsLG9uRHJhZ0VuZDpudWxsLG9uRHJhZ0VudGVyOm51bGwsb25EcmFnRXhpdDpudWxsLG9uRHJhZ0xlYXZlOm51bGwsb25EcmFnT3ZlcjpudWxsLG9uRHJhZ1N0YXJ0Om51bGwsb25Ecm9wOm51bGwsb25EdXJhdGlvbkNoYW5nZTpudWxsLG9uRW1wdGllZDpudWxsLG9uRW5kZWQ6bnVsbCxvbkVycm9yOm51bGwsb25Gb2N1czpudWxsLG9uRm9ybURhdGE6bnVsbCxvbkhhc2hDaGFuZ2U6bnVsbCxvbklucHV0Om51bGwsb25JbnZhbGlkOm51bGwsb25LZXlEb3duOm51bGwsb25LZXlQcmVzczpudWxsLG9uS2V5VXA6bnVsbCxvbkxhbmd1YWdlQ2hhbmdlOm51bGwsb25Mb2FkOm51bGwsb25Mb2FkZWREYXRhOm51bGwsb25Mb2FkZWRNZXRhZGF0YTpudWxsLG9uTG9hZEVuZDpudWxsLG9uTG9hZFN0YXJ0Om51bGwsb25NZXNzYWdlOm51bGwsb25NZXNzYWdlRXJyb3I6bnVsbCxvbk1vdXNlRG93bjpudWxsLG9uTW91c2VFbnRlcjpudWxsLG9uTW91c2VMZWF2ZTpudWxsLG9uTW91c2VNb3ZlOm51bGwsb25Nb3VzZU91dDpudWxsLG9uTW91c2VPdmVyOm51bGwsb25Nb3VzZVVwOm51bGwsb25PZmZsaW5lOm51bGwsb25PbmxpbmU6bnVsbCxvblBhZ2VIaWRlOm51bGwsb25QYWdlU2hvdzpudWxsLG9uUGFzdGU6bnVsbCxvblBhdXNlOm51bGwsb25QbGF5Om51bGwsb25QbGF5aW5nOm51bGwsb25Qb3BTdGF0ZTpudWxsLG9uUHJvZ3Jlc3M6bnVsbCxvblJhdGVDaGFuZ2U6bnVsbCxvblJlamVjdGlvbkhhbmRsZWQ6bnVsbCxvblJlc2V0Om51bGwsb25SZXNpemU6bnVsbCxvblNjcm9sbDpudWxsLG9uU2Nyb2xsRW5kOm51bGwsb25TZWN1cml0eVBvbGljeVZpb2xhdGlvbjpudWxsLG9uU2Vla2VkOm51bGwsb25TZWVraW5nOm51bGwsb25TZWxlY3Q6bnVsbCxvblNsb3RDaGFuZ2U6bnVsbCxvblN0YWxsZWQ6bnVsbCxvblN0b3JhZ2U6bnVsbCxvblN1Ym1pdDpudWxsLG9uU3VzcGVuZDpudWxsLG9uVGltZVVwZGF0ZTpudWxsLG9uVG9nZ2xlOm51bGwsb25VbmhhbmRsZWRSZWplY3Rpb246bnVsbCxvblVubG9hZDpudWxsLG9uVm9sdW1lQ2hhbmdlOm51bGwsb25XYWl0aW5nOm51bGwsb25XaGVlbDpudWxsLG9wZW46cmUsb3B0aW11bTpWLHBhdHRlcm46bnVsbCxwaW5nOm1lLHBsYWNlaG9sZGVyOm51bGwscGxheXNJbmxpbmU6cmUscG9wb3ZlcjpudWxsLHBvcG92ZXJUYXJnZXQ6bnVsbCxwb3BvdmVyVGFyZ2V0QWN0aW9uOm51bGwscG9zdGVyOm51bGwscHJlbG9hZDpudWxsLHJlYWRPbmx5OnJlLHJlZmVycmVyUG9saWN5Om51bGwscmVsOm1lLHJlcXVpcmVkOnJlLHJldmVyc2VkOnJlLHJvd3M6Vixyb3dTcGFuOlYsc2FuZGJveDptZSxzY29wZTpudWxsLHNjb3BlZDpyZSxzZWFtbGVzczpyZSxzZWxlY3RlZDpyZSxzaGFkb3dSb290Q2xvbmFibGU6cmUsc2hhZG93Um9vdERlbGVnYXRlc0ZvY3VzOnJlLHNoYWRvd1Jvb3RNb2RlOm51bGwsc2hhcGU6bnVsbCxzaXplOlYsc2l6ZXM6bnVsbCxzbG90Om51bGwsc3BhbjpWLHNwZWxsQ2hlY2s6TWUsc3JjOm51bGwsc3JjRG9jOm51bGwsc3JjTGFuZzpudWxsLHNyY1NldDpudWxsLHN0YXJ0OlYsc3RlcDpudWxsLHN0eWxlOm51bGwsdGFiSW5kZXg6Vix0YXJnZXQ6bnVsbCx0aXRsZTpudWxsLHRyYW5zbGF0ZTpudWxsLHR5cGU6bnVsbCx0eXBlTXVzdE1hdGNoOnJlLHVzZU1hcDpudWxsLHZhbHVlOk1lLHdpZHRoOlYsd3JhcDpudWxsLHdyaXRpbmdTdWdnZXN0aW9uczpudWxsLGFsaWduOm51bGwsYUxpbms6bnVsbCxhcmNoaXZlOm1lLGF4aXM6bnVsbCxiYWNrZ3JvdW5kOm51bGwsYmdDb2xvcjpudWxsLGJvcmRlcjpWLGJvcmRlckNvbG9yOm51bGwsYm90dG9tTWFyZ2luOlYsY2VsbFBhZGRpbmc6bnVsbCxjZWxsU3BhY2luZzpudWxsLGNoYXI6bnVsbCxjaGFyT2ZmOm51bGwsY2xhc3NJZDpudWxsLGNsZWFyOm51bGwsY29kZTpudWxsLGNvZGVCYXNlOm51bGwsY29kZVR5cGU6bnVsbCxjb2xvcjpudWxsLGNvbXBhY3Q6cmUsZGVjbGFyZTpyZSxldmVudDpudWxsLGZhY2U6bnVsbCxmcmFtZTpudWxsLGZyYW1lQm9yZGVyOm51bGwsaFNwYWNlOlYsbGVmdE1hcmdpbjpWLGxpbms6bnVsbCxsb25nRGVzYzpudWxsLGxvd1NyYzpudWxsLG1hcmdpbkhlaWdodDpWLG1hcmdpbldpZHRoOlYsbm9SZXNpemU6cmUsbm9IcmVmOnJlLG5vU2hhZGU6cmUsbm9XcmFwOnJlLG9iamVjdDpudWxsLHByb2ZpbGU6bnVsbCxwcm9tcHQ6bnVsbCxyZXY6bnVsbCxyaWdodE1hcmdpbjpWLHJ1bGVzOm51bGwsc2NoZW1lOm51bGwsc2Nyb2xsaW5nOk1lLHN0YW5kYnk6bnVsbCxzdW1tYXJ5Om51bGwsdGV4dDpudWxsLHRvcE1hcmdpbjpWLHZhbHVlVHlwZTpudWxsLHZlcnNpb246bnVsbCx2QWxpZ246bnVsbCx2TGluazpudWxsLHZTcGFjZTpWLGFsbG93VHJhbnNwYXJlbmN5Om51bGwsYXV0b0NvcnJlY3Q6bnVsbCxhdXRvU2F2ZTpudWxsLGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlOnJlLGRpc2FibGVSZW1vdGVQbGF5YmFjazpyZSxwcmVmaXg6bnVsbCxwcm9wZXJ0eTpudWxsLHJlc3VsdHM6VixzZWN1cml0eTpudWxsLHVuc2VsZWN0YWJsZTpudWxsfSxzcGFjZToiaHRtbCIsdHJhbnNmb3JtOkhTfSksWE89cW8oe2F0dHJpYnV0ZXM6e2FjY2VudEhlaWdodDoiYWNjZW50LWhlaWdodCIsYWxpZ25tZW50QmFzZWxpbmU6ImFsaWdubWVudC1iYXNlbGluZSIsYXJhYmljRm9ybToiYXJhYmljLWZvcm0iLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNoaWZ0IixjYXBIZWlnaHQ6ImNhcC1oZWlnaHQiLGNsYXNzTmFtZToiY2xhc3MiLGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJjbGlwLXJ1bGUiLGNvbG9ySW50ZXJwb2xhdGlvbjoiY29sb3ItaW50ZXJwb2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9yUmVuZGVyaW5nOiJjb2xvci1yZW5kZXJpbmciLGNyb3NzT3JpZ2luOiJjcm9zc29yaWdpbiIsZGF0YVR5cGU6ImRhdGF0eXBlIixkb21pbmFudEJhc2VsaW5lOiJkb21pbmFudC1iYXNlbGluZSIsZW5hYmxlQmFja2dyb3VuZDoiZW5hYmxlLWJhY2tncm91bmQiLGZpbGxPcGFjaXR5OiJmaWxsLW9wYWNpdHkiLGZpbGxSdWxlOiJmaWxsLXJ1bGUiLGZsb29kQ29sb3I6ImZsb29kLWNvbG9yIixmbG9vZE9wYWNpdHk6ImZsb29kLW9wYWNpdHkiLGZvbnRGYW1pbHk6ImZvbnQtZmFtaWx5Iixmb250U2l6ZToiZm9udC1zaXplIixmb250U2l6ZUFkanVzdDoiZm9udC1zaXplLWFkanVzdCIsZm9udFN0cmV0Y2g6ImZvbnQtc3RyZXRjaCIsZm9udFN0eWxlOiJmb250LXN0eWxlIixmb250VmFyaWFudDoiZm9udC12YXJpYW50Iixmb250V2VpZ2h0OiJmb250LXdlaWdodCIsZ2x5cGhOYW1lOiJnbHlwaC1uYW1lIixnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCIsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsaHJlZkxhbmc6ImhyZWZsYW5nIixob3JpekFkdlg6Imhvcml6LWFkdi14Iixob3Jpek9yaWdpblg6Imhvcml6LW9yaWdpbi14Iixob3Jpek9yaWdpblk6Imhvcml6LW9yaWdpbi15IixpbWFnZVJlbmRlcmluZzoiaW1hZ2UtcmVuZGVyaW5nIixsZXR0ZXJTcGFjaW5nOiJsZXR0ZXItc3BhY2luZyIsbGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3IiLG1hcmtlckVuZDoibWFya2VyLWVuZCIsbWFya2VyTWlkOiJtYXJrZXItbWlkIixtYXJrZXJTdGFydDoibWFya2VyLXN0YXJ0IixuYXZEb3duOiJuYXYtZG93biIsbmF2RG93bkxlZnQ6Im5hdi1kb3duLWxlZnQiLG5hdkRvd25SaWdodDoibmF2LWRvd24tcmlnaHQiLG5hdkxlZnQ6Im5hdi1sZWZ0IixuYXZOZXh0OiJuYXYtbmV4dCIsbmF2UHJldjoibmF2LXByZXYiLG5hdlJpZ2h0OiJuYXYtcmlnaHQiLG5hdlVwOiJuYXYtdXAiLG5hdlVwTGVmdDoibmF2LXVwLWxlZnQiLG5hdlVwUmlnaHQ6Im5hdi11cC1yaWdodCIsb25BYm9ydDoib25hYm9ydCIsb25BY3RpdmF0ZToib25hY3RpdmF0ZSIsb25BZnRlclByaW50OiJvbmFmdGVycHJpbnQiLG9uQmVmb3JlUHJpbnQ6Im9uYmVmb3JlcHJpbnQiLG9uQmVnaW46Im9uYmVnaW4iLG9uQ2FuY2VsOiJvbmNhbmNlbCIsb25DYW5QbGF5OiJvbmNhbnBsYXkiLG9uQ2FuUGxheVRocm91Z2g6Im9uY2FucGxheXRocm91Z2giLG9uQ2hhbmdlOiJvbmNoYW5nZSIsb25DbGljazoib25jbGljayIsb25DbG9zZToib25jbG9zZSIsb25Db3B5OiJvbmNvcHkiLG9uQ3VlQ2hhbmdlOiJvbmN1ZWNoYW5nZSIsb25DdXQ6Im9uY3V0IixvbkRibENsaWNrOiJvbmRibGNsaWNrIixvbkRyYWc6Im9uZHJhZyIsb25EcmFnRW5kOiJvbmRyYWdlbmQiLG9uRHJhZ0VudGVyOiJvbmRyYWdlbnRlciIsb25EcmFnRXhpdDoib25kcmFnZXhpdCIsb25EcmFnTGVhdmU6Im9uZHJhZ2xlYXZlIixvbkRyYWdPdmVyOiJvbmRyYWdvdmVyIixvbkRyYWdTdGFydDoib25kcmFnc3RhcnQiLG9uRHJvcDoib25kcm9wIixvbkR1cmF0aW9uQ2hhbmdlOiJvbmR1cmF0aW9uY2hhbmdlIixvbkVtcHRpZWQ6Im9uZW1wdGllZCIsb25FbmQ6Im9uZW5kIixvbkVuZGVkOiJvbmVuZGVkIixvbkVycm9yOiJvbmVycm9yIixvbkZvY3VzOiJvbmZvY3VzIixvbkZvY3VzSW46Im9uZm9jdXNpbiIsb25Gb2N1c091dDoib25mb2N1c291dCIsb25IYXNoQ2hhbmdlOiJvbmhhc2hjaGFuZ2UiLG9uSW5wdXQ6Im9uaW5wdXQiLG9uSW52YWxpZDoib25pbnZhbGlkIixvbktleURvd246Im9ua2V5ZG93biIsb25LZXlQcmVzczoib25rZXlwcmVzcyIsb25LZXlVcDoib25rZXl1cCIsb25Mb2FkOiJvbmxvYWQiLG9uTG9hZGVkRGF0YToib25sb2FkZWRkYXRhIixvbkxvYWRlZE1ldGFkYXRhOiJvbmxvYWRlZG1ldGFkYXRhIixvbkxvYWRTdGFydDoib25sb2Fkc3RhcnQiLG9uTWVzc2FnZToib25tZXNzYWdlIixvbk1vdXNlRG93bjoib25tb3VzZWRvd24iLG9uTW91c2VFbnRlcjoib25tb3VzZWVudGVyIixvbk1vdXNlTGVhdmU6Im9ubW91c2VsZWF2ZSIsb25Nb3VzZU1vdmU6Im9ubW91c2Vtb3ZlIixvbk1vdXNlT3V0OiJvbm1vdXNlb3V0Iixvbk1vdXNlT3Zlcjoib25tb3VzZW92ZXIiLG9uTW91c2VVcDoib25tb3VzZXVwIixvbk1vdXNlV2hlZWw6Im9ubW91c2V3aGVlbCIsb25PZmZsaW5lOiJvbm9mZmxpbmUiLG9uT25saW5lOiJvbm9ubGluZSIsb25QYWdlSGlkZToib25wYWdlaGlkZSIsb25QYWdlU2hvdzoib25wYWdlc2hvdyIsb25QYXN0ZToib25wYXN0ZSIsb25QYXVzZToib25wYXVzZSIsb25QbGF5OiJvbnBsYXkiLG9uUGxheWluZzoib25wbGF5aW5nIixvblBvcFN0YXRlOiJvbnBvcHN0YXRlIixvblByb2dyZXNzOiJvbnByb2dyZXNzIixvblJhdGVDaGFuZ2U6Im9ucmF0ZWNoYW5nZSIsb25SZXBlYXQ6Im9ucmVwZWF0IixvblJlc2V0OiJvbnJlc2V0IixvblJlc2l6ZToib25yZXNpemUiLG9uU2Nyb2xsOiJvbnNjcm9sbCIsb25TZWVrZWQ6Im9uc2Vla2VkIixvblNlZWtpbmc6Im9uc2Vla2luZyIsb25TZWxlY3Q6Im9uc2VsZWN0IixvblNob3c6Im9uc2hvdyIsb25TdGFsbGVkOiJvbnN0YWxsZWQiLG9uU3RvcmFnZToib25zdG9yYWdlIixvblN1Ym1pdDoib25zdWJtaXQiLG9uU3VzcGVuZDoib25zdXNwZW5kIixvblRpbWVVcGRhdGU6Im9udGltZXVwZGF0ZSIsb25Ub2dnbGU6Im9udG9nZ2xlIixvblVubG9hZDoib251bmxvYWQiLG9uVm9sdW1lQ2hhbmdlOiJvbnZvbHVtZWNoYW5nZSIsb25XYWl0aW5nOiJvbndhaXRpbmciLG9uWm9vbToib256b29tIixvdmVybGluZVBvc2l0aW9uOiJvdmVybGluZS1wb3NpdGlvbiIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIscGFpbnRPcmRlcjoicGFpbnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixwb2ludGVyRXZlbnRzOiJwb2ludGVyLWV2ZW50cyIscmVmZXJyZXJQb2xpY3k6InJlZmVycmVycG9saWN5IixyZW5kZXJpbmdJbnRlbnQ6InJlbmRlcmluZy1pbnRlbnQiLHNoYXBlUmVuZGVyaW5nOiJzaGFwZS1yZW5kZXJpbmciLHN0b3BDb2xvcjoic3RvcC1jb2xvciIsc3RvcE9wYWNpdHk6InN0b3Atb3BhY2l0eSIsc3RyaWtldGhyb3VnaFBvc2l0aW9uOiJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIixzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyIsc3Ryb2tlRGFzaEFycmF5OiJzdHJva2UtZGFzaGFycmF5IixzdHJva2VEYXNoT2Zmc2V0OiJzdHJva2UtZGFzaG9mZnNldCIsc3Ryb2tlTGluZUNhcDoic3Ryb2tlLWxpbmVjYXAiLHN0cm9rZUxpbmVKb2luOiJzdHJva2UtbGluZWpvaW4iLHN0cm9rZU1pdGVyTGltaXQ6InN0cm9rZS1taXRlcmxpbWl0IixzdHJva2VPcGFjaXR5OiJzdHJva2Utb3BhY2l0eSIsc3Ryb2tlV2lkdGg6InN0cm9rZS13aWR0aCIsdGFiSW5kZXg6InRhYmluZGV4Iix0ZXh0QW5jaG9yOiJ0ZXh0LWFuY2hvciIsdGV4dERlY29yYXRpb246InRleHQtZGVjb3JhdGlvbiIsdGV4dFJlbmRlcmluZzoidGV4dC1yZW5kZXJpbmciLHRyYW5zZm9ybU9yaWdpbjoidHJhbnNmb3JtLW9yaWdpbiIsdHlwZU9mOiJ0eXBlb2YiLHVuZGVybGluZVBvc2l0aW9uOiJ1bmRlcmxpbmUtcG9zaXRpb24iLHVuZGVybGluZVRoaWNrbmVzczoidW5kZXJsaW5lLXRoaWNrbmVzcyIsdW5pY29kZUJpZGk6InVuaWNvZGUtYmlkaSIsdW5pY29kZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1wZXItZW0iLHZBbHBoYWJldGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJZGVvZ3JhcGhpYzoidi1pZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwiLHZlY3RvckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVydEFkdlk6InZlcnQtYWR2LXkiLHZlcnRPcmlnaW5YOiJ2ZXJ0LW9yaWdpbi14Iix2ZXJ0T3JpZ2luWToidmVydC1vcmlnaW4teSIsd29yZFNwYWNpbmc6IndvcmQtc3BhY2luZyIsd3JpdGluZ01vZGU6IndyaXRpbmctbW9kZSIseEhlaWdodDoieC1oZWlnaHQiLHBsYXliYWNrT3JkZXI6InBsYXliYWNrb3JkZXIiLHRpbWVsaW5lQmVnaW46InRpbWVsaW5lYmVnaW4ifSxwcm9wZXJ0aWVzOnthYm91dDpQdCxhY2NlbnRIZWlnaHQ6VixhY2N1bXVsYXRlOm51bGwsYWRkaXRpdmU6bnVsbCxhbGlnbm1lbnRCYXNlbGluZTpudWxsLGFscGhhYmV0aWM6VixhbXBsaXR1ZGU6VixhcmFiaWNGb3JtOm51bGwsYXNjZW50OlYsYXR0cmlidXRlTmFtZTpudWxsLGF0dHJpYnV0ZVR5cGU6bnVsbCxhemltdXRoOlYsYmFuZHdpZHRoOm51bGwsYmFzZWxpbmVTaGlmdDpudWxsLGJhc2VGcmVxdWVuY3k6bnVsbCxiYXNlUHJvZmlsZTpudWxsLGJib3g6bnVsbCxiZWdpbjpudWxsLGJpYXM6VixieTpudWxsLGNhbGNNb2RlOm51bGwsY2FwSGVpZ2h0OlYsY2xhc3NOYW1lOm1lLGNsaXA6bnVsbCxjbGlwUGF0aDpudWxsLGNsaXBQYXRoVW5pdHM6bnVsbCxjbGlwUnVsZTpudWxsLGNvbG9yOm51bGwsY29sb3JJbnRlcnBvbGF0aW9uOm51bGwsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczpudWxsLGNvbG9yUHJvZmlsZTpudWxsLGNvbG9yUmVuZGVyaW5nOm51bGwsY29udGVudDpudWxsLGNvbnRlbnRTY3JpcHRUeXBlOm51bGwsY29udGVudFN0eWxlVHlwZTpudWxsLGNyb3NzT3JpZ2luOm51bGwsY3Vyc29yOm51bGwsY3g6bnVsbCxjeTpudWxsLGQ6bnVsbCxkYXRhVHlwZTpudWxsLGRlZmF1bHRBY3Rpb246bnVsbCxkZXNjZW50OlYsZGlmZnVzZUNvbnN0YW50OlYsZGlyZWN0aW9uOm51bGwsZGlzcGxheTpudWxsLGR1cjpudWxsLGRpdmlzb3I6Vixkb21pbmFudEJhc2VsaW5lOm51bGwsZG93bmxvYWQ6cmUsZHg6bnVsbCxkeTpudWxsLGVkZ2VNb2RlOm51bGwsZWRpdGFibGU6bnVsbCxlbGV2YXRpb246VixlbmFibGVCYWNrZ3JvdW5kOm51bGwsZW5kOm51bGwsZXZlbnQ6bnVsbCxleHBvbmVudDpWLGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6bnVsbCxmaWxsOm51bGwsZmlsbE9wYWNpdHk6VixmaWxsUnVsZTpudWxsLGZpbHRlcjpudWxsLGZpbHRlclJlczpudWxsLGZpbHRlclVuaXRzOm51bGwsZmxvb2RDb2xvcjpudWxsLGZsb29kT3BhY2l0eTpudWxsLGZvY3VzYWJsZTpudWxsLGZvY3VzSGlnaGxpZ2h0Om51bGwsZm9udEZhbWlseTpudWxsLGZvbnRTaXplOm51bGwsZm9udFNpemVBZGp1c3Q6bnVsbCxmb250U3RyZXRjaDpudWxsLGZvbnRTdHlsZTpudWxsLGZvbnRWYXJpYW50Om51bGwsZm9udFdlaWdodDpudWxsLGZvcm1hdDpudWxsLGZyOm51bGwsZnJvbTpudWxsLGZ4Om51bGwsZnk6bnVsbCxnMTpmbyxnMjpmbyxnbHlwaE5hbWU6Zm8sZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWw6bnVsbCxnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6bnVsbCxnbHlwaFJlZjpudWxsLGdyYWRpZW50VHJhbnNmb3JtOm51bGwsZ3JhZGllbnRVbml0czpudWxsLGhhbmRsZXI6bnVsbCxoYW5naW5nOlYsaGF0Y2hDb250ZW50VW5pdHM6bnVsbCxoYXRjaFVuaXRzOm51bGwsaGVpZ2h0Om51bGwsaHJlZjpudWxsLGhyZWZMYW5nOm51bGwsaG9yaXpBZHZYOlYsaG9yaXpPcmlnaW5YOlYsaG9yaXpPcmlnaW5ZOlYsaWQ6bnVsbCxpZGVvZ3JhcGhpYzpWLGltYWdlUmVuZGVyaW5nOm51bGwsaW5pdGlhbFZpc2liaWxpdHk6bnVsbCxpbjpudWxsLGluMjpudWxsLGludGVyY2VwdDpWLGs6VixrMTpWLGsyOlYsazM6VixrNDpWLGtlcm5lbE1hdHJpeDpQdCxrZXJuZWxVbml0TGVuZ3RoOm51bGwsa2V5UG9pbnRzOm51bGwsa2V5U3BsaW5lczpudWxsLGtleVRpbWVzOm51bGwsa2VybmluZzpudWxsLGxhbmc6bnVsbCxsZW5ndGhBZGp1c3Q6bnVsbCxsZXR0ZXJTcGFjaW5nOm51bGwsbGlnaHRpbmdDb2xvcjpudWxsLGxpbWl0aW5nQ29uZUFuZ2xlOlYsbG9jYWw6bnVsbCxtYXJrZXJFbmQ6bnVsbCxtYXJrZXJNaWQ6bnVsbCxtYXJrZXJTdGFydDpudWxsLG1hcmtlckhlaWdodDpudWxsLG1hcmtlclVuaXRzOm51bGwsbWFya2VyV2lkdGg6bnVsbCxtYXNrOm51bGwsbWFza0NvbnRlbnRVbml0czpudWxsLG1hc2tVbml0czpudWxsLG1hdGhlbWF0aWNhbDpudWxsLG1heDpudWxsLG1lZGlhOm51bGwsbWVkaWFDaGFyYWN0ZXJFbmNvZGluZzpudWxsLG1lZGlhQ29udGVudEVuY29kaW5nczpudWxsLG1lZGlhU2l6ZTpWLG1lZGlhVGltZTpudWxsLG1ldGhvZDpudWxsLG1pbjpudWxsLG1vZGU6bnVsbCxuYW1lOm51bGwsbmF2RG93bjpudWxsLG5hdkRvd25MZWZ0Om51bGwsbmF2RG93blJpZ2h0Om51bGwsbmF2TGVmdDpudWxsLG5hdk5leHQ6bnVsbCxuYXZQcmV2Om51bGwsbmF2UmlnaHQ6bnVsbCxuYXZVcDpudWxsLG5hdlVwTGVmdDpudWxsLG5hdlVwUmlnaHQ6bnVsbCxudW1PY3RhdmVzOm51bGwsb2JzZXJ2ZXI6bnVsbCxvZmZzZXQ6bnVsbCxvbkFib3J0Om51bGwsb25BY3RpdmF0ZTpudWxsLG9uQWZ0ZXJQcmludDpudWxsLG9uQmVmb3JlUHJpbnQ6bnVsbCxvbkJlZ2luOm51bGwsb25DYW5jZWw6bnVsbCxvbkNhblBsYXk6bnVsbCxvbkNhblBsYXlUaHJvdWdoOm51bGwsb25DaGFuZ2U6bnVsbCxvbkNsaWNrOm51bGwsb25DbG9zZTpudWxsLG9uQ29weTpudWxsLG9uQ3VlQ2hhbmdlOm51bGwsb25DdXQ6bnVsbCxvbkRibENsaWNrOm51bGwsb25EcmFnOm51bGwsb25EcmFnRW5kOm51bGwsb25EcmFnRW50ZXI6bnVsbCxvbkRyYWdFeGl0Om51bGwsb25EcmFnTGVhdmU6bnVsbCxvbkRyYWdPdmVyOm51bGwsb25EcmFnU3RhcnQ6bnVsbCxvbkRyb3A6bnVsbCxvbkR1cmF0aW9uQ2hhbmdlOm51bGwsb25FbXB0aWVkOm51bGwsb25FbmQ6bnVsbCxvbkVuZGVkOm51bGwsb25FcnJvcjpudWxsLG9uRm9jdXM6bnVsbCxvbkZvY3VzSW46bnVsbCxvbkZvY3VzT3V0Om51bGwsb25IYXNoQ2hhbmdlOm51bGwsb25JbnB1dDpudWxsLG9uSW52YWxpZDpudWxsLG9uS2V5RG93bjpudWxsLG9uS2V5UHJlc3M6bnVsbCxvbktleVVwOm51bGwsb25Mb2FkOm51bGwsb25Mb2FkZWREYXRhOm51bGwsb25Mb2FkZWRNZXRhZGF0YTpudWxsLG9uTG9hZFN0YXJ0Om51bGwsb25NZXNzYWdlOm51bGwsb25Nb3VzZURvd246bnVsbCxvbk1vdXNlRW50ZXI6bnVsbCxvbk1vdXNlTGVhdmU6bnVsbCxvbk1vdXNlTW92ZTpudWxsLG9uTW91c2VPdXQ6bnVsbCxvbk1vdXNlT3ZlcjpudWxsLG9uTW91c2VVcDpudWxsLG9uTW91c2VXaGVlbDpudWxsLG9uT2ZmbGluZTpudWxsLG9uT25saW5lOm51bGwsb25QYWdlSGlkZTpudWxsLG9uUGFnZVNob3c6bnVsbCxvblBhc3RlOm51bGwsb25QYXVzZTpudWxsLG9uUGxheTpudWxsLG9uUGxheWluZzpudWxsLG9uUG9wU3RhdGU6bnVsbCxvblByb2dyZXNzOm51bGwsb25SYXRlQ2hhbmdlOm51bGwsb25SZXBlYXQ6bnVsbCxvblJlc2V0Om51bGwsb25SZXNpemU6bnVsbCxvblNjcm9sbDpudWxsLG9uU2Vla2VkOm51bGwsb25TZWVraW5nOm51bGwsb25TZWxlY3Q6bnVsbCxvblNob3c6bnVsbCxvblN0YWxsZWQ6bnVsbCxvblN0b3JhZ2U6bnVsbCxvblN1Ym1pdDpudWxsLG9uU3VzcGVuZDpudWxsLG9uVGltZVVwZGF0ZTpudWxsLG9uVG9nZ2xlOm51bGwsb25VbmxvYWQ6bnVsbCxvblZvbHVtZUNoYW5nZTpudWxsLG9uV2FpdGluZzpudWxsLG9uWm9vbTpudWxsLG9wYWNpdHk6bnVsbCxvcGVyYXRvcjpudWxsLG9yZGVyOm51bGwsb3JpZW50Om51bGwsb3JpZW50YXRpb246bnVsbCxvcmlnaW46bnVsbCxvdmVyZmxvdzpudWxsLG92ZXJsYXk6bnVsbCxvdmVybGluZVBvc2l0aW9uOlYsb3ZlcmxpbmVUaGlja25lc3M6VixwYWludE9yZGVyOm51bGwscGFub3NlMTpudWxsLHBhdGg6bnVsbCxwYXRoTGVuZ3RoOlYscGF0dGVybkNvbnRlbnRVbml0czpudWxsLHBhdHRlcm5UcmFuc2Zvcm06bnVsbCxwYXR0ZXJuVW5pdHM6bnVsbCxwaGFzZTpudWxsLHBpbmc6bWUscGl0Y2g6bnVsbCxwbGF5YmFja09yZGVyOm51bGwscG9pbnRlckV2ZW50czpudWxsLHBvaW50czpudWxsLHBvaW50c0F0WDpWLHBvaW50c0F0WTpWLHBvaW50c0F0WjpWLHByZXNlcnZlQWxwaGE6bnVsbCxwcmVzZXJ2ZUFzcGVjdFJhdGlvOm51bGwscHJpbWl0aXZlVW5pdHM6bnVsbCxwcm9wYWdhdGU6bnVsbCxwcm9wZXJ0eTpQdCxyOm51bGwscmFkaXVzOm51bGwscmVmZXJyZXJQb2xpY3k6bnVsbCxyZWZYOm51bGwscmVmWTpudWxsLHJlbDpQdCxyZXY6UHQscmVuZGVyaW5nSW50ZW50Om51bGwscmVwZWF0Q291bnQ6bnVsbCxyZXBlYXREdXI6bnVsbCxyZXF1aXJlZEV4dGVuc2lvbnM6UHQscmVxdWlyZWRGZWF0dXJlczpQdCxyZXF1aXJlZEZvbnRzOlB0LHJlcXVpcmVkRm9ybWF0czpQdCxyZXNvdXJjZTpudWxsLHJlc3RhcnQ6bnVsbCxyZXN1bHQ6bnVsbCxyb3RhdGU6bnVsbCxyeDpudWxsLHJ5Om51bGwsc2NhbGU6bnVsbCxzZWVkOm51bGwsc2hhcGVSZW5kZXJpbmc6bnVsbCxzaWRlOm51bGwsc2xvcGU6bnVsbCxzbmFwc2hvdFRpbWU6bnVsbCxzcGVjdWxhckNvbnN0YW50OlYsc3BlY3VsYXJFeHBvbmVudDpWLHNwcmVhZE1ldGhvZDpudWxsLHNwYWNpbmc6bnVsbCxzdGFydE9mZnNldDpudWxsLHN0ZERldmlhdGlvbjpudWxsLHN0ZW1oOm51bGwsc3RlbXY6bnVsbCxzdGl0Y2hUaWxlczpudWxsLHN0b3BDb2xvcjpudWxsLHN0b3BPcGFjaXR5Om51bGwsc3RyaWtldGhyb3VnaFBvc2l0aW9uOlYsc3RyaWtldGhyb3VnaFRoaWNrbmVzczpWLHN0cmluZzpudWxsLHN0cm9rZTpudWxsLHN0cm9rZURhc2hBcnJheTpQdCxzdHJva2VEYXNoT2Zmc2V0Om51bGwsc3Ryb2tlTGluZUNhcDpudWxsLHN0cm9rZUxpbmVKb2luOm51bGwsc3Ryb2tlTWl0ZXJMaW1pdDpWLHN0cm9rZU9wYWNpdHk6VixzdHJva2VXaWR0aDpudWxsLHN0eWxlOm51bGwsc3VyZmFjZVNjYWxlOlYsc3luY0JlaGF2aW9yOm51bGwsc3luY0JlaGF2aW9yRGVmYXVsdDpudWxsLHN5bmNNYXN0ZXI6bnVsbCxzeW5jVG9sZXJhbmNlOm51bGwsc3luY1RvbGVyYW5jZURlZmF1bHQ6bnVsbCxzeXN0ZW1MYW5ndWFnZTpQdCx0YWJJbmRleDpWLHRhYmxlVmFsdWVzOm51bGwsdGFyZ2V0Om51bGwsdGFyZ2V0WDpWLHRhcmdldFk6Vix0ZXh0QW5jaG9yOm51bGwsdGV4dERlY29yYXRpb246bnVsbCx0ZXh0UmVuZGVyaW5nOm51bGwsdGV4dExlbmd0aDpudWxsLHRpbWVsaW5lQmVnaW46bnVsbCx0aXRsZTpudWxsLHRyYW5zZm9ybUJlaGF2aW9yOm51bGwsdHlwZTpudWxsLHR5cGVPZjpQdCx0bzpudWxsLHRyYW5zZm9ybTpudWxsLHRyYW5zZm9ybU9yaWdpbjpudWxsLHUxOm51bGwsdTI6bnVsbCx1bmRlcmxpbmVQb3NpdGlvbjpWLHVuZGVybGluZVRoaWNrbmVzczpWLHVuaWNvZGU6bnVsbCx1bmljb2RlQmlkaTpudWxsLHVuaWNvZGVSYW5nZTpudWxsLHVuaXRzUGVyRW06Vix2YWx1ZXM6bnVsbCx2QWxwaGFiZXRpYzpWLHZNYXRoZW1hdGljYWw6Vix2ZWN0b3JFZmZlY3Q6bnVsbCx2SGFuZ2luZzpWLHZJZGVvZ3JhcGhpYzpWLHZlcnNpb246bnVsbCx2ZXJ0QWR2WTpWLHZlcnRPcmlnaW5YOlYsdmVydE9yaWdpblk6Vix2aWV3Qm94Om51bGwsdmlld1RhcmdldDpudWxsLHZpc2liaWxpdHk6bnVsbCx3aWR0aDpudWxsLHdpZHRoczpudWxsLHdvcmRTcGFjaW5nOm51bGwsd3JpdGluZ01vZGU6bnVsbCx4Om51bGwseDE6bnVsbCx4MjpudWxsLHhDaGFubmVsU2VsZWN0b3I6bnVsbCx4SGVpZ2h0OlYseTpudWxsLHkxOm51bGwseTI6bnVsbCx5Q2hhbm5lbFNlbGVjdG9yOm51bGwsejpudWxsLHpvb21BbmRQYW46bnVsbH0sc3BhY2U6InN2ZyIsdHJhbnNmb3JtOiRTfSkscVM9cW8oe3Byb3BlcnRpZXM6e3hMaW5rQWN0dWF0ZTpudWxsLHhMaW5rQXJjUm9sZTpudWxsLHhMaW5rSHJlZjpudWxsLHhMaW5rUm9sZTpudWxsLHhMaW5rU2hvdzpudWxsLHhMaW5rVGl0bGU6bnVsbCx4TGlua1R5cGU6bnVsbH0sc3BhY2U6InhsaW5rIix0cmFuc2Zvcm0oZSx0KXtyZXR1cm4ieGxpbms6Iit0LnNsaWNlKDUpLnRvTG93ZXJDYXNlKCl9fSksV1M9cW8oe2F0dHJpYnV0ZXM6e3htbG5zeGxpbms6InhtbG5zOnhsaW5rIn0scHJvcGVydGllczp7eG1sbnNYTGluazpudWxsLHhtbG5zOm51bGx9LHNwYWNlOiJ4bWxucyIsdHJhbnNmb3JtOkhTfSksS1M9cW8oe3Byb3BlcnRpZXM6e3htbEJhc2U6bnVsbCx4bWxMYW5nOm51bGwseG1sU3BhY2U6bnVsbH0sc3BhY2U6InhtbCIsdHJhbnNmb3JtKGUsdCl7cmV0dXJuInhtbDoiK3Quc2xpY2UoMykudG9Mb3dlckNhc2UoKX19KSxKTz17Y2xhc3NJZDoiY2xhc3NJRCIsZGF0YVR5cGU6ImRhdGF0eXBlIixpdGVtSWQ6Iml0ZW1JRCIsc3Ryb2tlRGFzaEFycmF5OiJzdHJva2VEYXNoYXJyYXkiLHN0cm9rZURhc2hPZmZzZXQ6InN0cm9rZURhc2hvZmZzZXQiLHN0cm9rZUxpbmVDYXA6InN0cm9rZUxpbmVjYXAiLHN0cm9rZUxpbmVKb2luOiJzdHJva2VMaW5lam9pbiIsc3Ryb2tlTWl0ZXJMaW1pdDoic3Ryb2tlTWl0ZXJsaW1pdCIsdHlwZU9mOiJ0eXBlb2YiLHhMaW5rQWN0dWF0ZToieGxpbmtBY3R1YXRlIix4TGlua0FyY1JvbGU6InhsaW5rQXJjcm9sZSIseExpbmtIcmVmOiJ4bGlua0hyZWYiLHhMaW5rUm9sZToieGxpbmtSb2xlIix4TGlua1Nob3c6InhsaW5rU2hvdyIseExpbmtUaXRsZToieGxpbmtUaXRsZSIseExpbmtUeXBlOiJ4bGlua1R5cGUiLHhtbG5zWExpbms6InhtbG5zWGxpbmsifSxaTz0vW0EtWl0vZyxGdj0vLVthLXpdL2csZUY9L15kYXRhWy1cdy46XSskL2k7ZnVuY3Rpb24gdEYoZSx0KXtjb25zdCBuPVlmKHQpO2xldCByPXQsaT1TdDtpZihuIGluIGUubm9ybWFsKXJldHVybiBlLnByb3BlcnR5W2Uubm9ybWFsW25dXTtpZihuLmxlbmd0aD40JiZuLnNsaWNlKDAsNCk9PT0iZGF0YSImJmVGLnRlc3QodCkpe2lmKHQuY2hhckF0KDQpPT09Ii0iKXtjb25zdCBvPXQuc2xpY2UoNSkucmVwbGFjZShGdixyRik7cj0iZGF0YSIrby5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStvLnNsaWNlKDEpfWVsc2V7Y29uc3Qgbz10LnNsaWNlKDQpO2lmKCFGdi50ZXN0KG8pKXtsZXQgcz1vLnJlcGxhY2UoWk8sbkYpO3MuY2hhckF0KDApIT09Ii0iJiYocz0iLSIrcyksdD0iZGF0YSIrc319aT1pbX1yZXR1cm4gbmV3IGkocix0KX1mdW5jdGlvbiBuRihlKXtyZXR1cm4iLSIrZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIHJGKGUpe3JldHVybiBlLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpfWNvbnN0IGlGPUJTKFtVUyxRTyxxUyxXUyxLU10sImh0bWwiKSxvbT1CUyhbVVMsWE8scVMsV1MsS1NdLCJzdmciKTtmdW5jdGlvbiBvRihlKXtyZXR1cm4gZS5qb2luKCIgIikudHJpbSgpfXZhciBzbT17fSxfdj0vXC9cKlteKl0qXCorKFteLypdW14qXSpcKispKlwvL2csc0Y9L1xuL2csYUY9L15ccyovLGxGPS9eKFwqP1stIy8qXFxcd10rKFxbWzAtOWEtel8tXStcXSk\/KVxzKi8sdUY9L146XHMqLyxjRj0vXigoPzonKD86XFwnfC4pKj8nfCIoPzpcXCJ8LikqPyJ8XChbXildKj9cKXxbXn07XSkrKS8sZEY9L15bO1xzXSovLGZGPS9eXHMrfFxzKyQvZyxoRj1gCmAsVnY9Ii8iLEJ2PSIqIixzaT0iIixwRj0iY29tbWVudCIsbUY9ImRlY2xhcmF0aW9uIjtmdW5jdGlvbiBnRihlLHQpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIik7aWYoIWUpcmV0dXJuW107dD10fHx7fTt2YXIgbj0xLHI9MTtmdW5jdGlvbiBpKHkpe3ZhciBtPXkubWF0Y2goc0YpO20mJihuKz1tLmxlbmd0aCk7dmFyIHc9eS5sYXN0SW5kZXhPZihoRik7cj1+dz95Lmxlbmd0aC13OnIreS5sZW5ndGh9ZnVuY3Rpb24gbygpe3ZhciB5PXtsaW5lOm4sY29sdW1uOnJ9O3JldHVybiBmdW5jdGlvbihtKXtyZXR1cm4gbS5wb3NpdGlvbj1uZXcgcyh5KSx1KCksbX19ZnVuY3Rpb24gcyh5KXt0aGlzLnN0YXJ0PXksdGhpcy5lbmQ9e2xpbmU6bixjb2x1bW46cn0sdGhpcy5zb3VyY2U9dC5zb3VyY2V9cy5wcm90b3R5cGUuY29udGVudD1lO2Z1bmN0aW9uIGEoeSl7dmFyIG09bmV3IEVycm9yKHQuc291cmNlKyI6IituKyI6IityKyI6ICIreSk7aWYobS5yZWFzb249eSxtLmZpbGVuYW1lPXQuc291cmNlLG0ubGluZT1uLG0uY29sdW1uPXIsbS5zb3VyY2U9ZSwhdC5zaWxlbnQpdGhyb3cgbX1mdW5jdGlvbiBsKHkpe3ZhciBtPXkuZXhlYyhlKTtpZihtKXt2YXIgdz1tWzBdO3JldHVybiBpKHcpLGU9ZS5zbGljZSh3Lmxlbmd0aCksbX19ZnVuY3Rpb24gdSgpe2woYUYpfWZ1bmN0aW9uIGMoeSl7dmFyIG07Zm9yKHk9eXx8W107bT1kKCk7KW0hPT0hMSYmeS5wdXNoKG0pO3JldHVybiB5fWZ1bmN0aW9uIGQoKXt2YXIgeT1vKCk7aWYoIShWdiE9ZS5jaGFyQXQoMCl8fEJ2IT1lLmNoYXJBdCgxKSkpe2Zvcih2YXIgbT0yO3NpIT1lLmNoYXJBdChtKSYmKEJ2IT1lLmNoYXJBdChtKXx8VnYhPWUuY2hhckF0KG0rMSkpOykrK207aWYobSs9MixzaT09PWUuY2hhckF0KG0tMSkpcmV0dXJuIGEoIkVuZCBvZiBjb21tZW50IG1pc3NpbmciKTt2YXIgdz1lLnNsaWNlKDIsbS0yKTtyZXR1cm4gcis9MixpKHcpLGU9ZS5zbGljZShtKSxyKz0yLHkoe3R5cGU6cEYsY29tbWVudDp3fSl9fWZ1bmN0aW9uIGgoKXt2YXIgeT1vKCksbT1sKGxGKTtpZihtKXtpZihkKCksIWwodUYpKXJldHVybiBhKCJwcm9wZXJ0eSBtaXNzaW5nICc6JyIpO3ZhciB3PWwoY0YpLHA9eSh7dHlwZTptRixwcm9wZXJ0eTpVdihtWzBdLnJlcGxhY2UoX3Ysc2kpKSx2YWx1ZTp3P1V2KHdbMF0ucmVwbGFjZShfdixzaSkpOnNpfSk7cmV0dXJuIGwoZEYpLHB9fWZ1bmN0aW9uIGYoKXt2YXIgeT1bXTtjKHkpO2Zvcih2YXIgbTttPWgoKTspbSE9PSExJiYoeS5wdXNoKG0pLGMoeSkpO3JldHVybiB5fXJldHVybiB1KCksZigpfWZ1bmN0aW9uIFV2KGUpe3JldHVybiBlP2UucmVwbGFjZShmRixzaSk6c2l9dmFyIHlGPWdGLHZGPVRsJiZUbC5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU\/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHNtLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtzbS5kZWZhdWx0PXdGO2NvbnN0IHhGPXZGKHlGKTtmdW5jdGlvbiB3RihlLHQpe2xldCBuPW51bGw7aWYoIWV8fHR5cGVvZiBlIT0ic3RyaW5nIilyZXR1cm4gbjtjb25zdCByPSgwLHhGLmRlZmF1bHQpKGUpLGk9dHlwZW9mIHQ9PSJmdW5jdGlvbiI7cmV0dXJuIHIuZm9yRWFjaChvPT57aWYoby50eXBlIT09ImRlY2xhcmF0aW9uIilyZXR1cm47Y29uc3R7cHJvcGVydHk6cyx2YWx1ZTphfT1vO2k\/dChzLGEsbyk6YSYmKG49bnx8e30sbltzXT1hKX0pLG59dmFyIEp1PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShKdSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7SnUuY2FtZWxDYXNlPXZvaWQgMDt2YXIgYkY9L14tLVthLXpBLVowLTlfLV0rJC8sa0Y9Ly0oW2Etel0pL2csU0Y9L15bXi1dKyQvLENGPS9eLSh3ZWJraXR8bW96fG1zfG98a2h0bWwpLS8sVEY9L14tKG1zKS0vLEVGPWZ1bmN0aW9uKGUpe3JldHVybiFlfHxTRi50ZXN0KGUpfHxiRi50ZXN0KGUpfSxQRj1mdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9LCR2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIiIuY29uY2F0KHQsIi0iKX0sQUY9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PXZvaWQgMCYmKHQ9e30pLEVGKGUpP2U6KGU9ZS50b0xvd2VyQ2FzZSgpLHQucmVhY3RDb21wYXQ\/ZT1lLnJlcGxhY2UoVEYsJHYpOmU9ZS5yZXBsYWNlKENGLCR2KSxlLnJlcGxhY2Uoa0YsUEYpKX07SnUuY2FtZWxDYXNlPUFGO3ZhciBJRj1UbCYmVGwuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19LE5GPUlGKHNtKSxqRj1KdTtmdW5jdGlvbiBKZihlLHQpe3ZhciBuPXt9O3JldHVybiFlfHx0eXBlb2YgZSE9InN0cmluZyJ8fCgwLE5GLmRlZmF1bHQpKGUsZnVuY3Rpb24ocixpKXtyJiZpJiYoblsoMCxqRi5jYW1lbENhc2UpKHIsdCldPWkpfSksbn1KZi5kZWZhdWx0PUpmO3ZhciB6Rj1KZjtjb25zdCBSRj1tdSh6RiksR1M9WVMoImVuZCIpLGFtPVlTKCJzdGFydCIpO2Z1bmN0aW9uIFlTKGUpe3JldHVybiB0O2Z1bmN0aW9uIHQobil7Y29uc3Qgcj1uJiZuLnBvc2l0aW9uJiZuLnBvc2l0aW9uW2VdfHx7fTtpZih0eXBlb2Ygci5saW5lPT0ibnVtYmVyIiYmci5saW5lPjAmJnR5cGVvZiByLmNvbHVtbj09Im51bWJlciImJnIuY29sdW1uPjApcmV0dXJue2xpbmU6ci5saW5lLGNvbHVtbjpyLmNvbHVtbixvZmZzZXQ6dHlwZW9mIHIub2Zmc2V0PT0ibnVtYmVyIiYmci5vZmZzZXQ+LTE\/ci5vZmZzZXQ6dm9pZCAwfX19ZnVuY3Rpb24gREYoZSl7Y29uc3QgdD1hbShlKSxuPUdTKGUpO2lmKHQmJm4pcmV0dXJue3N0YXJ0OnQsZW5kOm59fWZ1bmN0aW9uIEVzKGUpe3JldHVybiFlfHx0eXBlb2YgZSE9Im9iamVjdCI\/IiI6InBvc2l0aW9uImluIGV8fCJ0eXBlImluIGU\/SHYoZS5wb3NpdGlvbik6InN0YXJ0ImluIGV8fCJlbmQiaW4gZT9IdihlKToibGluZSJpbiBlfHwiY29sdW1uImluIGU\/WmYoZSk6IiJ9ZnVuY3Rpb24gWmYoZSl7cmV0dXJuIHF2KGUmJmUubGluZSkrIjoiK3F2KGUmJmUuY29sdW1uKX1mdW5jdGlvbiBIdihlKXtyZXR1cm4gWmYoZSYmZS5zdGFydCkrIi0iK1pmKGUmJmUuZW5kKX1mdW5jdGlvbiBxdihlKXtyZXR1cm4gZSYmdHlwZW9mIGU9PSJudW1iZXIiP2U6MX1jbGFzcyBudCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsbixyKXtzdXBlcigpLHR5cGVvZiBuPT0ic3RyaW5nIiYmKHI9bixuPXZvaWQgMCk7bGV0IGk9IiIsbz17fSxzPSExO2lmKG4mJigibGluZSJpbiBuJiYiY29sdW1uImluIG4\/bz17cGxhY2U6bn06InN0YXJ0ImluIG4mJiJlbmQiaW4gbj9vPXtwbGFjZTpufToidHlwZSJpbiBuP289e2FuY2VzdG9yczpbbl0scGxhY2U6bi5wb3NpdGlvbn06bz17Li4ubn0pLHR5cGVvZiB0PT0ic3RyaW5nIj9pPXQ6IW8uY2F1c2UmJnQmJihzPSEwLGk9dC5tZXNzYWdlLG8uY2F1c2U9dCksIW8ucnVsZUlkJiYhby5zb3VyY2UmJnR5cGVvZiByPT0ic3RyaW5nIil7Y29uc3QgbD1yLmluZGV4T2YoIjoiKTtsPT09LTE\/by5ydWxlSWQ9cjooby5zb3VyY2U9ci5zbGljZSgwLGwpLG8ucnVsZUlkPXIuc2xpY2UobCsxKSl9aWYoIW8ucGxhY2UmJm8uYW5jZXN0b3JzJiZvLmFuY2VzdG9ycyl7Y29uc3QgbD1vLmFuY2VzdG9yc1tvLmFuY2VzdG9ycy5sZW5ndGgtMV07bCYmKG8ucGxhY2U9bC5wb3NpdGlvbil9Y29uc3QgYT1vLnBsYWNlJiYic3RhcnQiaW4gby5wbGFjZT9vLnBsYWNlLnN0YXJ0Om8ucGxhY2U7dGhpcy5hbmNlc3RvcnM9by5hbmNlc3RvcnN8fHZvaWQgMCx0aGlzLmNhdXNlPW8uY2F1c2V8fHZvaWQgMCx0aGlzLmNvbHVtbj1hP2EuY29sdW1uOnZvaWQgMCx0aGlzLmZhdGFsPXZvaWQgMCx0aGlzLmZpbGU9IiIsdGhpcy5tZXNzYWdlPWksdGhpcy5saW5lPWE\/YS5saW5lOnZvaWQgMCx0aGlzLm5hbWU9RXMoby5wbGFjZSl8fCIxOjEiLHRoaXMucGxhY2U9by5wbGFjZXx8dm9pZCAwLHRoaXMucmVhc29uPXRoaXMubWVzc2FnZSx0aGlzLnJ1bGVJZD1vLnJ1bGVJZHx8dm9pZCAwLHRoaXMuc291cmNlPW8uc291cmNlfHx2b2lkIDAsdGhpcy5zdGFjaz1zJiZvLmNhdXNlJiZ0eXBlb2Ygby5jYXVzZS5zdGFjaz09InN0cmluZyI\/by5jYXVzZS5zdGFjazoiIix0aGlzLmFjdHVhbD12b2lkIDAsdGhpcy5leHBlY3RlZD12b2lkIDAsdGhpcy5ub3RlPXZvaWQgMCx0aGlzLnVybD12b2lkIDB9fW50LnByb3RvdHlwZS5maWxlPSIiO250LnByb3RvdHlwZS5uYW1lPSIiO250LnByb3RvdHlwZS5yZWFzb249IiI7bnQucHJvdG90eXBlLm1lc3NhZ2U9IiI7bnQucHJvdG90eXBlLnN0YWNrPSIiO250LnByb3RvdHlwZS5jb2x1bW49dm9pZCAwO250LnByb3RvdHlwZS5saW5lPXZvaWQgMDtudC5wcm90b3R5cGUuYW5jZXN0b3JzPXZvaWQgMDtudC5wcm90b3R5cGUuY2F1c2U9dm9pZCAwO250LnByb3RvdHlwZS5mYXRhbD12b2lkIDA7bnQucHJvdG90eXBlLnBsYWNlPXZvaWQgMDtudC5wcm90b3R5cGUucnVsZUlkPXZvaWQgMDtudC5wcm90b3R5cGUuc291cmNlPXZvaWQgMDtjb25zdCBsbT17fS5oYXNPd25Qcm9wZXJ0eSxNRj1uZXcgTWFwLExGPS9bQS1aXS9nLE9GPW5ldyBTZXQoWyJ0YWJsZSIsInRib2R5IiwidGhlYWQiLCJ0Zm9vdCIsInRyIl0pLEZGPW5ldyBTZXQoWyJ0ZCIsInRoIl0pLFFTPSJodHRwczovL2dpdGh1Yi5jb20vc3ludGF4LXRyZWUvaGFzdC11dGlsLXRvLWpzeC1ydW50aW1lIjtmdW5jdGlvbiBfRihlLHQpe2lmKCF0fHx0LkZyYWdtZW50PT09dm9pZCAwKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGBGcmFnbWVudGAgaW4gb3B0aW9ucyIpO2NvbnN0IG49dC5maWxlUGF0aHx8dm9pZCAwO2xldCByO2lmKHQuZGV2ZWxvcG1lbnQpe2lmKHR5cGVvZiB0LmpzeERFViE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBganN4REVWYCBpbiBvcHRpb25zIHdoZW4gYGRldmVsb3BtZW50OiB0cnVlYCIpO3I9S0Yobix0LmpzeERFVil9ZWxzZXtpZih0eXBlb2YgdC5qc3ghPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYGpzeGAgaW4gcHJvZHVjdGlvbiBvcHRpb25zIik7aWYodHlwZW9mIHQuanN4cyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBganN4c2AgaW4gcHJvZHVjdGlvbiBvcHRpb25zIik7cj1XRihuLHQuanN4LHQuanN4cyl9Y29uc3QgaT17RnJhZ21lbnQ6dC5GcmFnbWVudCxhbmNlc3RvcnM6W10sY29tcG9uZW50czp0LmNvbXBvbmVudHN8fHt9LGNyZWF0ZTpyLGVsZW1lbnRBdHRyaWJ1dGVOYW1lQ2FzZTp0LmVsZW1lbnRBdHRyaWJ1dGVOYW1lQ2FzZXx8InJlYWN0IixldmFsdWF0ZXI6dC5jcmVhdGVFdmFsdWF0ZXI\/dC5jcmVhdGVFdmFsdWF0ZXIoKTp2b2lkIDAsZmlsZVBhdGg6bixpZ25vcmVJbnZhbGlkU3R5bGU6dC5pZ25vcmVJbnZhbGlkU3R5bGV8fCExLHBhc3NLZXlzOnQucGFzc0tleXMhPT0hMSxwYXNzTm9kZTp0LnBhc3NOb2RlfHwhMSxzY2hlbWE6dC5zcGFjZT09PSJzdmciP29tOmlGLHN0eWxlUHJvcGVydHlOYW1lQ2FzZTp0LnN0eWxlUHJvcGVydHlOYW1lQ2FzZXx8ImRvbSIsdGFibGVDZWxsQWxpZ25Ub1N0eWxlOnQudGFibGVDZWxsQWxpZ25Ub1N0eWxlIT09ITF9LG89WFMoaSxlLHZvaWQgMCk7cmV0dXJuIG8mJnR5cGVvZiBvIT0ic3RyaW5nIj9vOmkuY3JlYXRlKGUsaS5GcmFnbWVudCx7Y2hpbGRyZW46b3x8dm9pZCAwfSx2b2lkIDApfWZ1bmN0aW9uIFhTKGUsdCxuKXtpZih0LnR5cGU9PT0iZWxlbWVudCIpcmV0dXJuIFZGKGUsdCxuKTtpZih0LnR5cGU9PT0ibWR4Rmxvd0V4cHJlc3Npb24ifHx0LnR5cGU9PT0ibWR4VGV4dEV4cHJlc3Npb24iKXJldHVybiBCRihlLHQpO2lmKHQudHlwZT09PSJtZHhKc3hGbG93RWxlbWVudCJ8fHQudHlwZT09PSJtZHhKc3hUZXh0RWxlbWVudCIpcmV0dXJuICRGKGUsdCxuKTtpZih0LnR5cGU9PT0ibWR4anNFc20iKXJldHVybiBVRihlLHQpO2lmKHQudHlwZT09PSJyb290IilyZXR1cm4gSEYoZSx0LG4pO2lmKHQudHlwZT09PSJ0ZXh0IilyZXR1cm4gcUYoZSx0KX1mdW5jdGlvbiBWRihlLHQsbil7Y29uc3Qgcj1lLnNjaGVtYTtsZXQgaT1yO3QudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09InN2ZyImJnIuc3BhY2U9PT0iaHRtbCImJihpPW9tLGUuc2NoZW1hPWkpLGUuYW5jZXN0b3JzLnB1c2godCk7Y29uc3Qgbz1aUyhlLHQudGFnTmFtZSwhMSkscz1HRihlLHQpO2xldCBhPWNtKGUsdCk7cmV0dXJuIE9GLmhhcyh0LnRhZ05hbWUpJiYoYT1hLmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4gdHlwZW9mIGw9PSJzdHJpbmciPyFHTyhsKTohMH0pKSxKUyhlLHMsbyx0KSx1bShzLGEpLGUuYW5jZXN0b3JzLnBvcCgpLGUuc2NoZW1hPXIsZS5jcmVhdGUodCxvLHMsbil9ZnVuY3Rpb24gQkYoZSx0KXtpZih0LmRhdGEmJnQuZGF0YS5lc3RyZWUmJmUuZXZhbHVhdGVyKXtjb25zdCByPXQuZGF0YS5lc3RyZWUuYm9keVswXTtyZXR1cm4gci50eXBlLGUuZXZhbHVhdGVyLmV2YWx1YXRlRXhwcmVzc2lvbihyLmV4cHJlc3Npb24pfWlhKGUsdC5wb3NpdGlvbil9ZnVuY3Rpb24gVUYoZSx0KXtpZih0LmRhdGEmJnQuZGF0YS5lc3RyZWUmJmUuZXZhbHVhdGVyKXJldHVybiBlLmV2YWx1YXRlci5ldmFsdWF0ZVByb2dyYW0odC5kYXRhLmVzdHJlZSk7aWEoZSx0LnBvc2l0aW9uKX1mdW5jdGlvbiAkRihlLHQsbil7Y29uc3Qgcj1lLnNjaGVtYTtsZXQgaT1yO3QubmFtZT09PSJzdmciJiZyLnNwYWNlPT09Imh0bWwiJiYoaT1vbSxlLnNjaGVtYT1pKSxlLmFuY2VzdG9ycy5wdXNoKHQpO2NvbnN0IG89dC5uYW1lPT09bnVsbD9lLkZyYWdtZW50OlpTKGUsdC5uYW1lLCEwKSxzPVlGKGUsdCksYT1jbShlLHQpO3JldHVybiBKUyhlLHMsbyx0KSx1bShzLGEpLGUuYW5jZXN0b3JzLnBvcCgpLGUuc2NoZW1hPXIsZS5jcmVhdGUodCxvLHMsbil9ZnVuY3Rpb24gSEYoZSx0LG4pe2NvbnN0IHI9e307cmV0dXJuIHVtKHIsY20oZSx0KSksZS5jcmVhdGUodCxlLkZyYWdtZW50LHIsbil9ZnVuY3Rpb24gcUYoZSx0KXtyZXR1cm4gdC52YWx1ZX1mdW5jdGlvbiBKUyhlLHQsbixyKXt0eXBlb2YgbiE9InN0cmluZyImJm4hPT1lLkZyYWdtZW50JiZlLnBhc3NOb2RlJiYodC5ub2RlPXIpfWZ1bmN0aW9uIHVtKGUsdCl7aWYodC5sZW5ndGg+MCl7Y29uc3Qgbj10Lmxlbmd0aD4xP3Q6dFswXTtuJiYoZS5jaGlsZHJlbj1uKX19ZnVuY3Rpb24gV0YoZSx0LG4pe3JldHVybiByO2Z1bmN0aW9uIHIoaSxvLHMsYSl7Y29uc3QgdT1BcnJheS5pc0FycmF5KHMuY2hpbGRyZW4pP246dDtyZXR1cm4gYT91KG8scyxhKTp1KG8scyl9fWZ1bmN0aW9uIEtGKGUsdCl7cmV0dXJuIG47ZnVuY3Rpb24gbihyLGksbyxzKXtjb25zdCBhPUFycmF5LmlzQXJyYXkoby5jaGlsZHJlbiksbD1hbShyKTtyZXR1cm4gdChpLG8scyxhLHtjb2x1bW5OdW1iZXI6bD9sLmNvbHVtbi0xOnZvaWQgMCxmaWxlTmFtZTplLGxpbmVOdW1iZXI6bD9sLmxpbmU6dm9pZCAwfSx2b2lkIDApfX1mdW5jdGlvbiBHRihlLHQpe2NvbnN0IG49e307bGV0IHIsaTtmb3IoaSBpbiB0LnByb3BlcnRpZXMpaWYoaSE9PSJjaGlsZHJlbiImJmxtLmNhbGwodC5wcm9wZXJ0aWVzLGkpKXtjb25zdCBvPVFGKGUsaSx0LnByb3BlcnRpZXNbaV0pO2lmKG8pe2NvbnN0W3MsYV09bztlLnRhYmxlQ2VsbEFsaWduVG9TdHlsZSYmcz09PSJhbGlnbiImJnR5cGVvZiBhPT0ic3RyaW5nIiYmRkYuaGFzKHQudGFnTmFtZSk\/cj1hOm5bc109YX19aWYocil7Y29uc3Qgbz1uLnN0eWxlfHwobi5zdHlsZT17fSk7b1tlLnN0eWxlUHJvcGVydHlOYW1lQ2FzZT09PSJjc3MiPyJ0ZXh0LWFsaWduIjoidGV4dEFsaWduIl09cn1yZXR1cm4gbn1mdW5jdGlvbiBZRihlLHQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgb2YgdC5hdHRyaWJ1dGVzKWlmKHIudHlwZT09PSJtZHhKc3hFeHByZXNzaW9uQXR0cmlidXRlIilpZihyLmRhdGEmJnIuZGF0YS5lc3RyZWUmJmUuZXZhbHVhdGVyKXtjb25zdCBvPXIuZGF0YS5lc3RyZWUuYm9keVswXTtvLnR5cGU7Y29uc3Qgcz1vLmV4cHJlc3Npb247cy50eXBlO2NvbnN0IGE9cy5wcm9wZXJ0aWVzWzBdO2EudHlwZSxPYmplY3QuYXNzaWduKG4sZS5ldmFsdWF0ZXIuZXZhbHVhdGVFeHByZXNzaW9uKGEuYXJndW1lbnQpKX1lbHNlIGlhKGUsdC5wb3NpdGlvbik7ZWxzZXtjb25zdCBpPXIubmFtZTtsZXQgbztpZihyLnZhbHVlJiZ0eXBlb2Ygci52YWx1ZT09Im9iamVjdCIpaWYoci52YWx1ZS5kYXRhJiZyLnZhbHVlLmRhdGEuZXN0cmVlJiZlLmV2YWx1YXRlcil7Y29uc3QgYT1yLnZhbHVlLmRhdGEuZXN0cmVlLmJvZHlbMF07YS50eXBlLG89ZS5ldmFsdWF0ZXIuZXZhbHVhdGVFeHByZXNzaW9uKGEuZXhwcmVzc2lvbil9ZWxzZSBpYShlLHQucG9zaXRpb24pO2Vsc2Ugbz1yLnZhbHVlPT09bnVsbD8hMDpyLnZhbHVlO25baV09b31yZXR1cm4gbn1mdW5jdGlvbiBjbShlLHQpe2NvbnN0IG49W107bGV0IHI9LTE7Y29uc3QgaT1lLnBhc3NLZXlzP25ldyBNYXA6TUY7Zm9yKDsrK3I8dC5jaGlsZHJlbi5sZW5ndGg7KXtjb25zdCBvPXQuY2hpbGRyZW5bcl07bGV0IHM7aWYoZS5wYXNzS2V5cyl7Y29uc3QgbD1vLnR5cGU9PT0iZWxlbWVudCI\/by50YWdOYW1lOm8udHlwZT09PSJtZHhKc3hGbG93RWxlbWVudCJ8fG8udHlwZT09PSJtZHhKc3hUZXh0RWxlbWVudCI\/by5uYW1lOnZvaWQgMDtpZihsKXtjb25zdCB1PWkuZ2V0KGwpfHwwO3M9bCsiLSIrdSxpLnNldChsLHUrMSl9fWNvbnN0IGE9WFMoZSxvLHMpO2EhPT12b2lkIDAmJm4ucHVzaChhKX1yZXR1cm4gbn1mdW5jdGlvbiBRRihlLHQsbil7Y29uc3Qgcj10RihlLnNjaGVtYSx0KTtpZighKG49PW51bGx8fHR5cGVvZiBuPT0ibnVtYmVyIiYmTnVtYmVyLmlzTmFOKG4pKSl7aWYoQXJyYXkuaXNBcnJheShuKSYmKG49ci5jb21tYVNlcGFyYXRlZD8kTyhuKTpvRihuKSksci5wcm9wZXJ0eT09PSJzdHlsZSIpe2xldCBpPXR5cGVvZiBuPT0ib2JqZWN0Ij9uOlhGKGUsU3RyaW5nKG4pKTtyZXR1cm4gZS5zdHlsZVByb3BlcnR5TmFtZUNhc2U9PT0iY3NzIiYmKGk9SkYoaSkpLFsic3R5bGUiLGldfXJldHVybltlLmVsZW1lbnRBdHRyaWJ1dGVOYW1lQ2FzZT09PSJyZWFjdCImJnIuc3BhY2U\/Sk9bci5wcm9wZXJ0eV18fHIucHJvcGVydHk6ci5hdHRyaWJ1dGUsbl19fWZ1bmN0aW9uIFhGKGUsdCl7dHJ5e3JldHVybiBSRih0LHtyZWFjdENvbXBhdDohMH0pfWNhdGNoKG4pe2lmKGUuaWdub3JlSW52YWxpZFN0eWxlKXJldHVybnt9O2NvbnN0IHI9bixpPW5ldyBudCgiQ2Fubm90IHBhcnNlIGBzdHlsZWAgYXR0cmlidXRlIix7YW5jZXN0b3JzOmUuYW5jZXN0b3JzLGNhdXNlOnIscnVsZUlkOiJzdHlsZSIsc291cmNlOiJoYXN0LXV0aWwtdG8tanN4LXJ1bnRpbWUifSk7dGhyb3cgaS5maWxlPWUuZmlsZVBhdGh8fHZvaWQgMCxpLnVybD1RUysiI2Nhbm5vdC1wYXJzZS1zdHlsZS1hdHRyaWJ1dGUiLGl9fWZ1bmN0aW9uIFpTKGUsdCxuKXtsZXQgcjtpZighbilyPXt0eXBlOiJMaXRlcmFsIix2YWx1ZTp0fTtlbHNlIGlmKHQuaW5jbHVkZXMoIi4iKSl7Y29uc3QgaT10LnNwbGl0KCIuIik7bGV0IG89LTEscztmb3IoOysrbzxpLmxlbmd0aDspe2NvbnN0IGE9TXYoaVtvXSk\/e3R5cGU6IklkZW50aWZpZXIiLG5hbWU6aVtvXX06e3R5cGU6IkxpdGVyYWwiLHZhbHVlOmlbb119O3M9cz97dHlwZToiTWVtYmVyRXhwcmVzc2lvbiIsb2JqZWN0OnMscHJvcGVydHk6YSxjb21wdXRlZDohIShvJiZhLnR5cGU9PT0iTGl0ZXJhbCIpLG9wdGlvbmFsOiExfTphfXI9c31lbHNlIHI9TXYodCkmJiEvXlthLXpdLy50ZXN0KHQpP3t0eXBlOiJJZGVudGlmaWVyIixuYW1lOnR9Ont0eXBlOiJMaXRlcmFsIix2YWx1ZTp0fTtpZihyLnR5cGU9PT0iTGl0ZXJhbCIpe2NvbnN0IGk9ci52YWx1ZTtyZXR1cm4gbG0uY2FsbChlLmNvbXBvbmVudHMsaSk\/ZS5jb21wb25lbnRzW2ldOml9aWYoZS5ldmFsdWF0ZXIpcmV0dXJuIGUuZXZhbHVhdGVyLmV2YWx1YXRlRXhwcmVzc2lvbihyKTtpYShlKX1mdW5jdGlvbiBpYShlLHQpe2NvbnN0IG49bmV3IG50KCJDYW5ub3QgaGFuZGxlIE1EWCBlc3RyZWVzIHdpdGhvdXQgYGNyZWF0ZUV2YWx1YXRlcmAiLHthbmNlc3RvcnM6ZS5hbmNlc3RvcnMscGxhY2U6dCxydWxlSWQ6Im1keC1lc3RyZWUiLHNvdXJjZToiaGFzdC11dGlsLXRvLWpzeC1ydW50aW1lIn0pO3Rocm93IG4uZmlsZT1lLmZpbGVQYXRofHx2b2lkIDAsbi51cmw9UVMrIiNjYW5ub3QtaGFuZGxlLW1keC1lc3RyZWVzLXdpdGhvdXQtY3JlYXRlZXZhbHVhdGVyIixufWZ1bmN0aW9uIEpGKGUpe2NvbnN0IHQ9e307bGV0IG47Zm9yKG4gaW4gZSlsbS5jYWxsKGUsbikmJih0W1pGKG4pXT1lW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBaRihlKXtsZXQgdD1lLnJlcGxhY2UoTEYsZTUpO3JldHVybiB0LnNsaWNlKDAsMyk9PT0ibXMtIiYmKHQ9Ii0iK3QpLHR9ZnVuY3Rpb24gZTUoZSl7cmV0dXJuIi0iK2UudG9Mb3dlckNhc2UoKX1jb25zdCBvZD17YWN0aW9uOlsiZm9ybSJdLGNpdGU6WyJibG9ja3F1b3RlIiwiZGVsIiwiaW5zIiwicSJdLGRhdGE6WyJvYmplY3QiXSxmb3JtQWN0aW9uOlsiYnV0dG9uIiwiaW5wdXQiXSxocmVmOlsiYSIsImFyZWEiLCJiYXNlIiwibGluayJdLGljb246WyJtZW51aXRlbSJdLGl0ZW1JZDpudWxsLG1hbmlmZXN0OlsiaHRtbCJdLHBpbmc6WyJhIiwiYXJlYSJdLHBvc3RlcjpbInZpZGVvIl0sc3JjOlsiYXVkaW8iLCJlbWJlZCIsImlmcmFtZSIsImltZyIsImlucHV0Iiwic2NyaXB0Iiwic291cmNlIiwidHJhY2siLCJ2aWRlbyJdfSx0NT17fTtmdW5jdGlvbiBuNShlLHQpe2NvbnN0IG49dDUscj10eXBlb2Ygbi5pbmNsdWRlSW1hZ2VBbHQ9PSJib29sZWFuIj9uLmluY2x1ZGVJbWFnZUFsdDohMCxpPXR5cGVvZiBuLmluY2x1ZGVIdG1sPT0iYm9vbGVhbiI\/bi5pbmNsdWRlSHRtbDohMDtyZXR1cm4gZUMoZSxyLGkpfWZ1bmN0aW9uIGVDKGUsdCxuKXtpZihyNShlKSl7aWYoInZhbHVlImluIGUpcmV0dXJuIGUudHlwZT09PSJodG1sIiYmIW4\/IiI6ZS52YWx1ZTtpZih0JiYiYWx0ImluIGUmJmUuYWx0KXJldHVybiBlLmFsdDtpZigiY2hpbGRyZW4iaW4gZSlyZXR1cm4gV3YoZS5jaGlsZHJlbix0LG4pfXJldHVybiBBcnJheS5pc0FycmF5KGUpP1d2KGUsdCxuKToiIn1mdW5jdGlvbiBXdihlLHQsbil7Y29uc3Qgcj1bXTtsZXQgaT0tMTtmb3IoOysraTxlLmxlbmd0aDspcltpXT1lQyhlW2ldLHQsbik7cmV0dXJuIHIuam9pbigiIil9ZnVuY3Rpb24gcjUoZSl7cmV0dXJuISEoZSYmdHlwZW9mIGU9PSJvYmplY3QiKX1jb25zdCBLdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpIik7ZnVuY3Rpb24gZG0oZSl7Y29uc3QgdD0iJiIrZSsiOyI7S3YuaW5uZXJIVE1MPXQ7Y29uc3Qgbj1Ldi50ZXh0Q29udGVudDtyZXR1cm4gbi5jaGFyQ29kZUF0KG4ubGVuZ3RoLTEpPT09NTkmJmUhPT0ic2VtaSJ8fG49PT10PyExOm59ZnVuY3Rpb24gTG4oZSx0LG4scil7Y29uc3QgaT1lLmxlbmd0aDtsZXQgbz0wLHM7aWYodDwwP3Q9LXQ+aT8wOmkrdDp0PXQ+aT9pOnQsbj1uPjA\/bjowLHIubGVuZ3RoPDFlNClzPUFycmF5LmZyb20ocikscy51bnNoaWZ0KHQsbiksZS5zcGxpY2UoLi4ucyk7ZWxzZSBmb3IobiYmZS5zcGxpY2UodCxuKTtvPHIubGVuZ3RoOylzPXIuc2xpY2UobyxvKzFlNCkscy51bnNoaWZ0KHQsMCksZS5zcGxpY2UoLi4ucyksbys9MWU0LHQrPTFlNH1mdW5jdGlvbiBVdChlLHQpe3JldHVybiBlLmxlbmd0aD4wPyhMbihlLGUubGVuZ3RoLDAsdCksZSk6dH1jb25zdCBHdj17fS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBpNShlKXtjb25zdCB0PXt9O2xldCBuPS0xO2Zvcig7KytuPGUubGVuZ3RoOylvNSh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIG81KGUsdCl7bGV0IG47Zm9yKG4gaW4gdCl7Y29uc3QgaT0oR3YuY2FsbChlLG4pP2Vbbl06dm9pZCAwKXx8KGVbbl09e30pLG89dFtuXTtsZXQgcztpZihvKWZvcihzIGluIG8pe0d2LmNhbGwoaSxzKXx8KGlbc109W10pO2NvbnN0IGE9b1tzXTtzNShpW3NdLEFycmF5LmlzQXJyYXkoYSk\/YTphP1thXTpbXSl9fX1mdW5jdGlvbiBzNShlLHQpe2xldCBuPS0xO2NvbnN0IHI9W107Zm9yKDsrK248dC5sZW5ndGg7KSh0W25dLmFkZD09PSJhZnRlciI\/ZTpyKS5wdXNoKHRbbl0pO0xuKGUsMCwwLHIpfWZ1bmN0aW9uIHRDKGUsdCl7Y29uc3Qgbj1OdW1iZXIucGFyc2VJbnQoZSx0KTtyZXR1cm4gbjw5fHxuPT09MTF8fG4+MTMmJm48MzJ8fG4+MTI2JiZuPDE2MHx8bj41NTI5NSYmbjw1NzM0NHx8bj42NDk3NSYmbjw2NTAwOHx8KG4mNjU1MzUpPT09NjU1MzV8fChuJjY1NTM1KT09PTY1NTM0fHxuPjExMTQxMTE\/Iu+\/vSI6U3RyaW5nLmZyb21Db2RlUG9pbnQobil9ZnVuY3Rpb24gaG8oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1x0XG5cciBdKy9nLCIgIikucmVwbGFjZSgvXiB8ICQvZywiIikudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpfWNvbnN0IFBuPVFyKC9bQS1aYS16XS8pLGp0PVFyKC9bXGRBLVphLXpdLyksYTU9UXIoL1sjLScqK1wtLTk9P0EtWl4tfl0vKTtmdW5jdGlvbiBlaChlKXtyZXR1cm4gZSE9PW51bGwmJihlPDMyfHxlPT09MTI3KX1jb25zdCB0aD1RcigvXGQvKSxsNT1RcigvW1xkQS1GYS1mXS8pLHU1PVFyKC9bIS0vOi1AWy1gey1+XS8pO2Z1bmN0aW9uIEooZSl7cmV0dXJuIGUhPT1udWxsJiZlPC0yfWZ1bmN0aW9uIGt0KGUpe3JldHVybiBlIT09bnVsbCYmKGU8MHx8ZT09PTMyKX1mdW5jdGlvbiBkZShlKXtyZXR1cm4gZT09PS0yfHxlPT09LTF8fGU9PT0zMn1jb25zdCBjNT1RcihuZXcgUmVnRXhwKCJcXHB7UH18XFxwe1N9IiwidSIpKSxkNT1RcigvXHMvKTtmdW5jdGlvbiBRcihlKXtyZXR1cm4gdDtmdW5jdGlvbiB0KG4pe3JldHVybiBuIT09bnVsbCYmbj4tMSYmZS50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUobikpfX1mdW5jdGlvbiBXbyhlKXtjb25zdCB0PVtdO2xldCBuPS0xLHI9MCxpPTA7Zm9yKDsrK248ZS5sZW5ndGg7KXtjb25zdCBvPWUuY2hhckNvZGVBdChuKTtsZXQgcz0iIjtpZihvPT09MzcmJmp0KGUuY2hhckNvZGVBdChuKzEpKSYmanQoZS5jaGFyQ29kZUF0KG4rMikpKWk9MjtlbHNlIGlmKG88MTI4KS9bISMkJi07PT8tWl9hLXp+XS8udGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKG8pKXx8KHM9U3RyaW5nLmZyb21DaGFyQ29kZShvKSk7ZWxzZSBpZihvPjU1Mjk1JiZvPDU3MzQ0KXtjb25zdCBhPWUuY2hhckNvZGVBdChuKzEpO288NTYzMjAmJmE+NTYzMTkmJmE8NTczNDQ\/KHM9U3RyaW5nLmZyb21DaGFyQ29kZShvLGEpLGk9MSk6cz0i77+9In1lbHNlIHM9U3RyaW5nLmZyb21DaGFyQ29kZShvKTtzJiYodC5wdXNoKGUuc2xpY2UocixuKSxlbmNvZGVVUklDb21wb25lbnQocykpLHI9bitpKzEscz0iIiksaSYmKG4rPWksaT0wKX1yZXR1cm4gdC5qb2luKCIiKStlLnNsaWNlKHIpfWZ1bmN0aW9uIHllKGUsdCxuLHIpe2NvbnN0IGk9cj9yLTE6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBvPTA7cmV0dXJuIHM7ZnVuY3Rpb24gcyhsKXtyZXR1cm4gZGUobCk\/KGUuZW50ZXIobiksYShsKSk6dChsKX1mdW5jdGlvbiBhKGwpe3JldHVybiBkZShsKSYmbysrPGk\/KGUuY29uc3VtZShsKSxhKTooZS5leGl0KG4pLHQobCkpfX1jb25zdCBmNT17dG9rZW5pemU6aDV9O2Z1bmN0aW9uIGg1KGUpe2NvbnN0IHQ9ZS5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuY29udGVudEluaXRpYWwscixpKTtsZXQgbjtyZXR1cm4gdDtmdW5jdGlvbiByKGEpe2lmKGE9PT1udWxsKXtlLmNvbnN1bWUoYSk7cmV0dXJufXJldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKGEpLGUuZXhpdCgibGluZUVuZGluZyIpLHllKGUsdCwibGluZVByZWZpeCIpfWZ1bmN0aW9uIGkoYSl7cmV0dXJuIGUuZW50ZXIoInBhcmFncmFwaCIpLG8oYSl9ZnVuY3Rpb24gbyhhKXtjb25zdCBsPWUuZW50ZXIoImNodW5rVGV4dCIse2NvbnRlbnRUeXBlOiJ0ZXh0IixwcmV2aW91czpufSk7cmV0dXJuIG4mJihuLm5leHQ9bCksbj1sLHMoYSl9ZnVuY3Rpb24gcyhhKXtpZihhPT09bnVsbCl7ZS5leGl0KCJjaHVua1RleHQiKSxlLmV4aXQoInBhcmFncmFwaCIpLGUuY29uc3VtZShhKTtyZXR1cm59cmV0dXJuIEooYSk\/KGUuY29uc3VtZShhKSxlLmV4aXQoImNodW5rVGV4dCIpLG8pOihlLmNvbnN1bWUoYSkscyl9fWNvbnN0IHA1PXt0b2tlbml6ZTptNX0sWXY9e3Rva2VuaXplOmc1fTtmdW5jdGlvbiBtNShlKXtjb25zdCB0PXRoaXMsbj1bXTtsZXQgcj0wLGksbyxzO3JldHVybiBhO2Z1bmN0aW9uIGEoeCl7aWYocjxuLmxlbmd0aCl7Y29uc3Qgaz1uW3JdO3JldHVybiB0LmNvbnRhaW5lclN0YXRlPWtbMV0sZS5hdHRlbXB0KGtbMF0uY29udGludWF0aW9uLGwsdSkoeCl9cmV0dXJuIHUoeCl9ZnVuY3Rpb24gbCh4KXtpZihyKyssdC5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93KXt0LmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3c9dm9pZCAwLGkmJnYoKTtjb25zdCBrPXQuZXZlbnRzLmxlbmd0aDtsZXQgVD1rLEM7Zm9yKDtULS07KWlmKHQuZXZlbnRzW1RdWzBdPT09ImV4aXQiJiZ0LmV2ZW50c1tUXVsxXS50eXBlPT09ImNodW5rRmxvdyIpe0M9dC5ldmVudHNbVF1bMV0uZW5kO2JyZWFrfXAocik7bGV0IFA9aztmb3IoO1A8dC5ldmVudHMubGVuZ3RoOyl0LmV2ZW50c1tQXVsxXS5lbmQ9ey4uLkN9LFArKztyZXR1cm4gTG4odC5ldmVudHMsVCsxLDAsdC5ldmVudHMuc2xpY2UoaykpLHQuZXZlbnRzLmxlbmd0aD1QLHUoeCl9cmV0dXJuIGEoeCl9ZnVuY3Rpb24gdSh4KXtpZihyPT09bi5sZW5ndGgpe2lmKCFpKXJldHVybiBoKHgpO2lmKGkuY3VycmVudENvbnN0cnVjdCYmaS5jdXJyZW50Q29uc3RydWN0LmNvbmNyZXRlKXJldHVybiB5KHgpO3QuaW50ZXJydXB0PSEhKGkuY3VycmVudENvbnN0cnVjdCYmIWkuX2dmbVRhYmxlRHluYW1pY0ludGVycnVwdEhhY2spfXJldHVybiB0LmNvbnRhaW5lclN0YXRlPXt9LGUuY2hlY2soWXYsYyxkKSh4KX1mdW5jdGlvbiBjKHgpe3JldHVybiBpJiZ2KCkscChyKSxoKHgpfWZ1bmN0aW9uIGQoeCl7cmV0dXJuIHQucGFyc2VyLmxhenlbdC5ub3coKS5saW5lXT1yIT09bi5sZW5ndGgscz10Lm5vdygpLm9mZnNldCx5KHgpfWZ1bmN0aW9uIGgoeCl7cmV0dXJuIHQuY29udGFpbmVyU3RhdGU9e30sZS5hdHRlbXB0KFl2LGYseSkoeCl9ZnVuY3Rpb24gZih4KXtyZXR1cm4gcisrLG4ucHVzaChbdC5jdXJyZW50Q29uc3RydWN0LHQuY29udGFpbmVyU3RhdGVdKSxoKHgpfWZ1bmN0aW9uIHkoeCl7aWYoeD09PW51bGwpe2kmJnYoKSxwKDApLGUuY29uc3VtZSh4KTtyZXR1cm59cmV0dXJuIGk9aXx8dC5wYXJzZXIuZmxvdyh0Lm5vdygpKSxlLmVudGVyKCJjaHVua0Zsb3ciLHtfdG9rZW5pemVyOmksY29udGVudFR5cGU6ImZsb3ciLHByZXZpb3VzOm99KSxtKHgpfWZ1bmN0aW9uIG0oeCl7aWYoeD09PW51bGwpe3coZS5leGl0KCJjaHVua0Zsb3ciKSwhMCkscCgwKSxlLmNvbnN1bWUoeCk7cmV0dXJufXJldHVybiBKKHgpPyhlLmNvbnN1bWUoeCksdyhlLmV4aXQoImNodW5rRmxvdyIpKSxyPTAsdC5pbnRlcnJ1cHQ9dm9pZCAwLGEpOihlLmNvbnN1bWUoeCksbSl9ZnVuY3Rpb24gdyh4LGspe2NvbnN0IFQ9dC5zbGljZVN0cmVhbSh4KTtpZihrJiZULnB1c2gobnVsbCkseC5wcmV2aW91cz1vLG8mJihvLm5leHQ9eCksbz14LGkuZGVmaW5lU2tpcCh4LnN0YXJ0KSxpLndyaXRlKFQpLHQucGFyc2VyLmxhenlbeC5zdGFydC5saW5lXSl7bGV0IEM9aS5ldmVudHMubGVuZ3RoO2Zvcig7Qy0tOylpZihpLmV2ZW50c1tDXVsxXS5zdGFydC5vZmZzZXQ8cyYmKCFpLmV2ZW50c1tDXVsxXS5lbmR8fGkuZXZlbnRzW0NdWzFdLmVuZC5vZmZzZXQ+cykpcmV0dXJuO2NvbnN0IFA9dC5ldmVudHMubGVuZ3RoO2xldCBBPVAsaixJO2Zvcig7QS0tOylpZih0LmV2ZW50c1tBXVswXT09PSJleGl0IiYmdC5ldmVudHNbQV1bMV0udHlwZT09PSJjaHVua0Zsb3ciKXtpZihqKXtJPXQuZXZlbnRzW0FdWzFdLmVuZDticmVha31qPSEwfWZvcihwKHIpLEM9UDtDPHQuZXZlbnRzLmxlbmd0aDspdC5ldmVudHNbQ11bMV0uZW5kPXsuLi5JfSxDKys7TG4odC5ldmVudHMsQSsxLDAsdC5ldmVudHMuc2xpY2UoUCkpLHQuZXZlbnRzLmxlbmd0aD1DfX1mdW5jdGlvbiBwKHgpe2xldCBrPW4ubGVuZ3RoO2Zvcig7ay0tID54Oyl7Y29uc3QgVD1uW2tdO3QuY29udGFpbmVyU3RhdGU9VFsxXSxUWzBdLmV4aXQuY2FsbCh0LGUpfW4ubGVuZ3RoPXh9ZnVuY3Rpb24gdigpe2kud3JpdGUoW251bGxdKSxvPXZvaWQgMCxpPXZvaWQgMCx0LmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3c9dm9pZCAwfX1mdW5jdGlvbiBnNShlLHQsbil7cmV0dXJuIHllKGUsZS5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZG9jdW1lbnQsdCxuKSwibGluZVByZWZpeCIsdGhpcy5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KX1mdW5jdGlvbiBRdihlKXtpZihlPT09bnVsbHx8a3QoZSl8fGQ1KGUpKXJldHVybiAxO2lmKGM1KGUpKXJldHVybiAyfWZ1bmN0aW9uIGZtKGUsdCxuKXtjb25zdCByPVtdO2xldCBpPS0xO2Zvcig7KytpPGUubGVuZ3RoOyl7Y29uc3Qgbz1lW2ldLnJlc29sdmVBbGw7byYmIXIuaW5jbHVkZXMobykmJih0PW8odCxuKSxyLnB1c2gobykpfXJldHVybiB0fWNvbnN0IG5oPXtuYW1lOiJhdHRlbnRpb24iLHJlc29sdmVBbGw6eTUsdG9rZW5pemU6djV9O2Z1bmN0aW9uIHk1KGUsdCl7bGV0IG49LTEscixpLG8scyxhLGwsdSxjO2Zvcig7KytuPGUubGVuZ3RoOylpZihlW25dWzBdPT09ImVudGVyIiYmZVtuXVsxXS50eXBlPT09ImF0dGVudGlvblNlcXVlbmNlIiYmZVtuXVsxXS5fY2xvc2Upe2ZvcihyPW47ci0tOylpZihlW3JdWzBdPT09ImV4aXQiJiZlW3JdWzFdLnR5cGU9PT0iYXR0ZW50aW9uU2VxdWVuY2UiJiZlW3JdWzFdLl9vcGVuJiZ0LnNsaWNlU2VyaWFsaXplKGVbcl1bMV0pLmNoYXJDb2RlQXQoMCk9PT10LnNsaWNlU2VyaWFsaXplKGVbbl1bMV0pLmNoYXJDb2RlQXQoMCkpe2lmKChlW3JdWzFdLl9jbG9zZXx8ZVtuXVsxXS5fb3BlbikmJihlW25dWzFdLmVuZC5vZmZzZXQtZVtuXVsxXS5zdGFydC5vZmZzZXQpJTMmJiEoKGVbcl1bMV0uZW5kLm9mZnNldC1lW3JdWzFdLnN0YXJ0Lm9mZnNldCtlW25dWzFdLmVuZC5vZmZzZXQtZVtuXVsxXS5zdGFydC5vZmZzZXQpJTMpKWNvbnRpbnVlO2w9ZVtyXVsxXS5lbmQub2Zmc2V0LWVbcl1bMV0uc3RhcnQub2Zmc2V0PjEmJmVbbl1bMV0uZW5kLm9mZnNldC1lW25dWzFdLnN0YXJ0Lm9mZnNldD4xPzI6MTtjb25zdCBkPXsuLi5lW3JdWzFdLmVuZH0saD17Li4uZVtuXVsxXS5zdGFydH07WHYoZCwtbCksWHYoaCxsKSxzPXt0eXBlOmw+MT8ic3Ryb25nU2VxdWVuY2UiOiJlbXBoYXNpc1NlcXVlbmNlIixzdGFydDpkLGVuZDp7Li4uZVtyXVsxXS5lbmR9fSxhPXt0eXBlOmw+MT8ic3Ryb25nU2VxdWVuY2UiOiJlbXBoYXNpc1NlcXVlbmNlIixzdGFydDp7Li4uZVtuXVsxXS5zdGFydH0sZW5kOmh9LG89e3R5cGU6bD4xPyJzdHJvbmdUZXh0IjoiZW1waGFzaXNUZXh0IixzdGFydDp7Li4uZVtyXVsxXS5lbmR9LGVuZDp7Li4uZVtuXVsxXS5zdGFydH19LGk9e3R5cGU6bD4xPyJzdHJvbmciOiJlbXBoYXNpcyIsc3RhcnQ6ey4uLnMuc3RhcnR9LGVuZDp7Li4uYS5lbmR9fSxlW3JdWzFdLmVuZD17Li4ucy5zdGFydH0sZVtuXVsxXS5zdGFydD17Li4uYS5lbmR9LHU9W10sZVtyXVsxXS5lbmQub2Zmc2V0LWVbcl1bMV0uc3RhcnQub2Zmc2V0JiYodT1VdCh1LFtbImVudGVyIixlW3JdWzFdLHRdLFsiZXhpdCIsZVtyXVsxXSx0XV0pKSx1PVV0KHUsW1siZW50ZXIiLGksdF0sWyJlbnRlciIscyx0XSxbImV4aXQiLHMsdF0sWyJlbnRlciIsbyx0XV0pLHU9VXQodSxmbSh0LnBhcnNlci5jb25zdHJ1Y3RzLmluc2lkZVNwYW4ubnVsbCxlLnNsaWNlKHIrMSxuKSx0KSksdT1VdCh1LFtbImV4aXQiLG8sdF0sWyJlbnRlciIsYSx0XSxbImV4aXQiLGEsdF0sWyJleGl0IixpLHRdXSksZVtuXVsxXS5lbmQub2Zmc2V0LWVbbl1bMV0uc3RhcnQub2Zmc2V0PyhjPTIsdT1VdCh1LFtbImVudGVyIixlW25dWzFdLHRdLFsiZXhpdCIsZVtuXVsxXSx0XV0pKTpjPTAsTG4oZSxyLTEsbi1yKzMsdSksbj1yK3UubGVuZ3RoLWMtMjticmVha319Zm9yKG49LTE7KytuPGUubGVuZ3RoOyllW25dWzFdLnR5cGU9PT0iYXR0ZW50aW9uU2VxdWVuY2UiJiYoZVtuXVsxXS50eXBlPSJkYXRhIik7cmV0dXJuIGV9ZnVuY3Rpb24gdjUoZSx0KXtjb25zdCBuPXRoaXMucGFyc2VyLmNvbnN0cnVjdHMuYXR0ZW50aW9uTWFya2Vycy5udWxsLHI9dGhpcy5wcmV2aW91cyxpPVF2KHIpO2xldCBvO3JldHVybiBzO2Z1bmN0aW9uIHMobCl7cmV0dXJuIG89bCxlLmVudGVyKCJhdHRlbnRpb25TZXF1ZW5jZSIpLGEobCl9ZnVuY3Rpb24gYShsKXtpZihsPT09bylyZXR1cm4gZS5jb25zdW1lKGwpLGE7Y29uc3QgdT1lLmV4aXQoImF0dGVudGlvblNlcXVlbmNlIiksYz1RdihsKSxkPSFjfHxjPT09MiYmaXx8bi5pbmNsdWRlcyhsKSxoPSFpfHxpPT09MiYmY3x8bi5pbmNsdWRlcyhyKTtyZXR1cm4gdS5fb3Blbj0hIShvPT09NDI\/ZDpkJiYoaXx8IWgpKSx1Ll9jbG9zZT0hIShvPT09NDI\/aDpoJiYoY3x8IWQpKSx0KGwpfX1mdW5jdGlvbiBYdihlLHQpe2UuY29sdW1uKz10LGUub2Zmc2V0Kz10LGUuX2J1ZmZlckluZGV4Kz10fWNvbnN0IHg1PXtuYW1lOiJhdXRvbGluayIsdG9rZW5pemU6dzV9O2Z1bmN0aW9uIHc1KGUsdCxuKXtsZXQgcj0wO3JldHVybiBpO2Z1bmN0aW9uIGkoZil7cmV0dXJuIGUuZW50ZXIoImF1dG9saW5rIiksZS5lbnRlcigiYXV0b2xpbmtNYXJrZXIiKSxlLmNvbnN1bWUoZiksZS5leGl0KCJhdXRvbGlua01hcmtlciIpLGUuZW50ZXIoImF1dG9saW5rUHJvdG9jb2wiKSxvfWZ1bmN0aW9uIG8oZil7cmV0dXJuIFBuKGYpPyhlLmNvbnN1bWUoZikscyk6Zj09PTY0P24oZik6dShmKX1mdW5jdGlvbiBzKGYpe3JldHVybiBmPT09NDN8fGY9PT00NXx8Zj09PTQ2fHxqdChmKT8ocj0xLGEoZikpOnUoZil9ZnVuY3Rpb24gYShmKXtyZXR1cm4gZj09PTU4PyhlLmNvbnN1bWUoZikscj0wLGwpOihmPT09NDN8fGY9PT00NXx8Zj09PTQ2fHxqdChmKSkmJnIrKzwzMj8oZS5jb25zdW1lKGYpLGEpOihyPTAsdShmKSl9ZnVuY3Rpb24gbChmKXtyZXR1cm4gZj09PTYyPyhlLmV4aXQoImF1dG9saW5rUHJvdG9jb2wiKSxlLmVudGVyKCJhdXRvbGlua01hcmtlciIpLGUuY29uc3VtZShmKSxlLmV4aXQoImF1dG9saW5rTWFya2VyIiksZS5leGl0KCJhdXRvbGluayIpLHQpOmY9PT1udWxsfHxmPT09MzJ8fGY9PT02MHx8ZWgoZik\/bihmKTooZS5jb25zdW1lKGYpLGwpfWZ1bmN0aW9uIHUoZil7cmV0dXJuIGY9PT02ND8oZS5jb25zdW1lKGYpLGMpOmE1KGYpPyhlLmNvbnN1bWUoZiksdSk6bihmKX1mdW5jdGlvbiBjKGYpe3JldHVybiBqdChmKT9kKGYpOm4oZil9ZnVuY3Rpb24gZChmKXtyZXR1cm4gZj09PTQ2PyhlLmNvbnN1bWUoZikscj0wLGMpOmY9PT02Mj8oZS5leGl0KCJhdXRvbGlua1Byb3RvY29sIikudHlwZT0iYXV0b2xpbmtFbWFpbCIsZS5lbnRlcigiYXV0b2xpbmtNYXJrZXIiKSxlLmNvbnN1bWUoZiksZS5leGl0KCJhdXRvbGlua01hcmtlciIpLGUuZXhpdCgiYXV0b2xpbmsiKSx0KTpoKGYpfWZ1bmN0aW9uIGgoZil7aWYoKGY9PT00NXx8anQoZikpJiZyKys8NjMpe2NvbnN0IHk9Zj09PTQ1P2g6ZDtyZXR1cm4gZS5jb25zdW1lKGYpLHl9cmV0dXJuIG4oZil9fWNvbnN0IFp1PXtwYXJ0aWFsOiEwLHRva2VuaXplOmI1fTtmdW5jdGlvbiBiNShlLHQsbil7cmV0dXJuIHI7ZnVuY3Rpb24gcihvKXtyZXR1cm4gZGUobyk\/eWUoZSxpLCJsaW5lUHJlZml4Iikobyk6aShvKX1mdW5jdGlvbiBpKG8pe3JldHVybiBvPT09bnVsbHx8SihvKT90KG8pOm4obyl9fWNvbnN0IG5DPXtjb250aW51YXRpb246e3Rva2VuaXplOlM1fSxleGl0OkM1LG5hbWU6ImJsb2NrUXVvdGUiLHRva2VuaXplOms1fTtmdW5jdGlvbiBrNShlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiBpO2Z1bmN0aW9uIGkocyl7aWYocz09PTYyKXtjb25zdCBhPXIuY29udGFpbmVyU3RhdGU7cmV0dXJuIGEub3Blbnx8KGUuZW50ZXIoImJsb2NrUXVvdGUiLHtfY29udGFpbmVyOiEwfSksYS5vcGVuPSEwKSxlLmVudGVyKCJibG9ja1F1b3RlUHJlZml4IiksZS5lbnRlcigiYmxvY2tRdW90ZU1hcmtlciIpLGUuY29uc3VtZShzKSxlLmV4aXQoImJsb2NrUXVvdGVNYXJrZXIiKSxvfXJldHVybiBuKHMpfWZ1bmN0aW9uIG8ocyl7cmV0dXJuIGRlKHMpPyhlLmVudGVyKCJibG9ja1F1b3RlUHJlZml4V2hpdGVzcGFjZSIpLGUuY29uc3VtZShzKSxlLmV4aXQoImJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlIiksZS5leGl0KCJibG9ja1F1b3RlUHJlZml4IiksdCk6KGUuZXhpdCgiYmxvY2tRdW90ZVByZWZpeCIpLHQocykpfX1mdW5jdGlvbiBTNShlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiBpO2Z1bmN0aW9uIGkocyl7cmV0dXJuIGRlKHMpP3llKGUsbywibGluZVByZWZpeCIsci5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KShzKTpvKHMpfWZ1bmN0aW9uIG8ocyl7cmV0dXJuIGUuYXR0ZW1wdChuQyx0LG4pKHMpfX1mdW5jdGlvbiBDNShlKXtlLmV4aXQoImJsb2NrUXVvdGUiKX1jb25zdCByQz17bmFtZToiY2hhcmFjdGVyRXNjYXBlIix0b2tlbml6ZTpUNX07ZnVuY3Rpb24gVDUoZSx0LG4pe3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuIGUuZW50ZXIoImNoYXJhY3RlckVzY2FwZSIpLGUuZW50ZXIoImVzY2FwZU1hcmtlciIpLGUuY29uc3VtZShvKSxlLmV4aXQoImVzY2FwZU1hcmtlciIpLGl9ZnVuY3Rpb24gaShvKXtyZXR1cm4gdTUobyk\/KGUuZW50ZXIoImNoYXJhY3RlckVzY2FwZVZhbHVlIiksZS5jb25zdW1lKG8pLGUuZXhpdCgiY2hhcmFjdGVyRXNjYXBlVmFsdWUiKSxlLmV4aXQoImNoYXJhY3RlckVzY2FwZSIpLHQpOm4obyl9fWNvbnN0IGlDPXtuYW1lOiJjaGFyYWN0ZXJSZWZlcmVuY2UiLHRva2VuaXplOkU1fTtmdW5jdGlvbiBFNShlLHQsbil7Y29uc3Qgcj10aGlzO2xldCBpPTAsbyxzO3JldHVybiBhO2Z1bmN0aW9uIGEoZCl7cmV0dXJuIGUuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZSIpLGUuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlciIpLGUuY29uc3VtZShkKSxlLmV4aXQoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlciIpLGx9ZnVuY3Rpb24gbChkKXtyZXR1cm4gZD09PTM1PyhlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljIiksZS5jb25zdW1lKGQpLGUuZXhpdCgiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYyIpLHUpOihlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZSIpLG89MzEscz1qdCxjKGQpKX1mdW5jdGlvbiB1KGQpe3JldHVybiBkPT09ODh8fGQ9PT0xMjA\/KGUuZW50ZXIoImNoYXJhY3RlclJlZmVyZW5jZU1hcmtlckhleGFkZWNpbWFsIiksZS5jb25zdW1lKGQpLGUuZXhpdCgiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWwiKSxlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZSIpLG89NixzPWw1LGMpOihlLmVudGVyKCJjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZSIpLG89NyxzPXRoLGMoZCkpfWZ1bmN0aW9uIGMoZCl7aWYoZD09PTU5JiZpKXtjb25zdCBoPWUuZXhpdCgiY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUiKTtyZXR1cm4gcz09PWp0JiYhZG0oci5zbGljZVNlcmlhbGl6ZShoKSk\/bihkKTooZS5lbnRlcigiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyIiksZS5jb25zdW1lKGQpLGUuZXhpdCgiY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyIiksZS5leGl0KCJjaGFyYWN0ZXJSZWZlcmVuY2UiKSx0KX1yZXR1cm4gcyhkKSYmaSsrPG8\/KGUuY29uc3VtZShkKSxjKTpuKGQpfX1jb25zdCBKdj17cGFydGlhbDohMCx0b2tlbml6ZTpBNX0sWnY9e2NvbmNyZXRlOiEwLG5hbWU6ImNvZGVGZW5jZWQiLHRva2VuaXplOlA1fTtmdW5jdGlvbiBQNShlLHQsbil7Y29uc3Qgcj10aGlzLGk9e3BhcnRpYWw6ITAsdG9rZW5pemU6VH07bGV0IG89MCxzPTAsYTtyZXR1cm4gbDtmdW5jdGlvbiBsKEMpe3JldHVybiB1KEMpfWZ1bmN0aW9uIHUoQyl7Y29uc3QgUD1yLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIG89UCYmUFsxXS50eXBlPT09ImxpbmVQcmVmaXgiP1BbMl0uc2xpY2VTZXJpYWxpemUoUFsxXSwhMCkubGVuZ3RoOjAsYT1DLGUuZW50ZXIoImNvZGVGZW5jZWQiKSxlLmVudGVyKCJjb2RlRmVuY2VkRmVuY2UiKSxlLmVudGVyKCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLGMoQyl9ZnVuY3Rpb24gYyhDKXtyZXR1cm4gQz09PWE\/KHMrKyxlLmNvbnN1bWUoQyksYyk6czwzP24oQyk6KGUuZXhpdCgiY29kZUZlbmNlZEZlbmNlU2VxdWVuY2UiKSxkZShDKT95ZShlLGQsIndoaXRlc3BhY2UiKShDKTpkKEMpKX1mdW5jdGlvbiBkKEMpe3JldHVybiBDPT09bnVsbHx8SihDKT8oZS5leGl0KCJjb2RlRmVuY2VkRmVuY2UiKSxyLmludGVycnVwdD90KEMpOmUuY2hlY2soSnYsbSxrKShDKSk6KGUuZW50ZXIoImNvZGVGZW5jZWRGZW5jZUluZm8iKSxlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksaChDKSl9ZnVuY3Rpb24gaChDKXtyZXR1cm4gQz09PW51bGx8fEooQyk\/KGUuZXhpdCgiY2h1bmtTdHJpbmciKSxlLmV4aXQoImNvZGVGZW5jZWRGZW5jZUluZm8iKSxkKEMpKTpkZShDKT8oZS5leGl0KCJjaHVua1N0cmluZyIpLGUuZXhpdCgiY29kZUZlbmNlZEZlbmNlSW5mbyIpLHllKGUsZiwid2hpdGVzcGFjZSIpKEMpKTpDPT09OTYmJkM9PT1hP24oQyk6KGUuY29uc3VtZShDKSxoKX1mdW5jdGlvbiBmKEMpe3JldHVybiBDPT09bnVsbHx8SihDKT9kKEMpOihlLmVudGVyKCJjb2RlRmVuY2VkRmVuY2VNZXRhIiksZS5lbnRlcigiY2h1bmtTdHJpbmciLHtjb250ZW50VHlwZToic3RyaW5nIn0pLHkoQykpfWZ1bmN0aW9uIHkoQyl7cmV0dXJuIEM9PT1udWxsfHxKKEMpPyhlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KCJjb2RlRmVuY2VkRmVuY2VNZXRhIiksZChDKSk6Qz09PTk2JiZDPT09YT9uKEMpOihlLmNvbnN1bWUoQykseSl9ZnVuY3Rpb24gbShDKXtyZXR1cm4gZS5hdHRlbXB0KGksayx3KShDKX1mdW5jdGlvbiB3KEMpe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKEMpLGUuZXhpdCgibGluZUVuZGluZyIpLHB9ZnVuY3Rpb24gcChDKXtyZXR1cm4gbz4wJiZkZShDKT95ZShlLHYsImxpbmVQcmVmaXgiLG8rMSkoQyk6dihDKX1mdW5jdGlvbiB2KEMpe3JldHVybiBDPT09bnVsbHx8SihDKT9lLmNoZWNrKEp2LG0saykoQyk6KGUuZW50ZXIoImNvZGVGbG93VmFsdWUiKSx4KEMpKX1mdW5jdGlvbiB4KEMpe3JldHVybiBDPT09bnVsbHx8SihDKT8oZS5leGl0KCJjb2RlRmxvd1ZhbHVlIiksdihDKSk6KGUuY29uc3VtZShDKSx4KX1mdW5jdGlvbiBrKEMpe3JldHVybiBlLmV4aXQoImNvZGVGZW5jZWQiKSx0KEMpfWZ1bmN0aW9uIFQoQyxQLEEpe2xldCBqPTA7cmV0dXJuIEk7ZnVuY3Rpb24gSShVKXtyZXR1cm4gQy5lbnRlcigibGluZUVuZGluZyIpLEMuY29uc3VtZShVKSxDLmV4aXQoImxpbmVFbmRpbmciKSxNfWZ1bmN0aW9uIE0oVSl7cmV0dXJuIEMuZW50ZXIoImNvZGVGZW5jZWRGZW5jZSIpLGRlKFUpP3llKEMseiwibGluZVByZWZpeCIsci5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KShVKTp6KFUpfWZ1bmN0aW9uIHooVSl7cmV0dXJuIFU9PT1hPyhDLmVudGVyKCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLCQoVSkpOkEoVSl9ZnVuY3Rpb24gJChVKXtyZXR1cm4gVT09PWE\/KGorKyxDLmNvbnN1bWUoVSksJCk6aj49cz8oQy5leGl0KCJjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSIpLGRlKFUpP3llKEMsTywid2hpdGVzcGFjZSIpKFUpOk8oVSkpOkEoVSl9ZnVuY3Rpb24gTyhVKXtyZXR1cm4gVT09PW51bGx8fEooVSk\/KEMuZXhpdCgiY29kZUZlbmNlZEZlbmNlIiksUChVKSk6QShVKX19fWZ1bmN0aW9uIEE1KGUsdCxuKXtjb25zdCByPXRoaXM7cmV0dXJuIGk7ZnVuY3Rpb24gaShzKXtyZXR1cm4gcz09PW51bGw\/bihzKTooZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShzKSxlLmV4aXQoImxpbmVFbmRpbmciKSxvKX1mdW5jdGlvbiBvKHMpe3JldHVybiByLnBhcnNlci5sYXp5W3Iubm93KCkubGluZV0\/bihzKTp0KHMpfX1jb25zdCBzZD17bmFtZToiY29kZUluZGVudGVkIix0b2tlbml6ZTpONX0sSTU9e3BhcnRpYWw6ITAsdG9rZW5pemU6ajV9O2Z1bmN0aW9uIE41KGUsdCxuKXtjb25zdCByPXRoaXM7cmV0dXJuIGk7ZnVuY3Rpb24gaSh1KXtyZXR1cm4gZS5lbnRlcigiY29kZUluZGVudGVkIikseWUoZSxvLCJsaW5lUHJlZml4Iiw1KSh1KX1mdW5jdGlvbiBvKHUpe2NvbnN0IGM9ci5ldmVudHNbci5ldmVudHMubGVuZ3RoLTFdO3JldHVybiBjJiZjWzFdLnR5cGU9PT0ibGluZVByZWZpeCImJmNbMl0uc2xpY2VTZXJpYWxpemUoY1sxXSwhMCkubGVuZ3RoPj00P3ModSk6bih1KX1mdW5jdGlvbiBzKHUpe3JldHVybiB1PT09bnVsbD9sKHUpOkoodSk\/ZS5hdHRlbXB0KEk1LHMsbCkodSk6KGUuZW50ZXIoImNvZGVGbG93VmFsdWUiKSxhKHUpKX1mdW5jdGlvbiBhKHUpe3JldHVybiB1PT09bnVsbHx8Sih1KT8oZS5leGl0KCJjb2RlRmxvd1ZhbHVlIikscyh1KSk6KGUuY29uc3VtZSh1KSxhKX1mdW5jdGlvbiBsKHUpe3JldHVybiBlLmV4aXQoImNvZGVJbmRlbnRlZCIpLHQodSl9fWZ1bmN0aW9uIGo1KGUsdCxuKXtjb25zdCByPXRoaXM7cmV0dXJuIGk7ZnVuY3Rpb24gaShzKXtyZXR1cm4gci5wYXJzZXIubGF6eVtyLm5vdygpLmxpbmVdP24ocyk6SihzKT8oZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShzKSxlLmV4aXQoImxpbmVFbmRpbmciKSxpKTp5ZShlLG8sImxpbmVQcmVmaXgiLDUpKHMpfWZ1bmN0aW9uIG8ocyl7Y29uc3QgYT1yLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIGEmJmFbMV0udHlwZT09PSJsaW5lUHJlZml4IiYmYVsyXS5zbGljZVNlcmlhbGl6ZShhWzFdLCEwKS5sZW5ndGg+PTQ\/dChzKTpKKHMpP2kocyk6bihzKX19Y29uc3QgejU9e25hbWU6ImNvZGVUZXh0IixwcmV2aW91czpENSxyZXNvbHZlOlI1LHRva2VuaXplOk01fTtmdW5jdGlvbiBSNShlKXtsZXQgdD1lLmxlbmd0aC00LG49MyxyLGk7aWYoKGVbbl1bMV0udHlwZT09PSJsaW5lRW5kaW5nInx8ZVtuXVsxXS50eXBlPT09InNwYWNlIikmJihlW3RdWzFdLnR5cGU9PT0ibGluZUVuZGluZyJ8fGVbdF1bMV0udHlwZT09PSJzcGFjZSIpKXtmb3Iocj1uOysrcjx0OylpZihlW3JdWzFdLnR5cGU9PT0iY29kZVRleHREYXRhIil7ZVtuXVsxXS50eXBlPSJjb2RlVGV4dFBhZGRpbmciLGVbdF1bMV0udHlwZT0iY29kZVRleHRQYWRkaW5nIixuKz0yLHQtPTI7YnJlYWt9fWZvcihyPW4tMSx0Kys7KytyPD10OylpPT09dm9pZCAwP3IhPT10JiZlW3JdWzFdLnR5cGUhPT0ibGluZUVuZGluZyImJihpPXIpOihyPT09dHx8ZVtyXVsxXS50eXBlPT09ImxpbmVFbmRpbmciKSYmKGVbaV1bMV0udHlwZT0iY29kZVRleHREYXRhIixyIT09aSsyJiYoZVtpXVsxXS5lbmQ9ZVtyLTFdWzFdLmVuZCxlLnNwbGljZShpKzIsci1pLTIpLHQtPXItaS0yLHI9aSsyKSxpPXZvaWQgMCk7cmV0dXJuIGV9ZnVuY3Rpb24gRDUoZSl7cmV0dXJuIGUhPT05Nnx8dGhpcy5ldmVudHNbdGhpcy5ldmVudHMubGVuZ3RoLTFdWzFdLnR5cGU9PT0iY2hhcmFjdGVyRXNjYXBlIn1mdW5jdGlvbiBNNShlLHQsbil7bGV0IHI9MCxpLG87cmV0dXJuIHM7ZnVuY3Rpb24gcyhkKXtyZXR1cm4gZS5lbnRlcigiY29kZVRleHQiKSxlLmVudGVyKCJjb2RlVGV4dFNlcXVlbmNlIiksYShkKX1mdW5jdGlvbiBhKGQpe3JldHVybiBkPT09OTY\/KGUuY29uc3VtZShkKSxyKyssYSk6KGUuZXhpdCgiY29kZVRleHRTZXF1ZW5jZSIpLGwoZCkpfWZ1bmN0aW9uIGwoZCl7cmV0dXJuIGQ9PT1udWxsP24oZCk6ZD09PTMyPyhlLmVudGVyKCJzcGFjZSIpLGUuY29uc3VtZShkKSxlLmV4aXQoInNwYWNlIiksbCk6ZD09PTk2PyhvPWUuZW50ZXIoImNvZGVUZXh0U2VxdWVuY2UiKSxpPTAsYyhkKSk6SihkKT8oZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShkKSxlLmV4aXQoImxpbmVFbmRpbmciKSxsKTooZS5lbnRlcigiY29kZVRleHREYXRhIiksdShkKSl9ZnVuY3Rpb24gdShkKXtyZXR1cm4gZD09PW51bGx8fGQ9PT0zMnx8ZD09PTk2fHxKKGQpPyhlLmV4aXQoImNvZGVUZXh0RGF0YSIpLGwoZCkpOihlLmNvbnN1bWUoZCksdSl9ZnVuY3Rpb24gYyhkKXtyZXR1cm4gZD09PTk2PyhlLmNvbnN1bWUoZCksaSsrLGMpOmk9PT1yPyhlLmV4aXQoImNvZGVUZXh0U2VxdWVuY2UiKSxlLmV4aXQoImNvZGVUZXh0IiksdChkKSk6KG8udHlwZT0iY29kZVRleHREYXRhIix1KGQpKX19Y2xhc3MgTDV7Y29uc3RydWN0b3IodCl7dGhpcy5sZWZ0PXQ\/Wy4uLnRdOltdLHRoaXMucmlnaHQ9W119Z2V0KHQpe2lmKHQ8MHx8dD49dGhpcy5sZWZ0Lmxlbmd0aCt0aGlzLnJpZ2h0Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQ2Fubm90IGFjY2VzcyBpbmRleCBgIit0KyJgIGluIGEgc3BsaWNlIGJ1ZmZlciBvZiBzaXplIGAiKyh0aGlzLmxlZnQubGVuZ3RoK3RoaXMucmlnaHQubGVuZ3RoKSsiYCIpO3JldHVybiB0PHRoaXMubGVmdC5sZW5ndGg\/dGhpcy5sZWZ0W3RdOnRoaXMucmlnaHRbdGhpcy5yaWdodC5sZW5ndGgtdCt0aGlzLmxlZnQubGVuZ3RoLTFdfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sZWZ0Lmxlbmd0aCt0aGlzLnJpZ2h0Lmxlbmd0aH1zaGlmdCgpe3JldHVybiB0aGlzLnNldEN1cnNvcigwKSx0aGlzLnJpZ2h0LnBvcCgpfXNsaWNlKHQsbil7Y29uc3Qgcj1uPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7cmV0dXJuIHI8dGhpcy5sZWZ0Lmxlbmd0aD90aGlzLmxlZnQuc2xpY2UodCxyKTp0PnRoaXMubGVmdC5sZW5ndGg\/dGhpcy5yaWdodC5zbGljZSh0aGlzLnJpZ2h0Lmxlbmd0aC1yK3RoaXMubGVmdC5sZW5ndGgsdGhpcy5yaWdodC5sZW5ndGgtdCt0aGlzLmxlZnQubGVuZ3RoKS5yZXZlcnNlKCk6dGhpcy5sZWZ0LnNsaWNlKHQpLmNvbmNhdCh0aGlzLnJpZ2h0LnNsaWNlKHRoaXMucmlnaHQubGVuZ3RoLXIrdGhpcy5sZWZ0Lmxlbmd0aCkucmV2ZXJzZSgpKX1zcGxpY2UodCxuLHIpe2NvbnN0IGk9bnx8MDt0aGlzLnNldEN1cnNvcihNYXRoLnRydW5jKHQpKTtjb25zdCBvPXRoaXMucmlnaHQuc3BsaWNlKHRoaXMucmlnaHQubGVuZ3RoLWksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtyZXR1cm4gciYmb3ModGhpcy5sZWZ0LHIpLG8ucmV2ZXJzZSgpfXBvcCgpe3JldHVybiB0aGlzLnNldEN1cnNvcihOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLHRoaXMubGVmdC5wb3AoKX1wdXNoKHQpe3RoaXMuc2V0Q3Vyc29yKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSksdGhpcy5sZWZ0LnB1c2godCl9cHVzaE1hbnkodCl7dGhpcy5zZXRDdXJzb3IoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxvcyh0aGlzLmxlZnQsdCl9dW5zaGlmdCh0KXt0aGlzLnNldEN1cnNvcigwKSx0aGlzLnJpZ2h0LnB1c2godCl9dW5zaGlmdE1hbnkodCl7dGhpcy5zZXRDdXJzb3IoMCksb3ModGhpcy5yaWdodCx0LnJldmVyc2UoKSl9c2V0Q3Vyc29yKHQpe2lmKCEodD09PXRoaXMubGVmdC5sZW5ndGh8fHQ+dGhpcy5sZWZ0Lmxlbmd0aCYmdGhpcy5yaWdodC5sZW5ndGg9PT0wfHx0PDAmJnRoaXMubGVmdC5sZW5ndGg9PT0wKSlpZih0PHRoaXMubGVmdC5sZW5ndGgpe2NvbnN0IG49dGhpcy5sZWZ0LnNwbGljZSh0LE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7b3ModGhpcy5yaWdodCxuLnJldmVyc2UoKSl9ZWxzZXtjb25zdCBuPXRoaXMucmlnaHQuc3BsaWNlKHRoaXMubGVmdC5sZW5ndGgrdGhpcy5yaWdodC5sZW5ndGgtdCxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO29zKHRoaXMubGVmdCxuLnJldmVyc2UoKSl9fX1mdW5jdGlvbiBvcyhlLHQpe2xldCBuPTA7aWYodC5sZW5ndGg8MWU0KWUucHVzaCguLi50KTtlbHNlIGZvcig7bjx0Lmxlbmd0aDspZS5wdXNoKC4uLnQuc2xpY2UobixuKzFlNCkpLG4rPTFlNH1mdW5jdGlvbiBvQyhlKXtjb25zdCB0PXt9O2xldCBuPS0xLHIsaSxvLHMsYSxsLHU7Y29uc3QgYz1uZXcgTDUoZSk7Zm9yKDsrK248Yy5sZW5ndGg7KXtmb3IoO24gaW4gdDspbj10W25dO2lmKHI9Yy5nZXQobiksbiYmclsxXS50eXBlPT09ImNodW5rRmxvdyImJmMuZ2V0KG4tMSlbMV0udHlwZT09PSJsaXN0SXRlbVByZWZpeCImJihsPXJbMV0uX3Rva2VuaXplci5ldmVudHMsbz0wLG88bC5sZW5ndGgmJmxbb11bMV0udHlwZT09PSJsaW5lRW5kaW5nQmxhbmsiJiYobys9MiksbzxsLmxlbmd0aCYmbFtvXVsxXS50eXBlPT09ImNvbnRlbnQiKSlmb3IoOysrbzxsLmxlbmd0aCYmbFtvXVsxXS50eXBlIT09ImNvbnRlbnQiOylsW29dWzFdLnR5cGU9PT0iY2h1bmtUZXh0IiYmKGxbb11bMV0uX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtPSEwLG8rKyk7aWYoclswXT09PSJlbnRlciIpclsxXS5jb250ZW50VHlwZSYmKE9iamVjdC5hc3NpZ24odCxPNShjLG4pKSxuPXRbbl0sdT0hMCk7ZWxzZSBpZihyWzFdLl9jb250YWluZXIpe2ZvcihvPW4saT12b2lkIDA7by0tOylpZihzPWMuZ2V0KG8pLHNbMV0udHlwZT09PSJsaW5lRW5kaW5nInx8c1sxXS50eXBlPT09ImxpbmVFbmRpbmdCbGFuayIpc1swXT09PSJlbnRlciImJihpJiYoYy5nZXQoaSlbMV0udHlwZT0ibGluZUVuZGluZ0JsYW5rIiksc1sxXS50eXBlPSJsaW5lRW5kaW5nIixpPW8pO2Vsc2UgaWYoIShzWzFdLnR5cGU9PT0ibGluZVByZWZpeCJ8fHNbMV0udHlwZT09PSJsaXN0SXRlbUluZGVudCIpKWJyZWFrO2kmJihyWzFdLmVuZD17Li4uYy5nZXQoaSlbMV0uc3RhcnR9LGE9Yy5zbGljZShpLG4pLGEudW5zaGlmdChyKSxjLnNwbGljZShpLG4taSsxLGEpKX19cmV0dXJuIExuKGUsMCxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYy5zbGljZSgwKSksIXV9ZnVuY3Rpb24gTzUoZSx0KXtjb25zdCBuPWUuZ2V0KHQpWzFdLHI9ZS5nZXQodClbMl07bGV0IGk9dC0xO2NvbnN0IG89W107bGV0IHM9bi5fdG9rZW5pemVyO3N8fChzPXIucGFyc2VyW24uY29udGVudFR5cGVdKG4uc3RhcnQpLG4uX2NvbnRlbnRUeXBlVGV4dFRyYWlsaW5nJiYocy5fY29udGVudFR5cGVUZXh0VHJhaWxpbmc9ITApKTtjb25zdCBhPXMuZXZlbnRzLGw9W10sdT17fTtsZXQgYyxkLGg9LTEsZj1uLHk9MCxtPTA7Y29uc3Qgdz1bbV07Zm9yKDtmOyl7Zm9yKDtlLmdldCgrK2kpWzFdIT09ZjspO28ucHVzaChpKSxmLl90b2tlbml6ZXJ8fChjPXIuc2xpY2VTdHJlYW0oZiksZi5uZXh0fHxjLnB1c2gobnVsbCksZCYmcy5kZWZpbmVTa2lwKGYuc3RhcnQpLGYuX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtJiYocy5fZ2ZtVGFza2xpc3RGaXJzdENvbnRlbnRPZkxpc3RJdGVtPSEwKSxzLndyaXRlKGMpLGYuX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtJiYocy5fZ2ZtVGFza2xpc3RGaXJzdENvbnRlbnRPZkxpc3RJdGVtPXZvaWQgMCkpLGQ9ZixmPWYubmV4dH1mb3IoZj1uOysraDxhLmxlbmd0aDspYVtoXVswXT09PSJleGl0IiYmYVtoLTFdWzBdPT09ImVudGVyIiYmYVtoXVsxXS50eXBlPT09YVtoLTFdWzFdLnR5cGUmJmFbaF1bMV0uc3RhcnQubGluZSE9PWFbaF1bMV0uZW5kLmxpbmUmJihtPWgrMSx3LnB1c2gobSksZi5fdG9rZW5pemVyPXZvaWQgMCxmLnByZXZpb3VzPXZvaWQgMCxmPWYubmV4dCk7Zm9yKHMuZXZlbnRzPVtdLGY\/KGYuX3Rva2VuaXplcj12b2lkIDAsZi5wcmV2aW91cz12b2lkIDApOncucG9wKCksaD13Lmxlbmd0aDtoLS07KXtjb25zdCBwPWEuc2xpY2Uod1toXSx3W2grMV0pLHY9by5wb3AoKTtsLnB1c2goW3YsditwLmxlbmd0aC0xXSksZS5zcGxpY2UodiwyLHApfWZvcihsLnJldmVyc2UoKSxoPS0xOysraDxsLmxlbmd0aDspdVt5K2xbaF1bMF1dPXkrbFtoXVsxXSx5Kz1sW2hdWzFdLWxbaF1bMF0tMTtyZXR1cm4gdX1jb25zdCBGNT17cmVzb2x2ZTpWNSx0b2tlbml6ZTpCNX0sXzU9e3BhcnRpYWw6ITAsdG9rZW5pemU6VTV9O2Z1bmN0aW9uIFY1KGUpe3JldHVybiBvQyhlKSxlfWZ1bmN0aW9uIEI1KGUsdCl7bGV0IG47cmV0dXJuIHI7ZnVuY3Rpb24gcihhKXtyZXR1cm4gZS5lbnRlcigiY29udGVudCIpLG49ZS5lbnRlcigiY2h1bmtDb250ZW50Iix7Y29udGVudFR5cGU6ImNvbnRlbnQifSksaShhKX1mdW5jdGlvbiBpKGEpe3JldHVybiBhPT09bnVsbD9vKGEpOkooYSk\/ZS5jaGVjayhfNSxzLG8pKGEpOihlLmNvbnN1bWUoYSksaSl9ZnVuY3Rpb24gbyhhKXtyZXR1cm4gZS5leGl0KCJjaHVua0NvbnRlbnQiKSxlLmV4aXQoImNvbnRlbnQiKSx0KGEpfWZ1bmN0aW9uIHMoYSl7cmV0dXJuIGUuY29uc3VtZShhKSxlLmV4aXQoImNodW5rQ29udGVudCIpLG4ubmV4dD1lLmVudGVyKCJjaHVua0NvbnRlbnQiLHtjb250ZW50VHlwZToiY29udGVudCIscHJldmlvdXM6bn0pLG49bi5uZXh0LGl9fWZ1bmN0aW9uIFU1KGUsdCxuKXtjb25zdCByPXRoaXM7cmV0dXJuIGk7ZnVuY3Rpb24gaShzKXtyZXR1cm4gZS5leGl0KCJjaHVua0NvbnRlbnQiKSxlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHMpLGUuZXhpdCgibGluZUVuZGluZyIpLHllKGUsbywibGluZVByZWZpeCIpfWZ1bmN0aW9uIG8ocyl7aWYocz09PW51bGx8fEoocykpcmV0dXJuIG4ocyk7Y29uc3QgYT1yLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV07cmV0dXJuIXIucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCJjb2RlSW5kZW50ZWQiKSYmYSYmYVsxXS50eXBlPT09ImxpbmVQcmVmaXgiJiZhWzJdLnNsaWNlU2VyaWFsaXplKGFbMV0sITApLmxlbmd0aD49ND90KHMpOmUuaW50ZXJydXB0KHIucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxuLHQpKHMpfX1mdW5jdGlvbiBzQyhlLHQsbixyLGksbyxzLGEsbCl7Y29uc3QgdT1sfHxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bGV0IGM9MDtyZXR1cm4gZDtmdW5jdGlvbiBkKHApe3JldHVybiBwPT09NjA\/KGUuZW50ZXIociksZS5lbnRlcihpKSxlLmVudGVyKG8pLGUuY29uc3VtZShwKSxlLmV4aXQobyksaCk6cD09PW51bGx8fHA9PT0zMnx8cD09PTQxfHxlaChwKT9uKHApOihlLmVudGVyKHIpLGUuZW50ZXIocyksZS5lbnRlcihhKSxlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksbShwKSl9ZnVuY3Rpb24gaChwKXtyZXR1cm4gcD09PTYyPyhlLmVudGVyKG8pLGUuY29uc3VtZShwKSxlLmV4aXQobyksZS5leGl0KGkpLGUuZXhpdChyKSx0KTooZS5lbnRlcihhKSxlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksZihwKSl9ZnVuY3Rpb24gZihwKXtyZXR1cm4gcD09PTYyPyhlLmV4aXQoImNodW5rU3RyaW5nIiksZS5leGl0KGEpLGgocCkpOnA9PT1udWxsfHxwPT09NjB8fEoocCk\/bihwKTooZS5jb25zdW1lKHApLHA9PT05Mj95OmYpfWZ1bmN0aW9uIHkocCl7cmV0dXJuIHA9PT02MHx8cD09PTYyfHxwPT09OTI\/KGUuY29uc3VtZShwKSxmKTpmKHApfWZ1bmN0aW9uIG0ocCl7cmV0dXJuIWMmJihwPT09bnVsbHx8cD09PTQxfHxrdChwKSk\/KGUuZXhpdCgiY2h1bmtTdHJpbmciKSxlLmV4aXQoYSksZS5leGl0KHMpLGUuZXhpdChyKSx0KHApKTpjPHUmJnA9PT00MD8oZS5jb25zdW1lKHApLGMrKyxtKTpwPT09NDE\/KGUuY29uc3VtZShwKSxjLS0sbSk6cD09PW51bGx8fHA9PT0zMnx8cD09PTQwfHxlaChwKT9uKHApOihlLmNvbnN1bWUocCkscD09PTkyP3c6bSl9ZnVuY3Rpb24gdyhwKXtyZXR1cm4gcD09PTQwfHxwPT09NDF8fHA9PT05Mj8oZS5jb25zdW1lKHApLG0pOm0ocCl9fWZ1bmN0aW9uIGFDKGUsdCxuLHIsaSxvKXtjb25zdCBzPXRoaXM7bGV0IGE9MCxsO3JldHVybiB1O2Z1bmN0aW9uIHUoZil7cmV0dXJuIGUuZW50ZXIociksZS5lbnRlcihpKSxlLmNvbnN1bWUoZiksZS5leGl0KGkpLGUuZW50ZXIobyksY31mdW5jdGlvbiBjKGYpe3JldHVybiBhPjk5OXx8Zj09PW51bGx8fGY9PT05MXx8Zj09PTkzJiYhbHx8Zj09PTk0JiYhYSYmIl9oaWRkZW5Gb290bm90ZVN1cHBvcnQiaW4gcy5wYXJzZXIuY29uc3RydWN0cz9uKGYpOmY9PT05Mz8oZS5leGl0KG8pLGUuZW50ZXIoaSksZS5jb25zdW1lKGYpLGUuZXhpdChpKSxlLmV4aXQociksdCk6SihmKT8oZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShmKSxlLmV4aXQoImxpbmVFbmRpbmciKSxjKTooZS5lbnRlcigiY2h1bmtTdHJpbmciLHtjb250ZW50VHlwZToic3RyaW5nIn0pLGQoZikpfWZ1bmN0aW9uIGQoZil7cmV0dXJuIGY9PT1udWxsfHxmPT09OTF8fGY9PT05M3x8SihmKXx8YSsrPjk5OT8oZS5leGl0KCJjaHVua1N0cmluZyIpLGMoZikpOihlLmNvbnN1bWUoZiksbHx8KGw9IWRlKGYpKSxmPT09OTI\/aDpkKX1mdW5jdGlvbiBoKGYpe3JldHVybiBmPT09OTF8fGY9PT05Mnx8Zj09PTkzPyhlLmNvbnN1bWUoZiksYSsrLGQpOmQoZil9fWZ1bmN0aW9uIGxDKGUsdCxuLHIsaSxvKXtsZXQgcztyZXR1cm4gYTtmdW5jdGlvbiBhKGgpe3JldHVybiBoPT09MzR8fGg9PT0zOXx8aD09PTQwPyhlLmVudGVyKHIpLGUuZW50ZXIoaSksZS5jb25zdW1lKGgpLGUuZXhpdChpKSxzPWg9PT00MD80MTpoLGwpOm4oaCl9ZnVuY3Rpb24gbChoKXtyZXR1cm4gaD09PXM\/KGUuZW50ZXIoaSksZS5jb25zdW1lKGgpLGUuZXhpdChpKSxlLmV4aXQociksdCk6KGUuZW50ZXIobyksdShoKSl9ZnVuY3Rpb24gdShoKXtyZXR1cm4gaD09PXM\/KGUuZXhpdChvKSxsKHMpKTpoPT09bnVsbD9uKGgpOkooaCk\/KGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUoaCksZS5leGl0KCJsaW5lRW5kaW5nIikseWUoZSx1LCJsaW5lUHJlZml4IikpOihlLmVudGVyKCJjaHVua1N0cmluZyIse2NvbnRlbnRUeXBlOiJzdHJpbmcifSksYyhoKSl9ZnVuY3Rpb24gYyhoKXtyZXR1cm4gaD09PXN8fGg9PT1udWxsfHxKKGgpPyhlLmV4aXQoImNodW5rU3RyaW5nIiksdShoKSk6KGUuY29uc3VtZShoKSxoPT09OTI\/ZDpjKX1mdW5jdGlvbiBkKGgpe3JldHVybiBoPT09c3x8aD09PTkyPyhlLmNvbnN1bWUoaCksYyk6YyhoKX19ZnVuY3Rpb24gUHMoZSx0KXtsZXQgbjtyZXR1cm4gcjtmdW5jdGlvbiByKGkpe3JldHVybiBKKGkpPyhlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKGkpLGUuZXhpdCgibGluZUVuZGluZyIpLG49ITAscik6ZGUoaSk\/eWUoZSxyLG4\/ImxpbmVQcmVmaXgiOiJsaW5lU3VmZml4IikoaSk6dChpKX19Y29uc3QgJDU9e25hbWU6ImRlZmluaXRpb24iLHRva2VuaXplOnE1fSxINT17cGFydGlhbDohMCx0b2tlbml6ZTpXNX07ZnVuY3Rpb24gcTUoZSx0LG4pe2NvbnN0IHI9dGhpcztsZXQgaTtyZXR1cm4gbztmdW5jdGlvbiBvKGYpe3JldHVybiBlLmVudGVyKCJkZWZpbml0aW9uIikscyhmKX1mdW5jdGlvbiBzKGYpe3JldHVybiBhQy5jYWxsKHIsZSxhLG4sImRlZmluaXRpb25MYWJlbCIsImRlZmluaXRpb25MYWJlbE1hcmtlciIsImRlZmluaXRpb25MYWJlbFN0cmluZyIpKGYpfWZ1bmN0aW9uIGEoZil7cmV0dXJuIGk9aG8oci5zbGljZVNlcmlhbGl6ZShyLmV2ZW50c1tyLmV2ZW50cy5sZW5ndGgtMV1bMV0pLnNsaWNlKDEsLTEpKSxmPT09NTg\/KGUuZW50ZXIoImRlZmluaXRpb25NYXJrZXIiKSxlLmNvbnN1bWUoZiksZS5leGl0KCJkZWZpbml0aW9uTWFya2VyIiksbCk6bihmKX1mdW5jdGlvbiBsKGYpe3JldHVybiBrdChmKT9QcyhlLHUpKGYpOnUoZil9ZnVuY3Rpb24gdShmKXtyZXR1cm4gc0MoZSxjLG4sImRlZmluaXRpb25EZXN0aW5hdGlvbiIsImRlZmluaXRpb25EZXN0aW5hdGlvbkxpdGVyYWwiLCJkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsTWFya2VyIiwiZGVmaW5pdGlvbkRlc3RpbmF0aW9uUmF3IiwiZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nIikoZil9ZnVuY3Rpb24gYyhmKXtyZXR1cm4gZS5hdHRlbXB0KEg1LGQsZCkoZil9ZnVuY3Rpb24gZChmKXtyZXR1cm4gZGUoZik\/eWUoZSxoLCJ3aGl0ZXNwYWNlIikoZik6aChmKX1mdW5jdGlvbiBoKGYpe3JldHVybiBmPT09bnVsbHx8SihmKT8oZS5leGl0KCJkZWZpbml0aW9uIiksci5wYXJzZXIuZGVmaW5lZC5wdXNoKGkpLHQoZikpOm4oZil9fWZ1bmN0aW9uIFc1KGUsdCxuKXtyZXR1cm4gcjtmdW5jdGlvbiByKGEpe3JldHVybiBrdChhKT9QcyhlLGkpKGEpOm4oYSl9ZnVuY3Rpb24gaShhKXtyZXR1cm4gbEMoZSxvLG4sImRlZmluaXRpb25UaXRsZSIsImRlZmluaXRpb25UaXRsZU1hcmtlciIsImRlZmluaXRpb25UaXRsZVN0cmluZyIpKGEpfWZ1bmN0aW9uIG8oYSl7cmV0dXJuIGRlKGEpP3llKGUscywid2hpdGVzcGFjZSIpKGEpOnMoYSl9ZnVuY3Rpb24gcyhhKXtyZXR1cm4gYT09PW51bGx8fEooYSk\/dChhKTpuKGEpfX1jb25zdCBLNT17bmFtZToiaGFyZEJyZWFrRXNjYXBlIix0b2tlbml6ZTpHNX07ZnVuY3Rpb24gRzUoZSx0LG4pe3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuIGUuZW50ZXIoImhhcmRCcmVha0VzY2FwZSIpLGUuY29uc3VtZShvKSxpfWZ1bmN0aW9uIGkobyl7cmV0dXJuIEoobyk\/KGUuZXhpdCgiaGFyZEJyZWFrRXNjYXBlIiksdChvKSk6bihvKX19Y29uc3QgWTU9e25hbWU6ImhlYWRpbmdBdHgiLHJlc29sdmU6UTUsdG9rZW5pemU6WDV9O2Z1bmN0aW9uIFE1KGUsdCl7bGV0IG49ZS5sZW5ndGgtMixyPTMsaSxvO3JldHVybiBlW3JdWzFdLnR5cGU9PT0id2hpdGVzcGFjZSImJihyKz0yKSxuLTI+ciYmZVtuXVsxXS50eXBlPT09IndoaXRlc3BhY2UiJiYobi09MiksZVtuXVsxXS50eXBlPT09ImF0eEhlYWRpbmdTZXF1ZW5jZSImJihyPT09bi0xfHxuLTQ+ciYmZVtuLTJdWzFdLnR5cGU9PT0id2hpdGVzcGFjZSIpJiYobi09cisxPT09bj8yOjQpLG4+ciYmKGk9e3R5cGU6ImF0eEhlYWRpbmdUZXh0IixzdGFydDplW3JdWzFdLnN0YXJ0LGVuZDplW25dWzFdLmVuZH0sbz17dHlwZToiY2h1bmtUZXh0IixzdGFydDplW3JdWzFdLnN0YXJ0LGVuZDplW25dWzFdLmVuZCxjb250ZW50VHlwZToidGV4dCJ9LExuKGUscixuLXIrMSxbWyJlbnRlciIsaSx0XSxbImVudGVyIixvLHRdLFsiZXhpdCIsbyx0XSxbImV4aXQiLGksdF1dKSksZX1mdW5jdGlvbiBYNShlLHQsbil7bGV0IHI9MDtyZXR1cm4gaTtmdW5jdGlvbiBpKGMpe3JldHVybiBlLmVudGVyKCJhdHhIZWFkaW5nIiksbyhjKX1mdW5jdGlvbiBvKGMpe3JldHVybiBlLmVudGVyKCJhdHhIZWFkaW5nU2VxdWVuY2UiKSxzKGMpfWZ1bmN0aW9uIHMoYyl7cmV0dXJuIGM9PT0zNSYmcisrPDY\/KGUuY29uc3VtZShjKSxzKTpjPT09bnVsbHx8a3QoYyk\/KGUuZXhpdCgiYXR4SGVhZGluZ1NlcXVlbmNlIiksYShjKSk6bihjKX1mdW5jdGlvbiBhKGMpe3JldHVybiBjPT09MzU\/KGUuZW50ZXIoImF0eEhlYWRpbmdTZXF1ZW5jZSIpLGwoYykpOmM9PT1udWxsfHxKKGMpPyhlLmV4aXQoImF0eEhlYWRpbmciKSx0KGMpKTpkZShjKT95ZShlLGEsIndoaXRlc3BhY2UiKShjKTooZS5lbnRlcigiYXR4SGVhZGluZ1RleHQiKSx1KGMpKX1mdW5jdGlvbiBsKGMpe3JldHVybiBjPT09MzU\/KGUuY29uc3VtZShjKSxsKTooZS5leGl0KCJhdHhIZWFkaW5nU2VxdWVuY2UiKSxhKGMpKX1mdW5jdGlvbiB1KGMpe3JldHVybiBjPT09bnVsbHx8Yz09PTM1fHxrdChjKT8oZS5leGl0KCJhdHhIZWFkaW5nVGV4dCIpLGEoYykpOihlLmNvbnN1bWUoYyksdSl9fWNvbnN0IEo1PVsiYWRkcmVzcyIsImFydGljbGUiLCJhc2lkZSIsImJhc2UiLCJiYXNlZm9udCIsImJsb2NrcXVvdGUiLCJib2R5IiwiY2FwdGlvbiIsImNlbnRlciIsImNvbCIsImNvbGdyb3VwIiwiZGQiLCJkZXRhaWxzIiwiZGlhbG9nIiwiZGlyIiwiZGl2IiwiZGwiLCJkdCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJmcmFtZSIsImZyYW1lc2V0IiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhyIiwiaHRtbCIsImlmcmFtZSIsImxlZ2VuZCIsImxpIiwibGluayIsIm1haW4iLCJtZW51IiwibWVudWl0ZW0iLCJuYXYiLCJub2ZyYW1lcyIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJwIiwicGFyYW0iLCJzZWFyY2giLCJzZWN0aW9uIiwic3VtbWFyeSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ0cmFjayIsInVsIl0sZTA9WyJwcmUiLCJzY3JpcHQiLCJzdHlsZSIsInRleHRhcmVhIl0sWjU9e2NvbmNyZXRlOiEwLG5hbWU6Imh0bWxGbG93IixyZXNvbHZlVG86bjQsdG9rZW5pemU6cjR9LGU0PXtwYXJ0aWFsOiEwLHRva2VuaXplOm80fSx0ND17cGFydGlhbDohMCx0b2tlbml6ZTppNH07ZnVuY3Rpb24gbjQoZSl7bGV0IHQ9ZS5sZW5ndGg7Zm9yKDt0LS0mJiEoZVt0XVswXT09PSJlbnRlciImJmVbdF1bMV0udHlwZT09PSJodG1sRmxvdyIpOyk7cmV0dXJuIHQ+MSYmZVt0LTJdWzFdLnR5cGU9PT0ibGluZVByZWZpeCImJihlW3RdWzFdLnN0YXJ0PWVbdC0yXVsxXS5zdGFydCxlW3QrMV1bMV0uc3RhcnQ9ZVt0LTJdWzFdLnN0YXJ0LGUuc3BsaWNlKHQtMiwyKSksZX1mdW5jdGlvbiByNChlLHQsbil7Y29uc3Qgcj10aGlzO2xldCBpLG8scyxhLGw7cmV0dXJuIHU7ZnVuY3Rpb24gdShFKXtyZXR1cm4gYyhFKX1mdW5jdGlvbiBjKEUpe3JldHVybiBlLmVudGVyKCJodG1sRmxvdyIpLGUuZW50ZXIoImh0bWxGbG93RGF0YSIpLGUuY29uc3VtZShFKSxkfWZ1bmN0aW9uIGQoRSl7cmV0dXJuIEU9PT0zMz8oZS5jb25zdW1lKEUpLGgpOkU9PT00Nz8oZS5jb25zdW1lKEUpLG89ITAsbSk6RT09PTYzPyhlLmNvbnN1bWUoRSksaT0zLHIuaW50ZXJydXB0P3Q6Uyk6UG4oRSk\/KGUuY29uc3VtZShFKSxzPVN0cmluZy5mcm9tQ2hhckNvZGUoRSksdyk6bihFKX1mdW5jdGlvbiBoKEUpe3JldHVybiBFPT09NDU\/KGUuY29uc3VtZShFKSxpPTIsZik6RT09PTkxPyhlLmNvbnN1bWUoRSksaT01LGE9MCx5KTpQbihFKT8oZS5jb25zdW1lKEUpLGk9NCxyLmludGVycnVwdD90OlMpOm4oRSl9ZnVuY3Rpb24gZihFKXtyZXR1cm4gRT09PTQ1PyhlLmNvbnN1bWUoRSksci5pbnRlcnJ1cHQ\/dDpTKTpuKEUpfWZ1bmN0aW9uIHkoRSl7Y29uc3QgWD0iQ0RBVEFbIjtyZXR1cm4gRT09PVguY2hhckNvZGVBdChhKyspPyhlLmNvbnN1bWUoRSksYT09PVgubGVuZ3RoP3IuaW50ZXJydXB0P3Q6ejp5KTpuKEUpfWZ1bmN0aW9uIG0oRSl7cmV0dXJuIFBuKEUpPyhlLmNvbnN1bWUoRSkscz1TdHJpbmcuZnJvbUNoYXJDb2RlKEUpLHcpOm4oRSl9ZnVuY3Rpb24gdyhFKXtpZihFPT09bnVsbHx8RT09PTQ3fHxFPT09NjJ8fGt0KEUpKXtjb25zdCBYPUU9PT00NyxmZT1zLnRvTG93ZXJDYXNlKCk7cmV0dXJuIVgmJiFvJiZlMC5pbmNsdWRlcyhmZSk\/KGk9MSxyLmludGVycnVwdD90KEUpOnooRSkpOko1LmluY2x1ZGVzKHMudG9Mb3dlckNhc2UoKSk\/KGk9NixYPyhlLmNvbnN1bWUoRSkscCk6ci5pbnRlcnJ1cHQ\/dChFKTp6KEUpKTooaT03LHIuaW50ZXJydXB0JiYhci5wYXJzZXIubGF6eVtyLm5vdygpLmxpbmVdP24oRSk6bz92KEUpOngoRSkpfXJldHVybiBFPT09NDV8fGp0KEUpPyhlLmNvbnN1bWUoRSkscys9U3RyaW5nLmZyb21DaGFyQ29kZShFKSx3KTpuKEUpfWZ1bmN0aW9uIHAoRSl7cmV0dXJuIEU9PT02Mj8oZS5jb25zdW1lKEUpLHIuaW50ZXJydXB0P3Q6eik6bihFKX1mdW5jdGlvbiB2KEUpe3JldHVybiBkZShFKT8oZS5jb25zdW1lKEUpLHYpOkkoRSl9ZnVuY3Rpb24geChFKXtyZXR1cm4gRT09PTQ3PyhlLmNvbnN1bWUoRSksSSk6RT09PTU4fHxFPT09OTV8fFBuKEUpPyhlLmNvbnN1bWUoRSksayk6ZGUoRSk\/KGUuY29uc3VtZShFKSx4KTpJKEUpfWZ1bmN0aW9uIGsoRSl7cmV0dXJuIEU9PT00NXx8RT09PTQ2fHxFPT09NTh8fEU9PT05NXx8anQoRSk\/KGUuY29uc3VtZShFKSxrKTpUKEUpfWZ1bmN0aW9uIFQoRSl7cmV0dXJuIEU9PT02MT8oZS5jb25zdW1lKEUpLEMpOmRlKEUpPyhlLmNvbnN1bWUoRSksVCk6eChFKX1mdW5jdGlvbiBDKEUpe3JldHVybiBFPT09bnVsbHx8RT09PTYwfHxFPT09NjF8fEU9PT02Mnx8RT09PTk2P24oRSk6RT09PTM0fHxFPT09Mzk\/KGUuY29uc3VtZShFKSxsPUUsUCk6ZGUoRSk\/KGUuY29uc3VtZShFKSxDKTpBKEUpfWZ1bmN0aW9uIFAoRSl7cmV0dXJuIEU9PT1sPyhlLmNvbnN1bWUoRSksbD1udWxsLGopOkU9PT1udWxsfHxKKEUpP24oRSk6KGUuY29uc3VtZShFKSxQKX1mdW5jdGlvbiBBKEUpe3JldHVybiBFPT09bnVsbHx8RT09PTM0fHxFPT09Mzl8fEU9PT00N3x8RT09PTYwfHxFPT09NjF8fEU9PT02Mnx8RT09PTk2fHxrdChFKT9UKEUpOihlLmNvbnN1bWUoRSksQSl9ZnVuY3Rpb24gaihFKXtyZXR1cm4gRT09PTQ3fHxFPT09NjJ8fGRlKEUpP3goRSk6bihFKX1mdW5jdGlvbiBJKEUpe3JldHVybiBFPT09NjI\/KGUuY29uc3VtZShFKSxNKTpuKEUpfWZ1bmN0aW9uIE0oRSl7cmV0dXJuIEU9PT1udWxsfHxKKEUpP3ooRSk6ZGUoRSk\/KGUuY29uc3VtZShFKSxNKTpuKEUpfWZ1bmN0aW9uIHooRSl7cmV0dXJuIEU9PT00NSYmaT09PTI\/KGUuY29uc3VtZShFKSxIKTpFPT09NjAmJmk9PT0xPyhlLmNvbnN1bWUoRSksRyk6RT09PTYyJiZpPT09ND8oZS5jb25zdW1lKEUpLFkpOkU9PT02MyYmaT09PTM\/KGUuY29uc3VtZShFKSxTKTpFPT09OTMmJmk9PT01PyhlLmNvbnN1bWUoRSksUik6SihFKSYmKGk9PT02fHxpPT09Nyk\/KGUuZXhpdCgiaHRtbEZsb3dEYXRhIiksZS5jaGVjayhlNCxxLCQpKEUpKTpFPT09bnVsbHx8SihFKT8oZS5leGl0KCJodG1sRmxvd0RhdGEiKSwkKEUpKTooZS5jb25zdW1lKEUpLHopfWZ1bmN0aW9uICQoRSl7cmV0dXJuIGUuY2hlY2sodDQsTyxxKShFKX1mdW5jdGlvbiBPKEUpe3JldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKEUpLGUuZXhpdCgibGluZUVuZGluZyIpLFV9ZnVuY3Rpb24gVShFKXtyZXR1cm4gRT09PW51bGx8fEooRSk\/JChFKTooZS5lbnRlcigiaHRtbEZsb3dEYXRhIikseihFKSl9ZnVuY3Rpb24gSChFKXtyZXR1cm4gRT09PTQ1PyhlLmNvbnN1bWUoRSksUyk6eihFKX1mdW5jdGlvbiBHKEUpe3JldHVybiBFPT09NDc\/KGUuY29uc3VtZShFKSxzPSIiLE4pOnooRSl9ZnVuY3Rpb24gTihFKXtpZihFPT09NjIpe2NvbnN0IFg9cy50b0xvd2VyQ2FzZSgpO3JldHVybiBlMC5pbmNsdWRlcyhYKT8oZS5jb25zdW1lKEUpLFkpOnooRSl9cmV0dXJuIFBuKEUpJiZzLmxlbmd0aDw4PyhlLmNvbnN1bWUoRSkscys9U3RyaW5nLmZyb21DaGFyQ29kZShFKSxOKTp6KEUpfWZ1bmN0aW9uIFIoRSl7cmV0dXJuIEU9PT05Mz8oZS5jb25zdW1lKEUpLFMpOnooRSl9ZnVuY3Rpb24gUyhFKXtyZXR1cm4gRT09PTYyPyhlLmNvbnN1bWUoRSksWSk6RT09PTQ1JiZpPT09Mj8oZS5jb25zdW1lKEUpLFMpOnooRSl9ZnVuY3Rpb24gWShFKXtyZXR1cm4gRT09PW51bGx8fEooRSk\/KGUuZXhpdCgiaHRtbEZsb3dEYXRhIikscShFKSk6KGUuY29uc3VtZShFKSxZKX1mdW5jdGlvbiBxKEUpe3JldHVybiBlLmV4aXQoImh0bWxGbG93IiksdChFKX19ZnVuY3Rpb24gaTQoZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gaTtmdW5jdGlvbiBpKHMpe3JldHVybiBKKHMpPyhlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKHMpLGUuZXhpdCgibGluZUVuZGluZyIpLG8pOm4ocyl9ZnVuY3Rpb24gbyhzKXtyZXR1cm4gci5wYXJzZXIubGF6eVtyLm5vdygpLmxpbmVdP24ocyk6dChzKX19ZnVuY3Rpb24gbzQoZSx0LG4pe3JldHVybiByO2Z1bmN0aW9uIHIoaSl7cmV0dXJuIGUuZW50ZXIoImxpbmVFbmRpbmciKSxlLmNvbnN1bWUoaSksZS5leGl0KCJsaW5lRW5kaW5nIiksZS5hdHRlbXB0KFp1LHQsbil9fWNvbnN0IHM0PXtuYW1lOiJodG1sVGV4dCIsdG9rZW5pemU6YTR9O2Z1bmN0aW9uIGE0KGUsdCxuKXtjb25zdCByPXRoaXM7bGV0IGksbyxzO3JldHVybiBhO2Z1bmN0aW9uIGEoUyl7cmV0dXJuIGUuZW50ZXIoImh0bWxUZXh0IiksZS5lbnRlcigiaHRtbFRleHREYXRhIiksZS5jb25zdW1lKFMpLGx9ZnVuY3Rpb24gbChTKXtyZXR1cm4gUz09PTMzPyhlLmNvbnN1bWUoUyksdSk6Uz09PTQ3PyhlLmNvbnN1bWUoUyksVCk6Uz09PTYzPyhlLmNvbnN1bWUoUykseCk6UG4oUyk\/KGUuY29uc3VtZShTKSxBKTpuKFMpfWZ1bmN0aW9uIHUoUyl7cmV0dXJuIFM9PT00NT8oZS5jb25zdW1lKFMpLGMpOlM9PT05MT8oZS5jb25zdW1lKFMpLG89MCx5KTpQbihTKT8oZS5jb25zdW1lKFMpLHYpOm4oUyl9ZnVuY3Rpb24gYyhTKXtyZXR1cm4gUz09PTQ1PyhlLmNvbnN1bWUoUyksZik6bihTKX1mdW5jdGlvbiBkKFMpe3JldHVybiBTPT09bnVsbD9uKFMpOlM9PT00NT8oZS5jb25zdW1lKFMpLGgpOkooUyk\/KHM9ZCxHKFMpKTooZS5jb25zdW1lKFMpLGQpfWZ1bmN0aW9uIGgoUyl7cmV0dXJuIFM9PT00NT8oZS5jb25zdW1lKFMpLGYpOmQoUyl9ZnVuY3Rpb24gZihTKXtyZXR1cm4gUz09PTYyP0goUyk6Uz09PTQ1P2goUyk6ZChTKX1mdW5jdGlvbiB5KFMpe2NvbnN0IFk9IkNEQVRBWyI7cmV0dXJuIFM9PT1ZLmNoYXJDb2RlQXQobysrKT8oZS5jb25zdW1lKFMpLG89PT1ZLmxlbmd0aD9tOnkpOm4oUyl9ZnVuY3Rpb24gbShTKXtyZXR1cm4gUz09PW51bGw\/bihTKTpTPT09OTM\/KGUuY29uc3VtZShTKSx3KTpKKFMpPyhzPW0sRyhTKSk6KGUuY29uc3VtZShTKSxtKX1mdW5jdGlvbiB3KFMpe3JldHVybiBTPT09OTM\/KGUuY29uc3VtZShTKSxwKTptKFMpfWZ1bmN0aW9uIHAoUyl7cmV0dXJuIFM9PT02Mj9IKFMpOlM9PT05Mz8oZS5jb25zdW1lKFMpLHApOm0oUyl9ZnVuY3Rpb24gdihTKXtyZXR1cm4gUz09PW51bGx8fFM9PT02Mj9IKFMpOkooUyk\/KHM9dixHKFMpKTooZS5jb25zdW1lKFMpLHYpfWZ1bmN0aW9uIHgoUyl7cmV0dXJuIFM9PT1udWxsP24oUyk6Uz09PTYzPyhlLmNvbnN1bWUoUyksayk6SihTKT8ocz14LEcoUykpOihlLmNvbnN1bWUoUykseCl9ZnVuY3Rpb24gayhTKXtyZXR1cm4gUz09PTYyP0goUyk6eChTKX1mdW5jdGlvbiBUKFMpe3JldHVybiBQbihTKT8oZS5jb25zdW1lKFMpLEMpOm4oUyl9ZnVuY3Rpb24gQyhTKXtyZXR1cm4gUz09PTQ1fHxqdChTKT8oZS5jb25zdW1lKFMpLEMpOlAoUyl9ZnVuY3Rpb24gUChTKXtyZXR1cm4gSihTKT8ocz1QLEcoUykpOmRlKFMpPyhlLmNvbnN1bWUoUyksUCk6SChTKX1mdW5jdGlvbiBBKFMpe3JldHVybiBTPT09NDV8fGp0KFMpPyhlLmNvbnN1bWUoUyksQSk6Uz09PTQ3fHxTPT09NjJ8fGt0KFMpP2ooUyk6bihTKX1mdW5jdGlvbiBqKFMpe3JldHVybiBTPT09NDc\/KGUuY29uc3VtZShTKSxIKTpTPT09NTh8fFM9PT05NXx8UG4oUyk\/KGUuY29uc3VtZShTKSxJKTpKKFMpPyhzPWosRyhTKSk6ZGUoUyk\/KGUuY29uc3VtZShTKSxqKTpIKFMpfWZ1bmN0aW9uIEkoUyl7cmV0dXJuIFM9PT00NXx8Uz09PTQ2fHxTPT09NTh8fFM9PT05NXx8anQoUyk\/KGUuY29uc3VtZShTKSxJKTpNKFMpfWZ1bmN0aW9uIE0oUyl7cmV0dXJuIFM9PT02MT8oZS5jb25zdW1lKFMpLHopOkooUyk\/KHM9TSxHKFMpKTpkZShTKT8oZS5jb25zdW1lKFMpLE0pOmooUyl9ZnVuY3Rpb24geihTKXtyZXR1cm4gUz09PW51bGx8fFM9PT02MHx8Uz09PTYxfHxTPT09NjJ8fFM9PT05Nj9uKFMpOlM9PT0zNHx8Uz09PTM5PyhlLmNvbnN1bWUoUyksaT1TLCQpOkooUyk\/KHM9eixHKFMpKTpkZShTKT8oZS5jb25zdW1lKFMpLHopOihlLmNvbnN1bWUoUyksTyl9ZnVuY3Rpb24gJChTKXtyZXR1cm4gUz09PWk\/KGUuY29uc3VtZShTKSxpPXZvaWQgMCxVKTpTPT09bnVsbD9uKFMpOkooUyk\/KHM9JCxHKFMpKTooZS5jb25zdW1lKFMpLCQpfWZ1bmN0aW9uIE8oUyl7cmV0dXJuIFM9PT1udWxsfHxTPT09MzR8fFM9PT0zOXx8Uz09PTYwfHxTPT09NjF8fFM9PT05Nj9uKFMpOlM9PT00N3x8Uz09PTYyfHxrdChTKT9qKFMpOihlLmNvbnN1bWUoUyksTyl9ZnVuY3Rpb24gVShTKXtyZXR1cm4gUz09PTQ3fHxTPT09NjJ8fGt0KFMpP2ooUyk6bihTKX1mdW5jdGlvbiBIKFMpe3JldHVybiBTPT09NjI\/KGUuY29uc3VtZShTKSxlLmV4aXQoImh0bWxUZXh0RGF0YSIpLGUuZXhpdCgiaHRtbFRleHQiKSx0KTpuKFMpfWZ1bmN0aW9uIEcoUyl7cmV0dXJuIGUuZXhpdCgiaHRtbFRleHREYXRhIiksZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShTKSxlLmV4aXQoImxpbmVFbmRpbmciKSxOfWZ1bmN0aW9uIE4oUyl7cmV0dXJuIGRlKFMpP3llKGUsUiwibGluZVByZWZpeCIsci5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo0KShTKTpSKFMpfWZ1bmN0aW9uIFIoUyl7cmV0dXJuIGUuZW50ZXIoImh0bWxUZXh0RGF0YSIpLHMoUyl9fWNvbnN0IGhtPXtuYW1lOiJsYWJlbEVuZCIscmVzb2x2ZUFsbDpkNCxyZXNvbHZlVG86ZjQsdG9rZW5pemU6aDR9LGw0PXt0b2tlbml6ZTpwNH0sdTQ9e3Rva2VuaXplOm00fSxjND17dG9rZW5pemU6ZzR9O2Z1bmN0aW9uIGQ0KGUpe2xldCB0PS0xO2NvbnN0IG49W107Zm9yKDsrK3Q8ZS5sZW5ndGg7KXtjb25zdCByPWVbdF1bMV07aWYobi5wdXNoKGVbdF0pLHIudHlwZT09PSJsYWJlbEltYWdlInx8ci50eXBlPT09ImxhYmVsTGluayJ8fHIudHlwZT09PSJsYWJlbEVuZCIpe2NvbnN0IGk9ci50eXBlPT09ImxhYmVsSW1hZ2UiPzQ6MjtyLnR5cGU9ImRhdGEiLHQrPWl9fXJldHVybiBlLmxlbmd0aCE9PW4ubGVuZ3RoJiZMbihlLDAsZS5sZW5ndGgsbiksZX1mdW5jdGlvbiBmNChlLHQpe2xldCBuPWUubGVuZ3RoLHI9MCxpLG8scyxhO2Zvcig7bi0tOylpZihpPWVbbl1bMV0sbyl7aWYoaS50eXBlPT09ImxpbmsifHxpLnR5cGU9PT0ibGFiZWxMaW5rIiYmaS5faW5hY3RpdmUpYnJlYWs7ZVtuXVswXT09PSJlbnRlciImJmkudHlwZT09PSJsYWJlbExpbmsiJiYoaS5faW5hY3RpdmU9ITApfWVsc2UgaWYocyl7aWYoZVtuXVswXT09PSJlbnRlciImJihpLnR5cGU9PT0ibGFiZWxJbWFnZSJ8fGkudHlwZT09PSJsYWJlbExpbmsiKSYmIWkuX2JhbGFuY2VkJiYobz1uLGkudHlwZSE9PSJsYWJlbExpbmsiKSl7cj0yO2JyZWFrfX1lbHNlIGkudHlwZT09PSJsYWJlbEVuZCImJihzPW4pO2NvbnN0IGw9e3R5cGU6ZVtvXVsxXS50eXBlPT09ImxhYmVsTGluayI\/ImxpbmsiOiJpbWFnZSIsc3RhcnQ6ey4uLmVbb11bMV0uc3RhcnR9LGVuZDp7Li4uZVtlLmxlbmd0aC0xXVsxXS5lbmR9fSx1PXt0eXBlOiJsYWJlbCIsc3RhcnQ6ey4uLmVbb11bMV0uc3RhcnR9LGVuZDp7Li4uZVtzXVsxXS5lbmR9fSxjPXt0eXBlOiJsYWJlbFRleHQiLHN0YXJ0OnsuLi5lW28rcisyXVsxXS5lbmR9LGVuZDp7Li4uZVtzLTJdWzFdLnN0YXJ0fX07cmV0dXJuIGE9W1siZW50ZXIiLGwsdF0sWyJlbnRlciIsdSx0XV0sYT1VdChhLGUuc2xpY2UobysxLG8rciszKSksYT1VdChhLFtbImVudGVyIixjLHRdXSksYT1VdChhLGZtKHQucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsLGUuc2xpY2UobytyKzQscy0zKSx0KSksYT1VdChhLFtbImV4aXQiLGMsdF0sZVtzLTJdLGVbcy0xXSxbImV4aXQiLHUsdF1dKSxhPVV0KGEsZS5zbGljZShzKzEpKSxhPVV0KGEsW1siZXhpdCIsbCx0XV0pLExuKGUsbyxlLmxlbmd0aCxhKSxlfWZ1bmN0aW9uIGg0KGUsdCxuKXtjb25zdCByPXRoaXM7bGV0IGk9ci5ldmVudHMubGVuZ3RoLG8scztmb3IoO2ktLTspaWYoKHIuZXZlbnRzW2ldWzFdLnR5cGU9PT0ibGFiZWxJbWFnZSJ8fHIuZXZlbnRzW2ldWzFdLnR5cGU9PT0ibGFiZWxMaW5rIikmJiFyLmV2ZW50c1tpXVsxXS5fYmFsYW5jZWQpe289ci5ldmVudHNbaV1bMV07YnJlYWt9cmV0dXJuIGE7ZnVuY3Rpb24gYShoKXtyZXR1cm4gbz9vLl9pbmFjdGl2ZT9kKGgpOihzPXIucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoaG8oci5zbGljZVNlcmlhbGl6ZSh7c3RhcnQ6by5lbmQsZW5kOnIubm93KCl9KSkpLGUuZW50ZXIoImxhYmVsRW5kIiksZS5lbnRlcigibGFiZWxNYXJrZXIiKSxlLmNvbnN1bWUoaCksZS5leGl0KCJsYWJlbE1hcmtlciIpLGUuZXhpdCgibGFiZWxFbmQiKSxsKTpuKGgpfWZ1bmN0aW9uIGwoaCl7cmV0dXJuIGg9PT00MD9lLmF0dGVtcHQobDQsYyxzP2M6ZCkoaCk6aD09PTkxP2UuYXR0ZW1wdCh1NCxjLHM\/dTpkKShoKTpzP2MoaCk6ZChoKX1mdW5jdGlvbiB1KGgpe3JldHVybiBlLmF0dGVtcHQoYzQsYyxkKShoKX1mdW5jdGlvbiBjKGgpe3JldHVybiB0KGgpfWZ1bmN0aW9uIGQoaCl7cmV0dXJuIG8uX2JhbGFuY2VkPSEwLG4oaCl9fWZ1bmN0aW9uIHA0KGUsdCxuKXtyZXR1cm4gcjtmdW5jdGlvbiByKGQpe3JldHVybiBlLmVudGVyKCJyZXNvdXJjZSIpLGUuZW50ZXIoInJlc291cmNlTWFya2VyIiksZS5jb25zdW1lKGQpLGUuZXhpdCgicmVzb3VyY2VNYXJrZXIiKSxpfWZ1bmN0aW9uIGkoZCl7cmV0dXJuIGt0KGQpP1BzKGUsbykoZCk6byhkKX1mdW5jdGlvbiBvKGQpe3JldHVybiBkPT09NDE\/YyhkKTpzQyhlLHMsYSwicmVzb3VyY2VEZXN0aW5hdGlvbiIsInJlc291cmNlRGVzdGluYXRpb25MaXRlcmFsIiwicmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWxNYXJrZXIiLCJyZXNvdXJjZURlc3RpbmF0aW9uUmF3IiwicmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZyIsMzIpKGQpfWZ1bmN0aW9uIHMoZCl7cmV0dXJuIGt0KGQpP1BzKGUsbCkoZCk6YyhkKX1mdW5jdGlvbiBhKGQpe3JldHVybiBuKGQpfWZ1bmN0aW9uIGwoZCl7cmV0dXJuIGQ9PT0zNHx8ZD09PTM5fHxkPT09NDA\/bEMoZSx1LG4sInJlc291cmNlVGl0bGUiLCJyZXNvdXJjZVRpdGxlTWFya2VyIiwicmVzb3VyY2VUaXRsZVN0cmluZyIpKGQpOmMoZCl9ZnVuY3Rpb24gdShkKXtyZXR1cm4ga3QoZCk\/UHMoZSxjKShkKTpjKGQpfWZ1bmN0aW9uIGMoZCl7cmV0dXJuIGQ9PT00MT8oZS5lbnRlcigicmVzb3VyY2VNYXJrZXIiKSxlLmNvbnN1bWUoZCksZS5leGl0KCJyZXNvdXJjZU1hcmtlciIpLGUuZXhpdCgicmVzb3VyY2UiKSx0KTpuKGQpfX1mdW5jdGlvbiBtNChlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiBpO2Z1bmN0aW9uIGkoYSl7cmV0dXJuIGFDLmNhbGwocixlLG8scywicmVmZXJlbmNlIiwicmVmZXJlbmNlTWFya2VyIiwicmVmZXJlbmNlU3RyaW5nIikoYSl9ZnVuY3Rpb24gbyhhKXtyZXR1cm4gci5wYXJzZXIuZGVmaW5lZC5pbmNsdWRlcyhobyhyLnNsaWNlU2VyaWFsaXplKHIuZXZlbnRzW3IuZXZlbnRzLmxlbmd0aC0xXVsxXSkuc2xpY2UoMSwtMSkpKT90KGEpOm4oYSl9ZnVuY3Rpb24gcyhhKXtyZXR1cm4gbihhKX19ZnVuY3Rpb24gZzQoZSx0LG4pe3JldHVybiByO2Z1bmN0aW9uIHIobyl7cmV0dXJuIGUuZW50ZXIoInJlZmVyZW5jZSIpLGUuZW50ZXIoInJlZmVyZW5jZU1hcmtlciIpLGUuY29uc3VtZShvKSxlLmV4aXQoInJlZmVyZW5jZU1hcmtlciIpLGl9ZnVuY3Rpb24gaShvKXtyZXR1cm4gbz09PTkzPyhlLmVudGVyKCJyZWZlcmVuY2VNYXJrZXIiKSxlLmNvbnN1bWUobyksZS5leGl0KCJyZWZlcmVuY2VNYXJrZXIiKSxlLmV4aXQoInJlZmVyZW5jZSIpLHQpOm4obyl9fWNvbnN0IHk0PXtuYW1lOiJsYWJlbFN0YXJ0SW1hZ2UiLHJlc29sdmVBbGw6aG0ucmVzb2x2ZUFsbCx0b2tlbml6ZTp2NH07ZnVuY3Rpb24gdjQoZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gaTtmdW5jdGlvbiBpKGEpe3JldHVybiBlLmVudGVyKCJsYWJlbEltYWdlIiksZS5lbnRlcigibGFiZWxJbWFnZU1hcmtlciIpLGUuY29uc3VtZShhKSxlLmV4aXQoImxhYmVsSW1hZ2VNYXJrZXIiKSxvfWZ1bmN0aW9uIG8oYSl7cmV0dXJuIGE9PT05MT8oZS5lbnRlcigibGFiZWxNYXJrZXIiKSxlLmNvbnN1bWUoYSksZS5leGl0KCJsYWJlbE1hcmtlciIpLGUuZXhpdCgibGFiZWxJbWFnZSIpLHMpOm4oYSl9ZnVuY3Rpb24gcyhhKXtyZXR1cm4gYT09PTk0JiYiX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCJpbiByLnBhcnNlci5jb25zdHJ1Y3RzP24oYSk6dChhKX19Y29uc3QgeDQ9e25hbWU6ImxhYmVsU3RhcnRMaW5rIixyZXNvbHZlQWxsOmhtLnJlc29sdmVBbGwsdG9rZW5pemU6dzR9O2Z1bmN0aW9uIHc0KGUsdCxuKXtjb25zdCByPXRoaXM7cmV0dXJuIGk7ZnVuY3Rpb24gaShzKXtyZXR1cm4gZS5lbnRlcigibGFiZWxMaW5rIiksZS5lbnRlcigibGFiZWxNYXJrZXIiKSxlLmNvbnN1bWUocyksZS5leGl0KCJsYWJlbE1hcmtlciIpLGUuZXhpdCgibGFiZWxMaW5rIiksb31mdW5jdGlvbiBvKHMpe3JldHVybiBzPT09OTQmJiJfaGlkZGVuRm9vdG5vdGVTdXBwb3J0ImluIHIucGFyc2VyLmNvbnN0cnVjdHM\/bihzKTp0KHMpfX1jb25zdCBhZD17bmFtZToibGluZUVuZGluZyIsdG9rZW5pemU6YjR9O2Z1bmN0aW9uIGI0KGUsdCl7cmV0dXJuIG47ZnVuY3Rpb24gbihyKXtyZXR1cm4gZS5lbnRlcigibGluZUVuZGluZyIpLGUuY29uc3VtZShyKSxlLmV4aXQoImxpbmVFbmRpbmciKSx5ZShlLHQsImxpbmVQcmVmaXgiKX19Y29uc3QgU2w9e25hbWU6InRoZW1hdGljQnJlYWsiLHRva2VuaXplOms0fTtmdW5jdGlvbiBrNChlLHQsbil7bGV0IHI9MCxpO3JldHVybiBvO2Z1bmN0aW9uIG8odSl7cmV0dXJuIGUuZW50ZXIoInRoZW1hdGljQnJlYWsiKSxzKHUpfWZ1bmN0aW9uIHModSl7cmV0dXJuIGk9dSxhKHUpfWZ1bmN0aW9uIGEodSl7cmV0dXJuIHU9PT1pPyhlLmVudGVyKCJ0aGVtYXRpY0JyZWFrU2VxdWVuY2UiKSxsKHUpKTpyPj0zJiYodT09PW51bGx8fEoodSkpPyhlLmV4aXQoInRoZW1hdGljQnJlYWsiKSx0KHUpKTpuKHUpfWZ1bmN0aW9uIGwodSl7cmV0dXJuIHU9PT1pPyhlLmNvbnN1bWUodSkscisrLGwpOihlLmV4aXQoInRoZW1hdGljQnJlYWtTZXF1ZW5jZSIpLGRlKHUpP3llKGUsYSwid2hpdGVzcGFjZSIpKHUpOmEodSkpfX1jb25zdCBwdD17Y29udGludWF0aW9uOnt0b2tlbml6ZTpFNH0sZXhpdDpBNCxuYW1lOiJsaXN0Iix0b2tlbml6ZTpUNH0sUzQ9e3BhcnRpYWw6ITAsdG9rZW5pemU6STR9LEM0PXtwYXJ0aWFsOiEwLHRva2VuaXplOlA0fTtmdW5jdGlvbiBUNChlLHQsbil7Y29uc3Qgcj10aGlzLGk9ci5ldmVudHNbci5ldmVudHMubGVuZ3RoLTFdO2xldCBvPWkmJmlbMV0udHlwZT09PSJsaW5lUHJlZml4Ij9pWzJdLnNsaWNlU2VyaWFsaXplKGlbMV0sITApLmxlbmd0aDowLHM9MDtyZXR1cm4gYTtmdW5jdGlvbiBhKGYpe2NvbnN0IHk9ci5jb250YWluZXJTdGF0ZS50eXBlfHwoZj09PTQyfHxmPT09NDN8fGY9PT00NT8ibGlzdFVub3JkZXJlZCI6Imxpc3RPcmRlcmVkIik7aWYoeT09PSJsaXN0VW5vcmRlcmVkIj8hci5jb250YWluZXJTdGF0ZS5tYXJrZXJ8fGY9PT1yLmNvbnRhaW5lclN0YXRlLm1hcmtlcjp0aChmKSl7aWYoci5jb250YWluZXJTdGF0ZS50eXBlfHwoci5jb250YWluZXJTdGF0ZS50eXBlPXksZS5lbnRlcih5LHtfY29udGFpbmVyOiEwfSkpLHk9PT0ibGlzdFVub3JkZXJlZCIpcmV0dXJuIGUuZW50ZXIoImxpc3RJdGVtUHJlZml4IiksZj09PTQyfHxmPT09NDU\/ZS5jaGVjayhTbCxuLHUpKGYpOnUoZik7aWYoIXIuaW50ZXJydXB0fHxmPT09NDkpcmV0dXJuIGUuZW50ZXIoImxpc3RJdGVtUHJlZml4IiksZS5lbnRlcigibGlzdEl0ZW1WYWx1ZSIpLGwoZil9cmV0dXJuIG4oZil9ZnVuY3Rpb24gbChmKXtyZXR1cm4gdGgoZikmJisrczwxMD8oZS5jb25zdW1lKGYpLGwpOighci5pbnRlcnJ1cHR8fHM8MikmJihyLmNvbnRhaW5lclN0YXRlLm1hcmtlcj9mPT09ci5jb250YWluZXJTdGF0ZS5tYXJrZXI6Zj09PTQxfHxmPT09NDYpPyhlLmV4aXQoImxpc3RJdGVtVmFsdWUiKSx1KGYpKTpuKGYpfWZ1bmN0aW9uIHUoZil7cmV0dXJuIGUuZW50ZXIoImxpc3RJdGVtTWFya2VyIiksZS5jb25zdW1lKGYpLGUuZXhpdCgibGlzdEl0ZW1NYXJrZXIiKSxyLmNvbnRhaW5lclN0YXRlLm1hcmtlcj1yLmNvbnRhaW5lclN0YXRlLm1hcmtlcnx8ZixlLmNoZWNrKFp1LHIuaW50ZXJydXB0P246YyxlLmF0dGVtcHQoUzQsaCxkKSl9ZnVuY3Rpb24gYyhmKXtyZXR1cm4gci5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lPSEwLG8rKyxoKGYpfWZ1bmN0aW9uIGQoZil7cmV0dXJuIGRlKGYpPyhlLmVudGVyKCJsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UiKSxlLmNvbnN1bWUoZiksZS5leGl0KCJsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UiKSxoKTpuKGYpfWZ1bmN0aW9uIGgoZil7cmV0dXJuIHIuY29udGFpbmVyU3RhdGUuc2l6ZT1vK3Iuc2xpY2VTZXJpYWxpemUoZS5leGl0KCJsaXN0SXRlbVByZWZpeCIpLCEwKS5sZW5ndGgsdChmKX19ZnVuY3Rpb24gRTQoZSx0LG4pe2NvbnN0IHI9dGhpcztyZXR1cm4gci5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93PXZvaWQgMCxlLmNoZWNrKFp1LGksbyk7ZnVuY3Rpb24gaShhKXtyZXR1cm4gci5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcz1yLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzfHxyLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmUseWUoZSx0LCJsaXN0SXRlbUluZGVudCIsci5jb250YWluZXJTdGF0ZS5zaXplKzEpKGEpfWZ1bmN0aW9uIG8oYSl7cmV0dXJuIHIuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXN8fCFkZShhKT8oci5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcz12b2lkIDAsci5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lPXZvaWQgMCxzKGEpKTooci5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcz12b2lkIDAsci5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lPXZvaWQgMCxlLmF0dGVtcHQoQzQsdCxzKShhKSl9ZnVuY3Rpb24gcyhhKXtyZXR1cm4gci5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93PSEwLHIuaW50ZXJydXB0PXZvaWQgMCx5ZShlLGUuYXR0ZW1wdChwdCx0LG4pLCJsaW5lUHJlZml4IixyLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygiY29kZUluZGVudGVkIik\/dm9pZCAwOjQpKGEpfX1mdW5jdGlvbiBQNChlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiB5ZShlLGksImxpc3RJdGVtSW5kZW50IixyLmNvbnRhaW5lclN0YXRlLnNpemUrMSk7ZnVuY3Rpb24gaShvKXtjb25zdCBzPXIuZXZlbnRzW3IuZXZlbnRzLmxlbmd0aC0xXTtyZXR1cm4gcyYmc1sxXS50eXBlPT09Imxpc3RJdGVtSW5kZW50IiYmc1syXS5zbGljZVNlcmlhbGl6ZShzWzFdLCEwKS5sZW5ndGg9PT1yLmNvbnRhaW5lclN0YXRlLnNpemU\/dChvKTpuKG8pfX1mdW5jdGlvbiBBNChlKXtlLmV4aXQodGhpcy5jb250YWluZXJTdGF0ZS50eXBlKX1mdW5jdGlvbiBJNChlLHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiB5ZShlLGksImxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSIsci5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoImNvZGVJbmRlbnRlZCIpP3ZvaWQgMDo1KTtmdW5jdGlvbiBpKG8pe2NvbnN0IHM9ci5ldmVudHNbci5ldmVudHMubGVuZ3RoLTFdO3JldHVybiFkZShvKSYmcyYmc1sxXS50eXBlPT09Imxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSI\/dChvKTpuKG8pfX1jb25zdCB0MD17bmFtZToic2V0ZXh0VW5kZXJsaW5lIixyZXNvbHZlVG86TjQsdG9rZW5pemU6ajR9O2Z1bmN0aW9uIE40KGUsdCl7bGV0IG49ZS5sZW5ndGgscixpLG87Zm9yKDtuLS07KWlmKGVbbl1bMF09PT0iZW50ZXIiKXtpZihlW25dWzFdLnR5cGU9PT0iY29udGVudCIpe3I9bjticmVha31lW25dWzFdLnR5cGU9PT0icGFyYWdyYXBoIiYmKGk9bil9ZWxzZSBlW25dWzFdLnR5cGU9PT0iY29udGVudCImJmUuc3BsaWNlKG4sMSksIW8mJmVbbl1bMV0udHlwZT09PSJkZWZpbml0aW9uIiYmKG89bik7Y29uc3Qgcz17dHlwZToic2V0ZXh0SGVhZGluZyIsc3RhcnQ6ey4uLmVbcl1bMV0uc3RhcnR9LGVuZDp7Li4uZVtlLmxlbmd0aC0xXVsxXS5lbmR9fTtyZXR1cm4gZVtpXVsxXS50eXBlPSJzZXRleHRIZWFkaW5nVGV4dCIsbz8oZS5zcGxpY2UoaSwwLFsiZW50ZXIiLHMsdF0pLGUuc3BsaWNlKG8rMSwwLFsiZXhpdCIsZVtyXVsxXSx0XSksZVtyXVsxXS5lbmQ9ey4uLmVbb11bMV0uZW5kfSk6ZVtyXVsxXT1zLGUucHVzaChbImV4aXQiLHMsdF0pLGV9ZnVuY3Rpb24gajQoZSx0LG4pe2NvbnN0IHI9dGhpcztsZXQgaTtyZXR1cm4gbztmdW5jdGlvbiBvKHUpe2xldCBjPXIuZXZlbnRzLmxlbmd0aCxkO2Zvcig7Yy0tOylpZihyLmV2ZW50c1tjXVsxXS50eXBlIT09ImxpbmVFbmRpbmciJiZyLmV2ZW50c1tjXVsxXS50eXBlIT09ImxpbmVQcmVmaXgiJiZyLmV2ZW50c1tjXVsxXS50eXBlIT09ImNvbnRlbnQiKXtkPXIuZXZlbnRzW2NdWzFdLnR5cGU9PT0icGFyYWdyYXBoIjticmVha31yZXR1cm4hci5wYXJzZXIubGF6eVtyLm5vdygpLmxpbmVdJiYoci5pbnRlcnJ1cHR8fGQpPyhlLmVudGVyKCJzZXRleHRIZWFkaW5nTGluZSIpLGk9dSxzKHUpKTpuKHUpfWZ1bmN0aW9uIHModSl7cmV0dXJuIGUuZW50ZXIoInNldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UiKSxhKHUpfWZ1bmN0aW9uIGEodSl7cmV0dXJuIHU9PT1pPyhlLmNvbnN1bWUodSksYSk6KGUuZXhpdCgic2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZSIpLGRlKHUpP3llKGUsbCwibGluZVN1ZmZpeCIpKHUpOmwodSkpfWZ1bmN0aW9uIGwodSl7cmV0dXJuIHU9PT1udWxsfHxKKHUpPyhlLmV4aXQoInNldGV4dEhlYWRpbmdMaW5lIiksdCh1KSk6bih1KX19Y29uc3QgejQ9e3Rva2VuaXplOlI0fTtmdW5jdGlvbiBSNChlKXtjb25zdCB0PXRoaXMsbj1lLmF0dGVtcHQoWnUscixlLmF0dGVtcHQodGhpcy5wYXJzZXIuY29uc3RydWN0cy5mbG93SW5pdGlhbCxpLHllKGUsZS5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxpLGUuYXR0ZW1wdChGNSxpKSksImxpbmVQcmVmaXgiKSkpO3JldHVybiBuO2Z1bmN0aW9uIHIobyl7aWYobz09PW51bGwpe2UuY29uc3VtZShvKTtyZXR1cm59cmV0dXJuIGUuZW50ZXIoImxpbmVFbmRpbmdCbGFuayIpLGUuY29uc3VtZShvKSxlLmV4aXQoImxpbmVFbmRpbmdCbGFuayIpLHQuY3VycmVudENvbnN0cnVjdD12b2lkIDAsbn1mdW5jdGlvbiBpKG8pe2lmKG89PT1udWxsKXtlLmNvbnN1bWUobyk7cmV0dXJufXJldHVybiBlLmVudGVyKCJsaW5lRW5kaW5nIiksZS5jb25zdW1lKG8pLGUuZXhpdCgibGluZUVuZGluZyIpLHQuY3VycmVudENvbnN0cnVjdD12b2lkIDAsbn19Y29uc3QgRDQ9e3Jlc29sdmVBbGw6Y0MoKX0sTTQ9dUMoInN0cmluZyIpLEw0PXVDKCJ0ZXh0Iik7ZnVuY3Rpb24gdUMoZSl7cmV0dXJue3Jlc29sdmVBbGw6Y0MoZT09PSJ0ZXh0Ij9PNDp2b2lkIDApLHRva2VuaXplOnR9O2Z1bmN0aW9uIHQobil7Y29uc3Qgcj10aGlzLGk9dGhpcy5wYXJzZXIuY29uc3RydWN0c1tlXSxvPW4uYXR0ZW1wdChpLHMsYSk7cmV0dXJuIHM7ZnVuY3Rpb24gcyhjKXtyZXR1cm4gdShjKT9vKGMpOmEoYyl9ZnVuY3Rpb24gYShjKXtpZihjPT09bnVsbCl7bi5jb25zdW1lKGMpO3JldHVybn1yZXR1cm4gbi5lbnRlcigiZGF0YSIpLG4uY29uc3VtZShjKSxsfWZ1bmN0aW9uIGwoYyl7cmV0dXJuIHUoYyk\/KG4uZXhpdCgiZGF0YSIpLG8oYykpOihuLmNvbnN1bWUoYyksbCl9ZnVuY3Rpb24gdShjKXtpZihjPT09bnVsbClyZXR1cm4hMDtjb25zdCBkPWlbY107bGV0IGg9LTE7aWYoZClmb3IoOysraDxkLmxlbmd0aDspe2NvbnN0IGY9ZFtoXTtpZighZi5wcmV2aW91c3x8Zi5wcmV2aW91cy5jYWxsKHIsci5wcmV2aW91cykpcmV0dXJuITB9cmV0dXJuITF9fX1mdW5jdGlvbiBjQyhlKXtyZXR1cm4gdDtmdW5jdGlvbiB0KG4scil7bGV0IGk9LTEsbztmb3IoOysraTw9bi5sZW5ndGg7KW89PT12b2lkIDA\/bltpXSYmbltpXVsxXS50eXBlPT09ImRhdGEiJiYobz1pLGkrKyk6KCFuW2ldfHxuW2ldWzFdLnR5cGUhPT0iZGF0YSIpJiYoaSE9PW8rMiYmKG5bb11bMV0uZW5kPW5baS0xXVsxXS5lbmQsbi5zcGxpY2UobysyLGktby0yKSxpPW8rMiksbz12b2lkIDApO3JldHVybiBlP2UobixyKTpufX1mdW5jdGlvbiBPNChlLHQpe2xldCBuPTA7Zm9yKDsrK248PWUubGVuZ3RoOylpZigobj09PWUubGVuZ3RofHxlW25dWzFdLnR5cGU9PT0ibGluZUVuZGluZyIpJiZlW24tMV1bMV0udHlwZT09PSJkYXRhIil7Y29uc3Qgcj1lW24tMV1bMV0saT10LnNsaWNlU3RyZWFtKHIpO2xldCBvPWkubGVuZ3RoLHM9LTEsYT0wLGw7Zm9yKDtvLS07KXtjb25zdCB1PWlbb107aWYodHlwZW9mIHU9PSJzdHJpbmciKXtmb3Iocz11Lmxlbmd0aDt1LmNoYXJDb2RlQXQocy0xKT09PTMyOylhKysscy0tO2lmKHMpYnJlYWs7cz0tMX1lbHNlIGlmKHU9PT0tMilsPSEwLGErKztlbHNlIGlmKHUhPT0tMSl7bysrO2JyZWFrfX1pZih0Ll9jb250ZW50VHlwZVRleHRUcmFpbGluZyYmbj09PWUubGVuZ3RoJiYoYT0wKSxhKXtjb25zdCB1PXt0eXBlOm49PT1lLmxlbmd0aHx8bHx8YTwyPyJsaW5lU3VmZml4IjoiaGFyZEJyZWFrVHJhaWxpbmciLHN0YXJ0OntfYnVmZmVySW5kZXg6bz9zOnIuc3RhcnQuX2J1ZmZlckluZGV4K3MsX2luZGV4OnIuc3RhcnQuX2luZGV4K28sbGluZTpyLmVuZC5saW5lLGNvbHVtbjpyLmVuZC5jb2x1bW4tYSxvZmZzZXQ6ci5lbmQub2Zmc2V0LWF9LGVuZDp7Li4uci5lbmR9fTtyLmVuZD17Li4udS5zdGFydH0sci5zdGFydC5vZmZzZXQ9PT1yLmVuZC5vZmZzZXQ\/T2JqZWN0LmFzc2lnbihyLHUpOihlLnNwbGljZShuLDAsWyJlbnRlciIsdSx0XSxbImV4aXQiLHUsdF0pLG4rPTIpfW4rK31yZXR1cm4gZX1jb25zdCBGND17NDI6cHQsNDM6cHQsNDU6cHQsNDg6cHQsNDk6cHQsNTA6cHQsNTE6cHQsNTI6cHQsNTM6cHQsNTQ6cHQsNTU6cHQsNTY6cHQsNTc6cHQsNjI6bkN9LF80PXs5MTokNX0sVjQ9e1stMl06c2QsWy0xXTpzZCwzMjpzZH0sQjQ9ezM1Olk1LDQyOlNsLDQ1Olt0MCxTbF0sNjA6WjUsNjE6dDAsOTU6U2wsOTY6WnYsMTI2Olp2fSxVND17Mzg6aUMsOTI6ckN9LCQ0PXtbLTVdOmFkLFstNF06YWQsWy0zXTphZCwzMzp5NCwzODppQyw0MjpuaCw2MDpbeDUsczRdLDkxOng0LDkyOltLNSxyQ10sOTM6aG0sOTU6bmgsOTY6ejV9LEg0PXtudWxsOltuaCxENF19LHE0PXtudWxsOls0Miw5NV19LFc0PXtudWxsOltdfSxLND1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYXR0ZW50aW9uTWFya2VyczpxNCxjb250ZW50SW5pdGlhbDpfNCxkaXNhYmxlOlc0LGRvY3VtZW50OkY0LGZsb3c6QjQsZmxvd0luaXRpYWw6VjQsaW5zaWRlU3BhbjpINCxzdHJpbmc6VTQsdGV4dDokNH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtmdW5jdGlvbiBHNChlLHQsbil7bGV0IHI9e19idWZmZXJJbmRleDotMSxfaW5kZXg6MCxsaW5lOm4mJm4ubGluZXx8MSxjb2x1bW46biYmbi5jb2x1bW58fDEsb2Zmc2V0Om4mJm4ub2Zmc2V0fHwwfTtjb25zdCBpPXt9LG89W107bGV0IHM9W10sYT1bXTtjb25zdCBsPXthdHRlbXB0OlAoVCksY2hlY2s6UChDKSxjb25zdW1lOnYsZW50ZXI6eCxleGl0OmssaW50ZXJydXB0OlAoQyx7aW50ZXJydXB0OiEwfSl9LHU9e2NvZGU6bnVsbCxjb250YWluZXJTdGF0ZTp7fSxkZWZpbmVTa2lwOm0sZXZlbnRzOltdLG5vdzp5LHBhcnNlcjplLHByZXZpb3VzOm51bGwsc2xpY2VTZXJpYWxpemU6aCxzbGljZVN0cmVhbTpmLHdyaXRlOmR9O2xldCBjPXQudG9rZW5pemUuY2FsbCh1LGwpO3JldHVybiB0LnJlc29sdmVBbGwmJm8ucHVzaCh0KSx1O2Z1bmN0aW9uIGQoTSl7cmV0dXJuIHM9VXQocyxNKSx3KCksc1tzLmxlbmd0aC0xXSE9PW51bGw\/W106KEEodCwwKSx1LmV2ZW50cz1mbShvLHUuZXZlbnRzLHUpLHUuZXZlbnRzKX1mdW5jdGlvbiBoKE0seil7cmV0dXJuIFE0KGYoTSkseil9ZnVuY3Rpb24gZihNKXtyZXR1cm4gWTQocyxNKX1mdW5jdGlvbiB5KCl7Y29uc3R7X2J1ZmZlckluZGV4Ok0sX2luZGV4OnosbGluZTokLGNvbHVtbjpPLG9mZnNldDpVfT1yO3JldHVybntfYnVmZmVySW5kZXg6TSxfaW5kZXg6eixsaW5lOiQsY29sdW1uOk8sb2Zmc2V0OlV9fWZ1bmN0aW9uIG0oTSl7aVtNLmxpbmVdPU0uY29sdW1uLEkoKX1mdW5jdGlvbiB3KCl7bGV0IE07Zm9yKDtyLl9pbmRleDxzLmxlbmd0aDspe2NvbnN0IHo9c1tyLl9pbmRleF07aWYodHlwZW9mIHo9PSJzdHJpbmciKWZvcihNPXIuX2luZGV4LHIuX2J1ZmZlckluZGV4PDAmJihyLl9idWZmZXJJbmRleD0wKTtyLl9pbmRleD09PU0mJnIuX2J1ZmZlckluZGV4PHoubGVuZ3RoOylwKHouY2hhckNvZGVBdChyLl9idWZmZXJJbmRleCkpO2Vsc2UgcCh6KX19ZnVuY3Rpb24gcChNKXtjPWMoTSl9ZnVuY3Rpb24gdihNKXtKKE0pPyhyLmxpbmUrKyxyLmNvbHVtbj0xLHIub2Zmc2V0Kz1NPT09LTM\/MjoxLEkoKSk6TSE9PS0xJiYoci5jb2x1bW4rKyxyLm9mZnNldCsrKSxyLl9idWZmZXJJbmRleDwwP3IuX2luZGV4Kys6KHIuX2J1ZmZlckluZGV4Kyssci5fYnVmZmVySW5kZXg9PT1zW3IuX2luZGV4XS5sZW5ndGgmJihyLl9idWZmZXJJbmRleD0tMSxyLl9pbmRleCsrKSksdS5wcmV2aW91cz1NfWZ1bmN0aW9uIHgoTSx6KXtjb25zdCAkPXp8fHt9O3JldHVybiAkLnR5cGU9TSwkLnN0YXJ0PXkoKSx1LmV2ZW50cy5wdXNoKFsiZW50ZXIiLCQsdV0pLGEucHVzaCgkKSwkfWZ1bmN0aW9uIGsoTSl7Y29uc3Qgej1hLnBvcCgpO3JldHVybiB6LmVuZD15KCksdS5ldmVudHMucHVzaChbImV4aXQiLHosdV0pLHp9ZnVuY3Rpb24gVChNLHope0EoTSx6LmZyb20pfWZ1bmN0aW9uIEMoTSx6KXt6LnJlc3RvcmUoKX1mdW5jdGlvbiBQKE0seil7cmV0dXJuICQ7ZnVuY3Rpb24gJChPLFUsSCl7bGV0IEcsTixSLFM7cmV0dXJuIEFycmF5LmlzQXJyYXkoTyk\/cShPKToidG9rZW5pemUiaW4gTz9xKFtPXSk6WShPKTtmdW5jdGlvbiBZKGFlKXtyZXR1cm4gc2U7ZnVuY3Rpb24gc2UocnQpe2NvbnN0IGl0PXJ0IT09bnVsbCYmYWVbcnRdLGh0PXJ0IT09bnVsbCYmYWUubnVsbCxDdD1bLi4uQXJyYXkuaXNBcnJheShpdCk\/aXQ6aXQ\/W2l0XTpbXSwuLi5BcnJheS5pc0FycmF5KGh0KT9odDpodD9baHRdOltdXTtyZXR1cm4gcShDdCkocnQpfX1mdW5jdGlvbiBxKGFlKXtyZXR1cm4gRz1hZSxOPTAsYWUubGVuZ3RoPT09MD9IOkUoYWVbTl0pfWZ1bmN0aW9uIEUoYWUpe3JldHVybiBzZTtmdW5jdGlvbiBzZShydCl7cmV0dXJuIFM9aigpLFI9YWUsYWUucGFydGlhbHx8KHUuY3VycmVudENvbnN0cnVjdD1hZSksYWUubmFtZSYmdS5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoYWUubmFtZSk\/ZmUoKTphZS50b2tlbml6ZS5jYWxsKHo\/T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHUpLHopOnUsbCxYLGZlKShydCl9fWZ1bmN0aW9uIFgoYWUpe3JldHVybiBNKFIsUyksVX1mdW5jdGlvbiBmZShhZSl7cmV0dXJuIFMucmVzdG9yZSgpLCsrTjxHLmxlbmd0aD9FKEdbTl0pOkh9fX1mdW5jdGlvbiBBKE0seil7TS5yZXNvbHZlQWxsJiYhby5pbmNsdWRlcyhNKSYmby5wdXNoKE0pLE0ucmVzb2x2ZSYmTG4odS5ldmVudHMseix1LmV2ZW50cy5sZW5ndGgteixNLnJlc29sdmUodS5ldmVudHMuc2xpY2UoeiksdSkpLE0ucmVzb2x2ZVRvJiYodS5ldmVudHM9TS5yZXNvbHZlVG8odS5ldmVudHMsdSkpfWZ1bmN0aW9uIGooKXtjb25zdCBNPXkoKSx6PXUucHJldmlvdXMsJD11LmN1cnJlbnRDb25zdHJ1Y3QsTz11LmV2ZW50cy5sZW5ndGgsVT1BcnJheS5mcm9tKGEpO3JldHVybntmcm9tOk8scmVzdG9yZTpIfTtmdW5jdGlvbiBIKCl7cj1NLHUucHJldmlvdXM9eix1LmN1cnJlbnRDb25zdHJ1Y3Q9JCx1LmV2ZW50cy5sZW5ndGg9TyxhPVUsSSgpfX1mdW5jdGlvbiBJKCl7ci5saW5lIGluIGkmJnIuY29sdW1uPDImJihyLmNvbHVtbj1pW3IubGluZV0sci5vZmZzZXQrPWlbci5saW5lXS0xKX19ZnVuY3Rpb24gWTQoZSx0KXtjb25zdCBuPXQuc3RhcnQuX2luZGV4LHI9dC5zdGFydC5fYnVmZmVySW5kZXgsaT10LmVuZC5faW5kZXgsbz10LmVuZC5fYnVmZmVySW5kZXg7bGV0IHM7aWYobj09PWkpcz1bZVtuXS5zbGljZShyLG8pXTtlbHNle2lmKHM9ZS5zbGljZShuLGkpLHI+LTEpe2NvbnN0IGE9c1swXTt0eXBlb2YgYT09InN0cmluZyI\/c1swXT1hLnNsaWNlKHIpOnMuc2hpZnQoKX1vPjAmJnMucHVzaChlW2ldLnNsaWNlKDAsbykpfXJldHVybiBzfWZ1bmN0aW9uIFE0KGUsdCl7bGV0IG49LTE7Y29uc3Qgcj1bXTtsZXQgaTtmb3IoOysrbjxlLmxlbmd0aDspe2NvbnN0IG89ZVtuXTtsZXQgcztpZih0eXBlb2Ygbz09InN0cmluZyIpcz1vO2Vsc2Ugc3dpdGNoKG8pe2Nhc2UtNTp7cz0iXHIiO2JyZWFrfWNhc2UtNDp7cz1gCmA7YnJlYWt9Y2FzZS0zOntzPWBccgpgO2JyZWFrfWNhc2UtMjp7cz10PyIgIjoiCSI7YnJlYWt9Y2FzZS0xOntpZighdCYmaSljb250aW51ZTtzPSIgIjticmVha31kZWZhdWx0OnM9U3RyaW5nLmZyb21DaGFyQ29kZShvKX1pPW89PT0tMixyLnB1c2gocyl9cmV0dXJuIHIuam9pbigiIil9ZnVuY3Rpb24gWDQoZSl7Y29uc3Qgcj17Y29uc3RydWN0czppNShbSzQsLi4uKGV8fHt9KS5leHRlbnNpb25zfHxbXV0pLGNvbnRlbnQ6aShmNSksZGVmaW5lZDpbXSxkb2N1bWVudDppKHA1KSxmbG93OmkoejQpLGxhenk6e30sc3RyaW5nOmkoTTQpLHRleHQ6aShMNCl9O3JldHVybiByO2Z1bmN0aW9uIGkobyl7cmV0dXJuIHM7ZnVuY3Rpb24gcyhhKXtyZXR1cm4gRzQocixvLGEpfX19ZnVuY3Rpb24gSjQoZSl7Zm9yKDshb0MoZSk7KTtyZXR1cm4gZX1jb25zdCBuMD0vW1wwXHRcblxyXS9nO2Z1bmN0aW9uIFo0KCl7bGV0IGU9MSx0PSIiLG49ITAscjtyZXR1cm4gaTtmdW5jdGlvbiBpKG8scyxhKXtjb25zdCBsPVtdO2xldCB1LGMsZCxoLGY7Zm9yKG89dCsodHlwZW9mIG89PSJzdHJpbmciP28udG9TdHJpbmcoKTpuZXcgVGV4dERlY29kZXIoc3x8dm9pZCAwKS5kZWNvZGUobykpLGQ9MCx0PSIiLG4mJihvLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmZCsrLG49dm9pZCAwKTtkPG8ubGVuZ3RoOyl7aWYobjAubGFzdEluZGV4PWQsdT1uMC5leGVjKG8pLGg9dSYmdS5pbmRleCE9PXZvaWQgMD91LmluZGV4Om8ubGVuZ3RoLGY9by5jaGFyQ29kZUF0KGgpLCF1KXt0PW8uc2xpY2UoZCk7YnJlYWt9aWYoZj09PTEwJiZkPT09aCYmcilsLnB1c2goLTMpLHI9dm9pZCAwO2Vsc2Ugc3dpdGNoKHImJihsLnB1c2goLTUpLHI9dm9pZCAwKSxkPGgmJihsLnB1c2goby5zbGljZShkLGgpKSxlKz1oLWQpLGYpe2Nhc2UgMDp7bC5wdXNoKDY1NTMzKSxlKys7YnJlYWt9Y2FzZSA5Ontmb3IoYz1NYXRoLmNlaWwoZS80KSo0LGwucHVzaCgtMik7ZSsrPGM7KWwucHVzaCgtMSk7YnJlYWt9Y2FzZSAxMDp7bC5wdXNoKC00KSxlPTE7YnJlYWt9ZGVmYXVsdDpyPSEwLGU9MX1kPWgrMX1yZXR1cm4gYSYmKHImJmwucHVzaCgtNSksdCYmbC5wdXNoKHQpLGwucHVzaChudWxsKSksbH19Y29uc3QgZV89L1xcKFshLS86LUBbLWB7LX5dKXwmKCMoPzpcZHsxLDd9fHhbXGRhLWZdezEsNn0pfFtcZGEtel17MSwzMX0pOy9naTtmdW5jdGlvbiB0XyhlKXtyZXR1cm4gZS5yZXBsYWNlKGVfLG5fKX1mdW5jdGlvbiBuXyhlLHQsbil7aWYodClyZXR1cm4gdDtpZihuLmNoYXJDb2RlQXQoMCk9PT0zNSl7Y29uc3QgaT1uLmNoYXJDb2RlQXQoMSksbz1pPT09MTIwfHxpPT09ODg7cmV0dXJuIHRDKG4uc2xpY2Uobz8yOjEpLG8\/MTY6MTApfXJldHVybiBkbShuKXx8ZX1jb25zdCBkQz17fS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiByXyhlLHQsbil7cmV0dXJuIHQmJnR5cGVvZiB0PT0ib2JqZWN0IiYmKG49dCx0PXZvaWQgMCksaV8obikoSjQoWDQobikuZG9jdW1lbnQoKS53cml0ZShaNCgpKGUsdCwhMCkpKSl9ZnVuY3Rpb24gaV8oZSl7Y29uc3QgdD17dHJhbnNmb3JtczpbXSxjYW5Db250YWluRW9sczpbImVtcGhhc2lzIiwiZnJhZ21lbnQiLCJoZWFkaW5nIiwicGFyYWdyYXBoIiwic3Ryb25nIl0sZW50ZXI6e2F1dG9saW5rOm8oVm4pLGF1dG9saW5rUHJvdG9jb2w6aixhdXRvbGlua0VtYWlsOmosYXR4SGVhZGluZzpvKE1pKSxibG9ja1F1b3RlOm8oaHQpLGNoYXJhY3RlckVzY2FwZTpqLGNoYXJhY3RlclJlZmVyZW5jZTpqLGNvZGVGZW5jZWQ6byhDdCksY29kZUZlbmNlZEZlbmNlSW5mbzpzLGNvZGVGZW5jZWRGZW5jZU1ldGE6cyxjb2RlSW5kZW50ZWQ6byhDdCxzKSxjb2RlVGV4dDpvKHJyLHMpLGNvZGVUZXh0RGF0YTpqLGRhdGE6aixjb2RlRmxvd1ZhbHVlOmosZGVmaW5pdGlvbjpvKHluKSxkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6cyxkZWZpbml0aW9uTGFiZWxTdHJpbmc6cyxkZWZpbml0aW9uVGl0bGVTdHJpbmc6cyxlbXBoYXNpczpvKERpKSxoYXJkQnJlYWtFc2NhcGU6byhYciksaGFyZEJyZWFrVHJhaWxpbmc6byhYciksaHRtbEZsb3c6byhMaSxzKSxodG1sRmxvd0RhdGE6aixodG1sVGV4dDpvKExpLHMpLGh0bWxUZXh0RGF0YTpqLGltYWdlOm8oSnIpLGxhYmVsOnMsbGluazpvKFZuKSxsaXN0SXRlbTpvKFpyKSxsaXN0SXRlbVZhbHVlOmgsbGlzdE9yZGVyZWQ6byhLbyxkKSxsaXN0VW5vcmRlcmVkOm8oS28pLHBhcmFncmFwaDpvKFNhKSxyZWZlcmVuY2U6RSxyZWZlcmVuY2VTdHJpbmc6cyxyZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nOnMscmVzb3VyY2VUaXRsZVN0cmluZzpzLHNldGV4dEhlYWRpbmc6byhNaSksc3Ryb25nOm8oQm4pLHRoZW1hdGljQnJlYWs6byhyYyl9LGV4aXQ6e2F0eEhlYWRpbmc6bCgpLGF0eEhlYWRpbmdTZXF1ZW5jZTpULGF1dG9saW5rOmwoKSxhdXRvbGlua0VtYWlsOml0LGF1dG9saW5rUHJvdG9jb2w6cnQsYmxvY2tRdW90ZTpsKCksY2hhcmFjdGVyRXNjYXBlVmFsdWU6SSxjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbDpmZSxjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljOmZlLGNoYXJhY3RlclJlZmVyZW5jZVZhbHVlOmFlLGNoYXJhY3RlclJlZmVyZW5jZTpzZSxjb2RlRmVuY2VkOmwodyksY29kZUZlbmNlZEZlbmNlOm0sY29kZUZlbmNlZEZlbmNlSW5mbzpmLGNvZGVGZW5jZWRGZW5jZU1ldGE6eSxjb2RlRmxvd1ZhbHVlOkksY29kZUluZGVudGVkOmwocCksY29kZVRleHQ6bChVKSxjb2RlVGV4dERhdGE6SSxkYXRhOkksZGVmaW5pdGlvbjpsKCksZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nOmssZGVmaW5pdGlvbkxhYmVsU3RyaW5nOnYsZGVmaW5pdGlvblRpdGxlU3RyaW5nOngsZW1waGFzaXM6bCgpLGhhcmRCcmVha0VzY2FwZTpsKHopLGhhcmRCcmVha1RyYWlsaW5nOmwoeiksaHRtbEZsb3c6bCgkKSxodG1sRmxvd0RhdGE6SSxodG1sVGV4dDpsKE8pLGh0bWxUZXh0RGF0YTpJLGltYWdlOmwoRyksbGFiZWw6UixsYWJlbFRleHQ6TixsaW5lRW5kaW5nOk0sbGluazpsKEgpLGxpc3RJdGVtOmwoKSxsaXN0T3JkZXJlZDpsKCksbGlzdFVub3JkZXJlZDpsKCkscGFyYWdyYXBoOmwoKSxyZWZlcmVuY2VTdHJpbmc6WCxyZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nOlMscmVzb3VyY2VUaXRsZVN0cmluZzpZLHJlc291cmNlOnEsc2V0ZXh0SGVhZGluZzpsKEEpLHNldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2U6UCxzZXRleHRIZWFkaW5nVGV4dDpDLHN0cm9uZzpsKCksdGhlbWF0aWNCcmVhazpsKCl9fTtmQyh0LChlfHx7fSkubWRhc3RFeHRlbnNpb25zfHxbXSk7Y29uc3Qgbj17fTtyZXR1cm4gcjtmdW5jdGlvbiByKEQpe2xldCBCPXt0eXBlOiJyb290IixjaGlsZHJlbjpbXX07Y29uc3QgWj17c3RhY2s6W0JdLHRva2VuU3RhY2s6W10sY29uZmlnOnQsZW50ZXI6YSxleGl0OnUsYnVmZmVyOnMscmVzdW1lOmMsZGF0YTpufSxpZT1bXTtsZXQgdWU9LTE7Zm9yKDsrK3VlPEQubGVuZ3RoOylpZihEW3VlXVsxXS50eXBlPT09Imxpc3RPcmRlcmVkInx8RFt1ZV1bMV0udHlwZT09PSJsaXN0VW5vcmRlcmVkIilpZihEW3VlXVswXT09PSJlbnRlciIpaWUucHVzaCh1ZSk7ZWxzZXtjb25zdCBUdD1pZS5wb3AoKTt1ZT1pKEQsVHQsdWUpfWZvcih1ZT0tMTsrK3VlPEQubGVuZ3RoOyl7Y29uc3QgVHQ9dFtEW3VlXVswXV07ZEMuY2FsbChUdCxEW3VlXVsxXS50eXBlKSYmVHRbRFt1ZV1bMV0udHlwZV0uY2FsbChPYmplY3QuYXNzaWduKHtzbGljZVNlcmlhbGl6ZTpEW3VlXVsyXS5zbGljZVNlcmlhbGl6ZX0sWiksRFt1ZV1bMV0pfWlmKFoudG9rZW5TdGFjay5sZW5ndGg+MCl7Y29uc3QgVHQ9Wi50b2tlblN0YWNrW1oudG9rZW5TdGFjay5sZW5ndGgtMV07KFR0WzFdfHxyMCkuY2FsbChaLHZvaWQgMCxUdFswXSl9Zm9yKEIucG9zaXRpb249e3N0YXJ0OmZyKEQubGVuZ3RoPjA\/RFswXVsxXS5zdGFydDp7bGluZToxLGNvbHVtbjoxLG9mZnNldDowfSksZW5kOmZyKEQubGVuZ3RoPjA\/RFtELmxlbmd0aC0yXVsxXS5lbmQ6e2xpbmU6MSxjb2x1bW46MSxvZmZzZXQ6MH0pfSx1ZT0tMTsrK3VlPHQudHJhbnNmb3Jtcy5sZW5ndGg7KUI9dC50cmFuc2Zvcm1zW3VlXShCKXx8QjtyZXR1cm4gQn1mdW5jdGlvbiBpKEQsQixaKXtsZXQgaWU9Qi0xLHVlPS0xLFR0PSExLHZuLEV0LEZ0LGlyO2Zvcig7KytpZTw9Wjspe2NvbnN0IERlPURbaWVdO3N3aXRjaChEZVsxXS50eXBlKXtjYXNlImxpc3RVbm9yZGVyZWQiOmNhc2UibGlzdE9yZGVyZWQiOmNhc2UiYmxvY2tRdW90ZSI6e0RlWzBdPT09ImVudGVyIj91ZSsrOnVlLS0saXI9dm9pZCAwO2JyZWFrfWNhc2UibGluZUVuZGluZ0JsYW5rIjp7RGVbMF09PT0iZW50ZXIiJiYodm4mJiFpciYmIXVlJiYhRnQmJihGdD1pZSksaXI9dm9pZCAwKTticmVha31jYXNlImxpbmVQcmVmaXgiOmNhc2UibGlzdEl0ZW1WYWx1ZSI6Y2FzZSJsaXN0SXRlbU1hcmtlciI6Y2FzZSJsaXN0SXRlbVByZWZpeCI6Y2FzZSJsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UiOmJyZWFrO2RlZmF1bHQ6aXI9dm9pZCAwfWlmKCF1ZSYmRGVbMF09PT0iZW50ZXIiJiZEZVsxXS50eXBlPT09Imxpc3RJdGVtUHJlZml4Inx8dWU9PT0tMSYmRGVbMF09PT0iZXhpdCImJihEZVsxXS50eXBlPT09Imxpc3RVbm9yZGVyZWQifHxEZVsxXS50eXBlPT09Imxpc3RPcmRlcmVkIikpe2lmKHZuKXtsZXQgb3I9aWU7Zm9yKEV0PXZvaWQgMDtvci0tOyl7Y29uc3QgWXQ9RFtvcl07aWYoWXRbMV0udHlwZT09PSJsaW5lRW5kaW5nInx8WXRbMV0udHlwZT09PSJsaW5lRW5kaW5nQmxhbmsiKXtpZihZdFswXT09PSJleGl0Iiljb250aW51ZTtFdCYmKERbRXRdWzFdLnR5cGU9ImxpbmVFbmRpbmdCbGFuayIsVHQ9ITApLFl0WzFdLnR5cGU9ImxpbmVFbmRpbmciLEV0PW9yfWVsc2UgaWYoIShZdFsxXS50eXBlPT09ImxpbmVQcmVmaXgifHxZdFsxXS50eXBlPT09ImJsb2NrUXVvdGVQcmVmaXgifHxZdFsxXS50eXBlPT09ImJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlInx8WXRbMV0udHlwZT09PSJibG9ja1F1b3RlTWFya2VyInx8WXRbMV0udHlwZT09PSJsaXN0SXRlbUluZGVudCIpKWJyZWFrfUZ0JiYoIUV0fHxGdDxFdCkmJih2bi5fc3ByZWFkPSEwKSx2bi5lbmQ9T2JqZWN0LmFzc2lnbih7fSxFdD9EW0V0XVsxXS5zdGFydDpEZVsxXS5lbmQpLEQuc3BsaWNlKEV0fHxpZSwwLFsiZXhpdCIsdm4sRGVbMl1dKSxpZSsrLForK31pZihEZVsxXS50eXBlPT09Imxpc3RJdGVtUHJlZml4Iil7Y29uc3Qgb3I9e3R5cGU6Imxpc3RJdGVtIixfc3ByZWFkOiExLHN0YXJ0Ok9iamVjdC5hc3NpZ24oe30sRGVbMV0uc3RhcnQpLGVuZDp2b2lkIDB9O3ZuPW9yLEQuc3BsaWNlKGllLDAsWyJlbnRlciIsb3IsRGVbMl1dKSxpZSsrLForKyxGdD12b2lkIDAsaXI9ITB9fX1yZXR1cm4gRFtCXVsxXS5fc3ByZWFkPVR0LFp9ZnVuY3Rpb24gbyhELEIpe3JldHVybiBaO2Z1bmN0aW9uIFooaWUpe2EuY2FsbCh0aGlzLEQoaWUpLGllKSxCJiZCLmNhbGwodGhpcyxpZSl9fWZ1bmN0aW9uIHMoKXt0aGlzLnN0YWNrLnB1c2goe3R5cGU6ImZyYWdtZW50IixjaGlsZHJlbjpbXX0pfWZ1bmN0aW9uIGEoRCxCLFope3RoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0uY2hpbGRyZW4ucHVzaChEKSx0aGlzLnN0YWNrLnB1c2goRCksdGhpcy50b2tlblN0YWNrLnB1c2goW0IsWnx8dm9pZCAwXSksRC5wb3NpdGlvbj17c3RhcnQ6ZnIoQi5zdGFydCksZW5kOnZvaWQgMH19ZnVuY3Rpb24gbChEKXtyZXR1cm4gQjtmdW5jdGlvbiBCKFope0QmJkQuY2FsbCh0aGlzLFopLHUuY2FsbCh0aGlzLFopfX1mdW5jdGlvbiB1KEQsQil7Y29uc3QgWj10aGlzLnN0YWNrLnBvcCgpLGllPXRoaXMudG9rZW5TdGFjay5wb3AoKTtpZihpZSlpZVswXS50eXBlIT09RC50eXBlJiYoQj9CLmNhbGwodGhpcyxELGllWzBdKTooaWVbMV18fHIwKS5jYWxsKHRoaXMsRCxpZVswXSkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2xvc2UgYCIrRC50eXBlKyJgICgiK0VzKHtzdGFydDpELnN0YXJ0LGVuZDpELmVuZH0pKyIpOiBpdOKAmXMgbm90IG9wZW4iKTtaLnBvc2l0aW9uLmVuZD1mcihELmVuZCl9ZnVuY3Rpb24gYygpe3JldHVybiBuNSh0aGlzLnN0YWNrLnBvcCgpKX1mdW5jdGlvbiBkKCl7dGhpcy5kYXRhLmV4cGVjdGluZ0ZpcnN0TGlzdEl0ZW1WYWx1ZT0hMH1mdW5jdGlvbiBoKEQpe2lmKHRoaXMuZGF0YS5leHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWUpe2NvbnN0IEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0yXTtCLnN0YXJ0PU51bWJlci5wYXJzZUludCh0aGlzLnNsaWNlU2VyaWFsaXplKEQpLDEwKSx0aGlzLmRhdGEuZXhwZWN0aW5nRmlyc3RMaXN0SXRlbVZhbHVlPXZvaWQgMH19ZnVuY3Rpb24gZigpe2NvbnN0IEQ9dGhpcy5yZXN1bWUoKSxCPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07Qi5sYW5nPUR9ZnVuY3Rpb24geSgpe2NvbnN0IEQ9dGhpcy5yZXN1bWUoKSxCPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07Qi5tZXRhPUR9ZnVuY3Rpb24gbSgpe3RoaXMuZGF0YS5mbG93Q29kZUluc2lkZXx8KHRoaXMuYnVmZmVyKCksdGhpcy5kYXRhLmZsb3dDb2RlSW5zaWRlPSEwKX1mdW5jdGlvbiB3KCl7Y29uc3QgRD10aGlzLnJlc3VtZSgpLEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtCLnZhbHVlPUQucmVwbGFjZSgvXihccj9cbnxccil8KFxyP1xufFxyKSQvZywiIiksdGhpcy5kYXRhLmZsb3dDb2RlSW5zaWRlPXZvaWQgMH1mdW5jdGlvbiBwKCl7Y29uc3QgRD10aGlzLnJlc3VtZSgpLEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtCLnZhbHVlPUQucmVwbGFjZSgvKFxyP1xufFxyKSQvZywiIil9ZnVuY3Rpb24gdihEKXtjb25zdCBCPXRoaXMucmVzdW1lKCksWj10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO1oubGFiZWw9QixaLmlkZW50aWZpZXI9aG8odGhpcy5zbGljZVNlcmlhbGl6ZShEKSkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiB4KCl7Y29uc3QgRD10aGlzLnJlc3VtZSgpLEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtCLnRpdGxlPUR9ZnVuY3Rpb24gaygpe2NvbnN0IEQ9dGhpcy5yZXN1bWUoKSxCPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07Qi51cmw9RH1mdW5jdGlvbiBUKEQpe2NvbnN0IEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtpZighQi5kZXB0aCl7Y29uc3QgWj10aGlzLnNsaWNlU2VyaWFsaXplKEQpLmxlbmd0aDtCLmRlcHRoPVp9fWZ1bmN0aW9uIEMoKXt0aGlzLmRhdGEuc2V0ZXh0SGVhZGluZ1NsdXJwTGluZUVuZGluZz0hMH1mdW5jdGlvbiBQKEQpe2NvbnN0IEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtCLmRlcHRoPXRoaXMuc2xpY2VTZXJpYWxpemUoRCkuY29kZVBvaW50QXQoMCk9PT02MT8xOjJ9ZnVuY3Rpb24gQSgpe3RoaXMuZGF0YS5zZXRleHRIZWFkaW5nU2x1cnBMaW5lRW5kaW5nPXZvaWQgMH1mdW5jdGlvbiBqKEQpe2NvbnN0IFo9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXS5jaGlsZHJlbjtsZXQgaWU9WltaLmxlbmd0aC0xXTsoIWllfHxpZS50eXBlIT09InRleHQiKSYmKGllPW5jKCksaWUucG9zaXRpb249e3N0YXJ0OmZyKEQuc3RhcnQpLGVuZDp2b2lkIDB9LFoucHVzaChpZSkpLHRoaXMuc3RhY2sucHVzaChpZSl9ZnVuY3Rpb24gSShEKXtjb25zdCBCPXRoaXMuc3RhY2sucG9wKCk7Qi52YWx1ZSs9dGhpcy5zbGljZVNlcmlhbGl6ZShEKSxCLnBvc2l0aW9uLmVuZD1mcihELmVuZCl9ZnVuY3Rpb24gTShEKXtjb25zdCBCPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07aWYodGhpcy5kYXRhLmF0SGFyZEJyZWFrKXtjb25zdCBaPUIuY2hpbGRyZW5bQi5jaGlsZHJlbi5sZW5ndGgtMV07Wi5wb3NpdGlvbi5lbmQ9ZnIoRC5lbmQpLHRoaXMuZGF0YS5hdEhhcmRCcmVhaz12b2lkIDA7cmV0dXJufSF0aGlzLmRhdGEuc2V0ZXh0SGVhZGluZ1NsdXJwTGluZUVuZGluZyYmdC5jYW5Db250YWluRW9scy5pbmNsdWRlcyhCLnR5cGUpJiYoai5jYWxsKHRoaXMsRCksSS5jYWxsKHRoaXMsRCkpfWZ1bmN0aW9uIHooKXt0aGlzLmRhdGEuYXRIYXJkQnJlYWs9ITB9ZnVuY3Rpb24gJCgpe2NvbnN0IEQ9dGhpcy5yZXN1bWUoKSxCPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07Qi52YWx1ZT1EfWZ1bmN0aW9uIE8oKXtjb25zdCBEPXRoaXMucmVzdW1lKCksQj10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO0IudmFsdWU9RH1mdW5jdGlvbiBVKCl7Y29uc3QgRD10aGlzLnJlc3VtZSgpLEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtCLnZhbHVlPUR9ZnVuY3Rpb24gSCgpe2NvbnN0IEQ9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtpZih0aGlzLmRhdGEuaW5SZWZlcmVuY2Upe2NvbnN0IEI9dGhpcy5kYXRhLnJlZmVyZW5jZVR5cGV8fCJzaG9ydGN1dCI7RC50eXBlKz0iUmVmZXJlbmNlIixELnJlZmVyZW5jZVR5cGU9QixkZWxldGUgRC51cmwsZGVsZXRlIEQudGl0bGV9ZWxzZSBkZWxldGUgRC5pZGVudGlmaWVyLGRlbGV0ZSBELmxhYmVsO3RoaXMuZGF0YS5yZWZlcmVuY2VUeXBlPXZvaWQgMH1mdW5jdGlvbiBHKCl7Y29uc3QgRD10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO2lmKHRoaXMuZGF0YS5pblJlZmVyZW5jZSl7Y29uc3QgQj10aGlzLmRhdGEucmVmZXJlbmNlVHlwZXx8InNob3J0Y3V0IjtELnR5cGUrPSJSZWZlcmVuY2UiLEQucmVmZXJlbmNlVHlwZT1CLGRlbGV0ZSBELnVybCxkZWxldGUgRC50aXRsZX1lbHNlIGRlbGV0ZSBELmlkZW50aWZpZXIsZGVsZXRlIEQubGFiZWw7dGhpcy5kYXRhLnJlZmVyZW5jZVR5cGU9dm9pZCAwfWZ1bmN0aW9uIE4oRCl7Y29uc3QgQj10aGlzLnNsaWNlU2VyaWFsaXplKEQpLFo9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0yXTtaLmxhYmVsPXRfKEIpLFouaWRlbnRpZmllcj1obyhCKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIFIoKXtjb25zdCBEPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV0sQj10aGlzLnJlc3VtZSgpLFo9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtpZih0aGlzLmRhdGEuaW5SZWZlcmVuY2U9ITAsWi50eXBlPT09ImxpbmsiKXtjb25zdCBpZT1ELmNoaWxkcmVuO1ouY2hpbGRyZW49aWV9ZWxzZSBaLmFsdD1CfWZ1bmN0aW9uIFMoKXtjb25zdCBEPXRoaXMucmVzdW1lKCksQj10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO0IudXJsPUR9ZnVuY3Rpb24gWSgpe2NvbnN0IEQ9dGhpcy5yZXN1bWUoKSxCPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07Qi50aXRsZT1EfWZ1bmN0aW9uIHEoKXt0aGlzLmRhdGEuaW5SZWZlcmVuY2U9dm9pZCAwfWZ1bmN0aW9uIEUoKXt0aGlzLmRhdGEucmVmZXJlbmNlVHlwZT0iY29sbGFwc2VkIn1mdW5jdGlvbiBYKEQpe2NvbnN0IEI9dGhpcy5yZXN1bWUoKSxaPXRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV07Wi5sYWJlbD1CLFouaWRlbnRpZmllcj1obyh0aGlzLnNsaWNlU2VyaWFsaXplKEQpKS50b0xvd2VyQ2FzZSgpLHRoaXMuZGF0YS5yZWZlcmVuY2VUeXBlPSJmdWxsIn1mdW5jdGlvbiBmZShEKXt0aGlzLmRhdGEuY2hhcmFjdGVyUmVmZXJlbmNlVHlwZT1ELnR5cGV9ZnVuY3Rpb24gYWUoRCl7Y29uc3QgQj10aGlzLnNsaWNlU2VyaWFsaXplKEQpLFo9dGhpcy5kYXRhLmNoYXJhY3RlclJlZmVyZW5jZVR5cGU7bGV0IGllO1o\/KGllPXRDKEIsWj09PSJjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljIj8xMDoxNiksdGhpcy5kYXRhLmNoYXJhY3RlclJlZmVyZW5jZVR5cGU9dm9pZCAwKTppZT1kbShCKTtjb25zdCB1ZT10aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdO3VlLnZhbHVlKz1pZX1mdW5jdGlvbiBzZShEKXtjb25zdCBCPXRoaXMuc3RhY2sucG9wKCk7Qi5wb3NpdGlvbi5lbmQ9ZnIoRC5lbmQpfWZ1bmN0aW9uIHJ0KEQpe0kuY2FsbCh0aGlzLEQpO2NvbnN0IEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtCLnVybD10aGlzLnNsaWNlU2VyaWFsaXplKEQpfWZ1bmN0aW9uIGl0KEQpe0kuY2FsbCh0aGlzLEQpO2NvbnN0IEI9dGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTtCLnVybD0ibWFpbHRvOiIrdGhpcy5zbGljZVNlcmlhbGl6ZShEKX1mdW5jdGlvbiBodCgpe3JldHVybnt0eXBlOiJibG9ja3F1b3RlIixjaGlsZHJlbjpbXX19ZnVuY3Rpb24gQ3QoKXtyZXR1cm57dHlwZToiY29kZSIsbGFuZzpudWxsLG1ldGE6bnVsbCx2YWx1ZToiIn19ZnVuY3Rpb24gcnIoKXtyZXR1cm57dHlwZToiaW5saW5lQ29kZSIsdmFsdWU6IiJ9fWZ1bmN0aW9uIHluKCl7cmV0dXJue3R5cGU6ImRlZmluaXRpb24iLGlkZW50aWZpZXI6IiIsbGFiZWw6bnVsbCx0aXRsZTpudWxsLHVybDoiIn19ZnVuY3Rpb24gRGkoKXtyZXR1cm57dHlwZToiZW1waGFzaXMiLGNoaWxkcmVuOltdfX1mdW5jdGlvbiBNaSgpe3JldHVybnt0eXBlOiJoZWFkaW5nIixkZXB0aDowLGNoaWxkcmVuOltdfX1mdW5jdGlvbiBYcigpe3JldHVybnt0eXBlOiJicmVhayJ9fWZ1bmN0aW9uIExpKCl7cmV0dXJue3R5cGU6Imh0bWwiLHZhbHVlOiIifX1mdW5jdGlvbiBKcigpe3JldHVybnt0eXBlOiJpbWFnZSIsdGl0bGU6bnVsbCx1cmw6IiIsYWx0Om51bGx9fWZ1bmN0aW9uIFZuKCl7cmV0dXJue3R5cGU6ImxpbmsiLHRpdGxlOm51bGwsdXJsOiIiLGNoaWxkcmVuOltdfX1mdW5jdGlvbiBLbyhEKXtyZXR1cm57dHlwZToibGlzdCIsb3JkZXJlZDpELnR5cGU9PT0ibGlzdE9yZGVyZWQiLHN0YXJ0Om51bGwsc3ByZWFkOkQuX3NwcmVhZCxjaGlsZHJlbjpbXX19ZnVuY3Rpb24gWnIoRCl7cmV0dXJue3R5cGU6Imxpc3RJdGVtIixzcHJlYWQ6RC5fc3ByZWFkLGNoZWNrZWQ6bnVsbCxjaGlsZHJlbjpbXX19ZnVuY3Rpb24gU2EoKXtyZXR1cm57dHlwZToicGFyYWdyYXBoIixjaGlsZHJlbjpbXX19ZnVuY3Rpb24gQm4oKXtyZXR1cm57dHlwZToic3Ryb25nIixjaGlsZHJlbjpbXX19ZnVuY3Rpb24gbmMoKXtyZXR1cm57dHlwZToidGV4dCIsdmFsdWU6IiJ9fWZ1bmN0aW9uIHJjKCl7cmV0dXJue3R5cGU6InRoZW1hdGljQnJlYWsifX19ZnVuY3Rpb24gZnIoZSl7cmV0dXJue2xpbmU6ZS5saW5lLGNvbHVtbjplLmNvbHVtbixvZmZzZXQ6ZS5vZmZzZXR9fWZ1bmN0aW9uIGZDKGUsdCl7bGV0IG49LTE7Zm9yKDsrK248dC5sZW5ndGg7KXtjb25zdCByPXRbbl07QXJyYXkuaXNBcnJheShyKT9mQyhlLHIpOm9fKGUscil9fWZ1bmN0aW9uIG9fKGUsdCl7bGV0IG47Zm9yKG4gaW4gdClpZihkQy5jYWxsKHQsbikpc3dpdGNoKG4pe2Nhc2UiY2FuQ29udGFpbkVvbHMiOntjb25zdCByPXRbbl07ciYmZVtuXS5wdXNoKC4uLnIpO2JyZWFrfWNhc2UidHJhbnNmb3JtcyI6e2NvbnN0IHI9dFtuXTtyJiZlW25dLnB1c2goLi4ucik7YnJlYWt9Y2FzZSJlbnRlciI6Y2FzZSJleGl0Ijp7Y29uc3Qgcj10W25dO3ImJk9iamVjdC5hc3NpZ24oZVtuXSxyKTticmVha319fWZ1bmN0aW9uIHIwKGUsdCl7dGhyb3cgZT9uZXcgRXJyb3IoIkNhbm5vdCBjbG9zZSBgIitlLnR5cGUrImAgKCIrRXMoe3N0YXJ0OmUuc3RhcnQsZW5kOmUuZW5kfSkrIik6IGEgZGlmZmVyZW50IHRva2VuIChgIit0LnR5cGUrImAsICIrRXMoe3N0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kfSkrIikgaXMgb3BlbiIpOm5ldyBFcnJvcigiQ2Fubm90IGNsb3NlIGRvY3VtZW50LCBhIHRva2VuIChgIit0LnR5cGUrImAsICIrRXMoe3N0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kfSkrIikgaXMgc3RpbGwgb3BlbiIpfWZ1bmN0aW9uIHNfKGUpe2NvbnN0IHQ9dGhpczt0LnBhcnNlcj1uO2Z1bmN0aW9uIG4ocil7cmV0dXJuIHJfKHIsey4uLnQuZGF0YSgic2V0dGluZ3MiKSwuLi5lLGV4dGVuc2lvbnM6dC5kYXRhKCJtaWNyb21hcmtFeHRlbnNpb25zIil8fFtdLG1kYXN0RXh0ZW5zaW9uczp0LmRhdGEoImZyb21NYXJrZG93bkV4dGVuc2lvbnMiKXx8W119KX19ZnVuY3Rpb24gYV8oZSx0KXtjb25zdCBuPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJibG9ja3F1b3RlIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOmUud3JhcChlLmFsbCh0KSwhMCl9O3JldHVybiBlLnBhdGNoKHQsbiksZS5hcHBseURhdGEodCxuKX1mdW5jdGlvbiBsXyhlLHQpe2NvbnN0IG49e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImJyIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOltdfTtyZXR1cm4gZS5wYXRjaCh0LG4pLFtlLmFwcGx5RGF0YSh0LG4pLHt0eXBlOiJ0ZXh0Iix2YWx1ZTpgCmB9XX1mdW5jdGlvbiB1XyhlLHQpe2NvbnN0IG49dC52YWx1ZT90LnZhbHVlK2AKYDoiIixyPXt9LGk9dC5sYW5nP3QubGFuZy5zcGxpdCgvXHMrLyk6W107aS5sZW5ndGg+MCYmKHIuY2xhc3NOYW1lPVsibGFuZ3VhZ2UtIitpWzBdXSk7bGV0IG89e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImNvZGUiLHByb3BlcnRpZXM6cixjaGlsZHJlbjpbe3R5cGU6InRleHQiLHZhbHVlOm59XX07cmV0dXJuIHQubWV0YSYmKG8uZGF0YT17bWV0YTp0Lm1ldGF9KSxlLnBhdGNoKHQsbyksbz1lLmFwcGx5RGF0YSh0LG8pLG89e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InByZSIscHJvcGVydGllczp7fSxjaGlsZHJlbjpbb119LGUucGF0Y2godCxvKSxvfWZ1bmN0aW9uIGNfKGUsdCl7Y29uc3Qgbj17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiZGVsIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOmUuYWxsKHQpfTtyZXR1cm4gZS5wYXRjaCh0LG4pLGUuYXBwbHlEYXRhKHQsbil9ZnVuY3Rpb24gZF8oZSx0KXtjb25zdCBuPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJlbSIscHJvcGVydGllczp7fSxjaGlsZHJlbjplLmFsbCh0KX07cmV0dXJuIGUucGF0Y2godCxuKSxlLmFwcGx5RGF0YSh0LG4pfWZ1bmN0aW9uIGZfKGUsdCl7Y29uc3Qgbj10eXBlb2YgZS5vcHRpb25zLmNsb2JiZXJQcmVmaXg9PSJzdHJpbmciP2Uub3B0aW9ucy5jbG9iYmVyUHJlZml4OiJ1c2VyLWNvbnRlbnQtIixyPVN0cmluZyh0LmlkZW50aWZpZXIpLnRvVXBwZXJDYXNlKCksaT1XbyhyLnRvTG93ZXJDYXNlKCkpLG89ZS5mb290bm90ZU9yZGVyLmluZGV4T2Yocik7bGV0IHMsYT1lLmZvb3Rub3RlQ291bnRzLmdldChyKTthPT09dm9pZCAwPyhhPTAsZS5mb290bm90ZU9yZGVyLnB1c2gocikscz1lLmZvb3Rub3RlT3JkZXIubGVuZ3RoKTpzPW8rMSxhKz0xLGUuZm9vdG5vdGVDb3VudHMuc2V0KHIsYSk7Y29uc3QgbD17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiYSIscHJvcGVydGllczp7aHJlZjoiIyIrbisiZm4tIitpLGlkOm4rImZucmVmLSIraSsoYT4xPyItIithOiIiKSxkYXRhRm9vdG5vdGVSZWY6ITAsYXJpYURlc2NyaWJlZEJ5OlsiZm9vdG5vdGUtbGFiZWwiXX0sY2hpbGRyZW46W3t0eXBlOiJ0ZXh0Iix2YWx1ZTpTdHJpbmcocyl9XX07ZS5wYXRjaCh0LGwpO2NvbnN0IHU9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InN1cCIscHJvcGVydGllczp7fSxjaGlsZHJlbjpbbF19O3JldHVybiBlLnBhdGNoKHQsdSksZS5hcHBseURhdGEodCx1KX1mdW5jdGlvbiBoXyhlLHQpe2NvbnN0IG49e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImgiK3QuZGVwdGgscHJvcGVydGllczp7fSxjaGlsZHJlbjplLmFsbCh0KX07cmV0dXJuIGUucGF0Y2godCxuKSxlLmFwcGx5RGF0YSh0LG4pfWZ1bmN0aW9uIHBfKGUsdCl7aWYoZS5vcHRpb25zLmFsbG93RGFuZ2Vyb3VzSHRtbCl7Y29uc3Qgbj17dHlwZToicmF3Iix2YWx1ZTp0LnZhbHVlfTtyZXR1cm4gZS5wYXRjaCh0LG4pLGUuYXBwbHlEYXRhKHQsbil9fWZ1bmN0aW9uIGhDKGUsdCl7Y29uc3Qgbj10LnJlZmVyZW5jZVR5cGU7bGV0IHI9Il0iO2lmKG49PT0iY29sbGFwc2VkIj9yKz0iW10iOm49PT0iZnVsbCImJihyKz0iWyIrKHQubGFiZWx8fHQuaWRlbnRpZmllcikrIl0iKSx0LnR5cGU9PT0iaW1hZ2VSZWZlcmVuY2UiKXJldHVyblt7dHlwZToidGV4dCIsdmFsdWU6IiFbIit0LmFsdCtyfV07Y29uc3QgaT1lLmFsbCh0KSxvPWlbMF07byYmby50eXBlPT09InRleHQiP28udmFsdWU9IlsiK28udmFsdWU6aS51bnNoaWZ0KHt0eXBlOiJ0ZXh0Iix2YWx1ZToiWyJ9KTtjb25zdCBzPWlbaS5sZW5ndGgtMV07cmV0dXJuIHMmJnMudHlwZT09PSJ0ZXh0Ij9zLnZhbHVlKz1yOmkucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6cn0pLGl9ZnVuY3Rpb24gbV8oZSx0KXtjb25zdCBuPVN0cmluZyh0LmlkZW50aWZpZXIpLnRvVXBwZXJDYXNlKCkscj1lLmRlZmluaXRpb25CeUlkLmdldChuKTtpZighcilyZXR1cm4gaEMoZSx0KTtjb25zdCBpPXtzcmM6V28oci51cmx8fCIiKSxhbHQ6dC5hbHR9O3IudGl0bGUhPT1udWxsJiZyLnRpdGxlIT09dm9pZCAwJiYoaS50aXRsZT1yLnRpdGxlKTtjb25zdCBvPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJpbWciLHByb3BlcnRpZXM6aSxjaGlsZHJlbjpbXX07cmV0dXJuIGUucGF0Y2godCxvKSxlLmFwcGx5RGF0YSh0LG8pfWZ1bmN0aW9uIGdfKGUsdCl7Y29uc3Qgbj17c3JjOldvKHQudXJsKX07dC5hbHQhPT1udWxsJiZ0LmFsdCE9PXZvaWQgMCYmKG4uYWx0PXQuYWx0KSx0LnRpdGxlIT09bnVsbCYmdC50aXRsZSE9PXZvaWQgMCYmKG4udGl0bGU9dC50aXRsZSk7Y29uc3Qgcj17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiaW1nIixwcm9wZXJ0aWVzOm4sY2hpbGRyZW46W119O3JldHVybiBlLnBhdGNoKHQsciksZS5hcHBseURhdGEodCxyKX1mdW5jdGlvbiB5XyhlLHQpe2NvbnN0IG49e3R5cGU6InRleHQiLHZhbHVlOnQudmFsdWUucmVwbGFjZSgvXHI\/XG58XHIvZywiICIpfTtlLnBhdGNoKHQsbik7Y29uc3Qgcj17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiY29kZSIscHJvcGVydGllczp7fSxjaGlsZHJlbjpbbl19O3JldHVybiBlLnBhdGNoKHQsciksZS5hcHBseURhdGEodCxyKX1mdW5jdGlvbiB2XyhlLHQpe2NvbnN0IG49U3RyaW5nKHQuaWRlbnRpZmllcikudG9VcHBlckNhc2UoKSxyPWUuZGVmaW5pdGlvbkJ5SWQuZ2V0KG4pO2lmKCFyKXJldHVybiBoQyhlLHQpO2NvbnN0IGk9e2hyZWY6V28oci51cmx8fCIiKX07ci50aXRsZSE9PW51bGwmJnIudGl0bGUhPT12b2lkIDAmJihpLnRpdGxlPXIudGl0bGUpO2NvbnN0IG89e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImEiLHByb3BlcnRpZXM6aSxjaGlsZHJlbjplLmFsbCh0KX07cmV0dXJuIGUucGF0Y2godCxvKSxlLmFwcGx5RGF0YSh0LG8pfWZ1bmN0aW9uIHhfKGUsdCl7Y29uc3Qgbj17aHJlZjpXbyh0LnVybCl9O3QudGl0bGUhPT1udWxsJiZ0LnRpdGxlIT09dm9pZCAwJiYobi50aXRsZT10LnRpdGxlKTtjb25zdCByPXt0eXBlOiJlbGVtZW50Iix0YWdOYW1lOiJhIixwcm9wZXJ0aWVzOm4sY2hpbGRyZW46ZS5hbGwodCl9O3JldHVybiBlLnBhdGNoKHQsciksZS5hcHBseURhdGEodCxyKX1mdW5jdGlvbiB3XyhlLHQsbil7Y29uc3Qgcj1lLmFsbCh0KSxpPW4\/Yl8obik6cEModCksbz17fSxzPVtdO2lmKHR5cGVvZiB0LmNoZWNrZWQ9PSJib29sZWFuIil7Y29uc3QgYz1yWzBdO2xldCBkO2MmJmMudHlwZT09PSJlbGVtZW50IiYmYy50YWdOYW1lPT09InAiP2Q9YzooZD17dHlwZToiZWxlbWVudCIsdGFnTmFtZToicCIscHJvcGVydGllczp7fSxjaGlsZHJlbjpbXX0sci51bnNoaWZ0KGQpKSxkLmNoaWxkcmVuLmxlbmd0aD4wJiZkLmNoaWxkcmVuLnVuc2hpZnQoe3R5cGU6InRleHQiLHZhbHVlOiIgIn0pLGQuY2hpbGRyZW4udW5zaGlmdCh7dHlwZToiZWxlbWVudCIsdGFnTmFtZToiaW5wdXQiLHByb3BlcnRpZXM6e3R5cGU6ImNoZWNrYm94IixjaGVja2VkOnQuY2hlY2tlZCxkaXNhYmxlZDohMH0sY2hpbGRyZW46W119KSxvLmNsYXNzTmFtZT1bInRhc2stbGlzdC1pdGVtIl19bGV0IGE9LTE7Zm9yKDsrK2E8ci5sZW5ndGg7KXtjb25zdCBjPXJbYV07KGl8fGEhPT0wfHxjLnR5cGUhPT0iZWxlbWVudCJ8fGMudGFnTmFtZSE9PSJwIikmJnMucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6YApgfSksYy50eXBlPT09ImVsZW1lbnQiJiZjLnRhZ05hbWU9PT0icCImJiFpP3MucHVzaCguLi5jLmNoaWxkcmVuKTpzLnB1c2goYyl9Y29uc3QgbD1yW3IubGVuZ3RoLTFdO2wmJihpfHxsLnR5cGUhPT0iZWxlbWVudCJ8fGwudGFnTmFtZSE9PSJwIikmJnMucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6YApgfSk7Y29uc3QgdT17dHlwZToiZWxlbWVudCIsdGFnTmFtZToibGkiLHByb3BlcnRpZXM6byxjaGlsZHJlbjpzfTtyZXR1cm4gZS5wYXRjaCh0LHUpLGUuYXBwbHlEYXRhKHQsdSl9ZnVuY3Rpb24gYl8oZSl7bGV0IHQ9ITE7aWYoZS50eXBlPT09Imxpc3QiKXt0PWUuc3ByZWFkfHwhMTtjb25zdCBuPWUuY2hpbGRyZW47bGV0IHI9LTE7Zm9yKDshdCYmKytyPG4ubGVuZ3RoOyl0PXBDKG5bcl0pfXJldHVybiB0fWZ1bmN0aW9uIHBDKGUpe2NvbnN0IHQ9ZS5zcHJlYWQ7cmV0dXJuIHQ\/P2UuY2hpbGRyZW4ubGVuZ3RoPjF9ZnVuY3Rpb24ga18oZSx0KXtjb25zdCBuPXt9LHI9ZS5hbGwodCk7bGV0IGk9LTE7Zm9yKHR5cGVvZiB0LnN0YXJ0PT0ibnVtYmVyIiYmdC5zdGFydCE9PTEmJihuLnN0YXJ0PXQuc3RhcnQpOysraTxyLmxlbmd0aDspe2NvbnN0IHM9cltpXTtpZihzLnR5cGU9PT0iZWxlbWVudCImJnMudGFnTmFtZT09PSJsaSImJnMucHJvcGVydGllcyYmQXJyYXkuaXNBcnJheShzLnByb3BlcnRpZXMuY2xhc3NOYW1lKSYmcy5wcm9wZXJ0aWVzLmNsYXNzTmFtZS5pbmNsdWRlcygidGFzay1saXN0LWl0ZW0iKSl7bi5jbGFzc05hbWU9WyJjb250YWlucy10YXNrLWxpc3QiXTticmVha319Y29uc3Qgbz17dHlwZToiZWxlbWVudCIsdGFnTmFtZTp0Lm9yZGVyZWQ\/Im9sIjoidWwiLHByb3BlcnRpZXM6bixjaGlsZHJlbjplLndyYXAociwhMCl9O3JldHVybiBlLnBhdGNoKHQsbyksZS5hcHBseURhdGEodCxvKX1mdW5jdGlvbiBTXyhlLHQpe2NvbnN0IG49e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InAiLHByb3BlcnRpZXM6e30sY2hpbGRyZW46ZS5hbGwodCl9O3JldHVybiBlLnBhdGNoKHQsbiksZS5hcHBseURhdGEodCxuKX1mdW5jdGlvbiBDXyhlLHQpe2NvbnN0IG49e3R5cGU6InJvb3QiLGNoaWxkcmVuOmUud3JhcChlLmFsbCh0KSl9O3JldHVybiBlLnBhdGNoKHQsbiksZS5hcHBseURhdGEodCxuKX1mdW5jdGlvbiBUXyhlLHQpe2NvbnN0IG49e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InN0cm9uZyIscHJvcGVydGllczp7fSxjaGlsZHJlbjplLmFsbCh0KX07cmV0dXJuIGUucGF0Y2godCxuKSxlLmFwcGx5RGF0YSh0LG4pfWZ1bmN0aW9uIEVfKGUsdCl7Y29uc3Qgbj1lLmFsbCh0KSxyPW4uc2hpZnQoKSxpPVtdO2lmKHIpe2NvbnN0IHM9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InRoZWFkIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOmUud3JhcChbcl0sITApfTtlLnBhdGNoKHQuY2hpbGRyZW5bMF0scyksaS5wdXNoKHMpfWlmKG4ubGVuZ3RoPjApe2NvbnN0IHM9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InRib2R5Iixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOmUud3JhcChuLCEwKX0sYT1hbSh0LmNoaWxkcmVuWzFdKSxsPUdTKHQuY2hpbGRyZW5bdC5jaGlsZHJlbi5sZW5ndGgtMV0pO2EmJmwmJihzLnBvc2l0aW9uPXtzdGFydDphLGVuZDpsfSksaS5wdXNoKHMpfWNvbnN0IG89e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InRhYmxlIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOmUud3JhcChpLCEwKX07cmV0dXJuIGUucGF0Y2godCxvKSxlLmFwcGx5RGF0YSh0LG8pfWZ1bmN0aW9uIFBfKGUsdCxuKXtjb25zdCByPW4\/bi5jaGlsZHJlbjp2b2lkIDAsbz0ocj9yLmluZGV4T2YodCk6MSk9PT0wPyJ0aCI6InRkIixzPW4mJm4udHlwZT09PSJ0YWJsZSI\/bi5hbGlnbjp2b2lkIDAsYT1zP3MubGVuZ3RoOnQuY2hpbGRyZW4ubGVuZ3RoO2xldCBsPS0xO2NvbnN0IHU9W107Zm9yKDsrK2w8YTspe2NvbnN0IGQ9dC5jaGlsZHJlbltsXSxoPXt9LGY9cz9zW2xdOnZvaWQgMDtmJiYoaC5hbGlnbj1mKTtsZXQgeT17dHlwZToiZWxlbWVudCIsdGFnTmFtZTpvLHByb3BlcnRpZXM6aCxjaGlsZHJlbjpbXX07ZCYmKHkuY2hpbGRyZW49ZS5hbGwoZCksZS5wYXRjaChkLHkpLHk9ZS5hcHBseURhdGEoZCx5KSksdS5wdXNoKHkpfWNvbnN0IGM9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InRyIixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOmUud3JhcCh1LCEwKX07cmV0dXJuIGUucGF0Y2godCxjKSxlLmFwcGx5RGF0YSh0LGMpfWZ1bmN0aW9uIEFfKGUsdCl7Y29uc3Qgbj17dHlwZToiZWxlbWVudCIsdGFnTmFtZToidGQiLHByb3BlcnRpZXM6e30sY2hpbGRyZW46ZS5hbGwodCl9O3JldHVybiBlLnBhdGNoKHQsbiksZS5hcHBseURhdGEodCxuKX1jb25zdCBpMD05LG8wPTMyO2Z1bmN0aW9uIElfKGUpe2NvbnN0IHQ9U3RyaW5nKGUpLG49L1xyP1xufFxyL2c7bGV0IHI9bi5leGVjKHQpLGk9MDtjb25zdCBvPVtdO2Zvcig7cjspby5wdXNoKHMwKHQuc2xpY2UoaSxyLmluZGV4KSxpPjAsITApLHJbMF0pLGk9ci5pbmRleCtyWzBdLmxlbmd0aCxyPW4uZXhlYyh0KTtyZXR1cm4gby5wdXNoKHMwKHQuc2xpY2UoaSksaT4wLCExKSksby5qb2luKCIiKX1mdW5jdGlvbiBzMChlLHQsbil7bGV0IHI9MCxpPWUubGVuZ3RoO2lmKHQpe2xldCBvPWUuY29kZVBvaW50QXQocik7Zm9yKDtvPT09aTB8fG89PT1vMDspcisrLG89ZS5jb2RlUG9pbnRBdChyKX1pZihuKXtsZXQgbz1lLmNvZGVQb2ludEF0KGktMSk7Zm9yKDtvPT09aTB8fG89PT1vMDspaS0tLG89ZS5jb2RlUG9pbnRBdChpLTEpfXJldHVybiBpPnI\/ZS5zbGljZShyLGkpOiIifWZ1bmN0aW9uIE5fKGUsdCl7Y29uc3Qgbj17dHlwZToidGV4dCIsdmFsdWU6SV8oU3RyaW5nKHQudmFsdWUpKX07cmV0dXJuIGUucGF0Y2godCxuKSxlLmFwcGx5RGF0YSh0LG4pfWZ1bmN0aW9uIGpfKGUsdCl7Y29uc3Qgbj17dHlwZToiZWxlbWVudCIsdGFnTmFtZToiaHIiLHByb3BlcnRpZXM6e30sY2hpbGRyZW46W119O3JldHVybiBlLnBhdGNoKHQsbiksZS5hcHBseURhdGEodCxuKX1jb25zdCB6Xz17YmxvY2txdW90ZTphXyxicmVhazpsXyxjb2RlOnVfLGRlbGV0ZTpjXyxlbXBoYXNpczpkXyxmb290bm90ZVJlZmVyZW5jZTpmXyxoZWFkaW5nOmhfLGh0bWw6cF8saW1hZ2VSZWZlcmVuY2U6bV8saW1hZ2U6Z18saW5saW5lQ29kZTp5XyxsaW5rUmVmZXJlbmNlOnZfLGxpbms6eF8sbGlzdEl0ZW06d18sbGlzdDprXyxwYXJhZ3JhcGg6U18scm9vdDpDXyxzdHJvbmc6VF8sdGFibGU6RV8sdGFibGVDZWxsOkFfLHRhYmxlUm93OlBfLHRleHQ6Tl8sdGhlbWF0aWNCcmVhazpqXyx0b21sOkphLHlhbWw6SmEsZGVmaW5pdGlvbjpKYSxmb290bm90ZURlZmluaXRpb246SmF9O2Z1bmN0aW9uIEphKCl7fWNvbnN0IG1DPS0xLGVjPTAsQXM9MSxodT0yLHBtPTMsbW09NCxnbT01LHltPTYsZ0M9Nyx5Qz04LGEwPXR5cGVvZiBzZWxmPT0ib2JqZWN0Ij9zZWxmOmdsb2JhbFRoaXMsUl89KGUsdCk9Pntjb25zdCBuPShpLG8pPT4oZS5zZXQobyxpKSxpKSxyPWk9PntpZihlLmhhcyhpKSlyZXR1cm4gZS5nZXQoaSk7Y29uc3RbbyxzXT10W2ldO3N3aXRjaChvKXtjYXNlIGVjOmNhc2UgbUM6cmV0dXJuIG4ocyxpKTtjYXNlIEFzOntjb25zdCBhPW4oW10saSk7Zm9yKGNvbnN0IGwgb2YgcylhLnB1c2gocihsKSk7cmV0dXJuIGF9Y2FzZSBodTp7Y29uc3QgYT1uKHt9LGkpO2Zvcihjb25zdFtsLHVdb2YgcylhW3IobCldPXIodSk7cmV0dXJuIGF9Y2FzZSBwbTpyZXR1cm4gbihuZXcgRGF0ZShzKSxpKTtjYXNlIG1tOntjb25zdHtzb3VyY2U6YSxmbGFnczpsfT1zO3JldHVybiBuKG5ldyBSZWdFeHAoYSxsKSxpKX1jYXNlIGdtOntjb25zdCBhPW4obmV3IE1hcCxpKTtmb3IoY29uc3RbbCx1XW9mIHMpYS5zZXQocihsKSxyKHUpKTtyZXR1cm4gYX1jYXNlIHltOntjb25zdCBhPW4obmV3IFNldCxpKTtmb3IoY29uc3QgbCBvZiBzKWEuYWRkKHIobCkpO3JldHVybiBhfWNhc2UgZ0M6e2NvbnN0e25hbWU6YSxtZXNzYWdlOmx9PXM7cmV0dXJuIG4obmV3IGEwW2FdKGwpLGkpfWNhc2UgeUM6cmV0dXJuIG4oQmlnSW50KHMpLGkpO2Nhc2UiQmlnSW50IjpyZXR1cm4gbihPYmplY3QoQmlnSW50KHMpKSxpKTtjYXNlIkFycmF5QnVmZmVyIjpyZXR1cm4gbihuZXcgVWludDhBcnJheShzKS5idWZmZXIscyk7Y2FzZSJEYXRhVmlldyI6e2NvbnN0e2J1ZmZlcjphfT1uZXcgVWludDhBcnJheShzKTtyZXR1cm4gbihuZXcgRGF0YVZpZXcoYSkscyl9fXJldHVybiBuKG5ldyBhMFtvXShzKSxpKX07cmV0dXJuIHJ9LGwwPWU9PlJfKG5ldyBNYXAsZSkoMCksRmk9IiIse3RvU3RyaW5nOkRffT17fSx7a2V5czpNX309T2JqZWN0LHNzPWU9Pntjb25zdCB0PXR5cGVvZiBlO2lmKHQhPT0ib2JqZWN0Inx8IWUpcmV0dXJuW2VjLHRdO2NvbnN0IG49RF8uY2FsbChlKS5zbGljZSg4LC0xKTtzd2l0Y2gobil7Y2FzZSJBcnJheSI6cmV0dXJuW0FzLEZpXTtjYXNlIk9iamVjdCI6cmV0dXJuW2h1LEZpXTtjYXNlIkRhdGUiOnJldHVybltwbSxGaV07Y2FzZSJSZWdFeHAiOnJldHVyblttbSxGaV07Y2FzZSJNYXAiOnJldHVybltnbSxGaV07Y2FzZSJTZXQiOnJldHVyblt5bSxGaV07Y2FzZSJEYXRhVmlldyI6cmV0dXJuW0FzLG5dfXJldHVybiBuLmluY2x1ZGVzKCJBcnJheSIpP1tBcyxuXTpuLmluY2x1ZGVzKCJFcnJvciIpP1tnQyxuXTpbaHUsbl19LFphPShbZSx0XSk9PmU9PT1lYyYmKHQ9PT0iZnVuY3Rpb24ifHx0PT09InN5bWJvbCIpLExfPShlLHQsbixyKT0+e2NvbnN0IGk9KHMsYSk9Pntjb25zdCBsPXIucHVzaChzKS0xO3JldHVybiBuLnNldChhLGwpLGx9LG89cz0+e2lmKG4uaGFzKHMpKXJldHVybiBuLmdldChzKTtsZXRbYSxsXT1zcyhzKTtzd2l0Y2goYSl7Y2FzZSBlYzp7bGV0IGM9cztzd2l0Y2gobCl7Y2FzZSJiaWdpbnQiOmE9eUMsYz1zLnRvU3RyaW5nKCk7YnJlYWs7Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOmlmKGUpdGhyb3cgbmV3IFR5cGVFcnJvcigidW5hYmxlIHRvIHNlcmlhbGl6ZSAiK2wpO2M9bnVsbDticmVhaztjYXNlInVuZGVmaW5lZCI6cmV0dXJuIGkoW21DXSxzKX1yZXR1cm4gaShbYSxjXSxzKX1jYXNlIEFzOntpZihsKXtsZXQgaD1zO3JldHVybiBsPT09IkRhdGFWaWV3Ij9oPW5ldyBVaW50OEFycmF5KHMuYnVmZmVyKTpsPT09IkFycmF5QnVmZmVyIiYmKGg9bmV3IFVpbnQ4QXJyYXkocykpLGkoW2wsWy4uLmhdXSxzKX1jb25zdCBjPVtdLGQ9aShbYSxjXSxzKTtmb3IoY29uc3QgaCBvZiBzKWMucHVzaChvKGgpKTtyZXR1cm4gZH1jYXNlIGh1OntpZihsKXN3aXRjaChsKXtjYXNlIkJpZ0ludCI6cmV0dXJuIGkoW2wscy50b1N0cmluZygpXSxzKTtjYXNlIkJvb2xlYW4iOmNhc2UiTnVtYmVyIjpjYXNlIlN0cmluZyI6cmV0dXJuIGkoW2wscy52YWx1ZU9mKCldLHMpfWlmKHQmJiJ0b0pTT04iaW4gcylyZXR1cm4gbyhzLnRvSlNPTigpKTtjb25zdCBjPVtdLGQ9aShbYSxjXSxzKTtmb3IoY29uc3QgaCBvZiBNXyhzKSkoZXx8IVphKHNzKHNbaF0pKSkmJmMucHVzaChbbyhoKSxvKHNbaF0pXSk7cmV0dXJuIGR9Y2FzZSBwbTpyZXR1cm4gaShbYSxzLnRvSVNPU3RyaW5nKCldLHMpO2Nhc2UgbW06e2NvbnN0e3NvdXJjZTpjLGZsYWdzOmR9PXM7cmV0dXJuIGkoW2Ese3NvdXJjZTpjLGZsYWdzOmR9XSxzKX1jYXNlIGdtOntjb25zdCBjPVtdLGQ9aShbYSxjXSxzKTtmb3IoY29uc3RbaCxmXW9mIHMpKGV8fCEoWmEoc3MoaCkpfHxaYShzcyhmKSkpKSYmYy5wdXNoKFtvKGgpLG8oZildKTtyZXR1cm4gZH1jYXNlIHltOntjb25zdCBjPVtdLGQ9aShbYSxjXSxzKTtmb3IoY29uc3QgaCBvZiBzKShlfHwhWmEoc3MoaCkpKSYmYy5wdXNoKG8oaCkpO3JldHVybiBkfX1jb25zdHttZXNzYWdlOnV9PXM7cmV0dXJuIGkoW2Ese25hbWU6bCxtZXNzYWdlOnV9XSxzKX07cmV0dXJuIG99LHUwPShlLHtqc29uOnQsbG9zc3k6bn09e30pPT57Y29uc3Qgcj1bXTtyZXR1cm4gTF8oISh0fHxuKSwhIXQsbmV3IE1hcCxyKShlKSxyfSxwdT10eXBlb2Ygc3RydWN0dXJlZENsb25lPT0iZnVuY3Rpb24iPyhlLHQpPT50JiYoImpzb24iaW4gdHx8Imxvc3N5ImluIHQpP2wwKHUwKGUsdCkpOnN0cnVjdHVyZWRDbG9uZShlKTooZSx0KT0+bDAodTAoZSx0KSk7ZnVuY3Rpb24gT18oZSx0KXtjb25zdCBuPVt7dHlwZToidGV4dCIsdmFsdWU6IuKGqSJ9XTtyZXR1cm4gdD4xJiZuLnB1c2goe3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InN1cCIscHJvcGVydGllczp7fSxjaGlsZHJlbjpbe3R5cGU6InRleHQiLHZhbHVlOlN0cmluZyh0KX1dfSksbn1mdW5jdGlvbiBGXyhlLHQpe3JldHVybiJCYWNrIHRvIHJlZmVyZW5jZSAiKyhlKzEpKyh0PjE\/Ii0iK3Q6IiIpfWZ1bmN0aW9uIF9fKGUpe2NvbnN0IHQ9dHlwZW9mIGUub3B0aW9ucy5jbG9iYmVyUHJlZml4PT0ic3RyaW5nIj9lLm9wdGlvbnMuY2xvYmJlclByZWZpeDoidXNlci1jb250ZW50LSIsbj1lLm9wdGlvbnMuZm9vdG5vdGVCYWNrQ29udGVudHx8T18scj1lLm9wdGlvbnMuZm9vdG5vdGVCYWNrTGFiZWx8fEZfLGk9ZS5vcHRpb25zLmZvb3Rub3RlTGFiZWx8fCJGb290bm90ZXMiLG89ZS5vcHRpb25zLmZvb3Rub3RlTGFiZWxUYWdOYW1lfHwiaDIiLHM9ZS5vcHRpb25zLmZvb3Rub3RlTGFiZWxQcm9wZXJ0aWVzfHx7Y2xhc3NOYW1lOlsic3Itb25seSJdfSxhPVtdO2xldCBsPS0xO2Zvcig7KytsPGUuZm9vdG5vdGVPcmRlci5sZW5ndGg7KXtjb25zdCB1PWUuZm9vdG5vdGVCeUlkLmdldChlLmZvb3Rub3RlT3JkZXJbbF0pO2lmKCF1KWNvbnRpbnVlO2NvbnN0IGM9ZS5hbGwodSksZD1TdHJpbmcodS5pZGVudGlmaWVyKS50b1VwcGVyQ2FzZSgpLGg9V28oZC50b0xvd2VyQ2FzZSgpKTtsZXQgZj0wO2NvbnN0IHk9W10sbT1lLmZvb3Rub3RlQ291bnRzLmdldChkKTtmb3IoO20hPT12b2lkIDAmJisrZjw9bTspe3kubGVuZ3RoPjAmJnkucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6IiAifSk7bGV0IHY9dHlwZW9mIG49PSJzdHJpbmciP246bihsLGYpO3R5cGVvZiB2PT0ic3RyaW5nIiYmKHY9e3R5cGU6InRleHQiLHZhbHVlOnZ9KSx5LnB1c2goe3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImEiLHByb3BlcnRpZXM6e2hyZWY6IiMiK3QrImZucmVmLSIraCsoZj4xPyItIitmOiIiKSxkYXRhRm9vdG5vdGVCYWNrcmVmOiIiLGFyaWFMYWJlbDp0eXBlb2Ygcj09InN0cmluZyI\/cjpyKGwsZiksY2xhc3NOYW1lOlsiZGF0YS1mb290bm90ZS1iYWNrcmVmIl19LGNoaWxkcmVuOkFycmF5LmlzQXJyYXkodik\/djpbdl19KX1jb25zdCB3PWNbYy5sZW5ndGgtMV07aWYodyYmdy50eXBlPT09ImVsZW1lbnQiJiZ3LnRhZ05hbWU9PT0icCIpe2NvbnN0IHY9dy5jaGlsZHJlblt3LmNoaWxkcmVuLmxlbmd0aC0xXTt2JiZ2LnR5cGU9PT0idGV4dCI\/di52YWx1ZSs9IiAiOncuY2hpbGRyZW4ucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6IiAifSksdy5jaGlsZHJlbi5wdXNoKC4uLnkpfWVsc2UgYy5wdXNoKC4uLnkpO2NvbnN0IHA9e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6ImxpIixwcm9wZXJ0aWVzOntpZDp0KyJmbi0iK2h9LGNoaWxkcmVuOmUud3JhcChjLCEwKX07ZS5wYXRjaCh1LHApLGEucHVzaChwKX1pZihhLmxlbmd0aCE9PTApcmV0dXJue3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6InNlY3Rpb24iLHByb3BlcnRpZXM6e2RhdGFGb290bm90ZXM6ITAsY2xhc3NOYW1lOlsiZm9vdG5vdGVzIl19LGNoaWxkcmVuOlt7dHlwZToiZWxlbWVudCIsdGFnTmFtZTpvLHByb3BlcnRpZXM6ey4uLnB1KHMpLGlkOiJmb290bm90ZS1sYWJlbCJ9LGNoaWxkcmVuOlt7dHlwZToidGV4dCIsdmFsdWU6aX1dfSx7dHlwZToidGV4dCIsdmFsdWU6YApgfSx7dHlwZToiZWxlbWVudCIsdGFnTmFtZToib2wiLHByb3BlcnRpZXM6e30sY2hpbGRyZW46ZS53cmFwKGEsITApfSx7dHlwZToidGV4dCIsdmFsdWU6YApgfV19fWNvbnN0IHZDPWZ1bmN0aW9uKGUpe2lmKGU9PW51bGwpcmV0dXJuICRfO2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXJldHVybiB0YyhlKTtpZih0eXBlb2YgZT09Im9iamVjdCIpcmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/Vl8oZSk6Ql8oZSk7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBVXyhlKTt0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0Iil9O2Z1bmN0aW9uIFZfKGUpe2NvbnN0IHQ9W107bGV0IG49LTE7Zm9yKDsrK248ZS5sZW5ndGg7KXRbbl09dkMoZVtuXSk7cmV0dXJuIHRjKHIpO2Z1bmN0aW9uIHIoLi4uaSl7bGV0IG89LTE7Zm9yKDsrK288dC5sZW5ndGg7KWlmKHRbb10uYXBwbHkodGhpcyxpKSlyZXR1cm4hMDtyZXR1cm4hMX19ZnVuY3Rpb24gQl8oZSl7Y29uc3QgdD1lO3JldHVybiB0YyhuKTtmdW5jdGlvbiBuKHIpe2NvbnN0IGk9cjtsZXQgbztmb3IobyBpbiBlKWlmKGlbb10hPT10W29dKXJldHVybiExO3JldHVybiEwfX1mdW5jdGlvbiBVXyhlKXtyZXR1cm4gdGModCk7ZnVuY3Rpb24gdChuKXtyZXR1cm4gbiYmbi50eXBlPT09ZX19ZnVuY3Rpb24gdGMoZSl7cmV0dXJuIHQ7ZnVuY3Rpb24gdChuLHIsaSl7cmV0dXJuISEoSF8obikmJmUuY2FsbCh0aGlzLG4sdHlwZW9mIHI9PSJudW1iZXIiP3I6dm9pZCAwLGl8fHZvaWQgMCkpfX1mdW5jdGlvbiAkXygpe3JldHVybiEwfWZ1bmN0aW9uIEhfKGUpe3JldHVybiBlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiJiYidHlwZSJpbiBlfWNvbnN0IHhDPVtdLHFfPSEwLGMwPSExLFdfPSJza2lwIjtmdW5jdGlvbiBLXyhlLHQsbixyKXtsZXQgaTt0eXBlb2YgdD09ImZ1bmN0aW9uIiYmdHlwZW9mIG4hPSJmdW5jdGlvbiI\/KHI9bixuPXQpOmk9dDtjb25zdCBvPXZDKGkpLHM9cj8tMToxO2EoZSx2b2lkIDAsW10pKCk7ZnVuY3Rpb24gYShsLHUsYyl7Y29uc3QgZD1sJiZ0eXBlb2YgbD09Im9iamVjdCI\/bDp7fTtpZih0eXBlb2YgZC50eXBlPT0ic3RyaW5nIil7Y29uc3QgZj10eXBlb2YgZC50YWdOYW1lPT0ic3RyaW5nIj9kLnRhZ05hbWU6dHlwZW9mIGQubmFtZT09InN0cmluZyI\/ZC5uYW1lOnZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwibmFtZSIse3ZhbHVlOiJub2RlICgiKyhsLnR5cGUrKGY\/IjwiK2YrIj4iOiIiKSkrIikifSl9cmV0dXJuIGg7ZnVuY3Rpb24gaCgpe2xldCBmPXhDLHksbSx3O2lmKCghdHx8byhsLHUsY1tjLmxlbmd0aC0xXXx8dm9pZCAwKSkmJihmPUdfKG4obCxjKSksZlswXT09PWMwKSlyZXR1cm4gZjtpZigiY2hpbGRyZW4iaW4gbCYmbC5jaGlsZHJlbil7Y29uc3QgcD1sO2lmKHAuY2hpbGRyZW4mJmZbMF0hPT1XXylmb3IobT0ocj9wLmNoaWxkcmVuLmxlbmd0aDotMSkrcyx3PWMuY29uY2F0KHApO20+LTEmJm08cC5jaGlsZHJlbi5sZW5ndGg7KXtjb25zdCB2PXAuY2hpbGRyZW5bbV07aWYoeT1hKHYsbSx3KSgpLHlbMF09PT1jMClyZXR1cm4geTttPXR5cGVvZiB5WzFdPT0ibnVtYmVyIj95WzFdOm0rc319cmV0dXJuIGZ9fX1mdW5jdGlvbiBHXyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOnR5cGVvZiBlPT0ibnVtYmVyIj9bcV8sZV06ZT09bnVsbD94QzpbZV19ZnVuY3Rpb24gd0MoZSx0LG4scil7bGV0IGksbyxzO3R5cGVvZiB0PT0iZnVuY3Rpb24iJiZ0eXBlb2YgbiE9ImZ1bmN0aW9uIj8obz12b2lkIDAscz10LGk9bik6KG89dCxzPW4saT1yKSxLXyhlLG8sYSxpKTtmdW5jdGlvbiBhKGwsdSl7Y29uc3QgYz11W3UubGVuZ3RoLTFdLGQ9Yz9jLmNoaWxkcmVuLmluZGV4T2YobCk6dm9pZCAwO3JldHVybiBzKGwsZCxjKX19Y29uc3Qgcmg9e30uaGFzT3duUHJvcGVydHksWV89e307ZnVuY3Rpb24gUV8oZSx0KXtjb25zdCBuPXR8fFlfLHI9bmV3IE1hcCxpPW5ldyBNYXAsbz1uZXcgTWFwLHM9ey4uLnpfLC4uLm4uaGFuZGxlcnN9LGE9e2FsbDp1LGFwcGx5RGF0YTpKXyxkZWZpbml0aW9uQnlJZDpyLGZvb3Rub3RlQnlJZDppLGZvb3Rub3RlQ291bnRzOm8sZm9vdG5vdGVPcmRlcjpbXSxoYW5kbGVyczpzLG9uZTpsLG9wdGlvbnM6bixwYXRjaDpYXyx3cmFwOmUzfTtyZXR1cm4gd0MoZSxmdW5jdGlvbihjKXtpZihjLnR5cGU9PT0iZGVmaW5pdGlvbiJ8fGMudHlwZT09PSJmb290bm90ZURlZmluaXRpb24iKXtjb25zdCBkPWMudHlwZT09PSJkZWZpbml0aW9uIj9yOmksaD1TdHJpbmcoYy5pZGVudGlmaWVyKS50b1VwcGVyQ2FzZSgpO2QuaGFzKGgpfHxkLnNldChoLGMpfX0pLGE7ZnVuY3Rpb24gbChjLGQpe2NvbnN0IGg9Yy50eXBlLGY9YS5oYW5kbGVyc1toXTtpZihyaC5jYWxsKGEuaGFuZGxlcnMsaCkmJmYpcmV0dXJuIGYoYSxjLGQpO2lmKGEub3B0aW9ucy5wYXNzVGhyb3VnaCYmYS5vcHRpb25zLnBhc3NUaHJvdWdoLmluY2x1ZGVzKGgpKXtpZigiY2hpbGRyZW4iaW4gYyl7Y29uc3R7Y2hpbGRyZW46bSwuLi53fT1jLHA9cHUodyk7cmV0dXJuIHAuY2hpbGRyZW49YS5hbGwoYykscH1yZXR1cm4gcHUoYyl9cmV0dXJuKGEub3B0aW9ucy51bmtub3duSGFuZGxlcnx8Wl8pKGEsYyxkKX1mdW5jdGlvbiB1KGMpe2NvbnN0IGQ9W107aWYoImNoaWxkcmVuImluIGMpe2NvbnN0IGg9Yy5jaGlsZHJlbjtsZXQgZj0tMTtmb3IoOysrZjxoLmxlbmd0aDspe2NvbnN0IHk9YS5vbmUoaFtmXSxjKTtpZih5KXtpZihmJiZoW2YtMV0udHlwZT09PSJicmVhayImJighQXJyYXkuaXNBcnJheSh5KSYmeS50eXBlPT09InRleHQiJiYoeS52YWx1ZT1kMCh5LnZhbHVlKSksIUFycmF5LmlzQXJyYXkoeSkmJnkudHlwZT09PSJlbGVtZW50Iikpe2NvbnN0IG09eS5jaGlsZHJlblswXTttJiZtLnR5cGU9PT0idGV4dCImJihtLnZhbHVlPWQwKG0udmFsdWUpKX1BcnJheS5pc0FycmF5KHkpP2QucHVzaCguLi55KTpkLnB1c2goeSl9fX1yZXR1cm4gZH19ZnVuY3Rpb24gWF8oZSx0KXtlLnBvc2l0aW9uJiYodC5wb3NpdGlvbj1ERihlKSl9ZnVuY3Rpb24gSl8oZSx0KXtsZXQgbj10O2lmKGUmJmUuZGF0YSl7Y29uc3Qgcj1lLmRhdGEuaE5hbWUsaT1lLmRhdGEuaENoaWxkcmVuLG89ZS5kYXRhLmhQcm9wZXJ0aWVzO2lmKHR5cGVvZiByPT0ic3RyaW5nIilpZihuLnR5cGU9PT0iZWxlbWVudCIpbi50YWdOYW1lPXI7ZWxzZXtjb25zdCBzPSJjaGlsZHJlbiJpbiBuP24uY2hpbGRyZW46W25dO249e3R5cGU6ImVsZW1lbnQiLHRhZ05hbWU6cixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOnN9fW4udHlwZT09PSJlbGVtZW50IiYmbyYmT2JqZWN0LmFzc2lnbihuLnByb3BlcnRpZXMscHUobykpLCJjaGlsZHJlbiJpbiBuJiZuLmNoaWxkcmVuJiZpIT09bnVsbCYmaSE9PXZvaWQgMCYmKG4uY2hpbGRyZW49aSl9cmV0dXJuIG59ZnVuY3Rpb24gWl8oZSx0KXtjb25zdCBuPXQuZGF0YXx8e30scj0idmFsdWUiaW4gdCYmIShyaC5jYWxsKG4sImhQcm9wZXJ0aWVzIil8fHJoLmNhbGwobiwiaENoaWxkcmVuIikpP3t0eXBlOiJ0ZXh0Iix2YWx1ZTp0LnZhbHVlfTp7dHlwZToiZWxlbWVudCIsdGFnTmFtZToiZGl2Iixwcm9wZXJ0aWVzOnt9LGNoaWxkcmVuOmUuYWxsKHQpfTtyZXR1cm4gZS5wYXRjaCh0LHIpLGUuYXBwbHlEYXRhKHQscil9ZnVuY3Rpb24gZTMoZSx0KXtjb25zdCBuPVtdO2xldCByPS0xO2Zvcih0JiZuLnB1c2goe3R5cGU6InRleHQiLHZhbHVlOmAKYH0pOysrcjxlLmxlbmd0aDspciYmbi5wdXNoKHt0eXBlOiJ0ZXh0Iix2YWx1ZTpgCmB9KSxuLnB1c2goZVtyXSk7cmV0dXJuIHQmJmUubGVuZ3RoPjAmJm4ucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6YApgfSksbn1mdW5jdGlvbiBkMChlKXtsZXQgdD0wLG49ZS5jaGFyQ29kZUF0KHQpO2Zvcig7bj09PTl8fG49PT0zMjspdCsrLG49ZS5jaGFyQ29kZUF0KHQpO3JldHVybiBlLnNsaWNlKHQpfWZ1bmN0aW9uIGYwKGUsdCl7Y29uc3Qgbj1RXyhlLHQpLHI9bi5vbmUoZSx2b2lkIDApLGk9X18obiksbz1BcnJheS5pc0FycmF5KHIpP3t0eXBlOiJyb290IixjaGlsZHJlbjpyfTpyfHx7dHlwZToicm9vdCIsY2hpbGRyZW46W119O3JldHVybiBpJiZvLmNoaWxkcmVuLnB1c2goe3R5cGU6InRleHQiLHZhbHVlOmAKYH0saSksb31mdW5jdGlvbiB0MyhlLHQpe3JldHVybiBlJiYicnVuImluIGU\/YXN5bmMgZnVuY3Rpb24obixyKXtjb25zdCBpPWYwKG4se2ZpbGU6ciwuLi50fSk7YXdhaXQgZS5ydW4oaSxyKX06ZnVuY3Rpb24obixyKXtyZXR1cm4gZjAobix7ZmlsZTpyLC4uLmV8fHR9KX19ZnVuY3Rpb24gaDAoZSl7aWYoZSl0aHJvdyBlfXZhciBDbD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGJDPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcscDA9T2JqZWN0LmRlZmluZVByb3BlcnR5LG0wPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZzA9ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiBBcnJheS5pc0FycmF5PT0iZnVuY3Rpb24iP0FycmF5LmlzQXJyYXkodCk6YkMuY2FsbCh0KT09PSJbb2JqZWN0IEFycmF5XSJ9LHkwPWZ1bmN0aW9uKHQpe2lmKCF0fHxiQy5jYWxsKHQpIT09IltvYmplY3QgT2JqZWN0XSIpcmV0dXJuITE7dmFyIG49Q2wuY2FsbCh0LCJjb25zdHJ1Y3RvciIpLHI9dC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUmJkNsLmNhbGwodC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2YiKTtpZih0LmNvbnN0cnVjdG9yJiYhbiYmIXIpcmV0dXJuITE7dmFyIGk7Zm9yKGkgaW4gdCk7cmV0dXJuIHR5cGVvZiBpPiJ1Inx8Q2wuY2FsbCh0LGkpfSx2MD1mdW5jdGlvbih0LG4pe3AwJiZuLm5hbWU9PT0iX19wcm90b19fIj9wMCh0LG4ubmFtZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsdmFsdWU6bi5uZXdWYWx1ZSx3cml0YWJsZTohMH0pOnRbbi5uYW1lXT1uLm5ld1ZhbHVlfSx4MD1mdW5jdGlvbih0LG4pe2lmKG49PT0iX19wcm90b19fIilpZihDbC5jYWxsKHQsbikpe2lmKG0wKXJldHVybiBtMCh0LG4pLnZhbHVlfWVsc2UgcmV0dXJuO3JldHVybiB0W25dfSxuMz1mdW5jdGlvbiBlKCl7dmFyIHQsbixyLGksbyxzLGE9YXJndW1lbnRzWzBdLGw9MSx1PWFyZ3VtZW50cy5sZW5ndGgsYz0hMTtmb3IodHlwZW9mIGE9PSJib29sZWFuIiYmKGM9YSxhPWFyZ3VtZW50c1sxXXx8e30sbD0yKSwoYT09bnVsbHx8dHlwZW9mIGEhPSJvYmplY3QiJiZ0eXBlb2YgYSE9ImZ1bmN0aW9uIikmJihhPXt9KTtsPHU7KytsKWlmKHQ9YXJndW1lbnRzW2xdLHQhPW51bGwpZm9yKG4gaW4gdClyPXgwKGEsbiksaT14MCh0LG4pLGEhPT1pJiYoYyYmaSYmKHkwKGkpfHwobz1nMChpKSkpPyhvPyhvPSExLHM9ciYmZzAocik\/cjpbXSk6cz1yJiZ5MChyKT9yOnt9LHYwKGEse25hbWU6bixuZXdWYWx1ZTplKGMscyxpKX0pKTp0eXBlb2YgaTwidSImJnYwKGEse25hbWU6bixuZXdWYWx1ZTppfSkpO3JldHVybiBhfTtjb25zdCBsZD1tdShuMyk7ZnVuY3Rpb24gaWgoZSl7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbClyZXR1cm4hMTtjb25zdCB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4odD09PW51bGx8fHQ9PT1PYmplY3QucHJvdG90eXBlfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1udWxsKSYmIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gZSkmJiEoU3ltYm9sLml0ZXJhdG9yIGluIGUpfWZ1bmN0aW9uIHIzKCl7Y29uc3QgZT1bXSx0PXtydW46bix1c2U6cn07cmV0dXJuIHQ7ZnVuY3Rpb24gbiguLi5pKXtsZXQgbz0tMTtjb25zdCBzPWkucG9wKCk7aWYodHlwZW9mIHMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgZnVuY3Rpb24gYXMgbGFzdCBhcmd1bWVudCwgbm90ICIrcyk7YShudWxsLC4uLmkpO2Z1bmN0aW9uIGEobCwuLi51KXtjb25zdCBjPWVbKytvXTtsZXQgZD0tMTtpZihsKXtzKGwpO3JldHVybn1mb3IoOysrZDxpLmxlbmd0aDspKHVbZF09PT1udWxsfHx1W2RdPT09dm9pZCAwKSYmKHVbZF09aVtkXSk7aT11LGM\/aTMoYyxhKSguLi51KTpzKG51bGwsLi4udSl9fWZ1bmN0aW9uIHIoaSl7aWYodHlwZW9mIGkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYG1pZGRlbHdhcmVgIHRvIGJlIGEgZnVuY3Rpb24sIG5vdCAiK2kpO3JldHVybiBlLnB1c2goaSksdH19ZnVuY3Rpb24gaTMoZSx0KXtsZXQgbjtyZXR1cm4gcjtmdW5jdGlvbiByKC4uLnMpe2NvbnN0IGE9ZS5sZW5ndGg+cy5sZW5ndGg7bGV0IGw7YSYmcy5wdXNoKGkpO3RyeXtsPWUuYXBwbHkodGhpcyxzKX1jYXRjaCh1KXtjb25zdCBjPXU7aWYoYSYmbil0aHJvdyBjO3JldHVybiBpKGMpfWF8fChsJiZsLnRoZW4mJnR5cGVvZiBsLnRoZW49PSJmdW5jdGlvbiI\/bC50aGVuKG8saSk6bCBpbnN0YW5jZW9mIEVycm9yP2kobCk6byhsKSl9ZnVuY3Rpb24gaShzLC4uLmEpe258fChuPSEwLHQocywuLi5hKSl9ZnVuY3Rpb24gbyhzKXtpKG51bGwscyl9fWNvbnN0IGtuPXtiYXNlbmFtZTpvMyxkaXJuYW1lOnMzLGV4dG5hbWU6YTMsam9pbjpsMyxzZXA6Ii8ifTtmdW5jdGlvbiBvMyhlLHQpe2lmKHQhPT12b2lkIDAmJnR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCciZXh0IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7a2EoZSk7bGV0IG49MCxyPS0xLGk9ZS5sZW5ndGgsbztpZih0PT09dm9pZCAwfHx0Lmxlbmd0aD09PTB8fHQubGVuZ3RoPmUubGVuZ3RoKXtmb3IoO2ktLTspaWYoZS5jb2RlUG9pbnRBdChpKT09PTQ3KXtpZihvKXtuPWkrMTticmVha319ZWxzZSByPDAmJihvPSEwLHI9aSsxKTtyZXR1cm4gcjwwPyIiOmUuc2xpY2UobixyKX1pZih0PT09ZSlyZXR1cm4iIjtsZXQgcz0tMSxhPXQubGVuZ3RoLTE7Zm9yKDtpLS07KWlmKGUuY29kZVBvaW50QXQoaSk9PT00Nyl7aWYobyl7bj1pKzE7YnJlYWt9fWVsc2UgczwwJiYobz0hMCxzPWkrMSksYT4tMSYmKGUuY29kZVBvaW50QXQoaSk9PT10LmNvZGVQb2ludEF0KGEtLSk\/YTwwJiYocj1pKTooYT0tMSxyPXMpKTtyZXR1cm4gbj09PXI\/cj1zOnI8MCYmKHI9ZS5sZW5ndGgpLGUuc2xpY2UobixyKX1mdW5jdGlvbiBzMyhlKXtpZihrYShlKSxlLmxlbmd0aD09PTApcmV0dXJuIi4iO2xldCB0PS0xLG49ZS5sZW5ndGgscjtmb3IoOy0tbjspaWYoZS5jb2RlUG9pbnRBdChuKT09PTQ3KXtpZihyKXt0PW47YnJlYWt9fWVsc2Ugcnx8KHI9ITApO3JldHVybiB0PDA\/ZS5jb2RlUG9pbnRBdCgwKT09PTQ3PyIvIjoiLiI6dD09PTEmJmUuY29kZVBvaW50QXQoMCk9PT00Nz8iLy8iOmUuc2xpY2UoMCx0KX1mdW5jdGlvbiBhMyhlKXtrYShlKTtsZXQgdD1lLmxlbmd0aCxuPS0xLHI9MCxpPS0xLG89MCxzO2Zvcig7dC0tOyl7Y29uc3QgYT1lLmNvZGVQb2ludEF0KHQpO2lmKGE9PT00Nyl7aWYocyl7cj10KzE7YnJlYWt9Y29udGludWV9bjwwJiYocz0hMCxuPXQrMSksYT09PTQ2P2k8MD9pPXQ6byE9PTEmJihvPTEpOmk+LTEmJihvPS0xKX1yZXR1cm4gaTwwfHxuPDB8fG89PT0wfHxvPT09MSYmaT09PW4tMSYmaT09PXIrMT8iIjplLnNsaWNlKGksbil9ZnVuY3Rpb24gbDMoLi4uZSl7bGV0IHQ9LTEsbjtmb3IoOysrdDxlLmxlbmd0aDspa2EoZVt0XSksZVt0XSYmKG49bj09PXZvaWQgMD9lW3RdOm4rIi8iK2VbdF0pO3JldHVybiBuPT09dm9pZCAwPyIuIjp1MyhuKX1mdW5jdGlvbiB1MyhlKXtrYShlKTtjb25zdCB0PWUuY29kZVBvaW50QXQoMCk9PT00NztsZXQgbj1jMyhlLCF0KTtyZXR1cm4gbi5sZW5ndGg9PT0wJiYhdCYmKG49Ii4iKSxuLmxlbmd0aD4wJiZlLmNvZGVQb2ludEF0KGUubGVuZ3RoLTEpPT09NDcmJihuKz0iLyIpLHQ\/Ii8iK246bn1mdW5jdGlvbiBjMyhlLHQpe2xldCBuPSIiLHI9MCxpPS0xLG89MCxzPS0xLGEsbDtmb3IoOysrczw9ZS5sZW5ndGg7KXtpZihzPGUubGVuZ3RoKWE9ZS5jb2RlUG9pbnRBdChzKTtlbHNle2lmKGE9PT00NylicmVhazthPTQ3fWlmKGE9PT00Nyl7aWYoIShpPT09cy0xfHxvPT09MSkpaWYoaSE9PXMtMSYmbz09PTIpe2lmKG4ubGVuZ3RoPDJ8fHIhPT0yfHxuLmNvZGVQb2ludEF0KG4ubGVuZ3RoLTEpIT09NDZ8fG4uY29kZVBvaW50QXQobi5sZW5ndGgtMikhPT00Nil7aWYobi5sZW5ndGg+Mil7aWYobD1uLmxhc3RJbmRleE9mKCIvIiksbCE9PW4ubGVuZ3RoLTEpe2w8MD8obj0iIixyPTApOihuPW4uc2xpY2UoMCxsKSxyPW4ubGVuZ3RoLTEtbi5sYXN0SW5kZXhPZigiLyIpKSxpPXMsbz0wO2NvbnRpbnVlfX1lbHNlIGlmKG4ubGVuZ3RoPjApe249IiIscj0wLGk9cyxvPTA7Y29udGludWV9fXQmJihuPW4ubGVuZ3RoPjA\/bisiLy4uIjoiLi4iLHI9Mil9ZWxzZSBuLmxlbmd0aD4wP24rPSIvIitlLnNsaWNlKGkrMSxzKTpuPWUuc2xpY2UoaSsxLHMpLHI9cy1pLTE7aT1zLG89MH1lbHNlIGE9PT00NiYmbz4tMT9vKys6bz0tMX1yZXR1cm4gbn1mdW5jdGlvbiBrYShlKXtpZih0eXBlb2YgZSE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KGUpKX1jb25zdCBkMz17Y3dkOmYzfTtmdW5jdGlvbiBmMygpe3JldHVybiIvIn1mdW5jdGlvbiBvaChlKXtyZXR1cm4hIShlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiJiYiaHJlZiJpbiBlJiZlLmhyZWYmJiJwcm90b2NvbCJpbiBlJiZlLnByb3RvY29sJiZlLmF1dGg9PT12b2lkIDApfWZ1bmN0aW9uIGgzKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIillPW5ldyBVUkwoZSk7ZWxzZSBpZighb2goZSkpe2NvbnN0IHQ9bmV3IFR5cGVFcnJvcignVGhlICJwYXRoIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIFVSTC4gUmVjZWl2ZWQgYCcrZSsiYCIpO3Rocm93IHQuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUiLHR9aWYoZS5wcm90b2NvbCE9PSJmaWxlOiIpe2NvbnN0IHQ9bmV3IFR5cGVFcnJvcigiVGhlIFVSTCBtdXN0IGJlIG9mIHNjaGVtZSBmaWxlIik7dGhyb3cgdC5jb2RlPSJFUlJfSU5WQUxJRF9VUkxfU0NIRU1FIix0fXJldHVybiBwMyhlKX1mdW5jdGlvbiBwMyhlKXtpZihlLmhvc3RuYW1lIT09IiIpe2NvbnN0IHI9bmV3IFR5cGVFcnJvcignRmlsZSBVUkwgaG9zdCBtdXN0IGJlICJsb2NhbGhvc3QiIG9yIGVtcHR5IG9uIGRhcndpbicpO3Rocm93IHIuY29kZT0iRVJSX0lOVkFMSURfRklMRV9VUkxfSE9TVCIscn1jb25zdCB0PWUucGF0aG5hbWU7bGV0IG49LTE7Zm9yKDsrK248dC5sZW5ndGg7KWlmKHQuY29kZVBvaW50QXQobik9PT0zNyYmdC5jb2RlUG9pbnRBdChuKzEpPT09NTApe2NvbnN0IHI9dC5jb2RlUG9pbnRBdChuKzIpO2lmKHI9PT03MHx8cj09PTEwMil7Y29uc3QgaT1uZXcgVHlwZUVycm9yKCJGaWxlIFVSTCBwYXRoIG11c3Qgbm90IGluY2x1ZGUgZW5jb2RlZCAvIGNoYXJhY3RlcnMiKTt0aHJvdyBpLmNvZGU9IkVSUl9JTlZBTElEX0ZJTEVfVVJMX1BBVEgiLGl9fXJldHVybiBkZWNvZGVVUklDb21wb25lbnQodCl9Y29uc3QgdWQ9WyJoaXN0b3J5IiwicGF0aCIsImJhc2VuYW1lIiwic3RlbSIsImV4dG5hbWUiLCJkaXJuYW1lIl07Y2xhc3Mga0N7Y29uc3RydWN0b3IodCl7bGV0IG47dD9vaCh0KT9uPXtwYXRoOnR9OnR5cGVvZiB0PT0ic3RyaW5nInx8bTModCk\/bj17dmFsdWU6dH06bj10Om49e30sdGhpcy5jd2Q9ImN3ZCJpbiBuPyIiOmQzLmN3ZCgpLHRoaXMuZGF0YT17fSx0aGlzLmhpc3Rvcnk9W10sdGhpcy5tZXNzYWdlcz1bXSx0aGlzLnZhbHVlLHRoaXMubWFwLHRoaXMucmVzdWx0LHRoaXMuc3RvcmVkO2xldCByPS0xO2Zvcig7KytyPHVkLmxlbmd0aDspe2NvbnN0IG89dWRbcl07byBpbiBuJiZuW29dIT09dm9pZCAwJiZuW29dIT09bnVsbCYmKHRoaXNbb109bz09PSJoaXN0b3J5Ij9bLi4ubltvXV06bltvXSl9bGV0IGk7Zm9yKGkgaW4gbil1ZC5pbmNsdWRlcyhpKXx8KHRoaXNbaV09bltpXSl9Z2V0IGJhc2VuYW1lKCl7cmV0dXJuIHR5cGVvZiB0aGlzLnBhdGg9PSJzdHJpbmciP2tuLmJhc2VuYW1lKHRoaXMucGF0aCk6dm9pZCAwfXNldCBiYXNlbmFtZSh0KXtkZCh0LCJiYXNlbmFtZSIpLGNkKHQsImJhc2VuYW1lIiksdGhpcy5wYXRoPWtuLmpvaW4odGhpcy5kaXJuYW1lfHwiIix0KX1nZXQgZGlybmFtZSgpe3JldHVybiB0eXBlb2YgdGhpcy5wYXRoPT0ic3RyaW5nIj9rbi5kaXJuYW1lKHRoaXMucGF0aCk6dm9pZCAwfXNldCBkaXJuYW1lKHQpe3cwKHRoaXMuYmFzZW5hbWUsImRpcm5hbWUiKSx0aGlzLnBhdGg9a24uam9pbih0fHwiIix0aGlzLmJhc2VuYW1lKX1nZXQgZXh0bmFtZSgpe3JldHVybiB0eXBlb2YgdGhpcy5wYXRoPT0ic3RyaW5nIj9rbi5leHRuYW1lKHRoaXMucGF0aCk6dm9pZCAwfXNldCBleHRuYW1lKHQpe2lmKGNkKHQsImV4dG5hbWUiKSx3MCh0aGlzLmRpcm5hbWUsImV4dG5hbWUiKSx0KXtpZih0LmNvZGVQb2ludEF0KDApIT09NDYpdGhyb3cgbmV3IEVycm9yKCJgZXh0bmFtZWAgbXVzdCBzdGFydCB3aXRoIGAuYCIpO2lmKHQuaW5jbHVkZXMoIi4iLDEpKXRocm93IG5ldyBFcnJvcigiYGV4dG5hbWVgIGNhbm5vdCBjb250YWluIG11bHRpcGxlIGRvdHMiKX10aGlzLnBhdGg9a24uam9pbih0aGlzLmRpcm5hbWUsdGhpcy5zdGVtKyh0fHwiIikpfWdldCBwYXRoKCl7cmV0dXJuIHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoLTFdfXNldCBwYXRoKHQpe29oKHQpJiYodD1oMyh0KSksZGQodCwicGF0aCIpLHRoaXMucGF0aCE9PXQmJnRoaXMuaGlzdG9yeS5wdXNoKHQpfWdldCBzdGVtKCl7cmV0dXJuIHR5cGVvZiB0aGlzLnBhdGg9PSJzdHJpbmciP2tuLmJhc2VuYW1lKHRoaXMucGF0aCx0aGlzLmV4dG5hbWUpOnZvaWQgMH1zZXQgc3RlbSh0KXtkZCh0LCJzdGVtIiksY2QodCwic3RlbSIpLHRoaXMucGF0aD1rbi5qb2luKHRoaXMuZGlybmFtZXx8IiIsdCsodGhpcy5leHRuYW1lfHwiIikpfWZhaWwodCxuLHIpe2NvbnN0IGk9dGhpcy5tZXNzYWdlKHQsbixyKTt0aHJvdyBpLmZhdGFsPSEwLGl9aW5mbyh0LG4scil7Y29uc3QgaT10aGlzLm1lc3NhZ2UodCxuLHIpO3JldHVybiBpLmZhdGFsPXZvaWQgMCxpfW1lc3NhZ2UodCxuLHIpe2NvbnN0IGk9bmV3IG50KHQsbixyKTtyZXR1cm4gdGhpcy5wYXRoJiYoaS5uYW1lPXRoaXMucGF0aCsiOiIraS5uYW1lLGkuZmlsZT10aGlzLnBhdGgpLGkuZmF0YWw9ITEsdGhpcy5tZXNzYWdlcy5wdXNoKGkpLGl9dG9TdHJpbmcodCl7cmV0dXJuIHRoaXMudmFsdWU9PT12b2lkIDA\/IiI6dHlwZW9mIHRoaXMudmFsdWU9PSJzdHJpbmciP3RoaXMudmFsdWU6bmV3IFRleHREZWNvZGVyKHR8fHZvaWQgMCkuZGVjb2RlKHRoaXMudmFsdWUpfX1mdW5jdGlvbiBjZChlLHQpe2lmKGUmJmUuaW5jbHVkZXMoa24uc2VwKSl0aHJvdyBuZXcgRXJyb3IoImAiK3QrImAgY2Fubm90IGJlIGEgcGF0aDogZGlkIG5vdCBleHBlY3QgYCIra24uc2VwKyJgIil9ZnVuY3Rpb24gZGQoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IoImAiK3QrImAgY2Fubm90IGJlIGVtcHR5Iil9ZnVuY3Rpb24gdzAoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgYCIrdCsiYCByZXF1aXJlcyBgcGF0aGAgdG8gYmUgc2V0IHRvbyIpfWZ1bmN0aW9uIG0zKGUpe3JldHVybiEhKGUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmImJ5dGVMZW5ndGgiaW4gZSYmImJ5dGVPZmZzZXQiaW4gZSl9Y29uc3QgZzM9ZnVuY3Rpb24oZSl7Y29uc3Qgcj10aGlzLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxpPXJbZV0sbz1mdW5jdGlvbigpe3JldHVybiBpLmFwcGx5KG8sYXJndW1lbnRzKX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihvLHIpLG99LHkzPXt9Lmhhc093blByb3BlcnR5O2NsYXNzIHZtIGV4dGVuZHMgZzN7Y29uc3RydWN0b3IoKXtzdXBlcigiY29weSIpLHRoaXMuQ29tcGlsZXI9dm9pZCAwLHRoaXMuUGFyc2VyPXZvaWQgMCx0aGlzLmF0dGFjaGVycz1bXSx0aGlzLmNvbXBpbGVyPXZvaWQgMCx0aGlzLmZyZWV6ZUluZGV4PS0xLHRoaXMuZnJvemVuPXZvaWQgMCx0aGlzLm5hbWVzcGFjZT17fSx0aGlzLnBhcnNlcj12b2lkIDAsdGhpcy50cmFuc2Zvcm1lcnM9cjMoKX1jb3B5KCl7Y29uc3QgdD1uZXcgdm07bGV0IG49LTE7Zm9yKDsrK248dGhpcy5hdHRhY2hlcnMubGVuZ3RoOyl7Y29uc3Qgcj10aGlzLmF0dGFjaGVyc1tuXTt0LnVzZSguLi5yKX1yZXR1cm4gdC5kYXRhKGxkKCEwLHt9LHRoaXMubmFtZXNwYWNlKSksdH1kYXRhKHQsbil7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj9hcmd1bWVudHMubGVuZ3RoPT09Mj8ocGQoImRhdGEiLHRoaXMuZnJvemVuKSx0aGlzLm5hbWVzcGFjZVt0XT1uLHRoaXMpOnkzLmNhbGwodGhpcy5uYW1lc3BhY2UsdCkmJnRoaXMubmFtZXNwYWNlW3RdfHx2b2lkIDA6dD8ocGQoImRhdGEiLHRoaXMuZnJvemVuKSx0aGlzLm5hbWVzcGFjZT10LHRoaXMpOnRoaXMubmFtZXNwYWNlfWZyZWV6ZSgpe2lmKHRoaXMuZnJvemVuKXJldHVybiB0aGlzO2NvbnN0IHQ9dGhpcztmb3IoOysrdGhpcy5mcmVlemVJbmRleDx0aGlzLmF0dGFjaGVycy5sZW5ndGg7KXtjb25zdFtuLC4uLnJdPXRoaXMuYXR0YWNoZXJzW3RoaXMuZnJlZXplSW5kZXhdO2lmKHJbMF09PT0hMSljb250aW51ZTtyWzBdPT09ITAmJihyWzBdPXZvaWQgMCk7Y29uc3QgaT1uLmNhbGwodCwuLi5yKTt0eXBlb2YgaT09ImZ1bmN0aW9uIiYmdGhpcy50cmFuc2Zvcm1lcnMudXNlKGkpfXJldHVybiB0aGlzLmZyb3plbj0hMCx0aGlzLmZyZWV6ZUluZGV4PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSx0aGlzfXBhcnNlKHQpe3RoaXMuZnJlZXplKCk7Y29uc3Qgbj1lbCh0KSxyPXRoaXMucGFyc2VyfHx0aGlzLlBhcnNlcjtyZXR1cm4gZmQoInBhcnNlIixyKSxyKFN0cmluZyhuKSxuKX1wcm9jZXNzKHQsbil7Y29uc3Qgcj10aGlzO3JldHVybiB0aGlzLmZyZWV6ZSgpLGZkKCJwcm9jZXNzIix0aGlzLnBhcnNlcnx8dGhpcy5QYXJzZXIpLGhkKCJwcm9jZXNzIix0aGlzLmNvbXBpbGVyfHx0aGlzLkNvbXBpbGVyKSxuP2kodm9pZCAwLG4pOm5ldyBQcm9taXNlKGkpO2Z1bmN0aW9uIGkobyxzKXtjb25zdCBhPWVsKHQpLGw9ci5wYXJzZShhKTtyLnJ1bihsLGEsZnVuY3Rpb24oYyxkLGgpe2lmKGN8fCFkfHwhaClyZXR1cm4gdShjKTtjb25zdCBmPWQseT1yLnN0cmluZ2lmeShmLGgpO3czKHkpP2gudmFsdWU9eTpoLnJlc3VsdD15LHUoYyxoKX0pO2Z1bmN0aW9uIHUoYyxkKXtjfHwhZD9zKGMpOm8\/byhkKTpuKHZvaWQgMCxkKX19fXByb2Nlc3NTeW5jKHQpe2xldCBuPSExLHI7cmV0dXJuIHRoaXMuZnJlZXplKCksZmQoInByb2Nlc3NTeW5jIix0aGlzLnBhcnNlcnx8dGhpcy5QYXJzZXIpLGhkKCJwcm9jZXNzU3luYyIsdGhpcy5jb21waWxlcnx8dGhpcy5Db21waWxlciksdGhpcy5wcm9jZXNzKHQsaSksazAoInByb2Nlc3NTeW5jIiwicHJvY2VzcyIsbikscjtmdW5jdGlvbiBpKG8scyl7bj0hMCxoMChvKSxyPXN9fXJ1bih0LG4scil7YjAodCksdGhpcy5mcmVlemUoKTtjb25zdCBpPXRoaXMudHJhbnNmb3JtZXJzO3JldHVybiFyJiZ0eXBlb2Ygbj09ImZ1bmN0aW9uIiYmKHI9bixuPXZvaWQgMCkscj9vKHZvaWQgMCxyKTpuZXcgUHJvbWlzZShvKTtmdW5jdGlvbiBvKHMsYSl7Y29uc3QgbD1lbChuKTtpLnJ1bih0LGwsdSk7ZnVuY3Rpb24gdShjLGQsaCl7Y29uc3QgZj1kfHx0O2M\/YShjKTpzP3MoZik6cih2b2lkIDAsZixoKX19fXJ1blN5bmModCxuKXtsZXQgcj0hMSxpO3JldHVybiB0aGlzLnJ1bih0LG4sbyksazAoInJ1blN5bmMiLCJydW4iLHIpLGk7ZnVuY3Rpb24gbyhzLGEpe2gwKHMpLGk9YSxyPSEwfX1zdHJpbmdpZnkodCxuKXt0aGlzLmZyZWV6ZSgpO2NvbnN0IHI9ZWwobiksaT10aGlzLmNvbXBpbGVyfHx0aGlzLkNvbXBpbGVyO3JldHVybiBoZCgic3RyaW5naWZ5IixpKSxiMCh0KSxpKHQscil9dXNlKHQsLi4ubil7Y29uc3Qgcj10aGlzLmF0dGFjaGVycyxpPXRoaXMubmFtZXNwYWNlO2lmKHBkKCJ1c2UiLHRoaXMuZnJvemVuKSx0IT1udWxsKWlmKHR5cGVvZiB0PT0iZnVuY3Rpb24iKWwodCxuKTtlbHNlIGlmKHR5cGVvZiB0PT0ib2JqZWN0IilBcnJheS5pc0FycmF5KHQpP2EodCk6cyh0KTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGAiK3QrImAiKTtyZXR1cm4gdGhpcztmdW5jdGlvbiBvKHUpe2lmKHR5cGVvZiB1PT0iZnVuY3Rpb24iKWwodSxbXSk7ZWxzZSBpZih0eXBlb2YgdT09Im9iamVjdCIpaWYoQXJyYXkuaXNBcnJheSh1KSl7Y29uc3RbYywuLi5kXT11O2woYyxkKX1lbHNlIHModSk7ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgIit1KyJgIil9ZnVuY3Rpb24gcyh1KXtpZighKCJwbHVnaW5zImluIHUpJiYhKCJzZXR0aW5ncyJpbiB1KSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHVzYWJsZSB2YWx1ZSBidXQgcmVjZWl2ZWQgYW4gZW1wdHkgcHJlc2V0LCB3aGljaCBpcyBwcm9iYWJseSBhIG1pc3Rha2U6IHByZXNldHMgdHlwaWNhbGx5IGNvbWUgd2l0aCBgcGx1Z2luc2AgYW5kIHNvbWV0aW1lcyB3aXRoIGBzZXR0aW5nc2AsIGJ1dCB0aGlzIGhhcyBuZWl0aGVyIik7YSh1LnBsdWdpbnMpLHUuc2V0dGluZ3MmJihpLnNldHRpbmdzPWxkKCEwLGkuc2V0dGluZ3MsdS5zZXR0aW5ncykpfWZ1bmN0aW9uIGEodSl7bGV0IGM9LTE7aWYodSE9bnVsbClpZihBcnJheS5pc0FycmF5KHUpKWZvcig7KytjPHUubGVuZ3RoOyl7Y29uc3QgZD11W2NdO28oZCl9ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGxpc3Qgb2YgcGx1Z2lucywgbm90IGAiK3UrImAiKX1mdW5jdGlvbiBsKHUsYyl7bGV0IGQ9LTEsaD0tMTtmb3IoOysrZDxyLmxlbmd0aDspaWYocltkXVswXT09PXUpe2g9ZDticmVha31pZihoPT09LTEpci5wdXNoKFt1LC4uLmNdKTtlbHNlIGlmKGMubGVuZ3RoPjApe2xldFtmLC4uLnldPWM7Y29uc3QgbT1yW2hdWzFdO2loKG0pJiZpaChmKSYmKGY9bGQoITAsbSxmKSkscltoXT1bdSxmLC4uLnldfX19fWNvbnN0IHYzPW5ldyB2bSgpLmZyZWV6ZSgpO2Z1bmN0aW9uIGZkKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGAiK2UrImAgd2l0aG91dCBgcGFyc2VyYCIpfWZ1bmN0aW9uIGhkKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGAiK2UrImAgd2l0aG91dCBgY29tcGlsZXJgIil9ZnVuY3Rpb24gcGQoZSx0KXtpZih0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNhbGwgYCIrZSsiYCBvbiBhIGZyb3plbiBwcm9jZXNzb3IuXG5DcmVhdGUgYSBuZXcgcHJvY2Vzc29yIGZpcnN0LCBieSBjYWxsaW5nIGl0OiB1c2UgYHByb2Nlc3NvcigpYCBpbnN0ZWFkIG9mIGBwcm9jZXNzb3JgLiIpfWZ1bmN0aW9uIGIwKGUpe2lmKCFpaChlKXx8dHlwZW9mIGUudHlwZSE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgbm9kZSwgZ290IGAiK2UrImAiKX1mdW5jdGlvbiBrMChlLHQsbil7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJgIitlKyJgIGZpbmlzaGVkIGFzeW5jLiBVc2UgYCIrdCsiYCBpbnN0ZWFkIil9ZnVuY3Rpb24gZWwoZSl7cmV0dXJuIHgzKGUpP2U6bmV3IGtDKGUpfWZ1bmN0aW9uIHgzKGUpe3JldHVybiEhKGUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmIm1lc3NhZ2UiaW4gZSYmIm1lc3NhZ2VzImluIGUpfWZ1bmN0aW9uIHczKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyJ8fGIzKGUpfWZ1bmN0aW9uIGIzKGUpe3JldHVybiEhKGUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmImJ5dGVMZW5ndGgiaW4gZSYmImJ5dGVPZmZzZXQiaW4gZSl9Y29uc3QgazM9Imh0dHBzOi8vZ2l0aHViLmNvbS9yZW1hcmtqcy9yZWFjdC1tYXJrZG93bi9ibG9iL21haW4vY2hhbmdlbG9nLm1kIixTMD1bXSxDMD17YWxsb3dEYW5nZXJvdXNIdG1sOiEwfSxTMz0vXihodHRwcz98aXJjcz98bWFpbHRvfHhtcHApJC9pLEMzPVt7ZnJvbToiYXN0UGx1Z2lucyIsaWQ6InJlbW92ZS1idWdneS1odG1sLWluLW1hcmtkb3duLXBhcnNlciJ9LHtmcm9tOiJhbGxvd0Rhbmdlcm91c0h0bWwiLGlkOiJyZW1vdmUtYnVnZ3ktaHRtbC1pbi1tYXJrZG93bi1wYXJzZXIifSx7ZnJvbToiYWxsb3dOb2RlIixpZDoicmVwbGFjZS1hbGxvd25vZGUtYWxsb3dlZHR5cGVzLWFuZC1kaXNhbGxvd2VkdHlwZXMiLHRvOiJhbGxvd0VsZW1lbnQifSx7ZnJvbToiYWxsb3dlZFR5cGVzIixpZDoicmVwbGFjZS1hbGxvd25vZGUtYWxsb3dlZHR5cGVzLWFuZC1kaXNhbGxvd2VkdHlwZXMiLHRvOiJhbGxvd2VkRWxlbWVudHMifSx7ZnJvbToiY2xhc3NOYW1lIixpZDoicmVtb3ZlLWNsYXNzbmFtZSJ9LHtmcm9tOiJkaXNhbGxvd2VkVHlwZXMiLGlkOiJyZXBsYWNlLWFsbG93bm9kZS1hbGxvd2VkdHlwZXMtYW5kLWRpc2FsbG93ZWR0eXBlcyIsdG86ImRpc2FsbG93ZWRFbGVtZW50cyJ9LHtmcm9tOiJlc2NhcGVIdG1sIixpZDoicmVtb3ZlLWJ1Z2d5LWh0bWwtaW4tbWFya2Rvd24tcGFyc2VyIn0se2Zyb206ImluY2x1ZGVFbGVtZW50SW5kZXgiLGlkOiIjcmVtb3ZlLWluY2x1ZGVlbGVtZW50aW5kZXgifSx7ZnJvbToiaW5jbHVkZU5vZGVJbmRleCIsaWQ6ImNoYW5nZS1pbmNsdWRlbm9kZWluZGV4LXRvLWluY2x1ZGVlbGVtZW50aW5kZXgifSx7ZnJvbToibGlua1RhcmdldCIsaWQ6InJlbW92ZS1saW5rdGFyZ2V0In0se2Zyb206InBsdWdpbnMiLGlkOiJjaGFuZ2UtcGx1Z2lucy10by1yZW1hcmtwbHVnaW5zIix0bzoicmVtYXJrUGx1Z2lucyJ9LHtmcm9tOiJyYXdTb3VyY2VQb3MiLGlkOiIjcmVtb3ZlLXJhd3NvdXJjZXBvcyJ9LHtmcm9tOiJyZW5kZXJlcnMiLGlkOiJjaGFuZ2UtcmVuZGVyZXJzLXRvLWNvbXBvbmVudHMiLHRvOiJjb21wb25lbnRzIn0se2Zyb206InNvdXJjZSIsaWQ6ImNoYW5nZS1zb3VyY2UtdG8tY2hpbGRyZW4iLHRvOiJjaGlsZHJlbiJ9LHtmcm9tOiJzb3VyY2VQb3MiLGlkOiIjcmVtb3ZlLXNvdXJjZXBvcyJ9LHtmcm9tOiJ0cmFuc2Zvcm1JbWFnZVVyaSIsaWQ6IiNhZGQtdXJsdHJhbnNmb3JtIix0bzoidXJsVHJhbnNmb3JtIn0se2Zyb206InRyYW5zZm9ybUxpbmtVcmkiLGlkOiIjYWRkLXVybHRyYW5zZm9ybSIsdG86InVybFRyYW5zZm9ybSJ9XTtmdW5jdGlvbiBUMyhlKXtjb25zdCB0PUUzKGUpLG49UDMoZSk7cmV0dXJuIEEzKHQucnVuU3luYyh0LnBhcnNlKG4pLG4pLGUpfWZ1bmN0aW9uIEUzKGUpe2NvbnN0IHQ9ZS5yZWh5cGVQbHVnaW5zfHxTMCxuPWUucmVtYXJrUGx1Z2luc3x8UzAscj1lLnJlbWFya1JlaHlwZU9wdGlvbnM\/ey4uLmUucmVtYXJrUmVoeXBlT3B0aW9ucywuLi5DMH06QzA7cmV0dXJuIHYzKCkudXNlKHNfKS51c2UobikudXNlKHQzLHIpLnVzZSh0KX1mdW5jdGlvbiBQMyhlKXtjb25zdCB0PWUuY2hpbGRyZW58fCIiLG49bmV3IGtDO3JldHVybiB0eXBlb2YgdD09InN0cmluZyImJihuLnZhbHVlPXQpLG59ZnVuY3Rpb24gQTMoZSx0KXtjb25zdCBuPXQuYWxsb3dlZEVsZW1lbnRzLHI9dC5hbGxvd0VsZW1lbnQsaT10LmNvbXBvbmVudHMsbz10LmRpc2FsbG93ZWRFbGVtZW50cyxzPXQuc2tpcEh0bWwsYT10LnVud3JhcERpc2FsbG93ZWQsbD10LnVybFRyYW5zZm9ybXx8STM7Zm9yKGNvbnN0IGMgb2YgQzMpT2JqZWN0Lmhhc093bih0LGMuZnJvbSkmJigiIitjLmZyb20rKGMudG8\/InVzZSBgIitjLnRvKyJgIGluc3RlYWQiOiJyZW1vdmUgaXQiKStrMytjLmlkLHZvaWQgMCk7cmV0dXJuIHdDKGUsdSksX0YoZSx7RnJhZ21lbnQ6Zy5GcmFnbWVudCxjb21wb25lbnRzOmksaWdub3JlSW52YWxpZFN0eWxlOiEwLGpzeDpnLmpzeCxqc3hzOmcuanN4cyxwYXNzS2V5czohMCxwYXNzTm9kZTohMH0pO2Z1bmN0aW9uIHUoYyxkLGgpe2lmKGMudHlwZT09PSJyYXciJiZoJiZ0eXBlb2YgZD09Im51bWJlciIpcmV0dXJuIHM\/aC5jaGlsZHJlbi5zcGxpY2UoZCwxKTpoLmNoaWxkcmVuW2RdPXt0eXBlOiJ0ZXh0Iix2YWx1ZTpjLnZhbHVlfSxkO2lmKGMudHlwZT09PSJlbGVtZW50Iil7bGV0IGY7Zm9yKGYgaW4gb2QpaWYoT2JqZWN0Lmhhc093bihvZCxmKSYmT2JqZWN0Lmhhc093bihjLnByb3BlcnRpZXMsZikpe2NvbnN0IHk9Yy5wcm9wZXJ0aWVzW2ZdLG09b2RbZl07KG09PT1udWxsfHxtLmluY2x1ZGVzKGMudGFnTmFtZSkpJiYoYy5wcm9wZXJ0aWVzW2ZdPWwoU3RyaW5nKHl8fCIiKSxmLGMpKX19aWYoYy50eXBlPT09ImVsZW1lbnQiKXtsZXQgZj1uPyFuLmluY2x1ZGVzKGMudGFnTmFtZSk6bz9vLmluY2x1ZGVzKGMudGFnTmFtZSk6ITE7aWYoIWYmJnImJnR5cGVvZiBkPT0ibnVtYmVyIiYmKGY9IXIoYyxkLGgpKSxmJiZoJiZ0eXBlb2YgZD09Im51bWJlciIpcmV0dXJuIGEmJmMuY2hpbGRyZW4\/aC5jaGlsZHJlbi5zcGxpY2UoZCwxLC4uLmMuY2hpbGRyZW4pOmguY2hpbGRyZW4uc3BsaWNlKGQsMSksZH19fWZ1bmN0aW9uIEkzKGUpe2NvbnN0IHQ9ZS5pbmRleE9mKCI6Iiksbj1lLmluZGV4T2YoIj8iKSxyPWUuaW5kZXhPZigiIyIpLGk9ZS5pbmRleE9mKCIvIik7cmV0dXJuIHQ9PT0tMXx8aSE9PS0xJiZ0Pml8fG4hPT0tMSYmdD5ufHxyIT09LTEmJnQ+cnx8UzMudGVzdChlLnNsaWNlKDAsdCkpP2U6IiJ9Y29uc3QgTjM9Imh0dHBzOi8vYWNwdXBlc2h6dWxybWJ5c3NtZWMuc3VwYWJhc2UuY28vZnVuY3Rpb25zL3YxL2NoYXQiLGozPSJodHRwczovL2FjcHVwZXNoenVscm1ieXNzbWVjLnN1cGFiYXNlLmNvL2Z1bmN0aW9ucy92MS9zZW5kLXRyYW5zY3JpcHQiLHozPSgpPT57Y29uc3RbZSx0XT1iLnVzZVN0YXRlKCExKSxbbixyXT1iLnVzZVN0YXRlKCJncmVldGluZyIpLFtpLG9dPWIudXNlU3RhdGUoW3tyb2xlOiJhc3Npc3RhbnQiLGNvbnRlbnQ6IkhpIHRoZXJlISDwn5GLIEknbSBTaGFocnphZCdzIEFJIGFzc2lzdGFudC4gSG93IGNhbiBJIGhlbHAgeW91IHRvZGF5PyJ9XSksW3MsYV09Yi51c2VTdGF0ZSgiIiksW2wsdV09Yi51c2VTdGF0ZSghMSksW2MsZF09Yi51c2VTdGF0ZSgiIiksW2gsZl09Yi51c2VTdGF0ZSgiIikseT1iLnVzZVJlZihudWxsKTtiLnVzZUVmZmVjdCgoKT0+e3ZhciBUOyhUPXkuY3VycmVudCk9PW51bGx8fFQuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgifSl9LFtpXSk7Y29uc3QgbT1hc3luYyBUPT57dmFyIHosJCxPO2NvbnN0IEM9YXdhaXQgZmV0Y2goTjMse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLEF1dGhvcml6YXRpb246IkJlYXJlciBleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcGMzTWlPaUp6ZFhCaFltRnpaU0lzSW5KbFppSTZJbUZqY0hWd1pYTm9lblZzY20xaWVYTnpiV1ZqSWl3aWNtOXNaU0k2SW1GdWIyNGlMQ0pwWVhRaU9qRTNOek0wTURjNU56RXNJbVY0Y0NJNk1qQTRPRGs0TXprM01YMC5IZ2tTZ0Z5d0NTUUotdlFIQzVkOV9ET2tSOGhlV2hWeWhqejRqQmtaOF93In0sYm9keTpKU09OLnN0cmluZ2lmeSh7bWVzc2FnZXM6VH0pfSk7aWYoIUMub2t8fCFDLmJvZHkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc3RhcnQgc3RyZWFtIik7Y29uc3QgUD1DLmJvZHkuZ2V0UmVhZGVyKCksQT1uZXcgVGV4dERlY29kZXI7bGV0IGo9IiIsST0iIixNPSExO2Zvcig7IU07KXtjb25zdHtkb25lOlUsdmFsdWU6SH09YXdhaXQgUC5yZWFkKCk7aWYoVSlicmVhaztqKz1BLmRlY29kZShILHtzdHJlYW06ITB9KTtsZXQgRztmb3IoOyhHPWouaW5kZXhPZihgCmApKSE9PS0xOyl7bGV0IE49ai5zbGljZSgwLEcpO2lmKGo9ai5zbGljZShHKzEpLE4uZW5kc1dpdGgoIlxyIikmJihOPU4uc2xpY2UoMCwtMSkpLE4uc3RhcnRzV2l0aCgiOiIpfHxOLnRyaW0oKT09PSIifHwhTi5zdGFydHNXaXRoKCJkYXRhOiAiKSljb250aW51ZTtjb25zdCBSPU4uc2xpY2UoNikudHJpbSgpO2lmKFI9PT0iW0RPTkVdIil7TT0hMDticmVha310cnl7Y29uc3QgWT0oTz0oJD0oej1KU09OLnBhcnNlKFIpLmNob2ljZXMpPT1udWxsP3ZvaWQgMDp6WzBdKT09bnVsbD92b2lkIDA6JC5kZWx0YSk9PW51bGw\/dm9pZCAwOk8uY29udGVudDtZJiYoSSs9WSxvKHE9Pntjb25zdCBFPXFbcS5sZW5ndGgtMV07cmV0dXJuKEU9PW51bGw\/dm9pZCAwOkUucm9sZSk9PT0iYXNzaXN0YW50IiYmcS5sZW5ndGg+MT9xLm1hcCgoWCxmZSk9PmZlPT09cS5sZW5ndGgtMT97Li4uWCxjb250ZW50Okl9OlgpOlsuLi5xLHtyb2xlOiJhc3Npc3RhbnQiLGNvbnRlbnQ6SX1dfSkpfWNhdGNoe2o9TitgCmArajticmVha319fX0sdz1hc3luYygpPT57aWYoIXMudHJpbSgpfHxsKXJldHVybjtjb25zdCBUPXtyb2xlOiJ1c2VyIixjb250ZW50OnMudHJpbSgpfSxDPVsuLi5pLFRdO28oQyksYSgiIiksdSghMCksbj09PSJncmVldGluZyImJnIoImNoYXR0aW5nIik7dHJ5e2F3YWl0IG0oQyl9Y2F0Y2goUCl7Y29uc29sZS5lcnJvcihQKSxvKEE9PlsuLi5BLHtyb2xlOiJhc3Npc3RhbnQiLGNvbnRlbnQ6IlNvcnJ5LCBJJ20gaGF2aW5nIHRyb3VibGUgY29ubmVjdGluZy4gUGxlYXNlIHRyeSBhZ2FpbiEifV0pfWZpbmFsbHl7dSghMSl9fSxwPSgpPT57cigiY29sbGVjdGluZyIpfSx2PWFzeW5jKCk9PntpZighKCFjLnRyaW0oKXx8IWgudHJpbSgpKSl7dSghMCk7dHJ5e2lmKCEoYXdhaXQgZmV0Y2goajMse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLEF1dGhvcml6YXRpb246IkJlYXJlciBleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKcGMzTWlPaUp6ZFhCaFltRnpaU0lzSW5KbFppSTZJbUZqY0hWd1pYTm9lblZzY20xaWVYTnpiV1ZqSWl3aWNtOXNaU0k2SW1GdWIyNGlMQ0pwWVhRaU9qRTNOek0wTURjNU56RXNJbVY0Y0NJNk1qQTRPRGs0TXprM01YMC5IZ2tTZ0Z5d0NTUUotdlFIQzVkOV9ET2tSOGhlV2hWeWhqejRqQmtaOF93In0sYm9keTpKU09OLnN0cmluZ2lmeSh7dXNlck5hbWU6Yy50cmltKCksdXNlckNvbnRhY3Q6aC50cmltKCksbWVzc2FnZXM6aX0pfSkpLm9rKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHNlbmQiKTtvKEM9PlsuLi5DLHtyb2xlOiJhc3Npc3RhbnQiLGNvbnRlbnQ6YFRoYW5rIHlvdSwgJHtjfSEg4pyoIE91ciB0ZWFtIHdpbGwgY29udGFjdCB5b3Ugc29vbiBhdCAke2h9LiBIYXZlIGEgd29uZGVyZnVsIGRheSFgfV0pLHIoImRvbmUiKX1jYXRjaChUKXtjb25zb2xlLmVycm9yKFQpLG8oQz0+Wy4uLkMse3JvbGU6ImFzc2lzdGFudCIsY29udGVudDoiU29ycnksIHRoZXJlIHdhcyBhbiBpc3N1ZS4gUGxlYXNlIHRyeSBhZ2FpbiBvciBlbWFpbCB1cyBhdCBhZG1pbkBzaGFocnphZC5jbHViIn1dKX1maW5hbGx5e3UoITEpfX19LHg9KCk9PntvKFQ9PlsuLi5ULHtyb2xlOiJhc3Npc3RhbnQiLGNvbnRlbnQ6Ik5vIHdvcnJpZXMhIElmIHlvdSBuZWVkIGFueXRoaW5nLCBmZWVsIGZyZWUgdG8gY29tZSBiYWNrIGFueXRpbWUuIOKcqCJ9XSkscigiZG9uZSIpfSxrPSgpPT57byhbe3JvbGU6ImFzc2lzdGFudCIsY29udGVudDoiSGkgdGhlcmUhIPCfkYsgSSdtIFNoYWhyemFkJ3MgQUkgYXNzaXN0YW50LiBIb3cgY2FuIEkgaGVscCB5b3UgdG9kYXk\/In1dKSxyKCJncmVldGluZyIpLGQoIiIpLGYoIiIpfTtyZXR1cm4gZy5qc3hzKGcuRnJhZ21lbnQse2NoaWxkcmVuOltnLmpzeChyYSx7Y2hpbGRyZW46IWUmJmcuanN4cyhLLmJ1dHRvbix7aW5pdGlhbDp7c2NhbGU6MH0sYW5pbWF0ZTp7c2NhbGU6MX0sZXhpdDp7c2NhbGU6MH0sd2hpbGVIb3Zlcjp7c2NhbGU6MS4xfSx3aGlsZVRhcDp7c2NhbGU6Ljl9LG9uQ2xpY2s6KCk9PnQoITApLGNsYXNzTmFtZToiZml4ZWQgYm90dG9tLTYgcmlnaHQtNiB6LTUwIHctMTQgaC0xNCByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaG92ZXI6c2hhZG93LXhsIHRyYW5zaXRpb24tc2hhZG93IiwiYXJpYS1sYWJlbCI6Ik9wZW4gY2hhdCIsY2hpbGRyZW46W2cuanN4KHR5LHtzaXplOjI0fSksZy5qc3goSy5kaXYse2NsYXNzTmFtZToiYWJzb2x1dGUgLXRvcC0xIC1yaWdodC0xIHctNCBoLTQgcm91bmRlZC1mdWxsIGJnLWFjY2VudCIsYW5pbWF0ZTp7c2NhbGU6WzEsMS4zLDFdfSx0cmFuc2l0aW9uOntkdXJhdGlvbjoyLHJlcGVhdDoxLzB9fSldfSl9KSxnLmpzeChyYSx7Y2hpbGRyZW46ZSYmZy5qc3hzKEsuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAseToyMCxzY2FsZTouOTV9LGFuaW1hdGU6e29wYWNpdHk6MSx5OjAsc2NhbGU6MX0sZXhpdDp7b3BhY2l0eTowLHk6MjAsc2NhbGU6Ljk1fSx0cmFuc2l0aW9uOntkdXJhdGlvbjouMn0sY2xhc3NOYW1lOiJmaXhlZCBib3R0b20tNiByaWdodC02IHotNTAgdy1bMzYwcHhdIG1heC13LVtjYWxjKDEwMHZ3LTQ4cHgpXSBoLVs1MjBweF0gbWF4LWgtW2NhbGMoMTAwdmgtOTZweCldIHJvdW5kZWQtMnhsIGJnLWNhcmQgYm9yZGVyIGJvcmRlci1ib3JkZXIgc2hhZG93LTJ4bCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiIsY2hpbGRyZW46W2cuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0zIGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQiLGNoaWxkcmVuOltnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiLGNoaWxkcmVuOltnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTggaC04IHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5LWZvcmVncm91bmQvMjAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiLGNoaWxkcmVuOmcuanN4KHR5LHtzaXplOjE2fSl9KSxnLmpzeHMoImRpdiIse2NoaWxkcmVuOltnLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC1zbSBmb250LXNlbWlib2xkIixjaGlsZHJlbjoiU2hhaHJ6YWQgQXNzaXN0YW50In0pLGcuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LXhzIG9wYWNpdHktODAiLGNoaWxkcmVuOiJPbmxpbmUifSldfSldfSksZy5qc3goImJ1dHRvbiIse29uQ2xpY2s6KCk9PnQoITEpLGNsYXNzTmFtZToicC0xIGhvdmVyOmJnLXByaW1hcnktZm9yZWdyb3VuZC8xMCByb3VuZGVkLWxnIHRyYW5zaXRpb24tY29sb3JzIiwiYXJpYS1sYWJlbCI6IkNsb3NlIGNoYXQiLGNoaWxkcmVuOmcuanN4KGNwLHtzaXplOjE4fSl9KV19KSxnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleC0xIG92ZXJmbG93LXktYXV0byBwLTQgc3BhY2UteS0zIixjaGlsZHJlbjpbaS5tYXAoKFQsQyk9PmcuanN4KEsuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAseTo4fSxhbmltYXRlOntvcGFjaXR5OjEseTowfSxjbGFzc05hbWU6YGZsZXggJHtULnJvbGU9PT0idXNlciI\/Imp1c3RpZnktZW5kIjoianVzdGlmeS1zdGFydCJ9YCxjaGlsZHJlbjpnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOmBtYXgtdy1bODAlXSByb3VuZGVkLTJ4bCBweC00IHB5LTIuNSB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCAke1Qucm9sZT09PSJ1c2VyIj8iYmctcHJpbWFyeSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCByb3VuZGVkLWJyLW1kIjoiYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgcm91bmRlZC1ibC1tZCJ9YCxjaGlsZHJlbjpnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJwcm9zZSBwcm9zZS1zbSBwcm9zZS1wOm0tMCBwcm9zZS1wOmxlYWRpbmctcmVsYXhlZCBbJj4qXTptLTAiLGNoaWxkcmVuOmcuanN4KFQzLHtjaGlsZHJlbjpULmNvbnRlbnR9KX0pfSl9LEMpKSxsJiZnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGp1c3RpZnktc3RhcnQiLGNoaWxkcmVuOmcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImJnLXNlY29uZGFyeSByb3VuZGVkLTJ4bCByb3VuZGVkLWJsLW1kIHB4LTQgcHktMyIsY2hpbGRyZW46Zy5qc3goY0kse3NpemU6MTYsY2xhc3NOYW1lOiJhbmltYXRlLXNwaW4gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIn0pfSl9KSxnLmpzeCgiZGl2Iix7cmVmOnl9KV19KSxuPT09ImNvbGxlY3RpbmciJiZnLmpzeHMoSy5kaXYse2luaXRpYWw6e29wYWNpdHk6MCx5OjEwfSxhbmltYXRlOntvcGFjaXR5OjEseTowfSxjbGFzc05hbWU6InB4LTQgcHktMyBib3JkZXItdCBib3JkZXItYm9yZGVyIGJnLXNlY29uZGFyeS81MCIsY2hpbGRyZW46W2cuanN4cygicCIse2NsYXNzTmFtZToidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZm9yZWdyb3VuZCBtYi0yIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xIixjaGlsZHJlbjpbZy5qc3goaUkse3NpemU6MTR9KSwiTGVhdmUgeW91ciBkZXRhaWxzIHNvIHdlIGNhbiBmb2xsb3cgdXAiXX0pLGcuanN4KCJpbnB1dCIse3R5cGU6InRleHQiLHBsYWNlaG9sZGVyOiJZb3VyIG5hbWUiLHZhbHVlOmMsb25DaGFuZ2U6VD0+ZChULnRhcmdldC52YWx1ZSksY2xhc3NOYW1lOiJ3LWZ1bGwgcHgtMyBweS0yIHJvdW5kZWQtbGcgYmctY2FyZCBib3JkZXIgYm9yZGVyLWJvcmRlciB0ZXh0LXNtIHRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgbWItMiBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctcHJpbWFyeSJ9KSxnLmpzeCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjoiRW1haWwgb3IgcGhvbmUgbnVtYmVyIix2YWx1ZTpoLG9uQ2hhbmdlOlQ9PmYoVC50YXJnZXQudmFsdWUpLGNsYXNzTmFtZToidy1mdWxsIHB4LTMgcHktMiByb3VuZGVkLWxnIGJnLWNhcmQgYm9yZGVyIGJvcmRlci1ib3JkZXIgdGV4dC1zbSB0ZXh0LWZvcmVncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1iLTIgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLXByaW1hcnkifSksZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZ2FwLTIiLGNoaWxkcmVuOltnLmpzeCgiYnV0dG9uIix7b25DbGljazp2LGRpc2FibGVkOiFjLnRyaW0oKXx8IWgudHJpbSgpfHxsLGNsYXNzTmFtZToiZmxleC0xIHB4LTMgcHktMiByb3VuZGVkLWxnIGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgdGV4dC1zbSBmb250LW1lZGl1bSBkaXNhYmxlZDpvcGFjaXR5LTUwIGhvdmVyOm9wYWNpdHktOTAgdHJhbnNpdGlvbi1vcGFjaXR5IixjaGlsZHJlbjpsPyJTZW5kaW5nLi4uIjoiU3VibWl0In0pLGcuanN4KCJidXR0b24iLHtvbkNsaWNrOngsY2xhc3NOYW1lOiJweC0zIHB5LTIgcm91bmRlZC1sZyBiZy1tdXRlZCB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGV4dC1zbSBob3ZlcjpiZy1tdXRlZC84MCB0cmFuc2l0aW9uLWNvbG9ycyIsY2hpbGRyZW46IlNraXAifSldfSldfSksKG49PT0iZ3JlZXRpbmcifHxuPT09ImNoYXR0aW5nIikmJmcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJweC00IHB5LTMgYm9yZGVyLXQgYm9yZGVyLWJvcmRlciIsY2hpbGRyZW46W249PT0iY2hhdHRpbmciJiZnLmpzeCgiYnV0dG9uIix7b25DbGljazpwLGNsYXNzTmFtZToidy1mdWxsIG1iLTIgdGV4dC14cyB0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIHRleHQtY2VudGVyIixjaGlsZHJlbjoiRW5kIGNoYXQgJiBsZWF2ZSBjb250YWN0IGluZm8ifSksZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZ2FwLTIiLGNoaWxkcmVuOltnLmpzeCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjoiVHlwZSB5b3VyIG1lc3NhZ2UuLi4iLHZhbHVlOnMsb25DaGFuZ2U6VD0+YShULnRhcmdldC52YWx1ZSksb25LZXlEb3duOlQ9PlQua2V5PT09IkVudGVyIiYmIVQuc2hpZnRLZXkmJncoKSxkaXNhYmxlZDpsLGNsYXNzTmFtZToiZmxleC0xIHB4LTMgcHktMiByb3VuZGVkLXhsIGJnLXNlY29uZGFyeSBib3JkZXIgYm9yZGVyLWJvcmRlciB0ZXh0LXNtIHRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLXByaW1hcnkgZGlzYWJsZWQ6b3BhY2l0eS01MCJ9KSxnLmpzeCgiYnV0dG9uIix7b25DbGljazp3LGRpc2FibGVkOiFzLnRyaW0oKXx8bCxjbGFzc05hbWU6InctMTAgaC0xMCByb3VuZGVkLXhsIGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZGlzYWJsZWQ6b3BhY2l0eS01MCBob3ZlcjpvcGFjaXR5LTkwIHRyYW5zaXRpb24tb3BhY2l0eSIsImFyaWEtbGFiZWwiOiJTZW5kIG1lc3NhZ2UiLGNoaWxkcmVuOmcuanN4KHBJLHtzaXplOjE2fSl9KV19KV19KSxuPT09ImRvbmUiJiZnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJweC00IHB5LTMgYm9yZGVyLXQgYm9yZGVyLWJvcmRlciB0ZXh0LWNlbnRlciIsY2hpbGRyZW46Zy5qc3goImJ1dHRvbiIse29uQ2xpY2s6ayxjbGFzc05hbWU6InRleHQtc20gdGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSIsY2hpbGRyZW46IlN0YXJ0IGEgbmV3IGNvbnZlcnNhdGlvbiJ9KX0pXX0pfSldfSl9LFIzPSgpPT5nLmpzeHMoImRpdiIse2NsYXNzTmFtZToibWluLWgtc2NyZWVuIGJnLWJhY2tncm91bmQiLGNoaWxkcmVuOltnLmpzeChhTyx7fSksZy5qc3goZE8se30pLGcuanN4KGhPLHt9KSxnLmpzeChwTyx7fSksZy5qc3goeU8se30pLGcuanN4KHZPLHt9KSxnLmpzeCh4Tyx7fSksZy5qc3goQk8se30pLGcuanN4KFVPLHt9KSxnLmpzeCh6Myx7fSldfSksRDM9KCk9Pntjb25zdCBlPXBhKCk7cmV0dXJuIGIudXNlRWZmZWN0KCgpPT57Y29uc29sZS5lcnJvcigiNDA0IEVycm9yOiBVc2VyIGF0dGVtcHRlZCB0byBhY2Nlc3Mgbm9uLWV4aXN0ZW50IHJvdXRlOiIsZS5wYXRobmFtZSl9LFtlLnBhdGhuYW1lXSksZy5qc3goImRpdiIse2NsYXNzTmFtZToiZmxleCBtaW4taC1zY3JlZW4gaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLW11dGVkIixjaGlsZHJlbjpnLmpzeHMoImRpdiIse2NsYXNzTmFtZToidGV4dC1jZW50ZXIiLGNoaWxkcmVuOltnLmpzeCgiaDEiLHtjbGFzc05hbWU6Im1iLTQgdGV4dC00eGwgZm9udC1ib2xkIixjaGlsZHJlbjoiNDA0In0pLGcuanN4KCJwIix7Y2xhc3NOYW1lOiJtYi00IHRleHQteGwgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIixjaGlsZHJlbjoiT29wcyEgUGFnZSBub3QgZm91bmQifSksZy5qc3goImEiLHtocmVmOiIvIixjbGFzc05hbWU6InRleHQtcHJpbWFyeSB1bmRlcmxpbmUgaG92ZXI6dGV4dC1wcmltYXJ5LzkwIixjaGlsZHJlbjoiUmV0dXJuIHRvIEhvbWUifSldfSl9KX0sTTM9W3t0aXRsZToiSW5mb3JtYXRpb24gQ29sbGVjdGlvbiBhbmQgVXNlIixpY29uOiLwn5OLIixjb250ZW50OiJGb3IgYSBiZXR0ZXIgZXhwZXJpZW5jZSwgd2hpbGUgdXNpbmcgb3VyIFNlcnZpY2UsIHdlIG1heSByZXF1aXJlIHlvdSB0byBwcm92aWRlIHVzIHdpdGggY2VydGFpbiBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbi4gVGhlIGluZm9ybWF0aW9uIHRoYXQgd2UgcmVxdWVzdCB3aWxsIGJlIHJldGFpbmVkIG9uIHlvdXIgZGV2aWNlIGFuZCBpcyBub3QgY29sbGVjdGVkIGJ5IHVzIGluIGFueSB3YXkuIixleHRyYTpnLmpzeHMoImRpdiIse2NsYXNzTmFtZToibXQtNCIsY2hpbGRyZW46W2cuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtYi0zIixjaGlsZHJlbjoiVGhlIGFwcCB1c2VzIHRoaXJkLXBhcnR5IHNlcnZpY2VzIHRoYXQgbWF5IGNvbGxlY3QgaW5mb3JtYXRpb24gdXNlZCB0byBpZGVudGlmeSB5b3U6In0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGdhcC0yIixjaGlsZHJlbjpbe25hbWU6Ikdvb2dsZSBQbGF5IFNlcnZpY2VzIix1cmw6Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcG9saWNpZXMvcHJpdmFjeS8ifSx7bmFtZToiR29vZ2xlIEFuYWx5dGljcyBmb3IgRmlyZWJhc2UiLHVybDoiaHR0cHM6Ly9maXJlYmFzZS5nb29nbGUuY29tL3BvbGljaWVzL2FuYWx5dGljcyJ9LHtuYW1lOiJGaXJlYmFzZSBDcmFzaGx5dGljcyIsdXJsOiJodHRwczovL2ZpcmViYXNlLmdvb2dsZS5jb20vc3VwcG9ydC9wcml2YWN5LyJ9LHtuYW1lOiJGYWNlYm9vayIsdXJsOiJodHRwczovL3d3dy5mYWNlYm9vay5jb20vYWJvdXQvcHJpdmFjeS91cGRhdGUvcHJpbnRhYmxlIn0se25hbWU6IlNlbnRyeSIsdXJsOiJodHRwczovL3NlbnRyeS5pby9wcml2YWN5LyJ9XS5tYXAoZT0+Zy5qc3hzKCJhIix7aHJlZjplLnVybCx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTMgcHktMS41IHJvdW5kZWQtbGcgYmctcHJpbWFyeS81IGJvcmRlciBib3JkZXItcHJpbWFyeS8xMCB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtcHJpbWFyeSBob3ZlcjpiZy1wcmltYXJ5LzEwIHRyYW5zaXRpb24tY29sb3JzIixjaGlsZHJlbjpbZS5uYW1lLGcuanN4KHNJLHtzaXplOjEwfSldfSxlLm5hbWUpKX0pXX0pfSx7dGl0bGU6IkxvZyBEYXRhIixpY29uOiLwn5OKIixjb250ZW50OiJXaGVuZXZlciB5b3UgdXNlIG91ciBTZXJ2aWNlLCBpbiBjYXNlIG9mIGFuIGVycm9yIGluIHRoZSBhcHAgd2UgY29sbGVjdCBkYXRhIGFuZCBpbmZvcm1hdGlvbiAodGhyb3VnaCB0aGlyZC1wYXJ0eSBwcm9kdWN0cykgb24geW91ciBwaG9uZSBjYWxsZWQgTG9nIERhdGEuIFRoaXMgTG9nIERhdGEgbWF5IGluY2x1ZGUgaW5mb3JtYXRpb24gc3VjaCBhcyB5b3VyIGRldmljZSBJbnRlcm5ldCBQcm90b2NvbCAoSVApIGFkZHJlc3MsIGRldmljZSBuYW1lLCBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24sIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBhcHAgd2hlbiB1dGlsaXppbmcgb3VyIFNlcnZpY2UsIHRoZSB0aW1lIGFuZCBkYXRlIG9mIHlvdXIgdXNlIG9mIHRoZSBTZXJ2aWNlLCBhbmQgb3RoZXIgc3RhdGlzdGljcy4ifSx7dGl0bGU6IkNvb2tpZXMiLGljb246IvCfjaoiLGNvbnRlbnQ6IkNvb2tpZXMgYXJlIGZpbGVzIHdpdGggYSBzbWFsbCBhbW91bnQgb2YgZGF0YSB0aGF0IGFyZSBjb21tb25seSB1c2VkIGFzIGFub255bW91cyB1bmlxdWUgaWRlbnRpZmllcnMuIFRoaXMgU2VydmljZSBkb2VzIG5vdCB1c2UgdGhlc2UgY29va2llcyBleHBsaWNpdGx5LiBIb3dldmVyLCB0aGUgYXBwIG1heSB1c2UgdGhpcmQtcGFydHkgY29kZSBhbmQgbGlicmFyaWVzIHRoYXQgdXNlIGNvb2tpZXMgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhbmQgaW1wcm92ZSB0aGVpciBzZXJ2aWNlcy4gWW91IGhhdmUgdGhlIG9wdGlvbiB0byBlaXRoZXIgYWNjZXB0IG9yIHJlZnVzZSB0aGVzZSBjb29raWVzLiJ9LHt0aXRsZToiU2VydmljZSBQcm92aWRlcnMiLGljb246IvCfpJ0iLGNvbnRlbnQ6IldlIG1heSBlbXBsb3kgdGhpcmQtcGFydHkgY29tcGFuaWVzIGFuZCBpbmRpdmlkdWFscyB0byBmYWNpbGl0YXRlIG91ciBTZXJ2aWNlLCBwcm92aWRlIHRoZSBTZXJ2aWNlIG9uIG91ciBiZWhhbGYsIHBlcmZvcm0gU2VydmljZS1yZWxhdGVkIHNlcnZpY2VzLCBvciBhc3Npc3QgdXMgaW4gYW5hbHl6aW5nIGhvdyBvdXIgU2VydmljZSBpcyB1c2VkLiBUaGVzZSB0aGlyZCBwYXJ0aWVzIGhhdmUgYWNjZXNzIHRvIHlvdXIgUGVyc29uYWwgSW5mb3JtYXRpb24gdG8gcGVyZm9ybSB0YXNrcyBhc3NpZ25lZCB0byB0aGVtIG9uIG91ciBiZWhhbGYsIGJ1dCBhcmUgb2JsaWdhdGVkIG5vdCB0byBkaXNjbG9zZSBvciB1c2UgaXQgZm9yIGFueSBvdGhlciBwdXJwb3NlLiJ9LHt0aXRsZToiU2VjdXJpdHkiLGljb246IvCflJIiLGNvbnRlbnQ6IldlIHZhbHVlIHlvdXIgdHJ1c3QgaW4gcHJvdmlkaW5nIHVzIHlvdXIgUGVyc29uYWwgSW5mb3JtYXRpb24sIHRodXMgd2Ugc3RyaXZlIHRvIHVzZSBjb21tZXJjaWFsbHkgYWNjZXB0YWJsZSBtZWFucyBvZiBwcm90ZWN0aW5nIGl0LiBIb3dldmVyLCBubyBtZXRob2Qgb2YgdHJhbnNtaXNzaW9uIG92ZXIgdGhlIGludGVybmV0IG9yIGVsZWN0cm9uaWMgc3RvcmFnZSBpcyAxMDAlIHNlY3VyZSwgYW5kIHdlIGNhbm5vdCBndWFyYW50ZWUgaXRzIGFic29sdXRlIHNlY3VyaXR5LiJ9LHt0aXRsZToiTGlua3MgdG8gT3RoZXIgU2l0ZXMiLGljb246IvCflJciLGNvbnRlbnQ6IlRoaXMgU2VydmljZSBtYXkgY29udGFpbiBsaW5rcyB0byBvdGhlciBzaXRlcy4gSWYgeW91IGNsaWNrIG9uIGEgdGhpcmQtcGFydHkgbGluaywgeW91IHdpbGwgYmUgZGlyZWN0ZWQgdG8gdGhhdCBzaXRlLiBOb3RlIHRoYXQgdGhlc2UgZXh0ZXJuYWwgc2l0ZXMgYXJlIG5vdCBvcGVyYXRlZCBieSB1cy4gV2Ugc3Ryb25nbHkgYWR2aXNlIHlvdSB0byByZXZpZXcgdGhlIFByaXZhY3kgUG9saWN5IG9mIHRoZXNlIHdlYnNpdGVzLiBXZSBoYXZlIG5vIGNvbnRyb2wgb3ZlciBhbmQgYXNzdW1lIG5vIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUgY29udGVudCwgcHJpdmFjeSBwb2xpY2llcywgb3IgcHJhY3RpY2VzIG9mIGFueSB0aGlyZC1wYXJ0eSBzaXRlcyBvciBzZXJ2aWNlcy4ifSx7dGl0bGU6IkNoYW5nZXMgdG8gVGhpcyBQcml2YWN5IFBvbGljeSIsaWNvbjoi8J+TnSIsY29udGVudDoiV2UgbWF5IHVwZGF0ZSBvdXIgUHJpdmFjeSBQb2xpY3kgZnJvbSB0aW1lIHRvIHRpbWUuIFlvdSBhcmUgYWR2aXNlZCB0byByZXZpZXcgdGhpcyBwYWdlIHBlcmlvZGljYWxseSBmb3IgYW55IGNoYW5nZXMuIFdlIHdpbGwgbm90aWZ5IHlvdSBvZiBhbnkgY2hhbmdlcyBieSBwb3N0aW5nIHRoZSBuZXcgUHJpdmFjeSBQb2xpY3kgb24gdGhpcyBwYWdlLiJ9XSxUMD0oKT0+Zy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6Im1pbi1oLXNjcmVlbiBiZy1iYWNrZ3JvdW5kIixjaGlsZHJlbjpbZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIGJnLXNlY29uZGFyeS81MCBib3JkZXItYiBib3JkZXItYm9yZGVyIHB5LTIwIHB0LTI4IG92ZXJmbG93LWhpZGRlbiIsY2hpbGRyZW46W2cuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0wIGxlZnQtMS8zIHctOTYgaC05NiByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeS81IGJsdXItWzE1MHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTEvNCB3LTY0IGgtNjQgcm91bmRlZC1mdWxsIGJnLWFjY2VudC81IGJsdXItWzEwMHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KFlyLHtjb3VudDoxMH0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJjb250YWluZXIgcmVsYXRpdmUiLGNoaWxkcmVuOltnLmpzeHMoUXMse3RvOiIvIixjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBmb250LWJvZHkgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIG1iLTggZ3JvdXAiLGNoaWxkcmVuOltnLmpzeCgkdyx7c2l6ZToxNixjbGFzc05hbWU6Imdyb3VwLWhvdmVyOi10cmFuc2xhdGUteC0xIHRyYW5zaXRpb24tdHJhbnNmb3JtIn0pLCJCYWNrIHRvIEhvbWUiXX0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBtYi00IixjaGlsZHJlbjpbZy5qc3goSy5kaXYse2luaXRpYWw6e3NjYWxlOjB9LGFuaW1hdGU6e3NjYWxlOjF9LHRyYW5zaXRpb246e3R5cGU6InNwcmluZyIsc3RpZmZuZXNzOjIwMH0sY2xhc3NOYW1lOiJ3LTE0IGgtMTQgcm91bmRlZC0yeGwgYmctcHJpbWFyeS8xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciIsY2hpbGRyZW46Zy5qc3goZ0kse2NsYXNzTmFtZToidGV4dC1wcmltYXJ5IixzaXplOjI4fSl9KSxnLmpzeChLLmgxLHtpbml0aWFsOntvcGFjaXR5OjAseDotMjB9LGFuaW1hdGU6e29wYWNpdHk6MSx4OjB9LGNsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQtNHhsIG1kOnRleHQtNXhsIGZvbnQtYm9sZCB0ZXh0LWZvcmVncm91bmQiLGNoaWxkcmVuOiJQcml2YWN5IFBvbGljeSJ9KV19KSxnLmpzeChLLnAse2luaXRpYWw6e29wYWNpdHk6MCx5OjEwfSxhbmltYXRlOntvcGFjaXR5OjEseTowfSx0cmFuc2l0aW9uOntkZWxheTouMn0sY2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1heC13LXhsIixjaGlsZHJlbjoiV2FnZWVoIE1hbmthcnlvcyBidWlsdCB0aGUgU2hhaHJ6YWQgYXBwIGFzIGEgRnJlZSBhcHAuIFRoaXMgU0VSVklDRSBpcyBwcm92aWRlZCBhdCBubyBjb3N0IGFuZCBpcyBpbnRlbmRlZCBmb3IgdXNlIGFzIGlzLiJ9KSxnLmpzeCgicCIse2NsYXNzTmFtZToiZm9udC1ib2R5IHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwIG10LTMiLGNoaWxkcmVuOiJFZmZlY3RpdmUgYXMgb2YgTWF5IDE1LCAyMDIyIn0pXX0pXX0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJjb250YWluZXIgbWF4LXctM3hsIHB5LTE2IixjaGlsZHJlbjpbZy5qc3goSy5wLHtpbml0aWFsOntvcGFjaXR5OjAseToxMH0sYW5pbWF0ZTp7b3BhY2l0eToxLHk6MH0sY2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGxlYWRpbmctcmVsYXhlZCBtYi0xMCIsY2hpbGRyZW46IklmIHlvdSBjaG9vc2UgdG8gdXNlIG91ciBTZXJ2aWNlLCB0aGVuIHlvdSBhZ3JlZSB0byB0aGUgY29sbGVjdGlvbiBhbmQgdXNlIG9mIGluZm9ybWF0aW9uIGluIHJlbGF0aW9uIHRvIHRoaXMgcG9saWN5LiBUaGUgUGVyc29uYWwgSW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IGlzIHVzZWQgZm9yIHByb3ZpZGluZyBhbmQgaW1wcm92aW5nIHRoZSBTZXJ2aWNlLiBXZSB3aWxsIG5vdCB1c2Ugb3Igc2hhcmUgeW91ciBpbmZvcm1hdGlvbiB3aXRoIGFueW9uZSBleGNlcHQgYXMgZGVzY3JpYmVkIGluIHRoaXMgUHJpdmFjeSBQb2xpY3kuIn0pLGcuanN4KCJkaXYiLHtjbGFzc05hbWU6InNwYWNlLXktNiIsY2hpbGRyZW46TTMubWFwKChlLHQpPT5nLmpzeHMoSy5kaXYse2luaXRpYWw6e29wYWNpdHk6MCx5OjIwfSx3aGlsZUluVmlldzp7b3BhY2l0eToxLHk6MH0sdmlld3BvcnQ6e29uY2U6ITB9LHRyYW5zaXRpb246e2R1cmF0aW9uOi40LGRlbGF5OnQqLjA1fSxjbGFzc05hbWU6Imdyb3VwIHJvdW5kZWQtMnhsIGJnLWNhcmQgYm9yZGVyIGJvcmRlci1ib3JkZXIgcC02IG1kOnAtOCBzaGFkb3ctW3ZhcigtLWNhcmQtc2hhZG93KV0gaG92ZXI6c2hhZG93LVt2YXIoLS1jYXJkLWhvdmVyLXNoYWRvdyldIGhvdmVyOmJvcmRlci1wcmltYXJ5LzIwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCIsY2hpbGRyZW46W2cuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBtYi00IixjaGlsZHJlbjpbZy5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtMnhsIixjaGlsZHJlbjplLmljb259KSxnLmpzeCgiaDIiLHtjbGFzc05hbWU6ImZvbnQtZGlzcGxheSB0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LWNhcmQtZm9yZWdyb3VuZCIsY2hpbGRyZW46ZS50aXRsZX0pXX0pLGcuanN4KCJwIix7Y2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGxlYWRpbmctcmVsYXhlZCIsY2hpbGRyZW46ZS5jb250ZW50fSksZS5leHRyYV19LGUudGl0bGUpKX0pLGcuanN4cyhLLmRpdix7aW5pdGlhbDp7b3BhY2l0eTowLHk6MjB9LHdoaWxlSW5WaWV3OntvcGFjaXR5OjEseTowfSx2aWV3cG9ydDp7b25jZTohMH0sY2xhc3NOYW1lOiJtdC0xMCByb3VuZGVkLTJ4bCBiZy1ncmFkaWVudC10by1yIGZyb20tcHJpbWFyeS81IHZpYS1jYXJkIHRvLWFjY2VudC81IGJvcmRlciBib3JkZXItcHJpbWFyeS8yMCBwLTggdGV4dC1jZW50ZXIiLGNoaWxkcmVuOltnLmpzeCgiaDIiLHtjbGFzc05hbWU6ImZvbnQtZGlzcGxheSB0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LWZvcmVncm91bmQgbWItMyIsY2hpbGRyZW46IkNvbnRhY3QgVXMifSksZy5qc3goInAiLHtjbGFzc05hbWU6ImZvbnQtYm9keSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbWItNCIsY2hpbGRyZW46IklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3Igc3VnZ2VzdGlvbnMgYWJvdXQgb3VyIFByaXZhY3kgUG9saWN5LCBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuIn0pLGcuanN4KCJhIix7aHJlZjoibWFpbHRvOmFkbWluQHNoYWhyemFkLmNsdWIiLGNsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTYgcHktMyByb3VuZGVkLXhsIGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgZm9udC1ib2R5IGZvbnQtc2VtaWJvbGQgdGV4dC1zbSBzaGFkb3ctW3ZhcigtLWdsb3ctc2hhZG93KV0gaG92ZXI6c2hhZG93LWxnIHRyYW5zaXRpb24tc2hhZG93IixjaGlsZHJlbjoi4pyJ77iPIGFkbWluQHNoYWhyemFkLmNsdWIifSldfSldfSldfSksTDM9W3tudW06IjEiLHRpdGxlOiJUZXJtcyIsY29udGVudDoiQnkgYWNjZXNzaW5nIHRoaXMgV2Vic2l0ZSwgYWNjZXNzaWJsZSBmcm9tIHd3dy5zaGFocnphZC5jbHViLCB5b3UgYXJlIGFncmVlaW5nIHRvIGJlIGJvdW5kIGJ5IHRoZXNlIFdlYnNpdGUgVGVybXMgYW5kIENvbmRpdGlvbnMgb2YgVXNlIGFuZCBhZ3JlZSB0aGF0IHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHRoZSBhZ3JlZW1lbnQgd2l0aCBhbnkgYXBwbGljYWJsZSBsb2NhbCBsYXdzLiBJZiB5b3UgZGlzYWdyZWUgd2l0aCBhbnkgb2YgdGhlc2UgdGVybXMsIHlvdSBhcmUgcHJvaGliaXRlZCBmcm9tIGFjY2Vzc2luZyB0aGlzIHNpdGUuIFRoZSBtYXRlcmlhbHMgY29udGFpbmVkIGluIHRoaXMgV2Vic2l0ZSBhcmUgcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBhbmQgdHJhZGUgbWFyayBsYXcuIn0se251bToiMiIsdGl0bGU6IlVzZSBMaWNlbnNlIixjb250ZW50OiJQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gdGVtcG9yYXJpbHkgZG93bmxvYWQgb25lIGNvcHkgb2YgdGhlIG1hdGVyaWFscyBvbiBTaGFocnphZCBDbHViJ3MgV2Vic2l0ZSBmb3IgcGVyc29uYWwsIG5vbi1jb21tZXJjaWFsIHRyYW5zaXRvcnkgdmlld2luZyBvbmx5LiBUaGlzIGlzIHRoZSBncmFudCBvZiBhIGxpY2Vuc2UsIG5vdCBhIHRyYW5zZmVyIG9mIHRpdGxlLiIsbGlzdDpbIk1vZGlmeSBvciBjb3B5IHRoZSBtYXRlcmlhbHMiLCJVc2UgdGhlIG1hdGVyaWFscyBmb3IgYW55IGNvbW1lcmNpYWwgcHVycG9zZSBvciBmb3IgYW55IHB1YmxpYyBkaXNwbGF5IiwiQXR0ZW1wdCB0byByZXZlcnNlIGVuZ2luZWVyIGFueSBzb2Z0d2FyZSBjb250YWluZWQgb24gdGhlIFdlYnNpdGUiLCJSZW1vdmUgYW55IGNvcHlyaWdodCBvciBvdGhlciBwcm9wcmlldGFyeSBub3RhdGlvbnMgZnJvbSB0aGUgbWF0ZXJpYWxzIiwiVHJhbnNmZXIgdGhlIG1hdGVyaWFscyB0byBhbm90aGVyIHBlcnNvbiBvciBtaXJyb3IgdGhlIG1hdGVyaWFscyBvbiBhbnkgb3RoZXIgc2VydmVyIl0sbGlzdE5vdGU6IlVuZGVyIHRoaXMgbGljZW5zZSB5b3UgbWF5IG5vdDoiLGZvb3RlcjoiU2hhaHJ6YWQgQ2x1YiBtYXkgdGVybWluYXRlIHVwb24gdmlvbGF0aW9ucyBvZiBhbnkgb2YgdGhlc2UgcmVzdHJpY3Rpb25zLiBVcG9uIHRlcm1pbmF0aW9uLCB5b3VyIHZpZXdpbmcgcmlnaHQgd2lsbCBhbHNvIGJlIHRlcm1pbmF0ZWQgYW5kIHlvdSBzaG91bGQgZGVzdHJveSBhbnkgZG93bmxvYWRlZCBtYXRlcmlhbHMgaW4geW91ciBwb3NzZXNzaW9uLiJ9LHtudW06IjMiLHRpdGxlOiJEaXNjbGFpbWVyIixjb250ZW50OmBBbGwgdGhlIG1hdGVyaWFscyBvbiBTaGFocnphZCBDbHViJ3MgV2Vic2l0ZSBhcmUgcHJvdmlkZWQgImFzIGlzIi4gU2hhaHJ6YWQgQ2x1YiBtYWtlcyBubyB3YXJyYW50aWVzLCBtYXkgaXQgYmUgZXhwcmVzc2VkIG9yIGltcGxpZWQsIHRoZXJlZm9yZSBuZWdhdGVzIGFsbCBvdGhlciB3YXJyYW50aWVzLiBGdXJ0aGVybW9yZSwgU2hhaHJ6YWQgQ2x1YiBkb2VzIG5vdCBtYWtlIGFueSByZXByZXNlbnRhdGlvbnMgY29uY2VybmluZyB0aGUgYWNjdXJhY3kgb3IgcmVsaWFiaWxpdHkgb2YgdGhlIHVzZSBvZiB0aGUgbWF0ZXJpYWxzIG9uIGl0cyBXZWJzaXRlLmB9LHtudW06IjQiLHRpdGxlOiJMaW1pdGF0aW9ucyIsY29udGVudDoiU2hhaHJ6YWQgQ2x1YiBvciBpdHMgc3VwcGxpZXJzIHdpbGwgbm90IGJlIGhlbGQgYWNjb3VudGFibGUgZm9yIGFueSBkYW1hZ2VzIHRoYXQgd2lsbCBhcmlzZSB3aXRoIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUgbWF0ZXJpYWxzIG9uIFNoYWhyemFkIENsdWIncyBXZWJzaXRlLCBldmVuIGlmIFNoYWhyemFkIENsdWIgb3IgYW4gYXV0aG9yaXplZCByZXByZXNlbnRhdGl2ZSBoYXMgYmVlbiBub3RpZmllZCwgb3JhbGx5IG9yIHdyaXR0ZW4sIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZS4gU29tZSBqdXJpc2RpY3Rpb25zIGRvIG5vdCBhbGxvdyBsaW1pdGF0aW9ucyBvbiBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgbGltaXRhdGlvbnMgb2YgbGlhYmlsaXR5IGZvciBpbmNpZGVudGFsIGRhbWFnZXMg4oCUIHRoZXNlIGxpbWl0YXRpb25zIG1heSBub3QgYXBwbHkgdG8geW91LiJ9LHtudW06IjUiLHRpdGxlOiJSZXZpc2lvbnMgYW5kIEVycmF0YSIsY29udGVudDoiVGhlIG1hdGVyaWFscyBhcHBlYXJpbmcgb24gU2hhaHJ6YWQgQ2x1YidzIFdlYnNpdGUgbWF5IGluY2x1ZGUgdGVjaG5pY2FsLCB0eXBvZ3JhcGhpY2FsLCBvciBwaG90b2dyYXBoaWMgZXJyb3JzLiBTaGFocnphZCBDbHViIHdpbGwgbm90IHByb21pc2UgdGhhdCBhbnkgb2YgdGhlIG1hdGVyaWFscyBpbiB0aGlzIFdlYnNpdGUgYXJlIGFjY3VyYXRlLCBjb21wbGV0ZSwgb3IgY3VycmVudC4gU2hhaHJ6YWQgQ2x1YiBtYXkgY2hhbmdlIHRoZSBtYXRlcmlhbHMgY29udGFpbmVkIG9uIGl0cyBXZWJzaXRlIGF0IGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLiJ9LHtudW06IjYiLHRpdGxlOiJMaW5rcyIsY29udGVudDoiU2hhaHJ6YWQgQ2x1YiBoYXMgbm90IHJldmlld2VkIGFsbCBvZiB0aGUgc2l0ZXMgbGlua2VkIHRvIGl0cyBXZWJzaXRlIGFuZCBpcyBub3QgcmVzcG9uc2libGUgZm9yIHRoZSBjb250ZW50cyBvZiBhbnkgc3VjaCBsaW5rZWQgc2l0ZS4gVGhlIHByZXNlbmNlIG9mIGFueSBsaW5rIGRvZXMgbm90IGltcGx5IGVuZG9yc2VtZW50IGJ5IFNoYWhyemFkIENsdWIgb2YgdGhlIHNpdGUuIFRoZSB1c2Ugb2YgYW55IGxpbmtlZCB3ZWJzaXRlIGlzIGF0IHRoZSB1c2VyJ3Mgb3duIHJpc2suIn0se251bToiNyIsdGl0bGU6IlNpdGUgVGVybXMgb2YgVXNlIE1vZGlmaWNhdGlvbnMiLGNvbnRlbnQ6IlNoYWhyemFkIENsdWIgbWF5IHJldmlzZSB0aGVzZSBUZXJtcyBvZiBVc2UgZm9yIGl0cyBXZWJzaXRlIGF0IGFueSB0aW1lIHdpdGhvdXQgcHJpb3Igbm90aWNlLiBCeSB1c2luZyB0aGlzIFdlYnNpdGUsIHlvdSBhcmUgYWdyZWVpbmcgdG8gYmUgYm91bmQgYnkgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGVzZSBUZXJtcyBhbmQgQ29uZGl0aW9ucyBvZiBVc2UuIn0se251bToiOCIsdGl0bGU6IllvdXIgUHJpdmFjeSIsY29udGVudDoiUGxlYXNlIHJlYWQgb3VyIFByaXZhY3kgUG9saWN5IGZvciBkZXRhaWxzIG9uIGhvdyB3ZSBoYW5kbGUgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbi4iLGxpbms6ITB9LHtudW06IjkiLHRpdGxlOiJHb3Zlcm5pbmcgTGF3Iixjb250ZW50OiJBbnkgY2xhaW0gcmVsYXRlZCB0byBTaGFocnphZCBDbHViJ3MgV2Vic2l0ZSBzaGFsbCBiZSBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiBFZ3lwdCB3aXRob3V0IHJlZ2FyZHMgdG8gaXRzIGNvbmZsaWN0IG9mIGxhdyBwcm92aXNpb25zLiJ9XSxFMD0oKT0+Zy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6Im1pbi1oLXNjcmVlbiBiZy1iYWNrZ3JvdW5kIixjaGlsZHJlbjpbZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIGJnLXNlY29uZGFyeS81MCBib3JkZXItYiBib3JkZXItYm9yZGVyIHB5LTIwIHB0LTI4IG92ZXJmbG93LWhpZGRlbiIsY2hpbGRyZW46W2cuanN4KCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0wIHJpZ2h0LTEvMyB3LTk2IGgtOTYgcm91bmRlZC1mdWxsIGJnLXByaW1hcnkvNSBibHVyLVsxNTBweF0gcG9pbnRlci1ldmVudHMtbm9uZSJ9KSxnLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTEvNCB3LTY0IGgtNjQgcm91bmRlZC1mdWxsIGJnLWFjY2VudC81IGJsdXItWzEwMHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIn0pLGcuanN4KFlyLHtjb3VudDoxMH0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJjb250YWluZXIgcmVsYXRpdmUiLGNoaWxkcmVuOltnLmpzeHMoUXMse3RvOiIvIixjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBmb250LWJvZHkgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIG1iLTggZ3JvdXAiLGNoaWxkcmVuOltnLmpzeCgkdyx7c2l6ZToxNixjbGFzc05hbWU6Imdyb3VwLWhvdmVyOi10cmFuc2xhdGUteC0xIHRyYW5zaXRpb24tdHJhbnNmb3JtIn0pLCJCYWNrIHRvIEhvbWUiXX0pLGcuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBtYi00IixjaGlsZHJlbjpbZy5qc3goSy5kaXYse2luaXRpYWw6e3NjYWxlOjB9LGFuaW1hdGU6e3NjYWxlOjF9LHRyYW5zaXRpb246e3R5cGU6InNwcmluZyIsc3RpZmZuZXNzOjIwMH0sY2xhc3NOYW1lOiJ3LTE0IGgtMTQgcm91bmRlZC0yeGwgYmctcHJpbWFyeS8xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciIsY2hpbGRyZW46Zy5qc3gobEkse2NsYXNzTmFtZToidGV4dC1wcmltYXJ5IixzaXplOjI4fSl9KSxnLmpzeChLLmgxLHtpbml0aWFsOntvcGFjaXR5OjAseDotMjB9LGFuaW1hdGU6e29wYWNpdHk6MSx4OjB9LGNsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQtNHhsIG1kOnRleHQtNXhsIGZvbnQtYm9sZCB0ZXh0LWZvcmVncm91bmQiLGNoaWxkcmVuOiJUZXJtcyBvZiBTZXJ2aWNlIn0pXX0pLGcuanN4KEsucCx7aW5pdGlhbDp7b3BhY2l0eTowLHk6MTB9LGFuaW1hdGU6e29wYWNpdHk6MSx5OjB9LHRyYW5zaXRpb246e2RlbGF5Oi4yfSxjbGFzc05hbWU6ImZvbnQtYm9keSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbWF4LXcteGwiLGNoaWxkcmVuOiJQbGVhc2UgcmVhZCB0aGVzZSB0ZXJtcyBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBTaGFocnphZCB3ZWJzaXRlIGFuZCBhcHBsaWNhdGlvbi4ifSldfSldfSksZy5qc3goImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyIG1heC13LTN4bCBweS0xNiIsY2hpbGRyZW46Zy5qc3goImRpdiIse2NsYXNzTmFtZToic3BhY2UteS02IixjaGlsZHJlbjpMMy5tYXAoKGUsdCk9Pnt2YXIgbjtyZXR1cm4gZy5qc3hzKEsuZGl2LHtpbml0aWFsOntvcGFjaXR5OjAseToyMH0sd2hpbGVJblZpZXc6e29wYWNpdHk6MSx5OjB9LHZpZXdwb3J0OntvbmNlOiEwfSx0cmFuc2l0aW9uOntkdXJhdGlvbjouNCxkZWxheTp0Ki4wNX0sY2xhc3NOYW1lOiJncm91cCByb3VuZGVkLTJ4bCBiZy1jYXJkIGJvcmRlciBib3JkZXItYm9yZGVyIHAtNiBtZDpwLTggc2hhZG93LVt2YXIoLS1jYXJkLXNoYWRvdyldIGhvdmVyOnNoYWRvdy1bdmFyKC0tY2FyZC1ob3Zlci1zaGFkb3cpXSBob3Zlcjpib3JkZXItcHJpbWFyeS8yMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAiLGNoaWxkcmVuOltnLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1zdGFydCBnYXAtNCBtYi00IixjaGlsZHJlbjpbZy5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZsZXgtc2hyaW5rLTAgdy0xMCBoLTEwIHJvdW5kZWQteGwgYmctcHJpbWFyeS8xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmb250LWRpc3BsYXkgdGV4dC1sZyBmb250LWJvbGQgdGV4dC1wcmltYXJ5IixjaGlsZHJlbjplLm51bX0pLGcuanN4KCJoMiIse2NsYXNzTmFtZToiZm9udC1kaXNwbGF5IHRleHQteGwgZm9udC1ib2xkIHRleHQtY2FyZC1mb3JlZ3JvdW5kIHB0LTEuNSIsY2hpbGRyZW46ZS50aXRsZX0pXX0pLGcuanN4KCJwIix7Y2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGxlYWRpbmctcmVsYXhlZCBtbC0xNCIsY2hpbGRyZW46ZS5jb250ZW50fSksZS5saXN0Tm90ZSYmZy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6Im1sLTE0IG10LTQiLGNoaWxkcmVuOltnLmpzeCgicCIse2NsYXNzTmFtZToiZm9udC1ib2R5IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kIG1iLTIiLGNoaWxkcmVuOmUubGlzdE5vdGV9KSxnLmpzeCgidWwiLHtjbGFzc05hbWU6InNwYWNlLXktMiIsY2hpbGRyZW46KG49ZS5saXN0KT09bnVsbD92b2lkIDA6bi5tYXAocj0+Zy5qc3hzKCJsaSIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1zdGFydCBnYXAtMiBmb250LWJvZHkgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQiLGNoaWxkcmVuOltnLmpzeCgic3BhbiIse2NsYXNzTmFtZToidy0xLjUgaC0xLjUgcm91bmRlZC1mdWxsIGJnLWRlc3RydWN0aXZlIG10LTIgZmxleC1zaHJpbmstMCJ9KSxyXX0scikpfSksZS5mb290ZXImJmcuanN4KCJwIix7Y2xhc3NOYW1lOiJmb250LWJvZHkgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbXQtMyIsY2hpbGRyZW46ZS5mb290ZXJ9KV19KSxlLmxpbmsmJmcuanN4KCJkaXYiLHtjbGFzc05hbWU6Im1sLTE0IG10LTMiLGNoaWxkcmVuOmcuanN4KFFzLHt0bzoiL3ByaXZhY3ktcG9saWN5IixjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUiLGNoaWxkcmVuOiJSZWFkIG91ciBQcml2YWN5IFBvbGljeSDihpIifSl9KV19LGUubnVtKX0pfSl9KV19KSxPMz1uZXcgeFAsRjM9KCk9PmcuanN4KGJQLHtjbGllbnQ6TzMsY2hpbGRyZW46Zy5qc3goY3ose2NoaWxkcmVuOmcuanN4cyhVaix7Y2hpbGRyZW46W2cuanN4KHROLHt9KSxnLmpzeChaQSx7fSksZy5qc3godkEse2NoaWxkcmVuOmcuanN4cyhkQSx7Y2hpbGRyZW46W2cuanN4KGlpLHtwYXRoOiIvIixlbGVtZW50OmcuanN4KFIzLHt9KX0pLGcuanN4KGlpLHtwYXRoOiIvcHJpdmFjeS1wb2xpY3kiLGVsZW1lbnQ6Zy5qc3goVDAse30pfSksZy5qc3goaWkse3BhdGg6Ii9wcml2YWN5X3BvbGljeSIsZWxlbWVudDpnLmpzeChUMCx7fSl9KSxnLmpzeChpaSx7cGF0aDoiL3Rlcm1zLW9mLXVzZSIsZWxlbWVudDpnLmpzeChFMCx7fSl9KSxnLmpzeChpaSx7cGF0aDoiL3Rlcm1zX29mX3NlcnZpY2UiLGVsZW1lbnQ6Zy5qc3goRTAse30pfSksZy5qc3goaWkse3BhdGg6IioiLGVsZW1lbnQ6Zy5qc3goRDMse30pfSldfSl9KV19KX0pfSk7RzEoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvb3QiKSkucmVuZGVyKGcuanN4KEYzLHt9KSk7Cg==\"),x=document.createElement('script');x.textContent=new TextDecoder('utf-8').decode(Uint8Array.from(j,c=>c.charCodeAt(0)));document.body.appendChild(x)})();<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-no-title","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/gabrielhacks.com\/index.php?rest_route=\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gabrielhacks.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gabrielhacks.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gabrielhacks.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gabrielhacks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":6,"href":"https:\/\/gabrielhacks.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":22,"href":"https:\/\/gabrielhacks.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions\/22"}],"wp:attachment":[{"href":"https:\/\/gabrielhacks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}