@tricoteuses/assemblee 0.24.1 → 0.25.3
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 +3 -0
- package/lib/bugs/acteur-00010.js +5 -3
- package/lib/bugs/agenda-00002.js +3 -3
- package/lib/bugs/agenda-00002.mjs +1 -1
- package/lib/bugs/agenda-00008.js +2 -2
- package/lib/bugs/agenda-00011.js +2 -2
- package/lib/bugs.js +5 -3
- package/lib/cleaners/actes_legislatifs.js +3 -1
- package/lib/cleaners/acteurs.js +5 -3
- package/lib/cleaners/amendements.js +2 -2
- package/lib/cleaners/amendements.mjs +3 -7
- package/lib/cleaners/documents.js +3 -1
- package/lib/cleaners/dossiers_legislatifs.js +3 -1
- package/lib/cleaners/reunions.js +2 -2
- package/lib/cleaners/scrutins.js +5 -3
- package/lib/cleaners/xml.js +3 -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 +3 -1
- package/lib/file_systems.js +5 -3
- package/lib/git.js +3 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +4 -2
- package/lib/index.mjs +3 -2
- package/lib/inserters.js +3 -1
- package/lib/inserters.mjs +1 -1
- package/lib/loaders.js +1 -1
- package/lib/loaders.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +4 -2
- package/lib/raw_types/acteurs_et_organes.js +2 -2
- package/lib/raw_types/agendas.d.ts +1 -0
- package/lib/raw_types/agendas.js +5 -4
- package/lib/raw_types/agendas.mjs +3 -2
- package/lib/raw_types/amendements.d.ts +3 -2
- package/lib/raw_types/amendements.js +22 -21
- package/lib/raw_types/amendements.mjs +18 -17
- package/lib/raw_types/dossiers_legislatifs.d.ts +97 -376
- package/lib/raw_types/dossiers_legislatifs.js +89 -413
- package/lib/raw_types/dossiers_legislatifs.mjs +83 -391
- package/lib/raw_types/scrutins.js +2 -2
- package/lib/scripts/clean_data.js +3 -3
- package/lib/scripts/clean_data.mjs +1 -1
- package/lib/scripts/clean_reorganized_data.js +3 -3
- package/lib/scripts/clean_reorganized_data.mjs +1 -1
- package/lib/scripts/diff_amendements.js +2 -2
- package/lib/scripts/document_dossiers_legislatifs.js +1 -1
- package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +3 -1
- package/lib/scripts/parse_textes_lois.js +3 -1
- package/lib/scripts/raw_types_from_amendements.js +3 -1
- package/lib/scripts/raw_types_from_amendements.mjs +1 -1
- package/lib/scripts/reorganize_data.js +5 -5
- package/lib/scripts/reorganize_data.mjs +1 -1
- package/lib/scripts/retrieve_deputes_photos.js +4 -4
- package/lib/scripts/retrieve_documents.js +3 -1
- package/lib/scripts/retrieve_open_data.js +3 -1
- package/lib/scripts/retrieve_open_data.mjs +1 -1
- package/lib/scripts/retrieve_pending_amendments.js +168 -155
- package/lib/scripts/retrieve_senateurs_photos.js +2 -2
- package/lib/scripts/retrieve_textes_lois.js +4 -4
- package/lib/scripts/test_load.js +3 -1
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +3 -1
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/shared_types/codes_actes.d.ts +413 -0
- package/lib/shared_types/codes_actes.js +262 -0
- package/lib/shared_types/codes_actes.mjs +227 -0
- package/lib/types/acteurs_et_organes.js +2 -2
- package/lib/types/agendas.js +2 -2
- package/lib/types/amendements.d.ts +1 -0
- package/lib/types/amendements.js +5 -4
- package/lib/types/amendements.mjs +3 -2
- package/lib/types/dossiers_legislatifs.d.ts +1 -413
- package/lib/types/dossiers_legislatifs.js +12 -262
- package/lib/types/dossiers_legislatifs.mjs +6 -231
- package/lib/types/scrutins.js +2 -2
- package/lib/urls.js +1 -1
- package/lib/urls.mjs +1 -1
- package/package.json +3 -3
package/lib/loaders.mjs
CHANGED
|
@@ -675,4 +675,4 @@ export function pathFromScrutinUid(scrutinsDir, uid) {
|
|
|
675
675
|
fs.ensureDirSync(numeroMilliersDir);
|
|
676
676
|
return path.join(numeroMilliersDir, uid);
|
|
677
677
|
}
|
|
678
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbImFzc2VydCIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImRhdGFzZXRzIiwid2Fsa0RpciIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJMZWdpc2xhdHVyZSIsIlNjcnV0aW5zQ29udmVydCIsImRvY3VtZW50VWlkUmVnZXgiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJlbmFibGVkRGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJBbGwiLCJkYXRhc2V0RGlyIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJhY3RldXJGaWxlUGF0aCIsImNvbnNvbGUiLCJhY3RldXJKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJhY3RldXIiLCJ0b0FjdGV1ciIsInVpZCIsInVuZGVmaW5lZCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwidG9PcmdhbmUiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uRmlsZVBhdGgiLCJyZXVuaW9uSnNvbiIsInJldW5pb24iLCJ0b1JldW5pb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5IiwicHVzaCIsIm9kaiIsInBvaW50T2RqIiwicG9pbnRzT2RqIiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsInJldW5pb25zQXREb3NzaWVyVWlkIiwiYW1lbmRlbWVudEJ5VWlkIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnQiLCJ0b0FtZW5kZW1lbnQiLCJkb2N1bWVudEJ5VWlkIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRGaWxlUGF0aCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50IiwidG9Eb2N1bWVudCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJRdWluemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlTGVnaXNsYXRpZiIsInRleHRlc0xlZ2lzbGF0aWZzIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsT0FBT0MsRUFBUCxNQUFlLFVBQWY7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCO1NBRVNDLGU7U0FDQUMsUSxFQUFVRCxlO1NBQ1ZFLE87U0FDQUEsTztTQUdQQyxPQUFPLElBQUlDLHVCO1NBSUpELE9BQU8sSUFBSUUsYztTQUNDRixPQUFPLElBQUlHLGtCO1NBRTlCSCxPQUFPLElBQUlJLDBCO1NBSUpDLFc7U0FDQUwsT0FBTyxJQUFJ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QUFWLEVBQXlCTCxLQUFLLENBQUUsQ0FBRixDQUE5QixDQUF2QjtBQUNBLE1BQUlRLE1BQU0sR0FBRyxXQUFXUixLQUFLLENBQUUsQ0FBRixDQUE3QjtBQUNBUSxFQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRCxNQUFNLENBQUMvRyxNQUFQLEdBQWdCLENBQTlCLENBQVQ7QUFDQSxRQUFNaUgsaUJBQWlCLEdBQUdsSixJQUFJLENBQUM0QixJQUFMLENBQVVrSCxjQUFWLEVBQTBCRSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxDQUFkLEVBQWlCLENBQWpCLENBQTFCLENBQTFCO0FBQ0FsSixFQUFBQSxFQUFFLENBQUNvSixhQUFILENBQWlCRCxpQkFBakI7QUFDQSxTQUFPbEosSUFBSSxDQUFDNEIsSUFBTCxDQUFVc0gsaUJBQVYsRUFBNkJ4RyxHQUE3QixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gTG9hZCBkYXRhIGZyb20gZmlsZXNcblxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5leHBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuZXhwb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxuICBQaG90byxcbn0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH1cbiAgcmVhZG9ubHkgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9XG59XG5cbmNvbnN0IGRvY3VtZW50VWlkUmVnZXggPSAvXihBQ0lOfEFWQ0V8QVZJU3xERUNMfEVUREl8TEVUVHxQSU9OfFBOUkV8UFJKTHxSQVBQfFJJTkYpKEFOfFNOKShSXFxkKylbTFNdKFxcZCspKEJ8QlRBfEJUQykoXFxkKykoLS4qKT8kL1xuY29uc3QgZG9zc2llclVpZFJlZ2V4ID0gL15ETChSXFxkKykoTFxcZCspTihcXGQrKSQvXG5jb25zdCByZXVuaW9uVWlkUmVnZXggPSAvXlJVKEFOfENHfFNOKShSXFxkKykoTFxcZCspKFtBU11cXGR7NH0pKElEQ3xJREZMP3xJRFMpKFxcZCspJC9cbmNvbnN0IHNjcnV0aW5VaWRSZWdleCA9IC9eVlRBTihSXFxkKykoTFxcZCspVihcXGQrKSQvXG5cbi8qKiBMb2FkIGRhdGEgZnJvbSBzcGxpdCBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YShcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJhY3RldXJzXCJdKSkge1xuICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hY3RldXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FjdGV1ckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFjdGV1ckZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke29yZ2FuZUZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZUZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3JldW5pb25GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocmV1bmlvbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCByZXVuaW9uID0gQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25Kc29uKVxuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YW1lbmRlbWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhbWVuZGVtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9IGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmRvY3VtZW50U3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb2N1bWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb3NzaWVyRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoXG4gICAgICAgICAgZG9zc2llckpzb24sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlF1aW56ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7c2NydXRpbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0ZXVyQnlVaWQsXG4gICAgYW1lbmRlbWVudEJ5VWlkLFxuICAgIGRvY3VtZW50QnlVaWQsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkLFxuICAgIG9yZ2FuZUJ5VWlkLFxuICAgIHBob3RvQnlVaWQsXG4gICAgcmV1bmlvbkJ5VWlkLFxuICAgIHJldW5pb25zQnlEYXksXG4gICAgcmV1bmlvbnNCeURvc3NpZXJVaWQsXG4gICAgc2NydXRpbkJ5VWlkLFxuICB9XG59XG5cbi8qKiBMb2FkIGRhdGEgZnJvbSBiaWcgbW9ub2x5dGljIGZpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFjdGV1cnNFdE9yZ2FuZXMgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnNFdE9yZ2FuZXMuYWN0ZXVycykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIGFjdGV1cnNFdE9yZ2FuZXMub3JnYW5lcykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWdlbmRhcyA9IEFnZW5kYXNDb252ZXJ0LnRvQWdlbmRhcyhqc29uKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIGFnZW5kYXMucmV1bmlvbnMpIHtcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhbWVuZGVtZW50cyA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnRzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBhbWVuZGVtZW50cy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgZG9zc2llcnNMZWdpc2xhdGlmcyA9IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhcbiAgICAgICAganNvbixcbiAgICAgIClcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuUXVpbnplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKGRvc3NpZXJzRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkb3NzaWVyVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9zc2llciBwYXJsZW1lbnRhaXJlIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGRvc3NpZXJzRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tUmV1bmlvblVpZChyZXVuaW9uc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gcmV1bmlvblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHJldW5pb24gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4ocmV1bmlvbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbMl0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVszXSlcbiAgY29uc3Qgc2Vzc2lvbkRpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzRdKVxuICBjb25zdCBpZERpciA9IHBhdGguam9pbihzZXNzaW9uRGlyLCBtYXRjaCFbNV0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMDAwMFwiICsgbWF0Y2ghWzZdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDkpXG4gIGNvbnN0IG51bWVyb01pbGxpb25zRGlyID0gcGF0aC5qb2luKGlkRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihudW1lcm9NaWxsaW9uc0RpciwgbnVtZXJvLnN1YnN0cigzLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21TY3J1dGluVWlkKHNjcnV0aW5zRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBzY3J1dGluVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3Igc2NydXRpbiBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihzY3J1dGluc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG4iXX0=
|
|
678
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbImFzc2VydCIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImRhdGFzZXRzIiwid2Fsa0RpciIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJMZWdpc2xhdHVyZSIsIlNjcnV0aW5zQ29udmVydCIsImRvY3VtZW50VWlkUmVnZXgiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJlbmFibGVkRGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJBbGwiLCJkYXRhc2V0RGlyIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJhY3RldXJGaWxlUGF0aCIsImNvbnNvbGUiLCJhY3RldXJKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJhY3RldXIiLCJ0b0FjdGV1ciIsInVpZCIsInVuZGVmaW5lZCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwidG9PcmdhbmUiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uRmlsZVBhdGgiLCJyZXVuaW9uSnNvbiIsInJldW5pb24iLCJ0b1JldW5pb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5IiwicHVzaCIsIm9kaiIsInBvaW50T2RqIiwicG9pbnRzT2RqIiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsInJldW5pb25zQXREb3NzaWVyVWlkIiwiYW1lbmRlbWVudEJ5VWlkIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnQiLCJ0b0FtZW5kZW1lbnQiLCJkb2N1bWVudEJ5VWlkIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRGaWxlUGF0aCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50IiwidG9Eb2N1bWVudCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJRdWluemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlTGVnaXNsYXRpZiIsInRleHRlc0xlZ2lzbGF0aWZzIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsT0FBT0MsRUFBUCxNQUFlLFVBQWY7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCO1NBRVNDLGU7U0FDQUMsUSxFQUFVRCxlO1NBQ1ZFLE87U0FDQUEsTztTQUdQQyxPQUFPLElBQUlDLHVCO1NBSUpELE9BQU8sSUFBSUUsYztTQUNDRixPQUFPLElBQUlHLGtCO1NBRTlCSCxPQUFPLElBQUlJLDBCO1NBSUpDLFc7U0FDQUwsT0FBTyxJQUFJ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QUF5QkwsS0FBSyxDQUFFLENBQUYsQ0FBOUIsQ0FBdkI7QUFDQSxNQUFJUSxNQUFNLEdBQUcsV0FBV1IsS0FBSyxDQUFFLENBQUYsQ0FBN0I7QUFDQVEsRUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0QsTUFBTSxDQUFDL0csTUFBUCxHQUFnQixDQUE5QixDQUFUO0FBQ0EsUUFBTWlILGlCQUFpQixHQUFHbEosSUFBSSxDQUFDNEIsSUFBTCxDQUFVa0gsY0FBVixFQUEwQkUsTUFBTSxDQUFDQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixDQUFqQixDQUExQixDQUExQjtBQUNBbEosRUFBQUEsRUFBRSxDQUFDb0osYUFBSCxDQUFpQkQsaUJBQWpCO0FBQ0EsU0FBT2xKLElBQUksQ0FBQzRCLElBQUwsQ0FBVXNILGlCQUFWLEVBQTZCeEcsR0FBN0IsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIExvYWQgZGF0YSBmcm9tIGZpbGVzXG5cbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuZXhwb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmV4cG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbiAgUGhvdG8sXG59IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH1cbiAgcmVhZG9ubHkgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH1cbiAgcmVhZG9ubHkgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9XG4gIHJlYWRvbmx5IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5jb25zdCBkb2N1bWVudFVpZFJlZ2V4ID1cbiAgL14oQUNJTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GKShBTnxTTikoUlxcZCspW0xTXShcXGQrKShCfEJUQXxCVEMpKFxcZCspKC0uKik/JC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUQU4oUlxcZCspKExcXGQrKVYoXFxkKykkL1xuXG4vKiogTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5RdWluemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG4vKiogTG9hZCBkYXRhIGZyb20gYmlnIG1vbm9seXRpYyBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhY3RldXJzRXRPcmdhbmVzID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBhY3RldXJzRXRPcmdhbmVzLmFjdGV1cnMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBhY3RldXJzRXRPcmdhbmVzLm9yZ2FuZXMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFnZW5kYXMgPSBBZ2VuZGFzQ29udmVydC50b0FnZW5kYXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBhZ2VuZGFzLnJldW5pb25zKSB7XG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50cyhqc29uKVxuICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2YgYW1lbmRlbWVudHMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGRvc3NpZXJzTGVnaXNsYXRpZnMgPVxuICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoanNvbilcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuUXVpbnplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl19
|
|
@@ -130,7 +130,9 @@ _AsyncGenerator.prototype["return"] = function (arg) { return this._invoke("retu
|
|
|
130
130
|
|
|
131
131
|
function _AwaitValue(value) { this.wrapped = value; }
|
|
132
132
|
|
|
133
|
-
function _asyncIterator(iterable) { var method; if (typeof Symbol !== "undefined") {
|
|
133
|
+
function _asyncIterator(iterable) { var method, async, sync, retry = 2; if (typeof Symbol !== "undefined") { async = Symbol.asyncIterator; sync = Symbol.iterator; } while (retry--) { if (async && (method = iterable[async]) != null) { return method.call(iterable); } if (sync && (method = iterable[sync]) != null) { return new AsyncFromSyncIterator(method.call(iterable)); } async = "@@asyncIterator"; sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
134
|
+
|
|
135
|
+
function AsyncFromSyncIterator(s) { AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s; this.n = s.next; }; AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, "return": function _return(value) { var ret = this.s["return"]; if (ret === undefined) { return Promise.resolve({ value: value, done: true }); } return AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, "throw": function _throw(value) { var thr = this.s["return"]; if (thr === undefined) return Promise.reject(value); return AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }; function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) { return Promise.reject(new TypeError(r + " is not an object.")); } var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return new AsyncFromSyncIterator(s); }
|
|
134
136
|
|
|
135
137
|
function iterRechercheAmendements(_x, _x2, _x3, _x4, _x5) {
|
|
136
138
|
return _iterRechercheAmendements.apply(this, arguments);
|
|
@@ -607,4 +609,4 @@ function _iterRechercheRawAmendements() {
|
|
|
607
609
|
}));
|
|
608
610
|
return _iterRechercheRawAmendements.apply(this, arguments);
|
|
609
611
|
}
|
|
610
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXJzL3JlY2hlcmNoZV9hbWVuZGVtZW50cy50cyJdLCJuYW1lcyI6WyJpdGVyUmVjaGVyY2hlQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50c1NlYXJjaENhY2hlRGlyIiwidXJsIiwiaW5jcmVtZW50YWwiLCJtaW5EYXRlRGVwb3QiLCJtaW5EYXRlRXhhbWVuIiwib3B0aW9ucyIsIml0ZXJSZWNoZXJjaGVSYXdBbWVuZGVtZW50cyIsImFtZW5kZW1lbnRVcmxQYXRoIiwiYW1lbmRlbWVudCIsIkFtZW5kZW1lbnRzQ29udmVydCIsInRvQW1lbmRlbWVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmcyIsImVuc3VyZURpciIsImFzc2VydCIsInN0cmljdEVxdWFsIiwiZXhlYyIsIm5vdFN0cmljdEVxdWFsIiwiaW5jbHVkZXMiLCJhbWVuZGVtZW50TnVtYmVyIiwidmVyYm9zZSIsImNvbnNvbGUiLCJsb2ciLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInRleHQiLCJwYWdlIiwiaHRtbCIsInF1ZXJ5U2VsZWN0b3IiLCJhbWVuZGVtZW50c0NvdW50RGl2IiwiYW1lbmRlbWVudHNDb3VudCIsInBhcnNlSW50IiwiYW1lbmRlbWVudHNEaXYiLCJhbWVuZGVtZW50c1RhYmxlIiwidGZvb3RUciIsInRmb290VHJDZWxscyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJtYXAiLCJjZWxsIiwiYW1lbmRlbWVudHNUciIsImxlbmd0aCIsImFtZW5kZW1lbnRUciIsImFtZW5kZW1lbnRUZExpc3QiLCJvdXRlckhUTUwiLCJkYXRlRGVwb3RUZCIsImRhdGVEZXBvdCIsIkRhdGUiLCJsb2NhbGUiLCJmciIsInJlcHJlc2VudGF0aW9uIiwiZGF0ZUV4YW1lblRkIiwiZGF0ZUV4YW1lbiIsImdldEF0dHJpYnV0ZSIsInVuZGVmaW5lZCIsImFtZW5kZW1lbnRVcmxQYXRoU3BsaXR0ZWQiLCJzcGxpdCIsImFtZW5kZW1lbnRTZWFyY2hDYWNoZUZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJzbGljZSIsImRpcm5hbWUiLCJwYXRoRXhpc3RzIiwicmVhZEZpbGUiLCJleGlzdGluZ0FtZW5kZW1lbnRTZWFyY2hDYWNoZSIsImFtZW5kZW1lbnRUck91dGVySHRtbCIsImFtZW5kZW1lbnRTZWFyY2hDYWNoZSIsImpzWWFtbCIsImR1bXAiLCJwb3NpdGlvbiIsInNlYXJjaCIsInJlcGxhY2UiLCJzb3J0S2V5cyIsImJvZHkiLCJhbWVuZGVtZW50SHRtbFVybCIsIlVSTCIsInRvU3RyaW5nIiwiYW1lbmRlbWVudEh0bWxSZXNwb25zZSIsImFtZW5kZW1lbnRIdG1sUGFnZSIsImFtZW5kZW1lbnRIdG1sIiwiZm9ybWF0c0xpIiwianNvbkxpIiwiZmluZCIsImZvcm1hdExpIiwiZm9ybWF0U3BhbiIsImpzb25BIiwiYW1lbmRlbWVudEpzb25VcmxQYXRoIiwiYW1lbmRlbWVudEpzb25VcmwiLCJhbWVuZGVtZW50SnNvblJlc3BvbnNlIiwianNvbiIsIndyaXRlRmlsZSIsInBhZ2luYXRpb25BIiwidXJsUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBRXVCQSx3Qjs7Ozs7d0ZBQWhCLGlCQUNMQyx5QkFESyxFQUVMQyxHQUZLLEVBR0xDLFdBSEssRUFJTEMsWUFKSyxFQUtMQyxhQUxLO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNTEMsWUFBQUEsT0FOSywyREFNOEMsRUFOOUM7QUFBQTtBQUFBO0FBQUE7QUFBQSx1Q0FXQUMsMkJBQTJCLENBQzlC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O0FBQUE7O0FBQUE7QUFvUUdDLFlBQUFBLE9BcFFILEdBb1FhRCxXQUFXLENBQUN0QyxZQUFaLENBQXlCLE1BQXpCLENBcFFiOztBQXFRSHhDLCtCQUFPRyxjQUFQLENBQXNCNEUsT0FBdEIsRUFBK0J0QyxTQUEvQjs7QUFDQXZELFlBQUFBLEdBQUcsR0FBRyxJQUFJNEUsR0FBSixDQUFRaUIsT0FBUixFQUFrQixxQ0FBbEIsRUFBeURoQixRQUF6RCxFQUFOO0FBdFFHO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgZm9ybWF0SVNPIGZyb20gXCJkYXRlLWZucy9mb3JtYXRJU09cIlxuaW1wb3J0IHsgZnIgfSBmcm9tIFwiZGF0ZS1mbnMvbG9jYWxlXCJcbmltcG9ydCBwYXJzZURhdGUgZnJvbSBcImRhdGUtZm5zL3BhcnNlXCJcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcImRlZXAtZXF1YWxcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgZnJvbnRNYXR0ZXIgZnJvbSBcImZyb250LW1hdHRlclwiXG5pbXBvcnQganNZYW1sIGZyb20gXCJqcy15YW1sXCJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiXG5pbXBvcnQgeyBwYXJzZSBhcyBwYXJzZUh0bWwgfSBmcm9tIFwibm9kZS1odG1sLXBhcnNlclwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGNsZWFuQW1lbmRlbWVudCB9IGZyb20gXCIuLi9jbGVhbmVyc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50IGFzIFJhd0FtZW5kZW1lbnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBpdGVyUmVjaGVyY2hlQW1lbmRlbWVudHMoXG4gIGFtZW5kZW1lbnRzU2VhcmNoQ2FjaGVEaXI6IHN0cmluZyxcbiAgdXJsOiBzdHJpbmcsXG4gIGluY3JlbWVudGFsOiBib29sZWFuLFxuICBtaW5EYXRlRGVwb3Q/OiBzdHJpbmcgfCBudWxsLFxuICBtaW5EYXRlRXhhbWVuPzogc3RyaW5nIHwgbnVsbCxcbiAgb3B0aW9uczogeyBzaWxlbnQ/OiBib29sZWFuOyB2ZXJib3NlPzogYm9vbGVhbiB9ID0ge30sXG4pOiBBc3luY0dlbmVyYXRvcjxbc3RyaW5nLCBBbWVuZGVtZW50XSwgdm9pZCwgdW5rbm93bj4ge1xuICBmb3IgYXdhaXQgKGNvbnN0IFtcbiAgICBhbWVuZGVtZW50VXJsUGF0aCxcbiAgICBhbWVuZGVtZW50LFxuICBdIG9mIGl0ZXJSZWNoZXJjaGVSYXdBbWVuZGVtZW50cyhcbiAgICBhbWVuZGVtZW50c1NlYXJjaENhY2hlRGlyLFxuICAgIHVybCxcbiAgICBpbmNyZW1lbnRhbCxcbiAgICBtaW5EYXRlRGVwb3QsXG4gICAgbWluRGF0ZUV4YW1lbixcbiAgICBvcHRpb25zLFxuICApKSB7XG4gICAgY2xlYW5BbWVuZGVtZW50KGFtZW5kZW1lbnQpXG4gICAgLy8gRG91YmxlIGNvbnZlcnNpb24sIHRvIGNvbnZlcnQgc3RyaW5ncyB0byBkYXRlcy5cbiAgICB5aWVsZCBbXG4gICAgICBhbWVuZGVtZW50VXJsUGF0aCxcbiAgICAgIEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCkpLFxuICAgIF1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGl0ZXJSZWNoZXJjaGVSYXdBbWVuZGVtZW50cyhcbiAgYW1lbmRlbWVudHNTZWFyY2hDYWNoZURpcjogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgaW5jcmVtZW50YWw6IGJvb2xlYW4sXG4gIG1pbkRhdGVEZXBvdD86IHN0cmluZyB8IG51bGwsXG4gIG1pbkRhdGVFeGFtZW4/OiBzdHJpbmcgfCBudWxsLFxuICBvcHRpb25zOiB7IHNpbGVudD86IGJvb2xlYW47IHZlcmJvc2U/OiBib29sZWFuIH0gPSB7fSxcbik6IEFzeW5jR2VuZXJhdG9yPFtzdHJpbmcsIFJhd0FtZW5kZW1lbnRdLCB2b2lkLCB1bmtub3duPiB7XG4gIGF3YWl0IGZzLmVuc3VyZURpcihhbWVuZGVtZW50c1NlYXJjaENhY2hlRGlyKVxuXG4gIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAvWz8mXWRhdGVfZGVwb3Q9Ly5leGVjKHVybCksXG4gICAgbnVsbCxcbiAgICBgVVJMICR7dXJsfSBhbHJlYWR5IGNvbnRhaW5zIGEgZGVwb3NpdCBkYXRlYCxcbiAgKVxuICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgL1s/Jl1vcmRlcj0vLmV4ZWModXJsKSxcbiAgICBudWxsLFxuICAgIGBVUkwgJHt1cmx9IGFscmVhZHkgY29udGFpbnMgYSBzb3J0IG9yZGVyYCxcbiAgKVxuICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgL1s/Jl1wYWdlPS8uZXhlYyh1cmwpLFxuICAgIG51bGwsXG4gICAgYFVSTCAke3VybH0gYWxyZWFkeSBjb250YWlucyBhIHBhZ2UgbnVtYmVyYCxcbiAgKVxuICBpZiAoaW5jcmVtZW50YWwpIHtcbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAvWz8mXWV0YXQ9Ly5leGVjKHVybCksXG4gICAgICBudWxsLFxuICAgICAgYEluIGluY3JlbWVudGFsIG1vZGUsIFVSTCAke3VybH0gbXVzdCBjb250YWluIGFuIFwiZXRhdFwiIHF1ZXJ5IHBhcmFtZXRlcmAsXG4gICAgKVxuICB9XG4gIHVybCArPSAodXJsLmluY2x1ZGVzKFwiP1wiKSA/IFwiJlwiIDogXCI/XCIpICsgXCJvcmRlcj1kYXRlX2RlcG90LGRlc2MmcGFnZT0xXCJcblxuICBpZiAobWluRGF0ZURlcG90ICE9IG51bGwpIHtcbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAvXFxkezR9LVxcZHsyfS1cXGR7Mn0vLmV4ZWMobWluRGF0ZURlcG90KSxcbiAgICAgIG51bGwsXG4gICAgICBgSW52YWxpZCBmb3JtYXQgZm9yIG1pbmltdW0gZGF0ZTogJHttaW5EYXRlRGVwb3R9YCxcbiAgICApXG4gIH1cblxuICBsZXQgYW1lbmRlbWVudE51bWJlciA9IDBcbiAgaXRlclNlYXJjaFBhZ2VzOiB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBGZXRjaGluZyBhbWVuZGVtZW50cyBzZWFyY2ggcGFnZSBhdCAke3VybH3igKZgKVxuICAgIH1cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICBhc3NlcnQoXG4gICAgICByZXNwb25zZS5vayxcbiAgICAgIGBSZXRyaWV2YWwgb2Ygc2VhcmNoIHBhZ2UgYXQgJHt1cmx9IGZhaWxlZCB3aXRoIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICAgKVxuICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCByZXNwb25zZS50ZXh0KClcbiAgICBjb25zdCBodG1sID0gcGFyc2VIdG1sKHBhZ2UpXG4gICAgaWYgKGh0bWwucXVlcnlTZWxlY3RvcihcImRpdi5uby1yZXN1bHRcIikgIT09IG51bGwpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNvbnN0IGFtZW5kZW1lbnRzQ291bnREaXYgPSBodG1sLnF1ZXJ5U2VsZWN0b3IoXCJkaXYubWlycm9yLWNhcmQtc3VidGl0bGVcIilcbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoYW1lbmRlbWVudHNDb3VudERpdiwgbnVsbClcbiAgICBjb25zdCBhbWVuZGVtZW50c0NvdW50ID0gcGFyc2VJbnQoL1xcZCsvLmV4ZWMoYW1lbmRlbWVudHNDb3VudERpdiEudGV4dCkhWzBdKVxuICAgIGNvbnN0IGFtZW5kZW1lbnRzRGl2ID0gaHRtbC5xdWVyeVNlbGVjdG9yKFxuICAgICAgXCJkaXYuYW1lbmRlbWVudC1saXN0LS1yZXN1bHRzLXRhYmxlXCIsXG4gICAgKVxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhbWVuZGVtZW50c0RpdiwgbnVsbClcbiAgICBjb25zdCBhbWVuZGVtZW50c1RhYmxlID0gYW1lbmRlbWVudHNEaXYhLnF1ZXJ5U2VsZWN0b3IoXCJ0YWJsZVwiKVxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhbWVuZGVtZW50c1RhYmxlLCBudWxsKVxuICAgIGNvbnN0IHRmb290VHIgPSBhbWVuZGVtZW50c1RhYmxlIS5xdWVyeVNlbGVjdG9yKFwidGZvb3QgPiB0clwiKVxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbCh0Zm9vdFRyLCBudWxsKVxuICAgIGNvbnN0IHRmb290VHJDZWxscyA9IHRmb290VHIhXG4gICAgICAucXVlcnlTZWxlY3RvckFsbChcInRkLCB0aFwiKVxuICAgICAgLm1hcCgoY2VsbCkgPT4gY2VsbC50ZXh0KVxuICAgIGFzc2VydChcbiAgICAgIGRlZXBFcXVhbCh0Zm9vdFRyQ2VsbHMsIFtcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCJuwrBcIixcbiAgICAgICAgXCJEb3NzaWVyIGzDqWdpc2xhdGlmXCIsXG4gICAgICAgIFwiRW1wbGFjZW1lbnRcIixcbiAgICAgICAgXCJBdXRldXJcIixcbiAgICAgICAgXCLDiXRhdFwiLFxuICAgICAgICBcIlNvcnRcIixcbiAgICAgICAgXCJEYXRlIGQnZXhhbWVuXCIsXG4gICAgICAgIFwiRXhhbWluw6kgcGFyXCIsXG4gICAgICAgIFwiVGV4dGUgdmlzw6lcIixcbiAgICAgICAgXCJEYXRlIGRlIGTDqXDDtHRcIixcbiAgICAgIF0pLFxuICAgICAgYFVuZXhwZWN0ZWQgY29sdW1ucyBpbiAke0pTT04uc3RyaW5naWZ5KHRmb290VHJDZWxscywgbnVsbCwgMil9YCxcbiAgICApXG4gICAgY29uc3QgYW1lbmRlbWVudHNUciA9IGFtZW5kZW1lbnRzVGFibGUhLnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0Ym9keSA+IHRyXCIpXG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGFtZW5kZW1lbnRzVHIubGVuZ3RoLCAwKVxuICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFRyIG9mIGFtZW5kZW1lbnRzVHIpIHtcbiAgICAgIGFtZW5kZW1lbnROdW1iZXIrK1xuXG4gICAgICBpZiAobWluRGF0ZURlcG90ICE9IG51bGwgfHwgbWluRGF0ZUV4YW1lbiAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRUZExpc3QgPSBhbWVuZGVtZW50VHIucXVlcnlTZWxlY3RvckFsbChcInRkXCIpXG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgICBhbWVuZGVtZW50VGRMaXN0Lmxlbmd0aCxcbiAgICAgICAgICAxMSxcbiAgICAgICAgICBgVW5leHBlY3RlZCBudW1iZXIgb2YgY29sdW1ucyBpbiBhbWVuZG1lbnQgcm93OiAke2FtZW5kZW1lbnRUci5vdXRlckhUTUx9YCxcbiAgICAgICAgKVxuICAgICAgICBpZiAobWluRGF0ZURlcG90ICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBkYXRlRGVwb3RUZCA9IGFtZW5kZW1lbnRUZExpc3RbMTBdXG4gICAgICAgICAgY29uc3QgZGF0ZURlcG90ID0gZm9ybWF0SVNPKFxuICAgICAgICAgICAgcGFyc2VEYXRlKGRhdGVEZXBvdFRkLnRleHQsIFwiZCBNTU1NIHlcIiwgbmV3IERhdGUoKSwgeyBsb2NhbGU6IGZyIH0pLFxuICAgICAgICAgICAgeyByZXByZXNlbnRhdGlvbjogXCJkYXRlXCIgfSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGRhdGVEZXBvdCA8IG1pbkRhdGVEZXBvdCkge1xuICAgICAgICAgICAgLy8gU2luY2UgdGhlIGFtZW5kbWVudHMgYXJlIHNvcnRlZCBieSBkZXBvc2l0IGRhdGUsIG9uY2UgYW4gYW1lbmRtZW50XG4gICAgICAgICAgICAvLyB3aXRoIGFuIG9sZCBkZXBvc2l0IGRhdGUgaXMgZW5jb3VudGVyZWQsIHRoZSBmdWxsIHNlYXJjaCBjYW4gYmUgc3RvcHBlZC5cbiAgICAgICAgICAgIGJyZWFrIGl0ZXJTZWFyY2hQYWdlc1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWluRGF0ZUV4YW1lbiAhPSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgZGF0ZUV4YW1lblRkID0gYW1lbmRlbWVudFRkTGlzdFs3XVxuICAgICAgICAgIGlmIChkYXRlRXhhbWVuVGQudGV4dCkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZUV4YW1lbiA9IGZvcm1hdElTTyhcbiAgICAgICAgICAgICAgcGFyc2VEYXRlKGRhdGVFeGFtZW5UZC50ZXh0LCBcImQgTU1NTSB5XCIsIG5ldyBEYXRlKCksIHtcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGZyLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgeyByZXByZXNlbnRhdGlvbjogXCJkYXRlXCIgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChkYXRlRXhhbWVuIDwgbWluRGF0ZUV4YW1lbikge1xuICAgICAgICAgICAgICAvLyBUaGlzIGFtZW5kbWVudCBoYXMgYmVlbiBkaXNjdXNzZWQgc2luY2UgYSBmZXcgZGF5cy5cbiAgICAgICAgICAgICAgLy8gPT4gSWdub3JlIGl0LCBiZWNhdXNlIGl0IHNob3VsZCBiZSBpbiBBc3NlbWJsw6llIG9wZW4gZGF0YS5cbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgYW1lbmRlbWVudFVybFBhdGggPSBhbWVuZGVtZW50VHIuZ2V0QXR0cmlidXRlKFwiZGF0YS1ocmVmXCIpXG4gICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoYW1lbmRlbWVudFVybFBhdGgsIHVuZGVmaW5lZClcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRVcmxQYXRoU3BsaXR0ZWQgPSBhbWVuZGVtZW50VXJsUGF0aCEuc3BsaXQoXCIvXCIpXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICAgIGFtZW5kZW1lbnRVcmxQYXRoU3BsaXR0ZWRbMF0sXG4gICAgICAgIFwiXCIsXG4gICAgICAgIGBVbmV4cGVjdGVkIFVSTCBwYXRoIGZvciBhbWVuZGVtZW50OiAke2FtZW5kZW1lbnRVcmxQYXRofWAsXG4gICAgICApXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICAgIGFtZW5kZW1lbnRVcmxQYXRoU3BsaXR0ZWRbMV0sXG4gICAgICAgIFwiZHluXCIsXG4gICAgICAgIGBVbmV4cGVjdGVkIFVSTCBwYXRoIGZvciBhbWVuZGVtZW50OiAke2FtZW5kZW1lbnRVcmxQYXRofWAsXG4gICAgICApXG4gICAgICBjb25zdCBhbWVuZGVtZW50U2VhcmNoQ2FjaGVGaWxlUGF0aCA9XG4gICAgICAgIHBhdGguam9pbihcbiAgICAgICAgICBhbWVuZGVtZW50c1NlYXJjaENhY2hlRGlyLFxuICAgICAgICAgIC4uLmFtZW5kZW1lbnRVcmxQYXRoU3BsaXR0ZWQuc2xpY2UoMiksXG4gICAgICAgICkgKyBcIi5odG1sXCJcbiAgICAgIGF3YWl0IGZzLmVuc3VyZURpcihwYXRoLmRpcm5hbWUoYW1lbmRlbWVudFNlYXJjaENhY2hlRmlsZVBhdGgpKVxuICAgICAgY29uc3QgZXhpc3RpbmdBbWVuZGVtZW50U2VhcmNoQ2FjaGUgPSAoYXdhaXQgZnMucGF0aEV4aXN0cyhcbiAgICAgICAgYW1lbmRlbWVudFNlYXJjaENhY2hlRmlsZVBhdGgsXG4gICAgICApKVxuICAgICAgICA/IGF3YWl0IGZzLnJlYWRGaWxlKGFtZW5kZW1lbnRTZWFyY2hDYWNoZUZpbGVQYXRoLCBcInV0ZjhcIilcbiAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCBhbWVuZGVtZW50VHJPdXRlckh0bWwgPSBhbWVuZGVtZW50VHIub3V0ZXJIVE1MXG4gICAgICBjb25zdCBhbWVuZGVtZW50U2VhcmNoQ2FjaGUgPSBgLS0tXFxuJHtqc1lhbWwuZHVtcChcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiBhbWVuZGVtZW50c0NvdW50IC0gYW1lbmRlbWVudE51bWJlcixcbiAgICAgICAgICBzZWFyY2g6IHVybC5yZXBsYWNlKC8mcGFnZT1bXFxkXSsvLCBcIlwiKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNvcnRLZXlzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgKX0tLS1cXG5cXG4ke2FtZW5kZW1lbnRUck91dGVySHRtbH1gXG4gICAgICBpZiAoYW1lbmRlbWVudFNlYXJjaENhY2hlID09PSBleGlzdGluZ0FtZW5kZW1lbnRTZWFyY2hDYWNoZSkge1xuICAgICAgICBpZiAoaW5jcmVtZW50YWwpIHtcbiAgICAgICAgICAvLyBUaGUgc2FtZSA8dHI+IGlzIGFscmVhZHkgaW4gY2FjaGUgYW5kIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICAgICAgICAgIC8vIEFzc3VtZSB0aGF0IGZvbGxvd2luZyBhbWVuZG1lbnRzIGFyZSBub3QgY2hhbmdlZCBhbmQgc3RvcCBsb29raW5nXG4gICAgICAgICAgLy8gZm9yIGFtZW5kbWVudHMgdG8gdXBzZXJ0LlxuICAgICAgICAgIGJyZWFrIGl0ZXJTZWFyY2hQYWdlc1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGV4aXN0aW5nQW1lbmRlbWVudFNlYXJjaENhY2hlICE9PSBudWxsICYmXG4gICAgICAgIGZyb250TWF0dGVyKGV4aXN0aW5nQW1lbmRlbWVudFNlYXJjaENhY2hlKS5ib2R5ID09PVxuICAgICAgICAgIGFtZW5kZW1lbnRUck91dGVySHRtbFxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZSBzYW1lIDx0cj4gaXMgYWxyZWFkeSBpbiBjYWNoZSwgYnV0IGluIGEgZGlmZmVyZW50IHBvc2l0aW9uLlxuICAgICAgICAvLyBBc3N1bWUgdGhlIGFtZW5kbWVudCBpcyB1bmNoYW5nZWQuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgIGlmIChleGlzdGluZ0FtZW5kZW1lbnRTZWFyY2hDYWNoZSA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYEFkZGluZyBhbWVuZGVtZW50IHNlYXJjaCBjYWNoZTogJHthbWVuZGVtZW50U2VhcmNoQ2FjaGVGaWxlUGF0aH3igKZgLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBVcGRhdGluZyBhbWVuZGVtZW50IHNlYXJjaCBjYWNoZTogJHthbWVuZGVtZW50U2VhcmNoQ2FjaGVGaWxlUGF0aH3igKZgLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgYW1lbmRlbWVudEh0bWxVcmwgPSBuZXcgVVJMKFxuICAgICAgICBhbWVuZGVtZW50VXJsUGF0aCEsXG4gICAgICAgIFwiaHR0cHM6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9cIixcbiAgICAgICkudG9TdHJpbmcoKVxuICAgICAgY29uc3QgYW1lbmRlbWVudEh0bWxSZXNwb25zZSA9IGF3YWl0IGZldGNoKGFtZW5kZW1lbnRIdG1sVXJsKVxuICAgICAgYXNzZXJ0KFxuICAgICAgICBhbWVuZGVtZW50SHRtbFJlc3BvbnNlLm9rLFxuICAgICAgICBgUmV0cmlldmFsIG9mIGFtZW5kZW1lbnQgSFRNTCBwYWdlIGF0ICR7YW1lbmRlbWVudEh0bWxVcmx9IGZhaWxlZCB3aXRoIGVycm9yOiAke2FtZW5kZW1lbnRIdG1sUmVzcG9uc2Uuc3RhdHVzfSAke2FtZW5kZW1lbnRIdG1sUmVzcG9uc2Uuc3RhdHVzVGV4dH1gLFxuICAgICAgKVxuICAgICAgY29uc3QgYW1lbmRlbWVudEh0bWxQYWdlID0gYXdhaXQgYW1lbmRlbWVudEh0bWxSZXNwb25zZS50ZXh0KClcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRIdG1sID0gcGFyc2VIdG1sKGFtZW5kZW1lbnRIdG1sUGFnZSlcbiAgICAgIGNvbnN0IGZvcm1hdHNMaSA9IGFtZW5kZW1lbnRIdG1sLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgIFwibGkubWlycm9yLWNhcmQtaGVhZGVyLS1vcHRpb25zLS1jb250ZW50LS1pdGVtXCIsXG4gICAgICApXG4gICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoZm9ybWF0c0xpLmxlbmd0aCwgMClcbiAgICAgIGNvbnN0IGpzb25MaSA9IGZvcm1hdHNMaS5maW5kKChmb3JtYXRMaSkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXRTcGFuID0gZm9ybWF0TGkucXVlcnlTZWxlY3RvcihcImEgPiBzcGFuXCIpXG4gICAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgICAgICBmb3JtYXRTcGFuLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYE5vIDxzcGFuPiBpbiA8YT4gZm91bmQgaW4gJHtmb3JtYXRMaS50b1N0cmluZygpfWAsXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIGZvcm1hdFNwYW4hLnRleHQgPT09IFwiVmVyc2lvbiBKU09OXCJcbiAgICAgIH0pXG4gICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAgIGpzb25MaSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBgTm8gSlNPTiB2ZXJzaW9uIGZvdW5kIGZvciBhbWVuZGVtZW50IGF0ICR7YW1lbmRlbWVudEh0bWxVcmx9YCxcbiAgICAgIClcbiAgICAgIGNvbnN0IGpzb25BID0ganNvbkxpIS5xdWVyeVNlbGVjdG9yKFwiYVwiKVxuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgICBqc29uQSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgYE5vIDxhPiBmb3VuZCBpbiAke2pzb25MaSEudG9TdHJpbmcoKX1gLFxuICAgICAgKVxuICAgICAgY29uc3QgYW1lbmRlbWVudEpzb25VcmxQYXRoID0ganNvbkEhLmdldEF0dHJpYnV0ZShcImhyZWZcIilcbiAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgICAgYW1lbmRlbWVudEpzb25VcmxQYXRoLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGBObyBVUkwgZm91bmQgZm9yIEpTT04gdmVyc2lvbiBvZiBhbWVuZGVtZW50OiAke2pzb25MaSEudG9TdHJpbmcoKX1gLFxuICAgICAgKVxuICAgICAgY29uc3QgYW1lbmRlbWVudEpzb25VcmwgPSBuZXcgVVJMKFxuICAgICAgICBhbWVuZGVtZW50SnNvblVybFBhdGghLFxuICAgICAgICBcImh0dHBzOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvXCIsXG4gICAgICApLnRvU3RyaW5nKClcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhbWVuZGVtZW50SnNvblVybClcbiAgICAgIGFzc2VydChcbiAgICAgICAgYW1lbmRlbWVudEpzb25SZXNwb25zZS5vayxcbiAgICAgICAgYFJldHJpZXZhbCBvZiBhbWVuZGVtZW50IEpTT04gcGFnZSBhdCAke2FtZW5kZW1lbnRKc29uVXJsfSBmYWlsZWQgd2l0aCBlcnJvcjogJHthbWVuZGVtZW50SnNvblJlc3BvbnNlLnN0YXR1c30gJHthbWVuZGVtZW50SnNvblJlc3BvbnNlLnN0YXR1c1RleHR9YCxcbiAgICAgIClcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhd2FpdCBhbWVuZGVtZW50SnNvblJlc3BvbnNlLmpzb24oKVxuICAgICAgeWllbGQgW2FtZW5kZW1lbnRVcmxQYXRoISwgYW1lbmRlbWVudF1cblxuICAgICAgLy8gU2VhcmNoQ2FjaGUgbXVzdCBiZSB3cml0dGVuIGF0IHRoZSBlbmQgdG8gZW5zdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBpbiBhIGNvbnNpc3RlbnQgc3RhdGUsXG4gICAgICAvLyBldmVuIGlmIHNjcmlwdCBmYWlscyBhYnJ1cHRseS5cbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICAgICAgYW1lbmRlbWVudFNlYXJjaENhY2hlRmlsZVBhdGgsXG4gICAgICAgIGFtZW5kZW1lbnRTZWFyY2hDYWNoZSxcbiAgICAgICAgXCJ1dGY4XCIsXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgcGFnaW5hdGlvbkEgPSBodG1sLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBcImRpdi5hbi1wYWdpbmF0aW9uLS1pdGVtID4gaS5hbi1pY29ucy1jaGV2cm9uLXJpZ2h0IH4gYVwiLFxuICAgIClcbiAgICBpZiAocGFnaW5hdGlvbkEgPT09IG51bGwpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNvbnN0IHVybFBhdGggPSBwYWdpbmF0aW9uQS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpXG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHVybFBhdGgsIHVuZGVmaW5lZClcbiAgICB1cmwgPSBuZXcgVVJMKHVybFBhdGghLCBcImh0dHBzOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvXCIpLnRvU3RyaW5nKClcbiAgfVxufVxuIl19
|
|
612
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXJzL3JlY2hlcmNoZV9hbWVuZGVtZW50cy50cyJdLCJuYW1lcyI6WyJpdGVyUmVjaGVyY2hlQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50c1NlYXJjaENhY2hlRGlyIiwidXJsIiwiaW5jcmVtZW50YWwiLCJtaW5EYXRlRGVwb3QiLCJtaW5EYXRlRXhhbWVuIiwib3B0aW9ucyIsIml0ZXJSZWNoZXJjaGVSYXdBbWVuZGVtZW50cyIsImFtZW5kZW1lbnRVcmxQYXRoIiwiYW1lbmRlbWVudCIsIkFtZW5kZW1lbnRzQ29udmVydCIsInRvQW1lbmRlbWVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmcyIsImVuc3VyZURpciIsImFzc2VydCIsInN0cmljdEVxdWFsIiwiZXhlYyIsIm5vdFN0cmljdEVxdWFsIiwiaW5jbHVkZXMiLCJhbWVuZGVtZW50TnVtYmVyIiwidmVyYm9zZSIsImNvbnNvbGUiLCJsb2ciLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInRleHQiLCJwYWdlIiwiaHRtbCIsInF1ZXJ5U2VsZWN0b3IiLCJhbWVuZGVtZW50c0NvdW50RGl2IiwiYW1lbmRlbWVudHNDb3VudCIsInBhcnNlSW50IiwiYW1lbmRlbWVudHNEaXYiLCJhbWVuZGVtZW50c1RhYmxlIiwidGZvb3RUciIsInRmb290VHJDZWxscyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJtYXAiLCJjZWxsIiwiYW1lbmRlbWVudHNUciIsImxlbmd0aCIsImFtZW5kZW1lbnRUciIsImFtZW5kZW1lbnRUZExpc3QiLCJvdXRlckhUTUwiLCJkYXRlRGVwb3RUZCIsImRhdGVEZXBvdCIsIkRhdGUiLCJsb2NhbGUiLCJmciIsInJlcHJlc2VudGF0aW9uIiwiZGF0ZUV4YW1lblRkIiwiZGF0ZUV4YW1lbiIsImdldEF0dHJpYnV0ZSIsInVuZGVmaW5lZCIsImFtZW5kZW1lbnRVcmxQYXRoU3BsaXR0ZWQiLCJzcGxpdCIsImFtZW5kZW1lbnRTZWFyY2hDYWNoZUZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJzbGljZSIsImRpcm5hbWUiLCJwYXRoRXhpc3RzIiwicmVhZEZpbGUiLCJleGlzdGluZ0FtZW5kZW1lbnRTZWFyY2hDYWNoZSIsImFtZW5kZW1lbnRUck91dGVySHRtbCIsImFtZW5kZW1lbnRTZWFyY2hDYWNoZSIsImpzWWFtbCIsImR1bXAiLCJwb3NpdGlvbiIsInNlYXJjaCIsInJlcGxhY2UiLCJzb3J0S2V5cyIsImJvZHkiLCJhbWVuZGVtZW50SHRtbFVybCIsIlVSTCIsInRvU3RyaW5nIiwiYW1lbmRlbWVudEh0bWxSZXNwb25zZSIsImFtZW5kZW1lbnRIdG1sUGFnZSIsImFtZW5kZW1lbnRIdG1sIiwiZm9ybWF0c0xpIiwianNvbkxpIiwiZmluZCIsImZvcm1hdExpIiwiZm9ybWF0U3BhbiIsImpzb25BIiwiYW1lbmRlbWVudEpzb25VcmxQYXRoIiwiYW1lbmRlbWVudEpzb25VcmwiLCJhbWVuZGVtZW50SnNvblJlc3BvbnNlIiwianNvbiIsIndyaXRlRmlsZSIsInBhZ2luYXRpb25BIiwidXJsUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FFdUJBLHdCOzs7Ozt3RkFBaEIsaUJBQ0xDLHlCQURLLEVBRUxDLEdBRkssRUFHTEMsV0FISyxFQUlMQyxZQUpLLEVBS0xDLGFBTEs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1MQyxZQUFBQSxPQU5LLDJEQU04QyxFQU45QztBQUFBO0FBQUE7QUFBQTtBQUFBLHVDQVdBQywyQkFBMkIsQ0FD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QTs7QUFBQTs7QUFBQTtBQW9RR0MsWUFBQUEsT0FwUUgsR0FvUWFELFdBQVcsQ0FBQ3RDLFlBQVosQ0FBeUIsTUFBekIsQ0FwUWI7O0FBcVFIeEMsK0JBQU9HLGNBQVAsQ0FBc0I0RSxPQUF0QixFQUErQnRDLFNBQS9COztBQUNBdkQsWUFBQUEsR0FBRyxHQUFHLElBQUk0RSxHQUFKLENBQVFpQixPQUFSLEVBQWtCLHFDQUFsQixFQUF5RGhCLFFBQXpELEVBQU47QUF0UUc7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmb3JtYXRJU08gZnJvbSBcImRhdGUtZm5zL2Zvcm1hdElTT1wiXG5pbXBvcnQgeyBmciB9IGZyb20gXCJkYXRlLWZucy9sb2NhbGVcIlxuaW1wb3J0IHBhcnNlRGF0ZSBmcm9tIFwiZGF0ZS1mbnMvcGFyc2VcIlxuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwiZGVlcC1lcXVhbFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBmcm9udE1hdHRlciBmcm9tIFwiZnJvbnQtbWF0dGVyXCJcbmltcG9ydCBqc1lhbWwgZnJvbSBcImpzLXlhbWxcIlxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCJcbmltcG9ydCB7IHBhcnNlIGFzIHBhcnNlSHRtbCB9IGZyb20gXCJub2RlLWh0bWwtcGFyc2VyXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgY2xlYW5BbWVuZGVtZW50IH0gZnJvbSBcIi4uL2NsZWFuZXJzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgYXMgUmF3QW1lbmRlbWVudCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGl0ZXJSZWNoZXJjaGVBbWVuZGVtZW50cyhcbiAgYW1lbmRlbWVudHNTZWFyY2hDYWNoZURpcjogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgaW5jcmVtZW50YWw6IGJvb2xlYW4sXG4gIG1pbkRhdGVEZXBvdD86IHN0cmluZyB8IG51bGwsXG4gIG1pbkRhdGVFeGFtZW4/OiBzdHJpbmcgfCBudWxsLFxuICBvcHRpb25zOiB7IHNpbGVudD86IGJvb2xlYW47IHZlcmJvc2U/OiBib29sZWFuIH0gPSB7fSxcbik6IEFzeW5jR2VuZXJhdG9yPFtzdHJpbmcsIEFtZW5kZW1lbnRdLCB2b2lkLCB1bmtub3duPiB7XG4gIGZvciBhd2FpdCAoY29uc3QgW1xuICAgIGFtZW5kZW1lbnRVcmxQYXRoLFxuICAgIGFtZW5kZW1lbnQsXG4gIF0gb2YgaXRlclJlY2hlcmNoZVJhd0FtZW5kZW1lbnRzKFxuICAgIGFtZW5kZW1lbnRzU2VhcmNoQ2FjaGVEaXIsXG4gICAgdXJsLFxuICAgIGluY3JlbWVudGFsLFxuICAgIG1pbkRhdGVEZXBvdCxcbiAgICBtaW5EYXRlRXhhbWVuLFxuICAgIG9wdGlvbnMsXG4gICkpIHtcbiAgICBjbGVhbkFtZW5kZW1lbnQoYW1lbmRlbWVudClcbiAgICAvLyBEb3VibGUgY29udmVyc2lvbiwgdG8gY29udmVydCBzdHJpbmdzIHRvIGRhdGVzLlxuICAgIHlpZWxkIFtcbiAgICAgIGFtZW5kZW1lbnRVcmxQYXRoLFxuICAgICAgQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50KSksXG4gICAgXVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogaXRlclJlY2hlcmNoZVJhd0FtZW5kZW1lbnRzKFxuICBhbWVuZGVtZW50c1NlYXJjaENhY2hlRGlyOiBzdHJpbmcsXG4gIHVybDogc3RyaW5nLFxuICBpbmNyZW1lbnRhbDogYm9vbGVhbixcbiAgbWluRGF0ZURlcG90Pzogc3RyaW5nIHwgbnVsbCxcbiAgbWluRGF0ZUV4YW1lbj86IHN0cmluZyB8IG51bGwsXG4gIG9wdGlvbnM6IHsgc2lsZW50PzogYm9vbGVhbjsgdmVyYm9zZT86IGJvb2xlYW4gfSA9IHt9LFxuKTogQXN5bmNHZW5lcmF0b3I8W3N0cmluZywgUmF3QW1lbmRlbWVudF0sIHZvaWQsIHVua25vd24+IHtcbiAgYXdhaXQgZnMuZW5zdXJlRGlyKGFtZW5kZW1lbnRzU2VhcmNoQ2FjaGVEaXIpXG5cbiAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgIC9bPyZdZGF0ZV9kZXBvdD0vLmV4ZWModXJsKSxcbiAgICBudWxsLFxuICAgIGBVUkwgJHt1cmx9IGFscmVhZHkgY29udGFpbnMgYSBkZXBvc2l0IGRhdGVgLFxuICApXG4gIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAvWz8mXW9yZGVyPS8uZXhlYyh1cmwpLFxuICAgIG51bGwsXG4gICAgYFVSTCAke3VybH0gYWxyZWFkeSBjb250YWlucyBhIHNvcnQgb3JkZXJgLFxuICApXG4gIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAvWz8mXXBhZ2U9Ly5leGVjKHVybCksXG4gICAgbnVsbCxcbiAgICBgVVJMICR7dXJsfSBhbHJlYWR5IGNvbnRhaW5zIGEgcGFnZSBudW1iZXJgLFxuICApXG4gIGlmIChpbmNyZW1lbnRhbCkge1xuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIC9bPyZdZXRhdD0vLmV4ZWModXJsKSxcbiAgICAgIG51bGwsXG4gICAgICBgSW4gaW5jcmVtZW50YWwgbW9kZSwgVVJMICR7dXJsfSBtdXN0IGNvbnRhaW4gYW4gXCJldGF0XCIgcXVlcnkgcGFyYW1ldGVyYCxcbiAgICApXG4gIH1cbiAgdXJsICs9ICh1cmwuaW5jbHVkZXMoXCI/XCIpID8gXCImXCIgOiBcIj9cIikgKyBcIm9yZGVyPWRhdGVfZGVwb3QsZGVzYyZwYWdlPTFcIlxuXG4gIGlmIChtaW5EYXRlRGVwb3QgIT0gbnVsbCkge1xuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIC9cXGR7NH0tXFxkezJ9LVxcZHsyfS8uZXhlYyhtaW5EYXRlRGVwb3QpLFxuICAgICAgbnVsbCxcbiAgICAgIGBJbnZhbGlkIGZvcm1hdCBmb3IgbWluaW11bSBkYXRlOiAke21pbkRhdGVEZXBvdH1gLFxuICAgIClcbiAgfVxuXG4gIGxldCBhbWVuZGVtZW50TnVtYmVyID0gMFxuICBpdGVyU2VhcmNoUGFnZXM6IHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coYEZldGNoaW5nIGFtZW5kZW1lbnRzIHNlYXJjaCBwYWdlIGF0ICR7dXJsfeKApmApXG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGFzc2VydChcbiAgICAgIHJlc3BvbnNlLm9rLFxuICAgICAgYFJldHJpZXZhbCBvZiBzZWFyY2ggcGFnZSBhdCAke3VybH0gZmFpbGVkIHdpdGggZXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCxcbiAgICApXG4gICAgY29uc3QgcGFnZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKVxuICAgIGNvbnN0IGh0bWwgPSBwYXJzZUh0bWwocGFnZSlcbiAgICBpZiAoaHRtbC5xdWVyeVNlbGVjdG9yKFwiZGl2Lm5vLXJlc3VsdFwiKSAhPT0gbnVsbCkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY29uc3QgYW1lbmRlbWVudHNDb3VudERpdiA9IGh0bWwucXVlcnlTZWxlY3RvcihcImRpdi5taXJyb3ItY2FyZC1zdWJ0aXRsZVwiKVxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhbWVuZGVtZW50c0NvdW50RGl2LCBudWxsKVxuICAgIGNvbnN0IGFtZW5kZW1lbnRzQ291bnQgPSBwYXJzZUludCgvXFxkKy8uZXhlYyhhbWVuZGVtZW50c0NvdW50RGl2IS50ZXh0KSFbMF0pXG4gICAgY29uc3QgYW1lbmRlbWVudHNEaXYgPSBodG1sLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBcImRpdi5hbWVuZGVtZW50LWxpc3QtLXJlc3VsdHMtdGFibGVcIixcbiAgICApXG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGFtZW5kZW1lbnRzRGl2LCBudWxsKVxuICAgIGNvbnN0IGFtZW5kZW1lbnRzVGFibGUgPSBhbWVuZGVtZW50c0RpdiEucXVlcnlTZWxlY3RvcihcInRhYmxlXCIpXG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGFtZW5kZW1lbnRzVGFibGUsIG51bGwpXG4gICAgY29uc3QgdGZvb3RUciA9IGFtZW5kZW1lbnRzVGFibGUhLnF1ZXJ5U2VsZWN0b3IoXCJ0Zm9vdCA+IHRyXCIpXG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHRmb290VHIsIG51bGwpXG4gICAgY29uc3QgdGZvb3RUckNlbGxzID0gdGZvb3RUciFcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKFwidGQsIHRoXCIpXG4gICAgICAubWFwKChjZWxsKSA9PiBjZWxsLnRleHQpXG4gICAgYXNzZXJ0KFxuICAgICAgZGVlcEVxdWFsKHRmb290VHJDZWxscywgW1xuICAgICAgICBcIlwiLFxuICAgICAgICBcIm7CsFwiLFxuICAgICAgICBcIkRvc3NpZXIgbMOpZ2lzbGF0aWZcIixcbiAgICAgICAgXCJFbXBsYWNlbWVudFwiLFxuICAgICAgICBcIkF1dGV1clwiLFxuICAgICAgICBcIsOJdGF0XCIsXG4gICAgICAgIFwiU29ydFwiLFxuICAgICAgICBcIkRhdGUgZCdleGFtZW5cIixcbiAgICAgICAgXCJFeGFtaW7DqSBwYXJcIixcbiAgICAgICAgXCJUZXh0ZSB2aXPDqVwiLFxuICAgICAgICBcIkRhdGUgZGUgZMOpcMO0dFwiLFxuICAgICAgXSksXG4gICAgICBgVW5leHBlY3RlZCBjb2x1bW5zIGluICR7SlNPTi5zdHJpbmdpZnkodGZvb3RUckNlbGxzLCBudWxsLCAyKX1gLFxuICAgIClcbiAgICBjb25zdCBhbWVuZGVtZW50c1RyID0gYW1lbmRlbWVudHNUYWJsZSEucXVlcnlTZWxlY3RvckFsbChcInRib2R5ID4gdHJcIilcbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoYW1lbmRlbWVudHNUci5sZW5ndGgsIDApXG4gICAgZm9yIChjb25zdCBhbWVuZGVtZW50VHIgb2YgYW1lbmRlbWVudHNUcikge1xuICAgICAgYW1lbmRlbWVudE51bWJlcisrXG5cbiAgICAgIGlmIChtaW5EYXRlRGVwb3QgIT0gbnVsbCB8fCBtaW5EYXRlRXhhbWVuICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudFRkTGlzdCA9IGFtZW5kZW1lbnRUci5xdWVyeVNlbGVjdG9yQWxsKFwidGRcIilcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICAgIGFtZW5kZW1lbnRUZExpc3QubGVuZ3RoLFxuICAgICAgICAgIDExLFxuICAgICAgICAgIGBVbmV4cGVjdGVkIG51bWJlciBvZiBjb2x1bW5zIGluIGFtZW5kbWVudCByb3c6ICR7YW1lbmRlbWVudFRyLm91dGVySFRNTH1gLFxuICAgICAgICApXG4gICAgICAgIGlmIChtaW5EYXRlRGVwb3QgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IGRhdGVEZXBvdFRkID0gYW1lbmRlbWVudFRkTGlzdFsxMF1cbiAgICAgICAgICBjb25zdCBkYXRlRGVwb3QgPSBmb3JtYXRJU08oXG4gICAgICAgICAgICBwYXJzZURhdGUoZGF0ZURlcG90VGQudGV4dCwgXCJkIE1NTU0geVwiLCBuZXcgRGF0ZSgpLCB7IGxvY2FsZTogZnIgfSksXG4gICAgICAgICAgICB7IHJlcHJlc2VudGF0aW9uOiBcImRhdGVcIiB9LFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAoZGF0ZURlcG90IDwgbWluRGF0ZURlcG90KSB7XG4gICAgICAgICAgICAvLyBTaW5jZSB0aGUgYW1lbmRtZW50cyBhcmUgc29ydGVkIGJ5IGRlcG9zaXQgZGF0ZSwgb25jZSBhbiBhbWVuZG1lbnRcbiAgICAgICAgICAgIC8vIHdpdGggYW4gb2xkIGRlcG9zaXQgZGF0ZSBpcyBlbmNvdW50ZXJlZCwgdGhlIGZ1bGwgc2VhcmNoIGNhbiBiZSBzdG9wcGVkLlxuICAgICAgICAgICAgYnJlYWsgaXRlclNlYXJjaFBhZ2VzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5EYXRlRXhhbWVuICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBkYXRlRXhhbWVuVGQgPSBhbWVuZGVtZW50VGRMaXN0WzddXG4gICAgICAgICAgaWYgKGRhdGVFeGFtZW5UZC50ZXh0KSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlRXhhbWVuID0gZm9ybWF0SVNPKFxuICAgICAgICAgICAgICBwYXJzZURhdGUoZGF0ZUV4YW1lblRkLnRleHQsIFwiZCBNTU1NIHlcIiwgbmV3IERhdGUoKSwge1xuICAgICAgICAgICAgICAgIGxvY2FsZTogZnIsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB7IHJlcHJlc2VudGF0aW9uOiBcImRhdGVcIiB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKGRhdGVFeGFtZW4gPCBtaW5EYXRlRXhhbWVuKSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgYW1lbmRtZW50IGhhcyBiZWVuIGRpc2N1c3NlZCBzaW5jZSBhIGZldyBkYXlzLlxuICAgICAgICAgICAgICAvLyA9PiBJZ25vcmUgaXQsIGJlY2F1c2UgaXQgc2hvdWxkIGJlIGluIEFzc2VtYmzDqWUgb3BlbiBkYXRhLlxuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBhbWVuZGVtZW50VXJsUGF0aCA9IGFtZW5kZW1lbnRUci5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhyZWZcIilcbiAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhbWVuZGVtZW50VXJsUGF0aCwgdW5kZWZpbmVkKVxuICAgICAgY29uc3QgYW1lbmRlbWVudFVybFBhdGhTcGxpdHRlZCA9IGFtZW5kZW1lbnRVcmxQYXRoIS5zcGxpdChcIi9cIilcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgYW1lbmRlbWVudFVybFBhdGhTcGxpdHRlZFswXSxcbiAgICAgICAgXCJcIixcbiAgICAgICAgYFVuZXhwZWN0ZWQgVVJMIHBhdGggZm9yIGFtZW5kZW1lbnQ6ICR7YW1lbmRlbWVudFVybFBhdGh9YCxcbiAgICAgIClcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgYW1lbmRlbWVudFVybFBhdGhTcGxpdHRlZFsxXSxcbiAgICAgICAgXCJkeW5cIixcbiAgICAgICAgYFVuZXhwZWN0ZWQgVVJMIHBhdGggZm9yIGFtZW5kZW1lbnQ6ICR7YW1lbmRlbWVudFVybFBhdGh9YCxcbiAgICAgIClcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRTZWFyY2hDYWNoZUZpbGVQYXRoID1cbiAgICAgICAgcGF0aC5qb2luKFxuICAgICAgICAgIGFtZW5kZW1lbnRzU2VhcmNoQ2FjaGVEaXIsXG4gICAgICAgICAgLi4uYW1lbmRlbWVudFVybFBhdGhTcGxpdHRlZC5zbGljZSgyKSxcbiAgICAgICAgKSArIFwiLmh0bWxcIlxuICAgICAgYXdhaXQgZnMuZW5zdXJlRGlyKHBhdGguZGlybmFtZShhbWVuZGVtZW50U2VhcmNoQ2FjaGVGaWxlUGF0aCkpXG4gICAgICBjb25zdCBleGlzdGluZ0FtZW5kZW1lbnRTZWFyY2hDYWNoZSA9IChhd2FpdCBmcy5wYXRoRXhpc3RzKFxuICAgICAgICBhbWVuZGVtZW50U2VhcmNoQ2FjaGVGaWxlUGF0aCxcbiAgICAgICkpXG4gICAgICAgID8gYXdhaXQgZnMucmVhZEZpbGUoYW1lbmRlbWVudFNlYXJjaENhY2hlRmlsZVBhdGgsIFwidXRmOFwiKVxuICAgICAgICA6IG51bGxcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRUck91dGVySHRtbCA9IGFtZW5kZW1lbnRUci5vdXRlckhUTUxcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRTZWFyY2hDYWNoZSA9IGAtLS1cXG4ke2pzWWFtbC5kdW1wKFxuICAgICAgICB7XG4gICAgICAgICAgcG9zaXRpb246IGFtZW5kZW1lbnRzQ291bnQgLSBhbWVuZGVtZW50TnVtYmVyLFxuICAgICAgICAgIHNlYXJjaDogdXJsLnJlcGxhY2UoLyZwYWdlPVtcXGRdKy8sIFwiXCIpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc29ydEtleXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICApfS0tLVxcblxcbiR7YW1lbmRlbWVudFRyT3V0ZXJIdG1sfWBcbiAgICAgIGlmIChhbWVuZGVtZW50U2VhcmNoQ2FjaGUgPT09IGV4aXN0aW5nQW1lbmRlbWVudFNlYXJjaENhY2hlKSB7XG4gICAgICAgIGlmIChpbmNyZW1lbnRhbCkge1xuICAgICAgICAgIC8vIFRoZSBzYW1lIDx0cj4gaXMgYWxyZWFkeSBpbiBjYWNoZSBhbmQgaW4gdGhlIHNhbWUgcG9zaXRpb24uXG4gICAgICAgICAgLy8gQXNzdW1lIHRoYXQgZm9sbG93aW5nIGFtZW5kbWVudHMgYXJlIG5vdCBjaGFuZ2VkIGFuZCBzdG9wIGxvb2tpbmdcbiAgICAgICAgICAvLyBmb3IgYW1lbmRtZW50cyB0byB1cHNlcnQuXG4gICAgICAgICAgYnJlYWsgaXRlclNlYXJjaFBhZ2VzXG4gICAgICAgIH1cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZXhpc3RpbmdBbWVuZGVtZW50U2VhcmNoQ2FjaGUgIT09IG51bGwgJiZcbiAgICAgICAgZnJvbnRNYXR0ZXIoZXhpc3RpbmdBbWVuZGVtZW50U2VhcmNoQ2FjaGUpLmJvZHkgPT09XG4gICAgICAgICAgYW1lbmRlbWVudFRyT3V0ZXJIdG1sXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhlIHNhbWUgPHRyPiBpcyBhbHJlYWR5IGluIGNhY2hlLCBidXQgaW4gYSBkaWZmZXJlbnQgcG9zaXRpb24uXG4gICAgICAgIC8vIEFzc3VtZSB0aGUgYW1lbmRtZW50IGlzIHVuY2hhbmdlZC5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgaWYgKGV4aXN0aW5nQW1lbmRlbWVudFNlYXJjaENhY2hlID09PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgQWRkaW5nIGFtZW5kZW1lbnQgc2VhcmNoIGNhY2hlOiAke2FtZW5kZW1lbnRTZWFyY2hDYWNoZUZpbGVQYXRofeKApmAsXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYFVwZGF0aW5nIGFtZW5kZW1lbnQgc2VhcmNoIGNhY2hlOiAke2FtZW5kZW1lbnRTZWFyY2hDYWNoZUZpbGVQYXRofeKApmAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBhbWVuZGVtZW50SHRtbFVybCA9IG5ldyBVUkwoXG4gICAgICAgIGFtZW5kZW1lbnRVcmxQYXRoISxcbiAgICAgICAgXCJodHRwczovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL1wiLFxuICAgICAgKS50b1N0cmluZygpXG4gICAgICBjb25zdCBhbWVuZGVtZW50SHRtbFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYW1lbmRlbWVudEh0bWxVcmwpXG4gICAgICBhc3NlcnQoXG4gICAgICAgIGFtZW5kZW1lbnRIdG1sUmVzcG9uc2Uub2ssXG4gICAgICAgIGBSZXRyaWV2YWwgb2YgYW1lbmRlbWVudCBIVE1MIHBhZ2UgYXQgJHthbWVuZGVtZW50SHRtbFVybH0gZmFpbGVkIHdpdGggZXJyb3I6ICR7YW1lbmRlbWVudEh0bWxSZXNwb25zZS5zdGF0dXN9ICR7YW1lbmRlbWVudEh0bWxSZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICAgICApXG4gICAgICBjb25zdCBhbWVuZGVtZW50SHRtbFBhZ2UgPSBhd2FpdCBhbWVuZGVtZW50SHRtbFJlc3BvbnNlLnRleHQoKVxuICAgICAgY29uc3QgYW1lbmRlbWVudEh0bWwgPSBwYXJzZUh0bWwoYW1lbmRlbWVudEh0bWxQYWdlKVxuICAgICAgY29uc3QgZm9ybWF0c0xpID0gYW1lbmRlbWVudEh0bWwucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgXCJsaS5taXJyb3ItY2FyZC1oZWFkZXItLW9wdGlvbnMtLWNvbnRlbnQtLWl0ZW1cIixcbiAgICAgIClcbiAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChmb3JtYXRzTGkubGVuZ3RoLCAwKVxuICAgICAgY29uc3QganNvbkxpID0gZm9ybWF0c0xpLmZpbmQoKGZvcm1hdExpKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdFNwYW4gPSBmb3JtYXRMaS5xdWVyeVNlbGVjdG9yKFwiYSA+IHNwYW5cIilcbiAgICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgICAgIGZvcm1hdFNwYW4sXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBgTm8gPHNwYW4+IGluIDxhPiBmb3VuZCBpbiAke2Zvcm1hdExpLnRvU3RyaW5nKCl9YCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gZm9ybWF0U3BhbiEudGV4dCA9PT0gXCJWZXJzaW9uIEpTT05cIlxuICAgICAgfSlcbiAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgICAganNvbkxpLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGBObyBKU09OIHZlcnNpb24gZm91bmQgZm9yIGFtZW5kZW1lbnQgYXQgJHthbWVuZGVtZW50SHRtbFVybH1gLFxuICAgICAgKVxuICAgICAgY29uc3QganNvbkEgPSBqc29uTGkhLnF1ZXJ5U2VsZWN0b3IoXCJhXCIpXG4gICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAgIGpzb25BLFxuICAgICAgICBudWxsLFxuICAgICAgICBgTm8gPGE+IGZvdW5kIGluICR7anNvbkxpIS50b1N0cmluZygpfWAsXG4gICAgICApXG4gICAgICBjb25zdCBhbWVuZGVtZW50SnNvblVybFBhdGggPSBqc29uQSEuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKVxuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgICBhbWVuZGVtZW50SnNvblVybFBhdGgsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYE5vIFVSTCBmb3VuZCBmb3IgSlNPTiB2ZXJzaW9uIG9mIGFtZW5kZW1lbnQ6ICR7anNvbkxpIS50b1N0cmluZygpfWAsXG4gICAgICApXG4gICAgICBjb25zdCBhbWVuZGVtZW50SnNvblVybCA9IG5ldyBVUkwoXG4gICAgICAgIGFtZW5kZW1lbnRKc29uVXJsUGF0aCEsXG4gICAgICAgIFwiaHR0cHM6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9cIixcbiAgICAgICkudG9TdHJpbmcoKVxuICAgICAgY29uc3QgYW1lbmRlbWVudEpzb25SZXNwb25zZSA9IGF3YWl0IGZldGNoKGFtZW5kZW1lbnRKc29uVXJsKVxuICAgICAgYXNzZXJ0KFxuICAgICAgICBhbWVuZGVtZW50SnNvblJlc3BvbnNlLm9rLFxuICAgICAgICBgUmV0cmlldmFsIG9mIGFtZW5kZW1lbnQgSlNPTiBwYWdlIGF0ICR7YW1lbmRlbWVudEpzb25Vcmx9IGZhaWxlZCB3aXRoIGVycm9yOiAke2FtZW5kZW1lbnRKc29uUmVzcG9uc2Uuc3RhdHVzfSAke2FtZW5kZW1lbnRKc29uUmVzcG9uc2Uuc3RhdHVzVGV4dH1gLFxuICAgICAgKVxuICAgICAgY29uc3QgYW1lbmRlbWVudCA9IGF3YWl0IGFtZW5kZW1lbnRKc29uUmVzcG9uc2UuanNvbigpXG4gICAgICB5aWVsZCBbYW1lbmRlbWVudFVybFBhdGghLCBhbWVuZGVtZW50XVxuXG4gICAgICAvLyBTZWFyY2hDYWNoZSBtdXN0IGJlIHdyaXR0ZW4gYXQgdGhlIGVuZCB0byBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGluIGEgY29uc2lzdGVudCBzdGF0ZSxcbiAgICAgIC8vIGV2ZW4gaWYgc2NyaXB0IGZhaWxzIGFicnVwdGx5LlxuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKFxuICAgICAgICBhbWVuZGVtZW50U2VhcmNoQ2FjaGVGaWxlUGF0aCxcbiAgICAgICAgYW1lbmRlbWVudFNlYXJjaENhY2hlLFxuICAgICAgICBcInV0ZjhcIixcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBwYWdpbmF0aW9uQSA9IGh0bWwucXVlcnlTZWxlY3RvcihcbiAgICAgIFwiZGl2LmFuLXBhZ2luYXRpb24tLWl0ZW0gPiBpLmFuLWljb25zLWNoZXZyb24tcmlnaHQgfiBhXCIsXG4gICAgKVxuICAgIGlmIChwYWdpbmF0aW9uQSA9PT0gbnVsbCkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY29uc3QgdXJsUGF0aCA9IHBhZ2luYXRpb25BLmdldEF0dHJpYnV0ZShcImhyZWZcIilcbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwodXJsUGF0aCwgdW5kZWZpbmVkKVxuICAgIHVybCA9IG5ldyBVUkwodXJsUGF0aCEsIFwiaHR0cHM6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9cIikudG9TdHJpbmcoKVxuICB9XG59XG4iXX0=
|
|
@@ -4,8 +4,6 @@ require("core-js/modules/es.symbol.js");
|
|
|
4
4
|
|
|
5
5
|
require("core-js/modules/es.symbol.description.js");
|
|
6
6
|
|
|
7
|
-
require("core-js/modules/es.object.to-string.js");
|
|
8
|
-
|
|
9
7
|
require("core-js/modules/es.symbol.iterator.js");
|
|
10
8
|
|
|
11
9
|
require("core-js/modules/es.array.iterator.js");
|
|
@@ -23,6 +21,8 @@ require("core-js/modules/es.array.concat.js");
|
|
|
23
21
|
|
|
24
22
|
require("core-js/modules/es.array.for-each.js");
|
|
25
23
|
|
|
24
|
+
require("core-js/modules/es.object.to-string.js");
|
|
25
|
+
|
|
26
26
|
require("core-js/modules/web.dom-collections.for-each.js");
|
|
27
27
|
|
|
28
28
|
require("core-js/modules/es.array.index-of.js");
|
|
@@ -286,6 +286,7 @@ export declare enum LieuRef {
|
|
|
286
286
|
Slan101Rusvisc = "SLAN101RUSVISC",
|
|
287
287
|
Slan103Rus7040 = "SLAN103RUS7040",
|
|
288
288
|
Slan103Rus7042 = "SLAN103RUS7042",
|
|
289
|
+
Slan103Rus70422 = "SLAN103RUS70422",
|
|
289
290
|
Slan103Rus70424 = "SLAN103RUS70424",
|
|
290
291
|
Slan103Rus7044 = "SLAN103RUS7044",
|
|
291
292
|
Slan103Rus7070 = "SLAN103RUS7070",
|