@projectcor/maia-components 2.11.100-2 → 2.11.100-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -858,12 +858,6 @@ export var useChatManager = function useChatManager(_ref3) {
858
858
  messageId: hitlContext.messageId,
859
859
  clearedTimeline: true
860
860
  });
861
- streamDebugLogHitlUiOverlap({
862
- scope: 'chatManager',
863
- source: 'approvalBox',
864
- hitlContext: hitlContext,
865
- uiSurfaces: ['approvalBox', 'streamTimeline']
866
- });
867
861
 
868
862
  // Add a message with the approval request
869
863
  addMessage({
@@ -1149,13 +1143,6 @@ export var useChatManager = function useChatManager(_ref3) {
1149
1143
  streamDebugHitlContext('chatManager', 'handleApprovalDecision:context', hitlContext);
1150
1144
  initialActivity = resolveInitialHitlStreamActivity(t, hitlContext);
1151
1145
  streamDebugActivity('chatManager', 'handleApprovalDecision:initialActivity', initialActivity);
1152
- streamDebugLogHitlUiOverlap({
1153
- scope: 'chatManager',
1154
- source: 'initialActivity',
1155
- activityMessage: initialActivity.message,
1156
- hitlContext: hitlContext,
1157
- uiSurfaces: ['streamActivity', 'approvalBox', 'streamTimeline']
1158
- });
1159
1146
 
1160
1147
  // Update message status immediately
1161
1148
  messagesRef.current = messagesRef.current.map(function (message) {
@@ -1474,4 +1461,4 @@ export var useChatManager = function useChatManager(_ref3) {
1474
1461
  isDisabled: waitingResponse || isContinuingStream || loadingMessages
1475
1462
  };
1476
1463
  };
1477
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsImZldGNoQWdlbnREZXRhaWwiLCJidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlIiwicmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSIsInN0cmVhbWluZ1N0b3JlIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInN0cmVhbVRpbWVsaW5lU3RvcmUiLCJhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSIsImZpbmFsaXplU3RyZWFtVGltZWxpbmUiLCJzdHJlYW1EZWJ1Z0FjdGl2aXR5Iiwic3RyZWFtRGVidWdBcHByb3ZhbCIsInN0cmVhbURlYnVnSGl0bENvbnRleHQiLCJzdHJlYW1EZWJ1Z0xvZyIsInN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCIsInN0cmVhbURlYnVnTm9kZSIsInN0cmVhbURlYnVnU3NlIiwic3RyZWFtRGVidWdXYXJuIiwibm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzIiwiYXR0YWNobWVudHNPck9wdGlvbnMiLCJfb3B0aW9ucyRhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsImF0dGFjaG1lbnRzIiwib3B0aW9ucyIsInJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0IiwiY2hpcHNQcm9qZWN0IiwibGFzdE1lc3NhZ2VQcm9qZWN0SWQiLCJjaGlwc1Byb2plY3RJZCIsInByb2plY3RJZCIsIk51bWJlciIsImlzRmluaXRlIiwicGFyc2VkIiwicmVzb2x2ZUNsaWVudFBheWxvYWQiLCJjdHhDbGllbnQiLCJjdHhQcm9qZWN0IiwiX2N0eFByb2plY3QkY2xpZW50IiwiaWQiLCJfb2JqZWN0U3ByZWFkIiwiY2xpZW50SWQiLCJuYW1lIiwiY2xpZW50TmFtZSIsImNsaWVudCIsIm5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzIiwicmF3QXR0YWNobWVudHMiLCJmaWx0ZXIiLCJhdHRhY2htZW50IiwiX3R5cGVvZiIsIm1hcCIsImluZGV4IiwidHJpbSIsImNvbmNhdCIsInR5cGUiLCJtaW1lVHlwZSIsIm1pbWVfdHlwZSIsImZ1bGxGaWxlTmFtZSIsImluY2x1ZGVzIiwibnVtZXJpY1NpemUiLCJzaXplIiwiZmlsZSIsIkZpbGUiLCJ1cmxfb3JpZ2luYWwiLCJ1bmRlZmluZWQiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX2ZpbGUiLCJyb2xlIiwiZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzIiwicGVuZGluZ0FjdGlvbnMiLCJpZHMiLCJwdXNoSWQiLCJyYXciLCJuIiwicGFyc2VJbnQiLCJTdHJpbmciLCJpc05hTiIsInB1c2giLCJmb3JFYWNoIiwiYWN0aW9uIiwiX3JlYyR0YXNrX2lkIiwiYXJncyIsInRvb2xfYXJncyIsInJlYyIsInRhc2tfaWQiLCJ0YXNrX2lkcyIsInRhc2tzIiwidCIsIl90cmVjJHRhc2tfaWQiLCJ0cmVjIiwiZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMiLCJ0b29sX25hbWUiLCJfcmVjJHRhc2tfaWQyIiwibGlzdCIsInRpZCIsImV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zIiwiX3JlYyRhZ2VudF9pZCIsImVkaXRBY3Rpb24iLCJmaW5kIiwiYSIsInRvTG93ZXJDYXNlIiwiYWdlbnRfaWQiLCJhZ2VudElkIiwiZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lIiwidG9vbE5hbWUiLCJfcmVmIiwiX3JlYyRhZ2VudF9pZDIiLCJleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQiLCJ0ZXh0IiwibGFiZWxlZCIsIm1hdGNoIiwiYm9sZCIsInVzZVN0YWJsZUNhbGxiYWNrcyIsImF1dGhVc2VyIiwiY3VycmVudFVzZXIiLCJ0b1N0cmluZyIsImZpcnN0TmFtZSIsImF2YXRhciIsInBpY3R1cmUiLCJjdXJyZW50IiwicGFyc2VTU0VMaW5lIiwibGluZSIsIl9saW5lJHNwbGl0Iiwic3BsaXQiLCJfbGluZSRzcGxpdDIiLCJfc2xpY2VkVG9BcnJheSIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwicmVwbGFjZSIsImRhdGFTdHIiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicGFyc2VFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3NTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ0aHJlYWRJZCIsImNhbGxiYWNrcyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsInN0cmVhbVNldHRsZWQiLCJoYXNTdGFydGVkV3JpdGluZyIsImVuc3VyZVdyaXRpbmdTdGFydGVkIiwibm90aWZ5Q29tcGxldGUiLCJoYW5kbGVMaW5lIiwiaXNSZWFkZXJEb25lIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJpIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJfaGFuZGxlTGluZSIsImV2ZW50RGF0YSIsImFjY3VtdWxhdGVkTGVuZ3RoIiwibGVuZ3RoIiwibm9kZSIsIm1lc3NhZ2VQcmV2aWV3IiwibWVzc2FnZSIsInNsaWNlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsInBlbmRpbmdUb29scyIsInBlbmRpbmdfYWN0aW9ucyIsIm9uVGhpbmtpbmciLCJub2RlUGF5bG9hZCIsInRocmVhZF9pZCIsIm9uTm9kZSIsImNvbnRlbnQiLCJnZXRTbmFwc2hvdCIsIm9uVG9rZW4iLCJmaW5hbENvbnRlbnQiLCJfY2FsbGJhY2tzJG9uQXBwcm92YWwiLCJpc01hbnVhbEFwcHJvdmFsIiwid2lsbFNldHRsZVN0cmVhbSIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImNhbGwiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfY2FsbGJhY2tzJG9uV3JpdGluZ1MiLCJvbldyaXRpbmdTdGFydGVkIiwiX2V2ZW50RGF0YSRhZ2VudF9pZCIsImZpbmFsQ29udGVudExlbmd0aCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJjb21wbGV0ZWRBZ2VudElkIiwib25Db21wbGV0ZSIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYzIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYzJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiIsImFjdGl2ZVN0cmVhbUNoYXRJZFJlZiIsImFib3J0U3RyZWFtU2lsZW50bHlSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzQ29udGludWluZ1N0cmVhbSIsInNldElzQ29udGludWluZ1N0cmVhbSIsImlzV2ViU2VhcmNoQWN0aXZlUmVmIiwiaXNEZWVwU2VhcmNoQWN0aXZlUmVmIiwiY29udGV4dFJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImNsZWFyIiwiaGFuZGxlU3RyZWFtRXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJlcnJvclJhd01lc3NhZ2UiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMyIiwidGVtcE1lc3NhZ2VJZCIsImlzQWNjZXNzRGVuaWVkIiwiaXNQcm9tcHRUb29Mb25nIiwidXNlZCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJfc291cmNlcyIsIl9tZW1vcnlTZXNzaW9uSWQiLCJzZXRUZXh0IiwiaGFuZGxlU3RyZWFtRmluaXNoIiwiX3JlZjQiLCJfY2FsbGVlMiIsIl9wcmV2aW91c01lc3NhZ2UkYXBwciIsIl93aW5kb3ckdGFza1BhbmVsIiwiX2NyZWF0ZUFnZW50Rm9sbG93VXAiLCJfZWRpdEFnZW50Rm9sbG93VXAiLCJwcmV2aW91c01lc3NhZ2VGb3JMb2ciLCJ0YXNrVXJsUmVnZXgiLCJtYXRjaGVzIiwiY29udGVudFRvQWRkIiwicHJldmlvdXNNZXNzYWdlIiwiaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSIsIlRBU0tfQ1JFQVRJT05fVE9PTFMiLCJUQVNLX0VESVRfVE9PTFMiLCJUQVNLX0RFTEVURV9UT09MUyIsIndhc1Rhc2tDcmVhdGlvbiIsIndhc1Rhc2tFZGl0Iiwid2FzVGFza0RlbGV0ZSIsIndhc0NyZWF0ZUFnZW50QXBwcm92ZWQiLCJ3YXNDb25maWd1cmVBZ2VudEFjY2Vzc0FwcHJvdmVkIiwiY3JlYXRlQWdlbnRGb2xsb3dVcCIsImNvbmZpZ3VyZWRBZ2VudElkIiwid2FzRWRpdEFnZW50QXBwcm92ZWQiLCJlZGl0QWdlbnRGb2xsb3dVcCIsImZyb21TdHJlYW0iLCJmcm9tQXJncyIsInJlc29sdmVkQWdlbnRJZCIsInRhc2tJZHNGcm9tVXJscyIsInRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwiLCJ0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCIsInRhc2tJZHNGb3JEYXNoYm9hcmQiLCJzaG91bGRTeW5jRGFzaGJvYXJkIiwidGFza0lkcyIsInRhYiIsInRhYlNlZ21lbnQiLCJsYXN0UHJvamVjdE1lc3NhZ2UiLCJjb250ZXh0UHJvamVjdElkUmF3IiwiY29udGV4dFByb2plY3RJZCIsInBhdGhNYXRjaCIsInJvdXRlUHJvamVjdElkIiwiaXNPblByb2plY3RSb3V0ZSIsIl93aW5kb3ckbmV3UHJvamVjdERhcyIsIl93aW5kb3ckbmV3UHJvamVjdERhczIiLCJfd2luZG93JG5ld1Byb2plY3REYXMzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNCIsIl93aW5kb3ckbmV3UHJvamVjdERhczUiLCJfd2luZG93JG5ld1Byb2plY3REYXM2Iiwib3BlblRhc2tQYW5lbElkIiwibWFudWFsQXBwcm92YWwiLCJtYW51YWxXYXNUYXNrRWRpdCIsIm1hbnVhbFdhc1Rhc2tEZWxldGUiLCJob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsIiwid2FzSG91cnNDaGFyZ2VBcHByb3ZlZCIsIm1hbnVhbEhvdXJzVG9vbCIsIndhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQiLCJ0b29scyIsIl9tYW51YWxBcHByb3ZhbCR0b29sQSIsIm1hbnVhbFBzZXVkb0FjdGlvbiIsImFmZmVjdGVkVGFza0lkcyIsIl93aW5kb3ckdGFza1BhbmVsMiIsIl93aW5kb3ckdGFza1BhbmVsMiRyZSIsIl9jb250ZXh0MiIsIm0iLCJhdCIsImNvbnRlbnRMZW5ndGgiLCJhcHByb3ZhbCIsInByZXZpb3VzQXBwcm92YWxTdGF0dXMiLCJhcHByb3ZhbFN0YXR1cyIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwic29tZSIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhaUNoYXRIaXRsT3B0aW9uIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwidXJsIiwibXNnIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJzb3VyY2UiLCJzZXNzaW9uSWQiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwidGhlbiIsImNoYXRBZ2VudCIsImVyciIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl94OCIsIl94OSIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJhY2N1bXVsYXRlZENvbnRlbnRMZW5ndGgiLCJoaXRsQ29udGV4dCIsIm1lc3NhZ2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwidGhyZWFkSWRzIiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0MiIsIl9yZWY1IiwiX3Rvb2xfbmFtZSIsIl90b29sX2FyZ3MiLCJmaXJzdEFjdGlvbiIsImNsZWFyZWRUaW1lbGluZSIsInNjb3BlIiwidWlTdXJmYWNlcyIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJoYW5kbGVTdHJlYW1Ob2RlRXZlbnQiLCJoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCIsImJlZ2luU3RyZWFtVGltZWxpbmVUdXJuIiwiY3VycmVudFByb2plY3QiLCJzZW5kTWVzc2FnZSIsIl9yZWY2IiwiX2NhbGxlZTMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsIl9ub3JtYWxpemVTZW5kTWVzc2FnZSIsImVmZmVjdGl2ZU1lbnRpb25zIiwiY29udGV4dE1lc3NhZ2UiLCJwYXlsb2FkRnVhSWQiLCJwYXlsb2FkU2NJZCIsInBheWxvYWRDb250ZXh0RGF0YSIsImRpc3BsYXlNZXNzYWdlIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWQiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJfY29udGV4dFJlZiRjdXJyZW50JHAiLCJoaXN0b3J5IiwiX2NvbnRleHRSZWYkY3VycmVudCIsImN0eENoaXBzUHJvamVjdCIsImN0eFRhc2siLCJwcm9qZWN0VG9SZXF1ZXN0IiwicHJvamVjdHMiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MyIsImNvbnRleHREYXRhIiwicG1BaVR5cGVkVGV4dCIsIlVTRVIiLCJwcm9qZWN0Q2hhbmdlZCIsImluY29tZVR5cGUiLCJoaXN0b3J5TWVzc2FnZSIsImxhbmciLCJ1c2VySWQiLCJsYXN0TmFtZSIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJhZ2VudE5hbWUiLCJmZWVJZCIsInByb2plY3ROYW1lIiwidGFza05hbWUiLCJlbnRpdHkiLCJhZ2VudEVudGl0eSIsImFnZW50VHlwZSIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl94MTMiLCJfeDE0IiwiY2hhbmdlUHJvamVjdCIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjciLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MTUiLCJfeDE2IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWY4IiwiX2NhbGxlZTUiLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImxvYWRpbmdLZXkiLCJpbml0aWFsQWN0aXZpdHkiLCJleGlzdGluZ01lc3NhZ2UiLCJuZXdTdGF0dXMiLCJfdCIsIl9jb250ZXh0NSIsIl9tJGFwcHJvdmFsIiwiaGFzRWRpdGVkQWN0aW9ucyIsIkJvb2xlYW4iLCJhY3Rpdml0eU1lc3NhZ2UiLCJ0dXJuSWQiLCJfZGVmaW5lUHJvcGVydHkiLCJPcmNoZXN0cmF0b3IiLCJjb250aW51ZVRocmVhZCIsInNlc3Npb25faWQiLCJvayIsImFjdGl2aXR5IiwicGhhc2UiLCJwYXlsb2FkIiwiY3VycmVudFRocmVhZElkIiwiYWNjdW11bGF0ZWRUZXh0IiwiX3BheWxvYWQkdGhyZWFkX2lkIiwiYWNjdW11bGF0ZWRUZXh0TGVuZ3RoIiwibm9kZUFjdGl2aXR5IiwidXNlUmVzdW1pbmdGYWxsYmFjayIsIm5ld0xvYWRpbmdzIiwiYXBwcm92YWxQYXlsb2FkIiwiZmluaXNoIiwiX3gxNyIsIl94MTgiLCJfeDE5IiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9yZWYwIiwiX3Jlc29sdmVQcm9qZWN0VG9SZXF1IiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJoYXNJbml0aWFsQXR0YWNobWVudHMiLCJoYXNJbml0aWFsRmFxIiwiaGFzSW5pdGlhbEZ1YSIsImhhc0luaXRpYWxTYyIsIl9jb250ZXh0UmVmJGN1cnJlbnQyIiwiX2NvbnRleHQ2IiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkLCBpc0hvdXJzQ2hhcmdlVG9vbCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9wbGFubmVyU3luY0V2ZW50cydcbmltcG9ydCB7IGZldGNoQWdlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9mZXRjaEFnZW50RGV0YWlsJ1xuaW1wb3J0IHsgYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QsIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxuICB0eXBlIEhpdGxFeGVjdXRpb25Db250ZXh0LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc3RyZWFtaW5nU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1pbmdNZXNzYWdlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1UaW1lbGluZS9zdHJlYW1UaW1lbGluZVN0b3JlJ1xuaW1wb3J0IHsgYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUsIGZpbmFsaXplU3RyZWFtVGltZWxpbmUgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7XG4gIHN0cmVhbURlYnVnQWN0aXZpdHksXG4gIHN0cmVhbURlYnVnQXBwcm92YWwsXG4gIHN0cmVhbURlYnVnSGl0bENvbnRleHQsXG4gIHN0cmVhbURlYnVnTG9nLFxuICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAsXG4gIHN0cmVhbURlYnVnTm9kZSxcbiAgc3RyZWFtRGVidWdTc2UsXG4gIHN0cmVhbURlYnVnV2Fybixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRGVidWdMb2cnXG5cbnR5cGUgQXR0YWNobWVudHNPck9wdGlvbnMgPSBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zXG5cbmNvbnN0IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyA9IChhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRzT3JPcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzT3JPcHRpb25zKSkge1xuICAgIHJldHVybiB7IGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c09yT3B0aW9ucywgb3B0aW9uczoge30gYXMgU2VuZE1lc3NhZ2VPcHRpb25zIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IGF0dGFjaG1lbnRzT3JPcHRpb25zID8/IHt9XG4gIHJldHVybiB7IGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzID8/IFtdLCBvcHRpb25zIH1cbn1cblxuLyoqIGNoaXBzUHJvamVjdCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkIGRlbCBwaW4gdmlzaWJsZTsgc2kgbm8gaGF5IHBpbiwgcmVzdGF1cmFyIGRlc2RlIGhpc3RvcmlhbC4gKi9cbmNvbnN0IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0ID0gKFxuICBjaGlwc1Byb2plY3Q6IHsgcHJvamVjdElkPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBsYXN0TWVzc2FnZVByb2plY3RJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNoaXBzUHJvamVjdElkID0gY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsXG4gIGlmIChjaGlwc1Byb2plY3RJZCAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZShjaGlwc1Byb2plY3RJZCkpIHtcbiAgICByZXR1cm4gY2hpcHNQcm9qZWN0SWRcbiAgfVxuICBpZiAobGFzdE1lc3NhZ2VQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgcmVzb2x2ZUNsaWVudFBheWxvYWQgPSAoXG4gIGN0eENsaWVudDogeyBpZD86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY3R4UHJvamVjdDogUHJvamVjdCB8IG51bGwgfCB1bmRlZmluZWRcbik6IHsgY2xpZW50SWQ/OiBudW1iZXI7IGNsaWVudE5hbWU/OiBzdHJpbmcgfSA9PiB7XG4gIGlmIChjdHhDbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IGN0eENsaWVudC5pZCwgLi4uKGN0eENsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhDbGllbnQubmFtZSB9IDoge30pIH1cbiAgfVxuICBpZiAoY3R4UHJvamVjdD8uY2xpZW50SWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGNsaWVudElkOiBOdW1iZXIoY3R4UHJvamVjdC5jbGllbnRJZCkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudElkOiBjdHhQcm9qZWN0LmNsaWVudC5pZCxcbiAgICAgIC4uLihjdHhQcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhQcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSksXG4gICAgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG5jb25zdCBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyA9IChyYXdBdHRhY2htZW50czogdW5rbm93bik6IEF0dGFjaG1lbnRGaWxlW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3QXR0YWNobWVudHMpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gcmF3QXR0YWNobWVudHNcbiAgICAuZmlsdGVyKChhdHRhY2htZW50KTogYXR0YWNobWVudCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWF0dGFjaG1lbnQgJiYgdHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKVxuICAgIC5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQubmFtZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5uYW1lLnRyaW0oKSA/IGF0dGFjaG1lbnQubmFtZS50cmltKCkgOiBgZmlsZS0ke2luZGV4ICsgMX1gXG4gICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGF0dGFjaG1lbnQudHlwZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC50eXBlLnRyaW0oKSA/IGF0dGFjaG1lbnQudHlwZS50cmltKCkgOiAncGRmJ1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC5taW1lX3R5cGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC5taW1lX3R5cGUgOiAnJ1xuICAgICAgY29uc3QgZnVsbEZpbGVOYW1lID0gbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZSA6IGAke25hbWV9LiR7dHlwZX1gXG4gICAgICBjb25zdCBudW1lcmljU2l6ZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBhdHRhY2htZW50LnNpemVcbiAgICAgICAgICA6IE51bWJlci5pc0Zpbml0ZShOdW1iZXIoYXR0YWNobWVudC5zaXplKSlcbiAgICAgICAgICAgID8gTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgICAgICAgIDogMFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgZnVsbEZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pLFxuICAgICAgICBpZDpcbiAgICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5pZCA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5pZC50cmltKClcbiAgICAgICAgICAgID8gYXR0YWNobWVudC5pZFxuICAgICAgICAgICAgOiBgYXNzaXN0YW50LWZpbGUtJHtpbmRleH0tJHtmdWxsRmlsZU5hbWV9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2l6ZTogbnVtZXJpY1NpemUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVybF9vcmlnaW5hbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX2ZpbGU6IHR5cGVvZiBhdHRhY2htZW50LnVybF9maWxlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX2ZpbGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IGF0dGFjaG1lbnQucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYXNzaXN0YW50JyA6ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9KVxufVxuXG4vKiogRXh0cmFlIHRhc2tfaWRzIGRlIGxvcyB0b29sX2FyZ3MgZGUgcGVuZGluZ19hY3Rpb25zLCBjdWJyaWVuZG8gbGFzIGZvcm1hcyBjb211bmVzOlxuICogIC0gYHsgdGFza19pZCB9YCBvIGB7IGlkIH1gXG4gKiAgLSBgeyB0YXNrX2lkczogW10gfWBcbiAqICAtIGB7IHRhc2tzOiBbeyB0YXNrX2lkfGlkIH0sIC4uLl0gfWBcbiAqICDDmnRpbCBwYXJhIHRvb2xzIGRlIGVkaXQvYXNzaWduL2RlbGV0ZSBjdWFuZG8gbGEgcmVzcHVlc3RhIGRlbCBMTE0gbm8gaW5jbHV5ZSBVUkxzIC90YXNrcy8uLi4vZGV0YWlsLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBjb25zdCBwdXNoSWQgPSAocmF3OiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHJhdyA9PSBudWxsKSByZXR1cm5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICB9XG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBwdXNoSWQocmVjLnRhc2tfaWQgPz8gcmVjLmlkKVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrX2lkcykpIHtcbiAgICAgIHJlYy50YXNrX2lkcy5mb3JFYWNoKHB1c2hJZClcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tzKSkge1xuICAgICAgcmVjLnRhc2tzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgIGNvbnN0IHRyZWMgPSB0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgICAgcHVzaElkKHRyZWMudGFza19pZCA/PyB0cmVjLmlkKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVkaXRBY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG4gIGlmIChcbiAgICAhZWRpdEFjdGlvbiB8fFxuICAgICFlZGl0QWN0aW9uLnRvb2xfYXJncyB8fFxuICAgIHR5cGVvZiBlZGl0QWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHxcbiAgICBBcnJheS5pc0FycmF5KGVkaXRBY3Rpb24udG9vbF9hcmdzKVxuICApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGVkaXRBY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10sIHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdG9vbE5hbWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi50b29sX2FyZ3MgfHwgdHlwZW9mIGFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoYWN0aW9uLnRvb2xfYXJncykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkID8/IHJlYy5pZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuLyoqIMOabHRpbW8gcmVjdXJzbyBzaSBubyBoYXkgbGlua3MgbmkgdG9vbF9hcmdzIHBhcnNlYWJsZXMgKHAuIGVqLiBcIklEICoqNzU5NzEwNioqXCIpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgbGFiZWxlZCA9IHRleHQubWF0Y2goL1xcYklEXFxzKlxcKlxcKihcXGQrKVxcKlxcKi9pKVxuICBpZiAobGFiZWxlZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChsYWJlbGVkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICBjb25zdCBib2xkID0gdGV4dC5tYXRjaCgvXFwqXFwqKFxcZHs1LH0pXFwqXFwqLylcbiAgaWYgKGJvbGQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQoYm9sZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgcGFyc2VTU0VMaW5lID0gKGxpbmU6IHN0cmluZyk6IHsgZXZlbnRUeXBlOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfSB8IG51bGwgPT4ge1xuICBpZiAoIWxpbmUudHJpbSgpKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG4gICAgcmV0dXJuIHsgZXZlbnRUeXBlLCBkYXRhIH1cbiAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NTU0VTdHJlYW0gPSBhc3luYyAoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgY2FsbGJhY2tzOiB7XG4gICAgb25UaGlua2luZzogKCkgPT4gdm9pZFxuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLCB0aHJlYWRJZDogc3RyaW5nLCBhY2N1bXVsYXRlZFRleHQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uV3JpdGluZ1N0YXJ0ZWQ/OiAoKSA9PiB2b2lkXG4gICAgb25Db21wbGV0ZTogKFxuICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICBzb3VyY2VzOiBhbnksXG4gICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgIGFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgKSA9PiB2b2lkXG4gICAgb25FcnJvcjogKGVycm9yOiBhbnksIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkFwcHJvdmFsUmVxdWlyZWQ/OiAoYXBwcm92YWw6IGFueSwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIH1cbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICBpZiAoIXJlYWRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gIH1cblxuICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgbGV0IGJ1ZmZlciA9ICcnXG4gIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICBsZXQgc3RyZWFtU2V0dGxlZCA9IGZhbHNlXG4gIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgY29uc3QgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKGhhc1N0YXJ0ZWRXcml0aW5nKSByZXR1cm5cbiAgICBoYXNTdGFydGVkV3JpdGluZyA9IHRydWVcbiAgICBjYWxsYmFja3Mub25Xcml0aW5nU3RhcnRlZD8uKClcbiAgfVxuXG4gIGNvbnN0IG5vdGlmeUNvbXBsZXRlID0gKGV2ZW50RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGZpbmFsQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHN0cmVhbVNldHRsZWQpIHJldHVyblxuICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgc3RyZWFtRGVidWdTc2UoJ3Byb2Nlc3NTU0VTdHJlYW0nLCAnY29tcGxldGUnLCB7XG4gICAgICB0aHJlYWRJZCxcbiAgICAgIGZpbmFsQ29udGVudExlbmd0aDogZmluYWxDb250ZW50Lmxlbmd0aCxcbiAgICB9KVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShcbiAgICAgIGZpbmFsaXplU3RyZWFtVGltZWxpbmUoYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLCBmaW5hbENvbnRlbnQpKVxuICAgIClcbiAgICBjb25zdCBzb3VyY2VzID0gZXZlbnREYXRhLnNvdXJjZXMgfHwgbnVsbFxuICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChldmVudERhdGEubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuYXR0YWNobWVudHMpID8gZXZlbnREYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdF9yZXBseSlcbiAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0aW9ucylcbiAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdKVxuICAgICAgICA6IG51bGxcbiAgICBjb25zdCBhZ2VudElkUmF3ID0gZXZlbnREYXRhLmFnZW50X2lkID8/IGV2ZW50RGF0YS5hZ2VudElkXG4gICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9IGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgY2FsbGJhY2tzLm9uQ29tcGxldGUoZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIHRocmVhZElkLCBhdHRhY2htZW50cywgc3VnZ2VzdGlvbnMsIGNvbXBsZXRlZEFnZW50SWQpXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoc3RyZWFtU2V0dGxlZCAmJiBldmVudFR5cGUgIT09ICdlcnJvcicpIHJldHVyblxuXG4gICAgc3RyZWFtRGVidWdTc2UoJ3Byb2Nlc3NTU0VTdHJlYW0nLCBldmVudFR5cGUsIHtcbiAgICAgIHRocmVhZElkLFxuICAgICAgYWNjdW11bGF0ZWRMZW5ndGg6IGFjY3VtdWxhdGVkQ29udGVudC5sZW5ndGgsXG4gICAgICAuLi4oZXZlbnRUeXBlID09PSAnbm9kZSdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBub2RlOiBldmVudERhdGEubm9kZSxcbiAgICAgICAgICAgIHRvb2xfbmFtZTogZXZlbnREYXRhLnRvb2xfbmFtZSxcbiAgICAgICAgICAgIG1lc3NhZ2VQcmV2aWV3OiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnID8gZXZlbnREYXRhLm1lc3NhZ2Uuc2xpY2UoMCwgODApIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgICAuLi4oZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnXG4gICAgICAgID8ge1xuICAgICAgICAgICAgbWFudWFsQXBwcm92YWxEZXRlY3RlZDogZXZlbnREYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgIHBlbmRpbmdUb29sczogQXJyYXkuaXNBcnJheShldmVudERhdGEucGVuZGluZ19hY3Rpb25zKVxuICAgICAgICAgICAgICA/IChldmVudERhdGEucGVuZGluZ19hY3Rpb25zIGFzIEFycmF5PHsgdG9vbF9uYW1lPzogc3RyaW5nIH0+KS5tYXAoYSA9PiBhLnRvb2xfbmFtZSlcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICB9KVxuXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gJ3RoaW5raW5nJykge1xuICAgICAgY2FsbGJhY2tzLm9uVGhpbmtpbmcoKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG5vZGVQYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkID0ge1xuICAgICAgICAgIG5vZGU6IHR5cGVvZiBldmVudERhdGEubm9kZSA9PT0gJ3N0cmluZycgPyBldmVudERhdGEubm9kZSA6ICdub2RlJyxcbiAgICAgICAgICBtZXNzYWdlOiBldmVudERhdGEubWVzc2FnZSxcbiAgICAgICAgICB0b29sX25hbWU6IHR5cGVvZiBldmVudERhdGEudG9vbF9uYW1lID09PSAnc3RyaW5nJyA/IGV2ZW50RGF0YS50b29sX25hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdGhyZWFkX2lkOiB0eXBlb2YgZXZlbnREYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEudGhyZWFkX2lkIDogdGhyZWFkSWQsXG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShub2RlUGF5bG9hZCwgdGhyZWFkSWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ3Rva2VuJykge1xuICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZShzdHJlYW1UaW1lbGluZVN0b3JlLmdldFNuYXBzaG90KCksIGFjY3VtdWxhdGVkQ29udGVudCkpXG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZShzdHJlYW1UaW1lbGluZVN0b3JlLmdldFNuYXBzaG90KCksIGFjY3VtdWxhdGVkQ29udGVudCkpXG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGV2ZW50RGF0YSkpIHtcbiAgICAgICAgbm90aWZ5Q29tcGxldGUoZXZlbnREYXRhLCBjb250ZW50IHx8IGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKGV2ZW50RGF0YS5jb250ZW50IGFzIHN0cmluZykgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICBub3RpZnlDb21wbGV0ZShldmVudERhdGEsIGZpbmFsQ29udGVudClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2FwcHJvdmFsX3JlcXVpcmVkJykge1xuICAgICAgLy8gTWFudWFsIGFwcHJvdmFsOiBlbCBzdHJlYW0gc2lndWUgKG5vZGUvdG9rZW4vY29tcGxldGUgeSBtw6FzIEhJVEwpLlxuICAgICAgLy8gU29sbyBlbCBhcHByb3ZhbCBwYXVzYWRvIChib3TDs24pIGNpZXJyYSBlbCBwcm9jZXNhbWllbnRvIGRlIGV2ZW50b3MuXG4gICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gZXZlbnREYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZVxuICAgICAgc3RyZWFtRGVidWdBcHByb3ZhbCgnY2hhdE1hbmFnZXInLCAnYXBwcm92YWxfcmVxdWlyZWQnLCBldmVudERhdGEsIHtcbiAgICAgICAgdGhyZWFkSWQsXG4gICAgICAgIGlzTWFudWFsQXBwcm92YWwsXG4gICAgICAgIHdpbGxTZXR0bGVTdHJlYW06ICFpc01hbnVhbEFwcHJvdmFsLFxuICAgICAgfSlcbiAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgY2FsbGJhY2tzLm9uQXBwcm92YWxSZXF1aXJlZD8uKGV2ZW50RGF0YSwgYWNjdW11bGF0ZWRDb250ZW50LCB0aHJlYWRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgIGNhbGxiYWNrcy5vbkVycm9yKGV2ZW50RGF0YS5lcnJvciwgdGhyZWFkSWQpXG4gICAgfVxuICB9XG5cbiAgbGV0IGlzUmVhZGVyRG9uZSA9IGZhbHNlXG5cbiAgd2hpbGUgKCFpc1JlYWRlckRvbmUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICBpZiAoZG9uZSkge1xuICAgICAgaXNSZWFkZXJEb25lID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuXG4gIGNvbnN0IGN1cnJlbnRNZXNzYWdlSWQgPSB1c2VSZWYodXVpZHY0KCkpXG4gIGNvbnN0IGN1cnJlbnRVc2VyUXVlc3Rpb24gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY3VycmVudENoYXRJZCA9IHVzZVJlZihpbml0aWFsQ2hhdElkIHx8IHV1aWR2NCgpKVxuICBjb25zdCByZXBvcnRlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxDaGF0TWVzc2FnZVtdPihbXSlcbiAgLyoqXG4gICAqIEd1YXJkYSBpbmZvIGRlbCDDumx0aW1vIGFwcHJvdmFsIG1hbnVhbCAoY3VhbmRvIGVsIHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIiBlbiBsdWdhclxuICAgKiBkZSBjbGlja2VhciBlbCBib3TDs24pLiBFbiBtYW51YWwgYXBwcm92YWwsIGBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkYCByZXRvcm5hIGVhcmx5XG4gICAqIHNpbiBhZ3JlZ2FyIHVuIG1lbnNhamUgY29uIGBhcHByb3ZhbGAsIGFzw60gcXVlIGxhIGzDs2dpY2EgZGUgcmVmZXRjaCBlbiBgb25TdHJlYW1GaW5pc2hgXG4gICAqIG5vIGxvIGRldGVjdGEgdsOtYSBgcHJldmlvdXNNZXNzYWdlLmFwcHJvdmFsYC4gTG8gZ3VhcmRhbW9zIGFjw6EgcGFyYSBjb25zdW1pcmxvIGRlc3B1w6lzLlxuICAgKi9cbiAgY29uc3QgbGFzdE1hbnVhbEFwcHJvdmFsUmVmID0gdXNlUmVmPHtcbiAgICB0b29sTmFtZTogc3RyaW5nXG4gICAgdG9vbEFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICB9IHwgbnVsbD4obnVsbClcbiAgLyoqIENvbnRleHRvIGRlbCBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIHByZXZpbyBhbCBlamVjdXRhciBjb250aW51ZS10aHJlYWQuICovXG4gIGNvbnN0IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmID0gdXNlUmVmPEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNQcm9jZXNzaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBmaXJzdFRpbWVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIC8qKiBJZCBkZWwgcGxhY2Vob2xkZXIgZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nIGFjdGl2byAoc2kgaGF5KS4gKi9cbiAgY29uc3Qgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICAvKipcbiAgICogQ2hhdCBhbCBxdWUgcGVydGVuZWNlIGVsIHN0cmVhbSBhY3R1YWxtZW50ZSBhY3Rpdm8uIFNpIGNhbWJpYSBlbCBjaGF0XG4gICAqIG1pZW50cmFzIHVuIHN0cmVhbSBlc3TDoSBlbiB2dWVsbywgZGVzY2FydGFtb3MgbG9zIHRva2VucyByZXNpZHVhbGVzXG4gICAqIHF1ZSBwdWVkYW4gbGxlZ2FyIGFudGVzIGRlIHF1ZSBlbCBhYm9ydCBzZSBjb21wbGV0ZS5cbiAgICovXG4gIGNvbnN0IGFjdGl2ZVN0cmVhbUNoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICAvKiogU2V0dGVyIGluZGlyZWN0byBwYXJhIGFib3J0YXIgZWwgc3RyZWFtIGFudGVzIGRlIHF1ZSBlbCBob29rIGRlXG4gICAqIG9ycXVlc3RhZG9yIGVzdMOpIGluaWNpYWxpemFkbyAoc2UgbGlua2VhIG3DoXMgYWJham8pLiAqL1xuICBjb25zdCBhYm9ydFN0cmVhbVNpbGVudGx5UmVmID0gdXNlUmVmPCgpID0+IHZvaWQ+KCgpID0+IHVuZGVmaW5lZClcbiAgY29uc3QgY2xlYXJTdHJlYW1VaVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IFthY3RpdmVMb2FkaW5ncywgc2V0QWN0aXZlTG9hZGluZ3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG4gIGNvbnN0IFtpc0NvbnRpbnVpbmdTdHJlYW0sIHNldElzQ29udGludWluZ1N0cmVhbV0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcbiAgLyoqIEV2aXRhIGNsb3N1cmVzIG9ic29sZXRhcyBjdWFuZG8gZWwgZm9vdGVyIGNvbnNlcnZhIHNlbmRNZXNzYWdlIGVudHJlIHJlbmRlcnMuICovXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoeyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9KVxuICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBTaSBoYXkgdW4gc3RyZWFtIGVuIGN1cnNvLCBhYm9ydGFybG8gc2lsZW5jaW9zYW1lbnRlIHBhcmEgcXVlIGxvc1xuICAgICAgLy8gdG9rZW5zIHJlc2lkdWFsZXMgbm8gc2UgZXNjcmliYW4gZW4gZWwgY2hhdCBudWV2by5cbiAgICAgIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCgpXG5cbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuXG4gICAgICBsb2FkTWVzc2FnZXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxDaGF0SWQsIHByb2plY3QsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRUYXNrLCBsb2FkTWVzc2FnZXNdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBpc0FjY2Vzc0RlbmllZCA9IGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgIGNvbnN0IGlzUHJvbXB0VG9vTG9uZyA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicgJiYgZXJyb3JSYXdNZXNzYWdlPy5pbmNsdWRlcygncHJvbXB0IGlzIHRvbyBsb25nJylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBpc0FjY2Vzc0RlbmllZFxuICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICA6IGlzUHJvbXB0VG9vTG9uZ1xuICAgICAgICAgID8gdCgnY2hhdC5lcnJvclByb21wdFRvb0xvbmcnLCB7IHVzZWQ6IGVycm9yUmF3TWVzc2FnZT8ubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgOiB0KCdjaGF0LmVycm9yJylcblxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICAgIC8vIENoaXAgXCJSZWludGVudGFyXCIgc29sbyBlbiBlbCBlcnJvciBnZW7DqXJpY28gKHAuIGVqLiA1MDApOyBubyBhcGxpY2EgYSBhY2Nlc3MgZGVuaWVkIG5pIHByb21wdCB0b28gbG9uZy5cbiAgICAgICAgLi4uKCFpc0FjY2Vzc0RlbmllZCAmJiAhaXNQcm9tcHRUb29Mb25nID8geyBzdWdnZXN0aW9uczogW3QoJ2NoYXQucmV0cnknKV0gfSA6IHt9KSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjaygoY29udGVudDogc3RyaW5nLCBfc291cmNlczogdW5rbm93biwgX21lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9IG51bGwgJiYgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICBpZiAoc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ICE9PSB0ZW1wTWVzc2FnZUlkKSB7XG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSB0ZW1wTWVzc2FnZUlkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgIH1cblxuICAgIHN0cmVhbWluZ1N0b3JlLnNldFRleHQodGVtcE1lc3NhZ2VJZCwgY29udGVudClcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBjb25zdCBwcmV2aW91c01lc3NhZ2VGb3JMb2cgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtID0+IG0uaWQgIT09IHRlbXBNZXNzYWdlSWQpLmF0KC0xKVxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5jbGVhcigpXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnY2hhdE1hbmFnZXInLCAnaGFuZGxlU3RyZWFtRmluaXNoJywge1xuICAgICAgICBjb250ZW50TGVuZ3RoOiBjb250ZW50Lmxlbmd0aCxcbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZTogcHJldmlvdXNNZXNzYWdlRm9yTG9nPy5hcHByb3ZhbCAhPSBudWxsLFxuICAgICAgICBwcmV2aW91c0FwcHJvdmFsU3RhdHVzOiBwcmV2aW91c01lc3NhZ2VGb3JMb2c/LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgfSlcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMocmF3QXR0YWNobWVudHMpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBjb25zdCBUQVNLX0NSRUFUSU9OX1RPT0xTID0gWydjcmVhdGVfdGFzaycsICdjcmVhdGVfdGFza3NfYmF0Y2gnLCAnY2xvbmVfdGFzayddXG4gICAgICBjb25zdCBUQVNLX0VESVRfVE9PTFMgPSBbXG4gICAgICAgICdlZGl0X3Rhc2snLFxuICAgICAgICAnZWRpdF90YXNrc19iYXRjaCcsXG4gICAgICAgICd0YXNrX2Fzc2lnbicsXG4gICAgICAgICd0YXNrX3VuYXNzaWduJyxcbiAgICAgICAgJ3VwZGF0ZV90YXNrX3R5cGUnLFxuICAgICAgICAndXBkYXRlX2VzdGltYXRlZF9ob3VycycsXG4gICAgICAgICdhc3NpZ25fdGFza19sYWJlbCcsXG4gICAgICBdXG4gICAgICBjb25zdCBUQVNLX0RFTEVURV9UT09MUyA9IFsnZGVsZXRlX3Rhc2snLCAnZGVsZXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zIHx8IFtdXG4gICAgICBjb25zdCB3YXNUYXNrQ3JlYXRpb24gPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0NSRUFUSU9OX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0VkaXQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRGVsZXRlID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNDcmVhdGVBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBhY3Rpb24udG9vbF9uYW1lID09PSAnY3JlYXRlX2FnZW50JylcbiAgICAgIGNvbnN0IHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICBsZXQgY3JlYXRlQWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpKSB7XG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgJiZcbiAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiZcbiAgICAgICAgKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSB8fFxuICAgICAgICAgIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9ucywgJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjb25maWd1cmVkQWdlbnRJZCA9XG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7XG4gICAgICAgICAgYWdlbnRJZDogY29uZmlndXJlZEFnZW50SWQgYXMgc3RyaW5nLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRIaXRsT3B0aW9uLCB7XG4gICAgICAgICAgYWdlbnRfdHlwZTogZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZShhZ2VudCksXG4gICAgICAgICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICAuLi4oY29tcGxldGVkQWdlbnRJZD8udHJpbSgpID8geyBjcmVhdGVkX2FnZW50X2lkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB3YXNFZGl0QWdlbnRBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcblxuICAgICAgbGV0IGVkaXRBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzRWRpdEFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgZnJvbVN0cmVhbSA9IGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKVxuICAgICAgICBjb25zdCBmcm9tQXJncyA9IGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgICBjb25zdCByZXNvbHZlZEFnZW50SWQgPSBmcm9tU3RyZWFtIHx8IGZyb21BcmdzXG4gICAgICAgIGlmIChyZXNvbHZlZEFnZW50SWQpIHtcbiAgICAgICAgICBlZGl0QWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogcmVzb2x2ZWRBZ2VudElkIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbVVybHMgPSBtYXRjaGVzLm1hcChtYXRjaCA9PiBwYXJzZUludChtYXRjaFsxXSwgMTApKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCA9IGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGlvblRleHQgPVxuICAgICAgICB3YXNUYXNrRGVsZXRlICYmIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPT09IDAgJiYgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IGV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dChjb250ZW50KVxuICAgICAgICAgIDogW11cbiAgICAgIGNvbnN0IHRhc2tJZHNGb3JEYXNoYm9hcmQgPVxuICAgICAgICB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGFza0lkc0Zyb21VcmxzXG4gICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbFxuICAgICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dFxuXG4gICAgICBjb25zdCBzaG91bGRTeW5jRGFzaGJvYXJkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICAod2FzVGFza0NyZWF0aW9uIHx8IHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUpICYmXG4gICAgICAgIHRhc2tJZHNGb3JEYXNoYm9hcmQubGVuZ3RoID4gMFxuXG4gICAgICBpZiAoc2hvdWxkU3luY0Rhc2hib2FyZCkge1xuICAgICAgICBjb25zdCB0YXNrSWRzID0gdGFza0lkc0ZvckRhc2hib2FyZFxuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQodGFza0lkc1swXSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgICB1cmwucmVwbGFjZSgvXFwvKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpKD89JHxcXD8pLywgdGFiU2VnbWVudClcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0UHJvamVjdE1lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWRSYXcgPSBwcm9qZWN0Py5pZCB8fCBsYXN0UHJvamVjdE1lc3NhZ2U/LnByb2plY3RJZFxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gY29udGV4dFByb2plY3RJZFJhdyA/IHBhcnNlSW50KFN0cmluZyhjb250ZXh0UHJvamVjdElkUmF3KSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC9wcm9qZWN0c1xcLyhcXGQrKVxcLy8pXG4gICAgICAgIGNvbnN0IHJvdXRlUHJvamVjdElkID0gcGF0aE1hdGNoID8gcGFyc2VJbnQocGF0aE1hdGNoWzFdLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IGlzT25Qcm9qZWN0Um91dGUgPSBjb250ZXh0UHJvamVjdElkICYmIHJvdXRlUHJvamVjdElkICYmIGNvbnRleHRQcm9qZWN0SWQgPT09IHJvdXRlUHJvamVjdElkXG5cbiAgICAgICAgaWYgKGlzT25Qcm9qZWN0Um91dGUpIHtcbiAgICAgICAgICBpZiAod2FzVGFza0NyZWF0aW9uKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0VkaXQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5lZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0RlbGV0ZSkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZWZldGNoIGRlbCB0YXNrIHBhbmVsIHNpIGVzdMOhIGFiaWVydG8geSBsYSB0b29sIGFwcm9iYWRhIGVkaXTDsy9ib3Jyw7MgZXNhIHRhcmVhLlxuICAgICAgLy8gQ3VicmUgbG9zIGRvcyBmbHVqb3MgZGUgYXBwcm92YWw6XG4gICAgICAvLyAgIDEpIEFwcHJvdmFsIHBvciBib3TDs24g4oaSIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWwucGVuZGluZ19hY3Rpb25zYCAodsOtYSBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlKVxuICAgICAgLy8gICAyKSBNYW51YWwgYXBwcm92YWwgKHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIikg4oaSIGBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudGBcbiAgICAgIGNvbnN0IG9wZW5UYXNrUGFuZWxJZCA9IHdpbmRvdy50YXNrUGFuZWw/LnRhc2tJZFxuICAgICAgY29uc3QgbWFudWFsQXBwcm92YWwgPSBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudFxuICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSBudWxsIC8vIGNvbnN1bWlyIHVuYSBzb2xhIHZlelxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0VkaXQgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tEZWxldGUgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfREVMRVRFX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuXG4gICAgICAvLyBTeW5jIFBsYW5uZXI6IGF2aXNhciBjYXJnYSBkZSBob3JhcyBjb25maXJtYWRhIChjcmVhdGVfaG91ciAvIGNyZWF0ZV9ob3VycykuXG4gICAgICBjb25zdCBob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsID0gcGVuZGluZ0FjdGlvbnNcbiAgICAgICAgLm1hcCgoYWN0aW9uOiBQZW5kaW5nQWN0aW9uKSA9PiBhY3Rpb24udG9vbF9uYW1lKVxuICAgICAgICAuZmlsdGVyKCh0b29sTmFtZSk6IHRvb2xOYW1lIGlzIHN0cmluZyA9PiBpc0hvdXJzQ2hhcmdlVG9vbCh0b29sTmFtZSkpXG4gICAgICBjb25zdCB3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIGhvdXJzVG9vbHNGcm9tQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgY29uc3QgbWFudWFsSG91cnNUb29sID0gbWFudWFsQXBwcm92YWw/LnRvb2xOYW1lXG4gICAgICBjb25zdCB3YXNIb3Vyc0NoYXJnZU1hbnVhbEFwcHJvdmVkID0gaXNIb3Vyc0NoYXJnZVRvb2wobWFudWFsSG91cnNUb29sKVxuXG4gICAgICBpZiAod2FzSG91cnNDaGFyZ2VBcHByb3ZlZCB8fCB3YXNIb3Vyc0NoYXJnZU1hbnVhbEFwcHJvdmVkKSB7XG4gICAgICAgIGNvbnN0IHRvb2xzID0gd2FzSG91cnNDaGFyZ2VBcHByb3ZlZCA/IGhvdXJzVG9vbHNGcm9tQXBwcm92YWwgOiBtYW51YWxIb3Vyc1Rvb2wgPyBbbWFudWFsSG91cnNUb29sXSA6IFtdXG4gICAgICAgIGRpc3BhdGNoTWFpYUhvdXJzQ2hhcmdlZCh7XG4gICAgICAgICAgc291cmNlOiAnbWFpYScsXG4gICAgICAgICAgdG9vbHMsXG4gICAgICAgICAgc2Vzc2lvbklkOiBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuVGFza1BhbmVsSWQgJiYgKHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUgfHwgbWFudWFsV2FzVGFza0VkaXQgfHwgbWFudWFsV2FzVGFza0RlbGV0ZSkpIHtcbiAgICAgICAgY29uc3QgbWFudWFsUHNldWRvQWN0aW9uOiBQZW5kaW5nQWN0aW9uIHwgbnVsbCA9IG1hbnVhbEFwcHJvdmFsXG4gICAgICAgICAgPyAoeyB0b29sX25hbWU6IG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lLCB0b29sX2FyZ3M6IG1hbnVhbEFwcHJvdmFsLnRvb2xBcmdzID8/IHt9IH0gYXMgUGVuZGluZ0FjdGlvbilcbiAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRUYXNrSWRzID0gW1xuICAgICAgICAgIC4uLmV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhwZW5kaW5nQWN0aW9ucyksXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21VcmxzLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwsXG4gICAgICAgICAgLi4uKG1hbnVhbFBzZXVkb0FjdGlvbiA/IGV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhbbWFudWFsUHNldWRvQWN0aW9uXSkgOiBbXSksXG4gICAgICAgIF0ubWFwKFN0cmluZylcbiAgICAgICAgaWYgKGFmZmVjdGVkVGFza0lkcy5pbmNsdWRlcyhTdHJpbmcob3BlblRhc2tQYW5lbElkKSkpIHtcbiAgICAgICAgICB3aW5kb3cudGFza1BhbmVsPy5yZWZldGNoVGFzaz8uKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgaWYgKGNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChjcmVhdGVBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gYcOxYWRpciBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8gYWwgbGlzdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZWRpdEFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChlZGl0QWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyByZWZyZXNjYXIgZWwgYWdlbnRlIGVkaXRhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHQsIGV2ZW50LCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50KClcbiAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgYWRkTWVzc2FnZSh7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCB0XSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtRGVidWdBcHByb3ZhbCgnY2hhdE1hbmFnZXInLCAnaGFuZGxlQXBwcm92YWxSZXF1aXJlZCcsIGFwcHJvdmFsLCB7XG4gICAgICAgIGFjY3VtdWxhdGVkQ29udGVudExlbmd0aDogYWNjdW11bGF0ZWRDb250ZW50Lmxlbmd0aCxcbiAgICAgICAgaXNNYW51YWxBcHByb3ZhbDogYXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlLFxuICAgICAgfSlcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkKSxcbiAgICAgIH1cbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgc3RyZWFtRGVidWdIaXRsQ29udGV4dCgnY2hhdE1hbmFnZXInLCAnaGFuZGxlQXBwcm92YWxSZXF1aXJlZDpjb250ZXh0JywgaGl0bENvbnRleHQpXG5cbiAgICAgIGlmIChhcHByb3ZhbC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBY3Rpb24gPSBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/LlswXVxuICAgICAgICBjb25zdCB0b29sTmFtZSA9IChhcHByb3ZhbCBhcyB7IHRvb2xfbmFtZT86IHN0cmluZyB9KS50b29sX25hbWUgPz8gZmlyc3RBY3Rpb24/LnRvb2xfbmFtZSA/PyAnJ1xuICAgICAgICBjb25zdCB0b29sQXJncyA9XG4gICAgICAgICAgKChhcHByb3ZhbCBhcyB7IHRvb2xfYXJncz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pLnRvb2xfYXJncyA/P1xuICAgICAgICAgICAgKGZpcnN0QWN0aW9uPy50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpKSB8fFxuICAgICAgICAgIG51bGxcbiAgICAgICAgaWYgKHRvb2xOYW1lKSB7XG4gICAgICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSB7IHRvb2xOYW1lLCB0b29sQXJncyB9XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtRGVidWdMb2coJ2NoYXRNYW5hZ2VyJywgJ2hhbmRsZUFwcHJvdmFsUmVxdWlyZWQ6bWFudWFsRWFybHlSZXR1cm4nLCB7IHRvb2xOYW1lIH0pXG4gICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtRGVidWdMb2coJ2NoYXRNYW5hZ2VyJywgJ2hhbmRsZUFwcHJvdmFsUmVxdWlyZWQ6YnV0dG9uQXBwcm92YWwnLCB7XG4gICAgICAgIG1lc3NhZ2VJZDogaGl0bENvbnRleHQubWVzc2FnZUlkLFxuICAgICAgICBjbGVhcmVkVGltZWxpbmU6IHRydWUsXG4gICAgICB9KVxuICAgICAgc3RyZWFtRGVidWdMb2dIaXRsVWlPdmVybGFwKHtcbiAgICAgICAgc2NvcGU6ICdjaGF0TWFuYWdlcicsXG4gICAgICAgIHNvdXJjZTogJ2FwcHJvdmFsQm94JyxcbiAgICAgICAgaGl0bENvbnRleHQsXG4gICAgICAgIHVpU3VyZmFjZXM6IFsnYXBwcm92YWxCb3gnLCAnc3RyZWFtVGltZWxpbmUnXSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIEFkZCBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXBwcm92YWwgcmVxdWVzdFxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2VdXG4gIClcblxuICBjb25zdCB7XG4gICAgYXNrTWFpYSxcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVN0cmVhbU5vZGVFdmVudCxcbiAgICBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCxcbiAgICBiZWdpblN0cmVhbVRpbWVsaW5lVHVybixcbiAgfSA9IHVzZU9yY2hlc3RyYXRvclN0cmVhbSh7XG4gICAgb25FcnJvcjogaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgb25TdHJlYW1VcGRhdGU6IGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICBvbkZpbmlzaFN0cmVhbTogaGFuZGxlU3RyZWFtRmluaXNoLFxuICAgIG9uU3RvcDogaGFuZGxlU3RyZWFtU3RvcCxcbiAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsXG4gIH0pXG5cbiAgLy8gTWFudGVuZW1vcyBlbCBzZXR0ZXIgbcOhcyByZWNpZW50ZSBlbiB1bmEgcmVmIHBhcmEgcXVlIHB1ZWRhIHVzYXJzZSBkZXNkZVxuICAvLyBlZmVjdG9zIGRlZmluaWRvcyBhbnRlcyBlbiBlbCBhcmNoaXZvIChjYW1iaW8gZGUgY2hhdCwgcmVzZXQsIGV0Yy4pLlxuICBhYm9ydFN0cmVhbVNpbGVudGx5UmVmLmN1cnJlbnQgPSBhYm9ydFN0cmVhbVNpbGVudGx5XG4gIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICBzdHJlYW1EZWJ1Z0xvZygnY2hhdE1hbmFnZXInLCAnY2xlYXJTdHJlYW1VaScpXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICBzZXRBY3RpdmVMb2FkaW5ncyh7fSlcbiAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50IHx8IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG1lc3NhZ2VcblxuICAgICAgaWYgKCFyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQpXG4gICAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGNvbnRleHRvIGdsb2JhbCBlc3TDoSBkZXNhY3R1YWxpemFkb1xuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcblxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gbWVzc2FnZXNSZWYuY3VycmVudD8uW21lc3NhZ2VzUmVmLmN1cnJlbnQubGVuZ3RoIC0gMV0/LmFnZW50SWRcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgcXVlc3Rpb24tJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZTogZGlzcGxheU1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogYXR0YWNobWVudHMsXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgIH0pXG5cbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG5cbiAgICAgIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBzdHJlYW1pbmdQbGFjZWhvbGRlcklkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuXG4gICAgICBsZXQgZmluYWxNZXNzYWdlID0gbWVzc2FnZVxuXG4gICAgICBpZiAobWVzc2FnZSA9PT0gdCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJykpIHtcbiAgICAgICAgZmluYWxNZXNzYWdlID0gYEZBUTogJHt0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKX0gLSBUaXBvIGRlIHJlbnRhYmlsaWRhZDogJHtcbiAgICAgICAgICBvcHRpb25zLnByb2plY3RDaGFuZ2VkPy5pbmNvbWVUeXBlIHx8IGNvbnRleHRSZWYuY3VycmVudC5wcm9qZWN0Py5pbmNvbWVUeXBlXG4gICAgICAgIH1gXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICB0YXNrOiBjdHhUYXNrLFxuICAgICAgfSA9IGNvbnRleHRSZWYuY3VycmVudFxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIGxhc3RNZXNzYWdlUHJvamVjdElkKVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihjdHhQcm9qZWN0Py5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKGN0eFByb2plY3QuZmVlSWQpIH0gOiB7fSksXG4gICAgICAgIC4uLnJlc29sdmVDbGllbnRQYXlsb2FkKGN0eENsaWVudCwgY3R4UHJvamVjdCksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oY3R4VGFzaz8uaWQgIT0gbnVsbFxuICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRmFxSWQgPyB7IGZhcUlkOiBwYXlsb2FkRmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZ1YUlkID8geyBmdWFJZDogcGF5bG9hZEZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkU2NJZCA/IHsgc2NJZDogcGF5bG9hZFNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRDb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGE6IHBheWxvYWRDb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfVxuXG4gICAgICBhc2tNYWlhKHBheWxvYWREYXRhKVxuICAgIH0sXG4gICAgW1xuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGV2ZW50LFxuICAgICAgYXNrTWFpYSxcbiAgICAgIHByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICB0YXNrLFxuICAgICAgY2hpcHNQcm9qZWN0LFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBjaGFuZ2VQcm9qZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBpZiAob3B0aW9uLmlkICE9PSBwcm9qZWN0Py5pZCkge1xuICAgICAgICBzZXRQcm9qZWN0KG9wdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2plY3QgJiYgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50LFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgcHJvamVjdElkOiBvcHRpb24uaWQsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKG9wdGlvbj8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihvcHRpb24uZmVlSWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbj8uY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IE51bWJlcihvcHRpb24uY2xpZW50SWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmUsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGFsZ3VubyBkZSBlc3RvcyB0aHJlYWRJZHMgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1lc3NhZ2VXaXRoQXBwcm92YWwgfHwgIW1lc3NhZ2VXaXRoQXBwcm92YWwuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnY2hhdE1hbmFnZXInLCAnaGFuZGxlQXBwcm92YWxEZWNpc2lvbicsIHtcbiAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgICBkZWNpc2lvbixcbiAgICAgICAgaGFzRWRpdGVkQWN0aW9uczogQm9vbGVhbihlZGl0ZWRBY3Rpb25zPy5sZW5ndGgpLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgeyBhcHByb3ZhbCB9ID0gbWVzc2FnZVdpdGhBcHByb3ZhbFxuICAgICAgY29uc3QgbWVzc2FnZUlkID0gbWVzc2FnZVdpdGhBcHByb3ZhbC5pZFxuICAgICAgY29uc3QgbG9hZGluZ0tleSA9IHRocmVhZElkc1swXVxuXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IG1lc3NhZ2VXaXRoQXBwcm92YWwubWVzc2FnZSxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkcyxcbiAgICAgIH1cbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgc3RyZWFtRGVidWdIaXRsQ29udGV4dCgnY2hhdE1hbmFnZXInLCAnaGFuZGxlQXBwcm92YWxEZWNpc2lvbjpjb250ZXh0JywgaGl0bENvbnRleHQpXG5cbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KVxuICAgICAgc3RyZWFtRGVidWdBY3Rpdml0eSgnY2hhdE1hbmFnZXInLCAnaGFuZGxlQXBwcm92YWxEZWNpc2lvbjppbml0aWFsQWN0aXZpdHknLCBpbml0aWFsQWN0aXZpdHkpXG4gICAgICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAoe1xuICAgICAgICBzY29wZTogJ2NoYXRNYW5hZ2VyJyxcbiAgICAgICAgc291cmNlOiAnaW5pdGlhbEFjdGl2aXR5JyxcbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlOiBpbml0aWFsQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgaGl0bENvbnRleHQsXG4gICAgICAgIHVpU3VyZmFjZXM6IFsnc3RyZWFtQWN0aXZpdHknLCAnYXBwcm92YWxCb3gnLCAnc3RyZWFtVGltZWxpbmUnXSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIFVwZGF0ZSBtZXNzYWdlIHN0YXR1cyBpbW1lZGlhdGVseVxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gbWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXIgcmUtcmVuZGVyXG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PiBtLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICBhZGRNZXNzYWdlKHsgLi4uZXhpc3RpbmdNZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgY29udGludWUtdGhyZWFkIGVuZHBvaW50IHdpdGggQUxMIHRocmVhZF9pZHMgaW4gYSBzaW5nbGUgcmVxdWVzdFxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0odHJ1ZSlcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBiZWdpblN0cmVhbVRpbWVsaW5lVHVybihgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgKVxuICAgICAgc3RyZWFtRGVidWdTc2UoJ2NvbnRpbnVlVGhyZWFkJywgJ3N0YXJ0Jywge1xuICAgICAgICB0aHJlYWRJZHMsXG4gICAgICAgIGRlY2lzaW9uOiBlZGl0ZWRBY3Rpb25zID8gJ2VkaXQnIDogZGVjaXNpb24sXG4gICAgICAgIHR1cm5JZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYCxcbiAgICAgIH0pXG5cbiAgICAgIC8vIEFkZCBsb2FkaW5nXG4gICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFtsb2FkaW5nS2V5XTogaW5pdGlhbEFjdGl2aXR5Lm1lc3NhZ2UsXG4gICAgICB9KSlcbiAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcblxuICAgICAgLy8gTWFyY2Egc2kgZWwgc3RyZWFtIGNlcnLDsyB2w61hIHVuIGV2ZW50byB0ZXJtaW5hbCAoY29tcGxldGUvYXBwcm92YWwvZXJyb3IpLlxuICAgICAgLy8gU2kgZWwgYmFja2VuZCBjaWVycmEgbGEgY29uZXhpw7NuIHNpbiBlbWl0aXJsbywgbGltcGlhbW9zIGVsIGluZGljYWRvciBlbiBlbFxuICAgICAgLy8gYGZpbmFsbHlgIHBhcmEgcXVlIG5vIHF1ZWRlIHRyYWJhZG8gZW4gXCJFc2NyaWJpZW5kbyBsYSByZXNwdWVzdGFcIi5cbiAgICAgIGxldCBzdHJlYW1TZXR0bGVkID0gZmFsc2VcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZCh7XG4gICAgICAgICAgdGhyZWFkSWRzLCAvLyBTZW5kIGFsbCBhY3Rpb24gdGhyZWFkX2lkcyBhdCBvbmNlXG4gICAgICAgICAgc2Vzc2lvbklkOiBhcHByb3ZhbC5zZXNzaW9uX2lkLFxuICAgICAgICAgIGRlY2lzaW9uOiBlZGl0ZWRBY3Rpb25zID8gJ2VkaXQnIDogZGVjaXNpb24sXG4gICAgICAgICAgZWRpdGVkQWN0aW9ucyxcbiAgICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQgfHwgJycsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgU1NFIHN0cmVhbVxuICAgICAgICBhd2FpdCBwcm9jZXNzU1NFU3RyZWFtKHJlc3BvbnNlLCBsb2FkaW5nS2V5LCB7XG4gICAgICAgICAgb25UaGlua2luZzogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5ID0ge1xuICAgICAgICAgICAgICBwaGFzZTogJ3RoaW5raW5nJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlKGNvbnRlbnQsIG51bGwsICcnKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ob2RlOiAocGF5bG9hZDogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCwgY3VycmVudFRocmVhZElkOiBzdHJpbmcsIGFjY3VtdWxhdGVkVGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzdHJlYW1EZWJ1Z05vZGUoJ2NvbnRpbnVlVGhyZWFkJywgcGF5bG9hZCwge1xuICAgICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQsXG4gICAgICAgICAgICAgIGFjY3VtdWxhdGVkVGV4dExlbmd0aDogYWNjdW11bGF0ZWRUZXh0Lmxlbmd0aCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1Ob2RlRXZlbnQoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIHRocmVhZF9pZDogcGF5bG9hZC50aHJlYWRfaWQgPz8gY3VycmVudFRocmVhZElkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBhY2N1bXVsYXRlZFRleHRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG5vZGVBY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICBwYXlsb2FkLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZCxcbiAgICAgICAgICAgICAgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJlbnRUaHJlYWRJZF06IG5vZGVBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAoe1xuICAgICAgICAgICAgICBzY29wZTogJ2NvbnRpbnVlVGhyZWFkJyxcbiAgICAgICAgICAgICAgc291cmNlOiAnbm9kZScsXG4gICAgICAgICAgICAgIG5vZGVQYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICAgICAgICBhY3Rpdml0eU1lc3NhZ2U6IG5vZGVBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgICAgICAgICBoaXRsQ29udGV4dDogaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgdWlTdXJmYWNlczogWydzdHJlYW1BY3Rpdml0eScsICdhY3RpdmVMb2FkaW5ncycsICdzdHJlYW1UaW1lbGluZSddLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uV3JpdGluZ1N0YXJ0ZWQ6ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ29tcGxldGU6IChcbiAgICAgICAgICAgIGZpbmFsQ29udGVudDogc3RyaW5nLFxuICAgICAgICAgICAgc291cmNlczogYW55LFxuICAgICAgICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICAgICAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgICAgICAgIHN0cmVhbURlYnVnU3NlKCdjb250aW51ZVRocmVhZCcsICdjb21wbGV0ZScsIHtcbiAgICAgICAgICAgICAgY3VycmVudFRocmVhZElkLFxuICAgICAgICAgICAgICBmaW5hbENvbnRlbnRMZW5ndGg6IGZpbmFsQ29udGVudC5sZW5ndGgsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRmluaXNoKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCBhdHRhY2htZW50cywgc3VnZ2VzdGlvbnMsIGFnZW50SWQpXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQXBwcm92YWxSZXF1aXJlZDogKGFwcHJvdmFsUGF5bG9hZDogYW55LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHN0cmVhbURlYnVnQXBwcm92YWwoJ2NvbnRpbnVlVGhyZWFkJywgJ2FwcHJvdmFsX3JlcXVpcmVkJywgYXBwcm92YWxQYXlsb2FkLCB7XG4gICAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZCxcbiAgICAgICAgICAgICAgYWNjdW11bGF0ZWRDb250ZW50TGVuZ3RoOiBhY2N1bXVsYXRlZENvbnRlbnQubGVuZ3RoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC8vIEFwcHJvdmFsIHBhdXNhZG8gKGJvdMOzbik6IGNpZXJyYSBlc3RlIGNvbnRpbnVlLXRocmVhZC5cbiAgICAgICAgICAgIC8vIE1hbnVhbCBhcHByb3ZhbDogZWwgU1NFIHNpZ3VlIGNvbiBub2RlL3Rva2VuL2NvbXBsZXRlICh5IG3DoXMgSElUTCkuXG4gICAgICAgICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gYXBwcm92YWxQYXlsb2FkPy5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgICAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxSZXF1aXJlZChhcHByb3ZhbFBheWxvYWQgYXMgQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgc3RyZWFtRGVidWdTc2UoJ2NvbnRpbnVlVGhyZWFkJywgJ2Vycm9yJywgeyB0aHJlYWRJZDogbG9hZGluZ0tleSB9KVxuICAgICAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAvLyBSZWQgZGUgc2VndXJpZGFkOiBzaSBlbCBzdHJlYW0gY2VycsOzIHNpbiBldmVudG8gdGVybWluYWwsIGVsIGluZGljYWRvclxuICAgICAgICAvLyAocC4gZWouIFwiRXNjcmliaWVuZG8gbGEgcmVzcHVlc3RhXCIpIHF1ZWRhcsOtYSB0cmFiYWRvLiBMbyBsaW1waWFtb3MgYXF1w60uXG4gICAgICAgIGlmICghc3RyZWFtU2V0dGxlZCkge1xuICAgICAgICAgIHN0cmVhbURlYnVnV2FybignY29udGludWVUaHJlYWQnLCAnc3RyZWFtQ2xvc2VkV2l0aG91dFRlcm1pbmFsRXZlbnQnLCB7IHRocmVhZElkOiBsb2FkaW5nS2V5IH0pXG4gICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgaWYgKCEobG9hZGluZ0tleSBpbiBwcmV2KSkgcmV0dXJuIHByZXZcbiAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tsb2FkaW5nS2V5XVxuICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRnVhID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsU2MgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEgJiYgIWhhc0luaXRpYWxGdWEgJiYgIWhhc0luaXRpYWxTYykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG4gICAgICBjb25zdCBwcm9qZWN0VG9SZXF1ZXN0ID0gcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QoY3R4Q2hpcHNQcm9qZWN0LCBudWxsKSA/PyBjdHhQcm9qZWN0Py5pZCA/PyBudWxsXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBjdHhQcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogdXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgPyB7IGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkID8geyBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgID8geyBjb250ZXh0TWVzc2FnZTogYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5jb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGE6IHVzZXJJbml0aWFsTWVzc2FnZS5jb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0YXNrLFxuICAgIGF1dGhVc2VyLFxuICAgIGFnZW50LFxuICAgIGFza01haWEsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICBdKVxuXG4gIGNvbnN0IHJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5UmVmLmN1cnJlbnQoKVxuICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuY2xlYXIoKVxuICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3RvcEdlbmVyYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcFN0cmVhbWluZygpXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2U6IHdhaXRpbmdSZXNwb25zZSB8fCBpc0NvbnRpbnVpbmdTdHJlYW0sXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBpc0NvbnRpbnVpbmdTdHJlYW0gfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxFQUFFLElBQUlDLE1BQU0sUUFBUSxNQUFNO0FBQ25DLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRzlCLFNBQVNDLE9BQU8sUUFBaUIsd0JBQXdCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxhQUFhO0FBQzlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsUUFBUSxRQUFRLDREQUE0RDtBQUNyRixTQUF1Q0MsZUFBZSxRQUF3QyxrQkFBa0I7QUFDaEgsU0FBeUNDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUNoRyxTQUFTQyxrQ0FBa0MsUUFBUSxzQ0FBc0M7QUFHekYsU0FBU0MsV0FBVyxRQUFRLGdCQUFnQjtBQUM1QyxTQUFTQyxpQkFBaUIsUUFBUSxz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
1464
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsImZldGNoQWdlbnREZXRhaWwiLCJidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlIiwicmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSIsInN0cmVhbWluZ1N0b3JlIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInN0cmVhbVRpbWVsaW5lU3RvcmUiLCJhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSIsImZpbmFsaXplU3RyZWFtVGltZWxpbmUiLCJzdHJlYW1EZWJ1Z0FjdGl2aXR5Iiwic3RyZWFtRGVidWdBcHByb3ZhbCIsInN0cmVhbURlYnVnSGl0bENvbnRleHQiLCJzdHJlYW1EZWJ1Z0xvZyIsInN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCIsInN0cmVhbURlYnVnTm9kZSIsInN0cmVhbURlYnVnU3NlIiwic3RyZWFtRGVidWdXYXJuIiwibm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzIiwiYXR0YWNobWVudHNPck9wdGlvbnMiLCJfb3B0aW9ucyRhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsImF0dGFjaG1lbnRzIiwib3B0aW9ucyIsInJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0IiwiY2hpcHNQcm9qZWN0IiwibGFzdE1lc3NhZ2VQcm9qZWN0SWQiLCJjaGlwc1Byb2plY3RJZCIsInByb2plY3RJZCIsIk51bWJlciIsImlzRmluaXRlIiwicGFyc2VkIiwicmVzb2x2ZUNsaWVudFBheWxvYWQiLCJjdHhDbGllbnQiLCJjdHhQcm9qZWN0IiwiX2N0eFByb2plY3QkY2xpZW50IiwiaWQiLCJfb2JqZWN0U3ByZWFkIiwiY2xpZW50SWQiLCJuYW1lIiwiY2xpZW50TmFtZSIsImNsaWVudCIsIm5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzIiwicmF3QXR0YWNobWVudHMiLCJmaWx0ZXIiLCJhdHRhY2htZW50IiwiX3R5cGVvZiIsIm1hcCIsImluZGV4IiwidHJpbSIsImNvbmNhdCIsInR5cGUiLCJtaW1lVHlwZSIsIm1pbWVfdHlwZSIsImZ1bGxGaWxlTmFtZSIsImluY2x1ZGVzIiwibnVtZXJpY1NpemUiLCJzaXplIiwiZmlsZSIsIkZpbGUiLCJ1cmxfb3JpZ2luYWwiLCJ1bmRlZmluZWQiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX2ZpbGUiLCJyb2xlIiwiZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzIiwicGVuZGluZ0FjdGlvbnMiLCJpZHMiLCJwdXNoSWQiLCJyYXciLCJuIiwicGFyc2VJbnQiLCJTdHJpbmciLCJpc05hTiIsInB1c2giLCJmb3JFYWNoIiwiYWN0aW9uIiwiX3JlYyR0YXNrX2lkIiwiYXJncyIsInRvb2xfYXJncyIsInJlYyIsInRhc2tfaWQiLCJ0YXNrX2lkcyIsInRhc2tzIiwidCIsIl90cmVjJHRhc2tfaWQiLCJ0cmVjIiwiZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMiLCJ0b29sX25hbWUiLCJfcmVjJHRhc2tfaWQyIiwibGlzdCIsInRpZCIsImV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zIiwiX3JlYyRhZ2VudF9pZCIsImVkaXRBY3Rpb24iLCJmaW5kIiwiYSIsInRvTG93ZXJDYXNlIiwiYWdlbnRfaWQiLCJhZ2VudElkIiwiZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lIiwidG9vbE5hbWUiLCJfcmVmIiwiX3JlYyRhZ2VudF9pZDIiLCJleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQiLCJ0ZXh0IiwibGFiZWxlZCIsIm1hdGNoIiwiYm9sZCIsInVzZVN0YWJsZUNhbGxiYWNrcyIsImF1dGhVc2VyIiwiY3VycmVudFVzZXIiLCJ0b1N0cmluZyIsImZpcnN0TmFtZSIsImF2YXRhciIsInBpY3R1cmUiLCJjdXJyZW50IiwicGFyc2VTU0VMaW5lIiwibGluZSIsIl9saW5lJHNwbGl0Iiwic3BsaXQiLCJfbGluZSRzcGxpdDIiLCJfc2xpY2VkVG9BcnJheSIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwicmVwbGFjZSIsImRhdGFTdHIiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicGFyc2VFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3NTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ0aHJlYWRJZCIsImNhbGxiYWNrcyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsInN0cmVhbVNldHRsZWQiLCJoYXNTdGFydGVkV3JpdGluZyIsImVuc3VyZVdyaXRpbmdTdGFydGVkIiwibm90aWZ5Q29tcGxldGUiLCJoYW5kbGVMaW5lIiwiaXNSZWFkZXJEb25lIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJpIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJfaGFuZGxlTGluZSIsImV2ZW50RGF0YSIsImFjY3VtdWxhdGVkTGVuZ3RoIiwibGVuZ3RoIiwibm9kZSIsIm1lc3NhZ2VQcmV2aWV3IiwibWVzc2FnZSIsInNsaWNlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsInBlbmRpbmdUb29scyIsInBlbmRpbmdfYWN0aW9ucyIsIm9uVGhpbmtpbmciLCJub2RlUGF5bG9hZCIsInRocmVhZF9pZCIsIm9uTm9kZSIsImNvbnRlbnQiLCJnZXRTbmFwc2hvdCIsIm9uVG9rZW4iLCJmaW5hbENvbnRlbnQiLCJfY2FsbGJhY2tzJG9uQXBwcm92YWwiLCJpc01hbnVhbEFwcHJvdmFsIiwid2lsbFNldHRsZVN0cmVhbSIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImNhbGwiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfY2FsbGJhY2tzJG9uV3JpdGluZ1MiLCJvbldyaXRpbmdTdGFydGVkIiwiX2V2ZW50RGF0YSRhZ2VudF9pZCIsImZpbmFsQ29udGVudExlbmd0aCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJjb21wbGV0ZWRBZ2VudElkIiwib25Db21wbGV0ZSIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYzIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYzJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiIsImFjdGl2ZVN0cmVhbUNoYXRJZFJlZiIsImFib3J0U3RyZWFtU2lsZW50bHlSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzQ29udGludWluZ1N0cmVhbSIsInNldElzQ29udGludWluZ1N0cmVhbSIsImlzV2ViU2VhcmNoQWN0aXZlUmVmIiwiaXNEZWVwU2VhcmNoQWN0aXZlUmVmIiwiY29udGV4dFJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImNsZWFyIiwiaGFuZGxlU3RyZWFtRXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJlcnJvclJhd01lc3NhZ2UiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMyIiwidGVtcE1lc3NhZ2VJZCIsImlzQWNjZXNzRGVuaWVkIiwiaXNQcm9tcHRUb29Mb25nIiwidXNlZCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJfc291cmNlcyIsIl9tZW1vcnlTZXNzaW9uSWQiLCJzZXRUZXh0IiwiaGFuZGxlU3RyZWFtRmluaXNoIiwiX3JlZjQiLCJfY2FsbGVlMiIsIl9wcmV2aW91c01lc3NhZ2UkYXBwciIsIl93aW5kb3ckdGFza1BhbmVsIiwiX2NyZWF0ZUFnZW50Rm9sbG93VXAiLCJfZWRpdEFnZW50Rm9sbG93VXAiLCJwcmV2aW91c01lc3NhZ2VGb3JMb2ciLCJ0YXNrVXJsUmVnZXgiLCJtYXRjaGVzIiwiY29udGVudFRvQWRkIiwicHJldmlvdXNNZXNzYWdlIiwiaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSIsIlRBU0tfQ1JFQVRJT05fVE9PTFMiLCJUQVNLX0VESVRfVE9PTFMiLCJUQVNLX0RFTEVURV9UT09MUyIsIndhc1Rhc2tDcmVhdGlvbiIsIndhc1Rhc2tFZGl0Iiwid2FzVGFza0RlbGV0ZSIsIndhc0NyZWF0ZUFnZW50QXBwcm92ZWQiLCJ3YXNDb25maWd1cmVBZ2VudEFjY2Vzc0FwcHJvdmVkIiwiY3JlYXRlQWdlbnRGb2xsb3dVcCIsImNvbmZpZ3VyZWRBZ2VudElkIiwid2FzRWRpdEFnZW50QXBwcm92ZWQiLCJlZGl0QWdlbnRGb2xsb3dVcCIsImZyb21TdHJlYW0iLCJmcm9tQXJncyIsInJlc29sdmVkQWdlbnRJZCIsInRhc2tJZHNGcm9tVXJscyIsInRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwiLCJ0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCIsInRhc2tJZHNGb3JEYXNoYm9hcmQiLCJzaG91bGRTeW5jRGFzaGJvYXJkIiwidGFza0lkcyIsInRhYiIsInRhYlNlZ21lbnQiLCJsYXN0UHJvamVjdE1lc3NhZ2UiLCJjb250ZXh0UHJvamVjdElkUmF3IiwiY29udGV4dFByb2plY3RJZCIsInBhdGhNYXRjaCIsInJvdXRlUHJvamVjdElkIiwiaXNPblByb2plY3RSb3V0ZSIsIl93aW5kb3ckbmV3UHJvamVjdERhcyIsIl93aW5kb3ckbmV3UHJvamVjdERhczIiLCJfd2luZG93JG5ld1Byb2plY3REYXMzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNCIsIl93aW5kb3ckbmV3UHJvamVjdERhczUiLCJfd2luZG93JG5ld1Byb2plY3REYXM2Iiwib3BlblRhc2tQYW5lbElkIiwibWFudWFsQXBwcm92YWwiLCJtYW51YWxXYXNUYXNrRWRpdCIsIm1hbnVhbFdhc1Rhc2tEZWxldGUiLCJob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsIiwid2FzSG91cnNDaGFyZ2VBcHByb3ZlZCIsIm1hbnVhbEhvdXJzVG9vbCIsIndhc0hvdXJzQ2hhcmdlTWFudWFsQXBwcm92ZWQiLCJ0b29scyIsIl9tYW51YWxBcHByb3ZhbCR0b29sQSIsIm1hbnVhbFBzZXVkb0FjdGlvbiIsImFmZmVjdGVkVGFza0lkcyIsIl93aW5kb3ckdGFza1BhbmVsMiIsIl93aW5kb3ckdGFza1BhbmVsMiRyZSIsIl9jb250ZXh0MiIsIm0iLCJhdCIsImNvbnRlbnRMZW5ndGgiLCJhcHByb3ZhbCIsInByZXZpb3VzQXBwcm92YWxTdGF0dXMiLCJhcHByb3ZhbFN0YXR1cyIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwic29tZSIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhaUNoYXRIaXRsT3B0aW9uIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwidXJsIiwibXNnIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJzb3VyY2UiLCJzZXNzaW9uSWQiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwidGhlbiIsImNoYXRBZ2VudCIsImVyciIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl94OCIsIl94OSIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJhY2N1bXVsYXRlZENvbnRlbnRMZW5ndGgiLCJoaXRsQ29udGV4dCIsIm1lc3NhZ2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwidGhyZWFkSWRzIiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0MiIsIl9yZWY1IiwiX3Rvb2xfbmFtZSIsIl90b29sX2FyZ3MiLCJmaXJzdEFjdGlvbiIsImNsZWFyZWRUaW1lbGluZSIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJoYW5kbGVTdHJlYW1Ob2RlRXZlbnQiLCJoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCIsImJlZ2luU3RyZWFtVGltZWxpbmVUdXJuIiwiY3VycmVudFByb2plY3QiLCJzZW5kTWVzc2FnZSIsIl9yZWY2IiwiX2NhbGxlZTMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsIl9ub3JtYWxpemVTZW5kTWVzc2FnZSIsImVmZmVjdGl2ZU1lbnRpb25zIiwiY29udGV4dE1lc3NhZ2UiLCJwYXlsb2FkRnVhSWQiLCJwYXlsb2FkU2NJZCIsInBheWxvYWRDb250ZXh0RGF0YSIsImRpc3BsYXlNZXNzYWdlIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWQiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJfY29udGV4dFJlZiRjdXJyZW50JHAiLCJoaXN0b3J5IiwiX2NvbnRleHRSZWYkY3VycmVudCIsImN0eENoaXBzUHJvamVjdCIsImN0eFRhc2siLCJwcm9qZWN0VG9SZXF1ZXN0IiwicHJvamVjdHMiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MyIsImNvbnRleHREYXRhIiwicG1BaVR5cGVkVGV4dCIsIlVTRVIiLCJwcm9qZWN0Q2hhbmdlZCIsImluY29tZVR5cGUiLCJoaXN0b3J5TWVzc2FnZSIsImxhbmciLCJ1c2VySWQiLCJsYXN0TmFtZSIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJhZ2VudE5hbWUiLCJmZWVJZCIsInByb2plY3ROYW1lIiwidGFza05hbWUiLCJlbnRpdHkiLCJhZ2VudEVudGl0eSIsImFnZW50VHlwZSIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl94MTMiLCJfeDE0IiwiY2hhbmdlUHJvamVjdCIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjciLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MTUiLCJfeDE2IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWY4IiwiX2NhbGxlZTUiLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImxvYWRpbmdLZXkiLCJpbml0aWFsQWN0aXZpdHkiLCJleGlzdGluZ01lc3NhZ2UiLCJuZXdTdGF0dXMiLCJfdCIsIl9jb250ZXh0NSIsIl9tJGFwcHJvdmFsIiwiaGFzRWRpdGVkQWN0aW9ucyIsIkJvb2xlYW4iLCJ0dXJuSWQiLCJfZGVmaW5lUHJvcGVydHkiLCJPcmNoZXN0cmF0b3IiLCJjb250aW51ZVRocmVhZCIsInNlc3Npb25faWQiLCJvayIsImFjdGl2aXR5IiwicGhhc2UiLCJwYXlsb2FkIiwiY3VycmVudFRocmVhZElkIiwiYWNjdW11bGF0ZWRUZXh0IiwiX3BheWxvYWQkdGhyZWFkX2lkIiwiYWNjdW11bGF0ZWRUZXh0TGVuZ3RoIiwibm9kZUFjdGl2aXR5IiwidXNlUmVzdW1pbmdGYWxsYmFjayIsInNjb3BlIiwiYWN0aXZpdHlNZXNzYWdlIiwidWlTdXJmYWNlcyIsIm5ld0xvYWRpbmdzIiwiYXBwcm92YWxQYXlsb2FkIiwiZmluaXNoIiwiX3gxNyIsIl94MTgiLCJfeDE5IiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9yZWYwIiwiX3Jlc29sdmVQcm9qZWN0VG9SZXF1IiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJoYXNJbml0aWFsQXR0YWNobWVudHMiLCJoYXNJbml0aWFsRmFxIiwiaGFzSW5pdGlhbEZ1YSIsImhhc0luaXRpYWxTYyIsIl9jb250ZXh0UmVmJGN1cnJlbnQyIiwiX2NvbnRleHQ2IiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkLCBpc0hvdXJzQ2hhcmdlVG9vbCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9wbGFubmVyU3luY0V2ZW50cydcbmltcG9ydCB7IGZldGNoQWdlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9mZXRjaEFnZW50RGV0YWlsJ1xuaW1wb3J0IHsgYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QsIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxuICB0eXBlIEhpdGxFeGVjdXRpb25Db250ZXh0LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc3RyZWFtaW5nU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1pbmdNZXNzYWdlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1UaW1lbGluZS9zdHJlYW1UaW1lbGluZVN0b3JlJ1xuaW1wb3J0IHsgYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUsIGZpbmFsaXplU3RyZWFtVGltZWxpbmUgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7XG4gIHN0cmVhbURlYnVnQWN0aXZpdHksXG4gIHN0cmVhbURlYnVnQXBwcm92YWwsXG4gIHN0cmVhbURlYnVnSGl0bENvbnRleHQsXG4gIHN0cmVhbURlYnVnTG9nLFxuICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAsXG4gIHN0cmVhbURlYnVnTm9kZSxcbiAgc3RyZWFtRGVidWdTc2UsXG4gIHN0cmVhbURlYnVnV2Fybixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRGVidWdMb2cnXG5cbnR5cGUgQXR0YWNobWVudHNPck9wdGlvbnMgPSBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zXG5cbmNvbnN0IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyA9IChhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRzT3JPcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzT3JPcHRpb25zKSkge1xuICAgIHJldHVybiB7IGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c09yT3B0aW9ucywgb3B0aW9uczoge30gYXMgU2VuZE1lc3NhZ2VPcHRpb25zIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IGF0dGFjaG1lbnRzT3JPcHRpb25zID8/IHt9XG4gIHJldHVybiB7IGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzID8/IFtdLCBvcHRpb25zIH1cbn1cblxuLyoqIGNoaXBzUHJvamVjdCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkIGRlbCBwaW4gdmlzaWJsZTsgc2kgbm8gaGF5IHBpbiwgcmVzdGF1cmFyIGRlc2RlIGhpc3RvcmlhbC4gKi9cbmNvbnN0IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0ID0gKFxuICBjaGlwc1Byb2plY3Q6IHsgcHJvamVjdElkPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBsYXN0TWVzc2FnZVByb2plY3RJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNoaXBzUHJvamVjdElkID0gY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsXG4gIGlmIChjaGlwc1Byb2plY3RJZCAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZShjaGlwc1Byb2plY3RJZCkpIHtcbiAgICByZXR1cm4gY2hpcHNQcm9qZWN0SWRcbiAgfVxuICBpZiAobGFzdE1lc3NhZ2VQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgcmVzb2x2ZUNsaWVudFBheWxvYWQgPSAoXG4gIGN0eENsaWVudDogeyBpZD86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY3R4UHJvamVjdDogUHJvamVjdCB8IG51bGwgfCB1bmRlZmluZWRcbik6IHsgY2xpZW50SWQ/OiBudW1iZXI7IGNsaWVudE5hbWU/OiBzdHJpbmcgfSA9PiB7XG4gIGlmIChjdHhDbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IGN0eENsaWVudC5pZCwgLi4uKGN0eENsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhDbGllbnQubmFtZSB9IDoge30pIH1cbiAgfVxuICBpZiAoY3R4UHJvamVjdD8uY2xpZW50SWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGNsaWVudElkOiBOdW1iZXIoY3R4UHJvamVjdC5jbGllbnRJZCkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudElkOiBjdHhQcm9qZWN0LmNsaWVudC5pZCxcbiAgICAgIC4uLihjdHhQcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhQcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSksXG4gICAgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG5jb25zdCBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyA9IChyYXdBdHRhY2htZW50czogdW5rbm93bik6IEF0dGFjaG1lbnRGaWxlW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3QXR0YWNobWVudHMpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gcmF3QXR0YWNobWVudHNcbiAgICAuZmlsdGVyKChhdHRhY2htZW50KTogYXR0YWNobWVudCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWF0dGFjaG1lbnQgJiYgdHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKVxuICAgIC5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQubmFtZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5uYW1lLnRyaW0oKSA/IGF0dGFjaG1lbnQubmFtZS50cmltKCkgOiBgZmlsZS0ke2luZGV4ICsgMX1gXG4gICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGF0dGFjaG1lbnQudHlwZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC50eXBlLnRyaW0oKSA/IGF0dGFjaG1lbnQudHlwZS50cmltKCkgOiAncGRmJ1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC5taW1lX3R5cGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC5taW1lX3R5cGUgOiAnJ1xuICAgICAgY29uc3QgZnVsbEZpbGVOYW1lID0gbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZSA6IGAke25hbWV9LiR7dHlwZX1gXG4gICAgICBjb25zdCBudW1lcmljU2l6ZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBhdHRhY2htZW50LnNpemVcbiAgICAgICAgICA6IE51bWJlci5pc0Zpbml0ZShOdW1iZXIoYXR0YWNobWVudC5zaXplKSlcbiAgICAgICAgICAgID8gTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgICAgICAgIDogMFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgZnVsbEZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pLFxuICAgICAgICBpZDpcbiAgICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5pZCA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5pZC50cmltKClcbiAgICAgICAgICAgID8gYXR0YWNobWVudC5pZFxuICAgICAgICAgICAgOiBgYXNzaXN0YW50LWZpbGUtJHtpbmRleH0tJHtmdWxsRmlsZU5hbWV9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2l6ZTogbnVtZXJpY1NpemUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVybF9vcmlnaW5hbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX2ZpbGU6IHR5cGVvZiBhdHRhY2htZW50LnVybF9maWxlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX2ZpbGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IGF0dGFjaG1lbnQucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYXNzaXN0YW50JyA6ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9KVxufVxuXG4vKiogRXh0cmFlIHRhc2tfaWRzIGRlIGxvcyB0b29sX2FyZ3MgZGUgcGVuZGluZ19hY3Rpb25zLCBjdWJyaWVuZG8gbGFzIGZvcm1hcyBjb211bmVzOlxuICogIC0gYHsgdGFza19pZCB9YCBvIGB7IGlkIH1gXG4gKiAgLSBgeyB0YXNrX2lkczogW10gfWBcbiAqICAtIGB7IHRhc2tzOiBbeyB0YXNrX2lkfGlkIH0sIC4uLl0gfWBcbiAqICDDmnRpbCBwYXJhIHRvb2xzIGRlIGVkaXQvYXNzaWduL2RlbGV0ZSBjdWFuZG8gbGEgcmVzcHVlc3RhIGRlbCBMTE0gbm8gaW5jbHV5ZSBVUkxzIC90YXNrcy8uLi4vZGV0YWlsLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBjb25zdCBwdXNoSWQgPSAocmF3OiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHJhdyA9PSBudWxsKSByZXR1cm5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICB9XG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBwdXNoSWQocmVjLnRhc2tfaWQgPz8gcmVjLmlkKVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrX2lkcykpIHtcbiAgICAgIHJlYy50YXNrX2lkcy5mb3JFYWNoKHB1c2hJZClcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tzKSkge1xuICAgICAgcmVjLnRhc2tzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgIGNvbnN0IHRyZWMgPSB0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgICAgcHVzaElkKHRyZWMudGFza19pZCA/PyB0cmVjLmlkKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVkaXRBY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG4gIGlmIChcbiAgICAhZWRpdEFjdGlvbiB8fFxuICAgICFlZGl0QWN0aW9uLnRvb2xfYXJncyB8fFxuICAgIHR5cGVvZiBlZGl0QWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHxcbiAgICBBcnJheS5pc0FycmF5KGVkaXRBY3Rpb24udG9vbF9hcmdzKVxuICApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGVkaXRBY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10sIHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdG9vbE5hbWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi50b29sX2FyZ3MgfHwgdHlwZW9mIGFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoYWN0aW9uLnRvb2xfYXJncykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkID8/IHJlYy5pZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuLyoqIMOabHRpbW8gcmVjdXJzbyBzaSBubyBoYXkgbGlua3MgbmkgdG9vbF9hcmdzIHBhcnNlYWJsZXMgKHAuIGVqLiBcIklEICoqNzU5NzEwNioqXCIpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgbGFiZWxlZCA9IHRleHQubWF0Y2goL1xcYklEXFxzKlxcKlxcKihcXGQrKVxcKlxcKi9pKVxuICBpZiAobGFiZWxlZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChsYWJlbGVkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICBjb25zdCBib2xkID0gdGV4dC5tYXRjaCgvXFwqXFwqKFxcZHs1LH0pXFwqXFwqLylcbiAgaWYgKGJvbGQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQoYm9sZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgcGFyc2VTU0VMaW5lID0gKGxpbmU6IHN0cmluZyk6IHsgZXZlbnRUeXBlOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfSB8IG51bGwgPT4ge1xuICBpZiAoIWxpbmUudHJpbSgpKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG4gICAgcmV0dXJuIHsgZXZlbnRUeXBlLCBkYXRhIH1cbiAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NTU0VTdHJlYW0gPSBhc3luYyAoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgY2FsbGJhY2tzOiB7XG4gICAgb25UaGlua2luZzogKCkgPT4gdm9pZFxuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLCB0aHJlYWRJZDogc3RyaW5nLCBhY2N1bXVsYXRlZFRleHQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uV3JpdGluZ1N0YXJ0ZWQ/OiAoKSA9PiB2b2lkXG4gICAgb25Db21wbGV0ZTogKFxuICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICBzb3VyY2VzOiBhbnksXG4gICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgIGFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgKSA9PiB2b2lkXG4gICAgb25FcnJvcjogKGVycm9yOiBhbnksIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkFwcHJvdmFsUmVxdWlyZWQ/OiAoYXBwcm92YWw6IGFueSwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIH1cbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICBpZiAoIXJlYWRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gIH1cblxuICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgbGV0IGJ1ZmZlciA9ICcnXG4gIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICBsZXQgc3RyZWFtU2V0dGxlZCA9IGZhbHNlXG4gIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgY29uc3QgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKGhhc1N0YXJ0ZWRXcml0aW5nKSByZXR1cm5cbiAgICBoYXNTdGFydGVkV3JpdGluZyA9IHRydWVcbiAgICBjYWxsYmFja3Mub25Xcml0aW5nU3RhcnRlZD8uKClcbiAgfVxuXG4gIGNvbnN0IG5vdGlmeUNvbXBsZXRlID0gKGV2ZW50RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGZpbmFsQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHN0cmVhbVNldHRsZWQpIHJldHVyblxuICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgc3RyZWFtRGVidWdTc2UoJ3Byb2Nlc3NTU0VTdHJlYW0nLCAnY29tcGxldGUnLCB7XG4gICAgICB0aHJlYWRJZCxcbiAgICAgIGZpbmFsQ29udGVudExlbmd0aDogZmluYWxDb250ZW50Lmxlbmd0aCxcbiAgICB9KVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShcbiAgICAgIGZpbmFsaXplU3RyZWFtVGltZWxpbmUoYXBwZW5kQ29udGVudFRvU3RyZWFtVGltZWxpbmUoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLCBmaW5hbENvbnRlbnQpKVxuICAgIClcbiAgICBjb25zdCBzb3VyY2VzID0gZXZlbnREYXRhLnNvdXJjZXMgfHwgbnVsbFxuICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChldmVudERhdGEubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuYXR0YWNobWVudHMpID8gZXZlbnREYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdF9yZXBseSlcbiAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0aW9ucylcbiAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdKVxuICAgICAgICA6IG51bGxcbiAgICBjb25zdCBhZ2VudElkUmF3ID0gZXZlbnREYXRhLmFnZW50X2lkID8/IGV2ZW50RGF0YS5hZ2VudElkXG4gICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9IGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgY2FsbGJhY2tzLm9uQ29tcGxldGUoZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIHRocmVhZElkLCBhdHRhY2htZW50cywgc3VnZ2VzdGlvbnMsIGNvbXBsZXRlZEFnZW50SWQpXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoc3RyZWFtU2V0dGxlZCAmJiBldmVudFR5cGUgIT09ICdlcnJvcicpIHJldHVyblxuXG4gICAgc3RyZWFtRGVidWdTc2UoJ3Byb2Nlc3NTU0VTdHJlYW0nLCBldmVudFR5cGUsIHtcbiAgICAgIHRocmVhZElkLFxuICAgICAgYWNjdW11bGF0ZWRMZW5ndGg6IGFjY3VtdWxhdGVkQ29udGVudC5sZW5ndGgsXG4gICAgICAuLi4oZXZlbnRUeXBlID09PSAnbm9kZSdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBub2RlOiBldmVudERhdGEubm9kZSxcbiAgICAgICAgICAgIHRvb2xfbmFtZTogZXZlbnREYXRhLnRvb2xfbmFtZSxcbiAgICAgICAgICAgIG1lc3NhZ2VQcmV2aWV3OiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnID8gZXZlbnREYXRhLm1lc3NhZ2Uuc2xpY2UoMCwgODApIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgICAuLi4oZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnXG4gICAgICAgID8ge1xuICAgICAgICAgICAgbWFudWFsQXBwcm92YWxEZXRlY3RlZDogZXZlbnREYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgIHBlbmRpbmdUb29sczogQXJyYXkuaXNBcnJheShldmVudERhdGEucGVuZGluZ19hY3Rpb25zKVxuICAgICAgICAgICAgICA/IChldmVudERhdGEucGVuZGluZ19hY3Rpb25zIGFzIEFycmF5PHsgdG9vbF9uYW1lPzogc3RyaW5nIH0+KS5tYXAoYSA9PiBhLnRvb2xfbmFtZSlcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICB9KVxuXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gJ3RoaW5raW5nJykge1xuICAgICAgY2FsbGJhY2tzLm9uVGhpbmtpbmcoKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG5vZGVQYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkID0ge1xuICAgICAgICAgIG5vZGU6IHR5cGVvZiBldmVudERhdGEubm9kZSA9PT0gJ3N0cmluZycgPyBldmVudERhdGEubm9kZSA6ICdub2RlJyxcbiAgICAgICAgICBtZXNzYWdlOiBldmVudERhdGEubWVzc2FnZSxcbiAgICAgICAgICB0b29sX25hbWU6IHR5cGVvZiBldmVudERhdGEudG9vbF9uYW1lID09PSAnc3RyaW5nJyA/IGV2ZW50RGF0YS50b29sX25hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdGhyZWFkX2lkOiB0eXBlb2YgZXZlbnREYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEudGhyZWFkX2lkIDogdGhyZWFkSWQsXG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShub2RlUGF5bG9hZCwgdGhyZWFkSWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ3Rva2VuJykge1xuICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZShzdHJlYW1UaW1lbGluZVN0b3JlLmdldFNuYXBzaG90KCksIGFjY3VtdWxhdGVkQ29udGVudCkpXG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZShzdHJlYW1UaW1lbGluZVN0b3JlLmdldFNuYXBzaG90KCksIGFjY3VtdWxhdGVkQ29udGVudCkpXG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGV2ZW50RGF0YSkpIHtcbiAgICAgICAgbm90aWZ5Q29tcGxldGUoZXZlbnREYXRhLCBjb250ZW50IHx8IGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKGV2ZW50RGF0YS5jb250ZW50IGFzIHN0cmluZykgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICBub3RpZnlDb21wbGV0ZShldmVudERhdGEsIGZpbmFsQ29udGVudClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2FwcHJvdmFsX3JlcXVpcmVkJykge1xuICAgICAgLy8gTWFudWFsIGFwcHJvdmFsOiBlbCBzdHJlYW0gc2lndWUgKG5vZGUvdG9rZW4vY29tcGxldGUgeSBtw6FzIEhJVEwpLlxuICAgICAgLy8gU29sbyBlbCBhcHByb3ZhbCBwYXVzYWRvIChib3TDs24pIGNpZXJyYSBlbCBwcm9jZXNhbWllbnRvIGRlIGV2ZW50b3MuXG4gICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gZXZlbnREYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZVxuICAgICAgc3RyZWFtRGVidWdBcHByb3ZhbCgnY2hhdE1hbmFnZXInLCAnYXBwcm92YWxfcmVxdWlyZWQnLCBldmVudERhdGEsIHtcbiAgICAgICAgdGhyZWFkSWQsXG4gICAgICAgIGlzTWFudWFsQXBwcm92YWwsXG4gICAgICAgIHdpbGxTZXR0bGVTdHJlYW06ICFpc01hbnVhbEFwcHJvdmFsLFxuICAgICAgfSlcbiAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgY2FsbGJhY2tzLm9uQXBwcm92YWxSZXF1aXJlZD8uKGV2ZW50RGF0YSwgYWNjdW11bGF0ZWRDb250ZW50LCB0aHJlYWRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgIGNhbGxiYWNrcy5vbkVycm9yKGV2ZW50RGF0YS5lcnJvciwgdGhyZWFkSWQpXG4gICAgfVxuICB9XG5cbiAgbGV0IGlzUmVhZGVyRG9uZSA9IGZhbHNlXG5cbiAgd2hpbGUgKCFpc1JlYWRlckRvbmUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICBpZiAoZG9uZSkge1xuICAgICAgaXNSZWFkZXJEb25lID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuXG4gIGNvbnN0IGN1cnJlbnRNZXNzYWdlSWQgPSB1c2VSZWYodXVpZHY0KCkpXG4gIGNvbnN0IGN1cnJlbnRVc2VyUXVlc3Rpb24gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY3VycmVudENoYXRJZCA9IHVzZVJlZihpbml0aWFsQ2hhdElkIHx8IHV1aWR2NCgpKVxuICBjb25zdCByZXBvcnRlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxDaGF0TWVzc2FnZVtdPihbXSlcbiAgLyoqXG4gICAqIEd1YXJkYSBpbmZvIGRlbCDDumx0aW1vIGFwcHJvdmFsIG1hbnVhbCAoY3VhbmRvIGVsIHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIiBlbiBsdWdhclxuICAgKiBkZSBjbGlja2VhciBlbCBib3TDs24pLiBFbiBtYW51YWwgYXBwcm92YWwsIGBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkYCByZXRvcm5hIGVhcmx5XG4gICAqIHNpbiBhZ3JlZ2FyIHVuIG1lbnNhamUgY29uIGBhcHByb3ZhbGAsIGFzw60gcXVlIGxhIGzDs2dpY2EgZGUgcmVmZXRjaCBlbiBgb25TdHJlYW1GaW5pc2hgXG4gICAqIG5vIGxvIGRldGVjdGEgdsOtYSBgcHJldmlvdXNNZXNzYWdlLmFwcHJvdmFsYC4gTG8gZ3VhcmRhbW9zIGFjw6EgcGFyYSBjb25zdW1pcmxvIGRlc3B1w6lzLlxuICAgKi9cbiAgY29uc3QgbGFzdE1hbnVhbEFwcHJvdmFsUmVmID0gdXNlUmVmPHtcbiAgICB0b29sTmFtZTogc3RyaW5nXG4gICAgdG9vbEFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICB9IHwgbnVsbD4obnVsbClcbiAgLyoqIENvbnRleHRvIGRlbCBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIHByZXZpbyBhbCBlamVjdXRhciBjb250aW51ZS10aHJlYWQuICovXG4gIGNvbnN0IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmID0gdXNlUmVmPEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNQcm9jZXNzaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBmaXJzdFRpbWVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIC8qKiBJZCBkZWwgcGxhY2Vob2xkZXIgZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nIGFjdGl2byAoc2kgaGF5KS4gKi9cbiAgY29uc3Qgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICAvKipcbiAgICogQ2hhdCBhbCBxdWUgcGVydGVuZWNlIGVsIHN0cmVhbSBhY3R1YWxtZW50ZSBhY3Rpdm8uIFNpIGNhbWJpYSBlbCBjaGF0XG4gICAqIG1pZW50cmFzIHVuIHN0cmVhbSBlc3TDoSBlbiB2dWVsbywgZGVzY2FydGFtb3MgbG9zIHRva2VucyByZXNpZHVhbGVzXG4gICAqIHF1ZSBwdWVkYW4gbGxlZ2FyIGFudGVzIGRlIHF1ZSBlbCBhYm9ydCBzZSBjb21wbGV0ZS5cbiAgICovXG4gIGNvbnN0IGFjdGl2ZVN0cmVhbUNoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICAvKiogU2V0dGVyIGluZGlyZWN0byBwYXJhIGFib3J0YXIgZWwgc3RyZWFtIGFudGVzIGRlIHF1ZSBlbCBob29rIGRlXG4gICAqIG9ycXVlc3RhZG9yIGVzdMOpIGluaWNpYWxpemFkbyAoc2UgbGlua2VhIG3DoXMgYWJham8pLiAqL1xuICBjb25zdCBhYm9ydFN0cmVhbVNpbGVudGx5UmVmID0gdXNlUmVmPCgpID0+IHZvaWQ+KCgpID0+IHVuZGVmaW5lZClcbiAgY29uc3QgY2xlYXJTdHJlYW1VaVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IFthY3RpdmVMb2FkaW5ncywgc2V0QWN0aXZlTG9hZGluZ3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG4gIGNvbnN0IFtpc0NvbnRpbnVpbmdTdHJlYW0sIHNldElzQ29udGludWluZ1N0cmVhbV0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcbiAgLyoqIEV2aXRhIGNsb3N1cmVzIG9ic29sZXRhcyBjdWFuZG8gZWwgZm9vdGVyIGNvbnNlcnZhIHNlbmRNZXNzYWdlIGVudHJlIHJlbmRlcnMuICovXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoeyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9KVxuICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBTaSBoYXkgdW4gc3RyZWFtIGVuIGN1cnNvLCBhYm9ydGFybG8gc2lsZW5jaW9zYW1lbnRlIHBhcmEgcXVlIGxvc1xuICAgICAgLy8gdG9rZW5zIHJlc2lkdWFsZXMgbm8gc2UgZXNjcmliYW4gZW4gZWwgY2hhdCBudWV2by5cbiAgICAgIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCgpXG5cbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuXG4gICAgICBsb2FkTWVzc2FnZXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxDaGF0SWQsIHByb2plY3QsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRUYXNrLCBsb2FkTWVzc2FnZXNdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBpc0FjY2Vzc0RlbmllZCA9IGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgIGNvbnN0IGlzUHJvbXB0VG9vTG9uZyA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicgJiYgZXJyb3JSYXdNZXNzYWdlPy5pbmNsdWRlcygncHJvbXB0IGlzIHRvbyBsb25nJylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBpc0FjY2Vzc0RlbmllZFxuICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICA6IGlzUHJvbXB0VG9vTG9uZ1xuICAgICAgICAgID8gdCgnY2hhdC5lcnJvclByb21wdFRvb0xvbmcnLCB7IHVzZWQ6IGVycm9yUmF3TWVzc2FnZT8ubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgOiB0KCdjaGF0LmVycm9yJylcblxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICAgIC8vIENoaXAgXCJSZWludGVudGFyXCIgc29sbyBlbiBlbCBlcnJvciBnZW7DqXJpY28gKHAuIGVqLiA1MDApOyBubyBhcGxpY2EgYSBhY2Nlc3MgZGVuaWVkIG5pIHByb21wdCB0b28gbG9uZy5cbiAgICAgICAgLi4uKCFpc0FjY2Vzc0RlbmllZCAmJiAhaXNQcm9tcHRUb29Mb25nID8geyBzdWdnZXN0aW9uczogW3QoJ2NoYXQucmV0cnknKV0gfSA6IHt9KSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjaygoY29udGVudDogc3RyaW5nLCBfc291cmNlczogdW5rbm93biwgX21lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9IG51bGwgJiYgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICBpZiAoc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ICE9PSB0ZW1wTWVzc2FnZUlkKSB7XG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSB0ZW1wTWVzc2FnZUlkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgIH1cblxuICAgIHN0cmVhbWluZ1N0b3JlLnNldFRleHQodGVtcE1lc3NhZ2VJZCwgY29udGVudClcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBjb25zdCBwcmV2aW91c01lc3NhZ2VGb3JMb2cgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtID0+IG0uaWQgIT09IHRlbXBNZXNzYWdlSWQpLmF0KC0xKVxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5jbGVhcigpXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnY2hhdE1hbmFnZXInLCAnaGFuZGxlU3RyZWFtRmluaXNoJywge1xuICAgICAgICBjb250ZW50TGVuZ3RoOiBjb250ZW50Lmxlbmd0aCxcbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZTogcHJldmlvdXNNZXNzYWdlRm9yTG9nPy5hcHByb3ZhbCAhPSBudWxsLFxuICAgICAgICBwcmV2aW91c0FwcHJvdmFsU3RhdHVzOiBwcmV2aW91c01lc3NhZ2VGb3JMb2c/LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgfSlcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMocmF3QXR0YWNobWVudHMpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBjb25zdCBUQVNLX0NSRUFUSU9OX1RPT0xTID0gWydjcmVhdGVfdGFzaycsICdjcmVhdGVfdGFza3NfYmF0Y2gnLCAnY2xvbmVfdGFzayddXG4gICAgICBjb25zdCBUQVNLX0VESVRfVE9PTFMgPSBbXG4gICAgICAgICdlZGl0X3Rhc2snLFxuICAgICAgICAnZWRpdF90YXNrc19iYXRjaCcsXG4gICAgICAgICd0YXNrX2Fzc2lnbicsXG4gICAgICAgICd0YXNrX3VuYXNzaWduJyxcbiAgICAgICAgJ3VwZGF0ZV90YXNrX3R5cGUnLFxuICAgICAgICAndXBkYXRlX2VzdGltYXRlZF9ob3VycycsXG4gICAgICAgICdhc3NpZ25fdGFza19sYWJlbCcsXG4gICAgICBdXG4gICAgICBjb25zdCBUQVNLX0RFTEVURV9UT09MUyA9IFsnZGVsZXRlX3Rhc2snLCAnZGVsZXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zIHx8IFtdXG4gICAgICBjb25zdCB3YXNUYXNrQ3JlYXRpb24gPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0NSRUFUSU9OX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0VkaXQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRGVsZXRlID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNDcmVhdGVBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBhY3Rpb24udG9vbF9uYW1lID09PSAnY3JlYXRlX2FnZW50JylcbiAgICAgIGNvbnN0IHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICBsZXQgY3JlYXRlQWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpKSB7XG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgJiZcbiAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiZcbiAgICAgICAgKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSB8fFxuICAgICAgICAgIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9ucywgJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjb25maWd1cmVkQWdlbnRJZCA9XG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7XG4gICAgICAgICAgYWdlbnRJZDogY29uZmlndXJlZEFnZW50SWQgYXMgc3RyaW5nLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRIaXRsT3B0aW9uLCB7XG4gICAgICAgICAgYWdlbnRfdHlwZTogZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZShhZ2VudCksXG4gICAgICAgICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICAuLi4oY29tcGxldGVkQWdlbnRJZD8udHJpbSgpID8geyBjcmVhdGVkX2FnZW50X2lkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB3YXNFZGl0QWdlbnRBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcblxuICAgICAgbGV0IGVkaXRBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzRWRpdEFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgZnJvbVN0cmVhbSA9IGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKVxuICAgICAgICBjb25zdCBmcm9tQXJncyA9IGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgICBjb25zdCByZXNvbHZlZEFnZW50SWQgPSBmcm9tU3RyZWFtIHx8IGZyb21BcmdzXG4gICAgICAgIGlmIChyZXNvbHZlZEFnZW50SWQpIHtcbiAgICAgICAgICBlZGl0QWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogcmVzb2x2ZWRBZ2VudElkIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbVVybHMgPSBtYXRjaGVzLm1hcChtYXRjaCA9PiBwYXJzZUludChtYXRjaFsxXSwgMTApKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCA9IGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGlvblRleHQgPVxuICAgICAgICB3YXNUYXNrRGVsZXRlICYmIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPT09IDAgJiYgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IGV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dChjb250ZW50KVxuICAgICAgICAgIDogW11cbiAgICAgIGNvbnN0IHRhc2tJZHNGb3JEYXNoYm9hcmQgPVxuICAgICAgICB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGFza0lkc0Zyb21VcmxzXG4gICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbFxuICAgICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dFxuXG4gICAgICBjb25zdCBzaG91bGRTeW5jRGFzaGJvYXJkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICAod2FzVGFza0NyZWF0aW9uIHx8IHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUpICYmXG4gICAgICAgIHRhc2tJZHNGb3JEYXNoYm9hcmQubGVuZ3RoID4gMFxuXG4gICAgICBpZiAoc2hvdWxkU3luY0Rhc2hib2FyZCkge1xuICAgICAgICBjb25zdCB0YXNrSWRzID0gdGFza0lkc0ZvckRhc2hib2FyZFxuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQodGFza0lkc1swXSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgICB1cmwucmVwbGFjZSgvXFwvKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpKD89JHxcXD8pLywgdGFiU2VnbWVudClcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0UHJvamVjdE1lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWRSYXcgPSBwcm9qZWN0Py5pZCB8fCBsYXN0UHJvamVjdE1lc3NhZ2U/LnByb2plY3RJZFxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gY29udGV4dFByb2plY3RJZFJhdyA/IHBhcnNlSW50KFN0cmluZyhjb250ZXh0UHJvamVjdElkUmF3KSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC9wcm9qZWN0c1xcLyhcXGQrKVxcLy8pXG4gICAgICAgIGNvbnN0IHJvdXRlUHJvamVjdElkID0gcGF0aE1hdGNoID8gcGFyc2VJbnQocGF0aE1hdGNoWzFdLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IGlzT25Qcm9qZWN0Um91dGUgPSBjb250ZXh0UHJvamVjdElkICYmIHJvdXRlUHJvamVjdElkICYmIGNvbnRleHRQcm9qZWN0SWQgPT09IHJvdXRlUHJvamVjdElkXG5cbiAgICAgICAgaWYgKGlzT25Qcm9qZWN0Um91dGUpIHtcbiAgICAgICAgICBpZiAod2FzVGFza0NyZWF0aW9uKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0VkaXQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5lZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0RlbGV0ZSkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZWZldGNoIGRlbCB0YXNrIHBhbmVsIHNpIGVzdMOhIGFiaWVydG8geSBsYSB0b29sIGFwcm9iYWRhIGVkaXTDsy9ib3Jyw7MgZXNhIHRhcmVhLlxuICAgICAgLy8gQ3VicmUgbG9zIGRvcyBmbHVqb3MgZGUgYXBwcm92YWw6XG4gICAgICAvLyAgIDEpIEFwcHJvdmFsIHBvciBib3TDs24g4oaSIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWwucGVuZGluZ19hY3Rpb25zYCAodsOtYSBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlKVxuICAgICAgLy8gICAyKSBNYW51YWwgYXBwcm92YWwgKHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIikg4oaSIGBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudGBcbiAgICAgIGNvbnN0IG9wZW5UYXNrUGFuZWxJZCA9IHdpbmRvdy50YXNrUGFuZWw/LnRhc2tJZFxuICAgICAgY29uc3QgbWFudWFsQXBwcm92YWwgPSBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudFxuICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSBudWxsIC8vIGNvbnN1bWlyIHVuYSBzb2xhIHZlelxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0VkaXQgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tEZWxldGUgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfREVMRVRFX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuXG4gICAgICAvLyBTeW5jIFBsYW5uZXI6IGF2aXNhciBjYXJnYSBkZSBob3JhcyBjb25maXJtYWRhIChjcmVhdGVfaG91ciAvIGNyZWF0ZV9ob3VycykuXG4gICAgICBjb25zdCBob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsID0gcGVuZGluZ0FjdGlvbnNcbiAgICAgICAgLm1hcCgoYWN0aW9uOiBQZW5kaW5nQWN0aW9uKSA9PiBhY3Rpb24udG9vbF9uYW1lKVxuICAgICAgICAuZmlsdGVyKCh0b29sTmFtZSk6IHRvb2xOYW1lIGlzIHN0cmluZyA9PiBpc0hvdXJzQ2hhcmdlVG9vbCh0b29sTmFtZSkpXG4gICAgICBjb25zdCB3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIGhvdXJzVG9vbHNGcm9tQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgY29uc3QgbWFudWFsSG91cnNUb29sID0gbWFudWFsQXBwcm92YWw/LnRvb2xOYW1lXG4gICAgICBjb25zdCB3YXNIb3Vyc0NoYXJnZU1hbnVhbEFwcHJvdmVkID0gaXNIb3Vyc0NoYXJnZVRvb2wobWFudWFsSG91cnNUb29sKVxuXG4gICAgICBpZiAod2FzSG91cnNDaGFyZ2VBcHByb3ZlZCB8fCB3YXNIb3Vyc0NoYXJnZU1hbnVhbEFwcHJvdmVkKSB7XG4gICAgICAgIGNvbnN0IHRvb2xzID0gd2FzSG91cnNDaGFyZ2VBcHByb3ZlZCA/IGhvdXJzVG9vbHNGcm9tQXBwcm92YWwgOiBtYW51YWxIb3Vyc1Rvb2wgPyBbbWFudWFsSG91cnNUb29sXSA6IFtdXG4gICAgICAgIGRpc3BhdGNoTWFpYUhvdXJzQ2hhcmdlZCh7XG4gICAgICAgICAgc291cmNlOiAnbWFpYScsXG4gICAgICAgICAgdG9vbHMsXG4gICAgICAgICAgc2Vzc2lvbklkOiBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuVGFza1BhbmVsSWQgJiYgKHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUgfHwgbWFudWFsV2FzVGFza0VkaXQgfHwgbWFudWFsV2FzVGFza0RlbGV0ZSkpIHtcbiAgICAgICAgY29uc3QgbWFudWFsUHNldWRvQWN0aW9uOiBQZW5kaW5nQWN0aW9uIHwgbnVsbCA9IG1hbnVhbEFwcHJvdmFsXG4gICAgICAgICAgPyAoeyB0b29sX25hbWU6IG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lLCB0b29sX2FyZ3M6IG1hbnVhbEFwcHJvdmFsLnRvb2xBcmdzID8/IHt9IH0gYXMgUGVuZGluZ0FjdGlvbilcbiAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRUYXNrSWRzID0gW1xuICAgICAgICAgIC4uLmV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhwZW5kaW5nQWN0aW9ucyksXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21VcmxzLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwsXG4gICAgICAgICAgLi4uKG1hbnVhbFBzZXVkb0FjdGlvbiA/IGV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhbbWFudWFsUHNldWRvQWN0aW9uXSkgOiBbXSksXG4gICAgICAgIF0ubWFwKFN0cmluZylcbiAgICAgICAgaWYgKGFmZmVjdGVkVGFza0lkcy5pbmNsdWRlcyhTdHJpbmcob3BlblRhc2tQYW5lbElkKSkpIHtcbiAgICAgICAgICB3aW5kb3cudGFza1BhbmVsPy5yZWZldGNoVGFzaz8uKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgaWYgKGNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChjcmVhdGVBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gYcOxYWRpciBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8gYWwgbGlzdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZWRpdEFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChlZGl0QWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyByZWZyZXNjYXIgZWwgYWdlbnRlIGVkaXRhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHQsIGV2ZW50LCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50KClcbiAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgYWRkTWVzc2FnZSh7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCB0XSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtRGVidWdBcHByb3ZhbCgnY2hhdE1hbmFnZXInLCAnaGFuZGxlQXBwcm92YWxSZXF1aXJlZCcsIGFwcHJvdmFsLCB7XG4gICAgICAgIGFjY3VtdWxhdGVkQ29udGVudExlbmd0aDogYWNjdW11bGF0ZWRDb250ZW50Lmxlbmd0aCxcbiAgICAgICAgaXNNYW51YWxBcHByb3ZhbDogYXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlLFxuICAgICAgfSlcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkKSxcbiAgICAgIH1cbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgc3RyZWFtRGVidWdIaXRsQ29udGV4dCgnY2hhdE1hbmFnZXInLCAnaGFuZGxlQXBwcm92YWxSZXF1aXJlZDpjb250ZXh0JywgaGl0bENvbnRleHQpXG5cbiAgICAgIGlmIChhcHByb3ZhbC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBY3Rpb24gPSBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/LlswXVxuICAgICAgICBjb25zdCB0b29sTmFtZSA9IChhcHByb3ZhbCBhcyB7IHRvb2xfbmFtZT86IHN0cmluZyB9KS50b29sX25hbWUgPz8gZmlyc3RBY3Rpb24/LnRvb2xfbmFtZSA/PyAnJ1xuICAgICAgICBjb25zdCB0b29sQXJncyA9XG4gICAgICAgICAgKChhcHByb3ZhbCBhcyB7IHRvb2xfYXJncz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pLnRvb2xfYXJncyA/P1xuICAgICAgICAgICAgKGZpcnN0QWN0aW9uPy50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpKSB8fFxuICAgICAgICAgIG51bGxcbiAgICAgICAgaWYgKHRvb2xOYW1lKSB7XG4gICAgICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSB7IHRvb2xOYW1lLCB0b29sQXJncyB9XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtRGVidWdMb2coJ2NoYXRNYW5hZ2VyJywgJ2hhbmRsZUFwcHJvdmFsUmVxdWlyZWQ6bWFudWFsRWFybHlSZXR1cm4nLCB7IHRvb2xOYW1lIH0pXG4gICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtRGVidWdMb2coJ2NoYXRNYW5hZ2VyJywgJ2hhbmRsZUFwcHJvdmFsUmVxdWlyZWQ6YnV0dG9uQXBwcm92YWwnLCB7XG4gICAgICAgIG1lc3NhZ2VJZDogaGl0bENvbnRleHQubWVzc2FnZUlkLFxuICAgICAgICBjbGVhcmVkVGltZWxpbmU6IHRydWUsXG4gICAgICB9KVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBhcHByb3ZhbFN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlXVxuICApXG5cbiAgY29uc3Qge1xuICAgIGFza01haWEsXG4gICAgaXNMb2FkaW5nOiB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5LFxuICAgIHN0b3BTdHJlYW1pbmcsXG4gICAgYWJvcnRTdHJlYW1TaWxlbnRseSxcbiAgICBoYW5kbGVTdHJlYW1Ob2RlRXZlbnQsXG4gICAgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQsXG4gICAgYmVnaW5TdHJlYW1UaW1lbGluZVR1cm4sXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIC8vIE1hbnRlbmVtb3MgZWwgc2V0dGVyIG3DoXMgcmVjaWVudGUgZW4gdW5hIHJlZiBwYXJhIHF1ZSBwdWVkYSB1c2Fyc2UgZGVzZGVcbiAgLy8gZWZlY3RvcyBkZWZpbmlkb3MgYW50ZXMgZW4gZWwgYXJjaGl2byAoY2FtYmlvIGRlIGNoYXQsIHJlc2V0LCBldGMuKS5cbiAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50ID0gYWJvcnRTdHJlYW1TaWxlbnRseVxuICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQgPSAoKSA9PiB7XG4gICAgc3RyZWFtRGVidWdMb2coJ2NoYXRNYW5hZ2VyJywgJ2NsZWFyU3RyZWFtVWknKVxuICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0QWN0aXZlTG9hZGluZ3Moe30pXG4gICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCBvcHRpb25zIH0gPSBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MoYXR0YWNobWVudHNPck9wdGlvbnMpXG4gICAgICAvLyBMYXMgbWVudGlvbnMgcHVlZGVuIHZlbmlyIHbDrWEgNXRvIHBhcsOhbWV0cm8gKGNhbGwgcG9zaXRpb25hbCBkZXNkZSBlbCBmb290ZXIpXG4gICAgICAvLyBvIHbDrWEgU2VuZE1lc3NhZ2VPcHRpb25zIChjYWxsIHByb2dyYW3DoXRpY28pLiBFbCBwYXLDoW1ldHJvIGV4cGzDrWNpdG8gZ2FuYS5cbiAgICAgIGNvbnN0IGVmZmVjdGl2ZU1lbnRpb25zID0gbWVudGlvbnMgPz8gb3B0aW9ucy5tZW50aW9uc1xuICAgICAgY29uc3QgY29udGV4dE1lc3NhZ2U6IENvbnRleHRNZXNzYWdlIHwgdW5kZWZpbmVkID0gYnVpbGRDb250ZXh0TWVzc2FnZShlZmZlY3RpdmVNZW50aW9ucylcbiAgICAgIGNvbnN0IHBheWxvYWRGdWFJZCA9IGZ1YUlkID8/IG9wdGlvbnMuZnVhSWRcbiAgICAgIGNvbnN0IHBheWxvYWRTY0lkID0gc2NJZCA/PyBvcHRpb25zLnNjSWRcbiAgICAgIGNvbnN0IHBheWxvYWRDb250ZXh0RGF0YSA9IG9wdGlvbnMuY29udGV4dERhdGFcbiAgICAgIGNvbnN0IGRpc3BsYXlNZXNzYWdlID0gZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheShtZXNzYWdlLCB7XG4gICAgICAgIGZ1YUlkOiBwYXlsb2FkRnVhSWQsXG4gICAgICAgIHNjSWQ6IHBheWxvYWRTY0lkLFxuICAgICAgfSlcblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIC8vIE5vIGFncmVnYXIgcHJvamVjdElkIGFsIG1lbnNhamUgZGVsIHVzdWFyaW8gLSBzZSBkZXRlcm1pbmFyw6EgZGVzcHXDqXNcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2U6IGRpc3BsYXlNZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcblxuICAgICAgbGV0IGZpbmFsTWVzc2FnZSA9IG1lc3NhZ2VcblxuICAgICAgaWYgKG1lc3NhZ2UgPT09IHQoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpKSB7XG4gICAgICAgIGZpbmFsTWVzc2FnZSA9IGBGQVE6ICR7dCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJyl9IC0gVGlwbyBkZSByZW50YWJpbGlkYWQ6ICR7XG4gICAgICAgICAgb3B0aW9ucy5wcm9qZWN0Q2hhbmdlZD8uaW5jb21lVHlwZSB8fCBjb250ZXh0UmVmLmN1cnJlbnQucHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgdGFzazogY3R4VGFzayxcbiAgICAgIH0gPSBjb250ZXh0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlUHJvamVjdElkID0gbGFzdE1lc3NhZ2VXaXRoUHJvamVjdD8ucHJvamVjdElkXG4gICAgICBjb25zdCBwcm9qZWN0VG9SZXF1ZXN0ID0gcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QoY3R4Q2hpcHNQcm9qZWN0LCBsYXN0TWVzc2FnZVByb2plY3RJZClcblxuICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKFtwcm9qZWN0VG9SZXF1ZXN0XSlcblxuICAgICAgY29uc3QgcGF5bG9hZEZhcUlkID0gZmFxSWQgPz8gb3B0aW9ucy5mYXFJZFxuICAgICAgY29uc3QgcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID0gYWdlbnRTdWdnZXN0aW9uSWQgPz8gb3B0aW9ucy5hZ2VudFN1Z2dlc3Rpb25JZFxuXG4gICAgICBjb25zdCBwYXlsb2FkRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogZmluYWxNZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi5yZXNvbHZlQ2xpZW50UGF5bG9hZChjdHhDbGllbnQsIGN0eFByb2plY3QpLFxuICAgICAgICAuLi4ocHJvamVjdHM/Lmxlbmd0aCA/IHsgcHJvamVjdE5hbWU6IHByb2plY3RzWzBdLm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZhcUlkID8geyBmYXFJZDogcGF5bG9hZEZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGdWFJZCA/IHsgZnVhSWQ6IHBheWxvYWRGdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZFNjSWQgPyB7IHNjSWQ6IHBheWxvYWRTY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQ29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiBwYXlsb2FkQ29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIC4uLihvcHRpb24/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIob3B0aW9uLmZlZUlkKSB9IDoge30pLFxuICAgICAgICAgIC4uLihvcHRpb24/LmNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkOiBOdW1iZXIob3B0aW9uLmNsaWVudElkKSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbcHJvamVjdCwgc2V0UHJvamVjdCwgYXNrTWFpYSwgYXV0aFVzZXIsIGlzV2ViU2VhcmNoQWN0aXZlLCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrID0gdXNlQ2FsbGJhY2soYXN5bmMgKGZlZWRiYWNrUHJvcDogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5DaGF0cy53YXNIZWxwZnVsQ2hhdChjaGF0TWVzc2FnZUlkLCBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUClcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IGNoYXRNZXNzYWdlSWQgJiYgbWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIHdhc0hlbHBmdWw6IGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICB0aHJlYWRJZHM6IHN0cmluZ1tdLFxuICAgICAgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnLFxuICAgICAgZWRpdGVkQWN0aW9ucz86IEFycmF5PHsgdG9vbF9uYW1lOiBzdHJpbmc7IGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoIXRocmVhZElkcz8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHRocmVhZF9pZHMgcHJvdmlkZWQgZm9yIGFwcHJvdmFsIGRlY2lzaW9uJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEJ1c2NhciBlbCBtZW5zYWplIHF1ZSBjb250aWVuZSBhbGd1bm8gZGUgZXN0b3MgdGhyZWFkSWRzIGVuIHN1cyBwZW5kaW5nX2FjdGlvbnNcbiAgICAgIGNvbnN0IG1lc3NhZ2VXaXRoQXBwcm92YWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PlxuICAgICAgICBtLmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoYWN0aW9uID0+IHRocmVhZElkcy5pbmNsdWRlcyhhY3Rpb24udGhyZWFkX2lkKSlcbiAgICAgIClcblxuICAgICAgaWYgKCFtZXNzYWdlV2l0aEFwcHJvdmFsIHx8ICFtZXNzYWdlV2l0aEFwcHJvdmFsLmFwcHJvdmFsKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHLDsyBtZW5zYWplIGNvbiBhcHByb3ZhbCBwYXJhIHRocmVhZF9pZHM6JywgdGhyZWFkSWRzKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc3RyZWFtRGVidWdMb2coJ2NoYXRNYW5hZ2VyJywgJ2hhbmRsZUFwcHJvdmFsRGVjaXNpb24nLCB7XG4gICAgICAgIHRocmVhZElkcyxcbiAgICAgICAgZGVjaXNpb24sXG4gICAgICAgIGhhc0VkaXRlZEFjdGlvbnM6IEJvb2xlYW4oZWRpdGVkQWN0aW9ucz8ubGVuZ3RoKSxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcbiAgICAgIGNvbnN0IGxvYWRpbmdLZXkgPSB0aHJlYWRJZHNbMF1cblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBtZXNzYWdlV2l0aEFwcHJvdmFsLm1lc3NhZ2UsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHMsXG4gICAgICB9XG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcbiAgICAgIHN0cmVhbURlYnVnSGl0bENvbnRleHQoJ2NoYXRNYW5hZ2VyJywgJ2hhbmRsZUFwcHJvdmFsRGVjaXNpb246Y29udGV4dCcsIGhpdGxDb250ZXh0KVxuXG4gICAgICBjb25zdCBpbml0aWFsQWN0aXZpdHkgPSByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsQ29udGV4dClcbiAgICAgIHN0cmVhbURlYnVnQWN0aXZpdHkoJ2NoYXRNYW5hZ2VyJywgJ2hhbmRsZUFwcHJvdmFsRGVjaXNpb246aW5pdGlhbEFjdGl2aXR5JywgaW5pdGlhbEFjdGl2aXR5KVxuXG4gICAgICAvLyBVcGRhdGUgbWVzc2FnZSBzdGF0dXMgaW1tZWRpYXRlbHlcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IG1lc3NhZ2VJZCkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VyIHJlLXJlbmRlclxuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT4gbS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgYWRkTWVzc2FnZSh7IC4uLmV4aXN0aW5nTWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIEFMTCB0aHJlYWRfaWRzIGluIGEgc2luZ2xlIHJlcXVlc3RcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKHRydWUpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgYmVnaW5TdHJlYW1UaW1lbGluZVR1cm4oYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYClcbiAgICAgIHN0cmVhbURlYnVnU3NlKCdjb250aW51ZVRocmVhZCcsICdzdGFydCcsIHtcbiAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICB0dXJuSWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2AsXG4gICAgICB9KVxuXG4gICAgICAvLyBBZGQgbG9hZGluZ1xuICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBbbG9hZGluZ0tleV06IGluaXRpYWxBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgfSkpXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShpbml0aWFsQWN0aXZpdHkpXG5cbiAgICAgIC8vIE1hcmNhIHNpIGVsIHN0cmVhbSBjZXJyw7MgdsOtYSB1biBldmVudG8gdGVybWluYWwgKGNvbXBsZXRlL2FwcHJvdmFsL2Vycm9yKS5cbiAgICAgIC8vIFNpIGVsIGJhY2tlbmQgY2llcnJhIGxhIGNvbmV4acOzbiBzaW4gZW1pdGlybG8sIGxpbXBpYW1vcyBlbCBpbmRpY2Fkb3IgZW4gZWxcbiAgICAgIC8vIGBmaW5hbGx5YCBwYXJhIHF1ZSBubyBxdWVkZSB0cmFiYWRvIGVuIFwiRXNjcmliaWVuZG8gbGEgcmVzcHVlc3RhXCIuXG4gICAgICBsZXQgc3RyZWFtU2V0dGxlZCA9IGZhbHNlXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoe1xuICAgICAgICAgIHRocmVhZElkcywgLy8gU2VuZCBhbGwgYWN0aW9uIHRocmVhZF9pZHMgYXQgb25jZVxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBzdHJlYW1cbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgbG9hZGluZ0tleSwge1xuICAgICAgICAgIG9uVGhpbmtpbmc6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKHBheWxvYWQ6IFN0cmVhbU5vZGVFdmVudFBheWxvYWQsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLCBhY2N1bXVsYXRlZFRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc3RyZWFtRGVidWdOb2RlKCdjb250aW51ZVRocmVhZCcsIHBheWxvYWQsIHtcbiAgICAgICAgICAgICAgY3VycmVudFRocmVhZElkLFxuICAgICAgICAgICAgICBhY2N1bXVsYXRlZFRleHRMZW5ndGg6IGFjY3VtdWxhdGVkVGV4dC5sZW5ndGgsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtTm9kZUV2ZW50KFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICB0aHJlYWRfaWQ6IHBheWxvYWQudGhyZWFkX2lkID8/IGN1cnJlbnRUaHJlYWRJZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYWNjdW11bGF0ZWRUZXh0XG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBub2RlQWN0aXZpdHkgPSByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgcGF5bG9hZC5tZXNzYWdlLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50LFxuICAgICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQsXG4gICAgICAgICAgICAgIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyZW50VGhyZWFkSWRdOiBub2RlQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgc3RyZWFtRGVidWdMb2dIaXRsVWlPdmVybGFwKHtcbiAgICAgICAgICAgICAgc2NvcGU6ICdjb250aW51ZVRocmVhZCcsXG4gICAgICAgICAgICAgIHNvdXJjZTogJ25vZGUnLFxuICAgICAgICAgICAgICBub2RlUGF5bG9hZDogcGF5bG9hZCxcbiAgICAgICAgICAgICAgYWN0aXZpdHlNZXNzYWdlOiBub2RlQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgICAgaGl0bENvbnRleHQ6IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgIHVpU3VyZmFjZXM6IFsnc3RyZWFtQWN0aXZpdHknLCAnYWN0aXZlTG9hZGluZ3MnLCAnc3RyZWFtVGltZWxpbmUnXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbldyaXRpbmdTdGFydGVkOiAoKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlOiAoXG4gICAgICAgICAgICBmaW5hbENvbnRlbnQ6IHN0cmluZyxcbiAgICAgICAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgICAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgICAgICAgY3VycmVudFRocmVhZElkOiBzdHJpbmcsXG4gICAgICAgICAgICBhdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgICAgICAgICBzdHJlYW1EZWJ1Z1NzZSgnY29udGludWVUaHJlYWQnLCAnY29tcGxldGUnLCB7XG4gICAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZCxcbiAgICAgICAgICAgICAgZmluYWxDb250ZW50TGVuZ3RoOiBmaW5hbENvbnRlbnQubGVuZ3RoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgYXR0YWNobWVudHMsIHN1Z2dlc3Rpb25zLCBhZ2VudElkKVxuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IChhcHByb3ZhbFBheWxvYWQ6IGFueSwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzdHJlYW1EZWJ1Z0FwcHJvdmFsKCdjb250aW51ZVRocmVhZCcsICdhcHByb3ZhbF9yZXF1aXJlZCcsIGFwcHJvdmFsUGF5bG9hZCwge1xuICAgICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQsXG4gICAgICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudExlbmd0aDogYWNjdW11bGF0ZWRDb250ZW50Lmxlbmd0aCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAvLyBBcHByb3ZhbCBwYXVzYWRvIChib3TDs24pOiBjaWVycmEgZXN0ZSBjb250aW51ZS10aHJlYWQuXG4gICAgICAgICAgICAvLyBNYW51YWwgYXBwcm92YWw6IGVsIFNTRSBzaWd1ZSBjb24gbm9kZS90b2tlbi9jb21wbGV0ZSAoeSBtw6FzIEhJVEwpLlxuICAgICAgICAgICAgY29uc3QgaXNNYW51YWxBcHByb3ZhbCA9IGFwcHJvdmFsUGF5bG9hZD8ubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlXG4gICAgICAgICAgICBpZiAoIWlzTWFudWFsQXBwcm92YWwpIHtcbiAgICAgICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgICAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQoYXBwcm92YWxQYXlsb2FkIGFzIEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgICAgICAgIHN0cmVhbURlYnVnU3NlKCdjb250aW51ZVRocmVhZCcsICdlcnJvcicsIHsgdGhyZWFkSWQ6IGxvYWRpbmdLZXkgfSlcbiAgICAgICAgICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgLy8gUmVkIGRlIHNlZ3VyaWRhZDogc2kgZWwgc3RyZWFtIGNlcnLDsyBzaW4gZXZlbnRvIHRlcm1pbmFsLCBlbCBpbmRpY2Fkb3JcbiAgICAgICAgLy8gKHAuIGVqLiBcIkVzY3JpYmllbmRvIGxhIHJlc3B1ZXN0YVwiKSBxdWVkYXLDrWEgdHJhYmFkby4gTG8gbGltcGlhbW9zIGFxdcOtLlxuICAgICAgICBpZiAoIXN0cmVhbVNldHRsZWQpIHtcbiAgICAgICAgICBzdHJlYW1EZWJ1Z1dhcm4oJ2NvbnRpbnVlVGhyZWFkJywgJ3N0cmVhbUNsb3NlZFdpdGhvdXRUZXJtaW5hbEV2ZW50JywgeyB0aHJlYWRJZDogbG9hZGluZ0tleSB9KVxuICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgIGlmICghKGxvYWRpbmdLZXkgaW4gcHJldikpIHJldHVybiBwcmV2XG4gICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbbG9hZGluZ0tleV1cbiAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICBhZGRNZXNzYWdlLFxuICAgICAgaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgICBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgICBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgICB0LFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGluaXRpYWxpemVDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoaW5pdGlhbENoYXRJZCkge1xuICAgICAgYXdhaXQgbG9hZE1lc3NhZ2VzKClcbiAgICB9IGVsc2UgaWYgKHVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgY29uc3QgaGFzSW5pdGlhbE1lc3NhZ2UgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlPy50cmltKCkpXG4gICAgICBjb25zdCBoYXNJbml0aWFsQXR0YWNobWVudHMgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEZhcSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEZ1YSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbFNjID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZClcblxuICAgICAgaWYgKCFoYXNJbml0aWFsTWVzc2FnZSAmJiAhaGFzSW5pdGlhbEF0dGFjaG1lbnRzICYmICFoYXNJbml0aWFsRmFxICYmICFoYXNJbml0aWFsRnVhICYmICFoYXNJbml0aWFsU2MpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICB0YXNrOiBjdHhUYXNrLFxuICAgICAgfSA9IGNvbnRleHRSZWYuY3VycmVudFxuICAgICAgY29uc3QgcHJvamVjdFRvUmVxdWVzdCA9IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0KGN0eENoaXBzUHJvamVjdCwgbnVsbCkgPz8gY3R4UHJvamVjdD8uaWQgPz8gbnVsbFxuXG4gICAgICBhc2tNYWlhKHtcbiAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lISxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihjdHhQcm9qZWN0Py5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKGN0eFByb2plY3QuZmVlSWQpIH0gOiB7fSksXG4gICAgICAgIC4uLnJlc29sdmVDbGllbnRQYXlsb2FkKGN0eENsaWVudCwgY3R4UHJvamVjdCksXG4gICAgICAgIC4uLihjdHhQcm9qZWN0Py5uYW1lID8geyBwcm9qZWN0TmFtZTogY3R4UHJvamVjdC5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihjdHhUYXNrPy5pZCAhPSBudWxsXG4gICAgICAgICAgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpLCAuLi4oY3R4VGFzay5uYW1lID8geyB0YXNrTmFtZTogY3R4VGFzay5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgPyB7IGZhcUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5hZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkID8geyBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCA/IHsgc2NJZDogdXNlckluaXRpYWxNZXNzYWdlLnNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIC4uLihidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucylcbiAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiB1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgaW5pdGlhbENoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50KClcbiAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLmNsZWFyKClcbiAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlOiB3YWl0aW5nUmVzcG9uc2UgfHwgaXNDb250aW51aW5nU3RyZWFtLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgaXNDb250aW51aW5nU3RyZWFtIHx8IGxvYWRpbmdNZXNzYWdlcyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsU0FBU0MsRUFBRSxJQUFJQyxNQUFNLFFBQVEsTUFBTTtBQUNuQyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUc5QixTQUFTQyxPQUFPLFFBQWlCLHdCQUF3QjtBQUN6RCxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBQ3RDLFNBQVNDLFFBQVEsUUFBUSw0REFBNEQ7QUFDckYsU0FBdUNDLGVBQWUsUUFBd0Msa0JBQWtCO0FBQ2hILFNBQXlDQyxtQkFBbUIsUUFBUSw0QkFBNEI7QUFDaEcsU0FBU0Msa0NBQWtDLFFBQVEsc0NBQXNDO0FBR3pGLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7QUFDNUMsU0FBU0MsaUJBQWlCLFFBQVEsc0JBQXNCO0FBQ3hELFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyx3QkFBd0IsRUFBRUMsaUJBQWlCLFFBQVEsbUNBQW1DO0FBQy9GLFNBQVNDLGdCQUFnQixRQUFRLDZDQUE2QztBQUM5RSxTQUFTQyx1QkFBdUIsRUFBRUMseUJBQXlCLFFBQVEsMkJBQTJCO0FBRTlGLFNBQ0VDLHlCQUF5QixFQUN6QkMsNkJBQTZCLEVBQzdCQyxnQ0FBZ0MsUUFFM0Isb0NBQW9DO0FBQzNDLFNBQVNDLGNBQWMsUUFBUSx3QkFBd0I7QUFDdkQsU0FBU0Msd0JBQXdCLEVBQUVDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUN6RixTQUFTQyxtQkFBbUIsUUFBUSwwQ0FBMEM7QUFDOUUsU0FBU0MsNkJBQTZCLEVBQUVDLHNCQUFzQixRQUFRLDRCQUE0QjtBQUNsRyxTQUNFQyxtQkFBbUIsRUFDbkJDLG1CQUFtQixFQUNuQkMsc0JBQXNCLEVBQ3RCQyxjQUFjLEVBQ2RDLDJCQUEyQixFQUMzQkMsZUFBZSxFQUNmQyxjQUFjLEVBQ2RDLGVBQWUsUUFDViw0QkFBNEI7QUFJbkMsSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSUMsb0JBQTJDLEVBQUs7RUFBQSxJQUFBQyxvQkFBQTtFQUNoRixJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsb0JBQW9CLENBQUMsRUFBRTtJQUN2QyxPQUFPO01BQUVJLFdBQVcsRUFBRUosb0JBQW9CO01BQUVLLE9BQU8sRUFBRSxDQUFDO0lBQXdCLENBQUM7RUFDakY7RUFFQSxJQUFNQSxPQUEyQixHQUFHTCxvQkFBb0IsYUFBcEJBLG9CQUFvQixjQUFwQkEsb0JBQW9CLEdBQUksQ0FBQyxDQUFDO0VBQzlELE9BQU87SUFBRUksV0FBVyxHQUFBSCxvQkFBQSxHQUFFSSxPQUFPLENBQUNELFdBQVcsY0FBQUgsb0JBQUEsY0FBQUEsb0JBQUEsR0FBSSxFQUFFO0lBQUVJLE9BQU8sRUFBUEE7RUFBUSxDQUFDO0FBQzVELENBQUM7O0FBRUQ7QUFDQSxJQUFNQyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUMzQkMsWUFBdUQsRUFDdkRDLG9CQUF3RCxFQUN0QztFQUNsQixJQUFNQyxjQUFjLEdBQUdGLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUVHLFNBQVMsR0FBR0MsTUFBTSxDQUFDSixZQUFZLENBQUNHLFNBQVMsQ0FBQyxHQUFHLElBQUk7RUFDdEYsSUFBSUQsY0FBYyxJQUFJLElBQUksSUFBSUUsTUFBTSxDQUFDQyxRQUFRLENBQUNILGNBQWMsQ0FBQyxFQUFFO0lBQzdELE9BQU9BLGNBQWM7RUFDdkI7RUFDQSxJQUFJRCxvQkFBb0IsSUFBSSxJQUFJLEVBQUU7SUFDaEMsSUFBTUssTUFBTSxHQUFHRixNQUFNLENBQUNILG9CQUFvQixDQUFDO0lBQzNDLE9BQU9HLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHLElBQUk7RUFDaEQ7RUFDQSxPQUFPLElBQUk7QUFDYixDQUFDO0FBRUQsSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FDeEJDLFNBQTRELEVBQzVEQyxVQUFzQyxFQUNTO0VBQUEsSUFBQUMsa0JBQUE7RUFDL0MsSUFBSUYsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRUcsRUFBRSxFQUFFO0lBQ2pCLE9BQUFDLGFBQUE7TUFBU0MsUUFBUSxFQUFFTCxTQUFTLENBQUNHO0lBQUUsR0FBTUgsU0FBUyxDQUFDTSxJQUFJLEdBQUc7TUFBRUMsVUFBVSxFQUFFUCxTQUFTLENBQUNNO0lBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzRjtFQUNBLElBQUksQ0FBQUwsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVJLFFBQVEsS0FBSSxJQUFJLEVBQUU7SUFDaEMsT0FBTztNQUFFQSxRQUFRLEVBQUVULE1BQU0sQ0FBQ0ssVUFBVSxDQUFDSSxRQUFRO0lBQUUsQ0FBQztFQUNsRDtFQUNBLElBQUlKLFVBQVUsYUFBVkEsVUFBVSxnQkFBQUMsa0JBQUEsR0FBVkQsVUFBVSxDQUFFTyxNQUFNLGNBQUFOLGtCQUFBLGVBQWxCQSxrQkFBQSxDQUFvQkMsRUFBRSxFQUFFO0lBQzFCLE9BQUFDLGFBQUE7TUFDRUMsUUFBUSxFQUFFSixVQUFVLENBQUNPLE1BQU0sQ0FBQ0w7SUFBRSxHQUMxQkYsVUFBVSxDQUFDTyxNQUFNLENBQUNGLElBQUksR0FBRztNQUFFQyxVQUFVLEVBQUVOLFVBQVUsQ0FBQ08sTUFBTSxDQUFDRjtJQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7RUFFNUU7RUFDQSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxJQUFNRyw2QkFBNkIsR0FBRyxTQUFoQ0EsNkJBQTZCQSxDQUFJQyxjQUF1QixFQUF1QjtFQUNuRixJQUFJLENBQUN2QixLQUFLLENBQUNDLE9BQU8sQ0FBQ3NCLGNBQWMsQ0FBQyxFQUFFO0lBQ2xDLE9BQU8sRUFBRTtFQUNYO0VBRUEsT0FBT0EsY0FBYyxDQUNsQkMsTUFBTSxDQUFDLFVBQUNDLFVBQVU7SUFBQSxPQUE0QyxDQUFDLENBQUNBLFVBQVUsSUFBSUMsT0FBQSxDQUFPRCxVQUFVLE1BQUssUUFBUTtFQUFBLEVBQUMsQ0FDN0dFLEdBQUcsQ0FBQyxVQUFDRixVQUFVLEVBQUVHLEtBQUssRUFBSztJQUMxQixJQUFNVCxJQUFJLEdBQ1IsT0FBT00sVUFBVSxDQUFDTixJQUFJLEtBQUssUUFBUSxJQUFJTSxVQUFVLENBQUNOLElBQUksQ0FBQ1UsSUFBSSxDQUFDLENBQUMsR0FBR0osVUFBVSxDQUFDTixJQUFJLENBQUNVLElBQUksQ0FBQyxDQUFDLFdBQUFDLE1BQUEsQ0FBV0YsS0FBSyxHQUFHLENBQUMsQ0FBRTtJQUM5RyxJQUFNRyxJQUFJLEdBQUcsT0FBT04sVUFBVSxDQUFDTSxJQUFJLEtBQUssUUFBUSxJQUFJTixVQUFVLENBQUNNLElBQUksQ0FBQ0YsSUFBSSxDQUFDLENBQUMsR0FBR0osVUFBVSxDQUFDTSxJQUFJLENBQUNGLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSztJQUMzRyxJQUFNRyxRQUFRLEdBQUcsT0FBT1AsVUFBVSxDQUFDUSxTQUFTLEtBQUssUUFBUSxHQUFHUixVQUFVLENBQUNRLFNBQVMsR0FBRyxFQUFFO0lBQ3JGLElBQU1DLFlBQVksR0FBR2YsSUFBSSxDQUFDZ0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHaEIsSUFBSSxNQUFBVyxNQUFBLENBQU1YLElBQUksT0FBQVcsTUFBQSxDQUFJQyxJQUFJLENBQUU7SUFDbEUsSUFBTUssV0FBVyxHQUNmLE9BQU9YLFVBQVUsQ0FBQ1ksSUFBSSxLQUFLLFFBQVEsR0FDL0JaLFVBQVUsQ0FBQ1ksSUFBSSxHQUNmNUIsTUFBTSxDQUFDQyxRQUFRLENBQUNELE1BQU0sQ0FBQ2dCLFVBQVUsQ0FBQ1ksSUFBSSxDQUFDLENBQUMsR0FDdEM1QixNQUFNLENBQUNnQixVQUFVLENBQUNZLElBQUksQ0FBQyxHQUN2QixDQUFDO0lBRVQsT0FBTztNQUNMQyxJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLEVBQUUsRUFBRUwsWUFBWSxFQUFFO1FBQUVILElBQUksRUFBRUM7TUFBUyxDQUFDLENBQUM7TUFDcERoQixFQUFFLEVBQ0EsT0FBT1MsVUFBVSxDQUFDVCxFQUFFLEtBQUssUUFBUSxJQUFJUyxVQUFVLENBQUNULEVBQUUsQ0FBQ2EsSUFBSSxDQUFDLENBQUMsR0FDckRKLFVBQVUsQ0FBQ1QsRUFBRSxxQkFBQWMsTUFBQSxDQUNLRixLQUFLLE9BQUFFLE1BQUEsQ0FBSUksWUFBWSxDQUFFO01BQy9DZixJQUFJLEVBQUpBLElBQUk7TUFDSmtCLElBQUksRUFBRUQsV0FBVztNQUNqQkwsSUFBSSxFQUFKQSxJQUFJO01BQ0pTLFlBQVksRUFBRSxPQUFPZixVQUFVLENBQUNlLFlBQVksS0FBSyxRQUFRLEdBQUdmLFVBQVUsQ0FBQ2UsWUFBWSxHQUFHQyxTQUFTO01BQy9GQyxhQUFhLEVBQUUsT0FBT2pCLFVBQVUsQ0FBQ2lCLGFBQWEsS0FBSyxRQUFRLEdBQUdqQixVQUFVLENBQUNpQixhQUFhLEdBQUdELFNBQVM7TUFDbEdFLFFBQVEsRUFBRSxPQUFPbEIsVUFBVSxDQUFDa0IsUUFBUSxLQUFLLFFBQVEsR0FBR2xCLFVBQVUsQ0FBQ2tCLFFBQVEsR0FBR0YsU0FBUztNQUNuRkcsSUFBSSxFQUFFbkIsVUFBVSxDQUFDbUIsSUFBSSxLQUFLLFdBQVcsR0FBRyxXQUFXLEdBQUc7SUFDeEQsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNOLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLG9DQUFvQ0EsQ0FBQ0MsY0FBK0IsRUFBWTtFQUN2RixJQUFNQyxHQUFhLEdBQUcsRUFBRTtFQUN4QixJQUFNQyxNQUFNLEdBQUcsU0FBVEEsTUFBTUEsQ0FBSUMsR0FBWSxFQUFLO0lBQy9CLElBQUlBLEdBQUcsSUFBSSxJQUFJLEVBQUU7SUFDakIsSUFBTUMsQ0FBQyxHQUFHQyxRQUFRLENBQUNDLE1BQU0sQ0FBQ0gsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25DLElBQUksQ0FBQ3hDLE1BQU0sQ0FBQzRDLEtBQUssQ0FBQ0gsQ0FBQyxDQUFDLEVBQUVILEdBQUcsQ0FBQ08sSUFBSSxDQUFDSixDQUFDLENBQUM7RUFDbkMsQ0FBQztFQUNESixjQUFjLENBQUNTLE9BQU8sQ0FBQyxVQUFBQyxNQUFNLEVBQUk7SUFBQSxJQUFBQyxZQUFBO0lBQy9CLElBQUksQ0FBQ0QsTUFBTSxJQUFJOUIsT0FBQSxDQUFPOEIsTUFBTSxNQUFLLFFBQVEsRUFBRTtJQUMzQyxJQUFNRSxJQUFJLEdBQUdGLE1BQU0sQ0FBQ0csU0FBUztJQUM3QixJQUFJLEVBQUVELElBQUksSUFBSWhDLE9BQUEsQ0FBT2dDLElBQUksTUFBSyxRQUFRLElBQUksQ0FBQzFELEtBQUssQ0FBQ0MsT0FBTyxDQUFDeUQsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqRSxJQUFNRSxHQUFHLEdBQUdGLElBQStCO0lBQzNDVixNQUFNLEVBQUFTLFlBQUEsR0FBQ0csR0FBRyxDQUFDQyxPQUFPLGNBQUFKLFlBQUEsY0FBQUEsWUFBQSxHQUFJRyxHQUFHLENBQUM1QyxFQUFFLENBQUM7SUFDN0IsSUFBSWhCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMkQsR0FBRyxDQUFDRSxRQUFRLENBQUMsRUFBRTtNQUMvQkYsR0FBRyxDQUFDRSxRQUFRLENBQUNQLE9BQU8sQ0FBQ1AsTUFBTSxDQUFDO0lBQzlCO0lBQ0EsSUFBSWhELEtBQUssQ0FBQ0MsT0FBTyxDQUFDMkQsR0FBRyxDQUFDRyxLQUFLLENBQUMsRUFBRTtNQUM1QkgsR0FBRyxDQUFDRyxLQUFLLENBQUNSLE9BQU8sQ0FBQyxVQUFBUyxDQUFDLEVBQUk7UUFDckIsSUFBSUEsQ0FBQyxJQUFJdEMsT0FBQSxDQUFPc0MsQ0FBQyxNQUFLLFFBQVEsSUFBSSxDQUFDaEUsS0FBSyxDQUFDQyxPQUFPLENBQUMrRCxDQUFDLENBQUMsRUFBRTtVQUFBLElBQUFDLGFBQUE7VUFDbkQsSUFBTUMsSUFBSSxHQUFHRixDQUE0QjtVQUN6Q2hCLE1BQU0sRUFBQWlCLGFBQUEsR0FBQ0MsSUFBSSxDQUFDTCxPQUFPLGNBQUFJLGFBQUEsY0FBQUEsYUFBQSxHQUFJQyxJQUFJLENBQUNsRCxFQUFFLENBQUM7UUFDakM7TUFDRixDQUFDLENBQUM7SUFDSjtFQUNGLENBQUMsQ0FBQztFQUNGLE9BQU8rQixHQUFHO0FBQ1o7O0FBRUE7QUFDQSxTQUFTb0Isc0NBQXNDQSxDQUFDckIsY0FBK0IsRUFBWTtFQUN6RixJQUFNQyxHQUFhLEdBQUcsRUFBRTtFQUN4QkQsY0FBYyxDQUFDUyxPQUFPLENBQUMsVUFBQUMsTUFBTSxFQUFJO0lBQy9CLElBQUksQ0FBQ0EsTUFBTSxJQUFJOUIsT0FBQSxDQUFPOEIsTUFBTSxNQUFLLFFBQVEsRUFBRTtJQUMzQyxJQUFNRSxJQUFJLEdBQUdGLE1BQU0sQ0FBQ0csU0FBUztJQUM3QixJQUFJLEVBQUVELElBQUksSUFBSWhDLE9BQUEsQ0FBT2dDLElBQUksTUFBSyxRQUFRLElBQUksQ0FBQzFELEtBQUssQ0FBQ0MsT0FBTyxDQUFDeUQsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqRSxJQUFNRSxHQUFHLEdBQUdGLElBQStCO0lBQzNDLElBQUlGLE1BQU0sQ0FBQ1ksU0FBUyxLQUFLLGFBQWEsRUFBRTtNQUFBLElBQUFDLGFBQUE7TUFDdEMsSUFBTXBCLEdBQUcsSUFBQW9CLGFBQUEsR0FBR1QsR0FBRyxDQUFDQyxPQUFPLGNBQUFRLGFBQUEsY0FBQUEsYUFBQSxHQUFJVCxHQUFHLENBQUM1QyxFQUFFO01BQ2pDLElBQUlpQyxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ2YsSUFBTUMsQ0FBQyxHQUFHQyxRQUFRLENBQUNDLE1BQU0sQ0FBQ0gsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQ3hDLE1BQU0sQ0FBQzRDLEtBQUssQ0FBQ0gsQ0FBQyxDQUFDLEVBQUVILEdBQUcsQ0FBQ08sSUFBSSxDQUFDSixDQUFDLENBQUM7TUFDbkM7SUFDRjtJQUNBLElBQUlNLE1BQU0sQ0FBQ1ksU0FBUyxLQUFLLG9CQUFvQixFQUFFO01BQzdDLElBQU1FLElBQUksR0FBR1YsR0FBRyxDQUFDRSxRQUFRO01BQ3pCLElBQUk5RCxLQUFLLENBQUNDLE9BQU8sQ0FBQ3FFLElBQUksQ0FBQyxFQUFFO1FBQ3ZCQSxJQUFJLENBQUNmLE9BQU8sQ0FBQyxVQUFBZ0IsR0FBRyxFQUFJO1VBQ2xCLElBQU1yQixDQUFDLEdBQUdDLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDbUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1VBQ25DLElBQUksQ0FBQzlELE1BQU0sQ0FBQzRDLEtBQUssQ0FBQ0gsQ0FBQyxDQUFDLEVBQUVILEdBQUcsQ0FBQ08sSUFBSSxDQUFDSixDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDO01BQ0o7SUFDRjtFQUNGLENBQUMsQ0FBQztFQUNGLE9BQU9ILEdBQUc7QUFDWjtBQUVBLFNBQVN5Qix5Q0FBeUNBLENBQUMxQixjQUErQixFQUFpQjtFQUFBLElBQUEyQixhQUFBO0VBQ2pHLElBQU1DLFVBQVUsR0FBRzVCLGNBQWMsQ0FBQzZCLElBQUksQ0FBQyxVQUFBQyxDQUFDO0lBQUEsT0FBSSxDQUFDQSxDQUFDLENBQUNSLFNBQVMsSUFBSSxFQUFFLEVBQUVTLFdBQVcsQ0FBQyxDQUFDLEtBQUssWUFBWTtFQUFBLEVBQUM7RUFDL0YsSUFDRSxDQUFDSCxVQUFVLElBQ1gsQ0FBQ0EsVUFBVSxDQUFDZixTQUFTLElBQ3JCakMsT0FBQSxDQUFPZ0QsVUFBVSxDQUFDZixTQUFTLE1BQUssUUFBUSxJQUN4QzNELEtBQUssQ0FBQ0MsT0FBTyxDQUFDeUUsVUFBVSxDQUFDZixTQUFTLENBQUMsRUFDbkM7SUFDQSxPQUFPLElBQUk7RUFDYjtFQUNBLElBQU1DLEdBQUcsR0FBR2MsVUFBVSxDQUFDZixTQUFvQztFQUMzRCxJQUFNVixHQUFHLElBQUF3QixhQUFBLEdBQUdiLEdBQUcsQ0FBQ2tCLFFBQVEsY0FBQUwsYUFBQSxjQUFBQSxhQUFBLEdBQUliLEdBQUcsQ0FBQ21CLE9BQU87RUFDdkMsT0FBTzlCLEdBQUcsSUFBSSxJQUFJLEdBQUdHLE1BQU0sQ0FBQ0gsR0FBRyxDQUFDLEdBQUcsSUFBSTtBQUN6QztBQUVBLFNBQVMrQiwwQ0FBMENBLENBQUNsQyxjQUErQixFQUFFbUMsUUFBZ0IsRUFBaUI7RUFBQSxJQUFBQyxJQUFBLEVBQUFDLGNBQUE7RUFDcEgsSUFBTTNCLE1BQU0sR0FBR1YsY0FBYyxDQUFDNkIsSUFBSSxDQUFDLFVBQUFDLENBQUM7SUFBQSxPQUFJLENBQUNBLENBQUMsQ0FBQ1IsU0FBUyxJQUFJLEVBQUUsRUFBRVMsV0FBVyxDQUFDLENBQUMsS0FBS0ksUUFBUSxDQUFDSixXQUFXLENBQUMsQ0FBQztFQUFBLEVBQUM7RUFDckcsSUFBSSxDQUFDckIsTUFBTSxJQUFJLENBQUNBLE1BQU0sQ0FBQ0csU0FBUyxJQUFJakMsT0FBQSxDQUFPOEIsTUFBTSxDQUFDRyxTQUFTLE1BQUssUUFBUSxJQUFJM0QsS0FBSyxDQUFDQyxPQUFPLENBQUN1RCxNQUFNLENBQUNHLFNBQVMsQ0FBQyxFQUFFO0lBQzNHLE9BQU8sSUFBSTtFQUNiO0VBQ0EsSUFBTUMsR0FBRyxHQUFHSixNQUFNLENBQUNHLFNBQW9DO0VBQ3ZELElBQU1WLEdBQUcsSUFBQWlDLElBQUEsSUFBQUMsY0FBQSxHQUFHdkIsR0FBRyxDQUFDa0IsUUFBUSxjQUFBSyxjQUFBLGNBQUFBLGNBQUEsR0FBSXZCLEdBQUcsQ0FBQ21CLE9BQU8sY0FBQUcsSUFBQSxjQUFBQSxJQUFBLEdBQUl0QixHQUFHLENBQUM1QyxFQUFFO0VBQ2pELE9BQU9pQyxHQUFHLElBQUksSUFBSSxHQUFHRyxNQUFNLENBQUNILEdBQUcsQ0FBQyxHQUFHLElBQUk7QUFDekM7O0FBRUE7QUFDQSxTQUFTbUMsdUNBQXVDQSxDQUFDQyxJQUFZLEVBQVk7RUFDdkUsSUFBTUMsT0FBTyxHQUFHRCxJQUFJLENBQUNFLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztFQUNuRCxJQUFJRCxPQUFPLEVBQUU7SUFDWCxJQUFNcEMsQ0FBQyxHQUFHQyxRQUFRLENBQUNtQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2xDLE9BQU83RSxNQUFNLENBQUM0QyxLQUFLLENBQUNILENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDQSxDQUFDLENBQUM7RUFDbkM7RUFDQSxJQUFNc0MsSUFBSSxHQUFHSCxJQUFJLENBQUNFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztFQUMzQyxJQUFJQyxJQUFJLEVBQUU7SUFDUixJQUFNdEMsRUFBQyxHQUFHQyxRQUFRLENBQUNxQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQy9CLE9BQU8vRSxNQUFNLENBQUM0QyxLQUFLLENBQUNILEVBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDQSxFQUFDLENBQUM7RUFDbkM7RUFDQSxPQUFPLEVBQUU7QUFDWDtBQUVBLElBQU11QyxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxRQUFpQixFQUFLO0VBQ2hELElBQU1DLFdBQVcsR0FBR3hJLE1BQU0sQ0FBa0I7SUFDMUM2RCxFQUFFLEVBQUUwRSxRQUFRLENBQUMxRSxFQUFFLENBQUM0RSxRQUFRLENBQUMsQ0FBQztJQUMxQnpFLElBQUksRUFBRXVFLFFBQVEsQ0FBQ0csU0FBUztJQUN4QkMsTUFBTSxFQUFFSixRQUFRLENBQUNLO0VBQ25CLENBQUMsQ0FBQztFQUVGLElBQ0VKLFdBQVcsQ0FBQ0ssT0FBTyxDQUFDaEYsRUFBRSxLQUFLMEUsUUFBUSxDQUFDMUUsRUFBRSxDQUFDNEUsUUFBUSxDQUFDLENBQUMsSUFDakRELFdBQVcsQ0FBQ0ssT0FBTyxDQUFDN0UsSUFBSSxLQUFLdUUsUUFBUSxDQUFDRyxTQUFTLElBQy9DRixXQUFXLENBQUNLLE9BQU8sQ0FBQ0YsTUFBTSxLQUFLSixRQUFRLENBQUNLLE9BQU8sRUFDL0M7SUFDQUosV0FBVyxDQUFDSyxPQUFPLEdBQUc7TUFDcEJoRixFQUFFLEVBQUUwRSxRQUFRLENBQUMxRSxFQUFFLENBQUM0RSxRQUFRLENBQUMsQ0FBQztNQUMxQnpFLElBQUksRUFBRXVFLFFBQVEsQ0FBQ0csU0FBUztNQUN4QkMsTUFBTSxFQUFFSixRQUFRLENBQUNLO0lBQ25CLENBQUM7RUFDSDtFQUNBLE9BQU87SUFDTEosV0FBVyxFQUFFQSxXQUFXLENBQUNLO0VBQzNCLENBQUM7QUFDSCxDQUFDO0FBRUQsSUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUlDLElBQVksRUFBa0Q7RUFDbEYsSUFBSSxDQUFDQSxJQUFJLENBQUNyRSxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUU3QixJQUFBc0UsV0FBQSxHQUE4QkQsSUFBSSxDQUFDRSxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQUFDLFlBQUEsR0FBQUMsY0FBQSxDQUFBSCxXQUFBO0lBQXZDSSxTQUFTLEdBQUFGLFlBQUE7SUFBRUcsUUFBUSxHQUFBSCxZQUFBO0VBQzFCLElBQUksQ0FBQ0UsU0FBUyxJQUFJLENBQUNDLFFBQVEsRUFBRSxPQUFPLElBQUk7RUFFeEMsSUFBTUMsU0FBUyxHQUFHRixTQUFTLENBQUNHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM3RSxJQUFJLENBQUMsQ0FBQztFQUN6RCxJQUFNOEUsT0FBTyxHQUFHSCxRQUFRLENBQUNFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM3RSxJQUFJLENBQUMsQ0FBQztFQUVyRCxJQUFJO0lBQ0YsSUFBTStFLElBQUksR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNILE9BQU8sQ0FBQztJQUNoQyxPQUFPO01BQUVGLFNBQVMsRUFBVEEsU0FBUztNQUFFRyxJQUFJLEVBQUpBO0lBQUssQ0FBQztFQUM1QixDQUFDLENBQUMsT0FBT0csVUFBVSxFQUFFO0lBQ25CQyxPQUFPLENBQUNDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRUYsVUFBVSxFQUFFSixPQUFPLENBQUM7SUFDN0QsT0FBTyxJQUFJO0VBQ2I7QUFDRixDQUFDO0FBRUQsSUFBTU8sZ0JBQWdCO0VBQUEsSUFBQUMsS0FBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQUMsUUFDdkJDLFFBQWtCLEVBQ2xCQyxRQUFnQixFQUNoQkMsU0FnQkM7SUFBQSxJQUFBQyxjQUFBO0lBQUEsSUFBQUMsTUFBQSxFQUFBQyxPQUFBLEVBQUFDLE1BQUEsRUFBQUMsa0JBQUEsRUFBQUMsYUFBQSxFQUFBQyxpQkFBQSxFQUFBQyxvQkFBQSxFQUFBQyxjQUFBLEVBMENRQyxVQUFVLEVBQUFDLFlBQUEsRUFBQUMsa0JBQUEsRUFBQUMsSUFBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsQ0FBQTtJQUFBLE9BQUFyQixtQkFBQSxDQUFBc0IsSUFBQSxXQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7UUFBQTtVQUFWVixVQUFVLFlBQUFXLFlBQUM3QyxJQUFZLEVBQUU7WUFDaEMsSUFBTXZGLE1BQU0sR0FBR3NGLFlBQVksQ0FBQ0MsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQ3ZGLE1BQU0sRUFBRTtZQUViLElBQVE4RixTQUFTLEdBQVc5RixNQUFNLENBQTFCOEYsU0FBUztjQUFFRyxJQUFJLEdBQUtqRyxNQUFNLENBQWZpRyxJQUFJO1lBQ3ZCLElBQU1vQyxTQUFTLEdBQUdwQyxJQUErQjtZQUVqRCxJQUFJb0IsYUFBYSxJQUFJdkIsU0FBUyxLQUFLLE9BQU8sRUFBRTtZQUU1QzlHLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRThHLFNBQVMsRUFBQXhGLGFBQUEsQ0FBQUEsYUFBQTtjQUMxQ3dHLFFBQVEsRUFBUkEsUUFBUTtjQUNSd0IsaUJBQWlCLEVBQUVsQixrQkFBa0IsQ0FBQ21CO1lBQU0sR0FDeEN6QyxTQUFTLEtBQUssTUFBTSxHQUNwQjtjQUNFMEMsSUFBSSxFQUFFSCxTQUFTLENBQUNHLElBQUk7Y0FDcEIvRSxTQUFTLEVBQUU0RSxTQUFTLENBQUM1RSxTQUFTO2NBQzlCZ0YsY0FBYyxFQUFFLE9BQU9KLFNBQVMsQ0FBQ0ssT0FBTyxLQUFLLFFBQVEsR0FBR0wsU0FBUyxDQUFDSyxPQUFPLENBQUNDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUc3RztZQUMzRixDQUFDLEdBQ0QsQ0FBQyxDQUFDLEdBQ0ZnRSxTQUFTLEtBQUssbUJBQW1CLEdBQ2pDO2NBQ0U4QyxzQkFBc0IsRUFBRVAsU0FBUyxDQUFDUSx3QkFBd0IsS0FBSyxJQUFJO2NBQ25FQyxZQUFZLEVBQUV6SixLQUFLLENBQUNDLE9BQU8sQ0FBQytJLFNBQVMsQ0FBQ1UsZUFBZSxDQUFDLEdBQ2pEVixTQUFTLENBQUNVLGVBQWUsQ0FBbUMvSCxHQUFHLENBQUMsVUFBQWlELENBQUM7Z0JBQUEsT0FBSUEsQ0FBQyxDQUFDUixTQUFTO2NBQUEsRUFBQyxHQUNsRjNCO1lBQ04sQ0FBQyxHQUNELENBQUMsQ0FBQyxDQUNQLENBQUM7WUFFRixJQUFJZ0UsU0FBUyxLQUFLLFVBQVUsRUFBRTtjQUM1QmlCLFNBQVMsQ0FBQ2lDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hCLENBQUMsTUFBTSxJQUFJbEQsU0FBUyxLQUFLLE1BQU0sRUFBRTtjQUMvQixJQUFJdUMsU0FBUyxDQUFDSyxPQUFPLElBQUksT0FBT0wsU0FBUyxDQUFDSyxPQUFPLEtBQUssUUFBUSxFQUFFO2dCQUM5RCxJQUFNTyxXQUFtQyxHQUFHO2tCQUMxQ1QsSUFBSSxFQUFFLE9BQU9ILFNBQVMsQ0FBQ0csSUFBSSxLQUFLLFFBQVEsR0FBR0gsU0FBUyxDQUFDRyxJQUFJLEdBQUcsTUFBTTtrQkFDbEVFLE9BQU8sRUFBRUwsU0FBUyxDQUFDSyxPQUFPO2tCQUMxQmpGLFNBQVMsRUFBRSxPQUFPNEUsU0FBUyxDQUFDNUUsU0FBUyxLQUFLLFFBQVEsR0FBRzRFLFNBQVMsQ0FBQzVFLFNBQVMsR0FBRzNCLFNBQVM7a0JBQ3BGb0gsU0FBUyxFQUFFLE9BQU9iLFNBQVMsQ0FBQ2EsU0FBUyxLQUFLLFFBQVEsR0FBR2IsU0FBUyxDQUFDYSxTQUFTLEdBQUdwQztnQkFDN0UsQ0FBQztnQkFDREMsU0FBUyxDQUFDb0MsTUFBTSxDQUFDRixXQUFXLEVBQUVuQyxRQUFRLEVBQUVNLGtCQUFrQixDQUFDO2NBQzdEO1lBQ0YsQ0FBQyxNQUFNLElBQUl0QixTQUFTLEtBQUssT0FBTyxFQUFFO2NBQ2hDeUIsb0JBQW9CLENBQUMsQ0FBQztjQUN0QixJQUFNNkIsT0FBTyxHQUFHLE9BQU9mLFNBQVMsQ0FBQ2UsT0FBTyxLQUFLLFFBQVEsR0FBR2YsU0FBUyxDQUFDZSxPQUFPLEdBQUcsRUFBRTtjQUM5RWhDLGtCQUFrQixHQUFHOUksZ0JBQWdCLENBQUM4SSxrQkFBa0IsRUFBRWdDLE9BQU8sQ0FBQztjQUNsRTdLLG1CQUFtQixDQUFDd0gsT0FBTyxDQUFDdkgsNkJBQTZCLENBQUNELG1CQUFtQixDQUFDOEssV0FBVyxDQUFDLENBQUMsRUFBRWpDLGtCQUFrQixDQUFDLENBQUM7Y0FDakhMLFNBQVMsQ0FBQ3VDLE9BQU8sQ0FBQ2xDLGtCQUFrQixDQUFDO1lBQ3ZDLENBQUMsTUFBTSxJQUFJdEIsU0FBUyxLQUFLLFNBQVMsRUFBRTtjQUNsQ3lCLG9CQUFvQixDQUFDLENBQUM7Y0FDdEIsSUFBTTZCLFFBQU8sR0FBRyxPQUFPZixTQUFTLENBQUNlLE9BQU8sS0FBSyxRQUFRLEdBQUdmLFNBQVMsQ0FBQ2UsT0FBTyxHQUFHLEVBQUU7Y0FDOUVoQyxrQkFBa0IsR0FBRzlJLGdCQUFnQixDQUFDOEksa0JBQWtCLEVBQUVnQyxRQUFPLENBQUM7Y0FDbEU3SyxtQkFBbUIsQ0FBQ3dILE9BQU8sQ0FBQ3ZILDZCQUE2QixDQUFDRCxtQkFBbUIsQ0FBQzhLLFdBQVcsQ0FBQyxDQUFDLEVBQUVqQyxrQkFBa0IsQ0FBQyxDQUFDO2NBQ2pITCxTQUFTLENBQUN1QyxPQUFPLENBQUNsQyxrQkFBa0IsQ0FBQztjQUNyQyxJQUFJL0ksd0JBQXdCLENBQUNnSyxTQUFTLENBQUMsRUFBRTtnQkFDdkNiLGNBQWMsQ0FBQ2EsU0FBUyxFQUFFZSxRQUFPLElBQUloQyxrQkFBa0IsQ0FBQztjQUMxRDtZQUNGLENBQUMsTUFBTSxJQUFJdEIsU0FBUyxLQUFLLFVBQVUsRUFBRTtjQUNuQyxJQUFNeUQsWUFBWSxHQUFJbEIsU0FBUyxDQUFDZSxPQUFPLElBQWVoQyxrQkFBa0I7Y0FDeEVJLGNBQWMsQ0FBQ2EsU0FBUyxFQUFFa0IsWUFBWSxDQUFDO1lBQ3pDLENBQUMsTUFBTSxJQUFJekQsU0FBUyxLQUFLLG1CQUFtQixFQUFFO2NBQUEsSUFBQTBELHFCQUFBO2NBQzVDO2NBQ0E7Y0FDQSxJQUFNQyxnQkFBZ0IsR0FBR3BCLFNBQVMsQ0FBQ1Esd0JBQXdCLEtBQUssSUFBSTtjQUNwRWxLLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRTBKLFNBQVMsRUFBRTtnQkFDakV2QixRQUFRLEVBQVJBLFFBQVE7Z0JBQ1IyQyxnQkFBZ0IsRUFBaEJBLGdCQUFnQjtnQkFDaEJDLGdCQUFnQixFQUFFLENBQUNEO2NBQ3JCLENBQUMsQ0FBQztjQUNGLElBQUksQ0FBQ0EsZ0JBQWdCLEVBQUU7Z0JBQ3JCcEMsYUFBYSxHQUFHLElBQUk7Y0FDdEI7Y0FDQSxDQUFBbUMscUJBQUEsR0FBQXpDLFNBQVMsQ0FBQzRDLGtCQUFrQixjQUFBSCxxQkFBQSxlQUE1QkEscUJBQUEsQ0FBQUksSUFBQSxDQUFBN0MsU0FBUyxFQUFzQnNCLFNBQVMsRUFBRWpCLGtCQUFrQixFQUFFTixRQUFRLENBQUM7WUFDekUsQ0FBQyxNQUFNLElBQUloQixTQUFTLEtBQUssT0FBTyxFQUFFO2NBQ2hDdUIsYUFBYSxHQUFHLElBQUk7Y0FDcEJOLFNBQVMsQ0FBQzhDLE9BQU8sQ0FBQ3hCLFNBQVMsQ0FBQy9CLEtBQUssRUFBRVEsUUFBUSxDQUFDO1lBQzlDO1VBQ0YsQ0FBQztVQXBIS0csTUFBTSxJQUFBRCxjQUFBLEdBQUdILFFBQVEsQ0FBQ2lELElBQUksY0FBQTlDLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZStDLFNBQVMsQ0FBQyxDQUFDO1VBQUEsSUFDcEM5QyxNQUFNO1lBQUFnQixRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsTUFDSCxJQUFJNkIsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1FBQUE7VUFHbEM5QyxPQUFPLEdBQUcsSUFBSStDLFdBQVcsQ0FBQyxDQUFDO1VBQzdCOUMsTUFBTSxHQUFHLEVBQUU7VUFDWEMsa0JBQWtCLEdBQUcsRUFBRTtVQUN2QkMsYUFBYSxHQUFHLEtBQUs7VUFDckJDLGlCQUFpQixHQUFHLEtBQUs7VUFFdkJDLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUEsRUFBUztZQUFBLElBQUEyQyxxQkFBQTtZQUNqQyxJQUFJNUMsaUJBQWlCLEVBQUU7WUFDdkJBLGlCQUFpQixHQUFHLElBQUk7WUFDeEIsQ0FBQTRDLHFCQUFBLEdBQUFuRCxTQUFTLENBQUNvRCxnQkFBZ0IsY0FBQUQscUJBQUEsZUFBMUJBLHFCQUFBLENBQUFOLElBQUEsQ0FBQTdDLFNBQTZCLENBQUM7VUFDaEMsQ0FBQztVQUVLUyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUlhLFNBQWtDLEVBQUVrQixZQUFvQixFQUFLO1lBQUEsSUFBQWEsbUJBQUE7WUFDbkYsSUFBSS9DLGFBQWEsRUFBRTtZQUNuQkEsYUFBYSxHQUFHLElBQUk7WUFDcEJySSxjQUFjLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFO2NBQzdDOEgsUUFBUSxFQUFSQSxRQUFRO2NBQ1J1RCxrQkFBa0IsRUFBRWQsWUFBWSxDQUFDaEI7WUFDbkMsQ0FBQyxDQUFDO1lBQ0ZoSyxtQkFBbUIsQ0FBQ3dILE9BQU8sQ0FDekJ0SCxzQkFBc0IsQ0FBQ0QsNkJBQTZCLENBQUNELG1CQUFtQixDQUFDOEssV0FBVyxDQUFDLENBQUMsRUFBRUUsWUFBWSxDQUFDLENBQ3ZHLENBQUM7WUFDRCxJQUFNZSxPQUFPLEdBQUdqQyxTQUFTLENBQUNpQyxPQUFPLElBQUksSUFBSTtZQUN6QyxJQUFNQyxlQUFlLEdBQUlsQyxTQUFTLENBQUNtQyxpQkFBaUIsSUFBZSxFQUFFO1lBQ3JFLElBQU1qTCxXQUFXLEdBQUdGLEtBQUssQ0FBQ0MsT0FBTyxDQUFDK0ksU0FBUyxDQUFDOUksV0FBVyxDQUFDLEdBQUc4SSxTQUFTLENBQUM5SSxXQUFXLEdBQUcsSUFBSTtZQUN2RixJQUFNa0wsV0FBVyxHQUFHcEwsS0FBSyxDQUFDQyxPQUFPLENBQUMrSSxTQUFTLENBQUNxQyxhQUFhLENBQUMsR0FDckRyQyxTQUFTLENBQUNxQyxhQUFhLEdBQ3hCckwsS0FBSyxDQUFDQyxPQUFPLENBQUMrSSxTQUFTLENBQUNvQyxXQUFXLENBQUMsR0FDakNwQyxTQUFTLENBQUNvQyxXQUFXLEdBQ3RCLElBQUk7WUFDVixJQUFNRSxVQUFVLElBQUFQLG1CQUFBLEdBQUcvQixTQUFTLENBQUNsRSxRQUFRLGNBQUFpRyxtQkFBQSxjQUFBQSxtQkFBQSxHQUFJL0IsU0FBUyxDQUFDakUsT0FBTztZQUMxRCxJQUFNd0csZ0JBQWdCLEdBQUdELFVBQVUsSUFBSSxJQUFJLElBQUlsSSxNQUFNLENBQUNrSSxVQUFVLENBQUMsQ0FBQ3pKLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHdUIsTUFBTSxDQUFDa0ksVUFBVSxDQUFDLENBQUN6SixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUk7WUFDbEg2RixTQUFTLENBQUM4RCxVQUFVLENBQUN0QixZQUFZLEVBQUVlLE9BQU8sRUFBRUMsZUFBZSxFQUFFekQsUUFBUSxFQUFFdkgsV0FBVyxFQUFFa0wsV0FBVyxFQUFFRyxnQkFBZ0IsQ0FBQztVQUNwSCxDQUFDO1VBZ0ZHbEQsWUFBWSxHQUFHLEtBQUs7UUFBQTtVQUFBLElBRWhCQSxZQUFZO1lBQUFPLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQUYsUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FFWWxCLE1BQU0sQ0FBQzZELElBQUksQ0FBQyxDQUFDO1FBQUE7VUFBQW5ELGtCQUFBLEdBQUFNLFFBQUEsQ0FBQThDLElBQUE7VUFBbkNuRCxJQUFJLEdBQUFELGtCQUFBLENBQUpDLElBQUk7VUFBRUMsS0FBSyxHQUFBRixrQkFBQSxDQUFMRSxLQUFLO1VBQUEsS0FDZkQsSUFBSTtZQUFBSyxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQ05ULFlBQVksR0FBRyxJQUFJO1VBQUEsT0FBQU8sUUFBQSxDQUFBK0MsTUFBQTtRQUFBO1VBSXJCN0QsTUFBTSxJQUFJRCxPQUFPLENBQUMrRCxNQUFNLENBQUNwRCxLQUFLLEVBQUU7WUFBRXFELE1BQU0sRUFBRTtVQUFLLENBQUMsQ0FBQztVQUMzQ3BELEtBQUssR0FBR1gsTUFBTSxDQUFDMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQztVQUNsQzBCLE1BQU0sR0FBR1csS0FBSyxDQUFDcUQsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO1VBRTFCLEtBQVNwRCxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdELEtBQUssQ0FBQ1MsTUFBTSxFQUFFUixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hDTixVQUFVLENBQUNLLEtBQUssQ0FBQ0MsQ0FBQyxDQUFDLENBQUM7VUFDdEI7VUFBQ0UsUUFBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtRQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBbUQsSUFBQTtNQUFBO0lBQUEsR0FBQXhFLE9BQUE7RUFBQSxDQUVKO0VBQUEsZ0JBN0pLTCxnQkFBZ0JBLENBQUE4RSxFQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQTtJQUFBLE9BQUEvRSxLQUFBLENBQUFnRixLQUFBLE9BQUFDLFNBQUE7RUFBQTtBQUFBLEdBNkpyQjtBQUVELE9BQU8sSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBQyxLQUFBLEVBS0E7RUFBQSxJQUpqQkMsYUFBYSxHQUFBRCxLQUFBLENBQXJCRSxNQUFNO0lBQ05DLGtCQUFrQixHQUFBSCxLQUFBLENBQWxCRyxrQkFBa0I7SUFDbEJqQyxPQUFPLEdBQUE4QixLQUFBLENBQVA5QixPQUFPO0lBQUFrQyxZQUFBLEdBQUFKLEtBQUEsQ0FDUEssTUFBTTtJQUFOQSxNQUFNLEdBQUFELFlBQUEsY0FBRyxFQUFFLEdBQUFBLFlBQUE7RUFFWCxJQUFBRSxLQUFBLEdBQWNsUCxJQUFJLENBQUMsQ0FBQztJQUFac0csQ0FBQyxHQUFBNEksS0FBQSxDQUFENUksQ0FBQztFQUNULElBQU0wQixRQUFRLEdBQUcvSCxPQUFPLENBQUMsQ0FBQztFQUMxQixJQUFBa1AsaUJBQUEsR0FZSWpQLGdCQUFnQixDQUFDLENBQUM7SUFYcEJrUCxPQUFPLEdBQUFELGlCQUFBLENBQVBDLE9BQU87SUFDUEMsVUFBVSxHQUFBRixpQkFBQSxDQUFWRSxVQUFVO0lBQ1YxTCxNQUFNLEdBQUF3TCxpQkFBQSxDQUFOeEwsTUFBTTtJQUNOMkwsU0FBUyxHQUFBSCxpQkFBQSxDQUFURyxTQUFTO0lBQ1RDLElBQUksR0FBQUosaUJBQUEsQ0FBSkksSUFBSTtJQUNKQyxPQUFPLEdBQUFMLGlCQUFBLENBQVBLLE9BQU87SUFDUEMsS0FBSyxHQUFBTixpQkFBQSxDQUFMTSxLQUFLO0lBQ0xDLGlCQUFpQixHQUFBUCxpQkFBQSxDQUFqQk8saUJBQWlCO0lBQ2pCQyxrQkFBa0IsR0FBQVIsaUJBQUEsQ0FBbEJRLGtCQUFrQjtJQUNsQmhOLFlBQVksR0FBQXdNLGlCQUFBLENBQVp4TSxZQUFZO0lBQ1ppTixlQUFlLEdBQUFULGlCQUFBLENBQWZTLGVBQWU7RUFFakIsSUFBTUMsS0FBSyxHQUFHelAsUUFBUSxDQUFDLENBQUM7RUFDeEIsSUFBQTBQLFlBQUEsR0FBMEJwUCxXQUFXLENBQUMsQ0FBQztJQUEvQnFQLGFBQWEsR0FBQUQsWUFBQSxDQUFiQyxhQUFhO0VBQ3JCLElBQUFDLG1CQUFBLEdBQXdCakksa0JBQWtCLENBQUNDLFFBQVEsQ0FBQztJQUE1Q0MsV0FBVyxHQUFBK0gsbUJBQUEsQ0FBWC9ILFdBQVc7RUFDbkIsSUFBQWdJLGtCQUFBLEdBQThCdFAsaUJBQWlCLENBQUMsQ0FBQztJQUF6Q3VQLGlCQUFpQixHQUFBRCxrQkFBQSxDQUFqQkMsaUJBQWlCO0VBRXpCLElBQU1DLGdCQUFnQixHQUFHMVEsTUFBTSxDQUFDSSxNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQ3pDLElBQU11USxtQkFBbUIsR0FBRzNRLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDO0VBQ3ZELElBQU00USxhQUFhLEdBQUc1USxNQUFNLENBQUNvUCxhQUFhLElBQUloUCxNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQ3ZELElBQU15USxhQUFhLEdBQUc3USxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ25DLElBQU04USxXQUFXLEdBQUc5USxNQUFNLENBQWdCLEVBQUUsQ0FBQztFQUM3QztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxJQUFNK1EscUJBQXFCLEdBQUcvUSxNQUFNLENBRzFCLElBQUksQ0FBQztFQUNmO0VBQ0EsSUFBTWdSLHVCQUF1QixHQUFHaFIsTUFBTSxDQUE4QixJQUFJLENBQUM7RUFDekUsSUFBTWlSLGVBQWUsR0FBR2pSLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDckMsSUFBTWtSLFlBQVksR0FBR2xSLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDbEM7RUFDQSxJQUFNbVIseUJBQXlCLEdBQUduUixNQUFNLENBQWdCLElBQUksQ0FBQztFQUM3RDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsSUFBTW9SLHFCQUFxQixHQUFHcFIsTUFBTSxDQUFnQixJQUFJLENBQUM7RUFDekQ7QUFDRjtFQUNFLElBQU1xUixzQkFBc0IsR0FBR3JSLE1BQU0sQ0FBYTtJQUFBLE9BQU1zRixTQUFTO0VBQUEsRUFBQztFQUNsRSxJQUFNZ00sZ0JBQWdCLEdBQUd0UixNQUFNLENBQWE7SUFBQSxPQUFNc0YsU0FBUztFQUFBLEVBQUM7RUFDNUQsSUFBQWlNLFNBQUEsR0FBNENyUixRQUFRLENBQXlCLENBQUMsQ0FBQyxDQUFDO0lBQUFzUixVQUFBLEdBQUFySSxjQUFBLENBQUFvSSxTQUFBO0lBQXpFRSxjQUFjLEdBQUFELFVBQUE7SUFBRUUsaUJBQWlCLEdBQUFGLFVBQUE7RUFDeEMsSUFBQUcsVUFBQSxHQUFvRHpSLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQTBSLFVBQUEsR0FBQXpJLGNBQUEsQ0FBQXdJLFVBQUE7SUFBNURFLGtCQUFrQixHQUFBRCxVQUFBO0lBQUVFLHFCQUFxQixHQUFBRixVQUFBO0VBRWhELElBQU1HLG9CQUFvQixHQUFHL1IsTUFBTSxDQUFDaVEsaUJBQWlCLENBQUM7RUFDdEQsSUFBTStCLHFCQUFxQixHQUFHaFMsTUFBTSxDQUFDa1Esa0JBQWtCLENBQUM7RUFDeEQ7RUFDQSxJQUFNK0IsVUFBVSxHQUFHalMsTUFBTSxDQUFDO0lBQUVrRCxZQUFZLEVBQVpBLFlBQVk7SUFBRXlNLE9BQU8sRUFBUEEsT0FBTztJQUFFekwsTUFBTSxFQUFOQSxNQUFNO0lBQUU0TCxJQUFJLEVBQUpBO0VBQUssQ0FBQyxDQUFDO0VBQ2xFbUMsVUFBVSxDQUFDcEosT0FBTyxHQUFHO0lBQUUzRixZQUFZLEVBQVpBLFlBQVk7SUFBRXlNLE9BQU8sRUFBUEEsT0FBTztJQUFFekwsTUFBTSxFQUFOQSxNQUFNO0lBQUU0TCxJQUFJLEVBQUpBO0VBQUssQ0FBQztFQUU1RDdQLFNBQVMsQ0FBQyxZQUFNO0lBQ2Q4UixvQkFBb0IsQ0FBQ2xKLE9BQU8sR0FBR29ILGlCQUFpQjtJQUNoRCtCLHFCQUFxQixDQUFDbkosT0FBTyxHQUFHcUgsa0JBQWtCO0VBQ3BELENBQUMsRUFBRSxDQUFDRCxpQkFBaUIsRUFBRUMsa0JBQWtCLENBQUMsQ0FBQztFQUUzQyxJQUFBZ0MsZ0JBQUEsR0FDRTdSLGVBQWUsQ0FBQztNQUNkZ1AsTUFBTSxFQUFFRCxhQUFhLElBQUl3QixhQUFhLENBQUMvSCxPQUFPO01BQzlDTCxXQUFXLEVBQVhBLFdBQVc7TUFDWDhHLGtCQUFrQixFQUFsQkEsa0JBQWtCO01BQ2xCakMsT0FBTyxFQUFQQSxPQUFPO01BQ1BtQyxNQUFNLEVBQU5BO0lBQ0YsQ0FBQyxDQUFDO0lBUEkyQyxlQUFlLEdBQUFELGdCQUFBLENBQWZDLGVBQWU7SUFBRUMsUUFBUSxHQUFBRixnQkFBQSxDQUFSRSxRQUFRO0lBQUVDLHFCQUFxQixHQUFBSCxnQkFBQSxDQUFyQkcscUJBQXFCO0lBQUVDLFlBQVksR0FBQUosZ0JBQUEsQ0FBWkksWUFBWTtJQUFFQyxVQUFVLEdBQUFMLGdCQUFBLENBQVZLLFVBQVU7SUFBRUMsYUFBYSxHQUFBTixnQkFBQSxDQUFiTSxhQUFhO0lBQUVDLFlBQVksR0FBQVAsZ0JBQUEsQ0FBWk8sWUFBWTtFQVMvRzNCLFdBQVcsQ0FBQ2pJLE9BQU8sR0FBR3VKLFFBQVE7RUFFOUJuUyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU15UyxXQUFXLEdBQUcsSUFBSUMsV0FBVyxDQUFDLCtCQUErQixFQUFFO01BQ25FQyxNQUFNLEVBQUU7UUFBRVQsZUFBZSxFQUFmQTtNQUFnQjtJQUM1QixDQUFDLENBQUM7SUFDRlUsUUFBUSxDQUFDQyxhQUFhLENBQUNKLFdBQVcsQ0FBQztFQUNyQyxDQUFDLEVBQUUsQ0FBQ1AsZUFBZSxDQUFDLENBQUM7RUFFckJsUyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUltUCxhQUFhLElBQUlBLGFBQWEsS0FBS3dCLGFBQWEsQ0FBQy9ILE9BQU8sRUFBRTtNQUM1RDtNQUNBO01BQ0F3SSxzQkFBc0IsQ0FBQ3hJLE9BQU8sQ0FBQyxDQUFDOztNQUVoQztNQUNBK0csVUFBVSxDQUFDLElBQUksQ0FBQztNQUNoQkMsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRyxJQUFJLENBQUM7TUFDakJNLGVBQWUsQ0FBQyxJQUFJLENBQUM7TUFDckJKLE9BQU8sQ0FBQyxJQUFJLENBQUM7TUFFYmEsYUFBYSxDQUFDL0gsT0FBTyxHQUFHdUcsYUFBYTtNQUNyQ3NCLGdCQUFnQixDQUFDN0gsT0FBTyxHQUFHekksTUFBTSxDQUFDLENBQUM7TUFDbkN1USxtQkFBbUIsQ0FBQzlILE9BQU8sR0FBRyxJQUFJO01BQ2xDZ0ksYUFBYSxDQUFDaEksT0FBTyxHQUFHLEtBQUs7TUFDN0JvSSxlQUFlLENBQUNwSSxPQUFPLEdBQUcsS0FBSztNQUMvQnNJLHlCQUF5QixDQUFDdEksT0FBTyxHQUFHLElBQUk7TUFDeEN1SSxxQkFBcUIsQ0FBQ3ZJLE9BQU8sR0FBRyxJQUFJO01BQ3BDakgsY0FBYyxDQUFDbVIsS0FBSyxDQUFDLENBQUM7TUFFdEJULFlBQVksQ0FBQyxDQUFDO0lBQ2hCO0VBQ0YsQ0FBQyxFQUFFLENBQUNsRCxhQUFhLEVBQUVPLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVNLGVBQWUsRUFBRUosT0FBTyxFQUFFdUMsWUFBWSxDQUFDLENBQUM7RUFFM0YsSUFBTVUsaUJBQWlCLEdBQUdqVCxXQUFXLENBQ25DLFVBQUNrVCxZQUFxQixFQUFFQyxlQUF3QixFQUFLO0lBQUEsSUFBQUMscUJBQUEsRUFBQUMsc0JBQUE7SUFDbkQ5QixnQkFBZ0IsQ0FBQ3pJLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLElBQU13SyxhQUFhLGFBQUExTyxNQUFBLENBQWErTCxnQkFBZ0IsQ0FBQzdILE9BQU8sZUFBWTtJQUNwRWpILGNBQWMsQ0FBQ21SLEtBQUssQ0FBQyxDQUFDO0lBQ3RCNUIseUJBQXlCLENBQUN0SSxPQUFPLEdBQUcsSUFBSTtJQUN4Q3VJLHFCQUFxQixDQUFDdkksT0FBTyxHQUFHLElBQUk7SUFDcEMySixhQUFhLENBQUNhLGFBQWEsQ0FBQztJQUU1QixJQUFNQyxjQUFjLEdBQUdMLFlBQVksS0FBSywrREFBK0Q7SUFDdkcsSUFBTU0sZUFBZSxHQUNuQk4sWUFBWSxLQUFLLHVCQUF1QixLQUFJQyxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRWxPLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztJQUM3RixJQUFNa0gsT0FBTyxHQUFHb0gsY0FBYyxHQUMxQnpNLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxHQUMzQjBNLGVBQWUsR0FDYjFNLENBQUMsQ0FBQyx5QkFBeUIsRUFBRTtNQUFFMk0sSUFBSSxHQUFBTCxxQkFBQSxHQUFFRCxlQUFlLGFBQWZBLGVBQWUsZ0JBQUFFLHNCQUFBLEdBQWZGLGVBQWUsQ0FBRTlLLEtBQUssQ0FBQyxjQUFjLENBQUMsY0FBQWdMLHNCQUFBLHVCQUF0Q0Esc0JBQUEsQ0FBeUMsQ0FBQyxDQUFDLGNBQUFELHFCQUFBLGNBQUFBLHFCQUFBLEdBQUk7SUFBRyxDQUFDLENBQUMsR0FDekZ0TSxDQUFDLENBQUMsWUFBWSxDQUFDO0lBRXJCMEwsVUFBVSxDQUFBek8sYUFBQSxDQUFBQSxhQUFBO01BQ1JELEVBQUUsWUFBQWMsTUFBQSxDQUFZK0wsZ0JBQWdCLENBQUM3SCxPQUFPLENBQUU7TUFDeENxRCxPQUFPLEVBQVBBLE9BQU87TUFDUHVILE9BQU8sRUFBRTtJQUFJLEdBRVQsQ0FBQ0gsY0FBYyxJQUFJLENBQUNDLGVBQWUsR0FBRztNQUFFdEYsV0FBVyxFQUFFLENBQUNwSCxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUNqRjZNLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsQ0FBQztNQUNoQkMsSUFBSSxFQUFFO1FBQUUvUCxFQUFFLEVBQUUsV0FBVztRQUFFRyxJQUFJLEVBQUU7TUFBWSxDQUFDO01BQzVDeUIsSUFBSSxFQUFFM0UsZUFBZSxDQUFDK1M7SUFBUyxFQUNoQyxDQUFDO0lBQ0Y1QyxlQUFlLENBQUNwSSxPQUFPLEdBQUcsS0FBSztFQUNqQyxDQUFDLEVBQ0QsQ0FBQzBKLFVBQVUsRUFBRUMsYUFBYSxFQUFFM0wsQ0FBQyxDQUMvQixDQUFDO0VBRUQsSUFBTWlOLGtCQUFrQixHQUFHL1QsV0FBVyxDQUFDLFVBQUM2TSxPQUFlLEVBQUVtSCxRQUFpQixFQUFFQyxnQkFBd0IsRUFBSztJQUN2RyxJQUFJNUMscUJBQXFCLENBQUN2SSxPQUFPLElBQUksSUFBSSxJQUFJdUkscUJBQXFCLENBQUN2SSxPQUFPLEtBQUsrSCxhQUFhLENBQUMvSCxPQUFPLEVBQUU7TUFDcEc7SUFDRjtJQUVBLElBQU13SyxhQUFhLGFBQUExTyxNQUFBLENBQWErTCxnQkFBZ0IsQ0FBQzdILE9BQU8sZUFBWTtJQUNwRSxJQUFJc0kseUJBQXlCLENBQUN0SSxPQUFPLEtBQUt3SyxhQUFhLEVBQUU7TUFDdkRsQyx5QkFBeUIsQ0FBQ3RJLE9BQU8sR0FBR3dLLGFBQWE7TUFDakRqQyxxQkFBcUIsQ0FBQ3ZJLE9BQU8sR0FBRytILGFBQWEsQ0FBQy9ILE9BQU87SUFDdkQ7SUFFQWpILGNBQWMsQ0FBQ3FTLE9BQU8sQ0FBQ1osYUFBYSxFQUFFekcsT0FBTyxDQUFDO0VBQ2hELENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNc0gsa0JBQWtCLEdBQUduVSxXQUFXO0lBQUEsSUFBQW9VLEtBQUEsR0FBQWxLLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FDcEMsU0FBQWlLLFNBQ0V4SCxPQUFlLEVBQ2ZrQixPQUFZLEVBQ1pDLGVBQXVCLEVBQ3ZCM0osY0FBNkIsRUFDN0I2SixXQUE2QixFQUM3QkcsZ0JBQWdDO01BQUEsSUFBQWlHLHFCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLG9CQUFBLEVBQUFDLGtCQUFBO01BQUEsSUFBQW5CLGFBQUEsRUFBQW9CLHFCQUFBLEVBQUExUixXQUFBLEVBQUEyUixZQUFBLEVBQUFDLE9BQUEsRUFBQUMsWUFBQSxFQUFBQyxlQUFBLEVBQUFDLDRCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLGVBQUEsRUFBQUMsaUJBQUEsRUFBQXRQLGNBQUEsRUFBQXVQLGVBQUEsRUFBQUMsV0FBQSxFQUFBQyxhQUFBLEVBQUFDLHNCQUFBLEVBQUFDLCtCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLGlCQUFBLEVBQUFDLG9CQUFBLEVBQUFDLGlCQUFBLEVBQUFDLFVBQUEsRUFBQUMsUUFBQSxFQUFBQyxlQUFBLEVBQUFDLGVBQUEsRUFBQUMseUJBQUEsRUFBQUMsdUJBQUEsRUFBQUMsbUJBQUEsRUFBQUMsbUJBQUEsRUFBQUMsT0FBQSxFQUFBQyxHQUFBLEVBQUFDLFVBQUEsRUFBQUMsa0JBQUEsRUFBQUMsbUJBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsU0FBQSxFQUFBQyxjQUFBLEVBQUFDLGdCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLGVBQUEsRUFBQUMsY0FBQSxFQUFBQyxpQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxlQUFBLEVBQUFDLDRCQUFBLEVBQUFDLEtBQUEsRUFBQUMscUJBQUEsRUFBQUMsa0JBQUEsRUFBQUMsZUFBQSxFQUFBQyxrQkFBQSxFQUFBQyxxQkFBQSxFQUFBckYsV0FBQTtNQUFBLE9BQUF4SSxtQkFBQSxDQUFBc0IsSUFBQSxXQUFBd00sU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUF0TSxJQUFBLEdBQUFzTSxTQUFBLENBQUFyTSxJQUFBO1VBQUE7WUFFMUIwSCxhQUFhLGFBQUExTyxNQUFBLENBQWErTCxnQkFBZ0IsQ0FBQzdILE9BQU87WUFDbEQ0TCxxQkFBcUIsR0FBRzNELFdBQVcsQ0FBQ2pJLE9BQU8sQ0FBQ3hFLE1BQU0sQ0FBQyxVQUFBNFQsQ0FBQztjQUFBLE9BQUlBLENBQUMsQ0FBQ3BVLEVBQUUsS0FBS3dQLGFBQWE7WUFBQSxFQUFDLENBQUM2RSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUZ0VyxjQUFjLENBQUNtUixLQUFLLENBQUMsQ0FBQztZQUN0QjVCLHlCQUF5QixDQUFDdEksT0FBTyxHQUFHLElBQUk7WUFDeEN1SSxxQkFBcUIsQ0FBQ3ZJLE9BQU8sR0FBRyxJQUFJO1lBQ3BDbUksdUJBQXVCLENBQUNuSSxPQUFPLEdBQUcsSUFBSTtZQUN0QzlHLG1CQUFtQixDQUFDZ1IsS0FBSyxDQUFDLENBQUM7WUFDM0IxUSxjQUFjLENBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFFO2NBQ2xEOFYsYUFBYSxFQUFFdkwsT0FBTyxDQUFDYixNQUFNO2NBQzdCK0ksNEJBQTRCLEVBQUUsQ0FBQUwscUJBQXFCLGFBQXJCQSxxQkFBcUIsdUJBQXJCQSxxQkFBcUIsQ0FBRTJELFFBQVEsS0FBSSxJQUFJO2NBQ3JFQyxzQkFBc0IsRUFBRTVELHFCQUFxQixhQUFyQkEscUJBQXFCLHVCQUFyQkEscUJBQXFCLENBQUU2RDtZQUNqRCxDQUFDLENBQUM7WUFDRjlGLGFBQWEsQ0FBQ2EsYUFBYSxDQUFDO1lBQ3RCdFEsV0FBVyxHQUFHb0IsNkJBQTZCLENBQUNDLGNBQWMsQ0FBQyxFQUVqRTtZQUNNc1EsWUFBWSxHQUFHLElBQUk2RCxNQUFNLENBQUNwWCxzQkFBc0IsRUFBRSxHQUFHLENBQUM7WUFDdER3VCxPQUFPLEdBQUE2RCxrQkFBQSxDQUFPNUwsT0FBTyxDQUFDNkwsUUFBUSxDQUFDL0QsWUFBWSxDQUFDO1lBRTlDRSxZQUFZLEdBQUdoSSxPQUFPO1lBQ3BCaUksZUFBZSxHQUFHL0QsV0FBVyxDQUFDakksT0FBTyxDQUFDeEUsTUFBTSxDQUFDLFVBQUE0VCxDQUFDO2NBQUEsT0FBSUEsQ0FBQyxDQUFDcFUsRUFBRSxLQUFLd1AsYUFBYTtZQUFBLEVBQUMsQ0FBQzZFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRnBELDRCQUE0QixHQUFHLENBQUFELGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFdUQsUUFBUSxLQUFJLElBQUk7WUFDaEVyRCxtQkFBbUIsR0FBRyxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLENBQUM7WUFDekVDLGVBQWUsR0FBRyxDQUN0QixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixtQkFBbUIsQ0FDcEI7WUFDS0MsaUJBQWlCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLENBQUM7WUFDekR0UCxjQUFjLEdBQUcsQ0FBQWtQLGVBQWUsYUFBZkEsZUFBZSxnQkFBQVIscUJBQUEsR0FBZlEsZUFBZSxDQUFFdUQsUUFBUSxjQUFBL0QscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQjlILGVBQWUsS0FBSSxFQUFFO1lBQ2pFMkksZUFBZSxHQUNuQkosNEJBQTRCLElBQzVCblAsY0FBYyxDQUFDK1MsSUFBSSxDQUFDLFVBQUNyUyxNQUFXO2NBQUEsT0FBSzBPLG1CQUFtQixDQUFDL1AsUUFBUSxDQUFDcUIsTUFBTSxDQUFDWSxTQUFTLENBQUM7WUFBQSxFQUFDO1lBQ2hGa08sV0FBVyxHQUNmTCw0QkFBNEIsSUFBSW5QLGNBQWMsQ0FBQytTLElBQUksQ0FBQyxVQUFDclMsTUFBVztjQUFBLE9BQUsyTyxlQUFlLENBQUNoUSxRQUFRLENBQUNxQixNQUFNLENBQUNZLFNBQVMsQ0FBQztZQUFBLEVBQUM7WUFDNUdtTyxhQUFhLEdBQ2pCTiw0QkFBNEIsSUFDNUJuUCxjQUFjLENBQUMrUyxJQUFJLENBQUMsVUFBQ3JTLE1BQVc7Y0FBQSxPQUFLNE8saUJBQWlCLENBQUNqUSxRQUFRLENBQUNxQixNQUFNLENBQUNZLFNBQVMsQ0FBQztZQUFBLEVBQUM7WUFDOUVvTyxzQkFBc0IsR0FDMUJQLDRCQUE0QixJQUM1QixDQUFBRCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRXlELGNBQWMsTUFBSyxVQUFVLElBQzlDM1MsY0FBYyxDQUFDK1MsSUFBSSxDQUFDLFVBQUNyUyxNQUFXO2NBQUEsT0FBS0EsTUFBTSxDQUFDWSxTQUFTLEtBQUssY0FBYztZQUFBLEVBQUM7WUFDckVxTywrQkFBK0IsR0FDbkNSLDRCQUE0QixJQUM1QixDQUFBRCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRXlELGNBQWMsTUFBSyxVQUFVLElBQzlDM1MsY0FBYyxDQUFDK1MsSUFBSSxDQUFDLFVBQUNyUyxNQUFXO2NBQUEsT0FBSyxDQUFDQSxNQUFNLENBQUNZLFNBQVMsSUFBSSxFQUFFLEVBQUVTLFdBQVcsQ0FBQyxDQUFDLEtBQUssd0JBQXdCO1lBQUEsRUFBQztZQUUzRyxJQUFJMk4sc0JBQXNCLElBQUlzRCxNQUFNLENBQUNDLHdDQUF3QyxJQUFJeEssZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsZUFBaEJBLGdCQUFnQixDQUFFMUosSUFBSSxDQUFDLENBQUMsRUFBRTtjQUN6RzZRLG1CQUFtQixHQUFHO2dCQUFFM04sT0FBTyxFQUFFd0csZ0JBQWdCLENBQUMxSixJQUFJLENBQUM7Y0FBRSxDQUFDO1lBQzVELENBQUMsTUFBTSxJQUNMNFEsK0JBQStCLElBQy9CcUQsTUFBTSxDQUFDQyx3Q0FBd0MsS0FDOUN4SyxnQkFBZ0IsYUFBaEJBLGdCQUFnQixlQUFoQkEsZ0JBQWdCLENBQUUxSixJQUFJLENBQUMsQ0FBQyxJQUN2Qm1ELDBDQUEwQyxDQUFDbEMsY0FBYyxFQUFFLHdCQUF3QixDQUFDLENBQUMsRUFDdkY7Y0FDTTZQLGlCQUFpQixHQUNyQixDQUFBcEgsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRTFKLElBQUksQ0FBQyxDQUFDLEtBQ3hCbUQsMENBQTBDLENBQUNsQyxjQUFjLEVBQUUsd0JBQXdCLENBQUM7Y0FDdEY0UCxtQkFBbUIsR0FBRztnQkFDcEIzTixPQUFPLEVBQUU0TjtjQUNYLENBQUM7WUFDSDtZQUVBLElBQUlILHNCQUFzQixFQUFFO2NBQzFCakYsS0FBSyxDQUFDMVAsTUFBTSxDQUFDbVksZ0JBQWdCLEVBQUEvVSxhQUFBO2dCQUMzQmdWLFVBQVUsRUFBRXRYLHlCQUF5QixDQUFDd08sS0FBSyxDQUFDO2dCQUM1QytJLFdBQVcsRUFBRXhYLHVCQUF1QixDQUFDb0UsY0FBYyxDQUFDO2dCQUNwRHFULFFBQVEsRUFBRSxRQUFRO2dCQUNsQkMsTUFBTSxFQUFFO2NBQWMsR0FDbEI3SyxnQkFBZ0IsYUFBaEJBLGdCQUFnQixlQUFoQkEsZ0JBQWdCLENBQUUxSixJQUFJLENBQUMsQ0FBQyxHQUFHO2dCQUFFd1UsZ0JBQWdCLEVBQUU5SyxnQkFBZ0IsQ0FBQzFKLElBQUksQ0FBQztjQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDbEYsQ0FBQztZQUNKO1lBRU0rUSxvQkFBb0IsR0FDeEJYLDRCQUE0QixJQUM1QixDQUFBRCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRXlELGNBQWMsTUFBSyxVQUFVLElBQzlDM1MsY0FBYyxDQUFDK1MsSUFBSSxDQUFDLFVBQUNyUyxNQUFXO2NBQUEsT0FBSyxDQUFDQSxNQUFNLENBQUNZLFNBQVMsSUFBSSxFQUFFLEVBQUVTLFdBQVcsQ0FBQyxDQUFDLEtBQUssWUFBWTtZQUFBLEVBQUM7WUFHL0YsSUFBSStOLG9CQUFvQixFQUFFO2NBQ2xCRSxVQUFVLEdBQUd2SCxnQkFBZ0IsYUFBaEJBLGdCQUFnQix1QkFBaEJBLGdCQUFnQixDQUFFMUosSUFBSSxDQUFDLENBQUM7Y0FDckNrUixRQUFRLEdBQUd2Tyx5Q0FBeUMsQ0FBQzFCLGNBQWMsQ0FBQztjQUNwRWtRLGVBQWUsR0FBR0YsVUFBVSxJQUFJQyxRQUFRO2NBQzlDLElBQUlDLGVBQWUsRUFBRTtnQkFDbkJILGlCQUFpQixHQUFHO2tCQUFFOU4sT0FBTyxFQUFFaU87Z0JBQWdCLENBQUM7Y0FDbEQ7WUFDRjtZQUVNQyxlQUFlLEdBQUduQixPQUFPLENBQUNuUSxHQUFHLENBQUMsVUFBQTRELEtBQUs7Y0FBQSxPQUFJcEMsUUFBUSxDQUFDb0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUFBLEVBQUM7WUFDOUQyTix5QkFBeUIsR0FBRy9PLHNDQUFzQyxDQUFDckIsY0FBYyxDQUFDO1lBQ2xGcVEsdUJBQXVCLEdBQzNCWixhQUFhLElBQUlVLGVBQWUsQ0FBQy9KLE1BQU0sS0FBSyxDQUFDLElBQUlnSyx5QkFBeUIsQ0FBQ2hLLE1BQU0sS0FBSyxDQUFDLEdBQ25GOUQsdUNBQXVDLENBQUMyRSxPQUFPLENBQUMsR0FDaEQsRUFBRTtZQUNGcUosbUJBQW1CLEdBQ3ZCSCxlQUFlLENBQUMvSixNQUFNLEdBQUcsQ0FBQyxHQUN0QitKLGVBQWUsR0FDZkMseUJBQXlCLENBQUNoSyxNQUFNLEdBQUcsQ0FBQyxHQUNsQ2dLLHlCQUF5QixHQUN6QkMsdUJBQXVCO1lBRXpCRSxtQkFBbUIsR0FDdkJwQiw0QkFBNEIsS0FDM0JJLGVBQWUsSUFBSUMsV0FBVyxJQUFJQyxhQUFhLENBQUMsSUFDakRhLG1CQUFtQixDQUFDbEssTUFBTSxHQUFHLENBQUM7WUFBQSxLQUU1Qm1LLG1CQUFtQjtjQUFBOEIsU0FBQSxDQUFBck0sSUFBQTtjQUFBO1lBQUE7WUFDZndLLE9BQU8sR0FBR0YsbUJBQW1CO1lBQUEsTUFDL0J0QixPQUFPLENBQUM1SSxNQUFNLEdBQUcsQ0FBQztjQUFBaU0sU0FBQSxDQUFBck0sSUFBQTtjQUFBO1lBQUE7WUFBQXFNLFNBQUEsQ0FBQXJNLElBQUE7WUFBQSxPQUNGOEUsaUJBQWlCLENBQUMwRixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQTtZQUF6Q0MsR0FBRyxHQUFBNEIsU0FBQSxDQUFBekosSUFBQTtZQUNIOEgsVUFBVSxHQUFHRCxHQUFHLE9BQUF6UixNQUFBLENBQU95UixHQUFHLElBQUssU0FBUztZQUM5Q3hCLFlBQVksR0FBR2hJLE9BQU8sQ0FBQ3JELE9BQU8sQ0FBQ21MLFlBQVksRUFBRSxVQUFBeUUsR0FBRztjQUFBLE9BQzlDQSxHQUFHLENBQUM1UCxPQUFPLENBQUMseURBQXlELEVBQUU4TSxVQUFVLENBQUM7WUFBQSxDQUNwRixDQUFDO1VBQUE7WUFHR0Msa0JBQWtCLEdBQUd4RixXQUFXLENBQUNqSSxPQUFPLENBQUN4RSxNQUFNLENBQUMsVUFBQStVLEdBQUc7Y0FBQSxPQUFJQSxHQUFHLENBQUMvVixTQUFTO1lBQUEsRUFBQyxDQUFDNlUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFM0IsbUJBQW1CLEdBQUcsQ0FBQTVHLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFOUwsRUFBRSxNQUFJeVMsa0JBQWtCLGFBQWxCQSxrQkFBa0IsdUJBQWxCQSxrQkFBa0IsQ0FBRWpULFNBQVM7WUFDbEVtVCxnQkFBZ0IsR0FBR0QsbUJBQW1CLEdBQUd2USxRQUFRLENBQUNDLE1BQU0sQ0FBQ3NRLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSTtZQUN6RkUsU0FBUyxHQUFHa0MsTUFBTSxDQUFDVSxRQUFRLENBQUNDLFFBQVEsQ0FBQ2xSLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztZQUNsRXNPLGNBQWMsR0FBR0QsU0FBUyxHQUFHelEsUUFBUSxDQUFDeVEsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUk7WUFDOURFLGdCQUFnQixHQUFHSCxnQkFBZ0IsSUFBSUUsY0FBYyxJQUFJRixnQkFBZ0IsS0FBS0UsY0FBYztZQUVsRyxJQUFJQyxnQkFBZ0IsRUFBRTtjQUNwQixJQUFJekIsZUFBZSxFQUFFO2dCQUNuQixDQUFBMEIscUJBQUEsR0FBQStCLE1BQU0sQ0FBQ1ksbUJBQW1CLGNBQUEzQyxxQkFBQSxnQkFBQUMsc0JBQUEsR0FBMUJELHFCQUFBLENBQTRCNEMsMEJBQTBCLGNBQUEzQyxzQkFBQSxlQUF0REEsc0JBQUEsQ0FBQXpKLElBQUEsQ0FBQXdKLHFCQUFBLEVBQXlEVCxPQUFPLENBQUM7Y0FDbkUsQ0FBQyxNQUFNLElBQUloQixXQUFXLEVBQUU7Z0JBQ3RCLENBQUEyQixzQkFBQSxHQUFBNkIsTUFBTSxDQUFDWSxtQkFBbUIsY0FBQXpDLHNCQUFBLGdCQUFBQyxzQkFBQSxHQUExQkQsc0JBQUEsQ0FBNEIyQywyQkFBMkIsY0FBQTFDLHNCQUFBLGVBQXZEQSxzQkFBQSxDQUFBM0osSUFBQSxDQUFBMEosc0JBQUEsRUFBMERYLE9BQU8sQ0FBQztjQUNwRSxDQUFDLE1BQU0sSUFBSWYsYUFBYSxFQUFFO2dCQUN4QixDQUFBNEIsc0JBQUEsR0FBQTJCLE1BQU0sQ0FBQ1ksbUJBQW1CLGNBQUF2QyxzQkFBQSxnQkFBQUMsc0JBQUEsR0FBMUJELHNCQUFBLENBQTRCMEMsK0JBQStCLGNBQUF6QyxzQkFBQSxlQUEzREEsc0JBQUEsQ0FBQTdKLElBQUEsQ0FBQTRKLHNCQUFBLEVBQThEYixPQUFPLENBQUM7Y0FDeEU7WUFDRjtVQUFDO1lBR0g7WUFDQTtZQUNBO1lBQ0E7WUFDTWUsZUFBZSxJQUFBNUMsaUJBQUEsR0FBR3FFLE1BQU0sQ0FBQ2dCLFNBQVMsY0FBQXJGLGlCQUFBLHVCQUFoQkEsaUJBQUEsQ0FBa0JzRixNQUFNO1lBQzFDekMsY0FBYyxHQUFHcEcscUJBQXFCLENBQUNsSSxPQUFPO1lBQ3BEa0kscUJBQXFCLENBQUNsSSxPQUFPLEdBQUcsSUFBSSxFQUFDO1lBQy9CdU8saUJBQWlCLEdBQUcsQ0FBQyxDQUFDRCxjQUFjLElBQUluQyxlQUFlLENBQUNoUSxRQUFRLENBQUNtUyxjQUFjLENBQUNyUCxRQUFRLENBQUM7WUFDekZ1UCxtQkFBbUIsR0FBRyxDQUFDLENBQUNGLGNBQWMsSUFBSWxDLGlCQUFpQixDQUFDalEsUUFBUSxDQUFDbVMsY0FBYyxDQUFDclAsUUFBUSxDQUFDLEVBRW5HO1lBQ013UCxzQkFBc0IsR0FBRzNSLGNBQWMsQ0FDMUNuQixHQUFHLENBQUMsVUFBQzZCLE1BQXFCO2NBQUEsT0FBS0EsTUFBTSxDQUFDWSxTQUFTO1lBQUEsRUFBQyxDQUNoRDVDLE1BQU0sQ0FBQyxVQUFDeUQsUUFBUTtjQUFBLE9BQXlCekcsaUJBQWlCLENBQUN5RyxRQUFRLENBQUM7WUFBQSxFQUFDO1lBQ2xFeVAsc0JBQXNCLEdBQzFCekMsNEJBQTRCLElBQzVCLENBQUFELGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFeUQsY0FBYyxNQUFLLFVBQVUsSUFDOUNoQixzQkFBc0IsQ0FBQ3ZMLE1BQU0sR0FBRyxDQUFDO1lBQzdCeUwsZUFBZSxHQUFHTCxjQUFjLGFBQWRBLGNBQWMsdUJBQWRBLGNBQWMsQ0FBRXJQLFFBQVE7WUFDMUMyUCw0QkFBNEIsR0FBR3BXLGlCQUFpQixDQUFDbVcsZUFBZSxDQUFDO1lBRXZFLElBQUlELHNCQUFzQixJQUFJRSw0QkFBNEIsRUFBRTtjQUNwREMsS0FBSyxHQUFHSCxzQkFBc0IsR0FBR0Qsc0JBQXNCLEdBQUdFLGVBQWUsR0FBRyxDQUFDQSxlQUFlLENBQUMsR0FBRyxFQUFFO2NBQ3hHcFcsd0JBQXdCLENBQUM7Z0JBQ3ZCeVksTUFBTSxFQUFFLE1BQU07Z0JBQ2RuQyxLQUFLLEVBQUxBLEtBQUs7Z0JBQ0xvQyxTQUFTLEVBQUUvTDtjQUNiLENBQUMsQ0FBQztZQUNKO1lBRUEsSUFBSW1KLGVBQWUsS0FBSy9CLFdBQVcsSUFBSUMsYUFBYSxJQUFJZ0MsaUJBQWlCLElBQUlDLG1CQUFtQixDQUFDLEVBQUU7Y0FDM0ZPLGtCQUF3QyxHQUFHVCxjQUFjLEdBQzFEO2dCQUFFbFEsU0FBUyxFQUFFa1EsY0FBYyxDQUFDclAsUUFBUTtnQkFBRXRCLFNBQVMsR0FBQW1SLHFCQUFBLEdBQUVSLGNBQWMsQ0FBQzRDLFFBQVEsY0FBQXBDLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksQ0FBQztjQUFFLENBQUMsR0FDakYsSUFBSTtjQUNGRSxlQUFlLEdBQUcsR0FBQWxULE1BQUEsQ0FBQTZULGtCQUFBLENBQ25COVMsb0NBQW9DLENBQUNDLGNBQWMsQ0FBQyxHQUFBNlMsa0JBQUEsQ0FDcEQxQyxlQUFlLEdBQUEwQyxrQkFBQSxDQUNmekMseUJBQXlCLEdBQUF5QyxrQkFBQSxDQUN4Qlosa0JBQWtCLEdBQUdsUyxvQ0FBb0MsQ0FBQyxDQUFDa1Msa0JBQWtCLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FDeEZwVCxHQUFHLENBQUN5QixNQUFNLENBQUM7Y0FDYixJQUFJNFIsZUFBZSxDQUFDN1MsUUFBUSxDQUFDaUIsTUFBTSxDQUFDaVIsZUFBZSxDQUFDLENBQUMsRUFBRTtnQkFDckQsQ0FBQVksa0JBQUEsR0FBQWEsTUFBTSxDQUFDZ0IsU0FBUyxjQUFBN0Isa0JBQUEsZ0JBQUFDLHFCQUFBLEdBQWhCRCxrQkFBQSxDQUFrQmtDLFdBQVcsY0FBQWpDLHFCQUFBLGVBQTdCQSxxQkFBQSxDQUFBM0ssSUFBQSxDQUFBMEssa0JBQWdDLENBQUM7Y0FDbkM7WUFDRjtZQUVBdkYsVUFBVSxDQUFBek8sYUFBQSxDQUFBQSxhQUFBO2NBQ1JELEVBQUUsWUFBQWMsTUFBQSxDQUFZb0osZUFBZSxDQUFFO2NBQy9CN0IsT0FBTyxFQUFFMEksWUFBWTtjQUNyQmxCLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsQ0FBQztjQUNoQkMsSUFBSSxFQUFFO2dCQUFFL1AsRUFBRSxFQUFFLFdBQVc7Z0JBQUVHLElBQUksRUFBRTtjQUFZLENBQUM7Y0FDNUN5QixJQUFJLEVBQUUzRSxlQUFlLENBQUMrUyxTQUFTO2NBQy9CL0YsT0FBTyxFQUFQQTtZQUFPLEdBQ0gvSyxXQUFXLENBQUNnSixNQUFNLEdBQUcsQ0FBQyxHQUFHO2NBQUVoSixXQUFXLEVBQVhBO1lBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztjQUNqRGdMLGVBQWUsRUFBZkEsZUFBZTtjQUNmRSxXQUFXLEVBQUVBLFdBQVcsSUFBSTtZQUFFLEdBQzFCc0gsbUJBQW1CLEdBQUc7Y0FBRUEsbUJBQW1CLEVBQW5CQTtZQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3ZELENBQUM7WUFFRixLQUFBaEIsb0JBQUEsR0FBSWdCLG1CQUFtQixjQUFBaEIsb0JBQUEsZUFBbkJBLG9CQUFBLENBQXFCM00sT0FBTyxFQUFFO2NBQ2hDdEcsZ0JBQWdCLENBQUNpVSxtQkFBbUIsQ0FBQzNOLE9BQU8sQ0FBQyxDQUMxQ3FTLElBQUksQ0FBQyxVQUFBQyxTQUFTLEVBQUk7Z0JBQ2pCckgsUUFBUSxDQUFDQyxhQUFhLENBQ3BCLElBQUlILFdBQVcsQ0FBQyxvQ0FBb0MsRUFBRTtrQkFDcERDLE1BQU0sRUFBRTtvQkFBRTVDLEtBQUssRUFBRWtLO2tCQUFVO2dCQUM3QixDQUFDLENBQ0gsQ0FBQztjQUNILENBQUMsQ0FBQyxTQUNJLENBQUMsVUFBQUMsR0FBRyxFQUFJO2dCQUNadFEsT0FBTyxDQUFDQyxLQUFLLENBQUMsdUVBQXVFLEVBQUVxUSxHQUFHLENBQUM7Y0FDN0YsQ0FBQyxDQUFDO1lBQ047WUFFQSxLQUFBM0Ysa0JBQUEsR0FBSWtCLGlCQUFpQixjQUFBbEIsa0JBQUEsZUFBakJBLGtCQUFBLENBQW1CNU0sT0FBTyxFQUFFO2NBQzlCdEcsZ0JBQWdCLENBQUNvVSxpQkFBaUIsQ0FBQzlOLE9BQU8sQ0FBQyxDQUN4Q3FTLElBQUksQ0FBQyxVQUFBQyxTQUFTLEVBQUk7Z0JBQ2pCckgsUUFBUSxDQUFDQyxhQUFhLENBQ3BCLElBQUlILFdBQVcsQ0FBQyxrQ0FBa0MsRUFBRTtrQkFDbERDLE1BQU0sRUFBRTtvQkFBRTVDLEtBQUssRUFBRWtLO2tCQUFVO2dCQUM3QixDQUFDLENBQ0gsQ0FBQztjQUNILENBQUMsQ0FBQyxTQUNJLENBQUMsVUFBQUMsR0FBRyxFQUFJO2dCQUNadFEsT0FBTyxDQUFDQyxLQUFLLENBQUMseURBQXlELEVBQUVxUSxHQUFHLENBQUM7Y0FDL0UsQ0FBQyxDQUFDO1lBQ047WUFFQWxKLGVBQWUsQ0FBQ3BJLE9BQU8sR0FBRyxLQUFLO1lBQy9CLElBQUlxSSxZQUFZLENBQUNySSxPQUFPLEVBQUU7Y0FDbEI2SixXQUFXLEdBQUcsSUFBSUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDO2NBQ3RERSxRQUFRLENBQUNDLGFBQWEsQ0FBQ0osV0FBVyxDQUFDO2NBQ25DeEIsWUFBWSxDQUFDckksT0FBTyxHQUFHLEtBQUs7WUFDOUI7VUFBQztVQUFBO1lBQUEsT0FBQW1QLFNBQUEsQ0FBQXBKLElBQUE7UUFBQTtNQUFBLEdBQUF3RixRQUFBO0lBQUEsQ0FDRjtJQUFBLGlCQUFBZ0csR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7TUFBQSxPQUFBdEcsS0FBQSxDQUFBbkYsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxLQUNELENBQUNzRCxVQUFVLEVBQUVDLGFBQWEsRUFBRTdDLE9BQU8sRUFBRWMsaUJBQWlCLEVBQUVMLEtBQUssRUFBRUosS0FBSyxDQUN0RSxDQUFDO0VBRUQsSUFBTTBLLGdCQUFnQixHQUFHM2EsV0FBVyxDQUFDLFlBQU07SUFDekN1UixnQkFBZ0IsQ0FBQ3pJLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLElBQU13SyxhQUFhLGFBQUExTyxNQUFBLENBQWErTCxnQkFBZ0IsQ0FBQzdILE9BQU8sZUFBWTtJQUNwRWpILGNBQWMsQ0FBQ21SLEtBQUssQ0FBQyxDQUFDO0lBQ3RCNUIseUJBQXlCLENBQUN0SSxPQUFPLEdBQUcsSUFBSTtJQUN4Q3VJLHFCQUFxQixDQUFDdkksT0FBTyxHQUFHLElBQUk7SUFDcEMySixhQUFhLENBQUNhLGFBQWEsQ0FBQztJQUU1QmQsVUFBVSxDQUFDO01BQ1QxTyxFQUFFLFlBQUFjLE1BQUEsQ0FBWStMLGdCQUFnQixDQUFDN0gsT0FBTyxlQUFZO01BQ2xEcUQsT0FBTyxFQUFFckYsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO01BQzVCNk0sSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO01BQ2hCQyxJQUFJLEVBQUU7UUFBRS9QLEVBQUUsRUFBRSxXQUFXO1FBQUVHLElBQUksRUFBRTtNQUFZLENBQUM7TUFDNUN5QixJQUFJLEVBQUUzRSxlQUFlLENBQUMrUyxTQUFTO01BQy9COEcsbUJBQW1CLEVBQUU7SUFDdkIsQ0FBQyxDQUFDO0lBQ0YxSixlQUFlLENBQUNwSSxPQUFPLEdBQUcsS0FBSztJQUMvQitSLFVBQVUsQ0FBQyxZQUFNO01BQ2YsSUFBTWxJLFdBQVcsR0FBRyxJQUFJQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7TUFDdERFLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDSixXQUFXLENBQUM7SUFDckMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztFQUNULENBQUMsRUFBRSxDQUFDSCxVQUFVLEVBQUVDLGFBQWEsRUFBRTNMLENBQUMsQ0FBQyxDQUFDO0VBRWxDLElBQU1nVSxzQkFBc0IsR0FBRzlhLFdBQVcsQ0FDeEMsVUFBQ3FZLFFBQXlCLEVBQUV4TixrQkFBMEIsRUFBSztJQUFBLElBQUFrUSxxQkFBQTtJQUN6RCxJQUFNekgsYUFBYSxhQUFBMU8sTUFBQSxDQUFhK0wsZ0JBQWdCLENBQUM3SCxPQUFPLGVBQVk7SUFDcEUxRyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsd0JBQXdCLEVBQUVpVyxRQUFRLEVBQUU7TUFDckUyQyx3QkFBd0IsRUFBRW5RLGtCQUFrQixDQUFDbUIsTUFBTTtNQUNuRGtCLGdCQUFnQixFQUFFbUwsUUFBUSxDQUFDL0wsd0JBQXdCLEtBQUs7SUFDMUQsQ0FBQyxDQUFDO0lBQ0Z6SyxjQUFjLENBQUNtUixLQUFLLENBQUMsQ0FBQztJQUN0QjVCLHlCQUF5QixDQUFDdEksT0FBTyxHQUFHLElBQUk7SUFDeEN1SSxxQkFBcUIsQ0FBQ3ZJLE9BQU8sR0FBRyxJQUFJO0lBQ3BDMkosYUFBYSxDQUFDYSxhQUFhLENBQUM7SUFFNUIsSUFBTTJILFdBQWlDLEdBQUc7TUFDeENDLFNBQVMsY0FBQXRXLE1BQUEsQ0FBY3lULFFBQVEsQ0FBQzhDLGtCQUFrQixDQUFFO01BQ3BEQyxXQUFXLEVBQUV2USxrQkFBa0IsSUFBSSxFQUFFO01BQ3JDd04sUUFBUSxFQUFSQSxRQUFRO01BQ1J6UyxjQUFjLEVBQUV5UyxRQUFRLENBQUM3TCxlQUFlO01BQ3hDNk8sU0FBUyxHQUFBTixxQkFBQSxHQUFFMUMsUUFBUSxDQUFDN0wsZUFBZSxjQUFBdU8scUJBQUEsdUJBQXhCQSxxQkFBQSxDQUEwQnRXLEdBQUcsQ0FBQyxVQUFBNkIsTUFBTTtRQUFBLE9BQUlBLE1BQU0sQ0FBQ3FHLFNBQVM7TUFBQTtJQUNyRSxDQUFDO0lBQ0RzRSx1QkFBdUIsQ0FBQ25JLE9BQU8sR0FBR21TLFdBQVc7SUFDN0M1WSxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsZ0NBQWdDLEVBQUU0WSxXQUFXLENBQUM7SUFFcEYsSUFBSTVDLFFBQVEsQ0FBQy9MLHdCQUF3QixFQUFFO01BQUEsSUFBQWdQLHNCQUFBLEVBQUFDLEtBQUEsRUFBQUMsVUFBQSxFQUFBQyxVQUFBO01BQ3JDLElBQU1DLFdBQVcsSUFBQUosc0JBQUEsR0FBR2pELFFBQVEsQ0FBQzdMLGVBQWUsY0FBQThPLHNCQUFBLHVCQUF4QkEsc0JBQUEsQ0FBMkIsQ0FBQyxDQUFDO01BQ2pELElBQU12VCxRQUFRLElBQUF3VCxLQUFBLElBQUFDLFVBQUEsR0FBSW5ELFFBQVEsQ0FBNEJuUixTQUFTLGNBQUFzVSxVQUFBLGNBQUFBLFVBQUEsR0FBSUUsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV4VSxTQUFTLGNBQUFxVSxLQUFBLGNBQUFBLEtBQUEsR0FBSSxFQUFFO01BQy9GLElBQU12QixRQUFRLEdBQ1osRUFBQXlCLFVBQUEsR0FBRXBELFFBQVEsQ0FBNkM1UixTQUFTLGNBQUFnVixVQUFBLGNBQUFBLFVBQUEsR0FDN0RDLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFalYsU0FBUyxLQUN6QixJQUFJO01BQ04sSUFBSXNCLFFBQVEsRUFBRTtRQUNaaUoscUJBQXFCLENBQUNsSSxPQUFPLEdBQUc7VUFBRWYsUUFBUSxFQUFSQSxRQUFRO1VBQUVpUyxRQUFRLEVBQVJBO1FBQVMsQ0FBQztNQUN4RDtNQUNBMVgsY0FBYyxDQUFDLGFBQWEsRUFBRSwwQ0FBMEMsRUFBRTtRQUFFeUYsUUFBUSxFQUFSQTtNQUFTLENBQUMsQ0FBQztNQUN2Rm1KLGVBQWUsQ0FBQ3BJLE9BQU8sR0FBRyxLQUFLO01BQy9CO0lBQ0Y7SUFFQTlHLG1CQUFtQixDQUFDZ1IsS0FBSyxDQUFDLENBQUM7SUFDM0IxUSxjQUFjLENBQUMsYUFBYSxFQUFFLHVDQUF1QyxFQUFFO01BQ3JFNFksU0FBUyxFQUFFRCxXQUFXLENBQUNDLFNBQVM7TUFDaENTLGVBQWUsRUFBRTtJQUNuQixDQUFDLENBQUM7O0lBRUY7SUFDQW5KLFVBQVUsQ0FBQztNQUNUMU8sRUFBRSxjQUFBYyxNQUFBLENBQWN5VCxRQUFRLENBQUM4QyxrQkFBa0IsQ0FBRTtNQUM3Q2hQLE9BQU8sRUFBRXRCLGtCQUFrQixJQUFJLEVBQUU7TUFDakM4SSxJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUM7TUFDaEJDLElBQUksRUFBRTtRQUFFL1AsRUFBRSxFQUFFLFdBQVc7UUFBRUcsSUFBSSxFQUFFO01BQVksQ0FBQztNQUM1Q3lCLElBQUksRUFBRTNFLGVBQWUsQ0FBQytTLFNBQVM7TUFDL0J1RSxRQUFRLEVBQVJBLFFBQVE7TUFDUkUsY0FBYyxFQUFFO0lBQ2xCLENBQUMsQ0FBQztJQUNGckgsZUFBZSxDQUFDcEksT0FBTyxHQUFHLEtBQUs7RUFDakMsQ0FBQyxFQUNELENBQUMwSixVQUFVLEVBQUVDLGFBQWEsQ0FDNUIsQ0FBQztFQUVELElBQUFtSixxQkFBQSxHQVlJcmIscUJBQXFCLENBQUM7TUFDeEIrTSxPQUFPLEVBQUUyRixpQkFBaUI7TUFDMUI0SSxjQUFjLEVBQUU5SCxrQkFBa0I7TUFDbEMrSCxjQUFjLEVBQUUzSCxrQkFBa0I7TUFDbEM0SCxNQUFNLEVBQUVwQixnQkFBZ0I7TUFDeEJ2TixrQkFBa0IsRUFBRTBOLHNCQUFzQjtNQUMxQzdKLHVCQUF1QixFQUF2QkE7SUFDRixDQUFDLENBQUM7SUFsQkErSyxPQUFPLEdBQUFKLHFCQUFBLENBQVBJLE9BQU87SUFDSUMsZUFBZSxHQUFBTCxxQkFBQSxDQUExQk0sU0FBUztJQUNUQyxTQUFTLEdBQUFQLHFCQUFBLENBQVRPLFNBQVM7SUFDVEMsY0FBYyxHQUFBUixxQkFBQSxDQUFkUSxjQUFjO0lBQ2RDLGNBQWMsR0FBQVQscUJBQUEsQ0FBZFMsY0FBYztJQUNkQyxvQkFBb0IsR0FBQVYscUJBQUEsQ0FBcEJVLG9CQUFvQjtJQUNwQkMsYUFBYSxHQUFBWCxxQkFBQSxDQUFiVyxhQUFhO0lBQ2JDLG1CQUFtQixHQUFBWixxQkFBQSxDQUFuQlksbUJBQW1CO0lBQ25CQyxxQkFBcUIsR0FBQWIscUJBQUEsQ0FBckJhLHFCQUFxQjtJQUNyQkMsMEJBQTBCLEdBQUFkLHFCQUFBLENBQTFCYywwQkFBMEI7SUFDMUJDLHVCQUF1QixHQUFBZixxQkFBQSxDQUF2QmUsdUJBQXVCOztFQVV6QjtFQUNBO0VBQ0FyTCxzQkFBc0IsQ0FBQ3hJLE9BQU8sR0FBRzBULG1CQUFtQjtFQUNwRGpMLGdCQUFnQixDQUFDekksT0FBTyxHQUFHLFlBQU07SUFDL0J4RyxjQUFjLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQztJQUM5Q2dhLG9CQUFvQixDQUFDLElBQUksQ0FBQztJQUMxQjNLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCSSxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7SUFDNUJkLHVCQUF1QixDQUFDbkksT0FBTyxHQUFHLElBQUk7RUFDeEMsQ0FBQztFQUVELElBQU04VCxjQUFjLEdBQUdoTixPQUFPO0VBRTlCLElBQU1pTixXQUFXLEdBQUc3YyxXQUFXO0lBQUEsSUFBQThjLEtBQUEsR0FBQTVTLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FDN0IsU0FBQTJTLFNBQ0U1USxPQUFlLEVBQ2Z2SixvQkFBNEQsRUFDNURvYSxLQUFjLEVBQ2RDLGlCQUEwQixFQUMxQkMsUUFBMkIsRUFDM0JDLEtBQWMsRUFDZEMsSUFBYTtNQUFBLElBQUFDLG9CQUFBO01BQUEsSUFBQUMscUJBQUEsRUFBQXRhLFdBQUEsRUFBQUMsT0FBQSxFQUFBc2EsaUJBQUEsRUFBQUMsY0FBQSxFQUFBQyxZQUFBLEVBQUFDLFdBQUEsRUFBQUMsa0JBQUEsRUFBQUMsY0FBQSxFQUFBQyxZQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHdCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLFlBQUEsRUFBQUMscUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsT0FBQSxFQUFBQyxtQkFBQSxFQUFBQyxlQUFBLEVBQUExYSxVQUFBLEVBQUFELFNBQUEsRUFBQTRhLE9BQUEsRUFBQW5iLG9CQUFBLEVBQUFvYixnQkFBQSxFQUFBQyxRQUFBLEVBQUFDLFlBQUEsRUFBQUMsd0JBQUEsRUFBQUMsV0FBQTtNQUFBLE9BQUF6VSxtQkFBQSxDQUFBc0IsSUFBQSxXQUFBb1QsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUFsVCxJQUFBLEdBQUFrVCxTQUFBLENBQUFqVCxJQUFBO1VBQUE7WUFBQSxNQUVUc0YsZUFBZSxDQUFDcEksT0FBTyxJQUFJbVQsZUFBZSxJQUFJN0osZUFBZTtjQUFBeU0sU0FBQSxDQUFBalQsSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBaVQsU0FBQSxDQUFBcFEsTUFBQTtVQUFBO1lBQUE2TyxxQkFBQSxHQUloQzNhLHdCQUF3QixDQUFDQyxvQkFBb0IsQ0FBQyxFQUF2RUksV0FBVyxHQUFBc2EscUJBQUEsQ0FBWHRhLFdBQVcsRUFBRUMsT0FBTyxHQUFBcWEscUJBQUEsQ0FBUHJhLE9BQU8sRUFDNUI7WUFDQTtZQUNNc2EsaUJBQWlCLEdBQUdMLFFBQVEsYUFBUkEsUUFBUSxjQUFSQSxRQUFRLEdBQUlqYSxPQUFPLENBQUNpYSxRQUFRO1lBQ2hETSxjQUEwQyxHQUFHeGMsbUJBQW1CLENBQUN1YyxpQkFBaUIsQ0FBQztZQUNuRkUsWUFBWSxHQUFHTixLQUFLLGFBQUxBLEtBQUssY0FBTEEsS0FBSyxHQUFJbGEsT0FBTyxDQUFDa2EsS0FBSztZQUNyQ08sV0FBVyxHQUFHTixJQUFJLGFBQUpBLElBQUksY0FBSkEsSUFBSSxHQUFJbmEsT0FBTyxDQUFDbWEsSUFBSTtZQUNsQ08sa0JBQWtCLEdBQUcxYSxPQUFPLENBQUM2YixXQUFXO1lBQ3hDbEIsY0FBYyxHQUFHM2Msa0NBQWtDLENBQUNrTCxPQUFPLEVBQUU7Y0FDakVnUixLQUFLLEVBQUVNLFlBQVk7Y0FDbkJMLElBQUksRUFBRU07WUFDUixDQUFDLENBQUM7WUFFRnhNLGVBQWUsQ0FBQ3BJLE9BQU8sR0FBRyxJQUFJO1lBQ3hCK1UsWUFBWSxHQUFHeGQsTUFBTSxDQUFDLENBQUM7WUFDN0JzUSxnQkFBZ0IsQ0FBQzdILE9BQU8sR0FBRytVLFlBQVk7WUFDdkNqTixtQkFBbUIsQ0FBQzlILE9BQU8sR0FBR3FELE9BQU87WUFFckMsSUFBSSxDQUFDMkUsYUFBYSxDQUFDaEksT0FBTyxFQUFFO2NBQzFCdUgsS0FBSyxDQUFDMVAsTUFBTSxDQUFDb2UsYUFBYSxDQUFDO2NBQzNCak8sYUFBYSxDQUFDaEksT0FBTyxHQUFHLElBQUk7WUFDOUI7O1lBRUE7WUFDTWdWLHNCQUFzQixHQUFHL00sV0FBVyxDQUFDakksT0FBTyxDQUFDeEUsTUFBTSxDQUFDLFVBQUErVSxHQUFHO2NBQUEsT0FBSUEsR0FBRyxDQUFDL1YsU0FBUztZQUFBLEVBQUMsQ0FBQzZVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoRjRGLHdCQUF3QixJQUFBVixvQkFBQSxHQUFHdE0sV0FBVyxDQUFDakksT0FBTyxjQUFBdVUsb0JBQUEsZ0JBQUFBLG9CQUFBLEdBQW5CQSxvQkFBQSxDQUFzQnRNLFdBQVcsQ0FBQ2pJLE9BQU8sQ0FBQ2tELE1BQU0sR0FBRyxDQUFDLENBQUMsY0FBQXFSLG9CQUFBLHVCQUFyREEsb0JBQUEsQ0FBdUR4VixPQUFPLEVBRS9GO1lBQ0EySyxVQUFVLENBQUF6TyxhQUFBO2NBQ1JELEVBQUUsY0FBQWMsTUFBQSxDQUFjK0wsZ0JBQWdCLENBQUM3SCxPQUFPLENBQUU7Y0FDMUNxRCxPQUFPLEVBQUV5UixjQUFjO2NBQ3ZCakssSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxDQUFDO2NBQ2hCQyxJQUFJLEVBQUVwTCxXQUFXO2NBQ2pCL0MsSUFBSSxFQUFFM0UsZUFBZSxDQUFDaWUsSUFBSTtjQUMxQmpSLE9BQU8sRUFBRS9LO1lBQVcsR0FDaEJ3YSxjQUFjLEdBQUc7Y0FBRUEsY0FBYyxFQUFkQTtZQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDN0MsQ0FBQztZQUVGN00sZ0JBQWdCLENBQUM3SCxPQUFPLEdBQUd6SSxNQUFNLENBQUMsQ0FBQztZQUU3QjJkLHNCQUFzQixhQUFBcFosTUFBQSxDQUFhK0wsZ0JBQWdCLENBQUM3SCxPQUFPO1lBQ2pFc0kseUJBQXlCLENBQUN0SSxPQUFPLEdBQUdrVixzQkFBc0I7WUFDMUQzTSxxQkFBcUIsQ0FBQ3ZJLE9BQU8sR0FBRytILGFBQWEsQ0FBQy9ILE9BQU87WUFFakRtVixZQUFZLEdBQUc5UixPQUFPO1lBRTFCLElBQUlBLE9BQU8sS0FBS3JGLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFO2NBQ25EbVgsWUFBWSxXQUFBclosTUFBQSxDQUFXa0MsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLCtCQUFBbEMsTUFBQSxDQUN4RCxFQUFBc1oscUJBQUEsR0FBQWpiLE9BQU8sQ0FBQ2djLGNBQWMsY0FBQWYscUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3QmdCLFVBQVUsT0FBQWYscUJBQUEsR0FBSWpNLFVBQVUsQ0FBQ3BKLE9BQU8sQ0FBQzhHLE9BQU8sY0FBQXVPLHFCQUFBLHVCQUExQkEscUJBQUEsQ0FBNEJlLFVBQVUsRUFDNUU7WUFDSjtZQUVNZCxPQUFPLEdBQUdyTixXQUFXLENBQUNqSSxPQUFPLENBQUNyRSxHQUFHLENBQUMsVUFBQTBhLGNBQWM7Y0FBQSxPQUFLO2dCQUN6RHRTLE9BQU8sRUFBRXNTLGNBQWMsQ0FBQ2hULE9BQU87Z0JBQy9CekcsSUFBSSxFQUFFeVosY0FBYyxDQUFDdEwsSUFBSSxDQUFDL1AsRUFBRSxLQUFLMEUsUUFBUSxDQUFDMUUsRUFBRSxDQUFDNEUsUUFBUSxDQUFDLENBQUMsR0FBRzNILGVBQWUsQ0FBQ2llLElBQUksR0FBR2plLGVBQWUsQ0FBQytTO2NBQ25HLENBQUM7WUFBQSxDQUFDLENBQUM7WUFBQXVLLG1CQUFBLEdBT0NuTSxVQUFVLENBQUNwSixPQUFPLEVBSk53VixlQUFlLEdBQUFELG1CQUFBLENBQTdCbGIsWUFBWSxFQUNIUyxVQUFVLEdBQUF5YSxtQkFBQSxDQUFuQnpPLE9BQU8sRUFDQ2pNLFNBQVMsR0FBQTBhLG1CQUFBLENBQWpCbGEsTUFBTSxFQUNBb2EsT0FBTyxHQUFBRixtQkFBQSxDQUFidE8sSUFBSTtZQUVBM00sb0JBQW9CLEdBQUcwYSxzQkFBc0IsYUFBdEJBLHNCQUFzQix1QkFBdEJBLHNCQUFzQixDQUFFeGEsU0FBUztZQUN4RGtiLGdCQUFnQixHQUFHdGIsdUJBQXVCLENBQUNvYixlQUFlLEVBQUVsYixvQkFBb0IsQ0FBQztZQUFBeWIsU0FBQSxDQUFBalQsSUFBQTtZQUFBLE9BRWhFMkUsYUFBYSxDQUFDLENBQUNpTyxnQkFBZ0IsQ0FBQyxDQUFDO1VBQUE7WUFBbERDLFFBQVEsR0FBQUksU0FBQSxDQUFBclEsSUFBQTtZQUVSa1EsWUFBWSxHQUFHMUIsS0FBSyxhQUFMQSxLQUFLLGNBQUxBLEtBQUssR0FBSS9aLE9BQU8sQ0FBQytaLEtBQUs7WUFDckMyQix3QkFBd0IsR0FBRzFCLGlCQUFpQixhQUFqQkEsaUJBQWlCLGNBQWpCQSxpQkFBaUIsR0FBSWhhLE9BQU8sQ0FBQ2dhLGlCQUFpQjtZQUV6RTJCLFdBQVcsR0FBQTdhLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUE7Y0FDZm9JLE9BQU8sRUFBRThSLFlBQVk7Y0FDckJHLE9BQU8sRUFBUEEsT0FBTztjQUNQOWEsU0FBUyxFQUFFa2IsZ0JBQWdCO2NBQzNCWSxJQUFJLEVBQUU1VyxRQUFRLENBQUM0VyxJQUFJO2NBQ25CQyxNQUFNLEVBQUU3VyxRQUFRLENBQUMxRSxFQUFFLENBQUM0RSxRQUFRLENBQUMsQ0FBQztjQUM5QkMsU0FBUyxFQUFFSCxRQUFRLENBQUNHLFNBQVM7Y0FDN0IyVyxRQUFRLEVBQUU5VyxRQUFRLENBQUM4VyxRQUFRO2NBQzNCQyxTQUFTLEVBQUUvVyxRQUFRLENBQUNnWCxVQUFVLENBQUM5VyxRQUFRLENBQUMsQ0FBQztjQUN6QzRHLE1BQU0sRUFBRXVCLGFBQWEsQ0FBQy9ILE9BQU87Y0FDN0JvUyxTQUFTLEVBQUV2SyxnQkFBZ0IsQ0FBQzdILE9BQU87Y0FDbkMyVyxTQUFTLEVBQUUsQ0FBQXhQLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFaE0sSUFBSSxLQUFJLEVBQUU7Y0FDNUI0RCxPQUFPLEVBQUVrVyx3QkFBd0IsS0FBSTlOLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbk0sRUFBRSxDQUFDO2NBQy9Db00saUJBQWlCLEVBQUU4QixvQkFBb0IsQ0FBQ2xKLE9BQU87Y0FDL0NxSCxrQkFBa0IsRUFBRThCLHFCQUFxQixDQUFDbko7WUFBTyxHQUM3QyxDQUFBbEYsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUU4YixLQUFLLEtBQUksSUFBSSxHQUFHO2NBQUVBLEtBQUssRUFBRW5jLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDOGIsS0FBSztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDckVoYyxvQkFBb0IsQ0FBQ0MsU0FBUyxFQUFFQyxVQUFVLENBQUMsR0FDMUM2YSxRQUFRLGFBQVJBLFFBQVEsZUFBUkEsUUFBUSxDQUFFelMsTUFBTSxHQUFHO2NBQUUyVCxXQUFXLEVBQUVsQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUN4YTtZQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDekQsQ0FBQXNhLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFemEsRUFBRSxLQUFJLElBQUksR0FBQUMsYUFBQTtjQUNqQjhWLE1BQU0sRUFBRXRXLE1BQU0sQ0FBQ2diLE9BQU8sQ0FBQ3phLEVBQUU7WUFBQyxHQUFNeWEsT0FBTyxDQUFDdGEsSUFBSSxHQUFHO2NBQUUyYixRQUFRLEVBQUVyQixPQUFPLENBQUN0YTtZQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFDaEYsQ0FBQyxDQUFDLEdBQ0ZqQixXQUFXLENBQUNnSixNQUFNLEdBQUcsQ0FBQyxHQUFHO2NBQUVoSixXQUFXLEVBQVhBO1lBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUM3QzBiLFlBQVksR0FBRztjQUFFMUIsS0FBSyxFQUFFMEI7WUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQzNDQyx3QkFBd0IsR0FBRztjQUFFMUIsaUJBQWlCLEVBQUUwQjtZQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQy9FbEIsWUFBWSxHQUFHO2NBQUVOLEtBQUssRUFBRU07WUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQzNDQyxXQUFXLEdBQUc7Y0FBRU4sSUFBSSxFQUFFTTtZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDeEMsQ0FBQXpOLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFNFAsTUFBTSxLQUFJLElBQUksR0FBRztjQUFFQyxXQUFXLEVBQUU3UCxLQUFLLENBQUM0UDtZQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDMUQsQ0FBQTVQLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFcEwsSUFBSSxLQUFJLElBQUksR0FBRztjQUFFa2IsU0FBUyxFQUFFOVAsS0FBSyxDQUFDcEw7WUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3BEMlksY0FBYyxHQUFHO2NBQUVBLGNBQWMsRUFBZEE7WUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3hDRyxrQkFBa0IsR0FBRztjQUFFbUIsV0FBVyxFQUFFbkI7WUFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUduRTNCLE9BQU8sQ0FBQzRDLFdBQVcsQ0FBQztVQUFBO1VBQUE7WUFBQSxPQUFBQyxTQUFBLENBQUFoUSxJQUFBO1FBQUE7TUFBQSxHQUFBa08sUUFBQTtJQUFBLENBQ3JCO0lBQUEsaUJBQUFpRCxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsSUFBQSxFQUFBQyxJQUFBLEVBQUFDLElBQUEsRUFBQUMsSUFBQSxFQUFBQyxJQUFBO01BQUEsT0FBQXhELEtBQUEsQ0FBQTdOLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsS0FDRCxDQUNFc0QsVUFBVSxFQUNWbkMsS0FBSyxFQUNMMkwsT0FBTyxFQUNQcE0sT0FBTyxFQUNQekwsTUFBTSxFQUNONEwsSUFBSSxFQUNKNU0sWUFBWSxFQUNacUYsUUFBUSxFQUNSeUgsS0FBSyxFQUNMbkosQ0FBQyxFQUNEbVYsZUFBZSxFQUNmN0osZUFBZSxFQUNmbEMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsQ0FFdEIsQ0FBQztFQUVELElBQU1vUSxhQUFhLEdBQUd2Z0IsV0FBVyxDQUMvQixVQUFDa1osTUFBZSxFQUFLO0lBQ25CLElBQUksQ0FBQ3RJLG1CQUFtQixDQUFDOUgsT0FBTyxFQUFFO0lBRWxDLElBQUlvUSxNQUFNLENBQUNwVixFQUFFLE1BQUs4TCxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTlMLEVBQUUsR0FBRTtNQUM3QitMLFVBQVUsQ0FBQ3FKLE1BQU0sQ0FBQztJQUNwQjtJQUVBLElBQUl0SixPQUFPLElBQUlnQixtQkFBbUIsQ0FBQzlILE9BQU8sRUFBRTtNQUMxQyxJQUFNc1YsT0FBTyxHQUFHck4sV0FBVyxDQUFDakksT0FBTyxDQUFDckUsR0FBRyxDQUFDLFVBQUEwYSxjQUFjO1FBQUEsT0FBSztVQUN6RHRTLE9BQU8sRUFBRXNTLGNBQWMsQ0FBQ2hULE9BQU87VUFDL0J6RyxJQUFJLEVBQUV5WixjQUFjLENBQUN0TCxJQUFJLENBQUMvUCxFQUFFLEtBQUswRSxRQUFRLENBQUMxRSxFQUFFLENBQUM0RSxRQUFRLENBQUMsQ0FBQyxHQUFHM0gsZUFBZSxDQUFDaWUsSUFBSSxHQUFHamUsZUFBZSxDQUFDK1M7UUFDbkcsQ0FBQztNQUFBLENBQUMsQ0FBQztNQUVIa0ksT0FBTyxDQUFBalksYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQTtRQUNMb0ksT0FBTyxFQUFFeUUsbUJBQW1CLENBQUM5SCxPQUFPO1FBQ3BDc1YsT0FBTyxFQUFQQSxPQUFPO1FBQ1A5YSxTQUFTLEVBQUU0VixNQUFNLENBQUNwVixFQUFFO1FBQ3BCc2IsSUFBSSxFQUFFNVcsUUFBUSxDQUFDNFcsSUFBSTtRQUNuQkMsTUFBTSxFQUFFN1csUUFBUSxDQUFDMUUsRUFBRSxDQUFDNEUsUUFBUSxDQUFDLENBQUM7UUFDOUJDLFNBQVMsRUFBRUgsUUFBUSxDQUFDRyxTQUFTO1FBQzdCMlcsUUFBUSxFQUFFOVcsUUFBUSxDQUFDOFcsUUFBUTtRQUMzQkMsU0FBUyxFQUFFL1csUUFBUSxDQUFDZ1gsVUFBVSxDQUFDOVcsUUFBUSxDQUFDLENBQUM7UUFDekM0RyxNQUFNLEVBQUV1QixhQUFhLENBQUMvSCxPQUFPO1FBQzdCb1MsU0FBUyxFQUFFdkssZ0JBQWdCLENBQUM3SCxPQUFPO1FBQ25DMlcsU0FBUyxFQUFFLENBQUF4UCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWhNLElBQUksS0FBSSxFQUFFO1FBQzVCNEQsT0FBTyxFQUFFLENBQUFvSSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW5NLEVBQUUsS0FBSSxFQUFFO1FBQ3hCb00saUJBQWlCLEVBQUU4QixvQkFBb0IsQ0FBQ2xKLE9BQU87UUFDL0NxSCxrQkFBa0IsRUFBRThCLHFCQUFxQixDQUFDbko7TUFBTyxHQUM3QyxDQUFBb1EsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUV3RyxLQUFLLEtBQUksSUFBSSxHQUFHO1FBQUVBLEtBQUssRUFBRW5jLE1BQU0sQ0FBQzJWLE1BQU0sQ0FBQ3dHLEtBQUs7TUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQzVELENBQUF4RyxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRWxWLFFBQVEsS0FBSSxJQUFJLEdBQUc7UUFBRUEsUUFBUSxFQUFFVCxNQUFNLENBQUMyVixNQUFNLENBQUNsVixRQUFRO01BQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNyRSxDQUFBaU0sS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU0UCxNQUFNLEtBQUksSUFBSSxHQUFHO1FBQUVDLFdBQVcsRUFBRTdQLEtBQUssQ0FBQzRQO01BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMxRCxDQUFBNVAsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVwTCxJQUFJLEtBQUksSUFBSSxHQUFHO1FBQUVrYixTQUFTLEVBQUU5UCxLQUFLLENBQUNwTDtNQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxFQUNELENBQUMrSyxPQUFPLEVBQUVDLFVBQVUsRUFBRW1NLE9BQU8sRUFBRXhULFFBQVEsRUFBRTBILGlCQUFpQixFQUFFRCxLQUFLLENBQ25FLENBQUM7RUFFRCxJQUFNdVEsY0FBYyxHQUFHeGdCLFdBQVc7SUFBQSxJQUFBeWdCLEtBQUEsR0FBQXZXLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBc1csU0FBT0MsWUFBc0IsRUFBRUMsYUFBcUI7TUFBQSxJQUFBdFcsUUFBQTtNQUFBLE9BQUFILG1CQUFBLENBQUFzQixJQUFBLFdBQUFvVixTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQWxWLElBQUEsR0FBQWtWLFNBQUEsQ0FBQWpWLElBQUE7VUFBQTtZQUFBaVYsU0FBQSxDQUFBalYsSUFBQTtZQUFBLE9BQzlEL0ssSUFBSSxDQUFDaWdCLEtBQUssQ0FBQ0MsY0FBYyxDQUFDSCxhQUFhLEVBQUVELFlBQVksS0FBSzdmLFFBQVEsQ0FBQ2tnQixTQUFTLENBQUM7VUFBQTtZQUE5RjFXLFFBQVEsR0FBQXVXLFNBQUEsQ0FBQXJTLElBQUE7WUFDZCxJQUFJbEUsUUFBUSxFQUFFO2NBQ1p5RyxXQUFXLENBQUNqSSxPQUFPLEdBQUdpSSxXQUFXLENBQUNqSSxPQUFPLENBQUNyRSxHQUFHLENBQUMsVUFBQTBILE9BQU8sRUFBSTtnQkFDdkQsSUFBSUEsT0FBTyxDQUFDckksRUFBRSxLQUFLOGMsYUFBYSxJQUFJelUsT0FBTyxDQUFDekcsSUFBSSxLQUFLLFdBQVcsRUFBRTtrQkFDaEUsT0FBQTNCLGFBQUEsQ0FBQUEsYUFBQSxLQUFZb0ksT0FBTztvQkFBRThVLFVBQVUsRUFBRU4sWUFBWSxLQUFLN2YsUUFBUSxDQUFDa2dCO2tCQUFTO2dCQUN0RTtnQkFDQSxPQUFPN1UsT0FBTztjQUNoQixDQUFDLENBQUM7WUFDSjtVQUFDO1VBQUE7WUFBQSxPQUFBMFUsU0FBQSxDQUFBaFMsSUFBQTtRQUFBO01BQUEsR0FBQTZSLFFBQUE7SUFBQSxDQUNGO0lBQUEsaUJBQUFRLElBQUEsRUFBQUMsSUFBQTtNQUFBLE9BQUFWLEtBQUEsQ0FBQXhSLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsS0FBRSxFQUFFLENBQUM7RUFFTixJQUFNa1Msc0JBQXNCLEdBQUdwaEIsV0FBVztJQUFBLElBQUFxaEIsS0FBQSxHQUFBblgsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUN4QyxTQUFBa1gsU0FDRWpHLFNBQW1CLEVBQ25CcEMsUUFBOEIsRUFDOUJzSSxhQUEyRTtNQUFBLElBQUFDLG1CQUFBLEVBQUFuSixRQUFBLEVBQUE2QyxTQUFBLEVBQUF1RyxVQUFBLEVBQUF4RyxXQUFBLEVBQUF5RyxlQUFBLEVBQUFDLGVBQUEsRUFBQUMsU0FBQSxFQUFBOVcsYUFBQSxFQUFBUixRQUFBLEVBQUF1WCxFQUFBO01BQUEsT0FBQTFYLG1CQUFBLENBQUFzQixJQUFBLFdBQUFxVyxTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQW5XLElBQUEsR0FBQW1XLFNBQUEsQ0FBQWxXLElBQUE7VUFBQTtZQUFBLElBRXRFeVAsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRXJQLE1BQU07Y0FBQThWLFNBQUEsQ0FBQWxXLElBQUE7Y0FBQTtZQUFBO1lBQ3BCOUIsT0FBTyxDQUFDQyxLQUFLLENBQUMsOENBQThDLENBQUM7WUFBQSxPQUFBK1gsU0FBQSxDQUFBclQsTUFBQTtVQUFBO1lBSS9EO1lBQ00rUyxtQkFBbUIsR0FBR3pRLFdBQVcsQ0FBQ2pJLE9BQU8sQ0FBQ3JCLElBQUksQ0FBQyxVQUFBeVEsQ0FBQztjQUFBLElBQUE2SixXQUFBO2NBQUEsUUFBQUEsV0FBQSxHQUNwRDdKLENBQUMsQ0FBQ0csUUFBUSxjQUFBMEosV0FBQSxnQkFBQUEsV0FBQSxHQUFWQSxXQUFBLENBQVl2VixlQUFlLGNBQUF1VixXQUFBLHVCQUEzQkEsV0FBQSxDQUE2QnBKLElBQUksQ0FBQyxVQUFBclMsTUFBTTtnQkFBQSxPQUFJK1UsU0FBUyxDQUFDcFcsUUFBUSxDQUFDcUIsTUFBTSxDQUFDcUcsU0FBUyxDQUFDO2NBQUEsRUFBQztZQUFBLENBQ25GLENBQUM7WUFBQSxNQUVHLENBQUM2VSxtQkFBbUIsSUFBSSxDQUFDQSxtQkFBbUIsQ0FBQ25KLFFBQVE7Y0FBQXlKLFNBQUEsQ0FBQWxXLElBQUE7Y0FBQTtZQUFBO1lBQ3ZEOUIsT0FBTyxDQUFDQyxLQUFLLENBQUMsc0RBQXNELEVBQUVzUixTQUFTLENBQUM7WUFBQSxPQUFBeUcsU0FBQSxDQUFBclQsTUFBQTtVQUFBO1lBSWxGbk0sY0FBYyxDQUFDLGFBQWEsRUFBRSx3QkFBd0IsRUFBRTtjQUN0RCtZLFNBQVMsRUFBVEEsU0FBUztjQUNUcEMsUUFBUSxFQUFSQSxRQUFRO2NBQ1IrSSxnQkFBZ0IsRUFBRUMsT0FBTyxDQUFDVixhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRXZWLE1BQU07WUFDakQsQ0FBQyxDQUFDO1lBRU1xTSxRQUFRLEdBQUttSixtQkFBbUIsQ0FBaENuSixRQUFRO1lBQ1Y2QyxTQUFTLEdBQUdzRyxtQkFBbUIsQ0FBQzFkLEVBQUU7WUFDbEMyZCxVQUFVLEdBQUdwRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBRXpCSixXQUFpQyxHQUFHO2NBQ3hDQyxTQUFTLEVBQVRBLFNBQVM7Y0FDVEUsV0FBVyxFQUFFb0csbUJBQW1CLENBQUNyVixPQUFPO2NBQ3hDa00sUUFBUSxFQUFSQSxRQUFRO2NBQ1J6UyxjQUFjLEVBQUV5UyxRQUFRLENBQUM3TCxlQUFlO2NBQ3hDNk8sU0FBUyxFQUFUQTtZQUNGLENBQUM7WUFDRHBLLHVCQUF1QixDQUFDbkksT0FBTyxHQUFHbVMsV0FBVztZQUM3QzVZLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxnQ0FBZ0MsRUFBRTRZLFdBQVcsQ0FBQztZQUU5RXlHLGVBQWUsR0FBRzlmLGdDQUFnQyxDQUFDa0YsQ0FBQyxFQUFFbVUsV0FBVyxDQUFDO1lBQ3hFOVksbUJBQW1CLENBQUMsYUFBYSxFQUFFLHdDQUF3QyxFQUFFdWYsZUFBZSxDQUFDOztZQUU3RjtZQUNBM1EsV0FBVyxDQUFDakksT0FBTyxHQUFHaUksV0FBVyxDQUFDakksT0FBTyxDQUFDckUsR0FBRyxDQUFDLFVBQUEwSCxPQUFPLEVBQUk7Y0FDdkQsSUFBSUEsT0FBTyxDQUFDckksRUFBRSxLQUFLb1gsU0FBUyxFQUFFO2dCQUM1QixJQUFNMEcsU0FBUyxHQUFHM0ksUUFBUSxLQUFLLFNBQVMsR0FBRyxVQUFVLEdBQUcsVUFBVTtnQkFDbEUsT0FBQWxWLGFBQUEsQ0FBQUEsYUFBQSxLQUFZb0ksT0FBTztrQkFBRW9NLGNBQWMsRUFBRXFKO2dCQUFTO2NBQ2hEO2NBQ0EsT0FBT3pWLE9BQU87WUFDaEIsQ0FBQyxDQUFDOztZQUVGO1lBQ013VixlQUFlLEdBQUc1USxXQUFXLENBQUNqSSxPQUFPLENBQUNyQixJQUFJLENBQUMsVUFBQXlRLENBQUM7Y0FBQSxPQUFJQSxDQUFDLENBQUNwVSxFQUFFLEtBQUtvWCxTQUFTO1lBQUEsRUFBQztZQUN6RSxJQUFJeUcsZUFBZSxFQUFFO2NBQ2JDLFNBQVMsR0FBRzNJLFFBQVEsS0FBSyxTQUFTLEdBQUcsVUFBVSxHQUFHLFVBQVU7Y0FDbEV6RyxVQUFVLENBQUF6TyxhQUFBLENBQUFBLGFBQUEsS0FBTTRkLGVBQWU7Z0JBQUVwSixjQUFjLEVBQUVxSjtjQUFTLEVBQUUsQ0FBQztZQUMvRDs7WUFFQTtZQUNBMVEsZUFBZSxDQUFDcEksT0FBTyxHQUFHLElBQUk7WUFDOUJpSixxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFDM0JwQixnQkFBZ0IsQ0FBQzdILE9BQU8sR0FBR3pJLE1BQU0sQ0FBQyxDQUFDO1lBQ25Dc2MsdUJBQXVCLFdBQUEvWCxNQUFBLENBQVcrTCxnQkFBZ0IsQ0FBQzdILE9BQU8sZUFBWSxDQUFDO1lBQ3ZFckcsY0FBYyxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRTtjQUN4QzRZLFNBQVMsRUFBVEEsU0FBUztjQUNUcEMsUUFBUSxFQUFFc0ksYUFBYSxHQUFHLE1BQU0sR0FBR3RJLFFBQVE7Y0FDM0NpSixNQUFNLFlBQUF0ZCxNQUFBLENBQVkrTCxnQkFBZ0IsQ0FBQzdILE9BQU87WUFDNUMsQ0FBQyxDQUFDOztZQUVGO1lBQ0E2SSxpQkFBaUIsQ0FBQyxVQUFBaEcsSUFBSTtjQUFBLE9BQUE1SCxhQUFBLENBQUFBLGFBQUEsS0FDakI0SCxJQUFJLE9BQUF3VyxlQUFBLEtBQ05WLFVBQVUsRUFBR0MsZUFBZSxDQUFDdlYsT0FBTztZQUFBLENBQ3JDLENBQUM7WUFDSG1RLG9CQUFvQixDQUFDb0YsZUFBZSxDQUFDOztZQUVyQztZQUNBO1lBQ0E7WUFDSTVXLGFBQWEsR0FBRyxLQUFLO1lBQUFnWCxTQUFBLENBQUFuVyxJQUFBO1lBQUFtVyxTQUFBLENBQUFsVyxJQUFBO1lBQUEsT0FHQS9LLElBQUksQ0FBQ3VoQixZQUFZLENBQUNDLGNBQWMsQ0FBQztjQUN0RGhILFNBQVMsRUFBVEEsU0FBUztjQUFFO2NBQ1h0QixTQUFTLEVBQUUxQixRQUFRLENBQUNpSyxVQUFVO2NBQzlCckosUUFBUSxFQUFFc0ksYUFBYSxHQUFHLE1BQU0sR0FBR3RJLFFBQVE7Y0FDM0NzSSxhQUFhLEVBQWJBLGFBQWE7Y0FDYjFaLE9BQU8sRUFBRSxDQUFBb0ksS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVuTSxFQUFFLEtBQUksRUFBRTtjQUN4QnNiLElBQUksRUFBRTVXLFFBQVEsQ0FBQzRXO1lBQ2pCLENBQUMsQ0FBQztVQUFBO1lBUEk5VSxRQUFRLEdBQUF3WCxTQUFBLENBQUF0VCxJQUFBO1lBQUEsSUFTVGxFLFFBQVEsQ0FBQ2lZLEVBQUU7Y0FBQVQsU0FBQSxDQUFBbFcsSUFBQTtjQUFBO1lBQUE7WUFDZG1HLHFCQUFxQixDQUFDLEtBQUssQ0FBQztZQUM1QmtCLGlCQUFpQixDQUFDLENBQUM7WUFBQSxPQUFBNk8sU0FBQSxDQUFBclQsTUFBQTtVQUFBO1lBQUFxVCxTQUFBLENBQUFsVyxJQUFBO1lBQUEsT0FLZjVCLGdCQUFnQixDQUFDTSxRQUFRLEVBQUVtWCxVQUFVLEVBQUU7Y0FDM0NoVixVQUFVLEVBQUUsU0FBWkEsVUFBVUEsQ0FBQSxFQUFRO2dCQUNoQixJQUFNK1YsUUFBd0IsR0FBRztrQkFDL0JDLEtBQUssRUFBRSxVQUFVO2tCQUNqQnRXLE9BQU8sRUFBRXpLLHlCQUF5QixDQUFDLENBQUMsRUFBRW9GLENBQUM7Z0JBQ3pDLENBQUM7Z0JBQ0R3VixvQkFBb0IsQ0FBQ2tHLFFBQVEsQ0FBQztjQUNoQyxDQUFDO2NBQ0R6VixPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBR0YsT0FBZSxFQUFLO2dCQUM1QmtILGtCQUFrQixDQUFDbEgsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7Y0FDdkMsQ0FBQztjQUNERCxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBRzhWLE9BQStCLEVBQUVDLGVBQXVCLEVBQUVDLGVBQXVCLEVBQUs7Z0JBQUEsSUFBQUMsa0JBQUE7Z0JBQzdGcmdCLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRWtnQixPQUFPLEVBQUU7a0JBQ3pDQyxlQUFlLEVBQWZBLGVBQWU7a0JBQ2ZHLHFCQUFxQixFQUFFRixlQUFlLENBQUM1VztnQkFDekMsQ0FBQyxDQUFDO2dCQUNGeVEscUJBQXFCLENBQUExWSxhQUFBLENBQUFBLGFBQUEsS0FFZDJlLE9BQU87a0JBQ1YvVixTQUFTLEdBQUFrVyxrQkFBQSxHQUFFSCxPQUFPLENBQUMvVixTQUFTLGNBQUFrVyxrQkFBQSxjQUFBQSxrQkFBQSxHQUFJRjtnQkFBZSxJQUVqREMsZUFDRixDQUFDO2dCQUNELElBQU1HLFlBQVksR0FBR3BoQiw2QkFBNkIsQ0FDaEQrZ0IsT0FBTyxDQUFDdlcsT0FBTyxFQUNmckYsQ0FBQyxFQUNEbUssdUJBQXVCLENBQUNuSSxPQUFPLEVBQy9CNlosZUFBZSxFQUNmO2tCQUFFSyxtQkFBbUIsRUFBRTtnQkFBSyxDQUM5QixDQUFDO2dCQUNEclIsaUJBQWlCLENBQUMsVUFBQWhHLElBQUk7a0JBQUEsT0FBQTVILGFBQUEsQ0FBQUEsYUFBQSxLQUNqQjRILElBQUksT0FBQXdXLGVBQUEsS0FDTlEsZUFBZSxFQUFHSSxZQUFZLENBQUM1VyxPQUFPO2dCQUFBLENBQ3ZDLENBQUM7Z0JBQ0g1SiwyQkFBMkIsQ0FBQztrQkFDMUIwZ0IsS0FBSyxFQUFFLGdCQUFnQjtrQkFDdkJuSixNQUFNLEVBQUUsTUFBTTtrQkFDZHBOLFdBQVcsRUFBRWdXLE9BQU87a0JBQ3BCUSxlQUFlLEVBQUVILFlBQVksQ0FBQzVXLE9BQU87a0JBQ3JDOE8sV0FBVyxFQUFFaEssdUJBQXVCLENBQUNuSSxPQUFPO2tCQUM1Q3FhLFVBQVUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQjtnQkFDbkUsQ0FBQyxDQUFDO2NBQ0osQ0FBQztjQUNEdlYsZ0JBQWdCLEVBQUUsU0FBbEJBLGdCQUFnQkEsQ0FBQSxFQUFRO2dCQUN0QjhPLDBCQUEwQixDQUFDLENBQUM7Y0FDOUIsQ0FBQztjQUNEcE8sVUFBVSxFQUFFLFNBQVpBLFVBQVVBLENBQ1J0QixZQUFvQixFQUNwQmUsT0FBWSxFQUNaQyxlQUF1QixFQUN2QjJVLGVBQXVCLEVBQ3ZCM2YsV0FBMEIsRUFDMUJrTCxXQUE2QixFQUM3QnJHLE9BQXVCLEVBQ3BCO2dCQUNIaUQsYUFBYSxHQUFHLElBQUk7Z0JBQ3BCckksY0FBYyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRTtrQkFDM0NrZ0IsZUFBZSxFQUFmQSxlQUFlO2tCQUNmN1Usa0JBQWtCLEVBQUVkLFlBQVksQ0FBQ2hCO2dCQUNuQyxDQUFDLENBQUM7Z0JBQ0YrRixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7Z0JBQzVCb0Msa0JBQWtCLENBQUNuSCxZQUFZLEVBQUVlLE9BQU8sRUFBRUMsZUFBZSxFQUFFaEwsV0FBVyxFQUFFa0wsV0FBVyxFQUFFckcsT0FBTyxDQUFDO2dCQUM3RnlVLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDMUJyTCx1QkFBdUIsQ0FBQ25JLE9BQU8sR0FBRyxJQUFJO2dCQUN0QzZJLGlCQUFpQixDQUFDLFVBQUFoRyxJQUFJLEVBQUk7a0JBQ3hCLElBQU15WCxXQUFXLEdBQUFyZixhQUFBLEtBQVE0SCxJQUFJLENBQUU7a0JBQy9CLE9BQU95WCxXQUFXLENBQUNULGVBQWUsQ0FBQztrQkFDbkMsT0FBT1MsV0FBVztnQkFDcEIsQ0FBQyxDQUFDO2NBQ0osQ0FBQztjQUNEaFcsa0JBQWtCLEVBQUUsU0FBcEJBLGtCQUFrQkEsQ0FBR2lXLGVBQW9CLEVBQUV4WSxrQkFBMEIsRUFBRThYLGVBQXVCLEVBQUs7Z0JBQ2pHdmdCLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFaWhCLGVBQWUsRUFBRTtrQkFDMUVWLGVBQWUsRUFBZkEsZUFBZTtrQkFDZjNILHdCQUF3QixFQUFFblEsa0JBQWtCLENBQUNtQjtnQkFDL0MsQ0FBQyxDQUFDO2dCQUNGO2dCQUNBO2dCQUNBLElBQU1rQixnQkFBZ0IsR0FBRyxDQUFBbVcsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUUvVyx3QkFBd0IsTUFBSyxJQUFJO2dCQUMzRSxJQUFJLENBQUNZLGdCQUFnQixFQUFFO2tCQUNyQnBDLGFBQWEsR0FBRyxJQUFJO2tCQUNwQmlILHFCQUFxQixDQUFDLEtBQUssQ0FBQztrQkFDNUJ1SyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7a0JBQzFCckwsdUJBQXVCLENBQUNuSSxPQUFPLEdBQUcsSUFBSTtrQkFDdEM2SSxpQkFBaUIsQ0FBQyxVQUFBaEcsSUFBSSxFQUFJO29CQUN4QixJQUFNeVgsV0FBVyxHQUFBcmYsYUFBQSxLQUFRNEgsSUFBSSxDQUFFO29CQUMvQixPQUFPeVgsV0FBVyxDQUFDVCxlQUFlLENBQUM7b0JBQ25DLE9BQU9TLFdBQVc7a0JBQ3BCLENBQUMsQ0FBQztnQkFDSjtnQkFDQXRJLHNCQUFzQixDQUFDdUksZUFBZSxFQUFxQnhZLGtCQUFrQixDQUFDO2NBQ2hGLENBQUM7Y0FDRHlDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7Z0JBQ2J4QyxhQUFhLEdBQUcsSUFBSTtnQkFDcEJySSxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFO2tCQUFFOEgsUUFBUSxFQUFFa1g7Z0JBQVcsQ0FBQyxDQUFDO2dCQUNuRTFQLHFCQUFxQixDQUFDLEtBQUssQ0FBQztnQkFDNUJrQixpQkFBaUIsQ0FBQyxDQUFDO2NBQ3JCO1lBQ0YsQ0FBQyxDQUFDO1VBQUE7WUFBQTZPLFNBQUEsQ0FBQWxXLElBQUE7WUFBQTtVQUFBO1lBQUFrVyxTQUFBLENBQUFuVyxJQUFBO1lBQUFrVyxFQUFBLEdBQUFDLFNBQUE7WUFFRmhYLGFBQWEsR0FBRyxJQUFJO1lBQ3BCaUgscUJBQXFCLENBQUMsS0FBSyxDQUFDO1lBQzVCa0IsaUJBQWlCLENBQUMsQ0FBQztVQUFBO1lBQUE2TyxTQUFBLENBQUFuVyxJQUFBO1lBRW5Cb0cscUJBQXFCLENBQUMsS0FBSyxDQUFDO1lBQzVCYixlQUFlLENBQUNwSSxPQUFPLEdBQUcsS0FBSztZQUMvQjtZQUNBO1lBQ0EsSUFBSSxDQUFDZ0MsYUFBYSxFQUFFO2NBQ2xCcEksZUFBZSxDQUFDLGdCQUFnQixFQUFFLGtDQUFrQyxFQUFFO2dCQUFFNkgsUUFBUSxFQUFFa1g7Y0FBVyxDQUFDLENBQUM7Y0FDL0ZuRixvQkFBb0IsQ0FBQyxJQUFJLENBQUM7Y0FDMUJyTCx1QkFBdUIsQ0FBQ25JLE9BQU8sR0FBRyxJQUFJO2NBQ3RDNkksaUJBQWlCLENBQUMsVUFBQWhHLElBQUksRUFBSTtnQkFDeEIsSUFBSSxFQUFFOFYsVUFBVSxJQUFJOVYsSUFBSSxDQUFDLEVBQUUsT0FBT0EsSUFBSTtnQkFDdEMsSUFBTXlYLFdBQVcsR0FBQXJmLGFBQUEsS0FBUTRILElBQUksQ0FBRTtnQkFDL0IsT0FBT3lYLFdBQVcsQ0FBQzNCLFVBQVUsQ0FBQztnQkFDOUIsT0FBTzJCLFdBQVc7Y0FDcEIsQ0FBQyxDQUFDO1lBQ0o7WUFBQyxPQUFBdEIsU0FBQSxDQUFBd0IsTUFBQTtVQUFBO1VBQUE7WUFBQSxPQUFBeEIsU0FBQSxDQUFBalQsSUFBQTtRQUFBO01BQUEsR0FBQXlTLFFBQUE7SUFBQSxDQUVKO0lBQUEsaUJBQUFpQyxJQUFBLEVBQUFDLElBQUEsRUFBQUMsSUFBQTtNQUFBLE9BQUFwQyxLQUFBLENBQUFwUyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtFQUFBLEtBQ0QsQ0FDRTFHLFFBQVEsRUFDUnlILEtBQUssRUFDTHVDLFVBQVUsRUFDVlMsaUJBQWlCLEVBQ2pCYyxrQkFBa0IsRUFDbEJJLGtCQUFrQixFQUNsQjJHLHNCQUFzQixFQUN0QndCLG9CQUFvQixFQUNwQnhWLENBQUMsQ0FFTCxDQUFDO0VBRUQsSUFBTTRjLGNBQWMsR0FBRzFqQixXQUFXLGNBQUFrSyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUMsU0FBQXVaLFNBQUE7SUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxLQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGFBQUEsRUFBQUMsYUFBQSxFQUFBQyxZQUFBLEVBQUFoRyxPQUFBLEVBQUFpRyxvQkFBQSxFQUFBL0YsZUFBQSxFQUFBMWEsVUFBQSxFQUFBRCxTQUFBLEVBQUE0YSxPQUFBLEVBQUFDLGdCQUFBO0lBQUEsT0FBQXJVLG1CQUFBLENBQUFzQixJQUFBLFdBQUE2WSxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQTNZLElBQUEsR0FBQTJZLFNBQUEsQ0FBQTFZLElBQUE7UUFBQTtVQUNqQyxJQUFJLENBQUN1RixZQUFZLENBQUNySSxPQUFPLEVBQUU7WUFDekJxSSxZQUFZLENBQUNySSxPQUFPLEdBQUcsSUFBSTtVQUM3QjtVQUFDLEtBQ0d1RyxhQUFhO1lBQUFpVixTQUFBLENBQUExWSxJQUFBO1lBQUE7VUFBQTtVQUFBMFksU0FBQSxDQUFBMVksSUFBQTtVQUFBLE9BQ1QyRyxZQUFZLENBQUMsQ0FBQztRQUFBO1VBQUErUixTQUFBLENBQUExWSxJQUFBO1VBQUE7UUFBQTtVQUFBLEtBQ1gyRCxrQkFBa0I7WUFBQStVLFNBQUEsQ0FBQTFZLElBQUE7WUFBQTtVQUFBO1VBQ3JCb1ksaUJBQWlCLEdBQUcvQixPQUFPLEVBQUEyQixxQkFBQSxHQUFDclUsa0JBQWtCLENBQUNwRCxPQUFPLGNBQUF5WCxxQkFBQSx1QkFBMUJBLHFCQUFBLENBQTRCamYsSUFBSSxDQUFDLENBQUMsQ0FBQztVQUMvRHNmLHFCQUFxQixHQUFHaEMsT0FBTyxFQUFBNEIscUJBQUEsR0FBQ3RVLGtCQUFrQixDQUFDdk0sV0FBVyxjQUFBNmdCLHFCQUFBLHVCQUE5QkEscUJBQUEsQ0FBZ0M3WCxNQUFNLENBQUM7VUFDdkVrWSxhQUFhLEdBQUdqQyxPQUFPLENBQUMxUyxrQkFBa0IsQ0FBQ3lOLEtBQUssQ0FBQztVQUNqRG1ILGFBQWEsR0FBR2xDLE9BQU8sQ0FBQzFTLGtCQUFrQixDQUFDNE4sS0FBSyxDQUFDO1VBQ2pEaUgsWUFBWSxHQUFHbkMsT0FBTyxDQUFDMVMsa0JBQWtCLENBQUM2TixJQUFJLENBQUM7VUFBQSxNQUVqRCxDQUFDNEcsaUJBQWlCLElBQUksQ0FBQ0MscUJBQXFCLElBQUksQ0FBQ0MsYUFBYSxJQUFJLENBQUNDLGFBQWEsSUFBSSxDQUFDQyxZQUFZO1lBQUFFLFNBQUEsQ0FBQTFZLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQTBZLFNBQUEsQ0FBQTdWLE1BQUE7UUFBQTtVQUkvRjJQLE9BQU8sR0FBR3JOLFdBQVcsQ0FBQ2pJLE9BQU8sQ0FBQ3JFLEdBQUcsQ0FBQyxVQUFBMGEsY0FBYztZQUFBLE9BQUs7Y0FDekR0UyxPQUFPLEVBQUVzUyxjQUFjLENBQUNoVCxPQUFPO2NBQy9CekcsSUFBSSxFQUFFeVosY0FBYyxDQUFDdEwsSUFBSSxDQUFDL1AsRUFBRSxLQUFLMEUsUUFBUSxDQUFDMUUsRUFBRSxDQUFDNEUsUUFBUSxDQUFDLENBQUMsR0FBRzNILGVBQWUsQ0FBQ2llLElBQUksR0FBR2plLGVBQWUsQ0FBQytTO1lBQ25HLENBQUM7VUFBQSxDQUFDLENBQUM7VUFBQXVRLG9CQUFBLEdBT0NuUyxVQUFVLENBQUNwSixPQUFPLEVBSk53VixlQUFlLEdBQUErRixvQkFBQSxDQUE3QmxoQixZQUFZLEVBQ0hTLFVBQVUsR0FBQXlnQixvQkFBQSxDQUFuQnpVLE9BQU8sRUFDQ2pNLFNBQVMsR0FBQTBnQixvQkFBQSxDQUFqQmxnQixNQUFNLEVBQ0FvYSxPQUFPLEdBQUE4RixvQkFBQSxDQUFidFUsSUFBSTtVQUVBeU8sZ0JBQWdCLElBQUFzRixLQUFBLElBQUFDLHFCQUFBLEdBQUc3Z0IsdUJBQXVCLENBQUNvYixlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQUF5RixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJbmdCLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFRSxFQUFFLGNBQUFnZ0IsS0FBQSxjQUFBQSxLQUFBLEdBQUksSUFBSTtVQUVqRzlILE9BQU8sQ0FBQWpZLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUE7WUFDTG9JLE9BQU8sRUFBRW9ELGtCQUFrQixDQUFDcEQsT0FBTztZQUNuQ2lTLE9BQU8sRUFBUEEsT0FBTztZQUNQOWEsU0FBUyxFQUFFa2IsZ0JBQWdCO1lBQzNCWSxJQUFJLEVBQUU1VyxRQUFRLENBQUM0VyxJQUFJO1lBQ25CQyxNQUFNLEVBQUU3VyxRQUFRLENBQUMxRSxFQUFFLENBQUM0RSxRQUFRLENBQUMsQ0FBQztZQUM5QkMsU0FBUyxFQUFFSCxRQUFRLENBQUNHLFNBQVM7WUFDN0IyVyxRQUFRLEVBQUU5VyxRQUFRLENBQUM4VyxRQUFRO1lBQzNCQyxTQUFTLEVBQUUvVyxRQUFRLENBQUNnWCxVQUFVLENBQUM5VyxRQUFRLENBQUMsQ0FBQztZQUN6QzRHLE1BQU0sRUFBRXVCLGFBQWEsQ0FBQy9ILE9BQU87WUFDN0JvUyxTQUFTLEVBQUV2SyxnQkFBZ0IsQ0FBQzdILE9BQU87WUFDbkMyVyxTQUFTLEVBQUV4UCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWhNLElBQUs7WUFDdkI0RCxPQUFPLEVBQUVvSSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW5NLEVBQUc7WUFDbkJvTSxpQkFBaUIsRUFBRThCLG9CQUFvQixDQUFDbEosT0FBTztZQUMvQ3FILGtCQUFrQixFQUFFOEIscUJBQXFCLENBQUNuSjtVQUFPLEdBQzdDLENBQUFsRixVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRThiLEtBQUssS0FBSSxJQUFJLEdBQUc7WUFBRUEsS0FBSyxFQUFFbmMsTUFBTSxDQUFDSyxVQUFVLENBQUM4YixLQUFLO1VBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNyRWhjLG9CQUFvQixDQUFDQyxTQUFTLEVBQUVDLFVBQVUsQ0FBQyxHQUMxQ0EsVUFBVSxhQUFWQSxVQUFVLGVBQVZBLFVBQVUsQ0FBRUssSUFBSSxHQUFHO1lBQUUwYixXQUFXLEVBQUUvYixVQUFVLENBQUNLO1VBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN4RCxDQUFBc2EsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV6YSxFQUFFLEtBQUksSUFBSSxHQUFBQyxhQUFBO1lBQ2pCOFYsTUFBTSxFQUFFdFcsTUFBTSxDQUFDZ2IsT0FBTyxDQUFDemEsRUFBRTtVQUFDLEdBQU15YSxPQUFPLENBQUN0YSxJQUFJLEdBQUc7WUFBRTJiLFFBQVEsRUFBRXJCLE9BQU8sQ0FBQ3RhO1VBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUNoRixDQUFDLENBQUMsR0FDRnNMLGtCQUFrQixDQUFDdk0sV0FBVyxHQUFHO1lBQUVBLFdBQVcsRUFBRXVNLGtCQUFrQixDQUFDdk07VUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3JGdU0sa0JBQWtCLENBQUN5TixLQUFLLEdBQUc7WUFBRUEsS0FBSyxFQUFFek4sa0JBQWtCLENBQUN5TjtVQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDbkV6TixrQkFBa0IsQ0FBQzBOLGlCQUFpQixHQUFHO1lBQUVBLGlCQUFpQixFQUFFMU4sa0JBQWtCLENBQUMwTjtVQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3ZHMU4sa0JBQWtCLENBQUM0TixLQUFLLEdBQUc7WUFBRUEsS0FBSyxFQUFFNU4sa0JBQWtCLENBQUM0TjtVQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDbkU1TixrQkFBa0IsQ0FBQzZOLElBQUksR0FBRztZQUFFQSxJQUFJLEVBQUU3TixrQkFBa0IsQ0FBQzZOO1VBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNoRSxDQUFBbk4sS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU0UCxNQUFNLEtBQUksSUFBSSxHQUFHO1lBQUVDLFdBQVcsRUFBRTdQLEtBQUssQ0FBQzRQO1VBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMxRCxDQUFBNVAsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVwTCxJQUFJLEtBQUksSUFBSSxHQUFHO1lBQUVrYixTQUFTLEVBQUU5UCxLQUFLLENBQUNwTDtVQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDcEQ3RCxtQkFBbUIsQ0FBQ3VPLGtCQUFrQixDQUFDMk4sUUFBUSxDQUFDLEdBQ2hEO1lBQUVNLGNBQWMsRUFBRXhjLG1CQUFtQixDQUFDdU8sa0JBQWtCLENBQUMyTixRQUFRO1VBQUUsQ0FBQyxHQUNwRSxDQUFDLENBQUMsR0FDRjNOLGtCQUFrQixDQUFDdVAsV0FBVyxHQUFHO1lBQUVBLFdBQVcsRUFBRXZQLGtCQUFrQixDQUFDdVA7VUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzFGLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQXdGLFNBQUEsQ0FBQXpWLElBQUE7TUFBQTtJQUFBLEdBQUE4VSxRQUFBO0VBQUEsQ0FFTCxJQUFFLENBQ0R0VSxhQUFhLEVBQ2JFLGtCQUFrQixFQUNsQkssT0FBTyxFQUNQekwsTUFBTSxFQUNONEwsSUFBSSxFQUNKdkgsUUFBUSxFQUNSeUgsS0FBSyxFQUNMK0wsT0FBTyxFQUNQOUwsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsQ0FDbkIsQ0FBQztFQUVGLElBQU1vVSxTQUFTLEdBQUd2a0IsV0FBVyxDQUFDLFlBQU07SUFDbENzUixzQkFBc0IsQ0FBQ3hJLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDNkgsZ0JBQWdCLENBQUM3SCxPQUFPLEdBQUd6SSxNQUFNLENBQUMsQ0FBQztJQUNuQ3VRLG1CQUFtQixDQUFDOUgsT0FBTyxHQUFHLElBQUk7SUFDbEMrSCxhQUFhLENBQUMvSCxPQUFPLEdBQUd6SSxNQUFNLENBQUMsQ0FBQztJQUNoQ3lRLGFBQWEsQ0FBQ2hJLE9BQU8sR0FBRyxLQUFLO0lBQzdCc0kseUJBQXlCLENBQUN0SSxPQUFPLEdBQUcsSUFBSTtJQUN4Q3VJLHFCQUFxQixDQUFDdkksT0FBTyxHQUFHLElBQUk7SUFDcENqSCxjQUFjLENBQUNtUixLQUFLLENBQUMsQ0FBQztJQUN0QmhSLG1CQUFtQixDQUFDZ1IsS0FBSyxDQUFDLENBQUM7SUFDM0JqQixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7RUFDOUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU15UyxjQUFjLEdBQUd4a0IsV0FBVyxDQUFDLFlBQU07SUFDdkN1YyxhQUFhLENBQUMsQ0FBQztJQUNmckwsZUFBZSxDQUFDcEksT0FBTyxHQUFHLEtBQUs7SUFDL0JpSixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7RUFDOUIsQ0FBQyxFQUFFLENBQUN3SyxhQUFhLENBQUMsQ0FBQztFQUVuQixPQUFPO0lBQ0xsSyxRQUFRLEVBQVJBLFFBQVE7SUFDUkQsZUFBZSxFQUFmQSxlQUFlO0lBQ2ZFLHFCQUFxQixFQUFyQkEscUJBQXFCO0lBQ3JCMkosZUFBZSxFQUFFQSxlQUFlLElBQUluSyxrQkFBa0I7SUFDdERxSyxTQUFTLEVBQVRBLFNBQVM7SUFDVEMsY0FBYyxFQUFkQSxjQUFjO0lBQ2RDLGNBQWMsRUFBZEEsY0FBYztJQUNkM0ssY0FBYyxFQUFkQSxjQUFjO0lBQ2RrTCxjQUFjLEVBQWRBLGNBQWM7SUFDZC9MLGFBQWEsRUFBRUEsYUFBYSxDQUFDL0gsT0FBTztJQUNwQzZILGdCQUFnQixFQUFFQSxnQkFBZ0IsQ0FBQzdILE9BQU87SUFFMUMrVCxXQUFXLEVBQVhBLFdBQVc7SUFDWDBELGFBQWEsRUFBYkEsYUFBYTtJQUNiQyxjQUFjLEVBQWRBLGNBQWM7SUFDZFksc0JBQXNCLEVBQXRCQSxzQkFBc0I7SUFDdEIxTyxZQUFZLEVBQVpBLFlBQVk7SUFDWmdSLGNBQWMsRUFBZEEsY0FBYztJQUNkYSxTQUFTLEVBQVRBLFNBQVM7SUFDVEMsY0FBYyxFQUFkQSxjQUFjO0lBRWRDLFVBQVUsRUFBRXhJLGVBQWUsSUFBSW5LLGtCQUFrQixJQUFJTTtFQUN2RCxDQUFDO0FBQ0gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==