@sapui5/sap.fe.core 1.124.4 → 1.124.6

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.
@@ -410,4 +410,4 @@ sap.ui.define(["sap/base/Log", "sap/base/i18n/Localization", "sap/fe/core/Templa
410
410
  }(ServiceFactory);
411
411
  return TemplatedViewServiceFactory;
412
412
  }, false);
413
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZWRWaWV3U2VydmljZSIsImluaXQiLCJhU2VydmljZURlcGVuZGVuY2llcyIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsIm9Db21wb25lbnQiLCJzY29wZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJwYWdlSWQiLCJnZXRMb2NhbElkIiwiZ2V0SWQiLCJzU3RhYmxlSWQiLCJnZXRNZXRhZGF0YSIsImdldENvbXBvbmVudE5hbWUiLCJhRW5oYW5jZUkxOG4iLCJnZXRFbmhhbmNlSTE4biIsInNBcHBOYW1lc3BhY2UiLCJvRmFjdG9yeSIsImZhY3RvcnkiLCJpIiwibGVuZ3RoIiwib1Jlc291cmNlTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsInJlcGxhY2UiLCJzQ2FjaGVJZGVudGlmaWVyIiwiZ2V0TmFtZSIsIkxvY2FsaXphdGlvbiIsImdldExhbmd1YWdlVGFnIiwicHVzaCIsIlNlcnZpY2VGYWN0b3J5UmVnaXN0cnkiLCJnZXQiLCJjcmVhdGVJbnN0YW5jZSIsInNjb3BlVHlwZSIsInNldHRpbmdzIiwiYnVuZGxlcyIsImVuaGFuY2VJMThuIiwibW9kZWxOYW1lIiwidGhlbiIsIm9SZXNvdXJjZU1vZGVsU2VydmljZSIsImdldFJlc291cmNlTW9kZWwiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJjb21wb25lbnQiLCJvQ2FjaGVIYW5kbGVyU2VydmljZSIsInZhbGlkYXRlQ2FjaGVLZXkiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsIlZlcnNpb25JbmZvIiwibG9hZCIsIm9JbmZvIiwic1RpbWVzdGFtcCIsImxpYnJhcmllcyIsInNhcCIsInVpIiwiYnVpbGRpbmZvIiwiYnVpbGR0aW1lIiwiZm9yRWFjaCIsIm9MaWJyYXJ5IiwiYnVpbGRUaW1lc3RhbXAiLCJjYXRjaCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsImFsbCIsImFEZXBlbmRlbmNpZXNSZXN1bHQiLCJzQ2FjaGVLZXkiLCJUZW1wbGF0ZUNvbnZlcnRlciIsIk1ldGFNb2RlbENvbnZlcnRlciIsInJlcXVpcmVEZXBlbmRlbmNpZXMiLCJjcmVhdGVWaWV3IiwiZ2V0SW5zdGFuY2UiLCJpbnZhbGlkYXRlSWZOZWVkZWQiLCJyZWZyZXNoVmlldyIsIm9Sb290VmlldyIsImdldFJvb3RDb250cm9sIiwiZGVzdHJveSIsIm9WaWV3IiwicmVzb3VyY2VNb2RlbCIsInN0YWJsZUlkIiwiZ2V0VUlBcmVhIiwiaW52YWxpZGF0ZSIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwiX2dldFZpZXdTZXR0aW5ncyIsInByZXByb2Nlc3NvckNvbnRleHQiLCJtU2VydmljZVNldHRpbmdzIiwibVZpZXdEYXRhIiwib1BhZ2VNb2RlbCIsInZpZXdUeXBlIiwiZ2V0Vmlld1R5cGUiLCJ1bmRlZmluZWQiLCJ0eXBlIiwicHJlcHJvY2Vzc29ycyIsInhtbCIsImNvbnRyb2xzIiwiaWQiLCJ2aWV3TmFtZSIsImdldFZpZXdOYW1lIiwidmlld0RhdGEiLCJjYWNoZSIsImtleXMiLCJhZGRpdGlvbmFsRGF0YSIsImdldEFkZGl0aW9uYWxDYWNoZURhdGEiLCJnZXREYXRhIiwic2V0QWRkaXRpb25hbENhY2hlRGF0YSIsInZhbHVlIiwic2V0RGF0YSIsIm1vZGVscyIsImhlaWdodCIsIl9jcmVhdGVFcnJvclBhZ2UiLCJyZWFzb24iLCJvVmlld1NldHRpbmdzIiwibWVzc2FnZSIsIkpTT05Nb2RlbCIsInJ1bkFzT3duZXIiLCJWaWV3IiwiY3JlYXRlIiwic2V0TW9kZWwiLCJzZXRBZ2dyZWdhdGlvbiIsInNDb252ZXJ0ZXJUeXBlIiwiY29udmVydGVyVHlwZSIsInNGdWxsQ29udGV4dFBhdGgiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldEluZm9ybWF0aW9uRm9yIiwib3B0aW9ucyIsImZ1bGxDb250ZXh0UGF0aCIsIm9NYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsIm9EZXZpY2VNb2RlbCIsIkRldmljZSIsInNldERlZmF1bHRCaW5kaW5nTW9kZSIsIm9NYW5pZmVzdE1vZGVsIiwib1ZpZXdEYXRhTW9kZWwiLCJvUm91dGluZ1NlcnZpY2UiLCJnZXRTZXJ2aWNlIiwib1RhcmdldEluZm8iLCJtT3V0Ym91bmRzIiwiY3Jvc3NOYXZpZ2F0aW9uIiwib3V0Ym91bmRzIiwibU5hdmlnYXRpb24iLCJnZXROYXZpZ2F0aW9uIiwiX2VuaGFuY2VOYXZpZ2F0aW9uQ29uZmlnIiwiY29udmVydGVkTWV0YWRhdGEiLCJjb252ZXJ0VHlwZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJuYXZpZ2F0aW9uIiwidmlld0xldmVsIiwiY29udGVudERlbnNpdGllcyIsImlzRGVza3RvcCIsInN5c3RlbSIsImRlc2t0b3AiLCJpc1Bob25lIiwicGhvbmUiLCJUZW1wbGF0ZVR5cGUiLCJGcmVlU3R5bGVQYWdlIiwiZ2V0Vmlld0RhdGEiLCJPYmplY3QiLCJhc3NpZ24iLCJUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkiLCJzZXRQYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMiLCJpc1NoYXJlQnV0dG9uVmlzaWJsZUZvck15SW5ib3giLCJnZXRTaGFyZUJ1dHRvblZpc2liaWxpdHlGb3JNeUluYm94Iiwib1NoZWxsU2VydmljZXMiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2hlbGxDb250ZW50RGVuc2l0eSIsImdldENvbnRlbnREZW5zaXR5IiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImZvcm0iLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNBbm5vdGF0aW9uUGF0aCIsImluY2x1ZGVzIiwic1RhcmdldEFubm90YXRpb25QYXRoIiwicmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uIiwiVGVtcGxhdGVNb2RlbCIsIm9EaWFnbm9zdGljcyIsImdldERpYWdub3N0aWNzIiwiaUlzc3VlQ291bnQiLCJnZXRJc3N1ZXMiLCJvQ29udmVydGVyUGFnZU1vZGVsIiwiY29udmVydFBhZ2UiLCJhSXNzdWVzIiwiYUFkZGVkSXNzdWVzIiwic2xpY2UiLCJ3YXJuaW5nIiwiYVNwbGl0UGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJfZ2V0RnVsbFBhdGhUb0VudGl0eVNldCIsImJpbmRpbmdDb250ZXh0cyIsImVudGl0eVNldCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udGV4dFBhdGgiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwiZGV2aWNlIiwibWFuaWZlc3QiLCJnZXRDb252ZXJ0ZWRNZXRhZGF0YSIsInNldFByZXByb2Nlc3NvckNvbnRleHQiLCJ2aWV3SlNPTk1vZGVsIiwiTW9kZWxIZWxwZXIiLCJlbmhhbmNlVmlld0pTT05Nb2RlbCIsImVycm9yVmlld05hbWUiLCJlIiwiRXJyb3IiLCJuYXZpZ2F0aW9uT2JqZWN0S2V5IiwibmF2aWdhdGlvbk9iamVjdCIsIm91dGJvdW5kQ29uZmlnIiwiZGV0YWlsIiwib3V0Ym91bmQiLCJvdXRib3VuZERldGFpbCIsInNlbWFudGljT2JqZWN0IiwiYWN0aW9uIiwicGFyYW1ldGVycyIsInJlZHVjZSIsInNQYXRoU29GYXIiLCJzTmV4dFBhdGhQYXJ0Iiwib1RhcmdldCIsImdldE9iamVjdCIsImdldFZpZXciLCJnZXRJbnRlcmZhY2UiLCJleGl0IiwicmVtb3ZlR2xvYmFsSW5zdGFuY2UiLCJTZXJ2aWNlIiwiX29JbnN0YW5jZVJlZ2lzdHJ5Iiwib1NlcnZpY2VDb250ZXh0IiwiaUNyZWF0aW5nVmlld3MiLCJvVGVtcGxhdGVkVmlld1NlcnZpY2UiLCJjb21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsImZlRW52aXJvbm1lbnQiLCJnZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5IiwiZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSIsInRhcmdldHMiLCJyb3V0aW5nIiwicmVhbFRhcmdldCIsInRhcmdldFRvRmluZCIsImFjdHVhbFNldHRpbmdzIiwiYXBwbHlQYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMiLCJTZXJ2aWNlRmFjdG9yeSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IExvY2FsaXphdGlvbiBmcm9tIFwic2FwL2Jhc2UvaTE4bi9Mb2NhbGl6YXRpb25cIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudERhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNlbWFudGljT2JqZWN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24sIFhNTFByZXByb2Nlc3NvckNvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCBUZW1wbGF0ZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFN1cnZleUNvbmZpZyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9GZWVkYmFja1wiO1xuaW1wb3J0IHR5cGUge1xuXHRCYXNlTWFuaWZlc3RTZXR0aW5ncyxcblx0Q29udGVudERlbnNpdGllc1R5cGUsXG5cdENvbnRyb2xDb25maWd1cmF0aW9uLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0TWFuaWZlc3RIZWFkZXJGYWNldCxcblx0VmFyaWFudE1hbmFnZW1lbnRUeXBlXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IFRlbXBsYXRlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlICogYXMgX01ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlICogYXMgX1RlbXBsYXRlQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZVJlY29yZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyByZXF1aXJlRGVwZW5kZW5jaWVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTG9hZGVyVXRpbHNcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgYXBwbHlQYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvbWFuaWZlc3RNZXJnZXIvQ2hhbmdlUGFnZUNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgQ2FjaGVIYW5kbGVyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9DYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IFZlcnNpb25JbmZvIGZyb20gXCJzYXAvdWkvVmVyc2lvbkluZm9cIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdENvbnRlbnQsIE1hbmlmZXN0T3V0Ym91bmRFbnRyeSwgU2hhcmVPcHRpb25zIH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5pbXBvcnQgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCBTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZUZhY3RvcnlSZWdpc3RyeVwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSBcInR5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvRHluYW1pY0Fubm90YXRpb25QYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlTW9kZWxTZXJ2aWNlIH0gZnJvbSBcIi4vUmVzb3VyY2VNb2RlbFNlcnZpY2VGYWN0b3J5XCI7XG50eXBlIFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3MgPSB7XG5cdHZpZXdUeXBlPzogc3RyaW5nO1xuXHR2aWV3TmFtZT86IHN0cmluZztcbn07XG5cbnR5cGUgVmlld1NldHRpbmdzID0gUGFyYW1ldGVyczx0eXBlb2YgVmlldy5jcmVhdGU+WzBdICYgeyBjYWNoZTogdW5rbm93bjsgbW9kZWxzOiB1bmtub3duOyBoZWlnaHQ6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgVmlld0RhdGEgPSB7XG5cdGhpZGVGaWx0ZXJCYXI/OiBib29sZWFuO1xuXHR1c2VIaWRkZW5GaWx0ZXJCYXI/OiBib29sZWFuO1xuXHRhZGRpdGlvbmFsU2VtYW50aWNPYmplY3RzPzogUmVjb3JkPHN0cmluZywgU2VtYW50aWNPYmplY3Q+O1xuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblx0bmF2aWdhdGlvbjogb2JqZWN0O1xuXHR2aWV3TGV2ZWw6IG51bWJlcjtcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBWYXJpYW50TWFuYWdlbWVudFR5cGU7XG5cdHN0YWJsZUlkOiBzdHJpbmc7XG5cdGNvbnRlbnREZW5zaXRpZXM/OiBDb250ZW50RGVuc2l0aWVzVHlwZTtcblx0cmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbDtcblx0ZnVsbENvbnRleHRQYXRoOiBzdHJpbmc7XG5cdGlzRGVza3RvcDogYm9vbGVhbjtcblx0aXNQaG9uZTogYm9vbGVhbjtcblx0Y29udmVydGVyVHlwZTogVGVtcGxhdGVUeXBlO1xuXHRzaGVsbENvbnRlbnREZW5zaXR5Pzogc3RyaW5nO1xuXHR1c2VOZXdMYXp5TG9hZGluZz86IGJvb2xlYW47XG5cdGluaXRpYWxMb2FkPzogc3RyaW5nO1xuXHRsaXZlTW9kZT86IGJvb2xlYW47XG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q/OiBib29sZWFuO1xuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IENvbnRyb2xDb25maWd1cmF0aW9uO1xuXHRyZWZyZXNoU3RyYXRlZ3lPbkFwcFJlc3RvcmU/OiB1bmtub3duO1xuXHRlbnRpdHlTZXQ/OiBzdHJpbmc7XG5cdGlzU2hhcmVCdXR0b25WaXNpYmxlRm9yTXlJbmJveD86IGJvb2xlYW47XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRzaGFyZT86IFNoYXJlT3B0aW9ucztcblx0Y29udGVudD86IHtcblx0XHRmZWVkYmFjaz86IHsgYWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIFN1cnZleUNvbmZpZz47IHN0YW5kYXJkQWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIFN1cnZleUNvbmZpZz4gfTtcblx0XHRoZWFkZXI/OiB7XG5cdFx0XHRmYWNldHM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RIZWFkZXJGYWNldD47XG5cdFx0XHRhY3Rpb25zPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPjtcblx0XHR9O1xuXHRcdGZvb3Rlcj86IHtcblx0XHRcdGFjdGlvbnM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+O1xuXHRcdH07XG5cdH07XG59O1xuY2xhc3MgVGVtcGxhdGVkVmlld1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+IHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdG9WaWV3ITogVmlldztcblxuXHRvUmVzb3VyY2VNb2RlbFNlcnZpY2UhOiBSZXNvdXJjZU1vZGVsU2VydmljZTtcblxuXHRvQ2FjaGVIYW5kbGVyU2VydmljZSE6IENhY2hlSGFuZGxlclNlcnZpY2U7XG5cblx0b0ZhY3RvcnkhOiBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3Rvcnk7XG5cblx0cmVzb3VyY2VNb2RlbCE6IFJlc291cmNlTW9kZWw7XG5cblx0c3RhYmxlSWQhOiBzdHJpbmc7XG5cblx0cGFnZUlkITogc3RyaW5nO1xuXG5cdFRlbXBsYXRlQ29udmVydGVyPzogdHlwZW9mIF9UZW1wbGF0ZUNvbnZlcnRlcjtcblxuXHRNZXRhTW9kZWxDb252ZXJ0ZXI/OiB0eXBlb2YgX01ldGFNb2RlbENvbnZlcnRlcjtcblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IGFTZXJ2aWNlRGVwZW5kZW5jaWVzID0gW107XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblx0XHRjb25zdCBvQ29tcG9uZW50ID0gb0NvbnRleHQuc2NvcGVPYmplY3Q7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihvQ29tcG9uZW50KSBhcyBBcHBDb21wb25lbnQ7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0dGhpcy5wYWdlSWQgPSBvQXBwQ29tcG9uZW50LmdldExvY2FsSWQob0NvbXBvbmVudC5nZXRJZCgpKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3Qgc1N0YWJsZUlkID0gYCR7b0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpLmdldENvbXBvbmVudE5hbWUoKX06OiR7dGhpcy5wYWdlSWR9YDtcblx0XHRjb25zdCBhRW5oYW5jZUkxOG4gPSBvQ29tcG9uZW50LmdldEVuaGFuY2VJMThuKCkgfHwgW107XG5cdFx0bGV0IHNBcHBOYW1lc3BhY2U7XG5cdFx0dGhpcy5vRmFjdG9yeSA9IG9Db250ZXh0LmZhY3Rvcnk7XG5cdFx0aWYgKGFFbmhhbmNlSTE4bikge1xuXHRcdFx0c0FwcE5hbWVzcGFjZSA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKS5nZXRDb21wb25lbnROYW1lKCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFFbmhhbmNlSTE4bi5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRleHQtdmVydGljYWxpemF0aW9uIGFwcGxpY2F0aW9ucyBjYW4gYWxzbyBwYXNzIGEgcmVzb3VyY2UgbW9kZWwgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdFx0Ly8gVUk1IHRha2VzIGNhcmUgb2YgdGV4dC12ZXJ0aWNhbGl6YXRpb24gZm9yIHJlc291cmNlIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyBIZW5jZSBjaGVjayBpZiB0aGUgZ2l2ZW4ga2V5IGlzIGEgcmVzb3VyY2UgbW9kZWwgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdFx0Ly8gaWYgc28gdGhpcyBtb2RlbCBzaG91bGQgYmUgdXNlZCB0byBlbmhhbmNlIHRoZSBzYXAuZmUgcmVzb3VyY2UgbW9kZWwgc28gcGFzcyBpdCBhcyBpdCBpc1xuXHRcdFx0XHRjb25zdCBvUmVzb3VyY2VNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TW9kZWwoYUVuaGFuY2VJMThuW2ldKTtcblx0XHRcdFx0aWYgKG9SZXNvdXJjZU1vZGVsICYmIG9SZXNvdXJjZU1vZGVsLmlzQShcInNhcC51aS5tb2RlbC5yZXNvdXJjZS5SZXNvdXJjZU1vZGVsXCIpKSB7XG5cdFx0XHRcdFx0YUVuaGFuY2VJMThuW2ldID0gb1Jlc291cmNlTW9kZWw7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YUVuaGFuY2VJMThuW2ldID0gYCR7c0FwcE5hbWVzcGFjZX0uJHthRW5oYW5jZUkxOG5baV0ucmVwbGFjZShcIi5wcm9wZXJ0aWVzXCIsIFwiXCIpfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3Qgc0NhY2hlSWRlbnRpZmllciA9IGAke29BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9XyR7c1N0YWJsZUlkfV8ke0xvY2FsaXphdGlvbi5nZXRMYW5ndWFnZVRhZygpfWA7XG5cdFx0YVNlcnZpY2VEZXBlbmRlbmNpZXMucHVzaChcblx0XHRcdFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkuZ2V0KFwic2FwLmZlLmNvcmUuc2VydmljZXMuUmVzb3VyY2VNb2RlbFNlcnZpY2VcIilcblx0XHRcdFx0LmNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRzY29wZVR5cGU6IFwiY29tcG9uZW50XCIsXG5cdFx0XHRcdFx0c2NvcGVPYmplY3Q6IG9Db21wb25lbnQsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUubWFjcm9zLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUudGVtcGxhdGVzLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRlbmhhbmNlSTE4bjogYUVuaGFuY2VJMThuLFxuXHRcdFx0XHRcdFx0bW9kZWxOYW1lOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKChvUmVzb3VyY2VNb2RlbFNlcnZpY2U6IFJlc291cmNlTW9kZWxTZXJ2aWNlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UgPSBvUmVzb3VyY2VNb2RlbFNlcnZpY2U7XG5cdFx0XHRcdFx0cmV0dXJuIG9SZXNvdXJjZU1vZGVsU2VydmljZS5nZXRSZXNvdXJjZU1vZGVsKCk7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0XHRhU2VydmljZURlcGVuZGVuY2llcy5wdXNoKFxuXHRcdFx0U2VydmljZUZhY3RvcnlSZWdpc3RyeS5nZXQoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5DYWNoZUhhbmRsZXJTZXJ2aWNlXCIpXG5cdFx0XHRcdC5jcmVhdGVJbnN0YW5jZSh7XG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRcdGFwcENvbXBvbmVudDogb0FwcENvbXBvbmVudCxcblx0XHRcdFx0XHRcdGNvbXBvbmVudDogb0NvbXBvbmVudFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oYXN5bmMgKG9DYWNoZUhhbmRsZXJTZXJ2aWNlOiBDYWNoZUhhbmRsZXJTZXJ2aWNlKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vQ2FjaGVIYW5kbGVyU2VydmljZSA9IG9DYWNoZUhhbmRsZXJTZXJ2aWNlO1xuXHRcdFx0XHRcdHJldHVybiBvQ2FjaGVIYW5kbGVyU2VydmljZS52YWxpZGF0ZUNhY2hlS2V5KHNDYWNoZUlkZW50aWZpZXIsIG9Db21wb25lbnQsIG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKSk7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0XHRhU2VydmljZURlcGVuZGVuY2llcy5wdXNoKFxuXHRcdFx0VmVyc2lvbkluZm8ubG9hZCgpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvSW5mbykge1xuXHRcdFx0XHRcdGxldCBzVGltZXN0YW1wID0gXCJcIjtcblx0XHRcdFx0XHRpZiAoIW9JbmZvLmxpYnJhcmllcykge1xuXHRcdFx0XHRcdFx0c1RpbWVzdGFtcCA9IChzYXAudWkgYXMgdW5rbm93biBhcyB7IGJ1aWxkaW5mbzogeyBidWlsZHRpbWU6IHN0cmluZyB9IH0pLmJ1aWxkaW5mby5idWlsZHRpbWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9JbmZvLmxpYnJhcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChvTGlicmFyeSkge1xuXHRcdFx0XHRcdFx0XHRzVGltZXN0YW1wICs9IG9MaWJyYXJ5LmJ1aWxkVGltZXN0YW1wO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBzVGltZXN0YW1wO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiBcIjxOT1ZBTFVFPlwiO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdFx0dGhpcy5pbml0UHJvbWlzZSA9IFByb21pc2UuYWxsKGFTZXJ2aWNlRGVwZW5kZW5jaWVzKVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFEZXBlbmRlbmNpZXNSZXN1bHQ6IHVua25vd25bXSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvUmVzb3VyY2VNb2RlbCA9IGFEZXBlbmRlbmNpZXNSZXN1bHRbMF0gYXMgUmVzb3VyY2VNb2RlbDtcblx0XHRcdFx0Y29uc3Qgc0NhY2hlS2V5ID0gYURlcGVuZGVuY2llc1Jlc3VsdFsxXSBhcyBzdHJpbmcgfCBudWxsO1xuXHRcdFx0XHRjb25zdCBbVGVtcGxhdGVDb252ZXJ0ZXIsIE1ldGFNb2RlbENvbnZlcnRlcl0gPSBhd2FpdCByZXF1aXJlRGVwZW5kZW5jaWVzKFtcblx0XHRcdFx0XHRcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIixcblx0XHRcdFx0XHRcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCJcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZVZpZXcoXG5cdFx0XHRcdFx0b1Jlc291cmNlTW9kZWwsXG5cdFx0XHRcdFx0c1N0YWJsZUlkLFxuXHRcdFx0XHRcdHNDYWNoZUtleSxcblx0XHRcdFx0XHRUZW1wbGF0ZUNvbnZlcnRlciBhcyB0eXBlb2YgX1RlbXBsYXRlQ29udmVydGVyLFxuXHRcdFx0XHRcdE1ldGFNb2RlbENvbnZlcnRlciBhcyB0eXBlb2YgX01ldGFNb2RlbENvbnZlcnRlclxuXHRcdFx0XHQpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzQ2FjaGVLZXk6IHN0cmluZyB8IHZvaWQgfCBudWxsKTogdm9pZCB7XG5cdFx0XHRcdGNvbnN0IG9DYWNoZUhhbmRsZXJTZXJ2aWNlID0gU2VydmljZUZhY3RvcnlSZWdpc3RyeS5nZXQoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5DYWNoZUhhbmRsZXJTZXJ2aWNlXCIpLmdldEluc3RhbmNlKG9NZXRhTW9kZWwpO1xuXHRcdFx0XHRvQ2FjaGVIYW5kbGVyU2VydmljZS5pbnZhbGlkYXRlSWZOZWVkZWQoXG5cdFx0XHRcdFx0c0NhY2hlS2V5LFxuXHRcdFx0XHRcdHNDYWNoZUlkZW50aWZpZXIsXG5cdFx0XHRcdFx0b0NvbXBvbmVudCxcblx0XHRcdFx0XHRvQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKClcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVmcmVzaCB0aGUgY3VycmVudCB2aWV3IHVzaW5nIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gYXMgYmVmb3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0NvbXBvbmVudFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgaW5kaWNhdGluZyB3aGVuIHRoZSB2aWV3IGlzIHJlZnJlc2hlZFxuXHQgKi9cblx0YXN5bmMgcmVmcmVzaFZpZXcob0NvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvUm9vdFZpZXcgPSBvQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCk7XG5cdFx0aWYgKG9Sb290Vmlldykge1xuXHRcdFx0b1Jvb3RWaWV3LmRlc3Ryb3koKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMub1ZpZXcpIHtcblx0XHRcdHRoaXMub1ZpZXcuZGVzdHJveSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVWaWV3KHRoaXMucmVzb3VyY2VNb2RlbCwgdGhpcy5zdGFibGVJZCwgXCJcIiwgdGhpcy5UZW1wbGF0ZUNvbnZlcnRlciEsIHRoaXMuTWV0YU1vZGVsQ29udmVydGVyISlcblx0XHRcdC50aGVuKGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0b0NvbXBvbmVudC5nZXRVSUFyZWEoKS5pbnZhbGlkYXRlKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRvQ29tcG9uZW50LmdldFVJQXJlYSgpLmludmFsaWRhdGUoKTtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRfZ2V0Vmlld1NldHRpbmdzKFxuXHRcdHByZXByb2Nlc3NvckNvbnRleHQ6IFhNTFByZXByb2Nlc3NvckNvbnRleHQsXG5cdFx0bVNlcnZpY2VTZXR0aW5nczogVGVtcGxhdGVkVmlld1NlcnZpY2VTZXR0aW5ncyxcblx0XHRvQ29tcG9uZW50OiBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD4sXG5cdFx0bVZpZXdEYXRhOiBWaWV3RGF0YSxcblx0XHRzQ2FjaGVLZXk6IHN0cmluZyB8IG51bGwsXG5cdFx0b1BhZ2VNb2RlbDogSlNPTk1vZGVsLFxuXHRcdG9SZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsXG5cdCk6IFZpZXdTZXR0aW5ncyB7XG5cdFx0bGV0IHZpZXdUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtU2VydmljZVNldHRpbmdzLnZpZXdUeXBlIHx8IG9Db21wb25lbnQuZ2V0Vmlld1R5cGUoKSB8fCBcIlhNTFwiO1xuXHRcdGlmICh2aWV3VHlwZSAhPT0gXCJYTUxcIikge1xuXHRcdFx0dmlld1R5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHR0eXBlOiB2aWV3VHlwZSxcblx0XHRcdHByZXByb2Nlc3NvcnM6IHtcblx0XHRcdFx0eG1sOiBwcmVwcm9jZXNzb3JDb250ZXh0LFxuXHRcdFx0XHRjb250cm9sczoge31cblx0XHRcdH0sXG5cdFx0XHRpZDogbVZpZXdEYXRhLnN0YWJsZUlkLFxuXHRcdFx0dmlld05hbWU6IG1TZXJ2aWNlU2V0dGluZ3Mudmlld05hbWUgfHwgb0NvbXBvbmVudC5nZXRWaWV3TmFtZT8uKCksXG5cdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhLFxuXHRcdFx0Y2FjaGU6IHtcblx0XHRcdFx0a2V5czogW3NDYWNoZUtleV0sXG5cdFx0XHRcdGFkZGl0aW9uYWxEYXRhOiB7XG5cdFx0XHRcdFx0Ly8gV2Ugc3RvcmUgdGhlIHBhZ2UgbW9kZWwgZGF0YSBpbiB0aGUgYGFkZGl0aW9uYWxEYXRhYCBvZiB0aGUgdmlldyBjYWNoZSwgdGhpcyB3YXkgaXQgaXMgYWx3YXlzIGluIHN5bmNcblx0XHRcdFx0XHRnZXRBZGRpdGlvbmFsQ2FjaGVEYXRhOiAoKTogdW5rbm93biA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb1BhZ2VNb2RlbC5nZXREYXRhKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRBZGRpdGlvbmFsQ2FjaGVEYXRhOiAodmFsdWU6IG9iamVjdCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0b1BhZ2VNb2RlbC5zZXREYXRhKHZhbHVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBvUmVzb3VyY2VNb2RlbFxuXHRcdFx0fSxcblx0XHRcdGhlaWdodDogXCIxMDAlXCJcblx0XHR9O1xuXHR9XG5cblx0YXN5bmMgX2NyZWF0ZUVycm9yUGFnZShcblx0XHRyZWFzb246IEVycm9yLFxuXHRcdG9WaWV3U2V0dGluZ3M6IFZpZXdTZXR0aW5ncyxcblx0XHR2aWV3TmFtZTogc3RyaW5nLFxuXHRcdG9Db21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50LFxuXHRcdHNDYWNoZUtleTogc3RyaW5nIHwgbnVsbFxuXHQpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdC8vIGp1c3QgcmVwbGFjZSB0aGUgdmlldyBuYW1lIGFuZCBhIG1vZGVsIGNvbnRhaW5pbmcgdGhlIHJlYXNvbiwgYnV0IGtlZXAgdGhlIG90aGVyIHNldHRpbmdzXG5cdFx0TG9nLmVycm9yKHJlYXNvbi5tZXNzYWdlLCByZWFzb24pO1xuXHRcdG9WaWV3U2V0dGluZ3Mudmlld05hbWUgPSB2aWV3TmFtZTtcblx0XHRpZiAob1ZpZXdTZXR0aW5ncy5wcmVwcm9jZXNzb3JzKSB7XG5cdFx0XHQob1ZpZXdTZXR0aW5ncy5wcmVwcm9jZXNzb3JzIGFzIFJlY29yZDxzdHJpbmcsIHsgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbD4gfT4pLnhtbC5tb2RlbHNbXCJlcnJvclwiXSA9IG5ldyBKU09OTW9kZWwocmVhc29uKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb0NvbXBvbmVudC5ydW5Bc093bmVyKGFzeW5jICgpID0+IHtcblx0XHRcdHJldHVybiBWaWV3LmNyZWF0ZShvVmlld1NldHRpbmdzKS50aGVuKChvVmlldzogVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLm9WaWV3ID0gb1ZpZXc7XG5cdFx0XHRcdHRoaXMub1ZpZXcuc2V0TW9kZWwobmV3IEpTT05Nb2RlbCh0aGlzLm9WaWV3KSwgXCIkdmlld1wiKTtcblx0XHRcdFx0b0NvbXBvbmVudC5zZXRBZ2dyZWdhdGlvbihcInJvb3RDb250cm9sXCIsIHRoaXMub1ZpZXcpO1xuXHRcdFx0XHRyZXR1cm4gc0NhY2hlS2V5O1xuXHRcdFx0fSk7XG5cdFx0fSkgYXMgUHJvbWlzZTxzdHJpbmc+O1xuXHR9XG5cblx0YXN5bmMgY3JlYXRlVmlldyhcblx0XHRvUmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCxcblx0XHRzU3RhYmxlSWQ6IHN0cmluZyxcblx0XHRzQ2FjaGVLZXk6IHN0cmluZyB8IG51bGwsXG5cdFx0VGVtcGxhdGVDb252ZXJ0ZXI6IHR5cGVvZiBfVGVtcGxhdGVDb252ZXJ0ZXIsXG5cdFx0TWV0YU1vZGVsQ29udmVydGVyOiB0eXBlb2YgX01ldGFNb2RlbENvbnZlcnRlclxuXHQpOiBQcm9taXNlPHN0cmluZyB8IG51bGwgfCB2b2lkPiB7XG5cdFx0dGhpcy5yZXNvdXJjZU1vZGVsID0gb1Jlc291cmNlTW9kZWw7XG5cdFx0dGhpcy5zdGFibGVJZCA9IHNTdGFibGVJZDtcblx0XHR0aGlzLlRlbXBsYXRlQ29udmVydGVyID0gVGVtcGxhdGVDb252ZXJ0ZXI7XG5cdFx0dGhpcy5NZXRhTW9kZWxDb252ZXJ0ZXIgPSBNZXRhTW9kZWxDb252ZXJ0ZXI7XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblx0XHRjb25zdCBtU2VydmljZVNldHRpbmdzID0gb0NvbnRleHQuc2V0dGluZ3M7XG5cdFx0Y29uc3Qgc0NvbnZlcnRlclR5cGUgPSBtU2VydmljZVNldHRpbmdzLmNvbnZlcnRlclR5cGU7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db250ZXh0LnNjb3BlT2JqZWN0IGFzIEVuaGFuY2VXaXRoVUk1PFRlbXBsYXRlQ29tcG9uZW50Pjtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3Iob0NvbXBvbmVudCkgYXMgQXBwQ29tcG9uZW50O1xuXHRcdGNvbnN0IHNGdWxsQ29udGV4dFBhdGg6IHN0cmluZyA9XG5cdFx0XHRvQXBwQ29tcG9uZW50LmdldFJvdXRpbmdTZXJ2aWNlKCkuZ2V0VGFyZ2V0SW5mb3JtYXRpb25Gb3Iob0NvbXBvbmVudCk/Lm9wdGlvbnM/LnNldHRpbmdzPy5mdWxsQ29udGV4dFBhdGggPz8gXCJcIjtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBvTWFuaWZlc3RDb250ZW50ID0gb0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpO1xuXHRcdGNvbnN0IG9EZXZpY2VNb2RlbCA9IG5ldyBKU09OTW9kZWwoRGV2aWNlKS5zZXREZWZhdWx0QmluZGluZ01vZGUoXCJPbmVXYXlcIik7XG5cdFx0Y29uc3Qgb01hbmlmZXN0TW9kZWwgPSBuZXcgSlNPTk1vZGVsKG9NYW5pZmVzdENvbnRlbnQpO1xuXHRcdGxldCBvUGFnZU1vZGVsOiBUZW1wbGF0ZU1vZGVsLCBvVmlld0RhdGFNb2RlbDogTW9kZWwsIG1WaWV3RGF0YTogVmlld0RhdGE7XG5cdFx0Ly8gTG9hZCB0aGUgaW5kZXggZm9yIHRoZSBhZGRpdGlvbmFsIGJ1aWxkaW5nIGJsb2NrcyB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZW1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qgb1JvdXRpbmdTZXJ2aWNlID0gYXdhaXQgb0FwcENvbXBvbmVudC5nZXRTZXJ2aWNlKFwicm91dGluZ1NlcnZpY2VcIik7XG5cdFx0XHQvLyBSZXRyaWV2ZSB0aGUgdmlld0xldmVsIGZvciB0aGUgY29tcG9uZW50XG5cdFx0XHRjb25zdCBvVGFyZ2V0SW5mbyA9IG9Sb3V0aW5nU2VydmljZS5nZXRUYXJnZXRJbmZvcm1hdGlvbkZvcihvQ29tcG9uZW50KTtcblx0XHRcdGNvbnN0IG1PdXRib3VuZHMgPVxuXHRcdFx0XHQob01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0gJiZcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXS5jcm9zc05hdmlnYXRpb24gJiZcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXS5jcm9zc05hdmlnYXRpb24ub3V0Ym91bmRzKSB8fFxuXHRcdFx0XHR7fTtcblx0XHRcdGNvbnN0IG1OYXZpZ2F0aW9uID0gb0NvbXBvbmVudC5nZXROYXZpZ2F0aW9uKCkgfHwge307XG5cdFx0XHR0aGlzLl9lbmhhbmNlTmF2aWdhdGlvbkNvbmZpZyhtTmF2aWdhdGlvbiwgbU91dGJvdW5kcyk7XG5cdFx0XHRjb25zdCBjb252ZXJ0ZWRNZXRhZGF0YSA9IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0VHlwZXMoXG5cdFx0XHRcdG9NZXRhTW9kZWwsXG5cdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKVxuXHRcdFx0KTtcblx0XHRcdG1WaWV3RGF0YSA9IHtcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBvQXBwQ29tcG9uZW50LFxuXHRcdFx0XHRuYXZpZ2F0aW9uOiBtTmF2aWdhdGlvbixcblx0XHRcdFx0dmlld0xldmVsOiBvVGFyZ2V0SW5mby52aWV3TGV2ZWwsXG5cdFx0XHRcdHN0YWJsZUlkOiBzU3RhYmxlSWQsXG5cdFx0XHRcdGNvbnRlbnREZW5zaXRpZXM6IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdPy5jb250ZW50RGVuc2l0aWVzLFxuXHRcdFx0XHRyZXNvdXJjZU1vZGVsOiBvUmVzb3VyY2VNb2RlbCxcblx0XHRcdFx0ZnVsbENvbnRleHRQYXRoOiBzRnVsbENvbnRleHRQYXRoLFxuXHRcdFx0XHRpc0Rlc2t0b3A6IERldmljZS5zeXN0ZW0uZGVza3RvcCxcblx0XHRcdFx0aXNQaG9uZTogRGV2aWNlLnN5c3RlbS5waG9uZSxcblx0XHRcdFx0Y29udmVydGVyVHlwZTogVGVtcGxhdGVUeXBlLkZyZWVTdHlsZVBhZ2Vcblx0XHRcdH07XG5cdFx0XHRpZiAob0NvbXBvbmVudC5nZXRWaWV3RGF0YSkge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKG1WaWV3RGF0YSwgb0NvbXBvbmVudC5nZXRWaWV3RGF0YSgpKTtcblx0XHRcdFx0bVZpZXdEYXRhID0gVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LnNldFBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyhcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50LFxuXHRcdFx0XHRcdG1WaWV3RGF0YSxcblx0XHRcdFx0XHRvQXBwQ29tcG9uZW50LFxuXHRcdFx0XHRcdHRoaXMucGFnZUlkXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRtVmlld0RhdGEuaXNTaGFyZUJ1dHRvblZpc2libGVGb3JNeUluYm94ID0gVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LmdldFNoYXJlQnV0dG9uVmlzaWJpbGl0eUZvck15SW5ib3gob0FwcENvbXBvbmVudCk7XG5cdFx0XHRjb25zdCBvU2hlbGxTZXJ2aWNlcyA9IG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdFx0bVZpZXdEYXRhLmNvbnZlcnRlclR5cGUgPSBzQ29udmVydGVyVHlwZTtcblx0XHRcdG1WaWV3RGF0YS5zaGVsbENvbnRlbnREZW5zaXR5ID0gb1NoZWxsU2VydmljZXMuZ2V0Q29udGVudERlbnNpdHkoKTtcblx0XHRcdG1WaWV3RGF0YS5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0ID1cblx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXSAmJiBvTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdLmZvcm1cblx0XHRcdFx0XHQ/IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0uZm9ybS5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0XG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKTtcblx0XHRcdGlmIChtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb24pIHtcblx0XHRcdFx0Zm9yIChjb25zdCBzQW5ub3RhdGlvblBhdGggaW4gbVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKHNBbm5vdGF0aW9uUGF0aC5pbmNsdWRlcyhcIltcIikpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNUYXJnZXRBbm5vdGF0aW9uUGF0aCA9IHJlc29sdmVEeW5hbWljRXhwcmVzc2lvbihzQW5ub3RhdGlvblBhdGgsIG9NZXRhTW9kZWwpO1xuXHRcdFx0XHRcdFx0bVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uW3NUYXJnZXRBbm5vdGF0aW9uUGF0aF0gPSBtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb25bc0Fubm90YXRpb25QYXRoXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0b1BhZ2VNb2RlbCA9IG5ldyBUZW1wbGF0ZU1vZGVsKCgpID0+IHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBvRGlhZ25vc3RpY3MgPSBvQXBwQ29tcG9uZW50LmdldERpYWdub3N0aWNzKCk7XG5cdFx0XHRcdFx0Y29uc3QgaUlzc3VlQ291bnQgPSBvRGlhZ25vc3RpY3MuZ2V0SXNzdWVzKCkubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IG9Db252ZXJ0ZXJQYWdlTW9kZWwgPSBUZW1wbGF0ZUNvbnZlcnRlci5jb252ZXJ0UGFnZShcblx0XHRcdFx0XHRcdHNDb252ZXJ0ZXJUeXBlLFxuXHRcdFx0XHRcdFx0b01ldGFNb2RlbCxcblx0XHRcdFx0XHRcdG1WaWV3RGF0YSBhcyB1bmtub3duIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0b0RpYWdub3N0aWNzLFxuXHRcdFx0XHRcdFx0c0Z1bGxDb250ZXh0UGF0aCxcblx0XHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKSxcblx0XHRcdFx0XHRcdG9Db21wb25lbnRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGNvbnN0IGFJc3N1ZXMgPSBvRGlhZ25vc3RpY3MuZ2V0SXNzdWVzKCk7XG5cdFx0XHRcdFx0Y29uc3QgYUFkZGVkSXNzdWVzID0gYUlzc3Vlcy5zbGljZShpSXNzdWVDb3VudCk7XG5cdFx0XHRcdFx0aWYgKGFBZGRlZElzc3Vlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcdFx0XCJTb21lIGlzc3VlcyBoYXZlIGJlZW4gZGV0ZWN0ZWQgaW4geW91ciBwcm9qZWN0LCBwbGVhc2UgY2hlY2sgdGhlIFVJNSBzdXBwb3J0IGFzc2lzdGFudCBydWxlIGZvciBzYXAuZmUuY29yZVwiXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gb0NvbnZlcnRlclBhZ2VNb2RlbDtcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgc3RyaW5nLCBlcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgb01ldGFNb2RlbCk7XG5cdFx0XHRjb25zdCBhU3BsaXRQYXRoID0gc0Z1bGxDb250ZXh0UGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRjb25zdCBzRW50aXR5U2V0UGF0aCA9IHRoaXMuX2dldEZ1bGxQYXRoVG9FbnRpdHlTZXQoYVNwbGl0UGF0aCwgb01ldGFNb2RlbCk7XG5cdFx0XHRjb25zdCBwcmVwcm9jZXNzb3JDb250ZXh0OiBYTUxQcmVwcm9jZXNzb3JDb250ZXh0ID0ge1xuXHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFx0XHRcdFx0ZW50aXR5U2V0OiBzRW50aXR5U2V0UGF0aCA/IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0VudGl0eVNldFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdGZ1bGxDb250ZXh0UGF0aDogc0Z1bGxDb250ZXh0UGF0aCA/IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0Z1bGxDb250ZXh0UGF0aCkgOiBudWxsLFxuXHRcdFx0XHRcdFx0Y29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNGdWxsQ29udGV4dFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIsIHVuZGVmaW5lZCwgeyBub1Jlc29sdmU6IHRydWUgfSksXG5cdFx0XHRcdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhID8gb1ZpZXdEYXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpIDogbnVsbFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0XHRlbnRpdHlTZXQ6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRcdFwic2FwLmZlLmkxOG5cIjogb1Jlc291cmNlTW9kZWwsXG5cdFx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRkZXZpY2U6IG9EZXZpY2VNb2RlbCxcblx0XHRcdFx0XHRcdG1hbmlmZXN0OiBvTWFuaWZlc3RNb2RlbCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwgYXMgdW5rbm93biBhcyBKU09OTW9kZWwsXG5cdFx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZ1bGxDb250ZXh0UGF0aDogc0Z1bGxDb250ZXh0UGF0aCxcblx0XHRcdFx0XHRnZXRDb252ZXJ0ZWRNZXRhZGF0YTogKCkgPT4gY29udmVydGVkTWV0YWRhdGEsXG5cdFx0XHRcdFx0YXBwQ29tcG9uZW50OiBvQXBwQ29tcG9uZW50XG5cdFx0XHRcdH0sXG5cdFx0XHRcdG9WaWV3U2V0dGluZ3MgPSB0aGlzLl9nZXRWaWV3U2V0dGluZ3MoXG5cdFx0XHRcdFx0cHJlcHJvY2Vzc29yQ29udGV4dCxcblx0XHRcdFx0XHRtU2VydmljZVNldHRpbmdzLFxuXHRcdFx0XHRcdG9Db21wb25lbnQsXG5cdFx0XHRcdFx0bVZpZXdEYXRhLFxuXHRcdFx0XHRcdHNDYWNoZUtleSxcblx0XHRcdFx0XHRvUGFnZU1vZGVsIGFzIHVua25vd24gYXMgSlNPTk1vZGVsLFxuXHRcdFx0XHRcdG9SZXNvdXJjZU1vZGVsXG5cdFx0XHRcdCk7XG5cdFx0XHQvLyBTZXR0aW5nIHRoZSBwYWdlTW9kZWwgb24gdGhlIGNvbXBvbmVudCBmb3IgcG90ZW50aWFsIHJldXNlXG5cdFx0XHRvQ29tcG9uZW50LnNldE1vZGVsKG9QYWdlTW9kZWwgYXMgdW5rbm93biBhcyBKU09OTW9kZWwsIFwiX3BhZ2VNb2RlbFwiKTtcblx0XHRcdG9Db21wb25lbnQuc2V0UHJlcHJvY2Vzc29yQ29udGV4dChwcmVwcm9jZXNzb3JDb250ZXh0KTtcblx0XHRcdHJldHVybiBvQ29tcG9uZW50LnJ1bkFzT3duZXIoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gVmlldy5jcmVhdGUob1ZpZXdTZXR0aW5ncylcblxuXHRcdFx0XHRcdC50aGVuKChvVmlldzogVmlldykgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5vVmlldyA9IG9WaWV3O1xuXHRcdFx0XHRcdFx0Y29uc3Qgdmlld0pTT05Nb2RlbCA9IG5ldyBKU09OTW9kZWwodGhpcy5vVmlldyk7XG5cdFx0XHRcdFx0XHRNb2RlbEhlbHBlci5lbmhhbmNlVmlld0pTT05Nb2RlbCh2aWV3SlNPTk1vZGVsIGFzIEpTT05Nb2RlbCAmIHsgX2dldE9iamVjdDogRnVuY3Rpb24gfSk7XG5cdFx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKHZpZXdKU09OTW9kZWwsIFwiJHZpZXdcIik7XG5cdFx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKG9WaWV3RGF0YU1vZGVsLCBcInZpZXdEYXRhXCIpO1xuXHRcdFx0XHRcdFx0b0NvbXBvbmVudC5zZXRBZ2dyZWdhdGlvbihcInJvb3RDb250cm9sXCIsIHRoaXMub1ZpZXcpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNDYWNoZUtleTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaChhc3luYyAocmVhc29uOiBFcnJvcikgPT5cblx0XHRcdFx0XHRcdHRoaXMuX2NyZWF0ZUVycm9yUGFnZShcblx0XHRcdFx0XHRcdFx0cmVhc29uLFxuXHRcdFx0XHRcdFx0XHRvVmlld1NldHRpbmdzLFxuXHRcdFx0XHRcdFx0XHRtU2VydmljZVNldHRpbmdzLmVycm9yVmlld05hbWUgfHwgXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy52aWV3LlRlbXBsYXRpbmdFcnJvclBhZ2VcIixcblx0XHRcdFx0XHRcdFx0b0NvbXBvbmVudCxcblx0XHRcdFx0XHRcdFx0c0NhY2hlS2V5XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHRcdC5jYXRjaCgoZSkgPT4gTG9nLmVycm9yKGUubWVzc2FnZSwgZSkpO1xuXHRcdFx0fSk7XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcigoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UsIGVycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIGNyZWF0aW5nIHZpZXcgOiAke2Vycm9yfWApO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgX2VuaGFuY2VOYXZpZ2F0aW9uQ29uZmlnKFxuXHRcdG1OYXZpZ2F0aW9uOiBSZWNvcmQ8c3RyaW5nLCBOYXZpZ2F0aW9uQ29uZmlndXJhdGlvbj4sXG5cdFx0bU91dGJvdW5kczogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RPdXRib3VuZEVudHJ5PlxuXHQpOiB2b2lkIHtcblx0XHRPYmplY3Qua2V5cyhtTmF2aWdhdGlvbikuZm9yRWFjaChmdW5jdGlvbiAobmF2aWdhdGlvbk9iamVjdEtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uT2JqZWN0ID0gbU5hdmlnYXRpb25bbmF2aWdhdGlvbk9iamVjdEtleV07XG5cdFx0XHRsZXQgb3V0Ym91bmRDb25maWc7XG5cdFx0XHRpZiAobmF2aWdhdGlvbk9iamVjdC5kZXRhaWwgJiYgbmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmQgJiYgbU91dGJvdW5kc1tuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZF0pIHtcblx0XHRcdFx0b3V0Ym91bmRDb25maWcgPSBtT3V0Ym91bmRzW25hdmlnYXRpb25PYmplY3QuZGV0YWlsLm91dGJvdW5kXTtcblx0XHRcdFx0bmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmREZXRhaWwgPSB7XG5cdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG91dGJvdW5kQ29uZmlnLnNlbWFudGljT2JqZWN0LFxuXHRcdFx0XHRcdGFjdGlvbjogb3V0Ym91bmRDb25maWcuYWN0aW9uLFxuXHRcdFx0XHRcdHBhcmFtZXRlcnM6IG91dGJvdW5kQ29uZmlnLnBhcmFtZXRlcnNcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGlmIChuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZSAmJiBuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZS5vdXRib3VuZCAmJiBtT3V0Ym91bmRzW25hdmlnYXRpb25PYmplY3QuY3JlYXRlLm91dGJvdW5kXSkge1xuXHRcdFx0XHRvdXRib3VuZENvbmZpZyA9IG1PdXRib3VuZHNbbmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmRdO1xuXHRcdFx0XHRuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZS5vdXRib3VuZERldGFpbCA9IHtcblx0XHRcdFx0XHRzZW1hbnRpY09iamVjdDogb3V0Ym91bmRDb25maWcuc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0YWN0aW9uOiBvdXRib3VuZENvbmZpZy5hY3Rpb24sXG5cdFx0XHRcdFx0cGFyYW1ldGVyczogb3V0Ym91bmRDb25maWcucGFyYW1ldGVyc1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBfZ2V0RnVsbFBhdGhUb0VudGl0eVNldChhU3BsaXRQYXRoOiBzdHJpbmdbXSwgb01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpOiBzdHJpbmcge1xuXHRcdHJldHVybiBhU3BsaXRQYXRoLnJlZHVjZShmdW5jdGlvbiAoc1BhdGhTb0Zhcjogc3RyaW5nLCBzTmV4dFBhdGhQYXJ0OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdFx0aWYgKHNOZXh0UGF0aFBhcnQgPT09IFwiXCIpIHtcblx0XHRcdFx0cmV0dXJuIHNQYXRoU29GYXI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc1BhdGhTb0ZhciA9PT0gXCJcIikge1xuXHRcdFx0XHRzUGF0aFNvRmFyID0gYC8ke3NOZXh0UGF0aFBhcnR9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IG9UYXJnZXQgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUGF0aFNvRmFyfS8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke3NOZXh0UGF0aFBhcnR9YCk7XG5cdFx0XHRcdGlmIChvVGFyZ2V0ICYmIE9iamVjdC5rZXlzKG9UYXJnZXQpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRzUGF0aFNvRmFyICs9IFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0c1BhdGhTb0ZhciArPSBgLyR7c05leHRQYXRoUGFydH1gO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHNQYXRoU29GYXI7XG5cdFx0fSwgXCJcIik7XG5cdH1cblxuXHRnZXRWaWV3KCk6IFZpZXcge1xuXHRcdHJldHVybiB0aGlzLm9WaWV3O1xuXHR9XG5cblx0Z2V0SW50ZXJmYWNlKCk6IFRlbXBsYXRlZFZpZXdTZXJ2aWNlIHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGV4aXQoKTogdm9pZCB7XG5cdFx0Ly8gRGVyZWdpc3RlciBnbG9iYWwgaW5zdGFuY2Vcblx0XHRpZiAodGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UpIHtcblx0XHRcdHRoaXMub1Jlc291cmNlTW9kZWxTZXJ2aWNlLmRlc3Ryb3koKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UpIHtcblx0XHRcdHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UuZGVzdHJveSgpO1xuXHRcdH1cblx0XHR0aGlzLm9GYWN0b3J5LnJlbW92ZUdsb2JhbEluc3RhbmNlKCk7XG5cdH1cbn1cbmNsYXNzIFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBleHRlbmRzIFNlcnZpY2VGYWN0b3J5PFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+IHtcblx0X29JbnN0YW5jZVJlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZWRWaWV3U2VydmljZT4gPSB7fTtcblxuXHRzdGF0aWMgaUNyZWF0aW5nVmlld3M6IDA7XG5cblx0YXN5bmMgY3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxUZW1wbGF0ZWRWaWV3U2VydmljZVNldHRpbmdzPik6IFByb21pc2U8VGVtcGxhdGVkVmlld1NlcnZpY2U+IHtcblx0XHRUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3MrKztcblx0XHRjb25zdCBvVGVtcGxhdGVkVmlld1NlcnZpY2UgPSBuZXcgVGVtcGxhdGVkVmlld1NlcnZpY2UoT2JqZWN0LmFzc2lnbih7IGZhY3Rvcnk6IHRoaXMgfSwgb1NlcnZpY2VDb250ZXh0KSk7XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZS5pbml0UHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5pQ3JlYXRpbmdWaWV3cy0tO1xuXHRcdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZTtcblx0XHR9KTtcblx0fVxuXG5cdHJlbW92ZUdsb2JhbEluc3RhbmNlKCk6IHZvaWQge1xuXHRcdHRoaXMuX29JbnN0YW5jZVJlZ2lzdHJ5ID0ge307XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGNvbXBvbmVudCBkYXRhIHNwZWNpZmllcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgJ1NoYXJlJyBidXR0b24gYW5kIHJldHVybnMgdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiB0aGUgdmlzaWJpbGl0eS5cblx0ICpcblx0ICogQHBhcmFtIGFwcENvbXBvbmVudCBTcGVjaWZpZXMgdGhlIGFwcCBjb21wb25lbnRcblx0ICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBhcyB0cnVlIG9yIGZhbHNlIGJhc2VkIHdoZXRoZXIgdGhlICdTaGFyZScgYnV0dG9uIHNob3VsZCBiZSB2aXNpYmxlIG9yIG5vdFxuXHQgKi9cblx0c3RhdGljIGdldFNoYXJlQnV0dG9uVmlzaWJpbGl0eUZvck15SW5ib3goYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjb21wb25lbnREYXRhOiBDb21wb25lbnREYXRhID0gYXBwQ29tcG9uZW50LmdldENvbXBvbmVudERhdGEoKTtcblx0XHRpZiAoY29tcG9uZW50RGF0YSAhPT0gdW5kZWZpbmVkICYmIGNvbXBvbmVudERhdGEuZmVFbnZpcm9ubWVudCkge1xuXHRcdFx0cmV0dXJuIGNvbXBvbmVudERhdGEuZmVFbnZpcm9ubWVudC5nZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5KCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3M7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBwYWdlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBmb3IgYSBzcGVjaWZpYyBwYWdlIGlkZW50aWZpZWQgYnkgaXRzIElELlxuXHQgKlxuXHQgKiBAcGFyYW0gbWFuaWZlc3QgVGhlIG1hbmlmZXN0IGNvbnRlbnQgb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbiBkZXRhaWxzLlxuXHQgKiBAcGFyYW0gdmlld0RhdGEgVGhlIHZpZXcgZGF0YSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB2aWV3LlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBhcHBsaWNhdGlvbiBjb21wb25lbnQgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSBwYWdlSWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBwYWdlIGZvciB3aGljaCBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXJlIHRvIGJlIGFwcGxpZWQuXG5cdCAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIHZpZXcgZGF0YSBvYmplY3QgcmVmbGVjdGluZyB0aGUgYXBwbGllZCBjaGFuZ2VzLlxuXHQgKi9cblx0c3RhdGljIHNldFBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyhcblx0XHRtYW5pZmVzdDogTWFuaWZlc3RDb250ZW50LFxuXHRcdHZpZXdEYXRhOiBWaWV3RGF0YSxcblx0XHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0XHRwYWdlSWQ6IHN0cmluZ1xuXHQpOiBWaWV3RGF0YSB7XG5cdFx0Y29uc3QgdGFyZ2V0cyA9IG1hbmlmZXN0Py5bXCJzYXAudWk1XCJdPy5yb3V0aW5nPy50YXJnZXRzID8/IHt9O1xuXHRcdGxldCByZWFsVGFyZ2V0ID0gXCJcIjtcblx0XHRmb3IgKGNvbnN0IHRhcmdldFRvRmluZCBpbiB0YXJnZXRzKSB7XG5cdFx0XHRpZiAodGFyZ2V0c1t0YXJnZXRUb0ZpbmRdLmlkID09PSBwYWdlSWQpIHtcblx0XHRcdFx0cmVhbFRhcmdldCA9IHRhcmdldFRvRmluZDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChyZWFsVGFyZ2V0ID09PSBcIlwiKSB7XG5cdFx0XHRyZWFsVGFyZ2V0ID0gcGFnZUlkO1xuXHRcdH1cblx0XHRjb25zdCBhY3R1YWxTZXR0aW5ncyA9IG1hbmlmZXN0Py5bXCJzYXAudWk1XCJdPy5yb3V0aW5nPy50YXJnZXRzPy5bcmVhbFRhcmdldF0/Lm9wdGlvbnM/LnNldHRpbmdzIHx8IHt9O1xuXHRcdHJldHVybiBhcHBseVBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyhhY3R1YWxTZXR0aW5ncywgdmlld0RhdGEsIGFwcENvbXBvbmVudCwgcGFnZUlkKTtcblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7O01Bb0ZNQSxvQkFBb0I7SUFBQTtJQUFBO01BQUE7SUFBQTtJQUFBO0lBQUEsT0FxQnpCQyxJQUFJLEdBQUosZ0JBQWE7TUFDWixNQUFNQyxvQkFBb0IsR0FBRyxFQUFFO01BQy9CLE1BQU1DLFFBQVEsR0FBRyxJQUFJLENBQUNDLFVBQVUsRUFBRTtNQUNsQyxNQUFNQyxVQUFVLEdBQUdGLFFBQVEsQ0FBQ0csV0FBVztNQUN2QyxNQUFNQyxhQUFhLEdBQUdDLFNBQVMsQ0FBQ0Msb0JBQW9CLENBQUNKLFVBQVUsQ0FBaUI7TUFDaEYsTUFBTUssVUFBVSxHQUFHSCxhQUFh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
413
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZWRWaWV3U2VydmljZSIsImluaXQiLCJhU2VydmljZURlcGVuZGVuY2llcyIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsIm9Db21wb25lbnQiLCJzY29wZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJwYWdlSWQiLCJnZXRMb2NhbElkIiwiZ2V0SWQiLCJzU3RhYmxlSWQiLCJnZXRNZXRhZGF0YSIsImdldENvbXBvbmVudE5hbWUiLCJhRW5oYW5jZUkxOG4iLCJnZXRFbmhhbmNlSTE4biIsInNBcHBOYW1lc3BhY2UiLCJvRmFjdG9yeSIsImZhY3RvcnkiLCJpIiwibGVuZ3RoIiwib1Jlc291cmNlTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsInJlcGxhY2UiLCJzQ2FjaGVJZGVudGlmaWVyIiwiZ2V0TmFtZSIsIkxvY2FsaXphdGlvbiIsImdldExhbmd1YWdlVGFnIiwicHVzaCIsIlNlcnZpY2VGYWN0b3J5UmVnaXN0cnkiLCJnZXQiLCJjcmVhdGVJbnN0YW5jZSIsInNjb3BlVHlwZSIsInNldHRpbmdzIiwiYnVuZGxlcyIsImVuaGFuY2VJMThuIiwibW9kZWxOYW1lIiwidGhlbiIsIm9SZXNvdXJjZU1vZGVsU2VydmljZSIsImdldFJlc291cmNlTW9kZWwiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJjb21wb25lbnQiLCJvQ2FjaGVIYW5kbGVyU2VydmljZSIsInZhbGlkYXRlQ2FjaGVLZXkiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsIlZlcnNpb25JbmZvIiwibG9hZCIsIm9JbmZvIiwic1RpbWVzdGFtcCIsImxpYnJhcmllcyIsInNhcCIsInVpIiwiYnVpbGRpbmZvIiwiYnVpbGR0aW1lIiwiZm9yRWFjaCIsIm9MaWJyYXJ5IiwiYnVpbGRUaW1lc3RhbXAiLCJjYXRjaCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsImFsbCIsImFEZXBlbmRlbmNpZXNSZXN1bHQiLCJzQ2FjaGVLZXkiLCJUZW1wbGF0ZUNvbnZlcnRlciIsIk1ldGFNb2RlbENvbnZlcnRlciIsInJlcXVpcmVEZXBlbmRlbmNpZXMiLCJjcmVhdGVWaWV3IiwiZ2V0SW5zdGFuY2UiLCJpbnZhbGlkYXRlSWZOZWVkZWQiLCJyZWZyZXNoVmlldyIsIm9Sb290VmlldyIsImdldFJvb3RDb250cm9sIiwiZGVzdHJveSIsIm9WaWV3IiwicmVzb3VyY2VNb2RlbCIsInN0YWJsZUlkIiwiZ2V0VUlBcmVhIiwiaW52YWxpZGF0ZSIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwiX2dldFZpZXdTZXR0aW5ncyIsInByZXByb2Nlc3NvckNvbnRleHQiLCJtU2VydmljZVNldHRpbmdzIiwibVZpZXdEYXRhIiwib1BhZ2VNb2RlbCIsInZpZXdUeXBlIiwiZ2V0Vmlld1R5cGUiLCJ1bmRlZmluZWQiLCJ0eXBlIiwicHJlcHJvY2Vzc29ycyIsInhtbCIsImNvbnRyb2xzIiwiaWQiLCJ2aWV3TmFtZSIsImdldFZpZXdOYW1lIiwidmlld0RhdGEiLCJjYWNoZSIsImtleXMiLCJhZGRpdGlvbmFsRGF0YSIsImdldEFkZGl0aW9uYWxDYWNoZURhdGEiLCJnZXREYXRhIiwic2V0QWRkaXRpb25hbENhY2hlRGF0YSIsInZhbHVlIiwic2V0RGF0YSIsIm1vZGVscyIsImhlaWdodCIsIl9jcmVhdGVFcnJvclBhZ2UiLCJyZWFzb24iLCJvVmlld1NldHRpbmdzIiwibWVzc2FnZSIsIkpTT05Nb2RlbCIsInJ1bkFzT3duZXIiLCJWaWV3IiwiY3JlYXRlIiwic2V0TW9kZWwiLCJzZXRBZ2dyZWdhdGlvbiIsInNDb252ZXJ0ZXJUeXBlIiwiY29udmVydGVyVHlwZSIsInNGdWxsQ29udGV4dFBhdGgiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldEluZm9ybWF0aW9uRm9yIiwib3B0aW9ucyIsImZ1bGxDb250ZXh0UGF0aCIsIm9NYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsIm9EZXZpY2VNb2RlbCIsIkRldmljZSIsInNldERlZmF1bHRCaW5kaW5nTW9kZSIsIm9NYW5pZmVzdE1vZGVsIiwib1ZpZXdEYXRhTW9kZWwiLCJvUm91dGluZ1NlcnZpY2UiLCJnZXRTZXJ2aWNlIiwib1RhcmdldEluZm8iLCJtT3V0Ym91bmRzIiwiY3Jvc3NOYXZpZ2F0aW9uIiwib3V0Ym91bmRzIiwibU5hdmlnYXRpb24iLCJnZXROYXZpZ2F0aW9uIiwiX2VuaGFuY2VOYXZpZ2F0aW9uQ29uZmlnIiwiY29udmVydGVkTWV0YWRhdGEiLCJjb252ZXJ0VHlwZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJuYXZpZ2F0aW9uIiwidmlld0xldmVsIiwiY29udGVudERlbnNpdGllcyIsImlzRGVza3RvcCIsInN5c3RlbSIsImRlc2t0b3AiLCJpc1Bob25lIiwicGhvbmUiLCJUZW1wbGF0ZVR5cGUiLCJGcmVlU3R5bGVQYWdlIiwiZ2V0Vmlld0RhdGEiLCJPYmplY3QiLCJhc3NpZ24iLCJUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkiLCJzZXRQYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMiLCJpc1NoYXJlQnV0dG9uVmlzaWJsZUZvck15SW5ib3giLCJnZXRTaGFyZUJ1dHRvblZpc2liaWxpdHlGb3JNeUluYm94Iiwib1NoZWxsU2VydmljZXMiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2hlbGxDb250ZW50RGVuc2l0eSIsImdldENvbnRlbnREZW5zaXR5IiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImZvcm0iLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNBbm5vdGF0aW9uUGF0aCIsImluY2x1ZGVzIiwic1RhcmdldEFubm90YXRpb25QYXRoIiwicmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uIiwiVGVtcGxhdGVNb2RlbCIsIm9EaWFnbm9zdGljcyIsImdldERpYWdub3N0aWNzIiwiaUlzc3VlQ291bnQiLCJnZXRJc3N1ZXMiLCJvQ29udmVydGVyUGFnZU1vZGVsIiwiY29udmVydFBhZ2UiLCJhSXNzdWVzIiwiYUFkZGVkSXNzdWVzIiwic2xpY2UiLCJ3YXJuaW5nIiwiYVNwbGl0UGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJfZ2V0RnVsbFBhdGhUb0VudGl0eVNldCIsImJpbmRpbmdDb250ZXh0cyIsImVudGl0eVNldCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udGV4dFBhdGgiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwiZGV2aWNlIiwibWFuaWZlc3QiLCJnZXRDb252ZXJ0ZWRNZXRhZGF0YSIsInNldFByZXByb2Nlc3NvckNvbnRleHQiLCJ2aWV3SlNPTk1vZGVsIiwiTW9kZWxIZWxwZXIiLCJlbmhhbmNlVmlld0pTT05Nb2RlbCIsImVycm9yVmlld05hbWUiLCJlIiwiRXJyb3IiLCJuYXZpZ2F0aW9uT2JqZWN0S2V5IiwibmF2aWdhdGlvbk9iamVjdCIsIm91dGJvdW5kQ29uZmlnIiwiZGV0YWlsIiwib3V0Ym91bmQiLCJvdXRib3VuZERldGFpbCIsInNlbWFudGljT2JqZWN0IiwiYWN0aW9uIiwicGFyYW1ldGVycyIsInJlZHVjZSIsInNQYXRoU29GYXIiLCJzTmV4dFBhdGhQYXJ0Iiwib1RhcmdldCIsImdldE9iamVjdCIsImdldFZpZXciLCJnZXRJbnRlcmZhY2UiLCJleGl0IiwicmVtb3ZlR2xvYmFsSW5zdGFuY2UiLCJTZXJ2aWNlIiwiX29JbnN0YW5jZVJlZ2lzdHJ5Iiwib1NlcnZpY2VDb250ZXh0IiwiaUNyZWF0aW5nVmlld3MiLCJvVGVtcGxhdGVkVmlld1NlcnZpY2UiLCJjb21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsImZlRW52aXJvbm1lbnQiLCJnZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5IiwiZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSIsInRhcmdldHMiLCJyb3V0aW5nIiwicmVhbFRhcmdldCIsInRhcmdldFRvRmluZCIsImFjdHVhbFNldHRpbmdzIiwiYXBwbHlQYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMiLCJTZXJ2aWNlRmFjdG9yeSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IExvY2FsaXphdGlvbiBmcm9tIFwic2FwL2Jhc2UvaTE4bi9Mb2NhbGl6YXRpb25cIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudERhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNlbWFudGljT2JqZWN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24sIFhNTFByZXByb2Nlc3NvckNvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCBUZW1wbGF0ZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFN1cnZleUNvbmZpZyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9GZWVkYmFja1wiO1xuaW1wb3J0IHR5cGUge1xuXHRCYXNlTWFuaWZlc3RTZXR0aW5ncyxcblx0Q29udGVudERlbnNpdGllc1R5cGUsXG5cdENvbnRyb2xDb25maWd1cmF0aW9uLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0TWFuaWZlc3RIZWFkZXJGYWNldCxcblx0VmFyaWFudE1hbmFnZW1lbnRUeXBlXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IFRlbXBsYXRlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlICogYXMgX01ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlICogYXMgX1RlbXBsYXRlQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZVJlY29yZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyByZXF1aXJlRGVwZW5kZW5jaWVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTG9hZGVyVXRpbHNcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgYXBwbHlQYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvbWFuaWZlc3RNZXJnZXIvQ2hhbmdlUGFnZUNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgQ2FjaGVIYW5kbGVyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9DYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IFZlcnNpb25JbmZvIGZyb20gXCJzYXAvdWkvVmVyc2lvbkluZm9cIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdENvbnRlbnQsIE1hbmlmZXN0T3V0Ym91bmRFbnRyeSwgU2hhcmVPcHRpb25zIH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5pbXBvcnQgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCBTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZUZhY3RvcnlSZWdpc3RyeVwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSBcInR5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvRHluYW1pY0Fubm90YXRpb25QYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlTW9kZWxTZXJ2aWNlIH0gZnJvbSBcIi4vUmVzb3VyY2VNb2RlbFNlcnZpY2VGYWN0b3J5XCI7XG50eXBlIFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3MgPSB7XG5cdHZpZXdUeXBlPzogc3RyaW5nO1xuXHR2aWV3TmFtZT86IHN0cmluZztcbn07XG5cbnR5cGUgVmlld1NldHRpbmdzID0gUGFyYW1ldGVyczx0eXBlb2YgVmlldy5jcmVhdGU+WzBdICYgeyBjYWNoZTogdW5rbm93bjsgbW9kZWxzOiB1bmtub3duOyBoZWlnaHQ6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgVmlld0RhdGEgPSB7XG5cdGhpZGVGaWx0ZXJCYXI/OiBib29sZWFuO1xuXHR1c2VIaWRkZW5GaWx0ZXJCYXI/OiBib29sZWFuO1xuXHRhZGRpdGlvbmFsU2VtYW50aWNPYmplY3RzPzogUmVjb3JkPHN0cmluZywgU2VtYW50aWNPYmplY3Q+O1xuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblx0bmF2aWdhdGlvbjogb2JqZWN0O1xuXHR2aWV3TGV2ZWw6IG51bWJlcjtcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBWYXJpYW50TWFuYWdlbWVudFR5cGU7XG5cdHN0YWJsZUlkOiBzdHJpbmc7XG5cdGNvbnRlbnREZW5zaXRpZXM/OiBDb250ZW50RGVuc2l0aWVzVHlwZTtcblx0cmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbDtcblx0ZnVsbENvbnRleHRQYXRoOiBzdHJpbmc7XG5cdGlzRGVza3RvcDogYm9vbGVhbjtcblx0aXNQaG9uZTogYm9vbGVhbjtcblx0Y29udmVydGVyVHlwZTogVGVtcGxhdGVUeXBlO1xuXHRzaGVsbENvbnRlbnREZW5zaXR5Pzogc3RyaW5nO1xuXHR1c2VOZXdMYXp5TG9hZGluZz86IGJvb2xlYW47XG5cdGluaXRpYWxMb2FkPzogc3RyaW5nO1xuXHRsaXZlTW9kZT86IGJvb2xlYW47XG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q/OiBib29sZWFuO1xuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IENvbnRyb2xDb25maWd1cmF0aW9uO1xuXHRyZWZyZXNoU3RyYXRlZ3lPbkFwcFJlc3RvcmU/OiB1bmtub3duO1xuXHRlbnRpdHlTZXQ/OiBzdHJpbmc7XG5cdGlzU2hhcmVCdXR0b25WaXNpYmxlRm9yTXlJbmJveD86IGJvb2xlYW47XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRzaGFyZT86IFNoYXJlT3B0aW9ucztcblx0Y29udGVudD86IHtcblx0XHRmZWVkYmFjaz86IHsgYWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIFN1cnZleUNvbmZpZz47IHN0YW5kYXJkQWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIFN1cnZleUNvbmZpZz4gfTtcblx0XHRoZWFkZXI/OiB7XG5cdFx0XHRmYWNldHM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RIZWFkZXJGYWNldD47XG5cdFx0XHRhY3Rpb25zPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPjtcblx0XHR9O1xuXHRcdGZvb3Rlcj86IHtcblx0XHRcdGFjdGlvbnM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+O1xuXHRcdH07XG5cdH07XG5cdGVkaXRhYmxlSGVhZGVyQ29udGVudD86IGJvb2xlYW47XG59O1xuY2xhc3MgVGVtcGxhdGVkVmlld1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+IHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdG9WaWV3ITogVmlldztcblxuXHRvUmVzb3VyY2VNb2RlbFNlcnZpY2UhOiBSZXNvdXJjZU1vZGVsU2VydmljZTtcblxuXHRvQ2FjaGVIYW5kbGVyU2VydmljZSE6IENhY2hlSGFuZGxlclNlcnZpY2U7XG5cblx0b0ZhY3RvcnkhOiBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3Rvcnk7XG5cblx0cmVzb3VyY2VNb2RlbCE6IFJlc291cmNlTW9kZWw7XG5cblx0c3RhYmxlSWQhOiBzdHJpbmc7XG5cblx0cGFnZUlkITogc3RyaW5nO1xuXG5cdFRlbXBsYXRlQ29udmVydGVyPzogdHlwZW9mIF9UZW1wbGF0ZUNvbnZlcnRlcjtcblxuXHRNZXRhTW9kZWxDb252ZXJ0ZXI/OiB0eXBlb2YgX01ldGFNb2RlbENvbnZlcnRlcjtcblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IGFTZXJ2aWNlRGVwZW5kZW5jaWVzID0gW107XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblx0XHRjb25zdCBvQ29tcG9uZW50ID0gb0NvbnRleHQuc2NvcGVPYmplY3Q7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihvQ29tcG9uZW50KSBhcyBBcHBDb21wb25lbnQ7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0dGhpcy5wYWdlSWQgPSBvQXBwQ29tcG9uZW50LmdldExvY2FsSWQob0NvbXBvbmVudC5nZXRJZCgpKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3Qgc1N0YWJsZUlkID0gYCR7b0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpLmdldENvbXBvbmVudE5hbWUoKX06OiR7dGhpcy5wYWdlSWR9YDtcblx0XHRjb25zdCBhRW5oYW5jZUkxOG4gPSBvQ29tcG9uZW50LmdldEVuaGFuY2VJMThuKCkgfHwgW107XG5cdFx0bGV0IHNBcHBOYW1lc3BhY2U7XG5cdFx0dGhpcy5vRmFjdG9yeSA9IG9Db250ZXh0LmZhY3Rvcnk7XG5cdFx0aWYgKGFFbmhhbmNlSTE4bikge1xuXHRcdFx0c0FwcE5hbWVzcGFjZSA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKS5nZXRDb21wb25lbnROYW1lKCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFFbmhhbmNlSTE4bi5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRleHQtdmVydGljYWxpemF0aW9uIGFwcGxpY2F0aW9ucyBjYW4gYWxzbyBwYXNzIGEgcmVzb3VyY2UgbW9kZWwgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdFx0Ly8gVUk1IHRha2VzIGNhcmUgb2YgdGV4dC12ZXJ0aWNhbGl6YXRpb24gZm9yIHJlc291cmNlIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyBIZW5jZSBjaGVjayBpZiB0aGUgZ2l2ZW4ga2V5IGlzIGEgcmVzb3VyY2UgbW9kZWwgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdFx0Ly8gaWYgc28gdGhpcyBtb2RlbCBzaG91bGQgYmUgdXNlZCB0byBlbmhhbmNlIHRoZSBzYXAuZmUgcmVzb3VyY2UgbW9kZWwgc28gcGFzcyBpdCBhcyBpdCBpc1xuXHRcdFx0XHRjb25zdCBvUmVzb3VyY2VNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TW9kZWwoYUVuaGFuY2VJMThuW2ldKTtcblx0XHRcdFx0aWYgKG9SZXNvdXJjZU1vZGVsICYmIG9SZXNvdXJjZU1vZGVsLmlzQShcInNhcC51aS5tb2RlbC5yZXNvdXJjZS5SZXNvdXJjZU1vZGVsXCIpKSB7XG5cdFx0XHRcdFx0YUVuaGFuY2VJMThuW2ldID0gb1Jlc291cmNlTW9kZWw7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YUVuaGFuY2VJMThuW2ldID0gYCR7c0FwcE5hbWVzcGFjZX0uJHthRW5oYW5jZUkxOG5baV0ucmVwbGFjZShcIi5wcm9wZXJ0aWVzXCIsIFwiXCIpfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3Qgc0NhY2hlSWRlbnRpZmllciA9IGAke29BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9XyR7c1N0YWJsZUlkfV8ke0xvY2FsaXphdGlvbi5nZXRMYW5ndWFnZVRhZygpfWA7XG5cdFx0YVNlcnZpY2VEZXBlbmRlbmNpZXMucHVzaChcblx0XHRcdFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkuZ2V0KFwic2FwLmZlLmNvcmUuc2VydmljZXMuUmVzb3VyY2VNb2RlbFNlcnZpY2VcIilcblx0XHRcdFx0LmNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRzY29wZVR5cGU6IFwiY29tcG9uZW50XCIsXG5cdFx0XHRcdFx0c2NvcGVPYmplY3Q6IG9Db21wb25lbnQsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUubWFjcm9zLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUudGVtcGxhdGVzLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRlbmhhbmNlSTE4bjogYUVuaGFuY2VJMThuLFxuXHRcdFx0XHRcdFx0bW9kZWxOYW1lOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKChvUmVzb3VyY2VNb2RlbFNlcnZpY2U6IFJlc291cmNlTW9kZWxTZXJ2aWNlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UgPSBvUmVzb3VyY2VNb2RlbFNlcnZpY2U7XG5cdFx0XHRcdFx0cmV0dXJuIG9SZXNvdXJjZU1vZGVsU2VydmljZS5nZXRSZXNvdXJjZU1vZGVsKCk7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0XHRhU2VydmljZURlcGVuZGVuY2llcy5wdXNoKFxuXHRcdFx0U2VydmljZUZhY3RvcnlSZWdpc3RyeS5nZXQoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5DYWNoZUhhbmRsZXJTZXJ2aWNlXCIpXG5cdFx0XHRcdC5jcmVhdGVJbnN0YW5jZSh7XG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRcdGFwcENvbXBvbmVudDogb0FwcENvbXBvbmVudCxcblx0XHRcdFx0XHRcdGNvbXBvbmVudDogb0NvbXBvbmVudFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oYXN5bmMgKG9DYWNoZUhhbmRsZXJTZXJ2aWNlOiBDYWNoZUhhbmRsZXJTZXJ2aWNlKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vQ2FjaGVIYW5kbGVyU2VydmljZSA9IG9DYWNoZUhhbmRsZXJTZXJ2aWNlO1xuXHRcdFx0XHRcdHJldHVybiBvQ2FjaGVIYW5kbGVyU2VydmljZS52YWxpZGF0ZUNhY2hlS2V5KHNDYWNoZUlkZW50aWZpZXIsIG9Db21wb25lbnQsIG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKSk7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0XHRhU2VydmljZURlcGVuZGVuY2llcy5wdXNoKFxuXHRcdFx0VmVyc2lvbkluZm8ubG9hZCgpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvSW5mbykge1xuXHRcdFx0XHRcdGxldCBzVGltZXN0YW1wID0gXCJcIjtcblx0XHRcdFx0XHRpZiAoIW9JbmZvLmxpYnJhcmllcykge1xuXHRcdFx0XHRcdFx0c1RpbWVzdGFtcCA9IChzYXAudWkgYXMgdW5rbm93biBhcyB7IGJ1aWxkaW5mbzogeyBidWlsZHRpbWU6IHN0cmluZyB9IH0pLmJ1aWxkaW5mby5idWlsZHRpbWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9JbmZvLmxpYnJhcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChvTGlicmFyeSkge1xuXHRcdFx0XHRcdFx0XHRzVGltZXN0YW1wICs9IG9MaWJyYXJ5LmJ1aWxkVGltZXN0YW1wO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBzVGltZXN0YW1wO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJldHVybiBcIjxOT1ZBTFVFPlwiO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdFx0dGhpcy5pbml0UHJvbWlzZSA9IFByb21pc2UuYWxsKGFTZXJ2aWNlRGVwZW5kZW5jaWVzKVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFEZXBlbmRlbmNpZXNSZXN1bHQ6IHVua25vd25bXSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvUmVzb3VyY2VNb2RlbCA9IGFEZXBlbmRlbmNpZXNSZXN1bHRbMF0gYXMgUmVzb3VyY2VNb2RlbDtcblx0XHRcdFx0Y29uc3Qgc0NhY2hlS2V5ID0gYURlcGVuZGVuY2llc1Jlc3VsdFsxXSBhcyBzdHJpbmcgfCBudWxsO1xuXHRcdFx0XHRjb25zdCBbVGVtcGxhdGVDb252ZXJ0ZXIsIE1ldGFNb2RlbENvbnZlcnRlcl0gPSBhd2FpdCByZXF1aXJlRGVwZW5kZW5jaWVzKFtcblx0XHRcdFx0XHRcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIixcblx0XHRcdFx0XHRcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCJcblx0XHRcdFx0XSk7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZVZpZXcoXG5cdFx0XHRcdFx0b1Jlc291cmNlTW9kZWwsXG5cdFx0XHRcdFx0c1N0YWJsZUlkLFxuXHRcdFx0XHRcdHNDYWNoZUtleSxcblx0XHRcdFx0XHRUZW1wbGF0ZUNvbnZlcnRlciBhcyB0eXBlb2YgX1RlbXBsYXRlQ29udmVydGVyLFxuXHRcdFx0XHRcdE1ldGFNb2RlbENvbnZlcnRlciBhcyB0eXBlb2YgX01ldGFNb2RlbENvbnZlcnRlclxuXHRcdFx0XHQpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzQ2FjaGVLZXk6IHN0cmluZyB8IHZvaWQgfCBudWxsKTogdm9pZCB7XG5cdFx0XHRcdGNvbnN0IG9DYWNoZUhhbmRsZXJTZXJ2aWNlID0gU2VydmljZUZhY3RvcnlSZWdpc3RyeS5nZXQoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5DYWNoZUhhbmRsZXJTZXJ2aWNlXCIpLmdldEluc3RhbmNlKG9NZXRhTW9kZWwpO1xuXHRcdFx0XHRvQ2FjaGVIYW5kbGVyU2VydmljZS5pbnZhbGlkYXRlSWZOZWVkZWQoXG5cdFx0XHRcdFx0c0NhY2hlS2V5LFxuXHRcdFx0XHRcdHNDYWNoZUlkZW50aWZpZXIsXG5cdFx0XHRcdFx0b0NvbXBvbmVudCxcblx0XHRcdFx0XHRvQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKClcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVmcmVzaCB0aGUgY3VycmVudCB2aWV3IHVzaW5nIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gYXMgYmVmb3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0NvbXBvbmVudFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgaW5kaWNhdGluZyB3aGVuIHRoZSB2aWV3IGlzIHJlZnJlc2hlZFxuXHQgKi9cblx0YXN5bmMgcmVmcmVzaFZpZXcob0NvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvUm9vdFZpZXcgPSBvQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCk7XG5cdFx0aWYgKG9Sb290Vmlldykge1xuXHRcdFx0b1Jvb3RWaWV3LmRlc3Ryb3koKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMub1ZpZXcpIHtcblx0XHRcdHRoaXMub1ZpZXcuZGVzdHJveSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVWaWV3KHRoaXMucmVzb3VyY2VNb2RlbCwgdGhpcy5zdGFibGVJZCwgXCJcIiwgdGhpcy5UZW1wbGF0ZUNvbnZlcnRlciEsIHRoaXMuTWV0YU1vZGVsQ29udmVydGVyISlcblx0XHRcdC50aGVuKGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0b0NvbXBvbmVudC5nZXRVSUFyZWEoKS5pbnZhbGlkYXRlKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRvQ29tcG9uZW50LmdldFVJQXJlYSgpLmludmFsaWRhdGUoKTtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRfZ2V0Vmlld1NldHRpbmdzKFxuXHRcdHByZXByb2Nlc3NvckNvbnRleHQ6IFhNTFByZXByb2Nlc3NvckNvbnRleHQsXG5cdFx0bVNlcnZpY2VTZXR0aW5nczogVGVtcGxhdGVkVmlld1NlcnZpY2VTZXR0aW5ncyxcblx0XHRvQ29tcG9uZW50OiBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD4sXG5cdFx0bVZpZXdEYXRhOiBWaWV3RGF0YSxcblx0XHRzQ2FjaGVLZXk6IHN0cmluZyB8IG51bGwsXG5cdFx0b1BhZ2VNb2RlbDogSlNPTk1vZGVsLFxuXHRcdG9SZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsXG5cdCk6IFZpZXdTZXR0aW5ncyB7XG5cdFx0bGV0IHZpZXdUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtU2VydmljZVNldHRpbmdzLnZpZXdUeXBlIHx8IG9Db21wb25lbnQuZ2V0Vmlld1R5cGUoKSB8fCBcIlhNTFwiO1xuXHRcdGlmICh2aWV3VHlwZSAhPT0gXCJYTUxcIikge1xuXHRcdFx0dmlld1R5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHR0eXBlOiB2aWV3VHlwZSxcblx0XHRcdHByZXByb2Nlc3NvcnM6IHtcblx0XHRcdFx0eG1sOiBwcmVwcm9jZXNzb3JDb250ZXh0LFxuXHRcdFx0XHRjb250cm9sczoge31cblx0XHRcdH0sXG5cdFx0XHRpZDogbVZpZXdEYXRhLnN0YWJsZUlkLFxuXHRcdFx0dmlld05hbWU6IG1TZXJ2aWNlU2V0dGluZ3Mudmlld05hbWUgfHwgb0NvbXBvbmVudC5nZXRWaWV3TmFtZT8uKCksXG5cdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhLFxuXHRcdFx0Y2FjaGU6IHtcblx0XHRcdFx0a2V5czogW3NDYWNoZUtleV0sXG5cdFx0XHRcdGFkZGl0aW9uYWxEYXRhOiB7XG5cdFx0XHRcdFx0Ly8gV2Ugc3RvcmUgdGhlIHBhZ2UgbW9kZWwgZGF0YSBpbiB0aGUgYGFkZGl0aW9uYWxEYXRhYCBvZiB0aGUgdmlldyBjYWNoZSwgdGhpcyB3YXkgaXQgaXMgYWx3YXlzIGluIHN5bmNcblx0XHRcdFx0XHRnZXRBZGRpdGlvbmFsQ2FjaGVEYXRhOiAoKTogdW5rbm93biA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb1BhZ2VNb2RlbC5nZXREYXRhKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzZXRBZGRpdGlvbmFsQ2FjaGVEYXRhOiAodmFsdWU6IG9iamVjdCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0b1BhZ2VNb2RlbC5zZXREYXRhKHZhbHVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBvUmVzb3VyY2VNb2RlbFxuXHRcdFx0fSxcblx0XHRcdGhlaWdodDogXCIxMDAlXCJcblx0XHR9O1xuXHR9XG5cblx0YXN5bmMgX2NyZWF0ZUVycm9yUGFnZShcblx0XHRyZWFzb246IEVycm9yLFxuXHRcdG9WaWV3U2V0dGluZ3M6IFZpZXdTZXR0aW5ncyxcblx0XHR2aWV3TmFtZTogc3RyaW5nLFxuXHRcdG9Db21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50LFxuXHRcdHNDYWNoZUtleTogc3RyaW5nIHwgbnVsbFxuXHQpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdC8vIGp1c3QgcmVwbGFjZSB0aGUgdmlldyBuYW1lIGFuZCBhIG1vZGVsIGNvbnRhaW5pbmcgdGhlIHJlYXNvbiwgYnV0IGtlZXAgdGhlIG90aGVyIHNldHRpbmdzXG5cdFx0TG9nLmVycm9yKHJlYXNvbi5tZXNzYWdlLCByZWFzb24pO1xuXHRcdG9WaWV3U2V0dGluZ3Mudmlld05hbWUgPSB2aWV3TmFtZTtcblx0XHRpZiAob1ZpZXdTZXR0aW5ncy5wcmVwcm9jZXNzb3JzKSB7XG5cdFx0XHQob1ZpZXdTZXR0aW5ncy5wcmVwcm9jZXNzb3JzIGFzIFJlY29yZDxzdHJpbmcsIHsgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbD4gfT4pLnhtbC5tb2RlbHNbXCJlcnJvclwiXSA9IG5ldyBKU09OTW9kZWwocmVhc29uKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb0NvbXBvbmVudC5ydW5Bc093bmVyKGFzeW5jICgpID0+IHtcblx0XHRcdHJldHVybiBWaWV3LmNyZWF0ZShvVmlld1NldHRpbmdzKS50aGVuKChvVmlldzogVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLm9WaWV3ID0gb1ZpZXc7XG5cdFx0XHRcdHRoaXMub1ZpZXcuc2V0TW9kZWwobmV3IEpTT05Nb2RlbCh0aGlzLm9WaWV3KSwgXCIkdmlld1wiKTtcblx0XHRcdFx0b0NvbXBvbmVudC5zZXRBZ2dyZWdhdGlvbihcInJvb3RDb250cm9sXCIsIHRoaXMub1ZpZXcpO1xuXHRcdFx0XHRyZXR1cm4gc0NhY2hlS2V5O1xuXHRcdFx0fSk7XG5cdFx0fSkgYXMgUHJvbWlzZTxzdHJpbmc+O1xuXHR9XG5cblx0YXN5bmMgY3JlYXRlVmlldyhcblx0XHRvUmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCxcblx0XHRzU3RhYmxlSWQ6IHN0cmluZyxcblx0XHRzQ2FjaGVLZXk6IHN0cmluZyB8IG51bGwsXG5cdFx0VGVtcGxhdGVDb252ZXJ0ZXI6IHR5cGVvZiBfVGVtcGxhdGVDb252ZXJ0ZXIsXG5cdFx0TWV0YU1vZGVsQ29udmVydGVyOiB0eXBlb2YgX01ldGFNb2RlbENvbnZlcnRlclxuXHQpOiBQcm9taXNlPHN0cmluZyB8IG51bGwgfCB2b2lkPiB7XG5cdFx0dGhpcy5yZXNvdXJjZU1vZGVsID0gb1Jlc291cmNlTW9kZWw7XG5cdFx0dGhpcy5zdGFibGVJZCA9IHNTdGFibGVJZDtcblx0XHR0aGlzLlRlbXBsYXRlQ29udmVydGVyID0gVGVtcGxhdGVDb252ZXJ0ZXI7XG5cdFx0dGhpcy5NZXRhTW9kZWxDb252ZXJ0ZXIgPSBNZXRhTW9kZWxDb252ZXJ0ZXI7XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblx0XHRjb25zdCBtU2VydmljZVNldHRpbmdzID0gb0NvbnRleHQuc2V0dGluZ3M7XG5cdFx0Y29uc3Qgc0NvbnZlcnRlclR5cGUgPSBtU2VydmljZVNldHRpbmdzLmNvbnZlcnRlclR5cGU7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db250ZXh0LnNjb3BlT2JqZWN0IGFzIEVuaGFuY2VXaXRoVUk1PFRlbXBsYXRlQ29tcG9uZW50Pjtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3Iob0NvbXBvbmVudCkgYXMgQXBwQ29tcG9uZW50O1xuXHRcdGNvbnN0IHNGdWxsQ29udGV4dFBhdGg6IHN0cmluZyA9XG5cdFx0XHRvQXBwQ29tcG9uZW50LmdldFJvdXRpbmdTZXJ2aWNlKCkuZ2V0VGFyZ2V0SW5mb3JtYXRpb25Gb3Iob0NvbXBvbmVudCk/Lm9wdGlvbnM/LnNldHRpbmdzPy5mdWxsQ29udGV4dFBhdGggPz8gXCJcIjtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0FwcENvbXBvbmVudC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBvTWFuaWZlc3RDb250ZW50ID0gb0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpO1xuXHRcdGNvbnN0IG9EZXZpY2VNb2RlbCA9IG5ldyBKU09OTW9kZWwoRGV2aWNlKS5zZXREZWZhdWx0QmluZGluZ01vZGUoXCJPbmVXYXlcIik7XG5cdFx0Y29uc3Qgb01hbmlmZXN0TW9kZWwgPSBuZXcgSlNPTk1vZGVsKG9NYW5pZmVzdENvbnRlbnQpO1xuXHRcdGxldCBvUGFnZU1vZGVsOiBUZW1wbGF0ZU1vZGVsLCBvVmlld0RhdGFNb2RlbDogTW9kZWwsIG1WaWV3RGF0YTogVmlld0RhdGE7XG5cdFx0Ly8gTG9hZCB0aGUgaW5kZXggZm9yIHRoZSBhZGRpdGlvbmFsIGJ1aWxkaW5nIGJsb2NrcyB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZW1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qgb1JvdXRpbmdTZXJ2aWNlID0gYXdhaXQgb0FwcENvbXBvbmVudC5nZXRTZXJ2aWNlKFwicm91dGluZ1NlcnZpY2VcIik7XG5cdFx0XHQvLyBSZXRyaWV2ZSB0aGUgdmlld0xldmVsIGZvciB0aGUgY29tcG9uZW50XG5cdFx0XHRjb25zdCBvVGFyZ2V0SW5mbyA9IG9Sb3V0aW5nU2VydmljZS5nZXRUYXJnZXRJbmZvcm1hdGlvbkZvcihvQ29tcG9uZW50KTtcblx0XHRcdGNvbnN0IG1PdXRib3VuZHMgPVxuXHRcdFx0XHQob01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0gJiZcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXS5jcm9zc05hdmlnYXRpb24gJiZcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXS5jcm9zc05hdmlnYXRpb24ub3V0Ym91bmRzKSB8fFxuXHRcdFx0XHR7fTtcblx0XHRcdGNvbnN0IG1OYXZpZ2F0aW9uID0gb0NvbXBvbmVudC5nZXROYXZpZ2F0aW9uKCkgfHwge307XG5cdFx0XHR0aGlzLl9lbmhhbmNlTmF2aWdhdGlvbkNvbmZpZyhtTmF2aWdhdGlvbiwgbU91dGJvdW5kcyk7XG5cdFx0XHRjb25zdCBjb252ZXJ0ZWRNZXRhZGF0YSA9IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0VHlwZXMoXG5cdFx0XHRcdG9NZXRhTW9kZWwsXG5cdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKVxuXHRcdFx0KTtcblx0XHRcdG1WaWV3RGF0YSA9IHtcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBvQXBwQ29tcG9uZW50LFxuXHRcdFx0XHRuYXZpZ2F0aW9uOiBtTmF2aWdhdGlvbixcblx0XHRcdFx0dmlld0xldmVsOiBvVGFyZ2V0SW5mby52aWV3TGV2ZWwsXG5cdFx0XHRcdHN0YWJsZUlkOiBzU3RhYmxlSWQsXG5cdFx0XHRcdGNvbnRlbnREZW5zaXRpZXM6IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdPy5jb250ZW50RGVuc2l0aWVzLFxuXHRcdFx0XHRyZXNvdXJjZU1vZGVsOiBvUmVzb3VyY2VNb2RlbCxcblx0XHRcdFx0ZnVsbENvbnRleHRQYXRoOiBzRnVsbENvbnRleHRQYXRoLFxuXHRcdFx0XHRpc0Rlc2t0b3A6IERldmljZS5zeXN0ZW0uZGVza3RvcCxcblx0XHRcdFx0aXNQaG9uZTogRGV2aWNlLnN5c3RlbS5waG9uZSxcblx0XHRcdFx0Y29udmVydGVyVHlwZTogVGVtcGxhdGVUeXBlLkZyZWVTdHlsZVBhZ2Vcblx0XHRcdH07XG5cdFx0XHRpZiAob0NvbXBvbmVudC5nZXRWaWV3RGF0YSkge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKG1WaWV3RGF0YSwgb0NvbXBvbmVudC5nZXRWaWV3RGF0YSgpKTtcblx0XHRcdFx0bVZpZXdEYXRhID0gVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LnNldFBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyhcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50LFxuXHRcdFx0XHRcdG1WaWV3RGF0YSxcblx0XHRcdFx0XHRvQXBwQ29tcG9uZW50LFxuXHRcdFx0XHRcdHRoaXMucGFnZUlkXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRtVmlld0RhdGEuaXNTaGFyZUJ1dHRvblZpc2libGVGb3JNeUluYm94ID0gVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LmdldFNoYXJlQnV0dG9uVmlzaWJpbGl0eUZvck15SW5ib3gob0FwcENvbXBvbmVudCk7XG5cdFx0XHRjb25zdCBvU2hlbGxTZXJ2aWNlcyA9IG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdFx0bVZpZXdEYXRhLmNvbnZlcnRlclR5cGUgPSBzQ29udmVydGVyVHlwZTtcblx0XHRcdG1WaWV3RGF0YS5zaGVsbENvbnRlbnREZW5zaXR5ID0gb1NoZWxsU2VydmljZXMuZ2V0Q29udGVudERlbnNpdHkoKTtcblx0XHRcdG1WaWV3RGF0YS5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0ID1cblx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXSAmJiBvTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdLmZvcm1cblx0XHRcdFx0XHQ/IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0uZm9ybS5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0XG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKTtcblx0XHRcdGlmIChtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb24pIHtcblx0XHRcdFx0Zm9yIChjb25zdCBzQW5ub3RhdGlvblBhdGggaW4gbVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKHNBbm5vdGF0aW9uUGF0aC5pbmNsdWRlcyhcIltcIikpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNUYXJnZXRBbm5vdGF0aW9uUGF0aCA9IHJlc29sdmVEeW5hbWljRXhwcmVzc2lvbihzQW5ub3RhdGlvblBhdGgsIG9NZXRhTW9kZWwpO1xuXHRcdFx0XHRcdFx0bVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uW3NUYXJnZXRBbm5vdGF0aW9uUGF0aF0gPSBtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb25bc0Fubm90YXRpb25QYXRoXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0b1BhZ2VNb2RlbCA9IG5ldyBUZW1wbGF0ZU1vZGVsKCgpID0+IHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBvRGlhZ25vc3RpY3MgPSBvQXBwQ29tcG9uZW50LmdldERpYWdub3N0aWNzKCk7XG5cdFx0XHRcdFx0Y29uc3QgaUlzc3VlQ291bnQgPSBvRGlhZ25vc3RpY3MuZ2V0SXNzdWVzKCkubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IG9Db252ZXJ0ZXJQYWdlTW9kZWwgPSBUZW1wbGF0ZUNvbnZlcnRlci5jb252ZXJ0UGFnZShcblx0XHRcdFx0XHRcdHNDb252ZXJ0ZXJUeXBlLFxuXHRcdFx0XHRcdFx0b01ldGFNb2RlbCxcblx0XHRcdFx0XHRcdG1WaWV3RGF0YSBhcyB1bmtub3duIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0b0RpYWdub3N0aWNzLFxuXHRcdFx0XHRcdFx0c0Z1bGxDb250ZXh0UGF0aCxcblx0XHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKSxcblx0XHRcdFx0XHRcdG9Db21wb25lbnRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGNvbnN0IGFJc3N1ZXMgPSBvRGlhZ25vc3RpY3MuZ2V0SXNzdWVzKCk7XG5cdFx0XHRcdFx0Y29uc3QgYUFkZGVkSXNzdWVzID0gYUlzc3Vlcy5zbGljZShpSXNzdWVDb3VudCk7XG5cdFx0XHRcdFx0aWYgKGFBZGRlZElzc3Vlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcdFx0XCJTb21lIGlzc3VlcyBoYXZlIGJlZW4gZGV0ZWN0ZWQgaW4geW91ciBwcm9qZWN0LCBwbGVhc2UgY2hlY2sgdGhlIFVJNSBzdXBwb3J0IGFzc2lzdGFudCBydWxlIGZvciBzYXAuZmUuY29yZVwiXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gb0NvbnZlcnRlclBhZ2VNb2RlbDtcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgc3RyaW5nLCBlcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgb01ldGFNb2RlbCk7XG5cdFx0XHRjb25zdCBhU3BsaXRQYXRoID0gc0Z1bGxDb250ZXh0UGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRjb25zdCBzRW50aXR5U2V0UGF0aCA9IHRoaXMuX2dldEZ1bGxQYXRoVG9FbnRpdHlTZXQoYVNwbGl0UGF0aCwgb01ldGFNb2RlbCk7XG5cdFx0XHRjb25zdCBwcmVwcm9jZXNzb3JDb250ZXh0OiBYTUxQcmVwcm9jZXNzb3JDb250ZXh0ID0ge1xuXHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFx0XHRcdFx0ZW50aXR5U2V0OiBzRW50aXR5U2V0UGF0aCA/IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0VudGl0eVNldFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdGZ1bGxDb250ZXh0UGF0aDogc0Z1bGxDb250ZXh0UGF0aCA/IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0Z1bGxDb250ZXh0UGF0aCkgOiBudWxsLFxuXHRcdFx0XHRcdFx0Y29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNGdWxsQ29udGV4dFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIsIHVuZGVmaW5lZCwgeyBub1Jlc29sdmU6IHRydWUgfSksXG5cdFx0XHRcdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhID8gb1ZpZXdEYXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpIDogbnVsbFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0XHRlbnRpdHlTZXQ6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRcdFwic2FwLmZlLmkxOG5cIjogb1Jlc291cmNlTW9kZWwsXG5cdFx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRkZXZpY2U6IG9EZXZpY2VNb2RlbCxcblx0XHRcdFx0XHRcdG1hbmlmZXN0OiBvTWFuaWZlc3RNb2RlbCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwgYXMgdW5rbm93biBhcyBKU09OTW9kZWwsXG5cdFx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZ1bGxDb250ZXh0UGF0aDogc0Z1bGxDb250ZXh0UGF0aCxcblx0XHRcdFx0XHRnZXRDb252ZXJ0ZWRNZXRhZGF0YTogKCkgPT4gY29udmVydGVkTWV0YWRhdGEsXG5cdFx0XHRcdFx0YXBwQ29tcG9uZW50OiBvQXBwQ29tcG9uZW50XG5cdFx0XHRcdH0sXG5cdFx0XHRcdG9WaWV3U2V0dGluZ3MgPSB0aGlzLl9nZXRWaWV3U2V0dGluZ3MoXG5cdFx0XHRcdFx0cHJlcHJvY2Vzc29yQ29udGV4dCxcblx0XHRcdFx0XHRtU2VydmljZVNldHRpbmdzLFxuXHRcdFx0XHRcdG9Db21wb25lbnQsXG5cdFx0XHRcdFx0bVZpZXdEYXRhLFxuXHRcdFx0XHRcdHNDYWNoZUtleSxcblx0XHRcdFx0XHRvUGFnZU1vZGVsIGFzIHVua25vd24gYXMgSlNPTk1vZGVsLFxuXHRcdFx0XHRcdG9SZXNvdXJjZU1vZGVsXG5cdFx0XHRcdCk7XG5cdFx0XHQvLyBTZXR0aW5nIHRoZSBwYWdlTW9kZWwgb24gdGhlIGNvbXBvbmVudCBmb3IgcG90ZW50aWFsIHJldXNlXG5cdFx0XHRvQ29tcG9uZW50LnNldE1vZGVsKG9QYWdlTW9kZWwgYXMgdW5rbm93biBhcyBKU09OTW9kZWwsIFwiX3BhZ2VNb2RlbFwiKTtcblx0XHRcdG9Db21wb25lbnQuc2V0UHJlcHJvY2Vzc29yQ29udGV4dChwcmVwcm9jZXNzb3JDb250ZXh0KTtcblx0XHRcdHJldHVybiBvQ29tcG9uZW50LnJ1bkFzT3duZXIoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gVmlldy5jcmVhdGUob1ZpZXdTZXR0aW5ncylcblxuXHRcdFx0XHRcdC50aGVuKChvVmlldzogVmlldykgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5vVmlldyA9IG9WaWV3O1xuXHRcdFx0XHRcdFx0Y29uc3Qgdmlld0pTT05Nb2RlbCA9IG5ldyBKU09OTW9kZWwodGhpcy5vVmlldyk7XG5cdFx0XHRcdFx0XHRNb2RlbEhlbHBlci5lbmhhbmNlVmlld0pTT05Nb2RlbCh2aWV3SlNPTk1vZGVsIGFzIEpTT05Nb2RlbCAmIHsgX2dldE9iamVjdDogRnVuY3Rpb24gfSk7XG5cdFx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKHZpZXdKU09OTW9kZWwsIFwiJHZpZXdcIik7XG5cdFx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKG9WaWV3RGF0YU1vZGVsLCBcInZpZXdEYXRhXCIpO1xuXHRcdFx0XHRcdFx0b0NvbXBvbmVudC5zZXRBZ2dyZWdhdGlvbihcInJvb3RDb250cm9sXCIsIHRoaXMub1ZpZXcpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNDYWNoZUtleTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaChhc3luYyAocmVhc29uOiBFcnJvcikgPT5cblx0XHRcdFx0XHRcdHRoaXMuX2NyZWF0ZUVycm9yUGFnZShcblx0XHRcdFx0XHRcdFx0cmVhc29uLFxuXHRcdFx0XHRcdFx0XHRvVmlld1NldHRpbmdzLFxuXHRcdFx0XHRcdFx0XHRtU2VydmljZVNldHRpbmdzLmVycm9yVmlld05hbWUgfHwgXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy52aWV3LlRlbXBsYXRpbmdFcnJvclBhZ2VcIixcblx0XHRcdFx0XHRcdFx0b0NvbXBvbmVudCxcblx0XHRcdFx0XHRcdFx0c0NhY2hlS2V5XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHRcdC5jYXRjaCgoZSkgPT4gTG9nLmVycm9yKGUubWVzc2FnZSwgZSkpO1xuXHRcdFx0fSk7XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcigoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UsIGVycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIGNyZWF0aW5nIHZpZXcgOiAke2Vycm9yfWApO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgX2VuaGFuY2VOYXZpZ2F0aW9uQ29uZmlnKFxuXHRcdG1OYXZpZ2F0aW9uOiBSZWNvcmQ8c3RyaW5nLCBOYXZpZ2F0aW9uQ29uZmlndXJhdGlvbj4sXG5cdFx0bU91dGJvdW5kczogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RPdXRib3VuZEVudHJ5PlxuXHQpOiB2b2lkIHtcblx0XHRPYmplY3Qua2V5cyhtTmF2aWdhdGlvbikuZm9yRWFjaChmdW5jdGlvbiAobmF2aWdhdGlvbk9iamVjdEtleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uT2JqZWN0ID0gbU5hdmlnYXRpb25bbmF2aWdhdGlvbk9iamVjdEtleV07XG5cdFx0XHRsZXQgb3V0Ym91bmRDb25maWc7XG5cdFx0XHRpZiAobmF2aWdhdGlvbk9iamVjdC5kZXRhaWwgJiYgbmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmQgJiYgbU91dGJvdW5kc1tuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZF0pIHtcblx0XHRcdFx0b3V0Ym91bmRDb25maWcgPSBtT3V0Ym91bmRzW25hdmlnYXRpb25PYmplY3QuZGV0YWlsLm91dGJvdW5kXTtcblx0XHRcdFx0bmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmREZXRhaWwgPSB7XG5cdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG91dGJvdW5kQ29uZmlnLnNlbWFudGljT2JqZWN0LFxuXHRcdFx0XHRcdGFjdGlvbjogb3V0Ym91bmRDb25maWcuYWN0aW9uLFxuXHRcdFx0XHRcdHBhcmFtZXRlcnM6IG91dGJvdW5kQ29uZmlnLnBhcmFtZXRlcnNcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGlmIChuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZSAmJiBuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZS5vdXRib3VuZCAmJiBtT3V0Ym91bmRzW25hdmlnYXRpb25PYmplY3QuY3JlYXRlLm91dGJvdW5kXSkge1xuXHRcdFx0XHRvdXRib3VuZENvbmZpZyA9IG1PdXRib3VuZHNbbmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmRdO1xuXHRcdFx0XHRuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZS5vdXRib3VuZERldGFpbCA9IHtcblx0XHRcdFx0XHRzZW1hbnRpY09iamVjdDogb3V0Ym91bmRDb25maWcuc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0YWN0aW9uOiBvdXRib3VuZENvbmZpZy5hY3Rpb24sXG5cdFx0XHRcdFx0cGFyYW1ldGVyczogb3V0Ym91bmRDb25maWcucGFyYW1ldGVyc1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBfZ2V0RnVsbFBhdGhUb0VudGl0eVNldChhU3BsaXRQYXRoOiBzdHJpbmdbXSwgb01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpOiBzdHJpbmcge1xuXHRcdHJldHVybiBhU3BsaXRQYXRoLnJlZHVjZShmdW5jdGlvbiAoc1BhdGhTb0Zhcjogc3RyaW5nLCBzTmV4dFBhdGhQYXJ0OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdFx0aWYgKHNOZXh0UGF0aFBhcnQgPT09IFwiXCIpIHtcblx0XHRcdFx0cmV0dXJuIHNQYXRoU29GYXI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc1BhdGhTb0ZhciA9PT0gXCJcIikge1xuXHRcdFx0XHRzUGF0aFNvRmFyID0gYC8ke3NOZXh0UGF0aFBhcnR9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IG9UYXJnZXQgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUGF0aFNvRmFyfS8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke3NOZXh0UGF0aFBhcnR9YCk7XG5cdFx0XHRcdGlmIChvVGFyZ2V0ICYmIE9iamVjdC5rZXlzKG9UYXJnZXQpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRzUGF0aFNvRmFyICs9IFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0c1BhdGhTb0ZhciArPSBgLyR7c05leHRQYXRoUGFydH1gO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHNQYXRoU29GYXI7XG5cdFx0fSwgXCJcIik7XG5cdH1cblxuXHRnZXRWaWV3KCk6IFZpZXcge1xuXHRcdHJldHVybiB0aGlzLm9WaWV3O1xuXHR9XG5cblx0Z2V0SW50ZXJmYWNlKCk6IFRlbXBsYXRlZFZpZXdTZXJ2aWNlIHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGV4aXQoKTogdm9pZCB7XG5cdFx0Ly8gRGVyZWdpc3RlciBnbG9iYWwgaW5zdGFuY2Vcblx0XHRpZiAodGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UpIHtcblx0XHRcdHRoaXMub1Jlc291cmNlTW9kZWxTZXJ2aWNlLmRlc3Ryb3koKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UpIHtcblx0XHRcdHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UuZGVzdHJveSgpO1xuXHRcdH1cblx0XHR0aGlzLm9GYWN0b3J5LnJlbW92ZUdsb2JhbEluc3RhbmNlKCk7XG5cdH1cbn1cbmNsYXNzIFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBleHRlbmRzIFNlcnZpY2VGYWN0b3J5PFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+IHtcblx0X29JbnN0YW5jZVJlZ2lzdHJ5OiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZWRWaWV3U2VydmljZT4gPSB7fTtcblxuXHRzdGF0aWMgaUNyZWF0aW5nVmlld3M6IDA7XG5cblx0YXN5bmMgY3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxUZW1wbGF0ZWRWaWV3U2VydmljZVNldHRpbmdzPik6IFByb21pc2U8VGVtcGxhdGVkVmlld1NlcnZpY2U+IHtcblx0XHRUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3MrKztcblx0XHRjb25zdCBvVGVtcGxhdGVkVmlld1NlcnZpY2UgPSBuZXcgVGVtcGxhdGVkVmlld1NlcnZpY2UoT2JqZWN0LmFzc2lnbih7IGZhY3Rvcnk6IHRoaXMgfSwgb1NlcnZpY2VDb250ZXh0KSk7XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZS5pbml0UHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5pQ3JlYXRpbmdWaWV3cy0tO1xuXHRcdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZTtcblx0XHR9KTtcblx0fVxuXG5cdHJlbW92ZUdsb2JhbEluc3RhbmNlKCk6IHZvaWQge1xuXHRcdHRoaXMuX29JbnN0YW5jZVJlZ2lzdHJ5ID0ge307XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGNvbXBvbmVudCBkYXRhIHNwZWNpZmllcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgJ1NoYXJlJyBidXR0b24gYW5kIHJldHVybnMgdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiB0aGUgdmlzaWJpbGl0eS5cblx0ICpcblx0ICogQHBhcmFtIGFwcENvbXBvbmVudCBTcGVjaWZpZXMgdGhlIGFwcCBjb21wb25lbnRcblx0ICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBhcyB0cnVlIG9yIGZhbHNlIGJhc2VkIHdoZXRoZXIgdGhlICdTaGFyZScgYnV0dG9uIHNob3VsZCBiZSB2aXNpYmxlIG9yIG5vdFxuXHQgKi9cblx0c3RhdGljIGdldFNoYXJlQnV0dG9uVmlzaWJpbGl0eUZvck15SW5ib3goYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjb21wb25lbnREYXRhOiBDb21wb25lbnREYXRhID0gYXBwQ29tcG9uZW50LmdldENvbXBvbmVudERhdGEoKTtcblx0XHRpZiAoY29tcG9uZW50RGF0YSAhPT0gdW5kZWZpbmVkICYmIGNvbXBvbmVudERhdGEuZmVFbnZpcm9ubWVudCkge1xuXHRcdFx0cmV0dXJuIGNvbXBvbmVudERhdGEuZmVFbnZpcm9ubWVudC5nZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5KCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3M7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBwYWdlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBmb3IgYSBzcGVjaWZpYyBwYWdlIGlkZW50aWZpZWQgYnkgaXRzIElELlxuXHQgKlxuXHQgKiBAcGFyYW0gbWFuaWZlc3QgVGhlIG1hbmlmZXN0IGNvbnRlbnQgb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbiBkZXRhaWxzLlxuXHQgKiBAcGFyYW0gdmlld0RhdGEgVGhlIHZpZXcgZGF0YSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB2aWV3LlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBhcHBsaWNhdGlvbiBjb21wb25lbnQgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSBwYWdlSWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBwYWdlIGZvciB3aGljaCBjb25maWd1cmF0aW9uIGNoYW5nZXMgYXJlIHRvIGJlIGFwcGxpZWQuXG5cdCAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIHZpZXcgZGF0YSBvYmplY3QgcmVmbGVjdGluZyB0aGUgYXBwbGllZCBjaGFuZ2VzLlxuXHQgKi9cblx0c3RhdGljIHNldFBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyhcblx0XHRtYW5pZmVzdDogTWFuaWZlc3RDb250ZW50LFxuXHRcdHZpZXdEYXRhOiBWaWV3RGF0YSxcblx0XHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0XHRwYWdlSWQ6IHN0cmluZ1xuXHQpOiBWaWV3RGF0YSB7XG5cdFx0Y29uc3QgdGFyZ2V0cyA9IG1hbmlmZXN0Py5bXCJzYXAudWk1XCJdPy5yb3V0aW5nPy50YXJnZXRzID8/IHt9O1xuXHRcdGxldCByZWFsVGFyZ2V0ID0gXCJcIjtcblx0XHRmb3IgKGNvbnN0IHRhcmdldFRvRmluZCBpbiB0YXJnZXRzKSB7XG5cdFx0XHRpZiAodGFyZ2V0c1t0YXJnZXRUb0ZpbmRdLmlkID09PSBwYWdlSWQpIHtcblx0XHRcdFx0cmVhbFRhcmdldCA9IHRhcmdldFRvRmluZDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChyZWFsVGFyZ2V0ID09PSBcIlwiKSB7XG5cdFx0XHRyZWFsVGFyZ2V0ID0gcGFnZUlkO1xuXHRcdH1cblx0XHRjb25zdCBhY3R1YWxTZXR0aW5ncyA9IG1hbmlmZXN0Py5bXCJzYXAudWk1XCJdPy5yb3V0aW5nPy50YXJnZXRzPy5bcmVhbFRhcmdldF0/Lm9wdGlvbnM/LnNldHRpbmdzIHx8IHt9O1xuXHRcdHJldHVybiBhcHBseVBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyhhY3R1YWxTZXR0aW5ncywgdmlld0RhdGEsIGFwcENvbXBvbmVudCwgcGFnZUlkKTtcblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7O01BcUZNQSxvQkFBb0I7SUFBQTtJQUFBO01BQUE7SUFBQTtJQUFBO0lBQUEsT0FxQnpCQyxJQUFJLEdBQUosZ0JBQWE7TUFDWixNQUFNQyxvQkFBb0IsR0FBRyxFQUFFO01BQy9CLE1BQU1DLFFBQVEsR0FBRyxJQUFJLENBQUNDLFVBQVUsRUFBRTtNQUNsQyxNQUFNQyxVQUFVLEdBQUdGLFFBQVEsQ0FBQ0csV0FBVztNQUN2QyxNQUFNQyxhQUFhLEdBQUdDLFNBQVMsQ0FBQ0Msb0JBQW9CLENBQUNKLFVB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
@@ -81,6 +81,7 @@ export type ViewData = {
81
81
  actions?: ConfigurableRecord<ManifestAction>;
82
82
  };
83
83
  };
84
+ editableHeaderContent?: boolean;
84
85
  };
85
86
  class TemplatedViewService extends Service<TemplatedViewServiceSettings> {
86
87
  initPromise!: Promise<void>;