PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CjxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9UG93ZXJQb2ludC5TbGlkZT4KPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFBvd2VyUG9pbnQgMTAiPgo8bGluayBpZD1NYWluLUZpbGUgcmVsPU1haW4tRmlsZSBocmVmPSIuLi9VTUwyXzIuMF9SZWxlYXNlX1Jldmlldy5odG0iPgo8bGluayByZWw9UHJldmlldyBocmVmPXByZXZpZXcud21mPgo8bWV0YSBuYW1lPVJvYm90cyBjb250ZW50PU5vSW5kZXg+CjxzY3JpcHQgc3JjPXNjcmlwdC5qcz48L3NjcmlwdD48c2NyaXB0PjwhLS0KaWYoICEoSXNXaW4oIlBQVE90bCIpfHxJc1dpbigiUFBUTmF2Iil8fElzV2luKCJQUFRPdGxOYXYiKSkgKQp7CglvYmogPSBHZXRPYmooIk1haW4tRmlsZSIpCglwYXJlbnQubG9jYXRpb24uaHJlZj1vYmouaHJlZgp9CnZhciBnT3RsSGlsaXRlQ2xyPSIjZmZmZmZmIixnT3RsTm9ybWFsQ2xyPSIjMDAwMDAwIixnT3RsQWN0aXZlQ2xyPSIjZmZmZjAwIixnU2VsZWN0ZWQ9IiIsZ1R4dFN0YXRlPWZhbHNlLGdDaGlsZEVudHJ5VGFibGU9bmV3IEFycmF5KCkKZnVuY3Rpb24gTG9hZCgpCnsKCWlmKCBJc1dpbigiUFBUT3RsIiApICl7IExvYWRPdGwoKTsgcGFyZW50LmdPdGxMb2FkZWQ9dHJ1ZTsgcmV0dXJuIH0KCWlmKCBnX3N1cHBvcnRzUFBUSFRNTCApIHsKCQlpZiggSXNXaW4oIlBQVE5hdiIgKSApeyBMb2FkTmF2KCJOYXZPYmoiLFVwZE5hdik7IHBhcmVudC5nTmF2TG9hZGVkPXRydWU7IHJldHVybiB9CgkJaWYoIElzV2luKCJQUFRPdGxOYXYiICkgKXsgTG9hZE5hdigiT3RsTmF2T2JqIixVcGRPdGxOYXYpOyBwYXJlbnQuZ090bE5hdkxvYWRlZD10cnVlOyByZXR1cm4gfQoJfQp9CmZ1bmN0aW9uIFVwZCgpeyBpZiggSXNXaW4oIlBQVE5hdiIpICkgTG9hZE5hdigiTmF2T2JqIixVcGROYXYpIH0KZnVuY3Rpb24gTG9hZE5hdiggb0lkLFVwZEZ1bmMgKQp7Cglkb2N1bWVudC5vbmRyYWdzdGFydD1DYW5jZWxEcmFnCglkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PUNhbmNlbERyYWcKCWRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luPTIKCVVwZEZ1bmMoKQoJb2JqPWRvY3VtZW50LmFsbC5pdGVtKG9JZCkKCW9iai5zdHlsZS5kaXNwbGF5PSJibG9jayIKCW9iai5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIgoJZG9jdW1lbnQuYmdDb2xvcj0idGhyZWVkZmFjZSIKCWlmKCBwYXJlbnQuZnJhbWVzWyJQUFROdHMiXSApCgkJbm90ZXNCdG4uc3R5bGUuZGlzcGxheSA9ICIiCglpZiggcGFyZW50LmdIYXNOYXJyYXRpb24gKQoJCW5iX3ZvaWNlQm9yZGVyLnN0eWxlLmRpc3BsYXkgPSAiIgp9CmZ1bmN0aW9uIExvYWRPdGwoKQp7Cgl2YXIgb3RsPUdldE9iaigiT3RsT2JqIikKCW90bC5zdHlsZS5kaXNwbGF5PSJibG9jayIKCW90bC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIgoJaWYoIGdPdGxBY3RpdmVDbHIgPT0gIiIgKSBnT3RsQWN0aXZlQ2xyPWRvY3VtZW50LmxpbmtDb2xvcgoJaWYoIGdPdGxIaWxpdGVDbHIgPT0gIiIgKSBnT3RsSGlsaXRlQ2xyPWRvY3VtZW50LmZnQ29sb3IKCWlmKCBnT3RsTm9ybWFsQ2xyID09ICIiICkKCQlnT3RsTm9ybWFsQ2xyPWRvY3VtZW50LmJnQ29sb3IKCWVsc2UKCQlkb2N1bWVudC5iZ0NvbG9yPWdPdGxOb3JtYWxDbHIKCUluaXRBcnJheSgpCglpZiggT2JqRXhpc3RzKCBwYXJlbnQuZ0N1clNsZCApICkgewoJCUNoYW5nZVN0YXRlKCBwYXJlbnQuZ0N1clNsZCxnT3RsTm9ybWFsQ2xyLGdPdGxIaWxpdGVDbHIgKQoJCWdTZWxlY3RlZD1wYXJlbnQuZ0N1clNsZAoJfQoJZWxzZSBnU2VsZWN0ZWQgPSAtMQoJVXBkT3RsKCkKfQpmdW5jdGlvbiBVcGRPdGwoKXsgVXBkSWR4KHBhcmVudC5nQ3VyU2xkKSB9CmZ1bmN0aW9uIFVwZElkeCggaWR4ICkKewoJaWYoIGdTZWxlY3RlZCAhPSBpZHggKSB7CgkJaWYoIGdTZWxlY3RlZCA+IDAgKQoJCQlDaGFuZ2VTdGF0ZSggZ1NlbGVjdGVkLGdPdGxIaWxpdGVDbHIsZ090bE5vcm1hbENsciApCgkJaWYoIE9iakV4aXN0cyggaWR4ICkgKSB7CgkJCWdTZWxlY3RlZCA9IGlkeAoJCQlDaGFuZ2VTdGF0ZSggZ1NlbGVjdGVkLGdPdGxOb3JtYWxDbHIsZ090bEhpbGl0ZUNsciApCgkJfQoJCWVsc2UgZ1NlbGVjdGVkID0gLTEKCX0KCWlmKCBnVHh0U3RhdGUgIT0gcGFyZW50LmdPdGxUeHRFeHAgKSB7CgkJc3RhdGUgPSAiYmxvY2siCgkJaWYoICFwYXJlbnQuZ090bFR4dEV4cCApCgkJCXN0YXRlPSJub25lIgoJCWZvcihpaT0wOyBpaTxnQ2hpbGRFbnRyeVRhYmxlLmxlbmd0aDsgaWkrKykgewoJCQlvYmo9Z0NoaWxkRW50cnlUYWJsZVtpaV07CgkJCWlmKCBvYmouaWQgPT0gbnVsbCApIGNvbnRpbnVlOwoJCQlpZiggb2JqLmlkLmluZGV4T2YoIlBQVEMiKSA+PSAwICkKCQkJCW9iai5zdHlsZS5kaXNwbGF5PXN0YXRlOwoJCX0KCQlnVHh0U3RhdGU9cGFyZW50LmdPdGxUeHRFeHAKCQlpZiggT2JqRXhpc3RzKCBnU2VsZWN0ZWQgKSApCgkJCUNoYW5nZVN0YXRlKCBnU2VsZWN0ZWQsZ090bE5vcm1hbENscixnT3RsSGlsaXRlQ2xyICkKCX0KfQpmdW5jdGlvbiBJbml0QXJyYXkoKQp7Cgljb3VudD0wCgl2YXIgbGlzdD1HZXRUYWdzKGRvY3VtZW50LCJESVYiKTsKCWZvcihpaT0wOyBpaTxsaXN0Lmxlbmd0aDsgaWkrKykgewoJCW9iaj1saXN0Lml0ZW0oaWkpCgkJaWYoIG9iai5pZCA9PSBudWxsICkgY29udGludWUKCQlpZiggb2JqLmlkLmluZGV4T2YoIlBQVEMiKSA+PSAwICkKCQkJZ0NoaWxkRW50cnlUYWJsZVtjb3VudCsrXT1vYmoKCX0KfQpmdW5jdGlvbiBDaGFuZ2VTdGF0ZSggaWR4LGZnQ29sb3IsYmdDb2xvciApCnsKCW9iaj1HZXRPYmooIlBQVEwiK2lkeCkKCW9iai5zdHlsZS5jb2xvcj1mZ0NvbG9yCglvYmo9R2V0T2JqKCJQUFRQIitpZHgpCglvYmouc3R5bGUuYmFja2dyb3VuZENvbG9yPWJnQ29sb3IKfQpmdW5jdGlvbiBDaGdDbHIoIG8sY2xyICl7IGlmKCBvLmlkICE9ICJQUFRMIitnU2VsZWN0ZWQgKSBvLnN0eWxlLmNvbG9yPWNsciB9CmZ1bmN0aW9uIE92ZXIoIHNyYyApeyBDaGdDbHIoR2V0TGluayhzcmMpLGdPdGxBY3RpdmVDbHIpIH0KZnVuY3Rpb24gT3V0KCBzcmMgKXsgQ2hnQ2xyKEdldExpbmsoc3JjKSxnT3RsSGlsaXRlQ2xyKSB9CmZ1bmN0aW9uIEZvbGxvdyhzcmMpeyB3aW5kb3cubG9jYXRpb24uaHJlZiA9IEdldExpbmsoc3JjKS5ocmVmOyB9CmZ1bmN0aW9uIE9iakV4aXN0cyggaWkgKSB7IG9iaj1HZXRPYmooIlBQVFAiK2lpICk7IHJldHVybiggb2JqICkgfQpmdW5jdGlvbiBHb1RvU2xkKCBocmVmICl7IFVwZElkeChwYXJlbnQuR2V0U2xkTnVtKGhyZWYpKTsgcGFyZW50LkdvVG9TbGQoIGhyZWYgKSB9CmZ1bmN0aW9uIENhbmNlbERyYWcoKXsgd2luZG93LmV2ZW50LmNhbmNlbEJ1YmJsZT10cnVlO3dpbmRvdy5ldmVudC5yZXR1cm5WYWx1ZT1mYWxzZX0KZnVuY3Rpb24gR2V0TGluayhzcmMpCnsKICAgaWYoc3JjLnRhZ05hbWU9PSJBIikgcmV0dXJuIHNyYwogICBlbHNlIHJldHVybiBHZXRUYWdzKHNyYywiQSIpLml0ZW0oMCkKfQpmdW5jdGlvbiBVcGROYXYoKQp7Cgl0eHQgPSAiPGNlbnRlcj4iOwoJaWYoIHBhcmVudC5HZXRIcmVmT2JqKCBwYXJlbnQuZ0N1clNsZCApLm1PcmlnVmlzID09IDEgKQoJCXR4dCArPSAiU2xpZGUgIiArIHBhcmVudC5HZXRDdXJTbGROdW0oKSArICIgb2YgIiArIHBhcmVudC5HZXROdW1TbGRzKCkKCWVsc2UKCQl0eHQgKz0gIkhpZGRlbiBTbGlkZSIKCXR4dCArPSAiPC9jZW50ZXI+IjsKCW5hdl90ZXh0LmlubmVySFRNTCA9IHR4dDsKCWlmKCAhcGFyZW50Lkhhc1ByZXZTbGQoKSApCgkJZ0J0bkFyclsibmJfcHJldiJdLkVuYWJsZWQoMCkKCWVsc2UKCQlnQnRuQXJyWyJuYl9wcmV2Il0uRW5hYmxlZCgxKQoJaWYoICFwYXJlbnQuSGFzTmV4dFNsZCgpICkKCQlnQnRuQXJyWyJuYl9uZXh0Il0uRW5hYmxlZCgwKQoJZWxzZQoJCWdCdG5BcnJbIm5iX25leHQiXS5FbmFibGVkKDEpCglnQnRuQXJyWyJuYl9udHMiXS5TZXRFbmFibGVkKCkKCWdCdG5BcnJbIm5iX250cyJdLlNldEZsYWcoIHBhcmVudC5nSGFzTnRzICkKCWdCdG5BcnJbIm5iX3NsZHNodyJdLkVuYWJsZWQoMSkKCWdCdG5BcnJbIm5iX3ZvaWNlIl0uRW5hYmxlZCgxKQp9CmZ1bmN0aW9uIFVwZE90bE5hdigpCnsKCWdCdG5BcnJbIm5iX290bCJdLlNldEVuYWJsZWQoKTsKCWlmKCBwYXJlbnQuZ090bE9wZW4gKQoJCWdCdG5BcnJbIm5iX290bFR4dCJdLkVuYWJsZWQoIHRydWUgKTsKCWVsc2UKCQlkb2N1bWVudC5hbGwuaXRlbSgibmJfb3RsVHh0Qm9yZGVyIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwp9CgovLy0tPjwvc2NyaXB0Pgo8c3R5bGU+CjwhLS0uUFR4dAoJe3Bvc2l0aW9uOnJlbGF0aXZlOwoJd2lkdGg6MTAwJTsKCW1hcmdpbi10b3A6NXB4OwoJcGFkZGluZy1sZWZ0OjJweDsKCWZvbnQtd2VpZ2h0OmJvbGQ7fQouQ1R4dAoJe3Bvc2l0aW9uOnJlbGF0aXZlOwoJd2lkdGg6MTAwJTsKCW1hcmdpbi10b3A6NXB4O30KYQoJe2NvbG9yOndoaXRlOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7fQp1bAoJe2NvbG9yOndoaXRlOwoJbWFyZ2luLWJvdHRvbTowcHg7CgltYXJnaW4tbGVmdDoyMHB4O30KLnNsZE51bQoJe21hcmdpbi10b3A6NXB4OwoJY29sb3I6d2hpdGU7fQouYnV0dG9uCgl7cG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDozMnB4OwoJaGVpZ2h0OjIwcHg7Cglib3JkZXItc3R5bGU6c29saWQ7Cglib3JkZXItd2lkdGg6MXB4OwoJYm9yZGVyLWNvbG9yOnRocmVlZGZhY2U7fQotLT4KPC9zdHlsZT4KPC9oZWFkPgoKPGJvZHkgb25sb2FkPSJMb2FkKCkiIHN0eWxlPSdtYXJnaW46MnB4Jz4KCjxkaXYgaWQ9TmF2T2JqIG9ubG9hZD0iTG9hZCgpIiBvbm1vdXNlb3Zlcj0iQnRuT25PdmVyKCkiCm9ubW91c2Vkb3duPSJCdG5PbkRvd24oKSIgb25tb3VzZW91dD0iQnRuT25PdXQoKSIgb25tb3VzZXVwPSJCdG5PblVwKCkiCm9ua2V5cHJlc3M9Il9LUEgoKSIgc3R5bGU9J2Rpc3BsYXk6bm9uZTt2aXNpYmlsaXR5OmhpZGRlbic+Cjx0YWJsZSBpZD0ibm90ZXNCdG4iIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5Om5vbmU7d2lkdGg6NzBweCcgYWxpZ249bGVmdCBjZWxscGFkZGluZz0wCiBjZWxsc3BhY2luZz0wPgogPHRkIG5vd3JhcD4KIDxkaXYgaWQ9Im5iX250c0VsZW0iIGFsaWduPWNlbnRlciBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzozcHg7CiBmb250LWZhbWlseTpBcmlhbDtjb2xvcjpidXR0b250ZXh0O2ZvbnQtc2l6ZTo5cHQnPjxpbWcgc3JjPSJub3Rlc19mbGFnLmdpZiIKIGJvcmRlcj0wIGlkPSJub3Rlc19mbGFnIiBzdHlsZT0nZGlzcGxheTpub25lJz48c3BhbgpzdHlsZT0nbXNvLXNwYWNlcnVuOnllcyc+oCA8L3NwYW4+Tm90ZXM8L2Rpdj4KIDxkaXYgdGl0bGU9IlNob3cvSGlkZSBOb3RlcyIgaWQ9Im5iX250cyIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTsKIGxlZnQ6MCU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJSc+PC9kaXY+CiA8L3RkPgo8L3RhYmxlPgoKPHRhYmxlIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo3MHB4JyBhbGlnbj1yaWdodCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPgogPGRpdiBpZD0ibmJfc2xkc2h3VGV4dCIgdGl0bGU9IkZ1bGwKU2NyZWVuIFNsaWRlIFNob3ciIGFsaWduPWNlbnRlciBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWxlZnQ6MjBweDtwYWRkaW5nOjNweDsKIGZvbnQtZmFtaWx5OkFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdDtjdXJzb3I6ZGVmYXVsdCc+U2xpZGUKU2hvdzwvZGl2PgogPGRpdiBpZD0ibmJfc2xkc2h3Qm9yZGVyIiB0aXRsZT0iRnVsbCBTY3JlZW4gU2xpZGUgU2hvdyIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTtsZWZ0OjAlO3dpZHRoOjEwMCU7aGVpZ2h0OjIwcHgnPgogPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDBweCwgMThweCwgMThweCwgMHB4KSc+PGltZwogc3JjPSJidXR0b25zLmdpZiIgaWQ9Im5iX3NsZHNodyIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTI1NHB4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KIDx0ZD4KIDxkaXYgaWQ9Im5iX3ZvaWNlQm9yZGVyIiBzdHlsZT0nZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTQwcHg7CiB3aWR0aDoyMHB4O2hlaWdodDoyMHB4Jz4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDE4cHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz0iYnV0dG9ucy5naWYiIGlkPSJuYl92b2ljZSIgdGl0bGU9IlBhdXNlL1BsYXkgTmFycmF0aW9uIiBzdHlsZT0ncG9zaXRpb246CiByZWxhdGl2ZTtsZWZ0Oi0yOTBweCc+PC9kaXY+CiA8L2Rpdj4KIDwvdGQ+CjwvdGFibGU+Cgo8dGFibGUgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlJyBhbGlnbj1jZW50ZXIgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgogPHRkIG5vd3JhcD4KIDxkaXYgaWQ9Im5iX3ByZXZCb3JkZXIiIGNsYXNzPWJ1dHRvbiBzdHlsZT0nbGVmdDotMzBweCc+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAzMHB4LCAxOHB4LCAwcHgpJz48aW1nCiBzcmM9ImJ1dHRvbnMuZ2lmIiBpZD0ibmJfcHJldiIgdGl0bGU9IlByZXZpb3VzIFNsaWRlIiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7CiBsZWZ0OjBweCc+PC9kaXY+CiA8L2Rpdj4KIDxzcGFuIGlkPSJuYXZfdGV4dCIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDozcHg7d2lkdGg6MTAwcHg7Zm9udC1mYW1pbHk6CiBBcmlhbDtjb2xvcjpidXR0b250ZXh0O2ZvbnQtc2l6ZTo5cHQnPjwvc3Bhbj4KIDxkaXYgaWQ9Im5iX25leHRCb3JkZXIiIGNsYXNzPWJ1dHRvbj4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDMwcHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz0iYnV0dG9ucy5naWYiIGlkPSJuYl9uZXh0IiB0aXRsZT0iTmV4dCBTbGlkZSIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlOwogbGVmdDotOTBweCc+PC9kaXY+CiA8L2Rpdj4KIDwvdGQ+CjwvdGFibGU+CjwvZGl2PgoKPGRpdiBpZD1PdGxOYXZPYmogb25sb2FkPSJMb2FkKCkiIG9ubW91c2VvdmVyPSJCdG5Pbk92ZXIoKSIKb25tb3VzZWRvd249IkJ0bk9uRG93bigpIiBvbm1vdXNlb3V0PSJCdG5Pbk91dCgpIiBvbm1vdXNldXA9IkJ0bk9uVXAoKSIKb25rZXlwcmVzcz0iX0tQSCgpIiBzdHlsZT0nZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuJz4KCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NzBweCcgYWxpZ249bGVmdCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPjxkaXYgdGl0bGU9IlNob3cvSGlkZQpPdXRsaW5lIiBpZD0ibmJfb3RsIgogc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTtsZWZ0OjAlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Y3Vyc29yOmRlZmF1bHQnPgogPGRpdiBpZD0ibmJfb3RsRWxlbSIgYWxpZ249Y2VudGVyIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjNweDtmb250LWZhbWlseTpBcmlhbDsKIGNvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+T3V0bGluZTwvZGl2PjwvZGl2PgogPC90ZD4KPC90YWJsZT4KCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnIGFsaWduPWNlbnRlciBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQ+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xOHB4O3dpZHRoOjI0cHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXN0eWxlOgogc29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItY29sb3I6dGhyZWVkZmFjZScgaWQ9Im5iX290bFR4dEJvcmRlciI+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAyMnB4LCAxOHB4LCAwcHgpJz48aW1nCiBzcmM9YnV0dG9ucy5naWYgaWQ9Im5iX290bFR4dCIgdGl0bGU9IkV4cGFuZC9Db2xsYXBzZSBPdXRsaW5lIgogc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTE1N3B4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KPC90YWJsZT4KCjwvZGl2PgoKPGRpdiBpZD1PdGxPYmogc3R5bGU9J2Rpc3BsYXk6bm9uZTt2aXNpYmlsaXR5OmhpZGRlbjsnPgoKCjx0YWJsZSB3aWR0aD0iMTAwJSIgc3R5bGU9J2ZvbnQtZmFtaWx5OkFyaWFsO2ZvbnQtc2l6ZTo5cHQnPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkIHdpZHRoPSIxMDAlIj4KICA8ZGl2IGlkPVBQVFAxIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAxMzkuaHRtJyk7IiBpZD1QUFRMMT5VTUwyIDIuMCBSZWxlYXNlIFJldmlldzwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5LZW5uIEh1c3NleTwvbGk+CiAgIDxsaT5VTUwyIFByb2plY3QgTGVhZDwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjI8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMiBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTM0Lmh0bScpOyIgaWQ9UFBUTDI+QWdlbmRhPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMyIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPkZlYXR1cmVzPC9saT4KICAgPGxpPk5vbi1Db2RlIEFzcGVjdHM8L2xpPgogICA8bGk+QVBJczwvbGk+CiAgIDxsaT5Ub29sIFVzYWJpbGl0eTwvbGk+CiAgIDxsaT5BcmNoaXRlY3R1cmFsIElzc3VlczwvbGk+CiAgIDxsaT5FbmQtb2YtTGlmZTwvbGk+CiAgIDxsaT5CdWd6aWxsYTwvbGk+CiAgIDxsaT5TdGFuZGFyZHM8L2xpPgogICA8bGk+VUkgVXNhYmlsaXR5PC9saT4KICAgPGxpPlNjaGVkdWxlPC9saT4KICAgPGxpPlByb2Nlc3M8L2xpPgogICA8bGk+Q29tbXVuaXRpZXM8L2xpPgogICA8bGk+SVAgSXNzdWVzPC9saT4KICAgPGxpPlByb2plY3QgUGxhbjwvbGk+CiAgIDxsaT5SZWxlYXNlIFJldmlldyBWZXJzaW9uPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MzwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAzIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAxNTMuaHRtJyk7IiBpZD1QUFRMMz5GZWF0dXJlczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT4yLjAgUGxhbiBhdmFpbGFibGUgYXQKICAgICAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbW9kZWxpbmcvbWR0L3VtbDIvZG9jcy9wbGFucy91bWwyX3Byb2plY3RfcGxhbl8yXzAuaHRtbDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+TWFqb3IgZmVhdHVyZXM8L2xpPgogICA8dWw+CiAgICA8bGk+VU1MmSAyLjEgQ29uZm9ybWFuY2UuIEltcGxlbWVudCB0aGUgcmV2aXNlZCBwYWNrYWdlIG1lcmdlIGFsZ29yaXRobSBhbmQKICAgICAgICByZWdlbmVyYXRlIHRoZSBjb2RlIHVzaW5nIGEgc291cmNlIG1vZGVsIGJhc2VkIG9uIHRoZSBmaW5hbGl6ZWQgVU1MmQogICAgICAgIDIuMSBTdXBlcnN0cnVjdHVyZSBzcGVjaWZpY2F0aW9uIChjb21wbGlhbmNlIGxldmVsIEwzKS4gVXBkYXRlIFVNTDIKICAgICAgICByZXNvdXJjZXMgKGxpYnJhcmllcywgbWV0YW1vZGVscywgcHJvZmlsZXMpLCBleGFtcGxlcywgYW5kIEVNRgogICAgICAgIGdlbmVyYXRvciBleHRlbnNpb25zIGFzIG5lY2Vzc2FyeS4gRW5oYW5jZSB0aGUgZ2VuZXJhdG9yIGV4dGVuc2lvbnMKICAgICAgICAoZGV2ZWxvcGVkIGluIFVNTDIgMS4xKSB0byBmYWNpbGl0YXRlIGNvZGUgZ2VuZXJhdGlvbiBmb3IgYW4gYXJiaXRyYXJ5CiAgICAgICAgY29tcGxpYW5jZSBsZXZlbC48L2xpPgogICAgPGxpPlVNTJkgMi4xIEludGVyY2hhbmdlLiBQcm92aWRlIHN1cHBvcnQgZm9yIGltcG9ydGluZy9leHBvcnRpbmcgcmVzb3VyY2VzCiAgICAgICAgYmFzZWQgb24gdGhlIG9mZmljaWFsIE9NRyBYTUkgcmVwcmVzZW50YXRpb24gb2YgVU1MmSAyLjEuPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+NDwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFA0IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAxNTIuaHRtJyk7IiBpZD1QUFRMND5GZWF0dXJlcyAoQ29udGludWVkKTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDNCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5NYWpvciBmZWF0dXJlcyAoY29udGludWVkKTwvbGk+CiAgIDx1bD4KICAgIDxsaT5VTUwyIDIuMCBNaWdyYXRpb24uIFByb3ZpZGUgYSBtZWNoYW5pc20gdG8gbWlncmF0ZSByZXNvdXJjZXMgYmFzZWQgb24KICAgICAgICB0aGUgVU1MMiAxLnggc2NoZW1hIHRvIDIuMC48L2xpPgogICAgPGxpPlJlZHVjZWQgTWVtb3J5IEZvb3RwcmludCAvIEltcHJvdmVkIFBlcmZvcm1hbmNlLiBSZWR1Y2UgdGhlIG1lbW9yeQogICAgICAgIGZvb3RwcmludCBvZiBVTUwgbW9kZWxzLiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGtleSBvcGVyYXRpb25zIHN1Y2ggYXMKICAgICAgICBtb2RlbCBsb2FkLCBzYXZlLCB0cmF2ZXJzYWwsIGV0Yy4uPC9saT4KICAgIDxsaT5JbXByb3ZlZCBDb252ZW5pZW5jZSBNZXRob2RzLiBQcm92aWRlIGltcHJvdmVkIGZhY3RvcnkgYW5kIGNvbnZlbmllbmNlCiAgICAgICAgbWV0aG9kcy4gRm9yIGV4YW1wbGUsIGZhY3RvcnkgbWV0aG9kcyB0aGF0IGFjY2VwdCBhIG5hbWUgYXMgYW4gYXJndW1lbnQKICAgICAgICAoZm9yIG5hbWVkIGVsZW1lbnQgY3JlYXRpb24pLCBhbmQgcmV0cmlldmFsIG1ldGhvZHMgdGhhdCBhY2NlcHQKICAgICAgICBhcmd1bWVudHMgaW5kaWNhdGluZyB3aGV0aGVyIG5hbWUgY29tcGFyaXNvbnMgc2hvdWxkIGJlIGNhc2Utc2Vuc2l0aXZlCiAgICAgICAgYW5kIHdoZXRoZXIgZWxlbWVudHMgc2hvdWxkIGJlIGNyZWF0ZWQgb24gZGVtYW5kLiBFbnN1cmUgdGhhdCBtZXRhZGF0YQogICAgICAgIGV4aXN0cyBmb3IgY3VzdG9tIG9wZXJhdGlvbnMuIEFsc28gcHJvdmlkZSBxdWVyeSBtZXRob2RzIGZvciByZXRyaWV2aW5nCiAgICAgICAgdGhlIHJldmVyc2Ugb2Ygb25lLXdheSByZWZlcmVuY2VzLjwvbGk+CiAgIDwvdWw+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjU8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTU4Lmh0bScpOyIgaWQ9UFBUTDU+RmVhdHVyZXMgKGNvbnRpbnVlZCk8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzUgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+TWFqb3IgZmVhdHVyZXMgKGNvbnRpbnVlZCk8L2xpPgogICA8dWw+CiAgICA8bGk+UmVzb3VyY2UgRnJhZ21lbnRzLiBQcm92aWRlIHN1cHBvcnQgZm9yIHNlZ3JlZ2F0aW9uIG9mIFVNTDIgcmVzb3VyY2VzCiAgICAgICAgaW50byAnZnJhZ21lbnRzJyAoZS5nLiAqLmZyYWdtZW50LnVtbDIpIHdpdGggcGFja2FnZXMgYXMgcm9vdCBlbGVtZW50cy48L2xpPgogICAgPGxpPkRlcml2ZWQgRmVhdHVyZXMuIE1ha2UgZGVyaXZlZCBmZWF0dXJlcyBjaGFuZ2VhYmxlICh3aGVyZSBhcHByb3ByaWF0ZSkKICAgICAgICBhbmQgaW1wcm92ZSBzdXBwb3J0IGZvciB1bmlvbnMsIHN1YnNldHMsIGFuZCBzdXBlcnNldHMgKHdoZXJlCiAgICAgICAgcG9zc2libGUpLjwvbGk+CiAgICA8bGk+VU1MIEVjb3JlIEltcG9ydGVyIC8gRXhwb3J0ZXIuIFByb3ZpZGUgYW4gZXhwb3J0ZXIgdGhhdCB0YWtlcyBhZHZhbnRhZ2UKICAgICAgICBvZiB0aGUgbmV3IGV4cG9ydGVyIGZyYW1ld29yayBpbiBFTUYgdG8gY29udmVydCBFY29yZSBtb2RlbHMgdG8gVU1MCiAgICAgICAgKCoudW1sKSBtb2RlbHMsIGluIGFkZGl0aW9uIHRvIGFuIGltcG9ydGVyIHRoYXQgY29udmVydHMgVU1MIG1vZGVscyB0bwogICAgICAgIEVjb3JlLjwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPjIuMCByZWxlYXNlIG5vdGVzIGF2YWlsYWJsZSBhdAogICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9tb2RlbGluZy9tZHQvbmV3cy9yZWxlYXNlLW5vdGVzLnBocD9wcm9qZWN0PXVtbDImYW1wOz0yLjAuMDwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjY8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNiBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTUwLmh0bScpOyIgaWQ9UFBUTDY+Tm9uLUNvZGUgQXNwZWN0czwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDNiBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5Eb2N1bWVudGF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL21vZGVsaW5nL21kdC9kb2NzLnBocD9wcm9qZWN0PXVtbDI8L2xpPgogICA8dWw+CiAgICA8bGk+RkFRPC9saT4KICAgIDxsaT5KYXZhZG9jIChmb3IgMS4wLCAxLjAuMSwgMS4wLjIsIDEuMC4zLCAxLjEsIDIuMCk8L2xpPgogICAgPGxpPlVNTDIgMi4wIFBsYW4gYW5kIE1pZ3JhdGlvbiBHdWlkZTwvbGk+CiAgICA8bGk+TGluayB0byBPTUeScyBVTUyZIFJlc291cmNlIFBhZ2U8L2xpPgogICAgPGxpPkxpbmsgdG8gVU1MMiBQcm9qZWN0IERhc2hib2FyZDwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPkxvY2FsaXphdGlvbi9leHRlcm5hbGl6YXRpb248L2xpPgogICA8dWw+CiAgICA8bGk+TkwgcGFja3MgZm9yIDEuIHggYXZhaWxhYmxlIGF0CiAgICAgICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9tb2RlbGluZy9tZHQvZG93bmxvYWRzLz9wcm9qZWN0PXVtbDIjdW1sMjwvbGk+CiAgICA8bGk+TkwgcGFja3MgZm9yIDIuMCB0byBiZSBtYWRlIGF2YWlsYWJsZTwvbGk+CiAgIDwvdWw+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjc8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNyBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTUxLmh0bScpOyIgaWQ9UFBUTDc+Tm9uLUNvZGUgQXNwZWN0cwogIChDb250aW51ZWQpPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEM3IGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPkV4YW1wbGVzIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIG9yZy5lY2xpcHNlLnVtbDIuZXhhbXBsZXMgZmVhdHVyZTwvbGk+CiAgIDx1bD4KICAgIDxsaT5BY3Rpb25zIHRvIGNvbnZlcnQgbW9kZWxzIHRvIG1ldGFtb2RlbHMsIG1vZGVsIGxpYnJhcmllczwvbGk+CiAgICA8bGk+QWN0aW9ucyB0byBnZW5lcmF0ZSBtZXRhbW9kZWxzLCBsaWJyYXJpZXMsIHByb2ZpbGVzPC9saT4KICAgIDxsaT5BY3Rpb25zIHRvIGV4dGVybmFsaXplIGxhYmVscywga2V5d29yZHM8L2xpPgogICAgPGxpPkFjdGlvbnMgdG8gY29udmVydCBiZXR3ZWVuIEVjb3JlIGFuZCBVTUwgZm9ybWF0czwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPkFydGljbGVzPC9saT4KICAgPHVsPgogICAgPGxpPkdldHRpbmcgU3RhcnRlZCB3aXRoIFVNTDIgKG5lZWRzIHRvIGJlIHVwZGF0ZWQpPC9saT4KICAgIDxsaT5JbnRyb2R1Y3Rpb24gdG8gVU1MMiBQcm9maWxlcyAobmVlZHMgdG8gYmUgdXBkYXRlZCk8L2xpPgogICAgPGxpPk90aGVycyAoVEJEKSCWIHNlZSBidWcgNzc0MTM8L2xpPgogICA8L3VsPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj44PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDggY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDE0MC5odG0nKTsiIGlkPVBQVEw4PkFQSXM8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzggY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VGhlIEFQSXMgaW4gdGhpcyByZWxlYXNlIGFyZSBFY2xpcHNlIFF1YWxpdHk8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkludGVybmFsIEFQSXMgbWFya2VkIGFzIHN1Y2g8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPk1vcmUgY29udmVuaWVuY2Ugb3BlcmF0aW9uczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+SW1wcm92ZWQgZmFjdG9yeSBtZXRob2RzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5OZXcgdXRpbGl0aWVzIGF2YWlsYWJsZTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjk8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQOSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTU2Lmh0bScpOyIgaWQ9UFBUTDk+VG9vbCBVc2FiaWxpdHk8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzkgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VGhlIHVzYWJpbGl0eSBvZiB0aGUgVU1MIGVkaXRvciBoYXMgYmVlbiBpbXByb3ZlZCBhcyBmb2xsb3dzOjwvbGk+CiAgIDx1bD4KICAgIDxsaT5uZXcgaWNvbnMgaW50cm9kdWNlZCB0byBhaWQgaW4gcmVjb2duaXRpb24gb2YgY29uY2VwdHM8L2xpPgogICAgPGxpPmxhYmVscyBlbmhhbmNlZCB0byBpbmNsdWRlIGtleXdvcmRzPC9saT4KICAgIDxsaT5zdXBwb3J0IGFkZGVkIGZvciBkaXNwbGF5IG9mIHN0ZXJlb3R5cGUgaWNvbnM8L2xpPgogICAgPGxpPmRpc3BsYXkgb2Ygc3RlcmVvdHlwZSBhcHBsaWNhdGlvbnMgcmVmYWN0b3JlZCB1bmRlciBiYXNlIGVsZW1lbnQ8L2xpPgogICAgPGxpPnByb3BlcnRpZXMgb3JnYW5pemVkIGludG8gY2F0ZWdvcmllcyBpbiBQcm9wZXJ0aWVzIHZpZXc8L2xpPgogICAgPGJyPgogICAgPGJyPgogICA8L3VsPgogICA8bGk+SW1wb3J0L2V4cG9ydCB3aXphcmRzIHdlcmUgYWRkZWQvdXBkYXRlZCB0byByb3VuZC10cmlwIG1vZGVscyBiZXR3ZWVuCiAgICAgICBFY29yZSBhbmQgVU1MPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTAgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDE0MS5odG0nKTsiIGlkPVBQVEwxMD5BcmNoaXRlY3R1cmFsIElzc3VlczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTAgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+SW1wcm92ZWQgYXJjaGl0ZWN0dXJhbCBxdWFsaXR5PC9saT4KICAgPHVsPgogICAgPGxpPkxlc3MgcmVkdW5kYW5jeTwvbGk+CiAgICA8bGk+U21hbGxlciwgY2xlYW5lciBtZXRhZGF0YTwvbGk+CiAgICA8bGk+TW9yZSBlZmZpY2llbnQgc3VwcG9ydCBmb3IgZGVyaXZlZCB1bmlvbnM8L2xpPgogICA8L3VsPgogICA8YnI+CiAgIDxsaT5HZW5lcmljIGZlYXR1cmVzIGNvbnRyaWJ1dGVkIHRvIEVNRjwvbGk+CiAgIDx1bD4KICAgIDxsaT5WaXJ0dWFsIGZlYXR1cmUgZGVsZWdhdGlvbjwvbGk+CiAgICA8bGk+UGFja2FnZSBsaXRlcmFsczwvbGk+CiAgICA8bGk+RmxhdEVPYmplY3RJbXBsPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTE8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTEgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDE0Mi5odG0nKTsiIGlkPVBQVEwxMT5FbmQtb2YtTGlmZTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTEgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VXNlciBmZWF0dXJlczwvbGk+CiAgIDx1bD4KICAgIDxsaT5VTUwyIGVkaXRvciAoKi51bWwyKSByZXBsYWNlZCB3aXRoIFVNTCBlZGl0b3IgKCoudW1sKTwvbGk+CiAgICA8bGk+RWNvcmUyWE1MIGV4YW1wbGUgcmV0aXJlZDwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPkFQSXM8L2xpPgogICA8dWw+CiAgICA8bGk+TGVnYWN5IDEueCBBUEkgKG9yZy5lY2xpcHNlLnVtbDIuKikgcmVwbGFjZWQgd2l0aCAyLjAgQVBJCiAgICAgICAgKG9yZy5lY2xpcHNlLnVtbDIudW1sLiopPC9saT4KICAgIDxsaT5GYWN0b3J5IG1ldGhvZHMgcmVwbGFjZWQgd2l0aCBvdmVybG9hZHMgb2ZmZXJpbmcgbW9yZSBvcHRpb25zPC9saT4KICAgIDxsaT5Tb21lIHByb2ZpbGUvc3RlcmVvdHlwZSBtZXRob2RzIHJlbmFtZWQ8L2xpPgogICAgPGxpPlN1YnNldC9zdXBlcnNldCBsaXN0cyBkZXByZWNhdGVkIChtZXJnZWQgaW50byBjb21iaW5lZCBpbXBsZW1lbnRhdGlvbnMpPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTI8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTIgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDE0My5odG0nKTsiIGlkPVBQVEwxMj5CdWd6aWxsYTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTIgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+MTU4IGJ1Z3Mgb3BlbmVkPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT4xNTEgYnVncyByZXNvbHZlZC9jbG9zZWQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPjYgYnVncyBkZWZlcnJlZDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+MTIgbmV3IGJ1Z3M8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPjEgUDEgYnVnIG91dHN0YW5kaW5nICg4NzI2MCkgliBwbGFuIHRvIHJlc29sdmUgYnkgR0E8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPjEgUDIgYnVnIG91dHN0YW5kaW5nICg3NzQxMykgliBwbGFuIHRvIHJlc29sdmUgYnkgR0E8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPjIgUDMgYnVncyBvdXRzdGFuZGluZyAoMTQzMzU3LCA4NTE3NykgliBwbGFuIHRvIHJlc29sdmUgYnkgR0E8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPjIgUDQgYnVncyBvdXRzdGFuZGluZyAoODAzMDgsIDgwMzE1KTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjEzPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDEzIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAxNDQuaHRtJyk7IiBpZD1QUFRMMTM+U3RhbmRhcmRzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxMyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT4yLjAgcmVsZWFzZSBiYXNlZCBvbiBjb252ZW5pZW5jZSBkb2N1bWVudCBwdGMtMDYtMDQtMDIgb2YgVU1MIDIuMQogICAgICAgc3BlY2lmaWNhdGlvbjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+T01HIHRvIGZpbmFsaXplIHNwZWNpZmljYXRpb24gc29vbjwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjE0PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDE0IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAxNTcuaHRtJyk7IiBpZD1QUFRMMTQ+VUkgVXNhYmlsaXR5PC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxNCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5VTUwyIHRvb2xzIHVzZSBFY2xpcHNlIHBsYXRmb3JtIEFQSXMgdG8gcHJvdmlkZSBhY2Nlc3NpYmxlIFVJPC9saT4KICAgPHVsPgogICAgPGxpPk5vIG91dHN0YW5kaW5nIGFjY2Vzc2liaWxpdHkgYnVnczwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPkFsbCB0ZXh0IGlzIGV4dGVybmFsaXplZCwgYW5kIGhhcyBiZWVuIHRyYW5zbGF0ZWQgaW50byAxNCBsYW5ndWFnZXMsCiAgICAgICBpbmNsdWRpbmcgQmlEaSBsYW5ndWFnZXM8L2xpPgogICA8dWw+CiAgICA8bGk+QnJhemlsaWFuIFBvcnR1Z3Vlc2UsIEZyZW5jaCwgR2VybWFuLCBTcGFuaXNoLCBJdGFsaWFuLCBKYXBhbmVzZSwKICAgICAgICBLb3JlYW4sIFNpbXBsaWZpZWQgQ2hpbmVzZSwgVHJhZGl0aW9uYWwgQ2hpbmVzZSwgUnVzc2lhbiwgSHVuZ2FyaWFuLAogICAgICAgIEN6ZWNoLCBQb2xpc2gsIEFyYWJpYzwvbGk+CiAgICA8bGk+VHJhbnNsYXRpb24gdmVyaWZpY2F0aW9uIHRlc3RpbmcgaW4gcHJvZ3Jlc3MsIHRvIGNvbXBsZXRlIG1pZC1KdW5lPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTU8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTUgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDE0NS5odG0nKTsiIGlkPVBQVEwxNT5TY2hlZHVsZTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTUgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+TTEgbWV0IG9uIE5vdmVtYmVyIDEwPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5NMiBzbGlwcGVkIGZyb20gRGVjZW1iZXIgMjIgdG8gSmFudWFyeSA1PC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5NMyBzbGlwcGVkIGZyb208c3BhbiBzdHlsZT0nbXNvLXNwYWNlcnVuOnllcyc+oCA8L3NwYW4+dG8gRmVicnVhcnkgMjMgdG8KICAgICAgIE1hcmNoIDI8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPk00IHNsaXBwZWQgZnJvbSBBcHJpbCA2IHRvIEFwcmlsIDEzPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTY8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTYgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDE0Ni5odG0nKTsiIGlkPVBQVEwxNj5Qcm9jZXNzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxNiBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5UaGlzIHJlbGVhc2UgaGFzIGJlZW4gZGV2ZWxvcGVkIHVzaW5nIG9wZW4sIHRyYW5zcGFyZW50LCBhbmQgaW5jbHVzaXZlCiAgICAgICBwcm9jZXNzZXM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlRoaXMgcmVsZWFzZSBoYXMgZm9sbG93ZWQgaXRzIGNoYXJ0ZXIgcHJpbmNpcGxlczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+VGhlIFVNTDIgcHJvamVjdCBtYWtlcyBhcHByb3ByaWF0ZSB1c2Ugb2YgQnVnemlsbGEsIG1haWxpbmcgbGlzdHMgKG1kdC11bWwyLmRldkBlY2xpcHNlLm9yZyksCiAgICAgICBuZXdzZ3JvdXBzIChlY2xpcHNlLnRvb2xzLnVtbDIpLCBhbmQgY29uZmVyZW5jZSBjYWxsczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+VGhlcmUgd2VyZSBubyBjb21taXR0ZXIgZWxlY3Rpb25zL3JlbW92YWxzIGR1cmluZyB0aGUgMi4wIHJlbGVhc2UgY3ljbGUsCiAgICAgICBhbHRob3VnaCBjb250cmlidXRpb25zIHdlcmUgbWFkZSBieSBhIG5ldyBjb250cmlidXRvcjwvbGk+CiAgIDxicj4KICAgPGJyPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xNzwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAxNyBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTQ3Lmh0bScpOyIgaWQ9UFBUTDE3PkNvbW11bml0aWVzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxNyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5JbmNyZWFzZWQgaW50ZXJhY3Rpb24gaW4gQnVnemlsbGEgYW5kIG9uIG5ld3Nncm91cDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+VU1MMiByZXByZXNlbnRlZCBhdCBFY2xpcHNlQ29uIDIwMDYgKHNob3J0IHRhbGssIGNvZGUgY2FtcCk8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkNvbnRpbnVlZCBjb29yZGluYXRpb24gd2l0aCBFTUYgdG9vbHMgcHJvamVjdDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+T3JpZW50YXRpb24gd2l0aCBuZXcgTW9kZWxpbmcgdG9wIGxldmVsIHByb2plY3Q8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlVNTDIgaXMgYW1vbmcgdGhlIG1vc3QgYWN0aXZlIHByb2plY3RzIGF0IEVjbGlwc2U8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xODwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAxOCBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTQ4Lmh0bScpOyIgaWQ9UFBUTDE4PklQIElzc3VlczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTggY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VGhlIFVNTDIgcHJvamVjdCBsZWFkZXJzaGlwIHZlcmlmaWVzIHRoYXQ6PC9saT4KICAgPHVsPgogICAgPGxpPnRoZSBhYm91dCBmaWxlcyBhbmQgdXNlIGxpY2Vuc2VzIGFyZSBpbiBwbGFjZSBhcyBwZXIgdGhlIEd1aWRlbGluZXMgdG8KICAgICAgICBMZWdhbCBEb2N1bWVudGF0aW9uPC9saT4KICAgIDxsaT5hbGwgY29udHJpYnV0aW9ucyAoY29kZSwgZG9jdW1lbnRhdGlvbiwgaW1hZ2VzLCBldGMpIGhhdmUgYmVlbgogICAgICAgIGNvbW1pdHRlZCBieSBpbmRpdmlkdWFscyB3aG8gYXJlIGVpdGhlciBNZW1iZXJzIG9mIHRoZSBGb3VuZGF0aW9uLCBvcgogICAgICAgIGhhdmUgc2lnbmVkIHRoZSBhcHByb3ByaWF0ZSBDb21taXR0ZXIgQWdyZWVtZW50OyBpbiBlaXRoZXIgY2FzZSwgdGhlc2UKICAgICAgICBhcmUgaW5kaXZpZHVhbHMgd2hvIGhhdmUgc2lnbmVkLCBhbmQgYXJlIGFiaWRpbmcgYnksIHRoZSBFY2xpcHNlIElQCiAgICAgICAgUG9saWN5PC9saT4KICAgIDxsaT5hbGwgc2lnbmlmaWNhbnQgY29udHJpYnV0aW9ucyBoYXZlIGJlZW4gcmV2aWV3ZWQgYnkgdGhlIEZvdW5kYXRpb24ncwogICAgICAgIGxlZ2FsIHN0YWZmPC9saT4KICAgIDxsaT50aGF0IGFsbCBub24tY29tbWl0dGVyIGNvZGUgY29udHJpYnV0aW9ucywgaW5jbHVkaW5nIHRoaXJkLXBhcnR5CiAgICAgICAgbGlicmFyaWVzLCBoYXZlIGJlZW4gZG9jdW1lbnRlZCBpbiB0aGUgcmVsZWFzZSBhbmQgcmV2aWV3ZWQgYnkgdGhlCiAgICAgICAgRm91bmRhdGlvbidzIGxlZ2FsIHN0YWZmPC9saT4KICAgIDxsaT5hbGwgY29udHJpYnV0aW9uIHF1ZXN0aW9ubmFpcmVzIGhhdmUgYmVlbiBjb21wbGV0ZWQ8L2xpPgogICAgPGxpPnRoZSAmcXVvdDtwcm92aWRlciZxdW90OyBmaWVsZCBvZiBlYWNoIHBsdWctaW4gaXMgc2V0IHRvCiAgICAgICAgJnF1b3Q7ZWNsaXBzZS5vcmeTPC9saT4KICAgIDxsaT50aGUgJnF1b3Q7Y29weXJpZ2h0JnF1b3Q7IGZpZWxkIG9mIGVhY2ggcGx1Zy1pbiBpcyBzZXQgdG8gdGhlIGNvcHlyaWdodAogICAgICAgIG93bmVyPC9saT4KICAgIDxsaT50aGF0IGFueSB0aGlyZC1wYXJ0eSBsb2dvcyBvciB0cmFkZW1hcmtzIGluY2x1ZGVkIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAoaWNvbnMsIGhlbHAgZmlsZSBsb2dvcywgZXRjKSBoYXZlIGJlZW4gbGljZW5zZWQgdW5kZXIgdGhlIEVQTDwvbGk+CiAgICA8bGk+dGhhdCBhbnkgZm9udHMgb3Igc2ltaWxhciB0aGlyZC1wYXJ0eSBpbWFnZXMgaW5jbHVkZWQgaW4gdGhlCiAgICAgICAgZGlzdHJpYnV0aW9uIChlLmcuIGluIFBERiBvciBFUFMgZmlsZXMpIGhhdmUgYmVlbiBsaWNlbnNlZCB1bmRlciB0aGUKICAgICAgICBFUEw8L2xpPgogICA8L3VsPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xOTwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAxOSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTQ5Lmh0bScpOyIgaWQ9UFBUTDE5PlByb2plY3QgUGxhbjwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTkgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+RHJhZnQgMi4xIHBsYW4gbm90IHlldCBhdmFpbGFibGU8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4yMDwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAyMCBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMTU5Lmh0bScpOyIgaWQ9UFBUTDIwPlJlbGVhc2UgUmV2aWV3IFZlcnNpb248L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzIwIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPlRoaXMgcHJlc2VudGF0aW9uIGlzIGJhc2VkIG9uIFJlbGVhc2UgUmV2aWV3IHZlcnNpb24gMDMyLCBkYXRlZCBKYW51YXJ5CiAgICAgICAxNSwgMjAwNjwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjIxPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDIxIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAxMTUuaHRtJyk7IiBpZD1QUFRMMjE+VGhhbmsgeW91ITwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMjEgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+USZhbXA7QTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CjwvdGFibGU+CgoKCjwvZGl2PgoKPGRpdiBzdHlsZT0nZGlzcGxheTpub25lJz48YSBocmVmPW1hc3RlcjA0Lmh0bT48L2E+PGEgaHJlZj1tYXN0ZXIwNC54bWw+PC9hPjxhCmhyZWY9cHJldmlldy53bWY+PC9hPjxhIGhyZWY9Im1hc3RlcjA0X2ltYWdlMDAxLmpwZyI+PC9hPjxhCmhyZWY9Im1hc3RlcjA0X2ltYWdlMDAyLmpwZyI+PC9hPjxhIGhyZWY9bWFzdGVyMDUuaHRtPjwvYT48YSBocmVmPW1hc3RlcjA1LnhtbD48L2E+PGEKaHJlZj0ibWFzdGVyMDVfaW1hZ2UwMDMuanBnIj48L2E+PGEgaHJlZj0ibWFzdGVyMDVfaW1hZ2UwMDQuanBnIj48L2E+PGEKaHJlZj1wcmVzLnhtbD48L2E+PGEgaHJlZj1zbGlkZTAxMzkuaHRtPjwvYT48YSBocmVmPSJtYXN0ZXIwNV9pbWFnZTAwNS5qcGciPjwvYT48YQpocmVmPSJtYXN0ZXIwNV9pbWFnZTAwNi5qcGciPjwvYT48YSBocmVmPXNsaWRlMDEzNC5odG0+PC9hPjxhCmhyZWY9Im1hc3RlcjA0X2ltYWdlMDA3LmpwZyI+PC9hPjxhIGhyZWY9Im1hc3RlcjA0X2ltYWdlMDA4LmpwZyI+PC9hPjxhCmhyZWY9c2xpZGUwMTUzLmh0bT48L2E+PGEgaHJlZj1zbGlkZTAxNTIuaHRtPjwvYT48YSBocmVmPXNsaWRlMDE1OC5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMTUwLmh0bT48L2E+PGEgaHJlZj1zbGlkZTAxNTEuaHRtPjwvYT48YSBocmVmPXNsaWRlMDE0MC5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMTU2Lmh0bT48L2E+PGEgaHJlZj1zbGlkZTAxNDEuaHRtPjwvYT48YSBocmVmPXNsaWRlMDE0Mi5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMTQzLmh0bT48L2E+PGEgaHJlZj1zbGlkZTAxNDQuaHRtPjwvYT48YSBocmVmPXNsaWRlMDE1Ny5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMTQ1Lmh0bT48L2E+PGEgaHJlZj1zbGlkZTAxNDYuaHRtPjwvYT48YSBocmVmPXNsaWRlMDE0Ny5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMTQ4Lmh0bT48L2E+PGEgaHJlZj1zbGlkZTAxNDkuaHRtPjwvYT48YSBocmVmPXNsaWRlMDE1OS5odG0+PC9hPjxhCmhyZWY9c2xpZGUwMTE1Lmh0bT48L2E+PGEgaHJlZj1tYXN0ZXIwMS5odG0+PC9hPjxhCmhyZWY9Im1hc3RlcjA0X3N0eWxlc2hlZXQuY3NzIj48L2E+PGEgaHJlZj1zY3JpcHQuanM+PC9hPjxhCmhyZWY9Ii4uL1VNTDJfMi4wX1JlbGVhc2VfUmV2aWV3Lmh0bSI+PC9hPjxhIGhyZWY9ZnVsbHNjcmVlbi5odG0+PC9hPjxhCmhyZWY9Im5vdGVzX2ZsYWcuZ2lmIj48L2E+PGEgaHJlZj1idXR0b25zLmdpZj48L2E+PGEgaHJlZj1mcmFtZS5odG0+PC9hPjxhCmhyZWY9b3V0bGluZS5odG0+PC9hPjwvZGl2PgoKPC9ib2R5PgoKPC9odG1sPgo=