@tricoteuses/assemblee 0.25.0 → 0.25.4
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.js +2 -2
- package/lib/raw_types/dossiers_legislatifs.d.ts +79 -723
- package/lib/raw_types/dossiers_legislatifs.js +184 -1681
- package/lib/raw_types/dossiers_legislatifs.mjs +179 -1657
- 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.js +2 -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/inserters.js
CHANGED
|
@@ -10,6 +10,8 @@ require("core-js/modules/es.array.from.js");
|
|
|
10
10
|
|
|
11
11
|
require("core-js/modules/es.string.iterator.js");
|
|
12
12
|
|
|
13
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
14
|
+
|
|
13
15
|
require("core-js/modules/es.symbol.js");
|
|
14
16
|
|
|
15
17
|
require("core-js/modules/es.symbol.description.js");
|
|
@@ -632,4 +634,4 @@ function insertScrutinReferences(scrutin, _data, visitedUids) {
|
|
|
632
634
|
|
|
633
635
|
return scrutin;
|
|
634
636
|
}
|
|
635
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwibmFtZXMiOlsiaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzIiwiYWN0ZSIsImRhdGEiLCJ2aXNpdGVkVWlkcyIsImhhcyIsInVpZCIsImFkZCIsImRvY3VtZW50QnlVaWQiLCJ1bmRlZmluZWQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZiIsImRvY3VtZW50IiwiZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUiLCJpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMiLCJvcmdhbmVCeVVpZCIsIm9yZ2FuZVJlZiIsIm9yZ2FuZSIsImluc2VydE9yZ2FuZVJlZmVyZW5jZXMiLCJwcm92ZW5hbmNlUmVmIiwicHJvdmVuYW5jZSIsImFjdGV1ckJ5VWlkIiwicmFwcG9ydGV1cnMiLCJyYXBwb3J0ZXVyIiwiYWN0ZXVyIiwiYWN0ZXVyUmVmIiwiaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyIsInJldW5pb25CeVVpZCIsInJldW5pb25SZWYiLCJyZXVuaW9uIiwiaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMiLCJvZGpSZWYiLCJvZGoiLCJwb2ludHNPZGoiLCJwb2ludE9kaiIsInRleHRlQWRvcHRlUmVmIiwidGV4dGVBZG9wdGUiLCJ0ZXh0ZUFzc29jaWVSZWYiLCJ0ZXh0ZUFzc29jaWUiLCJ0ZXh0ZXNBc3NvY2llcyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJ2b3RlUmVmIiwic2NydXRpbiIsInB1c2giLCJpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyIsInZvdGVzIiwiYWN0ZXNMZWdpc2xhdGlmcyIsImNoaWxkQWN0ZSIsIm1hbmRhdHMiLCJtYW5kYXQiLCJvcmdhbmVzIiwib3JnYW5lc1JlZnMiLCJpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyIsImFtZW5kZW1lbnQiLCJzaWduYXRhaXJlcyIsImF1dGV1ciIsImF1dGV1clJhcHBvcnRldXJPcmdhbmVSZWYiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lIiwiZ291dmVybmVtZW50UmVmIiwiZ291dmVybmVtZW50IiwiZ3JvdXBlUG9saXRpcXVlUmVmIiwiZ3JvdXBlUG9saXRpcXVlIiwiY29zaWduYXRhaXJlc1JlZnMiLCJjb3NpZ25hdGFpcmVzIiwiY29zaWduYXRhaXJlUmVmIiwiY29zaWduYXRhaXJlIiwiaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzIiwiZGl2aXNpb24iLCJhdXRldXJzIiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJkaXZpc2lvbnMiLCJjaGlsZERpdmlzaW9uIiwiaW5pdGlhdGV1ciIsImFjdGV1cnMiLCJtYW5kYXRSZWYiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJkZW1hbmRldXJzIiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJwYXJ0aWNpcGFudHNJbnRlcm5lcyIsInBhcnRpY2lwYW50SW50ZXJuZSIsIl9kYXRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLFNBQVNBLDhCQUFULENBQ0VDLElBREYsRUFFRUMsSUFGRixFQUdFQyxXQUhGLEVBSUU7QUFDQSxNQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBWixDQUFnQkgsSUFBSSxDQUFDSSxHQUFyQixDQUFMLEVBQWdDO0FBQzlCRixJQUFBQSxXQUFXLENBQUNHLEdBQVosQ0FBZ0JMLElBQUksQ0FBQ0ksR0FBckI7O0FBRUEsUUFBSUgsSUFBSSxDQUFDSyxhQUFMLEtBQXVCQyxTQUF2QixJQUFvQ1AsSUFBSSxDQUFDUSxnQ0FBTCxLQUEwQ0QsU0FBbEYsRUFBNkY7QUFDM0YsVUFBTUUsUUFBUSxHQUFHUixJQUFJLENBQUNLLGFBQUwsQ0FBbUJOLElBQUksQ0FBQ1EsZ0NBQXhCLENBQWpCOztBQUNB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b0Usa0JBQWtCLENBQUNoRSxTQUFwQyxDQUFmOztBQUNBLGdCQUFJRCxPQUFNLEtBQUtkLFNBQWYsRUFBMEI7QUFDeEIrRSxjQUFBQSxrQkFBa0IsQ0FBQ2pFLE1BQW5CLEdBQTRCQSxPQUE1QjtBQUNBRSxjQUFBQSxzQkFBc0IsQ0FBQ0YsT0FBRCxFQUFTcEIsSUFBVCxFQUFlQyxXQUFmLENBQXRCO0FBQ0Q7QUFDRjtBQVI2QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUy9CO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPd0IsT0FBUDtBQUNEOztBQUVNLFNBQVNpQix1QkFBVCxDQUNMRixPQURLLEVBRUw4QyxLQUZLLEVBR0xyRixXQUhLLEVBSUw7QUFDQSxNQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBWixDQUFnQnNDLE9BQU8sQ0FBQ3JDLEdBQXhCLENBQUwsRUFBbUM7QUFDakNGLElBQUFBLFdBQVcsQ0FBQ0csR0FBWixDQUFnQm9DLE9BQU8sQ0FBQ3JDLEdBQXhCLEVBRGlDLENBR2pDO0FBQ0Q7O0FBRUQsU0FBT3FDLE9BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGV1ciwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoXG4gIGFjdGU6IEFjdGVMZWdpc2xhdGlmLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGUudWlkKVxuXG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUucHJvdmVuYW5jZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnByb3ZlbmFuY2UgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmFwcG9ydGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCByYXBwb3J0ZXVyIG9mIGFjdGUucmFwcG9ydGV1cnMpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtyYXBwb3J0ZXVyLmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwcG9ydGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEucmV1bmlvbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yZXVuaW9uUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJldW5pb24gPSBkYXRhLnJldW5pb25CeVVpZFthY3RlLnJldW5pb25SZWZdXG4gICAgICBpZiAocmV1bmlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucmV1bmlvbiA9IHJldW5pb25cbiAgICAgICAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMocmV1bmlvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIGlmIChhY3RlLm9kalJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQgJiYgb2RqLnBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGopIHtcbiAgICAgICAgICAgICAgaWYgKHBvaW50T2RqLnVpZCA9PT0gYWN0ZS5vZGpSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RlLm9kaiA9IHBvaW50T2RqXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZUFkb3B0ZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQWRvcHRlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFkb3B0ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLnRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVzQXNzb2NpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXh0ZUFzc29jaWUgb2YgYWN0ZS50ZXh0ZXNBc3NvY2llcykge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFt0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuc2NydXRpbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS52b3RlUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzY3J1dGlucyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHZvdGVSZWYgb2YgYWN0ZS52b3RlUmVmcykge1xuICAgICAgICBjb25zdCBzY3J1dGluID0gZGF0YS5zY3J1dGluQnlVaWRbdm90ZVJlZl1cbiAgICAgICAgaWYgKHNjcnV0aW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhzY3J1dGluLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0ZS52b3RlcyA9IHNjcnV0aW5zXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZEFjdGUgb2YgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzIHx8IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoY2hpbGRBY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhcbiAgYWN0ZXVyOiBBY3RldXIsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RldXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RldXIudWlkKVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgb3JnYW5lUmVmIG9mIG1hbmRhdC5vcmdhbmVzUmVmcykge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lcy5wdXNoKG9yZ2FuZSlcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFuZGF0Lm9yZ2FuZXMgPSBvcmdhbmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMoXG4gIGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYW1lbmRlbWVudC51aWQpXG5cbiAgICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAgICBjb25zdCBhdXRldXIgPSBzaWduYXRhaXJlcy5hdXRldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5hY3RldXJSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthdXRldXIuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGF1dGV1clJhcHBvcnRldXJPcmdhbmUgPVxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmXVxuICAgICAgaWYgKGF1dGV1clJhcHBvcnRldXJPcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9IGF1dGV1clJhcHBvcnRldXJPcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhhdXRldXJSYXBwb3J0ZXVyT3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ291dmVybmVtZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGdvdXZlcm5lbWVudCA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdvdXZlcm5lbWVudFJlZl1cbiAgICAgIGlmIChnb3V2ZXJuZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ291dmVybmVtZW50ID0gZ291dmVybmVtZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoZ291dmVybmVtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29zaWduYXRhaXJlc1JlZnMgPSBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmc1xuICAgICAgaWYgKGNvc2lnbmF0YWlyZXNSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29zaWduYXRhaXJlcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgY29zaWduYXRhaXJlUmVmIG9mIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgY29zaWduYXRhaXJlID0gZGF0YS5hY3RldXJCeVVpZFtjb3NpZ25hdGFpcmVSZWZdXG4gICAgICAgICAgaWYgKGNvc2lnbmF0YWlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3NpZ25hdGFpcmVzLnB1c2goY29zaWduYXRhaXJlKVxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhjb3NpZ25hdGFpcmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzID0gY29zaWduYXRhaXJlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbWVuZGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhcbiAgZGl2aXNpb246IERpdmlzaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgZm9yIChjb25zdCBhdXRldXIgb2YgZGl2aXNpb24uYXV0ZXVycykge1xuICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZGl2aXNpb24uZG9zc2llclJlZl1cbiAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXZpc2lvbi5kb3NzaWVyID0gZG9zc2llclxuICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZERpdmlzaW9uIG9mIGRpdmlzaW9uLmRpdmlzaW9ucyB8fCBbXSkge1xuICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhjaGlsZERpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgfVxuXG4gIHJldHVybiBkaXZpc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogRG9jdW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb2N1bWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvY3VtZW50LnVpZClcblxuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRvY3VtZW50LmF1dGV1cnMpIHtcbiAgICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RvY3VtZW50LmRvc3NpZXJSZWZdXG4gICAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZG9jdW1lbnQuZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoZGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2N1bWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoXG4gIGRvc3NpZXI6IERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9zc2llci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvc3NpZXIudWlkKVxuXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyA/PyBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYXRldXIgPSBkb3NzaWVyLmluaXRpYXRldXJcbiAgICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBpbml0aWF0ZXVyLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkubWFuZGF0UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChtYW5kYXQudWlkID09PSBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZikge1xuICAgICAgICAgICAgICAgIGFjdGV1clN1bW1hcnkubWFuZGF0ID0gbWFuZGF0XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbaW5pdGlhdGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluaXRpYXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvc3NpZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoXG4gIG9yZ2FuZTogT3JnYW5lLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQob3JnYW5lLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQYXJlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQYXJlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudCA9IG9yZ2FuZVBhcmVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVBhcmVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIG9yZ2FuZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMoXG4gIHJldW5pb246IFJldW5pb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhyZXVuaW9uLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQocmV1bmlvbi51aWQpXG5cbiAgICBjb25zdCBkZW1hbmRldXJzID0gcmV1bmlvbi5kZW1hbmRldXJzXG4gICAgaWYgKGRlbWFuZGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgZGVtYW5kZXVycy5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZVN1bW1hcnkgPSBkZW1hbmRldXJzLm9yZ2FuZVxuICAgICAgICBpZiAob3JnYW5lU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVTdW1tYXJ5Lm9yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZVN1bW1hcnkub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVSZXVuaSA9IGRhdGEub3JnYW5lQnlVaWRbcmV1bmlvbi5vcmdhbmVSZXVuaVJlZl1cbiAgICAgIGlmIChvcmdhbmVSZXVuaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldW5pb24ub3JnYW5lUmV1bmkgPSBvcmdhbmVSZXVuaVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVJldW5pLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRzID0gcmV1bmlvbi5wYXJ0aWNpcGFudHNcbiAgICAgIGlmIChwYXJ0aWNpcGFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50SW50ZXJuZSBvZiBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXMgfHxcbiAgICAgICAgICBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SW50ZXJuZS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV1bmlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoXG4gIHNjcnV0aW46IFNjcnV0aW4sXG4gIF9kYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHNjcnV0aW4udWlkKVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHNjcnV0aW5cbn1cbiJdfQ==
|
|
637
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwibmFtZXMiOlsiaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzIiwiYWN0ZSIsImRhdGEiLCJ2aXNpdGVkVWlkcyIsImhhcyIsInVpZCIsImFkZCIsImRvY3VtZW50QnlVaWQiLCJ1bmRlZmluZWQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZiIsImRvY3VtZW50IiwiZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUiLCJpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMiLCJvcmdhbmVCeVVpZCIsIm9yZ2FuZVJlZiIsIm9yZ2FuZSIsImluc2VydE9yZ2FuZVJlZmVyZW5jZXMiLCJwcm92ZW5hbmNlUmVmIiwicHJvdmVuYW5jZSIsImFjdGV1ckJ5VWlkIiwicmFwcG9ydGV1cnMiLCJyYXBwb3J0ZXVyIiwiYWN0ZXVyIiwiYWN0ZXVyUmVmIiwiaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyIsInJldW5pb25CeVVpZCIsInJldW5pb25SZWYiLCJyZXVuaW9uIiwiaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMiLCJvZGpSZWYiLCJvZGoiLCJwb2ludHNPZGoiLCJwb2ludE9kaiIsInRleHRlQWRvcHRlUmVmIiwidGV4dGVBZG9wdGUiLCJ0ZXh0ZUFzc29jaWVSZWYiLCJ0ZXh0ZUFzc29jaWUiLCJ0ZXh0ZXNBc3NvY2llcyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJ2b3RlUmVmIiwic2NydXRpbiIsInB1c2giLCJpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyIsInZvdGVzIiwiYWN0ZXNMZWdpc2xhdGlmcyIsImNoaWxkQWN0ZSIsIm1hbmRhdHMiLCJtYW5kYXQiLCJvcmdhbmVzIiwib3JnYW5lc1JlZnMiLCJpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyIsImFtZW5kZW1lbnQiLCJzaWduYXRhaXJlcyIsImF1dGV1ciIsImF1dGV1clJhcHBvcnRldXJPcmdhbmVSZWYiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lIiwiZ291dmVybmVtZW50UmVmIiwiZ291dmVybmVtZW50IiwiZ3JvdXBlUG9saXRpcXVlUmVmIiwiZ3JvdXBlUG9saXRpcXVlIiwiY29zaWduYXRhaXJlc1JlZnMiLCJjb3NpZ25hdGFpcmVzIiwiY29zaWduYXRhaXJlUmVmIiwiY29zaWduYXRhaXJlIiwiaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzIiwiZGl2aXNpb24iLCJhdXRldXJzIiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJkaXZpc2lvbnMiLCJjaGlsZERpdmlzaW9uIiwiaW5pdGlhdGV1ciIsImFjdGV1cnMiLCJtYW5kYXRSZWYiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJkZW1hbmRldXJzIiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJwYXJ0aWNpcGFudHNJbnRlcm5lcyIsInBhcnRpY2lwYW50SW50ZXJuZSIsIl9kYXRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkEsU0FBU0EsOEJBQVQsQ0FDRUMsSUFERixFQUVFQyxJQUZGLEVBR0VDLFdBSEYsRUFJRTtBQUNBLE1BQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFaLENBQWdCSCxJQUFJLENBQUNJLEdBQXJCLENBQUwsRUFBZ0M7QUFDOUJGLElBQUFBLFdBQVcsQ0FBQ0csR0FBWixDQUFnQkwsSUFBSSxDQUFDSSxHQUFyQjs7QUFFQSxRQUNFSCxJQUFJLENBQUNLLGFBQUwsS0FBdUJDLFNBQXZCLElBQ0FQLElBQUksQ0FBQ1EsZ0NBQUwsS0FBMENELFNBRjVDLEVBR0U7QUFDQSxVQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBTCxDQUFtQk4sSUFBSSxDQUFDUSxnQ0FBeEIsQ0FBakI7O0FBQ0Es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RSxrQkFBa0IsQ0FBQ2hFLFNBQXBDLENBQWY7O0FBQ0EsZ0JBQUlELE9BQU0sS0FBS2QsU0FBZixFQUEwQjtBQUN4QitFLGNBQUFBLGtCQUFrQixDQUFDakUsTUFBbkIsR0FBNEJBLE9BQTVCO0FBQ0FFLGNBQUFBLHNCQUFzQixDQUFDRixPQUFELEVBQVNwQixJQUFULEVBQWVDLFdBQWYsQ0FBdEI7QUFDRDtBQUNGO0FBUjZCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTL0I7QUFDRjtBQUNGOztBQUVELFNBQU93QixPQUFQO0FBQ0Q7O0FBRU0sU0FBU2lCLHVCQUFULENBQ0xGLE9BREssRUFFTDhDLEtBRkssRUFHTHJGLFdBSEssRUFJTDtBQUNBLE1BQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFaLENBQWdCc0MsT0FBTyxDQUFDckMsR0FBeEIsQ0FBTCxFQUFtQztBQUNqQ0YsSUFBQUEsV0FBVyxDQUFDRyxHQUFaLENBQWdCb0MsT0FBTyxDQUFDckMsR0FBeEIsRUFEaUMsQ0FHakM7QUFDRDs7QUFFRCxTQUFPcUMsT0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0ZXVyLCBPcmdhbmUgfSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCB9IGZyb20gXCIuL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIEFjdGVMZWdpc2xhdGlmLFxuICBEaXZpc2lvbixcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH1cbiAgcmVhZG9ubHkgYW1lbmRlbWVudEJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH1cbiAgcmVhZG9ubHkgZG9jdW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH1cbiAgcmVhZG9ubHkgb3JnYW5lQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHJldW5pb25CeVVpZD86IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZD86IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9XG59XG5cbmZ1bmN0aW9uIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhcbiAgYWN0ZTogQWN0ZUxlZ2lzbGF0aWYsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RlLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYWN0ZS51aWQpXG5cbiAgICBpZiAoXG4gICAgICBkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthY3RlLm9yZ2FuZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5wcm92ZW5hbmNlUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5wcm92ZW5hbmNlUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucHJvdmVuYW5jZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yYXBwb3J0ZXVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IHJhcHBvcnRldXIgb2YgYWN0ZS5yYXBwb3J0ZXVycykge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW3JhcHBvcnRldXIuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByYXBwb3J0ZXVyLmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5yZXVuaW9uQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnJldW5pb25SZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcmV1bmlvbiA9IGRhdGEucmV1bmlvbkJ5VWlkW2FjdGUucmV1bmlvblJlZl1cbiAgICAgIGlmIChyZXVuaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5yZXVuaW9uID0gcmV1bmlvblxuICAgICAgICBpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyhyZXVuaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgaWYgKGFjdGUub2RqUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCAmJiBvZGoucG9pbnRzT2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaikge1xuICAgICAgICAgICAgICBpZiAocG9pbnRPZGoudWlkID09PSBhY3RlLm9kalJlZikge1xuICAgICAgICAgICAgICAgIGFjdGUub2RqID0gcG9pbnRPZGpcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnRleHRlQWRvcHRlUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUudGV4dGVBZG9wdGVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnRleHRlQWRvcHRlID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGFjdGUudGV4dGVBc3NvY2llUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZXNBc3NvY2llcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IHRleHRlQXNzb2NpZSBvZiBhY3RlLnRleHRlc0Fzc29jaWVzKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW3RleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWVSZWZdXG4gICAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGV4dGVBc3NvY2llLnRleHRlQXNzb2NpZSA9IGRvY3VtZW50XG4gICAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5zY3J1dGluQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnZvdGVSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHNjcnV0aW5zID0gW11cbiAgICAgIGZvciAoY29uc3Qgdm90ZVJlZiBvZiBhY3RlLnZvdGVSZWZzKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBkYXRhLnNjcnV0aW5CeVVpZFt2b3RlUmVmXVxuICAgICAgICBpZiAoc2NydXRpbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbnMucHVzaChzY3J1dGluKVxuICAgICAgICAgIGluc2VydFNjcnV0aW5SZWZlcmVuY2VzKHNjcnV0aW4sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhY3RlLnZvdGVzID0gc2NydXRpbnNcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkQWN0ZSBvZiBhY3RlLmFjdGVzTGVnaXNsYXRpZnMgfHwgW10pIHtcbiAgICAgIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhjaGlsZEFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKFxuICBhY3RldXI6IEFjdGV1cixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFjdGV1ci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGV1ci51aWQpXG5cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IG1hbmRhdCBvZiBhY3RldXIubWFuZGF0cyB8fCBbXSkge1xuICAgICAgICBjb25zdCBvcmdhbmVzID0gW11cbiAgICAgICAgZm9yIChjb25zdCBvcmdhbmVSZWYgb2YgbWFuZGF0Lm9yZ2FuZXNSZWZzKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVSZWZdXG4gICAgICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcmdhbmVzLnB1c2gob3JnYW5lKVxuICAgICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtYW5kYXQub3JnYW5lcyA9IG9yZ2FuZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZXVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyhcbiAgYW1lbmRlbWVudDogQW1lbmRlbWVudCxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFtZW5kZW1lbnQudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhbWVuZGVtZW50LnVpZClcblxuICAgIGNvbnN0IHNpZ25hdGFpcmVzID0gYW1lbmRlbWVudC5zaWduYXRhaXJlc1xuICAgIGNvbnN0IGF1dGV1ciA9IHNpZ25hdGFpcmVzLmF1dGV1clxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLmFjdGV1clJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2F1dGV1ci5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmFjdGV1ciA9IGFjdGV1clxuICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9XG4gICAgICAgIGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmVSZWZdXG4gICAgICBpZiAoYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lID0gYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKGF1dGV1clJhcHBvcnRldXJPcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5nb3V2ZXJuZW1lbnRSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZ291dmVybmVtZW50ID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuZ291dmVybmVtZW50UmVmXVxuICAgICAgaWYgKGdvdXZlcm5lbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5nb3V2ZXJuZW1lbnQgPSBnb3V2ZXJuZW1lbnRcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhnb3V2ZXJuZW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5ncm91cGVQb2xpdGlxdWVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5ncm91cGVQb2xpdGlxdWUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBjb3NpZ25hdGFpcmVzUmVmcyA9IHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzXG4gICAgICBpZiAoY29zaWduYXRhaXJlc1JlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjb3NpZ25hdGFpcmVzID0gW11cbiAgICAgICAgZm9yIChjb25zdCBjb3NpZ25hdGFpcmVSZWYgb2Ygc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1JlZnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBjb3NpZ25hdGFpcmUgPSBkYXRhLmFjdGV1ckJ5VWlkW2Nvc2lnbmF0YWlyZVJlZl1cbiAgICAgICAgICBpZiAoY29zaWduYXRhaXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvc2lnbmF0YWlyZXMucHVzaChjb3NpZ25hdGFpcmUpXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGNvc2lnbmF0YWlyZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXMgPSBjb3NpZ25hdGFpcmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFtZW5kZW1lbnRcbn1cblxuZnVuY3Rpb24gaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKFxuICBkaXZpc2lvbjogRGl2aXNpb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBmb3IgKGNvbnN0IGF1dGV1ciBvZiBkaXZpc2lvbi5hdXRldXJzKSB7XG4gICAgY29uc3QgYWN0ZXVyU3VtbWFyeSA9IGF1dGV1ci5hY3RldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLm9yZ2FuZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRvc3NpZXIgPSBkYXRhLmRvc3NpZXJCeVVpZFtkaXZpc2lvbi5kb3NzaWVyUmVmXVxuICAgIGlmIChkb3NzaWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRpdmlzaW9uLmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhkb3NzaWVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGNoaWxkRGl2aXNpb24gb2YgZGl2aXNpb24uZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKGNoaWxkRGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICB9XG5cbiAgcmV0dXJuIGRpdmlzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoXG4gIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGRvY3VtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoZG9jdW1lbnQudWlkKVxuXG4gICAgZm9yIChjb25zdCBhdXRldXIgb2YgZG9jdW1lbnQuYXV0ZXVycykge1xuICAgICAgY29uc3QgYWN0ZXVyU3VtbWFyeSA9IGF1dGV1ci5hY3RldXJcbiAgICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLm9yZ2FuZVJlZl1cbiAgICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLmRvc3NpZXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZG9jdW1lbnQuZG9zc2llclJlZl1cbiAgICAgIGlmIChkb3NzaWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG9jdW1lbnQuZG9zc2llciA9IGRvc3NpZXJcbiAgICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkaXZpc2lvbiBvZiBkb2N1bWVudC5kaXZpc2lvbnMgfHwgW10pIHtcbiAgICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhkaXZpc2lvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvY3VtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhcbiAgZG9zc2llcjogRG9zc2llclBhcmxlbWVudGFpcmUsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb3NzaWVyLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoZG9zc2llci51aWQpXG5cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgZG9zc2llci5hY3Rlc0xlZ2lzbGF0aWZzID8/IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoYWN0ZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhdGV1ciA9IGRvc3NpZXIuaW5pdGlhdGV1clxuICAgIGlmIChpbml0aWF0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBhY3RldXJTdW1tYXJ5IG9mIGluaXRpYXRldXIuYWN0ZXVycyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeS5tYW5kYXRSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgICAgICAgaWYgKG1hbmRhdC51aWQgPT09IGFjdGV1clN1bW1hcnkubWFuZGF0UmVmKSB7XG4gICAgICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5tYW5kYXQgPSBtYW5kYXRcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBpbml0aWF0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtpbml0aWF0ZXVyLm9yZ2FuZVJlZl1cbiAgICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9zc2llclxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhcbiAgb3JnYW5lOiBPcmdhbmUsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhvcmdhbmUudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChvcmdhbmUudWlkKVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvcmdhbmUub3JnYW5lUGFyZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZVBhcmVudCA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lLm9yZ2FuZVBhcmVudFJlZl1cbiAgICAgIGlmIChvcmdhbmVQYXJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcmdhbmUub3JnYW5lUGFyZW50ID0gb3JnYW5lUGFyZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lUGFyZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gb3JnYW5lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyhcbiAgcmV1bmlvbjogUmV1bmlvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKHJldW5pb24udWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChyZXVuaW9uLnVpZClcblxuICAgIGNvbnN0IGRlbWFuZGV1cnMgPSByZXVuaW9uLmRlbWFuZGV1cnNcbiAgICBpZiAoZGVtYW5kZXVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBkZW1hbmRldXJzLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lU3VtbWFyeSA9IGRlbWFuZGV1cnMub3JnYW5lXG4gICAgICAgIGlmIChvcmdhbmVTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVN1bW1hcnkub3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lU3VtbWFyeS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICByZXVuaW9uLm9yZ2FuZVJldW5pUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZVJldW5pID0gZGF0YS5vcmdhbmVCeVVpZFtyZXVuaW9uLm9yZ2FuZVJldW5pUmVmXVxuICAgICAgaWYgKG9yZ2FuZVJldW5pICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaSA9IG9yZ2FuZVJldW5pXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lUmV1bmksIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudHMgPSByZXVuaW9uLnBhcnRpY2lwYW50c1xuICAgICAgaWYgKHBhcnRpY2lwYW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgcGFydGljaXBhbnRJbnRlcm5lIG9mIHBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudHNJbnRlcm5lcyB8fFxuICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtwYXJ0aWNpcGFudEludGVybmUuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXVuaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhcbiAgc2NydXRpbjogU2NydXRpbixcbiAgX2RhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhzY3J1dGluLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoc2NydXRpbi51aWQpXG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gc2NydXRpblxufVxuIl19
|
package/lib/inserters.mjs
CHANGED
|
@@ -410,4 +410,4 @@ export function insertScrutinReferences(scrutin, _data, visitedUids) {
|
|
|
410
410
|
|
|
411
411
|
return scrutin;
|
|
412
412
|
}
|
|
413
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwibmFtZXMiOlsiaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzIiwiYWN0ZSIsImRhdGEiLCJ2aXNpdGVkVWlkcyIsImhhcyIsInVpZCIsImFkZCIsImRvY3VtZW50QnlVaWQiLCJ1bmRlZmluZWQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZiIsImRvY3VtZW50IiwiZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUiLCJpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMiLCJvcmdhbmVCeVVpZCIsIm9yZ2FuZVJlZiIsIm9yZ2FuZSIsImluc2VydE9yZ2FuZVJlZmVyZW5jZXMiLCJwcm92ZW5hbmNlUmVmIiwicHJvdmVuYW5jZSIsImFjdGV1ckJ5VWlkIiwicmFwcG9ydGV1cnMiLCJyYXBwb3J0ZXVyIiwiYWN0ZXVyIiwiYWN0ZXVyUmVmIiwiaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyIsInJldW5pb25CeVVpZCIsInJldW5pb25SZWYiLCJyZXVuaW9uIiwiaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMiLCJvZGpSZWYiLCJvZGoiLCJwb2ludHNPZGoiLCJwb2ludE9kaiIsInRleHRlQWRvcHRlUmVmIiwidGV4dGVBZG9wdGUiLCJ0ZXh0ZUFzc29jaWVSZWYiLCJ0ZXh0ZUFzc29jaWUiLCJ0ZXh0ZXNBc3NvY2llcyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJ2b3RlUmVmIiwic2NydXRpbiIsInB1c2giLCJpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyIsInZvdGVzIiwiY2hpbGRBY3RlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIm1hbmRhdCIsIm1hbmRhdHMiLCJvcmdhbmVzIiwib3JnYW5lc1JlZnMiLCJpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyIsImFtZW5kZW1lbnQiLCJzaWduYXRhaXJlcyIsImF1dGV1ciIsImF1dGV1clJhcHBvcnRldXJPcmdhbmVSZWYiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lIiwiZ291dmVybmVtZW50UmVmIiwiZ291dmVybmVtZW50IiwiZ3JvdXBlUG9saXRpcXVlUmVmIiwiZ3JvdXBlUG9saXRpcXVlIiwiY29zaWduYXRhaXJlc1JlZnMiLCJjb3NpZ25hdGFpcmVzIiwiY29zaWduYXRhaXJlUmVmIiwiY29zaWduYXRhaXJlIiwiaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzIiwiZGl2aXNpb24iLCJhdXRldXJzIiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJjaGlsZERpdmlzaW9uIiwiZGl2aXNpb25zIiwiaW5pdGlhdGV1ciIsImFjdGV1cnMiLCJtYW5kYXRSZWYiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJkZW1hbmRldXJzIiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJwYXJ0aWNpcGFudEludGVybmUiLCJwYXJ0aWNpcGFudHNJbnRlcm5lcyIsIl9kYXRhIl0sIm1hcHBpbmdzIjoiQUFxQkEsU0FBU0EsOEJBQVQsQ0FDRUMsSUFERixFQUVFQyxJQUZGLEVBR0VDLFdBSEYsRUFJRTtBQUNBLE1BQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFaLENBQWdCSCxJQUFJLENBQUNJLEdBQXJCLENBQUwsRUFBZ0M7QUFDOUJGLElBQUFBLFdBQVcsQ0FBQ0csR0FBWixDQUFnQkwsSUFBSSxDQUFDSSxHQUFyQjs7QUFFQSxRQUFJSCxJQUFJLENBQUNLLGFBQUwsS0FBdUJDLFNBQXZCLElBQW9DUCxJQUFJLENBQUNRLGdDQUFMLEtBQTBDRCxTQUFsRixFQUE2RjtBQUMzRixZQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBTCxDQUFtQk4sSUFBSSxDQUFDUSxnQ0FBeEIsQ0FBakI7O0FBQ0EsVUFBSUMsUUFBUSxLQUFLRixTQUFqQixFQUE0QjtBQUMxQlAsUUFBQUEs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LElBQWlDRCxZQUFZLENBQUNFLG9CQUFiLElBQy9CLEVBREYsRUFDTTtBQUNKLGdCQUFNakUsTUFBTSxHQUFHcEIsSUFBSSxDQUFDaUIsV0FBTCxDQUFpQm1FLGtCQUFrQixDQUFDL0QsU0FBcEMsQ0FBZjs7QUFDQSxjQUFJRCxNQUFNLEtBQUtkLFNBQWYsRUFBMEI7QUFDeEI4RSxZQUFBQSxrQkFBa0IsQ0FBQ2hFLE1BQW5CLEdBQTRCQSxNQUE1QjtBQUNBRSxZQUFBQSxzQkFBc0IsQ0FBQ0YsTUFBRCxFQUFTcEIsSUFBVCxFQUFlQyxXQUFmLENBQXRCO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPd0IsT0FBUDtBQUNEO0FBRUQsT0FBTyxTQUFTaUIsdUJBQVQsQ0FDTEYsT0FESyxFQUVMOEMsS0FGSyxFQUdMckYsV0FISyxFQUlMO0FBQ0EsTUFBSSxDQUFDQSxXQUFXLENBQUNDLEdBQVosQ0FBZ0JzQyxPQUFPLENBQUNyQyxHQUF4QixDQUFMLEVBQW1DO0FBQ2pDRixJQUFBQSxXQUFXLENBQUNHLEdBQVosQ0FBZ0JvQyxPQUFPLENBQUNyQyxHQUF4QixFQURpQyxDQUdqQztBQUNEOztBQUVELFNBQU9xQyxPQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RldXIsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQWN0ZUxlZ2lzbGF0aWYsXG4gIERpdmlzaW9uLFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKFxuICBhY3RlOiBBY3RlTGVnaXNsYXRpZixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFjdGUudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RlLnVpZClcblxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUub3JnYW5lID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnByb3ZlbmFuY2VSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthY3RlLnByb3ZlbmFuY2VSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5wcm92ZW5hbmNlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnJhcHBvcnRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgcmFwcG9ydGV1ciBvZiBhY3RlLnJhcHBvcnRldXJzKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcmFwcG9ydGV1ci5hY3RldXJSZWZdXG4gICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcHBvcnRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnJldW5pb25CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmV1bmlvblJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXVuaW9uID0gZGF0YS5yZXVuaW9uQnlVaWRbYWN0ZS5yZXVuaW9uUmVmXVxuICAgICAgaWYgKHJldW5pb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnJldW5pb24gPSByZXVuaW9uXG4gICAgICAgIGluc2VydFJldW5pb25SZWZlcmVuY2VzKHJldW5pb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICBpZiAoYWN0ZS5vZGpSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkICYmIG9kai5wb2ludHNPZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqKSB7XG4gICAgICAgICAgICAgIGlmIChwb2ludE9kai51aWQgPT09IGFjdGUub2RqUmVmKSB7XG4gICAgICAgICAgICAgICAgYWN0ZS5vZGogPSBwb2ludE9kalxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVBZG9wdGVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFkb3B0ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBZG9wdGUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWN0ZS50ZXh0ZUFzc29jaWVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFzc29jaWVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnRleHRlQXNzb2NpZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnRleHRlc0Fzc29jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgdGV4dGVBc3NvY2llIG9mIGFjdGUudGV4dGVzQXNzb2NpZXMpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbdGV4dGVBc3NvY2llLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnNjcnV0aW5CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudm90ZVJlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2NydXRpbnMgPSBbXVxuICAgICAgZm9yIChjb25zdCB2b3RlUmVmIG9mIGFjdGUudm90ZVJlZnMpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IGRhdGEuc2NydXRpbkJ5VWlkW3ZvdGVSZWZdXG4gICAgICAgIGlmIChzY3J1dGluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGlucy5wdXNoKHNjcnV0aW4pXG4gICAgICAgICAgaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoc2NydXRpbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFjdGUudm90ZXMgPSBzY3J1dGluc1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRBY3RlIG9mIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcyB8fCBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGNoaWxkQWN0ZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFjdGV1clJlZmVyZW5jZXMoXG4gIGFjdGV1cjogQWN0ZXVyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYWN0ZXVyLnVpZClcblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVJlZiBvZiBtYW5kYXQub3JnYW5lc1JlZnMpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZXMucHVzaChvcmdhbmUpXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmRhdC5vcmdhbmVzID0gb3JnYW5lc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzKFxuICBhbWVuZGVtZW50OiBBbWVuZGVtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYW1lbmRlbWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFtZW5kZW1lbnQudWlkKVxuXG4gICAgY29uc3Qgc2lnbmF0YWlyZXMgPSBhbWVuZGVtZW50LnNpZ25hdGFpcmVzXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIuYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYXV0ZXVyLmFjdGV1clJlZl1cbiAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lID1cbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZl1cbiAgICAgIGlmIChhdXRldXJSYXBwb3J0ZXVyT3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmUgPSBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBnb3V2ZXJuZW1lbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5nb3V2ZXJuZW1lbnRSZWZdXG4gICAgICBpZiAoZ291dmVybmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudCA9IGdvdXZlcm5lbWVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKGdvdXZlcm5lbWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5ncm91cGVQb2xpdGlxdWVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXNSZWZzID0gc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1JlZnNcbiAgICAgIGlmIChjb3NpZ25hdGFpcmVzUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IGNvc2lnbmF0YWlyZVJlZiBvZiBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZSA9IGRhdGEuYWN0ZXVyQnlVaWRbY29zaWduYXRhaXJlUmVmXVxuICAgICAgICAgIGlmIChjb3NpZ25hdGFpcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29zaWduYXRhaXJlcy5wdXNoKGNvc2lnbmF0YWlyZSlcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoY29zaWduYXRhaXJlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlcyA9IGNvc2lnbmF0YWlyZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW1lbmRlbWVudFxufVxuXG5mdW5jdGlvbiBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoXG4gIGRpdmlzaW9uOiBEaXZpc2lvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRpdmlzaW9uLmF1dGV1cnMpIHtcbiAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmRvc3NpZXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RpdmlzaW9uLmRvc3NpZXJSZWZdXG4gICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGl2aXNpb24uZG9zc2llciA9IGRvc3NpZXJcbiAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGREaXZpc2lvbiBvZiBkaXZpc2lvbi5kaXZpc2lvbnMgfHwgW10pIHtcbiAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoY2hpbGREaXZpc2lvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gIH1cblxuICByZXR1cm4gZGl2aXNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhcbiAgZG9jdW1lbnQ6IERvY3VtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9jdW1lbnQudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb2N1bWVudC51aWQpXG5cbiAgICBmb3IgKGNvbnN0IGF1dGV1ciBvZiBkb2N1bWVudC5hdXRldXJzKSB7XG4gICAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhdXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBkYXRhLmRvc3NpZXJCeVVpZFtkb2N1bWVudC5kb3NzaWVyUmVmXVxuICAgICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2N1bWVudC5kb3NzaWVyID0gZG9zc2llclxuICAgICAgICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhkb3NzaWVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRpdmlzaW9uIG9mIGRvY3VtZW50LmRpdmlzaW9ucyB8fCBbXSkge1xuICAgICAgaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKGRpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKFxuICBkb3NzaWVyOiBEb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGRvc3NpZXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb3NzaWVyLnVpZClcblxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMgPz8gW10pIHtcbiAgICAgIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhhY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWF0ZXVyID0gZG9zc2llci5pbml0aWF0ZXVyXG4gICAgaWYgKGluaXRpYXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgaW5pdGlhdGV1ci5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdCBvZiBhY3RldXIubWFuZGF0cyB8fCBbXSkge1xuICAgICAgICAgICAgICBpZiAobWFuZGF0LnVpZCA9PT0gYWN0ZXVyU3VtbWFyeS5tYW5kYXRSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RldXJTdW1tYXJ5Lm1hbmRhdCA9IG1hbmRhdFxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGluaXRpYXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2luaXRpYXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbml0aWF0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb3NzaWVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKFxuICBvcmdhbmU6IE9yZ2FuZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKG9yZ2FuZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKG9yZ2FuZS51aWQpXG5cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnRSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUGFyZW50ID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmUub3JnYW5lUGFyZW50UmVmXVxuICAgICAgaWYgKG9yZ2FuZVBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnQgPSBvcmdhbmVQYXJlbnRcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVQYXJlbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBvcmdhbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFJldW5pb25SZWZlcmVuY2VzKFxuICByZXVuaW9uOiBSZXVuaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMocmV1bmlvbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHJldW5pb24udWlkKVxuXG4gICAgY29uc3QgZGVtYW5kZXVycyA9IHJldW5pb24uZGVtYW5kZXVyc1xuICAgIGlmIChkZW1hbmRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBhY3RldXJTdW1tYXJ5IG9mIGRlbWFuZGV1cnMuYWN0ZXVycyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmVTdW1tYXJ5ID0gZGVtYW5kZXVycy5vcmdhbmVcbiAgICAgICAgaWYgKG9yZ2FuZVN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lU3VtbWFyeS5vcmdhbmVSZWZdXG4gICAgICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcmdhbmVTdW1tYXJ5Lm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJldW5pb24ub3JnYW5lUmV1bmlSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUmV1bmkgPSBkYXRhLm9yZ2FuZUJ5VWlkW3JldW5pb24ub3JnYW5lUmV1bmlSZWZdXG4gICAgICBpZiAob3JnYW5lUmV1bmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXVuaW9uLm9yZ2FuZVJldW5pID0gb3JnYW5lUmV1bmlcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVSZXVuaSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50cyA9IHJldW5pb24ucGFydGljaXBhbnRzXG4gICAgICBpZiAocGFydGljaXBhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXJ0aWNpcGFudEludGVybmUgb2YgcGFydGljaXBhbnRzLnBhcnRpY2lwYW50c0ludGVybmVzIHx8XG4gICAgICAgICAgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW3BhcnRpY2lwYW50SW50ZXJuZS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudEludGVybmUuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldW5pb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNjcnV0aW5SZWZlcmVuY2VzKFxuICBzY3J1dGluOiBTY3J1dGluLFxuICBfZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKHNjcnV0aW4udWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChzY3J1dGluLnVpZClcblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBzY3J1dGluXG59XG4iXX0=
|
|
413
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwibmFtZXMiOlsiaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzIiwiYWN0ZSIsImRhdGEiLCJ2aXNpdGVkVWlkcyIsImhhcyIsInVpZCIsImFkZCIsImRvY3VtZW50QnlVaWQiLCJ1bmRlZmluZWQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZiIsImRvY3VtZW50IiwiZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUiLCJpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMiLCJvcmdhbmVCeVVpZCIsIm9yZ2FuZVJlZiIsIm9yZ2FuZSIsImluc2VydE9yZ2FuZVJlZmVyZW5jZXMiLCJwcm92ZW5hbmNlUmVmIiwicHJvdmVuYW5jZSIsImFjdGV1ckJ5VWlkIiwicmFwcG9ydGV1cnMiLCJyYXBwb3J0ZXVyIiwiYWN0ZXVyIiwiYWN0ZXVyUmVmIiwiaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyIsInJldW5pb25CeVVpZCIsInJldW5pb25SZWYiLCJyZXVuaW9uIiwiaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMiLCJvZGpSZWYiLCJvZGoiLCJwb2ludHNPZGoiLCJwb2ludE9kaiIsInRleHRlQWRvcHRlUmVmIiwidGV4dGVBZG9wdGUiLCJ0ZXh0ZUFzc29jaWVSZWYiLCJ0ZXh0ZUFzc29jaWUiLCJ0ZXh0ZXNBc3NvY2llcyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJ2b3RlUmVmIiwic2NydXRpbiIsInB1c2giLCJpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyIsInZvdGVzIiwiY2hpbGRBY3RlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIm1hbmRhdCIsIm1hbmRhdHMiLCJvcmdhbmVzIiwib3JnYW5lc1JlZnMiLCJpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyIsImFtZW5kZW1lbnQiLCJzaWduYXRhaXJlcyIsImF1dGV1ciIsImF1dGV1clJhcHBvcnRldXJPcmdhbmVSZWYiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lIiwiZ291dmVybmVtZW50UmVmIiwiZ291dmVybmVtZW50IiwiZ3JvdXBlUG9saXRpcXVlUmVmIiwiZ3JvdXBlUG9saXRpcXVlIiwiY29zaWduYXRhaXJlc1JlZnMiLCJjb3NpZ25hdGFpcmVzIiwiY29zaWduYXRhaXJlUmVmIiwiY29zaWduYXRhaXJlIiwiaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzIiwiZGl2aXNpb24iLCJhdXRldXJzIiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJjaGlsZERpdmlzaW9uIiwiZGl2aXNpb25zIiwiaW5pdGlhdGV1ciIsImFjdGV1cnMiLCJtYW5kYXRSZWYiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJkZW1hbmRldXJzIiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJwYXJ0aWNpcGFudEludGVybmUiLCJwYXJ0aWNpcGFudHNJbnRlcm5lcyIsIl9kYXRhIl0sIm1hcHBpbmdzIjoiQUFxQkEsU0FBU0EsOEJBQVQsQ0FDRUMsSUFERixFQUVFQyxJQUZGLEVBR0VDLFdBSEYsRUFJRTtBQUNBLE1BQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFaLENBQWdCSCxJQUFJLENBQUNJLEdBQXJCLENBQUwsRUFBZ0M7QUFDOUJGLElBQUFBLFdBQVcsQ0FBQ0csR0FBWixDQUFnQkwsSUFBSSxDQUFDSSxHQUFyQjs7QUFFQSxRQUNFSCxJQUFJLENBQUNLLGFBQUwsS0FBdUJDLFNBQXZCLElBQ0FQLElBQUksQ0FBQ1EsZ0NBQUwsS0FBMENELFNBRjVDLEVBR0U7QUFDQSxZQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBTCxDQUFtQk4sSUFBSSxDQUFDUSxnQ0FBeEIsQ0FBakI7O0FBQ0EsVUFBSUMsUUFBUSxLQUFLRixTQUFqQixFQUE0QjtBQUMxQlAsUUFBQUEsSUFB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QWlDRCxZQUFZLENBQUNFLG9CQUFiLElBQy9CLEVBREYsRUFDTTtBQUNKLGdCQUFNakUsTUFBTSxHQUFHcEIsSUFBSSxDQUFDaUIsV0FBTCxDQUFpQm1FLGtCQUFrQixDQUFDL0QsU0FBcEMsQ0FBZjs7QUFDQSxjQUFJRCxNQUFNLEtBQUtkLFNBQWYsRUFBMEI7QUFDeEI4RSxZQUFBQSxrQkFBa0IsQ0FBQ2hFLE1BQW5CLEdBQTRCQSxNQUE1QjtBQUNBRSxZQUFBQSxzQkFBc0IsQ0FBQ0YsTUFBRCxFQUFTcEIsSUFBVCxFQUFlQyxXQUFmLENBQXRCO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPd0IsT0FBUDtBQUNEO0FBRUQsT0FBTyxTQUFTaUIsdUJBQVQsQ0FDTEYsT0FESyxFQUVMOEMsS0FGSyxFQUdMckYsV0FISyxFQUlMO0FBQ0EsTUFBSSxDQUFDQSxXQUFXLENBQUNDLEdBQVosQ0FBZ0JzQyxPQUFPLENBQUNyQyxHQUF4QixDQUFMLEVBQW1DO0FBQ2pDRixJQUFBQSxXQUFXLENBQUNHLEdBQVosQ0FBZ0JvQyxPQUFPLENBQUNyQyxHQUF4QixFQURpQyxDQUdqQztBQUNEOztBQUVELFNBQU9xQyxPQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RldXIsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQWN0ZUxlZ2lzbGF0aWYsXG4gIERpdmlzaW9uLFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKFxuICBhY3RlOiBBY3RlTGVnaXNsYXRpZixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFjdGUudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RlLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUub3JnYW5lID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnByb3ZlbmFuY2VSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthY3RlLnByb3ZlbmFuY2VSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5wcm92ZW5hbmNlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnJhcHBvcnRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgcmFwcG9ydGV1ciBvZiBhY3RlLnJhcHBvcnRldXJzKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcmFwcG9ydGV1ci5hY3RldXJSZWZdXG4gICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcHBvcnRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnJldW5pb25CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmV1bmlvblJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXVuaW9uID0gZGF0YS5yZXVuaW9uQnlVaWRbYWN0ZS5yZXVuaW9uUmVmXVxuICAgICAgaWYgKHJldW5pb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnJldW5pb24gPSByZXVuaW9uXG4gICAgICAgIGluc2VydFJldW5pb25SZWZlcmVuY2VzKHJldW5pb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICBpZiAoYWN0ZS5vZGpSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkICYmIG9kai5wb2ludHNPZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqKSB7XG4gICAgICAgICAgICAgIGlmIChwb2ludE9kai51aWQgPT09IGFjdGUub2RqUmVmKSB7XG4gICAgICAgICAgICAgICAgYWN0ZS5vZGogPSBwb2ludE9kalxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVBZG9wdGVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFkb3B0ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBZG9wdGUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWN0ZS50ZXh0ZUFzc29jaWVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFzc29jaWVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnRleHRlQXNzb2NpZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnRleHRlc0Fzc29jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgdGV4dGVBc3NvY2llIG9mIGFjdGUudGV4dGVzQXNzb2NpZXMpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbdGV4dGVBc3NvY2llLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnNjcnV0aW5CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudm90ZVJlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2NydXRpbnMgPSBbXVxuICAgICAgZm9yIChjb25zdCB2b3RlUmVmIG9mIGFjdGUudm90ZVJlZnMpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IGRhdGEuc2NydXRpbkJ5VWlkW3ZvdGVSZWZdXG4gICAgICAgIGlmIChzY3J1dGluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGlucy5wdXNoKHNjcnV0aW4pXG4gICAgICAgICAgaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoc2NydXRpbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFjdGUudm90ZXMgPSBzY3J1dGluc1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRBY3RlIG9mIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcyB8fCBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGNoaWxkQWN0ZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFjdGV1clJlZmVyZW5jZXMoXG4gIGFjdGV1cjogQWN0ZXVyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYWN0ZXVyLnVpZClcblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVJlZiBvZiBtYW5kYXQub3JnYW5lc1JlZnMpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZXMucHVzaChvcmdhbmUpXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmRhdC5vcmdhbmVzID0gb3JnYW5lc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzKFxuICBhbWVuZGVtZW50OiBBbWVuZGVtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYW1lbmRlbWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFtZW5kZW1lbnQudWlkKVxuXG4gICAgY29uc3Qgc2lnbmF0YWlyZXMgPSBhbWVuZGVtZW50LnNpZ25hdGFpcmVzXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIuYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYXV0ZXVyLmFjdGV1clJlZl1cbiAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lID1cbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZl1cbiAgICAgIGlmIChhdXRldXJSYXBwb3J0ZXVyT3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmUgPSBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBnb3V2ZXJuZW1lbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5nb3V2ZXJuZW1lbnRSZWZdXG4gICAgICBpZiAoZ291dmVybmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudCA9IGdvdXZlcm5lbWVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKGdvdXZlcm5lbWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5ncm91cGVQb2xpdGlxdWVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXNSZWZzID0gc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1JlZnNcbiAgICAgIGlmIChjb3NpZ25hdGFpcmVzUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IGNvc2lnbmF0YWlyZVJlZiBvZiBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZSA9IGRhdGEuYWN0ZXVyQnlVaWRbY29zaWduYXRhaXJlUmVmXVxuICAgICAgICAgIGlmIChjb3NpZ25hdGFpcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29zaWduYXRhaXJlcy5wdXNoKGNvc2lnbmF0YWlyZSlcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoY29zaWduYXRhaXJlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlcyA9IGNvc2lnbmF0YWlyZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW1lbmRlbWVudFxufVxuXG5mdW5jdGlvbiBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoXG4gIGRpdmlzaW9uOiBEaXZpc2lvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRpdmlzaW9uLmF1dGV1cnMpIHtcbiAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmRvc3NpZXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RpdmlzaW9uLmRvc3NpZXJSZWZdXG4gICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGl2aXNpb24uZG9zc2llciA9IGRvc3NpZXJcbiAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGREaXZpc2lvbiBvZiBkaXZpc2lvbi5kaXZpc2lvbnMgfHwgW10pIHtcbiAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoY2hpbGREaXZpc2lvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gIH1cblxuICByZXR1cm4gZGl2aXNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhcbiAgZG9jdW1lbnQ6IERvY3VtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9jdW1lbnQudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb2N1bWVudC51aWQpXG5cbiAgICBmb3IgKGNvbnN0IGF1dGV1ciBvZiBkb2N1bWVudC5hdXRldXJzKSB7XG4gICAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhdXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBkYXRhLmRvc3NpZXJCeVVpZFtkb2N1bWVudC5kb3NzaWVyUmVmXVxuICAgICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2N1bWVudC5kb3NzaWVyID0gZG9zc2llclxuICAgICAgICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhkb3NzaWVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRpdmlzaW9uIG9mIGRvY3VtZW50LmRpdmlzaW9ucyB8fCBbXSkge1xuICAgICAgaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKGRpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKFxuICBkb3NzaWVyOiBEb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGRvc3NpZXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb3NzaWVyLnVpZClcblxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMgPz8gW10pIHtcbiAgICAgIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhhY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWF0ZXVyID0gZG9zc2llci5pbml0aWF0ZXVyXG4gICAgaWYgKGluaXRpYXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgaW5pdGlhdGV1ci5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdCBvZiBhY3RldXIubWFuZGF0cyB8fCBbXSkge1xuICAgICAgICAgICAgICBpZiAobWFuZGF0LnVpZCA9PT0gYWN0ZXVyU3VtbWFyeS5tYW5kYXRSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RldXJTdW1tYXJ5Lm1hbmRhdCA9IG1hbmRhdFxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGluaXRpYXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2luaXRpYXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbml0aWF0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb3NzaWVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKFxuICBvcmdhbmU6IE9yZ2FuZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKG9yZ2FuZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKG9yZ2FuZS51aWQpXG5cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnRSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUGFyZW50ID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmUub3JnYW5lUGFyZW50UmVmXVxuICAgICAgaWYgKG9yZ2FuZVBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnQgPSBvcmdhbmVQYXJlbnRcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVQYXJlbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBvcmdhbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFJldW5pb25SZWZlcmVuY2VzKFxuICByZXVuaW9uOiBSZXVuaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMocmV1bmlvbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHJldW5pb24udWlkKVxuXG4gICAgY29uc3QgZGVtYW5kZXVycyA9IHJldW5pb24uZGVtYW5kZXVyc1xuICAgIGlmIChkZW1hbmRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBhY3RldXJTdW1tYXJ5IG9mIGRlbWFuZGV1cnMuYWN0ZXVycyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmVTdW1tYXJ5ID0gZGVtYW5kZXVycy5vcmdhbmVcbiAgICAgICAgaWYgKG9yZ2FuZVN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lU3VtbWFyeS5vcmdhbmVSZWZdXG4gICAgICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcmdhbmVTdW1tYXJ5Lm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJldW5pb24ub3JnYW5lUmV1bmlSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUmV1bmkgPSBkYXRhLm9yZ2FuZUJ5VWlkW3JldW5pb24ub3JnYW5lUmV1bmlSZWZdXG4gICAgICBpZiAob3JnYW5lUmV1bmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXVuaW9uLm9yZ2FuZVJldW5pID0gb3JnYW5lUmV1bmlcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVSZXVuaSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50cyA9IHJldW5pb24ucGFydGljaXBhbnRzXG4gICAgICBpZiAocGFydGljaXBhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXJ0aWNpcGFudEludGVybmUgb2YgcGFydGljaXBhbnRzLnBhcnRpY2lwYW50c0ludGVybmVzIHx8XG4gICAgICAgICAgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW3BhcnRpY2lwYW50SW50ZXJuZS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudEludGVybmUuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldW5pb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNjcnV0aW5SZWZlcmVuY2VzKFxuICBzY3J1dGluOiBTY3J1dGluLFxuICBfZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKHNjcnV0aW4udWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChzY3J1dGluLnVpZClcblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBzY3J1dGluXG59XG4iXX0=
|