{"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+UXVidEFJIOKAlCBEaXNjb3ZlciB0aGUgUmlnaHQgQUkgVG9vbCBmb3IgWW91ciBXb3JrPC90aXRsZT4KPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlF1YnRBSSBpbmRleGVzIDMsMDAwKyBBSSB0b29scy4gVXNlIG91ciBmcmVlIGZpbmRlciB0byBtYXRjaCB0aGUgcmlnaHQgQUkgdG8geW91ciBleGFjdCB1c2UgY2FzZSBpbiB1bmRlciA2MCBzZWNvbmRzLiI+CjxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3F1YnRhaS5jb20iPgo8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IlF1YnRBSSDigJQgRmluZCBZb3VyIEFJIFN0YWNrIj4KPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJNYXRjaCAzLDAwMCsgQUkgdG9vbHMgdG8geW91ciBleGFjdCB1c2UgY2FzZS4gRnJlZSwgaW5zdGFudCwgbm8gc2lnbnVwLiI+CjxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly92M2IuZmFsLm1lZGlhL2ZpbGVzL2IvMGFhZjRiMzYvOXcxdllHYlZqNG1mMVdJa2tqR2hRXzQxYzE1YWFhZWU1MjRiMjA5YTQzYWRjM2NmZmFmZDdhLmpwZyI+CjwhLS0gR0E0IC0tPgo8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLVhDSldKWDhCNzYiPjwvc2NyaXB0Pgo8c2NyaXB0PndpbmRvdy5kYXRhTGF5ZXI9d2luZG93LmRhdGFMYXllcnx8W107ZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fWd0YWcoJ2pzJyxuZXcgRGF0ZSgpKTtndGFnKCdjb25maWcnLCdHLVhDSldKWDhCNzYnKTs8L3NjcmlwdD4KPHN0eWxlPgo6cm9vdCB7CiAgLS1jLWJnOiAjMDUwNzBmOwogIC0tYy1zdXJmYWNlOiByZ2JhKDE1LDIwLDQwLDAuNzUpOwogIC0tYy1ib3JkZXI6IHJnYmEoMTAwLDEyMCwyNTUsMC4xOCk7CiAgLS1jLWFjY2VudDogIzViNmVmNTsKICAtLWMtYWNjZW50MjogI2EyNTlmZjsKICAtLWMtdGV4dDogI2U0ZThmZjsKICAtLWMtbXV0ZWQ6ICM4MDkwYjg7CiAgLS1jLWhlcm8tb3ZlcmxheTogbGluZWFyLWdyYWRpZW50KDE4MGRlZyxyZ2JhKDUsNywxNSwwLjU1KSAwJSxyZ2JhKDUsNywxNSwwLjgyKSAxMDAlKTsKICAtLXJhZGl1czogMTRweDsKICAtLWZvbnQtc2VyaWY6IEdlb3JnaWEsICdUaW1lcyBOZXcgUm9tYW4nLCBzZXJpZjsKICAtLWZvbnQtc2FuczogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7Cn0KKiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH0KaHRtbHtzY3JvbGwtYmVoYXZpb3I6c21vb3RofQpib2R5e2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy10ZXh0KTtmb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpO2xpbmUtaGVpZ2h0OjEuNjttaW4taGVpZ2h0OjEwMHZofQovKiBOQVYgKi8KbmF2e3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwO3BhZGRpbmc6MCA1dnc7aGVpZ2h0OjYwcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtiYWNrZ3JvdW5kOnJnYmEoNSw3LDE1LDAuODUpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDE0cHgpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKX0KLm5hdi1sb2dve2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc2VyaWYpO2ZvbnQtc2l6ZToxLjM1cmVtO2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYy1hY2NlbnQpLHZhcigtLWMtYWNjZW50MikpOy13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jbGlwOnRleHQ7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbX0KLm5hdi1saW5rc3tkaXNwbGF5OmZsZXg7Z2FwOjEuOHJlbX0KLm5hdi1saW5rcyBhe2NvbG9yOnZhcigtLWMtbXV0ZWQpO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZTowLjg3NXJlbTt0cmFuc2l0aW9uOmNvbG9yIDAuMnN9Ci5uYXYtbGlua3MgYTpob3Zlcntjb2xvcjp2YXIoLS1jLXRleHQpfQovKiBIRVJPICovCi5oZXJve2hlaWdodDoxMDB2aDttaW4taGVpZ2h0OjU2MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW59Ci5oZXJvLWltZ3twb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2JhY2tncm91bmQ6dXJsKCdodHRwczovL3YzYi5mYWwubWVkaWEvZmlsZXMvYi8wYWFmNGIzNi85dzF2WUdiVmo0bWYxV0lra2pHaFFfNDFjMTVhYWFlZTUyNGIyMDlhNDNhZGMzY2ZmYWZkN2EuanBnJykgY2VudGVyL2NvdmVyIG5vLXJlcGVhdDtmaWx0ZXI6YnJpZ2h0bmVzcygwLjkyKX0KLmhlcm8tb3ZlcmxheXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2JhY2tncm91bmQ6dmFyKC0tYy1oZXJvLW92ZXJsYXkpfQouaGVyby1jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MjttYXgtd2lkdGg6NzgwcHg7cGFkZGluZzowIDJyZW19Ci5oZXJvLWV5ZWJyb3d7Zm9udC1zaXplOjAuNzhyZW07bGV0dGVyLXNwYWNpbmc6MC4xNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjp2YXIoLS1jLWFjY2VudCk7bWFyZ2luLWJvdHRvbToxLjFyZW07Zm9udC13ZWlnaHQ6NjAwfQouaGVybyBoMXtmb250LWZhbWlseTp2YXIoLS1mb250LXNlcmlmKTtmb250LXNpemU6Y2xhbXAoMi4ycmVtLDV2dywzLjhyZW0pO2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxLjE4O21hcmdpbi1ib3R0b206MS4ycmVtO2xldHRlci1zcGFjaW5nOi0wLjAyZW19Ci5oZXJvIGgxIHNwYW57YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWMtYWNjZW50KSx2YXIoLS1jLWFjY2VudDIpKTstd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY2xpcDp0ZXh0fQouaGVyby1zdWJ7Zm9udC1zaXplOjEuMXJlbTtjb2xvcjp2YXIoLS1jLW11dGVkKTttYXgtd2lkdGg6NTIwcHg7bWFyZ2luOjAgYXV0byAycmVtfQouYnRue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MC44cmVtIDJyZW07Ym9yZGVyLXJhZGl1czo4cHg7Zm9udC1zaXplOjAuOTVyZW07Zm9udC13ZWlnaHQ6NjAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO2JvcmRlcjpub25lO3RyYW5zaXRpb246YWxsIDAuMnN9Ci5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYy1hY2NlbnQpLHZhcigtLWMtYWNjZW50MikpO2NvbG9yOiNmZmZ9Ci5idG4tcHJpbWFyeTpob3ZlcntvcGFjaXR5OjAuODg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9Ci5idG4tZ2hvc3R7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLXRleHQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1ib3JkZXIpO21hcmdpbi1sZWZ0OjFyZW19Ci5idG4tZ2hvc3Q6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLWJvcmRlcil9Ci8qIFNFQ1RJT04gKi8Kc2VjdGlvbntwYWRkaW5nOjVyZW0gNXZ3fQouc2VjdGlvbi1sYWJlbHtmb250LXNpemU6MC43NXJlbTtsZXR0ZXItc3BhY2luZzowLjEyZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLWMtYWNjZW50KTttYXJnaW4tYm90dG9tOjAuOHJlbTtmb250LXdlaWdodDo2MDB9Ci5zZWN0aW9uLXRpdGxle2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc2VyaWYpO2ZvbnQtc2l6ZTpjbGFtcCgxLjdyZW0sMy41dncsMi42cmVtKTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxcmVtO2xldHRlci1zcGFjaW5nOi0wLjAyZW19Ci5zZWN0aW9uLXN1Yntjb2xvcjp2YXIoLS1jLW11dGVkKTttYXgtd2lkdGg6NTgwcHg7Zm9udC1zaXplOjFyZW19Ci8qIFRPT0wgKi8KI3Rvb2x7YmFja2dyb3VuZDp2YXIoLS1jLXN1cmZhY2UpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKTtiYWNrZHJvcC1maWx0ZXI6Ymx1cigyMHB4KTtwYWRkaW5nOjNyZW07bWF4LXdpZHRoOjgwMHB4O21hcmdpbjo1cmVtIGF1dG87cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufQojdG9vbDo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6LTFweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYmEoOTEsMTEwLDI0NSwwLjMpLHJnYmEoMTYyLDg5LDI1NSwwLjMpKTt6LWluZGV4Oi0xO2ZpbHRlcjpibHVyKDIwcHgpfQoudG9vbC10aXRsZXtmb250LWZhbWlseTp2YXIoLS1mb250LXNlcmlmKTtmb250LXNpemU6MS44cmVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjAuNXJlbX0KLnRvb2wtc3Vie2NvbG9yOnZhcigtLWMtbXV0ZWQpO21hcmdpbi1ib3R0b206MnJlbTtmb250LXNpemU6MC45NXJlbX0KLnRvb2wtZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjFyZW07bWFyZ2luLWJvdHRvbToxLjVyZW19CkBtZWRpYShtYXgtd2lkdGg6NjAwcHgpey50b29sLWdyaWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn19Ci50b29sLWxhYmVse2ZvbnQtc2l6ZTowLjhyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLWMtbXV0ZWQpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzowLjA4ZW07bWFyZ2luLWJvdHRvbTowLjRyZW07ZGlzcGxheTpibG9ja30Kc2VsZWN0LGlucHV0W3R5cGU9dGV4dF17d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoNSw3LDE1LDAuNik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7Y29sb3I6dmFyKC0tYy10ZXh0KTtwYWRkaW5nOjAuNzVyZW0gMXJlbTtmb250LXNpemU6MC45cmVtO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc2Fucyk7YXBwZWFyYW5jZTpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO291dGxpbmU6bm9uZTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAwLjJzfQpzZWxlY3Q6Zm9jdXMsaW5wdXRbdHlwZT10ZXh0XTpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tYy1hY2NlbnQpfQpvcHRpb257YmFja2dyb3VuZDojMGYxNDI4fQojdG9vbC1yZXN1bHR7ZGlzcGxheTpub25lO21hcmdpbi10b3A6MS41cmVtO3BhZGRpbmc6MS41cmVtO2JvcmRlci1yYWRpdXM6MTBweDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoOTEsMTEwLDI0NSwwLjMpO2JhY2tncm91bmQ6cmdiYSg5MSwxMTAsMjQ1LDAuMDgpfQojdG9vbC1yZXN1bHQgaDN7Zm9udC1zaXplOjEuMDVyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MC44cmVtO2NvbG9yOnZhcigtLWMtYWNjZW50KX0KLnRvb2wtcmVje2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDowLjc1cmVtO3BhZGRpbmc6MC43NXJlbTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4wNCk7bWFyZ2luLWJvdHRvbTowLjZyZW19Ci50b29sLXJlYy1uYW1le2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MC45cmVtfQoudG9vbC1yZWMtZGVzY3tmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1jLW11dGVkKX0KLnRvb2wtaWNvbnt3aWR0aDozNnB4O2hlaWdodDozNnB4O2JvcmRlci1yYWRpdXM6OHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXNocmluazowfQovKiBDQVJEUyAqLwouZ3JpZC0ze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZml0LG1pbm1heCgyODBweCwxZnIpKTtnYXA6MS41cmVtO21hcmdpbi10b3A6Mi41cmVtfQouY2FyZHtiYWNrZ3JvdW5kOnZhcigtLWMtc3VyZmFjZSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWJvcmRlcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMpO3BhZGRpbmc6MnJlbTtiYWNrZHJvcC1maWx0ZXI6Ymx1cigxNHB4KTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAwLjJzfQouY2FyZDpob3Zlcntib3JkZXItY29sb3I6cmdiYSg5MSwxMTAsMjQ1LDAuNCl9Ci5jYXJkLWljb257d2lkdGg6NDRweDtoZWlnaHQ6NDRweDttYXJnaW4tYm90dG9tOjEuMnJlbX0KLmNhcmQgaDN7Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1zZXJpZik7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTowLjZyZW19Ci5jYXJkIHB7Y29sb3I6dmFyKC0tYy1tdXRlZCk7Zm9udC1zaXplOjAuODhyZW07bGluZS1oZWlnaHQ6MS42fQovKiBORVdTTEVUVEVSICovCiNuZXdzbGV0dGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyxyZ2JhKDkxLDExMCwyNDUsMC4xMikscmdiYSgxNjIsODksMjU1LDAuMTIpKTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoOTEsMTEwLDI0NSwwLjI1KTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyk7cGFkZGluZzozLjVyZW07dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjcwMHB4O21hcmdpbjo1cmVtIGF1dG99CiNuZXdzbGV0dGVyIGgye2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc2VyaWYpO2ZvbnQtc2l6ZToycmVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjAuOHJlbX0KI25ld3NsZXR0ZXIgcHtjb2xvcjp2YXIoLS1jLW11dGVkKTttYXJnaW4tYm90dG9tOjJyZW19Ci5ubC1mb3Jte2Rpc3BsYXk6ZmxleDtnYXA6MC43NXJlbTttYXgtd2lkdGg6NDQwcHg7bWFyZ2luOjAgYXV0b30KQG1lZGlhKG1heC13aWR0aDo1NDBweCl7Lm5sLWZvcm17ZmxleC1kaXJlY3Rpb246Y29sdW1ufX0KLm5sLWZvcm0gaW5wdXR7ZmxleDoxO2JhY2tncm91bmQ6cmdiYSg1LDcsMTUsMC43KTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtjb2xvcjp2YXIoLS1jLXRleHQpO3BhZGRpbmc6MC43NXJlbSAxcmVtO2ZvbnQtc2l6ZTowLjlyZW07b3V0bGluZTpub25lfQoubmwtZm9ybSBpbnB1dDpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tYy1hY2NlbnQpfQoubmwtbXNne21hcmdpbi10b3A6MXJlbTtmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1jLWFjY2VudCk7bWluLWhlaWdodDoxLjJlbX0KLyogU1RBVFMgKi8KLnN0YXRze2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo0cmVtO2ZsZXgtd3JhcDp3cmFwO3BhZGRpbmc6M3JlbSA1dnc7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1ib3JkZXIpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKX0KLnN0YXQtbntmb250LWZhbWlseTp2YXIoLS1mb250LXNlcmlmKTtmb250LXNpemU6Mi40cmVtO2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYy1hY2NlbnQpLHZhcigtLWMtYWNjZW50MikpOy13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jbGlwOnRleHR9Ci5zdGF0LWx7Zm9udC1zaXplOjAuODJyZW07Y29sb3I6dmFyKC0tYy1tdXRlZCk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjAuMDhlbX0KLyogRk9PVEVSICovCmZvb3RlcntwYWRkaW5nOjIuNXJlbSA1dnc7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1ib3JkZXIpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7Z2FwOjFyZW19CmZvb3RlciBwe2NvbG9yOnZhcigtLWMtbXV0ZWQpO2ZvbnQtc2l6ZTowLjgycmVtfQouZm9vdGVyLWxpbmtze2Rpc3BsYXk6ZmxleDtnYXA6MS41cmVtfQouZm9vdGVyLWxpbmtzIGF7Y29sb3I6dmFyKC0tYy1tdXRlZCk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1zaXplOjAuODJyZW07dHJhbnNpdGlvbjpjb2xvciAwLjJzfQouZm9vdGVyLWxpbmtzIGE6aG92ZXJ7Y29sb3I6dmFyKC0tYy10ZXh0KX0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCjxuYXY+CiAgPGRpdiBjbGFzcz0ibmF2LWxvZ28iPlF1YnRBSTwvZGl2PgogIDxkaXYgY2xhc3M9Im5hdi1saW5rcyI+CiAgICA8YSBocmVmPSIjdG9vbCI+VG9vbCBGaW5kZXI8L2E+CiAgICA8YSBocmVmPSIjY2F0ZWdvcmllcyI+Q2F0ZWdvcmllczwvYT4KICAgIDxhIGhyZWY9IiNuZXdzbGV0dGVyIj5OZXdzbGV0dGVyPC9hPgogIDwvZGl2Pgo8L25hdj4KCjwhLS0gSEVSTyAtLT4KPHNlY3Rpb24gY2xhc3M9Imhlcm8iIGlkPSJ0b3AiPgogIDxkaXYgY2xhc3M9Imhlcm8taW1nIj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJoZXJvLW92ZXJsYXkiPjwvZGl2PgogIDxkaXYgY2xhc3M9Imhlcm8tY29udGVudCI+CiAgICA8cCBjbGFzcz0iaGVyby1leWVicm93Ij4zLDAwMCsgQUkgVG9vbHMgSW5kZXhlZDwvcD4KICAgIDxoMT5GaW5kIHRoZSA8c3Bhbj5leGFjdCBBSSB0b29sPC9zcGFuPiBmb3IgeW91ciB3b3JrPC9oMT4KICAgIDxwIGNsYXNzPSJoZXJvLXN1YiI+U3RvcCBndWVzc2luZy4gT3VyIGZyZWUgbWF0Y2hlciBzdXJmYWNlcyB0aGUgcmlnaHQgdG9vbCBpbiA2MCBzZWNvbmRzIOKAlCBieSB1c2UgY2FzZSwgYnVkZ2V0LCBhbmQgdGVhbSBzaXplLjwvcD4KICAgIDxhIGhyZWY9IiN0b29sIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Vc2UgdGhlIEZyZWUgRmluZGVyPC9hPgogICAgPGEgaHJlZj0iI2NhdGVnb3JpZXMiIGNsYXNzPSJidG4gYnRuLWdob3N0Ij5Ccm93c2UgQ2F0ZWdvcmllczwvYT4KICA8L2Rpdj4KPC9zZWN0aW9uPgoKPCEtLSBTVEFUUyAtLT4KPGRpdiBjbGFzcz0ic3RhdHMiPgogIDxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48ZGl2IGNsYXNzPSJzdGF0LW4iPjMsMjAwKzwvZGl2PjxkaXYgY2xhc3M9InN0YXQtbCI+VG9vbHMgSW5kZXhlZDwvZGl2PjwvZGl2PgogIDxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48ZGl2IGNsYXNzPSJzdGF0LW4iPjQ3PC9kaXY+PGRpdiBjbGFzcz0ic3RhdC1sIj5DYXRlZ29yaWVzPC9kaXY+PC9kaXY+CiAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxkaXYgY2xhc3M9InN0YXQtbiI+V2Vla2x5PC9kaXY+PGRpdiBjbGFzcz0ic3RhdC1sIj5VcGRhdGVzPC9kaXY+PC9kaXY+CiAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxkaXYgY2xhc3M9InN0YXQtbiI+RnJlZTwvZGl2PjxkaXYgY2xhc3M9InN0YXQtbCI+QWx3YXlzPC9kaXY+PC9kaXY+CjwvZGl2PgoKPCEtLSBUT09MIEZJTkRFUiAtLT4KPGRpdiBpZD0idG9vbCI+CiAgPGRpdiBjbGFzcz0idG9vbC10aXRsZSI+QUkgVG9vbCBGaW5kZXI8L2Rpdj4KICA8cCBjbGFzcz0idG9vbC1zdWIiPkFuc3dlciAzIHF1ZXN0aW9ucy4gR2V0IDMgbWF0Y2hlZCByZWNvbW1lbmRhdGlvbnMg4oCUIG5vIGVtYWlsIHJlcXVpcmVkLjwvcD4KICA8ZGl2IGNsYXNzPSJ0b29sLWdyaWQiPgogICAgPGRpdj4KICAgICAgPGxhYmVsIGNsYXNzPSJ0b29sLWxhYmVsIiBmb3I9InVzZS1jYXNlIj5XaGF0IGRvIHlvdSBuZWVkIHRvIGRvPzwvbGFiZWw+CiAgICAgIDxzZWxlY3QgaWQ9InVzZS1jYXNlIj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCBhIHVzZSBjYXNlPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0id3JpdGluZyI+V3JpdGluZyAmYW1wOyBDb250ZW50PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY29kZSI+Q29kaW5nICZhbXA7IERldmVsb3BtZW50PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW1hZ2UiPkltYWdlICZhbXA7IERlc2lnbjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImRhdGEiPkRhdGEgJmFtcDsgQW5hbHlzaXM8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJ2aWRlbyI+VmlkZW8gJmFtcDsgTWVkaWE8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJ2b2ljZSI+Vm9pY2UgJmFtcDsgQXVkaW88L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJyZXNlYXJjaCI+UmVzZWFyY2ggJmFtcDsgU3VtbWFyaXphdGlvbjwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImNoYXQiPkN1c3RvbWVyIENoYXQgJmFtcDsgU3VwcG9ydDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImF1dG9tYXRpb24iPldvcmtmbG93IEF1dG9tYXRpb248L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJmaW5hbmNlIj5GaW5hbmNlICZhbXA7IEFjY291bnRpbmc8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+CiAgICA8L2Rpdj4KICAgIDxkaXY+CiAgICAgIDxsYWJlbCBjbGFzcz0idG9vbC1sYWJlbCIgZm9yPSJidWRnZXQiPk1vbnRobHkgYnVkZ2V0PzwvbGFiZWw+CiAgICAgIDxzZWxlY3QgaWQ9ImJ1ZGdldCI+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgYnVkZ2V0PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZnJlZSI+RnJlZSBvbmx5PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibG93Ij5VbmRlciAkMjAvbW88L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJtaWQiPiQyMOKAkyQxMDAvbW88L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJoaWdoIj4kMTAwKy9tbzwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImVudGVycHJpc2UiPkVudGVycHJpc2UgKGN1c3RvbSk8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEuNXJlbSI+CiAgICA8bGFiZWwgY2xhc3M9InRvb2wtbGFiZWwiIGZvcj0idGVhbS1zaXplIj5UZWFtIHNpemU/PC9sYWJlbD4KICAgIDxzZWxlY3QgaWQ9InRlYW0tc2l6ZSIgc3R5bGU9Im1heC13aWR0aDoyODBweCI+CiAgICAgIDxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IHNpemU8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0ic29sbyI+U29sbzwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJzbWFsbCI+U21hbGwgKDLigJMxMCk8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0ibWlkIj5NaWQgKDEx4oCTMTAwKTwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJsYXJnZSI+TGFyZ2UgKDEwMCspPC9vcHRpb24+CiAgICA8L3NlbGVjdD4KICA8L2Rpdj4KICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIG9uY2xpY2s9ImZpbmRUb29scygpIj5GaW5kIE15IEFJIFRvb2xzPC9idXR0b24+CiAgPGRpdiBpZD0idG9vbC1yZXN1bHQiPgogICAgPGgzPlRvcCBNYXRjaGVzIGZvciBZb3VyIFVzZSBDYXNlPC9oMz4KICAgIDxkaXYgaWQ9InRvb2wtcmVjcyI+PC9kaXY+CiAgICA8cCBzdHlsZT0iZm9udC1zaXplOjAuOHJlbTtjb2xvcjp2YXIoLS1jLW11dGVkKTttYXJnaW4tdG9wOjFyZW0iPlVwZGF0ZWQgd2Vla2x5LiBSZXN1bHRzIGFyZSBjdXJhdGVkLCBub3QgcGFpZCBwbGFjZW1lbnRzLjwvcD4KICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIENBVEVHT1JJRVMgLS0+CjxzZWN0aW9uIGlkPSJjYXRlZ29yaWVzIj4KICA8cCBjbGFzcz0ic2VjdGlvbi1sYWJlbCI+RXhwbG9yZTwvcD4KICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkV2ZXJ5IEFJIGNhdGVnb3J5LCBpbmRleGVkPC9oMj4KICA8cCBjbGFzcz0ic2VjdGlvbi1zdWIiPkZyb20gbGVhbiBzb2xvIG9wZXJhdG9ycyB0byBlbnRlcnByaXNlIGRlcGxveW1lbnRzIOKAlCBvcmdhbml6ZWQgYnkgd2hhdCB5b3UgYWN0dWFsbHkgbmVlZCB0byBkby48L3A+CiAgPGRpdiBjbGFzcz0iZ3JpZC0zIj4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8c3ZnIGNsYXNzPSJjYXJkLWljb24iIHZpZXdCb3g9IjAgMCA0NCA0NCIgZmlsbD0ibm9uZSI+CiAgICAgICAgPHJlY3Qgd2lkdGg9IjQ0IiBoZWlnaHQ9IjQ0IiByeD0iMTAiIGZpbGw9InJnYmEoOTEsMTEwLDI0NSwwLjE1KSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xNCAxNmgxNk0xNCAyMmgxME0xNCAyOGgxMyIgc3Ryb2tlPSIjNWI2ZWY1IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgogICAgICA8L3N2Zz4KICAgICAgPGgzPldyaXRpbmcgJmFtcDsgQ29udGVudDwvaDM+CiAgICAgIDxwPkRyYWZ0aW5nLCBlZGl0aW5nLCBTRU8gY29weSwgc29jaWFsIG1lZGlhLCBlbWFpbCBzZXF1ZW5jZXMsIGFuZCBsb25nLWZvcm0gZ2VuZXJhdGlvbi48L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8c3ZnIGNsYXNzPSJjYXJkLWljb24iIHZpZXdCb3g9IjAgMCA0NCA0NCIgZmlsbD0ibm9uZSI+CiAgICAgICAgPHJlY3Qgd2lkdGg9IjQ0IiBoZWlnaHQ9IjQ0IiByeD0iMTAiIGZpbGw9InJnYmEoMTYyLDg5LDI1NSwwLjE1KSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xNiAyOGw0LTggNCA0IDMtNSAzIDkiIHN0cm9rZT0iI2EyNTlmZiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KICAgICAgPC9zdmc+CiAgICAgIDxoMz5EYXRhICZhbXA7IEFuYWx5c2lzPC9oMz4KICAgICAgPHA+U3ByZWFkc2hlZXQgYXV0b21hdGlvbiwgaW5zaWdodCBleHRyYWN0aW9uLCBjaGFydCBnZW5lcmF0aW9uLCBhbmQgcHJlZGljdGl2ZSBtb2RlbGluZy48L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8c3ZnIGNsYXNzPSJjYXJkLWljb24iIHZpZXdCb3g9IjAgMCA0NCA0NCIgZmlsbD0ibm9uZSI+CiAgICAgICAgPHJlY3Qgd2lkdGg9IjQ0IiBoZWlnaHQ9IjQ0IiByeD0iMTAiIGZpbGw9InJnYmEoOTEsMTEwLDI0NSwwLjEyKSIvPgogICAgICAgIDxyZWN0IHg9IjEzIiB5PSIxMyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiByeD0iNCIgc3Ryb2tlPSIjNWI2ZWY1IiBzdHJva2Utd2lkdGg9IjIiLz4KICAgICAgICA8Y2lyY2xlIGN4PSIyMiIgY3k9IjIyIiByPSIzIiBmaWxsPSIjNWI2ZWY1Ii8+CiAgICAgIDwvc3ZnPgogICAgICA8aDM+SW1hZ2UgJmFtcDsgRGVzaWduPC9oMz4KICAgICAgPHA+SGVybyBpbWFnZXMsIGxvZ29zLCBVSSBtb2NrdXBzLCBwcm9kdWN0IHBob3RvZ3JhcGh5LCBhbmQgdmVjdG9yIGdlbmVyYXRpb24uPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgPHN2ZyBjbGFzcz0iY2FyZC1pY29uIiB2aWV3Qm94PSIwIDAgNDQgNDQiIGZpbGw9Im5vbmUiPgogICAgICAgIDxyZWN0IHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgcng9IjEwIiBmaWxsPSJyZ2JhKDE2Miw4OSwyNTUsMC4xMikiLz4KICAgICAgICA8cGF0aCBkPSJNMTQgMzBWMjBsOC02IDggNnYxMCIgc3Ryb2tlPSIjYTI1OWZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgogICAgICAgIDxyZWN0IHg9IjE5IiB5PSIyNCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgcng9IjEiIHN0cm9rZT0iI2EyNTlmZiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICAgIDwvc3ZnPgogICAgICA8aDM+Q29kaW5nICZhbXA7IERldjwvaDM+CiAgICAgIDxwPkF1dG9jb21wbGV0ZSwgZGVidWdnaW5nLCB0ZXN0IGdlbmVyYXRpb24sIGNvZGUgcmV2aWV3LCBhbmQgZnVsbC1hcHAgc2NhZmZvbGRpbmcuPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgPHN2ZyBjbGFzcz0iY2FyZC1pY29uIiB2aWV3Qm94PSIwIDAgNDQgNDQiIGZpbGw9Im5vbmUiPgogICAgICAgIDxyZWN0IHdpZHRoPSI0NCIgaGVpZ2h0PSI0NCIgcng9IjEwIiBmaWxsPSJyZ2JhKDkxLDExMCwyNDUsMC4xMikiLz4KICAgICAgICA8Y2lyY2xlIGN4PSIyMiIgY3k9IjE4IiByPSI1IiBzdHJva2U9IiM1YjZlZjUiIHN0cm9rZS13aWR0aD0iMiIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMiAzNGMwLTUuNSA0LjUtMTAgMTAtMTBzMTAgNC41IDEwIDEwIiBzdHJva2U9IiM1YjZlZjUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CiAgICAgIDwvc3ZnPgogICAgICA8aDM+Q2hhdCAmYW1wOyBTdXBwb3J0PC9oMz4KICAgICAgPHA+Q3VzdG9tZXIgY2hhdGJvdHMsIGhlbHBkZXNrIGF1dG9tYXRpb24sIGxlYWQgcXVhbGlmaWNhdGlvbiwgYW5kIHZvaWNlIGFnZW50cy48L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8c3ZnIGNsYXNzPSJjYXJkLWljb24iIHZpZXdCb3g9IjAgMCA0NCA0NCIgZmlsbD0ibm9uZSI+CiAgICAgICAgPHJlY3Qgd2lkdGg9IjQ0IiBoZWlnaHQ9IjQ0IiByeD0iMTAiIGZpbGw9InJnYmEoMTYyLDg5LDI1NSwwLjEyKSIvPgogICAgICAgIDxwYXRoIGQ9Ik0xNiAyMmgxMk0yMiAxNnYxMiIgc3Ryb2tlPSIjYTI1OWZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgogICAgICA8L3N2Zz4KICAgICAgPGgzPkF1dG9tYXRpb248L2gzPgogICAgICA8cD5Xb3JrZmxvdyB0cmlnZ2Vycywgbm8tY29kZSBhZ2VudHMsIGludGVncmF0aW9uIGJyaWRnZXMsIGFuZCBwcm9jZXNzIG9yY2hlc3RyYXRpb24uPC9wPgogICAgPC9kaXY+CiAgPC9kaXY+Cjwvc2VjdGlvbj4KCjwhLS0gTkVXU0xFVFRFUiAtLT4KPGRpdiBpZD0ibmV3c2xldHRlciI+CiAgPGgyPlRoZSBXZWVrbHkgQUkgU3RhY2s8L2gyPgogIDxwPk5ldyB0b29scywgaG9uZXN0IHJldmlld3MsIGFuZCB3aGF0IGFjdHVhbGx5IHNoaXBzIOKAlCBldmVyeSBUdWVzZGF5LiBObyBub2lzZS48L3A+CiAgPGZvcm0gY2xhc3M9Im5sLWZvcm0iIG9uc3VibWl0PSJzdWJtaXROZXdzbGV0dGVyKGV2ZW50KSI+CiAgICA8aW5wdXQgdHlwZT0iZW1haWwiIGlkPSJubC1lbWFpbCIgcGxhY2Vob2xkZXI9InlvdXJAZW1haWwuY29tIiByZXF1aXJlZCBhcmlhLWxhYmVsPSJFbWFpbCBhZGRyZXNzIj4KICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5TdWJzY3JpYmU8L2J1dHRvbj4KICA8L2Zvcm0+CiAgPHAgY2xhc3M9Im5sLW1zZyIgaWQ9Im5sLW1zZyI+PC9wPgo8L2Rpdj4KCjwhLS0gRk9PVEVSIC0tPgo8Zm9vdGVyPgogIDxwPsKpIDIwMjYgUXVidEFJLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICA8ZGl2IGNsYXNzPSJmb290ZXItbGlua3MiPgogICAgPGEgaHJlZj0iL2Fib3V0Ij5BYm91dDwvYT4KICAgIDxhIGhyZWY9Ii9uZXdzbGV0dGVyIj5OZXdzbGV0dGVyPC9hPgogICAgPGEgaHJlZj0iL3NpdGVtYXAueG1sIj5TaXRlbWFwPC9hPgogIDwvZGl2Pgo8L2Zvb3Rlcj4KCjxzY3JpcHQ+CmNvbnN0IFRPT0xfREIgPSB7CiAgd3JpdGluZzogewogICAgZnJlZTogW3tuYW1lOidDaGF0R1BUIChGcmVlKScsZGVzYzonQmVzdCBmcmVlIExMTSBmb3IgZHJhZnRpbmcsIGVkaXRpbmcsIGFuZCBpZGVhdGlvbi4nfSx7bmFtZTonQ2xhdWRlLmFpIChGcmVlKScsZGVzYzonRXhjZWxsZW50IGZvciBsb25nIGRvY3VtZW50cyBhbmQgbnVhbmNlZCByZXdyaXRlcy4nfSx7bmFtZTonTm90aW9uIEFJICh0cmlhbCknLGRlc2M6J0J1aWx0LWluIHdyaXRpbmcgYXNzaXN0YW50IGluc2lkZSB5b3VyIHdvcmtzcGFjZS4nfV0sCiAgICBsb3c6IFt7bmFtZTonQ2hhdEdQVCBQbHVzJyxkZXNjOidGYXN0ZXIgR1BULTRvIGFjY2VzcywgZmlsZSB1cGxvYWRzLCB2aXNpb24uJ30se25hbWU6J0NsYXVkZSBQcm8nLGRlc2M6J1ByaW9yaXR5IGFjY2VzcyBhbmQgZXh0ZW5kZWQgY29udGV4dCBmb3IgbG9uZyBkb2NzLid9LHtuYW1lOidKYXNwZXIgKFN0YXJ0ZXIpJyxkZXNjOidNYXJrZXRpbmctZm9jdXNlZCB0ZW1wbGF0ZXMgZm9yIGJsb2dzIGFuZCBhZHMuJ31dLAogICAgbWlkOiBbe25hbWU6J0phc3BlciBCdXNpbmVzcycsZGVzYzonRnVsbCBicmFuZCB2b2ljZSBjb250cm9scyBhbmQgbXVsdGktdXNlciBzZWF0cy4nfSx7bmFtZTonQ29weS5haSBQcm8nLGRlc2M6J1dvcmtmbG93IGF1dG9tYXRpb24gZm9yIGNvbnRlbnQgcGlwZWxpbmVzLid9LHtuYW1lOidXcml0ZXInLGRlc2M6J0VudGVycHJpc2UtZ3JhZGUgYnJhbmQgY29uc2lzdGVuY3kgYWNyb3NzIHRlYW1zLid9XSwKICAgIGhpZ2g6IFt7bmFtZTonV3JpdGVyIEVudGVycHJpc2UnLGRlc2M6J0N1c3RvbSBicmFuZCB2b2ljZSwgY29tcGxpYW5jZSwgQVBJLid9LHtuYW1lOidKYXNwZXIgRW50ZXJwcmlzZScsZGVzYzonU1NPLCB3b3JrZmxvd3MsIGFuZCBkZWRpY2F0ZWQgc3VwcG9ydC4nfSx7bmFtZTonQ29oZXJlIENvbW1hbmQnLGRlc2M6J0N1c3RvbSBmaW5lLXR1bmVkIG1vZGVscyBmb3IgeW91ciBjb250ZW50IHN0eWxlLid9XSwKICAgIGVudGVycHJpc2U6IFt7bmFtZTonT3BlbkFJIEFQSScsZGVzYzonQnVpbGQgY3VzdG9tIHdyaXRpbmcgdG9vbHMgYXQgc2NhbGUuJ30se25hbWU6J0FudGhyb3BpYyBBUEknLGRlc2M6J0NsYXVkZSBtb2RlbHMgd2l0aCBlbnRlcnByaXNlIGFncmVlbWVudHMuJ30se25hbWU6J1dyaXRlciBBUEknLGRlc2M6J0JyYW5kLXNhZmUgZ2VuZXJhdGlvbiBhdCBlbnRlcnByaXNlIHZvbHVtZS4nfV0KICB9LAogIGNvZGU6IHsKICAgIGZyZWU6IFt7bmFtZTonR2l0SHViIENvcGlsb3QgKHRyaWFsKScsZGVzYzonQmVzdC1pbi1jbGFzcyBpbmxpbmUgY29kZSBjb21wbGV0aW9uLid9LHtuYW1lOidDb2RlaXVtJyxkZXNjOidGcmVlIENvcGlsb3QgYWx0ZXJuYXRpdmUsIG5vIHVzYWdlIGxpbWl0cy4nfSx7bmFtZTonUmVwbGl0IEFJJyxkZXNjOidCcm93c2VyLWJhc2VkIElERSB3aXRoIEFJIHBhaXIgcHJvZ3JhbW1lci4nfV0sCiAgICBsb3c6IFt7bmFtZTonR2l0SHViIENvcGlsb3QnLGRlc2M6JyQxMC9tbyDigJQgd29ya3MgaW4gVlMgQ29kZSwgSmV0QnJhaW5zLCBWaW0uJ30se25hbWU6J0N1cnNvcicsZGVzYzonQUktbmF0aXZlIElERSB3aXRoIGlubGluZSBjaGF0IGFuZCBlZGl0IG1vZGUuJ30se25hbWU6J1RhYm5pbmUgUHJvJyxkZXNjOidQcml2YWN5LWZvY3VzZWQgY29tcGxldGlvbiBmb3IgZW50ZXJwcmlzZSBjb2RlLid9XSwKICAgIG1pZDogW3tuYW1lOidDdXJzb3IgVGVhbScsZGVzYzonU2hhcmVkIGNvbnRleHQsIGNvZGViYXNlIGluZGV4aW5nLCB0ZWFtIHNlYXRzLid9LHtuYW1lOidHaXRIdWIgQ29waWxvdCBCdXNpbmVzcycsZGVzYzonT3JnLXdpZGUgc2VhdCBtYW5hZ2VtZW50IGFuZCB0ZWxlbWV0cnkuJ30se25hbWU6J0pldEJyYWlucyBBSScsZGVzYzonRGVlcCBJREUgaW50ZWdyYXRpb24gZm9yIEphdmEgYW5kIEtvdGxpbiBzaG9wcy4nfV0sCiAgICBoaWdoOiBbe25hbWU6J0RldmluIChDb2duaXRpb24pJyxkZXNjOidBdXRvbm9tb3VzIHNvZnR3YXJlIGVuZ2luZWVyIOKAlCBub3QganVzdCBhdXRvY29tcGxldGUuJ30se25hbWU6J0dpdEh1YiBDb3BpbG90IEVudGVycHJpc2UnLGRlc2M6J0N1c3RvbSBmaW5lLXR1bmluZyBvbiB5b3VyIHByaXZhdGUgcmVwb3MuJ30se25hbWU6J0FXUyBDb2RlV2hpc3BlcmVyIFBybycsZGVzYzonSW50ZWdyYXRlZCB3aXRoIEFXUyBzZWN1cml0eSBzY2FubmluZy4nfV0sCiAgICBlbnRlcnByaXNlOiBbe25hbWU6J0RldmluIEVudGVycHJpc2UnLGRlc2M6J0FnZW50aWMgc29mdHdhcmUgZGV2ZWxvcG1lbnQgYXQgc2NhbGUuJ30se25hbWU6J09wZW5BSSBDb2RleCBBUEknLGRlc2M6J0N1c3RvbSBjb2RlIGdlbmVyYXRpb24gbW9kZWxzLid9LHtuYW1lOidTb3VyY2VncmFwaCBDb2R5JyxkZXNjOidPcmctd2lkZSBjb2RlYmFzZSBjb250ZXh0IGZvciBsYXJnZSBtb25vcmVwb3MuJ31dCiAgfSwKICBpbWFnZTogewogICAgZnJlZTogW3tuYW1lOidBZG9iZSBGaXJlZmx5IChmcmVlKScsZGVzYzonSGlnaC1xdWFsaXR5IGdlbmVyYXRpb24sIGNvbW1lcmNpYWxseSBzYWZlLid9LHtuYW1lOidJZGVvZ3JhbSAoZnJlZSknLGRlc2M6J0Jlc3QtaW4tY2xhc3MgdGV4dCByZW5kZXJpbmcgaW5zaWRlIGltYWdlcy4nfSx7bmFtZTonRkxVWCBEZXYgKGZhbC5haSknLGRlc2M6J09wZW4tc291cmNlIGJhc2UgbW9kZWwgd2l0aCBzdHJvbmcgcmVhbGlzbS4nfV0sCiAgICBsb3c6IFt7bmFtZTonTWlkam91cm5leSBCYXNpYycsZGVzYzonJDEwL21vIOKAlCBpbmR1c3RyeS1zdGFuZGFyZCBxdWFsaXR5IGFuZCBzdHlsZS4nfSx7bmFtZTonQWRvYmUgRmlyZWZseSBQcmVtaXVtJyxkZXNjOidCdWxrIGNyZWRpdHMsIGhpZ2hlciByZXNvbHV0aW9uLid9LHtuYW1lOidSZWNyYWZ0JyxkZXNjOidWZWN0b3IgYW5kIGljb24gZ2VuZXJhdGlvbiB3aXRoIGJyYW5kIGtpdHMuJ31dLAogICAgbWlkOiBbe25hbWU6J01pZGpvdXJuZXkgU3RhbmRhcmQnLGRlc2M6JzE1aCBmYXN0IEdQVSwgdW5saW1pdGVkIHJlbGF4ZWQgZ2VuZXJhdGlvbi4nfSx7bmFtZTonREFMTC1FIHZpYSBBUEknLGRlc2M6J1Byb2dyYW1tYXRpYyBpbWFnZSBnZW5lcmF0aW9uIGZvciBhcHBzLid9LHtuYW1lOidJZGVvZ3JhbSBQcm8nLGRlc2M6J1ByaW9yaXR5IGdlbmVyYXRpb24gd2l0aCB0eXBvZ3JhcGh5IGZvY3VzLid9XSwKICAgIGhpZ2g6IFt7bmFtZTonTWlkam91cm5leSBQcm8nLGRlc2M6JzMwaCBmYXN0IEdQVSwgc3RlYWx0aCBtb2RlLCBvcmdhbml6YXRpb24uJ30se25hbWU6J2ZhbC5haSBGTFVYIFBybyBVbHRyYScsZGVzYzonUGhvdG9yZWFsaXN0aWMgY29tbWVyY2lhbCBpbWFnZXMgYXQgc2NhbGUuJ30se25hbWU6J1N0YWJpbGl0eSBBSSBBUEknLGRlc2M6J0N1c3RvbSBmaW5lLXR1bmluZyBvbiB5b3VyIHZpc3VhbCBicmFuZC4nfV0sCiAgICBlbnRlcnByaXNlOiBbe25hbWU6J09wZW5BSSBJbWFnZXMgQVBJJyxkZXNjOidncHQtaW1hZ2UtMiBhdCBzY2FsZSB3aXRoIGNvbW1lcmNpYWwgbGljZW5zZS4nfSx7bmFtZTonU3RhYmlsaXR5IEFJIEVudGVycHJpc2UnLGRlc2M6J09uLXByZW0gZmluZS10dW5lZCBtb2RlbHMuJ30se25hbWU6J0Fkb2JlIEZpcmVmbHkgQVBJJyxkZXNjOidCcmFuZC1zYWZlIGdlbmVyYXRpb24gd2l0aCBjb3B5cmlnaHQgaW5kZW1uaXR5Lid9XQogIH0sCiAgZGF0YTogewogICAgZnJlZTogW3tuYW1lOidKdWxpdXMgQUkgKGZyZWUpJyxkZXNjOidDaGF0IHdpdGggeW91ciBzcHJlYWRzaGVldHMsIGZyZWUgdGllci4nfSx7bmFtZTonQ2hhdEdQVCBEYXRhIEFuYWx5c2lzJyxkZXNjOidVcGxvYWQgQ1NWcywgZ2V0IGNoYXJ0cyBhbmQgc3VtbWFyaWVzLid9LHtuYW1lOidHb29nbGUgTG9va2VyIFN0dWRpbycsZGVzYzonRnJlZSBCSSBhbmQgZGFzaGJvYXJkIHRvb2wuJ31dLAogICAgbG93OiBbe25hbWU6J0p1bGl1cyBBSSBQcm8nLGRlc2M6J1VubGltaXRlZCBmaWxlIHVwbG9hZHMsIGNoYXJ0IGV4cG9ydHMuJ30se25hbWU6J1Jvd3MuY29tJyxkZXNjOidBSS1wb3dlcmVkIHNwcmVhZHNoZWV0IHdpdGggbGl2ZSBkYXRhIGNvbm5lY3RvcnMuJ30se25hbWU6J0Fra2lvJyxkZXNjOidOby1jb2RlIHByZWRpY3RpdmUgYW5hbHl0aWNzIGZvciBzbWFsbCB0ZWFtcy4nfV0sCiAgICBtaWQ6IFt7bmFtZTonT2J2aW91c2x5IEFJJyxkZXNjOidBdXRvbWF0ZWQgcHJlZGljdGl2ZSBtb2RlbGluZywgbm8gZGF0YSBzY2llbmNlIHJlcXVpcmVkLid9LHtuYW1lOidUaG91Z2h0U3BvdCcsZGVzYzonTmF0dXJhbCBsYW5ndWFnZSBxdWVyaWVzIG9uIHlvdXIgZGF0YSB3YXJlaG91c2UuJ30se25hbWU6J1BvbHltZXInLGRlc2M6J0luc3RhbnQgdmlzdWFsaXphdGlvbnMgZnJvbSBzcHJlYWRzaGVldHMuJ31dLAogICAgaGlnaDogW3tuYW1lOidEYXRhYnJpY2tzIEFJJyxkZXNjOidVbmlmaWVkIGFuYWx5dGljcyBhbmQgQUkgb24gdGhlIGxha2Vob3VzZS4nfSx7bmFtZTonU25vd2ZsYWtlIENvcnRleCcsZGVzYzonSW4tZGF0YWJhc2UgQUkgYW5kIE1MIGF0IHNjYWxlLid9LHtuYW1lOidQYWxhbnRpciBBSVAnLGRlc2M6J09wZXJhdGlvbmFsIEFJIGZvciBsYXJnZSBlbnRlcnByaXNlIGRhdGFzZXRzLid9XSwKICAgIGVudGVycHJpc2U6IFt7bmFtZTonUGFsYW50aXIgQUlQIEVudGVycHJpc2UnLGRlc2M6J01pc3Npb24tY3JpdGljYWwgb3BlcmF0aW9uYWwgQUkuJ30se25hbWU6J0RhdGFicmlja3MgRW50ZXJwcmlzZScsZGVzYzonTXVsdGktY2xvdWQgZGF0YSArIEFJIHBsYXRmb3JtLid9LHtuYW1lOidDMy5haScsZGVzYzonSW5kdXN0cnktc3BlY2lmaWMgQUkgYXBwbGljYXRpb25zLid9XQogIH0KfTsKCmZ1bmN0aW9uIGZpbmRUb29scygpIHsKICBjb25zdCB1c2VDYXNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZS1jYXNlJykudmFsdWU7CiAgY29uc3QgYnVkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1ZGdldCcpLnZhbHVlOwogIGNvbnN0IHJlc3VsdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2wtcmVzdWx0Jyk7CiAgY29uc3QgcmVjc0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2wtcmVjcycpOwogIAogIGlmICghdXNlQ2FzZSB8fCAhYnVkZ2V0KSB7CiAgICBhbGVydCgnUGxlYXNlIHNlbGVjdCBhIHVzZSBjYXNlIGFuZCBidWRnZXQgdG8gY29udGludWUuJyk7CiAgICByZXR1cm47CiAgfQogIAogIGNvbnN0IGRiID0gVE9PTF9EQlt1c2VDYXNlXSB8fCBUT09MX0RCLndyaXRpbmc7CiAgY29uc3QgcmVjcyA9IGRiW2J1ZGdldF0gfHwgZGJbJ21pZCddIHx8IFtdOwogIGNvbnN0IGRpc3BsYXkgPSByZWNzLmxlbmd0aCA/IHJlY3MgOiBbe25hbWU6J0V4cGxvcmUgUXVidEFJIGNhdGVnb3JpZXMnLGRlc2M6J0Jyb3dzZSBvdXIgZnVsbCBpbmRleCBmb3IgdGhpcyB1c2UgY2FzZSBjb21iaW5hdGlvbi4nfV07CiAgCiAgcmVjc0VsLmlubmVySFRNTCA9IGRpc3BsYXkubWFwKChyLGkpID0+IGAKICAgIDxkaXYgY2xhc3M9InRvb2wtcmVjIj4KICAgICAgPGRpdiBjbGFzcz0idG9vbC1pY29uIiBzdHlsZT0iYmFja2dyb3VuZDpyZ2JhKCR7aT09PTA/JzkxLDExMCwyNDUnOmk9PT0xPycxNjIsODksMjU1JzonOTEsMjAwLDI0NSd9LDAuMTgpIj4KICAgICAgICA8c3ZnIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDE4IDE4IiBmaWxsPSJub25lIj4KICAgICAgICAgIDxjaXJjbGUgY3g9IjkiIGN5PSI5IiByPSI3IiBzdHJva2U9IiR7aT09PTA/JyM1YjZlZjUnOmk9PT0xPycjYTI1OWZmJzonIzViYzhmNSd9IiBzdHJva2Utd2lkdGg9IjEuNSIvPgogICAgICAgICAgPHBhdGggZD0iTTYgOWwyIDIgNC00IiBzdHJva2U9IiR7aT09PTA/JyM1YjZlZjUnOmk9PT0xPycjYTI1OWZmJzonIzViYzhmNSd9IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2PjxkaXYgY2xhc3M9InRvb2wtcmVjLW5hbWUiPiR7ci5uYW1lfTwvZGl2PjxkaXYgY2xhc3M9InRvb2wtcmVjLWRlc2MiPiR7ci5kZXNjfTwvZGl2PjwvZGl2PgogICAgPC9kaXY+CiAgYCkuam9pbignJyk7CiAgCiAgcmVzdWx0RWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgcmVzdWx0RWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7CiAgaWYgKHR5cGVvZiBndGFnICE9PSAndW5kZWZpbmVkJykgZ3RhZygnZXZlbnQnLCAndG9vbF9maW5kZXJfdXNlZCcsIHsgdXNlX2Nhc2U6IHVzZUNhc2UsIGJ1ZGdldDogYnVkZ2V0IH0pOwp9CgpmdW5jdGlvbiBzdWJtaXROZXdzbGV0dGVyKGUpIHsKICBlLnByZXZlbnREZWZhdWx0KCk7CiAgY29uc3QgZW1haWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmwtZW1haWwnKS52YWx1ZTsKICBjb25zdCBtc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmwtbXNnJyk7CiAgbXNnLnRleHRDb250ZW50ID0gJ1N1YnNjcmliaW5nLi4uJzsKICAKICBmZXRjaCgnaHR0cHM6Ly9vYXBhaHdzcWVodHhhd3J2c3FrZy5zdXBhYmFzZS5jby9yZXN0L3YxL3dlYndlYl9zdWJzY3JpYmVycycsIHsKICAgIG1ldGhvZDogJ1BPU1QnLAogICAgaGVhZGVyczogewogICAgICAnYXBpa2V5JzogJ2V5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUpwYzNNaU9pSnpkWEJoWW1GelpTSXNJbkpsWmlJNkltOWhjR0ZvZDNOeFpXaDBlR0YzY25aemNXdG5JaXdpY205c1pTSTZJbUZ1YjI0aUxDSnBZWFFpT2pFM056YzVOVEk1TmpZc0ltVjRjQ0k2TWpBNU16VXlPRGsyTm4wLkVVMXZrQWJ0dVpSWEZaNVRWSDJaR2pKMGxEU0h2WW5EMzRqV0FVbjktX2cnLAogICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAnUHJlZmVyJzogJ3JldHVybj1taW5pbWFsJwogICAgfSwKICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZW1haWw6IGVtYWlsLCBzb3VyY2U6ICdxdWJ0YWkuY29tJywgc3Vic2NyaWJlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH0pCiAgfSkudGhlbihyID0+IHsKICAgIGlmIChyLm9rIHx8IHIuc3RhdHVzID09PSAyMDEgfHwgci5zdGF0dXMgPT09IDQwOSkgewogICAgICBtc2cudGV4dENvbnRlbnQgPSAnWW91IGFyZSBpbi4gRmlyc3QgaXNzdWUgaGl0cyBUdWVzZGF5Lic7CiAgICAgIGlmICh0eXBlb2YgZ3RhZyAhPT0gJ3VuZGVmaW5lZCcpIGd0YWcoJ2V2ZW50JywgJ25ld3NsZXR0ZXJfc2lnbnVwJywgeyBzb3VyY2U6ICdxdWJ0YWkuY29tJyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIG1zZy50ZXh0Q29udGVudCA9ICdTb21ldGhpbmcgd2VudCB3cm9uZyDigJQgdHJ5IGFnYWluLic7CiAgICB9CiAgfSkuY2F0Y2goKCkgPT4geyBtc2cudGV4dENvbnRlbnQgPSAnU29tZXRoaW5nIHdlbnQgd3Jvbmcg4oCUIHRyeSBhZ2Fpbi4nOyB9KTsKfQo8L3NjcmlwdD4KPCEtLSBWZXJjZWwgQW5hbHl0aWNzIC0tPgo8c2NyaXB0IGRlZmVyIHNyYz0iL192ZXJjZWwvaW5zaWdodHMvc2NyaXB0LmpzIj48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg=="}