data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogIDx0aXRsZT5EZXZ0b29scyAuaGFyIFhTUyBHZW5lcmF0b3I8L3RpdGxlPgogIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgIG1hcmdpbjogNDBweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgIH0KICAgIHRleHRhcmVhIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIG1heC13aWR0aDogODAwcHg7CiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB3aGl0ZTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgIH0KICAgIGJ1dHRvbiB7CiAgICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CiAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICA8aDE+RGV2dG9vbHMgLmhhciBYU1MgR2VuZXJhdG9yPC9oMT4KICA8cD5YU1MgZm91bmQgYnkgY3Jvc3NqYmx5LCBzaXRlIGJ5IEJsb2JieSBCb2kuIElGIEFOWU9ORSBFTFNFIENMQUlNUyBUSEVZIE1BREUgVEhJUyBTSVRFLCBUSEVZIERJRE4nVCEhISE8L3A+CiAgPHA+UGxlYXNlIHJlZmVyIHRvIHRoZSA8YSBocmVmPSdodHRwczovL2dpdGh1Yi5jb20vY3Jvc3NqYmx5L0hhclRvb2xzL2Jsb2IvbWFpbi9SRUFETUUubWQnPlJFQURNRS5tZDwvYT4gZmlsZSBvbiBvdXIgR2l0SHViIHJlcG8uPC9wPgoKICA8dGV4dGFyZWEgaWQ9ImpzSW5wdXQiIHBsYWNlaG9sZGVyPSJFbnRlciBKYXZhU2NyaXB0IGNvZGUgaGVyZSIgcm93cz0iMTAiIGNvbHM9IjgwIj48L3RleHRhcmVhPjxicj4KICA8YnV0dG9uIG9uY2xpY2s9ImdlbmVyYXRlSGFyKCkiPkdlbmVyYXRlIC5oYXIgZmlsZTwvYnV0dG9uPgoKICA8c2NyaXB0PgogIGZ1bmN0aW9uIGdlbmVyYXRlSGFyKCkgewogICAgY29uc3QgaW5wdXRDb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzSW5wdXQnKS52YWx1ZS50cmltKCk7CiAgICBpZiAoIWlucHV0Q29kZSkgewogICAgICBhbGVydCgnQnJvIGRpZG50IHR5cGUgYW55IGNvZGUnKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7CiAgICBjb25zdCBub3dJU09TdHJpbmcgPSBub3cudG9JU09TdHJpbmcoKTsKICAgIGNvbnN0IGJhc2U2NENvZGUgPSBidG9hKGlucHV0Q29kZSk7CgogICAgY29uc3QgYm9va21hcmtsZXRVcmwgPSBgamF2YXNjcmlwdDogKGZ1bmN0aW9uKCkge2V2YWwoYXRvYihcIiR7YmFzZTY0Q29kZX1cIikpfSkoKWA7CgogICAgY29uc3QgaGFyID0gewogICAgICBsb2c6IHsKICAgICAgICB2ZXJzaW9uOiAiMS4yIiwKICAgICAgICBjcmVhdG9yOiB7CiAgICAgICAgICBuYW1lOiAiV2ViSW5zcGVjdG9yIiwKICAgICAgICAgIHZlcnNpb246ICI1MzcuMzYiCiAgICAgICAgfSwKICAgICAgICBwYWdlczogWwogICAgICAgICAgewogICAgICAgICAgICBzdGFydGVkRGF0ZVRpbWU6IG5vd0lTT1N0cmluZywKICAgICAgICAgICAgaWQ6ICJwYWdlXzEiLAogICAgICAgICAgICB0aXRsZTogYm9va21hcmtsZXRVcmwsCiAgICAgICAgICAgIHBhZ2VUaW1pbmdzOiB7CiAgICAgICAgICAgICAgb25Db250ZW50TG9hZDogNTcuMTksCiAgICAgICAgICAgICAgb25Mb2FkOiA1Ny43NwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBlbnRyaWVzOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIF9jb25uZWN0aW9uSWQ6ICIxNjc3MSIsCiAgICAgICAgICAgIF9pbml0aWF0b3I6IHsKICAgICAgICAgICAgICB0eXBlOiAic2NyaXB0IiwKICAgICAgICAgICAgICBzdGFjazogewogICAgICAgICAgICAgICAgY2FsbEZyYW1lczogWwogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiAiIiwKICAgICAgICAgICAgICAgICAgICBzY3JpcHRJZDogIjkiLAogICAgICAgICAgICAgICAgICAgIHVybDogIiIsCiAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogMTEsCiAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyOiA0CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9wcmlvcml0eTogIkhpZ2giLAogICAgICAgICAgICBfcmVzb3VyY2VUeXBlOiAiZmV0Y2giLAogICAgICAgICAgICBjYWNoZToge30sCiAgICAgICAgICAgIGNvbm5lY3Rpb246ICI0NDMiLAogICAgICAgICAgICBwYWdlcmVmOiAicGFnZV8xIiwKICAgICAgICAgICAgcmVxdWVzdDogewogICAgICAgICAgICAgIG1ldGhvZDogIkdFVCIsCiAgICAgICAgICAgICAgdXJsOiBib29rbWFya2xldFVybCArICcvLycgKyAnICcucmVwZWF0KDIwKSArICdET1VCTEUgQ0xJQ0sgVEhJUycsCiAgICAgICAgICAgICAgaHR0cFZlcnNpb246ICJoMyIsCiAgICAgICAgICAgICAgaGVhZGVyczogWwogICAgICAgICAgICAgICAgeyBuYW1lOiAiOmF1dGhvcml0eSIsIHZhbHVlOiAiIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAiOm1ldGhvZCIsIHZhbHVlOiAiR0VUIiB9LAogICAgICAgICAgICAgICAgeyBuYW1lOiAiOnBhdGgiLCB2YWx1ZTogYm9va21hcmtsZXRVcmwgfSwKICAgICAgICAgICAgICAgIHsgbmFtZTogIjpzY2hlbWUiLCB2YWx1ZTogImphdmFzY3JpcHQiIH0sCiAgICAgICAgICAgICAgICB7IG5hbWU6ICJhY2NlcHQiLCB2YWx1ZTogIiovKiIgfSwKICAgICAgICAgICAgICAgIHsgbmFtZTogInVzZXItYWdlbnQiLCB2YWx1ZTogIk1vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEzNS4wLjAuMCBTYWZhcmkvNTM3LjM2IiB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICBxdWVyeVN0cmluZzogW10sCiAgICAgICAgICAgICAgY29va2llczogW10sCiAgICAgICAgICAgICAgaGVhZGVyc1NpemU6IC0xLAogICAgICAgICAgICAgIGJvZHlTaXplOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlc3BvbnNlOiB7CiAgICAgICAgICAgICAgc3RhdHVzOiAyMDAsCiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogIiIsCiAgICAgICAgICAgICAgaHR0cFZlcnNpb246ICJoMyIsCiAgICAgICAgICAgICAgaGVhZGVyczogWwogICAgICAgICAgICAgICAgeyBuYW1lOiAiY29udGVudC10eXBlIiwgdmFsdWU6ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0OyBjaGFyc2V0PXV0Zi04IiB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICBjb29raWVzOiBbXSwKICAgICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgICBzaXplOiBpbnB1dENvZGUubGVuZ3RoLAogICAgICAgICAgICAgICAgbWltZVR5cGU6ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKICAgICAgICAgICAgICAgIHRleHQ6IGlucHV0Q29kZQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgcmVkaXJlY3RVUkw6ICIiLAogICAgICAgICAgICAgIGhlYWRlcnNTaXplOiAtMSwKICAgICAgICAgICAgICBib2R5U2l6ZTogLTEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2VydmVySVBBZGRyZXNzOiAiMC4wLjAuMCIsCiAgICAgICAgICAgIHN0YXJ0ZWREYXRlVGltZTogbm93SVNPU3RyaW5nLAogICAgICAgICAgICB0aW1lOiAxMDAsCiAgICAgICAgICAgIHRpbWluZ3M6IHsKICAgICAgICAgICAgICBibG9ja2VkOiAwLAogICAgICAgICAgICAgIGRuczogMCwKICAgICAgICAgICAgICBzc2w6IDAsCiAgICAgICAgICAgICAgY29ubmVjdDogMCwKICAgICAgICAgICAgICBzZW5kOiAwLAogICAgICAgICAgICAgIHdhaXQ6IDUwLAogICAgICAgICAgICAgIHJlY2VpdmU6IDUwLAogICAgICAgICAgICAgIF9ibG9ja2VkX3F1ZXVlaW5nOiAwCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIH07CgogICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShoYXIsIG51bGwsIDIpXSwgeyB0eXBlOiAiYXBwbGljYXRpb24vanNvbiIgfSk7CiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTsKICAgIGNvbnN0IGRheSA9IFN0cmluZyhub3cuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpOwogICAgY29uc3QgeWVhciA9IG5vdy5nZXRGdWxsWWVhcigpOwogICAgY29uc3QgdW5peFRpbWVzdGFtcCA9IE1hdGguZmxvb3Iobm93LmdldFRpbWUoKSAvIDEwMDApOwogICAgY29uc3QgZm9ybWF0dGVkX2ZpbGVfbmFtZSA9IGAke21vbnRofSR7ZGF5fSR7eWVhcn1fJHt1bml4VGltZXN0YW1wfWA7CiAgICBjb25zb2xlLmxvZygiRm9ybWF0dGVkZmlsZU5hbWUiICsgZm9ybWF0dGVkX2ZpbGVfbmFtZSk7CiAgICBhLmRvd25sb2FkID0gIkhhclRvb2xzLSIgKyBmb3JtYXR0ZWRfZmlsZV9uYW1lICsgJy1zY3JpcHQuaGFyJzsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7CiAgICBhLmNsaWNrKCk7CiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpOwogIH0KICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+