PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CjxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9UG93ZXJQb2ludC5TbGlkZT4KPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFBvd2VyUG9pbnQgMTAiPgo8bGluayBpZD1NYWluLUZpbGUgcmVsPU1haW4tRmlsZSBocmVmPSIuLi9FY2xpcHNlQ29uMjAwNF9Qb3N0ZXJTZXNzaW9uLmh0bSI+CjxsaW5rIHJlbD1QcmV2aWV3IGhyZWY9cHJldmlldy53bWY+CjxtZXRhIG5hbWU9Um9ib3RzIGNvbnRlbnQ9Tm9JbmRleD4KPHNjcmlwdCBzcmM9c2NyaXB0LmpzPjwvc2NyaXB0PjxzY3JpcHQ+PCEtLQppZiggIShJc1dpbigiUFBUT3RsIil8fElzV2luKCJQUFROYXYiKXx8SXNXaW4oIlBQVE90bE5hdiIpKSApCnsKCW9iaiA9IEdldE9iaigiTWFpbi1GaWxlIikKCXBhcmVudC5sb2NhdGlvbi5ocmVmPW9iai5ocmVmCn0KdmFyIGdPdGxIaWxpdGVDbHI9IiNmZmZmZmYiLGdPdGxOb3JtYWxDbHI9IiMwMDAwMDAiLGdPdGxBY3RpdmVDbHI9IiNmZmZmMDAiLGdTZWxlY3RlZD0iIixnVHh0U3RhdGU9ZmFsc2UsZ0NoaWxkRW50cnlUYWJsZT1uZXcgQXJyYXkoKQpmdW5jdGlvbiBMb2FkKCkKewoJaWYoIElzV2luKCJQUFRPdGwiICkgKXsgTG9hZE90bCgpOyBwYXJlbnQuZ090bExvYWRlZD10cnVlOyByZXR1cm4gfQoJaWYoIGdfc3VwcG9ydHNQUFRIVE1MICkgewoJCWlmKCBJc1dpbigiUFBUTmF2IiApICl7IExvYWROYXYoIk5hdk9iaiIsVXBkTmF2KTsgcGFyZW50LmdOYXZMb2FkZWQ9dHJ1ZTsgcmV0dXJuIH0KCQlpZiggSXNXaW4oIlBQVE90bE5hdiIgKSApeyBMb2FkTmF2KCJPdGxOYXZPYmoiLFVwZE90bE5hdik7IHBhcmVudC5nT3RsTmF2TG9hZGVkPXRydWU7IHJldHVybiB9Cgl9Cn0KZnVuY3Rpb24gVXBkKCl7IGlmKCBJc1dpbigiUFBUTmF2IikgKSBMb2FkTmF2KCJOYXZPYmoiLFVwZE5hdikgfQpmdW5jdGlvbiBMb2FkTmF2KCBvSWQsVXBkRnVuYyApCnsKCWRvY3VtZW50Lm9uZHJhZ3N0YXJ0PUNhbmNlbERyYWcKCWRvY3VtZW50Lm9uc2VsZWN0c3RhcnQ9Q2FuY2VsRHJhZwoJZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW49MgoJVXBkRnVuYygpCglvYmo9ZG9jdW1lbnQuYWxsLml0ZW0ob0lkKQoJb2JqLnN0eWxlLmRpc3BsYXk9ImJsb2NrIgoJb2JqLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiCglkb2N1bWVudC5iZ0NvbG9yPSJ0aHJlZWRmYWNlIgoJaWYoIHBhcmVudC5mcmFtZXNbIlBQVE50cyJdICkKCQlub3Rlc0J0bi5zdHlsZS5kaXNwbGF5ID0gIiIKCWlmKCBwYXJlbnQuZ0hhc05hcnJhdGlvbiApCgkJbmJfdm9pY2VCb3JkZXIuc3R5bGUuZGlzcGxheSA9ICIiCn0KZnVuY3Rpb24gTG9hZE90bCgpCnsKCXZhciBvdGw9R2V0T2JqKCJPdGxPYmoiKQoJb3RsLnN0eWxlLmRpc3BsYXk9ImJsb2NrIgoJb3RsLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiCglpZiggZ090bEFjdGl2ZUNsciA9PSAiIiApIGdPdGxBY3RpdmVDbHI9ZG9jdW1lbnQubGlua0NvbG9yCglpZiggZ090bEhpbGl0ZUNsciA9PSAiIiApIGdPdGxIaWxpdGVDbHI9ZG9jdW1lbnQuZmdDb2xvcgoJaWYoIGdPdGxOb3JtYWxDbHIgPT0gIiIgKQoJCWdPdGxOb3JtYWxDbHI9ZG9jdW1lbnQuYmdDb2xvcgoJZWxzZQoJCWRvY3VtZW50LmJnQ29sb3I9Z090bE5vcm1hbENscgoJSW5pdEFycmF5KCkKCWlmKCBPYmpFeGlzdHMoIHBhcmVudC5nQ3VyU2xkICkgKSB7CgkJQ2hhbmdlU3RhdGUoIHBhcmVudC5nQ3VyU2xkLGdPdGxOb3JtYWxDbHIsZ090bEhpbGl0ZUNsciApCgkJZ1NlbGVjdGVkPXBhcmVudC5nQ3VyU2xkCgl9CgllbHNlIGdTZWxlY3RlZCA9IC0xCglVcGRPdGwoKQp9CmZ1bmN0aW9uIFVwZE90bCgpeyBVcGRJZHgocGFyZW50LmdDdXJTbGQpIH0KZnVuY3Rpb24gVXBkSWR4KCBpZHggKQp7CglpZiggZ1NlbGVjdGVkICE9IGlkeCApIHsKCQlpZiggZ1NlbGVjdGVkID4gMCApCgkJCUNoYW5nZVN0YXRlKCBnU2VsZWN0ZWQsZ090bEhpbGl0ZUNscixnT3RsTm9ybWFsQ2xyICkKCQlpZiggT2JqRXhpc3RzKCBpZHggKSApIHsKCQkJZ1NlbGVjdGVkID0gaWR4CgkJCUNoYW5nZVN0YXRlKCBnU2VsZWN0ZWQsZ090bE5vcm1hbENscixnT3RsSGlsaXRlQ2xyICkKCQl9CgkJZWxzZSBnU2VsZWN0ZWQgPSAtMQoJfQoJaWYoIGdUeHRTdGF0ZSAhPSBwYXJlbnQuZ090bFR4dEV4cCApIHsKCQlzdGF0ZSA9ICJibG9jayIKCQlpZiggIXBhcmVudC5nT3RsVHh0RXhwICkKCQkJc3RhdGU9Im5vbmUiCgkJZm9yKGlpPTA7IGlpPGdDaGlsZEVudHJ5VGFibGUubGVuZ3RoOyBpaSsrKSB7CgkJCW9iaj1nQ2hpbGRFbnRyeVRhYmxlW2lpXTsKCQkJaWYoIG9iai5pZCA9PSBudWxsICkgY29udGludWU7CgkJCWlmKCBvYmouaWQuaW5kZXhPZigiUFBUQyIpID49IDAgKQoJCQkJb2JqLnN0eWxlLmRpc3BsYXk9c3RhdGU7CgkJfQoJCWdUeHRTdGF0ZT1wYXJlbnQuZ090bFR4dEV4cAoJCWlmKCBPYmpFeGlzdHMoIGdTZWxlY3RlZCApICkKCQkJQ2hhbmdlU3RhdGUoIGdTZWxlY3RlZCxnT3RsTm9ybWFsQ2xyLGdPdGxIaWxpdGVDbHIgKQoJfQp9CmZ1bmN0aW9uIEluaXRBcnJheSgpCnsKCWNvdW50PTAKCXZhciBsaXN0PUdldFRhZ3MoZG9jdW1lbnQsIkRJViIpOwoJZm9yKGlpPTA7IGlpPGxpc3QubGVuZ3RoOyBpaSsrKSB7CgkJb2JqPWxpc3QuaXRlbShpaSkKCQlpZiggb2JqLmlkID09IG51bGwgKSBjb250aW51ZQoJCWlmKCBvYmouaWQuaW5kZXhPZigiUFBUQyIpID49IDAgKQoJCQlnQ2hpbGRFbnRyeVRhYmxlW2NvdW50KytdPW9iagoJfQp9CmZ1bmN0aW9uIENoYW5nZVN0YXRlKCBpZHgsZmdDb2xvcixiZ0NvbG9yICkKewoJb2JqPUdldE9iaigiUFBUTCIraWR4KQoJb2JqLnN0eWxlLmNvbG9yPWZnQ29sb3IKCW9iaj1HZXRPYmooIlBQVFAiK2lkeCkKCW9iai5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9YmdDb2xvcgp9CmZ1bmN0aW9uIENoZ0NsciggbyxjbHIgKXsgaWYoIG8uaWQgIT0gIlBQVEwiK2dTZWxlY3RlZCApIG8uc3R5bGUuY29sb3I9Y2xyIH0KZnVuY3Rpb24gT3Zlciggc3JjICl7IENoZ0NscihHZXRMaW5rKHNyYyksZ090bEFjdGl2ZUNscikgfQpmdW5jdGlvbiBPdXQoIHNyYyApeyBDaGdDbHIoR2V0TGluayhzcmMpLGdPdGxIaWxpdGVDbHIpIH0KZnVuY3Rpb24gRm9sbG93KHNyYyl7IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gR2V0TGluayhzcmMpLmhyZWY7IH0KZnVuY3Rpb24gT2JqRXhpc3RzKCBpaSApIHsgb2JqPUdldE9iaigiUFBUUCIraWkgKTsgcmV0dXJuKCBvYmogKSB9CmZ1bmN0aW9uIEdvVG9TbGQoIGhyZWYgKXsgVXBkSWR4KHBhcmVudC5HZXRTbGROdW0oaHJlZikpOyBwYXJlbnQuR29Ub1NsZCggaHJlZiApIH0KZnVuY3Rpb24gQ2FuY2VsRHJhZygpeyB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlPXRydWU7d2luZG93LmV2ZW50LnJldHVyblZhbHVlPWZhbHNlfQpmdW5jdGlvbiBHZXRMaW5rKHNyYykKewogICBpZihzcmMudGFnTmFtZT09IkEiKSByZXR1cm4gc3JjCiAgIGVsc2UgcmV0dXJuIEdldFRhZ3Moc3JjLCJBIikuaXRlbSgwKQp9CmZ1bmN0aW9uIFVwZE5hdigpCnsKCXR4dCA9ICI8Y2VudGVyPiI7CglpZiggcGFyZW50LkdldEhyZWZPYmooIHBhcmVudC5nQ3VyU2xkICkubU9yaWdWaXMgPT0gMSApCgkJdHh0ICs9ICJTbGlkZSAiICsgcGFyZW50LkdldEN1clNsZE51bSgpICsgIiBvZiAiICsgcGFyZW50LkdldE51bVNsZHMoKQoJZWxzZQoJCXR4dCArPSAiSGlkZGVuIFNsaWRlIgoJdHh0ICs9ICI8L2NlbnRlcj4iOwoJbmF2X3RleHQuaW5uZXJIVE1MID0gdHh0OwoJaWYoICFwYXJlbnQuSGFzUHJldlNsZCgpICkKCQlnQnRuQXJyWyJuYl9wcmV2Il0uRW5hYmxlZCgwKQoJZWxzZQoJCWdCdG5BcnJbIm5iX3ByZXYiXS5FbmFibGVkKDEpCglpZiggIXBhcmVudC5IYXNOZXh0U2xkKCkgKQoJCWdCdG5BcnJbIm5iX25leHQiXS5FbmFibGVkKDApCgllbHNlCgkJZ0J0bkFyclsibmJfbmV4dCJdLkVuYWJsZWQoMSkKCWdCdG5BcnJbIm5iX250cyJdLlNldEVuYWJsZWQoKQoJZ0J0bkFyclsibmJfbnRzIl0uU2V0RmxhZyggcGFyZW50LmdIYXNOdHMgKQoJZ0J0bkFyclsibmJfc2xkc2h3Il0uRW5hYmxlZCgxKQoJZ0J0bkFyclsibmJfdm9pY2UiXS5FbmFibGVkKDEpCn0KZnVuY3Rpb24gVXBkT3RsTmF2KCkKewoJZ0J0bkFyclsibmJfb3RsIl0uU2V0RW5hYmxlZCgpOwoJaWYoIHBhcmVudC5nT3RsT3BlbiApCgkJZ0J0bkFyclsibmJfb3RsVHh0Il0uRW5hYmxlZCggdHJ1ZSApOwoJZWxzZQoJCWRvY3VtZW50LmFsbC5pdGVtKCJuYl9vdGxUeHRCb3JkZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Cn0KCi8vLS0+PC9zY3JpcHQ+CjxzdHlsZT4KPCEtLS5QVHh0Cgl7cG9zaXRpb246cmVsYXRpdmU7Cgl3aWR0aDoxMDAlOwoJbWFyZ2luLXRvcDo1cHg7CglwYWRkaW5nLWxlZnQ6MnB4OwoJZm9udC13ZWlnaHQ6Ym9sZDt9Ci5DVHh0Cgl7cG9zaXRpb246cmVsYXRpdmU7Cgl3aWR0aDoxMDAlOwoJbWFyZ2luLXRvcDo1cHg7fQphCgl7Y29sb3I6d2hpdGU7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTt9CnVsCgl7Y29sb3I6d2hpdGU7CgltYXJnaW4tYm90dG9tOjBweDsKCW1hcmdpbi1sZWZ0OjIwcHg7fQouc2xkTnVtCgl7bWFyZ2luLXRvcDo1cHg7Cgljb2xvcjp3aGl0ZTt9Ci5idXR0b24KCXtwb3NpdGlvbjphYnNvbHV0ZTsKCXdpZHRoOjMycHg7CgloZWlnaHQ6MjBweDsKCWJvcmRlci1zdHlsZTpzb2xpZDsKCWJvcmRlci13aWR0aDoxcHg7Cglib3JkZXItY29sb3I6dGhyZWVkZmFjZTt9Ci0tPgo8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keSBvbmxvYWQ9IkxvYWQoKSIgc3R5bGU9J21hcmdpbjoycHgnPgoKPGRpdiBpZD1OYXZPYmogb25sb2FkPSJMb2FkKCkiIG9ubW91c2VvdmVyPSJCdG5Pbk92ZXIoKSIKb25tb3VzZWRvd249IkJ0bk9uRG93bigpIiBvbm1vdXNlb3V0PSJCdG5Pbk91dCgpIiBvbm1vdXNldXA9IkJ0bk9uVXAoKSIKb25rZXlwcmVzcz0iX0tQSCgpIiBzdHlsZT0nZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuJz4KPHRhYmxlIGlkPSJub3Rlc0J0biIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6bm9uZTt3aWR0aDo3MHB4JyBhbGlnbj1sZWZ0IGNlbGxwYWRkaW5nPTAKIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPgogPGRpdiBpZD0ibmJfbnRzRWxlbSIgYWxpZ249Y2VudGVyIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjNweDsKIGZvbnQtZmFtaWx5OkFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+PGltZyBzcmM9Im5vdGVzX2ZsYWcuZ2lmIgogYm9yZGVyPTAgaWQ9Im5vdGVzX2ZsYWciIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxzcGFuCnN0eWxlPSdtc28tc3BhY2VydW46eWVzJz6gIDwvc3Bhbj5Ob3RlczwvZGl2PgogPGRpdiB0aXRsZT0iU2hvdy9IaWRlIE5vdGVzIiBpZD0ibmJfbnRzIiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjAlOwogbGVmdDowJTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlJz48L2Rpdj4KIDwvdGQ+CjwvdGFibGU+Cgo8dGFibGUgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjcwcHgnIGFsaWduPXJpZ2h0IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KIDx0ZCBub3dyYXA+CiA8ZGl2IGlkPSJuYl9zbGRzaHdUZXh0IiB0aXRsZT0iRnVsbApTY3JlZW4gU2xpZGUgU2hvdyIgYWxpZ249Y2VudGVyIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tbGVmdDoyMHB4O3BhZGRpbmc6M3B4OwogZm9udC1mYW1pbHk6QXJpYWw7Y29sb3I6YnV0dG9udGV4dDtmb250LXNpemU6OXB0O2N1cnNvcjpkZWZhdWx0Jz5TbGlkZQpTaG93PC9kaXY+CiA8ZGl2IGlkPSJuYl9zbGRzaHdCb3JkZXIiIHRpdGxlPSJGdWxsIFNjcmVlbiBTbGlkZSBTaG93IiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjAlO2xlZnQ6MCU7d2lkdGg6MTAwJTtoZWlnaHQ6MjBweCc+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAxOHB4LCAxOHB4LCAwcHgpJz48aW1nCiBzcmM9ImJ1dHRvbnMuZ2lmIiBpZD0ibmJfc2xkc2h3IiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7bGVmdDotMjU0cHgnPjwvZGl2PgogPC9kaXY+CiA8L3RkPgogPHRkPgogPGRpdiBpZD0ibmJfdm9pY2VCb3JkZXIiIHN0eWxlPSdkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDotNDBweDsKIHdpZHRoOjIwcHg7aGVpZ2h0OjIwcHgnPgogPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDBweCwgMThweCwgMThweCwgMHB4KSc+PGltZwogc3JjPSJidXR0b25zLmdpZiIgaWQ9Im5iX3ZvaWNlIiB0aXRsZT0iUGF1c2UvUGxheSBOYXJyYXRpb24iIHN0eWxlPSdwb3NpdGlvbjoKIHJlbGF0aXZlO2xlZnQ6LTI5MHB4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KPC90YWJsZT4KCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnIGFsaWduPWNlbnRlciBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPgogPGRpdiBpZD0ibmJfcHJldkJvcmRlciIgY2xhc3M9YnV0dG9uIHN0eWxlPSdsZWZ0Oi0zMHB4Jz4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDMwcHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz0iYnV0dG9ucy5naWYiIGlkPSJuYl9wcmV2IiB0aXRsZT0iUHJldmlvdXMgU2xpZGUiIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTsKIGxlZnQ6MHB4Jz48L2Rpdj4KIDwvZGl2PgogPHNwYW4gaWQ9Im5hdl90ZXh0IiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7dG9wOjNweDt3aWR0aDoxMDBweDtmb250LWZhbWlseToKIEFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+PC9zcGFuPgogPGRpdiBpZD0ibmJfbmV4dEJvcmRlciIgY2xhc3M9YnV0dG9uPgogPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDBweCwgMzBweCwgMThweCwgMHB4KSc+PGltZwogc3JjPSJidXR0b25zLmdpZiIgaWQ9Im5iX25leHQiIHRpdGxlPSJOZXh0IFNsaWRlIiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7CiBsZWZ0Oi05MHB4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KPC90YWJsZT4KPC9kaXY+Cgo8ZGl2IGlkPU90bE5hdk9iaiBvbmxvYWQ9IkxvYWQoKSIgb25tb3VzZW92ZXI9IkJ0bk9uT3ZlcigpIgpvbm1vdXNlZG93bj0iQnRuT25Eb3duKCkiIG9ubW91c2VvdXQ9IkJ0bk9uT3V0KCkiIG9ubW91c2V1cD0iQnRuT25VcCgpIgpvbmtleXByZXNzPSJfS1BIKCkiIHN0eWxlPSdkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW4nPgoKPHRhYmxlIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo3MHB4JyBhbGlnbj1sZWZ0IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KIDx0ZCBub3dyYXA+PGRpdiB0aXRsZT0iU2hvdy9IaWRlCk91dGxpbmUiIGlkPSJuYl9vdGwiCiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjAlO2xlZnQ6MCU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtjdXJzb3I6ZGVmYXVsdCc+CiA8ZGl2IGlkPSJuYl9vdGxFbGVtIiBhbGlnbj1jZW50ZXIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6M3B4O2ZvbnQtZmFtaWx5OkFyaWFsOwogY29sb3I6YnV0dG9udGV4dDtmb250LXNpemU6OXB0Jz5PdXRsaW5lPC9kaXY+PC9kaXY+CiA8L3RkPgo8L3RhYmxlPgoKPHRhYmxlIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZScgYWxpZ249Y2VudGVyIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4KIDx0ZD4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTE4cHg7d2lkdGg6MjRweDtoZWlnaHQ6MjBweDtib3JkZXItc3R5bGU6CiBzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JvcmRlci1jb2xvcjp0aHJlZWRmYWNlJyBpZD0ibmJfb3RsVHh0Qm9yZGVyIj4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDIycHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz1idXR0b25zLmdpZiBpZD0ibmJfb3RsVHh0IiB0aXRsZT0iRXhwYW5kL0NvbGxhcHNlIE91dGxpbmUiCiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7bGVmdDotMTU3cHgnPjwvZGl2PgogPC9kaXY+CiA8L3RkPgo8L3RhYmxlPgoKPC9kaXY+Cgo8ZGl2IGlkPU90bE9iaiBzdHlsZT0nZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuOyc+CgoKPHRhYmxlIHdpZHRoPSIxMDAlIiBzdHlsZT0nZm9udC1mYW1pbHk6QXJpYWw7Zm9udC1zaXplOjlwdCc+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjE8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQgd2lkdGg9IjEwMCUiPgogIDxkaXYgaWQ9UFBUUDEgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAyOC5odG0nKTsiIGlkPVBQVEwxPkVjbGlwc2UgVU1MMiBQcm9qZWN0PC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPlBvc3RlciBTZXNzaW9uPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MjwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAyIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMjkuaHRtJyk7IiBpZD1QUFRMMj5Db250ZW50czwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMiBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5PdmVydmlldzwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+R29hbHM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkNoYWxsZW5nZXM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlN0YXR1czwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+TWlsZXN0b25lczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+V29yayBJdGVtczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+SG93IENhbiBZb3UgSGVscD88L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4zPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDMgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAzMC5odG0nKTsiIGlkPVBQVEwzPk92ZXJ2aWV3PC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMzIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPkFuIEVjbGlwc2UgTW9kZWxpbmcgRGV2ZWxvcG1lbnQgVG9vbHMgc3ViY29tcG9uZW50IGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbW9kZWxpbmcvbWR0Lz9wcm9qZWN0PXVtbDIjdW1sMjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+QW4gRU1GLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBVTUyZIDIuMCBtZXRhbW9kZWwgZm9yIHRoZSBFY2xpcHNlCiAgICAgICBwbGF0Zm9ybTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UHJvamVjdCBsZWFkIGlzIEtlbm4gSHVzc2V5IChraHVzc2V5QGNhLmlibS5jb20pPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5QYXJ0bmVycyBpbmNsdWRlIEJvcmxhbmQsIEVyaWNzc29uLCBhbmQgVW5pc3lzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Vc2VycyBpbmNsdWRlIElCTSwgTWV0YW5vbG9neSwgT21vbmRvLCBhbmQgT250b2dlbmljczwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjQ8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNCBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDMxLmh0bScpOyIgaWQ9UFBUTDQ+R29hbHM8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzQgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+UHJvdmlkZSBhIHVzZWFibGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1ldGFtb2RlbCB0byBzdXBwb3J0IHRoZQogICAgICAgZGV2ZWxvcG1lbnQgb2YgbW9kZWxpbmcgdG9vbHM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlByb3ZpZGUgYSBjb21tb24gWE1JIHNjaGVtYSB0byBmYWNpbGl0YXRlIGludGVyY2hhbmdlIG9mIHNlbWFudGljIG1vZGVsczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UHJvdmlkZSB0ZXN0IGNhc2VzIGFzIGEgbWVhbnMgb2YgdmFsaWRhdGluZyB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKICAgICAgIGltcGxlbWVudGF0aW9uPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Qcm92aWRlIHZhbGlkYXRpb24gcnVsZXMgYXMgbWVhbnMgb2YgZGVmaW5pbmcgYW5kIGVuZm9yY2luZyBsZXZlbHMgb2YgY29tcGxpYW5jZTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjU8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDMyLmh0bScpOyIgaWQ9UFBUTDU+Q2hhbGxlbmdlczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDNSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5TaW5jZSB0aGUgc3BlY2lmaWNhdGlvbiBpc26SdCBmaW5hbGl6ZWQsIHRoZSBBUEkgaXMgYSBtb3ZpbmcgdGFyZ2V0PC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5UaGUgY3VycmVudCBzdHJ1Y3R1cmUgb2YgdGhlIHN0YW5kYXJkIG1ldGFtb2RlbCAody5yLnQuIHBhY2thZ2UgbWVyZ2UsCiAgICAgICByZWRlZmluaXRpb25zLCBzdWJzZXRzL3N1cGVyc2V0cykgbWFrZXMgdGhlIG1hcHBpbmcgdG8gSmF2YSBkaWZmaWN1bHQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkFuIFhNSSBzY2hlbWEgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3BlY2lmaWNhdGlvbiBjb3VsZCBub3QgYmUgdXNlZCBmb3IKICAgICAgIGludGVyY2hhbmdlIHdpdGhvdXQgdHJhbnNmb3JtYXRpb25zPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5UaGVyZSBhcmUgYSBudW1iZXIgb2YgZXJyb3JzIGluIHRoZSBzcGVjaWZpY2F0aW9uIHdoaWNoLCB1bnRpbCBmaXhlZCwKICAgICAgIG1ha2UgdGhlIEFQSSBhbmQgWE1JIHNjaGVtYSBkaWZmaWN1bHQgdG8gdXNlPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Db21wbGlhbmNlIHBvaW50cyBmb3IgVU1MmSAyLjAgYXJlIGEgc3ViamVjdCBvZiBtdWNoIGRlYmF0ZSB3aXRoaW4gdGhlCiAgICAgICBtb2RlbGluZyBjb21tdW5pdHk8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj42PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDYgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAzMy5odG0nKTsiIGlkPVBQVEw2PlN0YXR1cyCWIE1ldGFtb2RlbDwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDNiBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5FTUYtZ2VuZXJhdGVkIEFQSSBiYXNlZCBvbiBhIGNvbGxhcHNlZCB2ZXJzaW9uIG9mIHRoZSBtZXRhbW9kZWwgaW4gd2hpY2gKICAgICAgIHBhY2thZ2UgbWVyZ2VzIGFuZCBhIG1ham9yaXR5IG9mIHRoZSByZWRlZmluaXRpb25zIGhhdmUgYmVlbiBmYWN0b3JlZAogICAgICAgb3V0PC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5JbmNsdWRlcyBtZWNoYW5pc21zIHRvIHN1cHBvcnQgZGVyaXZlZCB1bmlvbiwgcmVkZWZpbmVzLCBhbmQgc3Vic2V0cwogICAgICAgY29uc3RyYWludHM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkdlbmVyYXRlZCB1c2luZyBhIGN1c3RvbWl6ZWQgUm9zZTJFY29yZSBidWlsZGVyIGFuZCBKRVQgdGVtcGxhdGVzPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+NzwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFA3IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMzQuaHRtJyk7IiBpZD1QUFRMNz5TdGF0dXMgliBJbnRlcmNoYW5nZTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDNyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5EZWZhdWx0IFhNSSBzY2hlbWEgZ2VuZXJhdGVkIHVzaW5nIEVNRjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RGVmaW5lcyBvbmUgbmFtZXNwYWNlIChodHRwOi8vb3JnLmVjbGlwc2UvdW1sMi5lY29yZSkgZm9yIGFsbCBlbGVtZW50cywKICAgICAgIHRodXMgc3VwcG9ydGluZyBpbnRlcmNoYW5nZTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RWxlbWVudHMgaWRlbnRpZmllZCB1c2luZyBVbml2ZXJzYWxseSBVbmlxdWUgSWRlbnRpZmllcnMgKFVVSURzKTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjg8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQOCBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDM1Lmh0bScpOyIgaWQ9UFBUTDg+U3RhdHVzIJYgU3BlY2lmaWNhdGlvbjwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDOCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5FcnJvcnMgZGlzY292ZXJlZCB3aGlsZSB1c2luZyB0aGUgQVBJIGFuZC9vciBYTUkgc2NoZW1hIGFyZSBiZWluZyBmaXhlZAogICAgICAgYW5kIHN1Ym1pdHRlZCBhcyBpc3N1ZXMgdG8gdGhlIFVNTJkgMi4wIFN1cGVyc3RydWN0dXJlIEZpbmFsaXphdGlvbiBUYXNrCiAgICAgICBGb3JjZSAoRlRGKTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+VU1MmSAyLjAgU3VwZXJzdHJ1Y3R1cmUgRlRGIGN1cnJlbnRseSBoYXMgYSBsYXJnZSBudW1iZXIgb2YgdW5yZXNvbHZlZAogICAgICAgaXNzdWVzLCBhdmFpbGFibGUgYXQKICAgICAgIGh0dHA6Ly93d3cub21nLm9yZy9pc3N1ZXMvdW1sMi1zdXBlcnN0cnVjdHVyZS1mdGYub3Blbi5odG1sPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5UZW50YXRpdmUgZmluYWxpemF0aW9uIGRhdGUgZm9yIFVNTJkgMi4wIFNwZWNpZmljYXRpb24gaXMgQXByaWwgMjAwNDwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjk8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQOSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDM2Lmh0bScpOyIgaWQ9UFBUTDk+U3RhdHVzIC0gQ29tcGxpYW5jZTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDOSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5WYWxpZGF0aW9uIHJ1bGVzIHRvIGJlIGV2YWx1YXRlZCB1c2luZyBFTUYgU3dpdGNoLWJhc2VkIHZhbGlkYXRvcgogICAgICAgbWVjaGFuaXNtPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5WYWxpZGF0b3JzIGFyZSBiZWluZyBpbXBsZW1lbnRlZCBiYXNlZCBvbiBzZXRzIG9mIE9DTCBjb25zdHJhaW50czwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+TWF5IGNvcnJlc3BvbmQgdG8gY29tcGxpYW5jZSBsZXZlbHMgd2hlbiBkZWZpbmVkPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTAgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAzNy5odG0nKTsiIGlkPVBQVEwxMD5NaWxlc3RvbmVzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxMCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5SZWxlYXNlIDEuMCBvZiBVTUwyIHRvIGNvaW5jaWRlIHdpdGggRWNsaXBzZSAzLjA8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPldpbGwgYmUgYmFzZWQgb24gRU1GIDIuMDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RGVwZW5kcyBvbiBzdWNjZXNzZnVsIGZpbmFsaXphdGlvbiBvZiBVTUyZIDIuMCBzcGVjaWZpY2F0aW9uPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTE8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTEgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDAzOC5odG0nKTsiIGlkPVBQVEwxMT5Xb3JrIEl0ZW1zPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxMSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5WYWxpZGF0aW9uIHJ1bGVzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5SZXNvdXJjZSBtaWdyYXRpb24gbWVjaGFuaXNtPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5JbXBvcnQvZXhwb3J0IGZyb20vdG8gUm9zZSAoVW5pc3lzIFhNSSk8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlVuaXQgdGVzdHM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkphdmFkb2M8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkJ1ZyBmaXhlczwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjEyPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDEyIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwMzkuaHRtJyk7IiBpZD1QUFRMMTI+SG93IENhbiBZb3UgSGVscD88L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzEyIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPkRldmVsb3AgdG9vbHMgYmFzZWQgb24gVU1MMjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UmVwb3J0IGJ1Z3M8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlBhcnRpY2lwYXRlIGluIG5ld3Nncm91cCBkaXNjdXNzaW9uczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+V3JpdGUgYXJ0aWNsZXM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkJlY29tZSBhIFVNTDIgY29udHJpYnV0b3I8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgo8L3RhYmxlPgoKCgo8L2Rpdj4KCjxkaXYgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGEgaHJlZj1tYXN0ZXIwOC5odG0+PC9hPjxhIGhyZWY9bWFzdGVyMDgueG1sPjwvYT48YQpocmVmPXByZXZpZXcud21mPjwvYT48YSBocmVmPSJtYXN0ZXIwOF9pbWFnZTAwMS5qcGciPjwvYT48YQpocmVmPSJtYXN0ZXIwOF9pbWFnZTAwMi5qcGciPjwvYT48YSBocmVmPW1hc3RlcjA5Lmh0bT48L2E+PGEgaHJlZj1tYXN0ZXIwOS54bWw+PC9hPjxhCmhyZWY9Im1hc3RlcjA5X2ltYWdlMDAzLmpwZyI+PC9hPjxhIGhyZWY9Im1hc3RlcjA5X2ltYWdlMDA0LmpwZyI+PC9hPjxhCmhyZWY9bWFzdGVyMDIuaHRtPjwvYT48YSBocmVmPXByZXMueG1sPjwvYT48YSBocmVmPWVkaXRkYXRhLm1zbz48L2E+PGEKaHJlZj1zbGlkZTAwMjguaHRtPjwvYT48YSBocmVmPSJtYXN0ZXIwOV9pbWFnZTAwNS5qcGciPjwvYT48YQpocmVmPSJtYXN0ZXIwOV9pbWFnZTAwNi5qcGciPjwvYT48YSBocmVmPXNsaWRlMDAyOS5odG0+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDA3LmpwZyI+PC9hPjxhIGhyZWY9Im1hc3RlcjA4X2ltYWdlMDA4LmdpZiI+PC9hPjxhCmhyZWY9c2xpZGUwMDMwLmh0bT48L2E+PGEgaHJlZj1zbGlkZTAwMzEuaHRtPjwvYT48YSBocmVmPXNsaWRlMDAzMi5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMDMzLmh0bT48L2E+PGEgaHJlZj1zbGlkZTAwMzQuaHRtPjwvYT48YSBocmVmPXNsaWRlMDAzNS5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMDM2Lmh0bT48L2E+PGEgaHJlZj1zbGlkZTAwMzcuaHRtPjwvYT48YSBocmVmPXNsaWRlMDAzOC5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMDM5Lmh0bT48L2E+PGEgaHJlZj1tYXN0ZXIwMS5odG0+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X3N0eWxlc2hlZXQuY3NzIj48L2E+PGEgaHJlZj1zY3JpcHQuanM+PC9hPjxhCmhyZWY9Ii4uL0VjbGlwc2VDb24yMDA0X1Bvc3RlclNlc3Npb24uaHRtIj48L2E+PGEgaHJlZj1mdWxsc2NyZWVuLmh0bT48L2E+PGEKaHJlZj1idXR0b25zLmdpZj48L2E+PGEgaHJlZj1mcmFtZS5odG0+PC9hPjxhIGhyZWY9b3V0bGluZS5odG0+PC9hPjwvZGl2PgoKPC9ib2R5PgoKPC9odG1sPgo=