@tricoteuses/assemblee 1.9.8 → 1.9.9
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/lib/bugs/agenda-00011/plugin.test.js +9 -13
- package/lib/bugs/agenda-00011/plugin.test.mjs +5 -9
- package/lib/datasets.d.ts +5 -0
- package/lib/datasets.js +5 -3
- package/lib/datasets.mjs +5 -3
- package/lib/raw_types/scrutins.d.ts +1 -10
- package/lib/raw_types/scrutins.js +2 -24
- package/lib/raw_types/scrutins.mjs +2 -24
- package/lib/scripts/clean_reorganized_data.js +420 -219
- package/lib/scripts/clean_reorganized_data.mjs +22 -5
- package/lib/scripts/process_textes_loi_dataset.js +3 -3
- package/lib/scripts/process_textes_loi_dataset.mjs +4 -2
- package/lib/scripts/reorganize_data.js +2 -2
- package/lib/scripts/reorganize_data.mjs +3 -3
- package/package.json +2 -2
|
@@ -57,7 +57,7 @@ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol
|
|
|
57
57
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
58
58
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
59
59
|
function parseArgs(argv) {
|
|
60
|
-
var optionsDefinitions = [_cli_helpers.cloneOption, _cli_helpers.commitOption, _cli_helpers.categoriesOption, _cli_helpers.legislatureOption, _cli_helpers.remoteOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.pullOption, {
|
|
60
|
+
var optionsDefinitions = [_cli_helpers.cloneOption, _cli_helpers.commitOption, _cli_helpers.categoriesOption, _cli_helpers.legislatureOption, _cli_helpers.remoteOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.fetchDocumentsOption, _cli_helpers.pullOption, {
|
|
61
61
|
alias: "V",
|
|
62
62
|
help: "don't validate raw data",
|
|
63
63
|
name: "no-validate-raw",
|
|
@@ -803,4 +803,4 @@ function main(argv) {
|
|
|
803
803
|
|
|
804
804
|
/* istanbul ignore if */
|
|
805
805
|
if (process.argv[1].endsWith("reorganize_data.ts")) process.exit(main(process.argv));
|
|
806
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kYXRhc2V0cyIsIl9kYXRlcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2ZpbGVfc3lzdGVtcyIsIl9sb2FkZXJzIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfY2xpX2hlbHBlcnMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJuZXh0IiwiX2UyIiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImNsb25lT3B0aW9uIiwiY29tbWl0T3B0aW9uIiwiY2F0ZWdvcmllc09wdGlvbiIsImxlZ2lzbGF0dXJlT3B0aW9uIiwicmVtb3RlT3B0aW9uIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwicHVsbE9wdGlvbiIsImFsaWFzIiwiaGVscCIsInR5cGUiLCJCb29sZWFuIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNsZWFyRGlyZWN0b3J5IiwiZGlyUGF0aCIsImZzIiwiZW5zdXJlRGlyU3luYyIsIl9pdGVyYXRvciIsInJlYWRkaXJTeW5jIiwiX3N0ZXAiLCJmaWxlbmFtZSIsInN0YXJ0c1dpdGgiLCJyZW1vdmVTeW5jIiwicGF0aCIsImpvaW4iLCJjbG9uZUdpdCIsImdpdEdyb3VwVXJsIiwiZGF0YXNldE5hbWUiLCJkYXRhRGlyIiwiY2xvbmUiLCJyZW9yZ2FuaXplRGF0YSIsIl9vcHRpb25zJGNsb25lIiwiRGF0ZSIsInRvSlNPTiIsInBhdGNoZWREYXRlVG9Kc29uIiwiZXhpdENvZGUiLCJjb21taXQiLCJ0cmltIiwicmVwbGFjZSIsInZhbGlkYXRlUmF3RGF0YSIsImVuYWJsZWREYXRhc2V0cyIsImdldEVuYWJsZWREYXRhc2V0cyIsImNhdGVnb3JpZXMiLCJjaG9zZW5EYXRhc2V0cyIsImZpbHRlckJ5TGVnaXNsYXR1cmUiLCJkYXRhc2V0cyIsImxlZ2lzbGF0dXJlIiwiY29tbWl0R2l0IiwiZGF0YXNldFJlb3JnYW5pemVkRGlyIiwiZXJyb3JDb2RlIiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsIkVuYWJsZWREYXRhc2V0cyIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IyIiwiYWN0ZXVyc0V0T3JnYW5lcyIsIl9zdGVwMiIsImRhdGFzZXQiLCJvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImNvbmNhdCIsImJhc2VuYW1lIiwicHVsbCIsInJlc2V0QW5kUHVsbCIsImFjdGV1cnNSZW9yZ2FuaXplZERpciIsIm1rZGlyU3luYyIsIm9yZ2FuZXNSZW9yZ2FuaXplZERpciIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTaW5nbGVGaWxlIiwib3JpZ2luYWxKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJvcmlnaW5hbERhdGEiLCJBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydCIsInRvQWN0ZXVyc0V0T3JnYW5lcyIsIkpTT04iLCJwYXJzZSIsIl9pdGVyYXRvcjMiLCJhY3RldXJzIiwiYWN0ZXVyIiwiX3N0ZXAzIiwicmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJ1aWQiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5IiwiX2l0ZXJhdG9yNCIsIm9yZ2FuZXMiLCJvcmdhbmUiLCJfc3RlcDQiLCJTZWdtZW50ZWRGaWxlcyIsImRlcG9ydHNCeUFjdGV1clVpZCIsImV4aXN0c1N5bmMiLCJfaXRlcmF0b3I1Iiwid2Fsa0RpciIsIl9zdGVwNSIsImRlcG9ydFNwbGl0UGF0aCIsImRlcG9ydEZpbGVuYW1lIiwiZW5kc1dpdGgiLCJkZXBvcnRPcmlnaW5hbEZpbGVQYXRoIiwiYXBwbHkiLCJ2ZXJib3NlIiwiZGVwb3J0T3JpZ2luYWxKc29uIiwiZGVwb3J0T3JpZ2luYWwiLCJ0b0RlcG9ydCIsImRlcG9ydCIsImRlcG9ydHMiLCJhY3RldXJSZWYiLCJ1bmRlZmluZWQiLCJwdXNoIiwiX2kiLCJfT2JqZWN0JHZhbHVlcyIsInZhbHVlcyIsInNvcnQiLCJiIiwibG9jYWxlQ29tcGFyZSIsIm1hbmRhdHNCeUFjdGV1clVpZCIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJtYW5kYXRTcGxpdFBhdGgiLCJtYW5kYXRGaWxlbmFtZSIsIm1hbmRhdE9yaWdpbmFsRmlsZVBhdGgiLCJtYW5kYXRPcmlnaW5hbEpzb24iLCJtYW5kYXRPcmlnaW5hbCIsInRvTWFuZGF0V3JhcHBlciIsIm1hbmRhdCIsIm1hbmRhdHMiLCJfaTIiLCJfT2JqZWN0JHZhbHVlczIiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3IiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJhY3RldXJPcmlnaW5hbEZpbGVQYXRoIiwiYWN0ZXVyT3JpZ2luYWxKc29uIiwiYWN0ZXVyT3JpZ2luYWwiLCJ0b0FjdGV1ciIsImFjdGV1clVpZCIsImFzc2VydCIsInN0cmljdEVxdWFsIiwiYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJfaXRlcmF0b3I4IiwiX3N0ZXA4Iiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVPcmlnaW5hbEZpbGVQYXRoIiwib3JnYW5lT3JpZ2luYWxKc29uIiwib3JnYW5lT3JpZ2luYWwiLCJ0b09yZ2FuZSIsIm9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwiQWdlbmRhcyIsIl9pdGVyYXRvcjkiLCJhZ2VuZGFzIiwiX3N0ZXA5IiwiQWdlbmRhc1Jhd0NvbnZlcnQiLCJ0b0FnZW5kYXMiLCJfaXRlcmF0b3IxMCIsInJldW5pb25zIiwicmV1bmlvbiIsIl9zdGVwMTAiLCJ3cml0ZVJlb3JnYW5pemVkSnNvbiIsInBhdGhGcm9tUmV1bmlvblVpZCIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCIsInJldW5pb25PcmlnaW5hbEpzb24iLCJyZXVuaW9uT3JpZ2luYWwiLCJ0b1JldW5pb24iLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjEyIiwiYW1lbmRlbWVudHMiLCJfc3RlcDEyIiwiQW1lbmRlbWVudHNSYXdDb252ZXJ0IiwidG9BbWVuZGVtZW50cyIsIl9pdGVyYXRvcjEzIiwidGV4dGVzRXRBbWVuZGVtZW50cyIsInRleHRlbGVnIiwiX3N0ZXAxMyIsInRleHRlTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsImFtZW5kZW1lbnQiLCJ3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24iLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgiLCJhbWVuZGVtZW50T3JpZ2luYWxKc29uIiwiYW1lbmRlbWVudE9yaWdpbmFsIiwidG9BbWVuZGVtZW50V3JhcHBlciIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IxNiIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfc3RlcDE2IiwiZG9jdW1lbnRzRGlyIiwiZG9zc2llcnNEaXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCIsInRvRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjE3IiwidGV4dGVzTGVnaXNsYXRpZnMiLCJkb2N1bWVudCIsIl9zdGVwMTciLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiX2l0ZXJhdG9yMTgiLCJkb3NzaWVyIiwiX3N0ZXAxOCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlIiwicGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCIsIl9pdGVyYXRvcjE5IiwiX3N0ZXAxOSIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCIsImRvY3VtZW50T3JpZ2luYWxKc29uIiwiZG9jdW1lbnRPcmlnaW5hbCIsInRvRG9jdW1lbnQiLCJfaXRlcmF0b3IyMCIsIl9zdGVwMjAiLCJkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUiLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWwiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IyMSIsInNjcnV0aW5zIiwiX3N0ZXAyMSIsIlNjcnV0aW5zUmF3Q29udmVydCIsInRvU2NydXRpbnMiLCJfaXRlcmF0b3IyMiIsInNjcnV0aW4iLCJfc3RlcDIyIiwicGF0aEZyb21TY3J1dGluVWlkIiwiX2l0ZXJhdG9yMjMiLCJfc3RlcDIzIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsInNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoIiwic2NydXRpbk9yaWdpbmFsSnNvbiIsInNjcnV0aW5PcmlnaW5hbCIsInRvU2NydXRpbldyYXBwZXIiLCJRdWVzdGlvbnMiLCJfaXRlcmF0b3IyNCIsInF1ZXN0aW9ucyIsIl9zdGVwMjQiLCJfaXRlcmF0b3IyNSIsIl9zdGVwMjUiLCJxdWVzdGlvblNwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGgiLCJxdWVzdGlvbk9yaWdpbmFsSnNvbiIsInF1ZXN0aW9uT3JpZ2luYWwiLCJRdWVzdGlvbnNSYXdDb252ZXJ0IiwidG9RdWVzdGlvbldyYXBwZXIiLCJxdWVzdGlvbiIsInBhdGhGcm9tUXVlc3Rpb25VaWQiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9pdGVyYXRvcjI2IiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfc3RlcDI2IiwiX2l0ZXJhdG9yMjciLCJfc3RlcDI3IiwiY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGgiLCJjb21wdGVSZW5kdVNlYW5jZUZpbGVuYW1lIiwiY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoIiwiY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEpzb24iLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsIiwiQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQiLCJ0b0NvbXB0ZVJlbmR1V3JhcHBlciIsImNvbXB0ZVJlbmR1U2VhbmNlIiwiY29tcHRlUmVuZHUiLCJwYXRoRnJvbUNvbXB0ZVJlbmR1VWlkIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwidWlkVGV4dGVMZWdpc2xhdGlmIiwidGV4dGVMZWdpc2xhdGlmUmVmIiwibm90U3RyaWN0RXF1YWwiLCJ0ZXh0ZUxlZ2lzbGF0aWZEaXIiLCJkaXIiLCJwYXRoRnJvbVVpZCIsIm1haW4iLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Jlb3JnYW5pemVfZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBkYXRhc2V0cyxcbiAgRGF0YXNldFN0cnVjdHVyZSxcbiAgRW5hYmxlZERhdGFzZXRzLFxuICBnZXRFbmFibGVkRGF0YXNldHMsXG4gIGZpbHRlckJ5TGVnaXNsYXR1cmUsXG59IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIHBhdGhGcm9tQ29tcHRlUmVuZHVVaWQsXG4gIHBhdGhGcm9tRG9jdW1lbnRVaWQsXG4gIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gIHBhdGhGcm9tUXVlc3Rpb25VaWQsXG4gIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgcGF0aEZyb21TY3J1dGluVWlkLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBjbG9uZU9wdGlvbixcbiAgY29tbWl0T3B0aW9uLFxuICBjYXRlZ29yaWVzT3B0aW9uLFxuICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBwdWxsT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAgY2xvbmVPcHRpb24sXG4gICAgY29tbWl0T3B0aW9uLFxuICAgIGNhdGVnb3JpZXNPcHRpb24sXG4gICAgbGVnaXNsYXR1cmVPcHRpb24sXG4gICAgcmVtb3RlT3B0aW9uLFxuICAgIHNpbGVudE9wdGlvbixcbiAgICB2ZXJib3NlT3B0aW9uLFxuICAgIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICAgIHB1bGxPcHRpb24sXG4gICAge1xuICAgICAgYWxpYXM6IFwiVlwiLFxuICAgICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSByYXcgZGF0YVwiLFxuICAgICAgbmFtZTogXCJuby12YWxpZGF0ZS1yYXdcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGNsZWFyRGlyZWN0b3J5KGRpclBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBmcy5lbnN1cmVEaXJTeW5jKGRpclBhdGgpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGlyUGF0aCkpIHtcbiAgICBpZiAoIWZpbGVuYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkaXJQYXRoLCBmaWxlbmFtZSkpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lR2l0KFxuICBnaXRHcm91cFVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0TmFtZTogc3RyaW5nLFxuICBkYXRhRGlyOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgZ2l0LmNsb25lKGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbn1cblxuZnVuY3Rpb24gcmVvcmdhbml6ZURhdGEob3B0aW9uczogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuICBsZXQgZXhpdENvZGUgPSBvcHRpb25zLmNvbW1pdCA/IDEwIDogMFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmU/LnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gIGNvbnN0IHZhbGlkYXRlUmF3RGF0YSA9ICFvcHRpb25zW1wibm8tdmFsaWRhdGUtcmF3XCJdXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IGdldEVuYWJsZWREYXRhc2V0cyhvcHRpb25zLmNhdGVnb3JpZXMpXG4gIGxldCBjaG9zZW5EYXRhc2V0cyA9IGZpbHRlckJ5TGVnaXNsYXR1cmUoZGF0YXNldHMsIG9wdGlvbnMubGVnaXNsYXR1cmUpXG5cbiAgZnVuY3Rpb24gY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpcjogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgIClcbiAgICAgIGlmIChcbiAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBnaXQucmVzZXRBbmRQdWxsKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIH1cbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgY29uc3QgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJhY3RldXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoYWN0ZXVyc1Jlb3JnYW5pemVkRGlyKVxuICAgICAgY29uc3Qgb3JnYW5lc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJvcmdhbmVzXCIpXG4gICAgICBmcy5ta2RpclN5bmMob3JnYW5lc1Jlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBvcmlnaW5hbERhdGEuZXhwb3J0LmFjdGV1cnMuYWN0ZXVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1ci51aWRbXCIjdGV4dFwiXSArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5vcmdhbmVzLm9yZ2FuZSkge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgZGVwb3J0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJkZXBvcnRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wiZGVwb3J0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgZGVwb3J0U3BsaXRQYXRoW2RlcG9ydFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghZGVwb3J0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5kZXBvcnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwiZGVwb3J0XCIgZmlsZTogJHtkZXBvcnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0RlcG9ydChkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydCA9IGRlcG9ydE9yaWdpbmFsLmRlcG9ydFxuICAgICAgICAgICAgICAgIGxldCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlcG9ydHMucHVzaChkZXBvcnQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydHMgb2YgT2JqZWN0LnZhbHVlcyhkZXBvcnRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWFuZGF0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wibWFuZGF0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgbWFuZGF0U3BsaXRQYXRoW21hbmRhdFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghbWFuZGF0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5tYW5kYXRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwibWFuZGF0XCIgZmlsZTogJHttYW5kYXRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b01hbmRhdFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UobWFuZGF0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdCA9IG1hbmRhdE9yaWdpbmFsLm1hbmRhdFxuICAgICAgICAgICAgICAgIGxldCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hbmRhdHMucHVzaChtYW5kYXQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdHMgb2YgT2JqZWN0LnZhbHVlcyhtYW5kYXRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiYWN0ZXVyXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFjdGV1clwiIGZpbGU6ICR7YWN0ZXVyT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXIgPSBhY3RldXJPcmlnaW5hbC5hY3RldXJcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyVWlkID0gYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdXG4gICAgICAgICAgICAgIGNvbnN0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAoZGVwb3J0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5kZXBvcnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLmRlcG9ydHMgPSB7IGRlcG9ydDogZGVwb3J0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChtYW5kYXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLm1hbmRhdHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIubWFuZGF0cyA9IHsgbWFuZGF0OiBtYW5kYXRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXJVaWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcIm9yZ2FuZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJvcmdhbmVcIiBmaWxlOiAke29yZ2FuZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b09yZ2FuZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lID0gb3JnYW5lT3JpZ2luYWwub3JnYW5lXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9BZ2VuZGFzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIG9yaWdpbmFsRGF0YS5yZXVuaW9ucy5yZXVuaW9uKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICByZXVuaW9uLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcInJldW5pb25cIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ucmV1bmlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJyZXVuaW9uXCIgZmlsZTogJHtyZXVuaW9uT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uID0gcmV1bmlvbk9yaWdpbmFsLnJldW5pb25cbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIHJldW5pb24sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21SZXVuaW9uVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQudG9BbWVuZGVtZW50cyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGV4dGVMZWdpc2xhdGlmIG9mIG9yaWdpbmFsRGF0YS50ZXh0ZXNFdEFtZW5kZW1lbnRzXG4gICAgICAgICAgICAgIC50ZXh0ZWxlZykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgICAgYW1lbmRlbWVudCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiYW1lbmRlbWVudFwiIGZpbGU6ICR7YW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQudG9BbWVuZGVtZW50V3JhcHBlcihcbiAgICAgICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYW1lbmRlbWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IGFtZW5kZW1lbnRPcmlnaW5hbC5hbWVuZGVtZW50XG4gICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGFtZW5kZW1lbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgY29uc3QgZG9jdW1lbnRzRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJkb2N1bWVudHNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhkb2N1bWVudHNEaXIpXG4gICAgICBjb25zdCBkb3NzaWVyc0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9zc2llcnNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhkb3NzaWVyc0RpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb3NzaWVyc0xlZ2lzbGF0aWZzKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBvcmlnaW5hbERhdGEuZXhwb3J0LnRleHRlc0xlZ2lzbGF0aWZzXG4gICAgICAgICAgICAgIC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50LCBwYXRoRnJvbURvY3VtZW50VWlkKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgZG9zc2llclBhcmxlbWVudGFpcmUgfSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0XG4gICAgICAgICAgICAgIC5kb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXIpIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgICAgcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb2N1bWVudFwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvY3VtZW50XCIgZmlsZTogJHtkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0RvY3VtZW50KGRvY3VtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkb2N1bWVudE9yaWdpbmFsLmRvY3VtZW50XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKGRvY3VtZW50c0RpciwgZG9jdW1lbnQsIHBhdGhGcm9tRG9jdW1lbnRVaWQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9zc2llclBhcmxlbWVudGFpcmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoW1xuICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgaWYgKCFkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCIgZmlsZTogJHtkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKFxuICAgICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsLmRvc3NpZXJQYXJsZW1lbnRhaXJlXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJzRGlyLFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAobGV0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbnMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygb3JpZ2luYWxEYXRhLnNjcnV0aW5zLnNjcnV0aW4pIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIHNjcnV0aW4sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21TY3J1dGluVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5zY3J1dGluU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInNjcnV0aW5cIiBmaWxlOiAke3NjcnV0aW5PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbldyYXBwZXIoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbiA9IHNjcnV0aW5PcmlnaW5hbC5zY3J1dGluXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBzY3J1dGluLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tU2NydXRpblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uU3BsaXRQYXRoW3F1ZXN0aW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5xdWVzdGlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJxdWVzdGlvblwiIGZpbGU6ICR7cXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBRdWVzdGlvbnNSYXdDb252ZXJ0LnRvUXVlc3Rpb25XcmFwcGVyKHF1ZXN0aW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShxdWVzdGlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBxdWVzdGlvbk9yaWdpbmFsLnF1ZXN0aW9uXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBxdWVzdGlvbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVF1ZXN0aW9uVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCIueG1sXCIpXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5jb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJjb21wdGVSZW5kdVNlYW5jZVwiIGZpbGU6ICR7Y29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQudG9Db21wdGVSZW5kdVdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZSA9IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwuY29tcHRlUmVuZHVcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tQ29tcHRlUmVuZHVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgZGF0YXNldFJlb3JnYW5pemVkRGlyOiBzdHJpbmcsXG4gIGFtZW5kZW1lbnQ6IHtcbiAgICB1aWQ6IHN0cmluZ1xuICAgIHRleHRlTGVnaXNsYXRpZlJlZjogc3RyaW5nXG4gIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID0gYW1lbmRlbWVudC50ZXh0ZUxlZ2lzbGF0aWZSZWZcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHVpZFRleHRlTGVnaXNsYXRpZiwgdW5kZWZpbmVkKVxuICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWZEaXIgPSBwYXRoLmpvaW4oXG4gICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgIHVpZFRleHRlTGVnaXNsYXRpZixcbiAgKVxuICBmcy5lbnN1cmVEaXJTeW5jKHRleHRlTGVnaXNsYXRpZkRpcilcbiAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgdGV4dGVMZWdpc2xhdGlmRGlyLFxuICAgIGFtZW5kZW1lbnQudWlkICsgXCIuanNvblwiLFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVSZW9yZ2FuaXplZEpzb248VCBleHRlbmRzIHsgdWlkOiBzdHJpbmcgfT4oXG4gIGRpcjogc3RyaW5nLFxuICBvYmo6IFQsXG4gIHBhdGhGcm9tVWlkOiAoZGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKSA9PiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVVpZChkaXIsIG9iai51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIHJlb3JnYW5pemVEYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInJlb3JnYW5pemVfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGdCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNC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
|
|
806
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kYXRhc2V0cyIsIl9kYXRlcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2ZpbGVfc3lzdGVtcyIsIl9sb2FkZXJzIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfY2xpX2hlbHBlcnMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJuZXh0IiwiX2UyIiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImNsb25lT3B0aW9uIiwiY29tbWl0T3B0aW9uIiwiY2F0ZWdvcmllc09wdGlvbiIsImxlZ2lzbGF0dXJlT3B0aW9uIiwicmVtb3RlT3B0aW9uIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwiZmV0Y2hEb2N1bWVudHNPcHRpb24iLCJwdWxsT3B0aW9uIiwiYWxpYXMiLCJoZWxwIiwidHlwZSIsIkJvb2xlYW4iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY2xlYXJEaXJlY3RvcnkiLCJkaXJQYXRoIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwiX2l0ZXJhdG9yIiwicmVhZGRpclN5bmMiLCJfc3RlcCIsImZpbGVuYW1lIiwic3RhcnRzV2l0aCIsInJlbW92ZVN5bmMiLCJwYXRoIiwiam9pbiIsImNsb25lR2l0IiwiZ2l0R3JvdXBVcmwiLCJkYXRhc2V0TmFtZSIsImRhdGFEaXIiLCJjbG9uZSIsInJlb3JnYW5pemVEYXRhIiwiX29wdGlvbnMkY2xvbmUiLCJEYXRlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJleGl0Q29kZSIsImNvbW1pdCIsInRyaW0iLCJyZXBsYWNlIiwidmFsaWRhdGVSYXdEYXRhIiwiZW5hYmxlZERhdGFzZXRzIiwiZ2V0RW5hYmxlZERhdGFzZXRzIiwiY2F0ZWdvcmllcyIsImNob3NlbkRhdGFzZXRzIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJjb21taXRHaXQiLCJkYXRhc2V0UmVvcmdhbml6ZWREaXIiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvcjIiLCJhY3RldXJzRXRPcmdhbmVzIiwiX3N0ZXAyIiwiZGF0YXNldCIsIm9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgiLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwiY29uY2F0IiwiYmFzZW5hbWUiLCJwdWxsIiwicmVzZXRBbmRQdWxsIiwiYWN0ZXVyc1Jlb3JnYW5pemVkRGlyIiwibWtkaXJTeW5jIiwib3JnYW5lc1Jlb3JnYW5pemVkRGlyIiwic3RydWN0dXJlIiwiRGF0YXNldFN0cnVjdHVyZSIsIlNpbmdsZUZpbGUiLCJvcmlnaW5hbEpzb24iLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsIm9yaWdpbmFsRGF0YSIsIkFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IiwidG9BY3RldXJzRXRPcmdhbmVzIiwiSlNPTiIsInBhcnNlIiwiX2l0ZXJhdG9yMyIsImFjdGV1cnMiLCJhY3RldXIiLCJfc3RlcDMiLCJyZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsInVpZCIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJfaXRlcmF0b3I0Iiwib3JnYW5lcyIsIm9yZ2FuZSIsIl9zdGVwNCIsIlNlZ21lbnRlZEZpbGVzIiwiZGVwb3J0c0J5QWN0ZXVyVWlkIiwiZXhpc3RzU3luYyIsIl9pdGVyYXRvcjUiLCJ3YWxrRGlyIiwiX3N0ZXA1IiwiZGVwb3J0U3BsaXRQYXRoIiwiZGVwb3J0RmlsZW5hbWUiLCJlbmRzV2l0aCIsImRlcG9ydE9yaWdpbmFsRmlsZVBhdGgiLCJhcHBseSIsInZlcmJvc2UiLCJkZXBvcnRPcmlnaW5hbEpzb24iLCJkZXBvcnRPcmlnaW5hbCIsInRvRGVwb3J0IiwiZGVwb3J0IiwiZGVwb3J0cyIsImFjdGV1clJlZiIsInVuZGVmaW5lZCIsInB1c2giLCJfaSIsIl9PYmplY3QkdmFsdWVzIiwidmFsdWVzIiwic29ydCIsImIiLCJsb2NhbGVDb21wYXJlIiwibWFuZGF0c0J5QWN0ZXVyVWlkIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsIm1hbmRhdFNwbGl0UGF0aCIsIm1hbmRhdEZpbGVuYW1lIiwibWFuZGF0T3JpZ2luYWxGaWxlUGF0aCIsIm1hbmRhdE9yaWdpbmFsSnNvbiIsIm1hbmRhdE9yaWdpbmFsIiwidG9NYW5kYXRXcmFwcGVyIiwibWFuZGF0IiwibWFuZGF0cyIsIl9pMiIsIl9PYmplY3QkdmFsdWVzMiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImFjdGV1ck9yaWdpbmFsRmlsZVBhdGgiLCJhY3RldXJPcmlnaW5hbEpzb24iLCJhY3RldXJPcmlnaW5hbCIsInRvQWN0ZXVyIiwiYWN0ZXVyVWlkIiwiYXNzZXJ0Iiwic3RyaWN0RXF1YWwiLCJhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZU9yaWdpbmFsRmlsZVBhdGgiLCJvcmdhbmVPcmlnaW5hbEpzb24iLCJvcmdhbmVPcmlnaW5hbCIsInRvT3JnYW5lIiwib3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJBZ2VuZGFzIiwiX2l0ZXJhdG9yOSIsImFnZW5kYXMiLCJfc3RlcDkiLCJBZ2VuZGFzUmF3Q29udmVydCIsInRvQWdlbmRhcyIsIl9pdGVyYXRvcjEwIiwicmV1bmlvbnMiLCJyZXVuaW9uIiwiX3N0ZXAxMCIsIndyaXRlUmVvcmdhbml6ZWRKc29uIiwicGF0aEZyb21SZXVuaW9uVWlkIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25PcmlnaW5hbEZpbGVQYXRoIiwicmV1bmlvbk9yaWdpbmFsSnNvbiIsInJldW5pb25PcmlnaW5hbCIsInRvUmV1bmlvbiIsIkFtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yMTIiLCJhbWVuZGVtZW50cyIsIl9zdGVwMTIiLCJBbWVuZGVtZW50c1Jhd0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yMTMiLCJ0ZXh0ZXNFdEFtZW5kZW1lbnRzIiwidGV4dGVsZWciLCJfc3RlcDEzIiwidGV4dGVMZWdpc2xhdGlmIiwiX2l0ZXJhdG9yMTQiLCJfc3RlcDE0IiwiYW1lbmRlbWVudCIsIndyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjE1IiwiX3N0ZXAxNSIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJhbWVuZGVtZW50T3JpZ2luYWwiLCJ0b0FtZW5kZW1lbnRXcmFwcGVyIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjE2IiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsIl9zdGVwMTYiLCJkb2N1bWVudHNEaXIiLCJkb3NzaWVyc0RpciIsIkRvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0IiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTciLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsImRvY3VtZW50IiwiX3N0ZXAxNyIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJfaXRlcmF0b3IxOCIsImRvc3NpZXIiLCJfc3RlcDE4IiwiZG9zc2llclBhcmxlbWVudGFpcmUiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwiX2l0ZXJhdG9yMTkiLCJfc3RlcDE5IiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiZG9jdW1lbnRPcmlnaW5hbEpzb24iLCJkb2N1bWVudE9yaWdpbmFsIiwidG9Eb2N1bWVudCIsIl9pdGVyYXRvcjIwIiwiX3N0ZXAyMCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbCIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJTY3J1dGlucyIsIl9pdGVyYXRvcjIxIiwic2NydXRpbnMiLCJfc3RlcDIxIiwiU2NydXRpbnNSYXdDb252ZXJ0IiwidG9TY3J1dGlucyIsIl9pdGVyYXRvcjIyIiwic2NydXRpbiIsIl9zdGVwMjIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbk9yaWdpbmFsRmlsZVBhdGgiLCJzY3J1dGluT3JpZ2luYWxKc29uIiwic2NydXRpbk9yaWdpbmFsIiwidG9TY3J1dGluV3JhcHBlciIsIlF1ZXN0aW9ucyIsIl9pdGVyYXRvcjI0IiwicXVlc3Rpb25zIiwiX3N0ZXAyNCIsIl9pdGVyYXRvcjI1IiwiX3N0ZXAyNSIsInF1ZXN0aW9uU3BsaXRQYXRoIiwicXVlc3Rpb25GaWxlbmFtZSIsInF1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aCIsInF1ZXN0aW9uT3JpZ2luYWxKc29uIiwicXVlc3Rpb25PcmlnaW5hbCIsIlF1ZXN0aW9uc1Jhd0NvbnZlcnQiLCJ0b1F1ZXN0aW9uV3JhcHBlciIsInF1ZXN0aW9uIiwicGF0aEZyb21RdWVzdGlvblVpZCIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX2l0ZXJhdG9yMjYiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9zdGVwMjYiLCJfaXRlcmF0b3IyNyIsIl9zdGVwMjciLCJjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCIsImNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUiLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGgiLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbiIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwiLCJDb21wdGVzUmVuZHVzUmF3Q29udmVydCIsInRvQ29tcHRlUmVuZHVXcmFwcGVyIiwiY29tcHRlUmVuZHVTZWFuY2UiLCJjb21wdGVSZW5kdSIsInBhdGhGcm9tQ29tcHRlUmVuZHVVaWQiLCJleGlzdGluZ0RhdGVUb0pzb24iLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZUxlZ2lzbGF0aWZSZWYiLCJub3RTdHJpY3RFcXVhbCIsInRleHRlTGVnaXNsYXRpZkRpciIsImRpciIsInBhdGhGcm9tVWlkIiwibWFpbiIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmVvcmdhbml6ZV9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7XG4gIGRhdGFzZXRzLFxuICBEYXRhc2V0U3RydWN0dXJlLFxuICBFbmFibGVkRGF0YXNldHMsXG4gIGdldEVuYWJsZWREYXRhc2V0cyxcbiAgZmlsdGVyQnlMZWdpc2xhdHVyZSxcbn0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgcGF0aEZyb21Db21wdGVSZW5kdVVpZCxcbiAgcGF0aEZyb21Eb2N1bWVudFVpZCxcbiAgcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCxcbiAgcGF0aEZyb21RdWVzdGlvblVpZCxcbiAgcGF0aEZyb21SZXVuaW9uVWlkLFxuICBwYXRoRnJvbVNjcnV0aW5VaWQsXG59IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQW1lbmRlbWVudHNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZGViYXRzXCJcbmltcG9ydCB7XG4gIGNsb25lT3B0aW9uLFxuICBjb21taXRPcHRpb24sXG4gIGNhdGVnb3JpZXNPcHRpb24sXG4gIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICByZW1vdGVPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbiAgdmVyYm9zZU9wdGlvbixcbiAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gIHB1bGxPcHRpb24sXG4gIGZldGNoRG9jdW1lbnRzT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAgY2xvbmVPcHRpb24sXG4gICAgY29tbWl0T3B0aW9uLFxuICAgIGNhdGVnb3JpZXNPcHRpb24sXG4gICAgbGVnaXNsYXR1cmVPcHRpb24sXG4gICAgcmVtb3RlT3B0aW9uLFxuICAgIHNpbGVudE9wdGlvbixcbiAgICB2ZXJib3NlT3B0aW9uLFxuICAgIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICAgIGZldGNoRG9jdW1lbnRzT3B0aW9uLFxuICAgIHB1bGxPcHRpb24sXG4gICAge1xuICAgICAgYWxpYXM6IFwiVlwiLFxuICAgICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSByYXcgZGF0YVwiLFxuICAgICAgbmFtZTogXCJuby12YWxpZGF0ZS1yYXdcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGNsZWFyRGlyZWN0b3J5KGRpclBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBmcy5lbnN1cmVEaXJTeW5jKGRpclBhdGgpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGlyUGF0aCkpIHtcbiAgICBpZiAoIWZpbGVuYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkaXJQYXRoLCBmaWxlbmFtZSkpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lR2l0KFxuICBnaXRHcm91cFVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0TmFtZTogc3RyaW5nLFxuICBkYXRhRGlyOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgZ2l0LmNsb25lKGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbn1cblxuZnVuY3Rpb24gcmVvcmdhbml6ZURhdGEob3B0aW9uczogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuICBsZXQgZXhpdENvZGUgPSBvcHRpb25zLmNvbW1pdCA/IDEwIDogMFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmU/LnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gIGNvbnN0IHZhbGlkYXRlUmF3RGF0YSA9ICFvcHRpb25zW1wibm8tdmFsaWRhdGUtcmF3XCJdXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IGdldEVuYWJsZWREYXRhc2V0cyhvcHRpb25zLmNhdGVnb3JpZXMpXG4gIGxldCBjaG9zZW5EYXRhc2V0cyA9IGZpbHRlckJ5TGVnaXNsYXR1cmUoZGF0YXNldHMsIG9wdGlvbnMubGVnaXNsYXR1cmUpXG5cbiAgZnVuY3Rpb24gY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpcjogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgIClcbiAgICAgIGlmIChcbiAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBnaXQucmVzZXRBbmRQdWxsKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIH1cbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgY29uc3QgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJhY3RldXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoYWN0ZXVyc1Jlb3JnYW5pemVkRGlyKVxuICAgICAgY29uc3Qgb3JnYW5lc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJvcmdhbmVzXCIpXG4gICAgICBmcy5ta2RpclN5bmMob3JnYW5lc1Jlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBvcmlnaW5hbERhdGEuZXhwb3J0LmFjdGV1cnMuYWN0ZXVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1ci51aWRbXCIjdGV4dFwiXSArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5vcmdhbmVzLm9yZ2FuZSkge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgZGVwb3J0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJkZXBvcnRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wiZGVwb3J0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgZGVwb3J0U3BsaXRQYXRoW2RlcG9ydFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghZGVwb3J0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5kZXBvcnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwiZGVwb3J0XCIgZmlsZTogJHtkZXBvcnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0RlcG9ydChkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydCA9IGRlcG9ydE9yaWdpbmFsLmRlcG9ydFxuICAgICAgICAgICAgICAgIGxldCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlcG9ydHMucHVzaChkZXBvcnQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydHMgb2YgT2JqZWN0LnZhbHVlcyhkZXBvcnRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWFuZGF0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wibWFuZGF0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgbWFuZGF0U3BsaXRQYXRoW21hbmRhdFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghbWFuZGF0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5tYW5kYXRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwibWFuZGF0XCIgZmlsZTogJHttYW5kYXRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b01hbmRhdFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UobWFuZGF0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdCA9IG1hbmRhdE9yaWdpbmFsLm1hbmRhdFxuICAgICAgICAgICAgICAgIGxldCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hbmRhdHMucHVzaChtYW5kYXQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdHMgb2YgT2JqZWN0LnZhbHVlcyhtYW5kYXRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiYWN0ZXVyXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFjdGV1clwiIGZpbGU6ICR7YWN0ZXVyT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXIgPSBhY3RldXJPcmlnaW5hbC5hY3RldXJcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyVWlkID0gYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdXG4gICAgICAgICAgICAgIGNvbnN0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAoZGVwb3J0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5kZXBvcnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLmRlcG9ydHMgPSB7IGRlcG9ydDogZGVwb3J0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChtYW5kYXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLm1hbmRhdHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIubWFuZGF0cyA9IHsgbWFuZGF0OiBtYW5kYXRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXJVaWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcIm9yZ2FuZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJvcmdhbmVcIiBmaWxlOiAke29yZ2FuZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b09yZ2FuZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lID0gb3JnYW5lT3JpZ2luYWwub3JnYW5lXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9BZ2VuZGFzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIG9yaWdpbmFsRGF0YS5yZXVuaW9ucy5yZXVuaW9uKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICByZXVuaW9uLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcInJldW5pb25cIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ucmV1bmlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJyZXVuaW9uXCIgZmlsZTogJHtyZXVuaW9uT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uID0gcmV1bmlvbk9yaWdpbmFsLnJldW5pb25cbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIHJldW5pb24sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21SZXVuaW9uVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQudG9BbWVuZGVtZW50cyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGV4dGVMZWdpc2xhdGlmIG9mIG9yaWdpbmFsRGF0YS50ZXh0ZXNFdEFtZW5kZW1lbnRzXG4gICAgICAgICAgICAgIC50ZXh0ZWxlZykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgICAgYW1lbmRlbWVudCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiYW1lbmRlbWVudFwiIGZpbGU6ICR7YW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQudG9BbWVuZGVtZW50V3JhcHBlcihcbiAgICAgICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYW1lbmRlbWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IGFtZW5kZW1lbnRPcmlnaW5hbC5hbWVuZGVtZW50XG4gICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGFtZW5kZW1lbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgY29uc3QgZG9jdW1lbnRzRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJkb2N1bWVudHNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhkb2N1bWVudHNEaXIpXG4gICAgICBjb25zdCBkb3NzaWVyc0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9zc2llcnNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhkb3NzaWVyc0RpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb3NzaWVyc0xlZ2lzbGF0aWZzKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBvcmlnaW5hbERhdGEuZXhwb3J0LnRleHRlc0xlZ2lzbGF0aWZzXG4gICAgICAgICAgICAgIC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50LCBwYXRoRnJvbURvY3VtZW50VWlkKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgZG9zc2llclBhcmxlbWVudGFpcmUgfSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0XG4gICAgICAgICAgICAgIC5kb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXIpIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgICAgcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb2N1bWVudFwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvY3VtZW50XCIgZmlsZTogJHtkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0RvY3VtZW50KGRvY3VtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkb2N1bWVudE9yaWdpbmFsLmRvY3VtZW50XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKGRvY3VtZW50c0RpciwgZG9jdW1lbnQsIHBhdGhGcm9tRG9jdW1lbnRVaWQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9zc2llclBhcmxlbWVudGFpcmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoW1xuICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgaWYgKCFkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCIgZmlsZTogJHtkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKFxuICAgICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsLmRvc3NpZXJQYXJsZW1lbnRhaXJlXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJzRGlyLFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAobGV0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbnMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygb3JpZ2luYWxEYXRhLnNjcnV0aW5zLnNjcnV0aW4pIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIHNjcnV0aW4sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21TY3J1dGluVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5zY3J1dGluU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInNjcnV0aW5cIiBmaWxlOiAke3NjcnV0aW5PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbldyYXBwZXIoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbiA9IHNjcnV0aW5PcmlnaW5hbC5zY3J1dGluXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBzY3J1dGluLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tU2NydXRpblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uU3BsaXRQYXRoW3F1ZXN0aW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5xdWVzdGlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJxdWVzdGlvblwiIGZpbGU6ICR7cXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBRdWVzdGlvbnNSYXdDb252ZXJ0LnRvUXVlc3Rpb25XcmFwcGVyKHF1ZXN0aW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShxdWVzdGlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBxdWVzdGlvbk9yaWdpbmFsLnF1ZXN0aW9uXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBxdWVzdGlvbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVF1ZXN0aW9uVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCIueG1sXCIpXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5jb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJjb21wdGVSZW5kdVNlYW5jZVwiIGZpbGU6ICR7Y29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQudG9Db21wdGVSZW5kdVdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZSA9IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwuY29tcHRlUmVuZHVcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tQ29tcHRlUmVuZHVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgZGF0YXNldFJlb3JnYW5pemVkRGlyOiBzdHJpbmcsXG4gIGFtZW5kZW1lbnQ6IHtcbiAgICB1aWQ6IHN0cmluZ1xuICAgIHRleHRlTGVnaXNsYXRpZlJlZjogc3RyaW5nXG4gIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID0gYW1lbmRlbWVudC50ZXh0ZUxlZ2lzbGF0aWZSZWZcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHVpZFRleHRlTGVnaXNsYXRpZiwgdW5kZWZpbmVkKVxuICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWZEaXIgPSBwYXRoLmpvaW4oXG4gICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgIHVpZFRleHRlTGVnaXNsYXRpZixcbiAgKVxuICBmcy5lbnN1cmVEaXJTeW5jKHRleHRlTGVnaXNsYXRpZkRpcilcbiAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgdGV4dGVMZWdpc2xhdGlmRGlyLFxuICAgIGFtZW5kZW1lbnQudWlkICsgXCIuanNvblwiLFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVSZW9yZ2FuaXplZEpzb248VCBleHRlbmRzIHsgdWlkOiBzdHJpbmcgfT4oXG4gIGRpcjogc3RyaW5nLFxuICBvYmo6IFQsXG4gIHBhdGhGcm9tVWlkOiAoZGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKSA9PiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVVpZChkaXIsIG9iai51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIHJlb3JnYW5pemVEYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInJlb3JnYW5pemVfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGdCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFPQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxHQUFBLEdBQUFDLHVCQUFBLENBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxRQUFBLEdBQUFULE9BQUE7QUFRQSxJQUFBVSxtQkFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsUUFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksWUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEscUJBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLFNBQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFlLFVBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixPQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLFlBQUEsR0FBQWpCLE9BQUE7QUFXNkIsU0FBQWtCLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWix3QkFBQVksQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWpCLENBQUEsRUFBQWMsQ0FBQSxTQUFBSSxDQUFBLEdBQUFSLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUksQ0FBQSxLQUFBQSxDQUFBLENBQUFYLEdBQUEsSUFBQVcsQ0FBQSxDQUFBQyxHQUFBLElBQUFSLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUksQ0FBQSxJQUFBVixDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsY0FBQVIsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWdCLEdBQUEsQ0FBQW5CLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQTVCLHVCQUFBd0MsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQWhCLFVBQUEsR0FBQWdCLEdBQUEsZ0JBQUFBLEdBQUE7QUFBQSxTQUFBQyxtQkFBQUMsR0FBQSxXQUFBQyxrQkFBQSxDQUFBRCxHQUFBLEtBQUFFLGdCQUFBLENBQUFGLEdBQUEsS0FBQUcsMkJBQUEsQ0FBQUgsR0FBQSxLQUFBSSxrQkFBQTtBQUFBLFNBQUFBLG1CQUFBLGNBQUFDLFNBQUE7QUFBQSxTQUFBSCxpQkFBQUksSUFBQSxlQUFBQyxNQUFBLG9CQUFBRCxJQUFBLENBQUFDLE1BQUEsQ0FBQUMsUUFBQSxhQUFBRixJQUFBLCtCQUFBRyxLQUFBLENBQUFDLElBQUEsQ0FBQUosSUFBQTtBQUFBLFNBQUFMLG1CQUFBRCxHQUFBLFFBQUFTLEtBQUEsQ0FBQUUsT0FBQSxDQUFBWCxHQUFBLFVBQUFZLGlCQUFBLENBQUFaLEdBQUE7QUFBQSxTQUFBYSwyQkFBQUMsQ0FBQSxFQUFBQyxjQUFBLFFBQUFDLEVBQUEsVUFBQVQsTUFBQSxvQkFBQU8sQ0FBQSxDQUFBUCxNQUFBLENBQUFDLFFBQUEsS0FBQU0sQ0FBQSxxQkFBQUUsRUFBQSxRQUFBUCxLQUFBLENBQUFFLE9BQUEsQ0FBQUcsQ0FBQSxNQUFBRSxFQUFBLEdBQUFiLDJCQUFBLENBQUFXLENBQUEsTUFBQUMsY0FBQSxJQUFBRCxDQUFBLFdBQUFBLENBQUEsQ0FBQUcsTUFBQSxxQkFBQUQsRUFBQSxFQUFBRixDQUFBLEdBQUFFLEVBQUEsTUFBQXBCLENBQUEsVUFBQXNCLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQWhDLENBQUEsV0FBQUEsRUFBQSxRQUFBVSxDQUFBLElBQUFrQixDQUFBLENBQUFHLE1BQUEsV0FBQUcsSUFBQSxtQkFBQUEsSUFBQSxTQUFBQyxLQUFBLEVBQUFQLENBQUEsQ0FBQWxCLENBQUEsVUFBQWxCLENBQUEsV0FBQUEsRUFBQTRDLEVBQUEsVUFBQUEsRUFBQSxLQUFBQyxDQUFBLEVBQUFMLENBQUEsZ0JBQUFiLFNBQUEsaUpBQUFtQixnQkFBQSxTQUFBQyxNQUFBLFVBQUFDLEdBQUEsV0FBQVAsQ0FBQSxXQUFBQSxFQUFBLElBQUFILEVBQUEsR0FBQUEsRUFBQSxDQUFBckIsSUFBQSxDQUFBbUIsQ0FBQSxNQUFBNUIsQ0FBQSxXQUFBQSxFQUFBLFFBQUF5QyxJQUFBLEdBQUFYLEVBQUEsQ0FBQVksSUFBQSxJQUFBSixnQkFBQSxHQUFBRyxJQUFBLENBQUFQLElBQUEsU0FBQU8sSUFBQSxLQUFBakQsQ0FBQSxXQUFBQSxFQUFBbUQsR0FBQSxJQUFBSixNQUFBLFNBQUFDLEdBQUEsR0FBQUcsR0FBQSxLQUFBTixDQUFBLFdBQUFBLEVBQUEsZUFBQUMsZ0JBQUEsSUFBQVIsRUFBQSxvQkFBQUEsRUFBQSw4QkFBQVMsTUFBQSxRQUFBQyxHQUFBO0FBQUEsU0FBQXZCLDRCQUFBVyxDQUFBLEVBQUFnQixNQUFBLFNBQUFoQixDQUFBLHFCQUFBQSxDQUFBLHNCQUFBRixpQkFBQSxDQUFBRSxDQUFBLEVBQUFnQixNQUFBLE9BQUE1QyxDQUFBLEdBQUFHLE1BQUEsQ0FBQUksU0FBQSxDQUFBc0MsUUFBQSxDQUFBcEMsSUFBQSxDQUFBbUIsQ0FBQSxFQUFBa0IsS0FBQSxhQUFBOUMsQ0FBQSxpQkFBQTRCLENBQUEsQ0FBQW1CLFdBQUEsRUFBQS9DLENBQUEsR0FBQTRCLENBQUEsQ0FBQW1CLFdBQUEsQ0FBQUMsSUFBQSxNQUFBaEQsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBdUIsS0FBQSxDQUFBQyxJQUFBLENBQUFJLENBQUEsT0FBQTVCLENBQUEsK0RBQUFpRCxJQUFBLENBQUFqRCxDQUFBLFVBQUEwQixpQkFBQSxDQUFBRSxDQUFBLEVBQUFnQixNQUFBO0FBQUEsU0FBQWxCLGtCQUFBWixHQUFBLEVBQUFvQyxHQUFBLFFBQUFBLEdBQUEsWUFBQUEsR0FBQSxHQUFBcEMsR0FBQSxDQUFBaUIsTUFBQSxFQUFBbUIsR0FBQSxHQUFBcEMsR0FBQSxDQUFBaUIsTUFBQSxXQUFBckIsQ0FBQSxNQUFBeUMsSUFBQSxPQUFBNUIsS0FBQSxDQUFBMkIsR0FBQSxHQUFBeEMsQ0FBQSxHQUFBd0MsR0FBQSxFQUFBeEMsQ0FBQSxJQUFBeUMsSUFBQSxDQUFBekMsQ0FBQSxJQUFBSSxHQUFBLENBQUFKLENBQUEsVUFBQXlDLElBQUE7QUFFN0IsU0FBU0MsU0FBU0EsQ0FBQ0MsSUFBYyxFQUFPO0VBQ3RDLElBQU1DLGtCQUFrQixHQUFHLENBQ3pCQyx3QkFBVyxFQUNYQyx5QkFBWSxFQUNaQyw2QkFBZ0IsRUFDaEJDLDhCQUFpQixFQUNqQkMseUJBQVksRUFDWkMseUJBQVksRUFDWkMsMEJBQWEsRUFDYkMsaUNBQW9CLEVBQ3BCQyxpQ0FBb0IsRUFDcEJDLHVCQUFVLEVBQ1Y7SUFDRUMsS0FBSyxFQUFFLEdBQUc7SUFDVkMsSUFBSSxFQUFFLHlCQUF5QjtJQUMvQmxCLElBQUksRUFBRSxpQkFBaUI7SUFDdkJtQixJQUFJLEVBQUVDO0VBQ1IsQ0FBQyxDQUNGO0VBQ0QsSUFBTUMsT0FBTyxHQUFHLElBQUFDLDJCQUFlLEVBQUNoQixrQkFBa0IsRUFBRTtJQUNsREQsSUFBSSxFQUFFQTtFQUNSLENBQUMsQ0FBQztFQUNGLE9BQU9nQixPQUFPO0FBQ2hCO0FBRUEsU0FBU0UsY0FBY0EsQ0FBQ0MsT0FBZSxFQUFRO0VBQzdDQyxtQkFBRSxDQUFDQyxhQUFhLENBQUNGLE9BQU8sQ0FBQztFQUFBLElBQUFHLFNBQUEsR0FBQWhELDBCQUFBLENBQ0Y4QyxtQkFBRSxDQUFDRyxXQUFXLENBQUNKLE9BQU8sQ0FBQztJQUFBSyxLQUFBO0VBQUE7SUFBOUMsS0FBQUYsU0FBQSxDQUFBMUMsQ0FBQSxNQUFBNEMsS0FBQSxHQUFBRixTQUFBLENBQUEzRSxDQUFBLElBQUFrQyxJQUFBLEdBQWdEO01BQUEsSUFBckM0QyxRQUFRLEdBQUFELEtBQUEsQ0FBQTFDLEtBQUE7TUFDakIsSUFBSSxDQUFDMkMsUUFBUSxDQUFDQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDN0JOLG1CQUFFLENBQUNPLFVBQVUsQ0FBQ0MsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDVixPQUFPLEVBQUVNLFFBQVEsQ0FBQyxDQUFDO01BQzdDO0lBQ0Y7RUFBQyxTQUFBdEMsR0FBQTtJQUFBbUMsU0FBQSxDQUFBbkYsQ0FBQSxDQUFBZ0QsR0FBQTtFQUFBO0lBQUFtQyxTQUFBLENBQUF0QyxDQUFBO0VBQUE7QUFDSDtBQUVBLFNBQVM4QyxRQUFRQSxDQUNmQyxXQUErQixFQUMvQkMsV0FBbUIsRUFDbkJDLE9BQWUsRUFDVDtFQUNOM0csR0FBRyxDQUFDNEcsS0FBSyxDQUFDSCxXQUFXLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxDQUFDO0FBQzlDO0FBRUEsU0FBU0UsY0FBY0EsQ0FBQ25CLE9BQVksRUFBVTtFQUFBLElBQUFvQixjQUFBO0VBQzVDLElBQU1ILE9BQU8sR0FBR2pCLE9BQU8sQ0FBQ2lCLE9BQU87RUFDL0JJLElBQUksQ0FBQ25GLFNBQVMsQ0FBQ29GLE1BQU0sR0FBR0Msd0JBQWlCO0VBQ3pDLElBQUlDLFFBQVEsR0FBR3hCLE9BQU8sQ0FBQ3lCLE1BQU0sR0FBRyxFQUFFLEdBQUcsQ0FBQztFQUN0QyxJQUFNVixXQUFXLElBQUFLLGNBQUEsR0FBR3BCLE9BQU8sQ0FBQ2tCLEtBQUssY0FBQUUsY0FBQSx1QkFBYkEsY0FBQSxDQUFlTSxJQUFJLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztFQUM3RCxJQUFNQyxlQUFlLEdBQUcsQ0FBQzVCLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztFQUNuRCxJQUFNNkIsZUFBZSxHQUFHLElBQUFDLDRCQUFrQixFQUFDOUIsT0FBTyxDQUFDK0IsVUFBVSxDQUFDO0VBQzlELElBQUlDLGNBQWMsR0FBRyxJQUFBQyw2QkFBbUIsRUFBQ0Msa0JBQVEsRUFBRWxDLE9BQU8sQ0FBQ21DLFdBQVcsQ0FBQztFQUV2RSxTQUFTQyxTQUFTQSxDQUFDQyxxQkFBNkIsRUFBRXJDLE9BQVksRUFBUTtJQUNwRSxJQUFJQSxPQUFPLENBQUN5QixNQUFNLEVBQUU7TUFDbEIsSUFBTWEsU0FBUyxHQUFHaEksR0FBRyxDQUFDaUksYUFBYSxDQUNqQ0YscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQnJDLE9BQU8sQ0FBQ3dDLE1BQ1YsQ0FBQztNQUNELElBQ0doQixRQUFRLEtBQUssRUFBRSxJQUFJYyxTQUFTLEtBQUssRUFBRSxJQUNuQ2QsUUFBUSxLQUFLLENBQUMsSUFBSWMsU0FBUyxLQUFLLENBQUMsSUFBSUEsU0FBUyxLQUFLLEVBQUcsRUFDdkQ7UUFDQWQsUUFBUSxHQUFHYyxTQUFTO01BQ3RCO0lBQ0Y7RUFDRjtFQUVBLElBQUlULGVBQWUsR0FBR1kseUJBQWUsQ0FBQ0MsZ0JBQWdCLEVBQUU7SUFBQSxJQUFBQyxVQUFBLEdBQUFyRiwwQkFBQSxDQUNoQzBFLGNBQWMsQ0FBQ1ksZ0JBQWdCO01BQUFDLE1BQUE7SUFBQTtNQUFyRCxLQUFBRixVQUFBLENBQUEvRSxDQUFBLE1BQUFpRixNQUFBLEdBQUFGLFVBQUEsQ0FBQWhILENBQUEsSUFBQWtDLElBQUEsR0FBdUQ7UUFBQSxJQUE1Q2lGLE9BQU8sR0FBQUQsTUFBQSxDQUFBL0UsS0FBQTtRQUNoQixJQUFNaUYsK0JBQXVDLEdBQUduQyxnQkFBSSxDQUFDQyxJQUFJLENBQ3ZESSxPQUFPLEVBQ1A2QixPQUFPLENBQUNyQyxRQUNWLENBQUM7UUFDRCxJQUFJLENBQUNULE9BQU8sQ0FBQ2dELE1BQU0sRUFBRTtVQUNuQkMsT0FBTyxDQUFDQyxHQUFHLGlCQUFBQyxNQUFBLENBQWlCSiwrQkFBK0IsQ0FBRSxDQUFDO1FBQ2hFO1FBRUEsSUFBTS9CLFdBQVcsR0FBR0osZ0JBQUksQ0FBQ3dDLFFBQVEsQ0FDL0JMLCtCQUErQixFQUMvQixPQUNGLENBQUM7UUFDRGpDLFFBQVEsQ0FBQ0MsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sQ0FBQztRQUUzQyxJQUFNb0IscUJBQXFCLEdBQUd6QixnQkFBSSxDQUFDQyxJQUFJLENBQUNJLE9BQU8sRUFBRUQsV0FBVyxDQUFDO1FBQzdELElBQUloQixPQUFPLENBQUNxRCxJQUFJLEVBQUU7VUFDaEIvSSxHQUFHLENBQUNnSixZQUFZLENBQUNqQixxQkFBcUIsQ0FBQztRQUN6QztRQUNBbkMsY0FBYyxDQUFDbUMscUJBQXFCLENBQUM7UUFFckMsSUFBTWtCLHFCQUFxQixHQUFHM0MsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDd0IscUJBQXFCLEVBQUUsU0FBUyxDQUFDO1FBQ3pFakMsbUJBQUUsQ0FBQ29ELFNBQVMsQ0FBQ0QscUJBQXFCLENBQUM7UUFDbkMsSUFBTUUscUJBQXFCLEdBQUc3QyxnQkFBSSxDQUFDQyxJQUFJLENBQUN3QixxQkFBcUIsRUFBRSxTQUFTLENBQUM7UUFDekVqQyxtQkFBRSxDQUFDb0QsU0FBUyxDQUFDQyxxQkFBcUIsQ0FBQztRQUVuQyxRQUFRWCxPQUFPLENBQUNZLFNBQVM7VUFDdkIsS0FBS0MsMEJBQWdCLENBQUNDLFVBQVU7WUFDOUI7Y0FDRSxJQUFNQyxZQUFvQixHQUFHekQsbUJBQUUsQ0FBQzBELFlBQVksQ0FDMUNmLCtCQUErQixFQUMvQjtnQkFDRWdCLFFBQVEsRUFBRTtjQUNaLENBQ0YsQ0FBQztjQUNELElBQU1DLFlBQWlCLEdBQUdwQyxlQUFlLEdBQ3JDcUMsMkJBQTBCLENBQUNDLGtCQUFrQixDQUFDTCxZQUFZLENBQUMsR0FDM0RNLElBQUksQ0FBQ0MsS0FBSyxDQUFDUCxZQUFZLENBQUM7Y0FBQSxJQUFBUSxVQUFBLEdBQUEvRywwQkFBQSxDQUVQMEcsWUFBWSxVQUFPLENBQUNNLE9BQU8sQ0FBQ0MsTUFBTTtnQkFBQUMsTUFBQTtjQUFBO2dCQUF2RCxLQUFBSCxVQUFBLENBQUF6RyxDQUFBLE1BQUE0RyxNQUFBLEdBQUFILFVBQUEsQ0FBQTFJLENBQUEsSUFBQWtDLElBQUEsR0FBeUQ7a0JBQUEsSUFBOUMwRyxNQUFNLEdBQUFDLE1BQUEsQ0FBQTFHLEtBQUE7a0JBQ2YsSUFBTTJHLHVCQUErQixHQUFHN0QsZ0JBQUksQ0FBQ0MsSUFBSSxDQUMvQzBDLHFCQUFxQixFQUNyQmdCLE1BQU0sQ0FBQ0csR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQ3hCLENBQUM7a0JBQ0R0RSxtQkFBRSxDQUFDdUUsYUFBYSxDQUNkRix1QkFBdUIsRUFDdkJOLElBQUksQ0FBQ1MsU0FBUyxDQUFDTCxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUMvQjtvQkFDRVIsUUFBUSxFQUFFO2tCQUNaLENBQ0YsQ0FBQztnQkFDSDtjQUFDLFNBQUE1RixHQUFBO2dCQUFBa0csVUFBQSxDQUFBbEosQ0FBQSxDQUFBZ0QsR0FBQTtjQUFBO2dCQUFBa0csVUFBQSxDQUFBckcsQ0FBQTtjQUFBO2NBQUEsSUFBQTZHLFVBQUEsR0FBQXZILDBCQUFBLENBRW9CMEcsWUFBWSxVQUFPLENBQUNjLE9BQU8sQ0FBQ0MsTUFBTTtnQkFBQUMsTUFBQTtjQUFBO2dCQUF2RCxLQUFBSCxVQUFBLENBQUFqSCxDQUFBLE1BQUFvSCxNQUFBLEdBQUFILFVBQUEsQ0FBQWxKLENBQUEsSUFBQWtDLElBQUEsR0FBeUQ7a0JBQUEsSUFBOUNrSCxNQUFNLEdBQUFDLE1BQUEsQ0FBQWxILEtBQUE7a0JBQ2YsSUFBTTJHLHdCQUErQixHQUFHN0QsZ0JBQUksQ0FBQ0MsSUFBSSxDQUMvQzRDLHFCQUFxQixFQUNyQnNCLE1BQU0sQ0FBQ0wsR0FBRyxHQUFHLE9BQ2YsQ0FBQztrQkFDRHRFLG1CQUFFLENBQUN1RSxhQUFhLENBQ2RGLHdCQUF1QixFQUN2Qk4sSUFBSSxDQUFDUyxTQUFTLENBQUNHLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQy9CO29CQUNFaEIsUUFBUSxFQUFFO2tCQUNaLENBQ0YsQ0FBQztnQkFDSDtjQUFDLFNBQUE1RixHQUFBO2dCQUFBMEcsVUFBQSxDQUFBMUosQ0FBQSxDQUFBZ0QsR0FBQTtjQUFBO2dCQUFBMEcsVUFBQSxDQUFBN0csQ0FBQTtjQUFBO1lBQ0g7WUFDQTtVQUNGLEtBQUsyRiwwQkFBZ0IsQ0FBQ3NCLGNBQWM7WUFDbEM7Y0FDRSxJQUFNQyxrQkFFTCxHQUFHLENBQUMsQ0FBQztjQUNOLElBQ0U5RSxtQkFBRSxDQUFDK0UsVUFBVSxDQUNYdkUsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDa0MsK0JBQStCLEVBQUUsUUFBUSxDQUNyRCxDQUFDLEVBQ0Q7Z0JBQUEsSUFBQXFDLFVBQUEsR0FBQTlILDBCQUFBLENBQzhCLElBQUErSCxxQkFBTyxFQUNuQ3RDLCtCQUErQixFQUMvQixDQUFDLFFBQVEsQ0FDWCxDQUFDO2tCQUFBdUMsTUFBQTtnQkFBQTtrQkFIRCxLQUFBRixVQUFBLENBQUF4SCxDQUFBLE1BQUEwSCxNQUFBLEdBQUFGLFVBQUEsQ0FBQXpKLENBQUEsSUFBQWtDLElBQUEsR0FHRztvQkFBQSxJQUhRMEgsZUFBZSxHQUFBRCxNQUFBLENBQUF4SCxLQUFBO29CQUl4QixJQUFNMEgsY0FBYyxHQUNsQkQsZUFBZSxDQUFDQSxlQUFlLENBQUM3SCxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLENBQUM4SCxjQUFjLENBQUNDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtzQkFDckM7b0JBQ0Y7b0JBQ0EsSUFBTUMsc0JBQXNCLEdBQUc5RSxnQkFBSSxDQUFDQyxJQUFJLENBQUE4RSxLQUFBLENBQVQvRSxnQkFBSSxHQUNqQ21DLCtCQUErQixFQUFBSSxNQUFBLENBQUEzRyxrQkFBQSxDQUM1QitJLGVBQWUsRUFDcEIsQ0FBQztvQkFDRCxJQUFJdkYsT0FBTyxDQUFDNEYsT0FBTyxFQUFFO3NCQUNuQjNDLE9BQU8sQ0FBQ0MsR0FBRywrQkFBQUMsTUFBQSxDQUNtQnVDLHNCQUFzQixXQUNwRCxDQUFDO29CQUNIO29CQUNBLElBQU1HLGtCQUEwQixHQUFHekYsbUJBQUUsQ0FBQzBELFlBQVksQ0FDaEQ0QixzQkFBc0IsRUFDdEI7c0JBQ0UzQixRQUFRLEVBQUU7b0JBQ1osQ0FDRixDQUFDO29CQUNELElBQU0rQixjQUFtQixHQUFHbEUsZUFBZSxHQUN2Q3FDLDJCQUEwQixDQUFDOEIsUUFBUSxDQUFDRixrQkFBa0IsQ0FBQyxHQUN2RDFCLElBQUksQ0FBQ0MsS0FBSyxDQUFDeUIsa0JBQWtCLENBQUM7b0JBQ2xDLElBQU1HLE1BQU0sR0FBR0YsY0FBYyxDQUFDRSxNQUFNO29CQUNwQyxJQUFJQyxRQUFPLEdBQUdmLGtCQUFrQixDQUFDYyxNQUFNLENBQUNFLFNBQVMsQ0FBQztvQkFDbEQsSUFBSUQsUUFBTyxLQUFLRSxTQUFTLEVBQUU7c0JBQ3pCRixRQUFPLEdBQUdmLGtCQUFrQixDQUFDYyxNQUFNLENBQUNFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ3JEO29CQUNBRCxRQUFPLENBQUNHLElBQUksQ0FBQ0osTUFBTSxDQUFDO2tCQUN0QjtnQkFBQyxTQUFBN0gsR0FBQTtrQkFBQWlILFVBQUEsQ0FBQWpLLENBQUEsQ0FBQWdELEdBQUE7Z0JBQUE7a0JBQUFpSCxVQUFBLENBQUFwSCxDQUFBO2dCQUFBO2dCQUVELFNBQUFxSSxFQUFBLE1BQUFDLGNBQUEsR0FBc0J4SyxNQUFNLENBQUN5SyxNQUFNLENBQUNyQixrQkFBa0IsQ0FBQyxFQUFBbUIsRUFBQSxHQUFBQyxjQUFBLENBQUE1SSxNQUFBLEVBQUEySSxFQUFBLElBQUU7a0JBQXBELElBQU1KLE9BQU8sR0FBQUssY0FBQSxDQUFBRCxFQUFBO2tCQUNoQkosT0FBTyxDQUFDTyxJQUFJLENBQUMsVUFBQzNLLENBQUMsRUFBRTRLLENBQUM7b0JBQUEsT0FDaEI1SyxDQUFDLENBQUM2SSxHQUFHLENBQUNoSCxNQUFNLEtBQUsrSSxDQUFDLENBQUMvQixHQUFHLENBQUNoSCxNQUFNLEdBQ3pCN0IsQ0FBQyxDQUFDNkksR0FBRyxDQUFDZ0MsYUFBYSxDQUFDRCxDQUFDLENBQUMvQixHQUFHLENBQUMsR0FDMUI3SSxDQUFDLENBQUM2SSxHQUFHLENBQUNoSCxNQUFNLEdBQUcrSSxDQUFDLENBQUMvQixHQUFHLENBQUNoSCxNQUFNO2tCQUFBLENBQ2pDLENBQUM7Z0JBQ0g7Y0FDRjtjQUVBLElBQU1pSixrQkFFTCxHQUFHLENBQUMsQ0FBQztjQUNOLElBQ0V2RyxtQkFBRSxDQUFDK0UsVUFBVSxDQUNYdkUsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDa0MsK0JBQStCLEVBQUUsUUFBUSxDQUNyRCxDQUFDLEVBQ0Q7Z0JBQUEsSUFBQTZELFVBQUEsR0FBQXRKLDBCQUFBLENBQzhCLElBQUErSCxxQkFBTyxFQUNuQ3RDLCtCQUErQixFQUMvQixDQUFDLFFBQVEsQ0FDWCxDQUFDO2tCQUFBOEQsTUFBQTtnQkFBQTtrQkFIRCxLQUFBRCxVQUFBLENBQUFoSixDQUFBLE1BQUFpSixNQUFBLEdBQUFELFVBQUEsQ0FBQWpMLENBQUEsSUFBQWtDLElBQUEsR0FHRztvQkFBQSxJQUhRaUosZUFBZSxHQUFBRCxNQUFBLENBQUEvSSxLQUFBO29CQUl4QixJQUFNaUosY0FBYyxHQUNsQkQsZUFBZSxDQUFDQSxlQUFlLENBQUNwSixNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLENBQUNxSixjQUFjLENBQUN0QixRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7c0JBQ3JDO29CQUNGO29CQUNBLElBQU11QixzQkFBc0IsR0FBR3BHLGdCQUFJLENBQUNDLElBQUksQ0FBQThFLEtBQUEsQ0FBVC9FLGdCQUFJLEdBQ2pDbUMsK0JBQStCLEVBQUFJLE1BQUEsQ0FBQTNHLGtCQUFBLENBQzVCc0ssZUFBZSxFQUNwQixDQUFDO29CQUNELElBQUk5RyxPQUFPLENBQUM0RixPQUFPLEVBQUU7c0JBQ25CM0MsT0FBTyxDQUFDQyxHQUFHLCtCQUFBQyxNQUFBLENBQ21CNkQsc0JBQXNCLFdBQ3BELENBQUM7b0JBQ0g7b0JBQ0EsSUFBTUMsa0JBQTBCLEdBQUc3RyxtQkFBRSxDQUFDMEQsWUFBWSxDQUNoRGtELHNCQUFzQixFQUN0QjtzQkFDRWpELFFBQVEsRUFBRTtvQkFDWixDQUNGLENBQUM7b0JBQ0QsSUFBTW1ELGNBQW1CLEdBQUd0RixlQUFlLEdBQ3ZDcUMsMkJBQTBCLENBQUNrRCxlQUFlLENBQ3hDRixrQkFDRixDQUFDLEdBQ0Q5QyxJQUFJLENBQUNDLEtBQUssQ0FBQzZDLGtCQUFrQixDQUFDO29CQUNsQyxJQUFNRyxNQUFNLEdBQUdGLGNBQWMsQ0FBQ0UsTUFBTTtvQkFDcEMsSUFBSUMsUUFBTyxHQUFHVixrQkFBa0IsQ0FBQ1MsTUFBTSxDQUFDbEIsU0FBUyxDQUFDO29CQUNsRCxJQUFJbUIsUUFBTyxLQUFLbEIsU0FBUyxFQUFFO3NCQUN6QmtCLFFBQU8sR0FBR1Ysa0JBQWtCLENBQUNTLE1BQU0sQ0FBQ2xCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ3JEO29CQUNBbUIsUUFBTyxDQUFDakIsSUFBSSxDQUFDZ0IsTUFBTSxDQUFDO2tCQUN0QjtnQkFBQyxTQUFBakosR0FBQTtrQkFBQXlJLFVBQUEsQ0FBQXpMLENBQUEsQ0FBQWdELEdBQUE7Z0JBQUE7a0JBQUF5SSxVQUFBLENBQUE1SSxDQUFBO2dCQUFBO2dCQUVELFNBQUFzSixHQUFBLE1BQUFDLGVBQUEsR0FBc0J6TCxNQUFNLENBQUN5SyxNQUFNLENBQUNJLGtCQUFrQixDQUFDLEVBQUFXLEdBQUEsR0FBQUMsZUFBQSxDQUFBN0osTUFBQSxFQUFBNEosR0FBQSxJQUFFO2tCQUFwRCxJQUFNRCxPQUFPLEdBQUFFLGVBQUEsQ0FBQUQsR0FBQTtrQkFDaEJELE9BQU8sQ0FBQ2IsSUFBSSxDQUFDLFVBQUMzSyxDQUFDLEVBQUU0SyxDQUFDO29CQUFBLE9BQ2hCNUssQ0FBQyxDQUFDNkksR0FBRyxDQUFDaEgsTUFBTSxLQUFLK0ksQ0FBQyxDQUFDL0IsR0FBRyxDQUFDaEgsTUFBTSxHQUN6QjdCLENBQUMsQ0FBQzZJLEdBQUcsQ0FBQ2dDLGFBQWEsQ0FBQ0QsQ0FBQyxDQUFDL0IsR0FBRyxDQUFDLEdBQzFCN0ksQ0FBQyxDQUFDNkksR0FBRyxDQUFDaEgsTUFBTSxHQUFHK0ksQ0FBQyxDQUFDL0IsR0FBRyxDQUFDaEgsTUFBTTtrQkFBQSxDQUNqQyxDQUFDO2dCQUNIO2NBQ0Y7Y0FBQyxJQUFBOEosVUFBQSxHQUFBbEssMEJBQUEsQ0FFNkIsSUFBQStILHFCQUFPLEVBQ25DdEMsK0JBQStCLEVBQy9CLENBQUMsUUFBUSxDQUNYLENBQUM7Z0JBQUEwRSxNQUFBO2NBQUE7Z0JBSEQsS0FBQUQsVUFBQSxDQUFBNUosQ0FBQSxNQUFBNkosTUFBQSxHQUFBRCxVQUFBLENBQUE3TCxDQUFBLElBQUFrQyxJQUFBLEdBR0c7a0JBQUEsSUFIUTZKLGVBQWUsR0FBQUQsTUFBQSxDQUFBM0osS0FBQTtrQkFJeEIsSUFBTTZKLGNBQWMsR0FBR0QsZUFBZSxDQUFDQSxlQUFlLENBQUNoSyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2tCQUNsRSxJQUFJLENBQUNpSyxjQUFjLENBQUNsQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3JDO2tCQUNGO2tCQUNBLElBQU1tQyxzQkFBc0IsR0FBR2hILGdCQUFJLENBQUNDLElBQUksQ0FBQThFLEtBQUEsQ0FBVC9FLGdCQUFJLEdBQ2pDbUMsK0JBQStCLEVBQUFJLE1BQUEsQ0FBQTNHLGtCQUFBLENBQzVCa0wsZUFBZSxFQUNwQixDQUFDO2tCQUNELElBQUkxSCxPQUFPLENBQUM0RixPQUFPLEVBQUU7b0JBQ25CM0MsT0FBTyxDQUFDQyxHQUFHLG9DQUFBQyxNQUFBLENBQ3dCeUUsc0JBQXNCLFdBQ3pELENBQUM7a0JBQ0g7a0JBQ0EsSUFBTUMsa0JBQTBCLEdBQUd6SCxtQkFBRSxDQUFDMEQsWUFBWSxDQUNoRDhELHNCQUFzQixFQUN0QjtvQkFDRTdELFFBQVEsRUFBRTtrQkFDWixDQUNGLENBQUM7a0JBQ0QsSUFBTStELGNBQW1CLEdBQUdsRyxlQUFlLEdBQ3ZDcUMsMkJBQTBCLENBQUM4RCxRQUFRLENBQUNGLGtCQUFrQixDQUFDLEdBQ3ZEMUQsSUFBSSxDQUFDQyxLQUFLLENBQUN5RCxrQkFBa0IsQ0FBQztrQkFDbEMsSUFBTXRELE9BQU0sR0FBR3VELGNBQWMsQ0FBQ3ZELE1BQU07a0JBQ3BDLElBQU15RCxVQUFTLEdBQUd6RCxPQUFNLENBQUNHLEdBQUcsQ0FBQyxPQUFPLENBQUM7a0JBQ3JDLElBQU11QixTQUFPLEdBQUdmLGtCQUFrQixDQUFDOEMsVUFBUyxDQUFDO2tCQUM3QyxJQUFJL0IsU0FBTyxLQUFLRSxTQUFTLEVBQUU7b0JBQ3pCOEIsa0JBQU0sQ0FBQ0MsV0FBVyxDQUFDM0QsT0FBTSxDQUFDMEIsT0FBTyxFQUFFRSxTQUFTLENBQUM7b0JBQzdDNUIsT0FBTSxDQUFDMEIsT0FBTyxHQUFHO3NCQUFFRCxNQUFNLEVBQUVDO29CQUFRLENBQUM7a0JBQ3RDO2tCQUNBLElBQU1vQixTQUFPLEdBQUdWLGtCQUFrQixDQUFDcUIsVUFBUyxDQUFDO2tCQUM3QyxJQUFJWCxTQUFPLEtBQUtsQixTQUFTLEVBQUU7b0JBQ3pCOEIsa0JBQU0sQ0FBQ0MsV0FBVyxDQUFDM0QsT0FBTSxDQUFDOEMsT0FBTyxFQUFFbEIsU0FBUyxDQUFDO29CQUM3QzVCLE9BQU0sQ0FBQzhDLE9BQU8sR0FBRztzQkFBRUQsTUFBTSxFQUFFQztvQkFBUSxDQUFDO2tCQUN0QztrQkFDQSxJQUFNYyw2QkFBcUMsR0FBR3ZILGdCQUFJLENBQUNDLElBQUksQ0FDckQwQyxxQkFBcUIsRUFDckJ5RSxVQUFTLEdBQUcsT0FDZCxDQUFDO2tCQUNENUgsbUJBQUUsQ0FBQ3VFLGFBQWEsQ0FDZHdELDZCQUE2QixFQUM3QmhFLElBQUksQ0FBQ1MsU0FBUyxDQUFDTCxPQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUMvQjtvQkFDRVIsUUFBUSxFQUFFO2tCQUNaLENBQ0YsQ0FBQztnQkFDSDtjQUFDLFNBQUE1RixHQUFBO2dCQUFBcUosVUFBQSxDQUFBck0sQ0FBQSxDQUFBZ0QsR0FBQTtjQUFBO2dCQUFBcUosVUFBQSxDQUFBeEosQ0FBQTtjQUFBO2NBQUEsSUFBQW9LLFVBQUEsR0FBQTlLLDBCQUFBLENBRTZCLElBQUErSCxxQkFBTyxFQUNuQ3RDLCtCQUErQixFQUMvQixDQUFDLFFBQVEsQ0FDWCxDQUFDO2dCQUFBc0YsTUFBQTtjQUFBO2dCQUhELEtBQUFELFVBQUEsQ0FBQXhLLENBQUEsTUFBQXlLLE1BQUEsR0FBQUQsVUFBQSxDQUFBek0sQ0FBQSxJQUFBa0MsSUFBQSxHQUdHO2tCQUFBLElBSFF5SyxlQUFlLEdBQUFELE1BQUEsQ0FBQXZLLEtBQUE7a0JBSXhCLElBQU15SyxjQUFjLEdBQUdELGVBQWUsQ0FBQ0EsZUFBZSxDQUFDNUssTUFBTSxHQUFHLENBQUMsQ0FBQztrQkFDbEUsSUFBSSxDQUFDNkssY0FBYyxDQUFDOUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNyQztrQkFDRjtrQkFDQSxJQUFNK0Msc0JBQXNCLEdBQUc1SCxnQkFBSSxDQUFDQyxJQUFJLENBQUE4RSxLQUFBLENBQVQvRSxnQkFBSSxHQUNqQ21DLCtCQUErQixFQUFBSSxNQUFBLENBQUEzRyxrQkFBQSxDQUM1QjhMLGVBQWUsRUFDcEIsQ0FBQztrQkFDRCxJQUFJdEksT0FBTyxDQUFDNEYsT0FBTyxFQUFFO29CQUNuQjNDLE9BQU8sQ0FBQ0MsR0FBRyxvQ0FBQUMsTUFBQSxDQUN3QnFGLHNCQUFzQixXQUN6RCxDQUFDO2tCQUNIO2tCQUNBLElBQU1DLGtCQUEwQixHQUFHckksbUJBQUUsQ0FBQzBELFlBQVksQ0FDaEQwRSxzQkFBc0IsRUFDdEI7b0JBQ0V6RSxRQUFRLEVBQUU7a0JBQ1osQ0FDRixDQUFDO2tCQUNELElBQU0yRSxjQUFtQixHQUFHOUcsZUFBZSxHQUN2Q3FDLDJCQUEwQixDQUFDMEUsUUFBUSxDQUFDRixrQkFBa0IsQ0FBQyxHQUN2RHRFLElBQUksQ0FBQ0MsS0FBSyxDQUFDcUUsa0JBQWtCLENBQUM7a0JBQ2xDLElBQU0xRCxPQUFNLEdBQUcyRCxjQUFjLENBQUMzRCxNQUFNO2tCQUNwQyxJQUFNNkQsNkJBQXFDLEdBQUdoSSxnQkFBSSxDQUFDQyxJQUFJLENBQ3JENEMscUJBQXFCLEVBQ3JCc0IsT0FBTSxDQUFDTCxHQUFHLEdBQUcsT0FDZixDQUFDO2tCQUNEdEUsbUJBQUUsQ0FBQ3VFLGFBQWEsQ0FDZGlFLDZCQUE2QixFQUM3QnpFLElBQUksQ0FBQ1MsU0FBUyxDQUFDRyxPQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUMvQjtvQkFDRWhCLFFBQVEsRUFBRTtrQkFDWixDQUNGLENBQUM7Z0JBQ0g7Y0FBQyxTQUFBNUYsR0FBQTtnQkFBQWlLLFVBQUEsQ0FBQWpOLENBQUEsQ0FBQWdELEdBQUE7Y0FBQTtnQkFBQWlLLFVBQUEsQ0FBQXBLLENBQUE7Y0FBQTtZQUNIO1lBQ0E7UUFDSjtRQUVBb0UsU0FBUyxDQUFDQyxxQkFBcUIsRUFBRXJDLE9BQU8sQ0FBQztNQUMzQztJQUFDLFNBQUE3QixHQUFBO01BQUF3RSxVQUFBLENBQUF4SCxDQUFBLENBQUFnRCxHQUFBO0lBQUE7TUFBQXdFLFVBQUEsQ0FBQTNFLENBQUE7SUFBQTtFQUNIO0VBRUEsSUFBSTZELGVBQWUsR0FBR1kseUJBQWUsQ0FBQ29HLE9BQU8sRUFBRTtJQUFBLElBQUFDLFVBQUEsR0FBQXhMLDBCQUFBLENBQ3ZCMEUsY0FBYyxDQUFDK0csT0FBTztNQUFBQyxNQUFBO0lBQUE7TUFBNUMsS0FBQUYsVUFBQSxDQUFBbEwsQ0FBQSxNQUFBb0wsTUFBQSxHQUFBRixVQUFBLENBQUFuTixDQUFBLElBQUFrQyxJQUFBLEdBQThDO1FBQUEsSUFBbkNpRixRQUFPLEdBQUFrRyxNQUFBLENBQUFsTCxLQUFBO1FBQ2hCLElBQU1pRixnQ0FBdUMsR0FBR25DLGdCQUFJLENBQUNDLElBQUksQ0FDdkRJLE9BQU8sRUFDUDZCLFFBQU8sQ0FBQ3JDLFFBQ1YsQ0FBQztRQUNELElBQUksQ0FBQ1QsT0FBTyxDQUFDZ0QsTUFBTSxFQUFFO1VBQ25CQyxPQUFPLENBQUNDLEdBQUcsaUJBQUFDLE1BQUEsQ0FBaUJKLGdDQUErQixDQUFFLENBQUM7UUFDaEU7UUFFQSxJQUFNL0IsWUFBVyxHQUFHSixnQkFBSSxDQUFDd0MsUUFBUSxDQUMvQkwsZ0NBQStCLEVBQy9CLE9BQ0YsQ0FBQztRQUNEakMsUUFBUSxDQUFDQyxXQUFXLEVBQUVDLFlBQVcsRUFBRUMsT0FBTyxDQUFDO1FBRTNDLElBQU1vQixzQkFBcUIsR0FBR3pCLGdCQUFJLENBQUNDLElBQUksQ0FBQ0ksT0FBTyxFQUFFRCxZQUFXLENBQUM7UUFDN0RkLGNBQWMsQ0FBQ21DLHNCQUFxQixDQUFDO1FBRXJDLFFBQVFTLFFBQU8sQ0FBQ1ksU0FBUztVQUN2QixLQUFLQywwQkFBZ0IsQ0FBQ0MsVUFBVTtZQUM5QjtjQUNFLElBQU1DLGFBQW9CLEdBQUd6RCxtQkFBRSxDQUFDMEQsWUFBWSxDQUMxQ2YsZ0NBQStCLEVBQy9CO2dCQUNFZ0IsUUFBUSxFQUFFO2NBQ1osQ0FDRixDQUFDO2NBQ0QsSUFBTUMsYUFBaUIsR0FBR3BDLGVBQWUsR0FDckNxSCxnQkFBaUIsQ0FBQ0MsU0FBUyxDQUFDckYsYUFBWSxDQUFDLEdBQ3pDTSxJQUFJLENBQUNDLEtBQUssQ0FBQ1AsYUFBWSxDQUFDO2NBQUEsSUFBQXNGLFdBQUEsR0FBQTdMLDBCQUFBLENBRU4wRyxhQUFZLENBQUNvRixRQUFRLENBQUNDLE9BQU87Z0JBQUFDLE9BQUE7Y0FBQTtnQkFBbkQsS0FBQUgsV0FBQSxDQUFBdkwsQ0FBQSxNQUFBMEwsT0FBQSxHQUFBSCxXQUFBLENBQUF4TixDQUFBLElBQUFrQyxJQUFBLEdBQXFEO2tCQUFBLElBQTFDd0wsT0FBTyxHQUFBQyxPQUFBLENBQUF4TCxLQUFBO2tCQUNoQnlMLG9CQUFvQixDQUNsQmxILHNCQUFxQixFQUNyQmdILE9BQU8sRUFDUEcsMkJBQ0YsQ0FBQztnQkFDSDtjQUFDLFNBQUFyTCxHQUFBO2dCQUFBZ0wsV0FBQSxDQUFBaE8sQ0FBQSxDQUFBZ0QsR0FBQTtjQUFBO2dCQUFBZ0wsV0FBQSxDQUFBbkwsQ0FBQTtjQUFBO1lBQ0g7WUFDQTtVQUNGLEtBQUsyRiwwQkFBZ0IsQ0FBQ3NCLGNBQWM7WUFDbEM7Y0FBQSxJQUFBd0UsV0FBQSxHQUFBbk0sMEJBQUEsQ0FDaUMsSUFBQStILHFCQUFPLEVBQ3BDdEMsZ0NBQStCLEVBQy9CLENBQUMsU0FBUyxDQUNaLENBQUM7Z0JBQUEyRyxPQUFBO2NBQUE7Z0JBSEQsS0FBQUQsV0FBQSxDQUFBN0wsQ0FBQSxNQUFBOEwsT0FBQSxHQUFBRCxXQUFBLENBQUE5TixDQUFBLElBQUFrQyxJQUFBLEdBR0c7a0JBQUEsSUFIUThMLGdCQUFnQixHQUFBRCxPQUFBLENBQUE1TCxLQUFBO2tCQUl6QixJQUFNOEwsZUFBZSxHQUNuQkQsZ0JBQWdCLENBQUNBLGdCQUFnQixDQUFDak0sTUFBTSxHQUFHLENBQUMsQ0FBQztrQkFDL0MsSUFBSSxDQUFDa00sZUFBZSxDQUFDbkUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN0QztrQkFDRjtrQkFDQSxJQUFNb0UsdUJBQXVCLEdBQUdqSixnQkFBSSxDQUFDQyxJQUFJLENBQUE4RSxLQUFBLENBQVQvRSxnQkFBSSxHQUNsQ21DLGdDQUErQixFQUFBSSxNQUFBLENBQUEzRyxrQkFBQSxDQUM1Qm1OLGdCQUFnQixFQUNyQixDQUFDO2tCQUNELElBQUkzSixPQUFPLENBQUM0RixPQUFPLEVBQUU7b0JBQ25CM0MsT0FBTyxDQUFDQyxHQUFHLHFDQUFBQyxNQUFBLENBQ3lCMEcsdUJBQXVCLFdBQzNELENBQUM7a0JBQ0g7a0JBQ0EsSUFBTUMsbUJBQTJCLEdBQUcxSixtQkFBRSxDQUFDMEQsWUFBWSxDQUNqRCtGLHVCQUF1QixFQUN2QjtvQkFDRTlGLFFBQVEsRUFBRTtrQkFDWixDQUNGLENBQUM7a0JBQ0QsSUFBTWdHLGVBQW9CLEdBQUduSSxlQUFlLEdBQ3hDcUgsZ0JBQWlCLENBQUNlLFNBQVMsQ0FBQ0YsbUJBQW1CLENBQUMsR0FDaEQzRixJQUFJLENBQUNDLEtBQUssQ0FBQzBGLG1CQUFtQixDQUFDO2tCQUNuQyxJQUFNVCxRQUFPLEdBQUdVLGVBQWUsQ0FBQ1YsT0FBTztrQkFDdkNFLG9CQUFvQixDQUNsQmxILHNCQUFxQixFQUNyQmdILFFBQU8sRUFDUEcsMkJBQ0YsQ0FBQztnQkFDSDtjQUFDLFNBQUFyTCxHQUFBO2dCQUFBc0wsV0FBQSxDQUFBdE8sQ0FBQSxDQUFBZ0QsR0FBQTtjQUFBO2dCQUFBc0wsV0FBQSxDQUFBekwsQ0FBQTtjQUFBO1lBQ0g7WUFDQTtRQUNKO1FBRUFvRSxTQUFTLENBQUNDLHNCQUFxQixFQUFFckMsT0FBTyxDQUFDO01BQzNDO0lBQUMsU0FBQTdCLEdBQUE7TUFBQTJLLFVBQUEsQ0FBQTNOLENBQUEsQ0FBQWdELEdBQUE7SUFBQTtNQUFBMkssVUFBQSxDQUFBOUssQ0FBQTtJQUFBO0VBQ0g7RUFFQSxJQUFJNkQsZUFBZSxHQUFHWSx5QkFBZSxDQUFDd0gsV0FBVyxFQUFFO0lBQUEsSUFBQUMsV0FBQSxHQUFBNU0sMEJBQUEsQ0FDM0IwRSxjQUFjLENBQUNtSSxXQUFXO01BQUFDLE9BQUE7SUFBQTtNQUFoRCxLQUFBRixXQUFBLENBQUF0TSxDQUFBLE1BQUF3TSxPQUFBLEdBQUFGLFdBQUEsQ0FBQXZPLENBQUEsSUFBQWtDLElBQUEsR0FBa0Q7UUFBQSxJQUF2Q2lGLFNBQU8sR0FBQXNILE9BQUEsQ0FBQXRNLEtBQUE7UUFDaEIsSUFBTWlGLGlDQUF1QyxHQUFHbkMsZ0JBQUksQ0FBQ0MsSUFBSSxDQUN2REksT0FBTyxFQUNQNkIsU0FBTyxDQUFDckMsUUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDVCxPQUFPLENBQUNnRCxNQUFNLEVBQUU7VUFDbkJDLE9BQU8sQ0FBQ0MsR0FBRyxpQkFBQUMsTUFBQSxDQUFpQkosaUNBQStCLENBQUUsQ0FBQztRQUNoRTtRQUVBLElBQU0vQixhQUFXLEdBQUdKLGdCQUFJLENBQUN3QyxRQUFRLENBQy9CTCxpQ0FBK0IsRUFDL0IsT0FDRixDQUFDO1FBQ0RqQyxRQUFRLENBQUNDLFdBQVcsRUFBRUMsYUFBVyxFQUFFQyxPQUFPLENBQUM7UUFFM0MsSUFBTW9CLHVCQUFxQixHQUFHekIsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDSSxPQUFPLEVBQUVELGFBQVcsQ0FBQztRQUM3RGQsY0FBYyxDQUFDbUMsdUJBQXFCLENBQUM7UUFFckMsUUFBUVMsU0FBTyxDQUFDWSxTQUFTO1VBQ3ZCLEtBQUtDLDBCQUFnQixDQUFDQyxVQUFVO1lBQzlCO2NBQ0UsSUFBTUMsY0FBb0IsR0FBR3pELG1CQUFFLENBQUMwRCxZQUFZLENBQzFDZixpQ0FBK0IsRUFDL0I7Z0JBQ0VnQixRQUFRLEVBQUU7Y0FDWixDQUNGLENBQUM7Y0FDRCxJQUFNQyxjQUFpQixHQUFHcEMsZUFBZSxHQUNyQ3lJLG9CQUFxQixDQUFDQyxhQUFhLENBQUN6RyxjQUFZLENBQUMsR0FDakRNLElBQUksQ0FBQ0MsS0FBSyxDQUFDUCxjQUFZLENBQUM7Y0FBQSxJQUFBMEcsV0FBQSxHQUFBak4sMEJBQUEsQ0FFRTBHLGNBQVksQ0FBQ3dHLG1CQUFtQixDQUMzREMsUUFBUTtnQkFBQUMsT0FBQTtjQUFBO2dCQURYLEtBQUFILFdBQUEsQ0FBQTNNLENBQUEsTUFBQThNLE9BQUEsR0FBQUgsV0FBQSxDQUFBNU8sQ0FBQSxJQUFBa0MsSUFBQSxHQUNhO2tCQUFBLElBREY4TSxlQUFlLEdBQUFELE9BQUEsQ0FBQTVNLEtBQUE7a0JBQUEsSUFBQThNLFdBQUEsR0FBQXROLDBCQUFBLENBRUNxTixlQUFlLENBQUNSLFdBQVc7b0JBQUFVLE9BQUE7a0JBQUE7b0JBQXBELEtBQUFELFdBQUEsQ0FBQWhOLENBQUEsTUFBQWlOLE9BQUEsR0FBQUQsV0FBQSxDQUFBalAsQ0FBQSxJQUFBa0MsSUFBQSxHQUFzRDtzQkFBQSxJQUEzQ2lOLFVBQVUsR0FBQUQsT0FBQSxDQUFBL00sS0FBQTtzQkFDbkJpTiw4QkFBOEIsQ0FDNUIxSSx1QkFBcUIsRUFDckJ5SSxVQUNGLENBQUM7b0JBQ0g7a0JBQUMsU0FBQTNNLEdBQUE7b0JBQUF5TSxXQUFBLENBQUF6UCxDQUFBLENBQUFnRCxHQUFBO2tCQUFBO29CQUFBeU0sV0FBQSxDQUFBNU0sQ0FBQTtrQkFBQTtnQkFDSDtjQUFDLFNBQUFHLEdBQUE7Z0JBQUFvTSxXQUFBLENBQUFwUCxDQUFBLENBQUFnRCxHQUFBO2NBQUE7Z0JBQUFvTSxXQUFBLENBQUF2TSxDQUFBO2NBQUE7WUFDSDtZQUNBO1VBQ0YsS0FBSzJGLDBCQUFnQixDQUFDc0IsY0FBYztZQUNsQztjQUFBLElBQUErRixXQUFBLEdBQUExTiwwQkFBQSxDQUNvQyxJQUFBK0gscUJBQU8sRUFDdkN0QyxpQ0FDRixDQUFDO2dCQUFBa0ksT0FBQTtjQUFBO2dCQUZELEtBQUFELFdBQUEsQ0FBQXBOLENBQUEsTUFBQXFOLE9BQUEsR0FBQUQsV0FBQSxDQUFBclAsQ0FBQSxJQUFBa0MsSUFBQSxHQUVHO2tCQUFBLElBRlFxTixtQkFBbUIsR0FBQUQsT0FBQSxDQUFBbk4sS0FBQTtrQkFHNUIsSUFBTXFOLGtCQUFrQixHQUN0QkQsbUJBQW1CLENBQUNBLG1CQUFtQixDQUFDeE4sTUFBTSxHQUFHLENBQUMsQ0FBQztrQkFDckQsSUFBSSxDQUFDeU4sa0JBQWtCLENBQUMxRixRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3pDO2tCQUNGO2tCQUNBLElBQU0yRiwwQkFBMEIsR0FBR3hLLGdCQUFJLENBQUNDLElBQUksQ0FBQThFLEtBQUEsQ0FBVC9FLGdCQUFJLEdBQ3JDbUMsaUNBQStCLEVBQUFJLE1BQUEsQ0FBQTNHLGtCQUFBLENBQzVCME8sbUJBQW1CLEVBQ3hCLENBQUM7a0JBQ0QsSUFBSWxMLE9BQU8sQ0FBQzRGLE9BQU8sRUFBRTtvQkFDbkIzQyxPQUFPLENBQUNDLEdBQUcsd0NBQUFDLE1BQUEsQ0FDNEJpSSwwQkFBMEIsV0FDakUsQ0FBQztrQkFDSDtrQkFDQSxJQUFNQyxzQkFBOEIsR0FBR2pMLG1CQUFFLENBQUMwRCxZQUFZLENBQ3BEc0gsMEJBQTBCLEVBQzFCO29CQUNFckgsUUFBUSxFQUFFO2tCQUNaLENBQ0YsQ0FBQztrQkFDRCxJQUFNdUgsa0JBQXVCLEdBQUcxSixlQUFlLEdBQzNDeUksb0JBQXFCLENBQUNrQixtQkFBbUIsQ0FDdkNGLHNCQUNGLENBQUMsR0FDRGxILElBQUksQ0FBQ0MsS0FBSyxDQUFDaUgsc0JBQXNCLENBQUM7a0JBQ3RDLElBQU1QLFdBQVUsR0FBR1Esa0JBQWtCLENBQUNSLFVBQVU7a0JBQ2hEQyw4QkFBOEIsQ0FBQzFJLHVCQUFxQixFQUFFeUksV0FBVSxDQUFDO2dCQUNuRTtjQUFDLFNBQUEzTSxHQUFBO2dCQUFBNk0sV0FBQSxDQUFBN1AsQ0FBQSxDQUFBZ0QsR0FBQTtjQUFBO2dCQUFBNk0sV0FBQSxDQUFBaE4sQ0FBQTtjQUFBO1lBQ0g7WUFDQTtRQUNKO1FBRUFvRSxTQUFTLENBQUNDLHVCQUFxQixFQUFFckMsT0FBTyxDQUFDO01BQzNDO0lBQUMsU0FBQTdCLEdBQUE7TUFBQStMLFdBQUEsQ0FBQS9PLENBQUEsQ0FBQWdELEdBQUE7SUFBQTtNQUFBK0wsV0FBQSxDQUFBbE0sQ0FBQTtJQUFBO0VBQ0g7RUFFQSxJQUFJNkQsZUFBZSxHQUFHWSx5QkFBZSxDQUFDK0ksbUJBQW1CLEVBQUU7SUFBQSxJQUFBQyxXQUFBLEdBQUFuTywwQkFBQSxDQUNuQzBFLGNBQWMsQ0FBQzBKLG1CQUFtQjtNQUFBQyxPQUFBO0lBQUE7TUFBeEQsS0FBQUYsV0FBQSxDQUFBN04sQ0FBQSxNQUFBK04sT0FBQSxHQUFBRixXQUFBLENBQUE5UCxDQUFBLElBQUFrQyxJQUFBLEdBQTBEO1FBQUEsSUFBL0NpRixTQUFPLEdBQUE2SSxPQUFBLENBQUE3TixLQUFBO1FBQ2hCLElBQU1pRixpQ0FBdUMsR0FBR25DLGdCQUFJLENBQUNDLElBQUksQ0FDdkRJLE9BQU8sRUFDUDZCLFNBQU8sQ0FBQ3JDLFFBQ1YsQ0FBQztRQUNELElBQUksQ0FBQ1QsT0FBTyxDQUFDZ0QsTUFBTSxFQUFFO1VBQ25CQyxPQUFPLENBQUNDLEdBQUcsaUJBQUFDLE1BQUEsQ0FBaUJKLGlDQUErQixDQUFFLENBQUM7UUFDaEU7UUFFQSxJQUFNL0IsYUFBVyxHQUFHSixnQkFBSSxDQUFDd0MsUUFBUSxDQUMvQkwsaUNBQStCLEVBQy9CLE9BQ0YsQ0FBQztRQUNEakMsUUFBUSxDQUFDQyxXQUFXLEVBQUVDLGFBQVcsRUFBRUMsT0FBTyxDQUFDO1FBRTNDLElBQU1vQix1QkFBcUIsR0FBR3pCLGdCQUFJLENBQUNDLElBQUksQ0FBQ0ksT0FBTyxFQUFFRCxhQUFXLENBQUM7UUFDN0RkLGNBQWMsQ0FBQ21DLHVCQUFxQixDQUFDO1FBRXJDLElBQU11SixZQUFZLEdBQUdoTCxnQkFBSSxDQUFDQyxJQUFJLENBQUN3Qix1QkFBcUIsRUFBRSxXQUFXLENBQUM7UUFDbEVqQyxtQkFBRSxDQUFDb0QsU0FBUyxDQUFDb0ksWUFBWSxDQUFDO1FBQzFCLElBQU1DLFdBQVcsR0FBR2pMLGdCQUFJLENBQUNDLElBQUksQ0FBQ3dCLHVCQUFxQixFQUFFLFVBQVUsQ0FBQztRQUNoRWpDLG1CQUFFLENBQUNvRCxTQUFTLENBQUNxSSxXQUFXLENBQUM7UUFFekIsUUFBUS9JLFNBQU8sQ0FBQ1ksU0FBUztVQUN2QixLQUFLQywwQkFBZ0IsQ0FBQ0MsVUFBVTtZQUM5QjtjQUNFLElBQU1DLGNBQW9CLEdBQUd6RCxtQkFBRSxDQUFDMEQsWUFBWSxDQUMxQ2YsaUNBQStCLEVBQy9CO2dCQUNFZ0IsUUFBUSxFQUFFO2NBQ1osQ0FDRixDQUFDO2NBQ0QsSUFBTUMsY0FBaUIsR0FBR3BDLGVBQWUsR0FDckNrSyw2QkFBNkIsQ0FBQ0MscUJBQXFCLENBQ2pEbEksY0FDRixDQUFDLEdBQ0RNLElBQUksQ0FBQ0MsS0FBSyxDQUFDUCxjQUFZLENBQUM7Y0FBQSxJQUFBbUksV0FBQSxHQUFBMU8sMEJBQUEsQ0FFTDBHLGNBQVksVUFBTyxDQUFDaUksaUJBQWlCLENBQ3pEQyxRQUFRO2dCQUFBQyxPQUFBO2NBQUE7Z0JBRFgsS0FBQUgsV0FBQSxDQUFBcE8sQ0FBQSxNQUFBdU8sT0FBQSxHQUFBSCxXQUFBLENBQUFyUSxDQUFBLElBQUFrQyxJQUFBLEdBQ2E7a0JBQUEsSUFERnFPLFFBQVEsR0FBQUMsT0FBQSxDQUFBck8sS0FBQTtrQkFFakJ5TCxvQkFBb0IsQ0FBQ3FDLFlBQVksRUFBRU0sUUFBUSxFQUFFRSw0QkFBbUIsQ0FBQztnQkFDbkU7Y0FBQyxTQUFBak8sR0FBQTtnQkFBQTZOLFdBQUEsQ0FBQTdRLENBQUEsQ0FBQWdELEdBQUE7Y0FBQTtnQkFBQTZOLFdBQUEsQ0FBQWhPLENBQUE7Y0FBQTtjQUFBLElBQUFxTyxXQUFBLEdBQUEvTywwQkFBQSxDQUVzQzBHLGNBQVksVUFBTyxDQUN2RDBILG1CQUFtQixDQUFDWSxPQUFPO2dCQUFBQyxPQUFBO2NBQUE7Z0JBRDlCLEtBQUFGLFdBQUEsQ0FBQXpPLENBQUEsTUFBQTJPLE9BQUEsR0FBQUYsV0FBQSxDQUFBMVEsQ0FBQSxJQUFBa0MsSUFBQSxHQUNnQztrQkFBQSxJQURuQjJPLG9CQUFvQixHQUFBRCxPQUFBLENBQUF6TyxLQUFBLENBQXBCME8sb0JBQW9CO2tCQUUvQmpELG9CQUFvQixDQUNsQnNDLFdBQVcsRUFDWFcsb0JBQW9CLEVBQ3BCQyx3Q0FDRixDQUFDO2dCQUNIO2NBQUMsU0FBQXRPLEdBQUE7Z0JBQUFrTyxXQUFBLENBQUFsUixDQUFBLENBQUFnRCxHQUFBO2NBQUE7Z0JBQUFrTyxXQUFBLENBQUFyTyxDQUFBO2NBQUE7WUFDSDtZQUNBO1VBQ0YsS0FBSzJGLDBCQUFnQixDQUFDc0IsY0FBYztZQUNsQztjQUFBLElBQUF5SCxXQUFBLEdBQUFwUCwwQkFBQSxDQUNrQyxJQUFBK0gscUJBQU8sRUFDckN0QyxpQ0FBK0IsRUFDL0IsQ0FBQyxVQUFVLENBQ2IsQ0FBQztnQkFBQTRKLE9BQUE7Y0FBQTtnQkFIRCxLQUFBRCxXQUFBLENBQUE5TyxDQUFBLE1BQUErTyxPQUFBLEdBQUFELFdBQUEsQ0FBQS9RLENBQUEsSUFBQWtDLElBQUEsR0FHRztrQkFBQSxJQUhRK08saUJBQWlCLEdBQUFELE9BQUEsQ0FBQTdPLEtBQUE7a0JBSTFCLElBQU0rTyxnQkFBZ0IsR0FDcEJELGlCQUFpQixDQUFDQSxpQkFBaUIsQ0FBQ2xQLE1BQU0sR0FBRyxDQUFDLENBQUM7a0JBQ2pELElBQUksQ0FBQ21QLGdCQUFnQixDQUFDcEgsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN2QztrQkFDRjtrQkFDQSxJQUFNcUgsd0JBQXdCLEdBQUdsTSxnQkFBSSxDQUFDQyxJQUFJLENBQUE4RSxLQUFBLENBQVQvRSxnQkFBSSxHQUNuQ21DLGlDQUErQixFQUFBSSxNQUFBLENBQUEzRyxrQkFBQSxDQUM1Qm9RLGlCQUFpQixFQUN0QixDQUFDO2tCQUNELElBQUk1TSxPQUFPLENBQUM0RixPQUFPLEVBQUU7b0JBQ25CM0MsT0FBTyxDQUFDQyxHQUFHLHNDQUFBQyxNQUFBLENBQzBCMkosd0JBQXdCLFdBQzdELENBQUM7a0JBQ0g7a0JBQ0EsSUFBTUMsb0JBQTRCLEdBQUczTSxtQkFBRSxDQUFDMEQsWUFBWSxDQUNsRGdKLHdCQUF3QixFQUN4QjtvQkFDRS9JLFFBQVEsRUFBRTtrQkFDWixDQUNGLENBQUM7a0JBQ0QsSUFBTWlKLGdCQUFxQixHQUFHcEwsZUFBZSxHQUN6Q2tLLDZCQUE2QixDQUFDbUIsVUFBVSxDQUFDRixvQkFBb0IsQ0FBQyxHQUM5RDVJLElBQUksQ0FBQ0MsS0FBSyxDQUFDMkksb0JBQW9CLENBQUM7a0JBQ3BDLElBQU1iLFNBQVEsR0FBR2MsZ0JBQWdCLENBQUNkLFFBQVE7a0JBQzFDM0Msb0JBQW9CLENBQUNxQyxZQUFZLEVBQUVNLFNBQVEsRUFBRUUsNEJBQW1CLENBQUM7Z0JBQ25FO2NBQUMsU0FBQWpPLEdBQUE7Z0JBQUF1TyxXQUFBLENBQUF2UixDQUFBLENBQUFnRCxHQUFBO2NBQUE7Z0JBQUF1TyxXQUFBLENBQUExTyxDQUFBO2NBQUE7Y0FBQSxJQUFBa1AsV0FBQSxHQUFBNVAsMEJBQUEsQ0FFMkMsSUFBQStILHFCQUFPLEVBQ2pEdEMsaUNBQStCLEVBQy9CLENBQUMsc0JBQXNCLENBQ3pCLENBQUM7Z0JBQUFvSyxPQUFBO2NBQUE7Z0JBSEQsS0FBQUQsV0FBQSxDQUFBdFAsQ0FBQSxNQUFBdVAsT0FBQSxHQUFBRCxXQUFBLENBQUF2UixDQUFBLElBQUFrQyxJQUFBLEdBR0c7a0JBQUEsSUFIUXVQLDZCQUE2QixHQUFBRCxPQUFBLENBQUFyUCxLQUFBO2tCQUl0QyxJQUFNdVAsNEJBQTRCLEdBQ2hDRCw2QkFBNkIsQ0FDM0JBLDZCQUE2QixDQUFDMVAsTUFBTSxHQUFHLENBQUMsQ0FDekM7a0JBQ0gsSUFBSSxDQUFDMlAsNEJBQTRCLENBQUM1SCxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ25EO2tCQUNGO2tCQUNBLElBQU02SCxvQ0FBb0MsR0FBRzFNLGdCQUFJLENBQUNDLElBQUksQ0FBQThFLEtBQUEsQ0FBVC9FLGdCQUFJLEdBQy9DbUMsaUNBQStCLEVBQUFJLE1BQUEsQ0FBQTNHLGtCQUFBLENBQzVCNFEsNkJBQTZCLEVBQ2xDLENBQUM7a0JBQ0QsSUFBSXBOLE9BQU8sQ0FBQzRGLE9BQU8sRUFBRTtvQkFDbkIzQyxPQUFPLENBQUNDLEdBQUcsa0RBQUFDLE1BQUEsQ0FDc0NtSyxvQ0FBb0MsV0FDckYsQ0FBQztrQkFDSDtrQkFDQSxJQUFNQyxnQ0FBd0MsR0FBR25OLG1CQUFFLENBQUMwRCxZQUFZLENBQzlEd0osb0NBQW9DLEVBQ3BDO29CQUNFdkosUUFBUSxFQUFFO2tCQUNaLENBQ0YsQ0FBQztrQkFDRCxJQUFNeUosNEJBQWlDLEdBQUc1TCxlQUFlLEdBQ3JEa0ssNkJBQTZCLENBQUMyQixzQkFBc0IsQ0FDbERGLGdDQUNGLENBQUMsR0FDRHBKLElBQUksQ0FBQ0MsS0FBSyxDQUFDbUosZ0NBQWdDLENBQUM7a0JBQ2hELElBQU1mLHFCQUFvQixHQUN4QmdCLDRCQUE0QixDQUFDaEIsb0JBQW9CO2tCQUNuRGpELG9CQUFvQixDQUNsQnNDLFdBQVcsRUFDWFcscUJBQW9CLEVBQ3BCQyx3Q0FDRixDQUFDO2dCQUNIO2NBQUMsU0FBQXRPLEdBQUE7Z0JBQUErTyxXQUFBLENBQUEvUixDQUFBLENBQUFnRCxHQUFBO2NBQUE7Z0JBQUErTyxXQUFBLENBQUFsUCxDQUFBO2NBQUE7WUFDSDtZQUNBO1FBQ0o7UUFFQW9FLFNBQVMsQ0FBQ0MsdUJBQXFCLEVBQUVyQyxPQUFPLENBQUM7TUFDM0M7SUFBQyxTQUFBN0IsR0FBQTtNQUFBc04sV0FBQSxDQUFBdFEsQ0FBQSxDQUFBZ0QsR0FBQTtJQUFBO01BQUFzTixXQUFBLENBQUF6TixDQUFBO0lBQUE7RUFDSDtFQUNBLElBQUk2RCxlQUFlLEdBQUdZLHlCQUFlLENBQUNpTCxRQUFRLEVBQUU7SUFBQSxJQUFBQyxXQUFBLEdBQUFyUSwwQkFBQSxDQUMxQjBFLGNBQWMsQ0FBQzRMLFFBQVE7TUFBQUMsT0FBQTtJQUFBO01BQTNDLEtBQUFGLFdBQUEsQ0FBQS9QLENBQUEsTUFBQWlRLE9BQUEsR0FBQUYsV0FBQSxDQUFBaFMsQ0FBQSxJQUFBa0MsSUFBQSxHQUE2QztRQUFBLElBQXBDaUYsU0FBTyxHQUFBK0ssT0FBQSxDQUFBL1AsS0FBQTtRQUNkLElBQU1pRixpQ0FBdUMsR0FBR25DLGdCQUFJLENBQUNDLElBQUksQ0FDdkRJLE9BQU8sRUFDUDZCLFNBQU8sQ0FBQ3JDLFFBQ1YsQ0FBQztRQUNELElBQUksQ0FBQ1QsT0FBTyxDQUFDZ0QsTUFBTSxFQUFFO1VBQ25CQyxPQUFPLENBQUNDLEdBQUcsaUJBQUFDLE1BQUEsQ0FBaUJKLGlDQUErQixDQUFFLENBQUM7UUFDaEU7UUFFQSxJQUFNL0IsYUFBVyxHQUFHSixnQkFBSSxDQUFDd0MsUUFBUSxDQUMvQkwsaUNBQStCLEVBQy9CLE9BQ0YsQ0FBQztRQUNEakMsUUFBUSxDQUFDQyxXQUFXLEVBQUVDLGFBQVcsRUFBRUMsT0FBTyxDQUFDO1FBRTNDLElBQU1vQix1QkFBcUIsR0FBR3pCLGdCQUFJLENBQUNDLElBQUksQ0FBQ0ksT0FBTyxFQUFFRCxhQUFXLENBQUM7UUFDN0RkLGNBQWMsQ0FBQ21DLHVCQUFxQixDQUFDO1FBRXJDLFFBQVFTLFNBQU8sQ0FBQ1ksU0FBUztVQUN2QixLQUFLQywwQkFBZ0IsQ0FBQ0MsVUFBVTtZQUM5QjtjQUNFLElBQU1DLGNBQW9CLEdBQUd6RCxtQkFBRSxDQUFDMEQsWUFBWSxDQUMxQ2YsaUNBQStCLEVBQy9CO2dCQUNFZ0IsUUFBUSxFQUFFO2NBQ1osQ0FDRixDQUFDO2NBQ0QsSUFBTUMsY0FBaUIsR0FBR3BDLGVBQWUsR0FDckNrTSxpQkFBa0IsQ0FBQ0MsVUFBVSxDQUFDbEssY0FBWSxDQUFDLEdBQzNDTSxJQUFJLENBQUNDLEtBQUssQ0FBQ1AsY0FBWSxDQUFDO2NBQUEsSUFBQW1LLFdBQUEsR0FBQTFRLDBCQUFBLENBRU4wRyxjQUFZLENBQUM0SixRQUFRLENBQUNLLE9BQU87Z0JBQUFDLE9BQUE7Y0FBQTtnQkFBbkQsS0FBQUYsV0FBQSxDQUFBcFEsQ0FBQSxNQUFBc1EsT0FBQSxHQUFBRixXQUFBLENBQUFyUyxDQUFBLElBQUFrQyxJQUFBLEdBQXFEO2tCQUFBLElBQTFDb1EsT0FBTyxHQUFBQyxPQUFBLENBQUFwUSxLQUFBO2tCQUNoQnlMLG9CQUFvQixDQUNsQmxILHVCQUFxQixFQUNyQjRMLE9BQU8sRUFDUEUsMkJBQ0YsQ0FBQztnQkFDSDtjQUFDLFNBQUFoUSxHQUFBO2dCQUFBNlAsV0FBQSxDQUFBN1MsQ0FBQSxDQUFBZ0QsR0FBQTtjQUFBO2dCQUFBNlAsV0FBQSxDQUFBaFEsQ0FBQTtjQUFBO1lBQ0g7WUFDQTtVQUNGLEtBQUsyRiwwQkFBZ0IsQ0FBQ3NCLGNBQWM7WUFDbEM7Y0FBQSxJQUFBbUosV0FBQSxHQUFBOVEsMEJBQUEsQ0FDaUMsSUFBQStILHFCQUFPLEVBQ3BDdEMsaUNBQ0YsQ0FBQztnQkFBQXNMLE9BQUE7Y0FBQTtnQkFGRCxLQUFBRCxXQUFBLENBQUF4USxDQUFBLE1BQUF5USxPQUFBLEdBQUFELFdBQUEsQ0FBQXpTLENBQUEsSUFBQWtDLElBQUEsR0FFRztrQkFBQSxJQUZReVEsZ0JBQWdCLEdBQUFELE9BQUEsQ0FBQXZRLEtBQUE7a0JBR3pCLElBQU15USxlQUFlLEdBQ25CRCxnQkFBZ0IsQ0FBQ0EsZ0JBQWdCLENBQUM1USxNQUFNLEdBQUcsQ0FBQyxDQUFDO2tCQUMvQyxJQUFJLENBQUM2USxlQUFlLENBQUM5SSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3RDO2tCQUNGO2tCQUNBLElBQU0rSSx1QkFBdUIsR0FBRzVOLGdCQUFJLENBQUNDLElBQUksQ0FBQThFLEtBQUEsQ0FBVC9FLGdCQUFJLEdBQ2xDbUMsaUNBQStCLEVBQUFJLE1BQUEsQ0FBQTNHLGtCQUFBLENBQzVCOFIsZ0JBQWdCLEVBQ3JCLENBQUM7a0JBQ0QsSUFBSXRPLE9BQU8sQ0FBQzRGLE9BQU8sRUFBRTtvQkFDbkIzQyxPQUFPLENBQUNDLEdBQUcscUNBQUFDLE1BQUEsQ0FDeUJxTCx1QkFBdUIsV0FDM0QsQ0FBQztrQkFDSDtrQkFDQSxJQUFNQyxtQkFBMkIsR0FBR3JPLG1CQUFFLENBQUMwRCxZQUFZLENBQ2pEMEssdUJBQXVCLEVBQ3ZCO29CQUNFekssUUFBUSxFQUFFO2tCQUNaLENBQ0YsQ0FBQztrQkFDRCxJQUFNMkssZUFBb0IsR0FBRzlNLGVBQWUsR0FDeENrTSxpQkFBa0IsQ0FBQ2EsZ0JBQWdCLENBQUNGLG1CQUFtQixDQUFDLEdBQ3hEdEssSUFBSSxDQUFDQyxLQUFLLENBQUNxSyxtQkFBbUIsQ0FBQztrQkFDbkMsSUFBTVIsUUFBTyxHQUFHUyxlQUFlLENBQUNULE9BQU87a0JBQ3ZDMUUsb0JBQW9CLENBQ2xCbEgsdUJBQXFCLEVBQ3JCNEwsUUFBTyxFQUNQRSwyQkFDRixDQUFDO2dCQUNIO2NBQUMsU0FBQWhRLEdBQUE7Z0JBQUFpUSxXQUFBLENBQUFqVCxDQUFBLENBQUFnRCxHQUFBO2NBQUE7Z0JBQUFpUSxXQUFBLENBQUFwUSxDQUFBO2NBQUE7WUFDSDtZQUNBO1FBQ0o7UUFFQW9FLFNBQVMsQ0FBQ0MsdUJBQXFCLEVBQUVyQyxPQUFPLENBQUM7TUFDM0M7SUFBQyxTQUFBN0IsR0FBQTtNQUFBd1AsV0FBQSxDQUFBeFMsQ0FBQSxDQUFBZ0QsR0FBQTtJQUFBO01BQUF3UCxXQUFBLENBQUEzUCxDQUFBO0lBQUE7RUFDSDtFQUVBLElBQUk2RCxlQUFlLEdBQUdZLHlCQUFlLENBQUNtTSxTQUFTLEVBQUU7SUFBQSxJQUFBQyxXQUFBLEdBQUF2UiwwQkFBQSxDQUN6QjRFLGtCQUFRLENBQUM0TSxTQUFTO01BQUFDLE9BQUE7SUFBQTtNQUF4QyxLQUFBRixXQUFBLENBQUFqUixDQUFBLE1BQUFtUixPQUFBLEdBQUFGLFdBQUEsQ0FBQWxULENBQUEsSUFBQWtDLElBQUEsR0FBMEM7UUFBQSxJQUEvQmlGLFNBQU8sR0FBQWlNLE9BQUEsQ0FBQWpSLEtBQUE7UUFDaEIsSUFBTWlGLGlDQUF1QyxHQUFHbkMsZ0JBQUksQ0FBQ0MsSUFBSSxDQUN2REksT0FBTyxFQUNQNkIsU0FBTyxDQUFDckMsUUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDVCxPQUFPLENBQUNnRCxNQUFNLEVBQUU7VUFDbkJDLE9BQU8sQ0FBQ0MsR0FBRyxpQkFBQUMsTUFBQSxDQUFpQkosaUNBQStCLENBQUUsQ0FBQztRQUNoRTtRQUVBLElBQU0vQixhQUFXLEdBQUdKLGdCQUFJLENBQUN3QyxRQUFRLENBQy9CTCxpQ0FBK0IsRUFDL0IsT0FDRixDQUFDO1FBQ0RqQyxRQUFRLENBQUNDLFdBQVcsRUFBRUMsYUFBVyxFQUFFQyxPQUFPLENBQUM7UUFFM0MsSUFBTW9CLHVCQUFxQixHQUFHekIsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDSSxPQUFPLEVBQUVELGFBQVcsQ0FBQztRQUM3RGQsY0FBYyxDQUFDbUMsdUJBQXFCLENBQUM7UUFFckMsUUFBUVMsU0FBTyxDQUFDWSxTQUFTO1VBQ3ZCLEtBQUtDLDBCQUFnQixDQUFDc0IsY0FBYztZQUNsQztjQUFBLElBQUErSixXQUFBLEdBQUExUiwwQkFBQSxDQUNrQyxJQUFBK0gscUJBQU8sRUFDckN0QyxpQ0FDRixDQUFDO2dCQUFBa00sT0FBQTtjQUFBO2dCQUZELEtBQUFELFdBQUEsQ0FBQXBSLENBQUEsTUFBQXFSLE9BQUEsR0FBQUQsV0FBQSxDQUFBclQsQ0FBQSxJQUFBa0MsSUFBQSxHQUVHO2tCQUFBLElBRlFxUixpQkFBaUIsR0FBQUQsT0FBQSxDQUFBblIsS0FBQTtrQkFHMUIsSUFBTXFSLGdCQUFnQixHQUNwQkQsaUJBQWlCLENBQUNBLGlCQUFpQixDQUFDeFIsTUFBTSxHQUFHLENBQUMsQ0FBQztrQkFDakQsSUFBSSxDQUFDeVIsZ0JBQWdCLENBQUMxSixRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3ZDO2tCQUNGO2tCQUNBLElBQU0ySix3QkFBd0IsR0FBR3hPLGdCQUFJLENBQUNDLElBQUksQ0FBQThFLEtBQUEsQ0FBVC9FLGdCQUFJLEdBQ25DbUMsaUNBQStCLEVBQUFJLE1BQUEsQ0FBQTNHLGtCQUFBLENBQzVCMFMsaUJBQWlCLEVBQ3RCLENBQUM7a0JBQ0QsSUFBSWxQLE9BQU8sQ0FBQzRGLE9BQU8sRUFBRTtvQkFDbkIzQyxPQUFPLENBQUNDLEdBQUcsc0NBQUFDLE1BQUEsQ0FDMEJpTSx3QkFBd0IsV0FDN0QsQ0FBQztrQkFDSDtrQkFDQSxJQUFNQyxvQkFBNEIsR0FBR2pQLG1CQUFFLENBQUMwRCxZQUFZLENBQ2xEc0wsd0JBQXdCLEVBQ3hCO29CQUNFckwsUUFBUSxFQUFFO2tCQUNaLENBQ0YsQ0FBQztrQkFFRCxJQUFNdUwsZ0JBQXFCLEdBQUcxTixlQUFlLEdBQ3pDMk4sa0JBQW1CLENBQUNDLGlCQUFpQixDQUFDSCxvQkFBb0IsQ0FBQyxHQUMzRGxMLElBQUksQ0FBQ0MsS0FBSyxDQUFDaUwsb0JBQW9CLENBQUM7a0JBQ3BDLElBQU1JLFFBQVEsR0FBR0gsZ0JBQWdCLENBQUNHLFFBQVE7a0JBQzFDbEcsb0JBQW9CLENBQ2xCbEgsdUJBQXFCLEVBQ3JCb04sUUFBUSxFQUNSQyw0QkFDRixDQUFDO2dCQUNIO2NBQUMsU0FBQXZSLEdBQUE7Z0JBQUE2USxXQUFBLENBQUE3VCxDQUFBLENBQUFnRCxHQUFBO2NBQUE7Z0JBQUE2USxXQUFBLENBQUFoUixDQUFBO2NBQUE7WUFDSDtZQUNBO1FBQ0o7UUFFQW9FLFNBQVMsQ0FBQ0MsdUJBQXFCLEVBQUVyQyxPQUFPLENBQUM7TUFDM0M7SUFBQyxTQUFBN0IsR0FBQTtNQUFBMFEsV0FBQSxDQUFBMVQsQ0FBQSxDQUFBZ0QsR0FBQTtJQUFBO01BQUEwUSxXQUFBLENBQUE3USxDQUFBO0lBQUE7RUFDSDtFQUVBLElBQUk2RCxlQUFlLEdBQUdZLHlCQUFlLENBQUNrTixvQkFBb0IsRUFBRTtJQUFBLElBQUFDLFdBQUEsR0FBQXRTLDBCQUFBLENBQ3BDNEUsa0JBQVEsQ0FBQzJOLG9CQUFvQjtNQUFBQyxPQUFBO0lBQUE7TUFBbkQsS0FBQUYsV0FBQSxDQUFBaFMsQ0FBQSxNQUFBa1MsT0FBQSxHQUFBRixXQUFBLENBQUFqVSxDQUFBLElBQUFrQyxJQUFBLEdBQXFEO1FBQUEsSUFBMUNpRixTQUFPLEdBQUFnTixPQUFBLENBQUFoUyxLQUFBO1FBQ2hCLElBQU1pRixpQ0FBdUMsR0FBR25DLGdCQUFJLENBQUNDLElBQUksQ0FDdkRJLE9BQU8sRUFDUDZCLFNBQU8sQ0FBQ3JDLFFBQ1YsQ0FBQztRQUNELElBQUksQ0FBQ1QsT0FBTyxDQUFDZ0QsTUFBTSxFQUFFO1VBQ25CQyxPQUFPLENBQUNDLEdBQUcsaUJBQUFDLE1BQUEsQ0FBaUJKLGlDQUErQixDQUFFLENBQUM7UUFDaEU7UUFFQSxJQUFNL0IsYUFBVyxHQUFHSixnQkFBSSxDQUFDd0MsUUFBUSxDQUFDTCxpQ0FBK0IsRUFBRSxNQUFNLENBQUM7UUFDMUVqQyxRQUFRLENBQUNDLFdBQVcsRUFBRUMsYUFBVyxFQUFFQyxPQUFPLENBQUM7UUFFM0MsSUFBTW9CLHVCQUFxQixHQUFHekIsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDSSxPQUFPLEVBQUVELGFBQVcsQ0FBQztRQUM3RGQsY0FBYyxDQUFDbUMsdUJBQXFCLENBQUM7UUFFckMsUUFBUVMsU0FBTyxDQUFDWSxTQUFTO1VBQ3ZCLEtBQUtDLDBCQUFnQixDQUFDc0IsY0FBYztZQUNsQztjQUFBLElBQUE4SyxXQUFBLEdBQUF6UywwQkFBQSxDQUMyQyxJQUFBK0gscUJBQU8sRUFDOUN0QyxpQ0FDRixDQUFDO2dCQUFBaU4sT0FBQTtjQUFBO2dCQUZELEtBQUFELFdBQUEsQ0FBQW5TLENBQUEsTUFBQW9TLE9BQUEsR0FBQUQsV0FBQSxDQUFBcFUsQ0FBQSxJQUFBa0MsSUFBQSxHQUVHO2tCQUFBLElBRlFvUywwQkFBMEIsR0FBQUQsT0FBQSxDQUFBbFMsS0FBQTtrQkFHbkMsSUFBTW9TLHlCQUF5QixHQUM3QkQsMEJBQTBCLENBQ3hCQSwwQkFBMEIsQ0FBQ3ZTLE1BQU0sR0FBRyxDQUFDLENBQ3RDO2tCQUNILElBQUksQ0FBQ3dTLHlCQUF5QixDQUFDekssUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNoRDtrQkFDRjtrQkFDQSxJQUFNMEssaUNBQWlDLEdBQUd2UCxnQkFBSSxDQUFDQyxJQUFJLENBQUE4RSxLQUFBLENBQVQvRSxnQkFBSSxHQUM1Q21DLGlDQUErQixFQUFBSSxNQUFBLENBQUEzRyxrQkFBQSxDQUM1QnlULDBCQUEwQixFQUMvQixDQUFDO2tCQUNELElBQUlqUSxPQUFPLENBQUM0RixPQUFPLEVBQUU7b0JBQ25CM0MsT0FBTyxDQUFDQyxHQUFHLCtDQUFBQyxNQUFBLENBQ21DZ04saUNBQWlDLFdBQy9FLENBQUM7a0JBQ0g7a0JBQ0EsSUFBTUMsNkJBQXFDLEdBQUdoUSxtQkFBRSxDQUFDMEQsWUFBWSxDQUMzRHFNLGlDQUFpQyxFQUNqQztvQkFDRXBNLFFBQVEsRUFBRTtrQkFDWixDQUNGLENBQUM7a0JBQ0QsSUFBTXNNLHlCQUE4QixHQUFHek8sZUFBZSxHQUNsRDBPLGVBQXVCLENBQUNDLG9CQUFvQixDQUMxQ0gsNkJBQ0YsQ0FBQyxHQUNEak0sSUFBSSxDQUFDQyxLQUFLLENBQUNnTSw2QkFBNkIsQ0FBQztrQkFFN0MsSUFBTUksaUJBQWlCLEdBQUdILHlCQUF5QixDQUFDSSxXQUFXO2tCQUMvRGxILG9CQUFvQixDQUNsQmxILHVCQUFxQixFQUNyQm1PLGlCQUFpQixFQUNqQkUsK0JBQ0YsQ0FBQztnQkFDSDtjQUFDLFNBQUF2UyxHQUFBO2dCQUFBNFIsV0FBQSxDQUFBNVUsQ0FBQSxDQUFBZ0QsR0FBQTtjQUFBO2dCQUFBNFIsV0FBQSxDQUFBL1IsQ0FBQTtjQUFBO1lBQ0g7WUFDQTtRQUNKO1FBRUFvRSxTQUFTLENBQUNDLHVCQUFxQixFQUFFckMsT0FBTyxDQUFDO01BQzNDO0lBQUMsU0FBQTdCLEdBQUE7TUFBQXlSLFdBQUEsQ0FBQXpVLENBQUEsQ0FBQWdELEdBQUE7SUFBQTtNQUFBeVIsV0FBQSxDQUFBNVIsQ0FBQTtJQUFBO0VBQ0g7O0VBRUE7RUFDQXFELElBQUksQ0FBQ25GLFNBQVMsQ0FBQ29GLE1BQU0sR0FBR3FQLHlCQUFrQjtFQUUxQyxPQUFPblAsUUFBUTtBQUNqQjtBQUVBLFNBQVN1Siw4QkFBOEJBLENBQ3JDMUkscUJBQTZCLEVBQzdCeUksVUFHQyxFQUNLO0VBQ04sSUFBTThGLGtCQUFrQixHQUFHOUYsVUFBVSxDQUFDK0Ysa0JBQWtCO0VBQ3hENUksa0JBQU0sQ0FBQzZJLGNBQWMsQ0FBQ0Ysa0JBQWtCLEVBQUV6SyxTQUFTLENBQUM7RUFDcEQsSUFBTTRLLGtCQUFrQixHQUFHblEsZ0JBQUksQ0FBQ0MsSUFBSSxDQUNsQ3dCLHFCQUFxQixFQUNyQnVPLGtCQUNGLENBQUM7RUFDRHhRLG1CQUFFLENBQUNDLGFBQWEsQ0FBQzBRLGtCQUFrQixDQUFDO0VBQ3BDLElBQU10TSx1QkFBdUIsR0FBRzdELGdCQUFJLENBQUNDLElBQUksQ0FDdkNrUSxrQkFBa0IsRUFDbEJqRyxVQUFVLENBQUNwRyxHQUFHLEdBQUcsT0FDbkIsQ0FBQztFQUNEdEUsbUJBQUUsQ0FBQ3VFLGFBQWEsQ0FDZEYsdUJBQXVCLEVBQ3ZCTixJQUFJLENBQUNTLFNBQVMsQ0FBQ2tHLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQ25DO0lBQ0UvRyxRQUFRLEVBQUU7RUFDWixDQUNGLENBQUM7QUFDSDtBQUVBLFNBQVN3RixvQkFBb0JBLENBQzNCeUgsR0FBVyxFQUNYelUsR0FBTSxFQUNOMFUsV0FBaUQsRUFDM0M7RUFDTixJQUFNN04sUUFBUSxHQUFHNk4sV0FBVyxDQUFDRCxHQUFHLEVBQUV6VSxHQUFHLENBQUNtSSxHQUFHLENBQUM7RUFDMUN0RSxtQkFBRSxDQUFDdUUsYUFBYSxJQUFBeEIsTUFBQSxDQUFJQyxRQUFRLFlBQVNlLElBQUksQ0FBQ1MsU0FBUyxDQUFDckksR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNqRXdILFFBQVEsRUFBRTtFQUNaLENBQUMsQ0FBQztBQUNKO0FBRUEsU0FBU21OLElBQUlBLENBQUNsUyxJQUFTLEVBQVU7RUFDL0IsSUFBTWdCLE9BQU8sR0FBR2pCLFNBQVMsQ0FBQ0MsSUFBSSxDQUFDO0VBQy9CLE9BQU9tQyxjQUFjLENBQUNuQixPQUFPLENBQUM7QUFDaEM7O0FBRUE7QUFDQSxJQUFJbVIsT0FBTyxDQUFDblMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDeUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEVBQ2hEMEwsT0FBTyxDQUFDQyxJQUFJLENBQUNGLElBQUksQ0FBQ0MsT0FBTyxDQUFDblMsSUFBSSxDQUFDLENBQUMifQ==
|