@tricoteuses/assemblee 1.5.7 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/lib/api.js +1 -1
- package/lib/api.mjs +1 -1
- package/lib/bugs/acteur-00010/plugin.test.js +1 -1
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +1 -1
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +1 -1
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +1 -1
- package/lib/bugs/agenda-00002.mjs +1 -1
- package/lib/bugs/agenda-00008/plugin.test.js +1 -1
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +1 -1
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +1 -1
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +1 -1
- package/lib/bugs/agenda-00011.mjs +1 -1
- package/lib/bugs.js +1 -1
- package/lib/bugs.mjs +1 -1
- package/lib/cleaners/actes_legislatifs.d.ts +1 -0
- package/lib/cleaners/actes_legislatifs.js +33 -15
- package/lib/cleaners/actes_legislatifs.mjs +32 -15
- package/lib/cleaners/acteurs.js +1 -1
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +1 -1
- package/lib/cleaners/amendements.mjs +1 -1
- package/lib/cleaners/debats.js +1 -1
- package/lib/cleaners/debats.mjs +1 -1
- package/lib/cleaners/documents.js +1 -1
- package/lib/cleaners/documents.mjs +1 -1
- package/lib/cleaners/dossiers_legislatifs.js +2 -27
- package/lib/cleaners/dossiers_legislatifs.mjs +3 -28
- package/lib/cleaners/index.js +1 -1
- package/lib/cleaners/index.mjs +1 -1
- package/lib/cleaners/organes.js +1 -1
- package/lib/cleaners/organes.mjs +1 -1
- package/lib/cleaners/questions.js +1 -1
- package/lib/cleaners/questions.mjs +1 -1
- package/lib/cleaners/reunions.js +1 -1
- package/lib/cleaners/reunions.mjs +1 -1
- package/lib/cleaners/scrutins.js +1 -1
- package/lib/cleaners/scrutins.mjs +1 -1
- package/lib/cleaners/xml.js +1 -1
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.js +1 -1
- package/lib/datasets.mjs +1 -1
- package/lib/dates.js +1 -1
- package/lib/dates.mjs +1 -1
- package/lib/dossiers_legislatifs.js +1 -1
- package/lib/dossiers_legislatifs.mjs +1 -1
- package/lib/file_systems.js +1 -1
- package/lib/file_systems.mjs +1 -1
- package/lib/git.js +1 -1
- package/lib/git.mjs +1 -1
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +1 -1
- package/lib/inserters.mjs +1 -1
- package/lib/loaders.d.ts +18 -9
- package/lib/loaders.js +318 -253
- package/lib/loaders.mjs +64 -10
- package/lib/organes.js +1 -1
- package/lib/organes.mjs +1 -1
- package/lib/parsers/documents.js +1 -1
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/index.js +1 -1
- package/lib/parsers/index.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +1 -1
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.js +1 -1
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.js +1 -1
- package/lib/raw_types/agendas.mjs +1 -1
- package/lib/raw_types/amendements.js +1 -1
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.js +1 -1
- package/lib/raw_types/debats.mjs +1 -1
- package/lib/raw_types/dossiers_legislatifs.d.ts +17 -9
- package/lib/raw_types/dossiers_legislatifs.js +37 -16
- package/lib/raw_types/dossiers_legislatifs.mjs +37 -14
- package/lib/raw_types/questions.js +1 -1
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +1 -1
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +1 -1
- package/lib/scripts/bugs_helper.mjs +1 -1
- package/lib/scripts/clean_reorganized_data.js +2 -2
- package/lib/scripts/clean_reorganized_data.mjs +2 -2
- package/lib/scripts/diff_amendements.js +1 -1
- package/lib/scripts/diff_amendements.mjs +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +1 -1
- package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
- package/lib/scripts/get_today_reunions.js +1 -1
- package/lib/scripts/get_today_reunions.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +1 -1
- package/lib/scripts/merge_scrutins.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +1 -1
- package/lib/scripts/parse_textes_lois.mjs +1 -1
- package/lib/scripts/raw_types_from_amendements.js +1 -1
- package/lib/scripts/raw_types_from_amendements.mjs +1 -1
- package/lib/scripts/reorganize_data.js +68 -61
- package/lib/scripts/reorganize_data.mjs +68 -61
- package/lib/scripts/retrieve_deputes_photos.js +1 -1
- package/lib/scripts/retrieve_deputes_photos.mjs +1 -1
- package/lib/scripts/retrieve_documents.js +1 -1
- package/lib/scripts/retrieve_documents.mjs +1 -1
- package/lib/scripts/retrieve_open_data.js +1 -1
- package/lib/scripts/retrieve_open_data.mjs +1 -1
- package/lib/scripts/retrieve_pending_amendments.js +1 -1
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
- package/lib/scripts/retrieve_senateurs_photos.js +1 -1
- package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
- package/lib/scripts/retrieve_textes_lois.js +1 -1
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/test_load.js +1 -1
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +1 -1
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/scripts/validate_json.js +1 -1
- package/lib/scripts/validate_json.mjs +1 -1
- package/lib/shared_types/codes_actes.d.ts +4 -0
- package/lib/shared_types/codes_actes.js +5 -1
- package/lib/shared_types/codes_actes.mjs +5 -1
- package/lib/strings.js +1 -1
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +1 -1
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.js +1 -1
- package/lib/types/agendas.mjs +1 -1
- package/lib/types/amendements.js +1 -1
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.js +1 -1
- package/lib/types/debats.mjs +1 -1
- package/lib/types/dossiers_legislatifs.d.ts +11 -0
- package/lib/types/dossiers_legislatifs.js +30 -3
- package/lib/types/dossiers_legislatifs.mjs +29 -2
- package/lib/types/legislatures.js +1 -1
- package/lib/types/legislatures.mjs +1 -1
- package/lib/types/questions.js +1 -1
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +1 -1
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +1 -1
- package/lib/urls.mjs +1 -1
- package/package.json +4 -3
|
@@ -248,4 +248,4 @@ if (process.argv[1].endsWith("bugs_helper.ts")) main(process.argv).then(exitCode
|
|
|
248
248
|
console.error(error);
|
|
249
249
|
process.exit(1);
|
|
250
250
|
});
|
|
251
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImNvbW1hbmRMaW5lQXJncyIsImNvbW1hbmRMaW5lVXNhZ2UiLCJsb2FkIiwiZ2V0RmlsZXMiLCJHZXRGaWxlTm90Rm91bmRFcnJvciIsIlNjaGVtYUJ1Z3MiLCJnaXQiLCJ2YWxpZERhdGFzZXQiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZGlmZlVwc3RyZWFtIiwibWFzdGVyVXJsIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdE9wdGlvbiIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsInNlY3Rpb25zIiwiaGVhZGVyIiwiY29udGVudCIsIm9wdGlvbkxpc3QiLCJvcHRpb25zIiwiZGF0YXNldCIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJzY2hlbWEiLCJpbmNsdWRlcyIsImNvbW1pdCIsImV4aXN0c1N5bmMiLCJkZWJ1ZyIsInZlcmJvc2UiLCJ1c2FnZSIsIndhcm4iLCJCdWdzSGVscGVyIiwiY29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydHkiLCJidWdzIiwiY2hlY2siLCJhbmFseXNpcyIsInByZUNoZWNrIiwibG9nIiwiZGF0YSIsImZpbGUiLCJwb3N0Q2hlY2siLCJzaG93Iiwib3V0cHV0Iiwic3RvcmUiLCJmaWxlbmFtZSIsIk9iamVjdCIsImtleXMiLCJidWciLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJqb2luIiwibmFtZTJyZXBvcnRzIiwicmVwb3J0cyIsIm4iLCJzcGxpdCIsImxpbmVzIiwiTnVtYmVyIiwic3RhdHVzMmxpbmVzIiwicmVwb3J0Iiwic3RhdHVzIiwibCIsInB1c2giLCJpbmZvIiwibGFiZWwiLCJjb25jYXQiLCJ3cml0ZUZpbGVTeW5jIiwiZW5jb2RpbmciLCJmaXgiLCJwcmVGaXgiLCJtYWluIiwiY2hlY2tvdXRGaXgiLCJjIiwidiIsInJ1biIsInRlc3QiLCJtZXJnZUZpeCIsImRpcmVjdG9yeVNjaGVtYSIsImQiLCJoZWxwZXIiLCJlIiwicHJvY2VzcyIsImVuZHNXaXRoIiwidGhlbiIsImV4aXRDb2RlIiwiZXhpdCIsImNhdGNoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvYnVnc19oZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzLCBHZXRGaWxlTm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgU2NoZW1hQnVncyB9IGZyb20gXCIuLi8uLi9zcmMvYnVnc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uLy4uL3NyYy9naXRcIlxuaW1wb3J0IHtcbiAgdmFsaWREYXRhc2V0LFxuICBnZXREYXRhc2V0cyxcbiAgZ2V0U2NoZW1hcyxcbiAgZGF0YXNldERpcmVjdG9yeVNjaGVtYSxcbiAgZGlmZlVwc3RyZWFtLFxuICBtYXN0ZXJVcmwsXG59IGZyb20gXCIuLi8uLi9zcmMvZGF0YXNldHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBkYXRhc2V0XCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIEhUTUwgY29tcHRlcyByZW5kdXMgZGUgc2VhbmNlXCIsXG4gICAgICBuYW1lOiBcImNyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IHRvIGNvbW1pdFwiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIm9ubHkgY29uc2lkZXIgdGhpcyBidWdcIixcbiAgICAgIG5hbWU6IFwiYnVnXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBjaGVjayBvdXRwdXRzIHdpbGwgYmUgc3RvcmVkXCIsXG4gICAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiZGlyZWN0b3J5IGluIHdoaWNoIGJ1Z3MgYXJlIGZvdW5kIChkZWZhdWx0IC4pXCIsXG4gICAgICBuYW1lOiBcImJ1Z3MtZGlyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImRlYnVnIGluZm9ybWF0aW9uXCIsXG4gICAgICBuYW1lOiBcImRlYnVnXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiY2hlY2tcIixcbiAgICAgIG5hbWU6IFwiY2hlY2tcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJmaXhcIixcbiAgICAgIG5hbWU6IFwiZml4XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkNyb3NzIGNoZWNrIGRhdGEgY29uc2lzdGVuY3kgYW5kIGZpeCBwcm9ibGVtc1wiLFxuICAgICAgY29udGVudDogXCJcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhvcHRpb25zLmNvbW1pdCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7b3B0aW9ucy5jb21taXR9IGRvZXMgbm90IGV4aXN0YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5kZWJ1Zykgb3B0aW9ucy52ZXJib3NlID0gdHJ1ZVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmV4cG9ydCBjbGFzcyBCdWdzSGVscGVyIHtcbiAgb3B0aW9uczogYW55XG4gIGJ1Z3M6IGFueVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IGFueSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICB0aGlzLmJ1Z3MgPSBuZXcgU2NoZW1hQnVncyh0aGlzLm9wdGlvbnMpXG4gIH1cblxuICBhc3luYyBjaGVjaygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGFuYWx5c2lzOiBhbnkgPSB7fVxuICAgIGF3YWl0IHRoaXMuYnVncy5wcmVDaGVjaygpXG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgY2hlY2sgJHt0aGlzLm9wdGlvbnMuZGF0YX1gKVxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhbdGhpcy5vcHRpb25zLmRhdGFdKSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGxvYWQoZmlsZSlcbiAgICAgIGFuYWx5c2lzW2ZpbGVdID0gYXdhaXQgdGhpcy5idWdzLmNoZWNrKGNvbnRlbnQsIGZpbGUpXG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYnVncy5wb3N0Q2hlY2soYW5hbHlzaXMpXG4gICAgYXdhaXQgdGhpcy5zaG93KGFuYWx5c2lzKVxuICAgIGlmICh0aGlzLm9wdGlvbnMub3V0cHV0KSBhd2FpdCB0aGlzLnN0b3JlKGFuYWx5c2lzKVxuICAgIHJldHVybiAwXG4gIH1cblxuICBhc3luYyBzaG93KGFuYWx5c2lzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgYnVnID0gYW5hbHlzaXNbZmlsZW5hbWVdXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYnVnKSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBidWdbbmFtZV1cbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgbGV0IGxvZ1xuICAgICAgICAgIGlmIChyZXN1bHRbXCJzdGF0dXNcIl0gPT0gXCJuZWVkcy1maXhpbmdcIikge1xuICAgICAgICAgICAgbG9nID0gY29uc29sZS5lcnJvclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIGxvZyA9IGNvbnNvbGUubG9nXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsb2cgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2coYCR7bmFtZX0gZmluZHMgJHtmaWxlbmFtZX0gJHtyZXN1bHRbXCJzdGF0dXNcIl19YClcbiAgICAgICAgICAgIGxvZyhyZXN1bHRbXCJpbmZvXCJdLmpvaW4oXCJcXG5cIikpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RvcmUoYW5hbHlzaXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5hbWUycmVwb3J0czogYW55ID0ge31cbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgYnVnID0gYW5hbHlzaXNbZmlsZW5hbWVdXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYnVnKSkge1xuICAgICAgICBpZiAoIShuYW1lIGluIG5hbWUycmVwb3J0cykpIG5hbWUycmVwb3J0c1tuYW1lXSA9IHt9XG4gICAgICAgIG5hbWUycmVwb3J0c1tuYW1lXVtmaWxlbmFtZV0gPSBidWdbbmFtZV1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKG5hbWUycmVwb3J0cykpIHtcbiAgICAgIGNvbnN0IHJlcG9ydHMgPSBuYW1lMnJlcG9ydHNbbmFtZV1cbiAgICAgIGNvbnN0IG4gPSBuYW1lLnNwbGl0KFwiLVwiKVsxXVxuICAgICAgbGV0IGxpbmVzOiBhbnkgPSBbXG4gICAgICAgIGAjIyBCdWcgWyR7bmFtZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS1xYS9pc3N1ZXMvJHtOdW1iZXIoXG4gICAgICAgICAgbixcbiAgICAgICAgKX0pYCxcbiAgICAgICAgYFRoaXMgcmVwb3J0IHdhcyBjcmVhdGVkIGJ5IHRoZSAqKmNoZWNrKiogZnVuY3Rpb24gb2YgWyR7bmFtZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS8tL2Jsb2IvbWFzdGVyL3NyYy9idWdzLyR7bmFtZX0udHMpLmAsXG4gICAgICBdXG4gICAgICBjb25zdCBzdGF0dXMybGluZXM6IGFueSA9IHtcbiAgICAgICAgXCJuZWVkcy1maXhpbmdcIjogW10sXG4gICAgICAgIFwid2lsbC1iZS1maXhlZFwiOiBbXSxcbiAgICAgICAgXCJhbHJlYWR5LWZpeGVkXCI6IFtdLFxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBPYmplY3Qua2V5cyhyZXBvcnRzKSkge1xuICAgICAgICBjb25zdCByZXBvcnQgPSByZXBvcnRzW2ZpbGVuYW1lXVxuICAgICAgICBpZiAocmVwb3J0ID09IG51bGwgfHwgcmVwb3J0W1wic3RhdHVzXCJdID09IFwib2tcIikgY29udGludWVcbiAgICAgICAgaWYgKCEocmVwb3J0W1wic3RhdHVzXCJdIGluIHN0YXR1czJsaW5lcykpXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgJHtmaWxlbmFtZX0gc3RhdHVzICR7cmVwb3J0W1wic3RhdHVzXCJdfSB1bmtub3duYClcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVwb3J0W1wic3RhdHVzXCJdXG4gICAgICAgIGxldCBsID0gc3RhdHVzMmxpbmVzW3N0YXR1c11cbiAgICAgICAgaWYgKHN0YXR1cyA9PSBcIndpbGwtYmUtZml4ZWRcIikgbC5wdXNoKGAqICR7ZGlmZlVwc3RyZWFtKGZpbGVuYW1lKX1gKVxuICAgICAgICBlbHNlIGwucHVzaChgKiAke21hc3RlclVybChmaWxlbmFtZSl9YClcbiAgICAgICAgZm9yIChjb25zdCBpbmZvIG9mIHJlcG9ydFtcImluZm9cIl0pIGwucHVzaChgICAqICR7aW5mb31gKVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBbc3RhdHVzLCBsYWJlbF0gb2YgW1xuICAgICAgICBbXCJuZWVkcy1maXhpbmdcIiwgXCJUaGUgZm9sbG93aW5nIGZpbGVzIG11c3QgYmUgZml4ZWRcIl0sXG4gICAgICAgIFtcImFscmVhZHktZml4ZWRcIiwgXCJUaGUgZm9sbG93aW5nIGZpbGVzIG5vIGxvbmdlciBuZWVkIGEgZml4XCJdLFxuICAgICAgICBbXCJ3aWxsLWJlLWZpeGVkXCIsIFwiVGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGZpeGVkXCJdLFxuICAgICAgXSkge1xuICAgICAgICBsaW5lcy5wdXNoKGAjIyMgJHtsYWJlbH1gKVxuICAgICAgICBsaW5lcyA9IGxpbmVzLmNvbmNhdChzdGF0dXMybGluZXNbc3RhdHVzXSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IG91dHB1dCA9IGAke3RoaXMub3B0aW9ucy5vdXRwdXR9LyR7bmFtZX0ubWRgXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dCwgbGluZXMuam9pbihcIlxcblwiKSwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpeCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGF3YWl0IHRoaXMuYnVncy5wcmVGaXgoKVxuICAgIGF3YWl0IHRoaXMuYnVncy5maXgoZ2V0RmlsZXMoW3RoaXMub3B0aW9ucy5kYXRhXSkpXG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIGFzeW5jIG1haW4oKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNoZWNrKSByZXR1cm4gdGhpcy5jaGVjaygpXG4gICAgZWxzZSByZXR1cm4gdGhpcy5maXgoKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja291dEZpeChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYyA9IG9wdGlvbnMuY29tbWl0XG4gIGlmIChjID09IHVuZGVmaW5lZCkgcmV0dXJuXG4gIGNvbnN0IHYgPSBvcHRpb25zLnZlcmJvc2VcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgbWFzdGVyXCIsIHYpXG4gIGlmICgvdG1wLy50ZXN0KGdpdC5ydW4oYywgXCJicmFuY2hcIiwgdikpKSBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCAtYiB0bXAgbWFzdGVyXCIsIHYpXG4gIGlmICgvTWVyZ2UgYnVnZml4ZXMvLnRlc3QoZ2l0LnJ1bihjLCBcImxvZyAtLW9uZWxpbmUgLTFcIiwgdikpKVxuICAgIGdpdC5ydW4oYywgXCJyZXZlcnQgLS1tYWlubGluZSAxIC0tbm8tZWRpdCBIRUFEXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJtZXJnZSAtLW5vLWZmIC1tICdNZXJnZSB1cHN0cmVhbScgdXBzdHJlYW0vdWlkXCIsIHYpXG4gIGlmICgvYnVnZml4ZXMvLnRlc3QoZ2l0LnJ1bihjLCBcImJyYW5jaFwiLCB2KSkpXG4gICAgZ2l0LnJ1bihjLCBcImJyYW5jaCAtRCBidWdmaXhlc1wiLCB2KVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCAtYiBidWdmaXhlc1wiLCB2KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWVyZ2VGaXgob3B0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGMgPSBvcHRpb25zLmNvbW1pdFxuICBpZiAoYyA9PSB1bmRlZmluZWQpIHJldHVyblxuICBjb25zdCB2ID0gb3B0aW9ucy52ZXJib3NlXG4gIGdpdC5ydW4oYywgXCJjaGVja291dCAtLXF1aWV0IHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwibWVyZ2UgLS1uby1mZiAtbSAnTWVyZ2UgYnVnZml4ZXMnIGJ1Z2ZpeGVzXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJicmFuY2ggLUQgYnVnZml4ZXNcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgbWFzdGVyXCIsIHYpXG4gIGlmICghZ2l0LnRlc3QoYywgXCJkaWZmIC0tcXVpZXQgdG1wIG1hc3RlclwiLCB2KSlcbiAgICBnaXQucnVuKGMsIFwibWVyZ2UgLS1mZi1vbmx5IHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIHRtcFwiLCB2KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZGlyZWN0b3J5U2NoZW1hID0gW11cbiAgaWYgKG9wdGlvbnMuc2NoZW1hKSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gW1tvcHRpb25zLmRhdGEsIG9wdGlvbnMuc2NoZW1hXV1cbiAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGFzZXQpIHtcbiAgICBkaXJlY3RvcnlTY2hlbWEgPSBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hKG9wdGlvbnMuZGF0YXNldClcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKFwiZWl0aGVyIC0tc2NoZW1hIG9yIC0tZGF0YXNldCBpcyByZXF1aXJlZFwiKVxuICAgIHJldHVybiAxXG4gIH1cbiAgYXdhaXQgY2hlY2tvdXRGaXgob3B0aW9ucylcbiAgZm9yIChjb25zdCBkIG9mIGRpcmVjdG9yeVNjaGVtYSkge1xuICAgIG9wdGlvbnMuc2NoZW1hID0gZFsxXVxuICAgIG9wdGlvbnMuZGF0YSA9IGRbMF1cbiAgICBpZiAob3B0aW9ucy5kZWJ1ZylcbiAgICAgIGNvbnNvbGUubG9nKGB3b3JraW5nIG9uICR7b3B0aW9ucy5kYXRhfSB3aXRoIHNjaGVtYSAke29wdGlvbnMuc2NoZW1hfWApXG4gICAgbGV0IGhlbHBlclxuICAgIHRyeSB7XG4gICAgICBoZWxwZXIgPSBuZXcgQnVnc0hlbHBlcihvcHRpb25zKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBHZXRGaWxlTm90Rm91bmRFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGhlbHBlci5tYWluKClcbiAgICBpZiAoc3RhdHVzICE9IDApIHJldHVybiBzdGF0dXNcbiAgfVxuICBhd2FpdCBtZXJnZUZpeChvcHRpb25zKVxuICByZXR1cm4gMFxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJidWdzX2hlbHBlci50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKGV4aXRDb2RlKSA9PiB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsT0FBT0EsRUFBRSxNQUFNLFVBQVU7QUFDekIsT0FBT0MsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxnQkFBZ0IsTUFBTSxvQkFBb0I7QUFBQSxTQUN4Q0MsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLG9CQUFvQjtBQUFBLFNBQ3BDQyxVQUFVO0FBQUEsT0FDWixLQUFLQyxHQUFHO0FBQUEsU0FFYkMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsc0JBQXNCLEVBQ3RCQyxZQUFZLEVBQ1pDLFNBQVM7QUFHWCxTQUFTQyxTQUFTQSxDQUFDQyxJQUFjLEVBQU87RUFDdEMsTUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7SUFDRUMsV0FBVyxFQUFFLGtEQUFrRDtJQUMvREMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLElBQUksRUFBRSxNQUFNO0lBQ1pDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUosV0FBVyxFQUNULHdFQUF3RTtJQUMxRUUsSUFBSSxFQUFFLElBQUk7SUFDVkMsSUFBSSxFQUFFQztFQUNSLENBQUMs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
|
|
251
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImNvbW1hbmRMaW5lQXJncyIsImNvbW1hbmRMaW5lVXNhZ2UiLCJsb2FkIiwiZ2V0RmlsZXMiLCJHZXRGaWxlTm90Rm91bmRFcnJvciIsIlNjaGVtYUJ1Z3MiLCJnaXQiLCJ2YWxpZERhdGFzZXQiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZGlmZlVwc3RyZWFtIiwibWFzdGVyVXJsIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdE9wdGlvbiIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsInNlY3Rpb25zIiwiaGVhZGVyIiwiY29udGVudCIsIm9wdGlvbkxpc3QiLCJvcHRpb25zIiwiZGF0YXNldCIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJzY2hlbWEiLCJpbmNsdWRlcyIsImNvbW1pdCIsImV4aXN0c1N5bmMiLCJkZWJ1ZyIsInZlcmJvc2UiLCJ1c2FnZSIsIndhcm4iLCJCdWdzSGVscGVyIiwiY29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydHkiLCJidWdzIiwiY2hlY2siLCJhbmFseXNpcyIsInByZUNoZWNrIiwibG9nIiwiZGF0YSIsImZpbGUiLCJwb3N0Q2hlY2siLCJzaG93Iiwib3V0cHV0Iiwic3RvcmUiLCJmaWxlbmFtZSIsIk9iamVjdCIsImtleXMiLCJidWciLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJqb2luIiwibmFtZTJyZXBvcnRzIiwicmVwb3J0cyIsIm4iLCJzcGxpdCIsImxpbmVzIiwiTnVtYmVyIiwic3RhdHVzMmxpbmVzIiwicmVwb3J0Iiwic3RhdHVzIiwibCIsInB1c2giLCJpbmZvIiwibGFiZWwiLCJjb25jYXQiLCJ3cml0ZUZpbGVTeW5jIiwiZW5jb2RpbmciLCJmaXgiLCJwcmVGaXgiLCJtYWluIiwiY2hlY2tvdXRGaXgiLCJjIiwidiIsInJ1biIsInRlc3QiLCJtZXJnZUZpeCIsImRpcmVjdG9yeVNjaGVtYSIsImQiLCJoZWxwZXIiLCJlIiwicHJvY2VzcyIsImVuZHNXaXRoIiwidGhlbiIsImV4aXRDb2RlIiwiZXhpdCIsImNhdGNoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvYnVnc19oZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzLCBHZXRGaWxlTm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgU2NoZW1hQnVncyB9IGZyb20gXCIuLi8uLi9zcmMvYnVnc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uLy4uL3NyYy9naXRcIlxuaW1wb3J0IHtcbiAgdmFsaWREYXRhc2V0LFxuICBnZXREYXRhc2V0cyxcbiAgZ2V0U2NoZW1hcyxcbiAgZGF0YXNldERpcmVjdG9yeVNjaGVtYSxcbiAgZGlmZlVwc3RyZWFtLFxuICBtYXN0ZXJVcmwsXG59IGZyb20gXCIuLi8uLi9zcmMvZGF0YXNldHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBkYXRhc2V0XCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIEhUTUwgY29tcHRlcyByZW5kdXMgZGUgc2VhbmNlXCIsXG4gICAgICBuYW1lOiBcImNyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IHRvIGNvbW1pdFwiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIm9ubHkgY29uc2lkZXIgdGhpcyBidWdcIixcbiAgICAgIG5hbWU6IFwiYnVnXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBjaGVjayBvdXRwdXRzIHdpbGwgYmUgc3RvcmVkXCIsXG4gICAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiZGlyZWN0b3J5IGluIHdoaWNoIGJ1Z3MgYXJlIGZvdW5kIChkZWZhdWx0IC4pXCIsXG4gICAgICBuYW1lOiBcImJ1Z3MtZGlyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImRlYnVnIGluZm9ybWF0aW9uXCIsXG4gICAgICBuYW1lOiBcImRlYnVnXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiY2hlY2tcIixcbiAgICAgIG5hbWU6IFwiY2hlY2tcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJmaXhcIixcbiAgICAgIG5hbWU6IFwiZml4XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkNyb3NzIGNoZWNrIGRhdGEgY29uc2lzdGVuY3kgYW5kIGZpeCBwcm9ibGVtc1wiLFxuICAgICAgY29udGVudDogXCJcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhvcHRpb25zLmNvbW1pdCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7b3B0aW9ucy5jb21taXR9IGRvZXMgbm90IGV4aXN0YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5kZWJ1Zykgb3B0aW9ucy52ZXJib3NlID0gdHJ1ZVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmV4cG9ydCBjbGFzcyBCdWdzSGVscGVyIHtcbiAgb3B0aW9uczogYW55XG4gIGJ1Z3M6IGFueVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IGFueSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICB0aGlzLmJ1Z3MgPSBuZXcgU2NoZW1hQnVncyh0aGlzLm9wdGlvbnMpXG4gIH1cblxuICBhc3luYyBjaGVjaygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGFuYWx5c2lzOiBhbnkgPSB7fVxuICAgIGF3YWl0IHRoaXMuYnVncy5wcmVDaGVjaygpXG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgY2hlY2sgJHt0aGlzLm9wdGlvbnMuZGF0YX1gKVxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhbdGhpcy5vcHRpb25zLmRhdGFdKSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGxvYWQoZmlsZSlcbiAgICAgIGFuYWx5c2lzW2ZpbGVdID0gYXdhaXQgdGhpcy5idWdzLmNoZWNrKGNvbnRlbnQsIGZpbGUpXG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYnVncy5wb3N0Q2hlY2soYW5hbHlzaXMpXG4gICAgYXdhaXQgdGhpcy5zaG93KGFuYWx5c2lzKVxuICAgIGlmICh0aGlzLm9wdGlvbnMub3V0cHV0KSBhd2FpdCB0aGlzLnN0b3JlKGFuYWx5c2lzKVxuICAgIHJldHVybiAwXG4gIH1cblxuICBhc3luYyBzaG93KGFuYWx5c2lzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgYnVnID0gYW5hbHlzaXNbZmlsZW5hbWVdXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYnVnKSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBidWdbbmFtZV1cbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgbGV0IGxvZ1xuICAgICAgICAgIGlmIChyZXN1bHRbXCJzdGF0dXNcIl0gPT0gXCJuZWVkcy1maXhpbmdcIikge1xuICAgICAgICAgICAgbG9nID0gY29uc29sZS5lcnJvclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIGxvZyA9IGNvbnNvbGUubG9nXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsb2cgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2coYCR7bmFtZX0gZmluZHMgJHtmaWxlbmFtZX0gJHtyZXN1bHRbXCJzdGF0dXNcIl19YClcbiAgICAgICAgICAgIGxvZyhyZXN1bHRbXCJpbmZvXCJdLmpvaW4oXCJcXG5cIikpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RvcmUoYW5hbHlzaXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5hbWUycmVwb3J0czogYW55ID0ge31cbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgYnVnID0gYW5hbHlzaXNbZmlsZW5hbWVdXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYnVnKSkge1xuICAgICAgICBpZiAoIShuYW1lIGluIG5hbWUycmVwb3J0cykpIG5hbWUycmVwb3J0c1tuYW1lXSA9IHt9XG4gICAgICAgIG5hbWUycmVwb3J0c1tuYW1lXVtmaWxlbmFtZV0gPSBidWdbbmFtZV1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKG5hbWUycmVwb3J0cykpIHtcbiAgICAgIGNvbnN0IHJlcG9ydHMgPSBuYW1lMnJlcG9ydHNbbmFtZV1cbiAgICAgIGNvbnN0IG4gPSBuYW1lLnNwbGl0KFwiLVwiKVsxXVxuICAgICAgbGV0IGxpbmVzOiBhbnkgPSBbXG4gICAgICAgIGAjIyBCdWcgWyR7bmFtZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS1xYS9pc3N1ZXMvJHtOdW1iZXIoXG4gICAgICAgICAgbixcbiAgICAgICAgKX0pYCxcbiAgICAgICAgYFRoaXMgcmVwb3J0IHdhcyBjcmVhdGVkIGJ5IHRoZSAqKmNoZWNrKiogZnVuY3Rpb24gb2YgWyR7bmFtZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS8tL2Jsb2IvbWFzdGVyL3NyYy9idWdzLyR7bmFtZX0udHMpLmAsXG4gICAgICBdXG4gICAgICBjb25zdCBzdGF0dXMybGluZXM6IGFueSA9IHtcbiAgICAgICAgXCJuZWVkcy1maXhpbmdcIjogW10sXG4gICAgICAgIFwid2lsbC1iZS1maXhlZFwiOiBbXSxcbiAgICAgICAgXCJhbHJlYWR5LWZpeGVkXCI6IFtdLFxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBPYmplY3Qua2V5cyhyZXBvcnRzKSkge1xuICAgICAgICBjb25zdCByZXBvcnQgPSByZXBvcnRzW2ZpbGVuYW1lXVxuICAgICAgICBpZiAocmVwb3J0ID09IG51bGwgfHwgcmVwb3J0W1wic3RhdHVzXCJdID09IFwib2tcIikgY29udGludWVcbiAgICAgICAgaWYgKCEocmVwb3J0W1wic3RhdHVzXCJdIGluIHN0YXR1czJsaW5lcykpXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgJHtmaWxlbmFtZX0gc3RhdHVzICR7cmVwb3J0W1wic3RhdHVzXCJdfSB1bmtub3duYClcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVwb3J0W1wic3RhdHVzXCJdXG4gICAgICAgIGxldCBsID0gc3RhdHVzMmxpbmVzW3N0YXR1c11cbiAgICAgICAgaWYgKHN0YXR1cyA9PSBcIndpbGwtYmUtZml4ZWRcIikgbC5wdXNoKGAqICR7ZGlmZlVwc3RyZWFtKGZpbGVuYW1lKX1gKVxuICAgICAgICBlbHNlIGwucHVzaChgKiAke21hc3RlclVybChmaWxlbmFtZSl9YClcbiAgICAgICAgZm9yIChjb25zdCBpbmZvIG9mIHJlcG9ydFtcImluZm9cIl0pIGwucHVzaChgICAqICR7aW5mb31gKVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBbc3RhdHVzLCBsYWJlbF0gb2YgW1xuICAgICAgICBbXCJuZWVkcy1maXhpbmdcIiwgXCJUaGUgZm9sbG93aW5nIGZpbGVzIG11c3QgYmUgZml4ZWRcIl0sXG4gICAgICAgIFtcImFscmVhZHktZml4ZWRcIiwgXCJUaGUgZm9sbG93aW5nIGZpbGVzIG5vIGxvbmdlciBuZWVkIGEgZml4XCJdLFxuICAgICAgICBbXCJ3aWxsLWJlLWZpeGVkXCIsIFwiVGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGZpeGVkXCJdLFxuICAgICAgXSkge1xuICAgICAgICBsaW5lcy5wdXNoKGAjIyMgJHtsYWJlbH1gKVxuICAgICAgICBsaW5lcyA9IGxpbmVzLmNvbmNhdChzdGF0dXMybGluZXNbc3RhdHVzXSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IG91dHB1dCA9IGAke3RoaXMub3B0aW9ucy5vdXRwdXR9LyR7bmFtZX0ubWRgXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dCwgbGluZXMuam9pbihcIlxcblwiKSwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpeCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGF3YWl0IHRoaXMuYnVncy5wcmVGaXgoKVxuICAgIGF3YWl0IHRoaXMuYnVncy5maXgoZ2V0RmlsZXMoW3RoaXMub3B0aW9ucy5kYXRhXSkpXG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIGFzeW5jIG1haW4oKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNoZWNrKSByZXR1cm4gdGhpcy5jaGVjaygpXG4gICAgZWxzZSByZXR1cm4gdGhpcy5maXgoKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja291dEZpeChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYyA9IG9wdGlvbnMuY29tbWl0XG4gIGlmIChjID09IHVuZGVmaW5lZCkgcmV0dXJuXG4gIGNvbnN0IHYgPSBvcHRpb25zLnZlcmJvc2VcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgbWFzdGVyXCIsIHYpXG4gIGlmICgvdG1wLy50ZXN0KGdpdC5ydW4oYywgXCJicmFuY2hcIiwgdikpKSBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCAtYiB0bXAgbWFzdGVyXCIsIHYpXG4gIGlmICgvTWVyZ2UgYnVnZml4ZXMvLnRlc3QoZ2l0LnJ1bihjLCBcImxvZyAtLW9uZWxpbmUgLTFcIiwgdikpKVxuICAgIGdpdC5ydW4oYywgXCJyZXZlcnQgLS1tYWlubGluZSAxIC0tbm8tZWRpdCBIRUFEXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJtZXJnZSAtLW5vLWZmIC1tICdNZXJnZSB1cHN0cmVhbScgdXBzdHJlYW0vdWlkXCIsIHYpXG4gIGlmICgvYnVnZml4ZXMvLnRlc3QoZ2l0LnJ1bihjLCBcImJyYW5jaFwiLCB2KSkpXG4gICAgZ2l0LnJ1bihjLCBcImJyYW5jaCAtRCBidWdmaXhlc1wiLCB2KVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCAtYiBidWdmaXhlc1wiLCB2KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWVyZ2VGaXgob3B0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGMgPSBvcHRpb25zLmNvbW1pdFxuICBpZiAoYyA9PSB1bmRlZmluZWQpIHJldHVyblxuICBjb25zdCB2ID0gb3B0aW9ucy52ZXJib3NlXG4gIGdpdC5ydW4oYywgXCJjaGVja291dCAtLXF1aWV0IHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwibWVyZ2UgLS1uby1mZiAtbSAnTWVyZ2UgYnVnZml4ZXMnIGJ1Z2ZpeGVzXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJicmFuY2ggLUQgYnVnZml4ZXNcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgbWFzdGVyXCIsIHYpXG4gIGlmICghZ2l0LnRlc3QoYywgXCJkaWZmIC0tcXVpZXQgdG1wIG1hc3RlclwiLCB2KSlcbiAgICBnaXQucnVuKGMsIFwibWVyZ2UgLS1mZi1vbmx5IHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIHRtcFwiLCB2KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZGlyZWN0b3J5U2NoZW1hID0gW11cbiAgaWYgKG9wdGlvbnMuc2NoZW1hKSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gW1tvcHRpb25zLmRhdGEsIG9wdGlvbnMuc2NoZW1hXV1cbiAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGFzZXQpIHtcbiAgICBkaXJlY3RvcnlTY2hlbWEgPSBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hKG9wdGlvbnMuZGF0YXNldClcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKFwiZWl0aGVyIC0tc2NoZW1hIG9yIC0tZGF0YXNldCBpcyByZXF1aXJlZFwiKVxuICAgIHJldHVybiAxXG4gIH1cbiAgYXdhaXQgY2hlY2tvdXRGaXgob3B0aW9ucylcbiAgZm9yIChjb25zdCBkIG9mIGRpcmVjdG9yeVNjaGVtYSkge1xuICAgIG9wdGlvbnMuc2NoZW1hID0gZFsxXVxuICAgIG9wdGlvbnMuZGF0YSA9IGRbMF1cbiAgICBpZiAob3B0aW9ucy5kZWJ1ZylcbiAgICAgIGNvbnNvbGUubG9nKGB3b3JraW5nIG9uICR7b3B0aW9ucy5kYXRhfSB3aXRoIHNjaGVtYSAke29wdGlvbnMuc2NoZW1hfWApXG4gICAgbGV0IGhlbHBlclxuICAgIHRyeSB7XG4gICAgICBoZWxwZXIgPSBuZXcgQnVnc0hlbHBlcihvcHRpb25zKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBHZXRGaWxlTm90Rm91bmRFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGhlbHBlci5tYWluKClcbiAgICBpZiAoc3RhdHVzICE9IDApIHJldHVybiBzdGF0dXNcbiAgfVxuICBhd2FpdCBtZXJnZUZpeChvcHRpb25zKVxuICByZXR1cm4gMFxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJidWdzX2hlbHBlci50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKGV4aXRDb2RlKSA9PiB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsT0FBT0EsRUFBRSxNQUFNLFVBQVU7QUFDekIsT0FBT0MsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxnQkFBZ0IsTUFBTSxvQkFBb0I7QUFBQSxTQUN4Q0MsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLG9CQUFvQjtBQUFBLFNBQ3BDQyxVQUFVO0FBQUEsT0FDWixLQUFLQyxHQUFHO0FBQUEsU0FFYkMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsc0JBQXNCLEVBQ3RCQyxZQUFZLEVBQ1pDLFNBQVM7QUFHWCxTQUFTQyxTQUFTQSxDQUFDQyxJQUFjLEVBQU87RUFDdEMsTUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7SUFDRUMsV0FBVyxFQUFFLGtEQUFrRDtJQUMvREMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLElBQUksRUFBRSxNQUFNO0lBQ1pDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUosV0FBVyxFQUNULHdFQUF3RTtJQUMxRUUsSUFBSSxFQUFFLElBQUk7SUFDVkMsSUFBSSxFQUFFQztFQUNSLENBQUMs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
|
|
@@ -124,7 +124,7 @@ function parseArgs(argv) {
|
|
|
124
124
|
function cleanReorganizedData(options) {
|
|
125
125
|
var dataDir = options.dataDir;
|
|
126
126
|
Date.prototype.toJSON = _dates.patchedDateToJson;
|
|
127
|
-
var exitCode =
|
|
127
|
+
var exitCode = options.commit ? 10 : 0;
|
|
128
128
|
var gitGroupUrl = options.clone ? options.clone.trim().replace(/\/+$/, "") : undefined;
|
|
129
129
|
options.categories.map(function (datasetName) {
|
|
130
130
|
return _assert["default"].notStrictEqual(_datasets.EnabledDatasets[datasetName], undefined, "Unknown name of dataset: ".concat(datasetName));
|
|
@@ -772,4 +772,4 @@ function main(argv) {
|
|
|
772
772
|
|
|
773
773
|
/* istanbul ignore if */
|
|
774
774
|
if (process.argv[1].endsWith("clean_reorganized_data.ts")) process.exit(main(process.argv));
|
|
775
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiX2ZpbGVfc3lzdGVtcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJuZXh0IiwiX2UyIiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJOdW1iZXIiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiZGF0YURpciIsIkRhdGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImV4aXRDb2RlIiwiZ2l0R3JvdXBVcmwiLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwidW5kZWZpbmVkIiwiY2F0ZWdvcmllcyIsIm1hcCIsImRhdGFzZXROYW1lIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJFbmFibGVkRGF0YXNldHMiLCJjb25jYXQiLCJlbmFibGVkRGF0YXNldHMiLCJyZWR1Y2UiLCJOb25lIiwiY2hvc2VuRGF0YXNldHMiLCJmaWx0ZXJCeUxlZ2lzbGF0dXJlIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IiLCJhY3RldXJzRXRPcmdhbmVzIiwiX3N0ZXAiLCJkYXRhc2V0IiwicGF0aCIsImJhc2VuYW1lIiwiZmlsZW5hbWUiLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiZGF0YXNldFJhd0RpciIsImpvaW4iLCJkYXRhc2V0Q2xlYW5EaXIiLCJwdWxsIiwiYW5hbHl6ZUFuZFJlbW92ZSIsIl9pdGVyYXRvcjIiLCJ3YWxrRGlyIiwiX3N0ZXAyIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJlbmRzV2l0aCIsImFjdGV1clJhd0ZpbGVQYXRoIiwiYXBwbHkiLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsImFjdGV1clJhd0pzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImFjdGV1ciIsIkpTT04iLCJwYXJzZSIsImNsZWFuQWN0ZXVyIiwiYWN0ZXVySnNvbiIsInN0cmluZ2lmeSIsImFjdGV1ckNsZWFuIiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJ0b0FjdGV1ciIsImFjdGV1ckNsZWFuSnNvbiIsImFjdGV1clRvSnNvbiIsImFjdGV1ckNsZWFuRmlsZVBhdGgiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVSYXdGaWxlUGF0aCIsIm9yZ2FuZVJhd0pzb24iLCJvcmdhbmUiLCJjbGVhbk9yZ2FuZSIsIm9yZ2FuZUpzb24iLCJvcmdhbmVDbGVhbiIsInRvT3JnYW5lIiwib3JnYW5lQ2xlYW5Kc29uIiwib3JnYW5lVG9Kc29uIiwib3JnYW5lQ2xlYW5GaWxlUGF0aCIsImNvbW1pdCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJjb21taXRBbmRQdXNoVWlkIiwiQWdlbmRhcyIsIl9pdGVyYXRvcjQiLCJhZ2VuZGFzIiwiX3N0ZXA0IiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uUmF3RmlsZVBhdGgiLCJyZXVuaW9uUmF3SnNvbiIsInJldW5pb24iLCJjbGVhblJldW5pb24iLCJyZXVuaW9uSnNvbiIsInJldW5pb25DbGVhbiIsIkFnZW5kYXNDb252ZXJ0IiwidG9SZXVuaW9uIiwicmV1bmlvbkNsZWFuSnNvbiIsInJldW5pb25Ub0pzb24iLCJyZXVuaW9uQ2xlYW5GaWxlUGF0aCIsIkFtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yNiIsImFtZW5kZW1lbnRzIiwiX3N0ZXA2IiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50UmF3RmlsZVBhdGgiLCJhbWVuZGVtZW50UmF3SnNvbiIsImFtZW5kZW1lbnQiLCJjbGVhbkFtZW5kZW1lbnQiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnRDbGVhbiIsIkFtZW5kZW1lbnRzQ29udmVydCIsInRvQW1lbmRlbWVudCIsImFtZW5kZW1lbnRDbGVhbkpzb24iLCJhbWVuZGVtZW50VG9Kc29uIiwiYW1lbmRlbWVudENsZWFuRmlsZVBhdGgiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yOCIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfc3RlcDgiLCJfaXRlcmF0b3I5IiwiX3N0ZXA5IiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRSYXdGaWxlUGF0aCIsImRvY3VtZW50UmF3SnNvbiIsImRvY3VtZW50IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudENsZWFuIiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRDbGVhbkpzb24iLCJkb2N1bWVudFRvSnNvbiIsImRvY3VtZW50Q2xlYW5GaWxlUGF0aCIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyUmF3RmlsZVBhdGgiLCJkb3NzaWVyUmF3SnNvbiIsImRvc3NpZXIiLCJjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llckpzb24iLCJkb3NzaWVyQ2xlYW4iLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llckNsZWFuSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uIiwiZG9zc2llckNsZWFuRmlsZVBhdGgiLCJTY3J1dGlucyIsIl9pdGVyYXRvcjExIiwic2NydXRpbnMiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsInNjcnV0aW5SYXdGaWxlUGF0aCIsInNjcnV0aW5SYXdKc29uIiwic2NydXRpbiIsImNsZWFuU2NydXRpbiIsInNjcnV0aW5Kc29uIiwic2NydXRpbkNsZWFuIiwiU2NydXRpbnNDb252ZXJ0IiwidG9TY3J1dGluIiwic2NydXRpbkNsZWFuSnNvbiIsInNjcnV0aW5Ub0pzb24iLCJzY3J1dGluQ2xlYW5GaWxlUGF0aCIsIlF1ZXN0aW9ucyIsIl9pdGVyYXRvcjEzIiwicXVlc3Rpb25zIiwiX3N0ZXAxMyIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsInF1ZXN0aW9uc1NwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvblJhd0ZpbGVQYXRoIiwicXVlc3Rpb25SYXdKc29uIiwicXVlc3Rpb24iLCJjbGVhblF1ZXN0aW9uIiwicXVlc3Rpb25Kc29uIiwicXVlc3Rpb25DbGVhbiIsIlF1ZXN0aW9uc0NvbnZlcnQiLCJ0b1F1ZXN0aW9uIiwicXVlc3Rpb25DbGVhbkpzb24iLCJxdWVzdGlvblRvSnNvbiIsInF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX2l0ZXJhdG9yMTUiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9zdGVwMTUiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJjb21wdGVzUmVuZHVzU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVGaWxlbmFtZSIsImNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgiLCJjb21wdGVSZW5kdVJhd0pzb24iLCJjb21wdGVSZW5kdSIsImNsZWFuQ29tcHRlUmVuZHUiLCJjb21wdGVSZW5kdUpzb24iLCJjb21wdGVSZW5kdUNsZWFuIiwiQ29tcHRlc1JlbmR1c0NvbnZlcnQiLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVDbGVhbkpzb24iLCJjb21wdGVSZW5kdVRvSnNvbiIsImNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInNpbGVudCIsIl9pdGVyYXRvcjE3IiwicmVhZGRpclN5bmMiLCJfc3RlcDE3IiwicGF0aG5hbWUiLCJyZW1vdmVTeW5jIiwicmVwb3NpdG9yeURpciIsInN1YmRpcmVjdG9yaWVzIiwiZXJyb3IiLCJ1aWRCcmFuY2hVcGRhdGUiLCJfaXRlcmF0b3IxOCIsIl9zdGVwMTgiLCJydW4iLCJjaGlsZFByb2Nlc3MiLCJtYWluIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7XG4gIGNsZWFuQWN0ZXVyLFxuICBjbGVhbkFtZW5kZW1lbnQsXG4gIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBjbGVhbk9yZ2FuZSxcbiAgY2xlYW5SZXVuaW9uLFxuICBjbGVhblNjcnV0aW4sXG4gIGNsZWFuUXVlc3Rpb24sXG4gIGNsZWFuQ29tcHRlUmVuZHUsXG59IGZyb20gXCIuLi9jbGVhbmVyc1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzLCBmaWx0ZXJCeUxlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4uL3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zQ29udmVydCwgUXVlc3Rpb24gfSBmcm9tIFwiLi4vdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c0NvbnZlcnQsIENvbXB0ZVJlbmR1IH0gZnJvbSBcIi4uL3R5cGVzL2RlYmF0c1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBhbGlhczogXCJDXCIsXG4gICAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImNcIixcbiAgICAgIGhlbHA6IFwiY29tbWl0IGNsZWFuIGZpbGVzXCIsXG4gICAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImRcIixcbiAgICAgIGhlbHA6IFwic2luZ2xlIGRhdGFzZXQgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbmFtZTogXCJkYXRhc2V0XCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJrXCIsXG4gICAgICBkZWZhdWx0VmFsdWU6IFtcIkFsbFwiXSxcbiAgICAgIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZW9yZ2FuaXplXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiY2F0ZWdvcmllc1wiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwibFwiLFxuICAgICAgaGVscDogXCJsZWdpc2xhdHVyZXMgb2YgY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZXRyaWV2ZTsgbGVhdmUgZW1wdHkgb3IgdXNlIDAgZm9yIGFsbFwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJwXCIsXG4gICAgICBoZWxwOiBcInB1bGwgcmVwb3NpdG9yaWVzIGJlZm9yZSBwcm9jZWVkaW5nXCIsXG4gICAgICBuYW1lOiBcInB1bGxcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJyXCIsXG4gICAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwic1wiLFxuICAgICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJkbyBub3QgcmVzZXQgLS1oYXJkIGFmdGVyIGNvbW1pdCB0byBzYXZlIEkvTyBpZiB0aGUgd29ya2luZyB0cmVlIGlzIHRvIGJlIGRpc2NhcmRlZFwiLFxuICAgICAgbmFtZTogXCJuby1yZXNldC1hZnRlci1jb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJ2XCIsXG4gICAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbGVhblJlb3JnYW5pemVkRGF0YShvcHRpb25zOiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBkYXRhRGlyOiBzdHJpbmcgPSBvcHRpb25zLmRhdGFEaXJcblxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuXG4gIGxldCBleGl0Q29kZSA9IDEwIC8vIE5vdGhpbmcgdG8gY29tbWl0XG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgb3B0aW9ucy5jYXRlZ29yaWVzLm1hcCgoZGF0YXNldE5hbWU6IHN0cmluZykgPT5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYFVua25vd24gbmFtZSBvZiBkYXRhc2V0OiAke2RhdGFzZXROYW1lfWAsXG4gICAgKSxcbiAgKVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBvcHRpb25zLmNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcblxuICBsZXQgY2hvc2VuRGF0YXNldHMgPSBmaWx0ZXJCeUxlZ2lzbGF0dXJlKGRhdGFzZXRzLCBvcHRpb25zLmxlZ2lzbGF0dXJlKVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdWxsIC0tcmViYXNlYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHthY3RldXJSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1clJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gSlNPTi5wYXJzZShhY3RldXJSYXdKc29uKVxuICAgICAgICBjbGVhbkFjdGV1cihhY3RldXIpXG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW46IEFjdGV1ciA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ckpzb24pXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5hY3RldXJUb0pzb24oYWN0ZXVyQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5hY3RldXJTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoYWN0ZXVyQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYWN0ZXVyQ2xlYW5GaWxlUGF0aCwgYWN0ZXVyQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcIm9yZ2FuZXNcIl0pKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZVJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7b3JnYW5lUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMob3JnYW5lUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IEpTT04ucGFyc2Uob3JnYW5lUmF3SnNvbilcbiAgICAgICAgY2xlYW5PcmdhbmUob3JnYW5lKVxuICAgICAgICBjb25zdCBvcmdhbmVKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuOiBPcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQub3JnYW5lVG9Kc29uKG9yZ2FuZUNsZWFuKVxuXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ub3JnYW5lU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKG9yZ2FuZUNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG9yZ2FuZUNsZWFuRmlsZVBhdGgsIG9yZ2FuZUNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiYWN0ZXVyc1wiLCBcIm9yZ2FuZXNcIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25SYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtyZXVuaW9uUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEpTT04ucGFyc2UocmV1bmlvblJhd0pzb24pXG4gICAgICAgIGNsZWFuUmV1bmlvbihyZXVuaW9uKVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocmV1bmlvbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuOiBSZXVuaW9uID0gQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25Kc29uKVxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFnZW5kYXNDb252ZXJ0LnJldW5pb25Ub0pzb24ocmV1bmlvbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnJldW5pb25TcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUocmV1bmlvbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHJldW5pb25DbGVhbkZpbGVQYXRoLCByZXVuaW9uQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudFJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHthbWVuZGVtZW50UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgIGFtZW5kZW1lbnRSYXdGaWxlUGF0aCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gSlNPTi5wYXJzZShhbWVuZGVtZW50UmF3SnNvbilcbiAgICAgICAgY2xlYW5BbWVuZGVtZW50KGFtZW5kZW1lbnQpXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW46IEFtZW5kZW1lbnQgPVxuICAgICAgICAgIEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoYW1lbmRlbWVudEpzb24pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQW1lbmRlbWVudHNDb252ZXJ0LmFtZW5kZW1lbnRUb0pzb24oYW1lbmRlbWVudENsZWFuKVxuXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoYW1lbmRlbWVudENsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoLCBhbWVuZGVtZW50Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2RvY3VtZW50UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudFJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudFJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb2N1bWVudCA9IEpTT04ucGFyc2UoZG9jdW1lbnRSYXdKc29uKVxuICAgICAgICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbihkb2N1bWVudClcbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkb2N1bWVudCwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbjogRG9jdW1lbnQgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRKc29uKVxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb2N1bWVudFRvSnNvbihkb2N1bWVudENsZWFuKVxuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShkb2N1bWVudENsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRvY3VtZW50Q2xlYW5GaWxlUGF0aCwgZG9jdW1lbnRDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZG9zc2llclNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImRvc3NpZXJzXCJdKSkge1xuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZW5hbWUgPSBkb3NzaWVyU3BsaXRQYXRoW2Rvc3NpZXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb3NzaWVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llclJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmRvc3NpZXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2Rvc3NpZXJSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9zc2llclJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb3NzaWVyID0gSlNPTi5wYXJzZShkb3NzaWVyUmF3SnNvbilcbiAgICAgICAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVyKVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZG9zc2llciwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuOiBEb3NzaWVyUGFybGVtZW50YWlyZSA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVySnNvbilcbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbihkb3NzaWVyQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uZG9zc2llclNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShkb3NzaWVyQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZG9zc2llckNsZWFuRmlsZVBhdGgsIGRvc3NpZXJDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcImRvY3VtZW50c1wiLCBcImRvc3NpZXJzXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID0gc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5SYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5zY3J1dGluU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtzY3J1dGluUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHNjcnV0aW5SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IEpTT04ucGFyc2Uoc2NydXRpblJhd0pzb24pXG4gICAgICAgIGNsZWFuU2NydXRpbihzY3J1dGluKVxuICAgICAgICBjb25zdCBzY3J1dGluSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoc2NydXRpbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuOiBTY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBTY3J1dGluc0NvbnZlcnQuc2NydXRpblRvSnNvbihzY3J1dGluQ2xlYW4pXG5cbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShzY3J1dGluQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoc2NydXRpbkNsZWFuRmlsZVBhdGgsIHNjcnV0aW5DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5RdWVzdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMucXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgcXVlc3Rpb25zU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlbmFtZSA9XG4gICAgICAgICAgcXVlc3Rpb25zU3BsaXRQYXRoW3F1ZXN0aW9uc1NwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25SYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLnF1ZXN0aW9uc1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtxdWVzdGlvblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocXVlc3Rpb25SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBKU09OLnBhcnNlKHF1ZXN0aW9uUmF3SnNvbilcbiAgICAgICAgY2xlYW5RdWVzdGlvbihxdWVzdGlvbilcbiAgICAgICAgY29uc3QgcXVlc3Rpb25Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShxdWVzdGlvbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbjogUXVlc3Rpb24gPVxuICAgICAgICAgIFF1ZXN0aW9uc0NvbnZlcnQudG9RdWVzdGlvbihxdWVzdGlvbkpzb24pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIFF1ZXN0aW9uc0NvbnZlcnQucXVlc3Rpb25Ub0pzb24ocXVlc3Rpb25DbGVhbilcblxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ucXVlc3Rpb25zU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocXVlc3Rpb25DbGVhbkZpbGVQYXRoLCBxdWVzdGlvbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIueG1sXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBjb21wdGVzUmVuZHVzU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVGaWxlbmFtZSA9XG4gICAgICAgICAgY29tcHRlc1JlbmR1c1NwbGl0UGF0aFtjb21wdGVzUmVuZHVzU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghY29tcHRlUmVuZHVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdVJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uY29tcHRlc1JlbmR1c1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtjb21wdGVSZW5kdVJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgY29tcHRlUmVuZHVSYXdGaWxlUGF0aCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdSA9IEpTT04ucGFyc2UoY29tcHRlUmVuZHVSYXdKc29uKVxuICAgICAgICBjbGVhbkNvbXB0ZVJlbmR1KGNvbXB0ZVJlbmR1KVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNvbXB0ZVJlbmR1LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuOiBDb21wdGVSZW5kdSA9XG4gICAgICAgICAgQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVSZW5kdShjb21wdGVSZW5kdUpzb24pXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIENvbXB0ZXNSZW5kdXNDb252ZXJ0LmNvbXB0ZVJlbmR1VG9Kc29uKGNvbXB0ZVJlbmR1Q2xlYW4pXG5cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmNvbXB0ZXNSZW5kdXNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgsIGNvbXB0ZVJlbmR1Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RvcmUgc3RhbmRhcmQgY29udmVyc2lvbiBvZiBkYXRlcyB0byBKU09OLlxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBleGlzdGluZ0RhdGVUb0pzb25cblxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZTogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBhbnkge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgQ2xlYW5pbmcgZGlyZWN0b3J5OiAke2RhdGFzZXRDbGVhbkRpcn3igKZgKVxuICB9XG4gIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldENsZWFuRGlyKVxuICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRDbGVhbkRpcikpIHtcbiAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBwYXRobmFtZSA9IHBhdGguam9pbihkYXRhc2V0Q2xlYW5EaXIsIGZpbGVuYW1lKVxuICAgIGZzLnJlbW92ZVN5bmMocGF0aG5hbWUpXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaFVpZChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBvcHRpb25zOiBhbnksXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgZ2l0LnVpZEJyYW5jaFVwZGF0ZShcbiAgICAgIHJlcG9zaXRvcnlEaXIsXG4gICAgICBzdWJkaXJlY3RvcmllcyxcbiAgICAgIG9wdGlvbnNbXCJuby1yZXNldC1hZnRlci1jb21taXRcIl0sXG4gICAgKVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIG9wdGlvbnMucmVtb3RlIHx8IFtdKSB7XG4gICAgICB0cnkge1xuICAgICAgICBnaXQucnVuKHJlcG9zaXRvcnlEaXIsIGBwdXNoIC0tcXVpZXQgJHtyZW1vdGV9IHVpZDp1aWRgKVxuICAgICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZXJyb3Jcbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIHJldHVybiBjbGVhblJlb3JnYW5pemVkRGF0YShvcHRpb25zKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJjbGVhbl9yZW9yZ2FuaXplZF9kYXRhLnRzXCIpKVxuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3YpKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
775
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiX2ZpbGVfc3lzdGVtcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJuZXh0IiwiX2UyIiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJOdW1iZXIiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiZGF0YURpciIsIkRhdGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImV4aXRDb2RlIiwiY29tbWl0IiwiZ2l0R3JvdXBVcmwiLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwidW5kZWZpbmVkIiwiY2F0ZWdvcmllcyIsIm1hcCIsImRhdGFzZXROYW1lIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJFbmFibGVkRGF0YXNldHMiLCJjb25jYXQiLCJlbmFibGVkRGF0YXNldHMiLCJyZWR1Y2UiLCJOb25lIiwiY2hvc2VuRGF0YXNldHMiLCJmaWx0ZXJCeUxlZ2lzbGF0dXJlIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IiLCJhY3RldXJzRXRPcmdhbmVzIiwiX3N0ZXAiLCJkYXRhc2V0IiwicGF0aCIsImJhc2VuYW1lIiwiZmlsZW5hbWUiLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiZGF0YXNldFJhd0RpciIsImpvaW4iLCJkYXRhc2V0Q2xlYW5EaXIiLCJwdWxsIiwiYW5hbHl6ZUFuZFJlbW92ZSIsIl9pdGVyYXRvcjIiLCJ3YWxrRGlyIiwiX3N0ZXAyIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJlbmRzV2l0aCIsImFjdGV1clJhd0ZpbGVQYXRoIiwiYXBwbHkiLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsImFjdGV1clJhd0pzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImFjdGV1ciIsIkpTT04iLCJwYXJzZSIsImNsZWFuQWN0ZXVyIiwiYWN0ZXVySnNvbiIsInN0cmluZ2lmeSIsImFjdGV1ckNsZWFuIiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJ0b0FjdGV1ciIsImFjdGV1ckNsZWFuSnNvbiIsImFjdGV1clRvSnNvbiIsImFjdGV1ckNsZWFuRmlsZVBhdGgiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVSYXdGaWxlUGF0aCIsIm9yZ2FuZVJhd0pzb24iLCJvcmdhbmUiLCJjbGVhbk9yZ2FuZSIsIm9yZ2FuZUpzb24iLCJvcmdhbmVDbGVhbiIsInRvT3JnYW5lIiwib3JnYW5lQ2xlYW5Kc29uIiwib3JnYW5lVG9Kc29uIiwib3JnYW5lQ2xlYW5GaWxlUGF0aCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJjb21taXRBbmRQdXNoVWlkIiwiQWdlbmRhcyIsIl9pdGVyYXRvcjQiLCJhZ2VuZGFzIiwiX3N0ZXA0IiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uUmF3RmlsZVBhdGgiLCJyZXVuaW9uUmF3SnNvbiIsInJldW5pb24iLCJjbGVhblJldW5pb24iLCJyZXVuaW9uSnNvbiIsInJldW5pb25DbGVhbiIsIkFnZW5kYXNDb252ZXJ0IiwidG9SZXVuaW9uIiwicmV1bmlvbkNsZWFuSnNvbiIsInJldW5pb25Ub0pzb24iLCJyZXVuaW9uQ2xlYW5GaWxlUGF0aCIsIkFtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yNiIsImFtZW5kZW1lbnRzIiwiX3N0ZXA2IiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50UmF3RmlsZVBhdGgiLCJhbWVuZGVtZW50UmF3SnNvbiIsImFtZW5kZW1lbnQiLCJjbGVhbkFtZW5kZW1lbnQiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnRDbGVhbiIsIkFtZW5kZW1lbnRzQ29udmVydCIsInRvQW1lbmRlbWVudCIsImFtZW5kZW1lbnRDbGVhbkpzb24iLCJhbWVuZGVtZW50VG9Kc29uIiwiYW1lbmRlbWVudENsZWFuRmlsZVBhdGgiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yOCIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfc3RlcDgiLCJfaXRlcmF0b3I5IiwiX3N0ZXA5IiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRSYXdGaWxlUGF0aCIsImRvY3VtZW50UmF3SnNvbiIsImRvY3VtZW50IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudENsZWFuIiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRDbGVhbkpzb24iLCJkb2N1bWVudFRvSnNvbiIsImRvY3VtZW50Q2xlYW5GaWxlUGF0aCIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyUmF3RmlsZVBhdGgiLCJkb3NzaWVyUmF3SnNvbiIsImRvc3NpZXIiLCJjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llckpzb24iLCJkb3NzaWVyQ2xlYW4iLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llckNsZWFuSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uIiwiZG9zc2llckNsZWFuRmlsZVBhdGgiLCJTY3J1dGlucyIsIl9pdGVyYXRvcjExIiwic2NydXRpbnMiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsInNjcnV0aW5SYXdGaWxlUGF0aCIsInNjcnV0aW5SYXdKc29uIiwic2NydXRpbiIsImNsZWFuU2NydXRpbiIsInNjcnV0aW5Kc29uIiwic2NydXRpbkNsZWFuIiwiU2NydXRpbnNDb252ZXJ0IiwidG9TY3J1dGluIiwic2NydXRpbkNsZWFuSnNvbiIsInNjcnV0aW5Ub0pzb24iLCJzY3J1dGluQ2xlYW5GaWxlUGF0aCIsIlF1ZXN0aW9ucyIsIl9pdGVyYXRvcjEzIiwicXVlc3Rpb25zIiwiX3N0ZXAxMyIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsInF1ZXN0aW9uc1NwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvblJhd0ZpbGVQYXRoIiwicXVlc3Rpb25SYXdKc29uIiwicXVlc3Rpb24iLCJjbGVhblF1ZXN0aW9uIiwicXVlc3Rpb25Kc29uIiwicXVlc3Rpb25DbGVhbiIsIlF1ZXN0aW9uc0NvbnZlcnQiLCJ0b1F1ZXN0aW9uIiwicXVlc3Rpb25DbGVhbkpzb24iLCJxdWVzdGlvblRvSnNvbiIsInF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX2l0ZXJhdG9yMTUiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9zdGVwMTUiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJjb21wdGVzUmVuZHVzU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVGaWxlbmFtZSIsImNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgiLCJjb21wdGVSZW5kdVJhd0pzb24iLCJjb21wdGVSZW5kdSIsImNsZWFuQ29tcHRlUmVuZHUiLCJjb21wdGVSZW5kdUpzb24iLCJjb21wdGVSZW5kdUNsZWFuIiwiQ29tcHRlc1JlbmR1c0NvbnZlcnQiLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVDbGVhbkpzb24iLCJjb21wdGVSZW5kdVRvSnNvbiIsImNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInNpbGVudCIsIl9pdGVyYXRvcjE3IiwicmVhZGRpclN5bmMiLCJfc3RlcDE3IiwicGF0aG5hbWUiLCJyZW1vdmVTeW5jIiwicmVwb3NpdG9yeURpciIsInN1YmRpcmVjdG9yaWVzIiwiZXJyb3IiLCJ1aWRCcmFuY2hVcGRhdGUiLCJfaXRlcmF0b3IxOCIsIl9zdGVwMTgiLCJydW4iLCJjaGlsZFByb2Nlc3MiLCJtYWluIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7XG4gIGNsZWFuQWN0ZXVyLFxuICBjbGVhbkFtZW5kZW1lbnQsXG4gIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBjbGVhbk9yZ2FuZSxcbiAgY2xlYW5SZXVuaW9uLFxuICBjbGVhblNjcnV0aW4sXG4gIGNsZWFuUXVlc3Rpb24sXG4gIGNsZWFuQ29tcHRlUmVuZHUsXG59IGZyb20gXCIuLi9jbGVhbmVyc1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzLCBmaWx0ZXJCeUxlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4uL3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zQ29udmVydCwgUXVlc3Rpb24gfSBmcm9tIFwiLi4vdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c0NvbnZlcnQsIENvbXB0ZVJlbmR1IH0gZnJvbSBcIi4uL3R5cGVzL2RlYmF0c1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBhbGlhczogXCJDXCIsXG4gICAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImNcIixcbiAgICAgIGhlbHA6IFwiY29tbWl0IGNsZWFuIGZpbGVzXCIsXG4gICAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImRcIixcbiAgICAgIGhlbHA6IFwic2luZ2xlIGRhdGFzZXQgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbmFtZTogXCJkYXRhc2V0XCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJrXCIsXG4gICAgICBkZWZhdWx0VmFsdWU6IFtcIkFsbFwiXSxcbiAgICAgIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZW9yZ2FuaXplXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiY2F0ZWdvcmllc1wiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwibFwiLFxuICAgICAgaGVscDogXCJsZWdpc2xhdHVyZXMgb2YgY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZXRyaWV2ZTsgbGVhdmUgZW1wdHkgb3IgdXNlIDAgZm9yIGFsbFwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJwXCIsXG4gICAgICBoZWxwOiBcInB1bGwgcmVwb3NpdG9yaWVzIGJlZm9yZSBwcm9jZWVkaW5nXCIsXG4gICAgICBuYW1lOiBcInB1bGxcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJyXCIsXG4gICAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwic1wiLFxuICAgICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJkbyBub3QgcmVzZXQgLS1oYXJkIGFmdGVyIGNvbW1pdCB0byBzYXZlIEkvTyBpZiB0aGUgd29ya2luZyB0cmVlIGlzIHRvIGJlIGRpc2NhcmRlZFwiLFxuICAgICAgbmFtZTogXCJuby1yZXNldC1hZnRlci1jb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJ2XCIsXG4gICAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbGVhblJlb3JnYW5pemVkRGF0YShvcHRpb25zOiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBkYXRhRGlyOiBzdHJpbmcgPSBvcHRpb25zLmRhdGFEaXJcblxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuXG4gIGxldCBleGl0Q29kZSA9IG9wdGlvbnMuY29tbWl0ID8gMTAgOiAwO1xuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuXG4gIG9wdGlvbnMuY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gb3B0aW9ucy5jYXRlZ29yaWVzLnJlZHVjZShcbiAgICAoZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsIGRhdGFzZXROYW1lOiBzdHJpbmcpOiBFbmFibGVkRGF0YXNldHMgPT5cbiAgICAgIGVuYWJsZWREYXRhc2V0cyB8XG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgIEVuYWJsZWREYXRhc2V0cy5Ob25lLFxuICApXG5cbiAgbGV0IGNob3NlbkRhdGFzZXRzID0gZmlsdGVyQnlMZWdpc2xhdHVyZShkYXRhc2V0cywgb3B0aW9ucy5sZWdpc2xhdHVyZSlcblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCByZXNldCAtLWhhcmQgb3JpZ2luL21hc3RlcmAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVsbCAtLXJlYmFzZWAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImFjdGV1cnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1clJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmFjdGV1clNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7YWN0ZXVyUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYWN0ZXVyUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IEpTT04ucGFyc2UoYWN0ZXVyUmF3SnNvbilcbiAgICAgICAgY2xlYW5BY3RldXIoYWN0ZXVyKVxuICAgICAgICBjb25zdCBhY3RldXJKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuOiBBY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICBjb25zdCBhY3RldXJDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQuYWN0ZXVyVG9Kc29uKGFjdGV1ckNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGFjdGV1ckNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFjdGV1ckNsZWFuRmlsZVBhdGgsIGFjdGV1ckNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke29yZ2FuZVJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZVJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBKU09OLnBhcnNlKG9yZ2FuZVJhd0pzb24pXG4gICAgICAgIGNsZWFuT3JnYW5lKG9yZ2FuZSlcbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbjogT3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgY29uc3Qgb3JnYW5lQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0Lm9yZ2FuZVRvSnNvbihvcmdhbmVDbGVhbilcblxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShvcmdhbmVDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhvcmdhbmVDbGVhbkZpbGVQYXRoLCBvcmdhbmVDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcImFjdGV1cnNcIiwgXCJvcmdhbmVzXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9IHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4ucmV1bmlvblNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7cmV1bmlvblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhyZXVuaW9uUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHJldW5pb24gPSBKU09OLnBhcnNlKHJldW5pb25SYXdKc29uKVxuICAgICAgICBjbGVhblJldW5pb24ocmV1bmlvbilcbiAgICAgICAgY29uc3QgcmV1bmlvbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHJldW5pb24sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbjogUmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBZ2VuZGFzQ29udmVydC5yZXVuaW9uVG9Kc29uKHJldW5pb25DbGVhbilcblxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5yZXVuaW9uU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHJldW5pb25DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhyZXVuaW9uQ2xlYW5GaWxlUGF0aCwgcmV1bmlvbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7YW1lbmRlbWVudFJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudFJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICBhbWVuZGVtZW50UmF3RmlsZVBhdGgsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IEpTT04ucGFyc2UoYW1lbmRlbWVudFJhd0pzb24pXG4gICAgICAgIGNsZWFuQW1lbmRlbWVudChhbWVuZGVtZW50KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuOiBBbWVuZGVtZW50ID1cbiAgICAgICAgICBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFtZW5kZW1lbnRzQ29udmVydC5hbWVuZGVtZW50VG9Kc29uKGFtZW5kZW1lbnRDbGVhbilcblxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aCwgYW1lbmRlbWVudENsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiZG9jdW1lbnRzXCJdKSkge1xuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVuYW1lID0gZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtkb2N1bWVudFJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBKU09OLnBhcnNlKGRvY3VtZW50UmF3SnNvbilcbiAgICAgICAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24oZG9jdW1lbnQpXG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnQsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW46IERvY3VtZW50ID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9jdW1lbnRUb0pzb24oZG9jdW1lbnRDbGVhbilcblxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uZG9jdW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoZG9jdW1lbnRDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkb2N1bWVudENsZWFuRmlsZVBhdGgsIGRvY3VtZW50Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtkb3NzaWVyUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9IEpTT04ucGFyc2UoZG9zc2llclJhd0pzb24pXG4gICAgICAgIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llcilcbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRvc3NpZXIsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbjogRG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24oZG9zc2llckNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmRvc3NpZXJTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoZG9zc2llckNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRvc3NpZXJDbGVhbkZpbGVQYXRoLCBkb3NzaWVyQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCJkb2N1bWVudHNcIiwgXCJkb3NzaWVyc1wiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7c2NydXRpblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBKU09OLnBhcnNlKHNjcnV0aW5SYXdKc29uKVxuICAgICAgICBjbGVhblNjcnV0aW4oc2NydXRpbilcbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHNjcnV0aW4sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbjogU2NydXRpbiA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4oc2NydXRpbkpzb24pXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgU2NydXRpbnNDb252ZXJ0LnNjcnV0aW5Ub0pzb24oc2NydXRpbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoc2NydXRpbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHNjcnV0aW5DbGVhbkZpbGVQYXRoLCBzY3J1dGluQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uc1NwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgIHF1ZXN0aW9uc1NwbGl0UGF0aFtxdWVzdGlvbnNTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFxdWVzdGlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5xdWVzdGlvbnNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7cXVlc3Rpb25SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHF1ZXN0aW9uUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gSlNPTi5wYXJzZShxdWVzdGlvblJhd0pzb24pXG4gICAgICAgIGNsZWFuUXVlc3Rpb24ocXVlc3Rpb24pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocXVlc3Rpb24sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW46IFF1ZXN0aW9uID1cbiAgICAgICAgICBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb24ocXVlc3Rpb25Kc29uKVxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBRdWVzdGlvbnNDb252ZXJ0LnF1ZXN0aW9uVG9Kc29uKHF1ZXN0aW9uQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnF1ZXN0aW9uc1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShxdWVzdGlvbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCwgcXVlc3Rpb25DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgY29tcHRlc1JlbmR1c1NwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZW5hbWUgPVxuICAgICAgICAgIGNvbXB0ZXNSZW5kdXNTcGxpdFBhdGhbY29tcHRlc1JlbmR1c1NwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmNvbXB0ZXNSZW5kdXNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7Y29tcHRlUmVuZHVSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgIGNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHUgPSBKU09OLnBhcnNlKGNvbXB0ZVJlbmR1UmF3SnNvbilcbiAgICAgICAgY2xlYW5Db21wdGVSZW5kdShjb21wdGVSZW5kdSlcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjb21wdGVSZW5kdSwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbjogQ29tcHRlUmVuZHUgPVxuICAgICAgICAgIENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUoY29tcHRlUmVuZHVKc29uKVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBDb21wdGVzUmVuZHVzQ29udmVydC5jb21wdGVSZW5kdVRvSnNvbihjb21wdGVSZW5kdUNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5jb21wdGVzUmVuZHVzU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoLCBjb21wdGVSZW5kdUNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWU6IHN0cmluZywgb3B0aW9uczogYW55KTogYW55IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYENsZWFuaW5nIGRpcmVjdG9yeTogJHtkYXRhc2V0Q2xlYW5EaXJ94oCmYClcbiAgfVxuICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRDbGVhbkRpcilcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCBmaWxlbmFtZSlcbiAgICBmcy5yZW1vdmVTeW5jKHBhdGhuYW1lKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2hVaWQoXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGdpdC51aWRCcmFuY2hVcGRhdGUoXG4gICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgc3ViZGlyZWN0b3JpZXMsXG4gICAgICBvcHRpb25zW1wibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCJdLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiBvcHRpb25zLnJlbW90ZSB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAtLXF1aWV0ICR7cmVtb3RlfSB1aWQ6dWlkYClcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICByZXR1cm4gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9ucylcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|