{"remainingRequest":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/node_modules/vue-loader/lib/index.js??vue-loader-options!/data/jenkins/workspace/badp-bcxin-web-5.x-staff/src/views/Employee/index.vue?vue&type=script&lang=js","dependencies":[{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/src/views/Employee/index.vue","mtime":1749093819374},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CmltcG9ydCB7U3RhZmZEZXBhcnRtZW50TGlzdEFwaSxlbXBsb3llZVRhYmxlTGlzdEFwaSxTZWFyY2hFbXBseWVlQXBpLGhpZ2hTZWFyY2hFbXBseWVlQXBpLGVtcGxveWVlVGFibGVCb2FyZExpc3RBcGkscmVzZXRQV0RTdGFmZkFwaX0gZnJvbSAiQC9hcGkvc3RhZmZBcGkuanMiCmltcG9ydCBVc2VyRW1wbG95ZWVEaWFsb2cgZnJvbSAnLi9jb21wb25lbnRzL1VzZXJFbXBsb3llZURpYWxvZy52dWUnCmltcG9ydCBJbXBvcnRFbXBsb3llZURpYWxvZyBmcm9tICcuL2NvbXBvbmVudHMvSW1wb3J0RW1wbG95ZWVEaWFsb2cudnVlJwppbXBvcnQgRXhwb3J0RW1wbG95ZWVEaWFsb2cgZnJvbSAnLi9jb21wb25lbnRzL0V4cG9ydEVtcGxveWVlRGlhbG9nLnZ1ZScKaW1wb3J0IFVzZXJFbXBsb3llZUludml0ZUluRGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9Vc2VyRW1wbG95ZWVJbnZpdGVJbkRpYWxvZy52dWUnCmltcG9ydCBVc2VyRW1wbG95ZWVEdXR5RGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9Vc2VyRW1wbG95ZWVEdXR5RGlhbG9nLnZ1ZScKaW1wb3J0IFVzZXJFbXBsb3llZWNoYW5nZU9jY3VwYXRpb25UeXBlRGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9Vc2VyRW1wbG95ZWVjaGFuZ2VPY2N1cGF0aW9uVHlwZURpYWxvZy52dWUnCmltcG9ydCBzZWxlY3RUcmVlIGZyb20gIkAvY29tcG9uZW50cy9TZWxlY3RUcmVlIjsKaW1wb3J0IFN0YWZmQm94RGV0YWlsIGZyb20gJy4vU3RhZmZCb3hEZXRhaWwnLy/lkZjlt6XmoaPmoYgKaW1wb3J0IENvbHVtblNldCBmcm9tICJAL2NvbXBvbmVudHMvQ29sdW1uU2V0IjsvL+WIl+mFjee9rgoKZXhwb3J0IGRlZmF1bHQgewogICAgaW5qZWN0OlsncGVybWlzc2lvbnMnXSwKICAgIGNvbXB1dGVkOnsKICAgICAgcGVybWlzc2lvbnNTdHIoKXsKICAgICAgICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zKCkKICAgICAgfSwKICAgICAgaXNTaG93KCl7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5lbnYuVlVFX0FQUF9JU0pJTkNIRU5HID09PSAndHJ1ZScKICAgICAgfQogICAgfSwKICAgIGRhdGEoKXsKICAgICAgICByZXR1cm57CiAgICAgICAgICB0YWJsZURhdGE6W10sCiAgICAgICAgICB0YWJsZURhdGFFbXBsb3llZTpbXSwKICAgICAgICAgIG11bHRpcGxlU2VsZWN0aW9uOltdLC8v5YWo6YCJ5YiX6KGoCiAgICAgICAgICB0YWJsZUNvbHVtbjpbCgogICAgICAgICAgICAgIHtwcm9wOiJuYW1lIixsYWJlbDoi5aeT5ZCNIix3aWR0aDoiMTAwIixzaG93OnRydWUsdmVyc2lvbjo1fSwKICAgICAgICAgICAgICB7cHJvcDoiZGVwYXJ0TmFtZSIsbGFiZWw6YOaJgOWcqCR7JFN1cGVydmlzZVN0ci5kZXBhcnR9YCx3aWR0aDoiMjUwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJvY2N1cGF0aW9uVHlwZSIsbGFiZWw6IuiBjOS4muexu+WeiyIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoidGVsZXBob25lIixsYWJlbDoi5omL5py65Y+3Iix3aWR0aDoiMTQwIixzaG93OnRydWV9LCAgIAogICAgICAgICAgICAgIHtwcm9wOiJjcmVkZW50aWFsVHlwZSIsbGFiZWw6IuivgeS7tuexu+WeiyIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlLH0sCiAgICAgICAgICAgICAge3Byb3A6ImNyZWRlbnRpYWxOdW1iZXIiLGxhYmVsOiLor4Hku7blj7fnoIEiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6ImJhY2tncm91bmRTY3JlZW5pbmdTdGF0dXMiLGxhYmVsOiLog4zmma/nrZvmn6UiLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sICAgICAgICAgICAgIAogICAgICAgICAgICAgIHtwcm9wOiJjaGVja2VkU3RhdHVzIixsYWJlbDoi6K+B5Lu25qC46aqM54q25oCBIix3aWR0aDoiMTIwIixzaG93OnRydWV9LCAKICAgICAgICAgICAgICB7cHJvcDoibGFzdENoZWNrZWRTdGF0dXNUaW1lIixsYWJlbDoi5qC46aqM5pel5pyfIix3aWR0aDoiMTAwIixzaG93OnRydWV9LCAgICAgICAgICAgICAKICAgICAgICAgICAgICB7cHJvcDoiYXV0aGVudGljYXRlZFN0YXR1cyIsbGFiZWw6IuWunuWQjeiupOivgeeKtuaAgSIsd2lkdGg6IjEyMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoiYXV0aGVudGljYXRlZFJlc3VsdCIsbGFiZWw6IuiupOivgeWksei0peWOn+WboCIsd2lkdGg6IjEyMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoiaGlyZWREYXRlVGV4dCIsbGFiZWw6IGAkeyRTdXBlcnZpc2VTdHIuZW50cnl95pel5pyfYCx3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJjb250cmFjdFN0YXR1cyIsbGFiZWw6IuaYr+WQpuetvuiuouWQiOWQjCIsd2lkdGg6IjEyMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoiY2VyU3RhdHVzIixsYWJlbDoi5piv5ZCm5oyB5pyJ5L+d5a6J6LWE5qC86K+BIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJjZXJObyIsbGFiZWw6IuS/neWuiei1hOagvOivgeWPtyIsd2lkdGg6IjEyMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoiaW5zdXJlIixsYWJlbDoi5piv5ZCm5oqV5L+dIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAoKICAgICAgICAgICAgICB7cHJvcDoiZ3JhZGVDZXJTdGF0dXMiLGxhYmVsOiLmmK/lkKbmnInnrYnnuqfor4EiLHdpZHRoOiIxMjAiLHNob3c6dHJ1ZX0sCgogICAgICAgICAgICAgIHtwcm9wOiJncmFkZUNlck5vIixsYWJlbDoi562J57qn6K+B57yW5Y+3Iix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJncmFkZUxldmVsIixsYWJlbDoi562J57qn6K+B562J57qnIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAoKICAgICAgICAgICAgICB7cHJvcDoiY3JlYXRlZFRpbWUiLGxhYmVsOiLlvZXlhaXns7vnu5/ml7bpl7QiLHdpZHRoOiIxMjAiLHNob3c6dHJ1ZX0sCiAgICAgICAgCgogICAgICAgICAgICAgIHtwcm9wOiJzdXBlcmlvck5hbWUiLGxhYmVsOiLkuIrnuqciLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJwb3NpdGlvbiIsbGFiZWw6IuiBjOS9jSIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6InBvc2l0aXZlRGF0ZSIsbGFiZWw6Iui9rOato+aXpeacnyIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6InNleCIsbGFiZWw6IuaAp+WIqyIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6ImJpcnRoZGF0ZSIsbGFiZWw6IuWHuueUn+aXpeacnyIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6ImFnZSIsbGFiZWw6IuW5tOm+hCIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6Im5hdGlvbiIsbGFiZWw6IuawkeaXjyIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6ImVkdWNhdGlvbiIsbGFiZWw6IuaWh+WMlueoi+W6piIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6InBvbGl0aWNzU3RhdHVzIixsYWJlbDoi5pS/5rK76Z2i6LKMIix3aWR0aDoiMTIwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoiaG91c2Vob2xkVHlwZSIsbGFiZWw6IuaIt+exjeexu+WeiyIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6InN0YXR1cmUiLGxhYmVsOiLouqvpq5jvvIhDTe+8iSIsd2lkdGg6IjEyMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6Im5hdGl2ZVBsYWNlIixsYWJlbDoi57GN6LSvIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoibWlsaXRhcnlTdGF0dXMiLGxhYmVsOiLlhbXlvbnmg4XlhrUiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJtYXJpdGFsU3RhdHVzIixsYWJlbDoi5ama5ae754q25Ya1Iix3aWR0aDoiMTAwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoidmFsaWREYXRlVG8iLGxhYmVsOiLouqvku73or4HmnInmlYjmnJ8iLHdpZHRoOiIxODAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJhZGRyZXNzIixsYWJlbDoi6Lqr5Lu96K+B5L2P5Z2AIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKCiAgICAgICAgICAgICAge3Byb3A6InBlcnNvblN0YXR1cyIsbGFiZWw6IuWRmOW3peeKtuaAgSIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6InByb2JhdGlvbiIsbGFiZWw6IuivleeUqOacnyIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6InBsYW5Qb3NpdGl2ZURhdGUiLGxhYmVsOiLljp/lrprovazmraPml6XmnJ8iLHdpZHRoOiIxODAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJlbWVyZ2VuY3lDb250YWN0IixsYWJlbDoi57Sn5oCl6IGU57O75Lq65aeT5ZCNIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoiZW1lcmdlbmN5UGhvbmUiLGxhYmVsOiLntKfmgKXogZTns7vkurrnlLXor50iLHdpZHRoOiIxODAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJsaWNlbnNlTGV2ZWwiLGxhYmVsOiLpqb7nhafnrYnnuqciLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJwbGFjZU9mTm93IixsYWJlbDoi546w5L2P5Zyw5Z2AIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICAKICAgICAgICAgICAgICB7cHJvcDoiZG9tYWluQWRtaW4iLGxhYmVsOiLmmK/lkKbkuLrnu4Tnu4fnrqHnkIblkZgiLHdpZHRoOiIxODAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJkZXBhcnRBZG1pbiIsbGFiZWw6IuaYr+WQpuS4uumDqOmXqOeuoeeQhuWRmCIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6Im1hbmFnZURlcGFydHMiLGxhYmVsOiLlj6/nrqHnkIbpg6jpl6giLHdpZHRoOiIxODAiLHNob3c6ZmFsc2V9LAoKICAgICAgICAgICAgICB7cHJvcDoib3BlcmF0b3JOYW1lIixsYWJlbDoi5pON5L2c5Lq6Iix3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJvcGVyYXRvclRpbWUiLGxhYmVsOiLmk43kvZzml7bpl7QiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICBdLAogICAgICAgICAgcGFyYW1zOnsvL+aQnOe0ouadoeS7tgogICAgICAgICAgICBwYWdlSW5kZXg6MSwKICAgICAgICAgICAgcGFnZVNpemU6MTAsCiAgICAgICAgICAgIGtleXdvcmQ6JycsICAgICAgICAgICAgIAogICAgICAgICAgICB0b3RhbDowLAogICAgICAgICAgfSwgICAgICAgICAgCiAgICAgICAgICBzaG93ZGlhbG9nQ29sdW1uU2V0OmZhbHNlLC8v5YiX6YWN572u6buY6K6k6ZqQ6JePCiAgICAgICAgICBzaG93ZGlhbG9nOmZhbHNlLCAgIAogICAgICAgICAgc2hvd2RpYWxvZ0luOmZhbHNlLAogICAgICAgICAgc2hvd2RpYWxvZ0R1dHk6ZmFsc2UsCiAgICAgICAgICBkaXNhYmxlZDp0cnVlLC8v6buY6K6k56aB55SoCiAgICAgICAgICBpc0FsbFNlbGVjdDpmYWxzZSwvL+aYr+WQpuWFqOmAiQogICAgICAgICAgZGlzcGxheU9yZGVyU2hvdzpmYWxzZSwKICAgICAgICAgIHNob3dkaWFsb2dJbXBvcnQ6ZmFsc2UsLy/lr7zlhaXlkZjlt6UKICAgICAgICAgIHNob3dkaWFsb2dPY2NUeXBlOmZhbHNlLAogICAgICAgICAgY3JlZGVudGlhbFR5cGVzb3B0aW9uczpbLy/or4Hku7bnsbvlnosKICAgICAgICAgICAgICB7dmFsdWU6IklkQ2FyZCIsbGFiZWw6IuWxheawkei6q+S7veivgS/miLflj6PnsL8ifSwKICAgICAgICAgICAgICB7dmFsdWU6IklkQ2FyZE9mWGlhbmdHYW5nIixsYWJlbDoi6aaZ5riv54m55Yy65oqk54WnL+i6q+S7veivgeaYjiJ9LAogICAgICAgICAgICAgIHt2YWx1ZToiSWRDYXJkT2ZBb01lbiIsbGFiZWw6Iua+s+mXqOeJueWMuuaKpOeFpy/ouqvku73or4HmmI4ifSwKICAgICAgICAgICAgICB7dmFsdWU6IklkQ2FyZE9mVGFpd2FuIixsYWJlbDoi5Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+BIn0sCiAgICAgICAgICAgICAge3ZhbHVlOiJQYXNzcG9ydCIsbGFiZWw6IuWkluWbveaKpOeFpyJ9LAogICAgICAgICAgICAgIHt2YWx1ZToiQXJtcyIsbGFiZWw6IumAgOS8jeWGm+S6uuivgSJ9LAogICAgICAgICAgICAgIHt2YWx1ZToiUG9saWNlTm8iLGxhYmVsOiLorablj7cifSwKICAgICAgICAgIF0sCiAgICAgICAgICBjcmVkZW50aWFsVHlwZXNvcHRpb25zX0luc3Q6Wy8v6K+B5Lu257G75Z6LCiAgICAgICAgICAgICAge3ZhbHVlOiJJZENhcmQiLGxhYmVsOiLlsYXmsJHouqvku73or4Ev5oi35Y+j57C/In0sCiAgICAgICAgICAgICAge3ZhbHVlOiJJZENhcmRPZlhpYW5nR2FuZyIsbGFiZWw6Iummmea4r+eJueWMuuaKpOeFpy/ouqvku73or4HmmI4ifSwKICAgICAgICAgICAgICB7dmFsdWU6IklkQ2FyZE9mQW9NZW4iLGxhYmVsOiLmvrPpl6jnibnljLrmiqTnhacv6Lqr5Lu96K+B5piOIn0sCiAgICAgICAgICAgICAge3ZhbHVlOiJJZENhcmRPZlRhaXdhbiIsbGFiZWw6IuWPsOa5vuWxheawkeadpeW+gOWkp+mZhumAmuihjOivgSJ9LAogICAgICAgICAgICAgIHt2YWx1ZToiUGFzc3BvcnQiLGxhYmVsOiLlpJblm73miqTnhacifSwgICAgICAgICAgICAgIAogICAgICAgICAgXSwKICAgICAgICAgIG9jY3VwYXRpb25UeXBlc29wdGlvbnM6Wy8v6IGM5Lia57G75Z6LCiAgICAgICAgICAgICAge3ZhbHVlOiJOb3JtYWwiLGxhYmVsOiLkuIDoiKzogYzlkZgifSwKICAgICAgICAgICAgICB7dmFsdWU6IlNlY3VyaXR5R3VhcmQiLGxhYmVsOiLkv53lronlkZgifSwKICAgICAgICAgICAgICB7dmFsdWU6IlBvbGljZSIsbGFiZWw6IuitpuWumCJ9CiAgICAgICAgICBdLAogICAgICAgICAgYXV0aGVudGljYXRlZFN0YXR1c2Vzb3B0aW9uczpbLy/lrp7lkI3nirbmgIEKICAgICAgICAgICAgICB7dmFsdWU6IlVuQXV0aGVudGljYXRlZCIsbGFiZWw6IuacquiupOivgSJ9LAogICAgICAgICAgICAgIHt2YWx1ZToiQXV0aGVudGljYXRpbmciLGxhYmVsOiLorqTor4HkuK0ifSwKICAgICAgICAgICAgICB7dmFsdWU6IkZhaWxlZCIsbGFiZWw6IuiupOivgeWksei0pSJ9LAogICAgICAgICAgICAgIHt2YWx1ZToiUGFzc2VkIixsYWJlbDoi5bey6K6k6K+BIn0KICAgICAgICAgIF0sCiAgICAgICAgICBjaGVja2VkU3RhdHVzZXNvcHRpb25zOlsvL+ivgeS7tuaguOmqjOeKtuaAgQogICAgICAgICAgICAgIHt2YWx1ZTowLGxhYmVsOiLmnKrmj5DkuqQifSwKICAgICAgICAgICAgICB7dmFsdWU6MixsYWJlbDoi5bey5o+Q5LqkIn0sCiAgICAgICAgICAgICAge3ZhbHVlOjEsbGFiZWw6IuW3suaguOmqjCJ9LAogICAgICAgICAgXSwKICAgICAgICAgIGNlclN0YXR1c0FycjpbLy/mjIHotYTmoLzor4EKICAgICAgICAgICAgICB7dmFsdWU6IjEiLGxhYmVsOiLmmK8ifSwKICAgICAgICAgICAgICB7dmFsdWU6IjAiLGxhYmVsOiLlkKYifSwKICAgICAgICAgIF0sCiAgICAgICAgICBjb250cmFjdFN0YXR1c0FycjpbLy/nrb7orqLlkIjlkIwKICAgICAgICAgICAgICB7dmFsdWU6IjEiLGxhYmVsOiLmmK8ifSwKICAgICAgICAgICAgICB7dmFsdWU6IjAiLGxhYmVsOiLlkKYifSwKICAgICAgICAgIF0sCiAgICAgICAgICBsZXZlbEFycjpbLy/kv53lronnrYnnuqctLeS/neWuieiBjOS4muaKgOiDveetiee6pwogICAgICAgICAgICB7dmFsdWU6NSxsYWJlbDoi5Yid57qn5L+d5a6J5ZGYIn0sCiAgICAgICAgICAgIHt2YWx1ZTo0LGxhYmVsOiLkuK3nuqfkv53lronlkZgifSwKICAgICAgICAgICAge3ZhbHVlOjMsbGFiZWw6IumrmOe6p+S/neWuieWRmCJ9LAogICAgICAgICAgICB7dmFsdWU6MixsYWJlbDoi5L+d5a6J5biIIn0sCiAgICAgICAgICAgIHt2YWx1ZToxLGxhYmVsOiLpq5jnuqfkv53lronluIgifSwKICAgICAgICAgIF0sCiAgICAgICAgICBzZXhBcnJPcHRpb25zOlsvL+S/neWuieetiee6py0t5L+d5a6J6IGM5Lia5oqA6IO9562J57qnCiAgICAgICAgICAgICAge3ZhbHVlOidNYWxlJyxsYWJlbDoi55S3In0sCiAgICAgICAgICAgICAge3ZhbHVlOidGZW1hbGUnLGxhYmVsOiLlpbMifQogICAgICAgICAgXSwKICAgICAgICAgIGluc3VyZUFyck9wdGlvbnM6WwogICAgICAgICAgICAge3ZhbHVlOidUcnVlJyxsYWJlbDoi5bey5oqV5L+dIn0sCiAgICAgICAgICAgICB7dmFsdWU6J0ZhbHNlJyxsYWJlbDoi5pyq5oqV5L+dIn0KICAgICAgICAgIF0sCiAgICAgICAgICBwb3NpdGlvbkFyck9wdGlvbnM6WwogICAgICAgICAgICAge3ZhbHVlOifnpL7kvJrlipvph48nLGxhYmVsOiLnpL7kvJrlipvph48ifSwKICAgICAgICAgICAgIHt2YWx1ZTon5rCR6K2mJyxsYWJlbDoi5rCR6K2mIn0KICAgICAgICAgIF0sCiAgICAgICAgICBiYWNrZ3JvdW5kU2NyZWVuaW5nU3RhdHVzT3B0aW9uczpbLy/og4zmma/nrZvmn6XnirbmgIEKICAgICAgICAgIHt2YWx1ZTowLGxhYmVsOiLmnKrog4znrZsifSwKICAgICAgICAgIHt2YWx1ZToxLGxhYmVsOiLmraPluLgifSwKICAgICAgICAgIHt2YWx1ZToyLGxhYmVsOiLlhbPms6gifSwKICAgICAgICAgIF0sCiAgICAgICAgICBkZWZhdWxEYXRhOltdLAogICAgICAgICAgSGlnaFNlYXJjaEZsYWc6ZmFsc2UsLy/pu5jorqTkuI3mmL7npLrpq5jnuqfmkJzntKIKICAgICAgICAgIFN0YWZmQm94RmxhZzp0cnVlLAogICAgICAgICAgb2NjdXBhdGlvblR5cGVBcnI6W10sCiAgICAgICAgICBnZXRUcmVlRGVwYXJ0bGlzdDpbXSwKICAgICAgICAgIHNob3dkaWFsb2dFeHBvcnQ6ZmFsc2UsCiAgICAgICAgICBkZXBhcnRsYWJlbDpg5omA5ZyoJHskU3VwZXJ2aXNlU3RyLmRlcGFydH3vvJpgLAogICAgICAgICAgaG9tZVRlbXBsYXRlQm9yYWRUeXBlOmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdob21lVGVtcGxhdGVCb3JhZFR5cGUnKXx8JycsCiAgICAgICAgICBzaG93RmxhZzpmYWxzZSwKICAgICAgICAgIHRqT2JqOnt9LAogICAgICAgICAgSGlnaERhdGFGbGFnOmZhbHNlLAogICAgICAgICAgaW5zdGl0dXRpb25hbENvZGU6bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2luc3RpdHV0aW9uYWxDb2RlJyl8fCcnLC8v5py65p6E57G75Z6LCiAgICAgICAgICBpbnN0U2hvdzp0cnVlLAogICAgICAgICAgaW5kZXg6JycsCiAgICAgICAgICB0eXBlRmxhZzonRW1wbG95ZWUnLAogICAgICAgICAgZG9tYWluQWRtaW46bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RvbWFpbkFkbWluJyk9PSd0cnVlJz90cnVlOmZhbHNlLAogICAgICAgICAgbGlzdHNob3dPYmo6ey8v5YiX5p+l6K+i5p2h5Lu25LiN5ZCM546v5aKD5pi+56S66ZqQ6JePCiAgICAgICAgICAgICAgYXV0aGVudGljYXRlZFN0YXR1c2VzOmZhbHNlLC8v5a6e5ZCN54q25oCBCiAgICAgICAgICAgICAgY2hlY2tlZFN0YXR1c2VzOmZhbHNlLC8v6K+B5Lu25qC46aqM54q25oCBCiAgICAgICAgICAgICAgY2VyU3RhdHVzOmZhbHNlLC8v5oyB6LWE5qC86K+BCiAgICAgICAgICAgICAgY29udHJhY3RTdGF0dXM6ZmFsc2UsLy/nrb7orqLlkIjlkIwKICAgICAgICAgICAgICBsZXZlbDpmYWxzZSwvL+S/neWuieetiee6py0t5L+d5a6J6IGM5Lia5oqA6IO9562J57qnCiAgICAgICAgICB9LAogICAgICAgICAgRGF0YUJvYXJkc2hvd09iajp7CiAgICAgICAgICAgICBBdXRoZW50aWNhdGluZzpmYWxzZSwKICAgICAgICAgICAgIFBhc3NlZDpmYWxzZSwKICAgICAgICAgICAgIEZhaWxlZDpmYWxzZSwKICAgICAgICAgIH0sCiAgICAgICAgICBpbnN0aXR1dGlvbmFsQ29kZUZsYWc6ZmFsc2UsLy/moLnmja7mnLrmnoTnsbvlnovliKTmlq3lrZfmrrXmmL7npLrpmpDol48KICAgICAgICB9ICAgICAgIAogICAgfSwKICAgIGNvbXBvbmVudHM6ewogICAgICAgIENvbHVtblNldCwKICAgICAgICBzZWxlY3RUcmVlLCAvL+azqOWGjOe7hOS7tgogICAgICAgIFVzZXJFbXBsb3llZURpYWxvZywgIAogICAgICAgIEltcG9ydEVtcGxveWVlRGlhbG9nLAogICAgICAgIEV4cG9ydEVtcGxveWVlRGlhbG9nLAogICAgICAgIFVzZXJFbXBsb3llZUludml0ZUluRGlhbG9nLAogICAgICAgIFN0YWZmQm94RGV0YWlsLAogICAgICAgIFVzZXJFbXBsb3llZUR1dHlEaWFsb2csCiAgICAgICAgVXNlckVtcGxveWVlY2hhbmdlT2NjdXBhdGlvblR5cGVEaWFsb2cKICAgIH0sCgogICAgbW91bnRlZCgpewogICAgICAgIGNvbnNvbGUubG9nKHRoaXMucGVybWlzc2lvbnNTdHIuaW5kZXhPZignUmVzZXRQd2QnKSkKICAgICB0aGlzLnRhYmxlRGF0YWxpc3QoKS8v5p+l6K+i6YOo6Zeo5YiX6KGoCgogICAgIGlmKHRoaXMuaG9tZVRlbXBsYXRlQm9yYWRUeXBlPT0ncnRwYXlUZW1wbGF0ZScpey8vcnTnjq/looMKICAgICAgICAgdGhpcy5saXN0c2hvd09iaj17CiAgICAgICAgICAgIGF1dGhlbnRpY2F0ZWRTdGF0dXNlczpmYWxzZSwvL+WunuWQjeeKtuaAgQogICAgICAgICAgICBjaGVja2VkU3RhdHVzZXM6dHJ1ZSwvL+ivgeS7tuaguOmqjOeKtuaAgQogICAgICAgICAgICBjZXJTdGF0dXM6dHJ1ZSwvL+aMgei1hOagvOivgQogICAgICAgICAgICBjb250cmFjdFN0YXR1czp0cnVlLC8v562+6K6i5ZCI5ZCMCiAgICAgICAgICAgIGxldmVsOnRydWUsLy/kv53lronnrYnnuqctLeS/neWuieiBjOS4muaKgOiDveetiee6pwogICAgICAgICB9CgogICAgICAgICB0aGlzLkRhdGFCb2FyZHNob3dPYmo9ey8v5pWw5o2u55yL5p2/5qCH562+5pi+56S66ZqQ6JePCiAgICAgICAgICAgICBBdXRoZW50aWNhdGluZzpmYWxzZSwKICAgICAgICAgICAgIFBhc3NlZDpmYWxzZSwKICAgICAgICAgICAgIEZhaWxlZDpmYWxzZSwKICAgICAgICAgfQoKICAgICAgICAgdGhpcy50YWJsZUNvbHVtbj1bCgogICAgICAgICAgICAgIHtwcm9wOiJuYW1lIixsYWJlbDoi5aeT5ZCNIix3aWR0aDoiMTAwIixzaG93OnRydWUsdmVyc2lvbjo1fSwKICAgICAgICAgICAgICB7cHJvcDoiZGVwYXJ0TmFtZSIsbGFiZWw6YOaJgOWcqCR7JFN1cGVydmlzZVN0ci5kZXBhcnR9YCx3aWR0aDoiMjUwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJvY2N1cGF0aW9uVHlwZSIsbGFiZWw6IuiBjOS4muexu+WeiyIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoidGVsZXBob25lIixsYWJlbDoi6LSm5Y+3Iix3aWR0aDoiMTQwIixzaG93OnRydWV9LCAgIAogICAgICAgICAgICAgIHtwcm9wOiJjcmVkZW50aWFsVHlwZSIsbGFiZWw6IuivgeS7tuexu+WeiyIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlLH0sCiAgICAgICAgICAgICAge3Byb3A6ImNyZWRlbnRpYWxOdW1iZXIiLGxhYmVsOiLor4Hku7blj7fnoIEiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sICAgICAgICAgICAgICAKICAgICAgICAgICAgICB7cHJvcDoiY2hlY2tlZFN0YXR1cyIsbGFiZWw6IuivgeS7tuaguOmqjCIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwgICAgICAgICAgICAgIAogICAgICAgICAgICAgIHtwcm9wOiJhdXRoZW50aWNhdGVkU3RhdHVzIixsYWJlbDoi5a6e5ZCN6K6k6K+B54q25oCBIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJhdXRoZW50aWNhdGVkUmVzdWx0IixsYWJlbDoi6K6k6K+B5aSx6LSl5Y6f5ZugIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJoaXJlZERhdGVUZXh0IixsYWJlbDpgJHskU3VwZXJ2aXNlU3RyLmVudHJ5feaXpeacn2Asd2lkdGg6IjE4MDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6ImNvbnRyYWN0U3RhdHVzIixsYWJlbDoi5piv5ZCm562+6K6i5ZCI5ZCMIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJjZXJTdGF0dXMiLGxhYmVsOiLmmK/lkKbmjIHmnInkv53lronotYTmoLzor4EiLHdpZHRoOiIxMjAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6ImNlck5vIixsYWJlbDoi5L+d5a6J6LWE5qC86K+B5Y+3Iix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJpbnN1cmUiLGxhYmVsOiLmmK/lkKbmipXkv50iLHdpZHRoOiIxMjAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6ImdyYWRlQ2VyU3RhdHVzIixsYWJlbDoi5piv5ZCm5pyJ562J57qn6K+BIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAoKICAgICAgICAgICAgICB7cHJvcDoiZ3JhZGVDZXJObyIsbGFiZWw6Iuetiee6p+ivgee8luWPtyIsd2lkdGg6IjEyMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoiZ3JhZGVMZXZlbCIsbGFiZWw6Iuetiee6p+ivgeetiee6pyIsd2lkdGg6IjEyMCIsc2hvdzp0cnVlfSwKCiAgICAgICAgICAgICAge3Byb3A6ImNyZWF0ZWRUaW1lIixsYWJlbDoi5b2V5YWl57O757uf5pe26Ze0Iix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgIAoKICAgICAgICAgICAgICB7cHJvcDoic3VwZXJpb3JOYW1lIixsYWJlbDoi5LiK57qnIix3aWR0aDoiMTAwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoicG9zaXRpb24iLGxhYmVsOiLogYzkvY0iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJwb3NpdGl2ZURhdGUiLGxhYmVsOiLovazmraPml6XmnJ8iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJzZXgiLGxhYmVsOiLmgKfliKsiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJiaXJ0aGRhdGUiLGxhYmVsOiLlh7rnlJ/ml6XmnJ8iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJhZ2UiLGxhYmVsOiLlubTpvoQiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJuYXRpb24iLGxhYmVsOiLmsJHml48iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJlZHVjYXRpb24iLGxhYmVsOiLmlofljJbnqIvluqYiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJwb2xpdGljc1N0YXR1cyIsbGFiZWw6IuaUv+ayu+mdouiyjCIsd2lkdGg6IjEyMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6ImhvdXNlaG9sZFR5cGUiLGxhYmVsOiLmiLfnsY3nsbvlnosiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJzdGF0dXJlIixsYWJlbDoi6Lqr6auY77yIQ03vvIkiLHdpZHRoOiIxMjAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJuYXRpdmVQbGFjZSIsbGFiZWw6Iuexjei0ryIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6Im1pbGl0YXJ5U3RhdHVzIixsYWJlbDoi5YW15b255oOF5Ya1Iix3aWR0aDoiMTAwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoibWFyaXRhbFN0YXR1cyIsbGFiZWw6IuWpmuWnu+eKtuWGtSIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6InZhbGlkRGF0ZVRvIixsYWJlbDoi6Lqr5Lu96K+B5pyJ5pWI5pyfIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoiYWRkcmVzcyIsbGFiZWw6Iui6q+S7veivgeS9j+WdgCIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCgogICAgICAgICAgICAgIHtwcm9wOiJwZXJzb25TdGF0dXMiLGxhYmVsOiLlkZjlt6XnirbmgIEiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJwcm9iYXRpb24iLGxhYmVsOiLor5XnlKjmnJ8iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJwbGFuUG9zaXRpdmVEYXRlIixsYWJlbDoi5Y6f5a6a6L2s5q2j5pel5pyfIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoiZW1lcmdlbmN5Q29udGFjdCIsbGFiZWw6Iue0p+aApeiBlOezu+S6uuWnk+WQjSIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6ImVtZXJnZW5jeVBob25lIixsYWJlbDoi57Sn5oCl6IGU57O75Lq655S16K+dIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoibGljZW5zZUxldmVsIixsYWJlbDoi6am+54Wn562J57qnIix3aWR0aDoiMTAwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoicGxhY2VPZk5vdyIsbGFiZWw6IueOsOS9j+WcsOWdgCIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCgogICAgICAgICAgICAgIHtwcm9wOiJkb21haW5BZG1pbiIsbGFiZWw6IuaYr+WQpuS4uue7hOe7h+euoeeQhuWRmCIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6ImRlcGFydEFkbWluIixsYWJlbDoi5piv5ZCm5Li66YOo6Zeo566h55CG5ZGYIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoibWFuYWdlRGVwYXJ0cyIsbGFiZWw6IuWPr+euoeeQhumDqOmXqCIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCgogICAgICAgICAgICAgIHtwcm9wOiJvcGVyYXRvck5hbWUiLGxhYmVsOiLmk43kvZzkuroiLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6Im9wZXJhdG9yVGltZSIsbGFiZWw6IuaTjeS9nOaXtumXtCIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwKICAgICAgICAgIF0KICAgICAgICAgbGV0IHRhYmxlQ29sdW1uQXJyPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0YWJsZUNvbHVtbkFycicpJiZKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0YWJsZUNvbHVtbkFycicpKXx8W10KICAgICAgICAgaWYodGFibGVDb2x1bW5BcnIubGVuZ3RoKXsKICAgICAgICAgICAgIHRhYmxlQ29sdW1uQXJyLmZvckVhY2goaXRlbT0+eyAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0udHlwZT09J0VtcGxveWVlJyl7CiAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbSkgIAogICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0udGFibGVDb2x1bW5bMF0udmVyc2lvbj09NCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb2x1bW49aXRlbS50YWJsZUNvbHVtbiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29sdW1uPXRoaXMudGFibGVDb2x1bW4KICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSkKICAgICAgICAgfQogICAgICAgICAgdGhpcy5lbXBsb3llZVRhYmxlQm9hcmRMaXN0KCkvL+aVsOaNrueci+adv+aVsOaNruaAu+mHjwogICAgIH0KICAgICBlbHNlIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhcHBpZFN1cGVydmlzZScpJiZKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhcHBpZFN1cGVydmlzZScpKS5hcHBJZD09J19fZDFxRUR5M3dZcThWRjVLdlVvRScpey8v55uR5o6n56uvLS3mnLrmnoTnlKjmiLfnrqHnkIYKICAgICAgICAgdGhpcy5saXN0c2hvd09iaj17CiAgICAgICAgICAgIGF1dGhlbnRpY2F0ZWRTdGF0dXNlczpmYWxzZSwvL+WunuWQjeeKtuaAgQogICAgICAgICAgICBjaGVja2VkU3RhdHVzZXM6ZmFsc2UsLy/or4Hku7bmoLjpqoznirbmgIEKICAgICAgICAgICAgY2VyU3RhdHVzOmZhbHNlLC8v5oyB6LWE5qC86K+BCiAgICAgICAgICAgIGNvbnRyYWN0U3RhdHVzOmZhbHNlLC8v562+6K6i5ZCI5ZCMCiAgICAgICAgICAgIGxldmVsOmZhbHNlLC8v5L+d5a6J562J57qnLS3kv53lronogYzkuJrmioDog73nrYnnuqcgICAgICAgICAgIAogICAgICAgICB9ICAgICAgICAKICAgICAgICAgdGhpcy5EYXRhQm9hcmRzaG93T2JqPW51bGwKICAgICAgICAgdGhpcy50YWJsZUNvbHVtbj1bICAgICAgICAgICAKCiAgICAgICAgICAgICAge3Byb3A6Im5hbWUiLGxhYmVsOiLlp5PlkI0iLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZSx2ZXJzaW9uOjV9LAogICAgICAgICAgICAgICB7cHJvcDoiZGVwYXJ0TmFtZSIsbGFiZWw6YOaJgOWcqCR7JFN1cGVydmlzZVN0ci5kZXBhcnR9YCx3aWR0aDoiMjUwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJvY2N1cGF0aW9uVHlwZSIsbGFiZWw6IuiBjOS4muexu+WeiyIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoidGVsZXBob25lIixsYWJlbDoi5omL5py65Y+3Iix3aWR0aDoiMTQwIixzaG93OnRydWV9LCAgIAogICAgICAgICAgICAgIHtwcm9wOiJjcmVkZW50aWFsVHlwZSIsbGFiZWw6IuivgeS7tuexu+WeiyIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlLH0sCiAgICAgICAgICAgICAge3Byb3A6ImNyZWRlbnRpYWxOdW1iZXIiLGxhYmVsOiLor4Hku7blj7fnoIEiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sICAgIAogICAgICAgICAgICAvLyAgIHtwcm9wOiJiYWNrZ3JvdW5kU2NyZWVuaW5nU3RhdHVzIixsYWJlbDoi6IOM5pmv562b5p+lIix3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAgLy8gICB7cHJvcDoiY2hlY2tlZFN0YXR1cyIsbGFiZWw6IuivgeS7tuaguOmqjCIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwgICAgICAgICAgICAgIAogICAgICAgICAgICAgIHtwcm9wOiJhdXRoZW50aWNhdGVkU3RhdHVzIixsYWJlbDoi5a6e5ZCN6K6k6K+B54q25oCBIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJhdXRoZW50aWNhdGVkUmVzdWx0IixsYWJlbDoi6K6k6K+B5aSx6LSl5Y6f5ZugIix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJoaXJlZERhdGVUZXh0IixsYWJlbDpgJHskU3VwZXJ2aXNlU3RyLmVudHJ5feaXpeacn2Asd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgLy8gICB7cHJvcDoiY29udHJhY3RTdGF0dXMiLGxhYmVsOiLmmK/lkKbnrb7orqLlkIjlkIwiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgIC8vICAge3Byb3A6ImNlclN0YXR1cyIsbGFiZWw6IuaYr+WQpuaMgeacieS/neWuiei1hOagvOivgSIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgLy8gICB7cHJvcDoiY2VyTm8iLGxhYmVsOiLkv53lronotYTmoLzor4Hlj7ciLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6Imluc3VyZSIsbGFiZWw6IuaYr+WQpuaKleS/nSIsd2lkdGg6IjEyMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgLy8gICB7cHJvcDoiZ3JhZGVDZXJTdGF0dXMiLGxhYmVsOiLmmK/lkKbmnInnrYnnuqfor4EiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6ImNyZWF0ZWRUaW1lIixsYWJlbDoi5b2V5YWl57O757uf5pe26Ze0Iix3aWR0aDoiMTIwIixzaG93OnRydWV9LAoKICAgICAgICAgICAgICB7cHJvcDoic3VwZXJpb3JOYW1lIixsYWJlbDoi5LiK57qnIix3aWR0aDoiMTAwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoicG9zaXRpb24iLGxhYmVsOiLogYzkvY0iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJwb3NpdGl2ZURhdGUiLGxhYmVsOiLovazmraPml6XmnJ8iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJzZXgiLGxhYmVsOiLmgKfliKsiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJiaXJ0aGRhdGUiLGxhYmVsOiLlh7rnlJ/ml6XmnJ8iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJhZ2UiLGxhYmVsOiLlubTpvoQiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJuYXRpb24iLGxhYmVsOiLmsJHml48iLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJlZHVjYXRpb24iLGxhYmVsOiLmlofljJbnqIvluqYiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJwb2xpdGljc1N0YXR1cyIsbGFiZWw6IuaUv+ayu+mdouiyjCIsd2lkdGg6IjEyMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6ImhvdXNlaG9sZFR5cGUiLGxhYmVsOiLmiLfnsY3nsbvlnosiLHdpZHRoOiIxMDAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJzdGF0dXJlIixsYWJlbDoi6Lqr6auY77yIQ03vvIkiLHdpZHRoOiIxMjAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJuYXRpdmVQbGFjZSIsbGFiZWw6Iuexjei0ryIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6Im1pbGl0YXJ5U3RhdHVzIixsYWJlbDoi5YW15b255oOF5Ya1Iix3aWR0aDoiMTAwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoibWFyaXRhbFN0YXR1cyIsbGFiZWw6IuWpmuWnu+eKtuWGtSIsd2lkdGg6IjEwMCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgIC8vICAge3Byb3A6InZhbGlkRGF0ZVRvIixsYWJlbDoi6Lqr5Lu96K+B5pyJ5pWI5pyfIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgLy8gICB7cHJvcDoiYWRkcmVzcyIsbGFiZWw6Iui6q+S7veivgeS9j+WdgCIsd2lkdGg6IjE4MCIsc2hvdzpmYWxzZX0sCiAgICAgICAgICAgICAge3Byb3A6ImRvbWFpbkFkbWluIixsYWJlbDoi5piv5ZCm5Li657uE57uH566h55CG5ZGYIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKICAgICAgICAgICAgICB7cHJvcDoiZGVwYXJ0QWRtaW4iLGxhYmVsOiLmmK/lkKbkuLrpg6jpl6jnrqHnkIblkZgiLHdpZHRoOiIxODAiLHNob3c6ZmFsc2V9LAogICAgICAgICAgICAgIHtwcm9wOiJtYW5hZ2VEZXBhcnRzIixsYWJlbDoi5Y+v566h55CG6YOo6ZeoIix3aWR0aDoiMTgwIixzaG93OmZhbHNlfSwKCiAgICAgICAgICAgICAge3Byb3A6Im9wZXJhdG9yTmFtZSIsbGFiZWw6IuaTjeS9nOS6uiIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoib3BlcmF0b3JUaW1lIixsYWJlbDoi5pON5L2c5pe26Ze0Iix3aWR0aDoiMTgwIixzaG93OnRydWV9LAogICAgICAgICAgXQoKICAgICAgICAgbGV0IHRhYmxlQ29sdW1uQXJyPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0YWJsZUNvbHVtbkFycicpJiZKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0YWJsZUNvbHVtbkFycicpKXx8W10KICAgICAgICAgaWYodGFibGVDb2x1bW5BcnIubGVuZ3RoKXsKICAgICAgICAgICAgIHRhYmxlQ29sdW1uQXJyLmZvckVhY2goaXRlbT0+eyAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0udHlwZT09J0VtcGxveWVlJyl7CiAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbSkgIAogICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0udGFibGVDb2x1bW5bMF0udmVyc2lvbj09NCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb2x1bW49aXRlbS50YWJsZUNvbHVtbiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29sdW1uPXRoaXMudGFibGVDb2x1bW4KICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSkKICAgICAgICAgfQogICAgIH1lbHNlIGlmKHRoaXMuaW5zdGl0dXRpb25hbENvZGU9PScwNjAxJyl7Ly/nvqTpmLLnvqTmsrstLeekvuWMuuitpuWKoeWKm+mHjwogICAgICAgIHRoaXMudGFibGVDb2x1bW49WyAgCiAgICAgICAgICAgICAge3Byb3A6Im5hbWUiLGxhYmVsOiLlp5PlkI0iLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZSx2ZXJzaW9uOjV9LAogICAgICAgICAgICAgIHtwcm9wOiJkZXBhcnROYW1lIixsYWJlbDpg5omA5ZyoJHskU3VwZXJ2aXNlU3RyLmRlcGFydH1gLHdpZHRoOiIyNTAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6Im9jY3VwYXRpb25UeXBlIixsYWJlbDoi6IGM5Lia57G75Z6LIix3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJwb3NpdGlvbiIsbGFiZWw6IuWyl+S9jSIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoidGVsZXBob25lIixsYWJlbDoi5omL5py65Y+3Iix3aWR0aDoiMTQwIixzaG93OnRydWV9LCAgIAogICAgICAgICAgICAgIHtwcm9wOiJjcmVkZW50aWFsVHlwZSIsbGFiZWw6IuivgeS7tuexu+WeiyIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlLH0sCiAgICAgICAgICAgICAge3Byb3A6ImNyZWRlbnRpYWxOdW1iZXIiLGxhYmVsOiLor4Hku7blj7fnoIEiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAge3Byb3A6ImNoZWNrZWRTdGF0dXMiLGxhYmVsOiLor4Hku7bmoLjpqowiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sICAgIAogICAgICAgICAgICAgIHtwcm9wOiJsYXN0Q2hlY2tlZFN0YXR1c1RpbWUiLGxhYmVsOiLmoLjpqozml6XmnJ8iLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sICAgICAgICAgICAgIAogICAgICAgICAgICAgIHtwcm9wOiJoaXJlZERhdGVUZXh0IixsYWJlbDoi5YWl6IGM5pel5pyfIix3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJjcmVhdGVkVGltZSIsbGFiZWw6IuW9leWFpeezu+e7n+aXtumXtCIsd2lkdGg6IjEyMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoib3BlcmF0b3JOYW1lIixsYWJlbDoi5pON5L2c5Lq6Iix3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJvcGVyYXRvclRpbWUiLGxhYmVsOiLmk43kvZzml7bpl7QiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICBdCiAgICAgfWVsc2UgaWYodGhpcy5pbnN0aXR1dGlvbmFsQ29kZSYmdGhpcy5pbnN0aXR1dGlvbmFsQ29kZS5zdGFydHNXaXRoKCcwNCcpKXsvL+WGheS/nS0t5L+d5Y2r566h55CG5ZGYCiAgICAgICAgdGhpcy50YWJsZUNvbHVtbj1bICAKICAgICAgICAgICAgICB7cHJvcDoibmFtZSIsbGFiZWw6IuWnk+WQjSIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlLHZlcnNpb246NX0sCiAgICAgICAgICAgICAge3Byb3A6ImRlcGFydE5hbWUiLGxhYmVsOmDmiYDlnKgkeyRTdXBlcnZpc2VTdHIuZGVwYXJ0fWAsd2lkdGg6IjI1MCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoib2NjdXBhdGlvblR5cGUiLGxhYmVsOiLogYzkuJrnsbvlnosiLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6InBvc2l0aW9uIixsYWJlbDoi5bKX5L2NIix3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJ0ZWxlcGhvbmUiLGxhYmVsOiLmiYvmnLrlj7ciLHdpZHRoOiIxNDAiLHNob3c6dHJ1ZX0sICAgCiAgICAgICAgICAgICAge3Byb3A6ImNyZWRlbnRpYWxUeXBlIixsYWJlbDoi6K+B5Lu257G75Z6LIix3aWR0aDoiMTgwIixzaG93OnRydWUsfSwKICAgICAgICAgICAgICB7cHJvcDoiY3JlZGVudGlhbE51bWJlciIsbGFiZWw6IuivgeS7tuWPt+eggSIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwgICAgICAgICAgICAgICAKICAgICAgICAgICAgICB7cHJvcDoiY2hlY2tlZFN0YXR1cyIsbGFiZWw6IuivgeS7tuaguOmqjCIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwgICAgCiAgICAgICAgICAgICAge3Byb3A6Imxhc3RDaGVja2VkU3RhdHVzVGltZSIsbGFiZWw6IuaguOmqjOaXpeacnyIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwgICAgICAgICAgICAgCiAgICAgICAgICAgICAge3Byb3A6ImhpcmVkRGF0ZVRleHQiLGxhYmVsOiLlhaXogYzml6XmnJ8iLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6ImNyZWF0ZWRUaW1lIixsYWJlbDoi5b2V5YWl57O757uf5pe26Ze0Iix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJvcGVyYXRvck5hbWUiLGxhYmVsOiLmk43kvZzkuroiLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6Im9wZXJhdG9yVGltZSIsbGFiZWw6IuaTjeS9nOaXtumXtCIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwKICAgICAgICAgIF0KICAgICB9ZWxzZSBpZih0aGlzLmluc3RpdHV0aW9uYWxDb2RlJiZ0aGlzLmluc3RpdHV0aW9uYWxDb2RlLnN0YXJ0c1dpdGgoJzA3Jykpey8v6KGM5Lia5Li7566hCiAgICAgICAgdGhpcy50YWJsZUNvbHVtbj1bICAKICAgICAgICAgICAgICB7cHJvcDoibmFtZSIsbGFiZWw6IuWnk+WQjSIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlLHZlcnNpb246NX0sCiAgICAgICAgICAgICAge3Byb3A6ImRlcGFydE5hbWUiLGxhYmVsOmDmiYDlnKgkeyRTdXBlcnZpc2VTdHIuZGVwYXJ0fWAsd2lkdGg6IjI1MCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoib2NjdXBhdGlvblR5cGUiLGxhYmVsOiLogYzkuJrnsbvlnosiLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6InBvc2l0aW9uIixsYWJlbDoi5bKX5L2NIix3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJ0ZWxlcGhvbmUiLGxhYmVsOiLmiYvmnLrlj7ciLHdpZHRoOiIxNDAiLHNob3c6dHJ1ZX0sICAgCiAgICAgICAgICAgICAge3Byb3A6ImNyZWRlbnRpYWxUeXBlIixsYWJlbDoi6K+B5Lu257G75Z6LIix3aWR0aDoiMTgwIixzaG93OnRydWUsfSwKICAgICAgICAgICAgICB7cHJvcDoiY3JlZGVudGlhbE51bWJlciIsbGFiZWw6IuivgeS7tuWPt+eggSIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwgICAgICAgICAgICAgICAKICAgICAgICAgICAgICB7cHJvcDoiY2hlY2tlZFN0YXR1cyIsbGFiZWw6IuivgeS7tuaguOmqjCIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwgICAgCiAgICAgICAgICAgICAge3Byb3A6Imxhc3RDaGVja2VkU3RhdHVzVGltZSIsbGFiZWw6IuaguOmqjOaXpeacnyIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwgICAgICAgICAgICAgCiAgICAgICAgICAgICAge3Byb3A6ImhpcmVkRGF0ZVRleHQiLGxhYmVsOiLlhaXogYzml6XmnJ8iLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6ImNyZWF0ZWRUaW1lIixsYWJlbDoi5b2V5YWl57O757uf5pe26Ze0Iix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJvcGVyYXRvck5hbWUiLGxhYmVsOiLmk43kvZzkuroiLHdzV2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoib3BlcmF0b3JUaW1lIixsYWJlbDoi5pON5L2c5pe26Ze0Iix3aWR0aDoiMTgwIixzaG93OnRydWV9LAogICAgICAgICAgXQogICAgIH1lbHNlIGlmKCh0aGlzLmluc3RpdHV0aW9uYWxDb2RlJiZ0aGlzLmluc3RpdHV0aW9uYWxDb2RlLmVuZHNXaXRoKCcwNycpKXx8KHRoaXMuaW5zdGl0dXRpb25hbENvZGUmJnRoaXMuaW5zdGl0dXRpb25hbENvZGUuZW5kc1dpdGgoJzA4JykpfHwodGhpcy5pbnN0aXR1dGlvbmFsQ29kZSYmdGhpcy5pbnN0aXR1dGlvbmFsQ29kZS5lbmRzV2l0aCgnMDknKSkpey8v5Lq65Y+j55uR566h57uE57uHCiAgICAgICAgdGhpcy50YWJsZUNvbHVtbj1bICAKICAgICAgICAgICAgICB7cHJvcDoibmFtZSIsbGFiZWw6IuWnk+WQjSIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlLHZlcnNpb246NX0sCiAgICAgICAgICAgICAge3Byb3A6ImRlcGFydE5hbWUiLGxhYmVsOmDmiYDlnKgkeyRTdXBlcnZpc2VTdHIuZGVwYXJ0fWAsd2lkdGg6IjI1MCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAgICB7cHJvcDoib2NjdXBhdGlvblR5cGUiLGxhYmVsOiLogYzkuJrnsbvlnosiLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6InRlbGVwaG9uZSIsbGFiZWw6IuaJi+acuuWPtyIsd2lkdGg6IjE0MCIsc2hvdzp0cnVlfSwgICAKICAgICAgICAgICAgICB7cHJvcDoiY3JlZGVudGlhbFR5cGUiLGxhYmVsOiLor4Hku7bnsbvlnosiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZSx9LAogICAgICAgICAgICAgIHtwcm9wOiJjcmVkZW50aWFsTnVtYmVyIixsYWJlbDoi6K+B5Lu25Y+356CBIix3aWR0aDoiMTgwIixzaG93OnRydWV9LCAgCiAgICAgICAgICAgICAge3Byb3A6ImNyZWF0ZWRUaW1lIixsYWJlbDoi5b2V5YWl57O757uf5pe26Ze0Iix3aWR0aDoiMTIwIixzaG93OnRydWV9LAogICAgICAgICAgICAgIHtwcm9wOiJvcGVyYXRvck5hbWUiLGxhYmVsOiLmk43kvZzkuroiLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgICAge3Byb3A6Im9wZXJhdG9yVGltZSIsbGFiZWw6IuaTjeS9nOaXtumXtCIsd2lkdGg6IjE4MCIsc2hvdzp0cnVlfSwKICAgICAgICAgIF0KICAgICB9ZWxzZSBpZigodGhpcy5pbnN0aXR1dGlvbmFsQ29kZSYmdGhpcy5pbnN0aXR1dGlvbmFsQ29kZS5zdGFydHNXaXRoKCcwMicpKSl7Ly/lpKfmtLvooYzkuJoKICAgICAgICB0aGlzLnRhYmxlQ29sdW1uPVsgIAogICAgICAgICAgICB7cHJvcDoibmFtZSIsbGFiZWw6IuWnk+WQjSIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlLHZlcnNpb246NX0sCiAgICAgICAgICAgIHtwcm9wOiJkZXBhcnROYW1lIixsYWJlbDpg5omA5ZyoJHskU3VwZXJ2aXNlU3RyLmRlcGFydH1gLHdpZHRoOiIyNTAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgIHtwcm9wOiJvY2N1cGF0aW9uVHlwZSIsbGFiZWw6IuiBjOS4muexu+WeiyIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwKICAgICAgICAgICAge3Byb3A6InRlbGVwaG9uZSIsbGFiZWw6IuaJi+acuuWPtyIsd2lkdGg6IjE0MCIsc2hvdzp0cnVlfSwgICAKICAgICAgICAgICAge3Byb3A6ImNyZWRlbnRpYWxUeXBlIixsYWJlbDoi6K+B5Lu257G75Z6LIix3aWR0aDoiMTgwIixzaG93OnRydWUsfSwKICAgICAgICAgICAge3Byb3A6ImNyZWRlbnRpYWxOdW1iZXIiLGxhYmVsOiLor4Hku7blj7fnoIEiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgIHtwcm9wOiJjaGVja2VkU3RhdHVzIixsYWJlbDoi6K+B5Lu25qC46aqM54q25oCBIix3aWR0aDoiMTIwIixzaG93OnRydWV9LCAKICAgICAgICAgICAge3Byb3A6Imxhc3RDaGVja2VkU3RhdHVzVGltZSIsbGFiZWw6IuaguOmqjOaXpeacnyIsd2lkdGg6IjEwMCIsc2hvdzp0cnVlfSwgICAgICAgICAgICAgCiAgICAgICAgICAgIHtwcm9wOiJoaXJlZERhdGVUZXh0IixsYWJlbDoi5YWl6IGM5pel5pyfIix3aWR0aDoiMTAwIixzaG93OnRydWV9LAogICAgICAgICAgICB7cHJvcDoiY3JlYXRlZFRpbWUiLGxhYmVsOiLlvZXlhaXns7vnu5/ml7bpl7QiLHdpZHRoOiIxMjAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgIHtwcm9wOiJvcGVyYXRvck5hbWUiLGxhYmVsOiLmk43kvZzkuroiLHdpZHRoOiIxMDAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICAgIHtwcm9wOiJvcGVyYXRvclRpbWUiLGxhYmVsOiLmk43kvZzml7bpl7QiLHdpZHRoOiIxODAiLHNob3c6dHJ1ZX0sCiAgICAgICAgICBdCiAgICAgfQogICAgIGVsc2V7CiAgICAgICAgIHRoaXMubGlzdHNob3dPYmo9ewogICAgICAgICAgICBhdXRoZW50aWNhdGVkU3RhdHVzZXM6dHJ1ZSwvL+WunuWQjeeKtuaAgQogICAgICAgICAgICBjaGVja2VkU3RhdHVzZXM6dHJ1ZSwvL+ivgeS7tuaguOmqjOeKtuaAgQogICAgICAgICAgICBjZXJTdGF0dXM6dHJ1ZSwvL+aMgei1hOagvOivgQogICAgICAgICAgICBjb250cmFjdFN0YXR1czp0cnVlLC8v562+6K6i5ZCI5ZCMCiAgICAgICAgICAgIGxldmVsOnRydWUsLy/kv53lronnrYnnuqctLeS/neWuieiBjOS4muaKgOiDveetiee6pwogICAgICAgICB9CiAgICAgICAgIHRoaXMuRGF0YUJvYXJkc2hvd09iaj17Ly/mlbDmja7nnIvmnb/moIfnrb7mmL7npLrpmpDol48KICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW5nOnRydWUsCiAgICAgICAgICAgICBQYXNzZWQ6dHJ1ZSwKICAgICAgICAgICAgIEZhaWxlZDp0cnVlLAogICAgICAgICB9CiAgICAgICAgIGxldCB0YWJsZUNvbHVtbkFycj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGFibGVDb2x1bW5BcnInKSYmSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGFibGVDb2x1bW5BcnInKSl8fFtdCiAgICAgICAgIGlmKHRhYmxlQ29sdW1uQXJyLmxlbmd0aCl7CiAgICAgICAgICAgICB0YWJsZUNvbHVtbkFyci5mb3JFYWNoKGl0ZW09PnsgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICBpZihpdGVtLnR5cGU9PSdFbXBsb3llZScpewogICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGl0ZW0pICAKICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtLnRhYmxlQ29sdW1uWzBdLnZlcnNpb249PTQpewogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29sdW1uPWl0ZW0udGFibGVDb2x1bW4gICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNvbHVtbj10aGlzLnRhYmxlQ29sdW1uCiAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pCiAgICAgICAgIH0KCiAgICAgICAgIHRoaXMuZW1wbG95ZWVUYWJsZUJvYXJkTGlzdCgpLy/mlbDmja7nnIvmnb/mlbDmja7mgLvph48KICAgICB9CgogICAgIGlmKHRoaXMuaG9tZVRlbXBsYXRlQm9yYWRUeXBlPT0ncnRwYXlUZW1wbGF0ZScpewogICAgICAgICB0aGlzLm9jY3VwYXRpb25UeXBlQXJyPVt7bGFiZWw6J+S4gOiIrOiBjOWRmCcsdmFsdWU6J05vcm1hbCd9XQogICAgIH1lbHNlIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhcHBpZFN1cGVydmlzZScpJiZKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhcHBpZFN1cGVydmlzZScpKS5hcHBJZD09J19fZDFxRUR5M3dZcThWRjVLdlVvRScpey8v55uR5o6n56uvLS3mnLrmnoTnlKjmiLfnrqHnkIYKICAgICAgICB0aGlzLm9jY3VwYXRpb25UeXBlQXJyPVt7bGFiZWw6J+S4gOiIrOiBjOWRmCcsdmFsdWU6J05vcm1hbCd9LHtsYWJlbDon5L+d5a6J5ZGYJyx2YWx1ZTonU2VjdXJpdHlHdWFyZCd9LHtsYWJlbDon6K2m5a6YJyx2YWx1ZTonUG9saWNlJ31dCiAgICAgfQogICAgIGVsc2V7CiAgICAgICAgIHRoaXMub2NjdXBhdGlvblR5cGVBcnI9W3tsYWJlbDon5LiA6Iis6IGM5ZGYJyx2YWx1ZTonTm9ybWFsJ30se2xhYmVsOifkv53lronlkZgnLHZhbHVlOidTZWN1cml0eUd1YXJkJ31dCiAgICAgfQogICAgICB0aGlzLmVtcGxveWVlVGFibGVMaXN0KCkvL+WIl+ihqOihqOagvAogICAgICAKCiAgICAgIHN3aXRjaCh0aGlzLmluc3RpdHV0aW9uYWxDb2RlKXsKICAgICAgICAgIGNhc2UgJzAxMDInOi8v5L+d5a6J5pyN5Yqh5YWs5Y+4CiAgICAgICAgICB0aGlzLmluc3RTaG93PXRydWUKICAgICAgICAgIHRoaXMuaW5zdGl0dXRpb25hbENvZGVGbGFnPXRydWUvL+agueaNruacuuaehOexu+Wei+WIpOaWrS3og4zmma/nrZvmn6XlrZfmrrUKICAgICAgICAgIHRoaXMuY3JlZGVudGlhbFR5cGVzb3B0aW9ucz10aGlzLmNyZWRlbnRpYWxUeXBlc29wdGlvbnNfSW5zdAogICAgICAgICAgYnJlYWs7ICAgICAgICAgCiAgICAgICAgICBjYXNlICcwMTAzJzovL+S/neWuieWfueiureWNleS9jSzkv53lronln7norq3mnLrmnoQKICAgICAgICAgIHRoaXMuaW5zdFNob3c9dHJ1ZQogICAgICAgICAgdGhpcy5pbnN0aXR1dGlvbmFsQ29kZUZsYWc9dHJ1ZS8v5qC55o2u5py65p6E57G75Z6L5Yik5patLeiDjOaZr+etm+afpeWtl+autQogICAgICAgICAgdGhpcy5jcmVkZW50aWFsVHlwZXNvcHRpb25zPXRoaXMuY3JlZGVudGlhbFR5cGVzb3B0aW9uc19JbnN0CiAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJzAxMDQnOi8v6Ieq6KGM5oub55So5L+d5a6J5ZGY5Y2V5L2NCiAgICAgICAgICB0aGlzLmluc3RTaG93PXRydWUKICAgICAgICAgIHRoaXMuaW5zdGl0dXRpb25hbENvZGVGbGFnPXRydWUvL+agueaNruacuuaehOexu+Wei+WIpOaWrS3og4zmma/nrZvmn6XlrZfmrrUKICAgICAgICAgIHRoaXMuY3JlZGVudGlhbFR5cGVzb3B0aW9ucz10aGlzLmNyZWRlbnRpYWxUeXBlc29wdGlvbnNfSW5zdAogICAgICAgICAgYnJlYWs7IAogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHRoaXMuaW5zdFNob3c9ZmFsc2UKICAgICAgfQogICAgICBpZih0aGlzLmluc3RpdHV0aW9uYWxDb2RlRmxhZz09ZmFsc2Upey8v5LiN5piv5py65p6E57G75Z6L5Yig6Zmk5a2X5q61CiAgICAgICAgdGhpcy50YWJsZUNvbHVtbi5mb3JFYWNoKChpdGVtLGluZGV4KT0+ewogICAgICAgICAgICBpZihpdGVtLnByb3A9PSdiYWNrZ3JvdW5kU2NyZWVuaW5nU3RhdHVzJyl7Ly/og4zmma/nrZvmn6UKICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb2x1bW4uc3BsaWNlKGluZGV4LDEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoaXRlbS5wcm9wPT0nbGFzdENoZWNrZWRTdGF0dXNUaW1lJyl7Ly/moLjpqozml6XmnJ8KICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb2x1bW4uc3BsaWNlKGluZGV4LDEpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgICB9CiAgICB9LAogICAgd2F0Y2g6ewogICAgICBtdWx0aXBsZVNlbGVjdGlvbigpewogICAgICAgICAgaWYodGhpcy5tdWx0aXBsZVNlbGVjdGlvbi5sZW5ndGgpewogICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQ9ZmFsc2UKICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQ9dHJ1ZQogICAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgbWV0aG9kczp7CiAgICAgICAgZG93bmxvYWRUZW1wbGF0ZShmaWxlbmFtZSkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwcm9jZXNzLmVudi5WVUVfQVBQX0JBU0VfVVJMICsgYHN0YXRpYy9zaWdub24vc3RhZmYvc3RhdGljL3RlbXBsYXRlLyR7ZmlsZW5hbWV9YDsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdmaWxlUGF0aCcsZmlsZVBhdGgpCiAgICAgICAgICAgICAgICAvLyDmt7vliqDml7bpl7TmiLPpgb/lhY3nvJPlrZgKICAgICAgICAgICAgICAgIC8vIGNvbnN0IGZpbGVQYXRoID0gYC9zdGF0aWMvdGVtcGxhdGUvJHtmaWxlbmFtZX0/dj0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWA7CiAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICAgICAgICAgICAgbGluay5ocmVmID0gZmlsZVBhdGg7CiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7CiAgICAgICAgICAgICAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspOwogICAgICAgICAgICAgICAgbGluay5jbGljaygpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2VzcyhgJHtmaWxlbmFtZX3kuIvovb3lvIDlp4tgKTsKICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoYOS4i+i9vSR7ZmlsZW5hbWV95aSx6LSlYCk7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfkuIvovb3lpLHotKU6JywgZXJyb3IpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBEYXRhVGpjbGljayhpbngsaXRlbSx2YWx1ZSx0eXBlKXsKICAgICAgICAgIHRoaXMuaW5kZXg9aW54CiAgICAgICAgICB0aGlzLnBhcmFtcz17fQogICAgICAgICAgdGhpcy4kc2V0KHRoaXMucGFyYW1zLCdwYWdlSW5kZXgnLDEpCiAgICAgICAgICB0aGlzLiRzZXQodGhpcy5wYXJhbXMsJ3BhZ2VTaXplJywxMCkKICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnBhcmFtcywna2V5d29yZCcsJycpCiAgICAgICAgICB0aGlzLiRzZXQodGhpcy5wYXJhbXMsJ3RvdGFsJywwKQogICAgICAgICAKICAgICAgICAgdGhpcy4kc2V0KHRoaXMucGFyYW1zLGl0ZW0sdmFsdWUpCiAgICAgICAgIGlmKHR5cGUpewogICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnBhcmFtcyx0eXBlLFsnU2VjdXJpdHlHdWFyZCddKSAgCiAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgdGhpcy5oaWdoU2VhcmNoKCkKICAgICAgICB9LAogICAgICAgIGNoYW5nZWNyZWRlbnRpYWxUeXBlcygpewogICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpPT57CiAgICAgICAgICAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCkKICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2hhbmdlb2NjdXBhdGlvblR5cGVzKCl7CiAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCk9PnsKICAgICAgICAgICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKQogICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjaGFuZ2VhdXRoZW50aWNhdGVkU3RhdHVzZXMoKXsKICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+ewogICAgICAgICAgICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpCiAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGNoYW5nZWNoZWNrZWRTdGF0dXNlcygpewogICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpPT57CiAgICAgICAgICAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCkKICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2hhbmdlY2VyU3RhdHVzKCl7CiAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCk9PnsKICAgICAgICAgICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKQogICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjaGFuZ2Vjb250cmFjdFN0YXR1cygpewogICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpPT57CiAgICAgICAgICAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCkKICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2hhbmdlSGlyZWREYXRlKCl7CiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpPT57CiAgICAgICAgICAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCkKICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2hhbmdlbGV2ZWwoKXsKICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCk9PnsKICAgICAgICAgICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKQogICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjaGFuZ2VzZXgoKXsKICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCk9PnsKICAgICAgICAgICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKQogICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjaGFuZ2ViZWdpbkFnZSgpewogICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+ewogICAgICAgICAgICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpCiAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGNoYW5nZWVuZEFnZSgpewogICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+ewogICAgICAgICAgICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpCiAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGNoYW5nZXN0YXJ0RW5kRGF0ZSgpewogICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+ewogICAgICAgICAgICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpCiAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGNoYW5nZWluc3VyZSgpewogICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+ewogICAgICAgICAgICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpCiAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIERhdGFCb2FyZCgpeyAgICAgICAgICAgCiAgICAgICAgICAgdGhpcy5pbmRleD0tMQogICAgICAgICAgIHRoaXMucGFyYW1zPXt9CiAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMucGFyYW1zLCdwYWdlSW5kZXgnLDEpCiAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMucGFyYW1zLCdwYWdlU2l6ZScsMTApCiAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMucGFyYW1zLCdrZXl3b3JkJywnJykKICAgICAgICAgICB0aGlzLiRzZXQodGhpcy5wYXJhbXMsJ3RvdGFsJywwKQogICAgICAgICAgIHRoaXMuZW1wbG95ZWVUYWJsZUJvYXJkTGlzdCgpLy/mlbDmja7nnIvmnb/mlbDmja7mgLvph48KICAgICAgICAgICB0aGlzLmhpZ2hTZWFyY2goKQogICAgICAgIH0sCiAgICAgICAgc2VsZWN0Q2xpY2tUKHZhbCl7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbCkKICAgICAgICAgICAgdGhpcy5nZXRUcmVlRGVwYXJ0bGlzdD12YWwKICAgICAgICB9LAogICAgICAgIGNvbHVtblNldFBvcCgpewogICAgICAgICAgdGhpcy5zaG93ZGlhbG9nQ29sdW1uU2V0PXRydWUKICAgICAgICAgIHRoaXMuJHJlZnMuY29sdW1uUmVmLmdldFRhYmxlUm93KHRoaXMudGFibGVDb2x1bW4sIDApOwogICAgICAgIH0sCiAgICAgICAgYWRkVXNlcigpey8v5re75Yqg5ZGY5bel5by556qXCiAgICAgICAgICB0aGlzLnNob3dkaWFsb2c9dHJ1ZSAgICAgICAgICAKICAgICAgICB9LCAKICAgICAgICBhZGRVc2VySW4oKXsvL+mCgOivt+WFpeiBjOW8ueeqlwogICAgICAgICAgdGhpcy5zaG93ZGlhbG9nSW49dHJ1ZSAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIGFkZFVzZXJEdXR5KCl7Ly/pgoDor7fpqbvli6TlvLnnqpcKICAgICAgICAgIHRoaXMuc2hvd2RpYWxvZ0R1dHk9dHJ1ZSAgICAgCiAgICAgICAgICB0aGlzLiRyZWZzLkR1dHlDaGlsZHJlbi5nZXRUYWJsZVJvdyh7fSwgMCk7ICAgICAgICAKICAgICAgICB9LAogICAgICAgIHN3aXRjaEhpZ2goKXsvL+WIh+aNoumrmOe6p+aQnOe0ogogICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpPT57CiAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy5wYXJhbXMsImRlcGFydElkcyIsW10pCiAgICAgICAgICAgfSkKICAgICAgICAgICB0aGlzLkhpZ2hTZWFyY2hGbGFnPSF0aGlzLkhpZ2hTZWFyY2hGbGFnCiAgICAgICAgfSwgCiAgICAgICAgc2VhcmNoKCl7Ly/mn6Xor6IKICAgICAgICAgdGhpcy5wYXJhbXM9ey8v5pCc57Si5p2h5Lu2CiAgICAgICAgICAgIHBhZ2VJbmRleDoxLAogICAgICAgICAgICBwYWdlU2l6ZToxMCwKICAgICAgICAgICAga2V5d29yZDp0aGlzLnBhcmFtcy5rZXl3b3JkLCAgICAgICAgICAgICAKICAgICAgICAgIH0sIAogICAgICAgICAgdGhpcy5pbmRleD0tMQogICAgICAgICAgbGV0IG9iajI9e2RvbWFpbklkOnRoaXMuJHJvdXRlLnF1ZXJ5LmRvbWFpbklkfQogICAgICAgICAgU2VhcmNoRW1wbHllZUFwaSh0aGlzLnBhcmFtcyxvYmoyKS50aGVuKHJlc3BvbnNlPT57CiAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuZGF0YSl7CiAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YUVtcGxveWVlPXJlc3BvbnNlLmRhdGEuZGF0YQogICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMudG90YWw9cmVzcG9uc2UuZGF0YS50b3RhbAogICAgICAgICAgICAgICB9CiAgICAgICAgICB9KQogICAgICAgIH0sICAgICAgCiAgICAgICAgaGlnaFNlYXJjaEJ1dHRvbigpey8v6auY57qn5p+l6K+iCiAgICAgICAgICB0aGlzLmluZGV4PS0xCiAgICAgICAgICB0aGlzLiRzZXQodGhpcy5wYXJhbXMsJ3BhZ2VJbmRleCcsMSkKICAgICAgICAgIHRoaXMuaGlnaFNlYXJjaCgpCiAgICAgICAgfSwKICAgICAgICBoaWdoU2VhcmNoKCl7Ly/pq5jnuqfmn6Xor6IKICAgICAgICAgIGxldCBvYmoyPXtkb21haW5JZDp0aGlzLiRyb3V0ZS5xdWVyeS5kb21haW5JZH0KICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucGFyYW1zKQogICAgICAgICAgdGhpcy4kc2V0KHRoaXMucGFyYW1zLCdzdGFydERhdGUnLHRoaXMucGFyYW1zLnN0YXJ0RW5kRGF0ZSYmdGhpcy5wYXJhbXMuc3RhcnRFbmREYXRlWzBdfHwnJykKICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnBhcmFtcywnZW5kRGF0ZScsdGhpcy5wYXJhbXMuc3RhcnRFbmREYXRlJiZ0aGlzLnBhcmFtcy5zdGFydEVuZERhdGVbMV18fCcnKQogICAgICAgICAgCiAgICAgICAgICBoaWdoU2VhcmNoRW1wbHllZUFwaSh0aGlzLnBhcmFtcyxvYmoyKS50aGVuKHJlc3BvbnNlPT57CiAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuZGF0YSl7CiAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YUVtcGxveWVlPXJlc3BvbnNlLmRhdGEuZGF0YQogICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMudG90YWw9cmVzcG9uc2UuZGF0YS50b3RhbAogICAgICAgICAgICAgICB9CiAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgcmVzZXRTZWFyY2hGb3JtKCl7Ly/ph43nva4KICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnBhcmFtcykKICAgICAgICAgICB0aGlzLmRlZmF1bERhdGE9W10gICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCk9PnsKICAgICAgICAgICAgICB0aGlzLiRyZWZzLnJ1bGVGb3JtJiZ0aGlzLiRyZWZzLnJ1bGVGb3JtLnJlc2V0RmllbGRzKCk7IC8v6YeN572u6L6T5YWl5qGG5o+Q56S6IAogICAgICAgICAgICAgIHRoaXMucGFyYW1zPXsvL+mHjee9ruaQnOe0ouadoeS7tgogICAgICAgICAgICAgICAgcGFnZUluZGV4OjEsCiAgICAgICAgICAgICAgICBwYWdlU2l6ZToxMCwKICAgICAgICAgICAgICAgIGtleXdvcmQ6JycsICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdG90YWw6MCwKICAgICAgICAgICAgICB9LCAgCiAgICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMucGFyYW1zLCJkZXBhcnRJZHMiLFtdKQogICAgICAgICAgICAgIHRoaXMuaGlnaFNlYXJjaCgpCiAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHRhYmxlRGF0YWxpc3QoKXsvL+mDqOmXqOWIl+ihqC3ooajmoLzliJfooagKICAgICAgICAgICAgbGV0IG9iaj17ZG9tYWluSWQ6dGhpcy4kcm91dGUucXVlcnkuZG9tYWluSWR9Ly/ojrflj5Z1cmzln59kb21haW5JZAogICAgICAgICAgICBTdGFmZkRlcGFydG1lbnRMaXN0QXBpKG9iaix0cnVlKS50aGVuKHJlc3BvbnNlPT57CiAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEpewogICAgICAgICAgICAgICAgIHRoaXMudGFibGVEYXRhPXJlc3BvbnNlLmRhdGEKICAgICAgICAgICAgICAgICB0aGlzLnNvcnRUYWJsZURhdGEodGhpcy50YWJsZURhdGEpCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHNvcnRUYWJsZURhdGEoYXJyKXsvL+mAkuW9kuaOkuW6jwogICAgICAgICAgICBpZihhcnIubGVuZ3RoKXsKICAgICAgICAgICAgICAgIGFyci5mb3JFYWNoKGl0ZW09PnsKICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc3BsYXlPcmRlck51bWJlcj1pdGVtLmRpc3BsYXlPcmRlcgogICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKXsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0VGFibGVEYXRhKGl0ZW0uY2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudGFibGVEYXRhKQogICAgICAgIH0sCiAgICAgICAgZW1wbG95ZWVUYWJsZUxpc3QoKXsvL+WIl+ihqOihqOagvC3mn6Xor6Lnu5PmnpwKICAgICAgICAgICBsZXQgb2JqMj17ZG9tYWluSWQ6dGhpcy4kcm91dGUucXVlcnkuZG9tYWluSWR9CiAgICAgICAgICAgZW1wbG95ZWVUYWJsZUxpc3RBcGkodGhpcy5wYXJhbXMsb2JqMikudGhlbihyZXNwb25zZT0+ewogICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGFFbXBsb3llZT1yZXNwb25zZS5kYXRhLmRhdGEKICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLnRvdGFsPXJlc3BvbnNlLmRhdGEudG90YWwKICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZW1wbG95ZWVUYWJsZUJvYXJkTGlzdCgpey8v5pWw5o2u55yL5p2/5pWw5o2u5oC76YePLeafpeivoue7k+aenAogICAgICAgICAgIGxldCBvYmoyPXtkb21haW5JZDp0aGlzLiRyb3V0ZS5xdWVyeS5kb21haW5JZH0KICAgICAgICAgICBlbXBsb3llZVRhYmxlQm9hcmRMaXN0QXBpKHRoaXMucGFyYW1zLG9iajIpLnRoZW4ocmVzcG9uc2U9PnsKICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpCiAgICAgICAgICAgICAgIHRoaXMudGpPYmo9cmVzcG9uc2UuZGF0YQogICAgICAgICAgICAKICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2hlY2tDaGFuZ2Uoa2V5LCBkYXRhKSB7Ly9zZWxlY3RUcmVl57uE5Lu2LeWkjemAieahhumAieS4reeahOaVsOaNrgogICAgICAgICAgICBjb25zb2xlLmxvZyhrZXkpCiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpCiAgICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnBhcmFtcywiZGVwYXJ0SWRzIixrZXkpCiAgICAgICAgICAgIHRoaXMuZGVmYXVsRGF0YT10aGlzLnBhcmFtcy5kZXBhcnRJZHMKICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5kZWZhdWxEYXRhKQogICAgICAgIH0sCiAgICAgICAgaGFuZGxlQ3VycmVudENoYW5nZSh2YWwpey8v5YiG6aG15YiH5o2i6aG156CBCiAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbCkKICAgICAgICAgICAgdGhpcy5wYXJhbXMucGFnZUluZGV4PXZhbAogICAgICAgICAgICB0aGlzLmVtcGxveWVlVGFibGVMaXN0KCkKICAgICAgICB9LAogICAgICAgIGhhbmRsZVNpemVDaGFuZ2UodmFsKXsvL+WIh+aNouavj+mhteadoeaVsAogICAgICAgICAgIGNvbnNvbGUubG9nKHZhbCkKICAgICAgICAgICAgdGhpcy5wYXJhbXMucGFnZUluZGV4PTEgLy/ph43nva7nrKzkuIDpobUKICAgICAgICAgICAgdGhpcy5wYXJhbXMucGFnZVNpemU9dmFsCiAgICAgICAgICAgIHRoaXMuZW1wbG95ZWVUYWJsZUxpc3QoKQogICAgICAgIH0sCiAgICAgICAgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHZhbCkgey8v6YCJ5Lit5YWo6YCJCiAgICAgICAgICBjb25zb2xlLmxvZyh2YWwpCiAgICAgICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uID0gdmFsOwogICAgICAgIH0sICAgICAgCiAgICAgICAgaGFuZGxlU2VsZWN0aW9uQWxsQ2hhbmdlKHNlbGVjdGlvbixmaXJzdCl7Ly/lhajpgIkKICAgICAgICAgICAgaWYgKCFmaXJzdCkgewogICAgICAgICAgICAgICAgdGhpcy5pc0FsbFNlbGVjdCA9ICF0aGlzLmlzQWxsU2VsZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbGVjdGlvbi5tYXAoZWwgPT4gewogICAgICAgICAgICAgICAgaWYgKGVsLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgZWwuY2hpbGRyZW4ubWFwKGogPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbihqLCB0aGlzLmlzQWxsU2VsZWN0KTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBpZiAoZWwuY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdGlvbkFsbENoYW5nZShlbC5jaGlsZHJlbiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9LCAKICAgICAgICB0b2dnbGVTZWxlY3Rpb24ocm93LCBzZWxlY3QpIHsvL+WFqOmAiemAieS4reS4juWPlua2iOmAieS4rSAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChzZWxlY3QpIHsKICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMuZGlzdHJpY3RUYWJsZS50b2dnbGVSb3dTZWxlY3Rpb24ocm93LCBzZWxlY3QpOy8v5YWo6YCJ6YCJ5LitCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLmRpc3RyaWN0VGFibGUuY2xlYXJTZWxlY3Rpb24oKTsvL+WPlua2iOmAieS4rQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhZGREZXB0KCl7Ly/mlrDlop4gICAgICAgICAgICAgCiAgICAgICAgICB0aGlzLnNob3dkaWFsb2cgPSB0cnVlOwogICAgICAgICAgdGhpcy4kcmVmcy5wb3BDaGlsZHJlbi5nZXRUYWJsZVJvdyh7fSwgMCk7ICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgZWRpdFN0YWZmKHJvdyl7Ly/nvJbovpEKICAgICAgICAgIHRoaXMuU3RhZmZCb3hGbGFnID0gZmFsc2U7IAogICAgICAgICAgdGhpcy5zdGFmZmluZm89cm93ICAgICAgICAgCiAgICAgICAgfSwKICAgICAgICByZXNldFBXRFN0YWZmKHJvdyl7CiAgICAgICAgICAgIC8v5Yig6Zmk6YCJ5Lit6KGo5qC85pWw5o2uCiAgICAgICAgICAgIGxldCBvYmoyPXtkb21haW5JZDp0aGlzLiRyb3V0ZS5xdWVyeS5kb21haW5JZH0vL+iOt+WPlnVybOWfn2RvbWFpbklkICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhyb3cpICE9ICIiKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRjb25maXJtKCLmraTmk43kvZzlsIbmiYDpgInlkZjlt6XnmoTlr4bnoIHph43nva7kuLpBYmNkQOWKoOivgeS7tuWPt+eggeWQjuWFreS9jSwg5piv5ZCm57un57utPyIsICLmj5DnpLoiLCB7CiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsCiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICAgICAgICAgIHR5cGU6ICJ3YXJuaW5nIiwKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgcmVzZXRQV0RTdGFmZkFwaShyb3csb2JqMikudGhlbigocmVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcykKICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzLnN0YXR1cz09MjAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe3R5cGU6J3N1Y2Nlc3MnLG1lc3NhZ2U6J+mHjee9ruaIkOWKnyd9KQogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe3R5cGU6J3N1Y2Nlc3MnLG1lc3NhZ2U6J+mHjee9ruWksei0pSd9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gICB0aGlzLnRhYmxlRGF0YWxpc3QoKS8v6KGo5qC85YiX6KGoCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnJhZGlvID0gIiI7IC8v5riF56m66YCJ5LitCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZGVsRGVwdChyb3cpey8v5Yig6ZmkCiAgICAgICAgICAgIC8v5Yig6Zmk6YCJ5Lit6KGo5qC85pWw5o2uCiAgICAgICAgICAgIGxldCBpZHM9W3Jvdy5pZF0KICAgICAgICAgICAgbGV0IG9iajI9e2RvbWFpbklkOnRoaXMuJHJvdXRlLnF1ZXJ5LmRvbWFpbklkfS8v6I635Y+WdXJs5Z+fZG9tYWluSWQgICAgICAgICAgICAKICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJvdykgIT0gIiIpIHsKICAgICAgICAgICAgICAgIHRoaXMuJGNvbmZpcm0oIuatpOaTjeS9nOWwhuawuOS5heWIoOmZpOatpOWvueW6lOaVsOaNriwg5piv5ZCm57un57utPyIsICLmj5DnpLoiLCB7CiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsCiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICAgICAgICAgIHR5cGU6ICJ3YXJuaW5nIiwKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZGVsRGVwYXJ0bWVudHNBcGkoaWRzLG9iajIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGFsaXN0KCkvL+ihqOagvOWIl+ihqAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5yYWRpbyA9ICIiOyAvL+a4heepuumAieS4rQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHBhdGNoRGVsKCl7Ly/mibnph4/liKDpmaQgICAgICAgICAgIAogICAgICAgICAgICBsZXQgb2JqMj17ZG9tYWluSWQ6dGhpcy4kcm91dGUucXVlcnkuZG9tYWluSWR9Ly/ojrflj5Z1cmzln59kb21haW5JZCAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZVNlbGVjdGlvbi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHRoaXMuJGNvbmZpcm0oIuatpOaTjeS9nOWwhuawuOS5heWIoOmZpOatpOWvueW6lOaVsOaNriwg5piv5ZCm57un57utPyIsICLmj5DnpLoiLCB7CiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsCiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICAgICAgICAgIHR5cGU6ICJ3YXJuaW5nIiwKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGxldCBpZHM9W10KICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpcGxlU2VsZWN0aW9uLmZvckVhY2goaXRlbT0+ewogICAgICAgICAgICAgICAgICAgICAgICBpZHMucHVzaChpdGVtLmlkKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgZGVsRGVwYXJ0bWVudHNBcGkoaWRzLG9iajIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGFsaXN0KCkvL+ihqOagvOWIl+ihqAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5yYWRpbyA9ICIiOyAvL+a4heepuumAieS4rQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGltcG9ydEVtcGxveWVlKCl7CiAgICAgICAgICAgdGhpcy5zaG93ZGlhbG9nSW1wb3J0ID0gdHJ1ZTsKICAgICAgICB9LAogICAgICAgIGV4cG9ydEVtcGxveWVlKCl7CiAgICAgICAgICAgdGhpcy5zaG93ZGlhbG9nRXhwb3J0ID0gdHJ1ZTsKICAgICAgICAgICB0aGlzLiRyZWZzLkV4cG9ydHBvcENoaWxkcmVuLmdldFRhYmxlUm93KHRoaXMucGFyYW1zLCAwKTsgLy/moLnmja7mkJzntKLmnaHku7blr7zlh7oKICAgICAgICB9LAogICAgICAgIG1vdmVEZXB0KCl7CiAgICAgICAgICAgdGhpcy5zaG93ZGlhbG9nTW92ZSA9IHRydWU7CiAgICAgICAgICAgdGhpcy4kcmVmcy5Nb3ZlcG9wQ2hpbGRyZW4uZ2V0VGFibGVSb3codGhpcy5tdWx0aXBsZVNlbGVjdGlvbiwgMCk7ICAgICAgCiAgICAgICAgfSwKICAgICAgICBJbURlcHQoKXsKICAgICAgICAgICB0aGlzLnNob3dkaWFsb2dJbSA9IHRydWU7CiAgICAgICAgICAgdGhpcy4kcmVmcy5JbXBvcENoaWxkcmVuLmdldFRhYmxlUm93KHRoaXMubXVsdGlwbGVTZWxlY3Rpb24sIDApOyAgICAgIAogICAgICAgIH0sICAgIAogICAgICAgIGNsb3NlKHJvdyl7Ly/lhbPpl63mjpLluo8KICAgICAgICAgICB0aGlzLnRhYmxlRGF0YWxpc3QoKS8v6KGo5qC85YiX6KGoCiAgICAgICAgfSwKICAgICAgICB0b3RhbE1lbWJlckNsaWNrKHJvdyl7Ly/ngrnlh7vpg6jpl6jmiJDlkZjmlbDlvLnnqpcKICAgICAgICAgICB0aGlzLnNob3dkaWFsb2dVc2VyID0gdHJ1ZTsKICAgICAgICAgICB0aGlzLiRyZWZzLlVzZXJwb3BDaGlsZHJlbi5nZXRUYWJsZVJvdyhyb3csIDApOyAgICAgCiAgICAgICAgfSwKICAgICAgICByZWZ1cmxpc3QoKXsvL+W8ueeql+WQjuWIt+aWsOWIl+ihqAogICAgICAgICAgIHRoaXMucGFyYW1zPXt9CiAgICAgICAgICAgdGhpcy5zZWFyY2goKS8v6KGo5qC85YiX6KGoCiAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaEZvcm0oKS8v6YeN572uCiAgICAgICAgICAgdGhpcy5lbXBsb3llZVRhYmxlQm9hcmRMaXN0KCkvL+aVsOaNrueci+adv+aVsOaNruaAu+mHjwogICAgICAgICAgIHRoaXMuaW5kZXg9LTEKICAgICAgICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGFibGVDb2x1bW5BcnInKSl7CiAgICAgICAgICAgICAgICBsZXQgdGFibGVDb2x1bW5BcnI9bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RhYmxlQ29sdW1uQXJyJykmJkpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RhYmxlQ29sdW1uQXJyJykpfHxbXQogICAgICAgICAgICAgICAgaWYodGFibGVDb2x1bW5BcnIubGVuZ3RoKXsKICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbkFyci5mb3JFYWNoKGl0ZW09PnsKICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGVGbGFnPT1pdGVtLnR5cGUpewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+ewogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb2x1bW49aXRlbS50YWJsZUNvbHVtbgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJlZnVybGlzdEJhY2soKXsvL+W8ueeql+WQjuWIt+aWsOWIl+ihqC3kv53nlZnmiYDlnKjpobXmlbDkvY3nva4KICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnBhcmFtcykKICAgICAgICAgICB0aGlzLmhpZ2hTZWFyY2goKS8v6KGo5qC85YiX6KGoCiAgICAgICAgICAgdGhpcy5lbXBsb3llZVRhYmxlQm9hcmRMaXN0KCkvL+aVsOaNrueci+adv+aVsOaNruaAu+mHjyAgICAgICAgICAgCiAgICAgICAgfSwKICAgICAgICBpbnB1dGtleXdvcmsoKXsKICAgICAgICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKQogICAgICAgIH0sCiAgICAgICAga2V5d29yZElucHV0KCl7CiAgICAgICAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCkKICAgICAgICB9LAogICAgICAgIGNoYW5nZU9jY3VwYXRpb25UeXBlKCl7Ly/lj5jmm7TogYzkuJrnsbvlnosKICAgICAgICAgICAgdGhpcy5zaG93ZGlhbG9nT2NjVHlwZT10cnVlCiAgICAgICAgfQogICAgfQp9Cg=="},null]}