<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>GenericAgent-NotificationTags</Name>
    <Version>11.1.2</Version>
    <Vendor>Rother OSS GmbH</Vendor>
    <URL>https://otobo.io/</URL>
    <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
    <ChangeLog Date="2026-10-26 15:29:00" Version="11.1.2">Update to OTOBO 11.1.1.</ChangeLog>
    <ChangeLog Date="2026-06-26 16:18:49" Version="11.1.1">Initial release for OTOBO 11.1.</ChangeLog>
    <Description Lang="en">Provides the Generic Agent Job Management feature with the ability to use field tags</Description>
    <Framework>11.1.x</Framework>
    <BuildCommitID>183bc54ba9ab98f7ae633ada521aa855db07c4d5</BuildCommitID>
    <BuildDate>2026-10-26 15:29:04</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminGenericAgent.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2Mzk3ZjM2ZmYwOWQwODVlNGMzMWQ1ZGRhNDExMGE3MzMxOWY5MDZkIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkdlbmVyaWNBZ2VudC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjwhLS0gc3RhcnQgZm9ybSAtLT4KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiR2VuZXJpYyBBZ2VudCBKb2IgTWFuYWdlbWVudCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdHZW5lcmljIEFnZW50IEpvYiBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5TdWJhY3Rpb24gJV0KICAgICAgICBbJSBDQVNFICdVcGRhdGUnICVdCiAgICAgICAgICAgIFslIElGIERhdGEuUHJvZmlsZSAlXQogICAgICAgICAgICAgICAgWyUgVVNFIEVkaXRKb2IgPSBTdHJpbmcoVHJhbnNsYXRlKCJFZGl0IEpvYiIpKSAlXQogICAgICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdEpvYi5hcHBlbmQoICc6ICcsIERhdGEuUHJvZmlsZSApIH0pICVdCiAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEpvYiIpLH0pICVdCiAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgIFslIENBU0UgJ1J1bicgJV0KICAgICAgICAgICAgWyUgVVNFIFJ1bkpvYiA9IFN0cmluZyhUcmFuc2xhdGUoIlJ1biBKb2IiKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gUnVuSm9iLmFwcGVuZCggJzogJywgRGF0YS5Qcm9maWxlICkgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNsdWRlSW52YWxpZCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBqb2JzIikgfCBodG1sICVdIiBbJSBEYXRhLkluY2x1ZGVJbnZhbGlkQ2hlY2tlZCB8IGh0bWwgJV0vPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jbHVkZUludmFsaWQiPlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIGpvYnMiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2x1ZGVJbnZhbGlkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFjdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249VXBkYXRlIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBKb2IiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25PdmVydmlldyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25PdmVydmlldyIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXIiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyR2VuZXJpY0FnZW50Sm9icyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIEpvYnMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyR2VuZXJpY0FnZW50Sm9icyIgY2xhc3M9IkZpbHRlckJveCIgcGxhY2Vob2xkZXI9IlslIFRyYW5zbGF0ZSgiSnVzdCBzdGFydCB0eXBpbmcgdG8gZmlsdGVyLi4uIikgfCBodG1sICVdIiBuYW1lPSJGaWx0ZXJHZW5lcmljQWdlbnRKb2JzIiB2YWx1ZT0iIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIGpvYnMiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkltcG9ydEV4cG9ydFdpZGdldCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0nV2lkZ2V0U2ltcGxlJyBpZD0nR2VuZXJpY0FnZW50SW1wb3J0RXhwb3J0V2lkZ2V0Jz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nSGVhZGVyJz4KICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJJbXBvcnQgLyBFeHBvcnQiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvaDE+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0ZSgnSW1wb3J0IC8gRXhwb3J0JyksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgJV0KCiAgICAgICAgICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ29udGVudCc+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0nRmllbGRFeHBsYW5hdGlvbic+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCdIZXJlIHlvdSBjYW4gdXBsb2FkIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGltcG9ydCBnZW5lcmljIGFnZW50cyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgdGhlIGdlbmVyaWMgYWdlbnQgbWFuYWdlbWVudCBtb2R1bGUuJykgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9J0FjdGlvbkxpc3QgU3BhY2luZ1RvcCc+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249J1slIEVudigiQ0dJSGFuZGxlIikgJV0nIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YScgY2xhc3M9J1ZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nQ2hhbGxlbmdlVG9rZW4nIHZhbHVlPVslIEVudigiVXNlckNoYWxsZW5nZVRva2VuIikgfCBKU09OICVdPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nQWN0aW9uJyB2YWx1ZT0nQWRtaW5HZW5lcmljQWdlbnRJbXBvcnRFeHBvcnQnLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J1N1YmFjdGlvbicgdmFsdWU9J0ltcG9ydCcvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J0ZpbGVVcGxvYWQnIGlkPSdGaWxlVXBsb2FkJyB0eXBlPSdmaWxlJyBzaXplPScxOCcgY2xhc3M9J0ZpeGVkIFcxMDBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkZpbGVVcGxvYWRJbnZhbGlkIHwgaHRtbCAlXScvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0nRmlsZVVwbG9hZEVycm9yJyBjbGFzcz0nVG9vbHRpcEVycm9yTWVzc2FnZSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9J0ZpbGVVcGxvYWRTZXJ2ZXJFcnJvcicgY2xhc3M9J1Rvb2x0aXBFcnJvck1lc3NhZ2UnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIFRyYW5zbGF0ZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0nU3BhY2luZ1RvcCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2NoZWNrYm94JyBpZD0nT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllc0V4YW1wbGUnIG5hbWU9J092ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMnIHZhbHVlPScxJy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0nT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllc0V4YW1wbGUnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ092ZXJ3cml0ZSBleGlzdGluZyBlbnRpdGllcycpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIgU3BhY2luZ1RvcCcgaWQ9J0dlbmVyaWNBZ2VudEltcG9ydCcgdHlwZT0nc3VibWl0Jz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtdXBsb2FkJz48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnR2VuZXJpYyBBZ2VudHMgSW1wb3J0JykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluR2VuZXJpY0FnZW50SW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1FeHBvcnQnIGlkPSdHZW5lcmljQWdlbnRFeHBvcnQnIGNsYXNzPSdDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtZG93bmxvYWQnPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ0dlbmVyaWMgQWdlbnRzIEV4cG9ydCcpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW1wb3J0RXhwb3J0V2lkZ2V0IikgJV0KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXciKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaXN0IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIGlkPSJHZW5lcmljQWdlbnRKb2JzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiTGFzdCBydW4iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlJ1biBOb3chIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFslIElGIERhdGEuVmFsaWQgIT0gMSVdY2xhc3M9IkludmFsaWQiWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249VXBkYXRlO1Byb2ZpbGU9WyUgRGF0YS5OYW1lIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5TY2hlZHVsZUxhc3RSdW4gfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgVHJhbnNsYXRlKERhdGEuU2hvd25WYWxpZCkgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iVHJhc2hDYW4iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1EZWxldGU7UHJvZmlsZT1bJSBEYXRhLk5hbWUgfCB1cmkgJV07WyUgRW52KCJDaGFsbGVuZ2VUb2tlblBhcmFtIikgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyB0YXNrIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuVmFsaWQgPT0gMSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UnVuO1Byb2ZpbGU9WyUgRGF0YS5OYW1lIHwgdXJpICVdO1slIEVudigiQ2hhbGxlbmdlVG9rZW5QYXJhbSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUnVuIHRoaXMgdGFzayIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkZpbHRlck1lc3NhZ2UgSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij5bJSBUcmFuc2xhdGUoIk5vIG1hdGNoZXMgZm91bmQuIikgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRWRpdCIpICVdCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiSm9iIFNldHRpbmdzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlVwZGF0ZUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNjaGVkdWxlTGFzdFJ1biIgdmFsdWU9IlslIERhdGEuU2NoZWR1bGVMYXN0UnVuIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik9sZFByb2ZpbGUiIHZhbHVlPSJbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Qcm9maWxlICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbnRpbnVlQWZ0ZXJTYXZlIiBpZD0iQ29udGludWVBZnRlclNhdmUiIHZhbHVlPSIiLz4KICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiSm9iIG5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlByb2ZpbGUiIGlkPSJQcm9maWxlIiBjbGFzcz0iVmFsaWRhdGVfUmVxdWlyZWQgVzUwcGMgWyUgRGF0YS5Qcm9maWxlSW52YWxpZCB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUHJvZmlsZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQcm9maWxlSW52YWxpZE1zZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJQcm9maWxlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvZmlsZUludmFsaWRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQcm9maWxlSW52YWxpZE1zZ0FkZEVycm9yIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlByb2ZpbGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgeW91IGVudGVyZWQgYWxyZWFkeSBleGlzdHMuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvZmlsZUludmFsaWRNc2dBZGRFcnJvciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZCI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBDb2xsYXBzZWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBdXRvbWF0aWMgRXhlY3V0aW9uIChNdWx0aXBsZSBUaWNrZXRzKSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgVmFyaWFibGVXaWR0aCIgc3VtbWFyeT0iWyUgVHJhbnNsYXRlKCJFeGVjdXRpb24gU2NoZWR1bGUiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxsYWJlbCBmb3I9IlNjaGVkdWxlTWludXRlcyI+WyUgVHJhbnNsYXRlKCJTY2hlZHVsZSBtaW51dGVzIikgfCBodG1sICVdPC9sYWJlbD48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxsYWJlbCBmb3I9IlNjaGVkdWxlSG91cnMiPlslIFRyYW5zbGF0ZSgiU2NoZWR1bGUgaG91cnMiKSB8IGh0bWwgJV08L2xhYmVsPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGxhYmVsIGZvcj0iU2NoZWR1bGVEYXlzIj5bJSBUcmFuc2xhdGUoIlNjaGVkdWxlIGRheXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2NoZWR1bGVNaW51dGVzTGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNjaGVkdWxlSG91cnNMaXN0ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2NoZWR1bGVEYXlzTGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXV0b21hdGljIGV4ZWN1dGlvbiB2YWx1ZXMgYXJlIGluIHRoZSBzeXN0ZW0gdGltZXpvbmUuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrU3RhcnQoIkpvYlNjaGVkdWxlV2FybmluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRXJyb3IgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDdXJyZW50bHkgdGhpcyBnZW5lcmljIGFnZW50IGpvYiB3aWxsIG5vdCBydW4gYXV0b21hdGljYWxseS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVG8gZW5hYmxlIGF1dG9tYXRpYyBleGVjdXRpb24gc2VsZWN0IGF0IGxlYXN0IG9uZSB2YWx1ZSBmcm9tIG1pbnV0ZXMsIGhvdXJzIGFuZCBkYXlzISIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiSm9iU2NoZWR1bGVXYXJuaW5nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgQ29sbGFwc2VkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRXZlbnQgQmFzZWQgRXhlY3V0aW9uIChTaW5nbGUgVGlja2V0KSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkV2ZW50c1RhYmxlIj5bJSBUcmFuc2xhdGUoIkV2ZW50IFRyaWdnZXJzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFc1MHBjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIENsZWFyTm9uZSBTcGFjaW5nQm90dG9tU21hbGwiIGlkPSJFdmVudHNUYWJsZSIgc3VtbWFyeT0iWyUgVHJhbnNsYXRlKCJMaXN0IG9mIGFsbCBjb25maWd1cmVkIGV2ZW50cyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJUeXBlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkV2ZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnRXZlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnRXZlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkV2ZW50Um93VGVtcGxhdGUgSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQXNCbG9jayBFdmVudFR5cGUiPkV2ZW50VHlwZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkV2ZW50TmFtZSIgPkV2ZW50TmFtZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkV2ZW50RGVsZXRlIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkRlbGV0ZUV2ZW50IiBjbGFzcz0iVHJhc2hDYW4gRGVsZXRlRXZlbnQiIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGV2ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyBldmVudCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIiIGNsYXNzPSJFdmVudFZhbHVlIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkFzQmxvY2siPlslIERhdGEuRXZlbnRUeXBlIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5FdmVudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJEZWxldGVFdmVudFslIERhdGEuRXZlbnQgfCBodG1sICVdIiBjbGFzcz0iVHJhc2hDYW4gRGVsZXRlRXZlbnQiIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGV2ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyBldmVudCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFdmVudFZhbHVlcyIgY2xhc3M9IkV2ZW50VmFsdWUiIHZhbHVlPSJbJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJFdmVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBZGRpdGlvbmFsbHkgb3IgYWx0ZXJuYXRpdmVseSB0byBhIHBlcmlvZGljIGV4ZWN1dGlvbiwgeW91IGNhbiBkZWZpbmUgdGlja2V0IGV2ZW50cyB0aGF0IHdpbGwgdHJpZ2dlciB0aGlzIGpvYi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIklmIGEgdGlja2V0IGV2ZW50IGlzIGZpcmVkLCB0aGUgdGlja2V0IGZpbHRlciB3aWxsIGJlIGFwcGxpZWQgdG8gY2hlY2sgaWYgdGhlIHRpY2tldCBtYXRjaGVzLiBPbmx5IHRoZW4gdGhlIGpvYiBpcyBydW4gb24gdGhhdCB0aWNrZXQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRXZlbnREaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZCA9IkRlbGV0ZUV2ZW50RGlhbG9nIiBjbGFzcz0iSW5uZXJDb250ZW50IEdlbmVyaWNJbnRlcmZhY2VEaWFsb2ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJXYXJuaW5nRGlhbG9nICI+Jm5ic3A7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+WyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZXZlbnQgdHJpZ2dlcj8iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJIaWRlT25DaGFuZ2UiIGZvcj0iRXZlbnRUeXBlIj5bJSBUcmFuc2xhdGUoIkFkZCBFdmVudCBUcmlnZ2VyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIEhpZGVPbkNoYW5nZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkV2ZW50VHlwZVN0cmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5FdmVudFR5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJFdmVudFR5cGVTdHJnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRBZGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkV2ZW50VHlwZU5hbWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXZlbnRTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJFdmVudEFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBhZGQgYSBuZXcgZXZlbnQgc2VsZWN0IHRoZSBldmVudCBvYmplY3QgYW5kIGV2ZW50IG5hbWUiKSB8IGh0bWwgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlNlbGVjdCBUaWNrZXRzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaWNrZXROdW1iZXIiPlslIENvbmZpZygiVGlja2V0OjpIb29rIikgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRpY2tldE51bWJlciIgaWQ9IlRpY2tldE51bWJlciIgc2l6ZT0iMzAiIHZhbHVlPSJbJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIihlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCopIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgY2xhc3M9IlczM3BjIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkN1c3RvbWVySUQiPlslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIgSUQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkN1c3RvbWVySUQiIGlkPSJDdXN0b21lcklEIiBjbGFzcz0iVzMzcGMiIHZhbHVlPSJbJSBEYXRhLkN1c3RvbWVySUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCIoZS4gZy4gMjM0MzIxKSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3VzdG9tZXJVc2VyTG9naW4iPlslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIgdXNlciBJRCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iQ3VzdG9tZXJVc2VyTG9naW4iIGlkPSJDdXN0b21lclVzZXJMb2dpbiIgY2xhc3M9IlczM3BjIiB2YWx1ZT0iWyUgRGF0YS5DdXN0b21lclVzZXJMb2dpbiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIihlLiBnLiBVNTE1MCkiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0VHlwZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlR5cGVJRHMiPlslIFRyYW5zbGF0ZSgiVHlwZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlR5cGVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0VHlwZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1JTUVCYXNlX0Zyb20iPlslIFRyYW5zbGF0ZSgiRnJvbSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTUlNRUJhc2VfRnJvbSIgaWQ9Ik1JTUVCYXNlX0Zyb20iIGNsYXNzPSJXMzBwYyBbJSBEYXRhLk1JTUVCYXNlX0Zyb21JbnZhbGlkIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuTUlNRUJhc2VfRnJvbSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0LXNlYXJjaCBpbiBhcnRpY2xlIChlLiBnLiBcIk1hcippblwiIG9yIFwiQmF1ZSpcIikuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJNSU1FQmFzZV9Gcm9tU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBEYXRhLk1JTUVCYXNlX0Zyb21JbnZhbGlkVG9vbHRpcCB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1JTUVCYXNlX1RvIj5bJSBUcmFuc2xhdGUoIlRvIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJNSU1FQmFzZV9UbyIgaWQ9Ik1JTUVCYXNlX1RvIiBjbGFzcz0iVzMzcGMgWyUgRGF0YS5NSU1FQmFzZV9Ub0ludmFsaWQgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5NSU1FQmFzZV9UbyB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0LXNlYXJjaCBpbiBhcnRpY2xlIChlLiBnLiBcIk1hcippblwiIG9yIFwiQmF1ZSpcIikuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJNSU1FQmFzZV9Ub1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgRGF0YS5NSU1FQmFzZV9Ub0ludmFsaWRUb29sdGlwIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTUlNRUJhc2VfQ2MiPlslIFRyYW5zbGF0ZSgiQ2MiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik1JTUVCYXNlX0NjIiBpZD0iTUlNRUJhc2VfQ2MiIGNsYXNzPSJXMzNwYyBbJSBEYXRhLk1JTUVCYXNlX0NjSW52YWxpZCB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk1JTUVCYXNlX0NjIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRnVsbHRleHQtc2VhcmNoIGluIGFydGljbGUgKGUuIGcuIFwiTWFyKmluXCIgb3IgXCJCYXVlKlwiKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik1JTUVCYXNlX0NjU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBEYXRhLk1JTUVCYXNlX0NjSW52YWxpZFRvb2x0aXAgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNSU1FQmFzZV9TdWJqZWN0Ij5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik1JTUVCYXNlX1N1YmplY3QiIGlkPSJNSU1FQmFzZV9TdWJqZWN0IiBjbGFzcz0iVzMzcGMgWyUgRGF0YS5NSU1FQmFzZV9TdWJqZWN0SW52YWxpZCB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk1JTUVCYXNlX1N1YmplY3QgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJGdWxsdGV4dC1zZWFyY2ggaW4gYXJ0aWNsZSAoZS4gZy4gXCJNYXIqaW5cIiBvciBcIkJhdWUqXCIpLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTUlNRUJhc2VfU3ViamVjdFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgRGF0YS5NSU1FQmFzZV9TdWJqZWN0SW52YWxpZFRvb2x0aXAgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNSU1FQmFzZV9Cb2R5Ij5bJSBUcmFuc2xhdGUoIlRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik1JTUVCYXNlX0JvZHkiIGlkPSJNSU1FQmFzZV9Cb2R5IiBjbGFzcz0iVzMzcGMgWyUgRGF0YS5NSU1FQmFzZV9Cb2R5SW52YWxpZCB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk1JTUVCYXNlX0JvZHkgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJGdWxsdGV4dC1zZWFyY2ggaW4gYXJ0aWNsZSAoZS4gZy4gXCJNYXIqaW5cIiBvciBcIkJhdWUqXCIpLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTUlNRUJhc2VfQm9keVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgRGF0YS5NSU1FQmFzZV9Cb2R5SW52YWxpZFRvb2x0aXAgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSURzIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNMQUlEcyI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIExldmVsIEFncmVlbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNMQXNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRTZXJ2aWNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJpb3JpdHlJRHMiPlslIFRyYW5zbGF0ZSgiUHJpb3JpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Qcmlvcml0aWVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUXVldWVJRHMiPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5RdWV1ZXNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXRlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik93bmVySURzIj5bJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdL1slIFRyYW5zbGF0ZSgiT3duZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Pd25lclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFJlc3BvbnNpYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmVzcG9uc2libGVJRHMiPlslIFRyYW5zbGF0ZSgiQWdlbnQiKSB8IGh0bWwgJV0vWyUgVHJhbnNsYXRlKCJSZXNwb25zaWJsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJlc3BvbnNpYmxlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0UmVzcG9uc2libGUiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTG9ja0lEcyI+WyUgVHJhbnNsYXRlKCJUaWNrZXQgbG9jayIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxvY2tPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkR5bmFtaWMgZmllbGRzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZGREeW5hbWljRmllbGRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFkZCBkeW5hbWljIGZpZWxkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiIGRhdGEtd2lkZ2V0PSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZHNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBZGREeW5hbWljRmllbGRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgaWQ9IlNlbGVjdGVkRHluYW1pY0ZpZWxkcyIgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlbGVjdGVkRHluYW1pY0ZpZWxkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgZGF0YS1pZD0iWyUgRGF0YS5JRCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWxlY3RlZER5bmFtaWNGaWVsZHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGltZVNlYXJjaFR5cGVOb25lIj5bJSBUcmFuc2xhdGUoIkNyZWF0ZSB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiBpZD0iVGltZVNlYXJjaFR5cGVOb25lIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjcmVhdGUgdGltZSBzZXR0aW5ncy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IGNyZWF0ZWQiKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRDcmVhdGVUaW1lUG9pbnRTdGFydCAlXSBbJSBEYXRhLlRpY2tldENyZWF0ZVRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBjcmVhdGVkIGJldHdlZW4iKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRDcmVhdGVUaW1lU3RhcnQgJV0gWyUgVHJhbnNsYXRlKCJhbmQiKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRDcmVhdGVUaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhc3RDaGFuZ2VUaW1lU2VhcmNoVHlwZU5vbmUiPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIHRpbWVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlIiBpZD0iTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlTm9uZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJMYXN0Q2hhbmdlVGltZVNlYXJjaFR5cGU6Ok5vbmUiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIGxhc3QgY2hhbmdlZCB0aW1lIHNldHRpbmdzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJMYXN0Q2hhbmdlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBsYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRMYXN0Q2hhbmdlVGltZVBvaW50U3RhcnQgJV0gWyUgRGF0YS5UaWNrZXRMYXN0Q2hhbmdlVGltZVBvaW50ICVdIFslIERhdGEuVGlja2V0TGFzdENoYW5nZVRpbWVQb2ludEZvcm1hdCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IGxhc3QgY2hhbmdlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0TGFzdENoYW5nZVRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldExhc3RDaGFuZ2VUaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNoYW5nZVRpbWVTZWFyY2hUeXBlTm9uZSI+WyUgVHJhbnNsYXRlKCJDaGFuZ2UgdGltZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgaWQ9IkNoYW5nZVRpbWVTZWFyY2hUeXBlTm9uZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gY2hhbmdlIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkNoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBjaGFuZ2VkIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0Q2hhbmdlVGltZVBvaW50U3RhcnQgJV0gWyUgRGF0YS5UaWNrZXRDaGFuZ2VUaW1lUG9pbnQgJV0gWyUgRGF0YS5UaWNrZXRDaGFuZ2VUaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgY2hhbmdlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0Q2hhbmdlVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0Q2hhbmdlVGltZVN0b3AgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMYXN0Q2xvc2VUaW1lU2VhcmNoVHlwZU5vbmUiPlslIFRyYW5zbGF0ZSgiTGFzdCBjbG9zZSB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Ikxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlIiBpZD0iTGFzdENsb3NlVGltZVNlYXJjaFR5cGVOb25lIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIkxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBsYXN0IGNsb3NlIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Ikxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBsYXN0IGNsb3NlIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0TGFzdENsb3NlVGltZVBvaW50U3RhcnQgJV0gWyUgRGF0YS5UaWNrZXRMYXN0Q2xvc2VUaW1lUG9pbnQgJV0gWyUgRGF0YS5UaWNrZXRMYXN0Q2xvc2VUaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Ikxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiTGFzdENsb3NlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgbGFzdCBjbG9zZSBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0TGFzdENsb3NlVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0TGFzdENsb3NlVGltZVN0b3AgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDbG9zZVRpbWVTZWFyY2hUeXBlTm9uZSI+WyUgVHJhbnNsYXRlKCJDbG9zZSB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkNsb3NlVGltZVNlYXJjaFR5cGUiIGlkPSJDbG9zZVRpbWVTZWFyY2hUeXBlTm9uZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJDbG9zZVRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjbG9zZSB0aW1lIHNldHRpbmdzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJDbG9zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkNsb3NlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IGNsb3NlZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldENsb3NlVGltZVBvaW50U3RhcnQgJV0gWyUgRGF0YS5UaWNrZXRDbG9zZVRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldENsb3NlVGltZVBvaW50Rm9ybWF0ICVdLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJDbG9zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiQ2xvc2VUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBjbG9zZWQgYmV0d2VlbiIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldENsb3NlVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0Q2xvc2VUaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZU5vbmUiPlslIFRyYW5zbGF0ZSgiUGVuZGluZyB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZSIgaWQ9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZU5vbmUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiVGltZVBlbmRpbmdTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBwZW5kaW5nIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJUaW1lUGVuZGluZ1NlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IHBlbmRpbmcgdGltZSByZWFjaGVkIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0UGVuZGluZ1RpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuVGlja2V0UGVuZGluZ1RpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldFBlbmRpbmdUaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIlRpbWVQZW5kaW5nU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBwZW5kaW5nIHRpbWUgcmVhY2hlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0UGVuZGluZ1RpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldFBlbmRpbmdUaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZU5vbmUiPlslIFRyYW5zbGF0ZSgiRXNjYWxhdGlvbiB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZSIgaWQ9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZU5vbmUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiRXNjYWxhdGlvblRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBlc2NhbGF0aW9uIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJFc2NhbGF0aW9uVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IGVzY2FsYXRpb24gdGltZSByZWFjaGVkIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25UaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBlc2NhbGF0aW9uIHRpbWUgcmVhY2hlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25UaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlTm9uZSI+WyUgVHJhbnNsYXRlKCJFc2NhbGF0aW9uIC0gZmlyc3QgcmVzcG9uc2UgdGltZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlIiBpZD0iRXNjYWxhdGlvblJlc3BvbnNlVGltZVNlYXJjaFR5cGVOb25lIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBlc2NhbGF0aW9uIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBmaXJzdCByZXNwb25zZSB0aW1lIHJlYWNoZWQiKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRFc2NhbGF0aW9uUmVzcG9uc2VUaW1lUG9pbnRTdGFydCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVQb2ludEZvcm1hdCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iRXNjYWxhdGlvblJlc3BvbnNlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgWyUgRGF0YS5pdGVtKCJFc2NhbGF0aW9uUmVzcG9uc2VUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBmaXJzdCByZXNwb25zZSB0aW1lIHJlYWNoZWQgYmV0d2VlbiIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVTdG9wICVdLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXNjYWxhdGlvblVwZGF0ZVRpbWVTZWFyY2hUeXBlTm9uZSI+WyUgVHJhbnNsYXRlKCJFc2NhbGF0aW9uIC0gdXBkYXRlIHRpbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJFc2NhbGF0aW9uVXBkYXRlVGltZVNlYXJjaFR5cGUiIGlkPSJFc2NhbGF0aW9uVXBkYXRlVGltZVNlYXJjaFR5cGVOb25lIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZXNjYWxhdGlvbiB0aW1lIHNldHRpbmdzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJFc2NhbGF0aW9uVXBkYXRlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiRXNjYWxhdGlvblVwZGF0ZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCB1cGRhdGUgdGltZSByZWFjaGVkIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblVwZGF0ZVRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblVwZGF0ZVRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25VcGRhdGVUaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCB1cGRhdGUgdGltZSByZWFjaGVkIGJldHdlZW4iKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRFc2NhbGF0aW9uVXBkYXRlVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblVwZGF0ZVRpbWVTdG9wICVdLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGVOb25lIj5bJSBUcmFuc2xhdGUoIkVzY2FsYXRpb24gLSBzb2x1dGlvbiB0aW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGUiIGlkPSJFc2NhbGF0aW9uU29sdXRpb25UaW1lU2VhcmNoVHlwZU5vbmUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGU6Ok5vbmUiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIGVzY2FsYXRpb24gdGltZSBzZXR0aW5ncy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IHNvbHV0aW9uIHRpbWUgcmVhY2hlZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25Tb2x1dGlvblRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZVBvaW50ICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZVBvaW50Rm9ybWF0ICVdLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJFc2NhbGF0aW9uU29sdXRpb25UaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25Tb2x1dGlvblRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IHNvbHV0aW9uIHRpbWUgcmVhY2hlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZVN0b3AgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaEluQXJjaGl2ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNlYXJjaEluQXJjaGl2ZSI+WyUgVHJhbnNsYXRlKCJBcmNoaXZlIHNlYXJjaCBvcHRpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZWFyY2hJbkFyY2hpdmVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hJbkFyY2hpdmUiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gbmV3IG9wdGlvbnMgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlVwZGF0ZS9BZGQgVGlja2V0IEF0dHJpYnV0ZXMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5ld1RpY2tldFNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdTZXJ2aWNlSUQiPlslIFRyYW5zbGF0ZSgiU2V0IG5ldyBzZXJ2aWNlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3U2VydmljZXNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdTTEFJRCI+WyUgVHJhbnNsYXRlKCJTZXQgbmV3IFNlcnZpY2UgTGV2ZWwgQWdyZWVtZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3U0xBc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5ld1RpY2tldFNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQcmlvcml0eUlEIj5bJSBUcmFuc2xhdGUoIlNldCBuZXcgcHJpb3JpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdQcmlvcml0aWVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UXVldWVJRCI+WyUgVHJhbnNsYXRlKCJTZXQgbmV3IHF1ZXVlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3UXVldWVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3U3RhdGVJRCI+WyUgVHJhbnNsYXRlKCJTZXQgbmV3IHN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3U3RhdGVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGVuZGluZ1RpbWUiPlslIFRyYW5zbGF0ZSgiUGVuZGluZyBkYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQZW5kaW5nVGltZSIgaWQ9Ik5ld1BlbmRpbmdUaW1lIiB2YWx1ZT0iWyUgRGF0YS5OZXdQZW5kaW5nVGltZSB8IGh0bWwgJV0iIGNsYXNzPSJXMTBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdQZW5kaW5nVGltZVR5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdPd25lcklEIj5bJSBUcmFuc2xhdGUoIlNldCBuZXcgYWdlbnQiKSB8IGh0bWwgJV0vWyUgVHJhbnNsYXRlKCJuZXcgb3duZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdPd25lclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk5ld1RpY2tldFJlc3BvbnNpYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UmVzcG9uc2libGVJRCI+WyUgVHJhbnNsYXRlKCJTZXQgbmV3IGFnZW50IikgfCBodG1sICVdL1slIFRyYW5zbGF0ZSgibmV3IHJlc3BvbnNpYmxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3UmVzcG9uc2libGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOZXdUaWNrZXRSZXNwb25zaWJsZSIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdMb2NrSUQiPlslIFRyYW5zbGF0ZSgiU2V0IG5ldyB0aWNrZXQgbG9jayIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5ld0xvY2tPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld0N1c3RvbWVyVXNlckxvZ2luIj5bJSBUcmFuc2xhdGUoIk5ldyBjdXN0b21lciB1c2VyIElEIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdDdXN0b21lclVzZXJMb2dpbiIgaWQ9Ik5ld0N1c3RvbWVyVXNlckxvZ2luIiB2YWx1ZT0iWyUgRGF0YS5OZXdDdXN0b21lclVzZXJMb2dpbiB8IGh0bWwgJV0iIGNsYXNzPSJXMzNwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3Q3VzdG9tZXJJRCI+WyUgVHJhbnNsYXRlKCJOZXcgY3VzdG9tZXIgSUQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld0N1c3RvbWVySUQiIGlkPSJOZXdDdXN0b21lcklEIiB2YWx1ZT0iWyUgRGF0YS5OZXdDdXN0b21lcklEIHwgaHRtbCAlXSIgY2xhc3M9IlczM3BjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdUaXRsZSI+WyUgVHJhbnNsYXRlKCJOZXcgdGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1RpdGxlIiBpZD0iTmV3VGl0bGUiIGNsYXNzPSJXMzNwYyIgdmFsdWU9IlslIERhdGEuTmV3VGl0bGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5ld1RpY2tldFR5cGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdUeXBlSUQiPlslIFRyYW5zbGF0ZSgiTmV3IHR5cGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdUeXBlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5ld1RpY2tldFR5cGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJEeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWRkTmV3RHluYW1pY0ZpZWxkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFkZCBkeW5hbWljIGZpZWxkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiIGRhdGEtd2lkZ2V0PSJVcGRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5ld0R5bmFtaWNGaWVsZHNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJBZGROZXdEeW5hbWljRmllbGRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgaWQ9IlNlbGVjdGVkTmV3RHluYW1pY0ZpZWxkcyIgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlbGVjdGVkTmV3RHluYW1pY0ZpZWxkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgZGF0YS1pZD0iWyUgRGF0YS5JRCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWxlY3RlZE5ld0R5bmFtaWNGaWVsZHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKClslIFJlbmRlckJsb2NrU3RhcnQoIk5ld0FyY2hpdmVGbGFnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3QXJjaGl2ZUZsYWciPlslIFRyYW5zbGF0ZSgiQXJjaGl2ZSBzZWxlY3RlZCB0aWNrZXRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3QXJjaGl2ZUZsYWdTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOZXdBcmNoaXZlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgQ29sbGFwc2VkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWRkIE5vdGUiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld05vdGVGcm9tIj5bJSBUcmFuc2xhdGUoIkZyb20iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld05vdGVGcm9tIiBpZD0iTmV3Tm90ZUZyb20iIHZhbHVlPSJbJSBEYXRhLk5ld05vdGVGcm9tIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIFslIERhdGEuTmV3Tm90ZUZyb21TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdOb3RlRnJvbVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIG11c3QgaGF2ZSBsZXNzIHRoZW4gMjAwIGNoYXJhY3RlcnMuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3Tm90ZVN1YmplY3QiPlslIFRyYW5zbGF0ZSgiU3ViamVjdCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmV3Tm90ZVN1YmplY3QiIGlkPSJOZXdOb3RlU3ViamVjdCIgdmFsdWU9IlslIERhdGEuTmV3Tm90ZVN1YmplY3QgfCBodG1sICVdIiBzaXplPSI2MCIgWyUgSUYgRGF0YS5OZXdOb3RlU3ViamVjdFNlcnZlckVycm9yID09ICdTZXJ2ZXJFcnJvcicgJV1jbGFzcz0iWyUgRGF0YS5OZXdOb3RlU3ViamVjdFNlcnZlckVycm9yIHwgaHRtbCAlXSJbJSBFTkQgJV0gbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld05vdGVTdWJqZWN0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgbXVzdCBoYXZlIGxlc3MgdGhlbiAyMDAgY2hhcmFjdGVycy4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdOb3RlQm9keSI+WyUgVHJhbnNsYXRlKCJUZXh0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJOZXdOb3RlQm9keSIgaWQ9Ik5ld05vdGVCb2R5IiBjbGFzcz0iVmFsaWRhdGVfTWF4TGVuZ3RoIFslIERhdGEuTmV3Tm90ZUJvZHlTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHJvd3M9IjciIGNvbHM9IjYwIiBkYXRhLW1heGxlbmd0aD0iMjAwIj5bJSBEYXRhLk5ld05vdGVCb2R5IHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdOb3RlQm9keUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIG11c3QgaGF2ZSBsZXNzIHRoZW4gMjAwIGNoYXJhY3RlcnMuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3Tm90ZUJvZHlTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBtdXN0IGhhdmUgbGVzcyB0aGVuIDIwMCBjaGFyYWN0ZXJzLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld05vdGVJc1Zpc2libGVGb3JDdXN0b21lciI+WyUgVHJhbnNsYXRlKCJWaXNpYmxlIGZvciBjdXN0b21lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iTmV3Tm90ZUlzVmlzaWJsZUZvckN1c3RvbWVyIiBpZD0iTmV3Tm90ZUlzVmlzaWJsZUZvckN1c3RvbWVyIiB0eXBlPSJjaGVja2JveCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk5ld05vdGVJc1Zpc2libGVGb3JDdXN0b21lciAlXWNoZWNrZWRbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld05vdGVUaW1lVW5pdHMiPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdOb3RlVGltZVVuaXRzIiBpZD0iTmV3Tm90ZVRpbWVVbml0cyIgdmFsdWU9IlslIERhdGEuTmV3Tm90ZVRpbWVVbml0cyB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkV4ZWN1dGUgVGlja2V0IENvbW1hbmRzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdTZW5kTm9Ob3RpZmljYXRpb24iPlslIFRyYW5zbGF0ZSgiU2VuZCBhZ2VudC9jdXN0b21lciBub3RpZmljYXRpb25zIG9uIGNoYW5nZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZW5kTm9Ob3RpZmljYXRpb25PcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIElGIERhdGEuQWxsb3dDdXN0b21TY3JpcHRFeGVjdXRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3Q01EIj5bJSBUcmFuc2xhdGUoIkNNRCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmV3Q01EIiBpZD0iTmV3Q01EIiB2YWx1ZT0iWyUgRGF0YS5OZXdDTUQgfCBodG1sICVdIiBzaXplPSI0MCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbJSBUcmFuc2xhdGUoIlRoaXMgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkLiBBUkdbMF0gd2lsbCBiZSB0aGUgdGlja2V0IG51bWJlci4gQVJHWzFdIHRoZSB0aWNrZXQgaWQuIikgfCBodG1sICVdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBFTkQgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld0RlbGV0ZSI+WyUgVHJhbnNsYXRlKCJEZWxldGUgdGlja2V0cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkRlbGV0ZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkVycm9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIldhcm5pbmc6IEFsbCBhZmZlY3RlZCB0aWNrZXRzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgY2Fubm90IGJlIHJlc3RvcmVkISIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgpbJSBJRiBEYXRhLkFsbG93Q3VzdG9tTW9kdWxlRXhlY3V0aW9uICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkV4ZWN1dGUgQ3VzdG9tIE1vZHVsZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3TW9kdWxlIj5bJSBUcmFuc2xhdGUoIk1vZHVsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmV3TW9kdWxlIiBpZD0iTmV3TW9kdWxlIiB2YWx1ZT0iWyUgRGF0YS5OZXdNb2R1bGUgfCBodG1sICVdIiBzaXplPSI0NSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1LZXkxIj5bJSBUcmFuc2xhdGUoIlBhcmFtICVzIGtleSIsICIxIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbUtleTEiIGlkPSJOZXdQYXJhbUtleTEiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtS2V5MSB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1WYWx1ZTEiPiBbJSBUcmFuc2xhdGUoIlBhcmFtICVzIHZhbHVlIiwgIjEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbVZhbHVlMSIgaWQ9Ik5ld1BhcmFtVmFsdWUxIiB2YWx1ZT0iWyUgRGF0YS5OZXdQYXJhbVZhbHVlMSB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1LZXkyIj5bJSBUcmFuc2xhdGUoIlBhcmFtICVzIGtleSIsICIyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbUtleTIiIGlkPSJOZXdQYXJhbUtleTIiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtS2V5MiB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1WYWx1ZTIiPiBbJSBUcmFuc2xhdGUoIlBhcmFtICVzIHZhbHVlIiwgIjIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbVZhbHVlMiIgaWQ9Ik5ld1BhcmFtVmFsdWUyIiB2YWx1ZT0iWyUgRGF0YS5OZXdQYXJhbVZhbHVlMiB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1LZXkzIj5bJSBUcmFuc2xhdGUoIlBhcmFtICVzIGtleSIsICIzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbUtleTMiIGlkPSJOZXdQYXJhbUtleTMiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtS2V5MyB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1WYWx1ZTMiPlslIFRyYW5zbGF0ZSgiUGFyYW0gJXMgdmFsdWUiLCAiMyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtVmFsdWUzIiBpZD0iTmV3UGFyYW1WYWx1ZTMiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtVmFsdWUzIHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbUtleTQiPlslIFRyYW5zbGF0ZSgiUGFyYW0gJXMga2V5IiwgIjQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtS2V5NCIgaWQ9Ik5ld1BhcmFtS2V5NCIgdmFsdWU9IlslIERhdGEuTmV3UGFyYW1LZXk0IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbVZhbHVlNCI+IFslIFRyYW5zbGF0ZSgiUGFyYW0gJXMgdmFsdWUiLCAiNCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtVmFsdWU0IiBpZD0iTmV3UGFyYW1WYWx1ZTQiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtVmFsdWU0IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbUtleTUiPlslIFRyYW5zbGF0ZSgiUGFyYW0gJXMga2V5IiwgIjUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtS2V5NSIgaWQ9Ik5ld1BhcmFtS2V5NSIgdmFsdWU9IlslIERhdGEuTmV3UGFyYW1LZXk1IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbVZhbHVlNSI+IFslIFRyYW5zbGF0ZSgiUGFyYW0gJXMgdmFsdWUiLCAiNSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtVmFsdWU1IiBpZD0iTmV3UGFyYW1WYWx1ZTUiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtVmFsdWU1IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbUtleTYiPlslIFRyYW5zbGF0ZSgiUGFyYW0gJXMga2V5IiwgIjYiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtS2V5NiIgaWQ9Ik5ld1BhcmFtS2V5NiIgdmFsdWU9IlslIERhdGEuTmV3UGFyYW1LZXk2IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbVZhbHVlNiI+IFslIFRyYW5zbGF0ZSgiUGFyYW0gJXMgdmFsdWUiLCAiNiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtVmFsdWU2IiBpZD0iTmV3UGFyYW1WYWx1ZTYiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtVmFsdWU2IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgRU5EICVdCiMgUm90aGVyIE9TUyAvIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRhZyBSZWZlcmVuY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0YWdzIikgfCBodG1sICVdOjwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UT0JPX0NVU1RPTUVSX1JFQUxOQU1FJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRvIGdldCB0aGUgbmFtZSBvZiB0aGUgdGlja2V0J3MgY3VzdG9tZXIgdXNlciAoaWYgZ2l2ZW4pLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVE9CT19DVVNUT01FUl9EQVRBXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXR0cmlidXRlcyBvZiB0aGUgY3VycmVudCBjdXN0b21lciB1c2VyIGRhdGEiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbJSBUcmFuc2xhdGUoIiBlLiBnLiIpIHwgaHRtbCAlXSA8Y29kZT4mbHQ7T1RPQk9fQ1VTVE9NRVJfREFUQV9Vc2VyRmlyc3RuYW1lJmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVE9CT19PV05FUl8qJmd0OzwvY29kZT4gWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXSA8Y29kZT4mbHQ7T1RPQk9fVElDS0VUX09XTkVSXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXR0cmlidXRlcyBvZiB0aGUgY3VycmVudCB0aWNrZXQgb3duZXIgdXNlciBkYXRhIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWyUgVHJhbnNsYXRlKCIgZS4gZy4iKSB8IGh0bWwgJV0gPGNvZGU+Jmx0O09UT0JPX09XTkVSX1VzZXJGaXJzdG5hbWUmZ3Q7PC9jb2RlPiBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19USUNLRVRfT1dORVJfVXNlckZpcnN0bmFtZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RPQk9fKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBdHRyaWJ1dGVzIG9mIHRoZSByZWNpcGllbnQgdXNlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIFRyYW5zbGF0ZSgiIGUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19Vc2VyRnVsbG5hbWUmZ3Q7PC9jb2RlPiBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19OT1RJRklDQVRJT05fUkVDSVBJRU5UX1VzZXJGdWxsbmFtZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RPQk9fVElDS0VUXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXR0cmlidXRlcyBvZiB0aGUgdGlja2V0IGRhdGEiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbJSBUcmFuc2xhdGUoIiBlLiBnLiIpIHwgaHRtbCAlXSA8Y29kZT4mbHQ7T1RPQk9fVElDS0VUX1RpY2tldE51bWJlciZndDssICZsdDtPVE9CT19USUNLRVRfVGlja2V0SUQmZ3Q7LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O09UT0JPX1RJQ0tFVF9RdWV1ZSZndDssICZsdDtPVE9CT19USUNLRVRfU3RhdGUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UT0JPX1RJQ0tFVF9EeW5hbWljRmllbGRfKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgZHluYW1pYyBmaWVsZHMgaW50ZXJuYWwga2V5IHZhbHVlcyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIFRyYW5zbGF0ZSgiIGUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19USUNLRVRfRHluYW1pY0ZpZWxkX1Rlc3RGaWVsZCZndDssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7T1RPQk9fVElDS0VUX0R5bmFtaWNGaWVsZF9UaWNrZXRGcmVlVGV4dDEmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UT0JPX1RJQ0tFVF9EeW5hbWljRmllbGRfKl9WYWx1ZSZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgZHluYW1pYyBmaWVsZHMgZGlzcGxheSB2YWx1ZXMsIHVzZWZ1bCBmb3IgRHJvcGRvd24gYW5kIE11bHRpc2VsZWN0IGZpZWxkcyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIFRyYW5zbGF0ZSgiIGUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19USUNLRVRfRHluYW1pY0ZpZWxkX1Rlc3RGaWVsZF9WYWx1ZSZndDssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7T1RPQk9fVElDS0VUX0R5bmFtaWNGaWVsZF9UaWNrZXRGcmVlVGV4dDFfVmFsdWUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UT0JPX0NPTkZJR18qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNvbmZpZyBvcHRpb25zIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWyUgVHJhbnNsYXRlKCIgZS4gZy4iKSB8IGh0bWwgJV0gPGNvZGU+Jmx0O09UT0JPX0NPTkZJR19IdHRwVHlwZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgICAgICA8L2RsPgoKICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRXhhbXBsZSBub3RpZmljYXRpb24iKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN1YmplY3RFeGFtcGxlIj5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV08L2xhYmVsPjoKICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iU3ViamVjdEV4YW1wbGUiIGlkPSJTdWJqZWN0RXhhbXBsZSIgdmFsdWU9IlRpY2tldCBDcmVhdGVkOiAmbHQ7T1RPQk9fVElDS0VUX1RpdGxlJmd0OyIgc2l6ZT0iODAiIG1heGxlbmd0aD0iODAiIHJlYWRvbmx5IC8+CiAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJSZXNwb25zZUV4YW1wbGUiPlslIFRyYW5zbGF0ZSgiVGV4dCIpIHwgaHRtbCAlXTwvbGFiZWw+OgogICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9IjEyIiBjb2xzPSI3MCIgbmFtZT0iUmVzcG9uc2VFeGFtcGxlIiBpZD0iUmVzcG9uc2VFeGFtcGxlIiByZWFkb25seT4KICAgIEhpICZsdDtPVE9CT19PV05FUl9Vc2VyRmlyc3RuYW1lJmd0OywKCiAgICB0aWNrZXQgWyZsdDtPVE9CT19DT05GSUdfVGlja2V0SG9vayZndDsmbHQ7T1RPQk9fVElDS0VUX1RpY2tldE51bWJlciZndDtdIGhhcyBiZWVuIGNyZWF0ZWQgaW4gcXVldWUgJmx0O09UT0JPX1RJQ0tFVF9RdWV1ZSZndDsuCgogICAgJmx0O09UT0JPX0NPTkZJR19IdHRwVHlwZSZndDs6Ly8mbHQ7T1RPQk9fQ09ORklHX0ZRRE4mZ3Q7LyZsdDtPVE9CT19DT05GSUdfU2NyaXB0QWxpYXMmZ3Q7aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0mbHQ7T1RPQk9fVElDS0VUX1RpY2tldElEJmd0OwoKICAgIC0tICZsdDtPVE9CT19DT05GSUdfTm90aWZpY2F0aW9uU2VuZGVyTmFtZSZndDsKICAgICAgICAgICAgICAgICAgICA8L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgojIEVPIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU2F2ZSBDaGFuZ2VzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIFNhdmVCdXR0b25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUHJvZmlsZSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSBhbmQgZmluaXNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJFZGl0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3VsdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlJlc3VsdHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIiVzIFRpY2tldHMgYWZmZWN0ZWQhIFdoYXQgZG8geW91IHdhbnQgdG8gZG8/IiwgRGF0YS5BZmZlY3RlZElEcykgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrU3RhcnQoIkRlbGV0ZVdhcm5pbmciKSAlXQogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkVycm9yIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIldhcm5pbmc6IFlvdSB1c2VkIHRoZSBERUxFVEUgb3B0aW9uLiBBbGwgZGVsZXRlZCB0aWNrZXRzIHdpbGwgYmUgbG9zdCEiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlbGV0ZVdhcm5pbmciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUnVuTGltaXQiKSAlXQogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkVycm9yIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIldhcm5pbmc6IFRoZXJlIGFyZSAlcyB0aWNrZXRzIGFmZmVjdGVkIGJ1dCBvbmx5ICVzIG1heSBiZSBtb2RpZmllZCBkdXJpbmcgb25lIGpvYiBleGVjdXRpb24hIiwgRGF0YS5Db3VudGVyLCBEYXRhLlJ1bkxpbWl0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJ1bkxpbWl0IikgJV0KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVVwZGF0ZTtQcm9maWxlPVslIERhdGEuTmFtZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiRWRpdCBKb2IiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UnVuTm93O1Byb2ZpbGU9WyUgRGF0YS5OYW1lIHwgdXJpICVdO1slIEVudigiQ2hhbGxlbmdlVG9rZW5QYXJhbSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiUnVuIEpvYiIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3VsdEJsb2NrIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBZmZlY3RlZCBUaWNrZXRzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIENvbmZpZygiVGlja2V0OjpIb29rIikgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQWdlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkZyb20iKSB8IGh0bWwgJV0gLyBbJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiT3duZXIiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIgSUQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXTtBY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQWdlIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5Gcm9tIHwgdHJ1bmNhdGUoMzApIHwgaHRtbCAlXVslIERhdGEuU3ViamVjdCB8IHRydW5jYXRlKDMwKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuUXVldWUgfCB0cnVuY2F0ZSgzMCkgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLk93bmVyIHwgdHJ1bmNhdGUoMzApIHwgaHRtbCAlXSAoWyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdKTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFRpY2tldEN1c3RvbWVyO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkN1c3RvbWVySUQgfCB0cnVuY2F0ZSgxNSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzdWx0QmxvY2siKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzdWx0IikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/System/GenericAgent.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0YWE5NmI4N2JhOGI1ZGZkMTYwNzcwZDU0MzUwYWNiZmM5YjUxYzRhIC0gS2VybmVsL1N5c3RlbS9HZW5lcmljQWdlbnQucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0FnZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFRpbWU6OkhpUmVzICgpOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9jaycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U0xBJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNBZ2VudCAtIHRvIG1hbmFnZSB0aGUgZ2VuZXJpYyBhZ2VudCBqb2JzCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMgdG8gbWFuYWdlIHRoZSBnZW5lcmljIGFnZW50IGFuZCB0aGUgZ2VuZXJpYyBhZ2VudCBqb2JzLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJEdlbmVyaWNBZ2VudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljQWdlbnQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGlja2V0IG9iamVjdAogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgKTsKCiAgICAjIGRlYnVnCiAgICAkU2VsZi0+e0RlYnVnfSA9ICRQYXJhbXtEZWJ1Z30gfHwgMDsKCiAgICAjIG5vdGljZSBvbiBTVERPVVQKICAgICRTZWxmLT57Tm90aWNlU1RET1VUfSA9ICRQYXJhbXtOb3RpY2VTVERPVVR9IHx8IDA7CgogICAgbXkgJU1hcCA9ICgKICAgICAgICBUaWNrZXROdW1iZXIgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9Gcm9tICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9UbyAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9DYyAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9TdWJqZWN0ICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9Cb2R5ICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBUaW1lVW5pdCAgICAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBDdXN0b21lcklEICAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBDdXN0b21lclVzZXJMb2dpbiAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBBZ2VudCAgICAgICAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBTdGF0ZUlEcyAgICAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIFN0YXRlVHlwZUlEcyAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgUXVldWVJRHMgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBQcmlvcml0eUlEcyAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIE93bmVySURzICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgTG9ja0lEcyAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBUeXBlSURzICAgICAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIFJlc3BvbnNpYmxlSURzICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBTTEFJRHMgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIE5ld1RpdGxlICAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld0N1c3RvbWVySUQgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld0N1c3RvbWVyVXNlckxvZ2luICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1N0YXRlSUQgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1F1ZXVlSUQgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1ByaW9yaXR5SUQgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld093bmVySUQgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld0xvY2tJRCAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1R5cGVJRCAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1NlcnZpY2VJRCAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1NMQUlEICAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIFNjaGVkdWxlTGFzdFJ1biAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIFNjaGVkdWxlTGFzdFJ1blVuaXhUaW1lID0+ICdTQ0FMQVInLAogICAgICAgIFZhbGlkICAgICAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIFNjaGVkdWxlRGF5cyAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgU2NoZWR1bGVNaW51dGVzICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBTY2hlZHVsZUhvdXJzICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIEV2ZW50VmFsdWVzICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICApOwoKICAgICMgYWRkIHRpbWUgYXR0cmlidXRlcwogICAgZm9yIG15ICRUeXBlICgKICAgICAgICBxdyhUaW1lIENoYW5nZVRpbWUgQ2xvc2VUaW1lIFRpbWVQZW5kaW5nIEVzY2FsYXRpb25UaW1lIEVzY2FsYXRpb25SZXNwb25zZVRpbWUgRXNjYWxhdGlvblVwZGF0ZVRpbWUgRXNjYWxhdGlvblNvbHV0aW9uVGltZSkKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJEtleSA9ICRUeXBlIC4gJ1NlYXJjaFR5cGUnOwogICAgICAgICRNYXB7JEtleX0gPSAnU0NBTEFSJzsKICAgIH0KICAgIGZvciBteSAkVHlwZSAoCiAgICAgICAgcXcoVGlja2V0Q3JlYXRlIFRpY2tldENoYW5nZSBUaWNrZXRDbG9zZSBUaWNrZXRMYXN0Q2hhbmdlIFRpY2tldExhc3RDbG9zZSBUaWNrZXRQZW5kaW5nIFRpY2tldEVzY2FsYXRpb24gVGlja2V0RXNjYWxhdGlvblJlc3BvbnNlIFRpY2tldEVzY2FsYXRpb25VcGRhdGUgVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uKQogICAgICAgICkKICAgIHsKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoCiAgICAgICAgICAgIHF3KFBvaW50Rm9ybWF0IFBvaW50IFBvaW50U3RhcnQgU3RhcnQgU3RhcnREYXkgU3RhcnRNb250aCBTdGFydFllYXIgU3RvcCBTdG9wRGF5IFN0b3BNb250aCBTdG9wWWVhcikKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEtleSA9ICRUeXBlIC4gJ1RpbWUnIC4gJEF0dHJpYnV0ZTsKICAgICAgICAgICAgJE1hcHskS2V5fSA9ICdTQ0FMQVInOwogICAgICAgIH0KICAgIH0KCiAgICAjIEFkZCBEeW5hbWljIEZpZWxkcyBhdHRyaWJ1dGVzCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgdGhlIGZpZWxkIHR5cGUgb2YgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBlZGl0IGFuZCBzZWFyY2gKICAgICAgICBteSAkRmllbGRWYWx1ZVR5cGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VGVtcGxhdGVWYWx1ZVR5cGVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBGaWVsZFR5cGUgICAgICAgICAgPT4gJ0FsbCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgZmllbGQgdHlwZSB0byBNYXAKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRGaWVsZFZhbHVlVHlwZSkgKSB7CiAgICAgICAgICAgIGZvciBteSAkRmllbGROYW1lICggc29ydCBrZXlzICV7JEZpZWxkVmFsdWVUeXBlfSApIHsKICAgICAgICAgICAgICAgICRNYXB7JEZpZWxkTmFtZX0gPSAkRmllbGRWYWx1ZVR5cGUtPnskRmllbGROYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+e01hcH0gPSBcJU1hcDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBKb2JSdW4oKQoKcnVuIGEgZ2VuZXJpYyBhZ2VudCBqb2IKCiAgICAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JSdW4oCiAgICAgICAgSm9iICAgICAgICAgID0+ICdKb2JOYW1lJywKICAgICAgICBPbmx5VGlja2V0SUQgPT4gMTIzLCAgICAgIyAob3B0aW9uYWwpIGZvciBldmVudCBiYXNlZCBKb2IgZXhlY3V0aW9uCiAgICAgICAgU2xlZXBUaW1lICAgID0+IDEwMF8wMDAgICMgKG9wdGlvbmFsKSBzbGVlcHRpbWUgcGVyIHRpY2tldCBpbiBtaWNyb3NlY29uZHMKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgSm9iUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciAocXcoSm9iIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICBwcmludCAiSm9iOiAnJFBhcmFte0pvYn0nXG4iOwogICAgfQoKICAgICMgZ2V0IGpvYiBmcm9tIHBhcmFtCiAgICBteSAlSm9iOwogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFRlbXBsYXRlOwogICAgaWYgKCAkUGFyYW17Q29uZmlnfSApIHsKICAgICAgICAlSm9iID0gJXsgJFBhcmFte0NvbmZpZ30gfTsKCiAgICAgICAgIyBsb2cgZXZlbnQKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJSdW4gR2VuZXJpY0FnZW50IEpvYiAnJFBhcmFte0pvYn0nIGZyb20gY29uZmlnIGZpbGUuIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGRiIGpvYgogICAgZWxzZSB7CgogICAgICAgICMgbG9nIGV2ZW50CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUnVuIEdlbmVyaWNBZ2VudCBKb2IgJyRQYXJhbXtKb2J9JyBmcm9tIGRiLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgam9iIGRhdGEKICAgICAgICBteSAlREJKb2JSYXcgPSAkU2VsZi0+Sm9iR2V0KCBOYW1lID0+ICRQYXJhbXtKb2J9ICk7CgogICAgICAgICMgdXBkYXRlZCBsYXN0IHJ1biB0aW1lCiAgICAgICAgJFNlbGYtPl9Kb2JVcGRhdGVSdW5UaW1lKAogICAgICAgICAgICBOYW1lICAgPT4gJFBhcmFte0pvYn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfQogICAgICAgICk7CgogICAgICAgICMgcmV3b3JrCiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJURCSm9iUmF3ICkgewogICAgICAgICAgICBpZiAoICRLZXkgPX4gL15OZXcvICkgewogICAgICAgICAgICAgICAgbXkgJE5ld0tleSA9ICRLZXk7CiAgICAgICAgICAgICAgICAkTmV3S2V5ID1+IHMvXk5ldy8vOwogICAgICAgICAgICAgICAgJEpvYntOZXd9LT57JE5ld0tleX0gPSAkREJKb2JSYXd7JEtleX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBza2lwIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRLZXkgIX4gbXsgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICAgICAgICAgICAgICRKb2J7JEtleX0gPSAkREJKb2JSYXd7JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY29udmVydCBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBpZiAoICRLZXkgPX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICAgICAgICAgJEpvYntOZXd9LT57JEtleX0gPSAkREJKb2JSYXd7JEtleX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkS2V5ID1+IG17IFxBIFNlYXJjaF9EeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoVGVtcGxhdGV7JEtleX0gPSAkREJKb2JSYXd7JEtleX07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgUGFzcyBtb2R1bGUgcGFyYW1ldGVycyBkaXJlY3RseSB0byB0aGUgbW9kdWxlIGluICVQYXJhbSwKICAgICAgICAjICAgYnV0IGRvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBrZXlzCiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiA2ICkgewogICAgICAgICAgICBpZiAoICRKb2J7TmV3fS0+eyJQYXJhbUtleSRDb3VudGVyIn0gKSB7CiAgICAgICAgICAgICAgICAkSm9ie05ld30tPnsgJEpvYntOZXd9LT57IlBhcmFtS2V5JENvdW50ZXIifSB9IC8vPSAkSm9ie05ld30tPnsiUGFyYW1WYWx1ZSRDb3VudGVyIn07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggZXhpc3RzICRKb2J7U2VhcmNoSW5BcmNoaXZlfSAmJiAkSm9ie1NlYXJjaEluQXJjaGl2ZX0gZXEgJ0FyY2hpdmVkVGlja2V0cycgKSB7CiAgICAgICAgICAgICRKb2J7QXJjaGl2ZUZsYWdzfSA9IFsneSddOwogICAgICAgIH0KICAgICAgICBpZiAoIGV4aXN0cyAkSm9ie1NlYXJjaEluQXJjaGl2ZX0gJiYgJEpvYntTZWFyY2hJbkFyY2hpdmV9IGVxICdBbGxUaWNrZXRzJyApIHsKICAgICAgICAgICAgJEpvYntBcmNoaXZlRmxhZ3N9ID0gWyAneScsICduJyBdOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBzZXQgZHluYW1pYyBmaWVsZHMgc2VhcmNoIHBhcmFtZXRlcnMKICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRUZW1wID0gJER5bmFtaWNGaWVsZFNlYXJjaFRlbXBsYXRlewogICAgICAgICAgICAgICAgJ1NlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgLiAkUHJlZmVyZW5jZS0+e1R5cGV9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0UgaWYgIWRlZmluZWQgJER5bmFtaWNGaWVsZFRlbXA7CgogICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZQogICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUR5bmFtaWNGaWVsZFNlYXJjaFRlbXBsYXRlLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCBzZWFyY2ggcGFyYW1ldGVyCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17T25seVRpY2tldElEfSApIHsKICAgICAgICAkSm9ie1RpY2tldElEfSA9ICRQYXJhbXtPbmx5VGlja2V0SUR9OwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBlc2NhbGF0aW9uIHRpY2tldHMKICAgIG15ICVUaWNrZXRzOwoKICAgICMgZ2V0IHRpY2tldCBsaW1pdCBvbiBqb2IgcnVuCiAgICBteSAkUnVuTGltaXQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6R2VuZXJpY0FnZW50UnVuTGltaXQnKTsKICAgIGlmICggJEpvYntFc2NhbGF0aW9ufSApIHsKCiAgICAgICAgIyBGaW5kIGFsbCB0aWNrZXRzIHdoaWNoIHdpbGwgZXNjYWxhdGUgd2l0aGluIHRoZSBuZXh0IGZpdmUgZGF5cy4KICAgICAgICAjICAgVGhlIG5vdGlmaWNhdGlvbiBtb2R1bGUgd2lsbCBkZXRlcm1pbmUgaWYgYSBub3RpZmljYXRpb24gbXVzdCBiZSBzZW50IG91dCBvciBub3QuCiAgICAgICAgbXkgQFRpY2tldHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgICVKb2IsCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRKb2J7TGltaXR9IHx8ICRQYXJhbXtMaW1pdH0gfHwgMTAwLAogICAgICAgICAgICBUaWNrZXRFc2NhbGF0aW9uVGltZU9sZGVyTWludXRlcyA9PiAkSm9ie1RpY2tldEVzY2FsYXRpb25UaW1lT2xkZXJNaW51dGVzfQogICAgICAgICAgICAgICAgfHwgLSggNSAqIDI0ICogNjAgKSwKICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAncncnLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9IHx8IDEsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIChAVGlja2V0cykgewogICAgICAgICAgICBpZiAoICEkSm9ie1F1ZXVlfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRzeyRffSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE51bWJlckxvb2t1cCggVGlja2V0SUQgPT4gJF8gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkXywKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0e1F1ZXVlfSBlcSAkSm9ie1F1ZXVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkVGlja2V0c3skX30gPSAkVGlja2V0e1RpY2tldE51bWJlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBwZW5kaW5nIHRpY2tldHMKICAgIGVsc2lmICggJEpvYntQZW5kaW5nUmVtaW5kZXJ9IHx8ICRKb2J7UGVuZGluZ0F1dG99ICkgewogICAgICAgIG15ICRUeXBlID0gJyc7CiAgICAgICAgaWYgKCAkSm9ie1BlbmRpbmdSZW1pbmRlcn0gKSB7CiAgICAgICAgICAgICRUeXBlID0gJ1BlbmRpbmdSZW1pbmRlcic7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkVHlwZSA9ICdQZW5kaW5nQXV0byc7CiAgICAgICAgfQogICAgICAgIGlmICggISRKb2J7UXVldWV9ICkgewogICAgICAgICAgICAlVGlja2V0cyA9ICgKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgICAgICAgICAlSm9iLAogICAgICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbklubGluZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZSAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJFBhcmFte0xpbWl0fSB8fCAkUnVuTGltaXQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICVUaWNrZXRzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggcmVmICRKb2J7UXVldWV9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciAoIEB7ICRKb2J7UXVldWV9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgICAgICAgICBwcmludCAiIEZvciBRdWV1ZTogJF9cbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAlVGlja2V0cyA9ICgKICAgICAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgICAgICAgICAgICAgICVKb2IsCiAgICAgICAgICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25JbmxpbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUXVldWVzICAgICAgICAgID0+IFskX10sCiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZSAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgID0+ICRQYXJhbXtMaW1pdH0gfHwgJFJ1bkxpbWl0LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAlVGlja2V0cwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJVRpY2tldHMgPSAoCiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgICAgICAgICAgJUpvYiwKICAgICAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25JbmxpbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGUgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICAgICAgUXVldWVzICAgICAgICAgID0+IFsgJEpvYntRdWV1ZX0gXSwKICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJFBhcmFte0xpbWl0fSB8fCAkUnVuTGltaXQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICVUaWNrZXRzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGZvciAoIHNvcnQga2V5cyAlVGlja2V0cyApIHsKICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJF8sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggJFRpY2tldHtVbnRpbFRpbWV9ID4gMSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkVGlja2V0c3skX307CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgcmVndWxhciB0aWNrZXRzCiAgICBlbHNlIHsKICAgICAgICBpZiAoICEkSm9ie1F1ZXVlfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgbWluLiBvbmUgc2VhcmNoIGFyZwogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBmb3IgKCBzb3J0IGtleXMgJUpvYiApIHsKICAgICAgICAgICAgICAgIGlmICggJF8gIX4gL14oTmV3fE5hbWV8VmFsaWR8U2NoZWR1bGV8RXZlbnQpLyAmJiAkSm9ieyRffSApIHsKICAgICAgICAgICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhbHNvIHNlYXJjaCBpbiBEeW5hbWljIGZpZWxkcyBzZWFyY2ggYXR0cmlidXRlcwogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsb2cgbm8gc2VhcmNoIGF0dHJpYnV0ZQogICAgICAgICAgICBpZiAoICEkQ291bnQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBdHRlbnRpb246IENhbid0IHJ1biBHZW5lcmljQWdlbnQgSm9iICckUGFyYW17Sm9ifScgYmVjYXVzZSBubyAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gInNlYXJjaCBhdHRyaWJ1dGVzIGFyZSB1c2VkIS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZWFyY2ggdGlja2V0cwogICAgICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgICAgIHByaW50ICIgRm9yIGFsbCBRdWV1ZXM6IFxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkR2VuZXJpY0FnZW50VGlja2V0U2VhcmNoID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkdlbmVyaWNBZ2VudFRpY2tldFNlYXJjaCIpIHx8IHt9OwogICAgICAgICAgICAlVGlja2V0cyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgICAgICVKb2IsCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgICAgIENvbmRpdGlvbklubGluZSA9PiAkR2VuZXJpY0FnZW50VGlja2V0U2VhcmNoLT57RXh0ZW5kZWRTZWFyY2hDb25kaXRpb259LAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgID0+ICRQYXJhbXtMaW1pdH0gfHwgJFJ1bkxpbWl0LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkSm9ie1F1ZXVlfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBmb3IgKCBAeyAkSm9ie1F1ZXVlfSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiBGb3IgUXVldWU6ICRfXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJVRpY2tldHMgPSAoCiAgICAgICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICAgICAgICAgICAgICAlSm9iLAogICAgICAgICAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uSW5saW5lID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICA9PiBbJF9dLAogICAgICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJFBhcmFte0xpbWl0fSB8fCAkUnVuTGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICVUaWNrZXRzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlVGlja2V0cyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgICAgICVKb2IsCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgICAgIENvbmRpdGlvbklubGluZSA9PiAxLAogICAgICAgICAgICAgICAgUXVldWVzICAgICAgICAgID0+IFsgJEpvYntRdWV1ZX0gXSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICA9PiAkUGFyYW17TGltaXR9IHx8ICRSdW5MaW1pdCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcm9jZXNzIGVhY2ggdGlja2V0CiAgICBUSUNLRVRJRDoKICAgIGZvciBteSAkVGlja2V0SUQgKCBzb3J0IGtleXMgJVRpY2tldHMgKSB7CgogICAgICAgICRTZWxmLT5fSm9iUnVuVGlja2V0KAogICAgICAgICAgICBDb25maWcgICAgICAgPT4gXCVKb2IsCiAgICAgICAgICAgIEpvYiAgICAgICAgICA9PiAkUGFyYW17Sm9ifSwKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICRUaWNrZXRzeyRUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkUGFyYW17U2xlZXBUaW1lfTsKCiAgICAgICAgVGltZTo6SGlSZXM6OnVzbGVlcCggJFBhcmFte1NsZWVwVGltZX0gKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEpvYkxpc3QoKQoKcmV0dXJucyBhIGhhc2ggb2Ygam9icwoKICAgIG15ICVMaXN0ID0gJEdlbmVyaWNBZ2VudE9iamVjdC0+Sm9iTGlzdCgpOwoKPWN1dAoKc3ViIEpvYkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICJKb2JMaXN0IjsKICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0dlbmVyaWNBZ2VudCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiByZWYgJENhY2hlOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgRElTVElOQ1Qoam9iX25hbWUpIEZST00gZ2VuZXJpY19hZ2VudF9qb2JzJywKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1swXTsKICAgIH0KCiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAnR2VuZXJpY0FnZW50JywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+IDI0ICogNjAgKiA2MCwKICAgICk7CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aGVhZDIgSm9iR2V0KCkKCnJldHVybnMgYSBoYXNoIG9mIHRoZSBqb2IgZGF0YQoKICAgIG15ICVKb2IgPSAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JHZXQoTmFtZSA9PiAnSm9iTmFtZScpOwoKPWN1dAoKc3ViIEpvYkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgKHF3KE5hbWUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNhY2hlIG9iamVjdAogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0pvYkdldDo6JyAuICRQYXJhbXtOYW1lfTsKICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0dlbmVyaWNBZ2VudCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiByZWYgJENhY2hlOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGpvYl9rZXksIGpvYl92YWx1ZQogICAgICAgICAgICBGUk9NIGdlbmVyaWNfYWdlbnRfam9icwogICAgICAgICAgICBXSEVSRSBqb2JfbmFtZSA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e01hcH0tPnsgJFJvd1swXSB9ICYmICRTZWxmLT57TWFwfS0+eyAkUm93WzBdIH0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgcHVzaCBAeyAkRGF0YXsgJFJvd1swXSB9IH0sICRSb3dbMV07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGltZSBzZXR0aW5ncwogICAgbXkgJU1hcCA9ICgKICAgICAgICBUaWNrZXRDcmVhdGUgICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgIFRpY2tldENoYW5nZSAgICAgICAgICAgICA9PiAnQ2hhbmdlVGltZScsCiAgICAgICAgVGlja2V0Q2xvc2UgICAgICAgICAgICAgID0+ICdDbG9zZVRpbWUnLAogICAgICAgIFRpY2tldExhc3RDaGFuZ2UgICAgICAgICA9PiAnTGFzdENoYW5nZVRpbWUnLAogICAgICAgIFRpY2tldExhc3RDbG9zZSAgICAgICAgICA9PiAnTGFzdENsb3NlVGltZScsCiAgICAgICAgVGlja2V0UGVuZGluZyAgICAgICAgICAgID0+ICdUaW1lUGVuZGluZycsCiAgICAgICAgVGlja2V0RXNjYWxhdGlvbiAgICAgICAgID0+ICdFc2NhbGF0aW9uVGltZScsCiAgICAgICAgVGlja2V0RXNjYWxhdGlvblJlc3BvbnNlID0+ICdFc2NhbGF0aW9uUmVzcG9uc2VUaW1lJywKICAgICAgICBUaWNrZXRFc2NhbGF0aW9uVXBkYXRlICAgPT4gJ0VzY2FsYXRpb25VcGRhdGVUaW1lJywKICAgICAgICBUaWNrZXRFc2NhbGF0aW9uU29sdXRpb24gPT4gJ0VzY2FsYXRpb25Tb2x1dGlvblRpbWUnLAogICAgKTsKCiAgICBmb3IgbXkgJFR5cGUgKAogICAgICAgIHF3KFRpY2tldENyZWF0ZSBUaWNrZXRDaGFuZ2UgVGlja2V0Q2xvc2UgVGlja2V0TGFzdENoYW5nZSBUaWNrZXRMYXN0Q2xvc2UgVGlja2V0UGVuZGluZyBUaWNrZXRFc2NhbGF0aW9uIFRpY2tldEVzY2FsYXRpb25SZXNwb25zZSBUaWNrZXRFc2NhbGF0aW9uVXBkYXRlIFRpY2tldEVzY2FsYXRpb25Tb2x1dGlvbikKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJFNlYXJjaFR5cGUgPSAkTWFweyRUeXBlfSAuICdTZWFyY2hUeXBlJzsKCiAgICAgICAgaWYgKCAhJERhdGF7JFNlYXJjaFR5cGV9IHx8ICREYXRheyRTZWFyY2hUeXBlfSBlcSAnTm9uZScgKSB7CgogICAgICAgICAgICAjIGRvIG5vdGhpbmcgb24gdGltZSBzdHVmZgogICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgcXcoVGltZVN0YXJ0TW9udGggVGltZVN0b3BNb250aCBUaW1lU3RvcERheQogICAgICAgICAgICAgICAgVGltZVN0YXJ0RGF5IFRpbWVTdG9wWWVhciBUaW1lUG9pbnQKICAgICAgICAgICAgICAgIFRpbWVTdGFydFllYXIgVGltZVBvaW50Rm9ybWF0IFRpbWVQb2ludFN0YXJ0KQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkZWxldGUgJERhdGF7ICRUeXBlIC4gJF8gfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREYXRheyRTZWFyY2hUeXBlfSAmJiAkRGF0YXskU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAgICAgZm9yIChxdyhUaW1lUG9pbnQgVGltZVBvaW50Rm9ybWF0IFRpbWVQb2ludFN0YXJ0KSkgewogICAgICAgICAgICAgICAgZGVsZXRlICREYXRheyAkVHlwZSAuICRfIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChxdyhNb250aCBEYXkpKSB7CiAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAiVGltZVN0YXJ0JF8iIH0gPSBzcHJpbnRmKCAnJTAyZCcsICREYXRheyAkVHlwZSAuICJUaW1lU3RhcnQkXyIgfSApOwogICAgICAgICAgICAgICAgJERhdGF7ICRUeXBlIC4gIlRpbWVTdG9wJF8iIH0gID0gc3ByaW50ZiggJyUwMmQnLCAkRGF0YXsgJFR5cGUgLiAiVGltZVN0b3AkXyIgfSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICREYXRheyAkVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICYmICREYXRheyAkVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgJiYgJERhdGF7ICRUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJERhdGF7ICRUeXBlIC4gJ1RpbWVOZXdlckRhdGUnIH0gPSAkRGF0YXsgJFR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgIC4gJERhdGF7ICRUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgLiAkRGF0YXsgJFR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAxJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICYmICREYXRheyAkVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAmJiAkRGF0YXsgJFR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICREYXRheyAkVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJERhdGF7ICRUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgIC4gJERhdGF7ICRUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAuICREYXRheyAkVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGF0YXskU2VhcmNoVHlwZX0gJiYgJERhdGF7JFNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgcXcoVGltZVN0YXJ0TW9udGggVGltZVN0b3BNb250aCBUaW1lU3RvcERheQogICAgICAgICAgICAgICAgVGltZVN0YXJ0RGF5IFRpbWVTdG9wWWVhciBUaW1lU3RhcnRZZWFyKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkZWxldGUgJERhdGF7ICRUeXBlIC4gJF8gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50JyB9CiAgICAgICAgICAgICAgICAmJiAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0KICAgICAgICAgICAgICAgICYmICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJFRpbWUgPSAwOwogICAgICAgICAgICAgICAgaWYgKCAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtaW51dGUnICkgewogICAgICAgICAgICAgICAgICAgICRUaW1lID0gJERhdGF7ICRUeXBlIC4gJ1RpbWVQb2ludCcgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJERhdGF7ICRUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJERhdGF7ICRUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnd2VlaycgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICRUaW1lID0gJERhdGF7ICRUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnQmVmb3JlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHRoYW4gLi4uIGFnbwogICAgICAgICAgICAgICAgICAgICREYXRheyAkVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnTmV4dCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgd2l0aGluIHRoZSBuZXh0IC4uLgogICAgICAgICAgICAgICAgICAgICREYXRheyAkVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IC0kVGltZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiB0aGUgbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7ICRUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHZhbGlkCiAgICBpZiAoICVEYXRhICYmICFkZWZpbmVkICREYXRhe1ZhbGlkfSApIHsKICAgICAgICAkRGF0YXtWYWxpZH0gPSAxOwogICAgfQogICAgaWYgKCVEYXRhKSB7CiAgICAgICAgJERhdGF7TmFtZX0gPSAkUGFyYW17TmFtZX07CiAgICB9CgogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0dlbmVyaWNBZ2VudCcsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiAyNCAqIDYwICogNjAsCiAgICApOwoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIEpvYkFkZCgpCgphZGRzIGEgbmV3IGpvYiB0byB0aGUgZGF0YWJhc2UKCiAgICAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JBZGQoCiAgICAgICAgTmFtZSA9PiAnSm9iTmFtZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFF1ZXVlID0+ICdTb21lUXVldWUnLAogICAgICAgICAgICAuLi4KICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEpvYkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgKHF3KE5hbWUgRGF0YSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgam9iIG5hbWUgYWxyZWFkeSBleGlzdHMKICAgIG15ICVDaGVjayA9ICRTZWxmLT5Kb2JHZXQoIE5hbWUgPT4gJFBhcmFte05hbWV9ICk7CiAgICBpZiAoJUNoZWNrKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBIGpvYiB3aXRoIHRoZSBuYW1lICckUGFyYW17TmFtZX0nIGFscmVhZHkgZXhpc3RzLiIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGluc2VydCBkYXRhIGludG8gZGIKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRQYXJhbXtEYXRhfSB9ICkgewogICAgICAgIGlmICggcmVmICRQYXJhbXtEYXRhfS0+eyRLZXl9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtEYXRhfS0+eyRLZXl9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJEl0ZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBnZW5lcmljX2FnZW50X2pvYnMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnKGpvYl9uYW1lLCBqb2Jfa2V5LCBqb2JfdmFsdWUpIFZBTFVFUyAoPywgPywgPyknLAogICAgICAgICAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRLZXksIFwkSXRlbSBdLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17RGF0YX0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBnZW5lcmljX2FnZW50X2pvYnMgJwogICAgICAgICAgICAgICAgICAgICAgICAuICcoam9iX25hbWUsIGpvYl9rZXksIGpvYl92YWx1ZSkgVkFMVUVTICg/LCA/LCA/KScsCiAgICAgICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkS2V5LCBcJFBhcmFte0RhdGF9LT57JEtleX0gXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgTWVzc2FnZSAgPT4gIk5ldyBHZW5lcmljQWdlbnQgam9iICckUGFyYW17TmFtZX0nIGFkZGVkIChVc2VySUQ9JFBhcmFte1VzZXJJRH0pLiIsCiAgICApOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0dlbmVyaWNBZ2VudCcsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgSm9iRGVsZXRlKCkKCmRlbGV0ZXMgYSBqb2IgZnJvbSB0aGUgZGF0YWJhc2UKCiAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmljQWdlbnRPYmplY3QtPkpvYkRlbGV0ZSgKICAgICAgICBOYW1lICAgPT4gJ0pvYk5hbWUnLAogICAgICAgIFVzZXJJRCA9PiAxMjMsCiAgICApOwoKcmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICMgb3IgZmFsc2UgaW4gY2FzZSBvZiBhIGZhaWx1cmUKCj1jdXQKCnN1YiBKb2JEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgam9iCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZ2VuZXJpY19hZ2VudF9qb2JzIFdIRVJFIGpvYl9uYW1lID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICk7CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgTWVzc2FnZSAgPT4gIkdlbmVyaWNBZ2VudCBqb2IgJyRQYXJhbXtOYW1lfScgZGVsZXRlZCAoVXNlcklEPSRQYXJhbXtVc2VySUR9KS4iLAogICAgKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdHZW5lcmljQWdlbnQnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEpvYkV2ZW50TGlzdCgpCgpyZXR1cm5zIGEgaGFzaCBvZiBldmVudHMgZm9yIGVhY2ggam9iCgogICAgbXkgJUxpc3QgPSAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JFdmVudExpc3QoKTsKCj1jdXQKCnN1YiBKb2JFdmVudExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICJKb2JFdmVudExpc3QiOwogICAgbXkgJENhY2hlICAgID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnR2VuZXJpY0FnZW50JywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJXskQ2FjaGV9IGlmIHJlZiAkQ2FjaGU7CgogICAgbXkgJUpvYkxpc3QgPSAkU2VsZi0+Sm9iTGlzdCgpOwogICAgbXkgJURhdGE7CiAgICBKT0JfTkFNRToKICAgIGZvciBteSAkSm9iTmFtZSAoIHNvcnQga2V5cyAlSm9iTGlzdCApIHsKICAgICAgICBteSAlSm9iID0gJFNlbGYtPkpvYkdldCggTmFtZSA9PiAkSm9iTmFtZSApOwogICAgICAgIG5leHQgSk9CX05BTUUgaWYgISRKb2J7VmFsaWR9OwogICAgICAgICREYXRheyRKb2JOYW1lfSA9ICRKb2J7RXZlbnRWYWx1ZXN9OwogICAgfQoKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdHZW5lcmljQWdlbnQnLAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgVFRMICAgPT4gMjQgKiA2MCAqIDYwLAogICAgKTsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1oZWFkMiBFeHBvcnRHZW5lcmljQWdlbnRzKCkKClJldHVybnMgZGF0YSBzdHJ1Y3R1cmVzIHJlYWR5IGZvciBleHBvcnQgZm9yIGVhY2ggZ2VuZXJpYyBhZ2VudC4gT3B0aW9uYWxseSBmaWx0ZXJhYmxlIGJ5IGdpdmluZyBhIGxpc3Qgb2YgZGVzaXJlZCBnZW5lcmljIGFnZW50cy4KCiAgICBteSAkRXhwb3J0RGF0YSA9ICRHZW5lcmljQWdlbnRPYmplY3QtPkV4cG9ydEdlbmVyaWNBZ2VudHMoCiAgICAgICAgR2VuZXJpY0FnZW50cyA9PiBbICAgICAgICAgICMgKG9wdGlvbmFsKSByZXN0cmljdCBnZW5lcmljIGFnZW50cyB0byBnaXZlbiBvbmVzCiAgICAgICAgICAgICdHZW5lcmljQWdlbnROYW1lMDEnLAogICAgICAgICAgICAnR2VuZXJpY0FnZW50TmFtZTAyJwogICAgICAgIF0sCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydEdlbmVyaWNBZ2VudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlR2VuZXJpY0FnZW50RmlsdGVyOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtHZW5lcmljQWdlbnRzfSApICkgewogICAgICAgICVHZW5lcmljQWdlbnRGaWx0ZXIgPSBtYXAgeyAkXyA9PiAxIH0gJFBhcmFte0dlbmVyaWNBZ2VudHN9LT5AKjsKICAgIH0KCiAgICAjIGdldCBuZWNlc3Nhcnkgb2JqZWN0cwogICAgbXkgJExvY2tPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvY2snKTsKICAgIG15ICRQcmlvcml0eU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScpOwogICAgbXkgJFF1ZXVlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICBteSAkU2VydmljZU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwogICAgbXkgJFNMQU9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpOwogICAgbXkgJFN0YXRlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CiAgICBteSAkVHlwZU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwogICAgbXkgJFVzZXJPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGZldGNoIGxvb2t1cCBsaXN0cwogICAgbXkgJUdlbmVyaWNBZ2VudExpc3QgPSAkU2VsZi0+Sm9iTGlzdCgpOwoKICAgIG15ICVFeHBvcnREYXRhOwogICAgR0VORVJJQ0FHRU5UTkFNRToKICAgIGZvciBteSAkR2VuZXJpY0FnZW50TmFtZSAoIHNvcnQga2V5cyAlR2VuZXJpY0FnZW50TGlzdCApIHsKCiAgICAgICAgbXkgJUdlbmVyaWNBZ2VudERhdGEgPSAkU2VsZi0+Sm9iR2V0KAogICAgICAgICAgICBOYW1lID0+ICRHZW5lcmljQWdlbnROYW1lLAogICAgICAgICk7CgogICAgICAgIGlmICglR2VuZXJpY0FnZW50RmlsdGVyKSB7CiAgICAgICAgICAgIG5leHQgR0VORVJJQ0FHRU5UTkFNRSB1bmxlc3MgJEdlbmVyaWNBZ2VudEZpbHRlcnsgJEdlbmVyaWNBZ2VudERhdGF7TmFtZX0gfTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNsYXRlIElEcyBpbnRvIG5hbWVzIG9yIG5hbWUtbGlrZSBpZGVudGlmaWVycwogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIGtleXMgJUdlbmVyaWNBZ2VudERhdGEgKSB7CgogICAgICAgICAgICAjIHNpbmdsZS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnTmV3TG9ja0lEJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGF7TmV3TG9ja0lEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdMb2NrfSA9ICRMb2NrT2JqZWN0LT5Mb2NrTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBMb2NrSUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3TG9ja0lEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtOZXdMb2NrSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTmV3T3duZXJJRCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZW5lcmljQWdlbnREYXRhe05ld093bmVySUR9ICkgewogICAgICAgICAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhe05ld093bmVyfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3T3duZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEdlbmVyaWNBZ2VudERhdGF7TmV3T3duZXJJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOZXdQcmlvcml0eUlEJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGF7TmV3UHJpb3JpdHlJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7TmV3UHJpb3JpdHl9ID0gJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHlJRCA9PiAkR2VuZXJpY0FnZW50RGF0YXtOZXdQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtOZXdQcmlvcml0eUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05ld1F1ZXVlSUQnICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YXtOZXdRdWV1ZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdRdWV1ZX0gPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBRdWV1ZUlEID0+ICRHZW5lcmljQWdlbnREYXRhe05ld1F1ZXVlSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe05ld1F1ZXVlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTmV3U2VydmljZUlEJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGF7TmV3U2VydmljZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdTZXJ2aWNlfSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtOZXdTZXJ2aWNlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTmV3U0xBSUQnICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YXtOZXdTTEFJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7TmV3U0xBfSA9ICRTTEFPYmplY3QtPlNMQUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgU0xBSUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3U0xBSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe05ld1NMQUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05ld1N0YXRlSUQnICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YXtOZXdTdGF0ZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdTdGF0ZX0gPSAkU3RhdGVPYmplY3QtPlN0YXRlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEID0+ICRHZW5lcmljQWdlbnREYXRhe05ld1N0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe05ld1N0YXRlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTmV3VHlwZUlEJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGF7TmV3VHlwZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdUeXBlfSA9ICRUeXBlT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlSUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3VHlwZUlEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtOZXdUeXBlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZXMKICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdMb2NrSURzJyApIHsKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YXtMb2NrSURzfSApICkgewogICAgICAgICAgICAgICAgICAgIG15IEBMb2NrczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJExvY2tJRCAoICRHZW5lcmljQWdlbnREYXRhe0xvY2tJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBATG9ja3MsICRMb2NrT2JqZWN0LT5Mb2NrTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0lEID0+ICRMb2NrSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhe0xvY2tzfSA9IFxATG9ja3M7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe0xvY2tJRHN9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnT3duZXJJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhe093bmVySURzfSApICkgewogICAgICAgICAgICAgICAgICAgIG15IEBPd25lcnM7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRPd25lcklEICggJEdlbmVyaWNBZ2VudERhdGF7T3duZXJJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAT3duZXJzLCAkVXNlck9iamVjdC0+VXNlckxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkT3duZXJJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7T3duZXJzfSA9IFxAT3duZXJzOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtPd25lcklEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdQcmlvcml0eUlEcycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGF7UHJpb3JpdHlJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFByaW9yaXRpZXM7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRQcmlvcml0eUlEICggJEdlbmVyaWNBZ2VudERhdGF7UHJpb3JpdHlJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAUHJpb3JpdGllcywgJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5SUQgPT4gJFByaW9yaXR5SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhe1ByaW9yaXRpZXN9ID0gXEBQcmlvcml0aWVzOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtQcmlvcml0eUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdRdWV1ZUlEcycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGF7UXVldWVJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFF1ZXVlczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFF1ZXVlSUQgKCAkR2VuZXJpY0FnZW50RGF0YXtRdWV1ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBRdWV1ZXMsICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWV1ZUlEID0+ICRRdWV1ZUlELAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtRdWV1ZXN9ID0gXEBRdWV1ZXM7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe1F1ZXVlSURzfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1NlcnZpY2VJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhe1NlcnZpY2VJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFNlcnZpY2VzOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkU2VydmljZUlEICggJEdlbmVyaWNBZ2VudERhdGF7U2VydmljZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZXJ2aWNlcywgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7U2VydmljZXN9ID0gXEBTZXJ2aWNlczsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEdlbmVyaWNBZ2VudERhdGF7U2VydmljZUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdTTEFJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhe1NMQUlEc30gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSBAU0xBczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFNMQUlEICggJEdlbmVyaWNBZ2VudERhdGF7U0xBSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNMQXMsICRTTEFPYmplY3QtPlNMQUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMQUlEID0+ICRTTEFJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7U0xBc30gPSBcQFNMQXM7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe1NMQUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdTdGF0ZUlEcycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGF7U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFN0YXRlczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFN0YXRlSUQgKCAkR2VuZXJpY0FnZW50RGF0YXtTdGF0ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTdGF0ZXMsICRTdGF0ZU9iamVjdC0+U3RhdGVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEID0+ICRTdGF0ZUlELAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtTdGF0ZXN9ID0gXEBTdGF0ZXM7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe1N0YXRlSURzfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1R5cGVJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhe1R5cGVJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFR5cGVzOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkVHlwZUlEICggJEdlbmVyaWNBZ2VudERhdGF7VHlwZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBUeXBlcywgJFR5cGVPYmplY3QtPlR5cGVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlSUQgPT4gJFR5cGVJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7VHlwZXN9ID0gXEBUeXBlczsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEdlbmVyaWNBZ2VudERhdGF7VHlwZUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRFeHBvcnREYXRheyAkR2VuZXJpY0FnZW50RGF0YXtOYW1lfSB9ID0gXCVHZW5lcmljQWdlbnREYXRhOwogICAgfQoKICAgIHJldHVybiBcJUV4cG9ydERhdGE7Cn0KCj1oZWFkMiBJbXBvcnRHZW5lcmljQWdlbnRzKCkKCkltcG9ydHMgbmV3IGdlbmVyaWMgYWdlbnRzIGFuZCBvcHRpb25hbGx5IHVwZGF0ZXMgZXhpc3Rpbmcgb25lcy4KClRoZSBuYW1lcyB3cml0dGVuIGJ5IEw8L0V4cG9ydEdlbmVyaWNBZ2VudHMoKT4sIGUuZy4gQzxTdGF0ZXM+LCBhcmUgdHJhbnNsYXRlZCB0byBJRHMsIG9ubHkgdGhlCklEcyBhcmUgc3RvcmVkLiBBIGpvYiB3aXRoIGEgbmFtZSB0aGF0IGRvZXMgbm90IGV4aXN0IG9uIHRoaXMgc3lzdGVtIGlzIG5vdCBpbXBvcnRlZC4gVGhlIG90aGVyCmpvYnMgYXJlIGltcG9ydGVkIGFueXdheSwgYnV0IGZhbHNlIGlzIHJldHVybmVkLgoKICAgIG15ICRTdWNjZXNzID0gJEdlbmVyaWNBZ2VudE9iamVjdC0+SW1wb3J0R2VuZXJpY0FnZW50cygKICAgICAgICBHZW5lcmljQWdlbnRzICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgJ0dlbmVyaWNBZ2VudE5hbWUwMScgPT4gewogICAgICAgICAgICAgICAgIyBHZW5lcmljQWdlbnQgZGF0YQogICAgICAgICAgICB9LAogICAgICAgICAgICAnR2VuZXJpY0FnZW50TmFtZTAyJyA9PiB7CiAgICAgICAgICAgICAgICAjIEdlbmVyaWNBZ2VudCBkYXRhCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzID0+ICgwfDEpLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0R2VuZXJpY0FnZW50cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRVc2VySUQgPSAkU2VsZi0+e1VzZXJJRH0gfHwgJFBhcmFte1VzZXJJRH07CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICRMb2NrT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2NrJyk7CiAgICBteSAkUHJpb3JpdHlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJpb3JpdHknKTsKICAgIG15ICRRdWV1ZU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwogICAgbXkgJFNlcnZpY2VPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKICAgIG15ICRTTEFPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTTEEnKTsKICAgIG15ICRTdGF0ZU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpOwogICAgbXkgJFR5cGVPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBmZXRjaCBsb29rdXAgbGlzdHMKICAgIG15ICVHZW5lcmljQWdlbnRMaXN0ID0gJFNlbGYtPkpvYkxpc3QoKTsKCiAgICAjIGF0dHJpYnV0ZXMgdGhlIGV4cG9ydCB3cml0ZXMgYXMgbmFtZXMsIHdpdGggdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHRyYW5zbGF0ZWQgSURzCiAgICBteSAlTmFtZUtleTJJREtleSA9ICgKICAgICAgICBOZXdMb2NrICAgICA9PiAnTmV3TG9ja0lEJywKICAgICAgICBOZXdPd25lciAgICA9PiAnTmV3T3duZXJJRCcsCiAgICAgICAgTmV3UHJpb3JpdHkgPT4gJ05ld1ByaW9yaXR5SUQnLAogICAgICAgIE5ld1F1ZXVlICAgID0+ICdOZXdRdWV1ZUlEJywKICAgICAgICBOZXdTZXJ2aWNlICA9PiAnTmV3U2VydmljZUlEJywKICAgICAgICBOZXdTTEEgICAgICA9PiAnTmV3U0xBSUQnLAogICAgICAgIE5ld1N0YXRlICAgID0+ICdOZXdTdGF0ZUlEJywKICAgICAgICBOZXdUeXBlICAgICA9PiAnTmV3VHlwZUlEJywKICAgICAgICBMb2NrcyAgICAgICA9PiAnTG9ja0lEcycsCiAgICAgICAgT3duZXJzICAgICAgPT4gJ093bmVySURzJywKICAgICAgICBQcmlvcml0aWVzICA9PiAnUHJpb3JpdHlJRHMnLAogICAgICAgIFF1ZXVlcyAgICAgID0+ICdRdWV1ZUlEcycsCiAgICAgICAgU2VydmljZXMgICAgPT4gJ1NlcnZpY2VJRHMnLAogICAgICAgIFNMQXMgICAgICAgID0+ICdTTEFJRHMnLAogICAgICAgIFN0YXRlcyAgICAgID0+ICdTdGF0ZUlEcycsCiAgICAgICAgVHlwZXMgICAgICAgPT4gJ1R5cGVJRHMnLAogICAgKTsKCiAgICBteSAkQWxsSm9ic0ltcG9ydGVkID0gMTsKCiAgICBHRU5FUklDQUdFTlROQU1FOgogICAgZm9yIG15ICRHZW5lcmljQWdlbnROYW1lICgga2V5cyAkUGFyYW17R2VuZXJpY0FnZW50c30tPiUqICkgewogICAgICAgIG15ICRHZW5lcmljQWdlbnREYXRhID0gJFBhcmFte0dlbmVyaWNBZ2VudHN9eyRHZW5lcmljQWdlbnROYW1lfTsKCiAgICAgICAgIyBjaGVjayBpZiB0aGVyZSBleGlzdHMgYSBnZW5lcmljIGFnZW50IHdpdGggc2FtZSBuYW1lIGluIHRoZSBzeXN0ZW0KICAgICAgICAjICAgTk9URSBHZW5lcmljQWdlbnRMaXN0IGhhcyBmb3JtYXQgeyBOYW1lID0+ICdOYW1lJyB9LCB0aGVyZWZvciB1c2luZyBhIGxvb2t1cCBpcyB1bm5lY2Vzc2FyeQogICAgICAgIG15ICRHZW5lcmljQWdlbnRDaGVja05hbWUgPSAkR2VuZXJpY0FnZW50TGlzdHsgJEdlbmVyaWNBZ2VudERhdGEtPntOYW1lfSB9OwoKICAgICAgICAjIHNraXAgaWYgZ2VuZXJpYyBhZ2VudCB3aXRoIHNhbWUgbmFtZSBleGlzdHMgYW5kIG92ZXJ3cml0ZSBpcyBub3Qgc2V0CiAgICAgICAgbmV4dCBHRU5FUklDQUdFTlROQU1FIGlmICggISRQYXJhbXtPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzfSAmJiAkR2VuZXJpY0FnZW50Q2hlY2tOYW1lICk7CgogICAgICAgICMgdHJhbnNsYXRlIG5hbWVkIGRhdGEgYmFjayB0byBJRHMKICAgICAgICAjIHNpbmdsZS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YS0+e05ld0xvY2t9ICkgewogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e05ld0xvY2tJRH0gPSAkTG9ja09iamVjdC0+TG9ja0xvb2t1cCgKICAgICAgICAgICAgICAgIExvY2sgPT4gJEdlbmVyaWNBZ2VudERhdGEtPntOZXdMb2NrfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YS0+e05ld093bmVyfSApIHsKICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntOZXdPd25lcklEfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTG9va3VwKAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRHZW5lcmljQWdlbnREYXRhLT57TmV3T3duZXJ9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRHZW5lcmljQWdlbnREYXRhLT57TmV3UHJpb3JpdHl9ICkgewogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1ByaW9yaXR5SUR9ID0gJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxvb2t1cCgKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRHZW5lcmljQWdlbnREYXRhLT57TmV3UHJpb3JpdHl9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRHZW5lcmljQWdlbnREYXRhLT57TmV3UXVldWV9ICkgewogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1F1ZXVlSUR9ID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUxvb2t1cCgKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICRHZW5lcmljQWdlbnREYXRhLT57TmV3UXVldWV9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRHZW5lcmljQWdlbnREYXRhLT57TmV3U2VydmljZX0gKSB7CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57TmV3U2VydmljZUlEfSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1NlcnZpY2V9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRHZW5lcmljQWdlbnREYXRhLT57TmV3U0xBfSApIHsKICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntOZXdTTEFJRH0gPSAkU0xBT2JqZWN0LT5TTEFMb29rdXAoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRHZW5lcmljQWdlbnREYXRhLT57TmV3U0xBfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1N0YXRlfSApIHsKICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntOZXdTdGF0ZUlEfSA9ICRTdGF0ZU9iamVjdC0+U3RhdGVMb29rdXAoCiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1N0YXRlfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1R5cGV9ICkgewogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1R5cGVJRH0gPSAkVHlwZU9iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJEdlbmVyaWNBZ2VudERhdGEtPntOZXdUeXBlfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgYXJyYXkgYXR0cmlidXRlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YS0+e0xvY2tzfSApICkgewogICAgICAgICAgICBteSBATG9ja0lEczsKICAgICAgICAgICAgZm9yIG15ICRMb2NrICggJEdlbmVyaWNBZ2VudERhdGEtPntMb2Nrc30tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBATG9ja0lEcywgJExvY2tPYmplY3QtPkxvY2tMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgTG9jayA9PiAkTG9jaywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntMb2NrSURzfSA9IFxATG9ja0lEczsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhLT57T3duZXJzfSApICkgewogICAgICAgICAgICBteSBAT3duZXJJRHM7CiAgICAgICAgICAgIGZvciBteSAkT3duZXIgKCAkR2VuZXJpY0FnZW50RGF0YS0+e093bmVyc30tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAT3duZXJJRHMsICRVc2VyT2JqZWN0LT5Vc2VyTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkT3duZXIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57T3duZXJJRHN9ID0gXEBPd25lcklEczsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhLT57UHJpb3JpdGllc30gKSApIHsKICAgICAgICAgICAgbXkgQFByaW9yaXR5SURzOwogICAgICAgICAgICBmb3IgbXkgJFByaW9yaXR5ICggJEdlbmVyaWNBZ2VudERhdGEtPntQcmlvcml0aWVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBQcmlvcml0eUlEcywgJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkUHJpb3JpdHksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57UHJpb3JpdHlJRHN9ID0gXEBQcmlvcml0eUlEczsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhLT57UXVldWVzfSApICkgewogICAgICAgICAgICBteSBAUXVldWVJRHM7CiAgICAgICAgICAgIGZvciBteSAkUXVldWUgKCAkR2VuZXJpY0FnZW50RGF0YS0+e1F1ZXVlc30tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAUXVldWVJRHMsICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgUXVldWUgPT4gJFF1ZXVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e1F1ZXVlSURzfSA9IFxAUXVldWVJRHM7CiAgICAgICAgfQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YS0+e1NlcnZpY2VzfSApICkgewogICAgICAgICAgICBteSBAU2VydmljZUlEczsKICAgICAgICAgICAgZm9yIG15ICRTZXJ2aWNlICggJEdlbmVyaWNBZ2VudERhdGEtPntTZXJ2aWNlc30tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAU2VydmljZUlEcywgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkU2VydmljZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntTZXJ2aWNlSURzfSA9IFxAU2VydmljZUlEczsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhLT57U0xBc30gKSApIHsKICAgICAgICAgICAgbXkgQFNMQUlEczsKICAgICAgICAgICAgZm9yIG15ICRTTEEgKCAkR2VuZXJpY0FnZW50RGF0YS0+e1NMQXN9LT5AKiApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNMQUlEcywgJFNMQU9iamVjdC0+U0xBTG9va3VwKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFNMQSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntTTEFJRHN9ID0gXEBTTEFJRHM7CiAgICAgICAgfQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YS0+e1N0YXRlc30gKSApIHsKICAgICAgICAgICAgbXkgQFN0YXRlSURzOwogICAgICAgICAgICBmb3IgbXkgJFN0YXRlICggJEdlbmVyaWNBZ2VudERhdGEtPntTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFN0YXRlSURzLCAkU3RhdGVPYmplY3QtPlN0YXRlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFN0YXRlID0+ICRTdGF0ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntTdGF0ZUlEc30gPSBcQFN0YXRlSURzOwogICAgICAgIH0KICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGEtPntUeXBlc30gKSApIHsKICAgICAgICAgICAgbXkgQFR5cGVJRHM7CiAgICAgICAgICAgIGZvciBteSAkVHlwZSAoICRHZW5lcmljQWdlbnREYXRhLT57VHlwZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFR5cGVJRHMsICRUeXBlT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57VHlwZUlEc30gPSBcQFR5cGVJRHM7CiAgICAgICAgfQoKICAgICAgICAjIFRoZSBuYW1lcyBhcmUgb25seSB1c2VkIHRvIHRyYW5zZmVyIHRoZSBqb2IgYmV0d2VlbiBzeXN0ZW1zLiBMaWtlIGEgam9iIG9mIHRoZSBhZG1pbgogICAgICAgICMgaW50ZXJmYWNlLCB0aGUgam9iIHN0b3JlcyB0aGUgSURzIG9ubHkuIFJlbWFpbmluZyBuYW1lcyB3b3VsZCBiZSB1c2VkIGluIGFkZGl0aW9uIHRvIHRoZQogICAgICAgICMgSURzIHdoZW4gdGhlIGpvYiBydW5zLCBlLmcuICdTdGF0ZXMnIGFzIHNlYXJjaCBwYXJhbWV0ZXIgb2YgVGlja2V0U2VhcmNoKCkuCiAgICAgICAgIyBBIG5hbWUgdGhhdCBkb2VzIG5vdCBleGlzdCBvbiB0aGlzIHN5c3RlbSBpcyBub3QgdHJhbnNsYXRlZC4gVGhlIGpvYiB3b3VsZCBydW4gd2l0aG91dAogICAgICAgICMgdGhpcyBzZWFyY2ggY29uZGl0aW9uIG9yIGFjdGlvbiB0aGVuLCBzbyBpdCBpcyBub3QgaW1wb3J0ZWQuCiAgICAgICAgTkFNRUtFWToKICAgICAgICBmb3IgbXkgJE5hbWVLZXkgKCBzb3J0IGtleXMgJU5hbWVLZXkySURLZXkgKSB7CiAgICAgICAgICAgIG15ICROYW1lcyA9IGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YS0+eyROYW1lS2V5fTsKCiAgICAgICAgICAgICMgbm90aGluZyB0byBjaGVjayBpZiBubyBuYW1lIHdhcyBnaXZlbgogICAgICAgICAgICBuZXh0IE5BTUVLRVkgaWYgISROYW1lczsKICAgICAgICAgICAgbmV4dCBOQU1FS0VZIGlmIHJlZiAkTmFtZXMgZXEgJ0FSUkFZJyAmJiAhJE5hbWVzLT5AKjsKCiAgICAgICAgICAgIG15IEBOYW1lcyA9IHJlZiAkTmFtZXMgZXEgJ0FSUkFZJyA/ICROYW1lcy0+QCogOiAoJE5hbWVzKTsKCiAgICAgICAgICAgIG15ICRJRHMgPSAkR2VuZXJpY0FnZW50RGF0YS0+eyAkTmFtZUtleTJJREtleXskTmFtZUtleX0gfTsKICAgICAgICAgICAgbXkgQElEcyA9IHJlZiAkSURzIGVxICdBUlJBWScgPyAkSURzLT5AKiA6ICgkSURzKTsKCiAgICAgICAgICAgICMgdGhlIGxvb2t1cCBvZiBhbiB1bmtub3duIG5hbWUgcmV0dXJucyB1bmRlZiBvciBub3RoaW5nIGF0IGFsbAogICAgICAgICAgICBteSBARm91bmRJRHMgPSBncmVwIHskX30gQElEczsKCiAgICAgICAgICAgIG5leHQgTkFNRUtFWSBpZiBzY2FsYXIgQEZvdW5kSURzID09IHNjYWxhciBATmFtZXM7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiR2VuZXJpYyBhZ2VudCBqb2IgJyRHZW5lcmljQWdlbnREYXRhLT57TmFtZX0nIGlzIG5vdCBpbXBvcnRlZCwgbm90IGV2ZXJ5IHZhbHVlIG9mICckTmFtZUtleScgZXhpc3RzIG9uIHRoaXMgc3lzdGVtLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRBbGxKb2JzSW1wb3J0ZWQgPSAwOwoKICAgICAgICAgICAgbmV4dCBHRU5FUklDQUdFTlROQU1FOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUKICAgICAgICBpZiAoJEdlbmVyaWNBZ2VudENoZWNrTmFtZSkgewoKICAgICAgICAgICAgIyByZW1vdmUvY2xlYW4gdXAgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAgICAgJFNlbGYtPkpvYkRlbGV0ZSgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkR2VuZXJpY0FnZW50Q2hlY2tOYW1lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgcHJvZmlsZSBwYXJhbXMKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+Sm9iQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRHZW5lcmljQWdlbnRDaGVja05hbWUsCiAgICAgICAgICAgICAgICBEYXRhICAgPT4gJEdlbmVyaWNBZ2VudERhdGEsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHZW5lcmljQWdlbnRJRCA9ICRTZWxmLT5Kb2JBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJEdlbmVyaWNBZ2VudERhdGEtPntOYW1lfSwKICAgICAgICAgICAgICAgIERhdGEgICA9PiAkR2VuZXJpY0FnZW50RGF0YSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gdW5sZXNzICRHZW5lcmljQWdlbnRJRDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRBbGxKb2JzSW1wb3J0ZWQ7Cn0KCj1iZWdpbiBJbnRlcm5hbDoKCj1jdXQKCj1oZWFkMiBfSm9iUnVuVGlja2V0KCkKCnJ1biBhIGdlbmVyaWMgYWdlbnQgam9iIG9uIGEgdGlja2V0CgogICAgJEdlbmVyaWNBZ2VudE9iamVjdC0+X0pvYlJ1blRpY2tldCgKICAgICAgICBUaWNrZXRJRCA9PiAxMjMsCiAgICAgICAgVGlja2V0TnVtYmVyID0+ICcyMDA0MDgxNDAwMDAxJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlSm9iLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIF9Kb2JSdW5UaWNrZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhUaWNrZXRJRCBUaWNrZXROdW1iZXIgQ29uZmlnIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSAkVGlja2V0ID0gIigkUGFyYW17VGlja2V0TnVtYmVyfS8kUGFyYW17VGlja2V0SUR9KSI7CgogICAgIyBkaXNhYmxlIHNlbmRpbmcgZW1haWxzCiAgICBsb2NhbCAkVGlja2V0T2JqZWN0LT57U2VuZE5vTm90aWZpY2F0aW9ufSA9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlbmROb05vdGlmaWNhdGlvbn0gPyAxIDogMDsKCiAgICAjIG1vdmUgdGlja2V0CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1F1ZXVlfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBNb3ZlIFRpY2tldCAkVGlja2V0IHRvIFF1ZXVlICckUGFyYW17Q29uZmlnfS0+e05ld30tPntRdWV1ZX0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRRdWV1ZVNldCgKICAgICAgICAgICAgUXVldWVJRCA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntRdWV1ZX0sCiAgICAgICAgICAgICAgICBDYWNoZSA9PiAxLAogICAgICAgICAgICApLAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICApOwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntRdWV1ZUlEfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBNb3ZlIFRpY2tldCAkVGlja2V0IHRvIFF1ZXVlSUQgJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1F1ZXVlSUR9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UXVldWVTZXQoCiAgICAgICAgICAgIFF1ZXVlSUQgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1F1ZXVlSUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJzsKCiAgICAjIGFkZCBub3RlIGlmIHdhbnRlZAogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e0JvZHl9IHx8ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVCb2R5fSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBBZGQgbm90ZSB0byBUaWNrZXQgJFRpY2tldFxuIjsKICAgICAgICB9CgogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVCb2R5fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpLT5fUmVwbGFjZSgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgRGF0YSAgICAgICA9PiB7fSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBcJVRpY2tldCwKICAgICAgICAgICAgVGV4dCAgICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlQm9keX0sCiAgICAgICAgICAgIFJpY2hUZXh0ICAgPT4gMCwKICAgICAgICApOwoKIyBSb3RoZXIgT1NTIC8gR2VuZXJpY0FnZW50LU5vdGlmaWNhdGlvblRhZ3MKICAgICAgICAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlU3ViamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKS0+X1JlcGxhY2UoCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIERhdGEgICAgICAgPT4ge30sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gXCVUaWNrZXQsCiAgICAgICAgICAgIFRleHQgICAgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZVN1YmplY3R9LAogICAgICAgICAgICBSaWNoVGV4dCAgID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZUZyb219ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRlbXBsYXRlR2VuZXJhdG9yJyktPl9SZXBsYWNlKAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBEYXRhICAgICAgID0+IHt9LAogICAgICAgICAgICBUaWNrZXREYXRhID0+IFwlVGlja2V0LAogICAgICAgICAgICBUZXh0ICAgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVGcm9tfSwKICAgICAgICAgICAgUmljaFRleHQgICA9PiAwLAogICAgICAgICk7CiMgRU8gR2VuZXJpY0FnZW50LU5vdGlmaWNhdGlvblRhZ3MKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCBcJVRpY2tldCApICkgewoKICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAoKTsKICAgICAgICAgICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSApICkgewogICAgICAgICAgICAgICAgJUN1c3RvbWVyVXNlckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICVOb3RpZmljYXRpb24gPSAoCiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlU3ViamVjdH0sCiAgICAgICAgICAgICAgICBCb2R5ICAgICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlQm9keX0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlR2VuZXJpY0FnZW50QXJ0aWNsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpLT5HZW5lcmljQWdlbnRBcnRpY2xlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBSZWNpcGllbnQgICAgPT4gXCVDdXN0b21lclVzZXJEYXRhLAogICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uID0+IFwlTm90aWZpY2F0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJEdlbmVyaWNBZ2VudEFydGljbGV7Qm9keX0gKQogICAgICAgICAgICAgICAgfHwgSXNIYXNoUmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnRBcnRpY2xle1N1YmplY3R9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZX0tPntTdWJqZWN0fSA9ICRHZW5lcmljQWdlbnRBcnRpY2xle1N1YmplY3R9IHx8ICcnOwogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZX0tPntCb2R5fSAgICA9ICRHZW5lcmljQWdlbnRBcnRpY2xle0JvZHl9ICAgIHx8ICcnOwogICAgICAgICAgICAgICAgJENvbnRlbnRUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRHZW5lcmljQWdlbnRBcnRpY2xle0NvbnRlbnRUeXBlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgICAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJywKICAgICAgICApOwoKICAgICAgICBteSAkQXJ0aWNsZUlEID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfQogICAgICAgICAgICAgICAgLy8gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZUlzVmlzaWJsZUZvckN1c3RvbWVyfQogICAgICAgICAgICAgICAgLy8gMCwKICAgICAgICAgICAgRnJvbSA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e0Zyb219CiAgICAgICAgICAgICAgICB8fCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlRnJvbX0KICAgICAgICAgICAgICAgIHx8ICdHZW5lcmljQWdlbnQnLAogICAgICAgICAgICBTdWJqZWN0ID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGV9LT57U3ViamVjdH0KICAgICAgICAgICAgICAgIHx8ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVTdWJqZWN0fQogICAgICAgICAgICAgICAgfHwgJ05vdGUnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e0JvZHl9IHx8ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVCb2R5fSwKICAgICAgICAgICAgTWltZVR5cGUgICAgICAgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBDaGFyc2V0ICAgICAgICA9PiAndXRmLTgnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ0FkZE5vdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnR2VuZXJpYyBBZ2VudCBub3RlIGFkZGVkLicsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlbmROb05vdGlmaWNhdGlvbn0gfHwgMCwKICAgICAgICApOwogICAgICAgIG15ICRUaW1lVW5pdHMgPSAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e1RpbWVVbml0c30KICAgICAgICAgICAgfHwgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZVRpbWVVbml0c307CiAgICAgICAgaWYgKCAkQXJ0aWNsZUlEICYmICRUaW1lVW5pdHMgKSB7CiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEFjY291bnRUaW1lKAogICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgIFRpbWVVbml0ICA9PiAkVGltZVVuaXRzLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGVuZGluZ1N0YXRlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpLT5TdGF0ZUdldFN0YXRlc0J5VHlwZSgKICAgICAgICBTdGF0ZVR5cGUgPT4gWyAncGVuZGluZyBhdXRvJywgJ3BlbmRpbmcgcmVtaW5kZXInIF0sCiAgICAgICAgUmVzdWx0ICAgID0+ICdIQVNIJywKICAgICk7CgogICAgJFNlbGYtPntQZW5kaW5nU3RhdGVMaXN0fSA9IFwlUGVuZGluZ1N0YXRlcyB8fCB7fTsKCiAgICAjIHNldCBuZXcgc3RhdGUKICAgIG15ICRJc1BlbmRpbmdTdGF0ZTsKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U3RhdGV9ICkgewogICAgICAgIGlmICggJFNlbGYtPntOb3RpY2VTVERPVVR9ICkgewogICAgICAgICAgICBwcmludCAiICAtIGNoYW5nZWQgc3RhdGUgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1N0YXRlfSdcbiI7CiAgICAgICAgfQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU3RhdGUgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U3RhdGV9LAogICAgICAgICk7CgogICAgICAgICRJc1BlbmRpbmdTdGF0ZSA9IGdyZXAgeyAkXyBlcSAkUGFyYW17Q29uZmlnfS0+e05ld30tPntTdGF0ZX0gfSB2YWx1ZXMgJXsgJFNlbGYtPntQZW5kaW5nU3RhdGVMaXN0fSB9OwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntTdGF0ZUlEfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBjaGFuZ2VkIHN0YXRlIGlkIG9mIHRpY2tldCAkVGlja2V0IHRvICckUGFyYW17Q29uZmlnfS0+e05ld30tPntTdGF0ZUlEfSdcbiI7CiAgICAgICAgfQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU3RhdGVJRCAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U3RhdGVJRH0sCiAgICAgICAgKTsKCiAgICAgICAgJElzUGVuZGluZ1N0YXRlID0gZ3JlcCB7ICRfID09ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1N0YXRlSUR9IH0ga2V5cyAleyAkU2VsZi0+e1BlbmRpbmdTdGF0ZUxpc3R9IH07CiAgICB9CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1BlbmRpbmdUaW1lfQogICAgICAgICYmICEkUGFyYW17Q29uZmlnfS0+e05ld30tPntTdGF0ZX0KICAgICAgICAmJiAhJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U3RhdGVJRH0KICAgICAgICApCiAgICB7CiAgICAgICAgIyBpZiBwZW5kaW5nIHRpbWUgaXMgcHJvdmlkZWQsIGJ1dCB0aGVyZSBpcyBubyBuZXcgdGlja2V0IHN0YXRlIHByb3ZpZGVkLAogICAgICAgICMgY2hlY2sgaWYgdGlja2V0IGlzIGFscmVhZHkgaW4gcGVuZGluZyBzdGF0ZQogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICk7CgogICAgICAgICRJc1BlbmRpbmdTdGF0ZSA9IGdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlfSB9IHZhbHVlcyAleyAkU2VsZi0+e1BlbmRpbmdTdGF0ZUxpc3R9IH07CiAgICB9CgogICAgIyBzZXQgcGVuZGluZyB0aW1lLCBpZiBuZXcgc3RhdGUgaXMgcGVuZGluZyBzdGF0ZQogICAgaWYgKCAkSXNQZW5kaW5nU3RhdGUgJiYgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UGVuZGluZ1RpbWV9ICkgewoKICAgICAgICAjIHBlbmRpbmcgdGltZQogICAgICAgIG15ICRQZW5kaW5nVGltZSA9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1BlbmRpbmdUaW1lfTsKCiAgICAgICAgIyBjYWxjdWxhdGUgcGVuZGluZyB0aW1lIGJhc2VkIG9uIGhvdXJzLCBtaW51dGVzLCB5ZWFycy4uLgogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UGVuZGluZ1RpbWVUeXBlfSApIHsKICAgICAgICAgICAgJFBlbmRpbmdUaW1lICo9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1BlbmRpbmdUaW1lVHlwZX07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBzeXN0ZW10aW1lCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgJERhdGVUaW1lT2JqZWN0LT5BZGQoIFNlY29uZHMgPT4gJFBlbmRpbmdUaW1lICk7CgogICAgICAgICMgc2V0IHBlbmRpbmcgdGltZQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICBZZWFyICAgICA9PiAkRGF0ZVRpbWVPYmplY3QtPkZvcm1hdCggRm9ybWF0ID0+ICclWScgKSwKICAgICAgICAgICAgTW9udGggICAgPT4gJERhdGVUaW1lT2JqZWN0LT5Gb3JtYXQoIEZvcm1hdCA9PiAnJW0nICksCiAgICAgICAgICAgIERheSAgICAgID0+ICREYXRlVGltZU9iamVjdC0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVkJyApLAogICAgICAgICAgICBIb3VyICAgICA9PiAkRGF0ZVRpbWVPYmplY3QtPkZvcm1hdCggRm9ybWF0ID0+ICclSCcgKSwKICAgICAgICAgICAgTWludXRlICAgPT4gJERhdGVUaW1lT2JqZWN0LT5Gb3JtYXQoIEZvcm1hdCA9PiAnJU0nICksCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgY3VzdG9tZXIgaWQgYW5kIGN1c3RvbWVyIHVzZXIKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJJRH0gfHwgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJVc2VyTG9naW59ICkgewoKICAgICAgICAjIElmIEN1c3RvbWVySUQgb3IgQ3VzdG9tZXJVc2VySUQgaXMgdXBkYXRlZCBidXQgbm90IGJvdGggaW4gc2FtZSBjYWxsLAogICAgICAgICMga2VlcCBvcmlnaW5hbCB2YWx1ZXMgZm9yIG5vbiB1cGRhdGVkIG9uZXMuIFNlZSBidWcjMTQ4NjQgKGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NjQpLgogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICk7CgogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntOb3RpY2VTVERPVVR9ICkgewogICAgICAgICAgICAgICAgcHJpbnQKICAgICAgICAgICAgICAgICAgICAiICAtIHNldCBjdXN0b21lciBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJJRH0nXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJVc2VyTG9naW59ICkgewogICAgICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgICAgIHByaW50CiAgICAgICAgICAgICAgICAgICAgIiAgLSBzZXQgY3VzdG9tZXIgdXNlciBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJVc2VyTG9naW59J1xuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgbXkgJE5vID0gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJJRH0gfHwgJFRpY2tldHtDdXN0b21lcklEfSB8fCAnJzsKICAgICAgICAkTm8gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKS0+X1JlcGxhY2UoCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIERhdGEgICAgICAgPT4ge30sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gXCVUaWNrZXQsCiAgICAgICAgICAgIFRleHQgICAgICAgPT4gJE5vLAogICAgICAgICAgICBSaWNoVGV4dCAgID0+IDAsCiAgICAgICAgKTsKICAgICAgICBteSAkVXNlciA9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0N1c3RvbWVyVXNlckxvZ2lufSB8fCAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSB8fCAnJzsKICAgICAgICAkVXNlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpLT5fUmVwbGFjZSgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgRGF0YSAgICAgICA9PiB7fSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBcJVRpY2tldCwKICAgICAgICAgICAgVGV4dCAgICAgICA9PiAkVXNlciwKICAgICAgICAgICAgUmljaFRleHQgICA9PiAwLAogICAgICAgICk7CiMgRU8gR2VuZXJpY0FnZW50LU5vdGlmaWNhdGlvblRhZ3MKCiMgUm90aGVyIE9TUyAvIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiMgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEN1c3RvbWVyU2V0KAojICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKIyAgICAgICAgICAgIE5vICAgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0N1c3RvbWVySUR9ICAgICAgICB8fCAkVGlja2V0e0N1c3RvbWVySUR9ICAgICB8fCAnJywKIyAgICAgICAgICAgIFVzZXIgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0N1c3RvbWVyVXNlckxvZ2lufSB8fCAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSB8fCAnJywKIyAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAojICAgICAgICApOwogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEN1c3RvbWVyU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBObyAgICAgICA9PiAkTm8sCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRVc2VyLAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwojIEVPIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICB9CgogICAgIyBzZXQgbmV3IHRpdGxlCiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1RpdGxlfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgdGl0bGUgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1RpdGxlfSdcbiI7CiAgICAgICAgfQojIFJvdGhlciBPU1MgLyBHZW5lcmljQWdlbnQtTm90aWZpY2F0aW9uVGFncwogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1RpdGxlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpLT5fUmVwbGFjZSgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgRGF0YSAgICAgICA9PiB7fSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBcJVRpY2tldCwKICAgICAgICAgICAgVGV4dCAgICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntUaXRsZX0sCiAgICAgICAgICAgIFJpY2hUZXh0ICAgPT4gMCwKICAgICAgICApOwojIEVPIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0VGl0bGVVcGRhdGUoCiAgICAgICAgICAgIFRpdGxlICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1RpdGxlfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBuZXcgdHlwZQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntUeXBlfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgdHlwZSBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57VHlwZX0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57VHlwZX0sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57VHlwZUlEfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgdHlwZSBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57VHlwZUlEfSdcbiI7CiAgICAgICAgfQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFR5cGVTZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBUeXBlSUQgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntUeXBlSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgbmV3IHNlcnZpY2UKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U2VydmljZX0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IHNlcnZpY2Ugb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlcnZpY2V9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U2VydmljZVNldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFNlcnZpY2UgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlcnZpY2V9LAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlcnZpY2VJRH0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IHNlcnZpY2UgaWQgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlcnZpY2VJRH0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZXJ2aWNlU2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U2VydmljZUlEfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IG5ldyBzbGEKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U0xBfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgc2xhIG9mIFRpY2tldCAkVGlja2V0IHRvICckUGFyYW17Q29uZmlnfS0+e05ld30tPntTTEF9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U0xBU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU0xBICAgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U0xBfSwKICAgICAgICApOwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntTTEFJRH0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IHNsYSBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U0xBSUR9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U0xBU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU0xBSUQgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U0xBSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgbmV3IHByaW9yaXR5CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1ByaW9yaXR5fSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgcHJpb3JpdHkgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1ByaW9yaXR5fSdcbiI7CiAgICAgICAgfQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFByaW9yaXR5U2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UHJpb3JpdHl9LAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1ByaW9yaXR5SUR9ICkgewogICAgICAgIGlmICggJFNlbGYtPntOb3RpY2VTVERPVVR9ICkgewogICAgICAgICAgICBwcmludAogICAgICAgICAgICAgICAgIiAgLSBzZXQgcHJpb3JpdHkgaWQgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1ByaW9yaXR5SUR9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UHJpb3JpdHlTZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUHJpb3JpdHlJRCA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntQcmlvcml0eUlEfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IG5ldyBvd25lcgogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntPd25lcn0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IG93bmVyIG9mIFRpY2tldCAkVGlja2V0IHRvICckUGFyYW17Q29uZmlnfS0+e05ld30tPntPd25lcn0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRPd25lclNldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIE5ld1VzZXIgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e093bmVyfSwKICAgICAgICApOwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntPd25lcklEfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgb3duZXIgaWQgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e093bmVySUR9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0T3duZXJTZXQoCiAgICAgICAgICAgIFRpY2tldElEICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntPd25lcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IG5ldyByZXNwb25zaWJsZQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntSZXNwb25zaWJsZX0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50CiAgICAgICAgICAgICAgICAiICAtIHNldCByZXNwb25zaWJsZSBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UmVzcG9uc2libGV9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBOZXdVc2VyICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntSZXNwb25zaWJsZX0sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UmVzcG9uc2libGVJRH0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50CiAgICAgICAgICAgICAgICAiICAtIHNldCByZXNwb25zaWJsZSBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UmVzcG9uc2libGVJRH0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRSZXNwb25zaWJsZVNldCgKICAgICAgICAgICAgVGlja2V0SUQgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgTmV3VXNlcklEID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1Jlc3BvbnNpYmxlSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgbmV3IGxvY2sKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TG9ja30gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IGxvY2sgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e0xvY2t9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja1NldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIExvY2sgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0xvY2t9LAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0xvY2tJRH0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IGxvY2sgaWQgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e0xvY2tJRH0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRMb2NrU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgTG9ja0lEICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TG9ja0lEfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIHNldCBuZXcgZHluYW1pYyBmaWVsZHMgb3B0aW9ucwogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVGVtcGxhdGUgICAgICAgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fSwKICAgICAgICAgICAgVHJhbnNmb3JtRGF0ZXMgICAgID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBnb3QgYSB2YWx1ZSBvciBhbiBlbXB0eSB2YWx1ZSBpZgogICAgICAgICMgYW4gZW1wdHkgdmFsdWUgaXMgY29uZmlndXJlZCBhcyB2YWxpZCAoUG9zc2libGVOb25lKQogICAgICAgICMgZm9yIHRoZSBjdXJyZW50IGR5bmFtaWMgZmllbGQKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFZhbHVlCiAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57UG9zc2libGVOb25lfQogICAgICAgICAgICAgICAgfHwgJFZhbHVlIG5lICcnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKIyBSb3RoZXIgT1NTIC8gR2VuZXJpY0FnZW50LU5vdGlmaWNhdGlvblRhZ3MKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSA9fiAvXihUZXh0fFJpY2hUZXh0fFRleHRBcmVhKSQvICkgewogICAgICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKS0+X1JlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+IHt9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldERhdGEgPT4gXCVUaWNrZXQsCiAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgUmljaFRleHQgICA9PiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICJSaWNodGV4dCIgPyAxIDogMCApLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQojIEVPIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkU3VjY2VzcykgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IHRpY2tldCBkeW5hbWljIGZpZWxkICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIm9mIFRpY2tldCAkVGlja2V0IHRvICRWYWx1ZVN0cmctPntUaXRsZX0gJ1xuIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBzZXQgZHluYW1pYyBmaWVsZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gIgogICAgICAgICAgICAgICAgICAgICAgICAuICJmb3IgVGlja2V0ICRUaWNrZXQuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkQWxsb3dDdXN0b21Nb2R1bGVFeGVjdXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6R2VuZXJpY0FnZW50QWxsb3dDdXN0b21Nb2R1bGVFeGVjdXRpb24nKSB8fCAwOwoKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TW9kdWxlfSAmJiAkQWxsb3dDdXN0b21Nb2R1bGVFeGVjdXRpb24gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gVXNlIG1vZHVsZSAoJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TW9kdWxlfSkgZm9yIFRpY2tldCAkVGlja2V0LlxuIjsKICAgICAgICB9CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVXNlIG1vZHVsZSAoJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TW9kdWxlfSkgZm9yIFRpY2tldCAkVGlja2V0LiIsCiAgICAgICAgKTsKICAgICAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVHJ5IHRvIGxvYWQgbW9kdWxlOiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntNb2R1bGV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e01vZHVsZX0gKSApCiAgICAgICAgewoKICAgICAgICAgICAgIyBwcm90ZWN0IHBhcmVudCBwcm9jZXNzCiAgICAgICAgICAgIGV2YWwgewogICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAgICAgICAgICAgICBEZWJ1ZyA9PiAkU2VsZi0+e0RlYnVnfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJE9iamVjdCkgewogICAgICAgICAgICAgICAgICAgICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgaWYgKCRAKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRACiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntNb2R1bGV9ICYmICEkQWxsb3dDdXN0b21Nb2R1bGVFeGVjdXRpb24gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gVXNlIG1vZHVsZSAoJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TW9kdWxlfSkgaXMgbm90IGFsbG93ZWQgYnkgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uLlxuIjsKICAgICAgICB9CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVc2UgbW9kdWxlICgkUGFyYW17Q29uZmlnfS0+e05ld30tPntNb2R1bGV9KSBpcyBub3QgYWxsb3dlZCBieSB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIiwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IG5ldyBhcmNoaXZlIGZsYWcKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29uZmlnfS0+e05ld30tPntBcmNoaXZlRmxhZ30KICAgICAgICAmJiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6QXJjaGl2ZVN5c3RlbScpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggJFNlbGYtPntOb3RpY2VTVERPVVR9ICkgewogICAgICAgICAgICBwcmludAogICAgICAgICAgICAgICAgIiAgLSBzZXQgYXJjaGl2ZSBmbGFnIG9mIFRpY2tldCAkVGlja2V0IHRvICckUGFyYW17Q29uZmlnfS0+e05ld30tPntBcmNoaXZlRmxhZ30nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRBcmNoaXZlRmxhZ1NldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEFyY2hpdmVGbGFnID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0FyY2hpdmVGbGFnfSwKICAgICAgICApOwogICAgfQoKICAgICMgY21kCiAgICBteSAkQWxsb3dDdXN0b21TY3JpcHRFeGVjdXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6R2VuZXJpY0FnZW50QWxsb3dDdXN0b21TY3JpcHRFeGVjdXRpb24nKSB8fCAwOwoKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q01EfSAmJiAkQWxsb3dDdXN0b21TY3JpcHRFeGVjdXRpb24gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gRXhlY3V0ZSAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q01EfScgZm9yIFRpY2tldCAkVGlja2V0LlxuIjsKICAgICAgICB9CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRXhlY3V0ZSAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q01EfScgZm9yIFRpY2tldCAkVGlja2V0LiIsCiAgICAgICAgKTsKICAgICAgICBzeXN0ZW0oIiRQYXJhbXtDb25maWd9LT57TmV3fS0+e0NNRH0gJFBhcmFte1RpY2tldE51bWJlcn0gJFBhcmFte1RpY2tldElEfSAiKTsKCiAgICAgICAgaWYgKCAkPyBuZSAwICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvbW1hbmQgcmV0dXJuZWQgYSBub256ZXJvIHJldHVybiBjb2RlOiByYz0kPywgZXJyPSQhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0NNRH0gJiYgISRBbGxvd0N1c3RvbVNjcmlwdEV4ZWN1dGlvbiApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBFeGVjdXRlICckUGFyYW17Q29uZmlnfS0+e05ld30tPntDTUR9JyBpcyBub3QgYWxsb3dlZCBieSB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uLlxuIjsKICAgICAgICB9CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFeGVjdXRlICckUGFyYW17Q29uZmlnfS0+e05ld30tPntDTUR9JyBpcyBub3QgYWxsb3dlZCBieSB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSB0aWNrZXQKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57RGVsZXRlfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBEZWxldGUgVGlja2V0ICRUaWNrZXQuXG4iOwogICAgICAgIH0KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEZWxldGUgVGlja2V0ICRUaWNrZXQuIiwKICAgICAgICApOwogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX0pvYlVwZGF0ZVJ1blRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGRlbGV0ZSBvbGQgcnVuIHRpbWVzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZ2VuZXJpY19hZ2VudF9qb2JzIFdIRVJFIGpvYl9uYW1lID0gPyBBTkQgam9iX2tleSBJTiAoPywgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9LCBcJ1NjaGVkdWxlTGFzdFJ1bicsIFwnU2NoZWR1bGVMYXN0UnVuVW5peFRpbWUnIF0sCiAgICApOwoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKCiAgICAjIHVwZGF0ZSBuZXcgcnVuIHRpbWUKICAgIG15ICVJbnNlcnQgPSAoCiAgICAgICAgU2NoZWR1bGVMYXN0UnVuICAgICAgICAgPT4gJERhdGVUaW1lT2JqZWN0LT5Ub1N0cmluZygpLAogICAgICAgIFNjaGVkdWxlTGFzdFJ1blVuaXhUaW1lID0+ICREYXRlVGltZU9iamVjdC0+VG9FcG9jaCgpLAogICAgKTsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlSW5zZXJ0ICkgewogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0lOU0VSVCBJTlRPIGdlbmVyaWNfYWdlbnRfam9icyAoam9iX25hbWUsam9iX2tleSwgam9iX3ZhbHVlKSBWQUxVRVMgKD8sID8sID8pJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkS2V5LCBcJEluc2VydHskS2V5fSBdLAogICAgICAgICk7CiAgICB9CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICBLZXkgID0+ICdKb2JHZXQ6OicgLiAkUGFyYW17TmFtZX0sCiAgICAgICAgVHlwZSA9PiAnR2VuZXJpY0FnZW50JywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1lbmQgSW50ZXJuYWw6Cgo9Y3V0CgoxOwo=</File>
        <File Location="scripts/test/GenericAgentNotifTags.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7Cm15ICRVc2VyT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgpteSAoICRVc2VyTG9naW4sICRVc2VySUQgKSA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKCk7Cm9rKAogICAgJFVzZXJJRCwKICAgICJUZXN0IHVzZXIgJFVzZXJJRCBjcmVhdGVkIiwKKTsKCm15ICRDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKb2soCiAgICAkQ3VzdG9tZXJVc2VyTG9naW4sCiAgICAiVGVzdCBjdXN0b21lciB1c2VyICRDdXN0b21lclVzZXJMb2dpbiBjcmVhdGVkIiwKKTsKCm15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkQXJ0aWNsZU9iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKbXkgJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcgKTsKCm15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAnU29tZSB0ZXN0IGlzc3VlJywKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJVc2VyID0+ICRDdXN0b21lclVzZXJMb2dpbiwKICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCik7Cm9rKAogICAgJFRpY2tldElELAogICAgIlRpY2tldCAkVGlja2V0SUQgY3JlYXRlZCIsCik7CgpteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgVXNlcklEICAgPT4gJFVzZXJJRAopOwpteSAkQXJ0aWNsZUlEID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICBBcnRpY2xlVHlwZSAgICAgICAgICA9PiAnbm90ZS1pbnRlcm5hbCcsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gIkFnZW50IDwkVXNlckxvZ2luPiIsCiAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnUGhvbmUgdGlja2V0JywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICdTb21lIHRlc3QgYm9keS4nLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmOCcsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnUGhvbmVDYWxsQ3VzdG9tZXInLAogICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ0ZpcnN0IHJlZ2lzdGVyJywKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAkVXNlcklELAopOwpvaygKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZSAkQXJ0aWNsZUlEIGNyZWF0ZWQiLAopOwoKbXkgJEFydGljbGVSZXBseUlEID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICBBcnRpY2xlVHlwZSAgICAgICAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICJDbGllbnQgPCRDdXN0b21lclVzZXJMb2dpbj4iLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1JlcGx5IHRvIHRpY2tldCcsCiAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAnUmVwbHkgYm9keS4nLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmOCcsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnRW1haWxDdXN0b21lcicsCiAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnQ3VzdG9tZXIgcmVwbHknLAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+ICRVc2VySUQsCik7Cm9rKAogICAgJEFydGljbGVSZXBseUlELAogICAgIlJlcGx5IGFydGljbGUgJEFydGljbGVSZXBseUlEIGNyZWF0ZWQiLAopOwoKbXkgJEpvYkRhdGEgPSB7CiAgICAnTmV3TW9kdWxlJyAgICAgICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ05ld1BhcmFtVmFsdWUyJyAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgICdUaXRsZScgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGUnID0+ICcnLAogICAgJ0VzY2FsYXRpb25UaW1lU2VhcmNoVHlwZScgICAgICAgICA9PiAnJywKICAgICdOZXdQYXJhbVZhbHVlMScgICAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1WYWx1ZTQnICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ05ld05vdGVUaW1lVW5pdHMnICAgICAgICAgICAgICAgICA9PiAnJywKICAgICdNSU1FQmFzZV9TdWJqZWN0JyAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1LZXkyJyAgICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ05ld1RpdGxlJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgICdOZXdQYXJhbUtleTUnICAgICAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnQ3VzdG9tZXJJRCcgICAgICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ0V2ZW50VmFsdWVzJyAgICAgICAgICAgICAgICAgICAgICA9PiBbJ0FydGljbGVFZGl0J10sCiAgICAnTmV3Q3VzdG9tZXJVc2VyTG9naW4nICAgICAgICAgICAgID0+ICcnLAogICAgJ01JTUVCYXNlX1RvJyAgICAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgICdMYXN0Q2xvc2VUaW1lU2VhcmNoVHlwZScgICAgICAgICAgPT4gJycsCiAgICAnTmV3Tm90ZUZyb20nICAgICAgICAgICAgICAgICAgICAgID0+ICdzb21lb25lQG1haWwub3JnJywKICAgICdOZXdQYXJhbVZhbHVlNicgICAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnTmV3Q3VzdG9tZXJJRCcgICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ1NjaGVkdWxlTGFzdFJ1bicgICAgICAgICAgICAgICAgICA9PiAnMjAyNS0wOC0yNyAxMDozNzoxOCcsCiAgICAnQ2xvc2VUaW1lU2VhcmNoVHlwZScgICAgICAgICAgICAgID0+ICcnLAogICAgJ0VzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZScgICA9PiAnJywKICAgICdFc2NhbGF0aW9uUmVzcG9uc2VUaW1lU2VhcmNoVHlwZScgPT4gJycsCgogICAgIyBjb250YWluIHRoZSB0YWdzIHRvIGJlIHJlcGxhY2VkIGJ5IHRoZSBqb2IgdXBvbiBzdWNjZXNzCiAgICAnTmV3Tm90ZVN1YmplY3QnID0+ICdOZXcgbm90ZSBvbiB0aWNrZXQgaWQgPE9UT0JPX1RJQ0tFVF9UaWNrZXRJRD4nLAogICAgJ05ld05vdGVCb2R5JyAgICA9PiAnQ2xpZW50IGlzIDxPVE9CT19DVVNUT01FUl9SRUFMTkFNRT4gYW5kIFRpY2tldE51bWJlciBpcyA8T1RPQk9fVElDS0VUX1RpY2tldE51bWJlcj4nLAoKICAgICdDaGFuZ2VUaW1lU2VhcmNoVHlwZScgICAgID0+ICcnLAogICAgJ05ld0RlbGV0ZScgICAgICAgICAgICAgICAgPT4gJzAnLAogICAgJ05ld1BlbmRpbmdUaW1lJyAgICAgICAgICAgPT4gJycsCiAgICAnTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlJyA9PiAnJywKICAgICdUaW1lUGVuZGluZ1NlYXJjaFR5cGUnICAgID0+ICcnLAogICAgJ05hbWUnICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgSm9iJywKICAgICdOZXdQZW5kaW5nVGltZVR5cGUnICAgICAgID0+ICc2MCcsCiAgICAnTmV3UGFyYW1WYWx1ZTMnICAgICAgICAgICA9PiAnJywKICAgICdUaW1lU2VhcmNoVHlwZScgICAgICAgICAgID0+ICcnLAogICAgJ1NjaGVkdWxlTGFzdFJ1blVuaXhUaW1lJyAgPT4gJzE3NTYyOTEwMzgnLAogICAgJ01JTUVCYXNlX0Zyb20nICAgICAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1LZXkzJyAgICAgICAgICAgICA9PiAnJywKICAgICdNSU1FQmFzZV9DYycgICAgICAgICAgICAgID0+ICcnLAogICAgJ0N1c3RvbWVyVXNlckxvZ2luJyAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1LZXkxJyAgICAgICAgICAgICA9PiAnJywKICAgICdOZXdTZW5kTm9Ob3RpZmljYXRpb24nICAgID0+ICcwJywKICAgICdNSU1FQmFzZV9Cb2R5JyAgICAgICAgICAgID0+ICcnLAogICAgJ1ZhbGlkJyAgICAgICAgICAgICAgICAgICAgPT4gJzEnLAogICAgJ1RpY2tldE51bWJlcicgICAgICAgICAgICAgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgJ05ld1BhcmFtVmFsdWU1JyAgICAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1LZXk0JyAgICAgICAgICAgICA9PiAnJywKICAgICdOZXdQYXJhbUtleTYnICAgICAgICAgICAgID0+ICcnCn07CgpteSAkR2VuZXJpY0FnZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNBZ2VudCcpOwpteSAkSm9iQWRkUmVzdWx0ICAgICAgID0gJEdlbmVyaWNBZ2VudE9iamVjdC0+Sm9iQWRkKAogICAgTmFtZSAgID0+ICJKb2IxIiwKICAgIERhdGEgICA9PiAkSm9iRGF0YSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwoKbXkgJFN1Y2Nlc3MgPSAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JSdW4oCiAgICBKb2IgICAgPT4gJ0pvYjEnLAogICAgVXNlcklEID0+IDEsCik7Cm9rKAogICAgJFN1Y2Nlc3MsCiAgICAiSm9iIGV4ZWN1dGVkIHdpdGggc3VjY2VzcyIsCik7CgpteSBAQXJ0aWNsZUxpc3QgPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZUxpc3QoCiAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCik7CmlzKAogICAgc2NhbGFyIEBBcnRpY2xlTGlzdCwKICAgIDMsCiAgICAiSm9iIGFkZGVkIG5ldyBub3RlIHRvIHRoZSB0aWNrZXQiCik7CgpBUlRJQ0xFOgpmb3IgbXkgJEFydGljbGVFbGVtIChAQXJ0aWNsZUxpc3QpIHsKICAgIG15ICVBcnRpY2xlID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgVGlja2V0SUQgID0+ICRUaWNrZXRJRCwKICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVFbGVtLT57QXJ0aWNsZUlEfSwKICAgICk7CgogICAgIyBPbmx5IHRoZSBuZXcgYWRkZWQgbm90ZSBtYXR0ZXJzIGZvciBjaGVja2luZwogICAgbmV4dCBBUlRJQ0xFIGlmICRBcnRpY2xle1N1YmplY3R9ICF+IC9OZXcgbm90ZS87CgogICAgbXkgJEV4cGVjdGVkU3ViamVjdCA9ICJOZXcgbm90ZSBvbiB0aWNrZXQgaWQgJFRpY2tldElEIjsKICAgIGxpa2UoCiAgICAgICAgJEFydGljbGV7U3ViamVjdH0sCiAgICAgICAgcXIvXFEkRXhwZWN0ZWRTdWJqZWN0XEUvLAogICAgICAgICJOZXcgbm90ZSBoYXMgdGhlIGV4cGVjdGVkIGNvbnRlbnQgaW4gdGhlIHN1YmplY3QiCiAgICApOwoKICAgICMgdGhlIFRlc3RDdXN0b21lclVzZXJDcmVhdGUgZnVuY3Rpb24gc2V0cyBib3RoIHRoZSBjdXN0b21lcidzIGZpcnN0IGFuZCBsYXN0IG5hbWUgYXMgdGhlIGxvZ2luCiAgICBteSAkQ3VzdG9tZXJVc2VyRnVsbE5hbWUgPSAiJEN1c3RvbWVyVXNlckxvZ2luICRDdXN0b21lclVzZXJMb2dpbiI7CiAgICBteSAkRXhwZWN0ZWRCb2R5ICAgICAgICAgPSAiQ2xpZW50IGlzICRDdXN0b21lclVzZXJGdWxsTmFtZSBhbmQgVGlja2V0TnVtYmVyIGlzICRUaWNrZXR7VGlja2V0TnVtYmVyfSI7CiAgICBteSAkQXJ0aWNsZUJvZHkgICAgICAgICAgPSAkQXJ0aWNsZXtCb2R5fTsKICAgICRBcnRpY2xlQm9keSA9fiBzL1tcclxuXS8gL2c7ICAgICMgU2FuaXRpemUgYW55IGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgQ1IvTEYgY2hhcmFjdGVycwogICAgbGlrZSgKICAgICAgICAkQXJ0aWNsZUJvZHksCiAgICAgICAgcXIvXFEkRXhwZWN0ZWRCb2R5XEUvLAogICAgICAgICJOZXcgbm90ZSBoYXMgdGhlIGV4cGVjdGVkIGNvbnRlbnQgaW4gdGhlIGJvZHkiCiAgICApOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="doc/en/GenericAgent-NotificationTags.pdf" Permission="644" Encode="Base64">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</File>
    </Filelist>
</otrs_package>