@sapui5/sap.fe.core 1.114.0 → 1.114.2
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/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +3 -2
- package/src/sap/fe/core/ActionRuntime.js +1 -1
- package/src/sap/fe/core/ActionRuntime.js.map +1 -1
- package/src/sap/fe/core/ActionRuntime.ts +2 -3
- package/src/sap/fe/core/AppStateHandler-dbg.js +4 -1
- package/src/sap/fe/core/AppStateHandler.js +1 -1
- package/src/sap/fe/core/AppStateHandler.js.map +1 -1
- package/src/sap/fe/core/AppStateHandler.ts +4 -1
- package/src/sap/fe/core/ExtensionAPI-dbg.js +3 -2
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +7 -4
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +10 -3
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +8 -1
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +5 -5
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +4 -4
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +17 -10
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +15 -8
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +14 -16
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +16 -16
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +2 -4
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +1 -3
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +5 -3
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +4 -2
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +10 -6
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +18 -9
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +2 -2
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +0 -1
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +75 -45
- package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.ts +72 -43
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +29 -29
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +28 -34
- package/src/sap/fe/core/converters/helpers/InsightsHelpers-dbg.js +11 -3
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -1
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +13 -8
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +70 -22
- package/src/sap/fe/core/helpers/BindingToolkit.js +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +107 -26
- package/src/sap/fe/core/helpers/RecommendationHelper-dbg.js +16 -1
- package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -1
- package/src/sap/fe/core/helpers/RecommendationHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/RecommendationHelper.ts +20 -0
- package/src/sap/fe/core/library-dbg.js +4 -3
- package/src/sap/fe/core/library-preload.js +22 -22
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/library.js.map +1 -1
- package/src/sap/fe/core/library.ts +1 -1
- package/src/sap/fe/core/manifest.json +1 -1
- package/src/sap/fe/core/messagebundle.properties +6 -0
- package/src/sap/fe/core/messagebundle_ar.properties +5 -1
- package/src/sap/fe/core/messagebundle_bg.properties +9 -5
- package/src/sap/fe/core/messagebundle_ca.properties +5 -1
- package/src/sap/fe/core/messagebundle_cs.properties +7 -3
- package/src/sap/fe/core/messagebundle_cy.properties +7 -3
- package/src/sap/fe/core/messagebundle_da.properties +7 -3
- package/src/sap/fe/core/messagebundle_de.properties +7 -3
- package/src/sap/fe/core/messagebundle_el.properties +7 -3
- package/src/sap/fe/core/messagebundle_en.properties +7 -3
- package/src/sap/fe/core/messagebundle_en_GB.properties +5 -1
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +6 -2
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +6 -2
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +6 -2
- package/src/sap/fe/core/messagebundle_es.properties +5 -1
- package/src/sap/fe/core/messagebundle_es_MX.properties +5 -1
- package/src/sap/fe/core/messagebundle_et.properties +7 -3
- package/src/sap/fe/core/messagebundle_fi.properties +7 -3
- package/src/sap/fe/core/messagebundle_fr.properties +7 -3
- package/src/sap/fe/core/messagebundle_fr_CA.properties +10 -6
- package/src/sap/fe/core/messagebundle_hi.properties +7 -3
- package/src/sap/fe/core/messagebundle_hr.properties +7 -3
- package/src/sap/fe/core/messagebundle_hu.properties +7 -3
- package/src/sap/fe/core/messagebundle_id.properties +7 -3
- package/src/sap/fe/core/messagebundle_it.properties +13 -9
- package/src/sap/fe/core/messagebundle_iw.properties +7 -3
- package/src/sap/fe/core/messagebundle_ja.properties +13 -9
- package/src/sap/fe/core/messagebundle_kk.properties +7 -3
- package/src/sap/fe/core/messagebundle_ko.properties +7 -3
- package/src/sap/fe/core/messagebundle_lt.properties +7 -3
- package/src/sap/fe/core/messagebundle_lv.properties +5 -1
- package/src/sap/fe/core/messagebundle_ms.properties +5 -1
- package/src/sap/fe/core/messagebundle_nl.properties +7 -3
- package/src/sap/fe/core/messagebundle_no.properties +5 -1
- package/src/sap/fe/core/messagebundle_pl.properties +9 -5
- package/src/sap/fe/core/messagebundle_pt.properties +7 -3
- package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -3
- package/src/sap/fe/core/messagebundle_ro.properties +5 -1
- package/src/sap/fe/core/messagebundle_ru.properties +7 -3
- package/src/sap/fe/core/messagebundle_sh.properties +7 -3
- package/src/sap/fe/core/messagebundle_sk.properties +7 -3
- package/src/sap/fe/core/messagebundle_sl.properties +5 -1
- package/src/sap/fe/core/messagebundle_sv.properties +5 -1
- package/src/sap/fe/core/messagebundle_th.properties +7 -3
- package/src/sap/fe/core/messagebundle_tr.properties +7 -3
- package/src/sap/fe/core/messagebundle_uk.properties +7 -3
- package/src/sap/fe/core/messagebundle_vi.properties +7 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +5 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +8 -4
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +8 -2
- package/src/sap/fe/core/rootView/Fcl.controller.js +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.ts +8 -1
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +8 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +10 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +30 -14
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +30 -20
|
@@ -1191,4 +1191,4 @@ sap.ui.define(["sap/fe/core/converters/common/AnnotationConverter", "sap/fe/core
|
|
|
1191
1191
|
_exports.getInvolvedDataModelObjectFromPath = getInvolvedDataModelObjectFromPath;
|
|
1192
1192
|
return _exports;
|
|
1193
1193
|
}, false);
|
|
1194
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWT0NBQlVMQVJZX0FMSUFTIiwiRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiQ2hhcnQiLCJNaWNyb0NoYXJ0IiwiVVNoZWxsIiwiSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiQXBwU3RhdGUiLCJJbnNpZ2h0c1N1cHBvcnRlZCIsInBhcnNlUHJvcGVydHlWYWx1ZSIsImFubm90YXRpb25PYmplY3QiLCJwcm9wZXJ0eUtleSIsImN1cnJlbnRUYXJnZXQiLCJhbm5vdGF0aW9uc0xpc3RzIiwib0NhcGFiaWxpdGllcyIsInZhbHVlIiwiY3VycmVudFByb3BlcnR5VGFyZ2V0IiwidHlwZU9mQW5ub3RhdGlvbiIsInR5cGUiLCJOdWxsIiwiU3RyaW5nIiwiQm9vbCIsIkludCIsIkFycmF5IiwiaXNBcnJheSIsIkNvbGxlY3Rpb24iLCJtYXAiLCJzdWJBbm5vdGF0aW9uT2JqZWN0Iiwic3ViQW5ub3RhdGlvbk9iamVjdEluZGV4IiwicGFyc2VBbm5vdGF0aW9uT2JqZWN0IiwibGVuZ3RoIiwiaGFzT3duUHJvcGVydHkiLCIkUGF0aCIsInVuZGVmaW5lZCIsIlBhdGgiLCIkRGVjaW1hbCIsIkRlY2ltYWwiLCJwYXJzZUZsb2F0IiwiJFByb3BlcnR5UGF0aCIsIlByb3BlcnR5UGF0aCIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsIiRJZiIsIklmIiwiJEFuZCIsIkFuZCIsIiRPciIsIk9yIiwiJE5vdCIsIk5vdCIsIiRFcSIsIkVxIiwiJE5lIiwiTmUiLCIkR3QiLCJHdCIsIiRHZSIsIkdlIiwiJEx0IiwiTHQiLCIkTGUiLCJMZSIsIiRBcHBseSIsIkFwcGx5IiwiRnVuY3Rpb24iLCIkRnVuY3Rpb24iLCIkQW5ub3RhdGlvblBhdGgiLCJBbm5vdGF0aW9uUGF0aCIsIiRFbnVtTWVtYmVyIiwiRW51bU1lbWJlciIsIm1hcE5hbWVUb0FsaWFzIiwic3BsaXQiLCJSZWNvcmQiLCJuYW1lIiwiYW5ub3RhdGlvbk5hbWUiLCJwYXRoUGFydCIsImFubm9QYXJ0IiwibGFzdERvdCIsImxhc3RJbmRleE9mIiwic3Vic3RyIiwiY3VycmVudE9iamVjdFRhcmdldCIsInBhcnNlZEFubm90YXRpb25PYmplY3QiLCJ0eXBlT2ZPYmplY3QiLCJwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbiIsImNvbGxlY3Rpb24iLCJzdWJBbm5vdGF0aW9uSW5kZXgiLCIkVHlwZSIsInR5cGVWYWx1ZSIsInByb3BlcnR5VmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzdGFydHNXaXRoIiwicHVzaCIsImNyZWF0ZUFubm90YXRpb25MaXN0cyIsImdldE9yQ3JlYXRlQW5ub3RhdGlvbkxpc3QiLCJ0YXJnZXQiLCJhbm5vdGF0aW9ucyIsImNyZWF0ZVJlZmVyZW5jZUZhY2V0SWQiLCJyZWZlcmVuY2VGYWNldCIsImlkIiwiSUQiLCJUYXJnZXQiLCJwcmVwYXJlSWQiLCJyZW1vdmVDaGFydEFubm90YXRpb25zIiwiZmlsdGVyIiwib1JlY29yZCIsImluZGV4T2YiLCJyZW1vdmVJQk5Bbm5vdGF0aW9ucyIsImhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQiLCJhbm5vdGF0aW9uT2JqZWN0cyIsImFubm90YXRpb25UYXJnZXQiLCJhbm5vdGF0aW9uTGlzdHMiLCJvdXRBbm5vdGF0aW9uT2JqZWN0IiwiYW5ub3RhdGlvbk9iamVjdEtleSIsImFubm90YXRpb25LZXkiLCJEYXRhIiwiVmlzdWFsaXphdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwic29tZSIsIkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbiIsIlByb3BlcnR5IiwiaW5jbHVkZXMiLCJBbGxvd2VkRXhwcmVzc2lvbnMiLCJjdXJyZW50T3V0QW5ub3RhdGlvbk9iamVjdCIsImFubm90YXRpb25PZkFubm90YXRpb25TcGxpdCIsImFubm90YXRpb25RdWFsaWZpZXJTcGxpdCIsInF1YWxpZmllciIsInRlcm0iLCJjdXJyZW50QW5ub3RhdGlvblRhcmdldCIsImlzQ29sbGVjdGlvbiIsInR5cGVvZkFubm90YXRpb24iLCJyZWNvcmQiLCJwcmVwYXJlUHJvcGVydHkiLCJwcm9wZXJ0eURlZmluaXRpb24iLCJlbnRpdHlUeXBlT2JqZWN0IiwicHJvcGVydHlOYW1lIiwiX3R5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwicHJlY2lzaW9uIiwiJFByZWNpc2lvbiIsInNjYWxlIiwiJFNjYWxlIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5IiwibmF2UHJvcGVydHlEZWZpbml0aW9uIiwibmF2UHJvcGVydHlOYW1lIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwiJFJlZmVyZW50aWFsQ29uc3RyYWludCIsInNvdXJjZVByb3BlcnR5TmFtZSIsInNvdXJjZVR5cGVOYW1lIiwic291cmNlUHJvcGVydHkiLCJ0YXJnZXRUeXBlTmFtZSIsInRhcmdldFByb3BlcnR5IiwibmF2aWdhdGlvblByb3BlcnR5IiwicGFydG5lciIsIiRQYXJ0bmVyIiwiJGlzQ29sbGVjdGlvbiIsImNvbnRhaW5zVGFyZ2V0IiwiJENvbnRhaW5zVGFyZ2V0IiwicHJlcGFyZUVudGl0eVNldCIsImVudGl0eVNldERlZmluaXRpb24iLCJlbnRpdHlTZXROYW1lIiwiZW50aXR5Q29udGFpbmVyTmFtZSIsImVudGl0eVNldE9iamVjdCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJlbnRpdHlUeXBlTmFtZSIsInByZXBhcmVTaW5nbGV0b24iLCJzaW5nbGV0b25EZWZpbml0aW9uIiwic2luZ2xldG9uTmFtZSIsInByZXBhcmVBY3Rpb25JbXBvcnQiLCJhY3Rpb25JbXBvcnQiLCJhY3Rpb25JbXBvcnROYW1lIiwiYWN0aW9uTmFtZSIsIiRBY3Rpb24iLCJwcmVwYXJlVHlwZURlZmluaXRpb24iLCJ0eXBlRGVmaW5pdGlvbiIsInR5cGVOYW1lIiwibmFtZXNwYWNlUHJlZml4IiwidHlwZU9iamVjdCIsInN1YnN0cmluZyIsInVuZGVybHlpbmdUeXBlIiwiJFVuZGVybHlpbmdUeXBlIiwicHJlcGFyZUNvbXBsZXhUeXBlIiwiY29tcGxleFR5cGVEZWZpbml0aW9uIiwiY29tcGxleFR5cGVOYW1lIiwiY29tcGxleFR5cGVPYmplY3QiLCJwcm9wZXJ0aWVzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJjb21wbGV4VHlwZVByb3BlcnRpZXMiLCJwcm9wZXJ0eU5hbWVPck5vdCIsIiRraW5kIiwic29ydCIsImEiLCJiIiwiY29tcGxleFR5cGVOYXZpZ2F0aW9uUHJvcGVydGllcyIsInByZXBhcmVFbnRpdHlLZXlzIiwiZW50aXR5VHlwZURlZmluaXRpb24iLCJvTWV0YU1vZGVsRGF0YSIsIiRLZXkiLCIkQmFzZVR5cGUiLCJwcmVwYXJlRW50aXR5VHlwZSIsIm1ldGFNb2RlbERhdGEiLCJlbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsImFjdGlvbnMiLCJrZXkiLCJwcm9wZXJ0eSIsImVudGl0eUtleSIsImZpbmQiLCIkQW5ub3RhdGlvbnMiLCJmaWx0ZXJGYWNldEFubm90YXRpb24iLCJlbnRpdHlQcm9wZXJ0eSIsIlZhbHVlIiwicHJlcGFyZUFjdGlvbiIsImFjdGlvblJhd0RhdGEiLCJhY3Rpb25FbnRpdHlUeXBlIiwiYWN0aW9uRlFOIiwiJElzQm91bmQiLCJiaW5kaW5nUGFyYW1ldGVyIiwiJFBhcmFtZXRlciIsInBhcmFtZXRlcnMiLCJpc0JvdW5kIiwiaXNGdW5jdGlvbiIsInNvdXJjZVR5cGUiLCJyZXR1cm5UeXBlIiwiJFJldHVyblR5cGUiLCJwYXJhbSIsIiROYW1lIiwicGFyc2VFbnRpdHlDb250YWluZXIiLCJlbnRpdHlDb250YWluZXJNZXRhZGF0YSIsInNjaGVtYSIsImVudGl0eUNvbnRhaW5lciIsImVsZW1lbnROYW1lIiwiZWxlbWVudFZhbHVlIiwiZW50aXR5U2V0cyIsInNpbmdsZXRvbnMiLCJhY3Rpb25JbXBvcnRzIiwiZW50aXR5U2V0IiwibmF2UHJvcGVydHlCaW5kaW5ncyIsIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwibmF2UHJvcE5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJwYXJzZUFubm90YXRpb25zIiwiY2FwYWJpbGl0aWVzIiwidmFsdWVzIiwicGFyc2VTY2hlbWEiLCJuYW1lc3BhY2UiLCJzbGljZSIsImVudGl0eVR5cGVzIiwiY29tcGxleFR5cGVzIiwidHlwZURlZmluaXRpb25zIiwiYXNzb2NpYXRpb25zIiwiYXNzb2NpYXRpb25TZXRzIiwicGFyc2VNZXRhTW9kZWxFbGVtZW50Iiwic3ViRWxlbWVudFZhbHVlIiwicGFyc2VNZXRhTW9kZWwiLCJtZXRhTW9kZWwiLCJyZXN1bHQiLCJpZGVudGlmaWNhdGlvbiIsInZlcnNpb24iLCJyZWZlcmVuY2VzIiwiQW5ub3RhdGlvbkNvbnZlcnRlciIsImxhenkiLCJnZXRPYmplY3QiLCJtTWV0YU1vZGVsTWFwIiwiY29udmVydFR5cGVzIiwib01ldGFNb2RlbCIsInNNZXRhTW9kZWxJZCIsInBhcnNlZE91dHB1dCIsImNvbnZlcnQiLCJvRXJyb3IiLCJFcnJvciIsImdldENvbnZlcnRlZFR5cGVzIiwib0NvbnRleHQiLCJnZXRNb2RlbCIsImlzQSIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJvTWV0YU1vZGVsQ29udGV4dCIsImJJbmNsdWRlVmlzaXRlZE9iamVjdHMiLCJvQ29udmVydGVkTWV0YWRhdGEiLCJzUGF0aCIsImdldFBhdGgiLCJhUGF0aFNwbGl0IiwiZmlyc3RQYXJ0IiwiYmVnaW5JbmRleCIsInNpbmdsZXRvbiIsInJlbGF0aXZlUGF0aCIsImpvaW4iLCJsb2NhbE9iamVjdHMiLCJyZWxhdGl2ZVNwbGl0IiwiaWR4IiwiY3VycmVudEVudGl0eVNldCIsInNOYXZQcm9wVG9DaGVjayIsInJlcGxhY2UiLCJhTmF2UHJvcHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwic05hdlByb3AiLCJ0YXJnZXROYXZQcm9wIiwibmF2UHJvcCIsInRhcmdldFR5cGUiLCJzaGlmdCIsIm9UYXJnZXQiLCJyZXNvbHZlUGF0aCIsInZpc2l0ZWRPYmplY3RzIiwiY29uY2F0IiwiYWN0aW9uIiwicGFyYW1ldGVyTmFtZSIsInBhcmFtZXRlciIsImVuZHNXaXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwib0VudGl0eVNldE1ldGFNb2RlbENvbnRleHQiLCJtZXRhTW9kZWxDb250ZXh0IiwidGFyZ2V0RW50aXR5U2V0TG9jYXRpb24iLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdEZyb21QYXRoIiwiY29udmVydGVkVHlwZXMiLCJvbmx5U2VydmljZU9iamVjdHMiLCJkYXRhTW9kZWxPYmplY3RzIiwidmlzaXRlZE9iamVjdCIsImlzU2VydmljZU9iamVjdCIsImlzRW50aXR5VHlwZSIsImlzRW50aXR5Q29udGFpbmVyIiwicm9vdEVudGl0eVNldCIsImN1cnJlbnRFbnRpdHlUeXBlIiwiY3VycmVudE9iamVjdCIsIm5hdmlnYXRlZFBhdGgiLCJpIiwiaXNOYXZpZ2F0aW9uUHJvcGVydHkiLCJib3VuZEVudGl0eVNldCIsImlzRW50aXR5U2V0IiwiaXNTaW5nbGV0b24iLCJzdGFydGluZ0VudGl0eVNldCIsInN0YXJ0aW5nSW5kZXgiLCJyZXF1aXJlZERhdGFNb2RlbE9iamVjdHMiLCJvdXREYXRhTW9kZWxQYXRoIiwidGFyZ2V0T2JqZWN0IiwiY29udGV4dExvY2F0aW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNZXRhTW9kZWxDb252ZXJ0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIHJldHJpZXZlZCBmcm9tIEBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXIsIHNoYXJlZCBjb2RlIHdpdGggdG9vbCBzdWl0ZVxuXG5pbXBvcnQgdHlwZSB7XG5cdEFubm90YXRpb24sXG5cdEFubm90YXRpb25MaXN0LFxuXHRBbm5vdGF0aW9uUmVjb3JkLFxuXHRDb252ZXJ0ZWRNZXRhZGF0YSxcblx0RW50aXR5U2V0LFxuXHRFbnRpdHlUeXBlLFxuXHRFeHByZXNzaW9uLFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFJhd0FjdGlvbixcblx0UmF3QWN0aW9uSW1wb3J0LFxuXHRSYXdDb21wbGV4VHlwZSxcblx0UmF3RW50aXR5U2V0LFxuXHRSYXdFbnRpdHlUeXBlLFxuXHRSYXdNZXRhZGF0YSxcblx0UmF3UHJvcGVydHksXG5cdFJhd1NjaGVtYSxcblx0UmF3U2luZ2xldG9uLFxuXHRSYXdUeXBlRGVmaW5pdGlvbixcblx0UmF3VjROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFJlZmVyZW50aWFsQ29uc3RyYWludCxcblx0U2VydmljZU9iamVjdCxcblx0U2luZ2xldG9uXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgU2VydmljZU9iamVjdEFuZEFubm90YXRpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IEFubm90YXRpb25Db252ZXJ0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb21tb25cIjtcbmltcG9ydCB7XG5cdGlzRW50aXR5Q29udGFpbmVyLFxuXHRpc0VudGl0eVNldCxcblx0aXNFbnRpdHlUeXBlLFxuXHRpc05hdmlnYXRpb25Qcm9wZXJ0eSxcblx0aXNTZXJ2aWNlT2JqZWN0LFxuXHRpc1NpbmdsZXRvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHsgcHJlcGFyZUlkIH0gZnJvbSBcIi4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcblxuY29uc3QgVk9DQUJVTEFSWV9BTElBUzogYW55ID0ge1xuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjFcIjogXCJDYXBhYmlsaXRpZXNcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMVwiOiBcIkNvcmVcIixcblx0XCJPcmcuT0RhdGEuTWVhc3VyZXMuVjFcIjogXCJNZWFzdXJlc1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MVwiOiBcIkNvbW1vblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxXCI6IFwiVUlcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxXCI6IFwiU2Vzc2lvblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MVwiOiBcIkFuYWx5dGljc1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MVwiOiBcIlBlcnNvbmFsRGF0YVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjFcIjogXCJDb21tdW5pY2F0aW9uXCJcbn07XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0ge1xuXHRDaGFydDogYm9vbGVhbjtcblx0TWljcm9DaGFydDogYm9vbGVhbjtcblx0VVNoZWxsOiBib29sZWFuO1xuXHRJbnRlbnRCYXNlZE5hdmlnYXRpb246IGJvb2xlYW47XG5cdEFwcFN0YXRlOiBib29sZWFuO1xuXHRJbnNpZ2h0c1N1cHBvcnRlZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSB7XG5cdENoYXJ0OiB0cnVlLFxuXHRNaWNyb0NoYXJ0OiB0cnVlLFxuXHRVU2hlbGw6IHRydWUsXG5cdEludGVudEJhc2VkTmF2aWdhdGlvbjogdHJ1ZSxcblx0QXBwU3RhdGU6IHRydWUsXG5cdEluc2lnaHRzU3VwcG9ydGVkOiBmYWxzZVxufTtcblxudHlwZSBNZXRhTW9kZWxBY3Rpb24gPSB7XG5cdCRraW5kOiBcIkFjdGlvblwiIHwgXCJGdW5jdGlvblwiO1xuXHQkSXNCb3VuZDogYm9vbGVhbjtcblx0JEVudGl0eVNldFBhdGg6IHN0cmluZztcblx0JFBhcmFtZXRlcjoge1xuXHRcdCRUeXBlOiBzdHJpbmc7XG5cdFx0JE5hbWU6IHN0cmluZztcblx0XHQkTnVsbGFibGU/OiBib29sZWFuO1xuXHRcdCRNYXhMZW5ndGg/OiBudW1iZXI7XG5cdFx0JFByZWNpc2lvbj86IG51bWJlcjtcblx0XHQkU2NhbGU/OiBudW1iZXI7XG5cdFx0JGlzQ29sbGVjdGlvbj86IGJvb2xlYW47XG5cdH1bXTtcblx0JFJldHVyblR5cGU6IHtcblx0XHQkVHlwZTogc3RyaW5nO1xuXHR9O1xufTtcblxuZnVuY3Rpb24gcGFyc2VQcm9wZXJ0eVZhbHVlKFxuXHRhbm5vdGF0aW9uT2JqZWN0OiBhbnksXG5cdHByb3BlcnR5S2V5OiBzdHJpbmcsXG5cdGN1cnJlbnRUYXJnZXQ6IHN0cmluZyxcblx0YW5ub3RhdGlvbnNMaXN0czogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvbkxpc3Q+LFxuXHRvQ2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllc1xuKTogYW55IHtcblx0bGV0IHZhbHVlO1xuXHRjb25zdCBjdXJyZW50UHJvcGVydHlUYXJnZXQ6IHN0cmluZyA9IGAke2N1cnJlbnRUYXJnZXR9LyR7cHJvcGVydHlLZXl9YDtcblx0Y29uc3QgdHlwZU9mQW5ub3RhdGlvbiA9IHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0O1xuXHRpZiAoYW5ub3RhdGlvbk9iamVjdCA9PT0gbnVsbCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIk51bGxcIiwgTnVsbDogbnVsbCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZkFubm90YXRpb24gPT09IFwic3RyaW5nXCIpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJTdHJpbmdcIiwgU3RyaW5nOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAodHlwZU9mQW5ub3RhdGlvbiA9PT0gXCJib29sZWFuXCIpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJCb29sXCIsIEJvb2w6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZBbm5vdGF0aW9uID09PSBcIm51bWJlclwiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiSW50XCIsIEludDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbk9iamVjdCkpIHtcblx0XHR2YWx1ZSA9IHtcblx0XHRcdHR5cGU6IFwiQ29sbGVjdGlvblwiLFxuXHRcdFx0Q29sbGVjdGlvbjogYW5ub3RhdGlvbk9iamVjdC5tYXAoKHN1YkFubm90YXRpb25PYmplY3QsIHN1YkFubm90YXRpb25PYmplY3RJbmRleCkgPT5cblx0XHRcdFx0cGFyc2VBbm5vdGF0aW9uT2JqZWN0KFxuXHRcdFx0XHRcdHN1YkFubm90YXRpb25PYmplY3QsXG5cdFx0XHRcdFx0YCR7Y3VycmVudFByb3BlcnR5VGFyZ2V0fS8ke3N1YkFubm90YXRpb25PYmplY3RJbmRleH1gLFxuXHRcdFx0XHRcdGFubm90YXRpb25zTGlzdHMsXG5cdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0fTtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJQcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQYXRoXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRJZlwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIklmXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkT3JcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJPclwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFuZFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFuZFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEVxXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiRXFcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5lXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTm90XCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTm90XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR3RcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJHdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEdlXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiR2VcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMdFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkx0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTGVcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJMZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFwcGx5XCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQXBwbHlcIjtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFubm90YXRpb25PYmplY3RbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0Ly8gJFR5cGUgaXMgb3B0aW9uYWwuLi5cblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiU3RyaW5nXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIlBhdGhcIiwgUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJERlY2ltYWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkRlY2ltYWxcIiwgRGVjaW1hbDogcGFyc2VGbG9hdChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsKSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFByb3BlcnR5UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiUHJvcGVydHlQYXRoXCIsIFByb3BlcnR5UGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmF2aWdhdGlvblByb3BlcnR5UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7XG5cdFx0XHR0eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XHRcdE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcblx0XHR9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJJZlwiLCBJZjogYW5ub3RhdGlvbk9iamVjdC4kSWYgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbmQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkFuZFwiLCBBbmQ6IGFubm90YXRpb25PYmplY3QuJEFuZCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE9yICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJPclwiLCBPcjogYW5ub3RhdGlvbk9iamVjdC4kT3IgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIk5vdFwiLCBOb3Q6IGFubm90YXRpb25PYmplY3QuJE5vdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVxICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJFcVwiLCBFcTogYW5ub3RhdGlvbk9iamVjdC4kRXEgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiTmVcIiwgTmU6IGFubm90YXRpb25PYmplY3QuJE5lIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkd0XCIsIEd0OiBhbm5vdGF0aW9uT2JqZWN0LiRHdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEdlICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJHZVwiLCBHZTogYW5ub3RhdGlvbk9iamVjdC4kR2UgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiTHRcIiwgTHQ6IGFubm90YXRpb25PYmplY3QuJEx0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkxlXCIsIExlOiBhbm5vdGF0aW9uT2JqZWN0LiRMZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFwcGx5ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJBcHBseVwiLCBBcHBseTogYW5ub3RhdGlvbk9iamVjdC4kQXBwbHksIEZ1bmN0aW9uOiBhbm5vdGF0aW9uT2JqZWN0LiRGdW5jdGlvbiB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJBbm5vdGF0aW9uUGF0aFwiLCBBbm5vdGF0aW9uUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHtcblx0XHRcdHR5cGU6IFwiRW51bU1lbWJlclwiLFxuXHRcdFx0RW51bU1lbWJlcjogYCR7bWFwTmFtZVRvQWxpYXMoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlci5zcGxpdChcIi9cIilbMF0pfS8ke2Fubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIuc3BsaXQoXCIvXCIpWzFdfWBcblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdHZhbHVlID0ge1xuXHRcdFx0dHlwZTogXCJSZWNvcmRcIixcblx0XHRcdFJlY29yZDogcGFyc2VBbm5vdGF0aW9uT2JqZWN0KGFubm90YXRpb25PYmplY3QsIGN1cnJlbnRUYXJnZXQsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0bmFtZTogcHJvcGVydHlLZXksXG5cdFx0dmFsdWVcblx0fTtcbn1cbmZ1bmN0aW9uIG1hcE5hbWVUb0FsaWFzKGFubm90YXRpb25OYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgW3BhdGhQYXJ0LCBhbm5vUGFydF0gPSBhbm5vdGF0aW9uTmFtZS5zcGxpdChcIkBcIik7XG5cdGlmICghYW5ub1BhcnQpIHtcblx0XHRhbm5vUGFydCA9IHBhdGhQYXJ0O1xuXHRcdHBhdGhQYXJ0ID0gXCJcIjtcblx0fSBlbHNlIHtcblx0XHRwYXRoUGFydCArPSBcIkBcIjtcblx0fVxuXHRjb25zdCBsYXN0RG90ID0gYW5ub1BhcnQubGFzdEluZGV4T2YoXCIuXCIpO1xuXHRyZXR1cm4gYCR7cGF0aFBhcnQgKyBWT0NBQlVMQVJZX0FMSUFTW2Fubm9QYXJ0LnN1YnN0cigwLCBsYXN0RG90KV19LiR7YW5ub1BhcnQuc3Vic3RyKGxhc3REb3QgKyAxKX1gO1xufVxuZnVuY3Rpb24gcGFyc2VBbm5vdGF0aW9uT2JqZWN0KFxuXHRhbm5vdGF0aW9uT2JqZWN0OiBhbnksXG5cdGN1cnJlbnRPYmplY3RUYXJnZXQ6IHN0cmluZyxcblx0YW5ub3RhdGlvbnNMaXN0czogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvbkxpc3Q+LFxuXHRvQ2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllc1xuKTogRXhwcmVzc2lvbiB8IEFubm90YXRpb25SZWNvcmQgfCBBbm5vdGF0aW9uIHtcblx0bGV0IHBhcnNlZEFubm90YXRpb25PYmplY3Q6IGFueSA9IHt9O1xuXHRjb25zdCB0eXBlT2ZPYmplY3QgPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0aWYgKGFubm90YXRpb25PYmplY3QgPT09IG51bGwpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIk51bGxcIiwgTnVsbDogbnVsbCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZk9iamVjdCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZk9iamVjdCA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkJvb2xcIiwgQm9vbDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZk9iamVjdCA9PT0gXCJudW1iZXJcIikge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiSW50XCIsIEludDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsIEFubm90YXRpb25QYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiUGF0aFwiLCBQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJEZWNpbWFsXCIsIERlY2ltYWw6IHBhcnNlRmxvYXQoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCkgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRQcm9wZXJ0eVBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiUHJvcGVydHlQYXRoXCIsIFByb3BlcnR5UGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kSWYgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5kICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkFuZFwiLCBBbmQ6IGFubm90YXRpb25PYmplY3QuJEFuZCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE9yICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIk9yXCIsIE9yOiBhbm5vdGF0aW9uT2JqZWN0LiRPciB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5vdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFcSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJFcVwiLCBFcTogYW5ub3RhdGlvbk9iamVjdC4kRXEgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJOZVwiLCBOZTogYW5ub3RhdGlvbk9iamVjdC4kTmUgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJHZVwiLCBHZTogYW5ub3RhdGlvbk9iamVjdC4kR2UgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJMdFwiLCBMdDogYW5ub3RhdGlvbk9iamVjdC4kTHQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJBcHBseVwiLCBBcHBseTogYW5ub3RhdGlvbk9iamVjdC4kQXBwbHksIEZ1bmN0aW9uOiBhbm5vdGF0aW9uT2JqZWN0LiRGdW5jdGlvbiB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7XG5cdFx0XHR0eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XHRcdE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcblx0XHR9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7XG5cdFx0XHR0eXBlOiBcIkVudW1NZW1iZXJcIixcblx0XHRcdEVudW1NZW1iZXI6IGAke21hcE5hbWVUb0FsaWFzKGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIuc3BsaXQoXCIvXCIpWzBdKX0vJHthbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVsxXX1gXG5cdFx0fTtcblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb25PYmplY3QpKSB7XG5cdFx0Y29uc3QgcGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24gPSBwYXJzZWRBbm5vdGF0aW9uT2JqZWN0O1xuXHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gPSBhbm5vdGF0aW9uT2JqZWN0Lm1hcCgoc3ViQW5ub3RhdGlvbk9iamVjdCwgc3ViQW5ub3RhdGlvbkluZGV4KSA9PlxuXHRcdFx0cGFyc2VBbm5vdGF0aW9uT2JqZWN0KHN1YkFubm90YXRpb25PYmplY3QsIGAke2N1cnJlbnRPYmplY3RUYXJnZXR9LyR7c3ViQW5ub3RhdGlvbkluZGV4fWAsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpXG5cdFx0KTtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJQcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQYXRoXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRJZlwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIklmXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5kXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiQW5kXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkT3JcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJPclwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEVxXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiRXFcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROZVwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIk5lXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTm90XCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiTm90XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR3RcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJHdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEdlXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiR2VcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMdFwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIkx0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTGVcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJMZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFwcGx5XCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiQXBwbHlcIjtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFubm90YXRpb25PYmplY3RbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiU3RyaW5nXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0LiRUeXBlKSB7XG5cdFx0XHRjb25zdCB0eXBlVmFsdWUgPSBhbm5vdGF0aW9uT2JqZWN0LiRUeXBlO1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC50eXBlID0gdHlwZVZhbHVlOyAvL2Ake3R5cGVBbGlhc30uJHt0eXBlVGVybX1gO1xuXHRcdH1cblx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlczogYW55ID0gW107XG5cdFx0T2JqZWN0LmtleXMoYW5ub3RhdGlvbk9iamVjdCkuZm9yRWFjaCgocHJvcGVydHlLZXkpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJFR5cGVcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkSWZcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkQXBwbHlcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkQW5kXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE9yXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE5lXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEd0XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEdlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEx0XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJExlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE5vdFwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRFcVwiICYmXG5cdFx0XHRcdCFwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHByb3BlcnR5VmFsdWVzLnB1c2goXG5cdFx0XHRcdFx0cGFyc2VQcm9wZXJ0eVZhbHVlKGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldLCBwcm9wZXJ0eUtleSwgY3VycmVudE9iamVjdFRhcmdldCwgYW5ub3RhdGlvbnNMaXN0cywgb0NhcGFiaWxpdGllcylcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0Ly8gQW5ub3RhdGlvbiBvZiBhbm5vdGF0aW9uXG5cdFx0XHRcdGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0XHRcdFx0XHR7IFtwcm9wZXJ0eUtleV06IGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldIH0sXG5cdFx0XHRcdFx0Y3VycmVudE9iamVjdFRhcmdldCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uc0xpc3RzLFxuXHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnByb3BlcnR5VmFsdWVzID0gcHJvcGVydHlWYWx1ZXM7XG5cdH1cblx0cmV0dXJuIHBhcnNlZEFubm90YXRpb25PYmplY3Q7XG59XG5mdW5jdGlvbiBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KHRhcmdldDogc3RyaW5nLCBhbm5vdGF0aW9uc0xpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4pOiBBbm5vdGF0aW9uTGlzdCB7XG5cdGlmICghYW5ub3RhdGlvbnNMaXN0cy5oYXNPd25Qcm9wZXJ0eSh0YXJnZXQpKSB7XG5cdFx0YW5ub3RhdGlvbnNMaXN0c1t0YXJnZXRdID0ge1xuXHRcdFx0dGFyZ2V0OiB0YXJnZXQsXG5cdFx0XHRhbm5vdGF0aW9uczogW11cblx0XHR9O1xuXHR9XG5cdHJldHVybiBhbm5vdGF0aW9uc0xpc3RzW3RhcmdldF07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlZmVyZW5jZUZhY2V0SWQocmVmZXJlbmNlRmFjZXQ6IGFueSkge1xuXHRjb25zdCBpZCA9IHJlZmVyZW5jZUZhY2V0LklEID8/IHJlZmVyZW5jZUZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGg7XG5cdHJldHVybiBpZCA/IHByZXBhcmVJZChpZCkgOiBpZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0OiBhbnkpIHtcblx0cmV0dXJuIGFubm90YXRpb25PYmplY3QuZmlsdGVyKChvUmVjb3JkOiBhbnkpID0+IHtcblx0XHRpZiAob1JlY29yZC5UYXJnZXQgJiYgb1JlY29yZC5UYXJnZXQuJEFubm90YXRpb25QYXRoKSB7XG5cdFx0XHRyZXR1cm4gb1JlY29yZC5UYXJnZXQuJEFubm90YXRpb25QYXRoLmluZGV4T2YoYEAke1VJQW5ub3RhdGlvblRlcm1zLkNoYXJ0fWApID09PSAtMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0cmV0dXJuIG9SZWNvcmQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0cmV0dXJuIG9SZWNvcmQuJEFubm90YXRpb25QYXRoICE9PSBgQCR7VUlBbm5vdGF0aW9uVGVybXMuQ2hhcnR9YDtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0YW5ub3RhdGlvbk9iamVjdHM6IGFueSxcblx0YW5ub3RhdGlvblRhcmdldDogc3RyaW5nLFxuXHRhbm5vdGF0aW9uTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbikge1xuXHRpZiAoT2JqZWN0LmtleXMoYW5ub3RhdGlvbk9iamVjdHMpLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBvdXRBbm5vdGF0aW9uT2JqZWN0ID0gZ2V0T3JDcmVhdGVBbm5vdGF0aW9uTGlzdChhbm5vdGF0aW9uVGFyZ2V0LCBhbm5vdGF0aW9uTGlzdHMpO1xuXHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdGRlbGV0ZSBhbm5vdGF0aW9uT2JqZWN0c1tgQCR7VUlBbm5vdGF0aW9uVGVybXMuQ2hhcnR9YF07XG5cdH1cblxuXHRmb3IgKGNvbnN0IGFubm90YXRpb25PYmplY3RLZXkgaW4gYW5ub3RhdGlvbk9iamVjdHMpIHtcblx0XHRsZXQgYW5ub3RhdGlvbktleSA9IGFubm90YXRpb25PYmplY3RLZXk7XG5cdFx0bGV0IGFubm90YXRpb25PYmplY3QgPSBhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XTtcblx0XHRzd2l0Y2ggKGFubm90YXRpb25LZXkpIHtcblx0XHRcdGNhc2UgYEAke1VJQW5ub3RhdGlvblRlcm1zLkhlYWRlckZhY2V0c31gOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVDaGFydEFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgYEAke1VJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9ufWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdCk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDpcblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLkludGVudEJhc2VkTmF2aWdhdGlvbikge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGBAJHtVSUFubm90YXRpb25UZXJtcy5GaWVsZEdyb3VwfWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0LkRhdGEgPSByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0LkRhdGEpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QuRGF0YSA9IHJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdC5EYXRhKTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGBAJHtVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50fWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5DaGFydCAmJiBhbm5vdGF0aW9uT2JqZWN0LlZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucyA9IGhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQoYW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucyk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBgQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RgOlxuXHRcdFx0XHQvLyBUaGlzIHNjZW5hcmlvIGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgc2VtYW50aWMgZmlsdGVyaW5nIG9uIERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhLWZpbHRlcnMuIEFzIG9mIG5vdyB0aGUgU2luZ2xlUmFuZ2UgYW5ub3RhdGlvbiBpcyByZWFkIGJ5IHRoZVxuXHRcdFx0XHQvLyBGaWVsZEhlbHBlciwgd2hpY2ggc2hvdWxkIG5vdCBpbmNsdWRlIGFueSBwcm9wZXJ0eXNwZWNpZmljIGxvZ2ljLiBXZSB3aWxsIHJlbW92ZSB0aGlzIG9uY2UgdGhlIEZpZWxkSGVscGVyIHJlY2VpdmVzIHRoZSBTaW5nbGVSYW5nZSBkYXRhIGZyb21cblx0XHRcdFx0Ly8gdGhlIGNvbnZlcnRlciBvciBoYXZpbmcgaXQgc2V0IGlzIG5vIGxvbmdlciBhIHByZXJlcXVpc2l0ZSBmb3IgdGhlIHNlbWFudGljIGZpbHRlcmluZy5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXSAmJlxuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zPy5sZW5ndGhcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0IWFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLnNvbWUoXG5cdFx0XHRcdFx0XHRcdChGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb246IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb24/LlByb3BlcnR5Py4kUHJvcGVydHlQYXRoLmluY2x1ZGVzKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFcIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2BAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgXS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLnB1c2goXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVcIixcblx0XHRcdFx0XHRcdFx0XHRBbGxvd2VkRXhwcmVzc2lvbnM6IFwiU2luZ2xlUmFuZ2VcIixcblx0XHRcdFx0XHRcdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9DcmVhdGlvbkRhdGVUaW1lXCJcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVcIixcblx0XHRcdFx0XHRcdFx0XHRBbGxvd2VkRXhwcmVzc2lvbnM6IFwiU2luZ2xlUmFuZ2VcIixcblx0XHRcdFx0XHRcdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHRcdFx0XHRcdFx0JFByb3BlcnR5UGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlRGF0ZVRpbWVcIlxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRsZXQgY3VycmVudE91dEFubm90YXRpb25PYmplY3QgPSBvdXRBbm5vdGF0aW9uT2JqZWN0O1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGFubm90YXRpb24gb2YgYW5ub3RhdGlvblxuXHRcdGNvbnN0IGFubm90YXRpb25PZkFubm90YXRpb25TcGxpdCA9IGFubm90YXRpb25LZXkuc3BsaXQoXCJAXCIpO1xuXHRcdGlmIChhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQubGVuZ3RoID4gMikge1xuXHRcdFx0Y3VycmVudE91dEFubm90YXRpb25PYmplY3QgPSBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KFxuXHRcdFx0XHRgJHthbm5vdGF0aW9uVGFyZ2V0fUAke2Fubm90YXRpb25PZkFubm90YXRpb25TcGxpdFsxXX1gLFxuXHRcdFx0XHRhbm5vdGF0aW9uTGlzdHNcblx0XHRcdCk7XG5cdFx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzJdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzFdO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdCA9IGFubm90YXRpb25LZXkuc3BsaXQoXCIjXCIpO1xuXHRcdGNvbnN0IHF1YWxpZmllciA9IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdFsxXTtcblx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzBdO1xuXG5cdFx0Y29uc3QgcGFyc2VkQW5ub3RhdGlvbk9iamVjdDogYW55ID0ge1xuXHRcdFx0dGVybTogYW5ub3RhdGlvbktleSxcblx0XHRcdHF1YWxpZmllcjogcXVhbGlmaWVyXG5cdFx0fTtcblx0XHRsZXQgY3VycmVudEFubm90YXRpb25UYXJnZXQgPSBgJHthbm5vdGF0aW9uVGFyZ2V0fUAke3BhcnNlZEFubm90YXRpb25PYmplY3QudGVybX1gO1xuXHRcdGlmIChxdWFsaWZpZXIpIHtcblx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0ICs9IGAjJHtxdWFsaWZpZXJ9YDtcblx0XHR9XG5cdFx0bGV0IGlzQ29sbGVjdGlvbiA9IGZhbHNlO1xuXHRcdGNvbnN0IHR5cGVvZkFubm90YXRpb24gPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdCA9PT0gbnVsbCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJOdWxsXCIgfTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZkFubm90YXRpb24gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mQW5ub3RhdGlvbiA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2ZBbm5vdGF0aW9uID09PSBcIm51bWJlclwiKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbmQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE9yICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiT3JcIiwgT3I6IGFubm90YXRpb25PYmplY3QuJE9yIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVxICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIk5lXCIsIE5lOiBhbm5vdGF0aW9uT2JqZWN0LiROZSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEdlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkx0XCIsIEx0OiBhbm5vdGF0aW9uT2JqZWN0LiRMdCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFwcGx5ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJQYXRoXCIsIFBhdGg6IGFubm90YXRpb25PYmplY3QuJFBhdGggfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7XG5cdFx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdFx0QW5ub3RhdGlvblBhdGg6IGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkRlY2ltYWxcIiwgRGVjaW1hbDogcGFyc2VGbG9hdChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsKSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0ge1xuXHRcdFx0XHR0eXBlOiBcIkVudW1NZW1iZXJcIixcblx0XHRcdFx0RW51bU1lbWJlcjogYCR7bWFwTmFtZVRvQWxpYXMoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlci5zcGxpdChcIi9cIilbMF0pfS8ke2Fubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIuc3BsaXQoXCIvXCIpWzFdfWBcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb25PYmplY3QpKSB7XG5cdFx0XHRpc0NvbGxlY3Rpb24gPSB0cnVlO1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uID0gYW5ub3RhdGlvbk9iamVjdC5tYXAoKHN1YkFubm90YXRpb25PYmplY3QsIHN1YkFubm90YXRpb25JbmRleCkgPT5cblx0XHRcdFx0cGFyc2VBbm5vdGF0aW9uT2JqZWN0KFxuXHRcdFx0XHRcdHN1YkFubm90YXRpb25PYmplY3QsXG5cdFx0XHRcdFx0YCR7Y3VycmVudEFubm90YXRpb25UYXJnZXR9LyR7c3ViQW5ub3RhdGlvbkluZGV4fWAsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbkxpc3RzLFxuXHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0aWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIlByb3BlcnR5UGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUGF0aFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJQYXRoXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFubm90YXRpb25QYXRoXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkFubm90YXRpb25QYXRoXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRUeXBlXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkSWZcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiSWZcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE9yXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIk9yXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRFcVwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJFcVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmVcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiTmVcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5vdFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJOb3RcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEd0XCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkd0XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHZVwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJHZVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTHRcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiTHRcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJExlXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkxlXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbmRcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiQW5kXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBcHBseVwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJBcHBseVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0WzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJTdHJpbmdcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByZWNvcmQ6IEFubm90YXRpb25SZWNvcmQgPSB7XG5cdFx0XHRcdHByb3BlcnR5VmFsdWVzOiBbXVxuXHRcdFx0fTtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0LiRUeXBlKSB7XG5cdFx0XHRcdGNvbnN0IHR5cGVWYWx1ZSA9IGFubm90YXRpb25PYmplY3QuJFR5cGU7XG5cdFx0XHRcdHJlY29yZC50eXBlID0gYCR7dHlwZVZhbHVlfWA7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlczogYW55W10gPSBbXTtcblx0XHRcdGZvciAoY29uc3QgcHJvcGVydHlLZXkgaW4gYW5ub3RhdGlvbk9iamVjdCkge1xuXHRcdFx0XHRpZiAocHJvcGVydHlLZXkgIT09IFwiJFR5cGVcIiAmJiAhcHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlcy5wdXNoKFxuXHRcdFx0XHRcdFx0cGFyc2VQcm9wZXJ0eVZhbHVlKFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0W3Byb3BlcnR5S2V5XSxcblx0XHRcdFx0XHRcdFx0cHJvcGVydHlLZXksXG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uTGlzdHMsXG5cdFx0XHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG5cdFx0XHRcdFx0Ly8gQW5ub3RhdGlvbiBvZiByZWNvcmRcblx0XHRcdFx0XHRjcmVhdGVBbm5vdGF0aW9uTGlzdHMoXG5cdFx0XHRcdFx0XHR7IFtwcm9wZXJ0eUtleV06IGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldIH0sXG5cdFx0XHRcdFx0XHRjdXJyZW50QW5ub3RhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdGFubm90YXRpb25MaXN0cyxcblx0XHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZWNvcmQucHJvcGVydHlWYWx1ZXMgPSBwcm9wZXJ0eVZhbHVlcztcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QucmVjb3JkID0gcmVjb3JkO1xuXHRcdH1cblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmlzQ29sbGVjdGlvbiA9IGlzQ29sbGVjdGlvbjtcblx0XHRjdXJyZW50T3V0QW5ub3RhdGlvbk9iamVjdC5hbm5vdGF0aW9ucy5wdXNoKHBhcnNlZEFubm90YXRpb25PYmplY3QpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVQcm9wZXJ0eShwcm9wZXJ0eURlZmluaXRpb246IGFueSwgZW50aXR5VHlwZU9iamVjdDogUmF3RW50aXR5VHlwZSB8IFJhd0NvbXBsZXhUeXBlLCBwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IFJhd1Byb3BlcnR5IHtcblx0cmV0dXJuIHtcblx0XHRfdHlwZTogXCJQcm9wZXJ0eVwiLFxuXHRcdG5hbWU6IHByb3BlcnR5TmFtZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eVR5cGVPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lfS8ke3Byb3BlcnR5TmFtZX1gLFxuXHRcdHR5cGU6IHByb3BlcnR5RGVmaW5pdGlvbi4kVHlwZSxcblx0XHRtYXhMZW5ndGg6IHByb3BlcnR5RGVmaW5pdGlvbi4kTWF4TGVuZ3RoLFxuXHRcdHByZWNpc2lvbjogcHJvcGVydHlEZWZpbml0aW9uLiRQcmVjaXNpb24sXG5cdFx0c2NhbGU6IHByb3BlcnR5RGVmaW5pdGlvbi4kU2NhbGUsXG5cdFx0bnVsbGFibGU6IHByb3BlcnR5RGVmaW5pdGlvbi4kTnVsbGFibGVcblx0fTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eShcblx0bmF2UHJvcGVydHlEZWZpbml0aW9uOiBhbnksXG5cdGVudGl0eVR5cGVPYmplY3Q6IFJhd0VudGl0eVR5cGUgfCBSYXdDb21wbGV4VHlwZSxcblx0bmF2UHJvcGVydHlOYW1lOiBzdHJpbmdcbik6IFJhd1Y0TmF2aWdhdGlvblByb3BlcnR5IHtcblx0bGV0IHJlZmVyZW50aWFsQ29uc3RyYWludDogUmVmZXJlbnRpYWxDb25zdHJhaW50W10gPSBbXTtcblx0aWYgKG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kUmVmZXJlbnRpYWxDb25zdHJhaW50KSB7XG5cdFx0cmVmZXJlbnRpYWxDb25zdHJhaW50ID0gT2JqZWN0LmtleXMobmF2UHJvcGVydHlEZWZpbml0aW9uLiRSZWZlcmVudGlhbENvbnN0cmFpbnQpLm1hcCgoc291cmNlUHJvcGVydHlOYW1lKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRzb3VyY2VUeXBlTmFtZTogZW50aXR5VHlwZU9iamVjdC5uYW1lLFxuXHRcdFx0XHRzb3VyY2VQcm9wZXJ0eTogc291cmNlUHJvcGVydHlOYW1lLFxuXHRcdFx0XHR0YXJnZXRUeXBlTmFtZTogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRUeXBlLFxuXHRcdFx0XHR0YXJnZXRQcm9wZXJ0eTogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRSZWZlcmVudGlhbENvbnN0cmFpbnRbc291cmNlUHJvcGVydHlOYW1lXVxuXHRcdFx0fTtcblx0XHR9KTtcblx0fVxuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydHk6IFJhd1Y0TmF2aWdhdGlvblByb3BlcnR5ID0ge1xuXHRcdF90eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiLFxuXHRcdG5hbWU6IG5hdlByb3BlcnR5TmFtZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eVR5cGVPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lfS8ke25hdlByb3BlcnR5TmFtZX1gLFxuXHRcdHBhcnRuZXI6IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kUGFydG5lcixcblx0XHRpc0NvbGxlY3Rpb246IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kaXNDb2xsZWN0aW9uID8gbmF2UHJvcGVydHlEZWZpbml0aW9uLiRpc0NvbGxlY3Rpb24gOiBmYWxzZSxcblx0XHRjb250YWluc1RhcmdldDogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRDb250YWluc1RhcmdldCxcblx0XHR0YXJnZXRUeXBlTmFtZTogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRUeXBlLFxuXHRcdHJlZmVyZW50aWFsQ29uc3RyYWludFxuXHR9O1xuXG5cdHJldHVybiBuYXZpZ2F0aW9uUHJvcGVydHk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFbnRpdHlTZXQoZW50aXR5U2V0RGVmaW5pdGlvbjogYW55LCBlbnRpdHlTZXROYW1lOiBzdHJpbmcsIGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZyk6IFJhd0VudGl0eVNldCB7XG5cdGNvbnN0IGVudGl0eVNldE9iamVjdDogUmF3RW50aXR5U2V0ID0ge1xuXHRcdF90eXBlOiBcIkVudGl0eVNldFwiLFxuXHRcdG5hbWU6IGVudGl0eVNldE5hbWUsXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5QmluZGluZzoge30sXG5cdFx0ZW50aXR5VHlwZU5hbWU6IGVudGl0eVNldERlZmluaXRpb24uJFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke2VudGl0eVNldE5hbWV9YFxuXHR9O1xuXHRyZXR1cm4gZW50aXR5U2V0T2JqZWN0O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlU2luZ2xldG9uKHNpbmdsZXRvbkRlZmluaXRpb246IGFueSwgc2luZ2xldG9uTmFtZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBSYXdTaW5nbGV0b24ge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIlNpbmdsZXRvblwiLFxuXHRcdG5hbWU6IHNpbmdsZXRvbk5hbWUsXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5QmluZGluZzoge30sXG5cdFx0ZW50aXR5VHlwZU5hbWU6IHNpbmdsZXRvbkRlZmluaXRpb24uJFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke3NpbmdsZXRvbk5hbWV9YCxcblx0XHRudWxsYWJsZTogdHJ1ZVxuXHR9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQWN0aW9uSW1wb3J0KGFjdGlvbkltcG9ydDogYW55LCBhY3Rpb25JbXBvcnROYW1lOiBzdHJpbmcsIGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZyk6IFJhd0FjdGlvbkltcG9ydCB7XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiQWN0aW9uSW1wb3J0XCIsXG5cdFx0bmFtZTogYWN0aW9uSW1wb3J0TmFtZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eUNvbnRhaW5lck5hbWV9LyR7YWN0aW9uSW1wb3J0TmFtZX1gLFxuXHRcdGFjdGlvbk5hbWU6IGFjdGlvbkltcG9ydC4kQWN0aW9uXG5cdH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVUeXBlRGVmaW5pdGlvbih0eXBlRGVmaW5pdGlvbjogYW55LCB0eXBlTmFtZTogc3RyaW5nLCBuYW1lc3BhY2VQcmVmaXg6IHN0cmluZyk6IFJhd1R5cGVEZWZpbml0aW9uIHtcblx0Y29uc3QgdHlwZU9iamVjdDogUmF3VHlwZURlZmluaXRpb24gPSB7XG5cdFx0X3R5cGU6IFwiVHlwZURlZmluaXRpb25cIixcblx0XHRuYW1lOiB0eXBlTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiB0eXBlTmFtZSxcblx0XHR1bmRlcmx5aW5nVHlwZTogdHlwZURlZmluaXRpb24uJFVuZGVybHlpbmdUeXBlXG5cdH07XG5cdHJldHVybiB0eXBlT2JqZWN0O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQ29tcGxleFR5cGUoY29tcGxleFR5cGVEZWZpbml0aW9uOiBhbnksIGNvbXBsZXhUeXBlTmFtZTogc3RyaW5nLCBuYW1lc3BhY2VQcmVmaXg6IHN0cmluZyk6IFJhd0NvbXBsZXhUeXBlIHtcblx0Y29uc3QgY29tcGxleFR5cGVPYmplY3Q6IFJhd0NvbXBsZXhUeXBlID0ge1xuXHRcdF90eXBlOiBcIkNvbXBsZXhUeXBlXCIsXG5cdFx0bmFtZTogY29tcGxleFR5cGVOYW1lLnN1YnN0cmluZyhuYW1lc3BhY2VQcmVmaXgubGVuZ3RoKSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGNvbXBsZXhUeXBlTmFtZSxcblx0XHRwcm9wZXJ0aWVzOiBbXSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW11cblx0fTtcblxuXHRjb25zdCBjb21wbGV4VHlwZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhjb21wbGV4VHlwZURlZmluaXRpb24pXG5cdFx0LmZpbHRlcigocHJvcGVydHlOYW1lT3JOb3QpID0+IHtcblx0XHRcdGlmIChwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRLZXlcIiAmJiBwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRraW5kXCIpIHtcblx0XHRcdFx0cmV0dXJuIGNvbXBsZXhUeXBlRGVmaW5pdGlvbltwcm9wZXJ0eU5hbWVPck5vdF0uJGtpbmQgPT09IFwiUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYSA+IGIgPyAxIDogLTEpKVxuXHRcdC5tYXAoKHByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHByZXBhcmVQcm9wZXJ0eShjb21wbGV4VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lXSwgY29tcGxleFR5cGVPYmplY3QsIHByb3BlcnR5TmFtZSk7XG5cdFx0fSk7XG5cblx0Y29tcGxleFR5cGVPYmplY3QucHJvcGVydGllcyA9IGNvbXBsZXhUeXBlUHJvcGVydGllcztcblx0Y29uc3QgY29tcGxleFR5cGVOYXZpZ2F0aW9uUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGNvbXBsZXhUeXBlRGVmaW5pdGlvbilcblx0XHQuZmlsdGVyKChwcm9wZXJ0eU5hbWVPck5vdCkgPT4ge1xuXHRcdFx0aWYgKHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJEtleVwiICYmIHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJGtpbmRcIikge1xuXHRcdFx0XHRyZXR1cm4gY29tcGxleFR5cGVEZWZpbml0aW9uW3Byb3BlcnR5TmFtZU9yTm90XS4ka2luZCA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYSA+IGIgPyAxIDogLTEpKVxuXHRcdC5tYXAoKG5hdlByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydHkoY29tcGxleFR5cGVEZWZpbml0aW9uW25hdlByb3BlcnR5TmFtZV0sIGNvbXBsZXhUeXBlT2JqZWN0LCBuYXZQcm9wZXJ0eU5hbWUpO1xuXHRcdH0pO1xuXHRjb21wbGV4VHlwZU9iamVjdC5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IGNvbXBsZXhUeXBlTmF2aWdhdGlvblByb3BlcnRpZXM7XG5cdHJldHVybiBjb21wbGV4VHlwZU9iamVjdDtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eUtleXMoZW50aXR5VHlwZURlZmluaXRpb246IGFueSwgb01ldGFNb2RlbERhdGE6IGFueSk6IHN0cmluZ1tdIHtcblx0aWYgKCFlbnRpdHlUeXBlRGVmaW5pdGlvbi4kS2V5ICYmIGVudGl0eVR5cGVEZWZpbml0aW9uLiRCYXNlVHlwZSkge1xuXHRcdHJldHVybiBwcmVwYXJlRW50aXR5S2V5cyhvTWV0YU1vZGVsRGF0YVtlbnRpdHlUeXBlRGVmaW5pdGlvbi4kQmFzZVR5cGVdLCBvTWV0YU1vZGVsRGF0YSk7XG5cdH1cblx0cmV0dXJuIGVudGl0eVR5cGVEZWZpbml0aW9uLiRLZXkgPz8gW107IC8vaGFuZGxpbmcgb2YgZW50aXR5IHR5cGVzIHdpdGhvdXQga2V5IGFzIHdlbGwgYXMgYmFzZXR5cGVcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eVR5cGUoZW50aXR5VHlwZURlZmluaXRpb246IGFueSwgZW50aXR5VHlwZU5hbWU6IHN0cmluZywgbmFtZXNwYWNlUHJlZml4OiBzdHJpbmcsIG1ldGFNb2RlbERhdGE6IGFueSk6IFJhd0VudGl0eVR5cGUge1xuXHRjb25zdCBlbnRpdHlUeXBlOiBSYXdFbnRpdHlUeXBlID0ge1xuXHRcdF90eXBlOiBcIkVudGl0eVR5cGVcIixcblx0XHRuYW1lOiBlbnRpdHlUeXBlTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBlbnRpdHlUeXBlTmFtZSxcblx0XHRrZXlzOiBbXSxcblx0XHRlbnRpdHlQcm9wZXJ0aWVzOiBbXSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW10sXG5cdFx0YWN0aW9uczoge31cblx0fTtcblxuXHRmb3IgKGNvbnN0IGtleSBpbiBlbnRpdHlUeXBlRGVmaW5pdGlvbikge1xuXHRcdGNvbnN0IHZhbHVlID0gZW50aXR5VHlwZURlZmluaXRpb25ba2V5XTtcblxuXHRcdHN3aXRjaCAodmFsdWUuJGtpbmQpIHtcblx0XHRcdGNhc2UgXCJQcm9wZXJ0eVwiOlxuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHByZXBhcmVQcm9wZXJ0eSh2YWx1ZSwgZW50aXR5VHlwZSwga2V5KTtcblx0XHRcdFx0ZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjpcblx0XHRcdFx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnR5ID0gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0eSh2YWx1ZSwgZW50aXR5VHlwZSwga2V5KTtcblx0XHRcdFx0ZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKG5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGVudGl0eVR5cGUua2V5cyA9IHByZXBhcmVFbnRpdHlLZXlzKGVudGl0eVR5cGVEZWZpbml0aW9uLCBtZXRhTW9kZWxEYXRhKVxuXHRcdC5tYXAoKGVudGl0eUtleSkgPT4gZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5uYW1lID09PSBlbnRpdHlLZXkpKVxuXHRcdC5maWx0ZXIoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSBhcyBSYXdFbnRpdHlUeXBlW1wia2V5c1wiXTtcblxuXHQvLyBDaGVjayBpZiB0aGVyZSBhcmUgZmlsdGVyIGZhY2V0cyBkZWZpbmVkIGZvciB0aGUgZW50aXR5VHlwZSBhbmQgaWYgeWVzLCBjaGVjayBpZiBhbGwgb2YgdGhlbSBoYXZlIGFuIElEXG5cdC8vIFRoZSBJRCBpcyBvcHRpb25hbCwgYnV0IGl0IGlzIGludGVybmFsbHkgdGFrZW4gZm9yIGdyb3VwaW5nIGZpbHRlciBmaWVsZHMgYW5kIGlmIGl0J3Mgbm90IHByZXNlbnRcblx0Ly8gYSBmYWxsYmFjayBJRCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQgaGVyZS5cblx0bWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdPy5bYEAke1VJQW5ub3RhdGlvblRlcm1zLkZpbHRlckZhY2V0c31gXT8uZm9yRWFjaChcblx0XHQoZmlsdGVyRmFjZXRBbm5vdGF0aW9uOiBhbnkpID0+IHtcblx0XHRcdGZpbHRlckZhY2V0QW5ub3RhdGlvbi5JRCA9IGNyZWF0ZVJlZmVyZW5jZUZhY2V0SWQoZmlsdGVyRmFjZXRBbm5vdGF0aW9uKTtcblx0XHR9XG5cdCk7XG5cblx0Zm9yIChjb25zdCBlbnRpdHlQcm9wZXJ0eSBvZiBlbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMpIHtcblx0XHRpZiAoIW1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZV0pIHtcblx0XHRcdG1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSB7fTtcblx0XHR9XG5cdFx0aWYgKCFtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdW2BAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWBdKSB7XG5cdFx0XHRtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdW2BAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWBdID0ge1xuXHRcdFx0XHQkVHlwZTogVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkLFxuXHRcdFx0XHRWYWx1ZTogeyAkUGF0aDogZW50aXR5UHJvcGVydHkubmFtZSB9XG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbnRpdHlUeXBlO1xufVxuZnVuY3Rpb24gcHJlcGFyZUFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcsIGFjdGlvblJhd0RhdGE6IE1ldGFNb2RlbEFjdGlvbiwgbmFtZXNwYWNlUHJlZml4OiBzdHJpbmcpOiBSYXdBY3Rpb24ge1xuXHRsZXQgYWN0aW9uRW50aXR5VHlwZSA9IFwiXCI7XG5cdGxldCBhY3Rpb25GUU4gPSBhY3Rpb25OYW1lO1xuXG5cdGlmIChhY3Rpb25SYXdEYXRhLiRJc0JvdW5kKSB7XG5cdFx0Y29uc3QgYmluZGluZ1BhcmFtZXRlciA9IGFjdGlvblJhd0RhdGEuJFBhcmFtZXRlclswXTtcblx0XHRhY3Rpb25FbnRpdHlUeXBlID0gYmluZGluZ1BhcmFtZXRlci4kVHlwZTtcblx0XHRpZiAoYmluZGluZ1BhcmFtZXRlci4kaXNDb2xsZWN0aW9uID09PSB0cnVlKSB7XG5cdFx0XHRhY3Rpb25GUU4gPSBgJHthY3Rpb25OYW1lfShDb2xsZWN0aW9uKCR7YWN0aW9uRW50aXR5VHlwZX0pKWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFjdGlvbkZRTiA9IGAke2FjdGlvbk5hbWV9KCR7YWN0aW9uRW50aXR5VHlwZX0pYDtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBwYXJhbWV0ZXJzID0gYWN0aW9uUmF3RGF0YS4kUGFyYW1ldGVyID8/IFtdO1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIkFjdGlvblwiLFxuXHRcdG5hbWU6IGFjdGlvbk5hbWUuc3Vic3RyaW5nKG5hbWVzcGFjZVByZWZpeC5sZW5ndGgpLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYWN0aW9uRlFOLFxuXHRcdGlzQm91bmQ6IGFjdGlvblJhd0RhdGEuJElzQm91bmQgPz8gZmFsc2UsXG5cdFx0aXNGdW5jdGlvbjogYWN0aW9uUmF3RGF0YS4ka2luZCA9PT0gXCJGdW5jdGlvblwiLFxuXHRcdHNvdXJjZVR5cGU6IGFjdGlvbkVudGl0eVR5cGUsXG5cdFx0cmV0dXJuVHlwZTogYWN0aW9uUmF3RGF0YS4kUmV0dXJuVHlwZT8uJFR5cGUgPz8gXCJcIixcblx0XHRwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLm1hcCgocGFyYW0pID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdF90eXBlOiBcIkFjdGlvblBhcmFtZXRlclwiLFxuXHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2FjdGlvbkZRTn0vJHtwYXJhbS4kTmFtZX1gLFxuXHRcdFx0XHRpc0NvbGxlY3Rpb246IHBhcmFtLiRpc0NvbGxlY3Rpb24gPz8gZmFsc2UsXG5cdFx0XHRcdG5hbWU6IHBhcmFtLiROYW1lLFxuXHRcdFx0XHR0eXBlOiBwYXJhbS4kVHlwZVxuXHRcdFx0fTtcblx0XHR9KVxuXHR9O1xufVxuXG5mdW5jdGlvbiBwYXJzZUVudGl0eUNvbnRhaW5lcihcblx0bmFtZXNwYWNlUHJlZml4OiBzdHJpbmcsXG5cdGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZyxcblx0ZW50aXR5Q29udGFpbmVyTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG5cdHNjaGVtYTogUmF3U2NoZW1hXG4pIHtcblx0c2NoZW1hLmVudGl0eUNvbnRhaW5lciA9IHtcblx0XHRfdHlwZTogXCJFbnRpdHlDb250YWluZXJcIixcblx0XHRuYW1lOiBlbnRpdHlDb250YWluZXJOYW1lLnN1YnN0cmluZyhuYW1lc3BhY2VQcmVmaXgubGVuZ3RoKSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGVudGl0eUNvbnRhaW5lck5hbWVcblx0fTtcblxuXHRmb3IgKGNvbnN0IGVsZW1lbnROYW1lIGluIGVudGl0eUNvbnRhaW5lck1ldGFkYXRhKSB7XG5cdFx0Y29uc3QgZWxlbWVudFZhbHVlID0gZW50aXR5Q29udGFpbmVyTWV0YWRhdGFbZWxlbWVudE5hbWVdO1xuXHRcdHN3aXRjaCAoZWxlbWVudFZhbHVlLiRraW5kKSB7XG5cdFx0XHRjYXNlIFwiRW50aXR5U2V0XCI6XG5cdFx0XHRcdHNjaGVtYS5lbnRpdHlTZXRzLnB1c2gocHJlcGFyZUVudGl0eVNldChlbGVtZW50VmFsdWUsIGVsZW1lbnROYW1lLCBlbnRpdHlDb250YWluZXJOYW1lKSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiU2luZ2xldG9uXCI6XG5cdFx0XHRcdHNjaGVtYS5zaW5nbGV0b25zLnB1c2gocHJlcGFyZVNpbmdsZXRvbihlbGVtZW50VmFsdWUsIGVsZW1lbnROYW1lLCBlbnRpdHlDb250YWluZXJOYW1lKSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiQWN0aW9uSW1wb3J0XCI6XG5cdFx0XHRcdHNjaGVtYS5hY3Rpb25JbXBvcnRzLnB1c2gocHJlcGFyZUFjdGlvbkltcG9ydChlbGVtZW50VmFsdWUsIGVsZW1lbnROYW1lLCBlbnRpdHlDb250YWluZXJOYW1lKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8vIGxpbmsgdGhlIG5hdmlnYXRpb24gcHJvcGVydHkgYmluZGluZ3MgKCROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKVxuXHRmb3IgKGNvbnN0IGVudGl0eVNldCBvZiBzY2hlbWEuZW50aXR5U2V0cykge1xuXHRcdGNvbnN0IG5hdlByb3BlcnR5QmluZGluZ3MgPSBlbnRpdHlDb250YWluZXJNZXRhZGF0YVtlbnRpdHlTZXQubmFtZV0uJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmc7XG5cdFx0aWYgKG5hdlByb3BlcnR5QmluZGluZ3MpIHtcblx0XHRcdGZvciAoY29uc3QgbmF2UHJvcE5hbWUgb2YgT2JqZWN0LmtleXMobmF2UHJvcGVydHlCaW5kaW5ncykpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0RW50aXR5U2V0ID0gc2NoZW1hLmVudGl0eVNldHMuZmluZCgoZW50aXR5U2V0TmFtZSkgPT4gZW50aXR5U2V0TmFtZS5uYW1lID09PSBuYXZQcm9wZXJ0eUJpbmRpbmdzW25hdlByb3BOYW1lXSk7XG5cdFx0XHRcdGlmICh0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHRcdFx0XHRlbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZQcm9wTmFtZV0gPSB0YXJnZXRFbnRpdHlTZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2VBbm5vdGF0aW9ucyhhbm5vdGF0aW9uczogUmVjb3JkPHN0cmluZywgYW55PiwgY2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllcykge1xuXHRjb25zdCBhbm5vdGF0aW9uTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0PiA9IHt9O1xuXHRmb3IgKGNvbnN0IHRhcmdldCBpbiBhbm5vdGF0aW9ucykge1xuXHRcdGNyZWF0ZUFubm90YXRpb25MaXN0cyhhbm5vdGF0aW9uc1t0YXJnZXRdLCB0YXJnZXQsIGFubm90YXRpb25MaXN0cywgY2FwYWJpbGl0aWVzKTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhhbm5vdGF0aW9uTGlzdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNjaGVtYShtZXRhTW9kZWxEYXRhOiBhbnkpIHtcblx0Ly8gYXNzdW1pbmcgdGhlcmUgaXMgb25seSBvbmUgc2NoZW1hL25hbWVzcGFjZVxuXHRjb25zdCBuYW1lc3BhY2VQcmVmaXggPSBPYmplY3Qua2V5cyhtZXRhTW9kZWxEYXRhKS5maW5kKChrZXkpID0+IG1ldGFNb2RlbERhdGFba2V5XS4ka2luZCA9PT0gXCJTY2hlbWFcIikgPz8gXCJcIjtcblxuXHRjb25zdCBzY2hlbWE6IFJhd1NjaGVtYSA9IHtcblx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZVByZWZpeC5zbGljZSgwLCAtMSksXG5cdFx0ZW50aXR5Q29udGFpbmVyOiB7IF90eXBlOiBcIkVudGl0eUNvbnRhaW5lclwiLCBuYW1lOiBcIlwiLCBmdWxseVF1YWxpZmllZE5hbWU6IFwiXCIgfSxcblx0XHRlbnRpdHlTZXRzOiBbXSxcblx0XHRlbnRpdHlUeXBlczogW10sXG5cdFx0Y29tcGxleFR5cGVzOiBbXSxcblx0XHR0eXBlRGVmaW5pdGlvbnM6IFtdLFxuXHRcdHNpbmdsZXRvbnM6IFtdLFxuXHRcdGFzc29jaWF0aW9uczogW10sXG5cdFx0YXNzb2NpYXRpb25TZXRzOiBbXSxcblx0XHRhY3Rpb25zOiBbXSxcblx0XHRhY3Rpb25JbXBvcnRzOiBbXSxcblx0XHRhbm5vdGF0aW9uczoge31cblx0fTtcblxuXHRjb25zdCBwYXJzZU1ldGFNb2RlbEVsZW1lbnQgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0c3dpdGNoICh2YWx1ZS4ka2luZCkge1xuXHRcdFx0Y2FzZSBcIkVudGl0eUNvbnRhaW5lclwiOlxuXHRcdFx0XHRwYXJzZUVudGl0eUNvbnRhaW5lcihuYW1lc3BhY2VQcmVmaXgsIG5hbWUsIHZhbHVlLCBzY2hlbWEpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIkFjdGlvblwiOlxuXHRcdFx0Y2FzZSBcIkZ1bmN0aW9uXCI6XG5cdFx0XHRcdHNjaGVtYS5hY3Rpb25zLnB1c2gocHJlcGFyZUFjdGlvbihuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlUHJlZml4KSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiRW50aXR5VHlwZVwiOlxuXHRcdFx0XHRzY2hlbWEuZW50aXR5VHlwZXMucHVzaChwcmVwYXJlRW50aXR5VHlwZSh2YWx1ZSwgbmFtZSwgbmFtZXNwYWNlUHJlZml4LCBtZXRhTW9kZWxEYXRhKSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiQ29tcGxleFR5cGVcIjpcblx0XHRcdFx0c2NoZW1hLmNvbXBsZXhUeXBlcy5wdXNoKHByZXBhcmVDb21wbGV4VHlwZSh2YWx1ZSwgbmFtZSwgbmFtZXNwYWNlUHJlZml4KSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVHlwZURlZmluaXRpb25cIjpcblx0XHRcdFx0c2NoZW1hLnR5cGVEZWZpbml0aW9ucy5wdXNoKHByZXBhcmVUeXBlRGVmaW5pdGlvbih2YWx1ZSwgbmFtZSwgbmFtZXNwYWNlUHJlZml4KSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblxuXHRmb3IgKGNvbnN0IGVsZW1lbnROYW1lIGluIG1ldGFNb2RlbERhdGEpIHtcblx0XHRjb25zdCBlbGVtZW50VmFsdWUgPSBtZXRhTW9kZWxEYXRhW2VsZW1lbnROYW1lXTtcblxuXHRcdGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnRWYWx1ZSkpIHtcblx0XHRcdC8vIHZhbHVlIGNhbiBiZSBhbiBhcnJheSBpbiBjYXNlIG9mIGFjdGlvbnMgb3IgZnVuY3Rpb25zXG5cdFx0XHRmb3IgKGNvbnN0IHN1YkVsZW1lbnRWYWx1ZSBvZiBlbGVtZW50VmFsdWUpIHtcblx0XHRcdFx0cGFyc2VNZXRhTW9kZWxFbGVtZW50KGVsZW1lbnROYW1lLCBzdWJFbGVtZW50VmFsdWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJzZU1ldGFNb2RlbEVsZW1lbnQoZWxlbWVudE5hbWUsIGVsZW1lbnRWYWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHNjaGVtYTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWV0YU1vZGVsKFxuXHRtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLFxuXHRjYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0gRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pOiBSYXdNZXRhZGF0YSB7XG5cdGNvbnN0IHJlc3VsdDogT21pdDxSYXdNZXRhZGF0YSwgXCJzY2hlbWFcIj4gPSB7XG5cdFx0aWRlbnRpZmljYXRpb246IFwibWV0YW1vZGVsUmVzdWx0XCIsXG5cdFx0dmVyc2lvbjogXCI0LjBcIixcblx0XHRyZWZlcmVuY2VzOiBbXVxuXHR9O1xuXG5cdC8vIHBhcnNlIHRoZSBzY2hlbWEgd2hlbiBpdCBpcyBhY2Nlc3NlZCBmb3IgdGhlIGZpcnN0IHRpbWVcblx0QW5ub3RhdGlvbkNvbnZlcnRlci5sYXp5KHJlc3VsdCBhcyBSYXdNZXRhZGF0YSwgXCJzY2hlbWFcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG1ldGFNb2RlbERhdGEgPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KFwiLyRcIik7XG5cdFx0Y29uc3Qgc2NoZW1hID0gcGFyc2VTY2hlbWEobWV0YU1vZGVsRGF0YSk7XG5cblx0XHRBbm5vdGF0aW9uQ29udmVydGVyLmxhenkoc2NoZW1hLmFubm90YXRpb25zLCBcIm1ldGFtb2RlbFJlc3VsdFwiLCAoKSA9PiBwYXJzZUFubm90YXRpb25zKG1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zLCBjYXBhYmlsaXRpZXMpKTtcblxuXHRcdHJldHVybiBzY2hlbWE7XG5cdH0pO1xuXG5cdHJldHVybiByZXN1bHQgYXMgUmF3TWV0YWRhdGE7XG59XG5cbmNvbnN0IG1NZXRhTW9kZWxNYXA6IFJlY29yZDxzdHJpbmcsIENvbnZlcnRlZE1ldGFkYXRhPiA9IHt9O1xuXG4vKipcbiAqIENvbnZlcnQgdGhlIE9EYXRhTWV0YU1vZGVsIGludG8gYW5vdGhlciBmb3JtYXQgdGhhdCBhbGxvdyBmb3IgZWFzeSBtYW5pcHVsYXRpb24gb2YgdGhlIGFubm90YXRpb25zLlxuICpcbiAqIEBwYXJhbSBvTWV0YU1vZGVsIFRoZSBPRGF0YU1ldGFNb2RlbFxuICogQHBhcmFtIG9DYXBhYmlsaXRpZXMgVGhlIGN1cnJlbnQgY2FwYWJpbGl0aWVzXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyBvYmplY3QtbGlrZSBhbm5vdGF0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFR5cGVzKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBvQ2FwYWJpbGl0aWVzPzogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpOiBDb252ZXJ0ZWRNZXRhZGF0YSB7XG5cdGNvbnN0IHNNZXRhTW9kZWxJZCA9IChvTWV0YU1vZGVsIGFzIGFueSkuaWQ7XG5cdGlmICghbU1ldGFNb2RlbE1hcC5oYXNPd25Qcm9wZXJ0eShzTWV0YU1vZGVsSWQpKSB7XG5cdFx0Y29uc3QgcGFyc2VkT3V0cHV0ID0gcGFyc2VNZXRhTW9kZWwob01ldGFNb2RlbCwgb0NhcGFiaWxpdGllcyk7XG5cdFx0dHJ5IHtcblx0XHRcdG1NZXRhTW9kZWxNYXBbc01ldGFNb2RlbElkXSA9IEFubm90YXRpb25Db252ZXJ0ZXIuY29udmVydChwYXJzZWRPdXRwdXQpO1xuXHRcdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKG9FcnJvciBhcyBhbnkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbU1ldGFNb2RlbE1hcFtzTWV0YU1vZGVsSWRdIGFzIGFueSBhcyBDb252ZXJ0ZWRNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnZlcnRlZFR5cGVzKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpIGFzIHVua25vd24gYXMgT0RhdGFNZXRhTW9kZWw7XG5cdGlmICghb01ldGFNb2RlbC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNZXRhTW9kZWxcIikpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBhIE9EYXRhTWV0YU1vZGVsXCIpO1xuXHR9XG5cdHJldHVybiBjb252ZXJ0VHlwZXMob01ldGFNb2RlbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVNb2RlbENhY2hlRGF0YShvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCkge1xuXHRkZWxldGUgbU1ldGFNb2RlbE1hcFsob01ldGFNb2RlbCBhcyBhbnkpLmlkXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRNZXRhTW9kZWxDb250ZXh0KG9NZXRhTW9kZWxDb250ZXh0OiBDb250ZXh0LCBiSW5jbHVkZVZpc2l0ZWRPYmplY3RzOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuXHRjb25zdCBvQ29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMob01ldGFNb2RlbENvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdGNvbnN0IHNQYXRoID0gb01ldGFNb2RlbENvbnRleHQuZ2V0UGF0aCgpO1xuXG5cdGNvbnN0IGFQYXRoU3BsaXQgPSBzUGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCBmaXJzdFBhcnQgPSBhUGF0aFNwbGl0WzFdO1xuXHRsZXQgYmVnaW5JbmRleCA9IDI7XG5cdGlmIChvQ29udmVydGVkTWV0YWRhdGEuZW50aXR5Q29udGFpbmVyLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZmlyc3RQYXJ0KSB7XG5cdFx0Zmlyc3RQYXJ0ID0gYVBhdGhTcGxpdFsyXTtcblx0XHRiZWdpbkluZGV4Kys7XG5cdH1cblx0bGV0IHRhcmdldEVudGl0eVNldDogRW50aXR5U2V0IHwgU2luZ2xldG9uID0gb0NvbnZlcnRlZE1ldGFkYXRhLmVudGl0eVNldHMuZmluZChcblx0XHQoZW50aXR5U2V0KSA9PiBlbnRpdHlTZXQubmFtZSA9PT0gZmlyc3RQYXJ0XG5cdCkgYXMgRW50aXR5U2V0O1xuXHRpZiAoIXRhcmdldEVudGl0eVNldCkge1xuXHRcdHRhcmdldEVudGl0eVNldCA9IG9Db252ZXJ0ZWRNZXRhZGF0YS5zaW5nbGV0b25zLmZpbmQoKHNpbmdsZXRvbikgPT4gc2luZ2xldG9uLm5hbWUgPT09IGZpcnN0UGFydCkgYXMgU2luZ2xldG9uO1xuXHR9XG5cdGxldCByZWxhdGl2ZVBhdGggPSBhUGF0aFNwbGl0LnNsaWNlKGJlZ2luSW5kZXgpLmpvaW4oXCIvXCIpO1xuXG5cdGNvbnN0IGxvY2FsT2JqZWN0czogYW55W10gPSBbdGFyZ2V0RW50aXR5U2V0XTtcblx0d2hpbGUgKHJlbGF0aXZlUGF0aCAmJiByZWxhdGl2ZVBhdGgubGVuZ3RoID4gMCAmJiByZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCIpKSB7XG5cdFx0bGV0IHJlbGF0aXZlU3BsaXQgPSByZWxhdGl2ZVBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdGxldCBpZHggPSAwO1xuXHRcdGxldCBjdXJyZW50RW50aXR5U2V0LCBzTmF2UHJvcFRvQ2hlY2s7XG5cblx0XHRyZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVTcGxpdC5zbGljZSgxKTsgLy8gUmVtb3ZpbmcgXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiXG5cdFx0d2hpbGUgKCFjdXJyZW50RW50aXR5U2V0ICYmIHJlbGF0aXZlU3BsaXQubGVuZ3RoID4gaWR4KSB7XG5cdFx0XHRpZiAocmVsYXRpdmVTcGxpdFtpZHhdICE9PSBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCIpIHtcblx0XHRcdFx0Ly8gRmluZGluZyB0aGUgY29ycmVjdCBlbnRpdHlTZXQgZm9yIHRoZSBuYXZpZ2FpdG9uIHByb3BlcnR5IGJpbmRpbmcgZXhhbXBsZTogXCJTZXQvX1NhbGVzT3JkZXJcIlxuXHRcdFx0XHRzTmF2UHJvcFRvQ2hlY2sgPSByZWxhdGl2ZVNwbGl0XG5cdFx0XHRcdFx0LnNsaWNlKDAsIGlkeCArIDEpXG5cdFx0XHRcdFx0LmpvaW4oXCIvXCIpXG5cdFx0XHRcdFx0LnJlcGxhY2UoXCIvJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIiwgXCJcIik7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSB0YXJnZXRFbnRpdHlTZXQgJiYgdGFyZ2V0RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbc05hdlByb3BUb0NoZWNrXTtcblx0XHRcdH1cblx0XHRcdGlkeCsrO1xuXHRcdH1cblx0XHRpZiAoIWN1cnJlbnRFbnRpdHlTZXQpIHtcblx0XHRcdC8vIEZhbGwgYmFjayB0byBTaW5nbGUgbmF2IHByb3AgaWYgZW50aXR5U2V0IGlzIG5vdCBmb3VuZC5cblx0XHRcdHNOYXZQcm9wVG9DaGVjayA9IHJlbGF0aXZlU3BsaXRbMF07XG5cdFx0fVxuXHRcdGNvbnN0IGFOYXZQcm9wcyA9IHNOYXZQcm9wVG9DaGVjaz8uc3BsaXQoXCIvXCIpIHx8IFtdO1xuXHRcdGxldCB0YXJnZXRFbnRpdHlUeXBlID0gdGFyZ2V0RW50aXR5U2V0ICYmIHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlO1xuXHRcdGZvciAoY29uc3Qgc05hdlByb3Agb2YgYU5hdlByb3BzKSB7XG5cdFx0XHQvLyBQdXNoaW5nIGFsbCBuYXYgcHJvcHMgdG8gdGhlIHZpc2l0ZWQgb2JqZWN0cy4gZXhhbXBsZTogXCJTZXRcIiwgXCJfU2FsZXNPcmRlclwiIGZvciBcIlNldC9fU2FsZXNPcmRlclwiKGluIE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpXG5cdFx0XHRjb25zdCB0YXJnZXROYXZQcm9wID0gdGFyZ2V0RW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKG5hdlByb3ApID0+IG5hdlByb3AubmFtZSA9PT0gc05hdlByb3ApO1xuXHRcdFx0aWYgKHRhcmdldE5hdlByb3ApIHtcblx0XHRcdFx0bG9jYWxPYmplY3RzLnB1c2godGFyZ2V0TmF2UHJvcCk7XG5cdFx0XHRcdHRhcmdldEVudGl0eVR5cGUgPSB0YXJnZXROYXZQcm9wLnRhcmdldFR5cGU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0dGFyZ2V0RW50aXR5U2V0ID1cblx0XHRcdCh0YXJnZXRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldCkgfHwgKHRhcmdldEVudGl0eVNldCAmJiB0YXJnZXRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tyZWxhdGl2ZVNwbGl0WzBdXSk7XG5cdFx0aWYgKHRhcmdldEVudGl0eVNldCkge1xuXHRcdFx0Ly8gUHVzaGluZyB0aGUgdGFyZ2V0IGVudGl0eVNldCB0byB2aXNpdGVkIG9iamVjdHNcblx0XHRcdGxvY2FsT2JqZWN0cy5wdXNoKHRhcmdldEVudGl0eVNldCk7XG5cdFx0fVxuXHRcdC8vIFJlLWNhbGN1bGF0aW5nIHRoZSByZWxhdGl2ZSBwYXRoXG5cdFx0Ly8gQXMgZWFjaCBuYXZpZ2F0aW9uIG5hbWUgaXMgZW5jbG9zZWQgYmV0d2VlbiAnJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcnIGFuZCAnJCcgKHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBlbnRpdHlzZXQgZWFzaWx5IGluIHRoZSBtZXRhbW9kZWwpXG5cdFx0Ly8gd2UgbmVlZCB0byByZW1vdmUgdGhlIGNsb3NpbmcgJyQnIHRvIGJlIGFibGUgdG8gc3dpdGNoIHRvIHRoZSBuZXh0IG5hdmlnYXRpb25cblx0XHRyZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVTcGxpdC5zbGljZShhTmF2UHJvcHMubGVuZ3RoIHx8IDEpO1xuXHRcdGlmIChyZWxhdGl2ZVNwbGl0Lmxlbmd0aCAmJiByZWxhdGl2ZVNwbGl0WzBdID09PSBcIiRcIikge1xuXHRcdFx0cmVsYXRpdmVTcGxpdC5zaGlmdCgpO1xuXHRcdH1cblx0XHRyZWxhdGl2ZVBhdGggPSByZWxhdGl2ZVNwbGl0LmpvaW4oXCIvXCIpO1xuXHR9XG5cdGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIiRUeXBlXCIpKSB7XG5cdFx0Ly8gQXMgJFR5cGVAIGlzIGFsbG93ZWQgYXMgd2VsbFxuXHRcdGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIiRUeXBlQFwiKSkge1xuXHRcdFx0cmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoLnJlcGxhY2UoXCIkVHlwZVwiLCBcIlwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gV2UncmUgYW55d2F5IGdvaW5nIHRvIGxvb2sgb24gdGhlIGVudGl0eVR5cGUuLi5cblx0XHRcdHJlbGF0aXZlUGF0aCA9IGFQYXRoU3BsaXQuc2xpY2UoMykuam9pbihcIi9cIik7XG5cdFx0fVxuXHR9XG5cdGlmICh0YXJnZXRFbnRpdHlTZXQgJiYgcmVsYXRpdmVQYXRoLmxlbmd0aCkge1xuXHRcdGNvbnN0IG9UYXJnZXQgPSB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZS5yZXNvbHZlUGF0aChyZWxhdGl2ZVBhdGgsIGJJbmNsdWRlVmlzaXRlZE9iamVjdHMpO1xuXHRcdGlmIChvVGFyZ2V0KSB7XG5cdFx0XHRpZiAoYkluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuXHRcdFx0XHRvVGFyZ2V0LnZpc2l0ZWRPYmplY3RzID0gbG9jYWxPYmplY3RzLmNvbmNhdChvVGFyZ2V0LnZpc2l0ZWRPYmplY3RzKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlICYmIHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlLmFjdGlvbnMpIHtcblx0XHRcdC8vIGlmIHRhcmdldCBpcyBhbiBhY3Rpb24gb3IgYW4gYWN0aW9uIHBhcmFtZXRlclxuXHRcdFx0Y29uc3QgYWN0aW9ucyA9IHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlICYmIHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlLmFjdGlvbnM7XG5cdFx0XHRjb25zdCByZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdGlmIChhY3Rpb25zW3JlbGF0aXZlU3BsaXRbMF1dKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvbiA9IGFjdGlvbnNbcmVsYXRpdmVTcGxpdFswXV07XG5cdFx0XHRcdGlmIChyZWxhdGl2ZVNwbGl0WzFdICYmIGFjdGlvbi5wYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFyYW1ldGVyTmFtZSA9IHJlbGF0aXZlU3BsaXRbMV07XG5cdFx0XHRcdFx0cmV0dXJuIGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQoKHBhcmFtZXRlcikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtZXRlci5mdWxseVF1YWxpZmllZE5hbWUuZW5kc1dpdGgoYC8ke3BhcmFtZXRlck5hbWV9YCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAocmVsYXRpdmVQYXRoLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdHJldHVybiBhY3Rpb247XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9UYXJnZXQ7XG5cdH0gZWxzZSB7XG5cdFx0aWYgKGJJbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRhcmdldDogdGFyZ2V0RW50aXR5U2V0LFxuXHRcdFx0XHR2aXNpdGVkT2JqZWN0czogbG9jYWxPYmplY3RzXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGFyZ2V0RW50aXR5U2V0O1xuXHR9XG59XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkVGFyZ2V0ID0ge1xuXHR0YXJnZXQ/OiBTZXJ2aWNlT2JqZWN0O1xuXHR2aXNpdGVkT2JqZWN0czogU2VydmljZU9iamVjdEFuZEFubm90YXRpb25bXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob01ldGFNb2RlbENvbnRleHQ6IENvbnRleHQsIG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0PzogQ29udGV4dCk6IERhdGFNb2RlbE9iamVjdFBhdGgge1xuXHRjb25zdCBvQ29udmVydGVkTWV0YWRhdGEgPSBjb252ZXJ0VHlwZXMob01ldGFNb2RlbENvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdGNvbnN0IG1ldGFNb2RlbENvbnRleHQgPSBjb252ZXJ0TWV0YU1vZGVsQ29udGV4dChvTWV0YU1vZGVsQ29udGV4dCwgdHJ1ZSk7XG5cdGxldCB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbjtcblx0aWYgKG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0ICYmIG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0LmdldFBhdGgoKSAhPT0gXCIvXCIpIHtcblx0XHR0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCk7XG5cdH1cblx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGgobWV0YU1vZGVsQ29udGV4dCwgb0NvbnZlcnRlZE1ldGFkYXRhLCB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdEZyb21QYXRoKFxuXHRtZXRhTW9kZWxDb250ZXh0OiBSZXNvbHZlZFRhcmdldCxcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLFxuXHR0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbj86IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdG9ubHlTZXJ2aWNlT2JqZWN0czogYm9vbGVhbiA9IGZhbHNlXG4pOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0cyA9IG1ldGFNb2RlbENvbnRleHQudmlzaXRlZE9iamVjdHMuZmlsdGVyKFxuXHRcdCh2aXNpdGVkT2JqZWN0KSA9PiBpc1NlcnZpY2VPYmplY3QodmlzaXRlZE9iamVjdCkgJiYgIWlzRW50aXR5VHlwZSh2aXNpdGVkT2JqZWN0KSAmJiAhaXNFbnRpdHlDb250YWluZXIodmlzaXRlZE9iamVjdClcblx0KTtcblx0aWYgKFxuXHRcdGlzU2VydmljZU9iamVjdChtZXRhTW9kZWxDb250ZXh0LnRhcmdldCkgJiZcblx0XHQhaXNFbnRpdHlUeXBlKG1ldGFNb2RlbENvbnRleHQudGFyZ2V0KSAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdHNbZGF0YU1vZGVsT2JqZWN0cy5sZW5ndGggLSAxXSAhPT0gbWV0YU1vZGVsQ29udGV4dC50YXJnZXQgJiZcblx0XHQhb25seVNlcnZpY2VPYmplY3RzXG5cdCkge1xuXHRcdGRhdGFNb2RlbE9iamVjdHMucHVzaChtZXRhTW9kZWxDb250ZXh0LnRhcmdldCk7XG5cdH1cblxuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydGllczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0Y29uc3Qgcm9vdEVudGl0eVNldDogRW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0c1swXSBhcyBFbnRpdHlTZXQ7XG5cblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IFNpbmdsZXRvbiB8IHVuZGVmaW5lZCA9IHJvb3RFbnRpdHlTZXQ7XG5cdGxldCBjdXJyZW50RW50aXR5VHlwZTogRW50aXR5VHlwZSA9IHJvb3RFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0bGV0IGN1cnJlbnRPYmplY3Q6IFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uIHwgdW5kZWZpbmVkO1xuXHRsZXQgbmF2aWdhdGVkUGF0aCA9IFtdO1xuXG5cdGZvciAobGV0IGkgPSAxOyBpIDwgZGF0YU1vZGVsT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuXHRcdGN1cnJlbnRPYmplY3QgPSBkYXRhTW9kZWxPYmplY3RzW2ldO1xuXG5cdFx0aWYgKGlzTmF2aWdhdGlvblByb3BlcnR5KGN1cnJlbnRPYmplY3QpKSB7XG5cdFx0XHRuYXZpZ2F0ZWRQYXRoLnB1c2goY3VycmVudE9iamVjdC5uYW1lKTtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2goY3VycmVudE9iamVjdCk7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IGN1cnJlbnRPYmplY3QudGFyZ2V0VHlwZTtcblx0XHRcdGNvbnN0IGJvdW5kRW50aXR5U2V0OiBFbnRpdHlTZXQgfCBTaW5nbGV0b24gfCB1bmRlZmluZWQgPSBjdXJyZW50RW50aXR5U2V0Py5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW25hdmlnYXRlZFBhdGguam9pbihcIi9cIildO1xuXHRcdFx0aWYgKGJvdW5kRW50aXR5U2V0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGJvdW5kRW50aXR5U2V0O1xuXHRcdFx0XHRuYXZpZ2F0ZWRQYXRoID0gW107XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpc0VudGl0eVNldChjdXJyZW50T2JqZWN0KSB8fCBpc1NpbmdsZXRvbihjdXJyZW50T2JqZWN0KSkge1xuXHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRPYmplY3Q7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IGN1cnJlbnRFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHR9XG5cdH1cblxuXHRpZiAobmF2aWdhdGVkUGF0aC5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gUGF0aCB3aXRob3V0IE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgLS0+IG5vIHRhcmdldCBlbnRpdHkgc2V0XG5cdFx0Y3VycmVudEVudGl0eVNldCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICh0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiAmJiB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbi5zdGFydGluZ0VudGl0eVNldCAhPT0gcm9vdEVudGl0eVNldCkge1xuXHRcdC8vIEluIGNhc2UgdGhlIGVudGl0eXNldCBpcyBub3Qgc3RhcnRpbmcgZnJvbSB0aGUgc2FtZSBsb2NhdGlvbiBpdCBtYXkgbWVhbiB0aGF0IHdlIGFyZSBkb2luZyB0b28gbXVjaCB3b3JrIGVhcmxpZXIgZm9yIHNvbWUgcmVhc29uXG5cdFx0Ly8gQXMgc3VjaCB3ZSBuZWVkIHRvIHJlZGVmaW5lIHRoZSBjb250ZXh0IHNvdXJjZSBmb3IgdGhlIHRhcmdldEVudGl0eVNldExvY2F0aW9uXG5cdFx0Y29uc3Qgc3RhcnRpbmdJbmRleCA9IGRhdGFNb2RlbE9iamVjdHMuaW5kZXhPZih0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbi5zdGFydGluZ0VudGl0eVNldCk7XG5cdFx0aWYgKHN0YXJ0aW5nSW5kZXggIT09IC0xKSB7XG5cdFx0XHQvLyBJZiBpdCdzIG5vdCBmb3VuZCBJIGRvbid0IGtub3cgd2hhdCB3ZSBjYW4gZG8gKHByb2JhYmx5IG5vdGhpbmcpXG5cdFx0XHRjb25zdCByZXF1aXJlZERhdGFNb2RlbE9iamVjdHMgPSBkYXRhTW9kZWxPYmplY3RzLnNsaWNlKDAsIHN0YXJ0aW5nSW5kZXgpO1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24uc3RhcnRpbmdFbnRpdHlTZXQgPSByb290RW50aXR5U2V0O1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgPSByZXF1aXJlZERhdGFNb2RlbE9iamVjdHNcblx0XHRcdFx0LmZpbHRlcihpc05hdmlnYXRpb25Qcm9wZXJ0eSlcblx0XHRcdFx0LmNvbmNhdCh0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcyBhcyBOYXZpZ2F0aW9uUHJvcGVydHlbXSk7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IG91dERhdGFNb2RlbFBhdGggPSB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IHJvb3RFbnRpdHlTZXQsXG5cdFx0dGFyZ2V0RW50aXR5U2V0OiBjdXJyZW50RW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVR5cGU6IGN1cnJlbnRFbnRpdHlUeXBlLFxuXHRcdHRhcmdldE9iamVjdDogbWV0YU1vZGVsQ29udGV4dC50YXJnZXQsXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXMsXG5cdFx0Y29udGV4dExvY2F0aW9uOiB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbixcblx0XHRjb252ZXJ0ZWRUeXBlczogY29udmVydGVkVHlwZXNcblx0fTtcblx0aWYgKCFpc1NlcnZpY2VPYmplY3Qob3V0RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QpICYmIG9ubHlTZXJ2aWNlT2JqZWN0cykge1xuXHRcdG91dERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0ID0gaXNTZXJ2aWNlT2JqZWN0KGN1cnJlbnRPYmplY3QpID8gY3VycmVudE9iamVjdCA6IHVuZGVmaW5lZDtcblx0fVxuXHRpZiAoIW91dERhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uKSB7XG5cdFx0b3V0RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24gPSBvdXREYXRhTW9kZWxQYXRoO1xuXHR9XG5cdHJldHVybiBvdXREYXRhTW9kZWxQYXRoO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7RUEwQ0EsTUFBTUEsZ0JBQXFCLEdBQUc7SUFDN0IsMkJBQTJCLEVBQUUsY0FBYztJQUMzQyxtQkFBbUIsRUFBRSxNQUFNO0lBQzNCLHVCQUF1QixFQUFFLFVBQVU7SUFDbkMsZ0NBQWdDLEVBQUUsUUFBUTtJQUMxQyw0QkFBNEIsRUFBRSxJQUFJO0lBQ2xDLGlDQUFpQyxFQUFFLFNBQVM7SUFDNUMsbUNBQW1DLEVBQUUsV0FBVztJQUNoRCxzQ0FBc0MsRUFBRSxjQUFjO0lBQ3RELHVDQUF1QyxFQUFFO0VBQzFDLENBQUM7RUFX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
|
|
1194
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWT0NBQlVMQVJZX0FMSUFTIiwiRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiQ2hhcnQiLCJNaWNyb0NoYXJ0IiwiVVNoZWxsIiwiSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiQXBwU3RhdGUiLCJJbnNpZ2h0c1N1cHBvcnRlZCIsInBhcnNlUHJvcGVydHlWYWx1ZSIsImFubm90YXRpb25PYmplY3QiLCJwcm9wZXJ0eUtleSIsImN1cnJlbnRUYXJnZXQiLCJhbm5vdGF0aW9uc0xpc3RzIiwib0NhcGFiaWxpdGllcyIsInZhbHVlIiwiY3VycmVudFByb3BlcnR5VGFyZ2V0IiwidHlwZU9mQW5ub3RhdGlvbiIsInR5cGUiLCJOdWxsIiwiU3RyaW5nIiwiQm9vbCIsIkludCIsIkFycmF5IiwiaXNBcnJheSIsIkNvbGxlY3Rpb24iLCJtYXAiLCJzdWJBbm5vdGF0aW9uT2JqZWN0Iiwic3ViQW5ub3RhdGlvbk9iamVjdEluZGV4IiwicGFyc2VBbm5vdGF0aW9uT2JqZWN0IiwibGVuZ3RoIiwiaGFzT3duUHJvcGVydHkiLCIkUGF0aCIsInVuZGVmaW5lZCIsIlBhdGgiLCIkRGVjaW1hbCIsIkRlY2ltYWwiLCJwYXJzZUZsb2F0IiwiJFByb3BlcnR5UGF0aCIsIlByb3BlcnR5UGF0aCIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsIiRJZiIsIklmIiwiJEFuZCIsIkFuZCIsIiRPciIsIk9yIiwiJE5vdCIsIk5vdCIsIiRFcSIsIkVxIiwiJE5lIiwiTmUiLCIkR3QiLCJHdCIsIiRHZSIsIkdlIiwiJEx0IiwiTHQiLCIkTGUiLCJMZSIsIiRBcHBseSIsIkFwcGx5IiwiRnVuY3Rpb24iLCIkRnVuY3Rpb24iLCIkQW5ub3RhdGlvblBhdGgiLCJBbm5vdGF0aW9uUGF0aCIsIiRFbnVtTWVtYmVyIiwiRW51bU1lbWJlciIsIm1hcE5hbWVUb0FsaWFzIiwic3BsaXQiLCJSZWNvcmQiLCJuYW1lIiwiYW5ub3RhdGlvbk5hbWUiLCJwYXRoUGFydCIsImFubm9QYXJ0IiwibGFzdERvdCIsImxhc3RJbmRleE9mIiwic3Vic3RyIiwiY3VycmVudE9iamVjdFRhcmdldCIsInBhcnNlZEFubm90YXRpb25PYmplY3QiLCJ0eXBlT2ZPYmplY3QiLCJwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbiIsImNvbGxlY3Rpb24iLCJzdWJBbm5vdGF0aW9uSW5kZXgiLCIkVHlwZSIsInR5cGVWYWx1ZSIsInByb3BlcnR5VmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzdGFydHNXaXRoIiwicHVzaCIsImNyZWF0ZUFubm90YXRpb25MaXN0cyIsImdldE9yQ3JlYXRlQW5ub3RhdGlvbkxpc3QiLCJ0YXJnZXQiLCJhbm5vdGF0aW9ucyIsImNyZWF0ZVJlZmVyZW5jZUZhY2V0SWQiLCJyZWZlcmVuY2VGYWNldCIsImlkIiwiSUQiLCJUYXJnZXQiLCJwcmVwYXJlSWQiLCJyZW1vdmVDaGFydEFubm90YXRpb25zIiwiZmlsdGVyIiwib1JlY29yZCIsImluZGV4T2YiLCJyZW1vdmVJQk5Bbm5vdGF0aW9ucyIsImhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQiLCJhbm5vdGF0aW9uT2JqZWN0cyIsImFubm90YXRpb25UYXJnZXQiLCJhbm5vdGF0aW9uTGlzdHMiLCJvdXRBbm5vdGF0aW9uT2JqZWN0IiwiYW5ub3RhdGlvbk9iamVjdEtleSIsImFubm90YXRpb25LZXkiLCJEYXRhIiwiVmlzdWFsaXphdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwic29tZSIsIkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbiIsIlByb3BlcnR5IiwiaW5jbHVkZXMiLCJBbGxvd2VkRXhwcmVzc2lvbnMiLCJjdXJyZW50T3V0QW5ub3RhdGlvbk9iamVjdCIsImFubm90YXRpb25PZkFubm90YXRpb25TcGxpdCIsImFubm90YXRpb25RdWFsaWZpZXJTcGxpdCIsInF1YWxpZmllciIsInRlcm0iLCJjdXJyZW50QW5ub3RhdGlvblRhcmdldCIsImlzQ29sbGVjdGlvbiIsInR5cGVvZkFubm90YXRpb24iLCJyZWNvcmQiLCJwcmVwYXJlUHJvcGVydHkiLCJwcm9wZXJ0eURlZmluaXRpb24iLCJlbnRpdHlUeXBlT2JqZWN0IiwicHJvcGVydHlOYW1lIiwiX3R5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwicHJlY2lzaW9uIiwiJFByZWNpc2lvbiIsInNjYWxlIiwiJFNjYWxlIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5IiwibmF2UHJvcGVydHlEZWZpbml0aW9uIiwibmF2UHJvcGVydHlOYW1lIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwiJFJlZmVyZW50aWFsQ29uc3RyYWludCIsInNvdXJjZVByb3BlcnR5TmFtZSIsInNvdXJjZVR5cGVOYW1lIiwic291cmNlUHJvcGVydHkiLCJ0YXJnZXRUeXBlTmFtZSIsInRhcmdldFByb3BlcnR5IiwibmF2aWdhdGlvblByb3BlcnR5IiwicGFydG5lciIsIiRQYXJ0bmVyIiwiJGlzQ29sbGVjdGlvbiIsImNvbnRhaW5zVGFyZ2V0IiwiJENvbnRhaW5zVGFyZ2V0IiwicHJlcGFyZUVudGl0eVNldCIsImVudGl0eVNldERlZmluaXRpb24iLCJlbnRpdHlTZXROYW1lIiwiZW50aXR5Q29udGFpbmVyTmFtZSIsImVudGl0eVNldE9iamVjdCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJlbnRpdHlUeXBlTmFtZSIsInByZXBhcmVTaW5nbGV0b24iLCJzaW5nbGV0b25EZWZpbml0aW9uIiwic2luZ2xldG9uTmFtZSIsInByZXBhcmVBY3Rpb25JbXBvcnQiLCJhY3Rpb25JbXBvcnQiLCJhY3Rpb25JbXBvcnROYW1lIiwiYWN0aW9uTmFtZSIsIiRBY3Rpb24iLCJwcmVwYXJlVHlwZURlZmluaXRpb24iLCJ0eXBlRGVmaW5pdGlvbiIsInR5cGVOYW1lIiwibmFtZXNwYWNlUHJlZml4IiwidHlwZU9iamVjdCIsInN1YnN0cmluZyIsInVuZGVybHlpbmdUeXBlIiwiJFVuZGVybHlpbmdUeXBlIiwicHJlcGFyZUNvbXBsZXhUeXBlIiwiY29tcGxleFR5cGVEZWZpbml0aW9uIiwiY29tcGxleFR5cGVOYW1lIiwiY29tcGxleFR5cGVPYmplY3QiLCJwcm9wZXJ0aWVzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJjb21wbGV4VHlwZVByb3BlcnRpZXMiLCJwcm9wZXJ0eU5hbWVPck5vdCIsIiRraW5kIiwic29ydCIsImEiLCJiIiwiY29tcGxleFR5cGVOYXZpZ2F0aW9uUHJvcGVydGllcyIsInByZXBhcmVFbnRpdHlLZXlzIiwiZW50aXR5VHlwZURlZmluaXRpb24iLCJvTWV0YU1vZGVsRGF0YSIsIiRLZXkiLCIkQmFzZVR5cGUiLCJwcmVwYXJlRW50aXR5VHlwZSIsIm1ldGFNb2RlbERhdGEiLCJlbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsImFjdGlvbnMiLCJrZXkiLCJwcm9wZXJ0eSIsImVudGl0eUtleSIsImZpbmQiLCIkQW5ub3RhdGlvbnMiLCJmaWx0ZXJGYWNldEFubm90YXRpb24iLCJlbnRpdHlQcm9wZXJ0eSIsIlZhbHVlIiwicHJlcGFyZUFjdGlvbiIsImFjdGlvblJhd0RhdGEiLCJhY3Rpb25FbnRpdHlUeXBlIiwiYWN0aW9uRlFOIiwiJElzQm91bmQiLCJiaW5kaW5nUGFyYW1ldGVyIiwiJFBhcmFtZXRlciIsInBhcmFtZXRlcnMiLCJpc0JvdW5kIiwiaXNGdW5jdGlvbiIsInNvdXJjZVR5cGUiLCJyZXR1cm5UeXBlIiwiJFJldHVyblR5cGUiLCJwYXJhbSIsIiROYW1lIiwicGFyc2VFbnRpdHlDb250YWluZXIiLCJlbnRpdHlDb250YWluZXJNZXRhZGF0YSIsInNjaGVtYSIsImVudGl0eUNvbnRhaW5lciIsImVsZW1lbnROYW1lIiwiZWxlbWVudFZhbHVlIiwiZW50aXR5U2V0cyIsInNpbmdsZXRvbnMiLCJhY3Rpb25JbXBvcnRzIiwiZW50aXR5U2V0IiwibmF2UHJvcGVydHlCaW5kaW5ncyIsIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwibmF2UHJvcE5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJwYXJzZUFubm90YXRpb25zIiwiY2FwYWJpbGl0aWVzIiwidmFsdWVzIiwicGFyc2VTY2hlbWEiLCJuYW1lc3BhY2UiLCJzbGljZSIsImVudGl0eVR5cGVzIiwiY29tcGxleFR5cGVzIiwidHlwZURlZmluaXRpb25zIiwiYXNzb2NpYXRpb25zIiwiYXNzb2NpYXRpb25TZXRzIiwicGFyc2VNZXRhTW9kZWxFbGVtZW50Iiwic3ViRWxlbWVudFZhbHVlIiwicGFyc2VNZXRhTW9kZWwiLCJtZXRhTW9kZWwiLCJyZXN1bHQiLCJpZGVudGlmaWNhdGlvbiIsInZlcnNpb24iLCJyZWZlcmVuY2VzIiwiQW5ub3RhdGlvbkNvbnZlcnRlciIsImxhenkiLCJnZXRPYmplY3QiLCJtTWV0YU1vZGVsTWFwIiwiY29udmVydFR5cGVzIiwib01ldGFNb2RlbCIsInNNZXRhTW9kZWxJZCIsInBhcnNlZE91dHB1dCIsImNvbnZlcnQiLCJvRXJyb3IiLCJFcnJvciIsImdldENvbnZlcnRlZFR5cGVzIiwib0NvbnRleHQiLCJnZXRNb2RlbCIsImlzQSIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJvTWV0YU1vZGVsQ29udGV4dCIsImJJbmNsdWRlVmlzaXRlZE9iamVjdHMiLCJvQ29udmVydGVkTWV0YWRhdGEiLCJzUGF0aCIsImdldFBhdGgiLCJhUGF0aFNwbGl0IiwiZmlyc3RQYXJ0IiwiYmVnaW5JbmRleCIsInNpbmdsZXRvbiIsInJlbGF0aXZlUGF0aCIsImpvaW4iLCJsb2NhbE9iamVjdHMiLCJyZWxhdGl2ZVNwbGl0IiwiaWR4IiwiY3VycmVudEVudGl0eVNldCIsInNOYXZQcm9wVG9DaGVjayIsInJlcGxhY2UiLCJhTmF2UHJvcHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwic05hdlByb3AiLCJ0YXJnZXROYXZQcm9wIiwibmF2UHJvcCIsInRhcmdldFR5cGUiLCJzaGlmdCIsIm9UYXJnZXQiLCJyZXNvbHZlUGF0aCIsInZpc2l0ZWRPYmplY3RzIiwiY29uY2F0IiwiYWN0aW9uIiwicGFyYW1ldGVyTmFtZSIsInBhcmFtZXRlciIsImVuZHNXaXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwib0VudGl0eVNldE1ldGFNb2RlbENvbnRleHQiLCJtZXRhTW9kZWxDb250ZXh0IiwidGFyZ2V0RW50aXR5U2V0TG9jYXRpb24iLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdEZyb21QYXRoIiwiY29udmVydGVkVHlwZXMiLCJvbmx5U2VydmljZU9iamVjdHMiLCJkYXRhTW9kZWxPYmplY3RzIiwidmlzaXRlZE9iamVjdCIsImlzU2VydmljZU9iamVjdCIsImlzRW50aXR5VHlwZSIsImlzRW50aXR5Q29udGFpbmVyIiwicm9vdEVudGl0eVNldCIsImN1cnJlbnRFbnRpdHlUeXBlIiwiY3VycmVudE9iamVjdCIsIm5hdmlnYXRlZFBhdGgiLCJpIiwiaXNOYXZpZ2F0aW9uUHJvcGVydHkiLCJib3VuZEVudGl0eVNldCIsImlzRW50aXR5U2V0IiwiaXNTaW5nbGV0b24iLCJzdGFydGluZ0VudGl0eVNldCIsInN0YXJ0aW5nSW5kZXgiLCJyZXF1aXJlZERhdGFNb2RlbE9iamVjdHMiLCJvdXREYXRhTW9kZWxQYXRoIiwidGFyZ2V0T2JqZWN0IiwiY29udGV4dExvY2F0aW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNZXRhTW9kZWxDb252ZXJ0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIHJldHJpZXZlZCBmcm9tIEBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXIsIHNoYXJlZCBjb2RlIHdpdGggdG9vbCBzdWl0ZVxuXG5pbXBvcnQgdHlwZSB7XG5cdEFubm90YXRpb24sXG5cdEFubm90YXRpb25MaXN0LFxuXHRBbm5vdGF0aW9uUmVjb3JkLFxuXHRDb252ZXJ0ZWRNZXRhZGF0YSxcblx0RW50aXR5U2V0LFxuXHRFbnRpdHlUeXBlLFxuXHRFeHByZXNzaW9uLFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFJhd0FjdGlvbixcblx0UmF3QWN0aW9uSW1wb3J0LFxuXHRSYXdDb21wbGV4VHlwZSxcblx0UmF3RW50aXR5U2V0LFxuXHRSYXdFbnRpdHlUeXBlLFxuXHRSYXdNZXRhZGF0YSxcblx0UmF3UHJvcGVydHksXG5cdFJhd1NjaGVtYSxcblx0UmF3U2luZ2xldG9uLFxuXHRSYXdUeXBlRGVmaW5pdGlvbixcblx0UmF3VjROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFJlZmVyZW50aWFsQ29uc3RyYWludCxcblx0U2VydmljZU9iamVjdCxcblx0U2luZ2xldG9uXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgU2VydmljZU9iamVjdEFuZEFubm90YXRpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IEFubm90YXRpb25Db252ZXJ0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb21tb25cIjtcbmltcG9ydCB7XG5cdGlzRW50aXR5Q29udGFpbmVyLFxuXHRpc0VudGl0eVNldCxcblx0aXNFbnRpdHlUeXBlLFxuXHRpc05hdmlnYXRpb25Qcm9wZXJ0eSxcblx0aXNTZXJ2aWNlT2JqZWN0LFxuXHRpc1NpbmdsZXRvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHsgcHJlcGFyZUlkIH0gZnJvbSBcIi4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcblxuY29uc3QgVk9DQUJVTEFSWV9BTElBUzogYW55ID0ge1xuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjFcIjogXCJDYXBhYmlsaXRpZXNcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMVwiOiBcIkNvcmVcIixcblx0XCJPcmcuT0RhdGEuTWVhc3VyZXMuVjFcIjogXCJNZWFzdXJlc1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MVwiOiBcIkNvbW1vblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxXCI6IFwiVUlcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxXCI6IFwiU2Vzc2lvblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MVwiOiBcIkFuYWx5dGljc1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MVwiOiBcIlBlcnNvbmFsRGF0YVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjFcIjogXCJDb21tdW5pY2F0aW9uXCJcbn07XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0ge1xuXHRDaGFydDogYm9vbGVhbjtcblx0TWljcm9DaGFydDogYm9vbGVhbjtcblx0VVNoZWxsOiBib29sZWFuO1xuXHRJbnRlbnRCYXNlZE5hdmlnYXRpb246IGJvb2xlYW47XG5cdEFwcFN0YXRlOiBib29sZWFuO1xuXHRJbnNpZ2h0c1N1cHBvcnRlZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSB7XG5cdENoYXJ0OiB0cnVlLFxuXHRNaWNyb0NoYXJ0OiB0cnVlLFxuXHRVU2hlbGw6IHRydWUsXG5cdEludGVudEJhc2VkTmF2aWdhdGlvbjogdHJ1ZSxcblx0QXBwU3RhdGU6IHRydWUsXG5cdEluc2lnaHRzU3VwcG9ydGVkOiBmYWxzZVxufTtcblxuZXhwb3J0IHR5cGUgTWV0YU1vZGVsQWN0aW9uID0ge1xuXHQka2luZDogXCJBY3Rpb25cIiB8IFwiRnVuY3Rpb25cIjtcblx0JElzQm91bmQ6IGJvb2xlYW47XG5cdCRFbnRpdHlTZXRQYXRoOiBzdHJpbmc7XG5cdCRQYXJhbWV0ZXI6IHtcblx0XHQkVHlwZTogc3RyaW5nO1xuXHRcdCROYW1lOiBzdHJpbmc7XG5cdFx0JE51bGxhYmxlPzogYm9vbGVhbjtcblx0XHQkTWF4TGVuZ3RoPzogbnVtYmVyO1xuXHRcdCRQcmVjaXNpb24/OiBudW1iZXI7XG5cdFx0JFNjYWxlPzogbnVtYmVyO1xuXHRcdCRpc0NvbGxlY3Rpb24/OiBib29sZWFuO1xuXHR9W107XG5cdCRSZXR1cm5UeXBlOiB7XG5cdFx0JFR5cGU6IHN0cmluZztcblx0fTtcbn07XG5cbmZ1bmN0aW9uIHBhcnNlUHJvcGVydHlWYWx1ZShcblx0YW5ub3RhdGlvbk9iamVjdDogYW55LFxuXHRwcm9wZXJ0eUtleTogc3RyaW5nLFxuXHRjdXJyZW50VGFyZ2V0OiBzdHJpbmcsXG5cdGFubm90YXRpb25zTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbik6IGFueSB7XG5cdGxldCB2YWx1ZTtcblx0Y29uc3QgY3VycmVudFByb3BlcnR5VGFyZ2V0OiBzdHJpbmcgPSBgJHtjdXJyZW50VGFyZ2V0fS8ke3Byb3BlcnR5S2V5fWA7XG5cdGNvbnN0IHR5cGVPZkFubm90YXRpb24gPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0aWYgKGFubm90YXRpb25PYmplY3QgPT09IG51bGwpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOdWxsXCIsIE51bGw6IG51bGwgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZBbm5vdGF0aW9uID09PSBcInN0cmluZ1wiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZkFubm90YXRpb24gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAodHlwZU9mQW5ub3RhdGlvbiA9PT0gXCJudW1iZXJcIikge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb25PYmplY3QpKSB7XG5cdFx0dmFsdWUgPSB7XG5cdFx0XHR0eXBlOiBcIkNvbGxlY3Rpb25cIixcblx0XHRcdENvbGxlY3Rpb246IGFubm90YXRpb25PYmplY3QubWFwKChzdWJBbm5vdGF0aW9uT2JqZWN0LCBzdWJBbm5vdGF0aW9uT2JqZWN0SW5kZXgpID0+XG5cdFx0XHRcdHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0XHRcdFx0XHRzdWJBbm5vdGF0aW9uT2JqZWN0LFxuXHRcdFx0XHRcdGAke2N1cnJlbnRQcm9wZXJ0eVRhcmdldH0vJHtzdWJBbm5vdGF0aW9uT2JqZWN0SW5kZXh9YCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uc0xpc3RzLFxuXHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdH07XG5cdFx0aWYgKGFubm90YXRpb25PYmplY3QubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUHJvcGVydHlQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFubm90YXRpb25QYXRoXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQW5ub3RhdGlvblBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRUeXBlXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkSWZcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJJZlwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE9yXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiT3JcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbmRcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBbmRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRFcVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkVxXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmVcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5vdFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5vdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEd0XCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiR3RcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkdlXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTHRcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJMdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJExlXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTGVcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBcHBseVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFwcGx5XCI7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0WzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdC8vICRUeXBlIGlzIG9wdGlvbmFsLi4uXG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlN0cmluZ1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJQYXRoXCIsIFBhdGg6IGFubm90YXRpb25PYmplY3QuJFBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJEZWNpbWFsXCIsIERlY2ltYWw6IHBhcnNlRmxvYXQoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCkgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRQcm9wZXJ0eVBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIlByb3BlcnR5UGF0aFwiLCBQcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJFByb3BlcnR5UGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0ge1xuXHRcdFx0dHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsXG5cdFx0XHROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXG5cdFx0fTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRJZiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5kICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRPciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiT3JcIiwgT3I6IGFubm90YXRpb25PYmplY3QuJE9yIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTm90ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFcSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIk5lXCIsIE5lOiBhbm5vdGF0aW9uT2JqZWN0LiROZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEd0ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkx0XCIsIEx0OiBhbm5vdGF0aW9uT2JqZWN0LiRMdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJExlICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIiwgQW5ub3RhdGlvblBhdGg6IGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7XG5cdFx0XHR0eXBlOiBcIkVudW1NZW1iZXJcIixcblx0XHRcdEVudW1NZW1iZXI6IGAke21hcE5hbWVUb0FsaWFzKGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIuc3BsaXQoXCIvXCIpWzBdKX0vJHthbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVsxXX1gXG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHR2YWx1ZSA9IHtcblx0XHRcdHR5cGU6IFwiUmVjb3JkXCIsXG5cdFx0XHRSZWNvcmQ6IHBhcnNlQW5ub3RhdGlvbk9iamVjdChhbm5vdGF0aW9uT2JqZWN0LCBjdXJyZW50VGFyZ2V0LCBhbm5vdGF0aW9uc0xpc3RzLCBvQ2FwYWJpbGl0aWVzKVxuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdG5hbWU6IHByb3BlcnR5S2V5LFxuXHRcdHZhbHVlXG5cdH07XG59XG5mdW5jdGlvbiBtYXBOYW1lVG9BbGlhcyhhbm5vdGF0aW9uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0bGV0IFtwYXRoUGFydCwgYW5ub1BhcnRdID0gYW5ub3RhdGlvbk5hbWUuc3BsaXQoXCJAXCIpO1xuXHRpZiAoIWFubm9QYXJ0KSB7XG5cdFx0YW5ub1BhcnQgPSBwYXRoUGFydDtcblx0XHRwYXRoUGFydCA9IFwiXCI7XG5cdH0gZWxzZSB7XG5cdFx0cGF0aFBhcnQgKz0gXCJAXCI7XG5cdH1cblx0Y29uc3QgbGFzdERvdCA9IGFubm9QYXJ0Lmxhc3RJbmRleE9mKFwiLlwiKTtcblx0cmV0dXJuIGAke3BhdGhQYXJ0ICsgVk9DQUJVTEFSWV9BTElBU1thbm5vUGFydC5zdWJzdHIoMCwgbGFzdERvdCldfS4ke2Fubm9QYXJ0LnN1YnN0cihsYXN0RG90ICsgMSl9YDtcbn1cbmZ1bmN0aW9uIHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0YW5ub3RhdGlvbk9iamVjdDogYW55LFxuXHRjdXJyZW50T2JqZWN0VGFyZ2V0OiBzdHJpbmcsXG5cdGFubm90YXRpb25zTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbik6IEV4cHJlc3Npb24gfCBBbm5vdGF0aW9uUmVjb3JkIHwgQW5ub3RhdGlvbiB7XG5cdGxldCBwYXJzZWRBbm5vdGF0aW9uT2JqZWN0OiBhbnkgPSB7fTtcblx0Y29uc3QgdHlwZU9mT2JqZWN0ID0gdHlwZW9mIGFubm90YXRpb25PYmplY3Q7XG5cdGlmIChhbm5vdGF0aW9uT2JqZWN0ID09PSBudWxsKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJOdWxsXCIsIE51bGw6IG51bGwgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwic3RyaW5nXCIpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlN0cmluZ1wiLCBTdHJpbmc6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJCb29sXCIsIEJvb2w6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZPYmplY3QgPT09IFwibnVtYmVyXCIpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJBbm5vdGF0aW9uUGF0aFwiLCBBbm5vdGF0aW9uUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlBhdGhcIiwgUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJERlY2ltYWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiRGVjaW1hbFwiLCBEZWNpbWFsOiBwYXJzZUZsb2F0KGFubm90YXRpb25PYmplY3QuJERlY2ltYWwpIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIlByb3BlcnR5UGF0aFwiLCBQcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJFByb3BlcnR5UGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIklmXCIsIElmOiBhbm5vdGF0aW9uT2JqZWN0LiRJZiB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFuZCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRPciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJPclwiLCBPcjogYW5ub3RhdGlvbk9iamVjdC4kT3IgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTm90XCIsIE5vdDogYW5ub3RhdGlvbk9iamVjdC4kTm90IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRXEgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTmVcIiwgTmU6IGFubm90YXRpb25PYmplY3QuJE5lIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiR3RcIiwgR3Q6IGFubm90YXRpb25PYmplY3QuJEd0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR2UgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTHRcIiwgTHQ6IGFubm90YXRpb25PYmplY3QuJEx0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTGVcIiwgTGU6IGFubm90YXRpb25PYmplY3QuJExlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQXBwbHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0ge1xuXHRcdFx0dHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsXG5cdFx0XHROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXG5cdFx0fTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0ge1xuXHRcdFx0dHlwZTogXCJFbnVtTWVtYmVyXCIsXG5cdFx0XHRFbnVtTWVtYmVyOiBgJHttYXBOYW1lVG9BbGlhcyhhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVswXSl9LyR7YW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlci5zcGxpdChcIi9cIilbMV19YFxuXHRcdH07XG5cdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhbm5vdGF0aW9uT2JqZWN0KSkge1xuXHRcdGNvbnN0IHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uID0gcGFyc2VkQW5ub3RhdGlvbk9iamVjdDtcblx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uID0gYW5ub3RhdGlvbk9iamVjdC5tYXAoKHN1YkFubm90YXRpb25PYmplY3QsIHN1YkFubm90YXRpb25JbmRleCkgPT5cblx0XHRcdHBhcnNlQW5ub3RhdGlvbk9iamVjdChzdWJBbm5vdGF0aW9uT2JqZWN0LCBgJHtjdXJyZW50T2JqZWN0VGFyZ2V0fS8ke3N1YkFubm90YXRpb25JbmRleH1gLCBhbm5vdGF0aW9uc0xpc3RzLCBvQ2FwYWJpbGl0aWVzKVxuXHRcdCk7XG5cdFx0aWYgKGFubm90YXRpb25PYmplY3QubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiUHJvcGVydHlQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUGF0aFwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIlBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFubm90YXRpb25QYXRoXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiQW5ub3RhdGlvblBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRUeXBlXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkSWZcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJJZlwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFuZFwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIkFuZFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE9yXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiT3JcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRFcVwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIkVxXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmVcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJOZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5vdFwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIk5vdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEd0XCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiR3RcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHZVwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIkdlXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTHRcIikpIHtcblx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbi50eXBlID0gXCJMdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJExlXCIpKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiTGVcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBcHBseVwiKSkge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIkFwcGx5XCI7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0WzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24udHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uLnR5cGUgPSBcIlN0cmluZ1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC4kVHlwZSkge1xuXHRcdFx0Y29uc3QgdHlwZVZhbHVlID0gYW5ub3RhdGlvbk9iamVjdC4kVHlwZTtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudHlwZSA9IHR5cGVWYWx1ZTsgLy9gJHt0eXBlQWxpYXN9LiR7dHlwZVRlcm19YDtcblx0XHR9XG5cdFx0Y29uc3QgcHJvcGVydHlWYWx1ZXM6IGFueSA9IFtdO1xuXHRcdE9iamVjdC5rZXlzKGFubm90YXRpb25PYmplY3QpLmZvckVhY2goKHByb3BlcnR5S2V5KSA9PiB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRUeXBlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJElmXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEFwcGx5XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEFuZFwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRPclwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiROZVwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRHdFwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRHZVwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRMdFwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRMZVwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiROb3RcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkRXFcIiAmJlxuXHRcdFx0XHQhcHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIilcblx0XHRcdCkge1xuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlcy5wdXNoKFxuXHRcdFx0XHRcdHBhcnNlUHJvcGVydHlWYWx1ZShhbm5vdGF0aW9uT2JqZWN0W3Byb3BlcnR5S2V5XSwgcHJvcGVydHlLZXksIGN1cnJlbnRPYmplY3RUYXJnZXQsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2UgaWYgKHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG5cdFx0XHRcdC8vIEFubm90YXRpb24gb2YgYW5ub3RhdGlvblxuXHRcdFx0XHRjcmVhdGVBbm5vdGF0aW9uTGlzdHMoXG5cdFx0XHRcdFx0eyBbcHJvcGVydHlLZXldOiBhbm5vdGF0aW9uT2JqZWN0W3Byb3BlcnR5S2V5XSB9LFxuXHRcdFx0XHRcdGN1cnJlbnRPYmplY3RUYXJnZXQsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNMaXN0cyxcblx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5wcm9wZXJ0eVZhbHVlcyA9IHByb3BlcnR5VmFsdWVzO1xuXHR9XG5cdHJldHVybiBwYXJzZWRBbm5vdGF0aW9uT2JqZWN0O1xufVxuZnVuY3Rpb24gZ2V0T3JDcmVhdGVBbm5vdGF0aW9uTGlzdCh0YXJnZXQ6IHN0cmluZywgYW5ub3RhdGlvbnNMaXN0czogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvbkxpc3Q+KTogQW5ub3RhdGlvbkxpc3Qge1xuXHRpZiAoIWFubm90YXRpb25zTGlzdHMuaGFzT3duUHJvcGVydHkodGFyZ2V0KSkge1xuXHRcdGFubm90YXRpb25zTGlzdHNbdGFyZ2V0XSA9IHtcblx0XHRcdHRhcmdldDogdGFyZ2V0LFxuXHRcdFx0YW5ub3RhdGlvbnM6IFtdXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gYW5ub3RhdGlvbnNMaXN0c1t0YXJnZXRdO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZWZlcmVuY2VGYWNldElkKHJlZmVyZW5jZUZhY2V0OiBhbnkpIHtcblx0Y29uc3QgaWQgPSByZWZlcmVuY2VGYWNldC5JRCA/PyByZWZlcmVuY2VGYWNldC5UYXJnZXQuJEFubm90YXRpb25QYXRoO1xuXHRyZXR1cm4gaWQgPyBwcmVwYXJlSWQoaWQpIDogaWQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0aWYgKG9SZWNvcmQuVGFyZ2V0ICYmIG9SZWNvcmQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0cmV0dXJuIG9SZWNvcmQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aC5pbmRleE9mKGBAJHtVSUFubm90YXRpb25UZXJtcy5DaGFydH1gKSA9PT0gLTE7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUlCTkFubm90YXRpb25zKGFubm90YXRpb25PYmplY3Q6IGFueSkge1xuXHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdC5maWx0ZXIoKG9SZWNvcmQ6IGFueSkgPT4ge1xuXHRcdHJldHVybiBvUmVjb3JkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVQcmVzZW50YXRpb25WYXJpYW50KGFubm90YXRpb25PYmplY3Q6IGFueSkge1xuXHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdC5maWx0ZXIoKG9SZWNvcmQ6IGFueSkgPT4ge1xuXHRcdHJldHVybiBvUmVjb3JkLiRBbm5vdGF0aW9uUGF0aCAhPT0gYEAke1VJQW5ub3RhdGlvblRlcm1zLkNoYXJ0fWA7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBbm5vdGF0aW9uTGlzdHMoXG5cdGFubm90YXRpb25PYmplY3RzOiBhbnksXG5cdGFubm90YXRpb25UYXJnZXQ6IHN0cmluZyxcblx0YW5ub3RhdGlvbkxpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4sXG5cdG9DYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pIHtcblx0aWYgKE9iamVjdC5rZXlzKGFubm90YXRpb25PYmplY3RzKS5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm47XG5cdH1cblx0Y29uc3Qgb3V0QW5ub3RhdGlvbk9iamVjdCA9IGdldE9yQ3JlYXRlQW5ub3RhdGlvbkxpc3QoYW5ub3RhdGlvblRhcmdldCwgYW5ub3RhdGlvbkxpc3RzKTtcblx0aWYgKCFvQ2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQpIHtcblx0XHRkZWxldGUgYW5ub3RhdGlvbk9iamVjdHNbYEAke1VJQW5ub3RhdGlvblRlcm1zLkNoYXJ0fWBdO1xuXHR9XG5cblx0Zm9yIChjb25zdCBhbm5vdGF0aW9uT2JqZWN0S2V5IGluIGFubm90YXRpb25PYmplY3RzKSB7XG5cdFx0bGV0IGFubm90YXRpb25LZXkgPSBhbm5vdGF0aW9uT2JqZWN0S2V5O1xuXHRcdGxldCBhbm5vdGF0aW9uT2JqZWN0ID0gYW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV07XG5cdFx0c3dpdGNoIChhbm5vdGF0aW9uS2V5KSB7XG5cdFx0XHRjYXNlIGBAJHtVSUFubm90YXRpb25UZXJtcy5IZWFkZXJGYWNldHN9YDpcblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGBAJHtVSUFubm90YXRpb25UZXJtcy5JZGVudGlmaWNhdGlvbn1gOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuSW50ZW50QmFzZWROYXZpZ2F0aW9uKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdCA9IHJlbW92ZUlCTkFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgYEAke1VJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtfWA6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdCk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5NaWNyb0NoYXJ0KSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdCA9IHJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdCk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBgQCR7VUlBbm5vdGF0aW9uVGVybXMuRmllbGRHcm91cH1gOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuSW50ZW50QmFzZWROYXZpZ2F0aW9uKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdC5EYXRhID0gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdC5EYXRhKTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0LkRhdGEgPSByZW1vdmVDaGFydEFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QuRGF0YSk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBgQCR7VUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudH1gOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuQ2hhcnQgJiYgYW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucykge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QuVmlzdWFsaXphdGlvbnMgPSBoYW5kbGVQcmVzZW50YXRpb25WYXJpYW50KGFubm90YXRpb25PYmplY3QuVmlzdWFsaXphdGlvbnMpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgYEBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290YDpcblx0XHRcdFx0Ly8gVGhpcyBzY2VuYXJpbyBpcyBuZWVkZWQgZm9yIGVuYWJsaW5nIHNlbWFudGljIGZpbHRlcmluZyBvbiBEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS1maWx0ZXJzLiBBcyBvZiBub3cgdGhlIFNpbmdsZVJhbmdlIGFubm90YXRpb24gaXMgcmVhZCBieSB0aGVcblx0XHRcdFx0Ly8gRmllbGRIZWxwZXIsIHdoaWNoIHNob3VsZCBub3QgaW5jbHVkZSBhbnkgcHJvcGVydHlzcGVjaWZpYyBsb2dpYy4gV2Ugd2lsbCByZW1vdmUgdGhpcyBvbmNlIHRoZSBGaWVsZEhlbHBlciByZWNlaXZlcyB0aGUgU2luZ2xlUmFuZ2UgZGF0YSBmcm9tXG5cdFx0XHRcdC8vIHRoZSBjb252ZXJ0ZXIgb3IgaGF2aW5nIGl0IHNldCBpcyBubyBsb25nZXIgYSBwcmVyZXF1aXNpdGUgZm9yIHRoZSBzZW1hbnRpYyBmaWx0ZXJpbmcuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1tgQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zYF0gJiZcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1tgQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zYF0uRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucz8ubGVuZ3RoXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCFhbm5vdGF0aW9uT2JqZWN0c1tgQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zYF0uRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5zb21lKFxuXHRcdFx0XHRcdFx0XHQoRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uPy5Qcm9wZXJ0eT8uJFByb3BlcnR5UGF0aC5pbmNsdWRlcyhcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhXCIpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1tgQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zYF0uRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5wdXNoKFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlXCIsXG5cdFx0XHRcdFx0XHRcdFx0QWxsb3dlZEV4cHJlc3Npb25zOiBcIlNpbmdsZVJhbmdlXCIsXG5cdFx0XHRcdFx0XHRcdFx0UHJvcGVydHk6IHtcblx0XHRcdFx0XHRcdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvQ3JlYXRpb25EYXRlVGltZVwiXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlXCIsXG5cdFx0XHRcdFx0XHRcdFx0QWxsb3dlZEV4cHJlc3Npb25zOiBcIlNpbmdsZVJhbmdlXCIsXG5cdFx0XHRcdFx0XHRcdFx0UHJvcGVydHk6IHtcblx0XHRcdFx0XHRcdFx0XHRcdCRQcm9wZXJ0eVBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZURhdGVUaW1lXCJcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0bGV0IGN1cnJlbnRPdXRBbm5vdGF0aW9uT2JqZWN0ID0gb3V0QW5ub3RhdGlvbk9iamVjdDtcblxuXHRcdC8vIENoZWNrIGZvciBhbm5vdGF0aW9uIG9mIGFubm90YXRpb25cblx0XHRjb25zdCBhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQgPSBhbm5vdGF0aW9uS2V5LnNwbGl0KFwiQFwiKTtcblx0XHRpZiAoYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0Lmxlbmd0aCA+IDIpIHtcblx0XHRcdGN1cnJlbnRPdXRBbm5vdGF0aW9uT2JqZWN0ID0gZ2V0T3JDcmVhdGVBbm5vdGF0aW9uTGlzdChcblx0XHRcdFx0YCR7YW5ub3RhdGlvblRhcmdldH1AJHthbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXRbMV19YCxcblx0XHRcdFx0YW5ub3RhdGlvbkxpc3RzXG5cdFx0XHQpO1xuXHRcdFx0YW5ub3RhdGlvbktleSA9IGFubm90YXRpb25PZkFubm90YXRpb25TcGxpdFsyXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YW5ub3RhdGlvbktleSA9IGFubm90YXRpb25PZkFubm90YXRpb25TcGxpdFsxXTtcblx0XHR9XG5cblx0XHRjb25zdCBhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXQgPSBhbm5vdGF0aW9uS2V5LnNwbGl0KFwiI1wiKTtcblx0XHRjb25zdCBxdWFsaWZpZXIgPSBhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXRbMV07XG5cdFx0YW5ub3RhdGlvbktleSA9IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdFswXTtcblxuXHRcdGNvbnN0IHBhcnNlZEFubm90YXRpb25PYmplY3Q6IGFueSA9IHtcblx0XHRcdHRlcm06IGFubm90YXRpb25LZXksXG5cdFx0XHRxdWFsaWZpZXI6IHF1YWxpZmllclxuXHRcdH07XG5cdFx0bGV0IGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0ID0gYCR7YW5ub3RhdGlvblRhcmdldH1AJHtwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnRlcm19YDtcblx0XHRpZiAocXVhbGlmaWVyKSB7XG5cdFx0XHRjdXJyZW50QW5ub3RhdGlvblRhcmdldCArPSBgIyR7cXVhbGlmaWVyfWA7XG5cdFx0fVxuXHRcdGxldCBpc0NvbGxlY3Rpb24gPSBmYWxzZTtcblx0XHRjb25zdCB0eXBlb2ZBbm5vdGF0aW9uID0gdHlwZW9mIGFubm90YXRpb25PYmplY3Q7XG5cdFx0aWYgKGFubm90YXRpb25PYmplY3QgPT09IG51bGwpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiTnVsbFwiIH07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2ZBbm5vdGF0aW9uID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIlN0cmluZ1wiLCBTdHJpbmc6IGFubm90YXRpb25PYmplY3QgfTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZkFubm90YXRpb24gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkJvb2xcIiwgQm9vbDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mQW5ub3RhdGlvbiA9PT0gXCJudW1iZXJcIikge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJJbnRcIiwgSW50OiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRJZiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIklmXCIsIElmOiBhbm5vdGF0aW9uT2JqZWN0LiRJZiB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5kICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQW5kXCIsIEFuZDogYW5ub3RhdGlvbk9iamVjdC4kQW5kIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRPciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIk9yXCIsIE9yOiBhbm5vdGF0aW9uT2JqZWN0LiRPciB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTm90ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiTm90XCIsIE5vdDogYW5ub3RhdGlvbk9iamVjdC4kTm90IH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFcSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkVxXCIsIEVxOiBhbm5vdGF0aW9uT2JqZWN0LiRFcSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJOZVwiLCBOZTogYW5ub3RhdGlvbk9iamVjdC4kTmUgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEd0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiR3RcIiwgR3Q6IGFubm90YXRpb25PYmplY3QuJEd0IH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkdlXCIsIEdlOiBhbm5vdGF0aW9uT2JqZWN0LiRHZSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJMdFwiLCBMdDogYW5ub3RhdGlvbk9iamVjdC4kTHQgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJExlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiTGVcIiwgTGU6IGFubm90YXRpb25PYmplY3QuJExlIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkFwcGx5XCIsIEFwcGx5OiBhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSwgRnVuY3Rpb246IGFubm90YXRpb25PYmplY3QuJEZ1bmN0aW9uIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiUGF0aFwiLCBQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQYXRoIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0ge1xuXHRcdFx0XHR0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsXG5cdFx0XHRcdEFubm90YXRpb25QYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aFxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJERlY2ltYWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJEZWNpbWFsXCIsIERlY2ltYWw6IHBhcnNlRmxvYXQoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCkgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHtcblx0XHRcdFx0dHlwZTogXCJFbnVtTWVtYmVyXCIsXG5cdFx0XHRcdEVudW1NZW1iZXI6IGAke21hcE5hbWVUb0FsaWFzKGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIuc3BsaXQoXCIvXCIpWzBdKX0vJHthbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVsxXX1gXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhbm5vdGF0aW9uT2JqZWN0KSkge1xuXHRcdFx0aXNDb2xsZWN0aW9uID0gdHJ1ZTtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiA9IGFubm90YXRpb25PYmplY3QubWFwKChzdWJBbm5vdGF0aW9uT2JqZWN0LCBzdWJBbm5vdGF0aW9uSW5kZXgpID0+XG5cdFx0XHRcdHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0XHRcdFx0XHRzdWJBbm5vdGF0aW9uT2JqZWN0LFxuXHRcdFx0XHRcdGAke2N1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0fS8ke3N1YkFubm90YXRpb25JbmRleH1gLFxuXHRcdFx0XHRcdGFubm90YXRpb25MaXN0cyxcblx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJQcm9wZXJ0eVBhdGhcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFBhdGhcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiUGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbm5vdGF0aW9uUGF0aFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkVHlwZVwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJElmXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIklmXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRPclwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJPclwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkRXFcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiRXFcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5lXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIk5lXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROb3RcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiTm90XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHdFwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJHdFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR2VcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiR2VcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEx0XCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkx0XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMZVwiKSkge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJMZVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5kXCIpKSB7XG5cdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uLnR5cGUgPSBcIkFuZFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQXBwbHlcIikpIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiQXBwbHlcIjtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgYW5ub3RhdGlvbk9iamVjdFswXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbi50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24udHlwZSA9IFwiU3RyaW5nXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcmVjb3JkOiBBbm5vdGF0aW9uUmVjb3JkID0ge1xuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlczogW11cblx0XHRcdH07XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC4kVHlwZSkge1xuXHRcdFx0XHRjb25zdCB0eXBlVmFsdWUgPSBhbm5vdGF0aW9uT2JqZWN0LiRUeXBlO1xuXHRcdFx0XHRyZWNvcmQudHlwZSA9IGAke3R5cGVWYWx1ZX1gO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcHJvcGVydHlWYWx1ZXM6IGFueVtdID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IHByb3BlcnR5S2V5IGluIGFubm90YXRpb25PYmplY3QpIHtcblx0XHRcdFx0aWYgKHByb3BlcnR5S2V5ICE9PSBcIiRUeXBlXCIgJiYgIXByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXMucHVzaChcblx0XHRcdFx0XHRcdHBhcnNlUHJvcGVydHlWYWx1ZShcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdFtwcm9wZXJ0eUtleV0sXG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5S2V5LFxuXHRcdFx0XHRcdFx0XHRjdXJyZW50QW5ub3RhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbkxpc3RzLFxuXHRcdFx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKSkge1xuXHRcdFx0XHRcdC8vIEFubm90YXRpb24gb2YgcmVjb3JkXG5cdFx0XHRcdFx0Y3JlYXRlQW5ub3RhdGlvbkxpc3RzKFxuXHRcdFx0XHRcdFx0eyBbcHJvcGVydHlLZXldOiBhbm5vdGF0aW9uT2JqZWN0W3Byb3BlcnR5S2V5XSB9LFxuXHRcdFx0XHRcdFx0Y3VycmVudEFubm90YXRpb25UYXJnZXQsXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uTGlzdHMsXG5cdFx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmVjb3JkLnByb3BlcnR5VmFsdWVzID0gcHJvcGVydHlWYWx1ZXM7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnJlY29yZCA9IHJlY29yZDtcblx0XHR9XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5pc0NvbGxlY3Rpb24gPSBpc0NvbGxlY3Rpb247XG5cdFx0Y3VycmVudE91dEFubm90YXRpb25PYmplY3QuYW5ub3RhdGlvbnMucHVzaChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0KTtcblx0fVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlUHJvcGVydHkocHJvcGVydHlEZWZpbml0aW9uOiBhbnksIGVudGl0eVR5cGVPYmplY3Q6IFJhd0VudGl0eVR5cGUgfCBSYXdDb21wbGV4VHlwZSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBSYXdQcm9wZXJ0eSB7XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiUHJvcGVydHlcIixcblx0XHRuYW1lOiBwcm9wZXJ0eU5hbWUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlUeXBlT2JqZWN0LmZ1bGx5UXVhbGlmaWVkTmFtZX0vJHtwcm9wZXJ0eU5hbWV9YCxcblx0XHR0eXBlOiBwcm9wZXJ0eURlZmluaXRpb24uJFR5cGUsXG5cdFx0bWF4TGVuZ3RoOiBwcm9wZXJ0eURlZmluaXRpb24uJE1heExlbmd0aCxcblx0XHRwcmVjaXNpb246IHByb3BlcnR5RGVmaW5pdGlvbi4kUHJlY2lzaW9uLFxuXHRcdHNjYWxlOiBwcm9wZXJ0eURlZmluaXRpb24uJFNjYWxlLFxuXHRcdG51bGxhYmxlOiBwcm9wZXJ0eURlZmluaXRpb24uJE51bGxhYmxlXG5cdH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydHkoXG5cdG5hdlByb3BlcnR5RGVmaW5pdGlvbjogYW55LFxuXHRlbnRpdHlUeXBlT2JqZWN0OiBSYXdFbnRpdHlUeXBlIHwgUmF3Q29tcGxleFR5cGUsXG5cdG5hdlByb3BlcnR5TmFtZTogc3RyaW5nXG4pOiBSYXdWNE5hdmlnYXRpb25Qcm9wZXJ0eSB7XG5cdGxldCByZWZlcmVudGlhbENvbnN0cmFpbnQ6IFJlZmVyZW50aWFsQ29uc3RyYWludFtdID0gW107XG5cdGlmIChuYXZQcm9wZXJ0eURlZmluaXRpb24uJFJlZmVyZW50aWFsQ29uc3RyYWludCkge1xuXHRcdHJlZmVyZW50aWFsQ29uc3RyYWludCA9IE9iamVjdC5rZXlzKG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kUmVmZXJlbnRpYWxDb25zdHJhaW50KS5tYXAoKHNvdXJjZVByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0c291cmNlVHlwZU5hbWU6IGVudGl0eVR5cGVPYmplY3QubmFtZSxcblx0XHRcdFx0c291cmNlUHJvcGVydHk6IHNvdXJjZVByb3BlcnR5TmFtZSxcblx0XHRcdFx0dGFyZ2V0VHlwZU5hbWU6IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kVHlwZSxcblx0XHRcdFx0dGFyZ2V0UHJvcGVydHk6IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kUmVmZXJlbnRpYWxDb25zdHJhaW50W3NvdXJjZVByb3BlcnR5TmFtZV1cblx0XHRcdH07XG5cdFx0fSk7XG5cdH1cblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnR5OiBSYXdWNE5hdmlnYXRpb25Qcm9wZXJ0eSA9IHtcblx0XHRfdHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlcIixcblx0XHRuYW1lOiBuYXZQcm9wZXJ0eU5hbWUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlUeXBlT2JqZWN0LmZ1bGx5UXVhbGlmaWVkTmFtZX0vJHtuYXZQcm9wZXJ0eU5hbWV9YCxcblx0XHRwYXJ0bmVyOiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFBhcnRuZXIsXG5cdFx0aXNDb2xsZWN0aW9uOiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJGlzQ29sbGVjdGlvbiA/IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kaXNDb2xsZWN0aW9uIDogZmFsc2UsXG5cdFx0Y29udGFpbnNUYXJnZXQ6IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kQ29udGFpbnNUYXJnZXQsXG5cdFx0dGFyZ2V0VHlwZU5hbWU6IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kVHlwZSxcblx0XHRyZWZlcmVudGlhbENvbnN0cmFpbnRcblx0fTtcblxuXHRyZXR1cm4gbmF2aWdhdGlvblByb3BlcnR5O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlRW50aXR5U2V0KGVudGl0eVNldERlZmluaXRpb246IGFueSwgZW50aXR5U2V0TmFtZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBSYXdFbnRpdHlTZXQge1xuXHRjb25zdCBlbnRpdHlTZXRPYmplY3Q6IFJhd0VudGl0eVNldCA9IHtcblx0XHRfdHlwZTogXCJFbnRpdHlTZXRcIixcblx0XHRuYW1lOiBlbnRpdHlTZXROYW1lLFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmc6IHt9LFxuXHRcdGVudGl0eVR5cGVOYW1lOiBlbnRpdHlTZXREZWZpbml0aW9uLiRUeXBlLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZW50aXR5Q29udGFpbmVyTmFtZX0vJHtlbnRpdHlTZXROYW1lfWBcblx0fTtcblx0cmV0dXJuIGVudGl0eVNldE9iamVjdDtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVNpbmdsZXRvbihzaW5nbGV0b25EZWZpbml0aW9uOiBhbnksIHNpbmdsZXRvbk5hbWU6IHN0cmluZywgZW50aXR5Q29udGFpbmVyTmFtZTogc3RyaW5nKTogUmF3U2luZ2xldG9uIHtcblx0cmV0dXJuIHtcblx0XHRfdHlwZTogXCJTaW5nbGV0b25cIixcblx0XHRuYW1lOiBzaW5nbGV0b25OYW1lLFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmc6IHt9LFxuXHRcdGVudGl0eVR5cGVOYW1lOiBzaW5nbGV0b25EZWZpbml0aW9uLiRUeXBlLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZW50aXR5Q29udGFpbmVyTmFtZX0vJHtzaW5nbGV0b25OYW1lfWAsXG5cdFx0bnVsbGFibGU6IHRydWVcblx0fTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUFjdGlvbkltcG9ydChhY3Rpb25JbXBvcnQ6IGFueSwgYWN0aW9uSW1wb3J0TmFtZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBSYXdBY3Rpb25JbXBvcnQge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIkFjdGlvbkltcG9ydFwiLFxuXHRcdG5hbWU6IGFjdGlvbkltcG9ydE5hbWUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke2FjdGlvbkltcG9ydE5hbWV9YCxcblx0XHRhY3Rpb25OYW1lOiBhY3Rpb25JbXBvcnQuJEFjdGlvblxuXHR9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlVHlwZURlZmluaXRpb24odHlwZURlZmluaXRpb246IGFueSwgdHlwZU5hbWU6IHN0cmluZywgbmFtZXNwYWNlUHJlZml4OiBzdHJpbmcpOiBSYXdUeXBlRGVmaW5pdGlvbiB7XG5cdGNvbnN0IHR5cGVPYmplY3Q6IFJhd1R5cGVEZWZpbml0aW9uID0ge1xuXHRcdF90eXBlOiBcIlR5cGVEZWZpbml0aW9uXCIsXG5cdFx0bmFtZTogdHlwZU5hbWUuc3Vic3RyaW5nKG5hbWVzcGFjZVByZWZpeC5sZW5ndGgpLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogdHlwZU5hbWUsXG5cdFx0dW5kZXJseWluZ1R5cGU6IHR5cGVEZWZpbml0aW9uLiRVbmRlcmx5aW5nVHlwZVxuXHR9O1xuXHRyZXR1cm4gdHlwZU9iamVjdDtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUNvbXBsZXhUeXBlKGNvbXBsZXhUeXBlRGVmaW5pdGlvbjogYW55LCBjb21wbGV4VHlwZU5hbWU6IHN0cmluZywgbmFtZXNwYWNlUHJlZml4OiBzdHJpbmcpOiBSYXdDb21wbGV4VHlwZSB7XG5cdGNvbnN0IGNvbXBsZXhUeXBlT2JqZWN0OiBSYXdDb21wbGV4VHlwZSA9IHtcblx0XHRfdHlwZTogXCJDb21wbGV4VHlwZVwiLFxuXHRcdG5hbWU6IGNvbXBsZXhUeXBlTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBjb21wbGV4VHlwZU5hbWUsXG5cdFx0cHJvcGVydGllczogW10sXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IFtdXG5cdH07XG5cblx0Y29uc3QgY29tcGxleFR5cGVQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoY29tcGxleFR5cGVEZWZpbml0aW9uKVxuXHRcdC5maWx0ZXIoKHByb3BlcnR5TmFtZU9yTm90KSA9PiB7XG5cdFx0XHRpZiAocHJvcGVydHlOYW1lT3JOb3QgIT0gXCIkS2V5XCIgJiYgcHJvcGVydHlOYW1lT3JOb3QgIT0gXCIka2luZFwiKSB7XG5cdFx0XHRcdHJldHVybiBjb21wbGV4VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lT3JOb3RdLiRraW5kID09PSBcIlByb3BlcnR5XCI7XG5cdFx0XHR9XG5cdFx0fSlcblx0XHQuc29ydCgoYSwgYikgPT4gKGEgPiBiID8gMSA6IC0xKSlcblx0XHQubWFwKChwcm9wZXJ0eU5hbWUpID0+IHtcblx0XHRcdHJldHVybiBwcmVwYXJlUHJvcGVydHkoY29tcGxleFR5cGVEZWZpbml0aW9uW3Byb3BlcnR5TmFtZV0sIGNvbXBsZXhUeXBlT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuXHRcdH0pO1xuXG5cdGNvbXBsZXhUeXBlT2JqZWN0LnByb3BlcnRpZXMgPSBjb21wbGV4VHlwZVByb3BlcnRpZXM7XG5cdGNvbnN0IGNvbXBsZXhUeXBlTmF2aWdhdGlvblByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhjb21wbGV4VHlwZURlZmluaXRpb24pXG5cdFx0LmZpbHRlcigocHJvcGVydHlOYW1lT3JOb3QpID0+IHtcblx0XHRcdGlmIChwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRLZXlcIiAmJiBwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRraW5kXCIpIHtcblx0XHRcdFx0cmV0dXJuIGNvbXBsZXhUeXBlRGVmaW5pdGlvbltwcm9wZXJ0eU5hbWVPck5vdF0uJGtpbmQgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCI7XG5cdFx0XHR9XG5cdFx0fSlcblx0XHQuc29ydCgoYSwgYikgPT4gKGEgPiBiID8gMSA6IC0xKSlcblx0XHQubWFwKChuYXZQcm9wZXJ0eU5hbWUpID0+IHtcblx0XHRcdHJldHVybiBwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5KGNvbXBsZXhUeXBlRGVmaW5pdGlvbltuYXZQcm9wZXJ0eU5hbWVdLCBjb21wbGV4VHlwZU9iamVjdCwgbmF2UHJvcGVydHlOYW1lKTtcblx0XHR9KTtcblx0Y29tcGxleFR5cGVPYmplY3QubmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb21wbGV4VHlwZU5hdmlnYXRpb25Qcm9wZXJ0aWVzO1xuXHRyZXR1cm4gY29tcGxleFR5cGVPYmplY3Q7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFbnRpdHlLZXlzKGVudGl0eVR5cGVEZWZpbml0aW9uOiBhbnksIG9NZXRhTW9kZWxEYXRhOiBhbnkpOiBzdHJpbmdbXSB7XG5cdGlmICghZW50aXR5VHlwZURlZmluaXRpb24uJEtleSAmJiBlbnRpdHlUeXBlRGVmaW5pdGlvbi4kQmFzZVR5cGUpIHtcblx0XHRyZXR1cm4gcHJlcGFyZUVudGl0eUtleXMob01ldGFNb2RlbERhdGFbZW50aXR5VHlwZURlZmluaXRpb24uJEJhc2VUeXBlXSwgb01ldGFNb2RlbERhdGEpO1xuXHR9XG5cdHJldHVybiBlbnRpdHlUeXBlRGVmaW5pdGlvbi4kS2V5ID8/IFtdOyAvL2hhbmRsaW5nIG9mIGVudGl0eSB0eXBlcyB3aXRob3V0IGtleSBhcyB3ZWxsIGFzIGJhc2V0eXBlXG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFbnRpdHlUeXBlKGVudGl0eVR5cGVEZWZpbml0aW9uOiBhbnksIGVudGl0eVR5cGVOYW1lOiBzdHJpbmcsIG5hbWVzcGFjZVByZWZpeDogc3RyaW5nLCBtZXRhTW9kZWxEYXRhOiBhbnkpOiBSYXdFbnRpdHlUeXBlIHtcblx0Y29uc3QgZW50aXR5VHlwZTogUmF3RW50aXR5VHlwZSA9IHtcblx0XHRfdHlwZTogXCJFbnRpdHlUeXBlXCIsXG5cdFx0bmFtZTogZW50aXR5VHlwZU5hbWUuc3Vic3RyaW5nKG5hbWVzcGFjZVByZWZpeC5sZW5ndGgpLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogZW50aXR5VHlwZU5hbWUsXG5cdFx0a2V5czogW10sXG5cdFx0ZW50aXR5UHJvcGVydGllczogW10sXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IFtdLFxuXHRcdGFjdGlvbnM6IHt9XG5cdH07XG5cblx0Zm9yIChjb25zdCBrZXkgaW4gZW50aXR5VHlwZURlZmluaXRpb24pIHtcblx0XHRjb25zdCB2YWx1ZSA9IGVudGl0eVR5cGVEZWZpbml0aW9uW2tleV07XG5cblx0XHRzd2l0Y2ggKHZhbHVlLiRraW5kKSB7XG5cdFx0XHRjYXNlIFwiUHJvcGVydHlcIjpcblx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSBwcmVwYXJlUHJvcGVydHkodmFsdWUsIGVudGl0eVR5cGUsIGtleSk7XG5cdFx0XHRcdGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTmF2aWdhdGlvblByb3BlcnR5XCI6XG5cdFx0XHRcdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0eSA9IHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydHkodmFsdWUsIGVudGl0eVR5cGUsIGtleSk7XG5cdFx0XHRcdGVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRlbnRpdHlUeXBlLmtleXMgPSBwcmVwYXJlRW50aXR5S2V5cyhlbnRpdHlUeXBlRGVmaW5pdGlvbiwgbWV0YU1vZGVsRGF0YSlcblx0XHQubWFwKChlbnRpdHlLZXkpID0+IGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5maW5kKChwcm9wZXJ0eSkgPT4gcHJvcGVydHkubmFtZSA9PT0gZW50aXR5S2V5KSlcblx0XHQuZmlsdGVyKChwcm9wZXJ0eSkgPT4gcHJvcGVydHkgIT09IHVuZGVmaW5lZCkgYXMgUmF3RW50aXR5VHlwZVtcImtleXNcIl07XG5cblx0Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIGZpbHRlciBmYWNldHMgZGVmaW5lZCBmb3IgdGhlIGVudGl0eVR5cGUgYW5kIGlmIHllcywgY2hlY2sgaWYgYWxsIG9mIHRoZW0gaGF2ZSBhbiBJRFxuXHQvLyBUaGUgSUQgaXMgb3B0aW9uYWwsIGJ1dCBpdCBpcyBpbnRlcm5hbGx5IHRha2VuIGZvciBncm91cGluZyBmaWx0ZXIgZmllbGRzIGFuZCBpZiBpdCdzIG5vdCBwcmVzZW50XG5cdC8vIGEgZmFsbGJhY2sgSUQgbmVlZHMgdG8gYmUgZ2VuZXJhdGVkIGhlcmUuXG5cdG1ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lXT8uW2BAJHtVSUFubm90YXRpb25UZXJtcy5GaWx0ZXJGYWNldHN9YF0/LmZvckVhY2goXG5cdFx0KGZpbHRlckZhY2V0QW5ub3RhdGlvbjogYW55KSA9PiB7XG5cdFx0XHRmaWx0ZXJGYWNldEFubm90YXRpb24uSUQgPSBjcmVhdGVSZWZlcmVuY2VGYWNldElkKGZpbHRlckZhY2V0QW5ub3RhdGlvbik7XG5cdFx0fVxuXHQpO1xuXG5cdGZvciAoY29uc3QgZW50aXR5UHJvcGVydHkgb2YgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzKSB7XG5cdFx0aWYgKCFtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdKSB7XG5cdFx0XHRtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0ge307XG5cdFx0fVxuXHRcdGlmICghbWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXVtgQCR7VUlBbm5vdGF0aW9uVGVybXMuRGF0YUZpZWxkRGVmYXVsdH1gXSkge1xuXHRcdFx0bWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXVtgQCR7VUlBbm5vdGF0aW9uVGVybXMuRGF0YUZpZWxkRGVmYXVsdH1gXSA9IHtcblx0XHRcdFx0JFR5cGU6IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCxcblx0XHRcdFx0VmFsdWU6IHsgJFBhdGg6IGVudGl0eVByb3BlcnR5Lm5hbWUgfVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZW50aXR5VHlwZTtcbn1cbmZ1bmN0aW9uIHByZXBhcmVBY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nLCBhY3Rpb25SYXdEYXRhOiBNZXRhTW9kZWxBY3Rpb24sIG5hbWVzcGFjZVByZWZpeDogc3RyaW5nKTogUmF3QWN0aW9uIHtcblx0bGV0IGFjdGlvbkVudGl0eVR5cGUgPSBcIlwiO1xuXHRsZXQgYWN0aW9uRlFOID0gYWN0aW9uTmFtZTtcblxuXHRpZiAoYWN0aW9uUmF3RGF0YS4kSXNCb3VuZCkge1xuXHRcdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXIgPSBhY3Rpb25SYXdEYXRhLiRQYXJhbWV0ZXJbMF07XG5cdFx0YWN0aW9uRW50aXR5VHlwZSA9IGJpbmRpbmdQYXJhbWV0ZXIuJFR5cGU7XG5cdFx0aWYgKGJpbmRpbmdQYXJhbWV0ZXIuJGlzQ29sbGVjdGlvbiA9PT0gdHJ1ZSkge1xuXHRcdFx0YWN0aW9uRlFOID0gYCR7YWN0aW9uTmFtZX0oQ29sbGVjdGlvbigke2FjdGlvbkVudGl0eVR5cGV9KSlgO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3Rpb25GUU4gPSBgJHthY3Rpb25OYW1lfSgke2FjdGlvbkVudGl0eVR5cGV9KWA7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgcGFyYW1ldGVycyA9IGFjdGlvblJhd0RhdGEuJFBhcmFtZXRlciA/PyBbXTtcblx0cmV0dXJuIHtcblx0XHRfdHlwZTogXCJBY3Rpb25cIixcblx0XHRuYW1lOiBhY3Rpb25OYW1lLnN1YnN0cmluZyhuYW1lc3BhY2VQcmVmaXgubGVuZ3RoKSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGFjdGlvbkZRTixcblx0XHRpc0JvdW5kOiBhY3Rpb25SYXdEYXRhLiRJc0JvdW5kID8/IGZhbHNlLFxuXHRcdGlzRnVuY3Rpb246IGFjdGlvblJhd0RhdGEuJGtpbmQgPT09IFwiRnVuY3Rpb25cIixcblx0XHRzb3VyY2VUeXBlOiBhY3Rpb25FbnRpdHlUeXBlLFxuXHRcdHJldHVyblR5cGU6IGFjdGlvblJhd0RhdGEuJFJldHVyblR5cGU/LiRUeXBlID8/IFwiXCIsXG5cdFx0cGFyYW1ldGVyczogcGFyYW1ldGVycy5tYXAoKHBhcmFtKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRfdHlwZTogXCJBY3Rpb25QYXJhbWV0ZXJcIixcblx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHthY3Rpb25GUU59LyR7cGFyYW0uJE5hbWV9YCxcblx0XHRcdFx0aXNDb2xsZWN0aW9uOiBwYXJhbS4kaXNDb2xsZWN0aW9uID8/IGZhbHNlLFxuXHRcdFx0XHRuYW1lOiBwYXJhbS4kTmFtZSxcblx0XHRcdFx0dHlwZTogcGFyYW0uJFR5cGVcblx0XHRcdH07XG5cdFx0fSlcblx0fTtcbn1cblxuZnVuY3Rpb24gcGFyc2VFbnRpdHlDb250YWluZXIoXG5cdG5hbWVzcGFjZVByZWZpeDogc3RyaW5nLFxuXHRlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcsXG5cdGVudGl0eUNvbnRhaW5lck1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuXHRzY2hlbWE6IFJhd1NjaGVtYVxuKSB7XG5cdHNjaGVtYS5lbnRpdHlDb250YWluZXIgPSB7XG5cdFx0X3R5cGU6IFwiRW50aXR5Q29udGFpbmVyXCIsXG5cdFx0bmFtZTogZW50aXR5Q29udGFpbmVyTmFtZS5zdWJzdHJpbmcobmFtZXNwYWNlUHJlZml4Lmxlbmd0aCksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBlbnRpdHlDb250YWluZXJOYW1lXG5cdH07XG5cblx0Zm9yIChjb25zdCBlbGVtZW50TmFtZSBpbiBlbnRpdHlDb250YWluZXJNZXRhZGF0YSkge1xuXHRcdGNvbnN0IGVsZW1lbnRWYWx1ZSA9IGVudGl0eUNvbnRhaW5lck1ldGFkYXRhW2VsZW1lbnROYW1lXTtcblx0XHRzd2l0Y2ggKGVsZW1lbnRWYWx1ZS4ka2luZCkge1xuXHRcdFx0Y2FzZSBcIkVudGl0eVNldFwiOlxuXHRcdFx0XHRzY2hlbWEuZW50aXR5U2V0cy5wdXNoKHByZXBhcmVFbnRpdHlTZXQoZWxlbWVudFZhbHVlLCBlbGVtZW50TmFtZSwgZW50aXR5Q29udGFpbmVyTmFtZSkpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlNpbmdsZXRvblwiOlxuXHRcdFx0XHRzY2hlbWEuc2luZ2xldG9ucy5wdXNoKHByZXBhcmVTaW5nbGV0b24oZWxlbWVudFZhbHVlLCBlbGVtZW50TmFtZSwgZW50aXR5Q29udGFpbmVyTmFtZSkpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIkFjdGlvbkltcG9ydFwiOlxuXHRcdFx0XHRzY2hlbWEuYWN0aW9uSW1wb3J0cy5wdXNoKHByZXBhcmVBY3Rpb25JbXBvcnQoZWxlbWVudFZhbHVlLCBlbGVtZW50TmFtZSwgZW50aXR5Q29udGFpbmVyTmFtZSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHQvLyBsaW5rIHRoZSBuYXZpZ2F0aW9uIHByb3BlcnR5IGJpbmRpbmdzICgkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZylcblx0Zm9yIChjb25zdCBlbnRpdHlTZXQgb2Ygc2NoZW1hLmVudGl0eVNldHMpIHtcblx0XHRjb25zdCBuYXZQcm9wZXJ0eUJpbmRpbmdzID0gZW50aXR5Q29udGFpbmVyTWV0YWRhdGFbZW50aXR5U2V0Lm5hbWVdLiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nO1xuXHRcdGlmIChuYXZQcm9wZXJ0eUJpbmRpbmdzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IG5hdlByb3BOYW1lIG9mIE9iamVjdC5rZXlzKG5hdlByb3BlcnR5QmluZGluZ3MpKSB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEVudGl0eVNldCA9IHNjaGVtYS5lbnRpdHlTZXRzLmZpbmQoKGVudGl0eVNldE5hbWUpID0+IGVudGl0eVNldE5hbWUubmFtZSA9PT0gbmF2UHJvcGVydHlCaW5kaW5nc1tuYXZQcm9wTmFtZV0pO1xuXHRcdFx0XHRpZiAodGFyZ2V0RW50aXR5U2V0KSB7XG5cdFx0XHRcdFx0ZW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2UHJvcE5hbWVdID0gdGFyZ2V0RW50aXR5U2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGNhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMpIHtcblx0Y29uc3QgYW5ub3RhdGlvbkxpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4gPSB7fTtcblx0Zm9yIChjb25zdCB0YXJnZXQgaW4gYW5ub3RhdGlvbnMpIHtcblx0XHRjcmVhdGVBbm5vdGF0aW9uTGlzdHMoYW5ub3RhdGlvbnNbdGFyZ2V0XSwgdGFyZ2V0LCBhbm5vdGF0aW9uTGlzdHMsIGNhcGFiaWxpdGllcyk7XG5cdH1cblx0cmV0dXJuIE9iamVjdC52YWx1ZXMoYW5ub3RhdGlvbkxpc3RzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VTY2hlbWEobWV0YU1vZGVsRGF0YTogYW55KSB7XG5cdC8vIGFzc3VtaW5nIHRoZXJlIGlzIG9ubHkgb25lIHNjaGVtYS9uYW1lc3BhY2Vcblx0Y29uc3QgbmFtZXNwYWNlUHJlZml4ID0gT2JqZWN0LmtleXMobWV0YU1vZGVsRGF0YSkuZmluZCgoa2V5KSA9PiBtZXRhTW9kZWxEYXRhW2tleV0uJGtpbmQgPT09IFwiU2NoZW1hXCIpID8/IFwiXCI7XG5cblx0Y29uc3Qgc2NoZW1hOiBSYXdTY2hlbWEgPSB7XG5cdFx0bmFtZXNwYWNlOiBuYW1lc3BhY2VQcmVmaXguc2xpY2UoMCwgLTEpLFxuXHRcdGVudGl0eUNvbnRhaW5lcjogeyBfdHlwZTogXCJFbnRpdHlDb250YWluZXJcIiwgbmFtZTogXCJcIiwgZnVsbHlRdWFsaWZpZWROYW1lOiBcIlwiIH0sXG5cdFx0ZW50aXR5U2V0czogW10sXG5cdFx0ZW50aXR5VHlwZXM6IFtdLFxuXHRcdGNvbXBsZXhUeXBlczogW10sXG5cdFx0dHlwZURlZmluaXRpb25zOiBbXSxcblx0XHRzaW5nbGV0b25zOiBbXSxcblx0XHRhc3NvY2lhdGlvbnM6IFtdLFxuXHRcdGFzc29jaWF0aW9uU2V0czogW10sXG5cdFx0YWN0aW9uczogW10sXG5cdFx0YWN0aW9uSW1wb3J0czogW10sXG5cdFx0YW5ub3RhdGlvbnM6IHt9XG5cdH07XG5cblx0Y29uc3QgcGFyc2VNZXRhTW9kZWxFbGVtZW50ID0gKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuXHRcdHN3aXRjaCAodmFsdWUuJGtpbmQpIHtcblx0XHRcdGNhc2UgXCJFbnRpdHlDb250YWluZXJcIjpcblx0XHRcdFx0cGFyc2VFbnRpdHlDb250YWluZXIobmFtZXNwYWNlUHJlZml4LCBuYW1lLCB2YWx1ZSwgc2NoZW1hKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJBY3Rpb25cIjpcblx0XHRcdGNhc2UgXCJGdW5jdGlvblwiOlxuXHRcdFx0XHRzY2hlbWEuYWN0aW9ucy5wdXNoKHByZXBhcmVBY3Rpb24obmFtZSwgdmFsdWUsIG5hbWVzcGFjZVByZWZpeCkpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIkVudGl0eVR5cGVcIjpcblx0XHRcdFx0c2NoZW1hLmVudGl0eVR5cGVzLnB1c2gocHJlcGFyZUVudGl0eVR5cGUodmFsdWUsIG5hbWUsIG5hbWVzcGFjZVByZWZpeCwgbWV0YU1vZGVsRGF0YSkpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIkNvbXBsZXhUeXBlXCI6XG5cdFx0XHRcdHNjaGVtYS5jb21wbGV4VHlwZXMucHVzaChwcmVwYXJlQ29tcGxleFR5cGUodmFsdWUsIG5hbWUsIG5hbWVzcGFjZVByZWZpeCkpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlR5cGVEZWZpbml0aW9uXCI6XG5cdFx0XHRcdHNjaGVtYS50eXBlRGVmaW5pdGlvbnMucHVzaChwcmVwYXJlVHlwZURlZmluaXRpb24odmFsdWUsIG5hbWUsIG5hbWVzcGFjZVByZWZpeCkpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH07XG5cblx0Zm9yIChjb25zdCBlbGVtZW50TmFtZSBpbiBtZXRhTW9kZWxEYXRhKSB7XG5cdFx0Y29uc3QgZWxlbWVudFZhbHVlID0gbWV0YU1vZGVsRGF0YVtlbGVtZW50TmFtZV07XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50VmFsdWUpKSB7XG5cdFx0XHQvLyB2YWx1ZSBjYW4gYmUgYW4gYXJyYXkgaW4gY2FzZSBvZiBhY3Rpb25zIG9yIGZ1bmN0aW9uc1xuXHRcdFx0Zm9yIChjb25zdCBzdWJFbGVtZW50VmFsdWUgb2YgZWxlbWVudFZhbHVlKSB7XG5cdFx0XHRcdHBhcnNlTWV0YU1vZGVsRWxlbWVudChlbGVtZW50TmFtZSwgc3ViRWxlbWVudFZhbHVlKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cGFyc2VNZXRhTW9kZWxFbGVtZW50KGVsZW1lbnROYW1lLCBlbGVtZW50VmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBzY2hlbWE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1ldGFNb2RlbChcblx0bWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCxcblx0Y2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllcyA9IERlZmF1bHRFbnZpcm9ubWVudENhcGFiaWxpdGllc1xuKTogUmF3TWV0YWRhdGEge1xuXHRjb25zdCByZXN1bHQ6IE9taXQ8UmF3TWV0YWRhdGEsIFwic2NoZW1hXCI+ID0ge1xuXHRcdGlkZW50aWZpY2F0aW9uOiBcIm1ldGFtb2RlbFJlc3VsdFwiLFxuXHRcdHZlcnNpb246IFwiNC4wXCIsXG5cdFx0cmVmZXJlbmNlczogW11cblx0fTtcblxuXHQvLyBwYXJzZSB0aGUgc2NoZW1hIHdoZW4gaXQgaXMgYWNjZXNzZWQgZm9yIHRoZSBmaXJzdCB0aW1lXG5cdEFubm90YXRpb25Db252ZXJ0ZXIubGF6eShyZXN1bHQgYXMgUmF3TWV0YWRhdGEsIFwic2NoZW1hXCIsICgpID0+IHtcblx0XHRjb25zdCBtZXRhTW9kZWxEYXRhID0gbWV0YU1vZGVsLmdldE9iamVjdChcIi8kXCIpO1xuXHRcdGNvbnN0IHNjaGVtYSA9IHBhcnNlU2NoZW1hKG1ldGFNb2RlbERhdGEpO1xuXG5cdFx0QW5ub3RhdGlvbkNvbnZlcnRlci5sYXp5KHNjaGVtYS5hbm5vdGF0aW9ucywgXCJtZXRhbW9kZWxSZXN1bHRcIiwgKCkgPT4gcGFyc2VBbm5vdGF0aW9ucyhtZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9ucywgY2FwYWJpbGl0aWVzKSk7XG5cblx0XHRyZXR1cm4gc2NoZW1hO1xuXHR9KTtcblxuXHRyZXR1cm4gcmVzdWx0IGFzIFJhd01ldGFkYXRhO1xufVxuXG5jb25zdCBtTWV0YU1vZGVsTWFwOiBSZWNvcmQ8c3RyaW5nLCBDb252ZXJ0ZWRNZXRhZGF0YT4gPSB7fTtcblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBPRGF0YU1ldGFNb2RlbCBpbnRvIGFub3RoZXIgZm9ybWF0IHRoYXQgYWxsb3cgZm9yIGVhc3kgbWFuaXB1bGF0aW9uIG9mIHRoZSBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gb01ldGFNb2RlbCBUaGUgT0RhdGFNZXRhTW9kZWxcbiAqIEBwYXJhbSBvQ2FwYWJpbGl0aWVzIFRoZSBjdXJyZW50IGNhcGFiaWxpdGllc1xuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgb2JqZWN0LWxpa2UgYW5ub3RhdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCwgb0NhcGFiaWxpdGllcz86IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKTogQ29udmVydGVkTWV0YWRhdGEge1xuXHRjb25zdCBzTWV0YU1vZGVsSWQgPSAob01ldGFNb2RlbCBhcyBhbnkpLmlkO1xuXHRpZiAoIW1NZXRhTW9kZWxNYXAuaGFzT3duUHJvcGVydHkoc01ldGFNb2RlbElkKSkge1xuXHRcdGNvbnN0IHBhcnNlZE91dHB1dCA9IHBhcnNlTWV0YU1vZGVsKG9NZXRhTW9kZWwsIG9DYXBhYmlsaXRpZXMpO1xuXHRcdHRyeSB7XG5cdFx0XHRtTWV0YU1vZGVsTWFwW3NNZXRhTW9kZWxJZF0gPSBBbm5vdGF0aW9uQ29udmVydGVyLmNvbnZlcnQocGFyc2VkT3V0cHV0KTtcblx0XHR9IGNhdGNoIChvRXJyb3IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihvRXJyb3IgYXMgYW55KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1NZXRhTW9kZWxNYXBbc01ldGFNb2RlbElkXSBhcyBhbnkgYXMgQ29udmVydGVkTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb252ZXJ0ZWRUeXBlcyhvQ29udGV4dDogQ29udGV4dCkge1xuXHRjb25zdCBvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKSBhcyB1bmtub3duIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRpZiAoIW9NZXRhTW9kZWwuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTWV0YU1vZGVsXCIpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gYSBPRGF0YU1ldGFNb2RlbFwiKTtcblx0fVxuXHRyZXR1cm4gY29udmVydFR5cGVzKG9NZXRhTW9kZWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlTW9kZWxDYWNoZURhdGEob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpIHtcblx0ZGVsZXRlIG1NZXRhTW9kZWxNYXBbKG9NZXRhTW9kZWwgYXMgYW55KS5pZF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TWV0YU1vZGVsQ29udGV4dChvTWV0YU1vZGVsQ29udGV4dDogQ29udGV4dCwgYkluY2x1ZGVWaXNpdGVkT2JqZWN0czogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcblx0Y29uc3Qgb0NvbnZlcnRlZE1ldGFkYXRhID0gY29udmVydFR5cGVzKG9NZXRhTW9kZWxDb250ZXh0LmdldE1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRjb25zdCBzUGF0aCA9IG9NZXRhTW9kZWxDb250ZXh0LmdldFBhdGgoKTtcblxuXHRjb25zdCBhUGF0aFNwbGl0ID0gc1BhdGguc3BsaXQoXCIvXCIpO1xuXHRsZXQgZmlyc3RQYXJ0ID0gYVBhdGhTcGxpdFsxXTtcblx0bGV0IGJlZ2luSW5kZXggPSAyO1xuXHRpZiAob0NvbnZlcnRlZE1ldGFkYXRhLmVudGl0eUNvbnRhaW5lci5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZpcnN0UGFydCkge1xuXHRcdGZpcnN0UGFydCA9IGFQYXRoU3BsaXRbMl07XG5cdFx0YmVnaW5JbmRleCsrO1xuXHR9XG5cdGxldCB0YXJnZXRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IFNpbmdsZXRvbiA9IG9Db252ZXJ0ZWRNZXRhZGF0YS5lbnRpdHlTZXRzLmZpbmQoXG5cdFx0KGVudGl0eVNldCkgPT4gZW50aXR5U2V0Lm5hbWUgPT09IGZpcnN0UGFydFxuXHQpIGFzIEVudGl0eVNldDtcblx0aWYgKCF0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHR0YXJnZXRFbnRpdHlTZXQgPSBvQ29udmVydGVkTWV0YWRhdGEuc2luZ2xldG9ucy5maW5kKChzaW5nbGV0b24pID0+IHNpbmdsZXRvbi5uYW1lID09PSBmaXJzdFBhcnQpIGFzIFNpbmdsZXRvbjtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoID0gYVBhdGhTcGxpdC5zbGljZShiZWdpbkluZGV4KS5qb2luKFwiL1wiKTtcblxuXHRjb25zdCBsb2NhbE9iamVjdHM6IGFueVtdID0gW3RhcmdldEVudGl0eVNldF07XG5cdHdoaWxlIChyZWxhdGl2ZVBhdGggJiYgcmVsYXRpdmVQYXRoLmxlbmd0aCA+IDAgJiYgcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiKSkge1xuXHRcdGxldCByZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRsZXQgaWR4ID0gMDtcblx0XHRsZXQgY3VycmVudEVudGl0eVNldCwgc05hdlByb3BUb0NoZWNrO1xuXG5cdFx0cmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlU3BsaXQuc2xpY2UoMSk7IC8vIFJlbW92aW5nIFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIlxuXHRcdHdoaWxlICghY3VycmVudEVudGl0eVNldCAmJiByZWxhdGl2ZVNwbGl0Lmxlbmd0aCA+IGlkeCkge1xuXHRcdFx0aWYgKHJlbGF0aXZlU3BsaXRbaWR4XSAhPT0gXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiKSB7XG5cdFx0XHRcdC8vIEZpbmRpbmcgdGhlIGNvcnJlY3QgZW50aXR5U2V0IGZvciB0aGUgbmF2aWdhaXRvbiBwcm9wZXJ0eSBiaW5kaW5nIGV4YW1wbGU6IFwiU2V0L19TYWxlc09yZGVyXCJcblx0XHRcdFx0c05hdlByb3BUb0NoZWNrID0gcmVsYXRpdmVTcGxpdFxuXHRcdFx0XHRcdC5zbGljZSgwLCBpZHggKyAxKVxuXHRcdFx0XHRcdC5qb2luKFwiL1wiKVxuXHRcdFx0XHRcdC5yZXBsYWNlKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCIsIFwiXCIpO1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gdGFyZ2V0RW50aXR5U2V0ICYmIHRhcmdldEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3NOYXZQcm9wVG9DaGVja107XG5cdFx0XHR9XG5cdFx0XHRpZHgrKztcblx0XHR9XG5cdFx0aWYgKCFjdXJyZW50RW50aXR5U2V0KSB7XG5cdFx0XHQvLyBGYWxsIGJhY2sgdG8gU2luZ2xlIG5hdiBwcm9wIGlmIGVudGl0eVNldCBpcyBub3QgZm91bmQuXG5cdFx0XHRzTmF2UHJvcFRvQ2hlY2sgPSByZWxhdGl2ZVNwbGl0WzBdO1xuXHRcdH1cblx0XHRjb25zdCBhTmF2UHJvcHMgPSBzTmF2UHJvcFRvQ2hlY2s/LnNwbGl0KFwiL1wiKSB8fCBbXTtcblx0XHRsZXQgdGFyZ2V0RW50aXR5VHlwZSA9IHRhcmdldEVudGl0eVNldCAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHRmb3IgKGNvbnN0IHNOYXZQcm9wIG9mIGFOYXZQcm9wcykge1xuXHRcdFx0Ly8gUHVzaGluZyBhbGwgbmF2IHByb3BzIHRvIHRoZSB2aXNpdGVkIG9iamVjdHMuIGV4YW1wbGU6IFwiU2V0XCIsIFwiX1NhbGVzT3JkZXJcIiBmb3IgXCJTZXQvX1NhbGVzT3JkZXJcIihpbiBOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKVxuXHRcdFx0Y29uc3QgdGFyZ2V0TmF2UHJvcCA9IHRhcmdldEVudGl0eVR5cGUgJiYgdGFyZ2V0RW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChuYXZQcm9wKSA9PiBuYXZQcm9wLm5hbWUgPT09IHNOYXZQcm9wKTtcblx0XHRcdGlmICh0YXJnZXROYXZQcm9wKSB7XG5cdFx0XHRcdGxvY2FsT2JqZWN0cy5wdXNoKHRhcmdldE5hdlByb3ApO1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlUeXBlID0gdGFyZ2V0TmF2UHJvcC50YXJnZXRUeXBlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRhcmdldEVudGl0eVNldCA9XG5cdFx0XHQodGFyZ2V0RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQpIHx8ICh0YXJnZXRFbnRpdHlTZXQgJiYgdGFyZ2V0RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbcmVsYXRpdmVTcGxpdFswXV0pO1xuXHRcdGlmICh0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHRcdC8vIFB1c2hpbmcgdGhlIHRhcmdldCBlbnRpdHlTZXQgdG8gdmlzaXRlZCBvYmplY3RzXG5cdFx0XHRsb2NhbE9iamVjdHMucHVzaCh0YXJnZXRFbnRpdHlTZXQpO1xuXHRcdH1cblx0XHQvLyBSZS1jYWxjdWxhdGluZyB0aGUgcmVsYXRpdmUgcGF0aFxuXHRcdC8vIEFzIGVhY2ggbmF2aWdhdGlvbiBuYW1lIGlzIGVuY2xvc2VkIGJldHdlZW4gJyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nJyBhbmQgJyQnICh0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgZW50aXR5c2V0IGVhc2lseSBpbiB0aGUgbWV0YW1vZGVsKVxuXHRcdC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBjbG9zaW5nICckJyB0byBiZSBhYmxlIHRvIHN3aXRjaCB0byB0aGUgbmV4dCBuYXZpZ2F0aW9uXG5cdFx0cmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlU3BsaXQuc2xpY2UoYU5hdlByb3BzLmxlbmd0aCB8fCAxKTtcblx0XHRpZiAocmVsYXRpdmVTcGxpdC5sZW5ndGggJiYgcmVsYXRpdmVTcGxpdFswXSA9PT0gXCIkXCIpIHtcblx0XHRcdHJlbGF0aXZlU3BsaXQuc2hpZnQoKTtcblx0XHR9XG5cdFx0cmVsYXRpdmVQYXRoID0gcmVsYXRpdmVTcGxpdC5qb2luKFwiL1wiKTtcblx0fVxuXHRpZiAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIkVHlwZVwiKSkge1xuXHRcdC8vIEFzICRUeXBlQCBpcyBhbGxvd2VkIGFzIHdlbGxcblx0XHRpZiAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIkVHlwZUBcIikpIHtcblx0XHRcdHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aC5yZXBsYWNlKFwiJFR5cGVcIiwgXCJcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlJ3JlIGFueXdheSBnb2luZyB0byBsb29rIG9uIHRoZSBlbnRpdHlUeXBlLi4uXG5cdFx0XHRyZWxhdGl2ZVBhdGggPSBhUGF0aFNwbGl0LnNsaWNlKDMpLmpvaW4oXCIvXCIpO1xuXHRcdH1cblx0fVxuXHRpZiAodGFyZ2V0RW50aXR5U2V0ICYmIHJlbGF0aXZlUGF0aC5sZW5ndGgpIHtcblx0XHRjb25zdCBvVGFyZ2V0ID0gdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUucmVzb2x2ZVBhdGgocmVsYXRpdmVQYXRoLCBiSW5jbHVkZVZpc2l0ZWRPYmplY3RzKTtcblx0XHRpZiAob1RhcmdldCkge1xuXHRcdFx0aWYgKGJJbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcblx0XHRcdFx0b1RhcmdldC52aXNpdGVkT2JqZWN0cyA9IGxvY2FsT2JqZWN0cy5jb25jYXQob1RhcmdldC52aXNpdGVkT2JqZWN0cyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZS5hY3Rpb25zKSB7XG5cdFx0XHQvLyBpZiB0YXJnZXQgaXMgYW4gYWN0aW9uIG9yIGFuIGFjdGlvbiBwYXJhbWV0ZXJcblx0XHRcdGNvbnN0IGFjdGlvbnMgPSB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZS5hY3Rpb25zO1xuXHRcdFx0Y29uc3QgcmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlUGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRpZiAoYWN0aW9uc1tyZWxhdGl2ZVNwbGl0WzBdXSkge1xuXHRcdFx0XHRjb25zdCBhY3Rpb24gPSBhY3Rpb25zW3JlbGF0aXZlU3BsaXRbMF1dO1xuXHRcdFx0XHRpZiAocmVsYXRpdmVTcGxpdFsxXSAmJiBhY3Rpb24ucGFyYW1ldGVycykge1xuXHRcdFx0XHRcdGNvbnN0IHBhcmFtZXRlck5hbWUgPSByZWxhdGl2ZVNwbGl0WzFdO1xuXHRcdFx0XHRcdHJldHVybiBhY3Rpb24ucGFyYW1ldGVycy5maW5kKChwYXJhbWV0ZXIpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbWV0ZXIuZnVsbHlRdWFsaWZpZWROYW1lLmVuZHNXaXRoKGAvJHtwYXJhbWV0ZXJOYW1lfWApO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHJlbGF0aXZlUGF0aC5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRyZXR1cm4gYWN0aW9uO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvVGFyZ2V0O1xuXHR9IGVsc2Uge1xuXHRcdGlmIChiSW5jbHVkZVZpc2l0ZWRPYmplY3RzKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0YXJnZXQ6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0dmlzaXRlZE9iamVjdHM6IGxvY2FsT2JqZWN0c1xuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHRhcmdldEVudGl0eVNldDtcblx0fVxufVxuXG5leHBvcnQgdHlwZSBSZXNvbHZlZFRhcmdldCA9IHtcblx0dGFyZ2V0PzogU2VydmljZU9iamVjdDtcblx0dmlzaXRlZE9iamVjdHM6IFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9NZXRhTW9kZWxDb250ZXh0OiBDb250ZXh0LCBvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dD86IENvbnRleHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3Qgb0NvbnZlcnRlZE1ldGFkYXRhID0gY29udmVydFR5cGVzKG9NZXRhTW9kZWxDb250ZXh0LmdldE1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRjb25zdCBtZXRhTW9kZWxDb250ZXh0ID0gY29udmVydE1ldGFNb2RlbENvbnRleHQob01ldGFNb2RlbENvbnRleHQsIHRydWUpO1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb247XG5cdGlmIChvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCAmJiBvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dC5nZXRQYXRoKCkgIT09IFwiL1wiKSB7XG5cdFx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24gPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob0VudGl0eVNldE1ldGFNb2RlbENvbnRleHQpO1xuXHR9XG5cdHJldHVybiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdEZyb21QYXRoKG1ldGFNb2RlbENvbnRleHQsIG9Db252ZXJ0ZWRNZXRhZGF0YSwgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RGcm9tUGF0aChcblx0bWV0YU1vZGVsQ29udGV4dDogUmVzb2x2ZWRUYXJnZXQsXG5cdGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZWRNZXRhZGF0YSxcblx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRvbmx5U2VydmljZU9iamVjdHM6IGJvb2xlYW4gPSBmYWxzZVxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdHMgPSBtZXRhTW9kZWxDb250ZXh0LnZpc2l0ZWRPYmplY3RzLmZpbHRlcihcblx0XHQodmlzaXRlZE9iamVjdCkgPT4gaXNTZXJ2aWNlT2JqZWN0KHZpc2l0ZWRPYmplY3QpICYmICFpc0VudGl0eVR5cGUodmlzaXRlZE9iamVjdCkgJiYgIWlzRW50aXR5Q29udGFpbmVyKHZpc2l0ZWRPYmplY3QpXG5cdCk7XG5cdGlmIChcblx0XHRpc1NlcnZpY2VPYmplY3QobWV0YU1vZGVsQ29udGV4dC50YXJnZXQpICYmXG5cdFx0IWlzRW50aXR5VHlwZShtZXRhTW9kZWxDb250ZXh0LnRhcmdldCkgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RzW2RhdGFNb2RlbE9iamVjdHMubGVuZ3RoIC0gMV0gIT09IG1ldGFNb2RlbENvbnRleHQudGFyZ2V0ICYmXG5cdFx0IW9ubHlTZXJ2aWNlT2JqZWN0c1xuXHQpIHtcblx0XHRkYXRhTW9kZWxPYmplY3RzLnB1c2gobWV0YU1vZGVsQ29udGV4dC50YXJnZXQpO1xuXHR9XG5cblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdGNvbnN0IHJvb3RFbnRpdHlTZXQ6IEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdHNbMF0gYXMgRW50aXR5U2V0O1xuXG5cdGxldCBjdXJyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBTaW5nbGV0b24gfCB1bmRlZmluZWQgPSByb290RW50aXR5U2V0O1xuXHRsZXQgY3VycmVudEVudGl0eVR5cGU6IEVudGl0eVR5cGUgPSByb290RW50aXR5U2V0LmVudGl0eVR5cGU7XG5cdGxldCBjdXJyZW50T2JqZWN0OiBTZXJ2aWNlT2JqZWN0QW5kQW5ub3RhdGlvbiB8IHVuZGVmaW5lZDtcblx0bGV0IG5hdmlnYXRlZFBhdGggPSBbXTtcblxuXHRmb3IgKGxldCBpID0gMTsgaSA8IGRhdGFNb2RlbE9iamVjdHMubGVuZ3RoOyBpKyspIHtcblx0XHRjdXJyZW50T2JqZWN0ID0gZGF0YU1vZGVsT2JqZWN0c1tpXTtcblxuXHRcdGlmIChpc05hdmlnYXRpb25Qcm9wZXJ0eShjdXJyZW50T2JqZWN0KSkge1xuXHRcdFx0bmF2aWdhdGVkUGF0aC5wdXNoKGN1cnJlbnRPYmplY3QubmFtZSk7XG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKGN1cnJlbnRPYmplY3QpO1xuXHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBjdXJyZW50T2JqZWN0LnRhcmdldFR5cGU7XG5cdFx0XHRjb25zdCBib3VuZEVudGl0eVNldDogRW50aXR5U2V0IHwgU2luZ2xldG9uIHwgdW5kZWZpbmVkID0gY3VycmVudEVudGl0eVNldD8ubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0ZWRQYXRoLmpvaW4oXCIvXCIpXTtcblx0XHRcdGlmIChib3VuZEVudGl0eVNldCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBib3VuZEVudGl0eVNldDtcblx0XHRcdFx0bmF2aWdhdGVkUGF0aCA9IFtdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoaXNFbnRpdHlTZXQoY3VycmVudE9iamVjdCkgfHwgaXNTaW5nbGV0b24oY3VycmVudE9iamVjdCkpIHtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50T2JqZWN0O1xuXHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBjdXJyZW50RW50aXR5U2V0LmVudGl0eVR5cGU7XG5cdFx0fVxuXHR9XG5cblx0aWYgKG5hdmlnYXRlZFBhdGgubGVuZ3RoID4gMCkge1xuXHRcdC8vIFBhdGggd2l0aG91dCBOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIC0tPiBubyB0YXJnZXQgZW50aXR5IHNldFxuXHRcdGN1cnJlbnRFbnRpdHlTZXQgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRpZiAodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24gJiYgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb24uc3RhcnRpbmdFbnRpdHlTZXQgIT09IHJvb3RFbnRpdHlTZXQpIHtcblx0XHQvLyBJbiBjYXNlIHRoZSBlbnRpdHlzZXQgaXMgbm90IHN0YXJ0aW5nIGZyb20gdGhlIHNhbWUgbG9jYXRpb24gaXQgbWF5IG1lYW4gdGhhdCB3ZSBhcmUgZG9pbmcgdG9vIG11Y2ggd29yayBlYXJsaWVyIGZvciBzb21lIHJlYXNvblxuXHRcdC8vIEFzIHN1Y2ggd2UgbmVlZCB0byByZWRlZmluZSB0aGUgY29udGV4dCBzb3VyY2UgZm9yIHRoZSB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvblxuXHRcdGNvbnN0IHN0YXJ0aW5nSW5kZXggPSBkYXRhTW9kZWxPYmplY3RzLmluZGV4T2YodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24uc3RhcnRpbmdFbnRpdHlTZXQpO1xuXHRcdGlmIChzdGFydGluZ0luZGV4ICE9PSAtMSkge1xuXHRcdFx0Ly8gSWYgaXQncyBub3QgZm91bmQgSSBkb24ndCBrbm93IHdoYXQgd2UgY2FuIGRvIChwcm9iYWJseSBub3RoaW5nKVxuXHRcdFx0Y29uc3QgcmVxdWlyZWREYXRhTW9kZWxPYmplY3RzID0gZGF0YU1vZGVsT2JqZWN0cy5zbGljZSgwLCBzdGFydGluZ0luZGV4KTtcblx0XHRcdHRhcmdldEVudGl0eVNldExvY2F0aW9uLnN0YXJ0aW5nRW50aXR5U2V0ID0gcm9vdEVudGl0eVNldDtcblx0XHRcdHRhcmdldEVudGl0eVNldExvY2F0aW9uLm5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gcmVxdWlyZWREYXRhTW9kZWxPYmplY3RzXG5cdFx0XHRcdC5maWx0ZXIoaXNOYXZpZ2F0aW9uUHJvcGVydHkpXG5cdFx0XHRcdC5jb25jYXQodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgYXMgTmF2aWdhdGlvblByb3BlcnR5W10pO1xuXHRcdH1cblx0fVxuXHRjb25zdCBvdXREYXRhTW9kZWxQYXRoID0ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiByb290RW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHR0YXJnZXRPYmplY3Q6IG1ldGFNb2RlbENvbnRleHQudGFyZ2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLFxuXHRcdGNvbnRleHRMb2NhdGlvbjogdGFyZ2V0RW50aXR5U2V0TG9jYXRpb24sXG5cdFx0Y29udmVydGVkVHlwZXM6IGNvbnZlcnRlZFR5cGVzXG5cdH07XG5cdGlmICghaXNTZXJ2aWNlT2JqZWN0KG91dERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0KSAmJiBvbmx5U2VydmljZU9iamVjdHMpIHtcblx0XHRvdXREYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCA9IGlzU2VydmljZU9iamVjdChjdXJyZW50T2JqZWN0KSA/IGN1cnJlbnRPYmplY3QgOiB1bmRlZmluZWQ7XG5cdH1cblx0aWYgKCFvdXREYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbikge1xuXHRcdG91dERhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uID0gb3V0RGF0YU1vZGVsUGF0aDtcblx0fVxuXHRyZXR1cm4gb3V0RGF0YU1vZGVsUGF0aDtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7O0VBMENBLE1BQU1BLGdCQUFxQixHQUFHO0lBQzdCLDJCQUEyQixFQUFFLGNBQWM7SUFDM0MsbUJBQW1CLEVBQUUsTUFBTTtJQUMzQix1QkFBdUIsRUFBRSxVQUFVO0lBQ25DLGdDQUFnQyxFQUFFLFFBQVE7SUFDMUMsNEJBQTRCLEVBQUUsSUFBSTtJQUNsQyxpQ0FBaUMsRUFBRSxTQUFTO0lBQzVDLG1DQUFtQyxFQUFFLFdBQVc7SUFDaEQsc0NBQXNDLEVBQUUsY0FBYztJQUN0RCx1Q0FBdUMsRUFBRTtFQUMxQyxD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
|