[{"name":"1x1.gif","aliases":["1x1-transparent.gif"],"kind":{"mime":"image/gif"},"content":"R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="},{"name":"2x2.png","aliases":["2x2-transparent.png"],"kind":{"mime":"image/png"},"content":"iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAC0lEQVQI12NgQAcAABIAAe+JVKQAAAAASUVORK5CYII="},{"name":"3x2.png","aliases":["3x2-transparent.png"],"kind":{"mime":"image/png"},"content":"iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAC0lEQVQI12NgwAUAABoAASRETuUAAAAASUVORK5CYII="},{"name":"32x32.png","aliases":["32x32-transparent.png"],"kind":{"mime":"image/png"},"content":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+3BAQEAAACCIP+vbkhAAQAAAO8GECAAAZf3V9cAAAAASUVORK5CYII="},{"name":"addthis_widget.js","aliases":["addthis.com/addthis_widget.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICB3aW5kb3cuYWRkdGhpcyA9IHsKICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBub29wZm4sCiAgICAgICAgYnV0dG9uOiBub29wZm4sCiAgICAgICAgY291bnRlcjogbm9vcGZuLAogICAgICAgIGluaXQ6IG5vb3BmbiwKICAgICAgICBsYXllcnM6IG5vb3BmbiwKICAgICAgICByZWFkeTogbm9vcGZuLAogICAgICAgIHNoYXJlY291bnRlcnM6IHsKICAgICAgICAgICAgZ2V0U2hhcmVDb3VudHM6IG5vb3BmbgogICAgICAgIH0sCiAgICAgICAgdG9vbGJveDogbm9vcGZuLAogICAgICAgIHVwZGF0ZTogbm9vcGZuCiAgICB9Owp9KSgpOwo="},{"name":"amazon_ads.js","aliases":["amazon-adsystem.com/aax2/amzn_ads.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBpZiAoIGFtem5hZHMgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHcgPSB3aW5kb3c7CiAgICB2YXIgbm9vcGZuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgOwogICAgfS5iaW5kKCk7CiAgICB2YXIgYW16bmFkcyA9IHsKICAgICAgICBhcHBlbmRTY3JpcHRUYWc6IG5vb3BmbiwKICAgICAgICBhcHBlbmRUYXJnZXRpbmdUb0FkU2VydmVyVXJsOiBub29wZm4sCiAgICAgICAgYXBwZW5kVGFyZ2V0aW5nVG9RdWVyeVN0cmluZzogbm9vcGZuLAogICAgICAgIGNsZWFyVGFyZ2V0aW5nRnJvbUdQVEFzeW5jOiBub29wZm4sCiAgICAgICAgZG9BbGxUYXNrczogbm9vcGZuLAogICAgICAgIGRvR2V0QWRzQXN5bmM6IG5vb3BmbiwKICAgICAgICBkb1Rhc2s6IG5vb3BmbiwKICAgICAgICBkZXRlY3RJZnJhbWVBbmRHZXRVUkw6IG5vb3BmbiwKICAgICAgICBnZXRBZHM6IG5vb3BmbiwKICAgICAgICBnZXRBZHNBc3luYzogbm9vcGZuLAogICAgICAgIGdldEFkRm9yU2xvdDogbm9vcGZuLAogICAgICAgIGdldEFkc0NhbGxiYWNrOiBub29wZm4sCiAgICAgICAgZ2V0RGlzcGxheUFkczogbm9vcGZuLAogICAgICAgIGdldERpc3BsYXlBZHNBc3luYzogbm9vcGZuLAogICAgICAgIGdldERpc3BsYXlBZHNDYWxsYmFjazogbm9vcGZuLAogICAgICAgIGdldEtleXM6IG5vb3BmbiwKICAgICAgICBnZXRSZWZlcnJlclVSTDogbm9vcGZuLAogICAgICAgIGdldFNjcmlwdFNvdXJjZTogbm9vcGZuLAogICAgICAgIGdldFRhcmdldGluZzogbm9vcGZuLAogICAgICAgIGdldFRva2Vuczogbm9vcGZuLAogICAgICAgIGdldFZhbGlkTWlsbGlzZWNvbmRzOiBub29wZm4sCiAgICAgICAgZ2V0VmlkZW9BZHM6IG5vb3BmbiwKICAgICAgICBnZXRWaWRlb0Fkc0FzeW5jOiBub29wZm4sCiAgICAgICAgZ2V0VmlkZW9BZHNDYWxsYmFjazogbm9vcGZuLAogICAgICAgIGhhbmRsZUNhbGxCYWNrOiBub29wZm4sCiAgICAgICAgaGFzQWRzOiBub29wZm4sCiAgICAgICAgcmVuZGVyQWQ6IG5vb3BmbiwKICAgICAgICBzYXZlQWRzOiBub29wZm4sCiAgICAgICAgc2V0VGFyZ2V0aW5nOiBub29wZm4sCiAgICAgICAgc2V0VGFyZ2V0aW5nRm9yR1BUQXN5bmM6IG5vb3BmbiwKICAgICAgICBzZXRUYXJnZXRpbmdGb3JHUFRTeW5jOiBub29wZm4sCiAgICAgICAgdHJ5R2V0QWRzQXN5bmM6IG5vb3BmbiwKICAgICAgICB1cGRhdGVBZHM6IG5vb3BmbgogICAgfTsKICAgIHcuYW16bmFkcyA9IGFtem5hZHM7CiAgICB3LmFtem5fYWRzID0gdy5hbXpuX2FkcyB8fCBub29wZm47CiAgICB3LmFheF93cml0ZSA9IHcuYWF4X3dyaXRlIHx8IG5vb3BmbjsKICAgIHcuYWF4X3JlbmRlcl9hZCA9IHcuYWF4X3JlbmRlcl9hZCB8fCBub29wZm47Cn0pKCk7Cg=="},{"name":"amazon_apstag.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgovLyBodHRwczovL3d3dy5yZWRkaXQuY29tL3IvdUJsb2NrT3JpZ2luL2NvbW1lbnRzL2doanFwaC8KLy8gaHR0cHM6Ly9naXRodWIuY29tL05hbm9NZW93L1F1aWNrUmVwb3J0cy9pc3N1ZXMvMzcxNwovLyBodHRwczovL3d3dy5yZWRkaXQuY29tL3IvdUJsb2NrT3JpZ2luL2NvbW1lbnRzL3F5eDdlbi8KCi8vIGh0dHBzOi8vc2VhcmNoZm94Lm9yZy9tb3ppbGxhLWNlbnRyYWwvc291cmNlL2Jyb3dzZXIvZXh0ZW5zaW9ucy93ZWJjb21wYXQvc2hpbXMvYXBzdGFnLmpzCi8vICAgSW1wb3J0IHF1ZXVlLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gY29kZS4KCihmdW5jdGlvbigpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGNvbnN0IHcgPSB3aW5kb3c7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgICAgICA7IC8vIGpzaGludCBpZ25vcmU6bGluZQogICAgfS5iaW5kKCk7CiAgICBjb25zdCBfUSA9IHcuYXBzdGFnICYmIHcuYXBzdGFnLl9RIHx8IFtdOwogICAgY29uc3QgYXBzdGFnID0gewogICAgICAgIF9RLAogICAgICAgIGZldGNoQmlkczogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICBpZiAoIHR5cGVvZiBiID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICAgICAgYihbXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGluaXQ6IG5vb3BmbiwKICAgICAgICBzZXREaXNwbGF5Qmlkczogbm9vcGZuLAogICAgICAgIHRhcmdldGluZ0tleXM6IG5vb3BmbiwKICAgIH07CiAgICB3LmFwc3RhZyA9IGFwc3RhZzsKICAgIF9RLnB1c2ggPSBmdW5jdGlvbihwcmVmaXgsIGFyZ3MpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBzd2l0Y2ggKHByZWZpeCkgewogICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgICAgIGFwc3RhZy5mZXRjaEJpZHMoLi4uYXJncyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgY29uc29sZS50cmFjZShlKTsKICAgICAgICB9CiAgICB9OwogICAgZm9yICggY29uc3QgY21kIG9mIF9RICkgewogICAgICAgIF9RLnB1c2goY21kKTsKICAgIH0KfSkoKTsK"},{"name":"ampproject_v0.js","aliases":["ampproject.org/v0.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuaGVhZDsKICAgIGlmICggIWhlYWQgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgc3R5bGUudGV4dENvbnRlbnQgPSBbCiAgICAgICAgJ2JvZHkgeycsCiAgICAgICAgJyAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7JywKICAgICAgICAnICBvdmVyZmxvdzogdW5zZXQgIWltcG9ydGFudDsnLAogICAgICAgICd9JwogICAgXS5qb2luKCdcbicpOwogICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7Cn0pKCk7Cg=="},{"name":"chartbeat.js","aliases":["static.chartbeat.com/chartbeat.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICB3aW5kb3cucFNVUEVSRkxZID0gewogICAgICAgIGFjdGl2aXR5OiBub29wZm4sCiAgICAgICAgdmlydHVhbFBhZ2U6IG5vb3BmbgogICAgfTsKfSkoKTsK"},{"name":"doubleclick_instream_ad_status.js","aliases":["doubleclick.net/instream/ad_status.js"],"kind":{"mime":"application/javascript"},"content":"d2luZG93Lmdvb2dsZV9hZF9zdGF0dXMgPSAxOwo="},{"name":"empty","aliases":[],"kind":{"mime":"application/octet-stream"},"content":""},{"name":"fingerprint2.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxNC1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgovLyBSZWZlcmVuY2U6Ci8vIGh0dHBzOi8vZ2l0aHViLmNvbS9maW5nZXJwcmludGpzL2ZpbmdlcnByaW50anMvdHJlZS92MgoKKGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgY29uc3QgaGV4MzIgPSBsZW4gPT4gewogICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikKICAgICAgICAgICAgLnRvU3RyaW5nKDE2KQogICAgICAgICAgICAuc2xpY2UoLWxlbikKICAgICAgICAgICAgLnBhZFN0YXJ0KGxlbiwgJzAnKTsKICAgIH07CiAgICBjb25zdCBicm93c2VySWQgPSBgJHtoZXgzMig4KX0ke2hleDMyKDgpfSR7aGV4MzIoOCl9JHtoZXgzMig4KX1gOwogICAgY29uc3QgZnAyID0gZnVuY3Rpb24oKXt9OwogICAgZnAyLmdldCA9IGZ1bmN0aW9uKG9wdHMsIGNiKSB7CiAgICAgICAgaWYgKCAhY2IgICkgeyBjYiA9IG9wdHM7IH0KICAgICAgICBzZXRUaW1lb3V0KCggKSA9PiB7IGNiKFtdKTsgfSwgMSk7CiAgICB9OwogICAgZnAyLmdldFByb21pc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTsKICAgIH07CiAgICBmcDIuZ2V0VjE4ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGJyb3dzZXJJZDsKICAgIH07CiAgICBmcDIueDY0aGFzaDEyOCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBicm93c2VySWQ7CiAgICB9OwogICAgZnAyLnByb3RvdHlwZSA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9wdHMsIGNiKSB7CiAgICAgICAgICAgIGlmICggIWNiICApIHsgY2IgPSBvcHRzOyB9CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCApID0+IHsgY2IoYnJvd3NlcklkLCBbXSk7IH0sIDEpOwogICAgICAgIH0sCiAgICB9OwogICAgc2VsZi5GaW5nZXJwcmludDIgPSBmcDI7Cn0pKCk7Cg=="},{"name":"fingerprint3.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAyMi1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCB2aXNpdG9ySWQgPSAoKCApID0+IHsKICAgICAgICBsZXQgaWQgPSAnJzsKICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCA4OyBpKysgKSB7CiAgICAgICAgICAgIGlkICs9IChNYXRoLnJhbmRvbSgpICogMHgxMDAwMCArIDB4MTAwMCB8IDApLnRvU3RyaW5nKDE2KS5zbGljZSgtNCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBpZDsKICAgIH0pKCk7CiAgICBjb25zdCBGaW5nZXJwcmludEpTID0gY2xhc3MgewogICAgICAgIHN0YXRpYyBoYXNoQ29tcG9uZW50cygpIHsKICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3JJZDsKICAgICAgICB9CiAgICAgICAgc3RhdGljIGxvYWQoKSB7CiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEZpbmdlcnByaW50SlMoKSk7CiAgICAgICAgfQogICAgICAgIGdldCgpIHsKICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7CiAgICAgICAgICAgICAgICB2aXNpdG9ySWQsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH07CiAgICB3aW5kb3cuRmluZ2VycHJpbnRKUyA9IEZpbmdlcnByaW50SlM7Cn0pKCk7Cg=="},{"name":"google-analytics_analytics.js","aliases":["google-analytics.com/analytics.js","googletagmanager_gtm.js","googletagmanager.com/gtm.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vYW5hbHl0aWNzanMvCiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICAvLwogICAgY29uc3QgVHJhY2tlciA9IGZ1bmN0aW9uKCkgewogICAgfTsKICAgIGNvbnN0IHAgPSBUcmFja2VyLnByb3RvdHlwZTsKICAgIHAuZ2V0ID0gbm9vcGZuOwogICAgcC5zZXQgPSBub29wZm47CiAgICBwLnNlbmQgPSBub29wZm47CiAgICAvLwogICAgY29uc3QgdyA9IHdpbmRvdzsKICAgIGNvbnN0IGdhTmFtZSA9IHcuR29vZ2xlQW5hbHl0aWNzT2JqZWN0IHx8ICdnYSc7CiAgICBjb25zdCBnYVF1ZXVlID0gd1tnYU5hbWVdOwogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VCbG9ja09yaWdpbi91QXNzZXRzL3B1bGwvNDExNQogICAgY29uc3QgZ2EgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb25zdCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOwogICAgICAgIGlmICggbGVuID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpOwogICAgICAgIGxldCBmbjsKICAgICAgICBsZXQgYSA9IGFyZ3NbbGVuLTFdOwogICAgICAgIGlmICggYSBpbnN0YW5jZW9mIE9iamVjdCAmJiBhLmhpdENhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIGZuID0gYS5oaXRDYWxsYmFjazsKICAgICAgICB9IGVsc2UgaWYgKCBhIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIGZuID0gKCApID0+IHsgYShnYS5jcmVhdGUoKSk7IH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3QgcG9zID0gYXJncy5pbmRleE9mKCdoaXRDYWxsYmFjaycpOwogICAgICAgICAgICBpZiAoIHBvcyAhPT0gLTEgJiYgYXJnc1twb3MrMV0gaW5zdGFuY2VvZiBGdW5jdGlvbiApIHsKICAgICAgICAgICAgICAgIGZuID0gYXJnc1twb3MrMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCBmbiBpbnN0YW5jZW9mIEZ1bmN0aW9uID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZm4oKTsKICAgICAgICB9IGNhdGNoIChleCkgewogICAgICAgIH0KICAgIH07CiAgICBnYS5jcmVhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbmV3IFRyYWNrZXIoKTsKICAgIH07CiAgICBnYS5nZXRCeU5hbWUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbmV3IFRyYWNrZXIoKTsKICAgIH07CiAgICBnYS5nZXRBbGwgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gW25ldyBUcmFja2VyKCldOwogICAgfTsKICAgIGdhLnJlbW92ZSA9IG5vb3BmbjsKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91QmxvY2tPcmlnaW4vdUFzc2V0cy9pc3N1ZXMvMjEwNwogICAgZ2EubG9hZGVkID0gdHJ1ZTsKICAgIHdbZ2FOYW1lXSA9IGdhOwogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrL2lzc3Vlcy8zMDc1CiAgICBjb25zdCBkbCA9IHcuZGF0YUxheWVyOwogICAgaWYgKCBkbCBpbnN0YW5jZW9mIE9iamVjdCApIHsKICAgICAgICBpZiAoIGRsLmhpZGUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdHlwZW9mIGRsLmhpZGUuZW5kID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICBkbC5oaWRlLmVuZCgpOwogICAgICAgICAgICBkbC5oaWRlLmVuZCA9ICgpPT57fTsKICAgICAgICB9CiAgICAgICAgaWYgKCB0eXBlb2YgZGwucHVzaCA9PT0gJ2Z1bmN0aW9uJyApIHsKICAgICAgICAgICAgY29uc3QgZG9DYWxsYmFjayA9IGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgICAgICAgICAgIGlmICggaXRlbSBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgaXRlbS5ldmVudENhbGxiYWNrICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoaXRlbS5ldmVudENhbGxiYWNrLCAxKTsKICAgICAgICAgICAgICAgIGl0ZW0uZXZlbnRDYWxsYmFjayA9ICgpPT57fTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZGwucHVzaCA9IG5ldyBQcm94eShkbC5wdXNoLCB7CiAgICAgICAgICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgICAgICAgICAgZG9DYWxsYmFjayhhcmdzWzBdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKCBBcnJheS5pc0FycmF5KGRsKSApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHEgPSBkbC5zbGljZSgpOwogICAgICAgICAgICAgICAgZm9yICggY29uc3QgaXRlbSBvZiBxICkgewogICAgICAgICAgICAgICAgICAgIGRvQ2FsbGJhY2soaXRlbSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAvLyBlbXB0eSBnYSBxdWV1ZQogICAgaWYgKCBnYVF1ZXVlIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgQXJyYXkuaXNBcnJheShnYVF1ZXVlLnEpICkgewogICAgICAgIGNvbnN0IHEgPSBnYVF1ZXVlLnEuc2xpY2UoKTsKICAgICAgICBnYVF1ZXVlLnEubGVuZ3RoID0gMDsKICAgICAgICBmb3IgKCBjb25zdCBlbnRyeSBvZiBxICkgewogICAgICAgICAgICBnYSguLi5lbnRyeSk7CiAgICAgICAgfQogICAgfQp9KSgpOwo="},{"name":"google-analytics_cx_api.js","aliases":["google-analytics.com/cx/api.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICB3aW5kb3cuY3hBcGkgPSB7CiAgICAgICAgY2hvb3NlVmFyaWF0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSwKICAgICAgICBnZXRDaG9zZW5WYXJpYXRpb246IG5vb3BmbiwKICAgICAgICBzZXRBbGxvd0hhc2g6IG5vb3BmbiwKICAgICAgICBzZXRDaG9zZW5WYXJpYXRpb246IG5vb3BmbiwKICAgICAgICBzZXRDb29raWVQYXRoOiBub29wZm4sCiAgICAgICAgc2V0RG9tYWluTmFtZTogbm9vcGZuCiAgICAgICAgfTsKfSkoKTsK"},{"name":"google-analytics_ga.js","aliases":["google-analytics.com/ga.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICAvLwogICAgY29uc3QgR2FxID0gZnVuY3Rpb24oKSB7CiAgICB9OwogICAgR2FxLnByb3RvdHlwZS5OYSA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuTyA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuU2EgPSBub29wZm47CiAgICBHYXEucHJvdG90eXBlLlRhID0gbm9vcGZuOwogICAgR2FxLnByb3RvdHlwZS5WYSA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuX2NyZWF0ZUFzeW5jVHJhY2tlciA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuX2dldEFzeW5jVHJhY2tlciA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuX2dldFBsdWdpbiA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICBpZiAoIHR5cGVvZiBhID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICBhKCk7IHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCBBcnJheS5pc0FycmF5KGEpID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2dhanMvbWV0aG9kcy9nYUpTQXBpRG9tYWluRGlyZWN0b3J5I19nYXQuR0FfVHJhY2tlcl8uX2xpbmsKICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdUJsb2NrT3JpZ2luL3VCbG9jay1pc3N1ZXMvaXNzdWVzLzE4MDcKICAgICAgICBpZiAoCiAgICAgICAgICAgIHR5cGVvZiBhWzBdID09PSAnc3RyaW5nJyAmJgogICAgICAgICAgICAvKF58XC4pX2xpbmskLy50ZXN0KGFbMF0pICYmCiAgICAgICAgICAgIHR5cGVvZiBhWzFdID09PSAnc3RyaW5nJwogICAgICAgICkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihhWzFdKTsKICAgICAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JoaWxsL3VCbG9jay9pc3N1ZXMvMjE2MgogICAgICAgIGlmICggYVswXSA9PT0gJ19zZXQnICYmIGFbMV0gPT09ICdoaXRDYWxsYmFjaycgJiYgdHlwZW9mIGFbMl0gPT09ICdmdW5jdGlvbicgKSB7CiAgICAgICAgICAgIGFbMl0oKTsKICAgICAgICB9CiAgICB9OwogICAgLy8KICAgIGNvbnN0IHRyYWNrZXIgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgY29uc3Qgb3V0ID0ge307CiAgICAgICAgY29uc3QgYXBpID0gWwogICAgICAgICAgICAnX2FkZElnbm9yZWRPcmdhbmljIF9hZGRJZ25vcmVkUmVmIF9hZGRJdGVtIF9hZGRPcmdhbmljJywKICAgICAgICAgICAgJ19hZGRUcmFucyBfY2xlYXJJZ25vcmVkT3JnYW5pYyBfY2xlYXJJZ25vcmVkUmVmIF9jbGVhck9yZ2FuaWMnLAogICAgICAgICAgICAnX2Nvb2tpZVBhdGhDb3B5IF9kZWxldGVDdXN0b21WYXIgX2dldE5hbWUgX3NldEFjY291bnQnLAogICAgICAgICAgICAnX2dldEFjY291bnQgX2dldENsaWVudEluZm8gX2dldERldGVjdEZsYXNoIF9nZXREZXRlY3RUaXRsZScsCiAgICAgICAgICAgICdfZ2V0TGlua2VyVXJsIF9nZXRMb2NhbEdpZlBhdGggX2dldFNlcnZpY2VNb2RlIF9nZXRWZXJzaW9uJywKICAgICAgICAgICAgJ19nZXRWaXNpdG9yQ3VzdG9tVmFyIF9pbml0RGF0YSBfbGlua0J5UG9zdCcsCiAgICAgICAgICAgICdfc2V0QWxsb3dBbmNob3IgX3NldEFsbG93SGFzaCBfc2V0QWxsb3dMaW5rZXIgX3NldENhbXBDb250ZW50S2V5JywKICAgICAgICAgICAgJ19zZXRDYW1wTWVkaXVtS2V5IF9zZXRDYW1wTmFtZUtleSBfc2V0Q2FtcE5PS2V5IF9zZXRDYW1wU291cmNlS2V5JywKICAgICAgICAgICAgJ19zZXRDYW1wVGVybUtleSBfc2V0Q2FtcGFpZ25Db29raWVUaW1lb3V0IF9zZXRDYW1wYWlnblRyYWNrIF9zZXRDbGllbnRJbmZvJywKICAgICAgICAgICAgJ19zZXRDb29raWVQYXRoIF9zZXRDb29raWVQZXJzaXN0ZW5jZSBfc2V0Q29va2llVGltZW91dCBfc2V0Q3VzdG9tVmFyJywKICAgICAgICAgICAgJ19zZXREZXRlY3RGbGFzaCBfc2V0RGV0ZWN0VGl0bGUgX3NldERvbWFpbk5hbWUgX3NldExvY2FsR2lmUGF0aCcsCiAgICAgICAgICAgICdfc2V0TG9jYWxSZW1vdGVTZXJ2ZXJNb2RlIF9zZXRMb2NhbFNlcnZlck1vZGUgX3NldFJlZmVycmVyT3ZlcnJpZGUgX3NldFJlbW90ZVNlcnZlck1vZGUnLAogICAgICAgICAgICAnX3NldFNhbXBsZVJhdGUgX3NldFNlc3Npb25UaW1lb3V0IF9zZXRTaXRlU3BlZWRTYW1wbGVSYXRlIF9zZXRTZXNzaW9uQ29va2llVGltZW91dCcsCiAgICAgICAgICAgICdfc2V0VmFyIF9zZXRWaXNpdG9yQ29va2llVGltZW91dCBfdHJhY2tFdmVudCBfdHJhY2tQYWdlTG9hZFRpbWUnLAogICAgICAgICAgICAnX3RyYWNrUGFnZXZpZXcgX3RyYWNrU29jaWFsIF90cmFja1RpbWluZyBfdHJhY2tUcmFucycsCiAgICAgICAgICAgICdfdmlzaXRDb2RlJwogICAgICAgIF0uam9pbignICcpLnNwbGl0KC9ccysvKTsKICAgICAgICBmb3IgKCBjb25zdCBtZXRob2Qgb2YgYXBpICkgewogICAgICAgICAgICBvdXRbbWV0aG9kXSA9IG5vb3BmbjsKICAgICAgICB9CiAgICAgICAgb3V0Ll9nZXRMaW5rZXJVcmwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBhOwogICAgICAgIH07CiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0FkZ3VhcmRUZWFtL1NjcmlwdGxldHMvaXNzdWVzLzE1NAogICAgICAgIG91dC5fbGluayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgaWYgKCB0eXBlb2YgYSAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihhKTsKICAgICAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gb3V0OwogICAgfSkoKTsKICAgIC8vCiAgICBjb25zdCBHYXQgPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBHYXQucHJvdG90eXBlLl9hbm9ueW1pemVJUCA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUuX2NyZWF0ZVRyYWNrZXIgPSBub29wZm47CiAgICBHYXQucHJvdG90eXBlLl9mb3JjZVNTTCA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUuX2dldFBsdWdpbiA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUuX2dldFRyYWNrZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdHJhY2tlcjsKICAgIH07CiAgICBHYXQucHJvdG90eXBlLl9nZXRUcmFja2VyQnlOYW1lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRyYWNrZXI7CiAgICB9OwogICAgR2F0LnByb3RvdHlwZS5fZ2V0VHJhY2tlcnMgPSBub29wZm47CiAgICBHYXQucHJvdG90eXBlLmFhID0gbm9vcGZuOwogICAgR2F0LnByb3RvdHlwZS5hYiA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUuaGIgPSBub29wZm47CiAgICBHYXQucHJvdG90eXBlLmxhID0gbm9vcGZuOwogICAgR2F0LnByb3RvdHlwZS5vYSA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUucGEgPSBub29wZm47CiAgICBHYXQucHJvdG90eXBlLnUgPSBub29wZm47CiAgICBjb25zdCBnYXQgPSBuZXcgR2F0KCk7CiAgICB3aW5kb3cuX2dhdCA9IGdhdDsKICAgIC8vCiAgICBjb25zdCBnYXEgPSBuZXcgR2FxKCk7CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgY29uc3QgYWEgPSB3aW5kb3cuX2dhcSB8fCBbXTsKICAgICAgICBpZiAoIEFycmF5LmlzQXJyYXkoYWEpICkgewogICAgICAgICAgICB3aGlsZSAoIGFhWzBdICkgewogICAgICAgICAgICAgICAgZ2FxLnB1c2goYWEuc2hpZnQoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSgpOwogICAgd2luZG93Ll9nYXEgPSBnYXEucWYgPSBnYXE7Cn0pKCk7Cg=="},{"name":"google-analytics_inpage_linkid.js","aliases":["google-analytics.com/inpage_linkid.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB3aW5kb3cuX2dhcSA9IHdpbmRvdy5fZ2FxIHx8IHsKICAgICAgICBwdXNoOiBmdW5jdGlvbigpIHsKICAgICAgICB9CiAgICB9Owp9KSgpOwo="},{"name":"google-ima.js","aliases":["google-ima3"],"kind":{"mime":"application/javascript"},"content":"LyoqCiAqIAogKiBTb3VyY2UgYmVsb3cgaXMgYmFzZWQgb24gTW96aWxsYSBzb3VyY2UgY29kZToKICogaHR0cHM6Ly9zZWFyY2hmb3gub3JnL21vemlsbGEtY2VudHJhbC9yZXYvZDMxN2U5M2Q5YTU5YzllNGMwNmFkYTg1ZmJmZjlmNmExY2VhYWFkMS9icm93c2VyL2V4dGVuc2lvbnMvd2ViY29tcGF0L3NoaW1zL2dvb2dsZS1pbWEuanMKICogCiAqIE1vZGlmaWNhdGlvbnMgdG8gdGhlIG9yaWdpbmFsIGNvZGUgYmVsb3cgdGhpcyBjb21tZW50OgogKiAtIEF2b2lkIEpTIHN5bnRheCBub3Qgc3VwcG9ydGVkIGJ5IG9sZGVyIGJyb3dzZXIgdmVyc2lvbnMKICogLSBBZGQgbWlzc2luZyBzaGltIGV2ZW50CiAqIC0gTW9kaWZpZWQgdG8gYXZvaWQganNoaW50IHdhcm5pbmdzIGFzIHBlciB1Qk8ncyBjb25maWcKICogCiAqIFJlbGF0ZWQgaXNzdWU6CiAqIC0gaHR0cHM6Ly9naXRodWIuY29tL3VCbG9ja09yaWdpbi91QmxvY2staXNzdWVzL2lzc3Vlcy8yMTU4CiAqIAoqKi8KIAondXNlIHN0cmljdCc7CgovKiBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCiAqIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKICogZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4gKi8KCi8qKgogKiBCdWcgMTcxMzY5MCAtIFNoaW0gR29vZ2xlIEludGVyYWN0aXZlIE1lZGlhIEFkcyBpbWEzLmpzCiAqCiAqIE1hbnkgc2l0ZXMgdXNlIGltYTMuanMgZm9yIGFkIGJpZGRpbmcgYW5kIHBsYWNlbWVudCwgb2Z0ZW4gaW4gY29uanVuY3Rpb24KICogd2l0aCBHb29nbGUgUHVibGlzaGVyIFRhZ3MsIFByZWJpZC5qcyBhbmQvb3Igb3RoZXIgc2NyaXB0cy4gVGhpcyBzaGltCiAqIHByb3ZpZGVzIGEgc3R1YmJlZC1vdXQgdmVyc2lvbiBvZiB0aGUgQVBJIHdoaWNoIGhlbHBzIHdvcmsgYXJvdW5kIHJlbGF0ZWQKICogc2l0ZSBicmVha2FnZSwgc3VjaCBhcyBibGFjayBieG9lcyB3aGVyZSB2aWRlb3Mgb3VnaHQgdG8gYmUgcGxhY2VkLgogKi8KCmlmICghd2luZG93Lmdvb2dsZSB8fCAhd2luZG93Lmdvb2dsZS5pbWEgfHwgIXdpbmRvdy5nb29nbGUuaW1hLlZFUlNJT04pIHsKICBjb25zdCBWRVJTSU9OID0gIjMuNTE3LjIiOwoKICBjb25zdCBDaGVja0NhbkF1dG9wbGF5ID0gKGZ1bmN0aW9uKCkgewogICAgLy8gU291cmNlZCBmcm9tOiBodHRwczovL3NlYXJjaGZveC5vcmcvbW96aWxsYS1jZW50cmFsL3NvdXJjZS9kb20vbWVkaWEvZ3Rlc3QvbmVnYXRpdmVfZHVyYXRpb24ubXA0CiAgICBjb25zdCBURVNUX1ZJREVPID0gbmV3IEJsb2IoCiAgICAgIFsKICAgICAgICBuZXcgVWludDMyQXJyYXkoWwogICAgICAgICAgNDY5NzYyMDQ4LAogICAgICAgICAgMTg4NzAwNzg0NiwKICAgICAgICAgIDE3NTIzOTIwMzYsCiAgICAgICAgICAwLAogICAgICAgICAgOTEzMjczNzA1LAogICAgICAgICAgMTcxNzk4NzY5NiwKICAgICAgICAgIDgyODYwMTk1MywKICAgICAgICAgIC0xODc4OTE3MTIwLAogICAgICAgICAgMTk4NzAxNDUwOSwKICAgICAgICAgIDE4MTE5MzkzMjgsCiAgICAgICAgICAxNjg0NTY3NjYxLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgLTQwMjQ1NjU3NiwKICAgICAgICAgIDAsCiAgICAgICAgICAyNTYsCiAgICAgICAgICAxLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAyNTYsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAyNTYsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICA2NCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDMzNTU0NDMyLAogICAgICAgICAgLTIwMTI2MTA1NiwKICAgICAgICAgIDE4MDE1NDg0MDQsCiAgICAgICAgICAxNzQ0ODMwNDY0LAogICAgICAgICAgMTY4NDU2NDg1MiwKICAgICAgICAgIDI1MTY1ODI0MSwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAxNjc3NzIxNiwKICAgICAgICAgIDAsCiAgICAgICAgICAtMSwKICAgICAgICAgIC0xLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDI1NiwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDI1NiwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDY0LAogICAgICAgICAgNSwKICAgICAgICAgIDUzMjUwLAogICAgICAgICAgLTIwODAzMDkyNDgsCiAgICAgICAgICAxNjM0Mjk2OTQxLAogICAgICAgICAgNzM4MTk3NTA0LAogICAgICAgICAgMTY4NDU2MzA1MywKICAgICAgICAgIDEsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgLTIxMzc2MTQzMzYsCiAgICAgICAgICAtMSwKICAgICAgICAgIC0xLAogICAgICAgICAgNTAyNjEsCiAgICAgICAgICA3NTQ5NzQ3MjAsCiAgICAgICAgICAxOTE5NzA2MjE2LAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAxNzAxMDc5NDE0LAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMTcwMTA3OTM4MiwKICAgICAgICAgIDE4NTE4NjkyOTUsCiAgICAgICAgICAxOTE5MjQ5NTA4LAogICAgICAgICAgMTY3NzcyMTYsCiAgICAgICAgICAxODUyNDAyOTc5LAogICAgICAgICAgMTAyLAogICAgICAgICAgMTc1MjAwNDExNiwKICAgICAgICAgIDEwMCwKICAgICAgICAgIDEsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDE4NTI0MDA2NzYsCiAgICAgICAgICAxMDIsCiAgICAgICAgICAxNzAxOTk1NTQ4LAogICAgICAgICAgMTAyLAogICAgICAgICAgMCwKICAgICAgICAgIDEsCiAgICAgICAgICAxODE5NDQwMzk2LAogICAgICAgICAgMzIsCiAgICAgICAgICAxLAogICAgICAgICAgMTY1MTc5OTAxMSwKICAgICAgICAgIDEwOCwKICAgICAgICAgIDE5MzcwMTE2MDcsCiAgICAgICAgICAxMDAsCiAgICAgICAgICAwLAogICAgICAgICAgMSwKICAgICAgICAgIDE2Njg3MDI1OTksCiAgICAgICAgICA0OSwKICAgICAgICAgIDAsCiAgICAgICAgICAxLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMzM1NTU3MTIsCiAgICAgICAgICA0NzE4ODAwLAogICAgICAgICAgNDcxODU5MiwKICAgICAgICAgIDAsCiAgICAgICAgICA2NTUzNiwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMTY3NzY5ODQsCiAgICAgICAgICAxNjMwNjAxMjE2LAogICAgICAgICAgMjExOTM1OTAsCiAgICAgICAgICAtMTQ3NDU1MDAsCiAgICAgICAgICAxNzI5NjI2MzM3LAogICAgICAgICAgLTE0MDcyNTQ0MjgsCiAgICAgICAgICA4OTE2MTk0NSwKICAgICAgICAgIDEwNDkwMTksCiAgICAgICAgICA5NDUzMDU2LAogICAgICAgICAgLTI1MTYxMTEyNSwKICAgICAgICAgIDI3MjY5NTA3LAogICAgICAgICAgLTM3OTA1ODY4OCwKICAgICAgICAgIC0xMzI5MDI0MzkyLAogICAgICAgICAgMjY4NDM1NDU2LAogICAgICAgICAgMTkzNzAxMTgyNywKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMjY4NDM1NDU2LAogICAgICAgICAgMTY2ODUxMDgzNSwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMzM1NTQ0MzIwLAogICAgICAgICAgMjA1NDM4NjgwMywKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDI2ODQzNTQ1NiwKICAgICAgICAgIDE4Njg3ODg4NTEsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDY3MTA4ODY0MCwKICAgICAgICAgIDIwMTk5MTUzNzMsCiAgICAgICAgICA1MzY4NzA5MTIsCiAgICAgICAgICAyMDE5OTE0MzU2LAogICAgICAgICAgMCwKICAgICAgICAgIDE2Nzc3MjE2LAogICAgICAgICAgMTY3NzcyMTYsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgXSksCiAgICAgIF0sCiAgICAgIHsgdHlwZTogInZpZGVvL21wNCIgfQogICAgKTsKCiAgICBsZXQgdGVzdFZpZGVvOwoKICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgaWYgKCF0ZXN0VmlkZW8pIHsKICAgICAgICB0ZXN0VmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOwogICAgICAgIHRlc3RWaWRlby5zdHlsZSA9CiAgICAgICAgICAicG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyBsZWZ0OjA7IHJpZ2h0OjA7IHotaW5kZXg6LTE7IGJvcmRlcjowIjsKICAgICAgICB0ZXN0VmlkZW8uc2V0QXR0cmlidXRlKCJtdXRlZCIsICJtdXRlZCIpOwogICAgICAgIHRlc3RWaWRlby5zZXRBdHRyaWJ1dGUoInBsYXlzaW5saW5lIiwgInBsYXlzaW5saW5lIik7CiAgICAgICAgdGVzdFZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoVEVTVF9WSURFTyk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXN0VmlkZW8pOwogICAgICB9CiAgICAgIHJldHVybiB0ZXN0VmlkZW8ucGxheSgpOwogICAgfTsKICB9KSgpOwoKICBsZXQgaW1hID0ge307CgogIGNsYXNzIEFkRGlzcGxheUNvbnRhaW5lciB7CiAgICBkZXN0cm95KCkge30KICAgIGluaXRpYWxpemUoKSB7fQogIH0KCiAgY2xhc3MgSW1hU2RrU2V0dGluZ3MgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHRoaXMuYyA9IHRydWU7CiAgICAgIHRoaXMuZiA9IHt9OwogICAgICB0aGlzLmkgPSBmYWxzZTsKICAgICAgdGhpcy5sID0gIiI7CiAgICAgIHRoaXMucCA9ICIiOwogICAgICB0aGlzLnIgPSAwOwogICAgICB0aGlzLnQgPSAiIjsKICAgICAgdGhpcy52ID0gIiI7CiAgICB9CiAgICBnZXRDb21wYW5pb25CYWNrZmlsbCgpIHt9CiAgICBnZXREaXNhYmxlQ3VzdG9tUGxheWJhY2tGb3JJT1MxMFBsdXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmk7CiAgICB9CiAgICBnZXRGZWF0dXJlRmxhZ3MoKSB7CiAgICAgIHJldHVybiB0aGlzLmY7CiAgICB9CiAgICBnZXRMb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmw7CiAgICB9CiAgICBnZXROdW1SZWRpcmVjdHMoKSB7CiAgICAgIHJldHVybiB0aGlzLnI7CiAgICB9CiAgICBnZXRQbGF5ZXJUeXBlKCkgewogICAgICByZXR1cm4gdGhpcy50OwogICAgfQogICAgZ2V0UGxheWVyVmVyc2lvbigpIHsKICAgICAgcmV0dXJuIHRoaXMudjsKICAgIH0KICAgIGdldFBwaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnA7CiAgICB9CiAgICBpc0Nvb2tpZXNFbmFibGVkKCkgewogICAgICByZXR1cm4gdGhpcy5jOwogICAgfQogICAgc2V0QXV0b1BsYXlBZEJyZWFrcygpIHt9CiAgICBzZXRDb21wYW5pb25CYWNrZmlsbCgpIHt9CiAgICBzZXRDb29raWVzRW5hYmxlZChjKSB7CiAgICAgIHRoaXMuYyA9ICEhYzsKICAgIH0KICAgIHNldERpc2FibGVDdXN0b21QbGF5YmFja0ZvcklPUzEwUGx1cyhpKSB7CiAgICAgIHRoaXMuaSA9ICEhaTsKICAgIH0KICAgIHNldEZlYXR1cmVGbGFncyhmKSB7CiAgICAgIHRoaXMuZiA9IGY7CiAgICB9CiAgICBzZXRMb2NhbGUobCkgewogICAgICB0aGlzLmwgPSBsOwogICAgfQogICAgc2V0TnVtUmVkaXJlY3RzKHIpIHsKICAgICAgdGhpcy5yID0gcjsKICAgIH0KICAgIHNldFBsYXllclR5cGUodCkgewogICAgICB0aGlzLnQgPSB0OwogICAgfQogICAgc2V0UGxheWVyVmVyc2lvbih2KSB7CiAgICAgIHRoaXMudiA9IHY7CiAgICB9CiAgICBzZXRQcGlkKHApIHsKICAgICAgdGhpcy5wID0gcDsKICAgIH0KICAgIHNldFNlc3Npb25JZCgvKnMqLykge30KICAgIHNldFZwYWlkQWxsb3dlZCgvKmEqLykge30KICAgIHNldFZwYWlkTW9kZSgvKm0qLykge30KCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdUJsb2NrT3JpZ2luL3VCbG9jay1pc3N1ZXMvaXNzdWVzLzIyNjUjaXNzdWVjb21tZW50LTE2MzcwOTQxNDkKICAgIGdldERpc2FibGVGbGFzaEFkcygpIHsKICAgIH0KICAgIHNldERpc2FibGVGbGFzaEFkcygpIHsKICAgIH0KICB9CiAgSW1hU2RrU2V0dGluZ3MuQ29tcGFuaW9uQmFja2ZpbGxNb2RlID0gewogICAgQUxXQVlTOiAiYWx3YXlzIiwKICAgIE9OX01BU1RFUl9BRDogIm9uX21hc3Rlcl9hZCIsCiAgfTsKICBJbWFTZGtTZXR0aW5ncy5WcGFpZE1vZGUgPSB7CiAgICBESVNBQkxFRDogMCwKICAgIEVOQUJMRUQ6IDEsCiAgICBJTlNFQ1VSRTogMiwKICB9OwoKICBjbGFzcyBFdmVudEhhbmRsZXIgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHRoaXMubGlzdGVuZXJzID0gbmV3IE1hcCgpOwogICAgfQoKICAgIF9kaXNwYXRjaChlKSB7CiAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzLmdldChlLnR5cGUpIHx8IFtdOwogICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIEFycmF5LmZyb20obGlzdGVuZXJzKSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICBsaXN0ZW5lcihlKTsKICAgICAgICB9IGNhdGNoIChyKSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKHIpOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGFkZEV2ZW50TGlzdGVuZXIodCwgYykgewogICAgICBpZiAoIXRoaXMubGlzdGVuZXJzLmhhcyh0KSkgewogICAgICAgIHRoaXMubGlzdGVuZXJzLnNldCh0LCBuZXcgU2V0KCkpOwogICAgICB9CiAgICAgIHRoaXMubGlzdGVuZXJzLmdldCh0KS5hZGQoYyk7CiAgICB9CgogICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBjKSB7CiAgICAgIGNvbnN0IHR5cGVTZXQgPSB0aGlzLmxpc3RlbmVycy5nZXQodCk7CiAgICAgIGlmICghdHlwZVNldCkgeyByZXR1cm47IH0KICAgICAgdHlwZVNldC5kZWxldGUoYyk7CiAgICB9CiAgfQoKICBjbGFzcyBBZHNMb2FkZXIgZXh0ZW5kcyBFdmVudEhhbmRsZXIgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgSW1hU2RrU2V0dGluZ3MoKTsKICAgIH0KICAgIGNvbnRlbnRDb21wbGV0ZSgpIHt9CiAgICBkZXN0cm95KCkge30KICAgIGdldFNldHRpbmdzKCkgewogICAgICByZXR1cm4gdGhpcy5zZXR0aW5nczsKICAgIH0KICAgIGdldFZlcnNpb24oKSB7CiAgICAgIHJldHVybiBWRVJTSU9OOwogICAgfQogICAgcmVxdWVzdEFkcygvKnIsIGMqLykgewogICAgICAvLyBJZiBhdXRvcGxheSBpcyBkaXNhYmxlZCBhbmQgdGhlIHBhZ2UgaXMgdHJ5aW5nIHRvIGF1dG9wbGF5IGEgdHJhY2tpbmcKICAgICAgLy8gYWQsIHRoZW4gSU1BIGZhaWxzIHdpdGggYW4gZXJyb3IsIGFuZCB0aGUgcGFnZSBpcyBleHBlY3RlZCB0byByZXF1ZXN0CiAgICAgIC8vIGFkcyBhZ2FpbiBsYXRlciB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0byBwbGF5LgogICAgICBDaGVja0NhbkF1dG9wbGF5KCkudGhlbigKICAgICAgICAoKSA9PiB7CiAgICAgICAgICBjb25zdCB7IEFEU19NQU5BR0VSX0xPQURFRCB9ID0gQWRzTWFuYWdlckxvYWRlZEV2ZW50LlR5cGU7CiAgICAgICAgICB0aGlzLl9kaXNwYXRjaChuZXcgaW1hLkFkc01hbmFnZXJMb2FkZWRFdmVudChBRFNfTUFOQUdFUl9MT0FERUQpKTsKICAgICAgICB9LAogICAgICAgICgpID0+IHsKICAgICAgICAgIGNvbnN0IGUgPSBuZXcgaW1hLkFkRXJyb3IoCiAgICAgICAgICAgICJhZFBsYXlFcnJvciIsCiAgICAgICAgICAgIDEyMDUsCiAgICAgICAgICAgIDEyMDUsCiAgICAgICAgICAgICJUaGUgYnJvd3NlciBwcmV2ZW50ZWQgcGxheWJhY2sgaW5pdGlhdGVkIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbi4iCiAgICAgICAgICApOwogICAgICAgICAgdGhpcy5fZGlzcGF0Y2gobmV3IGltYS5BZEVycm9yRXZlbnQoZSkpOwogICAgICAgIH0KICAgICAgKTsKICAgIH0KICB9CgogIGNsYXNzIEFkc01hbmFnZXIgZXh0ZW5kcyBFdmVudEhhbmRsZXIgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIHRoaXMudm9sdW1lID0gMTsKICAgIH0KICAgIGNvbGxhcHNlKCkge30KICAgIGNvbmZpZ3VyZUFkc01hbmFnZXIoKSB7fQogICAgZGVzdHJveSgpIHt9CiAgICBkaXNjYXJkQWRCcmVhaygpIHt9CiAgICBleHBhbmQoKSB7fQogICAgZm9jdXMoKSB7fQogICAgZ2V0QWRTa2lwcGFibGVTdGF0ZSgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZ2V0Q3VlUG9pbnRzKCkgewogICAgICByZXR1cm4gWzBdOwogICAgfQogICAgZ2V0Q3VycmVudEFkKCkgewogICAgICByZXR1cm4gY3VycmVudEFkOwogICAgfQogICAgZ2V0Q3VycmVudEFkQ3VlUG9pbnRzKCkgewogICAgICByZXR1cm4gW107CiAgICB9CiAgICBnZXRSZW1haW5pbmdUaW1lKCkgewogICAgICByZXR1cm4gMDsKICAgIH0KICAgIGdldFZvbHVtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMudm9sdW1lOwogICAgfQogICAgaW5pdCgvKncsIGgsIG0sIGUqLykge30KICAgIGlzQ3VzdG9tQ2xpY2tUcmFja2luZ1VzZWQoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGlzQ3VzdG9tUGxheWJhY2tVc2VkKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBwYXVzZSgpIHt9CiAgICByZXF1ZXN0TmV4dEFkQnJlYWsoKSB7fQogICAgcmVzaXplKC8qdywgaCwgbSovKSB7fQogICAgcmVzdW1lKCkge30KICAgIHNldFZvbHVtZSh2KSB7CiAgICAgIHRoaXMudm9sdW1lID0gdjsKICAgIH0KICAgIHNraXAoKSB7fQogICAgc3RhcnQoKSB7CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7CiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIFsKICAgICAgICAgIEFkRXZlbnQuVHlwZS5MT0FERUQsCiAgICAgICAgICBBZEV2ZW50LlR5cGUuU1RBUlRFRCwKICAgICAgICAgIEFkRXZlbnQuVHlwZS5DT05URU5UX1JFU1VNRV9SRVFVRVNURUQsCiAgICAgICAgICBBZEV2ZW50LlR5cGUuQURfQlVGRkVSSU5HLAogICAgICAgICAgQWRFdmVudC5UeXBlLkZJUlNUX1FVQVJUSUxFLAogICAgICAgICAgQWRFdmVudC5UeXBlLk1JRFBPSU5ULAogICAgICAgICAgQWRFdmVudC5UeXBlLlRISVJEX1FVQVJUSUxFLAogICAgICAgICAgQWRFdmVudC5UeXBlLkNPTVBMRVRFLAogICAgICAgICAgQWRFdmVudC5UeXBlLkFMTF9BRFNfQ09NUExFVEVELAogICAgICAgIF0pIHsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoKG5ldyBpbWEuQWRFdmVudCh0eXBlKSk7CiAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICAgIHN0b3AoKSB7fQogICAgdXBkYXRlQWRzUmVuZGVyaW5nU2V0dGluZ3MoLypzKi8pIHt9CiAgfQoKICBjbGFzcyBBZHNSZW5kZXJpbmdTZXR0aW5ncyB7fQoKICBjbGFzcyBBZHNSZXF1ZXN0IHsKICAgIHNldEFkV2lsbEF1dG9QbGF5KCkge30KICAgIHNldEFkV2lsbFBsYXlNdXRlZCgpIHt9CiAgICBzZXRDb250aW51b3VzUGxheWJhY2soKSB7fQogIH0KCiAgY2xhc3MgQWRQb2RJbmZvIHsKICAgIGdldEFkUG9zaXRpb24oKSB7CiAgICAgIHJldHVybiAxOwogICAgfQogICAgZ2V0SXNCdW1wZXIoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGdldE1heER1cmF0aW9uKCkgewogICAgICByZXR1cm4gLTE7CiAgICB9CiAgICBnZXRQb2RJbmRleCgpIHsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBnZXRUaW1lT2Zmc2V0KCkgewogICAgICByZXR1cm4gMDsKICAgIH0KICAgIGdldFRvdGFsQWRzKCkgewogICAgICByZXR1cm4gMTsKICAgIH0KICB9CgogIGNsYXNzIEFkIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICB0aGlzLl9waSA9IG5ldyBBZFBvZEluZm8oKTsKICAgIH0KICAgIGdldEFkSWQoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldEFkUG9kSW5mbygpIHsKICAgICAgcmV0dXJuIHRoaXMuX3BpOwogICAgfQogICAgZ2V0QWRTeXN0ZW0oKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldEFkdmVydGlzZXJOYW1lKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXRBcGlGcmFtZXdvcmsoKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgZ2V0Q29tcGFuaW9uQWRzKCkgewogICAgICByZXR1cm4gW107CiAgICB9CiAgICBnZXRDb250ZW50VHlwZSgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgZ2V0Q3JlYXRpdmVBZElkKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXRDcmVhdGl2ZUlkKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXREZWFsSWQoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldERlc2NyaXB0aW9uKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXREdXJhdGlvbigpIHsKICAgICAgcmV0dXJuIDguNTsKICAgIH0KICAgIGdldEhlaWdodCgpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBnZXRNZWRpYVVybCgpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICBnZXRNaW5TdWdnZXN0ZWREdXJhdGlvbigpIHsKICAgICAgcmV0dXJuIC0yOwogICAgfQogICAgZ2V0U2tpcFRpbWVPZmZzZXQoKSB7CiAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIGdldFN1cnZleVVybCgpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICBnZXRUaXRsZSgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgZ2V0VHJhZmZpY2tpbmdQYXJhbWV0ZXJzKCkgewogICAgICByZXR1cm4ge307CiAgICB9CiAgICBnZXRUcmFmZmlja2luZ1BhcmFtZXRlcnNTdHJpbmcoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldFVpRWxlbWVudHMoKSB7CiAgICAgIHJldHVybiBbIiJdOwogICAgfQogICAgZ2V0VW5pdmVyc2FsQWRJZFJlZ2lzdHJ5KCkgewogICAgICByZXR1cm4gInVua25vd24iOwogICAgfQogICAgZ2V0VW5pdmVyc2FsQWRJZHMoKSB7CiAgICAgIHJldHVybiBbIiJdOwogICAgfQogICAgZ2V0VW5pdmVyc2FsQWRJZFZhbHVlKCkgewogICAgICByZXR1cm4gInVua25vd24iOwogICAgfQogICAgZ2V0VmFzdE1lZGlhQml0cmF0ZSgpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBnZXRWYXN0TWVkaWFIZWlnaHQoKSB7CiAgICAgIHJldHVybiAwOwogICAgfQogICAgZ2V0VmFzdE1lZGlhV2lkdGgoKSB7CiAgICAgIHJldHVybiAwOwogICAgfQogICAgZ2V0V2lkdGgoKSB7CiAgICAgIHJldHVybiAwOwogICAgfQogICAgZ2V0V3JhcHBlckFkSWRzKCkgewogICAgICByZXR1cm4gWyIiXTsKICAgIH0KICAgIGdldFdyYXBwZXJBZFN5c3RlbXMoKSB7CiAgICAgIHJldHVybiBbIiJdOwogICAgfQogICAgZ2V0V3JhcHBlckNyZWF0aXZlSWRzKCkgewogICAgICByZXR1cm4gWyIiXTsKICAgIH0KICAgIGlzTGluZWFyKCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlzU2tpcHBhYmxlKCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIGNsYXNzIENvbXBhbmlvbkFkIHsKICAgIGdldEFkU2xvdElkKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXRDb250ZW50KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXRDb250ZW50VHlwZSgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgZ2V0SGVpZ2h0KCkgewogICAgICByZXR1cm4gMTsKICAgIH0KICAgIGdldFdpZHRoKCkgewogICAgICByZXR1cm4gMTsKICAgIH0KICB9CgogIGNsYXNzIEFkRXJyb3IgewogICAgY29uc3RydWN0b3IodHlwZSwgY29kZSwgdmFzdCwgbWVzc2FnZSkgewogICAgICB0aGlzLmVycm9yQ29kZSA9IGNvZGU7CiAgICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgIHRoaXMudmFzdEVycm9yQ29kZSA9IHZhc3Q7CiAgICB9CiAgICBnZXRFcnJvckNvZGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmVycm9yQ29kZTsKICAgIH0KICAgIGdldElubmVyRXJyb3IoKSB7fQogICAgZ2V0TWVzc2FnZSgpIHsKICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZTsKICAgIH0KICAgIGdldFR5cGUoKSB7CiAgICAgIHJldHVybiB0aGlzLnR5cGU7CiAgICB9CiAgICBnZXRWYXN0RXJyb3JDb2RlKCkgewogICAgICByZXR1cm4gdGhpcy52YXN0RXJyb3JDb2RlOwogICAgfQogICAgdG9TdHJpbmcoKSB7CiAgICAgIHJldHVybiBgQWRFcnJvciAke3RoaXMuZXJyb3JDb2RlfTogJHt0aGlzLm1lc3NhZ2V9YDsKICAgIH0KICB9CiAgQWRFcnJvci5FcnJvckNvZGUgPSB7fTsKICBBZEVycm9yLlR5cGUgPSB7fTsKCiAgY29uc3QgaXNFbmdhZGdldCA9ICgpID0+IHsKICAgIHRyeSB7CiAgICAgIGZvciAoY29uc3QgY3R4IG9mIE9iamVjdC52YWx1ZXMod2luZG93LnZpZGlibGUuX2dldENvbnRleHRzKCkpKSB7CiAgICAgICAgY29uc3QgcGxheWVyID0gY3R4LmdldFBsYXllcigpOwogICAgICAgIGlmICghcGxheWVyKSB7IGNvbnRpbnVlO30KICAgICAgICBjb25zdCBkaXYgPSBwbGF5ZXIuZGl2OwogICAgICAgIGlmICghZGl2KSB7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKGRpdi5pbm5lckhUTUwuaW5jbHVkZXMoInd3dy5lbmdhZGdldC5jb20iKSkgewogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9IGNhdGNoIChfKSB7fQogICAgcmV0dXJuIGZhbHNlOwogIH07CgogIGNvbnN0IGN1cnJlbnRBZCA9IGlzRW5nYWRnZXQoKSA/IHVuZGVmaW5lZCA6IG5ldyBBZCgpOwoKICBjbGFzcyBBZEV2ZW50IHsKICAgIGNvbnN0cnVjdG9yKHR5cGUpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgIH0KICAgIGdldEFkKCkgewogICAgICByZXR1cm4gY3VycmVudEFkOwogICAgfQogICAgZ2V0QWREYXRhKCkgewogICAgICByZXR1cm4ge307CiAgICB9CiAgfQogIEFkRXZlbnQuVHlwZSA9IHsKICAgIEFEX0JSRUFLX1JFQURZOiAiYWRCcmVha1JlYWR5IiwKICAgIEFEX0JVRkZFUklORzogImFkQnVmZmVyaW5nIiwKICAgIEFEX0NBTl9QTEFZOiAiYWRDYW5QbGF5IiwKICAgIEFEX01FVEFEQVRBOiAiYWRNZXRhZGF0YSIsCiAgICBBRF9QUk9HUkVTUzogImFkUHJvZ3Jlc3MiLAogICAgQUxMX0FEU19DT01QTEVURUQ6ICJhbGxBZHNDb21wbGV0ZWQiLAogICAgQ0xJQ0s6ICJjbGljayIsCiAgICBDT01QTEVURTogImNvbXBsZXRlIiwKICAgIENPTlRFTlRfUEFVU0VfUkVRVUVTVEVEOiAiY29udGVudFBhdXNlUmVxdWVzdGVkIiwKICAgIENPTlRFTlRfUkVTVU1FX1JFUVVFU1RFRDogImNvbnRlbnRSZXN1bWVSZXF1ZXN0ZWQiLAogICAgRFVSQVRJT05fQ0hBTkdFOiAiZHVyYXRpb25DaGFuZ2UiLAogICAgRVhQQU5ERURfQ0hBTkdFRDogImV4cGFuZGVkQ2hhbmdlZCIsCiAgICBGSVJTVF9RVUFSVElMRTogImZpcnN0UXVhcnRpbGUiLAogICAgSU1QUkVTU0lPTjogImltcHJlc3Npb24iLAogICAgSU5URVJBQ1RJT046ICJpbnRlcmFjdGlvbiIsCiAgICBMSU5FQVJfQ0hBTkdFOiAibGluZWFyQ2hhbmdlIiwKICAgIExJTkVBUl9DSEFOR0VEOiAibGluZWFyQ2hhbmdlZCIsCiAgICBMT0FERUQ6ICJsb2FkZWQiLAogICAgTE9HOiAibG9nIiwKICAgIE1JRFBPSU5UOiAibWlkcG9pbnQiLAogICAgUEFVU0VEOiAicGF1c2UiLAogICAgUkVTVU1FRDogInJlc3VtZSIsCiAgICBTS0lQUEFCTEVfU1RBVEVfQ0hBTkdFRDogInNraXBwYWJsZVN0YXRlQ2hhbmdlZCIsCiAgICBTS0lQUEVEOiAic2tpcCIsCiAgICBTVEFSVEVEOiAic3RhcnQiLAogICAgVEhJUkRfUVVBUlRJTEU6ICJ0aGlyZFF1YXJ0aWxlIiwKICAgIFVTRVJfQ0xPU0U6ICJ1c2VyQ2xvc2UiLAogICAgVklERU9fQ0xJQ0tFRDogInZpZGVvQ2xpY2tlZCIsCiAgICBWSURFT19JQ09OX0NMSUNLRUQ6ICJ2aWRlb0ljb25DbGlja2VkIiwKICAgIFZJRVdBQkxFX0lNUFJFU1NJT046ICJ2aWV3YWJsZV9pbXByZXNzaW9uIiwKICAgIFZPTFVNRV9DSEFOR0VEOiAidm9sdW1lQ2hhbmdlIiwKICAgIFZPTFVNRV9NVVRFRDogIm11dGUiLAogIH07CgogIGNsYXNzIEFkRXJyb3JFdmVudCB7CiAgICBjb25zdHJ1Y3RvcihlcnJvcikgewogICAgICB0aGlzLnR5cGUgPSAiYWRFcnJvciI7CiAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjsKICAgIH0KICAgIGdldEVycm9yKCkgewogICAgICByZXR1cm4gdGhpcy5lcnJvcjsKICAgIH0KICAgIGdldFVzZXJSZXF1ZXN0Q29udGV4dCgpIHsKICAgICAgcmV0dXJuIHt9OwogICAgfQogIH0KICBBZEVycm9yRXZlbnQuVHlwZSA9IHsKICAgIEFEX0VSUk9SOiAiYWRFcnJvciIsCiAgfTsKCiAgY29uc3QgbWFuYWdlciA9IG5ldyBBZHNNYW5hZ2VyKCk7CgogIGNsYXNzIEFkc01hbmFnZXJMb2FkZWRFdmVudCB7CiAgICBjb25zdHJ1Y3Rvcih0eXBlKSB7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICB9CiAgICBnZXRBZHNNYW5hZ2VyKCkgewogICAgICByZXR1cm4gbWFuYWdlcjsKICAgIH0KICAgIGdldFVzZXJSZXF1ZXN0Q29udGV4dCgpIHsKICAgICAgcmV0dXJuIHt9OwogICAgfQogIH0KICBBZHNNYW5hZ2VyTG9hZGVkRXZlbnQuVHlwZSA9IHsKICAgIEFEU19NQU5BR0VSX0xPQURFRDogImFkc01hbmFnZXJMb2FkZWQiLAogIH07CgogIGNsYXNzIEN1c3RvbUNvbnRlbnRMb2FkZWRFdmVudCB7fQogIEN1c3RvbUNvbnRlbnRMb2FkZWRFdmVudC5UeXBlID0gewogICAgQ1VTVE9NX0NPTlRFTlRfTE9BREVEOiAiZGVwcmVjYXRlZC1ldmVudCIsCiAgfTsKCiAgY2xhc3MgQ29tcGFuaW9uQWRTZWxlY3Rpb25TZXR0aW5ncyB7fQogIENvbXBhbmlvbkFkU2VsZWN0aW9uU2V0dGluZ3MuQ3JlYXRpdmVUeXBlID0gewogICAgQUxMOiAiQWxsIiwKICAgIEZMQVNIOiAiRmxhc2giLAogICAgSU1BR0U6ICJJbWFnZSIsCiAgfTsKICBDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzLlJlc291cmNlVHlwZSA9IHsKICAgIEFMTDogIkFsbCIsCiAgICBIVE1MOiAiSHRtbCIsCiAgICBJRlJBTUU6ICJJRnJhbWUiLAogICAgU1RBVElDOiAiU3RhdGljIiwKICB9OwogIENvbXBhbmlvbkFkU2VsZWN0aW9uU2V0dGluZ3MuU2l6ZUNyaXRlcmlhID0gewogICAgSUdOT1JFOiAiSWdub3JlU2l6ZSIsCiAgICBTRUxFQ1RfRVhBQ1RfTUFUQ0g6ICJTZWxlY3RFeGFjdE1hdGNoIiwKICAgIFNFTEVDVF9ORUFSX01BVENIOiAiU2VsZWN0TmVhck1hdGNoIiwKICB9OwoKICBjbGFzcyBBZEN1ZVBvaW50cyB7CiAgICBnZXRDdWVQb2ludHMoKSB7CiAgICAgIHJldHVybiBbXTsKICAgIH0KICB9CgogIGNsYXNzIEFkUHJvZ3Jlc3NEYXRhIHt9CgogIGNsYXNzIFVuaXZlcnNhbEFkSWRJbmZvIHsKICAgIGdldEFkSWRSZWdpc3RyeSgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgZ2V0QWRJc1ZhbHVlKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgfQoKICBPYmplY3QuYXNzaWduKGltYSwgewogICAgQWRDdWVQb2ludHMsCiAgICBBZERpc3BsYXlDb250YWluZXIsCiAgICBBZEVycm9yLAogICAgQWRFcnJvckV2ZW50LAogICAgQWRFdmVudCwKICAgIEFkUG9kSW5mbywKICAgIEFkUHJvZ3Jlc3NEYXRhLAogICAgQWRzTG9hZGVyLAogICAgQWRzTWFuYWdlcjogbWFuYWdlciwKICAgIEFkc01hbmFnZXJMb2FkZWRFdmVudCwKICAgIEFkc1JlbmRlcmluZ1NldHRpbmdzLAogICAgQWRzUmVxdWVzdCwKICAgIENvbXBhbmlvbkFkLAogICAgQ29tcGFuaW9uQWRTZWxlY3Rpb25TZXR0aW5ncywKICAgIEN1c3RvbUNvbnRlbnRMb2FkZWRFdmVudCwKICAgIGdwdFByb3h5SW5zdGFuY2U6IHt9LAogICAgSW1hU2RrU2V0dGluZ3MsCiAgICBPbWlkQWNjZXNzTW9kZTogewogICAgICBET01BSU46ICJkb21haW4iLAogICAgICBGVUxMOiAiZnVsbCIsCiAgICAgIExJTUlURUQ6ICJsaW1pdGVkIiwKICAgIH0sCiAgICBzZXR0aW5nczogbmV3IEltYVNka1NldHRpbmdzKCksCiAgICBVaUVsZW1lbnRzOiB7CiAgICAgIEFEX0FUVFJJQlVUSU9OOiAiYWRBdHRyaWJ1dGlvbiIsCiAgICAgIENPVU5URE9XTjogImNvdW50ZG93biIsCiAgICB9LAogICAgVW5pdmVyc2FsQWRJZEluZm8sCiAgICBWRVJTSU9OLAogICAgVmlld01vZGU6IHsKICAgICAgRlVMTFNDUkVFTjogImZ1bGxzY3JlZW4iLAogICAgICBOT1JNQUw6ICJub3JtYWwiLAogICAgfSwKICB9KTsKCiAgaWYgKCF3aW5kb3cuZ29vZ2xlKSB7CiAgICB3aW5kb3cuZ29vZ2xlID0ge307CiAgfQoKICB3aW5kb3cuZ29vZ2xlLmltYSA9IGltYTsKfQo="},{"name":"googlesyndication_adsbygoogle.js","aliases":["googlesyndication.com/adsbygoogle.js","googlesyndication-adsbygoogle"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBpbml0ID0gKCApID0+IHsKICAgICAgICB3aW5kb3cuYWRzYnlnb29nbGUgPSB7CiAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSwKICAgICAgICAgICAgcHVzaDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGNvbnN0IHBocyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hZHNieWdvb2dsZScpOwogICAgICAgIGNvbnN0IGNzcyA9ICdoZWlnaHQ6MXB4IWltcG9ydGFudDttYXgtaGVpZ2h0OjFweCFpbXBvcnRhbnQ7bWF4LXdpZHRoOjFweCFpbXBvcnRhbnQ7d2lkdGg6MXB4IWltcG9ydGFudDsnOwogICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHBocy5sZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgY29uc3QgaWQgPSBgYXN3aWZ0XyR7aX1gOwogICAgICAgICAgICBpZiAoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlmcmFtZSMke2lkfWApICE9PSBudWxsICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICBjb25zdCBmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICAgICAgICBmci5pZCA9IGlkOwogICAgICAgICAgICBmci5zdHlsZSA9IGNzczsKICAgICAgICAgICAgY29uc3QgY2ZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgICAgICAgIGNmci5pZCA9IGBnb29nbGVfYWRzX2ZyYW1lJHtpfWA7CiAgICAgICAgICAgIGZyLmFwcGVuZENoaWxkKGNmcik7CiAgICAgICAgICAgIHBoc1tpXS5hcHBlbmRDaGlsZChmcik7CiAgICAgICAgfQogICAgfTsKICAgIGlmICgKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYWRzYnlnb29nbGUnKS5sZW5ndGggPT09IDAgJiYKICAgICAgICBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycKICAgICkgewogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaW5pdCwgeyBvbmNlOiB0cnVlIH0pOwogICAgfSBlbHNlIHsKICAgICAgICBpbml0KCk7CiAgICB9Cn0pKCk7CgovKgpwYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanMsYWRzYnlnb29nbGUtcGxhY2Vob2xkZXIsYWRzYnlnb29nbGVTdGF0dXMsZ29vZ2xlX2FkX2NoYW5uZWwsZ29vZ2xlX2FkX2NsaWVudCxnb29nbGVfYWRfZm9ybWF0LGdvb2dsZV9hZF9mcmVxdWVuY3lfaGludCxnb29nbGVfYWRfaGVpZ2h0LGdvb2dsZV9hZF9ob3N0LGdvb2dsZV9hZF9ob3N0X2NoYW5uZWwsZ29vZ2xlX2FkX21vZGlmaWNhdGlvbnMsZ29vZ2xlX2FkX3JlZ2lvbixnb29nbGVfYWRfcmVzaXphYmxlLGdvb2dsZV9hZF9yZXNpemUsZ29vZ2xlX2FkX3NlY3Rpb24sZ29vZ2xlX2FkX3NlbWFudGljX2FyZWEsZ29vZ2xlX2FkX3dpZHRoLGdvb2dsZV9hZGJyZWFrX3Rlc3QsZ29vZ2xlX2Fkc19mcmFtZSxnb29nbGVfYWRzX2lmcmFtZSxnb29nbGVfYWR0ZXN0LGdvb2dsZV9hZG1vYl9pbnRlcnN0aXRpYWxfc2xvdCxnb29nbGVfYWRtb2JfcmV3YXJkZWRfc2xvdCxnb29nbGVfYWRtb2JfYWRzX29ubHksZ29vZ2xlLWFkc2Vuc2UtcGxhdGZvcm0tYWNjb3VudCxnb29nbGVfYWRzZW5zZV9zZXR0aW5ncyxnb29nbGVfYW1hX2NvbmZpZyxnb29nbGUtYW1hLW9yZGVyLWFzc3VyYW5jZSxnb29nbGVfYW1hX3NldHRpbmdzLGdvb2dsZV9hbWFfc3RhdGUsZ29vZ2xlX2FwbHRsYWQsZ29vZ2xlX2F1ZGlvX3NlbnNlLGdvb2dsZS1hdXRvLXBsYWNlZC1yZWFkLWFsb3VkLXBsYXllci1yZXNlcnZlZCxnb29nbGVfZGVidWdfcGFyYW1zLGdvb2dsZV9mdWxsX3dpZHRoX3Jlc3BvbnNpdmUsZ29vZ2xlX2Z1bGxfd2lkdGhfcmVzcG9uc2l2ZV9hbGxvd2VkLGdvb2dsZV9pbWFnZV9yZXF1ZXN0cyxnb29nbGVfanNfZXJyb3JzLGdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWUsZ29vZ2xlX2xvYWRlcl9mZWF0dXJlc191c2VkLGdvb2dsZV9sbHAsZ29vZ2xlX2xvZ2dpbmdfcXVldWUsZ29vZ2xlX21heF9hZF9jb250ZW50X3JhdGluZyxnb29nbGVfbWVhc3VyZV9qc190aW1pbmcsZ29vZ2xlX21sX3JhbmssZ29vZ2xlX292ZXJsYXlzLGdvb2dsZV9vdmVycmlkZV9mb3JtYXQsZ29vZ2xlX3BhY2thZ2UsZ29vZ2xlX3BhZ2VfdXJsLGdvb2dsZV9wZXJzaXN0ZW50X3N0YXRlX2FzeW5jLGdvb2dsZV9wZ2JfcmVhY3RpdmUsZ29vZ2xlX3BsYWNlbWVudF9pZCxnb29nbGVfcHJldl9hZF9mb3JtYXRzX2J5X3JlZ2lvbixnb29nbGVfcHJldl9hZF9zbG90bmFtZXNfYnlfcmVnaW9uLGdvb2dsZV9yZWFjdGl2ZV9hZF9mb3JtYXQsZ29vZ2xlX3JlYWN0aXZlX2Fkc19nbG9iYWxfc3RhdGUsZ29vZ2xlX3Jlc2l6aW5nX2hlaWdodCxnb29nbGVfcmVzaXppbmdfd2lkdGgsZ29vZ2xlX3Jlc3BvbnNpdmVfYXV0b19mb3JtYXQsZ29vZ2xlX3Jlc3BvbnNpdmVfZHVtbXlfYWQsZ29vZ2xlX3Jlc3BvbnNpdmVfZm9ybWF0cyxnb29nbGVfcmVzdHJpY3RfZGF0YV9wcm9jZXNzaW5nLGdvb2dsZV9ydW1fdGFza19pZF9jb3VudGVyLGdvb2dsZV9zYWZlX2Zvcl9yZXNwb25zaXZlX292ZXJyaWRlLGdvb2dsZV9zaGFkb3dfbW9kZSxnb29nbGVfc3J0LGdvb2dsZV90YWdfZm9yX3VuZGVyX2FnZV9vZl9jb25zZW50LGdvb2dsZV90YWdfb3JpZ2luLGdvb2dsZV90YWdfcGFydG5lcixnb29nbGVfdHJhZmZpY19zb3VyY2UsZ29vZ2xlX3VuaXF1ZV9pZCxnb29nbGV0YWcKKi8K"},{"name":"googletagservices_gpt.js","aliases":["googletagservices.com/gpt.js","googletagservices-gpt"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9kb3VibGVjbGljay1ncHQvcmVmZXJlbmNlCiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH0uYmluZCgpOwogICAgY29uc3Qgbm9vcHRoaXNmbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKICAgIGNvbnN0IG5vb3BudWxsZm4gPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH07CiAgICBjb25zdCBub29wYXJyYXlmbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBbXTsKICAgIH07CiAgICBjb25zdCBub29wc3RyZm4gPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9OwogICAgLy8KICAgIGNvbnN0IGNvbXBhbmlvbkFkc1NlcnZpY2UgPSB7CiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogbm9vcHRoaXNmbiwKICAgICAgICBlbmFibGVTeW5jTG9hZGluZzogbm9vcGZuLAogICAgICAgIHNldFJlZnJlc2hVbmZpbGxlZFNsb3RzOiBub29wZm4KICAgIH07CiAgICBjb25zdCBjb250ZW50U2VydmljZSA9IHsKICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBub29wdGhpc2ZuLAogICAgICAgIHNldENvbnRlbnQ6IG5vb3BmbgogICAgfTsKICAgIGNvbnN0IFBhc3NiYWNrU2xvdCA9IGZ1bmN0aW9uKCkgewogICAgfTsKICAgIGxldCBwID0gUGFzc2JhY2tTbG90LnByb3RvdHlwZTsKICAgIHAuZGlzcGxheSA9IG5vb3BmbjsKICAgIHAuZ2V0ID0gbm9vcG51bGxmbjsKICAgIHAuc2V0ID0gbm9vcHRoaXNmbjsKICAgIHAuc2V0Q2xpY2tVcmwgPSBub29wdGhpc2ZuOwogICAgcC5zZXRUYWdGb3JDaGlsZERpcmVjdGVkVHJlYXRtZW50ID0gbm9vcHRoaXNmbjsKICAgIHAuc2V0VGFyZ2V0aW5nID0gbm9vcHRoaXNmbjsKICAgIHAudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcCA9IG5vb3B0aGlzZm47CiAgICBjb25zdCBwdWJBZHNTZXJ2aWNlID0gewogICAgICAgIGFkZEV2ZW50TGlzdGVuZXI6IG5vb3B0aGlzZm4sCiAgICAgICAgY2xlYXI6IG5vb3BmbiwKICAgICAgICBjbGVhckNhdGVnb3J5RXhjbHVzaW9uczogbm9vcHRoaXNmbiwKICAgICAgICBjbGVhclRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ6IG5vb3B0aGlzZm4sCiAgICAgICAgY2xlYXJUYXJnZXRpbmc6IG5vb3B0aGlzZm4sCiAgICAgICAgY29sbGFwc2VFbXB0eURpdnM6IG5vb3BmbiwKICAgICAgICBkZWZpbmVPdXRPZlBhZ2VQYXNzYmFjazogZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgUGFzc2JhY2tTbG90KCk7IH0sCiAgICAgICAgZGVmaW5lUGFzc2JhY2s6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IFBhc3NiYWNrU2xvdCgpOyB9LAogICAgICAgIGRpc2FibGVJbml0aWFsTG9hZDogbm9vcGZuLAogICAgICAgIGRpc3BsYXk6IG5vb3BmbiwKICAgICAgICBlbmFibGVBc3luY1JlbmRlcmluZzogbm9vcGZuLAogICAgICAgIGVuYWJsZVNpbmdsZVJlcXVlc3Q6IG5vb3BmbiwKICAgICAgICBlbmFibGVTeW5jUmVuZGVyaW5nOiBub29wZm4sCiAgICAgICAgZW5hYmxlVmlkZW9BZHM6IG5vb3BmbiwKICAgICAgICBnZXQ6IG5vb3BudWxsZm4sCiAgICAgICAgZ2V0QXR0cmlidXRlS2V5czogbm9vcGFycmF5Zm4sCiAgICAgICAgZ2V0VGFyZ2V0aW5nOiBub29wYXJyYXlmbiwKICAgICAgICBnZXRUYXJnZXRpbmdLZXlzOiBub29wYXJyYXlmbiwKICAgICAgICBnZXRTbG90czogbm9vcGFycmF5Zm4sCiAgICAgICAgcmVmcmVzaDogbm9vcGZuLAogICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IG5vb3BmbiwKICAgICAgICBzZXQ6IG5vb3B0aGlzZm4sCiAgICAgICAgc2V0Q2F0ZWdvcnlFeGNsdXNpb246IG5vb3B0aGlzZm4sCiAgICAgICAgc2V0Q2VudGVyaW5nOiBub29wZm4sCiAgICAgICAgc2V0Q29va2llT3B0aW9uczogbm9vcHRoaXNmbiwKICAgICAgICBzZXRGb3JjZVNhZmVGcmFtZTogbm9vcHRoaXNmbiwKICAgICAgICBzZXRMb2NhdGlvbjogbm9vcHRoaXNmbiwKICAgICAgICBzZXRQdWJsaXNoZXJQcm92aWRlZElkOiBub29wdGhpc2ZuLAogICAgICAgIHNldFByaXZhY3lTZXR0aW5nczogbm9vcHRoaXNmbiwKICAgICAgICBzZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzOiBub29wdGhpc2ZuLAogICAgICAgIHNldFNhZmVGcmFtZUNvbmZpZzogbm9vcHRoaXNmbiwKICAgICAgICBzZXRUYWdGb3JDaGlsZERpcmVjdGVkVHJlYXRtZW50OiBub29wdGhpc2ZuLAogICAgICAgIHNldFRhcmdldGluZzogbm9vcHRoaXNmbiwKICAgICAgICBzZXRWaWRlb0NvbnRlbnQ6IG5vb3B0aGlzZm4sCiAgICAgICAgdXBkYXRlQ29ycmVsYXRvcjogbm9vcGZuCiAgICB9OwogICAgY29uc3QgU2l6ZU1hcHBpbmdCdWlsZGVyID0gZnVuY3Rpb24oKSB7CiAgICB9OwogICAgcCA9IFNpemVNYXBwaW5nQnVpbGRlci5wcm90b3R5cGU7CiAgICBwLmFkZFNpemUgPSBub29wdGhpc2ZuOwogICAgcC5idWlsZCA9IG5vb3BudWxsZm47CiAgICBjb25zdCBTbG90ID0gZnVuY3Rpb24oKSB7CiAgICB9OwogICAgcCA9IFNsb3QucHJvdG90eXBlOwogICAgcC5hZGRTZXJ2aWNlID0gbm9vcHRoaXNmbjsKICAgIHAuY2xlYXJDYXRlZ29yeUV4Y2x1c2lvbnMgPSBub29wdGhpc2ZuOwogICAgcC5jbGVhclRhcmdldGluZyA9IG5vb3B0aGlzZm47CiAgICBwLmRlZmluZVNpemVNYXBwaW5nID0gbm9vcHRoaXNmbjsKICAgIHAuZ2V0ID0gbm9vcG51bGxmbjsKICAgIHAuZ2V0QWRVbml0UGF0aCA9IG5vb3BhcnJheWZuOwogICAgcC5nZXRBdHRyaWJ1dGVLZXlzID0gbm9vcGFycmF5Zm47CiAgICBwLmdldENhdGVnb3J5RXhjbHVzaW9ucyA9IG5vb3BhcnJheWZuOwogICAgcC5nZXREb21JZCA9IG5vb3BzdHJmbjsKICAgIHAuZ2V0UmVzcG9uc2VJbmZvcm1hdGlvbiA9IG5vb3BudWxsZm47CiAgICBwLmdldFNsb3RFbGVtZW50SWQgPSBub29wc3RyZm47CiAgICBwLmdldFNsb3RJZCA9IG5vb3B0aGlzZm47CiAgICBwLmdldFRhcmdldGluZyA9IG5vb3BhcnJheWZuOwogICAgcC5nZXRUYXJnZXRpbmdLZXlzID0gbm9vcGFycmF5Zm47CiAgICBwLnNldCA9IG5vb3B0aGlzZm47CiAgICBwLnNldENhdGVnb3J5RXhjbHVzaW9uID0gbm9vcHRoaXNmbjsKICAgIHAuc2V0Q2xpY2tVcmwgPSBub29wdGhpc2ZuOwogICAgcC5zZXRDb2xsYXBzZUVtcHR5RGl2ID0gbm9vcHRoaXNmbjsKICAgIHAuc2V0VGFyZ2V0aW5nID0gbm9vcHRoaXNmbjsKICAgIHAudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcCA9IG5vb3B0aGlzZm47CiAgICAvLwogICAgY29uc3QgZ3B0ID0gd2luZG93Lmdvb2dsZXRhZyB8fCB7fTsKICAgIGNvbnN0IGNtZCA9IGdwdC5jbWQgfHwgW107CiAgICBncHQuYXBpUmVhZHkgPSB0cnVlOwogICAgZ3B0LmNtZCA9IFtdOwogICAgZ3B0LmNtZC5wdXNoID0gZnVuY3Rpb24oYSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGEoKTsKICAgICAgICB9IGNhdGNoIChleCkgewogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH07CiAgICBncHQuY29tcGFuaW9uQWRzID0gZnVuY3Rpb24oKSB7IHJldHVybiBjb21wYW5pb25BZHNTZXJ2aWNlOyB9OwogICAgZ3B0LmNvbnRlbnQgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbnRlbnRTZXJ2aWNlOyB9OwogICAgZ3B0LmRlZmluZU91dE9mUGFnZVNsb3QgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG5ldyBTbG90KCk7IH07CiAgICBncHQuZGVmaW5lU2xvdCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IFNsb3QoKTsgfTsKICAgIGdwdC5kZXN0cm95U2xvdHMgPSBub29wZm47CiAgICBncHQuZGlzYWJsZVB1Ymxpc2hlckNvbnNvbGUgPSBub29wZm47CiAgICBncHQuZGlzcGxheSA9IG5vb3BmbjsKICAgIGdwdC5lbmFibGVTZXJ2aWNlcyA9IG5vb3BmbjsKICAgIGdwdC5nZXRWZXJzaW9uID0gbm9vcHN0cmZuOwogICAgZ3B0LnB1YmFkcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gcHViQWRzU2VydmljZTsgfTsKICAgIGdwdC5wdWJhZHNSZWFkeSA9IHRydWU7CiAgICBncHQuc2V0QWRJZnJhbWVUaXRsZSA9IG5vb3BmbjsKICAgIGdwdC5zaXplTWFwcGluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IFNpemVNYXBwaW5nQnVpbGRlcigpOyB9OwogICAgd2luZG93Lmdvb2dsZXRhZyA9IGdwdDsKICAgIHdoaWxlICggY21kLmxlbmd0aCAhPT0gMCApIHsKICAgICAgICBncHQuY21kLnB1c2goY21kLnNoaWZ0KCkpOwogICAgfQp9KSgpOwo="},{"name":"hd-main.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBsID0ge307CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBjb25zdCBwcm9wcyA9IFsKICAgICAgICAiJGoiLCJBZCIsIkJkIiwiQ2QiLCJEZCIsIkVkIiwiRmQiLCJHZCIsIkhkIiwiSWQiLCJKZCIsIk5qIiwiT2MiLCJQYyIsIlBlIiwKICAgICAgICAiUWMiLCJRZSIsIlJjIiwiUmUiLCJSaSIsIlNjIiwiVGMiLCJVYyIsIlZjIiwiV2MiLCJXZyIsIlhjIiwiWGciLCJZYyIsIllkIiwKICAgICAgICAiYWQiLCJhZSIsImJkIiwiYmYiLCJjZCIsImRkIiwiZWQiLCJlZiIsImVrIiwiZmQiLCJmZyIsImZoIiwiZmsiLCJnZCIsImhkIiwKICAgICAgICAiaWciLCJpaiIsImpkIiwia2QiLCJrZSIsImxkIiwibWQiLCJtaSIsIm5kIiwib2QiLCJvaCIsInBkIiwicGYiLCJxZCIsInJkIiwKICAgICAgICAic2QiLCJ0ZCIsInVkIiwidmQiLCJ3ZCIsIndnIiwieGQiLCJ4aCIsInlkIiwiemQiLAogICAgICAgICIkZCIsIiRlIiwiJGsiLCJBZSIsIkFmIiwiQWoiLCJCZSIsIkNlIiwiRGUiLCJFZSIsIkVrIiwiRW8iLCJFcCIsIkZlIiwiRm8iLAogICAgICAgICJHZSIsIkdoIiwiSGsiLCJJZSIsIklwIiwiSmUiLCJLZSIsIktrIiwiS3EiLCJMZSIsIkxoIiwiTGsiLCJNZSIsIk1tIiwiTmUiLAogICAgICAgICJPZSIsIlBlIiwiUWUiLCJSZSIsIlJwIiwiU2UiLCJUZSIsIlVlIiwiVmUiLCJWcCIsIldlIiwiWGQiLCJYZSIsIllkIiwiWWUiLAogICAgICAgICJaZCIsIlplIiwiWmYiLCJaayIsImFlIiwiYWYiLCJhbCIsImJlIiwiYmYiLCJiZyIsImNlIiwiY3AiLCJkZiIsImRpIiwiZWUiLAogICAgICAgICJlZiIsImZlIiwiZmYiLCJnZiIsImdtIiwiaGUiLCJoZiIsImllIiwiamUiLCJqZiIsImtlIiwia2YiLCJrbCIsImxlIiwibGYiLAogICAgICAgICJsayIsIm1mIiwibWciLCJtbiIsIm5mIiwib2UiLCJvZiIsInBlIiwicGYiLCJwZyIsInFlIiwicWYiLCJyZSIsInJmIiwic2UiLAogICAgICAgICJzZiIsInRlIiwidGYiLCJ0aSIsInVlIiwidWYiLCJ2ZSIsInZmIiwid2UiLCJ3ZiIsIndnIiwid2kiLCJ4ZSIsInllIiwieWYiLAogICAgICAgICJ5ayIsInlsIiwiemUiLCJ6ZiIsInprIgogICAgXTsKICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrICkgewogICAgICAgIGxbcHJvcHNbaV1dID0gbm9vcGZuOwogICAgfQogICAgd2luZG93LkwgPSB3aW5kb3cuSiA9IGw7Cn0pKCk7Cg=="},{"name":"ligatus_angular-tag.js","aliases":["ligatus.com/*/angular-tag.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBzZWxmLmFkUHJvdGVjdCA9IHRydWU7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3aW5kb3csIHsKICAgICAgICB1YWJwZGw6IHsgdmFsdWU6IHRydWUgfSwKICAgICAgICB1YWJEZXRlY3Q6IHsgdmFsdWU6IHRydWUgfQogICAgfSk7Cn0pKCk7Cg=="},{"name":"mxpnl_mixpanel.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAyMS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICAvLyBodHRwczovL2RldmVsb3Blci5taXhwYW5lbC5jb20vZG9jcy9qYXZhc2NyaXB0LWZ1bGwtYXBpLXJlZmVyZW5jZQogICAgY29uc3QgbWl4cGFuZWwgPSB7CiAgICAgICAgZ2V0X2Rpc3RpbmN0X2lkKCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfSwKICAgICAgICBpbml0KHQsIGNmZykgewogICAgICAgICAgICBpZiAoIGNmZyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoICdsb2FkZWQnIGluIGNmZyA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGNmZy5sb2FkZWQgaW5zdGFuY2VvZiBGdW5jdGlvbiA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBjZmcubG9hZGVkKCk7CiAgICAgICAgfSwKICAgICAgICByZWdpc3RlcigpIHsKICAgICAgICB9LAogICAgICAgIHJlZ2lzdGVyX29uY2UoKSB7CiAgICAgICAgfSwKICAgICAgICB0cmFjaygpIHsKICAgICAgICAgICAgY29uc3QgY2IgPSBBcnJheS5mcm9tKGFyZ3VtZW50cykucG9wKCk7CiAgICAgICAgICAgIGlmICggY2IgaW5zdGFuY2VvZiBGdW5jdGlvbiA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBjYigpOwogICAgICAgIH0sCiAgICB9OwogICAgY29uc3QgcSA9IHNlbGYubWl4cGFuZWwgJiYgc2VsZi5taXhwYW5lbC5faSB8fCBbXTsKICAgIHNlbGYubWl4cGFuZWwgPSBtaXhwYW5lbDsKICAgIGZvciAoIGNvbnN0IGkgb2YgcSApIHsKICAgICAgICBpZiAoIEFycmF5LmlzQXJyYXkoaSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgIG1peHBhbmVsLmluaXQoLi4uaSk7CiAgICB9Cn0pKCk7Cg=="},{"name":"monkeybroker.js","aliases":["d3pkae9owd2lcf.cloudfront.net/mb105.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICB3aW5kb3cucGJqcyA9IHsgbGliTG9hZGVkOiB0cnVlIH07CiAgICBjb25zdCBtYiA9IHdpbmRvdy5Nb25rZXlCcm9rZXIgfHwgewogICAgICAgIGFkZEF0dHJpYnV0ZTogbm9vcGZuLAogICAgICAgIGFkZFNsb3Q6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdGhpcy5zbG90c1thLnNsb3RdID0ge307CiAgICAgICAgfSwKICAgICAgICBkZWZpbmVTbG90OiBub29wZm4sCiAgICAgICAgZmlsbFNsb3Q6IG5vb3BmbiwKICAgICAgICBnbzogbm9vcGZuLAogICAgICAgIGludmVudG9yeUNvbmRpdGlvbmFsUGxhY2VtZW50OiBub29wZm4sCiAgICAgICAgcmVnaXN0ZXJTaXplQ2FsbGJhY2s6IG5vb3BmbiwKICAgICAgICByZWdpc3RlclNsb3RDYWxsYmFjazogbm9vcGZuLAogICAgICAgIHNsb3RzOiB7fSwKICAgICAgICB2ZXJzaW9uOiAnJwogICAgfTsKICAgIG1iLnJlZ1Nsb3RzTWFwID0gbWIuc2xvdHM7CiAgICB3aW5kb3cuTW9ua2V5QnJva2VyID0gbWI7Cn0pKCk7Cg=="},{"name":"nobab.js","aliases":["bab-defuser.js","prevent-bab.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBzaWduYXR1cmVzID0gWwogICAgICAgIFsgJ2Jsb2NrYWRibG9jaycgXSwKICAgICAgICBbICdiYWJhc2JtJyBdLAogICAgICAgIFsgL2dldEl0ZW1cKCdiYWJuJ1wpLyBdLAogICAgICAgIFsKICAgICAgICAgICAgJ2dldEVsZW1lbnRCeUlkJywKICAgICAgICAgICAgJ1N0cmluZy5mcm9tQ2hhckNvZGUnLAogICAgICAgICAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknLAogICAgICAgICAgICAnY2hhckF0JywKICAgICAgICAgICAgJ0RPTUNvbnRlbnRMb2FkZWQnLAogICAgICAgICAgICAnQWRCbG9jaycsCiAgICAgICAgICAgICdhZGRFdmVudExpc3RlbmVyJywKICAgICAgICAgICAgJ2RvU2Nyb2xsJywKICAgICAgICAgICAgJ2Zyb21DaGFyQ29kZScsCiAgICAgICAgICAgICc8PDJ8cj4+NCcsCiAgICAgICAgICAgICdzZXNzaW9uU3RvcmFnZScsCiAgICAgICAgICAgICdjbGllbnRXaWR0aCcsCiAgICAgICAgICAgICdsb2NhbFN0b3JhZ2UnLAogICAgICAgICAgICAnTWF0aCcsCiAgICAgICAgICAgICdyYW5kb20nCiAgICAgICAgXSwKICAgIF07CiAgICBjb25zdCBjaGVjayA9IGZ1bmN0aW9uKHMpIHsKICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBzaWduYXR1cmVzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICBjb25zdCB0b2tlbnMgPSBzaWduYXR1cmVzW2ldOwogICAgICAgICAgICBsZXQgbWF0Y2ggPSAwOwogICAgICAgICAgICBmb3IgKCBsZXQgaiA9IDA7IGogPCB0b2tlbnMubGVuZ3RoOyBqKysgKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRva2Vuc1tqXTsKICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRva2VuIGluc3RhbmNlb2YgUmVnRXhwCiAgICAgICAgICAgICAgICAgICAgPyBzLnNlYXJjaCh0b2tlbikKICAgICAgICAgICAgICAgICAgICA6IHMuaW5kZXhPZih0b2tlbik7CiAgICAgICAgICAgICAgICBpZiAoIHBvcyAhPT0gLTEgKSB7IG1hdGNoICs9IDE7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIChtYXRjaCAvIHRva2Vucy5sZW5ndGgpID49IDAuOCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfTsKICAgIHdpbmRvdy5ldmFsID0gbmV3IFByb3h5KHdpbmRvdy5ldmFsLCB7ICAgICAgICAgICAgICAvLyBqc2hpbnQgaWdub3JlOiBsaW5lCiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICBjb25zdCBhID0gYXJnc1swXTsKICAgICAgICAgICAgaWYgKCB0eXBlb2YgYSAhPT0gJ3N0cmluZycgfHwgIWNoZWNrKGEpICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseSh0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIGRvY3VtZW50LmJvZHkgKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCd2aXNpYmlsaXR5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhYmFzYm1zZ3gnKTsKICAgICAgICAgICAgaWYgKCBlbCApIHsKICAgICAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB3aW5kb3cuc2V0VGltZW91dCA9IG5ldyBQcm94eSh3aW5kb3cuc2V0VGltZW91dCwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgY29uc3QgYSA9IGFyZ3NbMF07CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIHR5cGVvZiBhICE9PSAnc3RyaW5nJyB8fAogICAgICAgICAgICAgICAgL1wuYmFiX2VsZW1lbnRpZC4kLy50ZXN0KGEpID09PSBmYWxzZQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQuYXBwbHkodGhpc0FyZywgYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKfSkoKTsK"},{"name":"nobab2.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAyMS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0OwogICAgaWYgKCBzY3JpcHQgPT09IG51bGwgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc3JjID0gc2NyaXB0LnNyYzsKICAgIGlmICggdHlwZW9mIHNyYyAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgLy8gVGhlIHNjcmlwbGV0IGlzIG1lYW50IHRvIGFjdCBPTkxZIHdoZW4gaXQncyBiZWluZyB1c2VkIGFzIGEgcmVkaXJlY3Rpb24KICAgIC8vIGZvciBzcGVjaWZpYyBkb21haW5zLgogICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKAogICAgICAgICdeaHR0cHM/Oi8vW1xcdy1dK1xcLignICsKICAgICAgICBbCiAgICAgICAgICAgICdhZGNsaXh4XFwubmV0JywKICAgICAgICAgICAgJ2FkbmV0YXNpYVxcLmNvbScsCiAgICAgICAgICAgICdhZHRyYWNrZXJzXFwubmV0JywKICAgICAgICAgICAgJ2Jhbm5lcnRyYWNrXFwubmV0JywKICAgICAgICBdLmpvaW4oJ3wnKSArCiAgICAgICAgJykvLicKICAgICk7CiAgICBpZiAoIHJlLnRlc3Qoc3JjKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgd2luZG93Lm5IN2VYek9zRyA9IDg1ODsKfSkoKTsK"},{"name":"noeval.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBsb2cgPSBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpOwogICAgd2luZG93LmV2YWwgPSBuZXcgUHJveHkod2luZG93LmV2YWwsIHsgICAgICAgICAgLy8ganNoaW50IGlnbm9yZTogbGluZQogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgbG9nKGBEb2N1bWVudCB0cmllZCB0byBldmFsLi4uICR7YXJnc1swXX1cbmApOwogICAgICAgIH0KICAgIH0pOwp9KSgpOwo="},{"name":"noeval-silent.js","aliases":["silent-noeval.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB3aW5kb3cuZXZhbCA9IG5ldyBQcm94eSh3aW5kb3cuZXZhbCwgeyAgICAgICAgICAvLyBqc2hpbnQgaWdub3JlOiBsaW5lCiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKCkgewogICAgICAgIH0KICAgIH0pOwp9KSgpOwo="},{"name":"nofab.js","aliases":["fuckadblock.js-3.2.0"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBjb25zdCBGYWIgPSBmdW5jdGlvbigpIHt9OwogICAgRmFiLnByb3RvdHlwZS5jaGVjayA9IG5vb3BmbjsKICAgIEZhYi5wcm90b3R5cGUuY2xlYXJFdmVudCA9IG5vb3BmbjsKICAgIEZhYi5wcm90b3R5cGUuZW1pdEV2ZW50ID0gbm9vcGZuOwogICAgRmFiLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICBpZiAoICFhICkgeyBiKCk7IH0KICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICBGYWIucHJvdG90eXBlLm9uRGV0ZWN0ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICBGYWIucHJvdG90eXBlLm9uTm90RGV0ZWN0ZWQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgYSgpOwogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKICAgIEZhYi5wcm90b3R5cGUuc2V0T3B0aW9uID0gbm9vcGZuOwogICAgRmFiLnByb3RvdHlwZS5vcHRpb25zID0gewogICAgICAgIHNldDogbm9vcGZuLAogICAgICAgIGdldDogbm9vcGZuLAogICAgfTsKICAgIGNvbnN0IGZhYiA9IG5ldyBGYWIoKTsKICAgIGNvbnN0IGdldFNldEZhYiA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gRmFiOyB9LAogICAgICAgIHNldDogZnVuY3Rpb24oKSB7fQogICAgfTsKICAgIGNvbnN0IGdldHNldGZhYiA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFiOyB9LAogICAgICAgIHNldDogZnVuY3Rpb24oKSB7fQogICAgfTsKICAgIGlmICggd2luZG93Lmhhc093blByb3BlcnR5KCdGdWNrQWRCbG9jaycpICkgeyB3aW5kb3cuRnVja0FkQmxvY2sgPSBGYWI7IH0KICAgIGVsc2UgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnRnVja0FkQmxvY2snLCBnZXRTZXRGYWIpOyB9CiAgICBpZiAoIHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgnQmxvY2tBZEJsb2NrJykgKSB7IHdpbmRvdy5CbG9ja0FkQmxvY2sgPSBGYWI7IH0KICAgIGVsc2UgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnQmxvY2tBZEJsb2NrJywgZ2V0U2V0RmFiKTsgfQogICAgaWYgKCB3aW5kb3cuaGFzT3duUHJvcGVydHkoJ1NuaWZmQWRCbG9jaycpICkgeyB3aW5kb3cuU25pZmZBZEJsb2NrID0gRmFiOyB9CiAgICBlbHNlIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ1NuaWZmQWRCbG9jaycsIGdldFNldEZhYik7IH0KICAgIGlmICggd2luZG93Lmhhc093blByb3BlcnR5KCdmdWNrQWRCbG9jaycpICkgeyB3aW5kb3cuZnVja0FkQmxvY2sgPSBmYWI7IH0KICAgIGVsc2UgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnZnVja0FkQmxvY2snLCBnZXRzZXRmYWIpOyB9CiAgICBpZiAoIHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgnYmxvY2tBZEJsb2NrJykgKSB7IHdpbmRvdy5ibG9ja0FkQmxvY2sgPSBmYWI7IH0KICAgIGVsc2UgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnYmxvY2tBZEJsb2NrJywgZ2V0c2V0ZmFiKTsgfQogICAgaWYgKCB3aW5kb3cuaGFzT3duUHJvcGVydHkoJ3NuaWZmQWRCbG9jaycpICkgeyB3aW5kb3cuc25pZmZBZEJsb2NrID0gZmFiOyB9CiAgICBlbHNlIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ3NuaWZmQWRCbG9jaycsIGdldHNldGZhYik7IH0KfSkoKTsK"},{"name":"noop-0.1s.mp3","aliases":["noopmp3-0.1s","abp-resource:blank-mp3"],"kind":{"mime":"audio/mp3"},"content":"SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU2LjQwLjEwMQAAAAAAAAAAAAAA//tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAGAAADAABgYGBgYGBgYGBgYGBgYGBggICAgICAgICAgICAgICAgICgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4P////////////////////8AAAAATGF2YzU2LjYwAAAAAAAAAAAAAAAAJAAAAAAAAAAAAwDNZKlY//sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"},{"name":"noop-0.5s.mp3","aliases":[],"kind":{"mime":"audio/mp3"},"content":"SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAWAAAJAAAgICAgKioqKio1NTU1QEBAQEBKSkpKVVVVVVVgYGBgampqamp1dXV1gICAgICKioqKlZWVlZWgoKCgoKqqqqq1tbW1tcDAwMDKysrKytXV1dXg4ODg4Orq6ur19fX19f////8AAAAATGF2YzU4LjU0AAAAAAAAAAAAAAAAJAMAAAAAAAAACQDI0dkC//sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZLQP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZNIP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"},{"name":"noop-1s.mp4","aliases":["noopmp4-1s"],"kind":{"mime":"video/mp4"},"content":"AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"},{"name":"noop.css","aliases":[],"kind":{"mime":"text/css"},"content":"LyogKi8K"},{"name":"noop.html","aliases":["noopframe"],"kind":{"mime":"text/html"},"content":"PCFET0NUWVBFIGh0bWw+CjxodG1sPgogICAgPGhlYWQ+PHRpdGxlPjwvdGl0bGU+PC9oZWFkPgogICAgPGJvZHk+PC9ib2R5Pgo8L2h0bWw+Cg=="},{"name":"noop.js","aliases":["noopjs","abp-resource:blank-js"],"kind":{"mime":"application/javascript"},"content":"KGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwp9KSgpOwo="},{"name":"noop.txt","aliases":["nooptext"],"kind":{"mime":"text/plain"},"content":"Cg=="},{"name":"noop-vmap1.0.xml","aliases":["noopvmap-1.0"],"kind":{"mime":"text/xml"},"content":"PHZtYXA6Vk1BUCB4bWxuczp2bWFwPSJodHRwOi8vd3d3LmlhYi5uZXQvdmlkZW9zdWl0ZS92bWFwIiB2ZXJzaW9uPSIxLjAiPjwvdm1hcDpWTUFQPgo="},{"name":"outbrain-widget.js","aliases":["widgets.outbrain.com/outbrain.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBjb25zdCBvYnIgPSB7fTsKICAgIGNvbnN0IG1ldGhvZHMgPSBbCiAgICAgICAgJ2NhbGxDbGljaycsCiAgICAgICAgJ2NhbGxMb2FkTW9yZScsCiAgICAgICAgJ2NhbGxSZWNzJywKICAgICAgICAnY2FsbFVzZXJaYXBwaW5nJywKICAgICAgICAnY2FsbFdoYXRJcycsCiAgICAgICAgJ2NhbmNlbFJlY29tbWVuZGF0aW9uJywKICAgICAgICAnY2FuY2VsUmVjcycsCiAgICAgICAgJ2Nsb3NlQ2FyZCcsCiAgICAgICAgJ2Nsb3NlTW9kYWwnLAogICAgICAgICdjbG9zZVRieCcsCiAgICAgICAgJ2Vycm9ySW5qZWN0aW9uSGFuZGxlcicsCiAgICAgICAgJ2dldENvdW50T2ZSZWNzJywKICAgICAgICAnZ2V0U3RhdCcsCiAgICAgICAgJ2ltYWdlRXJyb3InLAogICAgICAgICdtYW51YWxWaWRlb0NsaWNrZWQnLAogICAgICAgICdvbk9kYlJldHVybicsCiAgICAgICAgJ29uVmlkZW9DbGljaycsCiAgICAgICAgJ3BhZ2VyTG9hZCcsCiAgICAgICAgJ3JlY0NsaWNrZWQnLAogICAgICAgICdyZWZyZXNoU3BlY2lmaWNXaWRnZXQnLAogICAgICAgICdyZW5kZXJTcGFXaWRnZXRzJywKICAgICAgICAncmVmcmVzaFdpZGdldCcsCiAgICAgICAgJ3JlbG9hZFdpZGdldCcsCiAgICAgICAgJ3Jlc2VhcmNoV2lkZ2V0JywKICAgICAgICAncmV0dXJuZWRFcnJvcicsCiAgICAgICAgJ3JldHVybmVkSHRtbERhdGEnLAogICAgICAgICdyZXR1cm5lZElyZERhdGEnLAogICAgICAgICdyZXR1cm5lZEpzb25EYXRhJywKICAgICAgICAnc2Nyb2xsTG9hZCcsCiAgICAgICAgJ3Nob3dEZXNjcmlwdGlvbicsCiAgICAgICAgJ3Nob3dSZWNJbklmcmFtZScsCiAgICAgICAgJ3VzZXJaYXBwaW5nTWVzc2FnZScsCiAgICAgICAgJ3phcHBpbmdGb3JtQWN0aW9uJwogICAgXTsKICAgIG9ici5leHRlcm4gPSB7CiAgICAgICAgdmlkZW86IHsKICAgICAgICAgICAgZ2V0VmlkZW9SZWNzOiBub29wZm4sCiAgICAgICAgICAgIHZpZGVvQ2xpY2tlZDogbm9vcGZuCiAgICAgICAgfQogICAgfTsKICAgIG1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAgICAgb2JyLmV4dGVyblthXSA9IG5vb3BmbjsKICAgIH0pOwogICAgd2luZG93Lk9CUiA9IHdpbmRvdy5PQlIgfHwgb2JyOwp9KSgpOwo="},{"name":"popads.js","aliases":["popads.net.js","prevent-popads-net.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBtYWdpYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7CiAgICBjb25zdCBvZSA9IHdpbmRvdy5vbmVycm9yOwogICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIHNyYywgbGluZSwgY29sLCBlcnJvcikgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluZGV4T2YobWFnaWMpICE9PSAtMSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZShtc2csIHNyYywgbGluZSwgY29sLCBlcnJvcik7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICBjb25zdCB0aHJvd01hZ2ljID0gZnVuY3Rpb24oKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihtYWdpYyk7IH07CiAgICBkZWxldGUgd2luZG93LlBvcEFkczsKICAgIGRlbGV0ZSB3aW5kb3cucG9wbnM7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3aW5kb3csIHsKICAgICAgICBQb3BBZHM6IHsgc2V0OiB0aHJvd01hZ2ljIH0sCiAgICAgICAgcG9wbnM6IHsgc2V0OiB0aHJvd01hZ2ljIH0KICAgIH0pOwp9KSgpOwo="},{"name":"popads-dummy.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBkZWxldGUgd2luZG93LlBvcEFkczsKICAgIGRlbGV0ZSB3aW5kb3cucG9wbnM7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3aW5kb3csIHsKICAgICAgICBQb3BBZHM6IHsgdmFsdWU6IHt9IH0sCiAgICAgICAgcG9wbnM6IHsgdmFsdWU6IHt9IH0KICAgIH0pOwp9KSgpOwo="},{"name":"prebid-ads.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAyMi1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB3aW5kb3cuY2FuUnVuQWRzID0gdHJ1ZTsKICAgIHdpbmRvdy5pc0FkQmxvY2tBY3RpdmUgPSBmYWxzZTsKfSkoKTsK"},{"name":"scorecardresearch_beacon.js","aliases":["scorecardresearch.com/beacon.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB3aW5kb3cuQ09NU0NPUkUgPSB7CiAgICAgICAgcHVyZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB3aW5kb3cuX2NvbXNjb3JlID0gW107CiAgICAgICAgfSwKICAgICAgICBiZWFjb246IGZ1bmN0aW9uKCkgewogICAgICAgIH0KICAgIH07Cn0pKCk7Cg=="},{"name":"async-sugarcoat-04394153a7ce417b88e3fe1790a4e6a269bfebe5.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"e2NvbnN0IGE9e307KGU9PnsidXNlIHN0cmljdCI7Y29uc3QgdD1TeW1ib2woImRlZmVycmVkSGFuZGxlIiksbj1TeW1ib2woIm9ubG9hZHN0YXJ0IiksaT1TeW1ib2woIm9ucHJvZ3Jlc3MiKSxyPVN5bWJvbCgib25hYm9ydCIpLGE9U3ltYm9sKCJvbmVycm9yIiksbz1TeW1ib2woIm9ubG9hZCIpLHM9U3ltYm9sKCJvbnRpbWVvdXQiKSxnPVN5bWJvbCgib25sb2FkZW5kIiksbD1TeW1ib2woIm9ucmVhZHlzdGF0ZWNoYW5nZSIpLGQ9U3ltYm9sKCJyZWFkeVN0YXRlIiksdT1TeW1ib2woInRpbWVvdXQiKSxjPVN5bWJvbCgid2l0aENyZWRlbnRpYWxzIikscD1TeW1ib2woInVwbG9hZCIpLGg9U3ltYm9sKCJyZXNwb25zZVR5cGUiKSx2PShlLG4pPT57dmFyIHQ9bi5kZXNjcmlwdGlvbi5zdWJzdHJpbmcoMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLGUuYWRkRXZlbnRMaXN0ZW5lcih0LGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpc1tuXTt0JiZ0LmNhbGwodGhpcyxlKX0pfSxrPShlLHQpPT57ZVtkXT10LGUuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoInJlYWR5c3RhdGVjaGFuZ2UiKSl9O2xldCBNPSEwO2NsYXNzIG0gZXh0ZW5kcyBFdmVudFRhcmdldHtjb25zdHJ1Y3Rvcigpe2lmKHN1cGVyKCksISh0aGlzIGluc3RhbmNlb2YgZnx8dGhpcyBpbnN0YW5jZW9mIHkpKXRocm93IG5ldyBUeXBlRXJyb3IoIklsbGVnYWwgY29uc3RydWN0b3IiKTt2KHRoaXMsbiksdih0aGlzLGkpLHYodGhpcyxyKSx2KHRoaXMsYSksdih0aGlzLG8pLHYodGhpcyxzKSx2KHRoaXMsZyl9Z2V0IG9ubG9hZHN0YXJ0KCl7cmV0dXJuIHRoaXNbbl19c2V0IG9ubG9hZHN0YXJ0KGUpe3RoaXNbbl09ZX1nZXQgb25wcm9ncmVzcygpe3JldHVybiB0aGlzW2ldfXNldCBvbnByb2dyZXNzKGUpe3RoaXNbaV09ZX1nZXQgb25hYm9ydCgpe3JldHVybiB0aGlzW3JdfXNldCBvbmFib3J0KGUpe3RoaXNbcl09ZX1nZXQgb25lcnJvcigpe3JldHVybiB0aGlzW2FdfXNldCBvbmVycm9yKGUpe3RoaXNbYV09ZX1nZXQgb250aW1lb3V0KCl7cmV0dXJuIHRoaXNbc119c2V0IG9udGltZW91dChlKXt0aGlzW3NdPWV9Z2V0IG9ubG9hZGVuZCgpe3JldHVybiB0aGlzW2ddfXNldCBvbmxvYWRlbmQoZSl7dGhpc1tnXT1lfX1lLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm0sd3JpdGFibGU6ITB9O2NsYXNzIHkgZXh0ZW5kcyBte2NvbnN0cnVjdG9yKCl7aWYoTSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbGxlZ2FsIGNvbnN0cnVjdG9yIik7c3VwZXIoKX19ZS5YTUxIdHRwUmVxdWVzdFVwbG9hZD17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6eSx3cml0YWJsZTohMH07Y2xhc3MgZiBleHRlbmRzIG17Y29uc3RydWN0b3IoKXtzdXBlcigpLE09ITE7dmFyIGU9bmV3IHk7TT0hMCxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksdih0aGlzLGwpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHZhbHVlOjAsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx1LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTowLHdyaXRhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsYyx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6ITEsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxwLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTplLHdyaXRhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6IiIsd3JpdGFibGU6ITB9KX1nZXQgb25yZWFkeXN0YXRlY2hhbmdlKCl7cmV0dXJuIHRoaXNbbF19c2V0IG9ucmVhZHlzdGF0ZWNoYW5nZShlKXt0aGlzW2xdPWV9Z2V0IHJlYWR5U3RhdGUoKXtyZXR1cm4gdGhpc1tkXX1vcGVuKGUsdCl7c3dpdGNoKHRoaXNbZF0pe2Nhc2UgMDpjYXNlIDQ6ayh0aGlzLDEpfX1zZXRSZXF1ZXN0SGVhZGVyKGUsdCl7fXNldFRydXN0VG9rZW4oZSl7fWdldCB0aW1lb3V0KCl7cmV0dXJuIHRoaXNbdV19c2V0IHRpbWVvdXQoZSl7dGhpc1t1XT1lfWdldCB3aXRoQ3JlZGVudGlhbHMoKXtyZXR1cm4gdGhpc1tjXX1zZXQgd2l0aENyZWRlbnRpYWxzKGUpe3N3aXRjaCh0aGlzW2RdKXtjYXNlIDA6Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiRmFpbGVkIHRvIHNldCB0aGUgJ3dpdGhDcmVkZW50aWFscycgcHJvcGVydHkgb24gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIHZhbHVlIG1heSBvbmx5IGJlIHNldCBpZiB0aGUgb2JqZWN0J3Mgc3RhdGUgaXMgVU5TRU5UIG9yIE9QRU5FRC4iKX10aGlzW2NdPSEhZX1nZXQgdXBsb2FkKCl7cmV0dXJuIHRoaXNbcF19c2VuZCgpe2lmKDEhPT10aGlzW2RdfHxudWxsIT09dGhpc1t0XSl0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCJGYWlsZWQgdG8gZXhlY3V0ZSAnc2VuZCcgb24gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIG9iamVjdCdzIHN0YXRlIG11c3QgYmUgT1BFTkVELiIpO3RoaXNbdF09c2V0VGltZW91dCgoKT0+e3RoaXNbdF09bnVsbCxrKHRoaXMsNCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBQcm9ncmVzc0V2ZW50KCJlcnJvciIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFByb2dyZXNzRXZlbnQoImxvYWRlbmQiKSl9LDApfWFib3J0KCl7MT09PXRoaXNbZF0mJm51bGwhPT10aGlzW3RdJiYoY2xlYXJUaW1lb3V0KHRoaXNbdF0pLHRoaXNbdF09bnVsbCxrKHRoaXMsMCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBQcm9ncmVzc0V2ZW50KCJhYm9ydCIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFByb2dyZXNzRXZlbnQoImxvYWRlbmQiKSkpfWdldCByZXNwb25zZVVSTCgpe3JldHVybiIifWdldCBzdGF0dXMoKXtyZXR1cm4gMH1nZXQgc3RhdHVzVGV4dCgpe3JldHVybiIifWdldFJlc3BvbnNlSGVhZGVyKGUpe3JldHVybiBudWxsfW92ZXJyaWRlTWltZVR5cGUoZSl7fWdldCByZXNwb25zZVR5cGUoKXtyZXR1cm4gdGhpc1toXX1zZXQgcmVzcG9uc2VUeXBlKGUpe2lmKDQ9PT10aGlzW2RdKXRocm93IG5ldyBET01FeGNlcHRpb24oIkZhaWxlZCB0byBzZXQgdGhlICdyZXNwb25zZVR5cGUnIHByb3BlcnR5IG9uICdYTUxIdHRwUmVxdWVzdCc6IFRoZSByZXNwb25zZSB0eXBlIGNhbm5vdCBiZSBzZXQgaWYgdGhlIG9iamVjdCdzIHN0YXRlIGlzIExPQURJTkcgb3IgRE9ORS4iKTtzd2l0Y2goZSl7Y2FzZSIiOmNhc2UiYXJyYXlidWZmZXIiOmNhc2UiYmxvYiI6Y2FzZSJkb2N1bWVudCI6Y2FzZSJqc29uIjpjYXNlInRleHQiOnRoaXNbaF09ZX19Z2V0IHJlc3BvbnNlKCl7dmFyIGU9dGhpc1toXTtyZXR1cm4iIj09PWV8fCJ0ZXh0Ij09PWU/IiI6bnVsbH1nZXQgcmVzcG9uc2VUZXh0KCl7dmFyIGU9dGhpc1toXTtpZigiIj09PWV8fCJ0ZXh0Ij09PWUpcmV0dXJuIiI7dGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiRmFpbGVkIHRvIHJlYWQgdGhlICdyZXNwb25zZVRleHQnIHByb3BlcnR5IGZyb20gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIHZhbHVlIGlzIG9ubHkgYWNjZXNzaWJsZSBpZiB0aGUgb2JqZWN0J3MgJ3Jlc3BvbnNlVHlwZScgaXMgJycgb3IgJ3RleHQnICh3YXMgJ2FycmF5YnVmZmVyJykuIil9Z2V0IHJlc3BvbnNlWE1MKCl7cmV0dXJuIG51bGx9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJVTlNFTlQiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTowfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIk9QRU5FRCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwiSEVBREVSU19SRUNFSVZFRCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwiTE9BRElORyIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjN9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwiRE9ORSIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjR9KSxlLlhNTEh0dHBSZXF1ZXN0PXtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpmLHdyaXRhYmxlOiEwfX0pKGEpO2NvbnN0IGI9e307KGU9PnsidXNlIHN0cmljdCI7bGV0IHQ9ITE7Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe2lmKHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSWxsZWdhbCBjb25zdHJ1Y3RvciIpfWdldCBsZW5ndGgoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcykubGVuZ3RofWtleShlKXt2YXIgdD1PYmplY3Qua2V5cyh0aGlzKTtyZXR1cm4gZTwwfHxlPj10Lmxlbmd0aD9udWxsOnRbZV19Z2V0SXRlbShlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsZSk/dGhpc1tlXTpudWxsfXNldEl0ZW0oZSx0KXt0aGlzW2VdPVN0cmluZyh0KX1yZW1vdmVJdGVtKGUpe2RlbGV0ZSB0aGlzW2VdfWNsZWFyKCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXModGhpcykpZGVsZXRlIHRoaXNbZV19fWUuU3RvcmFnZT17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH07Y29uc3QgaT1uZXcgbjtlLmxvY2FsU3RvcmFnZT17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0KCl7cmV0dXJuIGl9fTtjb25zdCByPW5ldyBuO2Uuc2Vzc2lvblN0b3JhZ2U9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiByfX0sdD0hMH0pKGIpLE1hcmtldGluZy5iaW5kRGVwZW5kZW5jeUltbWVkaWF0ZShmdW5jdGlvbigpe3dpbmRvdy5NYXJrZXRpbmcsTWFya2V0aW5nLmVuc2lnaHRlbk9wdGlvbnM7dHJ5e01hcmtldGluZy5VRE8ucGVyZlRpbWluZ1N0YXJ0KCJydWxlSWQtIit0aGlzLmlkKyItZGVwbG95bWVudElkLSIrdGhpcy5kZXBsb3ltZW50SWQpLCJ0cnVlIj09ZGVsbF9tYXJrZXRpbmdfdXRpbC5nZXRQYXJhbWV0ZXJCeU5hbWUoIm1kZWJ1ZyIsbG9jYXRpb24uc2VhcmNoKSYmKGRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0RHBpZD1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxNYXJrZXRpbmcuZ0V2ZW50KCJEQy05NjMyNjQ1L3NhbGVzMC9jc2JfdGVzdCt0cmFuc2FjdGlvbnMiLCJwdXJjaGFzZSIpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImlmcmFtZSIpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zcmMuaW5jbHVkZXMoInR5cGU9c2FsZXMiKSYmZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KE1hcmtldGluZyksIioiKX0pKSxNYXJrZXRpbmcuVURPLnBlcmZUaW1pbmdFbmQoInJ1bGVJZC0iK3RoaXMuaWQrIi1kZXBsb3ltZW50SWQtIit0aGlzLmRlcGxveW1lbnRJZCl9Y2F0Y2goZSl7ZGVsbF9tYXJrZXRpbmdfdXRpbC5kZWJ1ZyhlKX19LDM2MDAzMTEsWzM2MTc2ODJdLDYzNjE0MixbNjE5NDA0XSksTWFya2V0aW5nLmJpbmREZXBlbmRlbmN5RE9NUGFyc2VkKGZ1bmN0aW9uKCl7dmFyIG4sZSxpLHQscjt3aW5kb3cuTWFya2V0aW5nLE1hcmtldGluZy5lbnNpZ2h0ZW5PcHRpb25zO3RyeXtNYXJrZXRpbmcuVURPLnBlcmZUaW1pbmdTdGFydCgicnVsZUlkLSIrdGhpcy5pZCsiLWRlcGxveW1lbnRJZC0iK3RoaXMuZGVwbG95bWVudElkKSxuPXdpbmRvdyxlPWRvY3VtZW50LG5baT0idWV0cSJdPW5baV18fFtdLHQ9ZnVuY3Rpb24oKXt2YXIgZT17fS5jb25zdHJ1Y3Rvci5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCJYTUxIdHRwUmVxdWVzdCIpLHQ9e30uY29uc3RydWN0b3IuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywibG9jYWxTdG9yYWdlIik7dHJ5e3JldHVybiBlJiZ7fS5jb25zdHJ1Y3Rvci5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csIlhNTEh0dHBSZXF1ZXN0IixhLlhNTEh0dHBSZXF1ZXN0KSx0JiZ7fS5jb25zdHJ1Y3Rvci5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csImxvY2FsU3RvcmFnZSIsYi5sb2NhbFN0b3JhZ2UpLGZ1bmN0aW9uKCl7dmFyIGU9e3RpOiI1MTAyMjYxIn07ZS5xPW5baV0sbltpXT1uZXcgVUVUKGUpLG5baV0ucHVzaCgicGFnZUxvYWQiKX0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7ZSYme30uY29uc3RydWN0b3IuZGVmaW5lUHJvcGVydHkod2luZG93LCJYTUxIdHRwUmVxdWVzdCIsZSksdCYme30uY29uc3RydWN0b3IuZGVmaW5lUHJvcGVydHkod2luZG93LCJsb2NhbFN0b3JhZ2UiLHQpfX0sKHI9ZS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkuc3JjPSIvL2JhdC5iaW5nLmNvbS9iYXQuanMiLHIuYXN5bmM9MSxyLm9ubG9hZD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZHlTdGF0ZTtlJiYibG9hZGVkIiE9PWUmJiJjb21wbGV0ZSIhPT1lfHwodCgpLHIub25sb2FkPXIub25yZWFkeXN0YXRlY2hhbmdlPW51bGwpfSwoZT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixlKSxNYXJrZXRpbmcuVURPLnBlcmZUaW1pbmdFbmQoInJ1bGVJZC0iK3RoaXMuaWQrIi1kZXBsb3ltZW50SWQtIit0aGlzLmRlcGxveW1lbnRJZCl9Y2F0Y2goZSl7ZGVsbF9tYXJrZXRpbmdfdXRpbC5kZWJ1ZyhlKX19LDM2MDUyNDIsWzM2MDYzMjldLDY5NTg3NCxbNjEwMzIzXSksTWFya2V0aW5nLmJpbmREZXBlbmRlbmN5RE9NUGFyc2VkKGZ1bmN0aW9uKCl7dmFyIGU7d2luZG93Lk1hcmtldGluZyxNYXJrZXRpbmcuZW5zaWdodGVuT3B0aW9uczt0cnl7TWFya2V0aW5nLlVETy5wZXJmVGltaW5nU3RhcnQoInJ1bGVJZC0iK3RoaXMuaWQrIi1kZXBsb3ltZW50SWQtIit0aGlzLmRlcGxveW1lbnRJZCksTWFya2V0aW5nLlVETy5wcmlvcmNvbnNlbnQmJigidXMiPT09KGU9TWFya2V0aW5nLnNjRGF0YU9iai5jb3VudHJ5KSYmTWFya2V0aW5nLmluc2VydFNjcmlwdCgiLy92dC5teXZpc3VhbGlxLm5ldC8yL1R4VVFOSFNLdkdXSWlNajFPaDN0ZnclM0QlM0QvdnQtMjg4LmpzIiksImNhIj09PWUmJk1hcmtldGluZy5pbnNlcnRTY3JpcHQoIi8vdnQubXl2aXN1YWxpcS5uZXQvMi9UeFVRTkhTS3ZHV0lpTWoxT2gzdGZ3JTNEJTNEL3Z0LTI4OS5qcyIpLCJiciI9PT1lJiZNYXJrZXRpbmcuaW5zZXJ0U2NyaXB0KCIvL3Z0Lm15dmlzdWFsaXEubmV0LzIvd1FRdFRpaXpsNFNpeHJoSVR5VHFiZyUzRCUzRC92dC0yODYuanMiKSwidWsiPT09ZSYmTWFya2V0aW5nLmluc2VydFNjcmlwdCgiLy92dC5teXZpc3VhbGlxLm5ldC8yL2FtaTdlV0Q3TWE5cWt1OUhERzIzMnclM0QlM0QvdnQtMjEzLmpzIiksImpwIj09PWUmJk1hcmtldGluZy5pbnNlcnRTY3JpcHQoIi8vdnQubXl2aXN1YWxpcS5uZXQvMi82JTJCeFQlMkJPM3oxemgxNHl1bEpCRE42ZyUzRCUzRC92dC0yODcuanMiKSwiYXUiPT09ZSYmTWFya2V0aW5nLmluc2VydFNjcmlwdCgiLy92dC5teXZpc3VhbGlxLm5ldC8yL2lwZWV5SGh0NG5wUUVpemlDV2FZenclM0QlM0QvdnQtMjk5LmpzIiksIm56Ij09PWUmJk1hcmtldGluZy5pbnNlcnRTY3JpcHQoIi8vdnQubXl2aXN1YWxpcS5uZXQvMi9pcGVleUhodDRucFFFaXppQ1dhWXp3JTNEJTNEL3Z0LTMwMS5qcyIpLCJpbiI9PT1lJiZNYXJrZXRpbmcuaW5zZXJ0U2NyaXB0KCIvL3Z0Lm15dmlzdWFsaXEubmV0LzIvdUJGJTJCbmRKVDduMHI5V3lzTkkxVnd3JTNEJTNEL3Z0LTI5OC5qcyIpLCJmciI9PT1lJiZNYXJrZXRpbmcuaW5zZXJ0U2NyaXB0KCIvL3Z0Lm15dmlzdWFsaXEubmV0LzIvR1hPZE4lMkJXdWdZM04zbjRhNUxBa05RJTNEJTNEL3Z0LTMwMC5qcyIpLCJkZSI9PT1lJiZNYXJrZXRpbmcuaW5zZXJ0U2NyaXB0KCIvL3Z0Lm15dmlzdWFsaXEubmV0LzIvdjlCSk9HY2dsNHdmam43cFhCaHVuQSUzRCUzRC92dC0zMDIuanMiKSksTWFya2V0aW5nLlVETy5wZXJmVGltaW5nRW5kKCJydWxlSWQtIit0aGlzLmlkKyItZGVwbG95bWVudElkLSIrdGhpcy5kZXBsb3ltZW50SWQpfWNhdGNoKGUpe2RlbGxfbWFya2V0aW5nX3V0aWwuZGVidWcoZSl9fSwzNTkzMzY1LFszNTA2OTI0LDM2MDYzMjldLDYyMTkxOSxbNjEwMzEwLDYxMDMyM10pLE1hcmtldGluZy5iaW5kRE9NUGFyc2VkKGZ1bmN0aW9uKCl7d2luZG93Lk1hcmtldGluZyxNYXJrZXRpbmcuZW5zaWdodGVuT3B0aW9uczt0cnl7TWFya2V0aW5nLlVETy5wZXJmVGltaW5nU3RhcnQoInJ1bGVJZC0iK3RoaXMuaWQrIi1kZXBsb3ltZW50SWQtIit0aGlzLmRlcGxveW1lbnRJZCksTWFya2V0aW5nLlVETy5wcmlvcmNvbnNlbnQmJk1hcmtldGluZy5pbWFnZVJlcXVlc3QoImh0dHBzOi8vcHguYWRzLmxpbmtlZGluLmNvbS9jb2xsZWN0Lz9waWQ9NzUxMyZmbXQ9Z2lmIiksTWFya2V0aW5nLlVETy5wZXJmVGltaW5nRW5kKCJydWxlSWQtIit0aGlzLmlkKyItZGVwbG95bWVudElkLSIrdGhpcy5kZXBsb3ltZW50SWQpfWNhdGNoKGUpe2RlbGxfbWFya2V0aW5nX3V0aWwuZGVidWcoZSl9fSwzNTkzMjg3LDYxOTA4OSksTWFya2V0aW5nLmJpbmREZXBlbmRlbmN5SW1tZWRpYXRlKGZ1bmN0aW9uKCl7dmFyIGkscixlO3dpbmRvdy5NYXJrZXRpbmcsTWFya2V0aW5nLmVuc2lnaHRlbk9wdGlvbnM7TWFya2V0aW5nLlVETy5mbF9sb2FkZWQ9ITEsTWFya2V0aW5nLlVETy5wcmlvcmNvbnNlbnQmJihNYXJrZXRpbmcubG9hZFNjcmlwdENhbGxiYWNrKCJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPURDLTk2MzI2NDUiLGZ1bmN0aW9uKCl7ZGVsbF9tYXJrZXRpbmdfdXRpbC5jdXN0b21fbWFya2V0aW5nX2V2ZW50KCJmbF9sb2FkZWQiKSxNYXJrZXRpbmcuVURPLmZsX2xvYWRlZD0hMH0pLHdpbmRvdy5kYXRhTGF5ZXI9d2luZG93LmRhdGFMYXllcnx8W10sd2luZG93Lmd0YWc9ZnVuY3Rpb24oKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpfSxndGFnKCJqcyIsbmV3IERhdGUpLGd0YWcoImNvbmZpZyIsIkRDLTk2MzI2NDUiKSxndGFnKCJjb25maWciLCJEQy05NjMyOTIxIiksZ3RhZygiY29uZmlnIiwiREMtOTYzMjY0OCIpLGk9ZnVuY3Rpb24oKXtyZXR1cm57YWxsb3dfY3VzdG9tX3NjcmlwdHM6ITAsdTE6TWFya2V0aW5nLlVETy5sYW5ndWFnZSx1MTA6TWFya2V0aW5nLlVETy5jc2VnLHUxMTpNYXJrZXRpbmcuVURPLmRlYWxzLHUxMjpNYXJrZXRpbmcuVURPLmRldmljZSx1MTM6TWFya2V0aW5nLlVETy5kaXNjb3VudCx1MTQ6TWFya2V0aW5nLlVETy5mYW1pbHksdTE1Ok1hcmtldGluZy5VRE8ub2dpZCx1MTY6TWFya2V0aW5nLlVETy5vcmRlcmNvZGUsdTE3Ok1hcmtldGluZy5VRE8ucGxhdGZvcm0sdTE4Ok1hcmtldGluZy5VRE8ucHJvZGNhdCx1MTk6TWFya2V0aW5nLlVETy5wcm9kdWN0LHUyOk1hcmtldGluZy5VRE8uc2VnbWVudCx1MjA6TWFya2V0aW5nLlVETy5wcm9tb2lkLHUyMTpNYXJrZXRpbmcuVURPLnR5cGUsdTIyOmRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0UGFyYW1ldGVyQnlOYW1lKCJkZ2MiLGxvY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSksdTIzOk1hcmtldGluZy5VRE8uZ2FjZCx1MjQ6ZGVsbF9tYXJrZXRpbmdfdXRpbC5nZXRQYXJhbWV0ZXJCeU5hbWUoImxpZCIsbG9jYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSx1MjU6TWFya2V0aW5nLlVETy52ZW4xLHUyNjpNYXJrZXRpbmcuVURPLnZlbjIsdTI4OmRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0UGFyYW1ldGVyQnlOYW1lKCJ0ZmNpZCIsbG9jYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSx1Mjk6TWFya2V0aW5nLlVETy5yZXZlbnVlLHUzOk1hcmtldGluZy5VRE8uY3VycmVuY3ksdTMwOk1hcmtldGluZy5VRE8udXNkcmV2LHUzNTpNYXJrZXRpbmcuVURPLmRwaWQsdTM2Ok1hcmtldGluZy5VRE8ubGFuZCx1Mzc6TWFya2V0aW5nLlVETy5zZXJpYWxwcm9kbGlzdCx1Mzg6TWFya2V0aW5nLlVETy5jamV2ZW50LHU0Ok1hcmtldGluZy5VRE8uY291bnRyeSx1NTpNYXJrZXRpbmcuVURPLmFjY291bnRpZCx1NjpNYXJrZXRpbmcuVURPLmNhdGVnb3J5LHU3Ok1hcmtldGluZy5VRE8uY2F0ZWdvcnlwYXRoLHU4Ok1hcmtldGluZy5VRE8uY2lkLHU5Ok1hcmtldGluZy5VRE8uY291cG9ufX0sTWFya2V0aW5nLlVETy5yZWFkRGF0YSgpLChyPWkoKSkudTMxPSIiLChlPWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0Q29va2llKCJBTUNWXzRERDgwODYxNTE1Q0FCOTkwQTQ5MEQ0NSU0MEFkb2JlT3JnIikpJiYoci51MzE9ZS5zcGxpdCgiTUNNSUR8IilbMV0uc3BsaXQoInwiKVswXSksTWFya2V0aW5nLmdFdmVudD1NYXJrZXRpbmcuZ0V2ZW50fHxmdW5jdGlvbih0LG4pe3ZhciBlO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmbF9sb2FkZWQiLGZ1bmN0aW9uKCl7dmFyIGU9cjsicHVyY2hhc2UiPT09biYmKGUudmFsdWU9TWFya2V0aW5nLlVETy51c2RyZXZ8fE1hcmtldGluZy5VRE8ucmV2ZW51ZSxlLnRyYW5zYWN0aW9uX2lkPWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0RHBpZCgpKSxlLnNlbmRfdG89dCxndGFnKCJldmVudCIsbixlKX0pLE1hcmtldGluZy5VRE8uZmxfbG9hZGVkJiYoZT1yPWkoKSwicHVyY2hhc2UiPT09biYmKGUudmFsdWU9TWFya2V0aW5nLlVETy51c2RyZXZ8fE1hcmtldGluZy5VRE8ucmV2ZW51ZSxlLnRyYW5zYWN0aW9uX2lkPWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0RHBpZCgpKSxlLnNlbmRfdG89dCxndGFnKCJldmVudCIsbixlKSl9KX0sMzYxNzY4MixbMzYwNjMyOV0sNjE5NDA0LFs2MTAzMjNdKSxNYXJrZXRpbmcuYmluZERlcGVuZGVuY3lJbW1lZGlhdGUoZnVuY3Rpb24oKXt3aW5kb3cuTWFya2V0aW5nLE1hcmtldGluZy5lbnNpZ2h0ZW5PcHRpb25zO01hcmtldGluZy5VRE8uZ19kb3dubG9hZD1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpe01hcmtldGluZy5VRE8uaHZlb3ZlcmxheT0hMSwiZG93bmxvYWQiPT09ZS5kZXRhaWwudHlwZSYmTWFya2V0aW5nLmdFdmVudCh0LG4pfSksTWFya2V0aW5nLlVETy5odmVvdmVybGF5JiZNYXJrZXRpbmcuZ0V2ZW50KHQsbil9LE1hcmtldGluZy5VRE8uZ19zaGFyZT1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJzaGFyZSI9PT1lLmRldGFpbC50eXBlJiZNYXJrZXRpbmcuZ0V2ZW50KHQsbil9KX0sTWFya2V0aW5nLlVETy5nX21wdj1mdW5jdGlvbihlLHQpezM9PXNlc3Npb25TdG9yYWdlLmVuc3BhZ2Vjb3VudEZMVCYmTWFya2V0aW5nLmdFdmVudChlLHQpfSxNYXJrZXRpbmcuVURPLmdfYmNfc3RhcnQ9ZnVuY3Rpb24obixpKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHZpZGVvanMmJnZpZGVvanMucGxheWVycylmb3IodmFyIGUgaW4gdmlkZW9qcy5wbGF5ZXJzKXZpZGVvanMucGxheWVyc1tlXS5yZWFkeShmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5lbF8uaGFzQXR0cmlidXRlKCJtdXRlZCIpfHxlLm9uKCJzdGFydCIsZnVuY3Rpb24oKXtlLnZpZGVvX3N0YXJ0fHwoZS52aWRlb181MF9wZXJjZW50PSExLGUudmlkZW9fODBfcGVyY2VudD0hMSxNYXJrZXRpbmcuZ0V2ZW50KG4saSkpfSl9KTtlbHNlIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uIGUodCl7ImJyaWdodGNvdmUiPT09dC5kZXRhaWwudHlwZSYmKE1hcmtldGluZy5VRE8uZ19iY19zdGFydChuLGkpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJodmUiLGUpKX0pfSxNYXJrZXRpbmcuVURPLmdfYmNfNTA9ZnVuY3Rpb24odCxuKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYnJpZ2h0Y292ZTUwIixmdW5jdGlvbihlKXtNYXJrZXRpbmcuZ0V2ZW50KHQsbil9KX0sTWFya2V0aW5nLlVETy5nX2JjXzgwPWZ1bmN0aW9uKHQsbil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJyaWdodGNvdmU4MCIsZnVuY3Rpb24oZSl7TWFya2V0aW5nLmdFdmVudCh0LG4pfSl9LE1hcmtldGluZy5VRE8uZ19iY19lbmQ9ZnVuY3Rpb24obixpKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHZpZGVvanMmJnZpZGVvanMucGxheWVycylmb3IodmFyIGUgaW4gdmlkZW9qcy5wbGF5ZXJzKXZpZGVvanMucGxheWVyc1tlXS5yZWFkeShmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5lbF8uaGFzQXR0cmlidXRlKCJtdXRlZCIpfHxlLm9uKCJlbmRlZCIsZnVuY3Rpb24oKXtNYXJrZXRpbmcuZ0V2ZW50KG4saSksZS52aWRlb19zdGFydD0hMX0pfSk7ZWxzZSB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaHZlIixmdW5jdGlvbiBlKHQpeyJicmlnaHRjb3ZlIj09PXQuZGV0YWlsLnR5cGUmJihNYXJrZXRpbmcuVURPLmdfYmNfZW5kKG4saSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImh2ZSIsZSkpfSl9LE1hcmtldGluZy5VRE8uZ19jb250YWN0dXM9ZnVuY3Rpb24odCxuKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaHZlIixmdW5jdGlvbihlKXsiY29udGFjdHVzIj09PWUuZGV0YWlsLnR5cGUmJk1hcmtldGluZy5nRXZlbnQodCxuKX0pfSxNYXJrZXRpbmcuVURPLmdfY2hhdD1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJjaGF0Ij09PWUuZGV0YWlsLnR5cGUmJk1hcmtldGluZy5nRXZlbnQodCxuKX0pfSxNYXJrZXRpbmcuVURPLmdfYWRkdG9jYXJ0PWZ1bmN0aW9uKGUsdCl7ImNvbnRlbnRzIiE9PWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0c2NNYXAoIndhY29udHJvbGxlciIpJiYiY2FydCIhPT1kZWxsX21hcmtldGluZ191dGlsLmdldHNjTWFwKCJ3b3JrZmxvd3N0ZXAiKXx8TWFya2V0aW5nLmdFdmVudChlLHQpfSxNYXJrZXRpbmcuVURPLmdfY2hlY2tvdXQ9ZnVuY3Rpb24oZSx0KXsiY29uZmlybWF0aW9uIj09PWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0c2NNYXAoIndhY29udHJvbGxlciIpJiZNYXJrZXRpbmcuZ0V2ZW50KGUsdCl9LE1hcmtldGluZy5VRE8uZ19wb2RjYXN0X2xpc3Rlbj1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJwb2RjYXN0X2xpc3RlbiI9PT1lLmRldGFpbC50eXBlJiZNYXJrZXRpbmcuZ0V2ZW50KHQsbil9KX0sTWFya2V0aW5nLlVETy5nX3BvZGNhc3Rfc3Vic2NyaWJlPWZ1bmN0aW9uKHQsbil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImh2ZSIsZnVuY3Rpb24oZSl7InBvZGNhc3Rfc3Vic2NyaWJlIj09PWUuZGV0YWlsLnR5cGUmJk1hcmtldGluZy5nRXZlbnQodCxuKX0pfSxNYXJrZXRpbmcuVURPLmdfcmZxX3N1Ym1pdD1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJyZnFfc3VibWl0Ij09PWUuZGV0YWlsLnR5cGUmJk1hcmtldGluZy5nRXZlbnQodCxuKX0pfSxNYXJrZXRpbmcuVURPLmdfaW9uX3N1Ym1pdD1mdW5jdGlvbihlLHQpey9saXZlYmFsbC4qY29tcGxldGVkL2dpLnRlc3QoZGVsbF9tYXJrZXRpbmdfdXRpbC5nZXRzY01hcCgicGFnZW5hbWUiKSkmJk1hcmtldGluZy5nRXZlbnQoZSx0KX0sTWFya2V0aW5nLlVETy5nX2dhdGVkX3N1Ym1pdD1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJnYXRlZF9zdWJtaXQiPT09ZS5kZXRhaWwudHlwZSYmTWFya2V0aW5nLmdFdmVudCh0LG4pfSl9fSwzNDc1MTkzLFszNjE3NjgyXSw2MjA4MTgsWzYxOTQwNF0pfQo="},{"name":"async-sugarcoat-8a459c41783885dc83d30f5b7da2359091f4e607.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"e2NvbnN0IGE9e307KHQ9PnsidXNlIHN0cmljdCI7Y29uc3QgZT1TeW1ib2woImRlZmVycmVkSGFuZGxlIiksbj1TeW1ib2woIm9ubG9hZHN0YXJ0Iikscj1TeW1ib2woIm9ucHJvZ3Jlc3MiKSxhPVN5bWJvbCgib25hYm9ydCIpLG89U3ltYm9sKCJvbmVycm9yIiksaT1TeW1ib2woIm9ubG9hZCIpLHM9U3ltYm9sKCJvbnRpbWVvdXQiKSxjPVN5bWJvbCgib25sb2FkZW5kIiksdT1TeW1ib2woIm9ucmVhZHlzdGF0ZWNoYW5nZSIpLGw9U3ltYm9sKCJyZWFkeVN0YXRlIiksZz1TeW1ib2woInRpbWVvdXQiKSxoPVN5bWJvbCgid2l0aENyZWRlbnRpYWxzIiksZj1TeW1ib2woInVwbG9hZCIpLGQ9U3ltYm9sKCJyZXNwb25zZVR5cGUiKSxwPSh0LG4pPT57dmFyIGU9bi5kZXNjcmlwdGlvbi5zdWJzdHJpbmcoMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLHQuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpc1tuXTtlJiZlLmNhbGwodGhpcyx0KX0pfSx2PSh0LGUpPT57dFtsXT1lLHQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoInJlYWR5c3RhdGVjaGFuZ2UiKSl9O2xldCBtPSEwO2NsYXNzIGIgZXh0ZW5kcyBFdmVudFRhcmdldHtjb25zdHJ1Y3Rvcigpe2lmKHN1cGVyKCksISh0aGlzIGluc3RhbmNlb2YgeXx8dGhpcyBpbnN0YW5jZW9mIHcpKXRocm93IG5ldyBUeXBlRXJyb3IoIklsbGVnYWwgY29uc3RydWN0b3IiKTtwKHRoaXMsbikscCh0aGlzLHIpLHAodGhpcyxhKSxwKHRoaXMsbykscCh0aGlzLGkpLHAodGhpcyxzKSxwKHRoaXMsYyl9Z2V0IG9ubG9hZHN0YXJ0KCl7cmV0dXJuIHRoaXNbbl19c2V0IG9ubG9hZHN0YXJ0KHQpe3RoaXNbbl09dH1nZXQgb25wcm9ncmVzcygpe3JldHVybiB0aGlzW3JdfXNldCBvbnByb2dyZXNzKHQpe3RoaXNbcl09dH1nZXQgb25hYm9ydCgpe3JldHVybiB0aGlzW2FdfXNldCBvbmFib3J0KHQpe3RoaXNbYV09dH1nZXQgb25lcnJvcigpe3JldHVybiB0aGlzW29dfXNldCBvbmVycm9yKHQpe3RoaXNbb109dH1nZXQgb250aW1lb3V0KCl7cmV0dXJuIHRoaXNbc119c2V0IG9udGltZW91dCh0KXt0aGlzW3NdPXR9Z2V0IG9ubG9hZGVuZCgpe3JldHVybiB0aGlzW2NdfXNldCBvbmxvYWRlbmQodCl7dGhpc1tjXT10fX10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmIsd3JpdGFibGU6ITB9O2NsYXNzIHcgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7aWYobSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbGxlZ2FsIGNvbnN0cnVjdG9yIik7c3VwZXIoKX19dC5YTUxIdHRwUmVxdWVzdFVwbG9hZD17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6dyx3cml0YWJsZTohMH07Y2xhc3MgeSBleHRlbmRzIGJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLG09ITE7dmFyIHQ9bmV3IHc7bT0hMCxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxlLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSkscCh0aGlzLHUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGwse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHZhbHVlOjAsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxnLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTowLHdyaXRhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6ITEsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxmLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTp0LHdyaXRhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsZCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6IiIsd3JpdGFibGU6ITB9KX1nZXQgb25yZWFkeXN0YXRlY2hhbmdlKCl7cmV0dXJuIHRoaXNbdV19c2V0IG9ucmVhZHlzdGF0ZWNoYW5nZSh0KXt0aGlzW3VdPXR9Z2V0IHJlYWR5U3RhdGUoKXtyZXR1cm4gdGhpc1tsXX1vcGVuKHQsZSl7c3dpdGNoKHRoaXNbbF0pe2Nhc2UgMDpjYXNlIDQ6dih0aGlzLDEpfX1zZXRSZXF1ZXN0SGVhZGVyKHQsZSl7fXNldFRydXN0VG9rZW4odCl7fWdldCB0aW1lb3V0KCl7cmV0dXJuIHRoaXNbZ119c2V0IHRpbWVvdXQodCl7dGhpc1tnXT10fWdldCB3aXRoQ3JlZGVudGlhbHMoKXtyZXR1cm4gdGhpc1toXX1zZXQgd2l0aENyZWRlbnRpYWxzKHQpe3N3aXRjaCh0aGlzW2xdKXtjYXNlIDA6Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiRmFpbGVkIHRvIHNldCB0aGUgJ3dpdGhDcmVkZW50aWFscycgcHJvcGVydHkgb24gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIHZhbHVlIG1heSBvbmx5IGJlIHNldCBpZiB0aGUgb2JqZWN0J3Mgc3RhdGUgaXMgVU5TRU5UIG9yIE9QRU5FRC4iKX10aGlzW2hdPSEhdH1nZXQgdXBsb2FkKCl7cmV0dXJuIHRoaXNbZl19c2VuZCgpe2lmKDEhPT10aGlzW2xdfHxudWxsIT09dGhpc1tlXSl0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCJGYWlsZWQgdG8gZXhlY3V0ZSAnc2VuZCcgb24gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIG9iamVjdCdzIHN0YXRlIG11c3QgYmUgT1BFTkVELiIpO3RoaXNbZV09c2V0VGltZW91dCgoKT0+e3RoaXNbZV09bnVsbCx2KHRoaXMsNCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBQcm9ncmVzc0V2ZW50KCJlcnJvciIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFByb2dyZXNzRXZlbnQoImxvYWRlbmQiKSl9LDApfWFib3J0KCl7MT09PXRoaXNbbF0mJm51bGwhPT10aGlzW2VdJiYoY2xlYXJUaW1lb3V0KHRoaXNbZV0pLHRoaXNbZV09bnVsbCx2KHRoaXMsMCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBQcm9ncmVzc0V2ZW50KCJhYm9ydCIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFByb2dyZXNzRXZlbnQoImxvYWRlbmQiKSkpfWdldCByZXNwb25zZVVSTCgpe3JldHVybiIifWdldCBzdGF0dXMoKXtyZXR1cm4gMH1nZXQgc3RhdHVzVGV4dCgpe3JldHVybiIifWdldFJlc3BvbnNlSGVhZGVyKHQpe3JldHVybiBudWxsfW92ZXJyaWRlTWltZVR5cGUodCl7fWdldCByZXNwb25zZVR5cGUoKXtyZXR1cm4gdGhpc1tkXX1zZXQgcmVzcG9uc2VUeXBlKHQpe2lmKDQ9PT10aGlzW2xdKXRocm93IG5ldyBET01FeGNlcHRpb24oIkZhaWxlZCB0byBzZXQgdGhlICdyZXNwb25zZVR5cGUnIHByb3BlcnR5IG9uICdYTUxIdHRwUmVxdWVzdCc6IFRoZSByZXNwb25zZSB0eXBlIGNhbm5vdCBiZSBzZXQgaWYgdGhlIG9iamVjdCdzIHN0YXRlIGlzIExPQURJTkcgb3IgRE9ORS4iKTtzd2l0Y2godCl7Y2FzZSIiOmNhc2UiYXJyYXlidWZmZXIiOmNhc2UiYmxvYiI6Y2FzZSJkb2N1bWVudCI6Y2FzZSJqc29uIjpjYXNlInRleHQiOnRoaXNbZF09dH19Z2V0IHJlc3BvbnNlKCl7dmFyIHQ9dGhpc1tkXTtyZXR1cm4iIj09PXR8fCJ0ZXh0Ij09PXQ/IiI6bnVsbH1nZXQgcmVzcG9uc2VUZXh0KCl7dmFyIHQ9dGhpc1tkXTtpZigiIj09PXR8fCJ0ZXh0Ij09PXQpcmV0dXJuIiI7dGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiRmFpbGVkIHRvIHJlYWQgdGhlICdyZXNwb25zZVRleHQnIHByb3BlcnR5IGZyb20gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIHZhbHVlIGlzIG9ubHkgYWNjZXNzaWJsZSBpZiB0aGUgb2JqZWN0J3MgJ3Jlc3BvbnNlVHlwZScgaXMgJycgb3IgJ3RleHQnICh3YXMgJ2FycmF5YnVmZmVyJykuIil9Z2V0IHJlc3BvbnNlWE1MKCl7cmV0dXJuIG51bGx9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5LCJVTlNFTlQiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTowfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHksIk9QRU5FRCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeSwiSEVBREVSU19SRUNFSVZFRCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeSwiTE9BRElORyIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjN9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeSwiRE9ORSIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjR9KSx0LlhNTEh0dHBSZXF1ZXN0PXtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTp5LHdyaXRhYmxlOiEwfX0pKGEpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3Q9dC5zcGxpdCgiLiIpO3ZhciBuLHI9YTt0WzBdaW4gcnx8dm9pZCAwPT09ci5leGVjU2NyaXB0fHxyLmV4ZWNTY3JpcHQoInZhciAiK3RbMF0pO2Zvcig7dC5sZW5ndGgmJihuPXQuc2hpZnQoKSk7KXQubGVuZ3RofHx2b2lkIDA9PT1lP3I9cltuXSYmcltuXSE9PU9iamVjdC5wcm90b3R5cGVbbl0/cltuXTpyW25dPXt9OnJbbl09ZX1mdW5jdGlvbiBzKHQpe2Zvcih2YXIgZSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIDF9ZnVuY3Rpb24gbyh0LGUpe3AuYWRkRXZlbnRMaXN0ZW5lcj9wLmFkZEV2ZW50TGlzdGVuZXIodCxlLCExKTpwLmF0dGFjaEV2ZW50JiZwLmF0dGFjaEV2ZW50KCJvbiIrdCxlKX1mdW5jdGlvbiBpKHQsZSxuKXt0PXQuc3BsaXQoIiYiKTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXS5zcGxpdCgiPSIpO2lmKGRlY29kZVVSSUNvbXBvbmVudChhWzBdKS5yZXBsYWNlKC9cKy9nLCIgIik9PT1lKXJldHVybiBlPWEuc2xpY2UoMSkuam9pbigiPSIpLG4/ZTpkZWNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvXCsvZywiICIpfX12YXIgdSxsLGMsYT10aGlzfHxzZWxmLGc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX0saD0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwKTp8W146Lz8jXSooPzpbLz8jXXwkKSkvaSxmPXdpbmRvdyxkPXdpbmRvdy5oaXN0b3J5LHA9ZG9jdW1lbnQsdj1uYXZpZ2F0b3IsZT17fSxtPWZ1bmN0aW9uKCl7ZS5UQUdHSU5HPWUuVEFHR0lOR3x8W10sZS5UQUdHSU5HWzFdPSEwfSxiPS86WzAtOV0rJC8sdz1mdW5jdGlvbih0LGUpe3JldHVybiJwcm90b2NvbCIhPT0oZT1lJiZTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSkmJiJwb3J0IiE9PWV8fCh0LnByb3RvY29sPV8odC5wcm90b2NvbCl8fF8oZi5sb2NhdGlvbi5wcm90b2NvbCkpLCJwb3J0Ij09PWU/dC5wb3J0PVN0cmluZyhOdW1iZXIoKHQuaG9zdG5hbWU/dDpmLmxvY2F0aW9uKS5wb3J0KXx8KCJodHRwIj09dC5wcm90b2NvbD84MDoiaHR0cHMiPT10LnByb3RvY29sPzQ0MzoiIikpOiJob3N0Ij09PWUmJih0Lmhvc3RuYW1lPSh0Lmhvc3RuYW1lfHxmLmxvY2F0aW9uLmhvc3RuYW1lKS5yZXBsYWNlKGIsIiIpLnRvTG93ZXJDYXNlKCkpLHkodCxlLHZvaWQgMCx2b2lkIDAsdm9pZCAwKX0seT1mdW5jdGlvbih0LGUsbixyLGEpe3ZhciBvPV8odC5wcm90b2NvbCk7c3dpdGNoKGU9ZSYmU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UidXJsX25vX2ZyYWdtZW50IjpyPSIiLHQ9cj10JiZ0LmhyZWY/KHI9dC5ocmVmLmluZGV4T2YoIiMiKSk8MD90LmhyZWY6dC5ocmVmLnN1YnN0cigwLHIpOnI7YnJlYWs7Y2FzZSJwcm90b2NvbCI6dD1vO2JyZWFrO2Nhc2UiaG9zdCI6dD10Lmhvc3RuYW1lLnJlcGxhY2UoYiwiIikudG9Mb3dlckNhc2UoKSxuJiYocj0vXnd3d1xkKlwuLy5leGVjKHQpKSYmclswXSYmKHQ9dC5zdWJzdHIoclswXS5sZW5ndGgpKTticmVhaztjYXNlInBvcnQiOnQ9U3RyaW5nKE51bWJlcih0LnBvcnQpfHwoImh0dHAiPT1vPzgwOiJodHRwcyI9PW8/NDQzOiIiKSk7YnJlYWs7Y2FzZSJwYXRoIjp0LnBhdGhuYW1lfHx0Lmhvc3RuYW1lfHxtKCksdD0odD0iLyI9PXQucGF0aG5hbWUuc3Vic3RyKDAsMSk/dC5wYXRobmFtZToiLyIrdC5wYXRobmFtZSkuc3BsaXQoIi8iKSwwPD0ocnx8W10pLmluZGV4T2YodFt0Lmxlbmd0aC0xXSkmJih0W3QubGVuZ3RoLTFdPSIiKSx0PXQuam9pbigiLyIpO2JyZWFrO2Nhc2UicXVlcnkiOnQ9dC5zZWFyY2gucmVwbGFjZSgiPyIsIiIpLGEmJih0PWkodCxhLHZvaWQgMCkpO2JyZWFrO2Nhc2UiZXh0ZW5zaW9uIjp0PSh0PTE8KHQ9dC5wYXRobmFtZS5zcGxpdCgiLiIpKS5sZW5ndGg/dFt0Lmxlbmd0aC0xXToiIikuc3BsaXQoIi8iKVswXTticmVhaztjYXNlImZyYWdtZW50Ijp0PXQuaGFzaC5yZXBsYWNlKCIjIiwiIik7YnJlYWs7ZGVmYXVsdDp0PXQmJnQuaHJlZn1yZXR1cm4gdH0sXz1mdW5jdGlvbih0KXtyZXR1cm4gdD90LnJlcGxhY2UoIjoiLCIiKS50b0xvd2VyQ2FzZSgpOiIifSxPPWZ1bmN0aW9uKHQpe3ZhciBlPXAuY3JlYXRlRWxlbWVudCgiYSIpO3QmJihlLmhyZWY9dCk7dmFyIG49ZS5wYXRobmFtZTtyZXR1cm4iLyIhPT1uWzBdJiYodHx8bSgpLG49Ii8iK24pLHQ9ZS5ob3N0bmFtZS5yZXBsYWNlKGIsIiIpLHtocmVmOmUuaHJlZixwcm90b2NvbDplLnByb3RvY29sLGhvc3Q6ZS5ob3N0LGhvc3RuYW1lOnQscGF0aG5hbWU6bixzZWFyY2g6ZS5zZWFyY2gsaGFzaDplLmhhc2gscG9ydDplLnBvcnR9fTtmdW5jdGlvbiBFKCl7Zm9yKHZhciB0PXUsZT17fSxuPTA7bjx0Lmxlbmd0aDsrK24pZVt0W25dXT1uO3JldHVybiBlfWZ1bmN0aW9uIFQoKXt2YXIgdD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiO3JldHVybih0Kz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLnRvTG93ZXJDYXNlKCkrIjAxMjM0NTY3ODktXyIpKyIuIn1mdW5jdGlvbiB4KHQpe3U9dXx8VCgpLGw9bHx8RSgpO2Zvcih2YXIgZT1bXSxuPTA7bjx0Lmxlbmd0aDtuKz0zKXt2YXIgcj1uKzE8dC5sZW5ndGgsYT1uKzI8dC5sZW5ndGgsbz10LmNoYXJDb2RlQXQobiksaT1yP3QuY2hhckNvZGVBdChuKzEpOjAscz1hP3QuY2hhckNvZGVBdChuKzIpOjAsYz1vPj4yLG89KDMmbyk8PDR8aT4+NCxpPSgxNSZpKTw8MnxzPj42O3MmPTYzLGF8fChzPTY0LHJ8fChpPTY0KSksZS5wdXNoKHVbY10sdVtvXSx1W2ldLHVbc10pfXJldHVybiBlLmpvaW4oIiIpfWZ1bmN0aW9uIGsoKXtmdW5jdGlvbiB0KHQpe24odC50YXJnZXR8fHQuc3JjRWxlbWVudHx8e30pfXZhciBlLG49RixyPVgsYT1OKCk7YS5pbml0fHwobygibW91c2Vkb3duIix0KSxvKCJrZXl1cCIsdCksbygic3VibWl0IixmdW5jdGlvbih0KXtyKHQudGFyZ2V0fHx0LnNyY0VsZW1lbnR8fHt9KX0pLGU9SFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQsSFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQ9ZnVuY3Rpb24oKXtyKHRoaXMpLGUuY2FsbCh0aGlzKX0sYS5pbml0PSEwKX1mdW5jdGlvbiBTKHQsZSxuLHIsYSl7dD17Y2FsbGJhY2s6dCxkb21haW5zOmUsZnJhZ21lbnQ6Mj09PW4scGxhY2VtZW50Om4sZm9ybXM6cixzYW1lSG9zdDphfSxOKCkuZGVjb3JhdG9ycy5wdXNoKHQpfWZ1bmN0aW9uIEModCxlLG4pe2Zvcih2YXIgcj1OKCkuZGVjb3JhdG9ycyxhPXt9LG89MDtvPHIubGVuZ3RoOysrbyl7dmFyIGk9cltvXTtpZihzPSFufHxpLmZvcm1zKXQ6e3ZhciBzPWkuZG9tYWlucyxjPXQsdT0hIWkuc2FtZUhvc3Q7aWYocyYmKHV8fGMhPT1wLmxvY2F0aW9uLmhvc3RuYW1lKSlmb3IodmFyIGw9MDtsPHMubGVuZ3RoO2wrKylpZihzW2xdaW5zdGFuY2VvZiBSZWdFeHApe2lmKHNbbF0udGVzdChjKSl7cz0hMDticmVhayB0fX1lbHNlIGlmKDA8PWMuaW5kZXhPZihzW2xdKXx8dSYmMDw9c1tsXS5pbmRleE9mKGMpKXtzPSEwO2JyZWFrIHR9cz0hMX1zJiYoKHM9bnVsbD09KHM9aS5wbGFjZW1lbnQpP2kuZnJhZ21lbnQ/MjoxOnMpPT09ZSYmZyhhLGkuY2FsbGJhY2soKSkpfXJldHVybiBhfXZhciBqPXZvaWQgMDtmdW5jdGlvbiBOKCl7dmFyIHQ9e30sZT1mLmdvb2dsZV90YWdfZGF0YTtyZXR1cm4gZi5nb29nbGVfdGFnX2RhdGE9dm9pZCAwPT09ZT90OmUsKGU9KHQ9Zi5nb29nbGVfdGFnX2RhdGEpLmdsKSYmZS5kZWNvcmF0b3JzfHwodC5nbD1lPXtkZWNvcmF0b3JzOltdfSksZX12YXIgUj0vKC4qPylcKiguKj8pXCooLiopLyxBPS8oW14/I10rKShcP1teI10qKT8oIy4qKT8vO2Z1bmN0aW9uIEwodCl7cmV0dXJuIG5ldyBSZWdFeHAoIiguKj8pKF58JikiK3QrIj0oW14mXSopJj8oLiopIil9ZnVuY3Rpb24gSSh0LGUpe3ZhciBuLHIsYT1bXTtmb3IobiBpbiB0KSF0Lmhhc093blByb3BlcnR5KG4pfHx2b2lkIDAhPT0ocj10W25dKSYmcj09ciYmbnVsbCE9PXImJiJbb2JqZWN0IE9iamVjdF0iIT09ci50b1N0cmluZygpJiYoYS5wdXNoKG4pLGEucHVzaCh4KFN0cmluZyhyKSkpKTtyZXR1cm4gdD1hLmpvaW4oIioiKSx2b2lkIDAhPT1lJiYoYT0ieHBfIitlLGU9TVtlXSh0KSx0PXQrIioiK1thLHgoU3RyaW5nKGUpKV0uam9pbigiKiIpKSxbIjEiLFAodCksdF0uam9pbigiKiIpfWZ1bmN0aW9uIFAodCxlKXtpZih0PVtmLm5hdmlnYXRvci51c2VyQWdlbnQsKG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpLHYudXNlckxhbmd1YWdlfHx2Lmxhbmd1YWdlLE1hdGguZmxvb3IobmV3IERhdGUoRGF0ZS5ub3coKSkuZ2V0VGltZSgpLzYwLzFlMyktKHZvaWQgMD09PWU/MDplKSx0XS5qb2luKCIqIiksIShlPWMpKXtlPUFycmF5KDI1Nik7Zm9yKHZhciBuPTA7bjwyNTY7bisrKXtmb3IodmFyIHI9bixhPTA7YTw4O2ErKylyPTEmcj9yPj4+MV4zOTg4MjkyMzg0OnI+Pj4xO2Vbbl09cn19Zm9yKGM9ZSxlPTQyOTQ5NjcyOTUsbj0wO248dC5sZW5ndGg7bisrKWU9ZT4+PjheY1syNTUmKGVedC5jaGFyQ29kZUF0KG4pKV07cmV0dXJuKCgtMV5lKT4+PjApLnRvU3RyaW5nKDM2KX12YXIgbj17fSxNPShuWzFdPWZ1bmN0aW9uKCl7cmV0dXJuIkNIRUNLU1VNX0VYUF9ESVNBQkxFRCJ9LG5bMl09ZnVuY3Rpb24oKXtyZXR1cm4iQ0hFQ0tTVU1fRVhQX0RJU0FCTEVEIn0sblszXT1mdW5jdGlvbigpe3JldHVybiJDSEVDS1NVTV9FWFBfRElTQUJMRUQifSxuKTtmdW5jdGlvbiByKG8pe3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1PKGYubG9jYXRpb24uaHJlZiksbj1lLnNlYXJjaC5yZXBsYWNlKCI/IiwiIikscj1pKG4sIl9nbCIsITApO3QucXVlcnk9cShyfHwiIil8fHt9O3ZhciBhPShyPXcoZSwiZnJhZ21lbnQiKSkubWF0Y2goTCgiX2dsIikpO3QuZnJhZ21lbnQ9cShhJiZhWzNdfHwiIil8fHt9LG8mJmZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7cmV0dXJuIHQ9KHQ9RCgiX2dsIix0KSkubGVuZ3RoP2UrdDp0fXt2YXIgYTtkJiZkLnJlcGxhY2VTdGF0ZSYmKCgoYT1MKCJfZ2wiKSkudGVzdChlKXx8YS50ZXN0KG4pKSYmKHQ9dyh0LCJwYXRoIiksZT1yKGUsIj8iKSxuPXIobiwiIyIpLGQucmVwbGFjZVN0YXRlKHt9LHZvaWQgMCwiIit0K2UrbikpKX19KGUsbixyKX19ZnVuY3Rpb24gRCh0LGUpe3ZhciBuLHI7cmV0dXJuKHQ9TCh0KS5leGVjKGUpKSYmKG49dFsyXSxyPXRbNF0sZT10WzFdLHImJihlPWUrbityKSksZX1mdW5jdGlvbiBxKHQpe3ZhciBlPXZvaWQgMD09PWU/MzplO3RyeXtpZih0KXt0Ontmb3IodmFyIG49MDtuPDM7KytuKXt2YXIgcj1SLmV4ZWModCk7aWYocil7dmFyIGE9cjticmVhayB0fXQ9ZGVjb2RlVVJJQ29tcG9uZW50KHQpfWE9dm9pZCAwfWlmKGEmJiIxIj09PWFbMV0pe3ZhciBvPWFbMl0saT1hWzNdO3Q6e2ZvcihhPTA7YTxlOysrYSlpZihvPT09UChpLGEpKXt2YXIgcz0hMDticmVhayB0fXM9ITF9aWYocyl7Zm9yKHZhciBlPXt9LGM9aT9pLnNwbGl0KCIqIik6W10saT0wO2k8Yy5sZW5ndGg7aSs9MillW2NbaV1dPWZ1bmN0aW9uKHIpe2Z1bmN0aW9uIHQodCl7Zm9yKDthPHIubGVuZ3RoOyl7dmFyIGU9ci5jaGFyQXQoYSsrKSxuPWxbZV07aWYobnVsbCE9bilyZXR1cm4gbjtpZighL15bXHNceGEwXSokLy50ZXN0KGUpKXRocm93IEVycm9yKCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiAiK2UpfXJldHVybiB0fXU9dXx8VCgpLGw9bHx8RSgpO2Zvcih2YXIgZT0iIixhPTA7Oyl7dmFyIG49dCgtMSksbz10KDApLGk9dCg2NCkscz10KDY0KTtpZig2ND09PXMmJi0xPT09bilyZXR1cm4gZTtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG48PDJ8bz4+NCksNjQhPWkmJihlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG88PDQmMjQwfGk+PjIpLDY0IT1zJiYoZSs9U3RyaW5nLmZyb21DaGFyQ29kZShpPDw2JjE5MnxzKSkpfX0oY1tpKzFdKTtyZXR1cm4gZX19fX1jYXRjaCh0KXt9fWZ1bmN0aW9uIFUobix0LGUscil7ZnVuY3Rpb24gYSh0KXt2YXIgZT0odD1EKG4sdCkpLmNoYXJBdCh0Lmxlbmd0aC0xKTtyZXR1cm4gdCYmIiYiIT09ZSYmKHQrPSImIiksdCtzfWlmKHI9dm9pZCAwIT09ciYmciwhKGk9QS5leGVjKGUpKSlyZXR1cm4iIjtlPWlbMV07dmFyIG89aVsyXXx8IiIsaT1pWzNdfHwiIixzPW4rIj0iK3Q7cmV0dXJuIHI/aT0iIyIrYShpLnN1YnN0cmluZygxKSk6bz0iPyIrYShvLnN1YnN0cmluZygxKSksIiIrZStvK2l9ZnVuY3Rpb24gSCh0LGUpe3ZhciBuPSJGT1JNIj09PSh0LnRhZ05hbWV8fCIiKS50b1VwcGVyQ2FzZSgpLHI9QyhlLDEsbiksYT1DKGUsMixuKTtlPUMoZSwzLG4pO3ZhciBvLGk9ajtmb3IobyBpbiBzKHIpJiYocj1JKHIsaSksbj9WKCJfZ2wiLHIsdCk6RygiX2dsIixyLHQsITEpKSwhbiYmcyhhKSYmRygiX2dsIixuPUkoYSksdCwhMCksZSllLmhhc093blByb3BlcnR5KG8pJiYkKG8sZVtvXSx0KX1mdW5jdGlvbiAkKHQsZSxuLHIpe2lmKG4udGFnTmFtZSl7aWYoImEiPT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIEcodCxlLG4scik7aWYoImZvcm0iPT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIFYodCxlLG4pfWlmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gVSh0LGUsbixyKX1mdW5jdGlvbiBHKHQsZSxuLHIpe24uaHJlZiYmKHQ9VSh0LGUsbi5ocmVmLHZvaWQgMCE9PXImJnIpLGgudGVzdCh0KSYmKG4uaHJlZj10KSl9ZnVuY3Rpb24gVih0LGUsbil7aWYobiYmbi5hY3Rpb24paWYoImdldCI9PT0ocj0obi5tZXRob2R8fCIiKS50b0xvd2VyQ2FzZSgpKSl7Zm9yKHZhciByPW4uY2hpbGROb2Rlc3x8W10sYT0hMSxvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBpPXJbb107aWYoaS5uYW1lPT09dCl7aS5zZXRBdHRyaWJ1dGUoInZhbHVlIixlKSxhPSEwO2JyZWFrfX1hfHwoKHI9cC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxyLnNldEF0dHJpYnV0ZSgibmFtZSIsdCksci5zZXRBdHRyaWJ1dGUoInZhbHVlIixlKSxuLmFwcGVuZENoaWxkKHIpKX1lbHNlInBvc3QiPT09ciYmKHQ9VSh0LGUsbi5hY3Rpb24pLGgudGVzdCh0KSYmKG4uYWN0aW9uPXQpKX1mdW5jdGlvbiBGKHQpe3RyeXt0Ontmb3IodmFyIGU9MTAwO3QmJjA8ZTspe2lmKHQuaHJlZiYmdC5ub2RlTmFtZS5tYXRjaCgvXmEoPzpyZWEpPyQvaSkpe3ZhciBuPXQ7YnJlYWsgdH10PXQucGFyZW50Tm9kZSxlLS19bj1udWxsfXZhciByO24mJigiaHR0cDoiIT09KHI9bi5wcm90b2NvbCkmJiJodHRwczoiIT09cnx8SChuLG4uaG9zdG5hbWUpKX1jYXRjaCh0KXt9fWZ1bmN0aW9uIFgodCl7dHJ5e3QuYWN0aW9uJiZIKHQsdyhPKHQuYWN0aW9uKSwiaG9zdCIpKX1jYXRjaCh0KXt9fXQoImdvb2dsZV90YWdfZGF0YS5nbEJyaWRnZS5hdXRvIixmdW5jdGlvbih0LGUsbixyLGEpe2soKSx2b2lkIDAhPT1hJiYoaj1hKSwzIT09YXx8di51c2VyQWdlbnREYXRhJiZ2LnVzZXJBZ2VudERhdGEuZ2V0SGlnaEVudHJvcHlWYWx1ZXMoWyJhcmNoaXRlY3R1cmUiLCJtb2RlbCIsImJpdG5lc3MiLCJwbGF0Zm9ybVZlcnNpb24iLCJ1YUZ1bGxWZXJzaW9uIl0pLnRoZW4oZnVuY3Rpb24oKXt9KSxTKHQsZSwiZnJhZ21lbnQiPT09bj8yOjEsISFyLCExKX0pLHQoImdvb2dsZV90YWdfZGF0YS5nbEJyaWRnZS5wYXNzdGhyb3VnaCIsZnVuY3Rpb24odCxlLG4scil7aygpLHZvaWQgMCE9PXImJihqPXIpLFModCxbeShmLmxvY2F0aW9uLCJob3N0IiwhMCldLGUsISFuLCEwKX0pLHQoImdvb2dsZV90YWdfZGF0YS5nbEJyaWRnZS5kZWNvcmF0ZSIsZnVuY3Rpb24odCxlLG4pe3JldHVybiAkKCJfZ2wiLHQ9SSh0KSxlLCEhbil9KSx0KCJnb29nbGVfdGFnX2RhdGEuZ2xCcmlkZ2UuZ2VuZXJhdGUiLEkpLHQoImdvb2dsZV90YWdfZGF0YS5nbEJyaWRnZS5nZXQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49cighIWUpO3JldHVybihlPU4oKSkuZGF0YXx8KGUuZGF0YT17cXVlcnk6e30sZnJhZ21lbnQ6e319LG4oZS5kYXRhKSksbj17fSwoZT1lLmRhdGEpJiYoZyhuLGUucXVlcnkpLHQmJmcobixlLmZyYWdtZW50KSksbn0pfSh3aW5kb3cpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbyh0KXt2YXIgZSxuPTE7aWYodClmb3Iobj0wLGU9dC5sZW5ndGgtMTswPD1lO2UtLSl7dmFyIHI9dC5jaGFyQ29kZUF0KGUpO249MCE9KHI9MjY2MzM4MzA0JihuPShuPDw2JjI2ODQzNTQ1NSkrcisocjw8MTQpKSk/bl5yPj4yMTpufXJldHVybiBufWZ1bmN0aW9uIGkodCl7dGhpcy5DPXR8fFtdfWkucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt0aGlzLkNbdF09ITB9LGkucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTx0aGlzLkMubGVuZ3RoO2UrKyl0aGlzLkNbZV0mJih0W01hdGguZmxvb3IoZS82KV1ePTE8PGUlNik7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fIi5jaGFyQXQodFtlXXx8MCk7cmV0dXJuIHQuam9pbigiIikrIn4ifTt2YXIgdD13aW5kb3cuR29vZ2xlQW5hbHl0aWNzT2JqZWN0LHM9KEFlPShBZT1OZT0oTmU9bnVsbCE9dCk/LTE8KHQuY29uc3RydWN0b3IrIiIpLmluZGV4T2YoIlN0cmluZyIpOk5lKT8oUmU9d2luZG93Lkdvb2dsZUFuYWx5dGljc09iamVjdCk/UmUucmVwbGFjZSgvXltcc1x4YTBdK3xbXHNceGEwXSskL2csIiIpOiIiOkFlKXx8ImdhIixjPS9eKD86dXRtYVwuKT9cZCtcLlxkKyQvLHU9L15hbXAtW1x3Li1dezIyLDY0fSQvLGw9ITEscj1uZXcgaTtmdW5jdGlvbiBnKHQpe3Iuc2V0KHQpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ9dC5nZXQoRmUpLHQ9IXkodCk/W106dH1mdW5jdGlvbiBmKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIGQoKXtmb3IodmFyIHQ9SS5uYXZpZ2F0b3IudXNlckFnZW50KyhQLmNvb2tpZXx8IiIpKyhQLnJlZmVycmVyfHwiIiksZT10Lmxlbmd0aCxuPUkuaGlzdG9yeS5sZW5ndGg7MDxuOyl0Kz1uLS1eZSsrO3JldHVybltBdCgpXjIxNDc0ODM2NDcmbyh0KSxNYXRoLnJvdW5kKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFlMyldLmpvaW4oIi4iKX1mdW5jdGlvbiBwKHQsZSxuLHIpe3RyeXt0LmFkZEV2ZW50TGlzdGVuZXI/dC5hZGRFdmVudExpc3RlbmVyKGUsbiwhIXIpOnQuYXR0YWNoRXZlbnQmJnQuYXR0YWNoRXZlbnQoIm9uIitlLG4pfWNhdGNoKHQpe2coMjcpfX1mdW5jdGlvbiB2KHQsZSl7dmFyIG49dC5pbmRleE9mKGUpO3JldHVybiEoNSE9biYmNiE9bnx8Ii8iIT0odD10LmNoYXJBdChuK2UubGVuZ3RoKSkmJiI/IiE9dCYmIiIhPXQmJiI6IiE9dCl9ZnVuY3Rpb24gbSh0LGUpe2lmKDE9PWUubGVuZ3RoJiZudWxsIT1lWzBdJiYib2JqZWN0Ij09dHlwZW9mIGVbMF0pcmV0dXJuIGVbMF07Zm9yKHZhciBuPXt9LHI9TWF0aC5taW4odC5sZW5ndGgrMSxlLmxlbmd0aCksYT0wO2E8cjthKyspe2lmKCJvYmplY3QiPT10eXBlb2YgZVthXSl7Zm9yKHZhciBvIGluIGVbYV0pZVthXS5oYXNPd25Qcm9wZXJ0eShvKSYmKG5bb109ZVthXVtvXSk7YnJlYWt9YTx0Lmxlbmd0aCYmKG5bdFthXV09ZVthXSl9cmV0dXJuIG59ZnVuY3Rpb24gYigpe3RoaXMub2E9W10sdGhpcy5lYT17fSx0aGlzLm09e319dmFyIHc9ZnVuY3Rpb24odCl7dD1oKHQpLHQ9bmV3IGkodCk7Zm9yKHZhciBlPXIuQy5zbGljZSgpLG49MDtuPHQuQy5sZW5ndGg7bisrKWVbbl09ZVtuXXx8dC5DW25dO3JldHVybiBuZXcgaShlKS5lbmNvZGUoKX0seT1mdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0KHQpKX0sXz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmLTE8KHQuY29uc3RydWN0b3IrIiIpLmluZGV4T2YoIlN0cmluZyIpfSxPPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PXQuaW5kZXhPZihlKX0sRT1mdW5jdGlvbih0KXt2YXIgZT1QLmNyZWF0ZUVsZW1lbnQoImltZyIpO3JldHVybiBlLndpZHRoPTEsZS5oZWlnaHQ9MSxlLnNyYz10LGV9LFQ9ZnVuY3Rpb24oKXt9LHg9ZnVuY3Rpb24odCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2VuY29kZVVSSUNvbXBvbmVudCh0KTooZygyOCksdCl9LGs9L15bXHdcLTovLj89JiUhXFtcXV0rJC8sUz0vXltcdysvXy1dK1s9XXswLDJ9JC8sQz1udWxsLGo9ZnVuY3Rpb24odCxlLG4scixhKXtpZighQyl7Qz17Y3JlYXRlU2NyaXB0VVJMOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxjcmVhdGVIVE1MOmZ1bmN0aW9uKHQpe3JldHVybiB0fX07dHJ5e0M9d2luZG93LnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImdvb2dsZS1hbmFseXRpY3MiLEMpfWNhdGNoKHQpe319dmFyIG87dCYmKG89KG89UC5xdWVyeVNlbGVjdG9yJiZQLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKXx8bnVsbCkmJihvLm5vbmNlfHxvLmdldEF0dHJpYnV0ZSYmby5nZXRBdHRyaWJ1dGUoIm5vbmNlIikpfHwiIixuPyhhPXI9IiIsZSYmay50ZXN0KGUpJiYocj0nIGlkPSInK2UrJyInKSxvJiZTLnRlc3QobykmJihhPScgbm9uY2U9IicrbysnIicpLGsudGVzdCh0KSYmUC53cml0ZShDLmNyZWF0ZUhUTUwoIjxzY3JpcHQiK3IrYSsnIHNyYz0iJyt0KyciPjxcL3NjcmlwdD4nKSkpOigobj1QLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpKS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLG4uYXN5bmM9ITAsbi5zcmM9Qy5jcmVhdGVTY3JpcHRVUkwodCksciYmKG4ub25sb2FkPXIpLGEmJihuLm9uZXJyb3I9YSksZSYmKG4uaWQ9ZSksbyYmbi5zZXRBdHRyaWJ1dGUoIm5vbmNlIixvKSwodD1QLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobix0KSkpfSxOPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFIoUC5sb2NhdGlvbltlPyJocmVmIjoic2VhcmNoIl0sdCl9LFI9ZnVuY3Rpb24odCxlKXtyZXR1cm4odD10Lm1hdGNoKCIoPzomfCN8XFw/KSIreChlKS5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8XFtcXVwvXFxdKS9nLCJcXCQxIikrIj0oW14mI10qKSIpKSYmMj09dC5sZW5ndGg/dFsxXToiIn0sQT1mdW5jdGlvbigpe3ZhciB0PSIiK1AubG9jYXRpb24uaG9zdG5hbWU7cmV0dXJuIDA9PXQuaW5kZXhPZigid3d3LiIpP3Quc3Vic3RyaW5nKDQpOnR9LEw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZihlPT10W25dKXJldHVybiEwO3JldHVybiExfTtiLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlLG4pe3RoaXMub2EucHVzaCh0KSxuP3RoaXMubVsiOiIrdF09ZTp0aGlzLmVhWyI6Iit0XT1lfSxiLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuKHRoaXMubS5oYXNPd25Qcm9wZXJ0eSgiOiIrdCk/dGhpcy5tOnRoaXMuZWEpWyI6Iit0XX0sYi5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5vYS5sZW5ndGg7ZSsrKXt2YXIgbj10aGlzLm9hW2VdLHI9dGhpcy5nZXQobik7ciYmdChuLHIpfX07dmFyIEk9d2luZG93LFA9ZG9jdW1lbnQsbj1kb2N1bWVudC5jdXJyZW50U2NyaXB0P2RvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjOiIiLE09ZnVuY3Rpb24odCxlKXtyZXR1cm4gc2V0VGltZW91dCh0LGUpfSxEPXdpbmRvdyxxPWRvY3VtZW50LFU9ZnVuY3Rpb24odCl7dmFyIGU9RC5fZ2FVc2VyUHJlZnM7aWYoZSYmZS5pb28mJmUuaW9vKCl8fHQmJiEwPT09RFsiZ2EtZGlzYWJsZS0iK3RdKXJldHVybiEwO3RyeXt2YXIgbj1ELmV4dGVybmFsO2lmKG4mJm4uX2dhVXNlclByZWZzJiYib28iPT1uLl9nYVVzZXJQcmVmcylyZXR1cm4hMH1jYXRjaCh0KXt9Zm9yKHQ9W10sZT1TdHJpbmcocS5jb29raWUpLnNwbGl0KCI7Iiksbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dLnNwbGl0KCI9IiksYT1yWzBdLnJlcGxhY2UoL15ccyp8XHMqJC9nLCIiKTthJiYiQU1QX1RPS0VOIj09YSYmKChyPXIuc2xpY2UoMSkuam9pbigiPSIpLnJlcGxhY2UoL15ccyp8XHMqJC9nLCIiKSkmJihyPWRlY29kZVVSSUNvbXBvbmVudChyKSksdC5wdXNoKHIpKX1mb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKCIkT1BUX09VVCI9PXRbZV0pcmV0dXJuITA7cmV0dXJuISFxLmdldEVsZW1lbnRCeUlkKCJfX2dhT3B0T3V0RXh0ZW5zaW9uIil9LEg9ZnVuY3Rpb24odCl7dmFyIGU9W10sbj1QLmNvb2tpZS5zcGxpdCgiOyIpO3Q9bmV3IFJlZ0V4cCgiXlxccyoiK3QrIj1cXHMqKC4qPylcXHMqJCIpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgYT1uW3JdLm1hdGNoKHQpO2EmJmUucHVzaChhWzFdKX1yZXR1cm4gZX0sJD1mdW5jdGlvbih0LGUsbixyLGEsbyxpKXtpZighKGE9IVUoYSkmJiEoRi50ZXN0KFAubG9jYXRpb24uaG9zdG5hbWUpfHwiLyI9PW4mJlYudGVzdChyKSkpKXJldHVybiExO2lmKG49dCsiPSIrKGU9ZSYmMTIwMDxlLmxlbmd0aD9lLnN1YnN0cmluZygwLDEyMDApOmUpKyI7IHBhdGg9IituKyI7ICIsbyYmKG4rPSJleHBpcmVzPSIrbmV3IERhdGUoKG5ldyBEYXRlKS5nZXRUaW1lKCkrbykudG9HTVRTdHJpbmcoKSsiOyAiKSxyJiYibm9uZSIhPT1yJiYobis9ImRvbWFpbj0iK3IrIjsiKSxpJiYobis9aSsiOyIpLHI9UC5jb29raWUsUC5jb29raWU9biwhKHI9ciE9UC5jb29raWUpKXQ6e2Zvcih0PUgodCkscj0wO3I8dC5sZW5ndGg7cisrKWlmKGU9PXRbcl0pe3I9ITA7YnJlYWsgdH1yPSExfXJldHVybiByfSxHPWZ1bmN0aW9uKHQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQ/ZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpOnR9LFY9L14od3d3XC4pP2dvb2dsZShcLmNvbT8pPyhcLlthLXpdezJ9KT8kLyxGPS8oXnxcLilkb3VibGVjbGlja1wubmV0JC9pLFg9ZnVuY3Rpb24odCl7dmFyIGU9W10sbj1QLmNvb2tpZS5zcGxpdCgiOyIpO3Q9bmV3IFJlZ0V4cCgiXlxccyoiKyh0fHwiX2dhYyIpKyJfKFVBLVxcZCstXFxkKyk9XFxzKiguKz8pXFxzKiQiKTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGE9bltyXS5tYXRjaCh0KTthJiZlLnB1c2goe2phOmFbMV0sdmFsdWU6YVsyXSx0aW1lc3RhbXA6TnVtYmVyKGFbMl0uc3BsaXQoIi4iKVsxXSl8fDB9KX1yZXR1cm4gZS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudGltZXN0YW1wLXQudGltZXN0YW1wfSksZX07ZnVuY3Rpb24gQih0LGUsbil7dmFyIHI9e307aWYoIShlPVgoZSkpfHwhZS5sZW5ndGgpcmV0dXJuIHI7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBvLGk9ZVthXS52YWx1ZS5zcGxpdCgiLiIpOyIxIiE9PWlbMF18fG4mJmkubGVuZ3RoPDN8fCFuJiYzIT09aS5sZW5ndGg/dCYmKHQubmE9ITApOk51bWJlcihpWzFdKSYmKHJbZVthXS5qYV0/dCYmKHQucGE9ITApOnJbZVthXS5qYV09W10sbz17dmVyc2lvbjppWzBdLHRpbWVzdGFtcDoxZTMqTnVtYmVyKGlbMV0pLHFhOmlbMl19LG4mJjM8aS5sZW5ndGgmJihvLmxhYmVscz1pLnNsaWNlKDMpKSxyW2VbYV0uamFdLnB1c2gobykpfXJldHVybiByfWZ1bmN0aW9uIHooKXt4YS5EKFtUXSl9ZnVuY3Rpb24gSyh0LGUsbil7Zm9yKGV0JiZjbGVhclRpbWVvdXQoZXQpLGUmJmx0KGUsbikscnQ9dCxlPWl0LGl0PVtdLG49MDtuPGUubGVuZ3RoO24rKyllW25dKHQpfWZ1bmN0aW9uIFcodCl7dDp7aWYoYXQudGVzdChQLnJlZmVycmVyKSl7dmFyIGU9UC5sb2NhdGlvbi5ob3N0bmFtZS5yZXBsYWNlKG90LCIiKTtlOnt2YXIgbj1QLnJlZmVycmVyLHI9KG49bi5yZXBsYWNlKC9eaHR0cHM/OlwvXC8vLCIiKSkucmVwbGFjZSgvXlteL10rLywiIikuc3BsaXQoIi8iKSxhPXJbMl07aWYoIShyPShyPSJzIj09YT9yWzNdOmEpP2RlY29kZVVSSUNvbXBvbmVudChyKTpyKSl7aWYoMD09bi5pbmRleE9mKCJ4bi0tIikpe249IiI7YnJlYWsgZX0obj1uLm1hdGNoKC8oLiopXC5jZG5cLmFtcHByb2plY3RcLm9yZ1wvPyQvKSkmJjI9PW4ubGVuZ3RoJiYocj1uWzFdLnJlcGxhY2UoLy0vZywiLiIpLnJlcGxhY2UoL1wuXC4vZywiLSIpKX1uPXI/ci5yZXBsYWNlKG90LCIiKToiIn1pZihyPSEocj1lPT09bik/ZS5zdWJzdHJpbmcoZS5sZW5ndGgtKG49Ii4iK24pLmxlbmd0aCxlLmxlbmd0aCk9PT1uOnIpe2U9ITA7YnJlYWsgdH1nKDc4KX1lPSExfXJldHVybiBlJiYhMSE9PXR9ZnVuY3Rpb24gWih0KXtzd2l0Y2godCl7ZGVmYXVsdDpjYXNlIDE6cmV0dXJuImh0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2d0bS9qcz9pZD0iO2Nhc2UgMjpyZXR1cm4iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ifX1mdW5jdGlvbiBZKHQpe3RoaXMubmFtZT0ibGVuIix0aGlzLm1lc3NhZ2U9dCsiLTgxOTIifWZ1bmN0aW9uIEoodCxlLG4pe2lmKDA9PT1lLmxlbmd0aCluKCk7ZWxzZXt2YXIgcj1lLmNoYXJBdCgwKTtzd2l0Y2gocil7Y2FzZSJkIjpmdCgiaHR0cHM6Ly9zdGF0cy5nLmRvdWJsZWNsaWNrLm5ldC9qL2NvbGxlY3QiLHQuVSx0LG4pO2JyZWFrO2Nhc2UiZyI6ZHQoImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYWRzL2dhLWF1ZGllbmNlcyIsdC5nb29nbGUsbiksKGU9ZS5zdWJzdHJpbmcoMSkpJiYoL15bYS16Ll17MSw2fSQvLnRlc3QoZSk/ZHQoImh0dHBzOi8vd3d3Lmdvb2dsZS4lL2Fkcy9nYS1hdWRpZW5jZXMiLnJlcGxhY2UoIiUiLGUpLHQuZ29vZ2xlLFQpOmJ0KCJ0bGQiLCJiY2MiLGUpKTticmVhaztjYXNlIkciOmlmKHQuVil7dC5WKCJHLSIrZS5zdWJzdHJpbmcoMSkpLG4oKTticmVha31jYXNlIngiOmlmKHQuVil7dC5WKCksbigpO2JyZWFrfWRlZmF1bHQ6YnQoInhociIsImJyYyIsciksbigpfX19ZnVuY3Rpb24gUSgpe3RoaXMuTT1bXX12YXIgdHQsZXQsbnQscnQsYXQ9L15odHRwcz86XC9cL1teL10qY2RuXC5hbXBwcm9qZWN0XC5vcmdcLy8sb3Q9L14oPzp3d3dcLnxtXC58YW1wXC4pKy8saXQ9W10sc3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj1IKCJBTVBfVE9LRU4iKTtyZXR1cm4gMTxuLmxlbmd0aD8oZyg1NSksITEpOiIkT1BUX09VVCI9PShuPWRlY29kZVVSSUNvbXBvbmVudChuWzBdfHwiIikpfHwiJEVSUk9SIj09bnx8VShlKT8oZyg2MiksITEpOmF0LnRlc3QoUC5yZWZlcnJlcil8fCIkTk9UX0ZPVU5EIiE9bj92b2lkIDAhPT1ydD8oZyg1NiksTShmdW5jdGlvbigpe3QocnQpfSwwKSwhMCk6dHQ/KGl0LnB1c2godCksITApOiIkUkVUUklFVklORyI9PW4/KGcoNTcpLE0oZnVuY3Rpb24oKXtzdCh0LGUpfSwxZTQpLCEwKToodHQ9ITAsbiYmIiQiIT1uWzBdfHwobHQoIiRSRVRSSUVWSU5HIiwzZTQpLHNldFRpbWVvdXQodXQsM2U0KSxuPSIiKSwhIWN0KG4sZSkmJihpdC5wdXNoKHQpLCEwKSk6KGcoNjgpLCExKX0sY3Q9ZnVuY3Rpb24oZSxuLHIpe2lmKCF3aW5kb3cuSlNPTilyZXR1cm4gZyg1OCksITE7dmFyIHQ9SS5YTUxIdHRwUmVxdWVzdDtpZighdClyZXR1cm4gZyg1OSksITE7dmFyIGE9bmV3IHQ7cmV0dXJuIndpdGhDcmVkZW50aWFscyJpbiBhPyhhLm9wZW4oIlBPU1QiLChyfHwiaHR0cHM6Ly9hbXBjaWQuZ29vZ2xlLmNvbS92MS9wdWJsaXNoZXI6Z2V0Q2xpZW50SWQiKSsiP2tleT1BSXphU3lBNjVsRUhVRWl6SXNOdGxiTm8tbDJLMThkVDY4MG5zYU0iLCEwKSxhLndpdGhDcmVkZW50aWFscz0hMCxhLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsInRleHQvcGxhaW4iKSxhLm9ubG9hZD1mdW5jdGlvbigpe2lmKHR0PSExLDQ9PWEucmVhZHlTdGF0ZSl7dHJ5ezIwMCE9YS5zdGF0dXMmJihnKDYxKSxLKCIiLCIkRVJST1IiLDNlNCkpO3ZhciB0PUpTT04ucGFyc2UoYS5yZXNwb25zZVRleHQpO3Qub3B0T3V0PyhnKDYzKSxLKCIiLCIkT1BUX09VVCIsMzE1MzZlNikpOnQuY2xpZW50SWQ/Syh0LmNsaWVudElkLHQuc2VjdXJpdHlUb2tlbiwzMTUzNmU2KTohciYmdC5hbHRlcm5hdGVVcmw/KGV0JiZjbGVhclRpbWVvdXQoZXQpLHR0PSEwLGN0KGUsbix0LmFsdGVybmF0ZVVybCkpOihnKDY0KSxLKCIiLCIkTk9UX0ZPVU5EIiwzNmU1KSl9Y2F0Y2godCl7Zyg2NSksSygiIiwiJEVSUk9SIiwzZTQpfWE9bnVsbH19LHQ9e29yaWdpblNjb3BlOiJBTVBfRUNJRF9HT09HTEUifSxlJiYodC5zZWN1cml0eVRva2VuPWUpLGEuc2VuZChKU09OLnN0cmluZ2lmeSh0KSksZXQ9TShmdW5jdGlvbigpe2coNjYpLEsoIiIsIiRFUlJPUiIsM2U0KX0sMWU0KSwhMCk6KGcoNjApLCExKX0sdXQ9ZnVuY3Rpb24oKXt0dD0hMX0sbHQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1udCl7bnQ9IiI7Zm9yKHZhciBuPXNyKCkscj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgYT1uW3JdO2lmKCQoIkFNUF9UT0tFTiIsZW5jb2RlVVJJQ29tcG9uZW50KHQpLCIvIixhLCIiLGUpKXJldHVybiB2b2lkKG50PWEpfX0kKCJBTVBfVE9LRU4iLGVuY29kZVVSSUNvbXBvbmVudCh0KSwiLyIsbnQsIiIsZSl9LGd0PWZ1bmN0aW9uKHQpe3JldHVybih0fHxsfHwiaHR0cHM6Ij09UC5sb2NhdGlvbi5wcm90b2NvbD8iaHR0cHM6IjoiaHR0cDoiKSsiLy93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20ifSxodD1mdW5jdGlvbih0LGUsbil7aWYobj1ufHxULGUubGVuZ3RoPD0yMDM2KWR0KHQsZSxuKTtlbHNle2lmKCEoZS5sZW5ndGg8PTgxOTIpKXRocm93IGJ0KCJsZW4iLGUubGVuZ3RoKSxuZXcgWShlLmxlbmd0aCk7bXQodCxlLG4pfHxwdCh0LGUsbil8fGR0KHQsZSxuKX19LGZ0PWZ1bmN0aW9uKHQsZSxuLHIpe3B0KHQrIj8iK2UsIiIscj1yfHxULG4pfSxkdD1mdW5jdGlvbih0LGUsbil7dmFyIHI9RSh0KyI/IitlKTtyLm9ubG9hZD1yLm9uZXJyb3I9ZnVuY3Rpb24oKXtyLm9ubG9hZD1udWxsLHIub25lcnJvcj1udWxsLG4oKX19LHB0PWZ1bmN0aW9uKG4scixvLGkpe3ZhciB0PXt9LmNvbnN0cnVjdG9yLmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csIlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e3JldHVybiB0JiZ7fS5jb25zdHJ1Y3Rvci5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csIlhNTEh0dHBSZXF1ZXN0IixhLlhNTEh0dHBSZXF1ZXN0KSxmdW5jdGlvbigpe3ZhciB0PUkuWE1MSHR0cFJlcXVlc3Q7aWYoIXQpcmV0dXJuITE7dmFyIGU9bmV3IHQ7cmV0dXJuIndpdGhDcmVkZW50aWFscyJpbiBlJiYobj1uLnJlcGxhY2UoL15odHRwOi8sImh0dHBzOiIpLGUub3BlbigiUE9TVCIsbiwhMCksZS53aXRoQ3JlZGVudGlhbHM9ITAsZS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCJ0ZXh0L3BsYWluIiksZS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZig0PT1lLnJlYWR5U3RhdGUpe2lmKGkmJiJ0ZXh0L3BsYWluIj09PWUuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKXRyeXt2dChpLGUucmVzcG9uc2VUZXh0LG8pfWNhdGNoKHQpe2J0KCJ4aHIiLCJyc3AiKSxvKCl9ZWxzZSBvKCk7ZT1udWxsfX0sZS5zZW5kKHIpLCEwKX0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7dCYme30uY29uc3RydWN0b3IuZGVmaW5lUHJvcGVydHkod2luZG93LCJYTUxIdHRwUmVxdWVzdCIsdCl9fSx2dD1mdW5jdGlvbih0LGUsbil7aWYoZS5sZW5ndGg8MSlidCgieGhyIiwidmVyIiwiMCIpLG4oKTtlbHNlIGlmKDM8dC5jb3VudCsrKWJ0KCJ4aHIiLCJ0bXIiLCIiK3QuY291bnQpLG4oKTtlbHNle3ZhciByPWUuY2hhckF0KDApO2lmKCIxIj09PXIpSih0LGUuc3Vic3RyaW5nKDEpLG4pO2Vsc2UgaWYodC5WJiYiMiI9PT1yKXt2YXIgYT1lLnN1YnN0cmluZygxKS5zcGxpdCgiLCIpLG89MDtmb3IoZT1mdW5jdGlvbigpeysrbz09PWEubGVuZ3RoJiZuKCl9LHI9MDtyPGEubGVuZ3RoO3IrKylKKHQsYVtyXSxlKX1lbHNlIGJ0KCJ4aHIiLCJ2ZXIiLFN0cmluZyhlLmxlbmd0aCkpLG4oKX19LG10PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hIUkubmF2aWdhdG9yLnNlbmRCZWFjb24mJighIUkubmF2aWdhdG9yLnNlbmRCZWFjb24odCxlKSYmKG4oKSwhMCkpfSxidD1mdW5jdGlvbih0LGUsbil7MTw9MTAwKk1hdGgucmFuZG9tKCl8fFUoIj8iKXx8KHQ9WyJ0PWVycm9yIiwiX2U9Iit0LCJfdj1qOTYiLCJzcj0xIl0sZSYmdC5wdXNoKCJfZj0iK2UpLG4mJnQucHVzaCgiX209Iit4KG4uc3Vic3RyaW5nKDAsMTAwKSkpLHQucHVzaCgiYWlwPTEiKSx0LnB1c2goIno9IitBdCgpKSxkdChndCghMCkrIi91L2QiLHQuam9pbigiJiIpLFQpKX0sd3Q9ZnVuY3Rpb24oKXtyZXR1cm4gSS5nYURhdGE9SS5nYURhdGF8fHt9fSx5dD1mdW5jdGlvbih0KXt2YXIgZT13dCgpO3JldHVybiBlW3RdPWVbdF18fHt9fTtmdW5jdGlvbiBfdCh0KXtpZigxMDAhPXQuZ2V0KENuKSYmbyhQdCh0LGhuKSklMWU0Pj0xMDAqTXQodCxDbikpdGhyb3ciYWJvcnQifWZ1bmN0aW9uIE90KHQpe2lmKFUoUHQodCx2bikpKXRocm93ImFib3J0In1mdW5jdGlvbiBFdCgpe3ZhciB0PVAubG9jYXRpb24ucHJvdG9jb2w7aWYoImh0dHA6IiE9dCYmImh0dHBzOiIhPXQpdGhyb3ciYWJvcnQifWZ1bmN0aW9uIFR0KG4pe3RyeXtJLm5hdmlnYXRvci5zZW5kQmVhY29uP2coNDIpOkkuWE1MSHR0cFJlcXVlc3QmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gbmV3IEkuWE1MSHR0cFJlcXVlc3QmJmcoNDApfWNhdGNoKHQpe31uLnNldChWZSx3KG4pLCEwKSxuLnNldCh0ZSxNdChuLHRlKSsxKTt2YXIgcj1bXTtHdC5tYXAoZnVuY3Rpb24odCxlKXtlLkYmJihudWxsIT0odD1uLmdldCh0KSkmJnQhPWUuZGVmYXVsdFZhbHVlJiYoImJvb2xlYW4iPT10eXBlb2YgdCYmKHQqPTEpLHIucHVzaChlLkYrIj0iK3goIiIrdCkpKSl9KSwhMT09PW4uZ2V0KHRyKSYmci5wdXNoKCJucGE9MSIpLHIucHVzaCgiej0iK2UoKSksbi5zZXQoWXQsci5qb2luKCImIiksITApfWZ1bmN0aW9uIHh0KHQpe3ZhciBlPVB0KHQsUXQpOyFlJiZ0LmdldChKdCkmJihlPSJiZWFjb24iKTt2YXIgbj1QdCh0LEtuKSxyPVB0KHQsVW4pLGE9bnx8KHJ8fGd0KCExKSsiIikrIi9jb2xsZWN0IjsiZCI9PT1QdCh0LEpuKT8oYT1ufHwocnx8Z3QoITEpKyIiKSsiL2ovY29sbGVjdCIsZT10LmdldChZbil8fHZvaWQgMCxmdChhLFB0KHQsWXQpLGUsdC5aKFp0KSkpOmU/KG49UHQodCxZdCkscj0ocj10LlooWnQpKXx8VCwiaW1hZ2UiPT1lP2R0KGEsbixyKToieGhyIj09ZSYmcHQoYSxuLHIpfHwiYmVhY29uIj09ZSYmbXQoYSxuLHIpfHxodChhLG4scikpOmh0KGEsUHQodCxZdCksdC5aKFp0KSksYT1QdCh0LHZuKSxlPShhPXl0KGEpKS5oaXRjb3VudCxhLmhpdGNvdW50PWU/ZSsxOjEsYS5maXJzdF9oaXR8fChhLmZpcnN0X2hpdD0obmV3IERhdGUpLmdldFRpbWUoKSksYT1QdCh0LHZuKSxkZWxldGUgeXQoYSkucGVuZGluZ19leHBlcmltZW50cyx0LnNldChadCxULCEwKX1mdW5jdGlvbiBrdCh0KXt3dCgpLmV4cElkJiZ0LnNldChMZSx3dCgpLmV4cElkKSx3dCgpLmV4cFZhciYmdC5zZXQoSWUsd3QoKS5leHBWYXIpO3ZhciBlPVB0KHQsdm4pO2lmKGU9eXQoZSkucGVuZGluZ19leHBlcmltZW50cyl7dmFyIG49W107Zm9yKHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiZlW3JdJiZuLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHIpKyIuIitlbmNvZGVVUklDb21wb25lbnQoZVtyXSkpO3ZhciByPW4uam9pbigiISIpfWVsc2Ugcj12b2lkIDA7ciYmKChlPXQuZ2V0KFBlKSkmJihyPWUrIiEiK3IpLHQuc2V0KFBlLHIsITApKX1mdW5jdGlvbiBTdCgpe2lmKEkubmF2aWdhdG9yJiYicHJldmlldyI9PUkubmF2aWdhdG9yLmxvYWRQdXJwb3NlKXRocm93ImFib3J0In1mdW5jdGlvbiBDdCh0KXt2YXIgZT1JLmdhRGV2SWRzfHxbXTtpZih5KGUpKXt2YXIgbj10LmdldCgiJmRpZCIpO18obikmJjA8bi5sZW5ndGgmJihlPWUuY29uY2F0KG4uc3BsaXQoIiwiKSkpO2Zvcih2YXIgbj1bXSxyPTA7cjxlLmxlbmd0aDtyKyspTChuLGVbcl0pfHxuLnB1c2goZVtyXSk7MCE9bi5sZW5ndGgmJnQuc2V0KCImZGlkIixuLmpvaW4oIiwiKSwhMCl9fWZ1bmN0aW9uIGp0KHQpe2lmKCF0LmdldCh2bikpdGhyb3ciYWJvcnQifWZ1bmN0aW9uIE50KHQpe3RyeXt2YXIgZSxuO3QuZ2V0KEZuKXx8KHQuc2V0KEZuLCEwKSx0LmdldCgiJmd0bSIpKXx8KGU9dm9pZCAwLChlPSEoZT0hKGU9UnQoTigiZ3RtX2RlYnVnIikpPzI6ZSkmJk8oUC5yZWZlcnJlciwiaHR0cHM6Ly90YWdhc3Npc3RhbnQuZ29vZ2xlLmNvbS8iKT8zOmUpJiZMKFAuY29va2llLnNwbGl0KCI7ICIpLCJfX1RBR19BU1NJU1RBTlQ9eCIpPzQ6ZSl8fFJ0KFAuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS10YWctYXNzaXN0YW50LXByZXNlbnQiKSkmJihlPTUpLGUmJihJWyJnb29nbGUudGFnbWFuYWdlci5kZWJ1Z3VpMi5xdWV1ZSJdfHwoSVsiZ29vZ2xlLnRhZ21hbmFnZXIuZGVidWd1aTIucXVldWUiXT1bXSxqKCJodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9kZWJ1Zy9ib290c3RyYXA/aWQ9Iit0LmdldCh2bikrIiZzcmM9TEVHQUNZJmNvbmQ9IitlKSksbj1QLmN1cnJlbnRTY3JpcHQsSVsiZ29vZ2xlLnRhZ21hbmFnZXIuZGVidWd1aTIucXVldWUiXS5wdXNoKHttZXNzYWdlVHlwZToiTEVHQUNZX0NPTlRBSU5FUl9TVEFSVElORyIsZGF0YTp7aWQ6dC5nZXQodm4pLHNjcmlwdFNvdXJjZTpuJiZuLnNyY3x8IiJ9fSkpKX1jYXRjaCh0KXt9fWZ1bmN0aW9uIFJ0KHQpe2lmKG51bGwhPXQmJjAhPT10Lmxlbmd0aCl7dD1OdW1iZXIodCk7dmFyIGU9RGF0ZS5ub3coKTtyZXR1cm4gdDxlKzNlNSYmZS05ZTU8dH19US5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3RoaXMuTS5wdXNoKHQpfSxRLnByb3RvdHlwZS5EPWZ1bmN0aW9uKHQpe3RyeXtmb3IodmFyIGU9MDtlPHRoaXMuTS5sZW5ndGg7ZSsrKXt2YXIgbj10LmdldCh0aGlzLk1bZV0pO24mJmYobikmJm4uY2FsbChJLHQpfX1jYXRjaCh0KXt9KGU9dC5nZXQoWnQpKSE9VCYmZihlKSYmKHQuc2V0KFp0LFQsITApLHNldFRpbWVvdXQoZSwxMCkpfTt2YXIgQXQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yb3VuZCgyMTQ3NDgzNjQ3Kk1hdGgucmFuZG9tKCkpfSxlPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PW5ldyBVaW50MzJBcnJheSgxKTtyZXR1cm4gSS5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHQpLDIxNDc0ODM2NDcmdFswXX1jYXRjaCh0KXtyZXR1cm4gQXQoKX19O2Z1bmN0aW9uIEx0KHQpe3ZhciBlPU10KHQsVWUpO2lmKDUwMDw9ZSYmZygxNSksInRyYW5zYWN0aW9uIiE9KG49UHQodCxXdCkpJiYiaXRlbSIhPW4pe3ZhciBuPU10KHQsJGUpLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCksYT1NdCh0LEhlKTtpZigwPT1hJiZ0LnNldChIZSxyKSwwPChhPU1hdGgucm91bmQoMiooci1hKS8xZTMpKSYmKG49TWF0aC5taW4obithLDIwKSx0LnNldChIZSxyKSksbjw9MCl0aHJvdyJhYm9ydCI7dC5zZXQoJGUsLS1uKX10LnNldChVZSwrK2UpfWZ1bmN0aW9uIEl0KCl7dGhpcy5kYXRhPW5ldyBifUl0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9WHQodCksbj10aGlzLmRhdGEuZ2V0KHQpO3JldHVybiBlJiZudWxsPT1uJiYobj1mKGUuZGVmYXVsdFZhbHVlKT9lLmRlZmF1bHRWYWx1ZSgpOmUuZGVmYXVsdFZhbHVlKSxlJiZlLlo/ZS5aKHRoaXMsdCxuKTpufTt2YXIgUHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09KHQ9dC5nZXQoZSkpPyIiOiIiK3R9LE10PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PSh0PXQuZ2V0KGUpKXx8IiI9PT10PzA6TnVtYmVyKHQpfTtJdC5wcm90b3R5cGUuWj1mdW5jdGlvbih0KXtyZXR1cm4odD10aGlzLmdldCh0KSkmJmYodCk/dDpUfSxJdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSxuKXtpZih0KWlmKCJvYmplY3QiPT10eXBlb2YgdClmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYkdCh0aGlzLHIsdFtyXSxuKTtlbHNlICR0KHRoaXMsdCxlLG4pfTtmdW5jdGlvbiBEdCh0LGUsbixyLGEpe3JldHVybiB0PW5ldyBGdCh0LGUsbixyLGEpLEd0LnNldCh0Lm5hbWUsdCksdC5uYW1lfWZ1bmN0aW9uIHF0KHQsZSl7VnQucHVzaChbbmV3IFJlZ0V4cCgiXiIrdCsiJCIpLGVdKX1mdW5jdGlvbiBVdCh0LGUsbil7cmV0dXJuIER0KHQsZSxuLHZvaWQgMCxIdCl9ZnVuY3Rpb24gSHQoKXt9dmFyICR0PWZ1bmN0aW9uKHQsZSxuLHIpe251bGwhPW4mJmU9PT12biYmYWEudGVzdChuKTt2YXIgYT1YdChlKTthJiZhLm8/YS5vKHQsZSxuLHIpOnQuZGF0YS5zZXQoZSxuLHIpfSxHdD1uZXcgYixWdD1bXSxGdD1mdW5jdGlvbih0LGUsbixyLGEpe3RoaXMubmFtZT10LHRoaXMuRj1lLHRoaXMuWj1yLHRoaXMubz1hLHRoaXMuZGVmYXVsdFZhbHVlPW59LFh0PWZ1bmN0aW9uKHQpe3ZhciBlPUd0LmdldCh0KTtpZighZSlmb3IodmFyIG49MDtuPFZ0Lmxlbmd0aDtuKyspe3ZhciByPVZ0W25dLGE9clswXS5leGVjKHQpO2lmKGEpe2U9clsxXShhKSxHdC5zZXQoZS5uYW1lLGUpO2JyZWFrfX1yZXR1cm4gZX0sQnQ9VXQoImFwaVZlcnNpb24iLCJ2IiksenQ9VXQoImNsaWVudFZlcnNpb24iLCJfdiIpO0R0KCJhbm9ueW1pemVJcCIsImFpcCIpO3ZhciBLdD1EdCgiYWRTZW5zZUlkIiwiYSIpLFd0PUR0KCJoaXRUeXBlIiwidCIpLFp0PUR0KCJoaXRDYWxsYmFjayIpLFl0PUR0KCJoaXRQYXlsb2FkIik7RHQoIm5vbkludGVyYWN0aW9uIiwibmkiKSxEdCgiY3VycmVuY3lDb2RlIiwiY3UiKSxEdCgiZGF0YVNvdXJjZSIsImRzIik7dmFyIEp0PUR0KCJ1c2VCZWFjb24iLHZvaWQgMCwhMSksUXQ9RHQoInRyYW5zcG9ydCIpO0R0KCJzZXNzaW9uQ29udHJvbCIsInNjIiwiIiksRHQoInNlc3Npb25Hcm91cCIsInNnIiksRHQoInF1ZXVlVGltZSIsInF0Iik7dmFyIHRlPUR0KCJfcyIsIl9zIik7RHQoInNjcmVlbk5hbWUiLCJjZCIpO3ZhciBlZT1EdCgibG9jYXRpb24iLCJkbCIsIiIpLG5lPUR0KCJyZWZlcnJlciIsImRyIikscmU9RHQoInBhZ2UiLCJkcCIsIiIpO0R0KCJob3N0bmFtZSIsImRoIik7dmFyIGFlPUR0KCJsYW5ndWFnZSIsInVsIiksb2U9RHQoImVuY29kaW5nIiwiZGUiKTtEdCgidGl0bGUiLCJkdCIsZnVuY3Rpb24oKXtyZXR1cm4gUC50aXRsZXx8dm9pZCAwfSkscXQoImNvbnRlbnRHcm91cChbMC05XSspIixmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ0KHRbMF0sImNnIit0WzFdKX0pO3ZhciBpZT1EdCgic2NyZWVuQ29sb3JzIiwic2QiKSxzZT1EdCgic2NyZWVuUmVzb2x1dGlvbiIsInNyIiksY2U9RHQoInZpZXdwb3J0U2l6ZSIsInZwIiksdWU9RHQoImphdmFFbmFibGVkIiwiamUiKSxsZT1EdCgiZmxhc2hWZXJzaW9uIiwiZmwiKTtEdCgiY2FtcGFpZ25JZCIsImNpIiksRHQoImNhbXBhaWduTmFtZSIsImNuIiksRHQoImNhbXBhaWduU291cmNlIiwiY3MiKSxEdCgiY2FtcGFpZ25NZWRpdW0iLCJjbSIpLER0KCJjYW1wYWlnbktleXdvcmQiLCJjayIpLER0KCJjYW1wYWlnbkNvbnRlbnQiLCJjYyIpO3ZhciBnZT1EdCgiZXZlbnRDYXRlZ29yeSIsImVjIiksaGU9RHQoImV2ZW50QWN0aW9uIiwiZWEiKSxmZT1EdCgiZXZlbnRMYWJlbCIsImVsIiksZGU9RHQoImV2ZW50VmFsdWUiLCJldiIpLHBlPUR0KCJzb2NpYWxOZXR3b3JrIiwic24iKSx2ZT1EdCgic29jaWFsQWN0aW9uIiwic2EiKSxtZT1EdCgic29jaWFsVGFyZ2V0Iiwic3QiKSxiZT1EdCgibDEiLCJwbHQiKSx3ZT1EdCgibDIiLCJwZHQiKSx5ZT1EdCgibDMiLCJkbnMiKSxfZT1EdCgibDQiLCJycnQiKSxPZT1EdCgibDUiLCJzcnQiKSxFZT1EdCgibDYiLCJ0Y3AiKSxUZT1EdCgibDciLCJkaXQiKSx4ZT1EdCgibDgiLCJjbHQiKSxrZT1EdCgibDkiLCJfZ3N0IiksU2U9RHQoImwxMCIsIl9nYnQiKSxDZT1EdCgibDExIiwiX2NzdCIpLGplPUR0KCJsMTIiLCJfY2J0IiksdD1EdCgidGltaW5nQ2F0ZWdvcnkiLCJ1dGMiKSxOZT1EdCgidGltaW5nVmFyIiwidXR2IiksUmU9RHQoInRpbWluZ0xhYmVsIiwidXRsIiksQWU9RHQoInRpbWluZ1ZhbHVlIiwidXR0Iik7RHQoImFwcE5hbWUiLCJhbiIpLER0KCJhcHBWZXJzaW9uIiwiYXYiLCIiKSxEdCgiYXBwSWQiLCJhaWQiLCIiKSxEdCgiYXBwSW5zdGFsbGVySWQiLCJhaWlkIiwiIiksRHQoImV4RGVzY3JpcHRpb24iLCJleGQiKSxEdCgiZXhGYXRhbCIsImV4ZiIpO3ZhciBMZT1EdCgiZXhwSWQiLCJ4aWQiKSxJZT1EdCgiZXhwVmFyIiwieHZhciIpLFBlPUR0KCJleHAiLCJleHAiKSxNZT1EdCgiX3V0bWEiLCJfdXRtYSIpLERlPUR0KCJfdXRteiIsIl91dG16IikscWU9RHQoIl91dG1odCIsIl91dG1odCIpLFVlPUR0KCJfaGMiLHZvaWQgMCwwKSxIZT1EdCgiX3RpIix2b2lkIDAsMCksJGU9RHQoIl90byIsdm9pZCAwLDIwKTtxdCgiZGltZW5zaW9uKFswLTldKykiLGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRnQodFswXSwiY2QiK3RbMV0pfSkscXQoIm1ldHJpYyhbMC05XSspIixmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ0KHRbMF0sImNtIit0WzFdKX0pLER0KCJsaW5rZXJQYXJhbSIsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbih0KXtpZih0LmdldChHZSkpcmV0dXJuIGcoMzUpLGtyLmdlbmVyYXRlKE1yKHQpKTt2YXIgZT1QdCh0LGhuKSxuPVB0KHQsUm4pfHwiIjtyZXR1cm4gZT0iX2dhPTIuIit4KE5yKG4rZSwwKSsiLiIrbisiLSIrZSksdD0odD1Ecih0KSk/KGcoNDQpLCImX2dhYz0xLiIreChbTnIodC5xYSwwKSx0LnRpbWVzdGFtcCx0LnFhXS5qb2luKCIuIikpKToiIixlK3R9LEh0KTt2YXIgR2U9VXQoIl9jZDJsIix2b2lkIDAsITEpLFZlPUR0KCJ1c2FnZSIsIl91IiksRmU9RHQoIl91bSIpO0R0KCJmb3JjZVNTTCIsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBsfSxmdW5jdGlvbih0LGUsbil7ZygzNCksbD0hIW59KTt2YXIgWGU9RHQoIl9qMSIsImppZCIpLEJlPUR0KCJfajIiLCJnamlkIik7cXQoIlxcJiguKikiLGZ1bmN0aW9uKHQpe3ZhciBuLHIsZT1uZXcgRnQodFswXSx0WzFdKSxhPShuPXRbMF0uc3Vic3RyaW5nKDEpLEd0Lm1hcChmdW5jdGlvbih0LGUpe2UuRj09biYmKHI9ZSl9KSxyJiZyLm5hbWUpO3JldHVybiBhJiYoZS5aPWZ1bmN0aW9uKHQpe3JldHVybiB0LmdldChhKX0sZS5vPWZ1bmN0aW9uKHQsZSxuLHIpe3Quc2V0KGEsbixyKX0sZS5GPXZvaWQgMCksZX0pO3ZhciB6ZT1VdCgiX29vdCIpLEtlPUR0KCJwcmV2aWV3VGFzayIpLFdlPUR0KCJjaGVja1Byb3RvY29sVGFzayIpLFplPUR0KCJ2YWxpZGF0aW9uVGFzayIpLFllPUR0KCJjaGVja1N0b3JhZ2VUYXNrIiksSmU9RHQoImhpc3RvcnlJbXBvcnRUYXNrIiksUWU9RHQoInNhbXBsZXJUYXNrIiksdG49RHQoIl9ybHQiKSxlbj1EdCgiYnVpbGRIaXRUYXNrIiksbm49RHQoInNlbmRIaXRUYXNrIikscm49RHQoImNlVGFzayIpLGFuPUR0KCJkZXZJZFRhc2siKSxvbj1EdCgidGltaW5nVGFzayIpLHNuPUR0KCJkaXNwbGF5RmVhdHVyZXNUYXNrIiksY249RHQoImN1c3RvbVRhc2siKSx1bj1EdCgiZnBzQ3Jvc3NEb21haW5UYXNrIiksbG49VXQoIl9jdGEiKSxnbj1VdCgibmFtZSIpLGhuPVV0KCJjbGllbnRJZCIsImNpZCIpLGZuPVV0KCJjbGllbnRJZFRpbWUiKSxkbj1VdCgic3RvcmVkQ2xpZW50SWQiKSxwbj1EdCgidXNlcklkIiwidWlkIiksdm49VXQoInRyYWNraW5nSWQiLCJ0aWQiKSxtbj1VdCgiY29va2llTmFtZSIsdm9pZCAwLCJfZ2EiKSxibj1VdCgiY29va2llRG9tYWluIiksd249VXQoImNvb2tpZVBhdGgiLHZvaWQgMCwiLyIpLHluPVV0KCJjb29raWVFeHBpcmVzIix2b2lkIDAsNjMwNzJlMyksX249VXQoImNvb2tpZVVwZGF0ZSIsdm9pZCAwLCEwKSxPbj1VdCgiY29va2llRmxhZ3MiLHZvaWQgMCwiIiksRW49VXQoImxlZ2FjeUNvb2tpZURvbWFpbiIpLFRuPVV0KCJsZWdhY3lIaXN0b3J5SW1wb3J0Iix2b2lkIDAsITApLHhuPVV0KCJzdG9yYWdlIix2b2lkIDAsImNvb2tpZSIpLGtuPVV0KCJhbGxvd0xpbmtlciIsdm9pZCAwLCExKSxTbj1VdCgiYWxsb3dBbmNob3IiLHZvaWQgMCwhMCksQ249VXQoInNhbXBsZVJhdGUiLCJzZiIsMTAwKSxqbj1VdCgic2l0ZVNwZWVkU2FtcGxlUmF0ZSIsdm9pZCAwLDEpLE5uPVV0KCJhbHdheXNTZW5kUmVmZXJyZXIiLHZvaWQgMCwhMSksUm49VXQoIl9naWQiLCJfZ2lkIiksQW49VXQoIl9nY24iKSxMbj1VdCgidXNlQW1wQ2xpZW50SWQiKSxJbj1VdCgiX2djbGlkIiksUG49VXQoIl9ndCIpLE1uPVV0KCJfZ2UiLHZvaWQgMCw3Nzc2ZTYpLERuPVV0KCJfZ2Nsc3JjIikscW49VXQoInN0b3JlR2FjIix2b2lkIDAsITApLFVuPUR0KCJfeF8xOSIpLEhuPUR0KCJfZnBsYyIsIl9mcGxjIiksJG49VXQoIl9jcyIpLEduPVV0KCJfdXNlVXAiLHZvaWQgMCwhMSksVm49RHQoInVwIiwidXAiKSxGbj1EdCgiX3RhYyIsdm9pZCAwLCExKSxYbj1VdCgiX2dicmFpZCIpLEJuPVV0KCJfZ2J0Iiksem49VXQoIl9nYmUiLHZvaWQgMCw3Nzc2ZTYpLEtuPUR0KCJ0cmFuc3BvcnRVcmwiKSxXbj1EdCgiX3IiLCJfciIpLFpuPUR0KCJfc2xjIiwiX3NsYyIpLFluPUR0KCJfZHAiKSxKbj1EdCgiX2p0Iix2b2lkIDAsIm4iKSxRbj1EdCgiYWxsb3dBZEZlYXR1cmVzIix2b2lkIDAsITApLHRyPUR0KCJhbGxvd0FkUGVyc29uYWxpemF0aW9uU2lnbmFscyIsdm9pZCAwLCEwKTtmdW5jdGlvbiBlcihlLHQsbixyKXt0W2VdPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiByJiZnKHIpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKHQpe3Rocm93IGJ0KCJleGMiLGUsdCYmdC5uYW1lKSx0fX19ZnVuY3Rpb24gbnIodCl7dmFyIGU7KGU9KGU9UHQodCxVbikmJnQuZ2V0KEdlKSk/ISgoZT1rci5nZXQodC5nZXQoU24pKSkmJmUuX2ZwbGMpOmUpJiYhY3IodCkmJnQuc2V0KEhuLCIwIil9ZnVuY3Rpb24gcnIodCxlKXt2YXIgbj10W2VdOyhpc05hTihuKXx8MS8wPT1ufHxuPDApJiYodFtlXT12b2lkIDApfWZ1bmN0aW9uIGFyKHQpe2lmKCJjb29raWUiPT1QdCh0LHhuKSYmIWdyJiYoaHIodCksIWdyKSl0aHJvdyJhYm9ydCJ9ZnVuY3Rpb24gb3IodCl7dmFyIGUsbixyO3QuZ2V0KFRuKSYmKGU9UHQodCxibiksKHI9RXIoIl9fdXRtYSIsbj1QdCh0LEVuKXx8QSgpLGUpKSYmKGcoMTkpLHQuc2V0KHFlLChuZXcgRGF0ZSkuZ2V0VGltZSgpLCEwKSx0LnNldChNZSxyLlIpLChlPUVyKCJfX3V0bXoiLG4sZSkpJiZyLmhhc2g9PWUuaGFzaCYmdC5zZXQoRGUsZS5SKSkpfWZ1bmN0aW9uIGlyKHQsZSl7ZT1HKFB0KHQsZSkpO3ZhciBuPWJyKFB0KHQsYm4pKS5zcGxpdCgiLiIpLmxlbmd0aDtyZXR1cm4gMTwodD15cihQdCh0LHduKSkpJiYobis9Ii0iK3QpLGU/WyJHQTEiLG4sZV0uam9pbigiLiIpOiIifWZ1bmN0aW9uIHNyKCl7dmFyIHQ9W10sZT1BKCkuc3BsaXQoIi4iKTtpZig0PT1lLmxlbmd0aCl7dmFyIG49ZVtlLmxlbmd0aC0xXTtpZihwYXJzZUludChuLDEwKT09bilyZXR1cm5bIm5vbmUiXX1mb3Iobj1lLmxlbmd0aC0yOzA8PW47bi0tKXQucHVzaChlLnNsaWNlKG4pLmpvaW4oIi4iKSk7cmV0dXJuIGU9UC5sb2NhdGlvbi5ob3N0bmFtZSxGLnRlc3QoZSl8fFYudGVzdChlKXx8dC5wdXNoKCJub25lIiksdH12YXIgY3I9ZnVuY3Rpb24odCl7aWYoImNvb2tpZSI9PXQuZ2V0KHhuKSlyZXR1cm4gMDwodD1IKCJGUExDIikpLmxlbmd0aD90WzBdOnZvaWQgMH0sdXI9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5taW4oTXQodCxqbiksMTAwKTtyZXR1cm4hKG8oUHQodCxobikpJTEwMD49ZSl9LGxyPWZ1bmN0aW9uKHQpe3ZhciBlLG49e307KGZ1bmN0aW9uKHQpe3ZhciBlPUkucGVyZm9ybWFuY2V8fEkud2Via2l0UGVyZm9ybWFuY2UsZTtpZighKGU9ZSYmZS50aW1pbmcpKXJldHVybiExO3ZhciBuPWUubmF2aWdhdGlvblN0YXJ0O3JldHVybiAwPT1uPyExOih0W2JlXT1lLmxvYWRFdmVudFN0YXJ0LW4sdFt5ZV09ZS5kb21haW5Mb29rdXBFbmQtZS5kb21haW5Mb29rdXBTdGFydCx0W0VlXT1lLmNvbm5lY3RFbmQtZS5jb25uZWN0U3RhcnQsdFtPZV09ZS5yZXNwb25zZVN0YXJ0LWUucmVxdWVzdFN0YXJ0LHRbd2VdPWUucmVzcG9uc2VFbmQtZS5yZXNwb25zZVN0YXJ0LHRbX2VdPWUuZmV0Y2hTdGFydC1uLHRbVGVdPWUuZG9tSW50ZXJhY3RpdmUtbix0W3hlXT1lLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0LW4sdFtrZV09a2EuTC1uLHRbU2VdPWthLnlhLW4sSS5nb29nbGVfdGFnX21hbmFnZXImJkkuZ29vZ2xlX3RhZ19tYW5hZ2VyLl9saSYmKGU9SS5nb29nbGVfdGFnX21hbmFnZXIuX2xpLHRbQ2VdPWUuY3N0LHRbamVdPWUuY2J0KSwhMCl9KG4pfHxmdW5jdGlvbih0KXtpZihJLnRvcCE9SSlyZXR1cm4hMTt2YXIgZT1JLmV4dGVybmFsLG49ZSYmZS5vbmxvYWRUO3JldHVybigwPChuPTIxNDc0ODM2NDg8KG49ZSYmIWUuaXNWYWxpZExvYWRUaW1lP3ZvaWQgMDpuKT92b2lkIDA6bikmJmUuc2V0UGFnZVJlYWR5VGltZSgpLG51bGw9PW4pPyExOih0W2JlXT1uLCEwKX0obikpJiYobnVsbD09KGU9bltiZV0pfHwxLzA9PWV8fGlzTmFOKGUpfHwoMDxlPyhycihuLHllKSxycihuLEVlKSxycihuLE9lKSxycihuLHdlKSxycihuLF9lKSxycihuLFRlKSxycihuLHhlKSxycihuLGtlKSxycihuLFNlKSxycihuLENlKSxycihuLGplKSxNKGZ1bmN0aW9uKCl7dChuKX0sMTApKTpwKEksImxvYWQiLGZ1bmN0aW9uKCl7bHIodCl9LCExKSkpfSxncj0hMSxocj1mdW5jdGlvbih0KXt2YXIgZSxuLHIsYSxvLGkscyxjLHU7ImNvb2tpZSI9PVB0KHQseG4pJiYoIXQuZ2V0KF9uKSYmUHQodCxkbik9PVB0KHQsaG4pfHwoZT0xZTMqTXQodCx5biksZnIodCxobixtbixlKSx0LmRhdGEuc2V0KGRuLFB0KHQsaG4pKSksIXQuZ2V0KF9uKSYmZHIodCk9PVB0KHQsUm4pfHxmcih0LFJuLEFuLDg2NGU1KSx0LmdldChxbik/KGU9UHQodCxJbikpJiYobj0wPT09KG49TWF0aC5taW4oTXQodCxNbiksMWUzKk10KHQseW4pKSk/MDpNYXRoLm1pbihuLDFlMypNdCh0LFBuKStuLShuZXcgRGF0ZSkuZ2V0VGltZSgpKSx0LmRhdGEuc2V0KE1uLG4pLHI9e30sYT1QdCh0LFBuKSxvPVB0KHQsRG4pLGk9d3IoUHQodCx3bikpLHM9YnIoUHQodCxibikpLGM9UHQodCx2biksdT1QdCh0LE9uKSxvJiYiYXcuZHMiIT1vP3ImJihyLnVhPSEwKTooZT1bIjEiLGEsRyhlKV0uam9pbigiLiIpLDA8PW4mJihyJiYoci50YT0hMCksJCgiX2dhY18iK0coYyksZSxpLHMsYyxuLHUpKSksX3IocikpOmcoNzUpLHQuZ2V0KHFuKSYmKGU9UHQodCxYbikpJiYobj0wPT09KG49TWF0aC5taW4oTXQodCx6biksMWUzKk10KHQseW4pKSk/MDpNYXRoLm1pbihuLDFlMypNdCh0LEJuKStuLShuZXcgRGF0ZSkuZ2V0VGltZSgpKSx0LmRhdGEuc2V0KHpuLG4pLHI9e30sdT1QdCh0LEJuKSxpPXdyKFB0KHQsd24pKSxzPWJyKFB0KHQsYm4pKSxjPVB0KHQsdm4pLHQ9UHQodCxPbiksZT1bIjEiLHUsRyhlKV0uam9pbigiLiIpLDA8PW4mJihyJiYoci50YT0hMCksJCgiX2dhY19nYl8iK0coYyksZSxpLHMsYyxuLHQpKSxPcihyKSkpfSxmcj1mdW5jdGlvbih0LGUsbixyKXt2YXIgYT1pcih0LGUpO2lmKGEpe249UHQodCxuKTt2YXIgbz13cihQdCh0LHduKSksaT1icihQdCh0LGJuKSkscz1QdCh0LE9uKSxjPVB0KHQsdm4pO2lmKCJhdXRvIiE9aSkkKG4sYSxvLGksYyxyLHMpJiYoZ3I9ITApO2Vsc2V7ZygzMik7Zm9yKHZhciB1PXNyKCksbD0wO2w8dS5sZW5ndGg7bCsrKWlmKGk9dVtsXSx0LmRhdGEuc2V0KGJuLGkpLGE9aXIodCxlKSwkKG4sYSxvLGksYyxyLHMpKXJldHVybiB2b2lkKGdyPSEwKTt0LmRhdGEuc2V0KGJuLCJhdXRvIil9fX0sZHI9ZnVuY3Rpb24odCl7dmFyIGU9SChQdCh0LEFuKSk7cmV0dXJuIHByKHQsZSl9LHByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZyKGUsUHQodCxibiksUHQodCx3bikpfSx2cj1mdW5jdGlvbih0LGUsbil7aWYodCYmISh0Lmxlbmd0aDwxKSl7Zm9yKHZhciByPVtdLGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIG89dFthXSxpPW8uc3BsaXQoIi4iKSxzPWkuc2hpZnQoKTsoaT0oIkdBMSI9PXN8fCIxIj09cykmJjE8aS5sZW5ndGg/KDE9PShvPWkuc2hpZnQoKS5zcGxpdCgiLSIpKS5sZW5ndGgmJihvWzFdPSIxIiksb1swXSo9MSxvWzFdKj0xLHtIOm8sczppLmpvaW4oIi4iKX0pOnUudGVzdChvKT97SDpbMCwwXSxzOm99OnZvaWQgMCkmJnIucHVzaChpKX1yZXR1cm4gMT09ci5sZW5ndGg/KGcoMTMpLHJbMF0ucyk6MCE9ci5sZW5ndGg/KGcoMTQpLDE9PShyPW1yKHIsYnIoZSkuc3BsaXQoIi4iKS5sZW5ndGgsMCkpLmxlbmd0aD9yWzBdLnM6KDE8KHI9bXIocix5cihuKSwxKSkubGVuZ3RoJiZnKDQxKSxyWzBdJiZyWzBdLnMpKTp2b2lkIGcoMTIpfWcoMTIpfSxtcj1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciByLGE9W10sbz1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBzPXRbaV07cy5IW25dPT1lP2EucHVzaChzKTpudWxsPT1yfHxzLkhbbl08cj8obz1bc10scj1zLkhbbl0pOnMuSFtuXT09ciYmby5wdXNoKHMpfXJldHVybiAwPGEubGVuZ3RoP2E6b30sYnI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PXQuaW5kZXhPZigiLiIpP3Quc3Vic3RyKDEpOnR9LHdyPWZ1bmN0aW9uKHQpe3JldHVybiB0PzAhPSh0PTE8dC5sZW5ndGgmJnQubGFzdEluZGV4T2YoIi8iKT09dC5sZW5ndGgtMT90LnN1YnN0cigwLHQubGVuZ3RoLTEpOnQpLmluZGV4T2YoIi8iKT8iLyIrdDp0OiIvIn0seXI9ZnVuY3Rpb24odCl7cmV0dXJuIi8iPT0odD13cih0KSk/MTp0LnNwbGl0KCIvIikubGVuZ3RofSxfcj1mdW5jdGlvbih0KXt0LnRhJiZnKDc3KSx0Lm5hJiZnKDc0KSx0LnBhJiZnKDczKSx0LnVhJiZnKDY5KX0sT3I9ZnVuY3Rpb24odCl7dC50YSYmZyg4NSksdC5uYSYmZyg4NiksdC5wYSYmZyg4Nyl9O2Z1bmN0aW9uIEVyKHQsZSxuKXsibm9uZSI9PWUmJihlPSIiKTt2YXIgcj1bXSxhPUgodCk7dD0iX191dG1hIj09dD82OjI7Zm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBpPSgiIithW29dKS5zcGxpdCgiLiIpO2kubGVuZ3RoPj10JiZyLnB1c2goe2hhc2g6aVswXSxSOmFbb10sTzppfSl9aWYoMCE9ci5sZW5ndGgpcmV0dXJuIDEhPXIubGVuZ3RoJiYoVHIoZSxyKXx8VHIobixyKXx8VHIobnVsbCxyKSl8fHJbMF19ZnVuY3Rpb24gVHIodCxlKXt2YXIgbjtudWxsPT10P249dD0xOihuPW8odCksdD1vKE8odCwiLiIpP3Quc3Vic3RyaW5nKDEpOiIuIit0KSk7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspaWYoZVtyXS5oYXNoPT1ufHxlW3JdLmhhc2g9PXQpcmV0dXJuIGVbcl19dmFyIHhyPW5ldyBSZWdFeHAoL15odHRwcz86XC9cLyhbXlwvOl0rKS8pLGtyPUkuZ29vZ2xlX3RhZ19kYXRhLmdsQnJpZGdlLFNyPVJlZ0V4cCgiKC4qKShbPyYjXSkoPzpfZ2E9W14mI10qKSg/OiY/KSguKikiKSxDcj1SZWdFeHAoIiguKikoWz8mI10pKD86X2dhYz1bXiYjXSopKD86Jj8pKC4qKSIpO2Z1bmN0aW9uIGpyKHQsZSl7dmFyIG49bmV3IERhdGUscj1JLm5hdmlnYXRvcixhPXIucGx1Z2luc3x8W107Zm9yKHQ9W3Qsci51c2VyQWdlbnQsbi5nZXRUaW1lem9uZU9mZnNldCgpLG4uZ2V0WWVhcigpLG4uZ2V0RGF0ZSgpLG4uZ2V0SG91cnMoKSxuLmdldE1pbnV0ZXMoKStlXSxlPTA7ZTxhLmxlbmd0aDsrK2UpdC5wdXNoKGFbZV0uZGVzY3JpcHRpb24pO3JldHVybiBvKHQuam9pbigiLiIpKX1mdW5jdGlvbiBOcih0LGUpe3ZhciBuPW5ldyBEYXRlLHI9SS5uYXZpZ2F0b3IsYT1uLmdldEhvdXJzKCkrTWF0aC5mbG9vcigobi5nZXRNaW51dGVzKCkrZSkvNjApO3JldHVybiBvKFt0LHIudXNlckFnZW50LHIubGFuZ3VhZ2V8fCIiLG4uZ2V0VGltZXpvbmVPZmZzZXQoKSxuLmdldFllYXIoKSxuLmdldERhdGUoKStNYXRoLmZsb29yKGEvMjQpLCgyNCthKSUyNCwoNjArbi5nZXRNaW51dGVzKCkrZSklNjBdLmpvaW4oIi4iKSl9ZnVuY3Rpb24gUnIodCl7Zyg0OCksdGhpcy50YXJnZXQ9dCx0aGlzLlQ9ITF9UnIucHJvdG90eXBlLmNhPWZ1bmN0aW9uKHQsZSl7aWYodCl7aWYodGhpcy50YXJnZXQuZ2V0KEdlKSlyZXR1cm4ga3IuZGVjb3JhdGUoTXIodGhpcy50YXJnZXQpLHQsZSk7aWYodC50YWdOYW1lKXtpZigiYSI9PXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiB2b2lkKHQuaHJlZiYmKHQuaHJlZj1Bcih0aGlzLHQuaHJlZixlKSkpO2lmKCJmb3JtIj09dC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIExyKHRoaXMsdCl9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P0FyKHRoaXMsdCxlKTp2b2lkIDB9fTt2YXIgQXI9ZnVuY3Rpb24odCxlLG4peyhyPVNyLmV4ZWMoZSkpJiYzPD1yLmxlbmd0aCYmKGU9clsxXSsoclszXT9yWzJdK3JbM106IiIpKSwocj1Dci5leGVjKGUpKSYmMzw9ci5sZW5ndGgmJihlPXJbMV0rKHJbM10/clsyXStyWzNdOiIiKSksdD10LnRhcmdldC5nZXQoImxpbmtlclBhcmFtIik7dmFyIHI9ZS5pbmRleE9mKCI/IiksYT1lLmluZGV4T2YoIiMiKTtyZXR1cm4oZT0oZT1uP2UrKC0xPT1hPyIjIjoiJiIpK3Q6LTE9PWE/ZSsoLTE9PT1yPyI/IjoiJiIpK3Q6ZS5zdWJzdHJpbmcoMCxhKSsoLTE9PT1yfHxhPHI/Ij8iOiImIikrdCtlLnN1YnN0cmluZyhhKSkucmVwbGFjZSgvJitfZ2E9LywiJl9nYT0iKSkucmVwbGFjZShSZWdFeHAoIiYrX2dhYz0iKSwiJl9nYWM9Iil9LExyPWZ1bmN0aW9uKHQsZSl7aWYoZSYmZS5hY3Rpb24paWYoImdldCI9PWUubWV0aG9kLnRvTG93ZXJDYXNlKCkpe3Q9dC50YXJnZXQuZ2V0KCJsaW5rZXJQYXJhbSIpLnNwbGl0KCImIik7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe2Zvcih2YXIgcj0oYT10W25dLnNwbGl0KCI9IikpWzFdLGE9YVswXSxvPWUuY2hpbGROb2Rlc3x8W10saT0hMSxzPTA7czxvLmxlbmd0aDtzKyspaWYob1tzXS5uYW1lPT1hKXtvW3NdLnNldEF0dHJpYnV0ZSgidmFsdWUiLHIpLGk9ITA7YnJlYWt9aXx8KChvPVAuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksby5zZXRBdHRyaWJ1dGUoIm5hbWUiLGEpLG8uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsciksZS5hcHBlbmRDaGlsZChvKSl9fWVsc2UicG9zdCI9PWUubWV0aG9kLnRvTG93ZXJDYXNlKCkmJihlLmFjdGlvbj1Bcih0LGUuYWN0aW9uKSl9O2Z1bmN0aW9uIElyKHQsZSl7aWYoZSE9UC5sb2NhdGlvbi5ob3N0bmFtZSlmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZih0W25daW5zdGFuY2VvZiBSZWdFeHApe2lmKHRbbl0udGVzdChlKSlyZXR1cm4gMX1lbHNlIGlmKDA8PWUuaW5kZXhPZih0W25dKSlyZXR1cm4gMX1mdW5jdGlvbiBQcih0LGUpe3JldHVybiBlIT1qcih0LDApJiZlIT1qcih0LC0xKSYmZSE9anIodCwtMikmJmUhPU5yKHQsMCkmJmUhPU5yKHQsLTEpJiZlIT1Ocih0LC0yKX1mdW5jdGlvbiBNcih0KXt2YXIgZT1Ecih0KSxuPXt9O3JldHVybiBuLl9nYT10LmdldChobiksbi5fZ2lkPXQuZ2V0KFJuKXx8dm9pZCAwLG4uX2dhYz1lP1tlLnFhLGUudGltZXN0YW1wXS5qb2luKCIuIik6dm9pZCAwLGU9dC5nZXQoSG4pLHQ9Y3IodCksbi5fZnBsYz1lJiYiMCIhPT1lP2U6dCxufWZ1bmN0aW9uIERyKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG51bGw9PXR8fCIiPT09dD8wOk51bWJlcih0KX12YXIgbj10LmdldChJbik7aWYobiYmdC5nZXQocW4pKXt2YXIgcj1lKHQuZ2V0KFBuKSk7aWYoISgxZTMqcitlKHQuZ2V0KE1uKSk8PShuZXcgRGF0ZSkuZ2V0VGltZSgpKSlyZXR1cm57dGltZXN0YW1wOnIscWE6bn07Zyg3Nil9fVJyLnByb3RvdHlwZS5TPWZ1bmN0aW9uKHIsYSx0KXtmdW5jdGlvbiBlKHQpe3RyeXt0PXR8fEkuZXZlbnQ7dDp7dmFyIGU9dC50YXJnZXR8fHQuc3JjRWxlbWVudDtmb3IodD0xMDA7ZSYmMDx0Oyl7aWYoZS5ocmVmJiZlLm5vZGVOYW1lLm1hdGNoKC9eYSg/OnJlYSk/JC9pKSl7dmFyIG49ZTticmVhayB0fWU9ZS5wYXJlbnROb2RlLHQtLX1uPXt9fSgiaHR0cDoiPT1uLnByb3RvY29sfHwiaHR0cHM6Ij09bi5wcm90b2NvbCkmJklyKHIsbi5ob3N0bmFtZXx8IiIpJiZuLmhyZWYmJihuLmhyZWY9QXIobyxuLmhyZWYsYSkpfWNhdGNoKHQpe2coMjYpfX12YXIgbz10aGlzO3RoaXMudGFyZ2V0LmdldChHZSk/a3IuYXV0byhmdW5jdGlvbigpe3JldHVybiBNcihvLnRhcmdldCl9LHIsYT8iZnJhZ21lbnQiOiIiLHQpOih0aGlzLlR8fCh0aGlzLlQ9ITAscChQLCJtb3VzZWRvd24iLGUsITEpLHAoUCwia2V5dXAiLGUsITEpKSx0JiZwKFAsInN1Ym1pdCIsZnVuY3Rpb24odCl7dmFyIGU7KHQ9KHQ9dHx8SS5ldmVudCkudGFyZ2V0fHx0LnNyY0VsZW1lbnQpJiZ0LmFjdGlvbiYmKChlPXQuYWN0aW9uLm1hdGNoKHhyKSkmJklyKHIsZVsxXSkmJkxyKG8sdCkpfSkpfSxSci5wcm90b3R5cGUuJD1mdW5jdGlvbih0KXt2YXIgZSxuOyF0fHx2b2lkIDAhPT0obj0oZT10aGlzKS50YXJnZXQuZ2V0KCRuKSkmJmtyLnBhc3N0aHJvdWdoKGZ1bmN0aW9uKCl7aWYobigiYW5hbHl0aWNzX3N0b3JhZ2UiKSlyZXR1cm57fTt2YXIgdD17fTtyZXR1cm4gdC5fZ2E9ZS50YXJnZXQuZ2V0KGhuKSx0Ll91cD0iMSIsdH0sMSwhMCl9O2Z1bmN0aW9uIHFyKHQsZSxuLHIpe249bnx8e307dmFyIGE9MSxvPXtpZDplLHR5cGU6YT1Wci50ZXN0KGUpPzI6YSxCOm4uZGF0YUxheWVyfHwiZGF0YUxheWVyIixHOiExfSxpPXZvaWQgMDtyZXR1cm4gdC5nZXQoIiZndG0iKT09ZSYmKG8uRz0hMCksMT09PWE/KG8uaWE9ISF0LmdldCgiYW5vbnltaXplSXAiKSxvLnN5bmM9ciwidDAiIT0oZT1TdHJpbmcodC5nZXQoIm5hbWUiKSkpJiYoby50YXJnZXQ9ZSksVShTdHJpbmcodC5nZXQoInRyYWNraW5nSWQiKSkpfHwoby5jbGllbnRJZD1TdHJpbmcodC5nZXQoaG4pKSxvLmthPU51bWJlcih0LmdldChmbikpLG49bi5wYWxpbmRyb21lP1hyOkZyLG49KG49UC5jb29raWUucmVwbGFjZSgvXnwoOyArKS9nLCI7IikubWF0Y2gobikpP24uc29ydCgpLmpvaW4oIiIpLnN1YnN0cmluZygxKTp2b2lkIDAsby5sYT1uLG8ucWE9UihQdCh0LGVlKSwiZ2NsaWQiKSkpOjI9PT1hJiYoby5jb250ZXh0PSJjIixpPXthbGxvd19nb29nbGVfc2lnbmFsczp0LmdldChRbiksYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uX3NpZ25hbHM6dC5nZXQodHIpfSksS3IobyxpKSx6cihvKX1mdW5jdGlvbiBVcih0LGUpe3ZhciBuLHI7KHQ9dC5tb2RlbCkuZ2V0KCJkY0xvYWRlZCIpfHwoKG49bmV3IGkoaCh0KSkpLnNldCgyOSksdC5zZXQoRmUsbi5DKSwoZT1lfHx7fSlbbW5dJiYocj1HKGVbbW5dKSksZnVuY3Rpb24obix0KXt2YXIgcj10LmdldChlbik7dC5zZXQoZW4sZnVuY3Rpb24odCl7WXIobix0LFhlKSxZcihuLHQsQmUpO3ZhciBlPXIodCk7cmV0dXJuIEpyKG4sdCksZX0pO3ZhciBhPXQuZ2V0KG5uKTt0LnNldChubixmdW5jdGlvbih0KXt2YXIgZSxuPWEodCk7cmV0dXJuIFFyKHQpJiYoZyg4MCksZT17VTplYSh0LDEpLGdvb2dsZTplYSh0LDIpLGNvdW50OjB9LGZ0KCJodHRwczovL3N0YXRzLmcuZG91YmxlY2xpY2submV0L2ovY29sbGVjdCIsZS5VLGUpLHQuc2V0KFhlLCIiLCEwKSksbn0pfShlPW5ldyBacih0LHIpLHQpLHQuc2V0KCJkY0xvYWRlZCIsITApKX1mdW5jdGlvbiBIcih0KXt2YXIgZSxuO3QuZ2V0KCJkY0xvYWRlZCIpfHwiY29va2llIiE9dC5nZXQoeG4pfHwoZT1uZXcgWnIodCksWXIoZSx0LFhlKSxZcihlLHQsQmUpLEpyKGUsdCksZT1Rcih0KSxuPXRhKHQpLGUmJnQuc2V0KFduLDEsITApLG4mJnQuc2V0KFpuLDEsITApLChlfHxuKSYmKHQuc2V0KEpuLCJkIiwhMCksZyg3OSksdC5zZXQoWW4se1U6ZWEodCwxKSxnb29nbGU6ZWEodCwyKSxWOm5hKHQpLGNvdW50OjB9LCEwKSkpfWZ1bmN0aW9uICRyKHQpe2Z1bmN0aW9uIG4odCxlKXtvLm1vZGVsLmRhdGEuc2V0KHQsZSl9ZnVuY3Rpb24gZSh0LGUpe24odCxlKSxvLmZpbHRlcnMuYWRkKHQpfXZhciByLGEsbz10aGlzO3RoaXMubW9kZWw9bmV3IEl0LHRoaXMuZmlsdGVycz1uZXcgUSxuKGduLHRbZ25dKSxuKHZuLChyPXRbdm5dKT9yLnJlcGxhY2UoL15bXHNceGEwXSt8W1xzXHhhMF0rJC9nLCIiKToiIiksbihtbix0W21uXSksbihibix0W2JuXXx8QSgpKSxuKHduLHRbd25dKSxuKHluLHRbeW5dKSxuKF9uLHRbX25dKSxuKE9uLHRbT25dKSxuKEVuLHRbRW5dKSxuKFRuLHRbVG5dKSxuKGtuLHRba25dKSxuKFNuLHRbU25dKSxuKENuLHRbQ25dKSxuKGpuLHRbam5dKSxuKE5uLHRbTm5dKSxuKHhuLHRbeG5dKSxuKHBuLHRbcG5dKSxuKGZuLHRbZm5dKSxuKExuLHRbTG5dKSxuKHFuLHRbcW5dKSxuKEdlLHRbR2VdKSxuKFVuLHRbVW5dKSxuKEduLHRbR25dKSxuKCRuLHRbJG5dKSxuKEJ0LDEpLG4oenQsImo5NiIpLGUobG4sTnQpLGUoemUsT3QpLGUoY24sVCksZShLZSxTdCksZShXZSxFdCksZShaZSxqdCksZShZZSxhciksZShKZSxvciksZShRZSxfdCksZSh0bixMdCksZShybixrdCksZShhbixDdCksZShzbixIciksZSh1bixuciksZShlbixUdCksZShubix4dCksZShvbiwoYT10aGlzLGZ1bmN0aW9uKHQpe3ZhciBlLG4scjsicGFnZXZpZXciIT10LmdldChXdCl8fGEuSXx8KGEuST0hMCxlPXVyKHQpLG49MDxSKFB0KHQsZWUpLCJnY2xpZCIpLmxlbmd0aCxyPTA8UihQdCh0LGVlKSwid2JyYWlkIikubGVuZ3RoLChlfHxufHxyKSYmbHIoZnVuY3Rpb24odCl7ZSYmYS5zZW5kKCJ0aW1pbmciLHQpLChufHxyKSYmYS5zZW5kKCJhZHRpbWluZyIsdCl9KSl9KSksY2EodGhpcy5tb2RlbCksc2EodGhpcy5tb2RlbCx0W2huXSksdGhpcy5tb2RlbC5zZXQoS3QsKHQ9SS5nYUdsb2JhbD1JLmdhR2xvYmFsfHx7fSkuaGlkPXQuaGlkfHxBdCgpKX12YXIgR3I9L14oR1RNfE9QVCktW0EtWjAtOV0rJC8sVnI9L15HLVtBLVowLTldKyQvLEZyPS87X2dhZXhwPVteO10qL2csWHI9LzsoKF9fdXRtYT0pfChbXjs9XSs9R0FYP1xkK1wuKSlbXjtdKi9nLEJyPS9eaHR0cHM/OlwvXC9bXHdcLS5dK1wuZ29vZ2xlLmNvbSg6XGQrKT9cL29wdGltaXplXC9vcHQtbGF1bmNoXC5odG1sXD8uKiQvLHpyPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlKXtlJiYobis9IiYiK3QrIj0iK3goZSkpfXZhciBuPVoodC50eXBlKSt4KHQuaWQpO3JldHVybiJkYXRhTGF5ZXIiIT10LkImJmUoImwiLHQuQiksZSgiY3giLHQuY29udGV4dCksZSgidCIsdC50YXJnZXQpLGUoImNpZCIsdC5jbGllbnRJZCksZSgiY2lkdCIsdC5rYSksZSgiZ2FjIix0LmxhKSxlKCJhaXAiLHQuaWEpLHQuc3luYyYmZSgibSIsInN5bmMiKSxlKCJjeWNsZSIsdC5HKSx0LnFhJiZlKCJnY2xpZCIsdC5xYSksQnIudGVzdChQLnJlZmVycmVyKSYmZSgiY2IiLFN0cmluZyhBdCgpKSksbn0sS3I9ZnVuY3Rpb24ocix0KXt2YXIgZT0obmV3IERhdGUpLmdldFRpbWUoKTtJW3IuQl09SVtyLkJdfHxbXSxlPXsiZ3RtLnN0YXJ0IjplfSxyLnN5bmN8fChlLmV2ZW50PSJndG0uanMiKSxJW3IuQl0ucHVzaChlKSwyPT09ci50eXBlJiZmdW5jdGlvbih0LGUsbil7SVtyLkJdLnB1c2goYXJndW1lbnRzKX0oImNvbmZpZyIsci5pZCx0KX0sV3I9e30sWnI9ZnVuY3Rpb24odCxlKXtlPWV8fCgoZT1QdCh0LGduKSkmJiJ0MCIhPWU/cmEudGVzdChlKT8iX2dhdF8iK0coUHQodCx2bikpOiJfZ2F0XyIrRyhlKToiX2dhdCIpLHRoaXMuWT1lfSxZcj1mdW5jdGlvbih0LGUsbil7ITE9PT1lLmdldChRbil8fGUuZ2V0KG4pfHwoIjEiPT1IKHQuWSlbMF0/ZS5zZXQobiwiIiwhMCk6ZS5zZXQobiwiIitBdCgpLCEwKSl9LEpyPWZ1bmN0aW9uKHQsZSl7UXIoZSkmJiQodC5ZLCIxIixQdChlLHduKSxQdChlLGJuKSxQdChlLHZuKSw2ZTQsUHQoZSxPbikpfSxRcj1mdW5jdGlvbih0KXtyZXR1cm4hIXQuZ2V0KFhlKSYmITEhPT10LmdldChRbil9LHRhPWZ1bmN0aW9uKHQpe3JldHVybiFXcltQdCh0LHZuKV0mJnZvaWQgMD09PXQuZ2V0KCImZ3RtIikmJnZvaWQgMD09PXQuZ2V0KFF0KSYmdm9pZCAwPT09dC5nZXQoS24pJiZ2b2lkIDA9PT10LmdldChVbil9LGVhPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbih0KXtYdCh0KS5GJiZyLnNldChYdCh0KS5GLGUuZ2V0KHQpKX12YXIgcj1uZXcgYjtuKEJ0KSxuKHp0KSxuKHZuKSxuKGhuKSxuKFhlKSwxPT10JiYobihwbiksbihCZSksbihSbikpLCExPT09ZS5nZXQodHIpJiZyLnNldCgibnBhIiwiMSIpLHIuc2V0KFh0KFZlKS5GLHcoZSkpO3ZhciBhPSIiO3JldHVybiByLm1hcChmdW5jdGlvbih0LGUpe2ErPXgodCkrIj0iLGErPXgoIiIrZSkrIiYifSksYSs9Ino9IitBdCgpLDE9PXQ/YT0idD1kYyZhaXA9MSZfcj0zJiIrYToyPT10JiYoYT0idD1zciZhaXA9MSZfcj00JnNsZl9yZD0xJiIrYSksYX0sbmE9ZnVuY3Rpb24obil7aWYodGEobikpcmV0dXJuIFdyW1B0KG4sdm4pXT0hMCxmdW5jdGlvbih0KXt2YXIgZTt0JiYhV3JbdF0mJihlPXFyKG4sdCksaihlKSxXclt0XT0hMCl9fSxyYT0vXmd0bVxkKyQvLGFhPS9eKFVBfFlUfE1PfEdQKS0oXGQrKS0oXGQrKSQvOyRyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubW9kZWwuZ2V0KHQpfSwkci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dGhpcy5tb2RlbC5zZXQodCxlKX0sJHIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24odCl7dmFyIGUsbjthcmd1bWVudHMubGVuZ3RoPDF8fChuPSJzdHJpbmciPT10eXBlb2YgdD8oZT10LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTooZT10JiZ0W1d0XSxhcmd1bWVudHMpLGUmJigobj1tKHVhW2VdfHxbXSxuKSlbV3RdPWUsdGhpcy5tb2RlbC5zZXQobix2b2lkIDAsITApLHRoaXMuZmlsdGVycy5EKHRoaXMubW9kZWwpLHRoaXMubW9kZWwuZGF0YS5tPXt9KSl9LCRyLnByb3RvdHlwZS5tYT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7bWEodCxuLGUpfHwod2EodCxmdW5jdGlvbigpe21hKHQsbixlKX0pLGJhKFN0cmluZyhuLmdldChnbikpLHQsdm9pZCAwLGUsITApKX07ZnVuY3Rpb24gb2EodCl7cmV0dXJuInByZXJlbmRlciIhPVAudmlzaWJpbGl0eVN0YXRlJiYodCgpLCEwKX1mdW5jdGlvbiBpYSh0KXtpZihmKHRbMF0pKXRoaXMudT10WzBdO2Vsc2V7dmFyIGU9bGEuZXhlYyh0WzBdKTtpZihudWxsIT1lJiY0PT1lLmxlbmd0aCYmKHRoaXMuZGE9ZVsxXXx8InQwIix0aGlzLks9ZVsyXXx8IiIsdGhpcy5tZXRob2ROYW1lPWVbM10sdGhpcy5hYT1bXS5zbGljZS5jYWxsKHQsMSksdGhpcy5LfHwodGhpcy5BPSJjcmVhdGUiPT10aGlzLm1ldGhvZE5hbWUsdGhpcy5pPSJyZXF1aXJlIj09dGhpcy5tZXRob2ROYW1lLHRoaXMuZz0icHJvdmlkZSI9PXRoaXMubWV0aG9kTmFtZSx0aGlzLmJhPSJyZW1vdmUiPT10aGlzLm1ldGhvZE5hbWUpLHRoaXMuaSYmKDM8PXRoaXMuYWEubGVuZ3RoPyh0aGlzLlg9dGhpcy5hYVsxXSx0aGlzLlc9dGhpcy5hYVsyXSk6dGhpcy5hYVsxXSYmKF8odGhpcy5hYVsxXSk/dGhpcy5YPXRoaXMuYWFbMV06dGhpcy5XPXRoaXMuYWFbMV0pKSksZT10WzFdLHQ9dFsyXSwhdGhpcy5tZXRob2ROYW1lKXRocm93ImFib3J0IjtpZih0aGlzLmkmJighXyhlKXx8IiI9PWUpKXRocm93ImFib3J0IjtpZih0aGlzLmcmJighXyhlKXx8IiI9PWV8fCFmKHQpKSl0aHJvdyJhYm9ydCI7aWYoZ2EodGhpcy5kYSl8fGdhKHRoaXMuSykpdGhyb3ciYWJvcnQiO2lmKHRoaXMuZyYmInQwIiE9dGhpcy5kYSl0aHJvdyJhYm9ydCJ9fXZhciBzYT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9UHQodCxtbik7aWYodC5kYXRhLnNldChBbiwiX2dhIj09cj8iX2dpZCI6cisiX2dpZCIpLCJjb29raWUiPT1QdCh0LHhuKSYmKGdyPSExLHI9SChQdCh0LG1uKSksKHI9cHIodCxyKSl8fChyPVB0KHQsYm4pLHI9bnVsbCE9KHI9RXIoIl9fdXRtYSIsbj1QdCh0LEVuKXx8QSgpLHIpKT8oZygxMCksci5PWzFdKyIuIityLk9bMl0pOnZvaWQgMCksciYmKGdyPSEwKSwocj0obj0obj1yJiYhdC5nZXQoX24pKT8yPT0obj1yLnNwbGl0KCIuIikpLmxlbmd0aCYmKCEhKG49TnVtYmVyKG5bMV0pKSYmbisobz1NdCh0LHluKSk8KG5ldyBEYXRlKS5nZXRUaW1lKCkvMWUzKTpuKT92b2lkIDA6cikmJih0LmRhdGEuc2V0KGRuLHIpLHQuZGF0YS5zZXQoaG4sciksKHI9ZHIodCkpJiZ0LmRhdGEuc2V0KFJuLHIpKSx0LmdldChxbikmJihyPXQuZ2V0KEluKSxuPXQuZ2V0KERuKSwhcnx8biYmImF3LmRzIiE9bikmJihyPXt9LG49KFA/QihyKTp7fSlbUHQodCx2bildLF9yKHIpLG4mJjAhPW4ubGVuZ3RoJiYocj1uWzBdLHQuZGF0YS5zZXQoUG4sci50aW1lc3RhbXAvMWUzKSx0LmRhdGEuc2V0KEluLHIucWEpKSksdC5nZXQocW4pJiYocj10LmdldChYbiksbj17fSxvPShQP0IobiwiX2dhY19nYiIsITApOnt9KVtQdCh0LHZuKV0sT3IobiksbyYmMCE9by5sZW5ndGgmJihvPShuPW9bMF0pLnFhLHImJnIhPT1vfHwobi5sYWJlbHMmJm4ubGFiZWxzLmxlbmd0aCYmKG8rPSIuIituLmxhYmVscy5qb2luKCIuIikpLHQuZGF0YS5zZXQoQm4sbi50aW1lc3RhbXAvMWUzKSx0LmRhdGEuc2V0KFhuLG8pKSkpKSx0LmdldChfbikpe3I9TigiX2dhIiwhIXQuZ2V0KFNuKSk7dmFyIGE9TigiX2dsIiwhIXQuZ2V0KFNuKSksbz0obj1rci5nZXQodC5nZXQoU24pKSkuX2dhO2EmJjA8YS5pbmRleE9mKCJfZ2EqIikmJiFvJiZnKDMwKSxhPSEoZXx8IXQuZ2V0KEduKSkmJih2b2lkIDAhPT0oYT10LmdldCgkbikpJiYhYSgiYW5hbHl0aWNzX3N0b3JhZ2UiKSYmKGcoODQpLHQuZGF0YS5zZXQoVm4sMSksISEoYT0oYT1uLl91cCk/ISEoYT14ci5leGVjKFAucmVmZXJyZXIpKSYmKGE9YVsxXSwoaT1QLmxvY2F0aW9uLmhvc3RuYW1lKT09PWF8fDA8PWkuaW5kZXhPZigiLiIrYSl8fDA8PWEuaW5kZXhPZigiLiIraSkpOmEpKSk7dmFyIGk9bi5nY2xpZCxzPW4uX2dhYztpZihyfHxvfHxpfHxzKWlmKHImJm8mJmcoMzYpLHQuZ2V0KGtuKXx8Vyh0LmdldChMbikpfHxhKXtpZihvJiYoZygzOCksdC5kYXRhLnNldChobixvKSxuLl9naWQmJihnKDUxKSx0LmRhdGEuc2V0KFJuLG4uX2dpZCkpKSxpPyhnKDgyKSx0LmRhdGEuc2V0KEluLGkpLG4uZ2Nsc3JjJiZ0LmRhdGEuc2V0KERuLG4uZ2Nsc3JjKSk6cyYmKG89cy5zcGxpdCgiLiIpKSYmMj09PW8ubGVuZ3RoJiYoZygzNyksdC5kYXRhLnNldChJbixvWzBdKSx0LmRhdGEuc2V0KFBuLG9bMV0pKSwobj1uLl9mcGxjKSYmUHQodCxVbikmJihnKDgzKSx0LmRhdGEuc2V0KEhuLG4pKSxyKXQ6aWYobj1yLmluZGV4T2YoIi4iKSwtMT09bilnKDIyKTtlbHNle2lmKG89ci5zdWJzdHJpbmcoMCxuKSxuPShhPXIuc3Vic3RyaW5nKG4rMSkpLmluZGV4T2YoIi4iKSxyPWEuc3Vic3RyaW5nKDAsbiksYT1hLnN1YnN0cmluZyhuKzEpLCIxIj09byl7aWYoUHIobj1hLHIpKXtnKDIzKTticmVhayB0fX1lbHNle2lmKCIyIiE9byl7ZygyMik7YnJlYWsgdH1pZihvPSIiLG49MDwobj1hLmluZGV4T2YoIi0iKSk/KG89YS5zdWJzdHJpbmcoMCxuKSxhLnN1YnN0cmluZyhuKzEpKTphLnN1YnN0cmluZygxKSxQcihvK24scikpe2coNTMpO2JyZWFrIHR9byYmKGcoMiksdC5kYXRhLnNldChSbixvKSl9ZygxMSksdC5kYXRhLnNldChobixuKSwocj1OKCJfZ2FjIiwhIXQuZ2V0KFNuKSkpJiYoIjEiIT0ocj1yLnNwbGl0KCIuIikpWzBdfHw0IT1yLmxlbmd0aD9nKDcyKTpQcihyWzNdLHJbMV0pP2coNzEpOih0LmRhdGEuc2V0KEluLHJbM10pLHQuZGF0YS5zZXQoUG4sclsyXSksZyg3MCkpKX19ZWxzZSBnKDIxKX1lJiYoZyg5KSx0LmRhdGEuc2V0KGhuLHgoZSkpKSx0LmdldChobil8fCgoZT0oIShlPUkuZ2FHbG9iYWwpfHwhZS5mcm9tX2Nvb2tpZXx8ImNvb2tpZSI9PT1QdCh0LHhuKSkmJihlPWUmJmUudmlkKSYmLTEhPT1lLnNlYXJjaChjKT9lOnZvaWQgMCk/KGcoMTcpLHQuZGF0YS5zZXQoaG4sZSkpOihnKDgpLHQuZGF0YS5zZXQoaG4sZCgpKSkpLHQuZ2V0KFJuKXx8KGcoMyksdC5kYXRhLnNldChSbixkKCkpKSxocih0KSxlPUkuZ2FHbG9iYWw9SS5nYUdsb2JhbHx8e30sdD0ocj1QdCh0LGhuKSk9PT1QdCh0LGRuKSwobnVsbD09ZS52aWR8fHQmJiFlLmZyb21fY29va2llKSYmKGUudmlkPXIsZS5mcm9tX2Nvb2tpZT10KX0sY2E9ZnVuY3Rpb24odCl7dmFyIGU9SS5uYXZpZ2F0b3Isbj1JLnNjcmVlbixyPVAubG9jYXRpb24sYT10LnNldDt0Ont2YXIgbz0hIXQuZ2V0KE5uKSxpPSEhdC5nZXQoTG4pLHM9UC5yZWZlcnJlcjtpZigvXihodHRwcz98YW5kcm9pZC1hcHApOlwvXC8vaS50ZXN0KHMpKXtpZihvKWJyZWFrIHQ7aWYobz0iLy8iK1AubG9jYXRpb24uaG9zdG5hbWUsIXYocyxvKSl7aWYoaSYmKGk9by5yZXBsYWNlKC9cLi9nLCItIikrIi5jZG4uYW1wcHJvamVjdC5vcmciLHYocyxpKSkpe3M9dm9pZCAwO2JyZWFrIHR9YnJlYWsgdH19cz12b2lkIDB9aWYoYS5jYWxsKHQsbmUscyksciYmKCIvIiE9KGE9ci5wYXRobmFtZXx8IiIpLmNoYXJBdCgwKSYmKGcoMzEpLGE9Ii8iK2EpLHQuc2V0KGVlLHIucHJvdG9jb2wrIi8vIityLmhvc3RuYW1lK2Erci5zZWFyY2gpKSxuJiZ0LnNldChzZSxuLndpZHRoKyJ4IituLmhlaWdodCksbiYmdC5zZXQoaWUsbi5jb2xvckRlcHRoKyItYml0Iiksbj1QLmRvY3VtZW50RWxlbWVudCxzPShhPVAuYm9keSkmJmEuY2xpZW50V2lkdGgmJmEuY2xpZW50SGVpZ2h0LGk9W10sbiYmbi5jbGllbnRXaWR0aCYmbi5jbGllbnRIZWlnaHQmJigiQ1NTMUNvbXBhdCI9PT1QLmNvbXBhdE1vZGV8fCFzKT9pPVtuLmNsaWVudFdpZHRoLG4uY2xpZW50SGVpZ2h0XTpzJiYoaT1bYS5jbGllbnRXaWR0aCxhLmNsaWVudEhlaWdodF0pLG49aVswXTw9MHx8aVsxXTw9MD8iIjppLmpvaW4oIngiKSx0LnNldChjZSxuKSxuPXQuc2V0LChhPShhPUkubmF2aWdhdG9yKT9hLnBsdWdpbnM6bnVsbCkmJmEubGVuZ3RoKWZvcihzPTA7czxhLmxlbmd0aCYmIXU7cysrKS0xPChpPWFbc10pLm5hbWUuaW5kZXhPZigiU2hvY2t3YXZlIEZsYXNoIikmJih1PWkuZGVzY3JpcHRpb24pO2lmKCF1KXRyeXt2YXIgYz1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNyIpLHU9Yy5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKX1jYXRjaCh0KXt9aWYoIXUpdHJ5e2M9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjYiKSx1PSJXSU4gNiwwLDIxLDAiLGMuQWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyIsdT1jLkdldFZhcmlhYmxlKCIkdmVyc2lvbiIpfWNhdGNoKHQpe31pZighdSl0cnl7dT0oYz1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKSkuR2V0VmFyaWFibGUoIiR2ZXJzaW9uIil9Y2F0Y2godCl7fWlmKHUmJihjPXUubWF0Y2goL1tcZF0rL2cpKSYmMzw9Yy5sZW5ndGgmJih1PWNbMF0rIi4iK2NbMV0rIiByIitjWzJdKSxuLmNhbGwodCxsZSx1fHx2b2lkIDApLHQuc2V0KG9lLFAuY2hhcmFjdGVyU2V0fHxQLmNoYXJzZXQpLHQuc2V0KHVlLGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmphdmFFbmFibGVkJiZlLmphdmFFbmFibGVkKCl8fCExKSx0LnNldChhZSwoZSYmKGUubGFuZ3VhZ2V8fGUuYnJvd3Nlckxhbmd1YWdlKXx8IiIpLnRvTG93ZXJDYXNlKCkpLHQuZGF0YS5zZXQoSW4sTigiZ2NsaWQiLCEwKSksdC5kYXRhLnNldChEbixOKCJnY2xzcmMiLCEwKSksdC5kYXRhLnNldChQbixNYXRoLnJvdW5kKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFlMykpLHQuZ2V0KEluKXx8KHQuZGF0YS5zZXQoWG4sTigid2JyYWlkIiwhMCkpLHQuZGF0YS5zZXQoQm4sTWF0aC5yb3VuZCgobmV3IERhdGUpLmdldFRpbWUoKS8xZTMpKSksciYmdC5nZXQoU24pJiYoZT1QLmxvY2F0aW9uLmhhc2gpKXtmb3IoZT1lLnNwbGl0KC9bPyYjXSsvKSxyPVtdLHU9MDt1PGUubGVuZ3RoOysrdSkoTyhlW3VdLCJ1dG1faWQiKXx8TyhlW3VdLCJ1dG1fY2FtcGFpZ24iKXx8TyhlW3VdLCJ1dG1fc291cmNlIil8fE8oZVt1XSwidXRtX21lZGl1bSIpfHxPKGVbdV0sInV0bV90ZXJtIil8fE8oZVt1XSwidXRtX2NvbnRlbnQiKXx8TyhlW3VdLCJnY2xpZCIpfHxPKGVbdV0sImRjbGlkIil8fE8oZVt1XSwiZ2Nsc3JjIil8fE8oZVt1XSwid2JyYWlkIikpJiZyLnB1c2goZVt1XSk7MDxyLmxlbmd0aCYmKGU9IiMiK3Iuam9pbigiJiIpLHQuc2V0KGVlLHQuZ2V0KGVlKStlKSl9fSx1YT17cGFnZXZpZXc6W3JlXSxldmVudDpbZ2UsaGUsZmUsZGVdLHNvY2lhbDpbcGUsdmUsbWVdLHRpbWluZzpbdCxOZSxBZSxSZV19LE5lPWZ1bmN0aW9uKG4pe3ZhciByLGE7b2Eobil8fChnKDE2KSxyPSExLHAoUCwidmlzaWJpbGl0eWNoYW5nZSIsYT1mdW5jdGlvbigpe3ZhciB0LGU7IXImJm9hKG4pJiYocj0hMCx0PWEsKGU9UCkucmVtb3ZlRXZlbnRMaXN0ZW5lcj9lLnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHQsITEpOmUuZGV0YWNoRXZlbnQmJmUuZGV0YWNoRXZlbnQoIm9udmlzaWJpbGl0eWNoYW5nZSIsdCkpfSkpfSxsYT0vXig/OihcdyspXC4pPyg/OihcdyspOik/KFx3KykkLztmdW5jdGlvbiBnYSh0KXtyZXR1cm4gMDw9dC5pbmRleE9mKCIuIil8fDA8PXQuaW5kZXhPZigiOiIpfWZ1bmN0aW9uIGhhKHQsZSl7ZmEuc2V0KHQsZSksZT1wYS5nZXQodCl8fFtdO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWVbbl0oKTtwYS5zZXQodCxbXSl9dmFyIGZhPW5ldyBiLGRhPW5ldyBiLHBhPW5ldyBiLHZhPXtlYzo0NSxlY29tbWVyY2U6NDYsbGlua2lkOjQ3fSxtYT1mdW5jdGlvbih0LGUsbil7ZT09a2F8fGUuZ2V0KGduKTt2YXIgcj1mYS5nZXQodCk7cmV0dXJuISFmKHIpJiYoZS5wbHVnaW5zXz1lLnBsdWdpbnNffHxuZXcgYixlLnBsdWdpbnNfLmdldCh0KXx8ZS5wbHVnaW5zXy5zZXQodCxuZXcgcihlLG58fHt9KSksITApfSxiYT1mdW5jdGlvbih0LGUsbixyLGEpe2lmKCFmKGZhLmdldChlKSkmJiFkYS5nZXQoZSkpe3ZhLmhhc093blByb3BlcnR5KGUpJiZnKHZhW2VdKTt2YXIgbyxpPXZvaWQgMDtpZihHci50ZXN0KGUpKXtpZihnKDUyKSwhKHQ9a2Euaih0KSkpcmV0dXJuITA7bj1xcih0Lm1vZGVsLGUscixhKSxpPWZ1bmN0aW9uKCl7eGEuRChbInByb3ZpZGUiLGUsZnVuY3Rpb24oKXt9XSk7dmFyIHQ9SVtyJiZyLmRhdGFMYXllcnx8ImRhdGFMYXllciJdO3QmJnQuaGlkZSYmZih0LmhpZGUuZW5kKSYmdC5oaWRlW2VdJiYodC5oaWRlLmVuZCgpLHQuaGlkZS5lbmQ9dm9pZCAwKX19IW4mJnZhLmhhc093blByb3BlcnR5KGUpPyhnKDM5KSxuPWUrIi5qcyIpOmcoNDMpLG4mJihyJiYobz1yW1VuXSksXyhvKXx8KG89dm9pZCAwKSx0PUVhKFRhKG4sbykpLCFvfHxfYSh0LnByb3RvY29sKSYmeWEodCl8fCh0PUVhKFRhKG4pKSksX2EodC5wcm90b2NvbCkmJnlhKHQpJiYoaih0LnVybCx2b2lkIDAsYSx2b2lkIDAsaSksZGEuc2V0KGUsITApKSl9fSx3YT1mdW5jdGlvbih0LGUpe3ZhciBuPXBhLmdldCh0KXx8W107bi5wdXNoKGUpLHBhLnNldCh0LG4pfSx5YT1mdW5jdGlvbih0KXt2YXIgZT1FYShQLmxvY2F0aW9uLmhyZWYpO3JldHVybiEoIU8odC51cmwsWigxKSkmJiFPKHQudXJsLFooMikpKXx8ISh0LnF1ZXJ5fHwwPD10LnVybC5pbmRleE9mKCI/Iil8fDA8PXQucGF0aC5pbmRleE9mKCI6Ly8iKSkmJighISh0Lmhvc3Q9PWUuaG9zdCYmdC5wb3J0PT1lLnBvcnR8fG4mJigoZT1QLmNyZWF0ZUVsZW1lbnQoImEiKSkuaHJlZj1uLGU9T2EoZSksdC5ob3N0PT09ZVswXSYmdC5wb3J0PT09ZVsxXSkpfHwoZT0iaHR0cDoiPT10LnByb3RvY29sPzgwOjQ0MywhKCJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iIT10Lmhvc3R8fCh0LnBvcnR8fGUpIT1lfHwhTyh0LnBhdGgsIi9wbHVnaW5zLyIpKSkpfSxfYT1mdW5jdGlvbih0KXt2YXIgZT1QLmxvY2F0aW9uLnByb3RvY29sO3JldHVybiJodHRwczoiPT10fHx0PT1lfHwiaHR0cDoiPT10JiYiaHR0cDoiPT1lfSxPYT1mdW5jdGlvbih0KXt2YXIgZT0wPD0obj10Lmhvc3RuYW1lfHwiIikuaW5kZXhPZigiXSIpLG49bi5zcGxpdChlPyJdIjoiOiIpWzBdLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGUmJihuKz0iXSIpLGU9KHQucHJvdG9jb2x8fCIiKS50b0xvd2VyQ2FzZSgpLGU9K3QucG9ydHx8KCJodHRwOiI9PWU/ODA6Imh0dHBzOiI9PWU/NDQzOiIiKSx0PXQucGF0aG5hbWV8fCIiLFtuLCIiK2UsdD0hTyh0LCIvIik/Ii8iK3Q6dF19LEVhPWZ1bmN0aW9uKHQpe3ZhciBlPVAuY3JlYXRlRWxlbWVudCgiYSIpO2UuaHJlZj1QLmxvY2F0aW9uLmhyZWY7dmFyIG49KGUucHJvdG9jb2x8fCIiKS50b0xvd2VyQ2FzZSgpLHI9T2EoZSksYT1lLnNlYXJjaHx8IiIsbz1uKyIvLyIrclswXSsoclsxXT8iOiIrclsxXToiIik7cmV0dXJuIE8odCwiLy8iKT90PW4rdDpPKHQsIi8iKT90PW8rdDohdHx8Tyh0LCI/Iik/dD1vK3JbMl0rKHR8fGEpOnQuc3BsaXQoIi8iKVswXS5pbmRleE9mKCI6Iik8MCYmKHQ9bytyWzJdLnN1YnN0cmluZygwLHJbMl0ubGFzdEluZGV4T2YoIi8iKSkrIi8iK3QpLGUuaHJlZj10LG49T2EoZSkse3Byb3RvY29sOihlLnByb3RvY29sfHwiIikudG9Mb3dlckNhc2UoKSxob3N0Om5bMF0scG9ydDpuWzFdLHBhdGg6blsyXSxxdWVyeTplLnNlYXJjaHx8IiIsdXJsOnR8fCIifX0sVGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmMDw9dC5pbmRleE9mKCIvIik/dDooZXx8Z3QoITEpKSsiL3BsdWdpbnMvdWEvIit0fSx4YT17Z2E6ZnVuY3Rpb24oKXt4YS5mYT1bXX19O3hhLmdhKCkseGEuRD1mdW5jdGlvbih0KXt2YXIgZT14YS5KLmFwcGx5KHhhLGFyZ3VtZW50cyksZT14YS5mYS5jb25jYXQoZSk7Zm9yKHhhLmZhPVtdOzA8ZS5sZW5ndGgmJiF4YS52KGVbMF0pJiYoZS5zaGlmdCgpLCEoMDx4YS5mYS5sZW5ndGgpKTspO3hhLmZhPXhhLmZhLmNvbmNhdChlKX0seGEucmE9ZnVuY3Rpb24odCl7a2EucSYmKDMwMD09PWthLnEubGVuZ3RoJiYoa2EucS5zaGlmdCgpLGthLnFkKyspLGthLnEucHVzaCh0KSl9LHhhLko9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRyeXt2YXIgcj1uZXcgaWEoYXJndW1lbnRzW25dKTtyLmc/aGEoci5hYVswXSxyLmFhWzFdKTooci5pJiYoci5oYT1iYShyLmRhLHIuYWFbMF0sci5YLHIuVykpLGUucHVzaChyKSkseGEucmEoYXJndW1lbnRzW25dKX1jYXRjaCh0KXt9cmV0dXJuIGV9LHhhLnY9ZnVuY3Rpb24odCl7dHJ5e2lmKHQudSl0LnUuY2FsbChJLGthLmooInQwIikpO2Vsc2V7dmFyIGUsbixyLGE9dC5kYT09cz9rYTprYS5qKHQuZGEpO2lmKHQuQSl7aWYoInQwIj09dC5kYSYmbnVsbD09PShhPWthLmNyZWF0ZS5hcHBseShrYSx0LmFhKSkpcmV0dXJuITB9ZWxzZSBpZih0LmJhKWthLnJlbW92ZSh0LmRhKTtlbHNlIGlmKGEpaWYodC5pKXtpZih0LmhhJiYodC5oYT1iYSh0LmRhLHQuYWFbMF0sdC5YLHQuVykpLCFtYSh0LmFhWzBdLGEsdC5XKSlyZXR1cm4hMH1lbHNlIHQuSz8oZT10Lm1ldGhvZE5hbWUsbj10LmFhLChyPWEucGx1Z2luc18uZ2V0KHQuSykpW2VdLmFwcGx5KHIsbikpOmFbdC5tZXRob2ROYW1lXS5hcHBseShhLHQuYWEpfX1jYXRjaCh0KXt9fTt2YXIga2E9ZnVuY3Rpb24odCl7ZygxKSx4YS5ELmFwcGx5KHhhLFthcmd1bWVudHNdKX07a2EuaD17fSxrYS5QPVtdLGthLkw9MCxrYS55YT0wLGthLmFuc3dlcj00Mjt2YXIgU2E9W3ZuLGJuLGduXTtrYS5jcmVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9bShTYSxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO2VbZ25dfHwoZVtnbl09InQwIik7dmFyIG49IiIrZVtnbl07aWYoa2EuaFtuXSlyZXR1cm4ga2EuaFtuXTtpZihmdW5jdGlvbih0KXtpZihXKHRbTG5dKSYmKHZvaWQgMD09PXJ0JiYoZT0oZT1rci5nZXQoKSkmJmUuX2dhfHx2b2lkIDApJiYocnQ9ZSxnKDgxKSksdm9pZCAwIT09cnQpKXJldHVybiB0W2huXXx8KHRbaG5dPXJ0KSwhMTtpZih0W0xuXSl7aWYoZyg2NyksdFt4bl0mJiJjb29raWUiIT10W3huXSlyZXR1cm4hMTtpZih2b2lkIDAhPT1ydCl0W2huXXx8KHRbaG5dPXJ0KTtlbHNle3ZhciBlPVN0cmluZyh0W2JuXXx8QSgpKSxuPVN0cmluZyh0W3duXXx8Ii8iKSxyPUgoU3RyaW5nKHRbbW5dfHwiX2dhIikpO2lmKChlPSEoKGU9dnIocixlLG4pKSYmIWMudGVzdChlKSl8fCgwPT0oZT1IKCJBTVBfVE9LRU4iKSkubGVuZ3RofHwxPT1lLmxlbmd0aCYmKCIkUkVUUklFVklORyI9PShlPWRlY29kZVVSSUNvbXBvbmVudChlWzBdKSl8fCIkT1BUX09VVCI9PWV8fCIkRVJST1IiPT1lfHwiJE5PVF9GT1VORCI9PWUpKSkmJnN0KHosU3RyaW5nKHRbdm5dKSkpcmV0dXJuITB9fXJldHVybiExfShlKSlyZXR1cm4gbnVsbDtpZihlPW5ldyAkcihlKSxrYS5oW25dPWUsa2EuUC5wdXNoKGUpLG49d3QoKS50cmFja2VyX2NyZWF0ZWQsZihuKSl0cnl7bihlKX1jYXRjaCh0KXt9cmV0dXJuIGV9LGthLnJlbW92ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPGthLlAubGVuZ3RoO2UrKylpZihrYS5QW2VdLmdldChnbik9PXQpe2thLlAuc3BsaWNlKGUsMSksa2EuaFt0XT1udWxsO2JyZWFrfX0sa2Euaj1mdW5jdGlvbih0KXtyZXR1cm4ga2EuaFt0XX0sa2EuZ2V0QWxsPWZ1bmN0aW9uKCl7cmV0dXJuIGthLlAuc2xpY2UoMCl9LGthLk49ZnVuY3Rpb24oKXtpZigiZ2EiIT1zJiZnKDQ5KSwhKG49SVtzXSl8fDQyIT1uLmFuc3dlcil7a2EuTD1uJiZuLmwsa2EueWE9K25ldyBEYXRlLGthLmxvYWRlZD0hMDt2YXIgdD1uJiZuLnEsZT15KHQpLG49W107aWYoZT9uPXQuc2xpY2UoMCk6Zyg1MCksa2EucT1lP3Q6W10sa2EucS5zcGxpY2UoMCksa2EucWQ9MCxlcigiY3JlYXRlIix0PUlbc109a2EsdC5jcmVhdGUpLGVyKCJyZW1vdmUiLHQsdC5yZW1vdmUpLGVyKCJnZXRCeU5hbWUiLHQsdC5qLDUpLGVyKCJnZXRBbGwiLHQsdC5nZXRBbGwsNiksZXIoImdldCIsdD0kci5wcm90b3R5cGUsdC5nZXQsNyksZXIoInNldCIsdCx0LnNldCw0KSxlcigic2VuZCIsdCx0LnNlbmQpLGVyKCJyZXF1aXJlU3luYyIsdCx0Lm1hKSxlcigiZ2V0Iix0PUl0LnByb3RvdHlwZSx0LmdldCksZXIoInNldCIsdCx0LnNldCksImh0dHBzOiIhPVAubG9jYXRpb24ucHJvdG9jb2wmJiFsKXt0Ontmb3IodD1QLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxlPTA7ZTx0Lmxlbmd0aCYmZTwxMDA7ZSsrKXt2YXIgcj10W2VdLnNyYztpZihyJiYwPT1yLmluZGV4T2YoZ3QoITApKyIvYW5hbHl0aWNzIikpe3Q9ITA7YnJlYWsgdH19dD0hMX10JiYobD0hMCl9dD0oKEkuZ2FwbHVnaW5zPUkuZ2FwbHVnaW5zfHx7fSkuTGlua2VyPVJyKS5wcm90b3R5cGUsaGEoImxpbmtlciIsUnIpLGVyKCJkZWNvcmF0ZSIsdCx0LmNhLDIwKSxlcigiYXV0b0xpbmsiLHQsdC5TLDI1KSxlcigicGFzc3Rocm91Z2giLHQsdC4kLDI1KSxoYSgiZGlzcGxheWZlYXR1cmVzIixVciksaGEoImFkZmVhdHVyZXMiLFVyKSx4YS5ELmFwcGx5KGthLG4pfX07QWU9a2EuTixSZT1JW3NdO1JlJiZSZS5yP0FlKCk6TmUoQWUpLE5lKGZ1bmN0aW9uKCl7eGEuRChbInByb3ZpZGUiLCJyZW5kZXIiLFRdKX0pfSh3aW5kb3cpfQo="},{"name":"brave-disable-pageview-api.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8vIGJyYXZlLWRpc2FibGUtcGFnZXZpZXctYXBpLmpzCi8vIEJhc2VkIG9uOiBodHRwczovL2FkZG9ucy5tb3ppbGxhLm9yZy9maXJlZm94L2FkZG9uL2Rpc2FibGUtcGFnZS12aXNpYmlsaXR5LwovLyBMaWNlbnNlOiAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAKLy8gRnJvbTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZ3dhcnNlci8zYjQ3YjYxODYzYmZmY2ZlYmU0NDk4Yzc3YjIzMDFjZAooZnVuY3Rpb24oKXsKLy8gdmlzaWJpbGl0eWNoYW5nZSBldmVudHMgYXJlIGNhcHR1cmVkIGFuZCBzdG9wcGVkIApkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwgZnVuY3Rpb24oZSkgewogICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKfSwgdHJ1ZSk7Ci8vIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSBhbHdheXMgcmV0dXJucyBmYWxzZQpPYmplY3QuZGVmaW5lUHJvcGVydHkoRG9jdW1lbnQucHJvdG90eXBlLCAiaGlkZGVuIiwgewogICAgZ2V0OiBmdW5jdGlvbiBoaWRkZW4oKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIGVudW1lcmFibGU6IHRydWUsCiAgICBjb25maWd1cmFibGU6IHRydWUKfSk7Ci8vIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSBhbHdheXMgcmV0dXJucyAidmlzaWJsZSIKT2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwgInZpc2liaWxpdHlTdGF0ZSIsIHsKICAgIGdldDogZnVuY3Rpb24gdmlzaWJpbGl0eVN0YXRlKCkgewogICAgICAgIHJldHVybiAidmlzaWJsZSI7CiAgICB9LAogICAgZW51bWVyYWJsZTogdHJ1ZSwKICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQp9KTsKfSkoKQo="},{"name":"brave-fix.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8vIGJyYXZlLWZpeC5qcwovLy8gYWxpYXMgYmYuanMKZGVsZXRlIE5hdmlnYXRvci5wcm90b3R5cGUuYnJhdmUKZGVsZXRlIHdpbmRvdy5uYXZpZ2F0b3IuYnJhdmUK"},{"name":"brave-video-bg-play.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8vIGJyYXZlLXZpZGVvLWJnLXBsYXkuanMKLy8gQmFzZWQgb246IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3ZpZGVvLWJnLXBsYXkKLy8gTGljZW5zZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3ZpZGVvLWJnLXBsYXkvYmxvYi9tYXN0ZXIvTElDRU5TRSAoTUlUKQovLyBGcm9tOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9nd2Fyc2VyLzNiNDdiNjE4NjNiZmZjZmViZTQ0OThjNzdiMjMwMWNkCihmdW5jdGlvbigpewpjb25zdCBJU19ZT1VUVUJFID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnNlYXJjaCgvKD86XnwuK1wuKXlvdXR1YmUuY29tLykgPiAtMSB8fAogICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnNlYXJjaCgvKD86XnwuK1wuKXlvdXR1YmUtbm9jb29raWUuY29tLykgPiAtMTsKY29uc3QgSVNfTU9CSUxFX1lPVVRVQkUgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgPT0gJ20ueW91dHViZS5jb20nOwpjb25zdCBJU19ERVNLVE9QX1lPVVRVQkUgPSBJU19ZT1VUVUJFICYmICFJU19NT0JJTEVfWU9VVFVCRTsKY29uc3QgSVNfVklNRU8gPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUuc2VhcmNoKC8oPzpefC4rXC4pdmltZW8uY29tLykgPiAtMTsKY29uc3QgSVNfQU5EUk9JRCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FuZHJvaWQnKSA+IC0xOwovLyBQYWdlIFZpc2liaWxpdHkgQVBJCmlmIChJU19BTkRST0lEIHx8ICFJU19ERVNLVE9QX1lPVVRVQkUpIHsKICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkb2N1bWVudCwKICAgIHsgJ2hpZGRlbic6IHt2YWx1ZTogZmFsc2V9LCAndmlzaWJpbGl0eVN0YXRlJzoge3ZhbHVlOiAndmlzaWJsZSd9IH0pOwp9CndpbmRvdy5hZGRFdmVudExpc3RlbmVyKAogICd2aXNpYmlsaXR5Y2hhbmdlJywgZXZ0ID0+IGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwgdHJ1ZSk7Ci8vIEZ1bGxzY3JlZW4gQVBJCmlmIChJU19WSU1FTykgewogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKAogICAgJ2Z1bGxzY3JlZW5jaGFuZ2UnLCBldnQgPT4gZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCB0cnVlKTsKfQovLyBVc2VyIGFjdGl2aXR5IHRyYWNraW5nCmlmIChJU19ZT1VUVUJFKSB7CiAgY29uc3QgcmVmcmVzaEludGVydmFsID0gNSAqIDYwICogMTAwMDsgLy8gZXZlcnkgNSBtaW51dGVzCiAgd2FpdEZvcllvdXR1YmVMYWN0SW5pdCgoKSA9PiByZWZyZXNoTGFjdCgpLCByZWZyZXNoSW50ZXJ2YWwpOwp9CmZ1bmN0aW9uIHdhaXRGb3JZb3V0dWJlTGFjdEluaXQoYUNhbGxiYWNrLCBhQ2FsbGJhY2tJbnRlcnZhbCwgYURlbGF5ID0gMTAwMCkgewogIGxldCBwYWdlV2luID0gd2luZG93OwogIGlmIChwYWdlV2luLmhhc093blByb3BlcnR5KCdfbGFjdCcpKSB7CiAgICB3aW5kb3cuc2V0SW50ZXJ2YWwoYUNhbGxiYWNrLCBhQ2FsbGJhY2tJbnRlcnZhbCk7CiAgfSBlbHNlIHsKICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHdhaXRGb3JZb3V0dWJlTGFjdEluaXQoYUNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhQ2FsbGJhY2tJbnRlcnZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYURlbGF5ICogMiksCiAgICAgICAgICAgICAgICAgICAgICBhRGVsYXkpOwogIH0KfQpmdW5jdGlvbiByZWZyZXNoTGFjdCgpIHsKICB3aW5kb3cuX2xhY3QgPSBEYXRlLm5vdygpOwp9Cn0pKCkK"},{"name":"brave-youtube-theater-fix.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"KGFzeW5jIF8gPT4gewogIGlmIChzZWxmLmNvb2tpZVN0b3JlID09PSB1bmRlZmluZWQpIHsKICAgIC8vIERvIG5vdGhpbmcgb24gaU9TLiBUaGUgcHJvYmxlbSBkb2Vzbid0IGV4aXN0IHRoZXJlLCBhbmQgdGhlCiAgICAvLyBzb2x1dGlvbiB3b3VsZG4ndCB3b3JrIGFueXdheQogICAgcmV0dXJuCiAgfQogIGNvbnN0IHN0b3JlS2V5ID0gJ2JyYXZlOjp3aWRlJwogIGNvbnN0IGNvb2tpZUtleSA9ICd3aWRlJwoKICBjb25zdCB3aWRlQ29va2llID0gYXdhaXQgY29va2llU3RvcmUuZ2V0KGNvb2tpZUtleSkKICBjb25zdCB3aWRlQ29va2llQmFja3VwID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmVLZXkpCgogIC8vIFNldCB0aGUgY29va2llIGZyb20gbG9jYWxTdG9yYWdlIGlmZjogCiAgLy8gMSkgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogIC8vIDIpIHdlIGhhdmUgYSBiYWNrdXAgaW4gbG9jYWxTdG9yYWdlLgogIGlmICghd2lkZUNvb2tpZSAmJiB3aWRlQ29va2llQmFja3VwKSB7CiAgICAvLyBUaGUgY29va2llIG9iamVjdCBpcyBzdG9yZWQgYXMgYSBzdHJpbmcuIFBhcnNlIGl0LgogICAgY29uc3QgY29va2llT2JqID0gSlNPTi5wYXJzZSh3aWRlQ29va2llQmFja3VwKQogICAgYXdhaXQgY29va2llU3RvcmUuc2V0KGNvb2tpZU9iaikKICAgIC8vIFJlZnJlc2ggdGhlIHBhZ2UgdG8gbWFrZSBZVCB1c2UgdGhlIG5ldyBjb29raWUuCiAgICBsb2NhdGlvbi5yZWxvYWQoKQogIH0KCiAgLy8gUGVyc2lzdCB0aGUgY29va2llIHZhbHVlIHRvIGxvY2FsU3RvcmFnZSBldmVyeSBzZWNvbmQuCiAgc2V0SW50ZXJ2YWwoYXN5bmMgXyA9PiB7CiAgICB0cnkgewogICAgICBjb25zdCB3aWRlQ29va2llID0gYXdhaXQgY29va2llU3RvcmUuZ2V0KGNvb2tpZUtleSkKICAgICAgLy8gV2UgaGF2ZSB0byBzdHJpbmdpZnkgdGhlIGNvb2tpZSBvYmplY3QgdG8gc3RvcmUgaXQgaW4gbG9jYWxTdG9yYWdlLgogICAgICBpZiAod2lkZUNvb2tpZSkgewogICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JlS2V5LCBKU09OLnN0cmluZ2lmeSh3aWRlQ29va2llKSkKICAgICAgfSBlbHNlIHsKICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yZUtleSkKICAgICAgfQogICAgfSBjYXRjaCAoZSkgewogICAgICAvLyBzd2FsbG93IGVycm9yIGZyb20gbm8gY29va2llIGV4aXN0aW5nCiAgICB9CiAgfSwgMTAwMCkKfSkoKTsK"},{"name":"de-amp.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"KGZ1bmN0aW9uICgpIHsKICBpZiAodHlwZW9mIGRlQW1wRW5hYmxlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZGVBbXBFbmFibGVkKSB7CiAgICBjb25zdCBhdHRyID0gJ2pzYWN0aW9uJwogICAgY29uc3Qgc2VsZWN0b3IgPSBgYVtkYXRhLWFtcC10aXRsZV1bJHthdHRyfV1gCiAgICBsZXQgdGltZXIKICAgIGNvbnN0IHJtYXR0ciA9ICgpID0+IHsKICAgICAgdGltZXIgPSB1bmRlZmluZWQKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpCiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7CiAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyKQogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXgpIHsgfQogICAgfQogICAgY29uc3QgbXV0YXRpb25IYW5kbGVyID0gKG11dGF0aW9ucykgPT4gewogICAgICBpZiAodGltZXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIGxldCBza2lwID0gdHJ1ZQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG11dGF0aW9ucy5sZW5ndGggJiYgc2tpcDsgaSsrKSB7CiAgICAgICAgY29uc3QgeyB0eXBlLCBhZGRlZE5vZGVzLCByZW1vdmVkTm9kZXMgfSA9IG11dGF0aW9uc1tpXQogICAgICAgIGlmICh0eXBlID09PSAnYXR0cmlidXRlcycpIHsKICAgICAgICAgIHNraXAgPSBmYWxzZQogICAgICAgIH0KICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGFkZGVkTm9kZXMubGVuZ3RoICYmIHNraXA7IGorKykgewogICAgICAgICAgaWYgKGFkZGVkTm9kZXNbal0ubm9kZVR5cGUgPT09IDEpIHsKICAgICAgICAgICAgc2tpcCA9IGZhbHNlCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVtb3ZlZE5vZGVzLmxlbmd0aCAmJiBza2lwOyBqKyspIHsKICAgICAgICAgIGlmIChyZW1vdmVkTm9kZXNbal0ubm9kZVR5cGUgPT09IDEpIHsKICAgICAgICAgICAgc2tpcCA9IGZhbHNlCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChza2lwKSB7CiAgICAgICAgcmV0dXJuCiAgICAgIH0KICAgICAgdGltZXIgPSBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2socm1hdHRyLCB7IHRpbWVvdXQ6IDE3IH0pCiAgICB9CgogICAgY29uc3Qgc3RhcnQgPSAoKSA9PiB7CiAgICAgIHJtYXR0cigpCiAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25IYW5kbGVyKQogICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7CiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwKICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFthdHRyXSwKICAgICAgICBjaGlsZExpc3Q6IHRydWUsCiAgICAgICAgc3VidHJlZTogdHJ1ZQogICAgICB9KQogICAgfQoKICAgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHN0YXJ0LCB7IG9uY2U6IHRydWUgfSkKICB9Cn0pKCk7Cg=="},{"name":"touch-fix.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8gUmVtb3ZlIHRvdWNoIGNoZWNrcyBvbiBzZWxlY3RlZCBtb2JpbGUgc2l0ZXMKZGVsZXRlIERvY3VtZW50LnByb3RvdHlwZS5jcmVhdGVUb3VjaApkZWxldGUgRG9jdW1lbnQucHJvdG90eXBlLm9udG91Y2hzdGFydApkZWxldGUgRG9jdW1lbnQucHJvdG90eXBlLm9udG91Y2hlbmQKZGVsZXRlIERvY3VtZW50LnByb3RvdHlwZS5vbnRvdWNoY2FuY2VsCmRlbGV0ZSBEb2N1bWVudC5wcm90b3R5cGUuVG91Y2hFdmVudAo="},{"name":"abort-current-script.js","aliases":["acs.js","abort-current-inline-script.js","acis.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2hvdWxkTG9nKGRldGFpbHMpIHsKICAgIGlmICggZGV0YWlscyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdjYW5EZWJ1ZycpICYmIGRldGFpbHMubG9nOwp9CmZ1bmN0aW9uIHNob3VsZERlYnVnKGRldGFpbHMpIHsKICAgIGlmICggZGV0YWlscyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdjYW5EZWJ1ZycpICYmIGRldGFpbHMuZGVidWc7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIGdldEV4Y2VwdGlvblRva2VuKCkgewogICAgY29uc3QgdG9rZW4gPQogICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5ODI0NTE2NTMgKyA5ODI0NTE2NTMpLnRvU3RyaW5nKDM2KTsKICAgIGNvbnN0IG9lID0gc2VsZi5vbmVycm9yOwogICAgc2VsZi5vbmVycm9yID0gZnVuY3Rpb24obXNnLCAuLi5hcmdzKSB7CiAgICAgICAgaWYgKCB0eXBlb2YgbXNnID09PSAnc3RyaW5nJyAmJiBtc2cuaW5jbHVkZXModG9rZW4pICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgIGlmICggb2UgaW5zdGFuY2VvZiBGdW5jdGlvbiApIHsKICAgICAgICAgICAgcmV0dXJuIG9lLmNhbGwodGhpcywgbXNnLCAuLi5hcmdzKTsKICAgICAgICB9CiAgICB9LmJpbmQoKTsKICAgIHJldHVybiB0b2tlbjsKfQpmdW5jdGlvbiBydW5BdEh0bWxFbGVtZW50KGZuKSB7CiAgICBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCApIHsKICAgICAgICBmbigpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCApID0+IHsKICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CiAgICAgICAgZm4oKTsKICAgIH0pOwogICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUgfSk7Cn0KZnVuY3Rpb24gYWJvcnRDdXJyZW50U2NyaXB0Q29yZSgKICAgIHRhcmdldCA9ICcnLAogICAgbmVlZGxlID0gJycsCiAgICBjb250ZXh0ID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggdGFyZ2V0ID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IHJlTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChuZWVkbGUpOwogICAgY29uc3QgcmVDb250ZXh0ID0gc2FmZS5wYXR0ZXJuVG9SZWdleChjb250ZXh0KTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMyk7CiAgICBjb25zdCB0aGlzU2NyaXB0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdDsKICAgIGNvbnN0IGNoYWluID0gdGFyZ2V0LnNwbGl0KCcuJyk7CiAgICBsZXQgb3duZXIgPSB3aW5kb3c7CiAgICBsZXQgcHJvcDsKICAgIGZvciAoOzspIHsKICAgICAgICBwcm9wID0gY2hhaW4uc2hpZnQoKTsKICAgICAgICBpZiAoIGNoYWluLmxlbmd0aCA9PT0gMCApIHsgYnJlYWs7IH0KICAgICAgICBpZiAoIHByb3AgaW4gb3duZXIgPT09IGZhbHNlICkgeyBicmVhazsgfQogICAgICAgIG93bmVyID0gb3duZXJbcHJvcF07CiAgICAgICAgaWYgKCBvd25lciBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgfQogICAgbGV0IHZhbHVlOwogICAgbGV0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBwcm9wKTsKICAgIGlmICgKICAgICAgICBkZXNjIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSB8fAogICAgICAgIGRlc2MuZ2V0IGluc3RhbmNlb2YgRnVuY3Rpb24gPT09IGZhbHNlCiAgICApIHsKICAgICAgICB2YWx1ZSA9IG93bmVyW3Byb3BdOwogICAgICAgIGRlc2MgPSB1bmRlZmluZWQ7CiAgICB9CiAgICBjb25zdCBsb2cgPSBzaG91bGRMb2coZXh0cmFBcmdzKTsKICAgIGNvbnN0IGRlYnVnID0gc2hvdWxkRGVidWcoZXh0cmFBcmdzKTsKICAgIGNvbnN0IGV4Y2VwdGlvblRva2VuID0gZ2V0RXhjZXB0aW9uVG9rZW4oKTsKICAgIGNvbnN0IHNjcmlwdFRleHRzID0gbmV3IFdlYWtNYXAoKTsKICAgIGNvbnN0IGdldFNjcmlwdFRleHQgPSBlbGVtID0+IHsKICAgICAgICBsZXQgdGV4dCA9IGVsZW0udGV4dENvbnRlbnQ7CiAgICAgICAgaWYgKCB0ZXh0LnRyaW0oKSAhPT0gJycgKSB7IHJldHVybiB0ZXh0OyB9CiAgICAgICAgaWYgKCBzY3JpcHRUZXh0cy5oYXMoZWxlbSkgKSB7IHJldHVybiBzY3JpcHRUZXh0cy5nZXQoZWxlbSk7IH0KICAgICAgICBjb25zdCBbICwgbWltZSwgY29udGVudCBdID0KICAgICAgICAgICAgL15kYXRhOihbXixdKiksKC4rKSQvLmV4ZWMoZWxlbS5zcmMudHJpbSgpKSB8fAogICAgICAgICAgICBbICcnLCAnJywgJycgXTsKICAgICAgICB0cnkgewogICAgICAgICAgICBzd2l0Y2ggKCB0cnVlICkgewogICAgICAgICAgICBjYXNlIG1pbWUuZW5kc1dpdGgoJztiYXNlNjQnKToKICAgICAgICAgICAgICAgIHRleHQgPSBzZWxmLmF0b2IoY29udGVudCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRleHQgPSBzZWxmLmRlY29kZVVSSUNvbXBvbmVudChjb250ZW50KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgIH0KICAgICAgICBzY3JpcHRUZXh0cy5zZXQoZWxlbSwgdGV4dCk7CiAgICAgICAgcmV0dXJuIHRleHQ7CiAgICB9OwogICAgY29uc3QgdmFsaWRhdGUgPSAoICkgPT4gewogICAgICAgIGNvbnN0IGUgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0OwogICAgICAgIGlmICggZSBpbnN0YW5jZW9mIEhUTUxTY3JpcHRFbGVtZW50ID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgaWYgKCBlID09PSB0aGlzU2NyaXB0ICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIGNvbnRleHQgIT09ICcnICYmIHJlQ29udGV4dC50ZXN0KGUuc3JjKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgIGlmICggZGVidWcgPT09ICdub21hdGNoJyB8fCBkZWJ1ZyA9PT0gJ2FsbCcgKSB7IGRlYnVnZ2VyOyB9ICAvLyBqc2hpbnQgaWdub3JlOiBsaW5lCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCBsb2cgJiYgZS5zcmMgIT09ICcnICkgeyBzYWZlLnVib0xvZyhgbWF0Y2hlZCBzcmM6ICR7ZS5zcmN9YCk7IH0KICAgICAgICBjb25zdCBzY3JpcHRUZXh0ID0gZ2V0U2NyaXB0VGV4dChlKTsKICAgICAgICBpZiAoIHJlTmVlZGxlLnRlc3Qoc2NyaXB0VGV4dCkgPT09IGZhbHNlICkgewogICAgICAgICAgICBpZiAoIGRlYnVnID09PSAnbm9tYXRjaCcgfHwgZGVidWcgPT09ICdhbGwnICkgeyBkZWJ1Z2dlcjsgfSAgLy8ganNoaW50IGlnbm9yZTogbGluZQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICggbG9nICkgeyBzYWZlLnVib0xvZyhgbWF0Y2hlZCBzY3JpcHQgdGV4dDogJHtzY3JpcHRUZXh0fWApOyB9CiAgICAgICAgaWYgKCBkZWJ1ZyA9PT0gJ21hdGNoJyB8fCBkZWJ1ZyA9PT0gJ2FsbCcgKSB7IGRlYnVnZ2VyOyB9ICAvLyBqc2hpbnQgaWdub3JlOiBsaW5lCiAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKGV4Y2VwdGlvblRva2VuKTsKICAgIH07CiAgICBpZiAoIGRlYnVnID09PSAnaW5zdGFsbCcgKSB7IGRlYnVnZ2VyOyB9ICAvLyBqc2hpbnQgaWdub3JlOiBsaW5lCiAgICB0cnkgewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvd25lciwgcHJvcCwgewogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFsaWRhdGUoKTsKICAgICAgICAgICAgICAgIHJldHVybiBkZXNjIGluc3RhbmNlb2YgT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgPyBkZXNjLmdldC5jYWxsKG93bmVyKQogICAgICAgICAgICAgICAgICAgIDogdmFsdWU7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgdmFsaWRhdGUoKTsKICAgICAgICAgICAgICAgIGlmICggZGVzYyBpbnN0YW5jZW9mIE9iamVjdCApIHsKICAgICAgICAgICAgICAgICAgICBkZXNjLnNldC5jYWxsKG93bmVyLCBhKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgaWYgKCBsb2cgKSB7IHNhZmUudWJvTG9nKGV4KTsgfQogICAgfQp9CgogIChmdW5jdGlvbiBhYm9ydEN1cnJlbnRTY3JpcHQoLi4uYXJncykgewogICAgcnVuQXRIdG1sRWxlbWVudCgoICkgPT4gewogICAgICAgIGFib3J0Q3VycmVudFNjcmlwdENvcmUoLi4uYXJncyk7CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"abort-on-property-read.js","aliases":["aopr.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9CiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShEYXRlLm5vdygpICUgMjYgKyA5NykgKwogICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk4MjQ1MTY1MyArIDk4MjQ1MTY1MykudG9TdHJpbmcoMzYpOwogICAgY29uc3Qgb2UgPSBzZWxmLm9uZXJyb3I7CiAgICBzZWxmLm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIC4uLmFyZ3MpIHsKICAgICAgICBpZiAoIHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy5pbmNsdWRlcyh0b2tlbikgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgaWYgKCBvZSBpbnN0YW5jZW9mIEZ1bmN0aW9uICkgewogICAgICAgICAgICByZXR1cm4gb2UuY2FsbCh0aGlzLCBtc2csIC4uLmFyZ3MpOwogICAgICAgIH0KICAgIH0uYmluZCgpOwogICAgcmV0dXJuIHRva2VuOwp9CgogIChmdW5jdGlvbiBhYm9ydE9uUHJvcGVydHlSZWFkKAogICAgY2hhaW4gPSAnJwopIHsKICAgIGlmICggdHlwZW9mIGNoYWluICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIGNoYWluID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBleGNlcHRpb25Ub2tlbiA9IGdldEV4Y2VwdGlvblRva2VuKCk7CiAgICBjb25zdCBhYm9ydCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihleGNlcHRpb25Ub2tlbik7CiAgICB9OwogICAgY29uc3QgbWFrZVByb3h5ID0gZnVuY3Rpb24ob3duZXIsIGNoYWluKSB7CiAgICAgICAgY29uc3QgcG9zID0gY2hhaW4uaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsKICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3duZXIsIGNoYWluKTsKICAgICAgICAgICAgaWYgKCAhZGVzYyB8fCBkZXNjLmdldCAhPT0gYWJvcnQgKSB7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3duZXIsIGNoYWluLCB7CiAgICAgICAgICAgICAgICAgICAgZ2V0OiBhYm9ydCwKICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCl7fQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBwcm9wID0gY2hhaW4uc2xpY2UoMCwgcG9zKTsKICAgICAgICBsZXQgdiA9IG93bmVyW3Byb3BdOwogICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgaWYgKCB2ICkgewogICAgICAgICAgICBtYWtlUHJveHkodiwgY2hhaW4pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBwcm9wKTsKICAgICAgICBpZiAoIGRlc2MgJiYgZGVzYy5zZXQgIT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBwcm9wLCB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiB2OyB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHYgPSBhOwogICAgICAgICAgICAgICAgaWYgKCBhIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICAgICAgICAgIG1ha2VQcm94eShhLCBjaGFpbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH07CiAgICBjb25zdCBvd25lciA9IHdpbmRvdzsKICAgIG1ha2VQcm94eShvd25lciwgY2hhaW4pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"abort-on-property-write.js","aliases":["aopw.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9CiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShEYXRlLm5vdygpICUgMjYgKyA5NykgKwogICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk4MjQ1MTY1MyArIDk4MjQ1MTY1MykudG9TdHJpbmcoMzYpOwogICAgY29uc3Qgb2UgPSBzZWxmLm9uZXJyb3I7CiAgICBzZWxmLm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIC4uLmFyZ3MpIHsKICAgICAgICBpZiAoIHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy5pbmNsdWRlcyh0b2tlbikgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgaWYgKCBvZSBpbnN0YW5jZW9mIEZ1bmN0aW9uICkgewogICAgICAgICAgICByZXR1cm4gb2UuY2FsbCh0aGlzLCBtc2csIC4uLmFyZ3MpOwogICAgICAgIH0KICAgIH0uYmluZCgpOwogICAgcmV0dXJuIHRva2VuOwp9CgogIChmdW5jdGlvbiBhYm9ydE9uUHJvcGVydHlXcml0ZSgKICAgIHByb3AgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIHByb3AgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggcHJvcCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgbGV0IG93bmVyID0gd2luZG93OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBvd25lciA9IG93bmVyW3Byb3Auc2xpY2UoMCwgcG9zKV07CiAgICAgICAgaWYgKCBvd25lciBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcyArIDEpOwogICAgfQogICAgZGVsZXRlIG93bmVyW3Byb3BdOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBwcm9wLCB7CiAgICAgICAgc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKGV4Y2VwdGlvblRva2VuKTsKICAgICAgICB9CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"abort-on-stack-trace.js","aliases":["aost.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIG1hdGNoZXNTdGFja1RyYWNlKAogICAgbmVlZGxlRGV0YWlscywKICAgIGxvZ0xldmVsID0gMAopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgY29uc3QgZXJyb3IgPSBuZXcgc2FmZS5FcnJvcihleGNlcHRpb25Ub2tlbik7CiAgICBjb25zdCBkb2NVUkwgPSBuZXcgVVJMKHNlbGYubG9jYXRpb24uaHJlZik7CiAgICBkb2NVUkwuaGFzaCA9ICcnOwogICAgLy8gTm9ybWFsaXplIHN0YWNrIHRyYWNlCiAgICBjb25zdCByZUxpbmUgPSAvKC4qP0ApPyhcUyspKDpcZCspOlxkK1wpPyQvOwogICAgY29uc3QgbGluZXMgPSBbXTsKICAgIGZvciAoIGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KC9bXG5ccl0rLykgKSB7CiAgICAgICAgaWYgKCBsaW5lLmluY2x1ZGVzKGV4Y2VwdGlvblRva2VuKSApIHsgY29udGludWU7IH0KICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSBzYWZlLlJlZ0V4cF9leGVjLmNhbGwocmVMaW5lLCBsaW5lKTsKICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgeyBjb250aW51ZTsgfQogICAgICAgIGxldCB1cmwgPSBtYXRjaFsyXTsKICAgICAgICBpZiAoIHVybC5zdGFydHNXaXRoKCcoJykgKSB7IHVybCA9IHVybC5zbGljZSgxKTsgfQogICAgICAgIGlmICggdXJsID09PSBkb2NVUkwuaHJlZiApIHsKICAgICAgICAgICAgdXJsID0gJ2lubGluZVNjcmlwdCc7CiAgICAgICAgfSBlbHNlIGlmICggdXJsLnN0YXJ0c1dpdGgoJzxhbm9ueW1vdXM+JykgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmplY3RlZFNjcmlwdCc7CiAgICAgICAgfQogICAgICAgIGxldCBmbiA9IG1hdGNoWzFdICE9PSB1bmRlZmluZWQKICAgICAgICAgICAgPyBtYXRjaFsxXS5zbGljZSgwLCAtMSkKICAgICAgICAgICAgOiBsaW5lLnNsaWNlKDAsIG1hdGNoLmluZGV4KS50cmltKCk7CiAgICAgICAgaWYgKCBmbi5zdGFydHNXaXRoKCdhdCcpICkgeyBmbiA9IGZuLnNsaWNlKDIpLnRyaW0oKTsgfQogICAgICAgIGxldCByb3djb2wgPSBtYXRjaFszXTsKICAgICAgICBsaW5lcy5wdXNoKCcgJyArIGAke2ZufSAke3VybH0ke3Jvd2NvbH06MWAudHJpbSgpKTsKICAgIH0KICAgIGxpbmVzWzBdID0gYHN0YWNrRGVwdGg6JHtsaW5lcy5sZW5ndGgtMX1gOwogICAgY29uc3Qgc3RhY2sgPSBsaW5lcy5qb2luKCdcdCcpOwogICAgY29uc3QgciA9IHNhZmUudGVzdFBhdHRlcm4obmVlZGxlRGV0YWlscywgc3RhY2spOwogICAgaWYgKAogICAgICAgIGxvZ0xldmVsID09PSAxIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09IDIgJiYgciB8fAogICAgICAgIGxvZ0xldmVsID09PSAzICYmICFyCiAgICApIHsKICAgICAgICBzYWZlLnVib0xvZyhzdGFjay5yZXBsYWNlKC9cdC9nLCAnXG4nKSk7CiAgICB9CiAgICByZXR1cm4gcjsKfQpmdW5jdGlvbiBnZXRFeGNlcHRpb25Ub2tlbigpIHsKICAgIGNvbnN0IHRva2VuID0KICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKERhdGUubm93KCkgJSAyNiArIDk3KSArCiAgICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7CiAgICBjb25zdCBvZSA9IHNlbGYub25lcnJvcjsKICAgIHNlbGYub25lcnJvciA9IGZ1bmN0aW9uKG1zZywgLi4uYXJncykgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluY2x1ZGVzKHRva2VuKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jYWxsKHRoaXMsIG1zZywgLi4uYXJncyk7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICByZXR1cm4gdG9rZW47Cn0KCiAgKGZ1bmN0aW9uIGFib3J0T25TdGFja1RyYWNlKAogICAgY2hhaW4gPSAnJywKICAgIG5lZWRsZSA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgY2hhaW4gIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbmVlZGxlRGV0YWlscyA9IHNhZmUuaW5pdFBhdHRlcm4obmVlZGxlLCB7IGNhbk5lZ2F0ZTogdHJ1ZSB9KTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMik7CiAgICBjb25zdCBtYWtlUHJveHkgPSBmdW5jdGlvbihvd25lciwgY2hhaW4pIHsKICAgICAgICBjb25zdCBwb3MgPSBjaGFpbi5pbmRleE9mKCcuJyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgewogICAgICAgICAgICBsZXQgdiA9IG93bmVyW2NoYWluXTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBjaGFpbiwgewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZXNTdGFja1RyYWNlKG5lZWRsZURldGFpbHMsIGV4dHJhQXJncy5sb2cpICkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoZ2V0RXhjZXB0aW9uVG9rZW4oKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB2OwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlc1N0YWNrVHJhY2UobmVlZGxlRGV0YWlscywgZXh0cmFBcmdzLmxvZykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihnZXRFeGNlcHRpb25Ub2tlbigpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdiA9IGE7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBwcm9wID0gY2hhaW4uc2xpY2UoMCwgcG9zKTsKICAgICAgICBsZXQgdiA9IG93bmVyW3Byb3BdOwogICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgaWYgKCB2ICkgewogICAgICAgICAgICBtYWtlUHJveHkodiwgY2hhaW4pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBwcm9wKTsKICAgICAgICBpZiAoIGRlc2MgJiYgZGVzYy5zZXQgIT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBwcm9wLCB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiB2OyB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHYgPSBhOwogICAgICAgICAgICAgICAgaWYgKCBhIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICAgICAgICAgIG1ha2VQcm94eShhLCBjaGFpbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH07CiAgICBjb25zdCBvd25lciA9IHdpbmRvdzsKICAgIG1ha2VQcm94eShvd25lciwgY2hhaW4pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"addEventListener-defuser.js","aliases":["aeld.js","prevent-addEventListener.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2hvdWxkTG9nKGRldGFpbHMpIHsKICAgIGlmICggZGV0YWlscyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdjYW5EZWJ1ZycpICYmIGRldGFpbHMubG9nOwp9CmZ1bmN0aW9uIHNob3VsZERlYnVnKGRldGFpbHMpIHsKICAgIGlmICggZGV0YWlscyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdjYW5EZWJ1ZycpICYmIGRldGFpbHMuZGVidWc7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHJ1bkF0KGZuLCB3aGVuKSB7CiAgICBjb25zdCBpbnRGcm9tUmVhZHlTdGF0ZSA9IHN0YXRlID0+IHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gewogICAgICAgICAgICAnbG9hZGluZyc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyRGVmdXNlcigKICAgIHR5cGUgPSAnJywKICAgIHBhdHRlcm4gPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAyKTsKICAgIGNvbnN0IHJlVHlwZSA9IHNhZmUucGF0dGVyblRvUmVnZXgodHlwZSk7CiAgICBjb25zdCByZVBhdHRlcm4gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4pOwogICAgY29uc3QgbG9nID0gc2hvdWxkTG9nKGV4dHJhQXJncyk7CiAgICBjb25zdCBkZWJ1ZyA9IHNob3VsZERlYnVnKGV4dHJhQXJncyk7CiAgICBjb25zdCB0cmFwRWRkRXZlbnRMaXN0ZW5lcnMgPSAoICkgPT4gewogICAgICAgIGNvbnN0IGV2ZW50TGlzdGVuZXJIYW5kbGVyID0gewogICAgICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgICAgICBsZXQgdHlwZSwgaGFuZGxlcjsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFN0cmluZyhhcmdzWzBdKTsKICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gU3RyaW5nKGFyZ3NbMV0pOwogICAgICAgICAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlc1R5cGUgPSBzYWZlLlJlZ0V4cF90ZXN0LmNhbGwocmVUeXBlLCB0eXBlKTsKICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZXNIYW5kbGVyID0gc2FmZS5SZWdFeHBfdGVzdC5jYWxsKHJlUGF0dGVybiwgaGFuZGxlcik7CiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzRWl0aGVyID0gbWF0Y2hlc1R5cGUgfHwgbWF0Y2hlc0hhbmRsZXI7CiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzQm90aCA9IG1hdGNoZXNUeXBlICYmIG1hdGNoZXNIYW5kbGVyOwogICAgICAgICAgICAgICAgaWYgKCBsb2cgPT09IDEgJiYgbWF0Y2hlc0JvdGggfHwgbG9nID09PSAyICYmIG1hdGNoZXNFaXRoZXIgfHwgbG9nID09PSAzICkgewogICAgICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGBhZGRFdmVudExpc3RlbmVyKCcke3R5cGV9JywgJHtoYW5kbGVyfSlgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggZGVidWcgPT09IDEgJiYgbWF0Y2hlc0JvdGggfHwgZGVidWcgPT09IDIgJiYgbWF0Y2hlc0VpdGhlciApIHsKICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dlcjsgLy8ganNoaW50IGlnbm9yZTpsaW5lCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZXNCb3RoICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncyk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7CiAgICAgICAgICAgICAgICBpZiAoIHByb3AgPT09ICd0b1N0cmluZycgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC50b1N0cmluZy5iaW5kKHRhcmdldCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7CiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgICAgICBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gbmV3IFByb3h5KAogICAgICAgICAgICBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICAgICBldmVudExpc3RlbmVySGFuZGxlcgogICAgICAgICk7CiAgICB9OwogICAgcnVuQXQoKCApID0+IHsKICAgICAgICB0cmFwRWRkRXZlbnRMaXN0ZW5lcnMoKTsKICAgIH0sIGV4dHJhQXJncy5ydW5BdCk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"json-prune.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9CiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShEYXRlLm5vdygpICUgMjYgKyA5NykgKwogICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk4MjQ1MTY1MyArIDk4MjQ1MTY1MykudG9TdHJpbmcoMzYpOwogICAgY29uc3Qgb2UgPSBzZWxmLm9uZXJyb3I7CiAgICBzZWxmLm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIC4uLmFyZ3MpIHsKICAgICAgICBpZiAoIHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy5pbmNsdWRlcyh0b2tlbikgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgaWYgKCBvZSBpbnN0YW5jZW9mIEZ1bmN0aW9uICkgewogICAgICAgICAgICByZXR1cm4gb2UuY2FsbCh0aGlzLCBtc2csIC4uLmFyZ3MpOwogICAgICAgIH0KICAgIH0uYmluZCgpOwogICAgcmV0dXJuIHRva2VuOwp9CmZ1bmN0aW9uIG1hdGNoZXNTdGFja1RyYWNlKAogICAgbmVlZGxlRGV0YWlscywKICAgIGxvZ0xldmVsID0gMAopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgY29uc3QgZXJyb3IgPSBuZXcgc2FmZS5FcnJvcihleGNlcHRpb25Ub2tlbik7CiAgICBjb25zdCBkb2NVUkwgPSBuZXcgVVJMKHNlbGYubG9jYXRpb24uaHJlZik7CiAgICBkb2NVUkwuaGFzaCA9ICcnOwogICAgLy8gTm9ybWFsaXplIHN0YWNrIHRyYWNlCiAgICBjb25zdCByZUxpbmUgPSAvKC4qP0ApPyhcUyspKDpcZCspOlxkK1wpPyQvOwogICAgY29uc3QgbGluZXMgPSBbXTsKICAgIGZvciAoIGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KC9bXG5ccl0rLykgKSB7CiAgICAgICAgaWYgKCBsaW5lLmluY2x1ZGVzKGV4Y2VwdGlvblRva2VuKSApIHsgY29udGludWU7IH0KICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSBzYWZlLlJlZ0V4cF9leGVjLmNhbGwocmVMaW5lLCBsaW5lKTsKICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgeyBjb250aW51ZTsgfQogICAgICAgIGxldCB1cmwgPSBtYXRjaFsyXTsKICAgICAgICBpZiAoIHVybC5zdGFydHNXaXRoKCcoJykgKSB7IHVybCA9IHVybC5zbGljZSgxKTsgfQogICAgICAgIGlmICggdXJsID09PSBkb2NVUkwuaHJlZiApIHsKICAgICAgICAgICAgdXJsID0gJ2lubGluZVNjcmlwdCc7CiAgICAgICAgfSBlbHNlIGlmICggdXJsLnN0YXJ0c1dpdGgoJzxhbm9ueW1vdXM+JykgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmplY3RlZFNjcmlwdCc7CiAgICAgICAgfQogICAgICAgIGxldCBmbiA9IG1hdGNoWzFdICE9PSB1bmRlZmluZWQKICAgICAgICAgICAgPyBtYXRjaFsxXS5zbGljZSgwLCAtMSkKICAgICAgICAgICAgOiBsaW5lLnNsaWNlKDAsIG1hdGNoLmluZGV4KS50cmltKCk7CiAgICAgICAgaWYgKCBmbi5zdGFydHNXaXRoKCdhdCcpICkgeyBmbiA9IGZuLnNsaWNlKDIpLnRyaW0oKTsgfQogICAgICAgIGxldCByb3djb2wgPSBtYXRjaFszXTsKICAgICAgICBsaW5lcy5wdXNoKCcgJyArIGAke2ZufSAke3VybH0ke3Jvd2NvbH06MWAudHJpbSgpKTsKICAgIH0KICAgIGxpbmVzWzBdID0gYHN0YWNrRGVwdGg6JHtsaW5lcy5sZW5ndGgtMX1gOwogICAgY29uc3Qgc3RhY2sgPSBsaW5lcy5qb2luKCdcdCcpOwogICAgY29uc3QgciA9IHNhZmUudGVzdFBhdHRlcm4obmVlZGxlRGV0YWlscywgc3RhY2spOwogICAgaWYgKAogICAgICAgIGxvZ0xldmVsID09PSAxIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09IDIgJiYgciB8fAogICAgICAgIGxvZ0xldmVsID09PSAzICYmICFyCiAgICApIHsKICAgICAgICBzYWZlLnVib0xvZyhzdGFjay5yZXBsYWNlKC9cdC9nLCAnXG4nKSk7CiAgICB9CiAgICByZXR1cm4gcjsKfQpmdW5jdGlvbiBzaG91bGRMb2coZGV0YWlscykgewogICAgaWYgKCBkZXRhaWxzIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5oYXMoJ2NhbkRlYnVnJykgJiYgZGV0YWlscy5sb2c7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHBhcnNlUHJvcGVydGllc1RvTWF0Y2gocHJvcHNUb01hdGNoLCBpbXBsaWNpdCA9ICcnKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IG5lZWRsZXMgPSBuZXcgTWFwKCk7CiAgICBpZiAoIHByb3BzVG9NYXRjaCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzVG9NYXRjaCA9PT0gJycgKSB7IHJldHVybiBuZWVkbGVzOyB9CiAgICBjb25zdCBvcHRpb25zID0geyBjYW5OZWdhdGU6IHRydWUgfTsKICAgIGZvciAoIGNvbnN0IG5lZWRsZSBvZiBwcm9wc1RvTWF0Y2guc3BsaXQoL1xzKy8pICkgewogICAgICAgIGNvbnN0IFsgcHJvcCwgcGF0dGVybiBdID0gbmVlZGxlLnNwbGl0KCc6Jyk7CiAgICAgICAgaWYgKCBwcm9wID09PSAnJyApIHsgY29udGludWU7IH0KICAgICAgICBpZiAoIHBhdHRlcm4gIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgbmVlZGxlcy5zZXQocHJvcCwgc2FmZS5pbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zKSk7CiAgICAgICAgfSBlbHNlIGlmICggaW1wbGljaXQgIT09ICcnICkgewogICAgICAgICAgICBuZWVkbGVzLnNldChpbXBsaWNpdCwgc2FmZS5pbml0UGF0dGVybihwcm9wLCBvcHRpb25zKSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG5lZWRsZXM7Cn0KZnVuY3Rpb24gb2JqZWN0UHJ1bmUoCiAgICBvYmosCiAgICByYXdQcnVuZVBhdGhzLAogICAgcmF3TmVlZGxlUGF0aHMsCiAgICBzdGFja05lZWRsZURldGFpbHMgPSB7IG1hdGNoQWxsOiB0cnVlIH0sCiAgICBleHRyYUFyZ3MgPSB7fQopIHsKICAgIGlmICggdHlwZW9mIHJhd1BydW5lUGF0aHMgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcHJ1bmVQYXRocyA9IHJhd1BydW5lUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdQcnVuZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGNvbnN0IG5lZWRsZVBhdGhzID0gcHJ1bmVQYXRocy5sZW5ndGggIT09IDAgJiYgcmF3TmVlZGxlUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdOZWVkbGVQYXRocy5zcGxpdCgvICsvKQogICAgICAgIDogW107CiAgICBjb25zdCBsb2dMZXZlbCA9IHNob3VsZExvZyh7IGxvZzogcmF3UHJ1bmVQYXRocyA9PT0gJycgfHwgZXh0cmFBcmdzLmxvZyB9KTsKICAgIGNvbnN0IHJlTG9nTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChsb2dMZXZlbCA9PT0gdHJ1ZSA/IHJhd05lZWRsZVBhdGhzIDogJycpOwogICAgaWYgKCBzdGFja05lZWRsZURldGFpbHMubWF0Y2hBbGwgIT09IHRydWUgKSB7CiAgICAgICAgaWYgKCBtYXRjaGVzU3RhY2tUcmFjZShzdGFja05lZWRsZURldGFpbHMsIGV4dHJhQXJncy5sb2dzdGFjaykgPT09IGZhbHNlICkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgaWYgKCBvYmplY3RQcnVuZS5maW5kT3duZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBvYmplY3RQcnVuZS5maW5kT3duZXIgPSAocm9vdCwgcGF0aCwgcHJ1bmUgPSBmYWxzZSkgPT4gewogICAgICAgICAgICBsZXQgb3duZXIgPSByb290OwogICAgICAgICAgICBsZXQgY2hhaW4gPSBwYXRoOwogICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmluZGV4T2YoJy4nKTsKICAgICAgICAgICAgICAgIGlmICggcG9zID09PSAtMSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG93bmVyLmhhc093blByb3BlcnR5KGNoYWluKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBjaGFpbiA9PT0gJyonICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgaW4gb3duZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2tleV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltjaGFpbl07CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGlmaWVkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IGNoYWluLnNsaWNlKDAsIHBvcyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvd25lcikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gb2JqZWN0UHJ1bmUuZmluZE93bmVyKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSB8fCBmb3VuZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShwcm9wKSA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICAgICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIG9iamVjdFBydW5lLm11c3RQcm9jZXNzID0gKHJvb3QsIG5lZWRsZVBhdGhzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5lZWRsZVBhdGggb2YgbmVlZGxlUGF0aHMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdFBydW5lLmZpbmRPd25lcihyb290LCBuZWVkbGVQYXRoKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH07CiAgICAgICAgb2JqZWN0UHJ1bmUubG9nSnNvbiA9IChqc29uLCBtc2csIHJlTmVlZGxlKSA9PiB7CiAgICAgICAgICAgIGlmICggcmVOZWVkbGUudGVzdChqc29uKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlU2VsZigpLnVib0xvZyhgb2JqZWN0UHJ1bmUoKWAsIG1zZywgbG9jYXRpb24uaG9zdG5hbWUsIGpzb24pOwogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBqc29uQmVmb3JlID0gbG9nTGV2ZWwgPyBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpIDogJyc7CiAgICBpZiAoIGxvZ0xldmVsID09PSB0cnVlIHx8IGxvZ0xldmVsID09PSAnYWxsJyApIHsKICAgICAgICBvYmplY3RQcnVuZS5sb2dKc29uKGpzb25CZWZvcmUsIGBwcnVuZToiJHtyYXdQcnVuZVBhdGhzfSIgbG9nOiIke2xvZ0xldmVsfSJgLCByZUxvZ05lZWRsZSk7CiAgICB9CiAgICBpZiAoIHBydW5lUGF0aHMubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgIGxldCBvdXRjb21lID0gJ25vbWF0Y2gnOwogICAgaWYgKCBvYmplY3RQcnVuZS5tdXN0UHJvY2VzcyhvYmosIG5lZWRsZVBhdGhzKSApIHsKICAgICAgICBmb3IgKCBjb25zdCBwYXRoIG9mIHBydW5lUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0UHJ1bmUuZmluZE93bmVyKG9iaiwgcGF0aCwgdHJ1ZSkgKSB7CiAgICAgICAgICAgICAgICBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICggbG9nTGV2ZWwgPT09IG91dGNvbWUgKSB7CiAgICAgICAgb2JqZWN0UHJ1bmUubG9nSnNvbihqc29uQmVmb3JlLCBgcHJ1bmU6IiR7cmF3UHJ1bmVQYXRoc30iIGxvZzoiJHtsb2dMZXZlbH0iYCwgcmVMb2dOZWVkbGUpOwogICAgfQogICAgaWYgKCBvdXRjb21lID09PSAnbWF0Y2gnICkgeyByZXR1cm4gb2JqOyB9Cn0KZnVuY3Rpb24gbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCAuLi5vYmpzKSB7CiAgICBpZiAoIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9IChzcmMsIGRlcywgcHJvcHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgcCBvZiBwcm9wcyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzcmNbcF07CiAgICAgICAgICAgICAgICBpZiAoIHYgPT09IHVuZGVmaW5lZCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGRlc1twXSA9IHNyY1twXTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGhheXN0YWNrID0ge307CiAgICBjb25zdCBwcm9wcyA9IEFycmF5LmZyb20ocHJvcE5lZWRsZXMua2V5cygpKTsKICAgIGZvciAoIGNvbnN0IG9iaiBvZiBvYmpzICkgewogICAgICAgIGlmICggb2JqIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMob2JqLCBoYXlzdGFjaywgcHJvcHMpOwogICAgfQogICAgZm9yICggY29uc3QgWyBwcm9wLCBkZXRhaWxzIF0gb2YgcHJvcE5lZWRsZXMgKSB7CiAgICAgICAgbGV0IHZhbHVlID0gaGF5c3RhY2tbcHJvcF07CiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgdHJ5IHsgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7IH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsgfQogICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgfQogICAgICAgIGlmICggc2FmZS50ZXN0UGF0dGVybihkZXRhaWxzLCB2YWx1ZSkgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCiAgKGZ1bmN0aW9uIGpzb25QcnVuZSgKICAgIHJhd1BydW5lUGF0aHMgPSAnJywKICAgIHJhd05lZWRsZVBhdGhzID0gJycsCiAgICBzdGFja05lZWRsZSA9ICcnCikgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBzdGFja05lZWRsZURldGFpbHMgPSBzYWZlLmluaXRQYXR0ZXJuKHN0YWNrTmVlZGxlLCB7IGNhbk5lZ2F0ZTogdHJ1ZSB9KTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMyk7CiAgICBKU09OLnBhcnNlID0gbmV3IFByb3h5KEpTT04ucGFyc2UsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IG9iakJlZm9yZSA9IFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgY29uc3Qgb2JqQWZ0ZXIgPSBvYmplY3RQcnVuZSgKICAgICAgICAgICAgICAgIG9iakJlZm9yZSwKICAgICAgICAgICAgICAgIHJhd1BydW5lUGF0aHMsCiAgICAgICAgICAgICAgICByYXdOZWVkbGVQYXRocywKICAgICAgICAgICAgICAgIHN0YWNrTmVlZGxlRGV0YWlscywKICAgICAgICAgICAgICAgIGV4dHJhQXJncwogICAgICAgICAgICk7CiAgICAgICAgICAgcmV0dXJuIG9iakFmdGVyIHx8IG9iakJlZm9yZTsKICAgICAgICB9LAogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"json-prune-fetch-response.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9CiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShEYXRlLm5vdygpICUgMjYgKyA5NykgKwogICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk4MjQ1MTY1MyArIDk4MjQ1MTY1MykudG9TdHJpbmcoMzYpOwogICAgY29uc3Qgb2UgPSBzZWxmLm9uZXJyb3I7CiAgICBzZWxmLm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIC4uLmFyZ3MpIHsKICAgICAgICBpZiAoIHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy5pbmNsdWRlcyh0b2tlbikgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgaWYgKCBvZSBpbnN0YW5jZW9mIEZ1bmN0aW9uICkgewogICAgICAgICAgICByZXR1cm4gb2UuY2FsbCh0aGlzLCBtc2csIC4uLmFyZ3MpOwogICAgICAgIH0KICAgIH0uYmluZCgpOwogICAgcmV0dXJuIHRva2VuOwp9CmZ1bmN0aW9uIG1hdGNoZXNTdGFja1RyYWNlKAogICAgbmVlZGxlRGV0YWlscywKICAgIGxvZ0xldmVsID0gMAopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgY29uc3QgZXJyb3IgPSBuZXcgc2FmZS5FcnJvcihleGNlcHRpb25Ub2tlbik7CiAgICBjb25zdCBkb2NVUkwgPSBuZXcgVVJMKHNlbGYubG9jYXRpb24uaHJlZik7CiAgICBkb2NVUkwuaGFzaCA9ICcnOwogICAgLy8gTm9ybWFsaXplIHN0YWNrIHRyYWNlCiAgICBjb25zdCByZUxpbmUgPSAvKC4qP0ApPyhcUyspKDpcZCspOlxkK1wpPyQvOwogICAgY29uc3QgbGluZXMgPSBbXTsKICAgIGZvciAoIGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KC9bXG5ccl0rLykgKSB7CiAgICAgICAgaWYgKCBsaW5lLmluY2x1ZGVzKGV4Y2VwdGlvblRva2VuKSApIHsgY29udGludWU7IH0KICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSBzYWZlLlJlZ0V4cF9leGVjLmNhbGwocmVMaW5lLCBsaW5lKTsKICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgeyBjb250aW51ZTsgfQogICAgICAgIGxldCB1cmwgPSBtYXRjaFsyXTsKICAgICAgICBpZiAoIHVybC5zdGFydHNXaXRoKCcoJykgKSB7IHVybCA9IHVybC5zbGljZSgxKTsgfQogICAgICAgIGlmICggdXJsID09PSBkb2NVUkwuaHJlZiApIHsKICAgICAgICAgICAgdXJsID0gJ2lubGluZVNjcmlwdCc7CiAgICAgICAgfSBlbHNlIGlmICggdXJsLnN0YXJ0c1dpdGgoJzxhbm9ueW1vdXM+JykgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmplY3RlZFNjcmlwdCc7CiAgICAgICAgfQogICAgICAgIGxldCBmbiA9IG1hdGNoWzFdICE9PSB1bmRlZmluZWQKICAgICAgICAgICAgPyBtYXRjaFsxXS5zbGljZSgwLCAtMSkKICAgICAgICAgICAgOiBsaW5lLnNsaWNlKDAsIG1hdGNoLmluZGV4KS50cmltKCk7CiAgICAgICAgaWYgKCBmbi5zdGFydHNXaXRoKCdhdCcpICkgeyBmbiA9IGZuLnNsaWNlKDIpLnRyaW0oKTsgfQogICAgICAgIGxldCByb3djb2wgPSBtYXRjaFszXTsKICAgICAgICBsaW5lcy5wdXNoKCcgJyArIGAke2ZufSAke3VybH0ke3Jvd2NvbH06MWAudHJpbSgpKTsKICAgIH0KICAgIGxpbmVzWzBdID0gYHN0YWNrRGVwdGg6JHtsaW5lcy5sZW5ndGgtMX1gOwogICAgY29uc3Qgc3RhY2sgPSBsaW5lcy5qb2luKCdcdCcpOwogICAgY29uc3QgciA9IHNhZmUudGVzdFBhdHRlcm4obmVlZGxlRGV0YWlscywgc3RhY2spOwogICAgaWYgKAogICAgICAgIGxvZ0xldmVsID09PSAxIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09IDIgJiYgciB8fAogICAgICAgIGxvZ0xldmVsID09PSAzICYmICFyCiAgICApIHsKICAgICAgICBzYWZlLnVib0xvZyhzdGFjay5yZXBsYWNlKC9cdC9nLCAnXG4nKSk7CiAgICB9CiAgICByZXR1cm4gcjsKfQpmdW5jdGlvbiBzaG91bGRMb2coZGV0YWlscykgewogICAgaWYgKCBkZXRhaWxzIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5oYXMoJ2NhbkRlYnVnJykgJiYgZGV0YWlscy5sb2c7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHBhcnNlUHJvcGVydGllc1RvTWF0Y2gocHJvcHNUb01hdGNoLCBpbXBsaWNpdCA9ICcnKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IG5lZWRsZXMgPSBuZXcgTWFwKCk7CiAgICBpZiAoIHByb3BzVG9NYXRjaCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzVG9NYXRjaCA9PT0gJycgKSB7IHJldHVybiBuZWVkbGVzOyB9CiAgICBjb25zdCBvcHRpb25zID0geyBjYW5OZWdhdGU6IHRydWUgfTsKICAgIGZvciAoIGNvbnN0IG5lZWRsZSBvZiBwcm9wc1RvTWF0Y2guc3BsaXQoL1xzKy8pICkgewogICAgICAgIGNvbnN0IFsgcHJvcCwgcGF0dGVybiBdID0gbmVlZGxlLnNwbGl0KCc6Jyk7CiAgICAgICAgaWYgKCBwcm9wID09PSAnJyApIHsgY29udGludWU7IH0KICAgICAgICBpZiAoIHBhdHRlcm4gIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgbmVlZGxlcy5zZXQocHJvcCwgc2FmZS5pbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zKSk7CiAgICAgICAgfSBlbHNlIGlmICggaW1wbGljaXQgIT09ICcnICkgewogICAgICAgICAgICBuZWVkbGVzLnNldChpbXBsaWNpdCwgc2FmZS5pbml0UGF0dGVybihwcm9wLCBvcHRpb25zKSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG5lZWRsZXM7Cn0KZnVuY3Rpb24gb2JqZWN0UHJ1bmUoCiAgICBvYmosCiAgICByYXdQcnVuZVBhdGhzLAogICAgcmF3TmVlZGxlUGF0aHMsCiAgICBzdGFja05lZWRsZURldGFpbHMgPSB7IG1hdGNoQWxsOiB0cnVlIH0sCiAgICBleHRyYUFyZ3MgPSB7fQopIHsKICAgIGlmICggdHlwZW9mIHJhd1BydW5lUGF0aHMgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcHJ1bmVQYXRocyA9IHJhd1BydW5lUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdQcnVuZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGNvbnN0IG5lZWRsZVBhdGhzID0gcHJ1bmVQYXRocy5sZW5ndGggIT09IDAgJiYgcmF3TmVlZGxlUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdOZWVkbGVQYXRocy5zcGxpdCgvICsvKQogICAgICAgIDogW107CiAgICBjb25zdCBsb2dMZXZlbCA9IHNob3VsZExvZyh7IGxvZzogcmF3UHJ1bmVQYXRocyA9PT0gJycgfHwgZXh0cmFBcmdzLmxvZyB9KTsKICAgIGNvbnN0IHJlTG9nTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChsb2dMZXZlbCA9PT0gdHJ1ZSA/IHJhd05lZWRsZVBhdGhzIDogJycpOwogICAgaWYgKCBzdGFja05lZWRsZURldGFpbHMubWF0Y2hBbGwgIT09IHRydWUgKSB7CiAgICAgICAgaWYgKCBtYXRjaGVzU3RhY2tUcmFjZShzdGFja05lZWRsZURldGFpbHMsIGV4dHJhQXJncy5sb2dzdGFjaykgPT09IGZhbHNlICkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgaWYgKCBvYmplY3RQcnVuZS5maW5kT3duZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBvYmplY3RQcnVuZS5maW5kT3duZXIgPSAocm9vdCwgcGF0aCwgcHJ1bmUgPSBmYWxzZSkgPT4gewogICAgICAgICAgICBsZXQgb3duZXIgPSByb290OwogICAgICAgICAgICBsZXQgY2hhaW4gPSBwYXRoOwogICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmluZGV4T2YoJy4nKTsKICAgICAgICAgICAgICAgIGlmICggcG9zID09PSAtMSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG93bmVyLmhhc093blByb3BlcnR5KGNoYWluKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBjaGFpbiA9PT0gJyonICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgaW4gb3duZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2tleV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltjaGFpbl07CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGlmaWVkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IGNoYWluLnNsaWNlKDAsIHBvcyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvd25lcikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gb2JqZWN0UHJ1bmUuZmluZE93bmVyKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSB8fCBmb3VuZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShwcm9wKSA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICAgICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIG9iamVjdFBydW5lLm11c3RQcm9jZXNzID0gKHJvb3QsIG5lZWRsZVBhdGhzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5lZWRsZVBhdGggb2YgbmVlZGxlUGF0aHMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdFBydW5lLmZpbmRPd25lcihyb290LCBuZWVkbGVQYXRoKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH07CiAgICAgICAgb2JqZWN0UHJ1bmUubG9nSnNvbiA9IChqc29uLCBtc2csIHJlTmVlZGxlKSA9PiB7CiAgICAgICAgICAgIGlmICggcmVOZWVkbGUudGVzdChqc29uKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlU2VsZigpLnVib0xvZyhgb2JqZWN0UHJ1bmUoKWAsIG1zZywgbG9jYXRpb24uaG9zdG5hbWUsIGpzb24pOwogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBqc29uQmVmb3JlID0gbG9nTGV2ZWwgPyBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpIDogJyc7CiAgICBpZiAoIGxvZ0xldmVsID09PSB0cnVlIHx8IGxvZ0xldmVsID09PSAnYWxsJyApIHsKICAgICAgICBvYmplY3RQcnVuZS5sb2dKc29uKGpzb25CZWZvcmUsIGBwcnVuZToiJHtyYXdQcnVuZVBhdGhzfSIgbG9nOiIke2xvZ0xldmVsfSJgLCByZUxvZ05lZWRsZSk7CiAgICB9CiAgICBpZiAoIHBydW5lUGF0aHMubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgIGxldCBvdXRjb21lID0gJ25vbWF0Y2gnOwogICAgaWYgKCBvYmplY3RQcnVuZS5tdXN0UHJvY2VzcyhvYmosIG5lZWRsZVBhdGhzKSApIHsKICAgICAgICBmb3IgKCBjb25zdCBwYXRoIG9mIHBydW5lUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0UHJ1bmUuZmluZE93bmVyKG9iaiwgcGF0aCwgdHJ1ZSkgKSB7CiAgICAgICAgICAgICAgICBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICggbG9nTGV2ZWwgPT09IG91dGNvbWUgKSB7CiAgICAgICAgb2JqZWN0UHJ1bmUubG9nSnNvbihqc29uQmVmb3JlLCBgcHJ1bmU6IiR7cmF3UHJ1bmVQYXRoc30iIGxvZzoiJHtsb2dMZXZlbH0iYCwgcmVMb2dOZWVkbGUpOwogICAgfQogICAgaWYgKCBvdXRjb21lID09PSAnbWF0Y2gnICkgeyByZXR1cm4gb2JqOyB9Cn0KZnVuY3Rpb24gbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCAuLi5vYmpzKSB7CiAgICBpZiAoIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9IChzcmMsIGRlcywgcHJvcHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgcCBvZiBwcm9wcyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzcmNbcF07CiAgICAgICAgICAgICAgICBpZiAoIHYgPT09IHVuZGVmaW5lZCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGRlc1twXSA9IHNyY1twXTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGhheXN0YWNrID0ge307CiAgICBjb25zdCBwcm9wcyA9IEFycmF5LmZyb20ocHJvcE5lZWRsZXMua2V5cygpKTsKICAgIGZvciAoIGNvbnN0IG9iaiBvZiBvYmpzICkgewogICAgICAgIGlmICggb2JqIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMob2JqLCBoYXlzdGFjaywgcHJvcHMpOwogICAgfQogICAgZm9yICggY29uc3QgWyBwcm9wLCBkZXRhaWxzIF0gb2YgcHJvcE5lZWRsZXMgKSB7CiAgICAgICAgbGV0IHZhbHVlID0gaGF5c3RhY2tbcHJvcF07CiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgdHJ5IHsgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7IH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsgfQogICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgfQogICAgICAgIGlmICggc2FmZS50ZXN0UGF0dGVybihkZXRhaWxzLCB2YWx1ZSkgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCiAgKGZ1bmN0aW9uIGpzb25QcnVuZUZldGNoUmVzcG9uc2UoCiAgICByYXdQcnVuZVBhdGhzID0gJycsCiAgICByYXdOZWVkbGVQYXRocyA9ICcnCikgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBleHRyYUFyZ3MgPSBzYWZlLmdldEV4dHJhQXJncyhBcnJheS5mcm9tKGFyZ3VtZW50cyksIDIpOwogICAgY29uc3QgbG9nTGV2ZWwgPSBzaG91bGRMb2coeyBsb2c6IHJhd1BydW5lUGF0aHMgPT09ICcnIHx8IGV4dHJhQXJncy5sb2csIH0pOwogICAgY29uc3QgbG9nID0gbG9nTGV2ZWwgPyAoKC4uLmFyZ3MpID0+IHsgc2FmZS51Ym9Mb2coLi4uYXJncyk7IH0pIDogKCggKSA9PiB7IH0pOyAKICAgIGNvbnN0IHByb3BOZWVkbGVzID0gcGFyc2VQcm9wZXJ0aWVzVG9NYXRjaChleHRyYUFyZ3MucHJvcHNUb01hdGNoLCAndXJsJyk7CiAgICBjb25zdCBhcHBseUhhbmRsZXIgPSBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICBjb25zdCBmZXRjaFByb21pc2UgPSBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncyk7CiAgICAgICAgaWYgKCBsb2dMZXZlbCA9PT0gdHJ1ZSApIHsKICAgICAgICAgICAgbG9nKCdqc29uLXBydW5lLWZldGNoLXJlc3BvbnNlOicsIEpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oYXJncykpLnNsaWNlKDEsLTEpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCByYXdQcnVuZVBhdGhzID09PSAnJyApIHsgcmV0dXJuIGZldGNoUHJvbWlzZTsgfQogICAgICAgIGxldCBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICBpZiAoIHByb3BOZWVkbGVzLnNpemUgIT09IDAgKSB7CiAgICAgICAgICAgIGNvbnN0IG9ianMgPSBbIGFyZ3NbMF0gaW5zdGFuY2VvZiBPYmplY3QgPyBhcmdzWzBdIDogeyB1cmw6IGFyZ3NbMF0gfSBdOwogICAgICAgICAgICBpZiAoIGFyZ3NbMV0gaW5zdGFuY2VvZiBPYmplY3QgKSB7CiAgICAgICAgICAgICAgICBvYmpzLnB1c2goYXJnc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBtYXRjaE9iamVjdFByb3BlcnRpZXMocHJvcE5lZWRsZXMsIC4uLm9ianMpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnbm9tYXRjaCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBvdXRjb21lID09PSBsb2dMZXZlbCB8fCBsb2dMZXZlbCA9PT0gJ2FsbCcgKSB7CiAgICAgICAgICAgICAgICBsb2coCiAgICAgICAgICAgICAgICAgICAgYGpzb24tcHJ1bmUtZmV0Y2gtcmVzcG9uc2UgKCR7b3V0Y29tZX0pYCwKICAgICAgICAgICAgICAgICAgICBgXG5cdGZldGNoUHJvcHNUb01hdGNoOiAke0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20ocHJvcE5lZWRsZXMpKS5zbGljZSgxLC0xKX1gLAogICAgICAgICAgICAgICAgICAgICdcblx0cHJvcHM6JywgLi4uYXJncywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCBvdXRjb21lID09PSAnbm9tYXRjaCcgKSB7IHJldHVybiBmZXRjaFByb21pc2U7IH0KICAgICAgICByZXR1cm4gZmV0Y2hQcm9taXNlLnRoZW4ocmVzcG9uc2VCZWZvcmUgPT4gewogICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlc3BvbnNlQmVmb3JlLmNsb25lKCk7CiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCkudGhlbihvYmpCZWZvcmUgPT4gewogICAgICAgICAgICAgICAgaWYgKCB0eXBlb2Ygb2JqQmVmb3JlICE9PSAnb2JqZWN0JyApIHsgcmV0dXJuIHJlc3BvbnNlQmVmb3JlOyB9CiAgICAgICAgICAgICAgICBjb25zdCBvYmpBZnRlciA9IG9iamVjdFBydW5lKAogICAgICAgICAgICAgICAgICAgIG9iakJlZm9yZSwKICAgICAgICAgICAgICAgICAgICByYXdQcnVuZVBhdGhzLAogICAgICAgICAgICAgICAgICAgIHJhd05lZWRsZVBhdGhzLAogICAgICAgICAgICAgICAgICAgIHsgbWF0Y2hBbGw6IHRydWUgfSwKICAgICAgICAgICAgICAgICAgICBleHRyYUFyZ3MKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvYmpBZnRlciAhPT0gJ29iamVjdCcgKSB7IHJldHVybiByZXNwb25zZUJlZm9yZTsgfQogICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VBZnRlciA9IFJlc3BvbnNlLmpzb24ob2JqQWZ0ZXIsIHsKICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlQmVmb3JlLnN0YXR1cywKICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZUJlZm9yZS5zdGF0dXNUZXh0LAogICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlQmVmb3JlLmhlYWRlcnMsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJlc3BvbnNlQWZ0ZXIsIHsKICAgICAgICAgICAgICAgICAgICBvazogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUub2sgfSwKICAgICAgICAgICAgICAgICAgICByZWRpcmVjdGVkOiB7IHZhbHVlOiByZXNwb25zZUJlZm9yZS5yZWRpcmVjdGVkIH0sCiAgICAgICAgICAgICAgICAgICAgdHlwZTogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUudHlwZSB9LAogICAgICAgICAgICAgICAgICAgIHVybDogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUudXJsIH0sCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZUFmdGVyOwogICAgICAgICAgICB9KS5jYXRjaChyZWFzb24gPT4gewogICAgICAgICAgICAgICAgbG9nKCdqc29uLXBydW5lLWZldGNoLXJlc3BvbnNlOicsIHJlYXNvbik7CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VCZWZvcmU7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pLmNhdGNoKHJlYXNvbiA9PiB7CiAgICAgICAgICAgIGxvZygnanNvbi1wcnVuZS1mZXRjaC1yZXNwb25zZTonLCByZWFzb24pOwogICAgICAgICAgICByZXR1cm4gZmV0Y2hQcm9taXNlOwogICAgICAgIH0pOwogICAgfTsKICAgIHNlbGYuZmV0Y2ggPSBuZXcgUHJveHkoc2VsZi5mZXRjaCwgewogICAgICAgIGFwcGx5OiBhcHBseUhhbmRsZXIKICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"json-prune-xhr-response.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9CiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShEYXRlLm5vdygpICUgMjYgKyA5NykgKwogICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk4MjQ1MTY1MyArIDk4MjQ1MTY1MykudG9TdHJpbmcoMzYpOwogICAgY29uc3Qgb2UgPSBzZWxmLm9uZXJyb3I7CiAgICBzZWxmLm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIC4uLmFyZ3MpIHsKICAgICAgICBpZiAoIHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy5pbmNsdWRlcyh0b2tlbikgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgaWYgKCBvZSBpbnN0YW5jZW9mIEZ1bmN0aW9uICkgewogICAgICAgICAgICByZXR1cm4gb2UuY2FsbCh0aGlzLCBtc2csIC4uLmFyZ3MpOwogICAgICAgIH0KICAgIH0uYmluZCgpOwogICAgcmV0dXJuIHRva2VuOwp9CmZ1bmN0aW9uIG1hdGNoZXNTdGFja1RyYWNlKAogICAgbmVlZGxlRGV0YWlscywKICAgIGxvZ0xldmVsID0gMAopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgY29uc3QgZXJyb3IgPSBuZXcgc2FmZS5FcnJvcihleGNlcHRpb25Ub2tlbik7CiAgICBjb25zdCBkb2NVUkwgPSBuZXcgVVJMKHNlbGYubG9jYXRpb24uaHJlZik7CiAgICBkb2NVUkwuaGFzaCA9ICcnOwogICAgLy8gTm9ybWFsaXplIHN0YWNrIHRyYWNlCiAgICBjb25zdCByZUxpbmUgPSAvKC4qP0ApPyhcUyspKDpcZCspOlxkK1wpPyQvOwogICAgY29uc3QgbGluZXMgPSBbXTsKICAgIGZvciAoIGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KC9bXG5ccl0rLykgKSB7CiAgICAgICAgaWYgKCBsaW5lLmluY2x1ZGVzKGV4Y2VwdGlvblRva2VuKSApIHsgY29udGludWU7IH0KICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSBzYWZlLlJlZ0V4cF9leGVjLmNhbGwocmVMaW5lLCBsaW5lKTsKICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgeyBjb250aW51ZTsgfQogICAgICAgIGxldCB1cmwgPSBtYXRjaFsyXTsKICAgICAgICBpZiAoIHVybC5zdGFydHNXaXRoKCcoJykgKSB7IHVybCA9IHVybC5zbGljZSgxKTsgfQogICAgICAgIGlmICggdXJsID09PSBkb2NVUkwuaHJlZiApIHsKICAgICAgICAgICAgdXJsID0gJ2lubGluZVNjcmlwdCc7CiAgICAgICAgfSBlbHNlIGlmICggdXJsLnN0YXJ0c1dpdGgoJzxhbm9ueW1vdXM+JykgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmplY3RlZFNjcmlwdCc7CiAgICAgICAgfQogICAgICAgIGxldCBmbiA9IG1hdGNoWzFdICE9PSB1bmRlZmluZWQKICAgICAgICAgICAgPyBtYXRjaFsxXS5zbGljZSgwLCAtMSkKICAgICAgICAgICAgOiBsaW5lLnNsaWNlKDAsIG1hdGNoLmluZGV4KS50cmltKCk7CiAgICAgICAgaWYgKCBmbi5zdGFydHNXaXRoKCdhdCcpICkgeyBmbiA9IGZuLnNsaWNlKDIpLnRyaW0oKTsgfQogICAgICAgIGxldCByb3djb2wgPSBtYXRjaFszXTsKICAgICAgICBsaW5lcy5wdXNoKCcgJyArIGAke2ZufSAke3VybH0ke3Jvd2NvbH06MWAudHJpbSgpKTsKICAgIH0KICAgIGxpbmVzWzBdID0gYHN0YWNrRGVwdGg6JHtsaW5lcy5sZW5ndGgtMX1gOwogICAgY29uc3Qgc3RhY2sgPSBsaW5lcy5qb2luKCdcdCcpOwogICAgY29uc3QgciA9IHNhZmUudGVzdFBhdHRlcm4obmVlZGxlRGV0YWlscywgc3RhY2spOwogICAgaWYgKAogICAgICAgIGxvZ0xldmVsID09PSAxIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09IDIgJiYgciB8fAogICAgICAgIGxvZ0xldmVsID09PSAzICYmICFyCiAgICApIHsKICAgICAgICBzYWZlLnVib0xvZyhzdGFjay5yZXBsYWNlKC9cdC9nLCAnXG4nKSk7CiAgICB9CiAgICByZXR1cm4gcjsKfQpmdW5jdGlvbiBzaG91bGRMb2coZGV0YWlscykgewogICAgaWYgKCBkZXRhaWxzIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5oYXMoJ2NhbkRlYnVnJykgJiYgZGV0YWlscy5sb2c7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHBhcnNlUHJvcGVydGllc1RvTWF0Y2gocHJvcHNUb01hdGNoLCBpbXBsaWNpdCA9ICcnKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IG5lZWRsZXMgPSBuZXcgTWFwKCk7CiAgICBpZiAoIHByb3BzVG9NYXRjaCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzVG9NYXRjaCA9PT0gJycgKSB7IHJldHVybiBuZWVkbGVzOyB9CiAgICBjb25zdCBvcHRpb25zID0geyBjYW5OZWdhdGU6IHRydWUgfTsKICAgIGZvciAoIGNvbnN0IG5lZWRsZSBvZiBwcm9wc1RvTWF0Y2guc3BsaXQoL1xzKy8pICkgewogICAgICAgIGNvbnN0IFsgcHJvcCwgcGF0dGVybiBdID0gbmVlZGxlLnNwbGl0KCc6Jyk7CiAgICAgICAgaWYgKCBwcm9wID09PSAnJyApIHsgY29udGludWU7IH0KICAgICAgICBpZiAoIHBhdHRlcm4gIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgbmVlZGxlcy5zZXQocHJvcCwgc2FmZS5pbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zKSk7CiAgICAgICAgfSBlbHNlIGlmICggaW1wbGljaXQgIT09ICcnICkgewogICAgICAgICAgICBuZWVkbGVzLnNldChpbXBsaWNpdCwgc2FmZS5pbml0UGF0dGVybihwcm9wLCBvcHRpb25zKSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG5lZWRsZXM7Cn0KZnVuY3Rpb24gb2JqZWN0UHJ1bmUoCiAgICBvYmosCiAgICByYXdQcnVuZVBhdGhzLAogICAgcmF3TmVlZGxlUGF0aHMsCiAgICBzdGFja05lZWRsZURldGFpbHMgPSB7IG1hdGNoQWxsOiB0cnVlIH0sCiAgICBleHRyYUFyZ3MgPSB7fQopIHsKICAgIGlmICggdHlwZW9mIHJhd1BydW5lUGF0aHMgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcHJ1bmVQYXRocyA9IHJhd1BydW5lUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdQcnVuZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGNvbnN0IG5lZWRsZVBhdGhzID0gcHJ1bmVQYXRocy5sZW5ndGggIT09IDAgJiYgcmF3TmVlZGxlUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdOZWVkbGVQYXRocy5zcGxpdCgvICsvKQogICAgICAgIDogW107CiAgICBjb25zdCBsb2dMZXZlbCA9IHNob3VsZExvZyh7IGxvZzogcmF3UHJ1bmVQYXRocyA9PT0gJycgfHwgZXh0cmFBcmdzLmxvZyB9KTsKICAgIGNvbnN0IHJlTG9nTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChsb2dMZXZlbCA9PT0gdHJ1ZSA/IHJhd05lZWRsZVBhdGhzIDogJycpOwogICAgaWYgKCBzdGFja05lZWRsZURldGFpbHMubWF0Y2hBbGwgIT09IHRydWUgKSB7CiAgICAgICAgaWYgKCBtYXRjaGVzU3RhY2tUcmFjZShzdGFja05lZWRsZURldGFpbHMsIGV4dHJhQXJncy5sb2dzdGFjaykgPT09IGZhbHNlICkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgaWYgKCBvYmplY3RQcnVuZS5maW5kT3duZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBvYmplY3RQcnVuZS5maW5kT3duZXIgPSAocm9vdCwgcGF0aCwgcHJ1bmUgPSBmYWxzZSkgPT4gewogICAgICAgICAgICBsZXQgb3duZXIgPSByb290OwogICAgICAgICAgICBsZXQgY2hhaW4gPSBwYXRoOwogICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmluZGV4T2YoJy4nKTsKICAgICAgICAgICAgICAgIGlmICggcG9zID09PSAtMSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG93bmVyLmhhc093blByb3BlcnR5KGNoYWluKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBjaGFpbiA9PT0gJyonICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgaW4gb3duZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2tleV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltjaGFpbl07CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGlmaWVkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IGNoYWluLnNsaWNlKDAsIHBvcyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvd25lcikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gb2JqZWN0UHJ1bmUuZmluZE93bmVyKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSB8fCBmb3VuZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShwcm9wKSA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICAgICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIG9iamVjdFBydW5lLm11c3RQcm9jZXNzID0gKHJvb3QsIG5lZWRsZVBhdGhzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5lZWRsZVBhdGggb2YgbmVlZGxlUGF0aHMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdFBydW5lLmZpbmRPd25lcihyb290LCBuZWVkbGVQYXRoKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH07CiAgICAgICAgb2JqZWN0UHJ1bmUubG9nSnNvbiA9IChqc29uLCBtc2csIHJlTmVlZGxlKSA9PiB7CiAgICAgICAgICAgIGlmICggcmVOZWVkbGUudGVzdChqc29uKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlU2VsZigpLnVib0xvZyhgb2JqZWN0UHJ1bmUoKWAsIG1zZywgbG9jYXRpb24uaG9zdG5hbWUsIGpzb24pOwogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBqc29uQmVmb3JlID0gbG9nTGV2ZWwgPyBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpIDogJyc7CiAgICBpZiAoIGxvZ0xldmVsID09PSB0cnVlIHx8IGxvZ0xldmVsID09PSAnYWxsJyApIHsKICAgICAgICBvYmplY3RQcnVuZS5sb2dKc29uKGpzb25CZWZvcmUsIGBwcnVuZToiJHtyYXdQcnVuZVBhdGhzfSIgbG9nOiIke2xvZ0xldmVsfSJgLCByZUxvZ05lZWRsZSk7CiAgICB9CiAgICBpZiAoIHBydW5lUGF0aHMubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgIGxldCBvdXRjb21lID0gJ25vbWF0Y2gnOwogICAgaWYgKCBvYmplY3RQcnVuZS5tdXN0UHJvY2VzcyhvYmosIG5lZWRsZVBhdGhzKSApIHsKICAgICAgICBmb3IgKCBjb25zdCBwYXRoIG9mIHBydW5lUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0UHJ1bmUuZmluZE93bmVyKG9iaiwgcGF0aCwgdHJ1ZSkgKSB7CiAgICAgICAgICAgICAgICBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICggbG9nTGV2ZWwgPT09IG91dGNvbWUgKSB7CiAgICAgICAgb2JqZWN0UHJ1bmUubG9nSnNvbihqc29uQmVmb3JlLCBgcHJ1bmU6IiR7cmF3UHJ1bmVQYXRoc30iIGxvZzoiJHtsb2dMZXZlbH0iYCwgcmVMb2dOZWVkbGUpOwogICAgfQogICAgaWYgKCBvdXRjb21lID09PSAnbWF0Y2gnICkgeyByZXR1cm4gb2JqOyB9Cn0KZnVuY3Rpb24gbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCAuLi5vYmpzKSB7CiAgICBpZiAoIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9IChzcmMsIGRlcywgcHJvcHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgcCBvZiBwcm9wcyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzcmNbcF07CiAgICAgICAgICAgICAgICBpZiAoIHYgPT09IHVuZGVmaW5lZCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGRlc1twXSA9IHNyY1twXTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGhheXN0YWNrID0ge307CiAgICBjb25zdCBwcm9wcyA9IEFycmF5LmZyb20ocHJvcE5lZWRsZXMua2V5cygpKTsKICAgIGZvciAoIGNvbnN0IG9iaiBvZiBvYmpzICkgewogICAgICAgIGlmICggb2JqIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMob2JqLCBoYXlzdGFjaywgcHJvcHMpOwogICAgfQogICAgZm9yICggY29uc3QgWyBwcm9wLCBkZXRhaWxzIF0gb2YgcHJvcE5lZWRsZXMgKSB7CiAgICAgICAgbGV0IHZhbHVlID0gaGF5c3RhY2tbcHJvcF07CiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgdHJ5IHsgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7IH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsgfQogICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgfQogICAgICAgIGlmICggc2FmZS50ZXN0UGF0dGVybihkZXRhaWxzLCB2YWx1ZSkgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCiAgKGZ1bmN0aW9uIGpzb25QcnVuZVhoclJlc3BvbnNlKAogICAgcmF3UHJ1bmVQYXRocyA9ICcnLAogICAgcmF3TmVlZGxlUGF0aHMgPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgeGhySW5zdGFuY2VzID0gbmV3IFdlYWtNYXAoKTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMik7CiAgICBjb25zdCBsb2dMZXZlbCA9IHNob3VsZExvZyh7IGxvZzogcmF3UHJ1bmVQYXRocyA9PT0gJycgfHwgZXh0cmFBcmdzLmxvZywgfSk7CiAgICBjb25zdCBsb2cgPSBsb2dMZXZlbCA/ICgoLi4uYXJncykgPT4geyBzYWZlLnVib0xvZyguLi5hcmdzKTsgfSkgOiAoKCApID0+IHsgfSk7IAogICAgY29uc3QgcHJvcE5lZWRsZXMgPSBwYXJzZVByb3BlcnRpZXNUb01hdGNoKGV4dHJhQXJncy5wcm9wc1RvTWF0Y2gsICd1cmwnKTsKICAgIHNlbGYuWE1MSHR0cFJlcXVlc3QgPSBjbGFzcyBleHRlbmRzIHNlbGYuWE1MSHR0cFJlcXVlc3QgewogICAgICAgIG9wZW4obWV0aG9kLCB1cmwsIC4uLmFyZ3MpIHsKICAgICAgICAgICAgY29uc3QgeGhyRGV0YWlscyA9IHsgbWV0aG9kLCB1cmwgfTsKICAgICAgICAgICAgbGV0IG91dGNvbWUgPSAnbWF0Y2gnOwogICAgICAgICAgICBpZiAoIHByb3BOZWVkbGVzLnNpemUgIT09IDAgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG1hdGNoT2JqZWN0UHJvcGVydGllcyhwcm9wTmVlZGxlcywgeGhyRGV0YWlscykgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnbm9tYXRjaCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBvdXRjb21lID09PSBsb2dMZXZlbCB8fCBvdXRjb21lID09PSAnYWxsJyApIHsKICAgICAgICAgICAgICAgIGxvZyhgeGhyLm9wZW4oJHttZXRob2R9LCAke3VybH0sICR7YXJncy5qb2luKCcsICcpfSlgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG91dGNvbWUgPT09ICdtYXRjaCcgKSB7CiAgICAgICAgICAgICAgICB4aHJJbnN0YW5jZXMuc2V0KHRoaXMsIHhockRldGFpbHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzdXBlci5vcGVuKG1ldGhvZCwgdXJsLCAuLi5hcmdzKTsKICAgICAgICB9CiAgICAgICAgZ2V0IHJlc3BvbnNlKCkgewogICAgICAgICAgICBjb25zdCBpbm5lclJlc3BvbnNlID0gc3VwZXIucmVzcG9uc2U7CiAgICAgICAgICAgIGNvbnN0IHhockRldGFpbHMgPSB4aHJJbnN0YW5jZXMuZ2V0KHRoaXMpOwogICAgICAgICAgICBpZiAoIHhockRldGFpbHMgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBpbm5lclJlc3BvbnNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggeGhyRGV0YWlscy5yZXNwb25zZSAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHhockRldGFpbHMucmVzcG9uc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG9iakJlZm9yZTsKICAgICAgICAgICAgaWYgKCB0eXBlb2YgaW5uZXJSZXNwb25zZSA9PT0gJ29iamVjdCcgKSB7CiAgICAgICAgICAgICAgICBvYmpCZWZvcmUgPSBpbm5lclJlc3BvbnNlOwogICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgaW5uZXJSZXNwb25zZSA9PT0gJ3N0cmluZycgKSB7CiAgICAgICAgICAgICAgICB0cnkgeyBvYmpCZWZvcmUgPSBzYWZlLmpzb25QYXJzZShpbm5lclJlc3BvbnNlKTsgfQogICAgICAgICAgICAgICAgY2F0Y2goZXgpIHsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggdHlwZW9mIG9iakJlZm9yZSAhPT0gJ29iamVjdCcgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKHhockRldGFpbHMucmVzcG9uc2UgPSBpbm5lclJlc3BvbnNlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBvYmpBZnRlciA9IG9iamVjdFBydW5lKAogICAgICAgICAgICAgICAgb2JqQmVmb3JlLAogICAgICAgICAgICAgICAgcmF3UHJ1bmVQYXRocywKICAgICAgICAgICAgICAgIHJhd05lZWRsZVBhdGhzLAogICAgICAgICAgICAgICAgeyBtYXRjaEFsbDogdHJ1ZSB9LAogICAgICAgICAgICAgICAgZXh0cmFBcmdzCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGxldCBvdXRlclJlc3BvbnNlOwogICAgICAgICAgICBpZiAoIHR5cGVvZiBvYmpBZnRlciA9PT0gJ29iamVjdCcgKSB7CiAgICAgICAgICAgICAgICBvdXRlclJlc3BvbnNlID0gdHlwZW9mIGlubmVyUmVzcG9uc2UgPT09ICdzdHJpbmcnCiAgICAgICAgICAgICAgICAgICAgPyBzYWZlLmpzb25TdHJpbmdpZnkob2JqQWZ0ZXIpCiAgICAgICAgICAgICAgICAgICAgOiBvYmpBZnRlcjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG91dGVyUmVzcG9uc2UgPSBpbm5lclJlc3BvbnNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAoeGhyRGV0YWlscy5yZXNwb25zZSA9IG91dGVyUmVzcG9uc2UpOwogICAgICAgIH0KICAgICAgICBnZXQgcmVzcG9uc2VUZXh0KCkgewogICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMucmVzcG9uc2U7CiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgcmVzcG9uc2UgIT09ICdzdHJpbmcnCiAgICAgICAgICAgICAgICA/IHN1cGVyLnJlc3BvbnNlVGV4dAogICAgICAgICAgICAgICAgOiByZXNwb25zZTsKICAgICAgICB9CiAgICB9Owp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"evaldata-prune.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9CiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShEYXRlLm5vdygpICUgMjYgKyA5NykgKwogICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk4MjQ1MTY1MyArIDk4MjQ1MTY1MykudG9TdHJpbmcoMzYpOwogICAgY29uc3Qgb2UgPSBzZWxmLm9uZXJyb3I7CiAgICBzZWxmLm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIC4uLmFyZ3MpIHsKICAgICAgICBpZiAoIHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy5pbmNsdWRlcyh0b2tlbikgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgaWYgKCBvZSBpbnN0YW5jZW9mIEZ1bmN0aW9uICkgewogICAgICAgICAgICByZXR1cm4gb2UuY2FsbCh0aGlzLCBtc2csIC4uLmFyZ3MpOwogICAgICAgIH0KICAgIH0uYmluZCgpOwogICAgcmV0dXJuIHRva2VuOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLmhhcygnc2FmZVNlbGYnKSApIHsKICAgICAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5nZXQoJ3NhZmVTZWxmJyk7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0Vycm9yJzogc2VsZi5FcnJvciwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1hNTEh0dHBSZXF1ZXN0Jzogc2VsZi5YTUxIdHRwUmVxdWVzdCwKICAgICAgICAnYWRkRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ3JlbW92ZUV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyLAogICAgICAgICdmZXRjaCc6IHNlbGYuZmV0Y2gsCiAgICAgICAgJ2pzb25QYXJzZSc6IHNlbGYuSlNPTi5wYXJzZS5iaW5kKHNlbGYuSlNPTiksCiAgICAgICAgJ2pzb25TdHJpbmdpZnknOiBzZWxmLkpTT04uc3RyaW5naWZ5LmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBgJHthcmdzWzBdfWAgPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgdGhpcy5sb2coJ1t1Qk9dJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlID09PSB0cnVlICYmIHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBwYXR0ZXJuLAogICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgIH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zZXQoJ3NhZmVTZWxmJywgc2FmZSk7CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBtYXRjaGVzU3RhY2tUcmFjZSgKICAgIG5lZWRsZURldGFpbHMsCiAgICBsb2dMZXZlbCA9IDAKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGV4Y2VwdGlvblRva2VuID0gZ2V0RXhjZXB0aW9uVG9rZW4oKTsKICAgIGNvbnN0IGVycm9yID0gbmV3IHNhZmUuRXJyb3IoZXhjZXB0aW9uVG9rZW4pOwogICAgY29uc3QgZG9jVVJMID0gbmV3IFVSTChzZWxmLmxvY2F0aW9uLmhyZWYpOwogICAgZG9jVVJMLmhhc2ggPSAnJzsKICAgIC8vIE5vcm1hbGl6ZSBzdGFjayB0cmFjZQogICAgY29uc3QgcmVMaW5lID0gLyguKj9AKT8oXFMrKSg6XGQrKTpcZCtcKT8kLzsKICAgIGNvbnN0IGxpbmVzID0gW107CiAgICBmb3IgKCBsZXQgbGluZSBvZiBlcnJvci5zdGFjay5zcGxpdCgvW1xuXHJdKy8pICkgewogICAgICAgIGlmICggbGluZS5pbmNsdWRlcyhleGNlcHRpb25Ub2tlbikgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOwogICAgICAgIGNvbnN0IG1hdGNoID0gc2FmZS5SZWdFeHBfZXhlYy5jYWxsKHJlTGluZSwgbGluZSk7CiAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsgY29udGludWU7IH0KICAgICAgICBsZXQgdXJsID0gbWF0Y2hbMl07CiAgICAgICAgaWYgKCB1cmwuc3RhcnRzV2l0aCgnKCcpICkgeyB1cmwgPSB1cmwuc2xpY2UoMSk7IH0KICAgICAgICBpZiAoIHVybCA9PT0gZG9jVVJMLmhyZWYgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmxpbmVTY3JpcHQnOwogICAgICAgIH0gZWxzZSBpZiAoIHVybC5zdGFydHNXaXRoKCc8YW5vbnltb3VzPicpICkgewogICAgICAgICAgICB1cmwgPSAnaW5qZWN0ZWRTY3JpcHQnOwogICAgICAgIH0KICAgICAgICBsZXQgZm4gPSBtYXRjaFsxXSAhPT0gdW5kZWZpbmVkCiAgICAgICAgICAgID8gbWF0Y2hbMV0uc2xpY2UoMCwgLTEpCiAgICAgICAgICAgIDogbGluZS5zbGljZSgwLCBtYXRjaC5pbmRleCkudHJpbSgpOwogICAgICAgIGlmICggZm4uc3RhcnRzV2l0aCgnYXQnKSApIHsgZm4gPSBmbi5zbGljZSgyKS50cmltKCk7IH0KICAgICAgICBsZXQgcm93Y29sID0gbWF0Y2hbM107CiAgICAgICAgbGluZXMucHVzaCgnICcgKyBgJHtmbn0gJHt1cmx9JHtyb3djb2x9OjFgLnRyaW0oKSk7CiAgICB9CiAgICBsaW5lc1swXSA9IGBzdGFja0RlcHRoOiR7bGluZXMubGVuZ3RoLTF9YDsKICAgIGNvbnN0IHN0YWNrID0gbGluZXMuam9pbignXHQnKTsKICAgIGNvbnN0IHIgPSBzYWZlLnRlc3RQYXR0ZXJuKG5lZWRsZURldGFpbHMsIHN0YWNrKTsKICAgIGlmICgKICAgICAgICBsb2dMZXZlbCA9PT0gMSB8fAogICAgICAgIGxvZ0xldmVsID09PSAyICYmIHIgfHwKICAgICAgICBsb2dMZXZlbCA9PT0gMyAmJiAhcgogICAgKSB7CiAgICAgICAgc2FmZS51Ym9Mb2coc3RhY2sucmVwbGFjZSgvXHQvZywgJ1xuJykpOwogICAgfQogICAgcmV0dXJuIHI7Cn0KZnVuY3Rpb24gb2JqZWN0UHJ1bmUoCiAgICBvYmosCiAgICByYXdQcnVuZVBhdGhzLAogICAgcmF3TmVlZGxlUGF0aHMsCiAgICBzdGFja05lZWRsZURldGFpbHMgPSB7IG1hdGNoQWxsOiB0cnVlIH0sCiAgICBleHRyYUFyZ3MgPSB7fQopIHsKICAgIGlmICggdHlwZW9mIHJhd1BydW5lUGF0aHMgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcHJ1bmVQYXRocyA9IHJhd1BydW5lUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdQcnVuZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGNvbnN0IG5lZWRsZVBhdGhzID0gcHJ1bmVQYXRocy5sZW5ndGggIT09IDAgJiYgcmF3TmVlZGxlUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdOZWVkbGVQYXRocy5zcGxpdCgvICsvKQogICAgICAgIDogW107CiAgICBjb25zdCBsb2dMZXZlbCA9IHNob3VsZExvZyh7IGxvZzogcmF3UHJ1bmVQYXRocyA9PT0gJycgfHwgZXh0cmFBcmdzLmxvZyB9KTsKICAgIGNvbnN0IHJlTG9nTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChsb2dMZXZlbCA9PT0gdHJ1ZSA/IHJhd05lZWRsZVBhdGhzIDogJycpOwogICAgaWYgKCBzdGFja05lZWRsZURldGFpbHMubWF0Y2hBbGwgIT09IHRydWUgKSB7CiAgICAgICAgaWYgKCBtYXRjaGVzU3RhY2tUcmFjZShzdGFja05lZWRsZURldGFpbHMsIGV4dHJhQXJncy5sb2dzdGFjaykgPT09IGZhbHNlICkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgaWYgKCBvYmplY3RQcnVuZS5maW5kT3duZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBvYmplY3RQcnVuZS5maW5kT3duZXIgPSAocm9vdCwgcGF0aCwgcHJ1bmUgPSBmYWxzZSkgPT4gewogICAgICAgICAgICBsZXQgb3duZXIgPSByb290OwogICAgICAgICAgICBsZXQgY2hhaW4gPSBwYXRoOwogICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmluZGV4T2YoJy4nKTsKICAgICAgICAgICAgICAgIGlmICggcG9zID09PSAtMSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG93bmVyLmhhc093blByb3BlcnR5KGNoYWluKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBjaGFpbiA9PT0gJyonICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgaW4gb3duZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2tleV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltjaGFpbl07CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGlmaWVkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IGNoYWluLnNsaWNlKDAsIHBvcyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvd25lcikgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gb2JqZWN0UHJ1bmUuZmluZE93bmVyKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSB8fCBmb3VuZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShwcm9wKSA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICAgICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIG9iamVjdFBydW5lLm11c3RQcm9jZXNzID0gKHJvb3QsIG5lZWRsZVBhdGhzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5lZWRsZVBhdGggb2YgbmVlZGxlUGF0aHMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdFBydW5lLmZpbmRPd25lcihyb290LCBuZWVkbGVQYXRoKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH07CiAgICAgICAgb2JqZWN0UHJ1bmUubG9nSnNvbiA9IChqc29uLCBtc2csIHJlTmVlZGxlKSA9PiB7CiAgICAgICAgICAgIGlmICggcmVOZWVkbGUudGVzdChqc29uKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlU2VsZigpLnVib0xvZyhgb2JqZWN0UHJ1bmUoKWAsIG1zZywgbG9jYXRpb24uaG9zdG5hbWUsIGpzb24pOwogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBqc29uQmVmb3JlID0gbG9nTGV2ZWwgPyBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpIDogJyc7CiAgICBpZiAoIGxvZ0xldmVsID09PSB0cnVlIHx8IGxvZ0xldmVsID09PSAnYWxsJyApIHsKICAgICAgICBvYmplY3RQcnVuZS5sb2dKc29uKGpzb25CZWZvcmUsIGBwcnVuZToiJHtyYXdQcnVuZVBhdGhzfSIgbG9nOiIke2xvZ0xldmVsfSJgLCByZUxvZ05lZWRsZSk7CiAgICB9CiAgICBpZiAoIHBydW5lUGF0aHMubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgIGxldCBvdXRjb21lID0gJ25vbWF0Y2gnOwogICAgaWYgKCBvYmplY3RQcnVuZS5tdXN0UHJvY2VzcyhvYmosIG5lZWRsZVBhdGhzKSApIHsKICAgICAgICBmb3IgKCBjb25zdCBwYXRoIG9mIHBydW5lUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0UHJ1bmUuZmluZE93bmVyKG9iaiwgcGF0aCwgdHJ1ZSkgKSB7CiAgICAgICAgICAgICAgICBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICggbG9nTGV2ZWwgPT09IG91dGNvbWUgKSB7CiAgICAgICAgb2JqZWN0UHJ1bmUubG9nSnNvbihqc29uQmVmb3JlLCBgcHJ1bmU6IiR7cmF3UHJ1bmVQYXRoc30iIGxvZzoiJHtsb2dMZXZlbH0iYCwgcmVMb2dOZWVkbGUpOwogICAgfQogICAgaWYgKCBvdXRjb21lID09PSAnbWF0Y2gnICkgeyByZXR1cm4gb2JqOyB9Cn0KCiAgKGZ1bmN0aW9uIGV2YWxkYXRhUHJ1bmUoCiAgICByYXdQcnVuZVBhdGhzID0gJycsCiAgICByYXdOZWVkbGVQYXRocyA9ICcnCikgewogICAgc2VsZi5ldmFsID0gbmV3IFByb3h5KHNlbGYuZXZhbCwgewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICBjb25zdCBiZWZvcmUgPSBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncyk7CiAgICAgICAgICAgIGlmICggdHlwZW9mIGJlZm9yZSA9PT0gJ29iamVjdCcgKSB7CiAgICAgICAgICAgICAgICBjb25zdCBhZnRlciA9IG9iamVjdFBydW5lKGJlZm9yZSwgcmF3UHJ1bmVQYXRocywgcmF3TmVlZGxlUGF0aHMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGFmdGVyIHx8IGJlZm9yZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYmVmb3JlOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"nano-setInterval-booster.js","aliases":["nano-sib.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBuYW5vU2V0SW50ZXJ2YWxCb29zdGVyKAogICAgbmVlZGxlQXJnID0gJycsCiAgICBkZWxheUFyZyA9ICcnLAogICAgYm9vc3RBcmcgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIG5lZWRsZUFyZyAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCByZU5lZWRsZSA9IHNhZmUucGF0dGVyblRvUmVnZXgobmVlZGxlQXJnKTsKICAgIGxldCBkZWxheSA9IGRlbGF5QXJnICE9PSAnKicgPyBwYXJzZUludChkZWxheUFyZywgMTApIDogLTE7CiAgICBpZiAoIGlzTmFOKGRlbGF5KSB8fCBpc0Zpbml0ZShkZWxheSkgPT09IGZhbHNlICkgeyBkZWxheSA9IDEwMDA7IH0KICAgIGxldCBib29zdCA9IHBhcnNlRmxvYXQoYm9vc3RBcmcpOwogICAgYm9vc3QgPSBpc05hTihib29zdCkgPT09IGZhbHNlICYmIGlzRmluaXRlKGJvb3N0KQogICAgICAgID8gTWF0aC5taW4oTWF0aC5tYXgoYm9vc3QsIDAuMDIpLCA1MCkKICAgICAgICA6IDAuMDU7CiAgICBzZWxmLnNldEludGVydmFsID0gbmV3IFByb3h5KHNlbGYuc2V0SW50ZXJ2YWwsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IFsgYSwgYiBdID0gYXJnczsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKGRlbGF5ID09PSAtMSB8fCBiID09PSBkZWxheSkgJiYKICAgICAgICAgICAgICAgIHJlTmVlZGxlLnRlc3QoYS50b1N0cmluZygpKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGFyZ3NbMV0gPSBiICogYm9vc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseSh0aGlzQXJnLCBhcmdzKTsKICAgICAgICB9CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"nano-setTimeout-booster.js","aliases":["nano-stb.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBuYW5vU2V0VGltZW91dEJvb3N0ZXIoCiAgICBuZWVkbGVBcmcgPSAnJywKICAgIGRlbGF5QXJnID0gJycsCiAgICBib29zdEFyZyA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgbmVlZGxlQXJnICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IHJlTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChuZWVkbGVBcmcpOwogICAgbGV0IGRlbGF5ID0gZGVsYXlBcmcgIT09ICcqJyA/IHBhcnNlSW50KGRlbGF5QXJnLCAxMCkgOiAtMTsKICAgIGlmICggaXNOYU4oZGVsYXkpIHx8IGlzRmluaXRlKGRlbGF5KSA9PT0gZmFsc2UgKSB7IGRlbGF5ID0gMTAwMDsgfQogICAgbGV0IGJvb3N0ID0gcGFyc2VGbG9hdChib29zdEFyZyk7CiAgICBib29zdCA9IGlzTmFOKGJvb3N0KSA9PT0gZmFsc2UgJiYgaXNGaW5pdGUoYm9vc3QpCiAgICAgICAgPyBNYXRoLm1pbihNYXRoLm1heChib29zdCwgMC4wMiksIDUwKQogICAgICAgIDogMC4wNTsKICAgIHNlbGYuc2V0VGltZW91dCA9IG5ldyBQcm94eShzZWxmLnNldFRpbWVvdXQsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IFsgYSwgYiBdID0gYXJnczsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKGRlbGF5ID09PSAtMSB8fCBiID09PSBkZWxheSkgJiYKICAgICAgICAgICAgICAgIHJlTmVlZGxlLnRlc3QoYS50b1N0cmluZygpKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGFyZ3NbMV0gPSBiICogYm9vc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseSh0aGlzQXJnLCBhcmdzKTsKICAgICAgICB9CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"noeval-if.js","aliases":["prevent-eval-if.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBub0V2YWxJZigKICAgIG5lZWRsZSA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgbmVlZGxlICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IHJlTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChuZWVkbGUpOwogICAgd2luZG93LmV2YWwgPSBuZXcgUHJveHkod2luZG93LmV2YWwsIHsgIC8vIGpzaGludCBpZ25vcmU6IGxpbmUKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IGEgPSBhcmdzWzBdOwogICAgICAgICAgICBpZiAoIHJlTmVlZGxlLnRlc3QoYS50b1N0cmluZygpKSApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHJldHVybiB0YXJnZXQuYXBwbHkodGhpc0FyZywgYXJncyk7CiAgICAgICAgfQogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"no-fetch-if.js","aliases":["prevent-fetch.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBub0ZldGNoSWYoCiAgICBhcmcxID0gJycsCikgewogICAgaWYgKCB0eXBlb2YgYXJnMSAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBuZWVkbGVzID0gW107CiAgICBmb3IgKCBjb25zdCBjb25kaXRpb24gb2YgYXJnMS5zcGxpdCgvXHMrLykgKSB7CiAgICAgICAgaWYgKCBjb25kaXRpb24gPT09ICcnICkgeyBjb250aW51ZTsgfQogICAgICAgIGNvbnN0IHBvcyA9IGNvbmRpdGlvbi5pbmRleE9mKCc6Jyk7CiAgICAgICAgbGV0IGtleSwgdmFsdWU7CiAgICAgICAgaWYgKCBwb3MgIT09IC0xICkgewogICAgICAgICAgICBrZXkgPSBjb25kaXRpb24uc2xpY2UoMCwgcG9zKTsKICAgICAgICAgICAgdmFsdWUgPSBjb25kaXRpb24uc2xpY2UocG9zICsgMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAga2V5ID0gJ3VybCc7CiAgICAgICAgICAgIHZhbHVlID0gY29uZGl0aW9uOwogICAgICAgIH0KICAgICAgICBuZWVkbGVzLnB1c2goeyBrZXksIHJlOiBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHZhbHVlKSB9KTsKICAgIH0KICAgIGNvbnN0IGxvZyA9IG5lZWRsZXMubGVuZ3RoID09PSAwID8gY29uc29sZS5sb2cuYmluZChjb25zb2xlKSA6IHVuZGVmaW5lZDsKICAgIHNlbGYuZmV0Y2ggPSBuZXcgUHJveHkoc2VsZi5mZXRjaCwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgbGV0IHByb2NlZWQgPSB0cnVlOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgbGV0IGRldGFpbHM7CiAgICAgICAgICAgICAgICBpZiAoIGFyZ3NbMF0gaW5zdGFuY2VvZiBzZWxmLlJlcXVlc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgZGV0YWlscyA9IGFyZ3NbMF07CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPSBPYmplY3QuYXNzaWduKHsgdXJsOiBhcmdzWzBdIH0sIGFyZ3NbMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBuZXcgTWFwKCk7CiAgICAgICAgICAgICAgICBmb3IgKCBjb25zdCBwcm9wIGluIGRldGFpbHMgKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHYgPSBkZXRhaWxzW3Byb3BdOwogICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHYgIT09ICdzdHJpbmcnICkgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyB2ID0gSlNPTi5zdHJpbmdpZnkodik7IH0KICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2goZXgpIHsgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB2ICE9PSAnc3RyaW5nJyApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgICAgICBwcm9wcy5zZXQocHJvcCwgdik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIGxvZyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IG91dCA9IEFycmF5LmZyb20ocHJvcHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGEgPT4gYCR7YVswXX06JHthWzFdfWApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpOwogICAgICAgICAgICAgICAgICAgIGxvZyhgdUJPOiBmZXRjaCgke291dH0pYCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwcm9jZWVkID0gbmVlZGxlcy5sZW5ndGggPT09IDA7CiAgICAgICAgICAgICAgICBmb3IgKCBjb25zdCB7IGtleSwgcmUgfSBvZiBuZWVkbGVzICkgewogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaGFzKGtleSkgPT09IGZhbHNlIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIHJlLnRlc3QocHJvcHMuZ2V0KGtleSkpID09PSBmYWxzZQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICBwcm9jZWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHByb2NlZWQKICAgICAgICAgICAgICAgID8gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpCiAgICAgICAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZShuZXcgUmVzcG9uc2UoKSk7CiAgICAgICAgfQogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"refresh-defuser.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHJ1bkF0KGZuLCB3aGVuKSB7CiAgICBjb25zdCBpbnRGcm9tUmVhZHlTdGF0ZSA9IHN0YXRlID0+IHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gewogICAgICAgICAgICAnbG9hZGluZyc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiByZWZyZXNoRGVmdXNlcigKICAgIGFyZzEgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIGFyZzEgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IGRlZnVzZSA9ICggKSA9PiB7CiAgICAgICAgY29uc3QgbWV0YSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbaHR0cC1lcXVpdj0icmVmcmVzaCIgaV1bY29udGVudF0nKTsKICAgICAgICBpZiAoIG1ldGEgPT09IG51bGwgKSB7IHJldHVybjsgfQogICAgICAgIGNvbnN0IHMgPSBhcmcxID09PSAnJwogICAgICAgICAgICA/IG1ldGEuZ2V0QXR0cmlidXRlKCdjb250ZW50JykKICAgICAgICAgICAgOiBhcmcxOwogICAgICAgIGNvbnN0IG1zID0gTWF0aC5tYXgocGFyc2VGbG9hdChzKSB8fCAwLCAwKSAqIDEwMDA7CiAgICAgICAgc2V0VGltZW91dCgoICkgPT4geyB3aW5kb3cuc3RvcCgpOyB9LCBtcyk7CiAgICB9OwogICAgcnVuQXQoKCApID0+IHsKICAgICAgICBkZWZ1c2UoKTsKICAgIH0sICdpbnRlcmFjdGl2ZScpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"remove-attr.js","aliases":["ra.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHJ1bkF0KGZuLCB3aGVuKSB7CiAgICBjb25zdCBpbnRGcm9tUmVhZHlTdGF0ZSA9IHN0YXRlID0+IHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gewogICAgICAgICAgICAnbG9hZGluZyc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiByZW1vdmVBdHRyKAogICAgdG9rZW4gPSAnJywKICAgIHNlbGVjdG9yID0gJycsCiAgICBiZWhhdmlvciA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgdG9rZW4gIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggdG9rZW4gPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHRva2VucyA9IHRva2VuLnNwbGl0KC9ccypcfFxzKi8pOwogICAgaWYgKCBzZWxlY3RvciA9PT0gJycgKSB7CiAgICAgICAgc2VsZWN0b3IgPSBgWyR7dG9rZW5zLmpvaW4oJ10sWycpfV1gOwogICAgfQogICAgbGV0IHRpbWVyOwogICAgY29uc3Qgcm1hdHRyID0gKCApID0+IHsKICAgICAgICB0aW1lciA9IHVuZGVmaW5lZDsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgICAgICAgICBmb3IgKCBjb25zdCBub2RlIG9mIG5vZGVzICkgewogICAgICAgICAgICAgICAgZm9yICggY29uc3QgYXR0ciBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgfQogICAgfTsKICAgIGNvbnN0IG11dGF0aW9uSGFuZGxlciA9IG11dGF0aW9ucyA9PiB7CiAgICAgICAgaWYgKCB0aW1lciAhPT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICBsZXQgc2tpcCA9IHRydWU7CiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbXV0YXRpb25zLmxlbmd0aCAmJiBza2lwOyBpKysgKSB7CiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgYWRkZWROb2RlcywgcmVtb3ZlZE5vZGVzIH0gPSBtdXRhdGlvbnNbaV07CiAgICAgICAgICAgIGlmICggdHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICkgeyBza2lwID0gZmFsc2U7IH0KICAgICAgICAgICAgZm9yICggbGV0IGogPSAwOyBqIDwgYWRkZWROb2Rlcy5sZW5ndGggJiYgc2tpcDsgaisrICkgewogICAgICAgICAgICAgICAgaWYgKCBhZGRlZE5vZGVzW2pdLm5vZGVUeXBlID09PSAxICkgeyBza2lwID0gZmFsc2U7IGJyZWFrOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICggbGV0IGogPSAwOyBqIDwgcmVtb3ZlZE5vZGVzLmxlbmd0aCAmJiBza2lwOyBqKysgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHJlbW92ZWROb2Rlc1tqXS5ub2RlVHlwZSA9PT0gMSApIHsgc2tpcCA9IGZhbHNlOyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggc2tpcCApIHsgcmV0dXJuOyB9CiAgICAgICAgdGltZXIgPSBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2socm1hdHRyLCB7IHRpbWVvdXQ6IDE3IH0pOwogICAgfTsKICAgIGNvbnN0IHN0YXJ0ID0gKCApID0+IHsKICAgICAgICBybWF0dHIoKTsKICAgICAgICBpZiAoIC9cYnN0YXlcYi8udGVzdChiZWhhdmlvcikgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9uSGFuZGxlcik7CiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwgewogICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLAogICAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IHRva2VucywKICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLAogICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLAogICAgICAgIH0pOwogICAgfTsKICAgIHJ1bkF0KCggKSA9PiB7CiAgICAgICAgc3RhcnQoKTsKICAgIH0sIC9cYmNvbXBsZXRlXGIvLnRlc3QoYmVoYXZpb3IpID8gJ2lkbGUnIDogJ2ludGVyYWN0aXZlJyk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"remove-class.js","aliases":["rc.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHJ1bkF0KGZuLCB3aGVuKSB7CiAgICBjb25zdCBpbnRGcm9tUmVhZHlTdGF0ZSA9IHN0YXRlID0+IHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gewogICAgICAgICAgICAnbG9hZGluZyc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiByZW1vdmVDbGFzcygKICAgIHRva2VuID0gJycsCiAgICBzZWxlY3RvciA9ICcnLAogICAgYmVoYXZpb3IgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIHRva2VuID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBjbGFzc1Rva2VucyA9IHRva2VuLnNwbGl0KC9ccypcfFxzKi8pOwogICAgaWYgKCBzZWxlY3RvciA9PT0gJycgKSB7CiAgICAgICAgc2VsZWN0b3IgPSAnLicgKyBjbGFzc1Rva2Vucy5tYXAoYSA9PiBDU1MuZXNjYXBlKGEpKS5qb2luKCcsLicpOwogICAgfQogICAgY29uc3QgbXVzdFN0YXkgPSAvXGJzdGF5XGIvLnRlc3QoYmVoYXZpb3IpOwogICAgbGV0IHRpbWVyOwogICAgY29uc3Qgcm1jbGFzcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRpbWVyID0gdW5kZWZpbmVkOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5vZGUgb2Ygbm9kZXMgKSB7CiAgICAgICAgICAgICAgICBub2RlLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3NUb2tlbnMpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgIH0KICAgICAgICBpZiAoIG11c3RTdGF5ICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdjb21wbGV0ZScgKSB7IHJldHVybjsgfQogICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAgIH07CiAgICBjb25zdCBtdXRhdGlvbkhhbmRsZXIgPSBtdXRhdGlvbnMgPT4gewogICAgICAgIGlmICggdGltZXIgIT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgbGV0IHNraXAgPSB0cnVlOwogICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IG11dGF0aW9ucy5sZW5ndGggJiYgc2tpcDsgaSsrICkgewogICAgICAgICAgICBjb25zdCB7IHR5cGUsIGFkZGVkTm9kZXMsIHJlbW92ZWROb2RlcyB9ID0gbXV0YXRpb25zW2ldOwogICAgICAgICAgICBpZiAoIHR5cGUgPT09ICdhdHRyaWJ1dGVzJyApIHsgc2tpcCA9IGZhbHNlOyB9CiAgICAgICAgICAgIGZvciAoIGxldCBqID0gMDsgaiA8IGFkZGVkTm9kZXMubGVuZ3RoICYmIHNraXA7IGorKyApIHsKICAgICAgICAgICAgICAgIGlmICggYWRkZWROb2Rlc1tqXS5ub2RlVHlwZSA9PT0gMSApIHsgc2tpcCA9IGZhbHNlOyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAoIGxldCBqID0gMDsgaiA8IHJlbW92ZWROb2Rlcy5sZW5ndGggJiYgc2tpcDsgaisrICkgewogICAgICAgICAgICAgICAgaWYgKCByZW1vdmVkTm9kZXNbal0ubm9kZVR5cGUgPT09IDEgKSB7IHNraXAgPSBmYWxzZTsgYnJlYWs7IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIHNraXAgKSB7IHJldHVybjsgfQogICAgICAgIHRpbWVyID0gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKHJtY2xhc3MsIHsgdGltZW91dDogNjcgfSk7CiAgICB9OwogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbkhhbmRsZXIpOwogICAgY29uc3Qgc3RhcnQgPSAoICkgPT4gewogICAgICAgIHJtY2xhc3MoKTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7CiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsCiAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWyAnY2xhc3MnIF0sCiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSwKICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwKICAgICAgICB9KTsKICAgIH07CiAgICBydW5BdCgoICkgPT4gewogICAgICAgIHN0YXJ0KCk7CiAgICB9LCAvXGJjb21wbGV0ZVxiLy50ZXN0KGJlaGF2aW9yKSA/ICdpZGxlJyA6ICdsb2FkaW5nJyk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"no-requestAnimationFrame-if.js","aliases":["norafif.js","prevent-requestAnimationFrame.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBub1JlcXVlc3RBbmltYXRpb25GcmFtZUlmKAogICAgbmVlZGxlID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBuZWVkbGUgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbmVlZGxlTm90ID0gbmVlZGxlLmNoYXJBdCgwKSA9PT0gJyEnOwogICAgaWYgKCBuZWVkbGVOb3QgKSB7IG5lZWRsZSA9IG5lZWRsZS5zbGljZSgxKTsgfQogICAgY29uc3QgbG9nID0gbmVlZGxlTm90ID09PSBmYWxzZSAmJiBuZWVkbGUgPT09ICcnID8gY29uc29sZS5sb2cgOiB1bmRlZmluZWQ7CiAgICBjb25zdCByZU5lZWRsZSA9IHNhZmUucGF0dGVyblRvUmVnZXgobmVlZGxlKTsKICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBuZXcgUHJveHkod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgY29uc3QgYSA9IFN0cmluZyhhcmdzWzBdKTsKICAgICAgICAgICAgbGV0IGRlZnVzZSA9IGZhbHNlOwogICAgICAgICAgICBpZiAoIGxvZyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgbG9nKCd1Qk86IHJlcXVlc3RBbmltYXRpb25GcmFtZSgiJXMiKScsIGEpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGVmdXNlID0gcmVOZWVkbGUudGVzdChhKSAhPT0gbmVlZGxlTm90OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZGVmdXNlICkgewogICAgICAgICAgICAgICAgYXJnc1swXSA9IGZ1bmN0aW9uKCl7fTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KHRoaXNBcmcsIGFyZ3MpOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"set-constant.js","aliases":["set.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHJ1bkF0KGZuLCB3aGVuKSB7CiAgICBjb25zdCBpbnRGcm9tUmVhZHlTdGF0ZSA9IHN0YXRlID0+IHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gewogICAgICAgICAgICAnbG9hZGluZyc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CmZ1bmN0aW9uIHNldENvbnN0YW50Q29yZSgKICAgIHRydXN0ZWQgPSBmYWxzZSwKICAgIGNoYWluID0gJycsCiAgICBjVmFsdWUgPSAnJwopIHsKICAgIGlmICggY2hhaW4gPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKTsKICAgIGZ1bmN0aW9uIHNldENvbnN0YW50KGNoYWluLCBjVmFsdWUpIHsKICAgICAgICBjb25zdCB0cmFwcGVkUHJvcCA9ICgoICkgPT4gewogICAgICAgICAgICBjb25zdCBwb3MgPSBjaGFpbi5sYXN0SW5kZXhPZignLicpOwogICAgICAgICAgICBpZiAoIHBvcyA9PT0gLTEgKSB7IHJldHVybiBjaGFpbjsgfQogICAgICAgICAgICByZXR1cm4gY2hhaW4uc2xpY2UocG9zKzEpOwogICAgICAgIH0pKCk7CiAgICAgICAgaWYgKCB0cmFwcGVkUHJvcCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgIGNvbnN0IHRoaXNTY3JpcHQgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0OwogICAgICAgIGNvbnN0IGNsb2FrRnVuYyA9IGZuID0+IHsKICAgICAgICAgICAgc2FmZS5PYmplY3RfZGVmaW5lUHJvcGVydHkoZm4sICduYW1lJywgeyB2YWx1ZTogdHJhcHBlZFByb3AgfSk7CiAgICAgICAgICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KGZuLCB7CiAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3AgIT09ICd0b1N0cmluZycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgIGlmICggcHJvcCAhPT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBmdW5jdGlvbiAke3RyYXBwZWRQcm9wfSgpIHsgW25hdGl2ZSBjb2RlXSB9YDsKICAgICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKG51bGwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gcHJveHk7CiAgICAgICAgfTsKICAgICAgICBpZiAoIGNWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgKSB7CiAgICAgICAgICAgIGNWYWx1ZSA9IHVuZGVmaW5lZDsKICAgICAgICB9IGVsc2UgaWYgKCBjVmFsdWUgPT09ICdmYWxzZScgKSB7CiAgICAgICAgICAgIGNWYWx1ZSA9IGZhbHNlOwogICAgICAgIH0gZWxzZSBpZiAoIGNWYWx1ZSA9PT0gJ3RydWUnICkgewogICAgICAgICAgICBjVmFsdWUgPSB0cnVlOwogICAgICAgIH0gZWxzZSBpZiAoIGNWYWx1ZSA9PT0gJ251bGwnICkgewogICAgICAgICAgICBjVmFsdWUgPSBudWxsOwogICAgICAgIH0gZWxzZSBpZiAoIGNWYWx1ZSA9PT0gIicnIiB8fCBjVmFsdWUgPT09ICcnICkgewogICAgICAgICAgICBjVmFsdWUgPSAnJzsKICAgICAgICB9IGVsc2UgaWYgKCBjVmFsdWUgPT09ICdbXScgKSB7CiAgICAgICAgICAgIGNWYWx1ZSA9IFtdOwogICAgICAgIH0gZWxzZSBpZiAoIGNWYWx1ZSA9PT0gJ3t9JyApIHsKICAgICAgICAgICAgY1ZhbHVlID0ge307CiAgICAgICAgfSBlbHNlIGlmICggY1ZhbHVlID09PSAnbm9vcEZ1bmMnICkgewogICAgICAgICAgICBjVmFsdWUgPSBjbG9ha0Z1bmMoZnVuY3Rpb24oKXt9KTsKICAgICAgICB9IGVsc2UgaWYgKCBjVmFsdWUgPT09ICd0cnVlRnVuYycgKSB7CiAgICAgICAgICAgIGNWYWx1ZSA9IGNsb2FrRnVuYyhmdW5jdGlvbigpeyByZXR1cm4gdHJ1ZTsgfSk7CiAgICAgICAgfSBlbHNlIGlmICggY1ZhbHVlID09PSAnZmFsc2VGdW5jJyApIHsKICAgICAgICAgICAgY1ZhbHVlID0gY2xvYWtGdW5jKGZ1bmN0aW9uKCl7IHJldHVybiBmYWxzZTsgfSk7CiAgICAgICAgfSBlbHNlIGlmICggL14tP1xkKyQvLnRlc3QoY1ZhbHVlKSApIHsKICAgICAgICAgICAgY1ZhbHVlID0gcGFyc2VJbnQoY1ZhbHVlKTsKICAgICAgICAgICAgaWYgKCBpc05hTihjVmFsdWUpICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBNYXRoLmFicyhjVmFsdWUpID4gMHg3RkZGICkgeyByZXR1cm47IH0KICAgICAgICB9IGVsc2UgaWYgKCB0cnVzdGVkICkgewogICAgICAgICAgICBpZiAoIGNWYWx1ZS5zdGFydHNXaXRoKCd7JykgJiYgY1ZhbHVlLmVuZHNXaXRoKCd9JykgKSB7CiAgICAgICAgICAgICAgICB0cnkgeyBjVmFsdWUgPSBzYWZlLmpzb25QYXJzZShjVmFsdWUpLnZhbHVlOyB9IGNhdGNoKGV4KSB7IHJldHVybjsgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoIGV4dHJhQXJncy5hcyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ2Z1bmN0aW9uJyApIHsKICAgICAgICAgICAgICAgIGNWYWx1ZSA9ICggKSA9PiBjVmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ2NhbGxiYWNrJyApIHsKICAgICAgICAgICAgICAgIGNWYWx1ZSA9ICggKSA9PiAoKCApID0+IGNWYWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ3Jlc29sdmVkJyApIHsKICAgICAgICAgICAgICAgIGNWYWx1ZSA9IFByb21pc2UucmVzb2x2ZShjVmFsdWUpOwogICAgICAgICAgICB9IGVsc2UgaWYgKCBleHRyYUFyZ3MuYXMgPT09ICdyZWplY3RlZCcgKSB7CiAgICAgICAgICAgICAgICBjVmFsdWUgPSBQcm9taXNlLnJlamVjdChjVmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGxldCBhYm9ydGVkID0gZmFsc2U7CiAgICAgICAgY29uc3QgbXVzdEFib3J0ID0gZnVuY3Rpb24odikgewogICAgICAgICAgICBpZiAoIHRydXN0ZWQgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICBpZiAoIGFib3J0ZWQgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIGFib3J0ZWQgPQogICAgICAgICAgICAgICAgKHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsKSAmJgogICAgICAgICAgICAgICAgKGNWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGNWYWx1ZSAhPT0gbnVsbCkgJiYKICAgICAgICAgICAgICAgICh0eXBlb2YgdiAhPT0gdHlwZW9mIGNWYWx1ZSk7CiAgICAgICAgICAgIHJldHVybiBhYm9ydGVkOwogICAgICAgIH07CiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VCbG9ja09yaWdpbi91QmxvY2staXNzdWVzL2lzc3Vlcy8xNTYKICAgICAgICAvLyAgIFN1cHBvcnQgbXVsdGlwbGUgdHJhcHBlcnMgZm9yIHRoZSBzYW1lIHByb3BlcnR5LgogICAgICAgIGNvbnN0IHRyYXBQcm9wID0gZnVuY3Rpb24ob3duZXIsIHByb3AsIGNvbmZpZ3VyYWJsZSwgaGFuZGxlcikgewogICAgICAgICAgICBpZiAoIGhhbmRsZXIuaW5pdChjb25maWd1cmFibGUgPyBvd25lcltwcm9wXSA6IGNWYWx1ZSkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgY29uc3Qgb2Rlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBwcm9wKTsKICAgICAgICAgICAgbGV0IHByZXZHZXR0ZXIsIHByZXZTZXR0ZXI7CiAgICAgICAgICAgIGlmICggb2Rlc2MgaW5zdGFuY2VvZiBPYmplY3QgKSB7CiAgICAgICAgICAgICAgICBvd25lcltwcm9wXSA9IGNWYWx1ZTsKICAgICAgICAgICAgICAgIGlmICggb2Rlc2MuZ2V0IGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgcHJldkdldHRlciA9IG9kZXNjLmdldDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggb2Rlc2Muc2V0IGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgcHJldlNldHRlciA9IG9kZXNjLnNldDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgc2FmZS5PYmplY3RfZGVmaW5lUHJvcGVydHkob3duZXIsIHByb3AsIHsKICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGUsCiAgICAgICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHByZXZHZXR0ZXIgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZHZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlci5nZXR0ZXIoKTsgLy8gY1ZhbHVlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXQoYSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHByZXZTZXR0ZXIgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTZXR0ZXIoYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5zZXR0ZXIoYSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgY29uc3QgdHJhcENoYWluID0gZnVuY3Rpb24ob3duZXIsIGNoYWluKSB7CiAgICAgICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmluZGV4T2YoJy4nKTsKICAgICAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgewogICAgICAgICAgICAgICAgdHJhcFByb3Aob3duZXIsIGNoYWluLCBmYWxzZSwgewogICAgICAgICAgICAgICAgICAgIHY6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbih2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbXVzdEFib3J0KHYpICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52ID0gdjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXR0ZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3VycmVudFNjcmlwdCA9PT0gdGhpc1NjcmlwdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbXVzdEFib3J0KGEpID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNWYWx1ZSA9IGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgcHJvcCA9IGNoYWluLnNsaWNlKDAsIHBvcyk7CiAgICAgICAgICAgIGNvbnN0IHYgPSBvd25lcltwcm9wXTsKICAgICAgICAgICAgY2hhaW4gPSBjaGFpbi5zbGljZShwb3MgKyAxKTsKICAgICAgICAgICAgaWYgKCB2IGluc3RhbmNlb2YgT2JqZWN0IHx8IHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2ICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgdHJhcENoYWluKHYsIGNoYWluKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cmFwUHJvcChvd25lciwgcHJvcCwgdHJ1ZSwgewogICAgICAgICAgICAgICAgdjogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24odikgewogICAgICAgICAgICAgICAgICAgIHRoaXMudiA9IHY7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0dGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52OwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldHRlcjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudiA9IGE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICB0cmFwQ2hhaW4oYSwgY2hhaW4pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfTsKICAgICAgICB0cmFwQ2hhaW4od2luZG93LCBjaGFpbik7CiAgICB9CiAgICBydW5BdCgoICkgPT4gewogICAgICAgIHNldENvbnN0YW50KGNoYWluLCBjVmFsdWUpOwogICAgfSwgZXh0cmFBcmdzLnJ1bkF0KTsKfQoKICAoZnVuY3Rpb24gc2V0Q29uc3RhbnQoCiAgICAuLi5hcmdzCikgewogICAgc2V0Q29uc3RhbnRDb3JlKGZhbHNlLCAuLi5hcmdzKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"no-setInterval-if.js","aliases":["nosiif.js","prevent-setInterval.js","setInterval-defuser.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBub1NldEludGVydmFsSWYoCiAgICBuZWVkbGUgPSAnJywKICAgIGRlbGF5ID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBuZWVkbGUgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbmVlZGxlTm90ID0gbmVlZGxlLmNoYXJBdCgwKSA9PT0gJyEnOwogICAgaWYgKCBuZWVkbGVOb3QgKSB7IG5lZWRsZSA9IG5lZWRsZS5zbGljZSgxKTsgfQogICAgaWYgKCBkZWxheSA9PT0gJycgKSB7IGRlbGF5ID0gdW5kZWZpbmVkOyB9CiAgICBsZXQgZGVsYXlOb3QgPSBmYWxzZTsKICAgIGlmICggZGVsYXkgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICBkZWxheU5vdCA9IGRlbGF5LmNoYXJBdCgwKSA9PT0gJyEnOwogICAgICAgIGlmICggZGVsYXlOb3QgKSB7IGRlbGF5ID0gZGVsYXkuc2xpY2UoMSk7IH0KICAgICAgICBkZWxheSA9IHBhcnNlSW50KGRlbGF5LCAxMCk7CiAgICB9CiAgICBjb25zdCBsb2cgPSBuZWVkbGVOb3QgPT09IGZhbHNlICYmIG5lZWRsZSA9PT0gJycgJiYgZGVsYXkgPT09IHVuZGVmaW5lZAogICAgICAgID8gY29uc29sZS5sb2cKICAgICAgICA6IHVuZGVmaW5lZDsKICAgIGNvbnN0IHJlTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChuZWVkbGUpOwogICAgc2VsZi5zZXRJbnRlcnZhbCA9IG5ldyBQcm94eShzZWxmLnNldEludGVydmFsLCB7CiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICBjb25zdCBhID0gU3RyaW5nKGFyZ3NbMF0pOwogICAgICAgICAgICBjb25zdCBiID0gYXJnc1sxXTsKICAgICAgICAgICAgaWYgKCBsb2cgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIGxvZygndUJPOiBzZXRJbnRlcnZhbCgiJXMiLCAlcyknLCBhLCBiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxldCBkZWZ1c2U7CiAgICAgICAgICAgICAgICBpZiAoIG5lZWRsZSAhPT0gJycgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVmdXNlID0gcmVOZWVkbGUudGVzdChhKSAhPT0gbmVlZGxlTm90OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBkZWZ1c2UgIT09IGZhbHNlICYmIGRlbGF5ICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVmdXNlID0gKGIgPT09IGRlbGF5IHx8IGlzTmFOKGIpICYmIGlzTmFOKGRlbGF5KSApICE9PSBkZWxheU5vdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggZGVmdXNlICkgewogICAgICAgICAgICAgICAgICAgIGFyZ3NbMF0gPSBmdW5jdGlvbigpe307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICB9LAogICAgICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQudG9TdHJpbmcuYmluZCh0YXJnZXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTsKICAgICAgICB9LAogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"no-setTimeout-if.js","aliases":["nostif.js","prevent-setTimeout.js","setTimeout-defuser.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBub1NldFRpbWVvdXRJZigKICAgIG5lZWRsZSA9ICcnLAogICAgZGVsYXkgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIG5lZWRsZSAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBuZWVkbGVOb3QgPSBuZWVkbGUuY2hhckF0KDApID09PSAnISc7CiAgICBpZiAoIG5lZWRsZU5vdCApIHsgbmVlZGxlID0gbmVlZGxlLnNsaWNlKDEpOyB9CiAgICBpZiAoIGRlbGF5ID09PSAnJyApIHsgZGVsYXkgPSB1bmRlZmluZWQ7IH0KICAgIGxldCBkZWxheU5vdCA9IGZhbHNlOwogICAgaWYgKCBkZWxheSAhPT0gdW5kZWZpbmVkICkgewogICAgICAgIGRlbGF5Tm90ID0gZGVsYXkuY2hhckF0KDApID09PSAnISc7CiAgICAgICAgaWYgKCBkZWxheU5vdCApIHsgZGVsYXkgPSBkZWxheS5zbGljZSgxKTsgfQogICAgICAgIGRlbGF5ID0gcGFyc2VJbnQoZGVsYXksIDEwKTsKICAgIH0KICAgIGNvbnN0IGxvZyA9IG5lZWRsZU5vdCA9PT0gZmFsc2UgJiYgbmVlZGxlID09PSAnJyAmJiBkZWxheSA9PT0gdW5kZWZpbmVkCiAgICAgICAgPyBjb25zb2xlLmxvZwogICAgICAgIDogdW5kZWZpbmVkOwogICAgY29uc3QgcmVOZWVkbGUgPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KG5lZWRsZSk7CiAgICBzZWxmLnNldFRpbWVvdXQgPSBuZXcgUHJveHkoc2VsZi5zZXRUaW1lb3V0LCB7CiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICBjb25zdCBhID0gU3RyaW5nKGFyZ3NbMF0pOwogICAgICAgICAgICBjb25zdCBiID0gYXJnc1sxXTsKICAgICAgICAgICAgaWYgKCBsb2cgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIGxvZygndUJPOiBzZXRUaW1lb3V0KCIlcyIsICVzKScsIGEsIGIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbGV0IGRlZnVzZTsKICAgICAgICAgICAgICAgIGlmICggbmVlZGxlICE9PSAnJyApIHsKICAgICAgICAgICAgICAgICAgICBkZWZ1c2UgPSByZU5lZWRsZS50ZXN0KGEpICE9PSBuZWVkbGVOb3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIGRlZnVzZSAhPT0gZmFsc2UgJiYgZGVsYXkgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICBkZWZ1c2UgPSAoYiA9PT0gZGVsYXkgfHwgaXNOYU4oYikgJiYgaXNOYU4oZGVsYXkpICkgIT09IGRlbGF5Tm90OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBkZWZ1c2UgKSB7CiAgICAgICAgICAgICAgICAgICAgYXJnc1swXSA9IGZ1bmN0aW9uKCl7fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHsKICAgICAgICAgICAgaWYgKCBwcm9wID09PSAndG9TdHJpbmcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC50b1N0cmluZy5iaW5kKHRhcmdldCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpOwogICAgICAgIH0sCiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"webrtc-if.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiB3ZWJydGNJZigKICAgIGdvb2QgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIGdvb2QgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcmVHb29kID0gc2FmZS5wYXR0ZXJuVG9SZWdleChnb29kKTsKICAgIGNvbnN0IHJ0Y05hbWUgPSB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24KICAgICAgICA/ICdSVENQZWVyQ29ubmVjdGlvbicKICAgICAgICA6ICh3aW5kb3cud2Via2l0UlRDUGVlckNvbm5lY3Rpb24gPyAnd2Via2l0UlRDUGVlckNvbm5lY3Rpb24nIDogJycpOwogICAgaWYgKCBydGNOYW1lID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBsb2cgPSBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpOwogICAgY29uc3QgbmV1dGVyZWRQZWVyQ29ubmVjdGlvbnMgPSBuZXcgV2Vha1NldCgpOwogICAgY29uc3QgaXNHb29kQ29uZmlnID0gZnVuY3Rpb24oaW5zdGFuY2UsIGNvbmZpZykgewogICAgICAgIGlmICggbmV1dGVyZWRQZWVyQ29ubmVjdGlvbnMuaGFzKGluc3RhbmNlKSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgaWYgKCBjb25maWcgaW5zdGFuY2VvZiBPYmplY3QgPT09IGZhbHNlICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgIGlmICggQXJyYXkuaXNBcnJheShjb25maWcuaWNlU2VydmVycykgPT09IGZhbHNlICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgIGZvciAoIGNvbnN0IHNlcnZlciBvZiBjb25maWcuaWNlU2VydmVycyApIHsKICAgICAgICAgICAgY29uc3QgdXJscyA9IHR5cGVvZiBzZXJ2ZXIudXJscyA9PT0gJ3N0cmluZycKICAgICAgICAgICAgICAgID8gWyBzZXJ2ZXIudXJscyBdCiAgICAgICAgICAgICAgICA6IHNlcnZlci51cmxzOwogICAgICAgICAgICBpZiAoIEFycmF5LmlzQXJyYXkodXJscykgKSB7CiAgICAgICAgICAgICAgICBmb3IgKCBjb25zdCB1cmwgb2YgdXJscyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHJlR29vZC50ZXN0KHVybCkgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCB0eXBlb2Ygc2VydmVyLnVzZXJuYW1lID09PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIGlmICggcmVHb29kLnRlc3Qoc2VydmVyLnVzZXJuYW1lKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHR5cGVvZiBzZXJ2ZXIuY3JlZGVudGlhbCA9PT0gJ3N0cmluZycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHJlR29vZC50ZXN0KHNlcnZlci5jcmVkZW50aWFsKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBuZXV0ZXJlZFBlZXJDb25uZWN0aW9ucy5hZGQoaW5zdGFuY2UpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH07CiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbkN0b3IgPSB3aW5kb3dbcnRjTmFtZV07CiAgICBjb25zdCBwZWVyQ29ubmVjdGlvblByb3RvID0gcGVlckNvbm5lY3Rpb25DdG9yLnByb3RvdHlwZTsKICAgIHBlZXJDb25uZWN0aW9uUHJvdG8uY3JlYXRlRGF0YUNoYW5uZWwgPQogICAgICAgIG5ldyBQcm94eShwZWVyQ29ubmVjdGlvblByb3RvLmNyZWF0ZURhdGFDaGFubmVsLCB7CiAgICAgICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgICAgIGlmICggaXNHb29kQ29uZmlnKHRhcmdldCwgYXJnc1sxXSkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgIGxvZygndUJPOicsIGFyZ3NbMV0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncy5zbGljZSgwLCAxKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICB9LAogICAgICAgIH0pOwogICAgd2luZG93W3J0Y05hbWVdID0KICAgICAgICBuZXcgUHJveHkocGVlckNvbm5lY3Rpb25DdG9yLCB7CiAgICAgICAgICAgIGNvbnN0cnVjdDogZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgICAgICBpZiAoIGlzR29vZENvbmZpZyh0YXJnZXQsIGFyZ3NbMF0pID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICBsb2coJ3VCTzonLCBhcmdzWzBdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QodGFyZ2V0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmNvbnN0cnVjdCh0YXJnZXQsIGFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"no-xhr-if.js","aliases":["prevent-xhr.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHBhcnNlUHJvcGVydGllc1RvTWF0Y2gocHJvcHNUb01hdGNoLCBpbXBsaWNpdCA9ICcnKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IG5lZWRsZXMgPSBuZXcgTWFwKCk7CiAgICBpZiAoIHByb3BzVG9NYXRjaCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzVG9NYXRjaCA9PT0gJycgKSB7IHJldHVybiBuZWVkbGVzOyB9CiAgICBjb25zdCBvcHRpb25zID0geyBjYW5OZWdhdGU6IHRydWUgfTsKICAgIGZvciAoIGNvbnN0IG5lZWRsZSBvZiBwcm9wc1RvTWF0Y2guc3BsaXQoL1xzKy8pICkgewogICAgICAgIGNvbnN0IFsgcHJvcCwgcGF0dGVybiBdID0gbmVlZGxlLnNwbGl0KCc6Jyk7CiAgICAgICAgaWYgKCBwcm9wID09PSAnJyApIHsgY29udGludWU7IH0KICAgICAgICBpZiAoIHBhdHRlcm4gIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgbmVlZGxlcy5zZXQocHJvcCwgc2FmZS5pbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zKSk7CiAgICAgICAgfSBlbHNlIGlmICggaW1wbGljaXQgIT09ICcnICkgewogICAgICAgICAgICBuZWVkbGVzLnNldChpbXBsaWNpdCwgc2FmZS5pbml0UGF0dGVybihwcm9wLCBvcHRpb25zKSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG5lZWRsZXM7Cn0KZnVuY3Rpb24gbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCAuLi5vYmpzKSB7CiAgICBpZiAoIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9IChzcmMsIGRlcywgcHJvcHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgcCBvZiBwcm9wcyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzcmNbcF07CiAgICAgICAgICAgICAgICBpZiAoIHYgPT09IHVuZGVmaW5lZCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGRlc1twXSA9IHNyY1twXTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGhheXN0YWNrID0ge307CiAgICBjb25zdCBwcm9wcyA9IEFycmF5LmZyb20ocHJvcE5lZWRsZXMua2V5cygpKTsKICAgIGZvciAoIGNvbnN0IG9iaiBvZiBvYmpzICkgewogICAgICAgIGlmICggb2JqIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMob2JqLCBoYXlzdGFjaywgcHJvcHMpOwogICAgfQogICAgZm9yICggY29uc3QgWyBwcm9wLCBkZXRhaWxzIF0gb2YgcHJvcE5lZWRsZXMgKSB7CiAgICAgICAgbGV0IHZhbHVlID0gaGF5c3RhY2tbcHJvcF07CiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgdHJ5IHsgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7IH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsgfQogICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgfQogICAgICAgIGlmICggc2FmZS50ZXN0UGF0dGVybihkZXRhaWxzLCB2YWx1ZSkgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCiAgKGZ1bmN0aW9uIG5vWGhySWYoCiAgICBwcm9wc1RvTWF0Y2ggPSAnJywKICAgIGRpcmVjdGl2ZSA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgcHJvcHNUb01hdGNoICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IHhockluc3RhbmNlcyA9IG5ldyBXZWFrTWFwKCk7CiAgICBjb25zdCBwcm9wTmVlZGxlcyA9IHBhcnNlUHJvcGVydGllc1RvTWF0Y2gocHJvcHNUb01hdGNoLCAndXJsJyk7CiAgICBjb25zdCBsb2cgPSBwcm9wTmVlZGxlcy5zaXplID09PSAwID8gY29uc29sZS5sb2cuYmluZChjb25zb2xlKSA6IHVuZGVmaW5lZDsKICAgIGNvbnN0IHdhck9yaWdpbiA9IHNjcmlwdGxldEdsb2JhbHMuZ2V0KCd3YXJPcmlnaW4nKTsKICAgIGNvbnN0IGdlbmVyYXRlUmFuZG9tU3RyaW5nID0gbGVuID0+IHsKICAgICAgICAgICAgbGV0IHMgPSAnJzsKICAgICAgICAgICAgZG8geyBzICs9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpOyB9CiAgICAgICAgICAgIHdoaWxlICggcy5sZW5ndGggPCAxMCApOwogICAgICAgICAgICByZXR1cm4gcy5zbGljZSgwLCBsZW4pOwogICAgfTsKICAgIGNvbnN0IGdlbmVyYXRlQ29udGVudCA9IGFzeW5jIGRpcmVjdGl2ZSA9PiB7CiAgICAgICAgaWYgKCBkaXJlY3RpdmUgPT09ICd0cnVlJyApIHsKICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlUmFuZG9tU3RyaW5nKDEwKTsKICAgICAgICB9CiAgICAgICAgaWYgKCBkaXJlY3RpdmUuc3RhcnRzV2l0aCgnd2FyOicpICkgewogICAgICAgICAgICBpZiAoIHdhck9yaWdpbiA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gJyc7IH0KICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICAgICAgICAgICAgY29uc3Qgd2FyTmFtZSA9IGRpcmVjdGl2ZS5zbGljZSg0KTsKICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxwYXRoID0gWyB3YXJPcmlnaW4sICcvJywgd2FyTmFtZSBdOwogICAgICAgICAgICAgICAgY29uc3Qgd2FyU2VjcmV0ID0gc2NyaXB0bGV0R2xvYmFscy5nZXQoJ3dhclNlY3JldCcpOwogICAgICAgICAgICAgICAgaWYgKCB3YXJTZWNyZXQgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICBmdWxscGF0aC5wdXNoKCc/c2VjcmV0PScsIHdhclNlY3JldCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zdCB3YXJYSFIgPSBuZXcgc2FmZS5YTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgICAgICAgd2FyWEhSLnJlc3BvbnNlVHlwZSA9ICd0ZXh0JzsKICAgICAgICAgICAgICAgIHdhclhIUi5vbmxvYWRlbmQgPSBldiA9PiB7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShldi50YXJnZXQucmVzcG9uc2VUZXh0IHx8ICcnKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB3YXJYSFIub3BlbignR0VUJywgZnVsbHBhdGguam9pbignJykpOwogICAgICAgICAgICAgICAgd2FyWEhSLnNlbmQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAnJzsKICAgIH07CiAgICBzZWxmLlhNTEh0dHBSZXF1ZXN0ID0gY2xhc3MgZXh0ZW5kcyBzZWxmLlhNTEh0dHBSZXF1ZXN0IHsKICAgICAgICBvcGVuKG1ldGhvZCwgdXJsLCAuLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggbG9nICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICBsb2coYHVCTzogeGhyLm9wZW4oJHttZXRob2R9LCAke3VybH0sICR7YXJncy5qb2luKCcsICcpfSlgKTsKICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5vcGVuKG1ldGhvZCwgdXJsLCAuLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHdhck9yaWdpbiAhPT0gdW5kZWZpbmVkICYmIHVybC5zdGFydHNXaXRoKHdhck9yaWdpbikgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIub3BlbihtZXRob2QsIHVybCwgLi4uYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgaGF5c3RhY2sgPSB7IG1ldGhvZCwgdXJsIH07CiAgICAgICAgICAgIGlmICggbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCBoYXlzdGFjaykgKSB7CiAgICAgICAgICAgICAgICB4aHJJbnN0YW5jZXMuc2V0KHRoaXMsIGhheXN0YWNrKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3VwZXIub3BlbihtZXRob2QsIHVybCwgLi4uYXJncyk7CiAgICAgICAgfQogICAgICAgIHNlbmQoLi4uYXJncykgewogICAgICAgICAgICBjb25zdCBoYXlzdGFjayA9IHhockluc3RhbmNlcy5nZXQodGhpcyk7CiAgICAgICAgICAgIGlmICggaGF5c3RhY2sgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5zZW5kKC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHsKICAgICAgICAgICAgICAgIHhocjogdGhpcywKICAgICAgICAgICAgICAgIGRpcmVjdGl2ZSwKICAgICAgICAgICAgICAgIHByb3BzOiB7CiAgICAgICAgICAgICAgICAgICAgcmVhZHlTdGF0ZTogeyB2YWx1ZTogNCB9LAogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB7IHZhbHVlOiAnJyB9LAogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVGV4dDogeyB2YWx1ZTogJycgfSwKICAgICAgICAgICAgICAgICAgICByZXNwb25zZVhNTDogeyB2YWx1ZTogbnVsbCB9LAogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVVJMOiB7IHZhbHVlOiBoYXlzdGFjay51cmwgfSwKICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHsgdmFsdWU6IDIwMCB9LAogICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHsgdmFsdWU6ICdPSycgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBzd2l0Y2ggKCB0aGlzLnJlc3BvbnNlVHlwZSApIHsKICAgICAgICAgICAgICAgIGNhc2UgJ2FycmF5YnVmZmVyJzoKICAgICAgICAgICAgICAgICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGRldGFpbHMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLnByb3BzLnJlc3BvbnNlLnZhbHVlID0gbmV3IEFycmF5QnVmZmVyKDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGV0YWlsczsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2InOgogICAgICAgICAgICAgICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oZGV0YWlscyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWUgPSBuZXcgQmxvYihbXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXRhaWxzOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnZG9jdW1lbnQnOiB7CiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihkZXRhaWxzID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKCcnLCAndGV4dC9odG1sJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWUgPSBkb2M7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMucHJvcHMucmVzcG9uc2VYTUwudmFsdWUgPSBkb2M7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXRhaWxzOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAnanNvbic6CiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihkZXRhaWxzID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5wcm9wcy5yZXNwb25zZS52YWx1ZSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLnByb3BzLnJlc3BvbnNlVGV4dC52YWx1ZSA9ICd7fSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXRhaWxzOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpZiAoIGRpcmVjdGl2ZSA9PT0gJycgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihkZXRhaWxzID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlQ29udGVudChkZXRhaWxzLmRpcmVjdGl2ZSkudGhlbih0ZXh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWUgPSB0ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5wcm9wcy5yZXNwb25zZVRleHQudmFsdWUgPSB0ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRldGFpbHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByb21pc2UudGhlbihkZXRhaWxzID0+IHsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGRldGFpbHMueGhyLCBkZXRhaWxzLnByb3BzKTsKICAgICAgICAgICAgICAgIGRldGFpbHMueGhyLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZWFkeXN0YXRlY2hhbmdlJykpOwogICAgICAgICAgICAgICAgZGV0YWlscy54aHIuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2xvYWQnKSk7CiAgICAgICAgICAgICAgICBkZXRhaWxzLnhoci5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnbG9hZGVuZCcpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"no-window-open-if.js","aliases":["nowoif.js","prevent-window-open.js","window.open-defuser.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2hvdWxkTG9nKGRldGFpbHMpIHsKICAgIGlmICggZGV0YWlscyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdjYW5EZWJ1ZycpICYmIGRldGFpbHMubG9nOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLmhhcygnc2FmZVNlbGYnKSApIHsKICAgICAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5nZXQoJ3NhZmVTZWxmJyk7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0Vycm9yJzogc2VsZi5FcnJvciwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1hNTEh0dHBSZXF1ZXN0Jzogc2VsZi5YTUxIdHRwUmVxdWVzdCwKICAgICAgICAnYWRkRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ3JlbW92ZUV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyLAogICAgICAgICdmZXRjaCc6IHNlbGYuZmV0Y2gsCiAgICAgICAgJ2pzb25QYXJzZSc6IHNlbGYuSlNPTi5wYXJzZS5iaW5kKHNlbGYuSlNPTiksCiAgICAgICAgJ2pzb25TdHJpbmdpZnknOiBzZWxmLkpTT04uc3RyaW5naWZ5LmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBgJHthcmdzWzBdfWAgPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgdGhpcy5sb2coJ1t1Qk9dJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlID09PSB0cnVlICYmIHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBwYXR0ZXJuLAogICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgIH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zZXQoJ3NhZmVTZWxmJywgc2FmZSk7CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gbm9XaW5kb3dPcGVuSWYoCiAgICBwYXR0ZXJuID0gJycsCiAgICBkZWxheSA9ICcnLAogICAgZGVjb3kgPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgdGFyZ2V0TWF0Y2hSZXN1bHQgPSBwYXR0ZXJuLnN0YXJ0c1dpdGgoJyEnKSA9PT0gZmFsc2U7CiAgICBpZiAoIHRhcmdldE1hdGNoUmVzdWx0ID09PSBmYWxzZSApIHsKICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5zbGljZSgxKTsKICAgIH0KICAgIGNvbnN0IHJlUGF0dGVybiA9IHNhZmUucGF0dGVyblRvUmVnZXgocGF0dGVybik7CiAgICBsZXQgYXV0b1JlbW92ZUFmdGVyID0gcGFyc2VJbnQoZGVsYXkpOwogICAgaWYgKCBpc05hTihhdXRvUmVtb3ZlQWZ0ZXIpICkgewogICAgICAgIGF1dG9SZW1vdmVBZnRlciA9IC0xOwogICAgfQogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKTsKICAgIGNvbnN0IGxvZ0xldmVsID0gc2hvdWxkTG9nKGV4dHJhQXJncyk7CiAgICBjb25zdCBjcmVhdGVEZWNveSA9IGZ1bmN0aW9uKHRhZywgdXJsUHJvcCwgdXJsKSB7CiAgICAgICAgY29uc3QgZGVjb3lFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgICAgIGRlY295RWxlbVt1cmxQcm9wXSA9IHVybDsKICAgICAgICBkZWNveUVsZW0uc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsJzFweCcsICdpbXBvcnRhbnQnKTsKICAgICAgICBkZWNveUVsZW0uc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywnZml4ZWQnLCAnaW1wb3J0YW50Jyk7CiAgICAgICAgZGVjb3lFbGVtLnN0eWxlLnNldFByb3BlcnR5KCd0b3AnLCctMXB4JywgJ2ltcG9ydGFudCcpOwogICAgICAgIGRlY295RWxlbS5zdHlsZS5zZXRQcm9wZXJ0eSgnd2lkdGgnLCcxcHgnLCAnaW1wb3J0YW50Jyk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkZWNveUVsZW0pOwogICAgICAgIHNldFRpbWVvdXQoKCApID0+IHsgZGVjb3lFbGVtLnJlbW92ZSgpOyB9LCBhdXRvUmVtb3ZlQWZ0ZXIgKiAxMDAwKTsKICAgICAgICByZXR1cm4gZGVjb3lFbGVtOwogICAgfTsKICAgIHdpbmRvdy5vcGVuID0gbmV3IFByb3h5KHdpbmRvdy5vcGVuLCB7CiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICBjb25zdCBoYXlzdGFjayA9IGFyZ3Muam9pbignICcpOwogICAgICAgICAgICBpZiAoIGxvZ0xldmVsICkgewogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2coJ3dpbmRvdy5vcGVuOicsIGhheXN0YWNrKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHJlUGF0dGVybi50ZXN0KGhheXN0YWNrKSAhPT0gdGFyZ2V0TWF0Y2hSZXN1bHQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggYXV0b1JlbW92ZUFmdGVyIDwgMCApIHsgcmV0dXJuIG51bGw7IH0KICAgICAgICAgICAgY29uc3QgZGVjb3lFbGVtID0gZGVjb3kgPT09ICdvYmonCiAgICAgICAgICAgICAgICA/IGNyZWF0ZURlY295KCdvYmplY3QnLCAnZGF0YScsIC4uLmFyZ3MpCiAgICAgICAgICAgICAgICA6IGNyZWF0ZURlY295KCdpZnJhbWUnLCAnc3JjJywgLi4uYXJncyk7CiAgICAgICAgICAgIGxldCBwb3B1cCA9IGRlY295RWxlbS5jb250ZW50V2luZG93OwogICAgICAgICAgICBpZiAoIHR5cGVvZiBwb3B1cCA9PT0gJ29iamVjdCcgJiYgcG9wdXAgIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocG9wdXAsICdjbG9zZWQnLCB7IHZhbHVlOiBmYWxzZSB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnN0IG5vb3BGdW5jID0gKGZ1bmN0aW9uKCl7fSkuYmluZChzZWxmKTsKICAgICAgICAgICAgICAgIHBvcHVwID0gbmV3IFByb3h5KHNlbGYsIHsKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3AgPT09ICdjbG9zZWQnICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuZ2V0KC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHIgPT09ICdmdW5jdGlvbicgKSB7IHJldHVybiBub29wRnVuYzsgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdOwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggbG9nTGV2ZWwgKSB7CiAgICAgICAgICAgICAgICBwb3B1cCA9IG5ldyBQcm94eShwb3B1cCwgewogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24odGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKCd3aW5kb3cub3BlbiAvIGdldCcsIHByb3AsICc9PT0nLCB0YXJnZXRbcHJvcF0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24odGFyZ2V0LCBwcm9wLCB2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBzYWZlLnVib0xvZygnd2luZG93Lm9wZW4gLyBzZXQnLCBwcm9wLCAnPScsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBwb3B1cDsKICAgICAgICB9CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"window-close-if.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiB3aW5kb3dDbG9zZUlmKAogICAgYXJnMSA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgYXJnMSAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBsZXQgc3ViamVjdCA9ICcnOwogICAgaWYgKCAvXlwvLipcLyQvLnRlc3QoYXJnMSkgKSB7CiAgICAgICAgc3ViamVjdCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwogICAgfSBlbHNlIGlmICggYXJnMSAhPT0gJycgKSB7CiAgICAgICAgc3ViamVjdCA9IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YDsKICAgIH0KICAgIHRyeSB7CiAgICAgICAgY29uc3QgcmUgPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KGFyZzEpOwogICAgICAgIGlmICggcmUudGVzdChzdWJqZWN0KSApIHsKICAgICAgICAgICAgd2luZG93LmNsb3NlKCk7CiAgICAgICAgfQogICAgfSBjYXRjaChleCkgewogICAgICAgIGNvbnNvbGUubG9nKGV4KTsKICAgIH0KfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"window.name-defuser.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIHdpbmRvd05hbWVEZWZ1c2VyKCkgewogICAgaWYgKCB3aW5kb3cgPT09IHdpbmRvdy50b3AgKSB7CiAgICAgICAgd2luZG93Lm5hbWUgPSAnJzsKICAgIH0KfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"overlay-buster.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIG92ZXJsYXlCdXN0ZXIoKSB7CiAgICBpZiAoIHdpbmRvdyAhPT0gd2luZG93LnRvcCApIHsgcmV0dXJuOyB9CiAgICB2YXIgdHN0YXJ0OwogICAgdmFyIHR0bCA9IDMwMDAwOwogICAgdmFyIGRlbGF5ID0gMDsKICAgIHZhciBkZWxheVN0ZXAgPSA1MDsKICAgIHZhciBidXN0ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZG9jRWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgIGJvZHlFbCA9IGRvY3VtZW50LmJvZHksCiAgICAgICAgICAgIHZ3ID0gTWF0aC5taW4oZG9jRWwuY2xpZW50V2lkdGgsIHdpbmRvdy5pbm5lcldpZHRoKSwKICAgICAgICAgICAgdmggPSBNYXRoLm1pbihkb2NFbC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCksCiAgICAgICAgICAgIHRvbCA9IE1hdGgubWluKHZ3LCB2aCkgKiAwLjA1LAogICAgICAgICAgICBlbCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodncvMiwgdmgvMiksCiAgICAgICAgICAgIHN0eWxlLCByZWN0OwogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaWYgKCBlbCA9PT0gbnVsbCB8fCBlbC5wYXJlbnROb2RlID09PSBudWxsIHx8IGVsID09PSBib2R5RWwgKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTsKICAgICAgICAgICAgaWYgKCBwYXJzZUludChzdHlsZS56SW5kZXgsIDEwKSA+PSAxMDAwIHx8IHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnICkgewogICAgICAgICAgICAgICAgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgaWYgKCByZWN0LmxlZnQgPD0gdG9sICYmIHJlY3QudG9wIDw9IHRvbCAmJiAodncgLSByZWN0LnJpZ2h0KSA8PSB0b2wgJiYgKHZoIC0gcmVjdC5ib3R0b20pIDwgdG9sICkgewogICAgICAgICAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpOwogICAgICAgICAgICAgICAgICAgIHRzdGFydCA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICAgICAgZWwgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHZ3LzIsIHZoLzIpOwogICAgICAgICAgICAgICAgICAgIGJvZHlFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnYXV0bycsICdpbXBvcnRhbnQnKTsKICAgICAgICAgICAgICAgICAgICBkb2NFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnYXV0bycsICdpbXBvcnRhbnQnKTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbCA9IGVsLnBhcmVudE5vZGU7CiAgICAgICAgfQogICAgICAgIGlmICggKERhdGUubm93KCkgLSB0c3RhcnQpIDwgdHRsICkgewogICAgICAgICAgICBkZWxheSA9IE1hdGgubWluKGRlbGF5ICsgZGVsYXlTdGVwLCAxMDAwKTsKICAgICAgICAgICAgc2V0VGltZW91dChidXN0ZXIsIGRlbGF5KTsKICAgICAgICB9CiAgICB9OwogICAgdmFyIGRvbVJlYWR5ID0gZnVuY3Rpb24oZXYpIHsKICAgICAgICBpZiAoIGV2ICkgewogICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2LnR5cGUsIGRvbVJlYWR5KTsKICAgICAgICB9CiAgICAgICAgdHN0YXJ0ID0gRGF0ZS5ub3coKTsKICAgICAgICBzZXRUaW1lb3V0KGJ1c3RlciwgZGVsYXkpOwogICAgfTsKICAgIGlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnICkgewogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBkb21SZWFkeSk7CiAgICB9IGVsc2UgewogICAgICAgIGRvbVJlYWR5KCk7CiAgICB9Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"alert-buster.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIGFsZXJ0QnVzdGVyKCkgewogICAgd2luZG93LmFsZXJ0ID0gbmV3IFByb3h5KHdpbmRvdy5hbGVydCwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhhKTsKICAgICAgICB9LAogICAgICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQudG9TdHJpbmcuYmluZCh0YXJnZXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTsKICAgICAgICB9LAogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"nowebrtc.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIG5vV2VicnRjKCkgewogICAgdmFyIHJ0Y05hbWUgPSB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gPyAnUlRDUGVlckNvbm5lY3Rpb24nIDogKAogICAgICAgIHdpbmRvdy53ZWJraXRSVENQZWVyQ29ubmVjdGlvbiA/ICd3ZWJraXRSVENQZWVyQ29ubmVjdGlvbicgOiAnJwogICAgKTsKICAgIGlmICggcnRjTmFtZSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgdmFyIGxvZyA9IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7CiAgICB2YXIgcGMgPSBmdW5jdGlvbihjZmcpIHsKICAgICAgICBsb2coJ0RvY3VtZW50IHRyaWVkIHRvIGNyZWF0ZSBhbiBSVENQZWVyQ29ubmVjdGlvbjogJW8nLCBjZmcpOwogICAgfTsKICAgIGNvbnN0IG5vb3AgPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBwYy5wcm90b3R5cGUgPSB7CiAgICAgICAgY2xvc2U6IG5vb3AsCiAgICAgICAgY3JlYXRlRGF0YUNoYW5uZWw6IG5vb3AsCiAgICAgICAgY3JlYXRlT2ZmZXI6IG5vb3AsCiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IG5vb3AsCiAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gJ1tvYmplY3QgUlRDUGVlckNvbm5lY3Rpb25dJzsKICAgICAgICB9CiAgICB9OwogICAgdmFyIHogPSB3aW5kb3dbcnRjTmFtZV07CiAgICB3aW5kb3dbcnRjTmFtZV0gPSBwYy5iaW5kKHdpbmRvdyk7CiAgICBpZiAoIHoucHJvdG90eXBlICkgewogICAgICAgIHoucHJvdG90eXBlLmNyZWF0ZURhdGFDaGFubmVsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7fSwKICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgfTsKICAgICAgICB9LmJpbmQobnVsbCk7CiAgICB9Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"golem.de.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIGdvbGVtRGUoKSB7CiAgICBjb25zdCByYWVsID0gd2luZG93LmFkZEV2ZW50TGlzdGVuZXI7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICByYWVsKC4uLmFyZ3VtZW50cyk7CiAgICAgICAgbGV0IGhheXN0YWNrOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGhheXN0YWNrID0gYi50b1N0cmluZygpOwogICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICB9CiAgICAgICAgaWYgKAogICAgICAgICAgICB0eXBlb2YgaGF5c3RhY2sgPT09ICdzdHJpbmcnICYmCiAgICAgICAgICAgIC9eXHMqZnVuY3Rpb25ccypcKFwpXHMqXHtccyp3aW5kb3dcLmNsZWFyVGltZW91dFwoclwpXHMqXH1ccyokLy50ZXN0KGhheXN0YWNrKQogICAgICAgICkgewogICAgICAgICAgICBiKCk7CiAgICAgICAgfQogICAgfS5iaW5kKHdpbmRvdyk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"adfly-defuser.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIGFkZmx5RGVmdXNlcigpIHsKICAgIC8vIEJhc2VkIG9uIEFkc0J5cGFzc2VyCiAgICAvLyBMaWNlbnNlOgogICAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vYWRzYnlwYXNzZXIvYWRzYnlwYXNzZXIvYmxvYi9tYXN0ZXIvTElDRU5TRQogICAgdmFyIGlzRGlnaXQgPSAvXlxkJC87CiAgICB2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKGVuY29kZWRVUkwpIHsKICAgICAgICB2YXIgdmFyMSA9ICIiLCB2YXIyID0gIiIsIGk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGVuY29kZWRVUkwubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGkgJSAyID09PSAwKSB7CiAgICAgICAgICAgICAgICB2YXIxID0gdmFyMSArIGVuY29kZWRVUkwuY2hhckF0KGkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyMiA9IGVuY29kZWRVUkwuY2hhckF0KGkpICsgdmFyMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2YXIgZGF0YSA9ICh2YXIxICsgdmFyMikuc3BsaXQoIiIpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChpc0RpZ2l0LnRlc3QoZGF0YVtpXSkpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGlpID0gaSArIDE7IGlpIDwgZGF0YS5sZW5ndGg7IGlpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNEaWdpdC50ZXN0KGRhdGFbaWldKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IHBhcnNlSW50KGRhdGFbaV0sMTApIF4gcGFyc2VJbnQoZGF0YVtpaV0sMTApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA8IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2ldID0gdGVtcC50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpaTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRhdGEgPSBkYXRhLmpvaW4oIiIpOwogICAgICAgIHZhciBkZWNvZGVkVVJMID0gd2luZG93LmF0b2IoZGF0YSkuc2xpY2UoMTYsIC0xNik7CiAgICAgICAgd2luZG93LnN0b3AoKTsKICAgICAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZGVjb2RlZFVSTDsKICAgIH07CiAgICB0cnkgewogICAgICAgIHZhciB2YWw7CiAgICAgICAgdmFyIGZsYWcgPSB0cnVlOwogICAgICAgIHdpbmRvdy5PYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAieXNtbSIsIHsKICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIodmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhbCA9IHZhbHVlOwogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgd2luZG93LmNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAgQWRmbHkgYnlwYXNzZXIhIik7CiAgICB9Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"disable-newtab-links.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIGRpc2FibGVOZXd0YWJMaW5rcygpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpIHsKICAgICAgICB2YXIgdGFyZ2V0ID0gZXYudGFyZ2V0OwogICAgICAgIHdoaWxlICggdGFyZ2V0ICE9PSBudWxsICkgewogICAgICAgICAgICBpZiAoIHRhcmdldC5sb2NhbE5hbWUgPT09ICdhJyAmJiB0YXJnZXQuaGFzQXR0cmlidXRlKCd0YXJnZXQnKSApIHsKICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"cookie-remover.js","aliases":["remove-cookie.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBjb29raWVSZW1vdmVyKAogICAgbmVlZGxlID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBuZWVkbGUgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcmVOYW1lID0gc2FmZS5wYXR0ZXJuVG9SZWdleChuZWVkbGUpOwogICAgY29uc3QgcmVtb3ZlQ29va2llID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZm9yRWFjaChjb29raWVTdHIgPT4gewogICAgICAgICAgICBsZXQgcG9zID0gY29va2llU3RyLmluZGV4T2YoJz0nKTsKICAgICAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgeyByZXR1cm47IH0KICAgICAgICAgICAgbGV0IGNvb2tpZU5hbWUgPSBjb29raWVTdHIuc2xpY2UoMCwgcG9zKS50cmltKCk7CiAgICAgICAgICAgIGlmICggIXJlTmFtZS50ZXN0KGNvb2tpZU5hbWUpICkgeyByZXR1cm47IH0KICAgICAgICAgICAgbGV0IHBhcnQxID0gY29va2llTmFtZSArICc9JzsKICAgICAgICAgICAgbGV0IHBhcnQyYSA9ICc7IGRvbWFpbj0nICsgZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWU7CiAgICAgICAgICAgIGxldCBwYXJ0MmIgPSAnOyBkb21haW49LicgKyBkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZTsKICAgICAgICAgICAgbGV0IHBhcnQyYywgcGFydDJkOwogICAgICAgICAgICBsZXQgZG9tYWluID0gZG9jdW1lbnQuZG9tYWluOwogICAgICAgICAgICBpZiAoIGRvbWFpbiApIHsKICAgICAgICAgICAgICAgIGlmICggZG9tYWluICE9PSBkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSApIHsKICAgICAgICAgICAgICAgICAgICBwYXJ0MmMgPSAnOyBkb21haW49LicgKyBkb21haW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIGRvbWFpbi5zdGFydHNXaXRoKCd3d3cuJykgKSB7CiAgICAgICAgICAgICAgICAgICAgcGFydDJkID0gJzsgZG9tYWluPScgKyBkb21haW4ucmVwbGFjZSgnd3d3JywgJycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBwYXJ0MyA9ICc7IHBhdGg9Lyc7CiAgICAgICAgICAgIGxldCBwYXJ0NCA9ICc7IE1heC1BZ2U9LTEwMDA7IGV4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQnOwogICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwYXJ0MSArIHBhcnQ0OwogICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwYXJ0MSArIHBhcnQyYSArIHBhcnQ0OwogICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwYXJ0MSArIHBhcnQyYiArIHBhcnQ0OwogICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwYXJ0MSArIHBhcnQzICsgcGFydDQ7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBhcnQxICsgcGFydDJhICsgcGFydDMgKyBwYXJ0NDsKICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gcGFydDEgKyBwYXJ0MmIgKyBwYXJ0MyArIHBhcnQ0OwogICAgICAgICAgICBpZiAoIHBhcnQyYyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gcGFydDEgKyBwYXJ0MmMgKyBwYXJ0MyArIHBhcnQ0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggcGFydDJkICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwYXJ0MSArIHBhcnQyZCArIHBhcnQzICsgcGFydDQ7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH07CiAgICByZW1vdmVDb29raWUoKTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCByZW1vdmVDb29raWUpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"xml-prune.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2hvdWxkTG9nKGRldGFpbHMpIHsKICAgIGlmICggZGV0YWlscyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdjYW5EZWJ1ZycpICYmIGRldGFpbHMubG9nOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLmhhcygnc2FmZVNlbGYnKSApIHsKICAgICAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5nZXQoJ3NhZmVTZWxmJyk7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0Vycm9yJzogc2VsZi5FcnJvciwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1hNTEh0dHBSZXF1ZXN0Jzogc2VsZi5YTUxIdHRwUmVxdWVzdCwKICAgICAgICAnYWRkRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ3JlbW92ZUV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyLAogICAgICAgICdmZXRjaCc6IHNlbGYuZmV0Y2gsCiAgICAgICAgJ2pzb25QYXJzZSc6IHNlbGYuSlNPTi5wYXJzZS5iaW5kKHNlbGYuSlNPTiksCiAgICAgICAgJ2pzb25TdHJpbmdpZnknOiBzZWxmLkpTT04uc3RyaW5naWZ5LmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBgJHthcmdzWzBdfWAgPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgdGhpcy5sb2coJ1t1Qk9dJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlID09PSB0cnVlICYmIHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBwYXR0ZXJuLAogICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgIH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zZXQoJ3NhZmVTZWxmJywgc2FmZSk7CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24geG1sUHJ1bmUoCiAgICBzZWxlY3RvciA9ICcnLAogICAgc2VsZWN0b3JDaGVjayA9ICcnLAogICAgdXJsUGF0dGVybiA9ICcnCikgewogICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggc2VsZWN0b3IgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcmVVcmwgPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHVybFBhdHRlcm4pOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKTsKICAgIGNvbnN0IGxvZyA9IHNob3VsZExvZyhleHRyYUFyZ3MpID8gKCguLi5hcmdzKSA9PiB7IHNhZmUudWJvTG9nKC4uLmFyZ3MpOyB9KSA6ICgoICkgPT4geyB9KTsKICAgIGNvbnN0IHF1ZXJ5QWxsID0gKHhtbERvYywgc2VsZWN0b3IpID0+IHsKICAgICAgICBjb25zdCBpc1hwYXRoID0gL154cGF0aFwoLitcKSQvLnRlc3Qoc2VsZWN0b3IpOwogICAgICAgIGlmICggaXNYcGF0aCA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHhtbERvYy5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IHhwciA9IHhtbERvYy5ldmFsdWF0ZSgKICAgICAgICAgICAgc2VsZWN0b3Iuc2xpY2UoNiwgLTEpLAogICAgICAgICAgICB4bWxEb2MsCiAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgIFhQYXRoUmVzdWx0LlVOT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUsCiAgICAgICAgICAgIG51bGwKICAgICAgICApOwogICAgICAgIGNvbnN0IG91dCA9IFtdOwogICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHhwci5zbmFwc2hvdExlbmd0aDsgaSsrICkgewogICAgICAgICAgICBjb25zdCBub2RlID0geHByLnNuYXBzaG90SXRlbShpKTsKICAgICAgICAgICAgb3V0LnB1c2gobm9kZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvdXQ7CiAgICB9OwogICAgY29uc3QgcHJ1bmVGcm9tRG9jID0geG1sRG9jID0+IHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoIHNlbGVjdG9yQ2hlY2sgIT09ICcnICYmIHhtbERvYy5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yQ2hlY2spID09PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHhtbERvYzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIGV4dHJhQXJncy5sb2dkb2MgKSB7CiAgICAgICAgICAgICAgICBjb25zdCBzZXJpYWxpemVyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKTsKICAgICAgICAgICAgICAgIGxvZyhgeG1sUHJ1bmU6IGRvY3VtZW50IGlzXG5cdCR7c2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyh4bWxEb2MpfWApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcXVlcnlBbGwoeG1sRG9jLCBzZWxlY3Rvcik7CiAgICAgICAgICAgIGlmICggaXRlbXMubGVuZ3RoID09PSAwICkgeyByZXR1cm4geG1sRG9jOyB9CiAgICAgICAgICAgIGxvZyhgeG1sUHJ1bmU6IHJlbW92aW5nICR7aXRlbXMubGVuZ3RofSBpdGVtc2ApOwogICAgICAgICAgICBmb3IgKCBjb25zdCBpdGVtIG9mIGl0ZW1zICkgewogICAgICAgICAgICAgICAgaWYgKCBpdGVtLm5vZGVUeXBlID09PSAxICkgewogICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBpdGVtLm5vZGVUeXBlID09PSAyICkgewogICAgICAgICAgICAgICAgICAgIGl0ZW0ub3duZXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShpdGVtLm5vZGVOYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxvZyhgeG1sUHJ1bmU6ICR7aXRlbS5jb25zdHJ1Y3Rvci5uYW1lfS4ke2l0ZW0ubm9kZU5hbWV9IHJlbW92ZWRgKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICAgICAgbG9nKGV4KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHhtbERvYzsKICAgIH07CiAgICBjb25zdCBwcnVuZUZyb21UZXh0ID0gdGV4dCA9PiB7CiAgICAgICAgaWYgKCAoL15ccyo8Ly50ZXN0KHRleHQpICYmIC8+XHMqJC8udGVzdCh0ZXh0KSkgPT09IGZhbHNlICkgewogICAgICAgICAgICByZXR1cm4gdGV4dDsKICAgICAgICB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgeG1sUGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwogICAgICAgICAgICBjb25zdCB4bWxEb2MgPSB4bWxQYXJzZXIucGFyc2VGcm9tU3RyaW5nKHRleHQsICd0ZXh0L3htbCcpOwogICAgICAgICAgICBwcnVuZUZyb21Eb2MoeG1sRG9jKTsKICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplciA9IG5ldyBYTUxTZXJpYWxpemVyKCk7CiAgICAgICAgICAgIHRleHQgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZVRvU3RyaW5nKHhtbERvYyk7CiAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgIH0KICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICBjb25zdCB1cmxGcm9tQXJnID0gYXJnID0+IHsKICAgICAgICBpZiAoIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnICkgeyByZXR1cm4gYXJnOyB9CiAgICAgICAgaWYgKCBhcmcgaW5zdGFuY2VvZiBSZXF1ZXN0ICkgeyByZXR1cm4gYXJnLnVybDsgfQogICAgICAgIHJldHVybiBTdHJpbmcoYXJnKTsKICAgIH07CiAgICBzZWxmLmZldGNoID0gbmV3IFByb3h5KHNlbGYuZmV0Y2gsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IGZldGNoUHJvbWlzZSA9IFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgaWYgKCByZVVybC50ZXN0KHVybEZyb21BcmcoYXJnc1swXSkpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaFByb21pc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZldGNoUHJvbWlzZS50aGVuKHJlc3BvbnNlQmVmb3JlID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzcG9uc2VCZWZvcmUuY2xvbmUoKTsKICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbih0ZXh0ID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUFmdGVyID0gbmV3IFJlc3BvbnNlKHBydW5lRnJvbVRleHQodGV4dCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZUJlZm9yZS5zdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlQmVmb3JlLnN0YXR1c1RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlQmVmb3JlLmhlYWRlcnMsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocmVzcG9uc2VBZnRlciwgewogICAgICAgICAgICAgICAgICAgICAgICBvazogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUub2sgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RlZDogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUucmVkaXJlY3RlZCB9LAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB7IHZhbHVlOiByZXNwb25zZUJlZm9yZS50eXBlIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUudXJsIH0sCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlQWZ0ZXI7CiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoICkgPT4KICAgICAgICAgICAgICAgICAgICByZXNwb25zZUJlZm9yZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSk7CiAgICBzZWxmLlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuID0gbmV3IFByb3h5KHNlbGYuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW4sIHsKICAgICAgICBhcHBseTogYXN5bmMgKHRhcmdldCwgdGhpc0FyZywgYXJncykgPT4gewogICAgICAgICAgICBpZiAoIHJlVXJsLnRlc3QodXJsRnJvbUFyZyhhcmdzWzFdKSkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzQXJnLmFkZEV2ZW50TGlzdGVuZXIoJ3JlYWR5c3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICggdGhpc0FyZy5yZWFkeVN0YXRlICE9PSA0ICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzQXJnLnJlc3BvbnNlVHlwZTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICB0eXBlID09PSAnZG9jdW1lbnQnIHx8CiAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gJycgJiYgdGhpc0FyZy5yZXNwb25zZVhNTCBpbnN0YW5jZW9mIFhNTERvY3VtZW50CiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICBwcnVuZUZyb21Eb2ModGhpc0FyZy5yZXNwb25zZVhNTCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICd0ZXh0JyB8fAogICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICcnICYmIHR5cGVvZiB0aGlzQXJnLnJlc3BvbnNlVGV4dCA9PT0gJ3N0cmluZycKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRpbiA9IHRoaXNBcmcucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRvdXQgPSBwcnVuZUZyb21UZXh0KHRleHRpbik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCB0ZXh0b3V0ID09PSB0ZXh0aW4gKSB7IHJldHVybjsgfQogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzQXJnLCAncmVzcG9uc2UnLCB7IHZhbHVlOiB0ZXh0b3V0IH0pOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzQXJnLCAncmVzcG9uc2VUZXh0JywgeyB2YWx1ZTogdGV4dG91dCB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"m3u-prune.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2hvdWxkTG9nKGRldGFpbHMpIHsKICAgIGlmICggZGV0YWlscyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdjYW5EZWJ1ZycpICYmIGRldGFpbHMubG9nOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLmhhcygnc2FmZVNlbGYnKSApIHsKICAgICAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5nZXQoJ3NhZmVTZWxmJyk7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0Vycm9yJzogc2VsZi5FcnJvciwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1hNTEh0dHBSZXF1ZXN0Jzogc2VsZi5YTUxIdHRwUmVxdWVzdCwKICAgICAgICAnYWRkRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ3JlbW92ZUV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyLAogICAgICAgICdmZXRjaCc6IHNlbGYuZmV0Y2gsCiAgICAgICAgJ2pzb25QYXJzZSc6IHNlbGYuSlNPTi5wYXJzZS5iaW5kKHNlbGYuSlNPTiksCiAgICAgICAgJ2pzb25TdHJpbmdpZnknOiBzZWxmLkpTT04uc3RyaW5naWZ5LmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBgJHthcmdzWzBdfWAgPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgdGhpcy5sb2coJ1t1Qk9dJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlID09PSB0cnVlICYmIHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBwYXR0ZXJuLAogICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgIH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zZXQoJ3NhZmVTZWxmJywgc2FmZSk7CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gbTN1UHJ1bmUoCiAgICBtM3VQYXR0ZXJuID0gJycsCiAgICB1cmxQYXR0ZXJuID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBtM3VQYXR0ZXJuICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IG9wdGlvbnMgPSBzYWZlLmdldEV4dHJhQXJncyhBcnJheS5mcm9tKGFyZ3VtZW50cyksIDIpOwogICAgY29uc3QgbG9nTGV2ZWwgPSBzaG91bGRMb2cob3B0aW9ucyk7CiAgICBjb25zdCB1Ym9Mb2cgPSBsb2dMZXZlbCA/ICgoLi4uYXJncykgPT4gc2FmZS51Ym9Mb2coLi4uYXJncykpIDogKCggKSA9PiB7IH0pOwogICAgY29uc3QgcmVnZXhGcm9tQXJnID0gYXJnID0+IHsKICAgICAgICBpZiAoIGFyZyA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dtc10qKSQvLmV4ZWMoYXJnKTsKICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICBsZXQgZmxhZ3MgPSBtYXRjaFsyXSB8fCAnJzsKICAgICAgICAgICAgaWYgKCBmbGFncy5pbmNsdWRlcygnbScpICkgeyBmbGFncyArPSAncyc7IH0KICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIGZsYWdzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoCiAgICAgICAgICAgIGFyZy5yZXBsYWNlKC9bLis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLnJlcGxhY2UoL1wqKy9nLCAnLio/JykKICAgICAgICApOwogICAgfTsKICAgIGNvbnN0IHJlTTN1ID0gcmVnZXhGcm9tQXJnKG0zdVBhdHRlcm4pOwogICAgY29uc3QgcmVVcmwgPSByZWdleEZyb21BcmcodXJsUGF0dGVybik7CiAgICBjb25zdCBwcnVuZVNwbGljZW91dEJsb2NrID0gKGxpbmVzLCBpKSA9PiB7CiAgICAgICAgaWYgKCBsaW5lc1tpXS5zdGFydHNXaXRoKCcjRVhULVgtQ1VFOlRZUEU9IlNwbGljZU91dCInKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgdWJvTG9nKCdtM3UtcHJ1bmU6IGRpc2NhcmRpbmcnLCBgXG5cdCR7bGluZXNbaV19YCk7CiAgICAgICAgbGluZXNbaV0gPSB1bmRlZmluZWQ7IGkgKz0gMTsKICAgICAgICBpZiAoIGxpbmVzW2ldLnN0YXJ0c1dpdGgoJyNFWFQtWC1BU1NFVDpDQUlEJykgKSB7CiAgICAgICAgICAgIHVib0xvZyhgXHQke2xpbmVzW2ldfWApOwogICAgICAgICAgICBsaW5lc1tpXSA9IHVuZGVmaW5lZDsgaSArPSAxOwogICAgICAgIH0KICAgICAgICBpZiAoIGxpbmVzW2ldLnN0YXJ0c1dpdGgoJyNFWFQtWC1TQ1RFMzU6JykgKSB7CiAgICAgICAgICAgIHVib0xvZyhgXHQke2xpbmVzW2ldfWApOwogICAgICAgICAgICBsaW5lc1tpXSA9IHVuZGVmaW5lZDsgaSArPSAxOwogICAgICAgIH0KICAgICAgICBpZiAoIGxpbmVzW2ldLnN0YXJ0c1dpdGgoJyNFWFQtWC1DVUUtSU4nKSApIHsKICAgICAgICAgICAgdWJvTG9nKGBcdCR7bGluZXNbaV19YCk7CiAgICAgICAgICAgIGxpbmVzW2ldID0gdW5kZWZpbmVkOyBpICs9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggbGluZXNbaV0uc3RhcnRzV2l0aCgnI0VYVC1YLVNDVEUzNTonKSApIHsKICAgICAgICAgICAgdWJvTG9nKGBcdCR7bGluZXNbaV19YCk7CiAgICAgICAgICAgIGxpbmVzW2ldID0gdW5kZWZpbmVkOyBpICs9IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKICAgIGNvbnN0IHBydW5lSW5mQmxvY2sgPSAobGluZXMsIGkpID0+IHsKICAgICAgICBpZiAoIGxpbmVzW2ldLnN0YXJ0c1dpdGgoJyNFWFRJTkYnKSA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgIGlmICggcmVNM3UudGVzdChsaW5lc1tpKzFdKSA9PT0gZmFsc2UgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgIHVib0xvZygnbTN1LXBydW5lOiBkaXNjYXJkaW5nJywgYFxuXHQke2xpbmVzW2ldfSwgXG5cdCR7bGluZXNbaSsxXX1gKTsKICAgICAgICBsaW5lc1tpXSA9IGxpbmVzW2krMV0gPSB1bmRlZmluZWQ7IGkgKz0gMjsKICAgICAgICBpZiAoIGxpbmVzW2ldLnN0YXJ0c1dpdGgoJyNFWFQtWC1ESVNDT05USU5VSVRZJykgKSB7CiAgICAgICAgICAgIHVib0xvZyhgXHQke2xpbmVzW2ldfWApOwogICAgICAgICAgICBsaW5lc1tpXSA9IHVuZGVmaW5lZDsgaSArPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CiAgICBjb25zdCBwcnVuZXIgPSB0ZXh0ID0+IHsKICAgICAgICBpZiAoICgvXlxzKiNFWFRNM1UvLnRlc3QodGV4dCkpID09PSBmYWxzZSApIHsgcmV0dXJuIHRleHQ7IH0KICAgICAgICBpZiAoIHJlTTN1Lm11bHRpbGluZSApIHsKICAgICAgICAgICAgcmVNM3UubGFzdEluZGV4ID0gMDsKICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSByZU0zdS5leGVjKHRleHQpOwogICAgICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsgYnJlYWs7IH0KICAgICAgICAgICAgICAgIGxldCBkaXNjYXJkID0gbWF0Y2hbMF07CiAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID0gdGV4dC5zbGljZSgwLCBtYXRjaC5pbmRleCk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgL15bXG5ccl0rLy50ZXN0KGRpc2NhcmQpID09PSBmYWxzZSAmJgogICAgICAgICAgICAgICAgICAgIC9bXG5ccl0rJC8udGVzdChiZWZvcmUpID09PSBmYWxzZQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRPZkxpbmUgPSAvW15cblxyXSskLy5leGVjKGJlZm9yZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBzdGFydE9mTGluZSAhPT0gbnVsbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlID0gYmVmb3JlLnNsaWNlKDAsIHN0YXJ0T2ZMaW5lLmluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2FyZCA9IHN0YXJ0T2ZMaW5lWzBdICsgZGlzY2FyZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsZXQgYWZ0ZXIgPSB0ZXh0LnNsaWNlKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAvW1xuXHJdKyQvLnRlc3QoZGlzY2FyZCkgPT09IGZhbHNlICYmCiAgICAgICAgICAgICAgICAgICAgL15bXG5ccl0rLy50ZXN0KGFmdGVyKSA9PT0gZmFsc2UKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZE9mTGluZSA9IC9eW15cblxyXSsvLmV4ZWMoYWZ0ZXIpOwogICAgICAgICAgICAgICAgICAgIGlmICggZW5kT2ZMaW5lICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgICAgICAgICBhZnRlciA9IGFmdGVyLnNsaWNlKGVuZE9mTGluZS5pbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NhcmQgKz0gZGlzY2FyZCArIGVuZE9mTGluZVswXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ZXh0ID0gYmVmb3JlLnRyaW0oKSArICdcbicgKyBhZnRlci50cmltKCk7CiAgICAgICAgICAgICAgICByZU0zdS5sYXN0SW5kZXggPSBiZWZvcmUubGVuZ3RoICsgMTsKICAgICAgICAgICAgICAgIHVib0xvZygnbTN1LXBydW5lOiBkaXNjYXJkaW5nXG4nLAogICAgICAgICAgICAgICAgICAgIGRpc2NhcmQuc3BsaXQoL1xuKy8pLm1hcChzID0+IGBcdCR7c31gKS5qb2luKCdcbicpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCByZU0zdS5nbG9iYWwgPT09IGZhbHNlICkgeyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0ZXh0OwogICAgICAgIH0KICAgICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoL1xuXHJ8XG58XHIvKTsKICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgaWYgKCBsaW5lc1tpXSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICBpZiAoIHBydW5lU3BsaWNlb3V0QmxvY2sobGluZXMsIGkpICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICBpZiAoIHBydW5lSW5mQmxvY2sobGluZXMsIGkpICkgeyBjb250aW51ZTsgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gbGluZXMuZmlsdGVyKGwgPT4gbCAhPT0gdW5kZWZpbmVkKS5qb2luKCdcbicpOwogICAgfTsKICAgIGNvbnN0IHVybEZyb21BcmcgPSBhcmcgPT4gewogICAgICAgIGlmICggdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgKSB7IHJldHVybiBhcmc7IH0KICAgICAgICBpZiAoIGFyZyBpbnN0YW5jZW9mIFJlcXVlc3QgKSB7IHJldHVybiBhcmcudXJsOyB9CiAgICAgICAgcmV0dXJuIFN0cmluZyhhcmcpOwogICAgfTsKICAgIGNvbnN0IHJlYWxGZXRjaCA9IHNlbGYuZmV0Y2g7CiAgICBzZWxmLmZldGNoID0gbmV3IFByb3h5KHNlbGYuZmV0Y2gsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGlmICggcmVVcmwudGVzdCh1cmxGcm9tQXJnKGFyZ3NbMF0pKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZWFsRmV0Y2goLi4uYXJncykudGhlbihyZWFsUmVzcG9uc2UgPT4KICAgICAgICAgICAgICAgIHJlYWxSZXNwb25zZS50ZXh0KCkudGhlbih0ZXh0ID0+CiAgICAgICAgICAgICAgICAgICAgbmV3IFJlc3BvbnNlKHBydW5lcih0ZXh0KSwgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlYWxSZXNwb25zZS5zdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlYWxSZXNwb25zZS5zdGF0dXNUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiByZWFsUmVzcG9uc2UuaGVhZGVycywKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0pOwogICAgc2VsZi5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3BlbiA9IG5ldyBQcm94eShzZWxmLlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuLCB7CiAgICAgICAgYXBwbHk6IGFzeW5jICh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpID0+IHsKICAgICAgICAgICAgaWYgKCByZVVybC50ZXN0KHVybEZyb21BcmcoYXJnc1sxXSkpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpc0FyZy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoIHRoaXNBcmcucmVhZHlTdGF0ZSAhPT0gNCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpc0FyZy5yZXNwb25zZVR5cGU7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgIT09ICcnICYmIHR5cGUgIT09ICd0ZXh0JyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0aW4gPSB0aGlzQXJnLnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgICAgIGNvbnN0IHRleHRvdXQgPSBwcnVuZXIodGV4dGluKTsKICAgICAgICAgICAgICAgIGlmICggdGV4dG91dCA9PT0gdGV4dGluICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzQXJnLCAncmVzcG9uc2UnLCB7IHZhbHVlOiB0ZXh0b3V0IH0pOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXNBcmcsICdyZXNwb25zZVRleHQnLCB7IHZhbHVlOiB0ZXh0b3V0IH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICB9CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"href-sanitizer.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHJ1bkF0KGZuLCB3aGVuKSB7CiAgICBjb25zdCBpbnRGcm9tUmVhZHlTdGF0ZSA9IHN0YXRlID0+IHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gewogICAgICAgICAgICAnbG9hZGluZyc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiBocmVmU2FuaXRpemVyKAogICAgc2VsZWN0b3IgPSAnJywKICAgIHNvdXJjZSA9ICcnCikgewogICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggc2VsZWN0b3IgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGlmICggc291cmNlID09PSAnJyApIHsgc291cmNlID0gJ3RleHQnOyB9CiAgICBjb25zdCBzYW5pdGl6ZUNvcHljYXRzID0gKGhyZWYsIHRleHQpID0+IHsKICAgICAgICBsZXQgZWxlbXMgPSBbXTsKICAgICAgICB0cnkgewogICAgICAgICAgICBlbGVtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYGFbaHJlZj0iJHtocmVmfSJgKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICB9CiAgICAgICAgZm9yICggY29uc3QgZWxlbSBvZiBlbGVtcyApIHsKICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB0ZXh0KTsKICAgICAgICB9CiAgICB9OwogICAgY29uc3QgdmFsaWRhdGVVUkwgPSB0ZXh0ID0+IHsKICAgICAgICBpZiAoIHRleHQgPT09ICcnICkgeyByZXR1cm4gJyc7IH0KICAgICAgICBpZiAoIC9bXlx4MjEtXHg3ZV0vLnRlc3QodGV4dCkgKSB7IHJldHVybiAnJzsgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGV4dCwgZG9jdW1lbnQubG9jYXRpb24pOwogICAgICAgICAgICByZXR1cm4gdXJsLmhyZWY7CiAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgIH0KICAgICAgICByZXR1cm4gJyc7CiAgICB9OwogICAgY29uc3QgZXh0cmFjdFRleHQgPSAoZWxlbSwgc291cmNlKSA9PiB7CiAgICAgICAgaWYgKCAvXlxbLipcXSQvLnRlc3Qoc291cmNlKSApIHsKICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKHNvdXJjZS5zbGljZSgxLC0xKS50cmltKCkpIHx8ICcnOwogICAgICAgIH0KICAgICAgICBpZiAoIHNvdXJjZS5zdGFydHNXaXRoKCc/JykgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGVsZW0uaHJlZiwgZG9jdW1lbnQubG9jYXRpb24pOwogICAgICAgICAgICAgICAgcmV0dXJuIHVybC5zZWFyY2hQYXJhbXMuZ2V0KHNvdXJjZS5zbGljZSgxKSkgfHwgJyc7CiAgICAgICAgICAgIH0gY2F0Y2goeCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgICAgaWYgKCBzb3VyY2UgPT09ICd0ZXh0JyApIHsKICAgICAgICAgICAgcmV0dXJuIGVsZW0udGV4dENvbnRlbnQKICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9eW15ceDIxLVx4N2VdKy8sICcnKSAvLyByZW1vdmUgbGVhZGluZyBpbnZhbGlkIGNoYXJhY3RlcnMKICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXlx4MjEtXHg3ZV0rJC8sICcnKSAvLyByZW1vdmUgdHJhaWxpbmcgaW52YWxpZCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICA7CiAgICAgICAgfQogICAgICAgIHJldHVybiAnJzsKICAgIH07CiAgICBjb25zdCBzYW5pdGl6ZSA9ICggKSA9PiB7CiAgICAgICAgbGV0IGVsZW1zID0gW107CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZWxlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBmb3IgKCBjb25zdCBlbGVtIG9mIGVsZW1zICkgewogICAgICAgICAgICBpZiAoIGVsZW0ubG9jYWxOYW1lICE9PSAnYScgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGlmICggZWxlbS5oYXNBdHRyaWJ1dGUoJ2hyZWYnKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBlbGVtLmdldEF0dHJpYnV0ZSgnaHJlZicpOwogICAgICAgICAgICBjb25zdCB0ZXh0ID0gZXh0cmFjdFRleHQoZWxlbSwgc291cmNlKTsKICAgICAgICAgICAgY29uc3QgaHJlZkFmdGVyID0gdmFsaWRhdGVVUkwodGV4dCk7CiAgICAgICAgICAgIGlmICggaHJlZkFmdGVyID09PSAnJyApIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKCBocmVmQWZ0ZXIgPT09IGhyZWYgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZkFmdGVyKTsKICAgICAgICAgICAgc2FuaXRpemVDb3B5Y2F0cyhocmVmLCBocmVmQWZ0ZXIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CiAgICBsZXQgb2JzZXJ2ZXIsIHRpbWVyOwogICAgY29uc3Qgb25Eb21DaGFuZ2VkID0gbXV0YXRpb25zID0+IHsKICAgICAgICBpZiAoIHRpbWVyICE9PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgIGxldCBzaG91bGRTYW5pdGl6ZSA9IGZhbHNlOwogICAgICAgIGZvciAoIGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucyApIHsKICAgICAgICAgICAgaWYgKCBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA9PT0gMCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgZm9yICggY29uc3Qgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzICkgewogICAgICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVUeXBlICE9PSAxICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgc2hvdWxkU2FuaXRpemUgPSB0cnVlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBzaG91bGRTYW5pdGl6ZSApIHsgYnJlYWs7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCBzaG91bGRTYW5pdGl6ZSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHRpbWVyID0gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCApID0+IHsKICAgICAgICAgICAgdGltZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIHNhbml0aXplKCk7CiAgICAgICAgfSk7CiAgICB9OwogICAgY29uc3Qgc3RhcnQgPSAoICkgPT4gewogICAgICAgIGlmICggc2FuaXRpemUoKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob25Eb21DaGFuZ2VkKTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsKICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwKICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLAogICAgICAgIH0pOwogICAgfTsKICAgIHJ1bkF0KCggKSA9PiB7IHN0YXJ0KCk7IH0sICdpbnRlcmFjdGl2ZScpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"call-nothrow.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIGNhbGxOb3Rocm93KAogICAgY2hhaW4gPSAnJwopIHsKICAgIGlmICggdHlwZW9mIGNoYWluICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIGNoYWluID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBwYXJ0cyA9IGNoYWluLnNwbGl0KCcuJyk7CiAgICBsZXQgb3duZXIgPSB3aW5kb3csIHByb3A7CiAgICBmb3IgKDs7KSB7CiAgICAgICAgcHJvcCA9IHBhcnRzLnNoaWZ0KCk7CiAgICAgICAgaWYgKCBwYXJ0cy5sZW5ndGggPT09IDAgKSB7IGJyZWFrOyB9CiAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICBpZiAoIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICB9CiAgICBpZiAoIHByb3AgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IGZuID0gb3duZXJbcHJvcF07CiAgICBpZiAoIHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJyApIHsgcmV0dXJuOyB9CiAgICBvd25lcltwcm9wXSA9IG5ldyBQcm94eShmbiwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbiguLi5hcmdzKSB7CiAgICAgICAgICAgIGxldCByOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgciA9IFJlZmxlY3QuYXBwbHkoLi4uYXJncyk7CiAgICAgICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICB9LAogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"spoof-css.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CgogIChmdW5jdGlvbiBzcG9vZkNTUygKICAgIHNlbGVjdG9yLAogICAgLi4uYXJncwopIHsKICAgIGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIHNlbGVjdG9yID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCB0b0NhbWVsQ2FzZSA9IHMgPT4gcy5yZXBsYWNlKC8tW2Etel0vZywgcyA9PiBzLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpKTsKICAgIGNvbnN0IHByb3BUb1ZhbHVlTWFwID0gbmV3IE1hcCgpOwogICAgZm9yICggbGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkgKz0gMiApIHsKICAgICAgICBpZiAoIHR5cGVvZiBhcmdzW2krMF0gIT09ICdzdHJpbmcnICkgeyBicmVhazsgfQogICAgICAgIGlmICggYXJnc1tpKzBdID09PSAnJyApIHsgYnJlYWs7IH0KICAgICAgICBpZiAoIHR5cGVvZiBhcmdzW2krMV0gIT09ICdzdHJpbmcnICkgeyBicmVhazsgfQogICAgICAgIHByb3BUb1ZhbHVlTWFwLnNldCh0b0NhbWVsQ2FzZShhcmdzW2krMF0pLCBhcmdzW2krMV0pOwogICAgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBjYW5EZWJ1ZyA9IHNjcmlwdGxldEdsb2JhbHMuaGFzKCdjYW5EZWJ1ZycpOwogICAgY29uc3Qgc2hvdWxkRGVidWcgPSBjYW5EZWJ1ZyAmJiBwcm9wVG9WYWx1ZU1hcC5nZXQoJ2RlYnVnJykgfHwgMDsKICAgIGNvbnN0IHNob3VsZExvZyA9IGNhbkRlYnVnICYmIHByb3BUb1ZhbHVlTWFwLmhhcygnbG9nJykgfHwgMDsKICAgIGNvbnN0IHNwb29mU3R5bGUgPSAocHJvcCwgcmVhbCkgPT4gewogICAgICAgIGNvbnN0IG5vcm1hbFByb3AgPSB0b0NhbWVsQ2FzZShwcm9wKTsKICAgICAgICBjb25zdCBzaG91bGRTcG9vZiA9IHByb3BUb1ZhbHVlTWFwLmhhcyhub3JtYWxQcm9wKTsKICAgICAgICBjb25zdCB2YWx1ZSA9IHNob3VsZFNwb29mID8gcHJvcFRvVmFsdWVNYXAuZ2V0KG5vcm1hbFByb3ApIDogcmVhbDsKICAgICAgICBpZiAoIHNob3VsZExvZyA9PT0gMiB8fCBzaG91bGRTcG9vZiAmJiBzaG91bGRMb2cgPT09IDEgKSB7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKHByb3AsIHZhbHVlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgfTsKICAgIHNlbGYuZ2V0Q29tcHV0ZWRTdHlsZSA9IG5ldyBQcm94eShzZWxmLmdldENvbXB1dGVkU3R5bGUsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGlmICggc2hvdWxkRGVidWcgIT09IDAgKSB7IGRlYnVnZ2VyOyB9ICAgIC8vIGpzaGludCBpZ25vcmU6IGxpbmUKICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncyk7CiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gbmV3IFdlYWtTZXQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpOwogICAgICAgICAgICBpZiAoIHRhcmdldEVsZW1lbnRzLmhhcyhhcmdzWzBdKSA9PT0gZmFsc2UgKSB7IHJldHVybiBzdHlsZTsgfQogICAgICAgICAgICBjb25zdCBwcm94aWVkU3R5bGUgPSBuZXcgUHJveHkoc3R5bGUsIHsKICAgICAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdGFyZ2V0W3Byb3BdID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3AgPT09ICdnZXRQcm9wZXJ0eVZhbHVlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24ocHJvcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcG9vZlN0eWxlKHByb3AsIHRhcmdldFtwcm9wXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5iaW5kKHRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wXS5iaW5kKHRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBzcG9vZlN0eWxlKHByb3AsIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBwcm9wVG9WYWx1ZU1hcC5oYXMocHJvcCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByb3BUb1ZhbHVlTWFwLmdldChwcm9wKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gcHJveGllZFN0eWxlOwogICAgICAgIH0sCiAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpIHsKICAgICAgICAgICAgaWYgKCBwcm9wID09PSAndG9TdHJpbmcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC50b1N0cmluZy5iaW5kKHRhcmdldCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpOwogICAgICAgIH0sCiAgICB9KTsKICAgIEVsZW1lbnQucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9IG5ldyBQcm94eShFbGVtZW50LnByb3RvdHlwZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGlmICggc2hvdWxkRGVidWcgIT09IDAgKSB7IGRlYnVnZ2VyOyB9ICAgIC8vIGpzaGludCBpZ25vcmU6IGxpbmUKICAgICAgICAgICAgY29uc3QgcmVjdCA9IFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudHMgPSBuZXcgV2Vha1NldChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7CiAgICAgICAgICAgIGlmICggdGFyZ2V0RWxlbWVudHMuaGFzKHRoaXNBcmcpID09PSBmYWxzZSApIHsgcmV0dXJuIHJlY3Q7IH0KICAgICAgICAgICAgbGV0IHsgaGVpZ2h0LCB3aWR0aCB9ID0gcmVjdDsKICAgICAgICAgICAgaWYgKCBwcm9wVG9WYWx1ZU1hcC5oYXMoJ3dpZHRoJykgKSB7CiAgICAgICAgICAgICAgICB3aWR0aCA9IHBhcnNlRmxvYXQocHJvcFRvVmFsdWVNYXAuZ2V0KCd3aWR0aCcpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHByb3BUb1ZhbHVlTWFwLmhhcygnaGVpZ2h0JykgKSB7CiAgICAgICAgICAgICAgICBoZWlnaHQgPSBwYXJzZUZsb2F0KHByb3BUb1ZhbHVlTWFwLmdldCgnaGVpZ2h0JykpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuZXcgc2VsZi5ET01SZWN0KHJlY3QueCwgcmVjdC55LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICB9LAogICAgICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQudG9TdHJpbmcuYmluZCh0YXJnZXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTsKICAgICAgICB9LAogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"remove-node-text.js","aliases":["rmnt.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHJ1bkF0KGZuLCB3aGVuKSB7CiAgICBjb25zdCBpbnRGcm9tUmVhZHlTdGF0ZSA9IHN0YXRlID0+IHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gewogICAgICAgICAgICAnbG9hZGluZyc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CmZ1bmN0aW9uIHJlcGxhY2VOb2RlVGV4dENvcmUoCiAgICBub2RlTmFtZSA9ICcnLAogICAgcGF0dGVybiA9ICcnLAogICAgcmVwbGFjZW1lbnQgPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcmVOb2RlTmFtZSA9IHNhZmUucGF0dGVyblRvUmVnZXgobm9kZU5hbWUsICdpJyk7CiAgICBjb25zdCByZVBhdHRlcm4gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sICdnbXMnKTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMyk7CiAgICBjb25zdCBzaG91bGRMb2cgPSBzY3JpcHRsZXRHbG9iYWxzLmhhcygnY2FuRGVidWcnKSAmJiBleHRyYUFyZ3MubG9nIHx8IDA7CiAgICBjb25zdCByZUNvbmRpdGlvbiA9IHNhZmUucGF0dGVyblRvUmVnZXgoZXh0cmFBcmdzLmNvbmRpdGlvbiB8fCAnJywgJ2dtcycpOwogICAgY29uc3Qgc3RvcCA9ICh0YWtlUmVjb3JkID0gdHJ1ZSkgPT4gewogICAgICAgIGlmICggdGFrZVJlY29yZCApIHsKICAgICAgICAgICAgaGFuZGxlTXV0YXRpb25zKG9ic2VydmVyLnRha2VSZWNvcmRzKCkpOwogICAgICAgIH0KICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CiAgICAgICAgaWYgKCBzaG91bGRMb2cgIT09IDAgKSB7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGByZXBsYWNlLW5vZGUtdGV4dC1jb3JlLmZuOiBxdWl0dGluZyAiJHtwYXR0ZXJufSIgPT4gIiR7cmVwbGFjZW1lbnR9ImApOwogICAgICAgIH0KICAgIH07CiAgICBsZXQgc2VkQ291bnQgPSBleHRyYUFyZ3Muc2VkQ291bnQgfHwgMDsKICAgIGNvbnN0IGhhbmRsZU5vZGUgPSBub2RlID0+IHsKICAgICAgICBjb25zdCBiZWZvcmUgPSBub2RlLnRleHRDb250ZW50OwogICAgICAgIGlmICggc2FmZS5SZWdFeHBfdGVzdC5jYWxsKHJlUGF0dGVybiwgYmVmb3JlKSA9PT0gZmFsc2UgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgaWYgKCBzYWZlLlJlZ0V4cF90ZXN0LmNhbGwocmVDb25kaXRpb24sIGJlZm9yZSkgPT09IGZhbHNlICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgIGNvbnN0IGFmdGVyID0gcGF0dGVybiAhPT0gJycKICAgICAgICAgICAgPyBiZWZvcmUucmVwbGFjZShyZVBhdHRlcm4sIHJlcGxhY2VtZW50KQogICAgICAgICAgICA6IHJlcGxhY2VtZW50OwogICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSBhZnRlcjsKICAgICAgICBpZiAoIHNob3VsZExvZyAhPT0gMCApIHsKICAgICAgICAgICAgc2FmZS51Ym9Mb2coJ3JlcGxhY2Utbm9kZS10ZXh0LWNvcmUuZm4gYmVmb3JlOlxuJywgYmVmb3JlKTsKICAgICAgICAgICAgc2FmZS51Ym9Mb2coJ3JlcGxhY2Utbm9kZS10ZXh0LWNvcmUuZm4gYWZ0ZXI6XG4nLCBhZnRlcik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzZWRDb3VudCA9PT0gMCB8fCAoc2VkQ291bnQgLT0gMSkgIT09IDA7CiAgICB9OwogICAgY29uc3QgaGFuZGxlTXV0YXRpb25zID0gbXV0YXRpb25zID0+IHsKICAgICAgICBmb3IgKCBjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMgKSB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5vZGUgb2YgbXV0YXRpb24uYWRkZWROb2RlcyApIHsKICAgICAgICAgICAgICAgIGlmICggcmVOb2RlTmFtZS50ZXN0KG5vZGUubm9kZU5hbWUpID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGlmICggaGFuZGxlTm9kZShub2RlKSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIHN0b3AoZmFsc2UpOyByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbnMpOwogICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCApIHsKICAgICAgICBjb25zdCB0cmVlV2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcigKICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCB8IE5vZGVGaWx0ZXIuU0hPV19URVhUCiAgICAgICAgKTsKICAgICAgICBsZXQgY291bnQgPSAwOwogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWVXYWxrZXIubmV4dE5vZGUoKTsKICAgICAgICAgICAgY291bnQgKz0gMTsKICAgICAgICAgICAgaWYgKCBub2RlID09PSBudWxsICkgeyBicmVhazsgfQogICAgICAgICAgICBpZiAoIHJlTm9kZU5hbWUudGVzdChub2RlLm5vZGVOYW1lKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGlmICggaGFuZGxlTm9kZShub2RlKSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgc3RvcCgpOyBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKCBzaG91bGRMb2cgIT09IDAgKSB7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGByZXBsYWNlLW5vZGUtdGV4dC1jb3JlLmZuICR7Y291bnR9IG5vZGVzIHByZXNlbnQgYmVmb3JlIGluc3RhbGxpbmcgbXV0YXRpb24gb2JzZXJ2ZXJgKTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoIGV4dHJhQXJncy5zdGF5ICkgeyByZXR1cm47IH0KICAgIHJ1bkF0KCggKSA9PiB7CiAgICAgICAgY29uc3QgcXVpdEFmdGVyID0gZXh0cmFBcmdzLnF1aXRBZnRlciB8fCAwOwogICAgICAgIGlmICggcXVpdEFmdGVyICE9PSAwICkgewogICAgICAgICAgICBzZXRUaW1lb3V0KCggKSA9PiB7IHN0b3AoKTsgfSwgcXVpdEFmdGVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgfQogICAgfSwgJ2ludGVyYWN0aXZlJyk7Cn0KCiAgKGZ1bmN0aW9uIHJlbW92ZU5vZGVUZXh0KAogICAgbm9kZU5hbWUsCiAgICBjb25kaXRpb24sCiAgICAuLi5leHRyYUFyZ3MKKSB7CiAgICByZXBsYWNlTm9kZVRleHRDb3JlKG5vZGVOYW1lLCAnJywgJycsICdjb25kaXRpb24nLCBjb25kaXRpb24gfHwgJycsIC4uLmV4dHJhQXJncyk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"set-cookie.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2V0Q29va2llSGVscGVyKAogICAgbmFtZSA9ICcnLAogICAgdmFsdWUgPSAnJywKICAgIGV4cGlyZXMgPSAnJywKICAgIHBhdGggPSAnJywKICAgIG9wdGlvbnMgPSB7fSwKKSB7CiAgICBjb25zdCBjb29raWVFeGlzdHMgPSAobmFtZSwgdmFsdWUpID0+IHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuY29va2llLnNwbGl0KC9ccyo7XHMqLykuc29tZShzID0+IHsKICAgICAgICAgICAgY29uc3QgcG9zID0gcy5pbmRleE9mKCc9Jyk7CiAgICAgICAgICAgIGlmICggcG9zID09PSAtMSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgICAgIGlmICggcy5zbGljZSgwLCBwb3MpICE9PSBuYW1lICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgaWYgKCBzLnNsaWNlKHBvcysxKSAhPT0gdmFsdWUgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9KTsKICAgIH07CgogICAgaWYgKCBvcHRpb25zLnJlbG9hZCAmJiBjb29raWVFeGlzdHMobmFtZSwgdmFsdWUpICkgeyByZXR1cm47IH0KCiAgICBjb25zdCBjb29raWVQYXJ0cyA9IFsgbmFtZSwgJz0nLCB2YWx1ZSBdOwogICAgaWYgKCBleHBpcmVzICE9PSAnJyApIHsKICAgICAgICBjb29raWVQYXJ0cy5wdXNoKCc7IGV4cGlyZXM9JywgZXhwaXJlcyk7CiAgICB9CgogICAgaWYgKCBwYXRoID09PSAnJyApIHsgcGF0aCA9ICcvJzsgfQogICAgZWxzZSBpZiAoIHBhdGggPT09ICdub25lJyApIHsgcGF0aCA9ICcnOyB9CiAgICBpZiAoIHBhdGggIT09ICcnICYmIHBhdGggIT09ICcvJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIHBhdGggPT09ICcvJyApIHsKICAgICAgICBjb29raWVQYXJ0cy5wdXNoKCc7IHBhdGg9LycpOwogICAgfQogICAgZG9jdW1lbnQuY29va2llID0gY29va2llUGFydHMuam9pbignJyk7CgogICAgaWYgKCBvcHRpb25zLnJlbG9hZCAmJiBjb29raWVFeGlzdHMobmFtZSwgdmFsdWUpICkgewogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgIH0KfQpmdW5jdGlvbiBzYWZlU2VsZigpIHsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5oYXMoJ3NhZmVTZWxmJykgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuZ2V0KCdzYWZlU2VsZicpOwogICAgfQogICAgY29uc3Qgc2VsZiA9IGdsb2JhbFRoaXM7CiAgICBjb25zdCBzYWZlID0gewogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ09iamVjdF9kZWZpbmVQcm9wZXJ0eSc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0eS5iaW5kKE9iamVjdCksCiAgICAgICAgJ1JlZ0V4cCc6IHNlbGYuUmVnRXhwLAogICAgICAgICdSZWdFeHBfdGVzdCc6IHNlbGYuUmVnRXhwLnByb3RvdHlwZS50ZXN0LAogICAgICAgICdSZWdFeHBfZXhlYyc6IHNlbGYuUmVnRXhwLnByb3RvdHlwZS5leGVjLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdqc29uUGFyc2UnOiBzZWxmLkpTT04ucGFyc2UuYmluZChzZWxmLkpTT04pLAogICAgICAgICdqc29uU3RyaW5naWZ5Jzogc2VsZi5KU09OLnN0cmluZ2lmeS5iaW5kKHNlbGYuSlNPTiksCiAgICAgICAgJ2xvZyc6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCiAgICAgICAgdWJvTG9nKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYCR7YXJnc1swXX1gID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHRoaXMubG9nKCdbdUJPXScsIC4uLmFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaEFsbDogdHJ1ZSB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IGV4cGVjdCA9IChvcHRpb25zLmNhbk5lZ2F0ZSA9PT0gdHJ1ZSAmJiBwYXR0ZXJuLnN0YXJ0c1dpdGgoJyEnKSA9PT0gZmFsc2UpOwogICAgICAgICAgICBpZiAoIGV4cGVjdCA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5zbGljZSgxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCAhPT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcGF0dGVybiwKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0gfHwgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgcGF0dGVybiwKICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAocGF0dGVybi5yZXBsYWNlKAogICAgICAgICAgICAgICAgICAgIC9bLiorP14ke30oKXxbXF1cXF0vZywgJ1xcJCYnKSwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICB9OwogICAgICAgIH0sCiAgICAgICAgdGVzdFBhdHRlcm4oZGV0YWlscywgaGF5c3RhY2spIHsKICAgICAgICAgICAgaWYgKCBkZXRhaWxzLm1hdGNoQWxsICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5SZWdFeHBfdGVzdC5jYWxsKGRldGFpbHMucmUsIGhheXN0YWNrKSA9PT0gZGV0YWlscy5leHBlY3Q7CiAgICAgICAgfSwKICAgICAgICBwYXR0ZXJuVG9SZWdleChwYXR0ZXJuLCBmbGFncyA9IHVuZGVmaW5lZCkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgeyByZXR1cm4gL14vOyB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybi5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywgJ1xcJCYnKSwgZmxhZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChtYXRjaFsxXSwgbWF0Y2hbMl0gfHwgZmxhZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC9eLzsKICAgICAgICB9LAogICAgICAgIGdldEV4dHJhQXJncyhhcmdzLCBvZmZzZXQgPSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhcmdzLnNsaWNlKG9mZnNldCkucmVkdWNlKChvdXQsIHYsIGksIGEpID0+IHsKICAgICAgICAgICAgICAgIGlmICggKGkgJiAxKSA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGFbaSsxXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IC9eXGQrJC8udGVzdChyYXdWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChyYXdWYWx1ZSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIDogcmF3VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goWyBhW2ldLCB2YWx1ZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTsKICAgICAgICB9LAogICAgfTsKICAgIHNjcmlwdGxldEdsb2JhbHMuc2V0KCdzYWZlU2VsZicsIHNhZmUpOwogICAgcmV0dXJuIHNhZmU7Cn0KCiAgKGZ1bmN0aW9uIHNldENvb2tpZSgKICAgIG5hbWUgPSAnJywKICAgIHZhbHVlID0gJycsCiAgICBwYXRoID0gJycKKSB7CiAgICBpZiAoIG5hbWUgPT09ICcnICkgeyByZXR1cm47IH0KICAgIG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7CgogICAgY29uc3QgdmFsaWRWYWx1ZXMgPSBbCiAgICAgICAgJ3RydWUnLCAnZmFsc2UnLAogICAgICAgICd5ZXMnLCAneScsICdubycsICduJywKICAgICAgICAnb2snLAogICAgICAgICdhY2NlcHQnLCAncmVqZWN0JywKICAgICAgICAnYWxsb3cnLCAnZGVueScsCiAgICBdOwogICAgaWYgKCB2YWxpZFZhbHVlcy5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgaWYgKCAvXlxkKyQvLnRlc3QodmFsdWUpID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgICAgaWYgKCBuID4gMTUgKSB7IHJldHVybjsgfQogICAgfQogICAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpOwoKICAgIHNldENvb2tpZUhlbHBlcigKICAgICAgICBuYW1lLAogICAgICAgIHZhbHVlLAogICAgICAgICcnLAogICAgICAgIHBhdGgsCiAgICAgICAgc2FmZVNlbGYoKS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKQogICAgKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"set-local-storage-item.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2V0TG9jYWxTdG9yYWdlSXRlbUNvcmUoCiAgICB3aGljaCA9ICdsb2NhbCcsCiAgICB0cnVzdGVkID0gZmFsc2UsCiAgICBrZXkgPSAnJywKICAgIHZhbHVlID0gJycsCikgewogICAgaWYgKCBrZXkgPT09ICcnICkgeyByZXR1cm47IH0KCiAgICBjb25zdCB0cnVzdGVkVmFsdWVzID0gWwogICAgICAgICcnLAogICAgICAgICd1bmRlZmluZWQnLCAnbnVsbCcsCiAgICAgICAgJ2ZhbHNlJywgJ3RydWUnLAogICAgICAgICd5ZXMnLCAnbm8nLAogICAgICAgICd7fScsICdbXScsICciIicsCiAgICAgICAgJyRyZW1vdmUkJywKICAgIF07CgogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIGlmICggdmFsdWUgPT09ICckbm93JCcgKSB7CiAgICAgICAgICAgIHZhbHVlID0gRGF0ZS5ub3coKTsKICAgICAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gJyRjdXJyZW50RGF0ZSQnICkgewogICAgICAgICAgICB2YWx1ZSA9IGAke0RhdGUoKX1gOwogICAgICAgIH0gZWxzZSBpZiAoIHZhbHVlID09PSAnJGN1cnJlbnRJU09EYXRlJCcgKSB7CiAgICAgICAgICAgIHZhbHVlID0gKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoIHRydXN0ZWRWYWx1ZXMuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSkgPT09IGZhbHNlICkgewogICAgICAgICAgICBpZiAoIC9eXGQrJC8udGVzdCh2YWx1ZSkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApOwogICAgICAgICAgICBpZiAoIHZhbHVlID4gMzI3NjcgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgIH0KCiAgICB0cnkgewogICAgICAgIGNvbnN0IHN0b3JhZ2UgPSBgJHt3aGljaH1TdG9yYWdlYDsKICAgICAgICBpZiAoIHZhbHVlID09PSAnJHJlbW92ZSQnICkgewogICAgICAgICAgICBzZWxmW3N0b3JhZ2VdLnJlbW92ZUl0ZW0oa2V5KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxmW3N0b3JhZ2VdLnNldEl0ZW0oa2V5LCBgJHt2YWx1ZX1gKTsKICAgICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICB9Cn0KCiAgKGZ1bmN0aW9uIHNldExvY2FsU3RvcmFnZUl0ZW0oa2V5ID0gJycsIHZhbHVlID0gJycpIHsKICAgIHNldExvY2FsU3RvcmFnZUl0ZW1Db3JlKCdsb2NhbCcsIGZhbHNlLCBrZXksIHZhbHVlKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"set-session-storage-item.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2V0TG9jYWxTdG9yYWdlSXRlbUNvcmUoCiAgICB3aGljaCA9ICdsb2NhbCcsCiAgICB0cnVzdGVkID0gZmFsc2UsCiAgICBrZXkgPSAnJywKICAgIHZhbHVlID0gJycsCikgewogICAgaWYgKCBrZXkgPT09ICcnICkgeyByZXR1cm47IH0KCiAgICBjb25zdCB0cnVzdGVkVmFsdWVzID0gWwogICAgICAgICcnLAogICAgICAgICd1bmRlZmluZWQnLCAnbnVsbCcsCiAgICAgICAgJ2ZhbHNlJywgJ3RydWUnLAogICAgICAgICd5ZXMnLCAnbm8nLAogICAgICAgICd7fScsICdbXScsICciIicsCiAgICAgICAgJyRyZW1vdmUkJywKICAgIF07CgogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIGlmICggdmFsdWUgPT09ICckbm93JCcgKSB7CiAgICAgICAgICAgIHZhbHVlID0gRGF0ZS5ub3coKTsKICAgICAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gJyRjdXJyZW50RGF0ZSQnICkgewogICAgICAgICAgICB2YWx1ZSA9IGAke0RhdGUoKX1gOwogICAgICAgIH0gZWxzZSBpZiAoIHZhbHVlID09PSAnJGN1cnJlbnRJU09EYXRlJCcgKSB7CiAgICAgICAgICAgIHZhbHVlID0gKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoIHRydXN0ZWRWYWx1ZXMuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSkgPT09IGZhbHNlICkgewogICAgICAgICAgICBpZiAoIC9eXGQrJC8udGVzdCh2YWx1ZSkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApOwogICAgICAgICAgICBpZiAoIHZhbHVlID4gMzI3NjcgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgIH0KCiAgICB0cnkgewogICAgICAgIGNvbnN0IHN0b3JhZ2UgPSBgJHt3aGljaH1TdG9yYWdlYDsKICAgICAgICBpZiAoIHZhbHVlID09PSAnJHJlbW92ZSQnICkgewogICAgICAgICAgICBzZWxmW3N0b3JhZ2VdLnJlbW92ZUl0ZW0oa2V5KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxmW3N0b3JhZ2VdLnNldEl0ZW0oa2V5LCBgJHt2YWx1ZX1gKTsKICAgICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICB9Cn0KCiAgKGZ1bmN0aW9uIHNldFNlc3Npb25TdG9yYWdlSXRlbShrZXkgPSAnJywgdmFsdWUgPSAnJykgewogICAgc2V0TG9jYWxTdG9yYWdlSXRlbUNvcmUoJ3Nlc3Npb24nLCBmYWxzZSwga2V5LCB2YWx1ZSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"set-attr.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbJ3t7MX19JywgJ3t7Mn19JywgJ3t7M319JywgJ3t7NH19JywgJ3t7NX19JywgJ3t7Nn19JywgJ3t7N319JywgJ3t7OH19JywgJ3t7OX19J107CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuaGFzKCdzYWZlU2VsZicpICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLmdldCgnc2FmZVNlbGYnKTsKICAgIH0KICAgIGNvbnN0IHNlbGYgPSBnbG9iYWxUaGlzOwogICAgY29uc3Qgc2FmZSA9IHsKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnanNvblBhcnNlJzogc2VsZi5KU09OLnBhcnNlLmJpbmQoc2VsZi5KU09OKSwKICAgICAgICAnanNvblN0cmluZ2lmeSc6IHNlbGYuSlNPTi5zdHJpbmdpZnkuYmluZChzZWxmLkpTT04pLAogICAgICAgICdsb2cnOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggYXJncy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGAke2FyZ3NbMF19YCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aGlzLmxvZygnW3VCT10nLCAuLi5hcmdzKTsKICAgICAgICB9LAogICAgICAgIGluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hBbGw6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgPT09IHRydWUgJiYgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCgKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdIHx8IG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4sCiAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgIH0sCiAgICAgICAgcGF0dGVyblRvUmVnZXgocGF0dGVybiwgZmxhZ3MgPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIC9eLzsgfQogICAgICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dpbXN1XSopJC8uZXhlYyhwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyksIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAvXi87CiAgICAgICAgfSwKICAgICAgICBnZXRFeHRyYUFyZ3MoYXJncywgb2Zmc2V0ID0gMCkgewogICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXJncy5zbGljZShvZmZzZXQpLnJlZHVjZSgob3V0LCB2LCBpLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIChpICYgMSkgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBhW2krMV07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAvXlxkKyQvLnRlc3QocmF3VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQocmF3VmFsdWUsIDEwKQogICAgICAgICAgICAgICAgICAgICAgICA6IHJhd1ZhbHVlOwogICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKFsgYVtpXSwgdmFsdWUgXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNldCgnc2FmZVNlbGYnLCBzYWZlKTsKICAgIHJldHVybiBzYWZlOwp9CmZ1bmN0aW9uIHJ1bkF0KGZuLCB3aGVuKSB7CiAgICBjb25zdCBpbnRGcm9tUmVhZHlTdGF0ZSA9IHN0YXRlID0+IHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gewogICAgICAgICAgICAnbG9hZGluZyc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiBzZXRBdHRyKAogICAgc2VsZWN0b3IgPSAnJywKICAgIGF0dHIgPSAnJywKICAgIHZhbHVlID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgaWYgKCBzZWxlY3RvciA9PT0gJycgKSB7IHJldHVybjsgfQoKICAgIGNvbnN0IHZhbGlkVmFsdWVzID0gWyAnJywgJ2ZhbHNlJywgJ3RydWUnIF07CiAgICBsZXQgY29weUZyb20gPSAnJzsKCiAgICBpZiAoIHZhbGlkVmFsdWVzLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpID09PSBmYWxzZSApIHsKICAgICAgICBpZiAoIC9eXGQrJC8udGVzdCh2YWx1ZSkgKSB7CiAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludCh2YWx1ZSwgMTApOwogICAgICAgICAgICBpZiAoIG4gPj0gMzI3NjggKSB7IHJldHVybjsgfQogICAgICAgICAgICB2YWx1ZSA9IGAke259YDsKICAgICAgICB9IGVsc2UgaWYgKCAvXlxbLitcXSQvLnRlc3QodmFsdWUpICkgewogICAgICAgICAgICBjb3B5RnJvbSA9IHZhbHVlLnNsaWNlKDEsIC0xKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGNvbnN0IGV4dHJhY3RWYWx1ZSA9IGVsZW0gPT4gewogICAgICAgIGlmICggY29weUZyb20gIT09ICcnICkgewogICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoY29weUZyb20pIHx8ICcnOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdmFsdWU7CiAgICB9OwoKICAgIGNvbnN0IGFwcGx5U2V0QXR0ciA9ICggKSA9PiB7CiAgICAgICAgY29uc3QgZWxlbXMgPSBbXTsKICAgICAgICB0cnkgewogICAgICAgICAgICBlbGVtcy5wdXNoKC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBmb3IgKCBjb25zdCBlbGVtIG9mIGVsZW1zICkgewogICAgICAgICAgICBjb25zdCBiZWZvcmUgPSBlbGVtLmdldEF0dHJpYnV0ZShhdHRyKTsKICAgICAgICAgICAgY29uc3QgYWZ0ZXIgPSBleHRyYWN0VmFsdWUoZWxlbSk7CiAgICAgICAgICAgIGlmICggYWZ0ZXIgPT09IGJlZm9yZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoYXR0ciwgYWZ0ZXIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CiAgICBsZXQgb2JzZXJ2ZXIsIHRpbWVyOwogICAgY29uc3Qgb25Eb21DaGFuZ2VkID0gbXV0YXRpb25zID0+IHsKICAgICAgICBpZiAoIHRpbWVyICE9PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgIGxldCBzaG91bGRXb3JrID0gZmFsc2U7CiAgICAgICAgZm9yICggY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zICkgewogICAgICAgICAgICBpZiAoIG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoID09PSAwICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICBmb3IgKCBjb25zdCBub2RlIG9mIG11dGF0aW9uLmFkZGVkTm9kZXMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG5vZGUubm9kZVR5cGUgIT09IDEgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBzaG91bGRXb3JrID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggc2hvdWxkV29yayApIHsgYnJlYWs7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCBzaG91bGRXb3JrID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgdGltZXIgPSBzZWxmLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoICkgPT4gewogICAgICAgICAgICB0aW1lciA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgYXBwbHlTZXRBdHRyKCk7CiAgICAgICAgfSk7CiAgICB9OwogICAgY29uc3Qgc3RhcnQgPSAoICkgPT4gewogICAgICAgIGlmICggYXBwbHlTZXRBdHRyKCkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9uRG9tQ2hhbmdlZCk7CiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7CiAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsCiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSwKICAgICAgICB9KTsKICAgIH07CiAgICBydW5BdCgoICkgPT4geyBzdGFydCgpOyB9LCAnaWRsZScpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="}]