botframework-webchat 4.16.1-main.20240110.d642b89 → 4.16.1-main.20240119.3d09177

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.
Files changed (101) hide show
  1. package/dist/webchat-es5.js +1 -1
  2. package/dist/webchat-minimal.js +1 -1
  3. package/dist/webchat.js +1 -1
  4. package/lib/AddFullBundle.js +9 -18
  5. package/lib/FullComposer.js +1 -13
  6. package/lib/FullReactWebChat.js +1 -12
  7. package/lib/adaptiveCards/AdaptiveCardsComposer.js +3 -13
  8. package/lib/adaptiveCards/AdaptiveCardsContext.js +1 -3
  9. package/lib/adaptiveCards/Attachment/AdaptiveCardAttachment.js +2 -8
  10. package/lib/adaptiveCards/Attachment/AdaptiveCardBuilder.js +1 -17
  11. package/lib/adaptiveCards/Attachment/AdaptiveCardContent.js +5 -20
  12. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/private/closest.js +1 -5
  13. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/private/findDOMNodeOwner.js +2 -7
  14. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/private/useAdaptiveCardModEffect.js +6 -28
  15. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/private/useLazyRef.js +1 -6
  16. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/private/usePrevious.js +2 -3
  17. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/private/useValueRef.js +1 -3
  18. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/useActionSetShouldNotBeMenuBarModEffect.js +1 -7
  19. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/useActionShouldBePushButtonModEffect.js +7 -21
  20. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/useActiveElementModEffect.js +4 -12
  21. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/useDisabledModEffect.js +4 -12
  22. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/usePersistValuesModEffect.js +5 -16
  23. package/lib/adaptiveCards/Attachment/AdaptiveCardHacks/useRoleModEffect.js +3 -7
  24. package/lib/adaptiveCards/Attachment/AdaptiveCardRenderer.js +82 -116
  25. package/lib/adaptiveCards/Attachment/AnimationCardAttachment.js +2 -8
  26. package/lib/adaptiveCards/Attachment/AnimationCardContent.js +10 -21
  27. package/lib/adaptiveCards/Attachment/AudioCardAttachment.js +3 -8
  28. package/lib/adaptiveCards/Attachment/AudioCardContent.js +13 -24
  29. package/lib/adaptiveCards/Attachment/CommonCard.js +9 -28
  30. package/lib/adaptiveCards/Attachment/HeroCardAttachment.js +2 -8
  31. package/lib/adaptiveCards/Attachment/HeroCardContent.js +9 -29
  32. package/lib/adaptiveCards/Attachment/OAuthCardAttachment.js +2 -8
  33. package/lib/adaptiveCards/Attachment/OAuthCardContent.js +9 -28
  34. package/lib/adaptiveCards/Attachment/ReceiptCardAttachment.js +2 -8
  35. package/lib/adaptiveCards/Attachment/ReceiptCardContent.js +37 -70
  36. package/lib/adaptiveCards/Attachment/SignInCardAttachment.js +2 -8
  37. package/lib/adaptiveCards/Attachment/SignInCardContent.js +5 -15
  38. package/lib/adaptiveCards/Attachment/ThumbnailCardAttachment.js +2 -8
  39. package/lib/adaptiveCards/Attachment/ThumbnailCardContent.js +22 -44
  40. package/lib/adaptiveCards/Attachment/VideoCardAttachment.js +3 -8
  41. package/lib/adaptiveCards/Attachment/VideoCardContent.js +9 -20
  42. package/lib/adaptiveCards/Attachment/private/renderAdaptiveCard.js +11 -21
  43. package/lib/adaptiveCards/AttachmentForScreenReader/AdaptiveCardAttachment.js +18 -37
  44. package/lib/adaptiveCards/AttachmentForScreenReader/RichCardAttachment.js +19 -25
  45. package/lib/adaptiveCards/DOMManipulationWithUndo/addEventListenerWithUndo.js +1 -5
  46. package/lib/adaptiveCards/DOMManipulationWithUndo/bunchUndos.js +1 -4
  47. package/lib/adaptiveCards/DOMManipulationWithUndo/durableAddClassWithUndo.js +3 -7
  48. package/lib/adaptiveCards/DOMManipulationWithUndo/durableDisableInputElementAccessiblyWithUndo.js +5 -18
  49. package/lib/adaptiveCards/DOMManipulationWithUndo/private/addClass.js +2 -3
  50. package/lib/adaptiveCards/DOMManipulationWithUndo/private/getAttributeOrFalse.js +1 -2
  51. package/lib/adaptiveCards/DOMManipulationWithUndo/private/noOp.js +1 -3
  52. package/lib/adaptiveCards/DOMManipulationWithUndo/private/setOrRemoveAttributeIfFalse.js +1 -2
  53. package/lib/adaptiveCards/DOMManipulationWithUndo/setOrRemoveAttributeIfFalseWithUndo.js +1 -9
  54. package/lib/adaptiveCards/Styles/StyleSet/AdaptiveCardRenderer.js +6 -6
  55. package/lib/adaptiveCards/Styles/StyleSet/AnimationCardAttachment.js +2 -2
  56. package/lib/adaptiveCards/Styles/StyleSet/AudioCardAttachment.js +3 -3
  57. package/lib/adaptiveCards/Styles/adaptiveCardHostConfig.js +7 -14
  58. package/lib/adaptiveCards/Styles/createAdaptiveCardsStyleSet.js +2 -12
  59. package/lib/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.js +3 -10
  60. package/lib/adaptiveCards/createAdaptiveCardsAttachmentMiddleware.js +1 -14
  61. package/lib/adaptiveCards/defaultStyleOptions.js +1 -1
  62. package/lib/adaptiveCards/hooks/internal/useAdaptiveCardsContext.js +1 -7
  63. package/lib/adaptiveCards/hooks/internal/useParseAdaptiveCardJSON.js +13 -33
  64. package/lib/adaptiveCards/hooks/internal/useUniqueId.js +2 -5
  65. package/lib/adaptiveCards/hooks/useAdaptiveCardsHostConfig.js +4 -13
  66. package/lib/adaptiveCards/hooks/useAdaptiveCardsPackage.js +2 -6
  67. package/lib/adaptiveCards/normalizeStyleOptions.js +1 -7
  68. package/lib/addVersion.js +4 -9
  69. package/lib/createBrowserWebSpeechPonyfillFactory.js +1 -4
  70. package/lib/createCognitiveServicesSpeechServicesPonyfillFactory.js +24 -34
  71. package/lib/createDirectLine.js +14 -16
  72. package/lib/createDirectLineAppServiceExtension.js +4 -6
  73. package/lib/createDirectLineSpeechAdapters.js +16 -23
  74. package/lib/createFullStyleSet.js +2 -8
  75. package/lib/fullBundleDefaultStyleOptions.js +1 -9
  76. package/lib/hooks/useStyleOptions.js +3 -8
  77. package/lib/hooks/useStyleSet.js +3 -9
  78. package/lib/index-es5.js +3 -17
  79. package/lib/index-minimal.js +2 -22
  80. package/lib/index.js +2 -43
  81. package/lib/markdown/markdownItPlugins/ariaLabel.js +15 -18
  82. package/lib/markdown/markdownItPlugins/betterLink.js +15 -32
  83. package/lib/markdown/markdownItPlugins/respectCRLF.js +3 -4
  84. package/lib/markdown/private/iterateLinkDefinitions.js +1 -25
  85. package/lib/markdown/renderMarkdown.js +9 -25
  86. package/lib/polyfill.js +1 -22
  87. package/lib/renderWebChat.js +1 -5
  88. package/lib/speech/CustomAudioInputStream.js +65 -104
  89. package/lib/speech/bytesPerSample.js +1 -2
  90. package/lib/speech/createAudioConfig.js +11 -30
  91. package/lib/speech/createAudioContext.js +6 -5
  92. package/lib/speech/createMicrophoneAudioConfigAndAudioContext.js +25 -37
  93. package/lib/speech/getUserMedia.js +5 -8
  94. package/lib/useComposerProps.js +7 -14
  95. package/package.json +32 -19
  96. package/src/adaptiveCards/createAdaptiveCardsAttachmentForScreenReaderMiddleware.tsx +2 -2
  97. package/src/__tests__/createDirectLine.spec.js +0 -32
  98. package/src/__tests__/versionTag.es5.spec.js +0 -16
  99. package/src/__tests__/versionTag.full.spec.js +0 -16
  100. package/src/__tests__/versionTag.minimal.spec.js +0 -16
  101. package/src/adaptiveCards/Styles/createAdaptiveCardsStyleSet.spec.js +0 -13
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = usePersistValuesModEffect;
9
-
10
8
  var _react = require("react");
11
-
12
9
  var _useAdaptiveCardModEffect = _interopRequireDefault(require("./private/useAdaptiveCardModEffect"));
13
-
14
10
  var _usePrevious = _interopRequireDefault(require("./private/usePrevious"));
15
-
16
11
  /**
17
12
  * Gets all user-inputted values under a DOM node.
18
13
  *
@@ -22,11 +17,9 @@ function getUserValues(element) {
22
17
  if (!element) {
23
18
  return new Set();
24
19
  }
25
-
26
20
  return Array.from(element.querySelectorAll('input, option, textarea')).reduce(function (values, element) {
27
21
  if (element instanceof HTMLInputElement) {
28
22
  var type = element.type;
29
-
30
23
  if (type === 'checkbox' || type === 'radio') {
31
24
  element.checked && values.add(element.value);
32
25
  } else {
@@ -41,28 +34,25 @@ function getUserValues(element) {
41
34
  values.clear();
42
35
  values.add(element.value);
43
36
  }
44
-
45
37
  return values;
46
38
  }, new Set());
47
39
  }
40
+
48
41
  /**
49
42
  * Set multiple user-inputted values under a DOM node.
50
43
  *
51
44
  * This function must be paired with `getUserValues`.
52
45
  */
53
-
54
-
55
46
  function setUserValues(element, values) {
56
47
  if (!element) {
57
48
  return;
58
- } // If the element does not support multiple choices, say <input type="text"> or <textarea>, then, use the first value.
59
-
49
+ }
60
50
 
51
+ // If the element does not support multiple choices, say <input type="text"> or <textarea>, then, use the first value.
61
52
  var defaultValue = Array.from(values)[0] || '';
62
53
  element.querySelectorAll('input, option, textarea').forEach(function (element) {
63
54
  if (element instanceof HTMLInputElement) {
64
55
  var type = element.type;
65
-
66
56
  if (type === 'checkbox' || type === 'radio') {
67
57
  element.checked = values.has(element.value);
68
58
  } else {
@@ -75,11 +65,10 @@ function setUserValues(element, values) {
75
65
  }
76
66
  });
77
67
  }
68
+
78
69
  /**
79
70
  * Re-rendering: Current user-inputted values must be saved and restored on re-render.
80
71
  */
81
-
82
-
83
72
  function usePersistValuesModEffect(adaptiveCard) {
84
73
  var prevAdaptiveCard = (0, _usePrevious.default)(adaptiveCard);
85
74
  var valuesMapRef = (0, _react.useRef)(new Map());
@@ -100,4 +89,4 @@ function usePersistValuesModEffect(adaptiveCard) {
100
89
  }, [valuesMapRef]);
101
90
  return (0, _useAdaptiveCardModEffect.default)(modder, adaptiveCard);
102
91
  }
103
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRVc2VyVmFsdWVzIiwiZWxlbWVudCIsIlNldCIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJyZWR1Y2UiLCJ2YWx1ZXMiLCJIVE1MSW5wdXRFbGVtZW50IiwidHlwZSIsImNoZWNrZWQiLCJhZGQiLCJ2YWx1ZSIsImNsZWFyIiwiSFRNTE9wdGlvbkVsZW1lbnQiLCJzZWxlY3RlZCIsInNldFVzZXJWYWx1ZXMiLCJkZWZhdWx0VmFsdWUiLCJmb3JFYWNoIiwiaGFzIiwidXNlUGVyc2lzdFZhbHVlc01vZEVmZmVjdCIsImFkYXB0aXZlQ2FyZCIsInByZXZBZGFwdGl2ZUNhcmQiLCJ1c2VQcmV2aW91cyIsInZhbHVlc01hcFJlZiIsInVzZVJlZiIsIk1hcCIsImN1cnJlbnQiLCJtb2RkZXIiLCJ1c2VNZW1vIiwidmFsdWVzTWFwIiwiZ2V0QWxsSW5wdXRzIiwiY2FyZE9iamVjdCIsInJlbmRlcmVkRWxlbWVudCIsImdldCIsInNldCIsInVzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdCJdLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0aXZlQ2FyZHMvQXR0YWNobWVudC9BZGFwdGl2ZUNhcmRIYWNrcy91c2VQZXJzaXN0VmFsdWVzTW9kRWZmZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHVzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdCBmcm9tICcuL3ByaXZhdGUvdXNlQWRhcHRpdmVDYXJkTW9kRWZmZWN0JztcbmltcG9ydCB1c2VQcmV2aW91cyBmcm9tICcuL3ByaXZhdGUvdXNlUHJldmlvdXMnO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0aXZlQ2FyZCwgQ2FyZE9iamVjdCB9IGZyb20gJ2FkYXB0aXZlY2FyZHMnO1xuXG4vKipcbiAqIEdldHMgYWxsIHVzZXItaW5wdXR0ZWQgdmFsdWVzIHVuZGVyIGEgRE9NIG5vZGUuXG4gKlxuICogV2UgYXNzdW1lIHZhbHVlcyBhcmUgSUQtZWQuIElmIG5vdCBJRC1lZCAoc3VjaCBhcyBgPHRleHRhcmVhPmApLCB0aGVyZSB3aWxsIGJlIG9ubHkgYSBzaW5nbGUgaW5zdGFuY2UgKG5vIHR3byBgPHRleHRhcmVhPmApLlxuICovXG5mdW5jdGlvbiBnZXRVc2VyVmFsdWVzKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkKTogU2V0PHN0cmluZz4ge1xuICBpZiAoIWVsZW1lbnQpIHtcbiAgICByZXR1cm4gbmV3IFNldCgpO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCwgb3B0aW9uLCB0ZXh0YXJlYScpIGFzIE5vZGVMaXN0T2Y8XG4gICAgICBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTE9wdGlvbkVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50XG4gICAgPlxuICApLnJlZHVjZTxTZXQ8c3RyaW5nPj4oKHZhbHVlcywgZWxlbWVudCkgPT4ge1xuICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgY29uc3QgeyB0eXBlIH0gPSBlbGVtZW50O1xuXG4gICAgICBpZiAodHlwZSA9PT0gJ2NoZWNrYm94JyB8fCB0eXBlID09PSAncmFkaW8nKSB7XG4gICAgICAgIGVsZW1lbnQuY2hlY2tlZCAmJiB2YWx1ZXMuYWRkKGVsZW1lbnQudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQVNTVU1QVElPTjogV2UgZXhwZWN0IENhcmRPYmplY3Qgd2lsbCBOT1QgbWl4IDxpbnB1dCB0eXBlPVwidGV4dFwiPiB3aXRoIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj4uXG4gICAgICAgIHZhbHVlcy5jbGVhcigpO1xuICAgICAgICB2YWx1ZXMuYWRkKGVsZW1lbnQudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxPcHRpb25FbGVtZW50KSB7XG4gICAgICBlbGVtZW50LnNlbGVjdGVkICYmIHZhbHVlcy5hZGQoZWxlbWVudC52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFTU1VNUFRJT046IFdlIGV4cGVjdCBDYXJkT2JqZWN0IHdpbGwgTk9UIG1peCA8dGV4dGFyZWE+IHdpdGggPGlucHV0IHR5cGU9XCJjaGVja2JveFwiPi5cbiAgICAgIHZhbHVlcy5jbGVhcigpO1xuICAgICAgdmFsdWVzLmFkZChlbGVtZW50LnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9LCBuZXcgU2V0KCkpO1xufVxuXG4vKipcbiAqIFNldCBtdWx0aXBsZSB1c2VyLWlucHV0dGVkIHZhbHVlcyB1bmRlciBhIERPTSBub2RlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwYWlyZWQgd2l0aCBgZ2V0VXNlclZhbHVlc2AuXG4gKi9cbmZ1bmN0aW9uIHNldFVzZXJWYWx1ZXMoZWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQsIHZhbHVlczogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gSWYgdGhlIGVsZW1lbnQgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBjaG9pY2VzLCBzYXkgPGlucHV0IHR5cGU9XCJ0ZXh0XCI+IG9yIDx0ZXh0YXJlYT4sIHRoZW4sIHVzZSB0aGUgZmlyc3QgdmFsdWUuXG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IEFycmF5LmZyb20odmFsdWVzKVswXSB8fCAnJztcblxuICAoXG4gICAgZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCwgb3B0aW9uLCB0ZXh0YXJlYScpIGFzIE5vZGVMaXN0T2Y8XG4gICAgICBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTE9wdGlvbkVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50XG4gICAgPlxuICApLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGVsZW1lbnQ7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY2hlY2tib3gnIHx8IHR5cGUgPT09ICdyYWRpbycpIHtcbiAgICAgICAgZWxlbWVudC5jaGVja2VkID0gdmFsdWVzLmhhcyhlbGVtZW50LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQudmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTE9wdGlvbkVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuc2VsZWN0ZWQgPSB2YWx1ZXMuaGFzKGVsZW1lbnQudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmUtcmVuZGVyaW5nOiBDdXJyZW50IHVzZXItaW5wdXR0ZWQgdmFsdWVzIG11c3QgYmUgc2F2ZWQgYW5kIHJlc3RvcmVkIG9uIHJlLXJlbmRlci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlUGVyc2lzdFZhbHVlc01vZEVmZmVjdChhZGFwdGl2ZUNhcmQ6IEFkYXB0aXZlQ2FyZCkge1xuICBjb25zdCBwcmV2QWRhcHRpdmVDYXJkID0gdXNlUHJldmlvdXMoYWRhcHRpdmVDYXJkKTtcbiAgY29uc3QgdmFsdWVzTWFwUmVmID0gdXNlUmVmPE1hcDxDYXJkT2JqZWN0LCBTZXQ8c3RyaW5nPj4+KG5ldyBNYXAoKSk7XG5cbiAgcHJldkFkYXB0aXZlQ2FyZCA9PT0gYWRhcHRpdmVDYXJkIHx8IHZhbHVlc01hcFJlZi5jdXJyZW50LmNsZWFyKCk7XG5cbiAgY29uc3QgbW9kZGVyID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoYWRhcHRpdmVDYXJkOiBBZGFwdGl2ZUNhcmQpID0+IHtcbiAgICAgIGNvbnN0IHsgY3VycmVudDogdmFsdWVzTWFwIH0gPSB2YWx1ZXNNYXBSZWY7XG5cbiAgICAgIGFkYXB0aXZlQ2FyZC5nZXRBbGxJbnB1dHMoKS5mb3JFYWNoKGNhcmRPYmplY3QgPT4ge1xuICAgICAgICB2YWx1ZXNNYXAuaGFzKGNhcmRPYmplY3QpICYmIHNldFVzZXJWYWx1ZXMoY2FyZE9iamVjdC5yZW5kZXJlZEVsZW1lbnQsIHZhbHVlc01hcC5nZXQoY2FyZE9iamVjdCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHZhbHVlc01hcFJlZi5jdXJyZW50ID0gYWRhcHRpdmVDYXJkXG4gICAgICAgICAgLmdldEFsbElucHV0cygpXG4gICAgICAgICAgLnJlZHVjZTxNYXA8Q2FyZE9iamVjdCwgU2V0PHN0cmluZz4+PigodmFsdWVzTWFwLCBjYXJkT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldFVzZXJWYWx1ZXMoY2FyZE9iamVjdC5yZW5kZXJlZEVsZW1lbnQpO1xuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyA/IHZhbHVlc01hcC5zZXQoY2FyZE9iamVjdCwgdmFsdWUpIDogdmFsdWVzTWFwO1xuICAgICAgICAgIH0sIG5ldyBNYXAoKSk7XG4gICAgICB9O1xuICAgIH0sXG4gICAgW3ZhbHVlc01hcFJlZl1cbiAgKTtcblxuICByZXR1cm4gdXNlQWRhcHRpdmVDYXJkTW9kRWZmZWN0KG1vZGRlciwgYWRhcHRpdmVDYXJkKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQXNFO0VBQ3BFLElBQUksQ0FBQ0EsT0FBTCxFQUFjO0lBQ1osT0FBTyxJQUFJQyxHQUFKLEVBQVA7RUFDRDs7RUFFRCxPQUFPQyxLQUFLLENBQUNDLElB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
92
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlUHJldmlvdXMiLCJnZXRVc2VyVmFsdWVzIiwiZWxlbWVudCIsIlNldCIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJyZWR1Y2UiLCJ2YWx1ZXMiLCJIVE1MSW5wdXRFbGVtZW50IiwidHlwZSIsImNoZWNrZWQiLCJhZGQiLCJ2YWx1ZSIsImNsZWFyIiwiSFRNTE9wdGlvbkVsZW1lbnQiLCJzZWxlY3RlZCIsInNldFVzZXJWYWx1ZXMiLCJkZWZhdWx0VmFsdWUiLCJmb3JFYWNoIiwiaGFzIiwidXNlUGVyc2lzdFZhbHVlc01vZEVmZmVjdCIsImFkYXB0aXZlQ2FyZCIsInByZXZBZGFwdGl2ZUNhcmQiLCJ1c2VQcmV2aW91cyIsInZhbHVlc01hcFJlZiIsInVzZVJlZiIsIk1hcCIsImN1cnJlbnQiLCJtb2RkZXIiLCJ1c2VNZW1vIiwidmFsdWVzTWFwIiwiZ2V0QWxsSW5wdXRzIiwiY2FyZE9iamVjdCIsInJlbmRlcmVkRWxlbWVudCIsImdldCIsInNldCIsInVzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdCJdLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0aXZlQ2FyZHMvQXR0YWNobWVudC9BZGFwdGl2ZUNhcmRIYWNrcy91c2VQZXJzaXN0VmFsdWVzTW9kRWZmZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHVzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdCBmcm9tICcuL3ByaXZhdGUvdXNlQWRhcHRpdmVDYXJkTW9kRWZmZWN0JztcbmltcG9ydCB1c2VQcmV2aW91cyBmcm9tICcuL3ByaXZhdGUvdXNlUHJldmlvdXMnO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0aXZlQ2FyZCwgQ2FyZE9iamVjdCB9IGZyb20gJ2FkYXB0aXZlY2FyZHMnO1xuXG4vKipcbiAqIEdldHMgYWxsIHVzZXItaW5wdXR0ZWQgdmFsdWVzIHVuZGVyIGEgRE9NIG5vZGUuXG4gKlxuICogV2UgYXNzdW1lIHZhbHVlcyBhcmUgSUQtZWQuIElmIG5vdCBJRC1lZCAoc3VjaCBhcyBgPHRleHRhcmVhPmApLCB0aGVyZSB3aWxsIGJlIG9ubHkgYSBzaW5nbGUgaW5zdGFuY2UgKG5vIHR3byBgPHRleHRhcmVhPmApLlxuICovXG5mdW5jdGlvbiBnZXRVc2VyVmFsdWVzKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkKTogU2V0PHN0cmluZz4ge1xuICBpZiAoIWVsZW1lbnQpIHtcbiAgICByZXR1cm4gbmV3IFNldCgpO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCwgb3B0aW9uLCB0ZXh0YXJlYScpIGFzIE5vZGVMaXN0T2Y8XG4gICAgICBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTE9wdGlvbkVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50XG4gICAgPlxuICApLnJlZHVjZTxTZXQ8c3RyaW5nPj4oKHZhbHVlcywgZWxlbWVudCkgPT4ge1xuICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgY29uc3QgeyB0eXBlIH0gPSBlbGVtZW50O1xuXG4gICAgICBpZiAodHlwZSA9PT0gJ2NoZWNrYm94JyB8fCB0eXBlID09PSAncmFkaW8nKSB7XG4gICAgICAgIGVsZW1lbnQuY2hlY2tlZCAmJiB2YWx1ZXMuYWRkKGVsZW1lbnQudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQVNTVU1QVElPTjogV2UgZXhwZWN0IENhcmRPYmplY3Qgd2lsbCBOT1QgbWl4IDxpbnB1dCB0eXBlPVwidGV4dFwiPiB3aXRoIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj4uXG4gICAgICAgIHZhbHVlcy5jbGVhcigpO1xuICAgICAgICB2YWx1ZXMuYWRkKGVsZW1lbnQudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxPcHRpb25FbGVtZW50KSB7XG4gICAgICBlbGVtZW50LnNlbGVjdGVkICYmIHZhbHVlcy5hZGQoZWxlbWVudC52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFTU1VNUFRJT046IFdlIGV4cGVjdCBDYXJkT2JqZWN0IHdpbGwgTk9UIG1peCA8dGV4dGFyZWE+IHdpdGggPGlucHV0IHR5cGU9XCJjaGVja2JveFwiPi5cbiAgICAgIHZhbHVlcy5jbGVhcigpO1xuICAgICAgdmFsdWVzLmFkZChlbGVtZW50LnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9LCBuZXcgU2V0KCkpO1xufVxuXG4vKipcbiAqIFNldCBtdWx0aXBsZSB1c2VyLWlucHV0dGVkIHZhbHVlcyB1bmRlciBhIERPTSBub2RlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwYWlyZWQgd2l0aCBgZ2V0VXNlclZhbHVlc2AuXG4gKi9cbmZ1bmN0aW9uIHNldFVzZXJWYWx1ZXMoZWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQsIHZhbHVlczogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gSWYgdGhlIGVsZW1lbnQgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBjaG9pY2VzLCBzYXkgPGlucHV0IHR5cGU9XCJ0ZXh0XCI+IG9yIDx0ZXh0YXJlYT4sIHRoZW4sIHVzZSB0aGUgZmlyc3QgdmFsdWUuXG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IEFycmF5LmZyb20odmFsdWVzKVswXSB8fCAnJztcblxuICAoXG4gICAgZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCwgb3B0aW9uLCB0ZXh0YXJlYScpIGFzIE5vZGVMaXN0T2Y8XG4gICAgICBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTE9wdGlvbkVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50XG4gICAgPlxuICApLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGVsZW1lbnQ7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY2hlY2tib3gnIHx8IHR5cGUgPT09ICdyYWRpbycpIHtcbiAgICAgICAgZWxlbWVudC5jaGVja2VkID0gdmFsdWVzLmhhcyhlbGVtZW50LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQudmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTE9wdGlvbkVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuc2VsZWN0ZWQgPSB2YWx1ZXMuaGFzKGVsZW1lbnQudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogUmUtcmVuZGVyaW5nOiBDdXJyZW50IHVzZXItaW5wdXR0ZWQgdmFsdWVzIG11c3QgYmUgc2F2ZWQgYW5kIHJlc3RvcmVkIG9uIHJlLXJlbmRlci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlUGVyc2lzdFZhbHVlc01vZEVmZmVjdChhZGFwdGl2ZUNhcmQ6IEFkYXB0aXZlQ2FyZCkge1xuICBjb25zdCBwcmV2QWRhcHRpdmVDYXJkID0gdXNlUHJldmlvdXMoYWRhcHRpdmVDYXJkKTtcbiAgY29uc3QgdmFsdWVzTWFwUmVmID0gdXNlUmVmPE1hcDxDYXJkT2JqZWN0LCBTZXQ8c3RyaW5nPj4+KG5ldyBNYXAoKSk7XG5cbiAgcHJldkFkYXB0aXZlQ2FyZCA9PT0gYWRhcHRpdmVDYXJkIHx8IHZhbHVlc01hcFJlZi5jdXJyZW50LmNsZWFyKCk7XG5cbiAgY29uc3QgbW9kZGVyID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoYWRhcHRpdmVDYXJkOiBBZGFwdGl2ZUNhcmQpID0+IHtcbiAgICAgIGNvbnN0IHsgY3VycmVudDogdmFsdWVzTWFwIH0gPSB2YWx1ZXNNYXBSZWY7XG5cbiAgICAgIGFkYXB0aXZlQ2FyZC5nZXRBbGxJbnB1dHMoKS5mb3JFYWNoKGNhcmRPYmplY3QgPT4ge1xuICAgICAgICB2YWx1ZXNNYXAuaGFzKGNhcmRPYmplY3QpICYmIHNldFVzZXJWYWx1ZXMoY2FyZE9iamVjdC5yZW5kZXJlZEVsZW1lbnQsIHZhbHVlc01hcC5nZXQoY2FyZE9iamVjdCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHZhbHVlc01hcFJlZi5jdXJyZW50ID0gYWRhcHRpdmVDYXJkXG4gICAgICAgICAgLmdldEFsbElucHV0cygpXG4gICAgICAgICAgLnJlZHVjZTxNYXA8Q2FyZE9iamVjdCwgU2V0PHN0cmluZz4+PigodmFsdWVzTWFwLCBjYXJkT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldFVzZXJWYWx1ZXMoY2FyZE9iamVjdC5yZW5kZXJlZEVsZW1lbnQpO1xuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyA/IHZhbHVlc01hcC5zZXQoY2FyZE9iamVjdCwgdmFsdWUpIDogdmFsdWVzTWFwO1xuICAgICAgICAgIH0sIG5ldyBNYXAoKSk7XG4gICAgICB9O1xuICAgIH0sXG4gICAgW3ZhbHVlc01hcFJlZl1cbiAgKTtcblxuICByZXR1cm4gdXNlQWRhcHRpdmVDYXJkTW9kRWZmZWN0KG1vZGRlciwgYWRhcHRpdmVDYXJkKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLHlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFB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
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = useRoleModEffect;
9
-
10
8
  var _react = require("react");
11
-
12
9
  var _setOrRemoveAttributeIfFalseWithUndo = _interopRequireDefault(require("../../DOMManipulationWithUndo/setOrRemoveAttributeIfFalseWithUndo"));
13
-
14
10
  var _useAdaptiveCardModEffect = _interopRequireDefault(require("./private/useAdaptiveCardModEffect"));
15
-
16
11
  /**
17
12
  * Accessibility: "role" attribute must be set if "aria-label" is set.
18
13
  *
@@ -41,10 +36,11 @@ var _useAdaptiveCardModEffect = _interopRequireDefault(require("./private/useAda
41
36
  function useRoleModEffect(adaptiveCard) {
42
37
  var modder = (0, _react.useMemo)(function () {
43
38
  return function (_, cardElement) {
44
- return (0, _setOrRemoveAttributeIfFalseWithUndo.default)(cardElement, 'role', // "form" role requires either "aria-label", "aria-labelledby", or "title".
39
+ return (0, _setOrRemoveAttributeIfFalseWithUndo.default)(cardElement, 'role',
40
+ // "form" role requires either "aria-label", "aria-labelledby", or "title".
45
41
  cardElement.querySelector('button, input, select, textarea') && cardElement.getAttribute('aria-label') || cardElement.getAttribute('aria-labelledby') || cardElement.getAttribute('title') ? 'form' : 'figure');
46
42
  };
47
43
  }, []);
48
44
  return (0, _useAdaptiveCardModEffect.default)(modder, adaptiveCard);
49
45
  }
50
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSb2xlTW9kRWZmZWN0IiwiYWRhcHRpdmVDYXJkIiwibW9kZGVyIiwidXNlTWVtbyIsIl8iLCJjYXJkRWxlbWVudCIsInNldE9yUmVtb3ZlQXR0cmlidXRlSWZGYWxzZVdpdGhVbmRvIiwicXVlcnlTZWxlY3RvciIsImdldEF0dHJpYnV0ZSIsInVzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdCJdLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0aXZlQ2FyZHMvQXR0YWNobWVudC9BZGFwdGl2ZUNhcmRIYWNrcy91c2VSb2xlTW9kRWZmZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBzZXRPclJlbW92ZUF0dHJpYnV0ZUlmRmFsc2VXaXRoVW5kbyBmcm9tICcuLi8uLi9ET01NYW5pcHVsYXRpb25XaXRoVW5kby9zZXRPclJlbW92ZUF0dHJpYnV0ZUlmRmFsc2VXaXRoVW5kbyc7XG5pbXBvcnQgdXNlQWRhcHRpdmVDYXJkTW9kRWZmZWN0IGZyb20gJy4vcHJpdmF0ZS91c2VBZGFwdGl2ZUNhcmRNb2RFZmZlY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0aXZlQ2FyZCB9IGZyb20gJ2FkYXB0aXZlY2FyZHMnO1xuXG4vKipcbiAqIEFjY2Vzc2liaWxpdHk6IFwicm9sZVwiIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCBpZiBcImFyaWEtbGFiZWxcIiBpcyBzZXQuXG4gKlxuICogSXQgaXMgcG9zc2libGUgdG8gcmVuZGVyIGFuIEFkYXB0aXZlIENhcmQgd2l0aCBlbXB0eSBjb250ZW50IGJ1dCBcImFyaWEtbGFiZWxcIiBhdHRyaWJ1dGUuIFRoZSBBZGFwdGl2ZSBDYXJkcyBKU09OIGxvb2tzIGxpa2U6XG4gKlxuICogYGBganNvblxuICoge1xuICogICBcInR5cGVcIjogXCJBZGFwdGl2ZUNhcmRcIixcbiAqICAgXCJzcGVha1wiOiBcIkhlbGxvLCBXb3JsZCFcIixcbiAqICAgXCJib2R5XCI6IFtdLFxuICogICBcIiRzY2hlbWFcIjogXCJodHRwOi8vYWRhcHRpdmVjYXJkcy5pby9zY2hlbWFzL2FkYXB0aXZlLWNhcmQuanNvblwiLFxuICogICBcInZlcnNpb25cIjogXCIxLjVcIlxuICogfVxuICogYGBgXG4gKlxuICogVGhlIEhUTUwgb3V0cHV0IHdpbGwgYmU6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdiBjbGFzcz1cImFjLWFkYXB0aXZlQ2FyZFwiIGFyaWEtbGFiZWw9XCJIZWxsbywgV29ybGQhXCI+PC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBUaGlzIHZpb2xhdGVzIFdBSS1BUklBIGJlY2F1c2UgXCJhcmlhLWxhYmVsXCIgbXVzdCBub3QgYmUgc2V0IG9uIGFuIGVsZW1lbnQgd2l0aG91dCBhIFwicm9sZVwiLlxuICpcbiAqIFdlIG5lZWQgdG8gc2V0IFwicm9sZVwiIGF0dHJpYnV0ZSB0byBcImZvcm1cIiBpZiB0aGUgY2FyZCBoYXMgYW55IGlucHV0IGZpZWxkcyBhbmQgaXMgdmFsaWQgYXMgYSBcImZvcm1cIiByb2xlLCBvdGhlcndpc2UsIFwiZmlndXJlXCIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVJvbGVNb2RFZmZlY3QoXG4gIGFkYXB0aXZlQ2FyZDogQWRhcHRpdmVDYXJkXG4pOiByZWFkb25seSBbKGNhcmRFbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gdm9pZCwgKCkgPT4gdm9pZF0ge1xuICBjb25zdCBtb2RkZXIgPSB1c2VNZW1vKFxuICAgICgpID0+IChfLCBjYXJkRWxlbWVudDogSFRNTEVsZW1lbnQpID0+XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZUlmRmFsc2VXaXRoVW5kbyhcbiAgICAgICAgY2FyZEVsZW1lbnQsXG4gICAgICAgICdyb2xlJyxcbiAgICAgICAgLy8gXCJmb3JtXCIgcm9sZSByZXF1aXJlcyBlaXRoZXIgXCJhcmlhLWxhYmVsXCIsIFwiYXJpYS1sYWJlbGxlZGJ5XCIsIG9yIFwidGl0bGVcIi5cbiAgICAgICAgKGNhcmRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbiwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEnKSAmJiBjYXJkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSkgfHxcbiAgICAgICAgICBjYXJkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpIHx8XG4gICAgICAgICAgY2FyZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0aXRsZScpXG4gICAgICAgICAgPyAnZm9ybSdcbiAgICAgICAgICA6ICdmaWd1cmUnXG4gICAgICApLFxuICAgIFtdXG4gICk7XG5cbiAgcmV0dXJuIHVzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdChtb2RkZXIsIGFkYXB0aXZlQ2FyZCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsU0FBU0EsZ0JBQVQsQ0FDYkMsWUFEYSxFQUU4QztFQUMzRCxJQUFNQyxNQUFNLEdBQUcsSUFBQUMsY0FBQSxFQUNiO0lBQUEsT0FBTSxVQUFDQyxDQUFELEVBQUlDLFdBQUo7TUFBQSxPQUNKLElBQUFDLDRDQUFBLEVBQ0VELFdBREYsRUFFRSxNQUZGLEVBR0U7TUFDQ0EsV0FBVyxDQUFDRSxhQUFaLENBQTBCLGlDQUExQixLQUFnRUYsV0FBVyxDQUFDRyxZQUFaLENBQXlCLFlBQXpCLENBQWpFLElBQ0VILFdBQVcsQ0FBQ0csWUFBWixDQUF5QixpQkFBekIsQ0FERixJQUVFSCxXQUFXLENBQUNHLFlBQVosQ0FBeUIsT0FBekIsQ0FGRixHQUdJLE1BSEosR0FJSSxRQVJOLENBREk7SUFBQSxDQUFOO0VBQUEsQ0FEYSxFQVliLEVBWmEsQ0FBZjtFQWVBLE9BQU8sSUFBQUMsaUNBQUEsRUFBeUJQLE1BQXpCLEVBQWlDRCxZQUFqQyxDQUFQO0FBQ0QifQ==
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3NldE9yUmVtb3ZlQXR0cmlidXRlSWZGYWxzZVdpdGhVbmRvIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VBZGFwdGl2ZUNhcmRNb2RFZmZlY3QiLCJ1c2VSb2xlTW9kRWZmZWN0IiwiYWRhcHRpdmVDYXJkIiwibW9kZGVyIiwidXNlTWVtbyIsIl8iLCJjYXJkRWxlbWVudCIsInNldE9yUmVtb3ZlQXR0cmlidXRlSWZGYWxzZVdpdGhVbmRvIiwicXVlcnlTZWxlY3RvciIsImdldEF0dHJpYnV0ZSIsInVzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdCJdLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0aXZlQ2FyZHMvQXR0YWNobWVudC9BZGFwdGl2ZUNhcmRIYWNrcy91c2VSb2xlTW9kRWZmZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBzZXRPclJlbW92ZUF0dHJpYnV0ZUlmRmFsc2VXaXRoVW5kbyBmcm9tICcuLi8uLi9ET01NYW5pcHVsYXRpb25XaXRoVW5kby9zZXRPclJlbW92ZUF0dHJpYnV0ZUlmRmFsc2VXaXRoVW5kbyc7XG5pbXBvcnQgdXNlQWRhcHRpdmVDYXJkTW9kRWZmZWN0IGZyb20gJy4vcHJpdmF0ZS91c2VBZGFwdGl2ZUNhcmRNb2RFZmZlY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0aXZlQ2FyZCB9IGZyb20gJ2FkYXB0aXZlY2FyZHMnO1xuXG4vKipcbiAqIEFjY2Vzc2liaWxpdHk6IFwicm9sZVwiIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCBpZiBcImFyaWEtbGFiZWxcIiBpcyBzZXQuXG4gKlxuICogSXQgaXMgcG9zc2libGUgdG8gcmVuZGVyIGFuIEFkYXB0aXZlIENhcmQgd2l0aCBlbXB0eSBjb250ZW50IGJ1dCBcImFyaWEtbGFiZWxcIiBhdHRyaWJ1dGUuIFRoZSBBZGFwdGl2ZSBDYXJkcyBKU09OIGxvb2tzIGxpa2U6XG4gKlxuICogYGBganNvblxuICoge1xuICogICBcInR5cGVcIjogXCJBZGFwdGl2ZUNhcmRcIixcbiAqICAgXCJzcGVha1wiOiBcIkhlbGxvLCBXb3JsZCFcIixcbiAqICAgXCJib2R5XCI6IFtdLFxuICogICBcIiRzY2hlbWFcIjogXCJodHRwOi8vYWRhcHRpdmVjYXJkcy5pby9zY2hlbWFzL2FkYXB0aXZlLWNhcmQuanNvblwiLFxuICogICBcInZlcnNpb25cIjogXCIxLjVcIlxuICogfVxuICogYGBgXG4gKlxuICogVGhlIEhUTUwgb3V0cHV0IHdpbGwgYmU6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdiBjbGFzcz1cImFjLWFkYXB0aXZlQ2FyZFwiIGFyaWEtbGFiZWw9XCJIZWxsbywgV29ybGQhXCI+PC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBUaGlzIHZpb2xhdGVzIFdBSS1BUklBIGJlY2F1c2UgXCJhcmlhLWxhYmVsXCIgbXVzdCBub3QgYmUgc2V0IG9uIGFuIGVsZW1lbnQgd2l0aG91dCBhIFwicm9sZVwiLlxuICpcbiAqIFdlIG5lZWQgdG8gc2V0IFwicm9sZVwiIGF0dHJpYnV0ZSB0byBcImZvcm1cIiBpZiB0aGUgY2FyZCBoYXMgYW55IGlucHV0IGZpZWxkcyBhbmQgaXMgdmFsaWQgYXMgYSBcImZvcm1cIiByb2xlLCBvdGhlcndpc2UsIFwiZmlndXJlXCIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVJvbGVNb2RFZmZlY3QoXG4gIGFkYXB0aXZlQ2FyZDogQWRhcHRpdmVDYXJkXG4pOiByZWFkb25seSBbKGNhcmRFbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gdm9pZCwgKCkgPT4gdm9pZF0ge1xuICBjb25zdCBtb2RkZXIgPSB1c2VNZW1vKFxuICAgICgpID0+IChfLCBjYXJkRWxlbWVudDogSFRNTEVsZW1lbnQpID0+XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZUlmRmFsc2VXaXRoVW5kbyhcbiAgICAgICAgY2FyZEVsZW1lbnQsXG4gICAgICAgICdyb2xlJyxcbiAgICAgICAgLy8gXCJmb3JtXCIgcm9sZSByZXF1aXJlcyBlaXRoZXIgXCJhcmlhLWxhYmVsXCIsIFwiYXJpYS1sYWJlbGxlZGJ5XCIsIG9yIFwidGl0bGVcIi5cbiAgICAgICAgKGNhcmRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbiwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEnKSAmJiBjYXJkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSkgfHxcbiAgICAgICAgICBjYXJkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpIHx8XG4gICAgICAgICAgY2FyZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0aXRsZScpXG4gICAgICAgICAgPyAnZm9ybSdcbiAgICAgICAgICA6ICdmaWd1cmUnXG4gICAgICApLFxuICAgIFtdXG4gICk7XG5cbiAgcmV0dXJuIHVzZUFkYXB0aXZlQ2FyZE1vZEVmZmVjdChtb2RkZXIsIGFkYXB0aXZlQ2FyZCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxvQ0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcseUJBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsU0FBU0ksZ0JBQWdCQSxDQUN0Q0MsWUFBMEIsRUFDaUM7RUFDM0QsSUFBTUMsTUFBTSxHQUFHLElBQUFDLGNBQU8sRUFDcEI7SUFBQSxPQUFNLFVBQUNDLENBQUMsRUFBRUMsV0FBd0I7TUFBQSxPQUNoQyxJQUFBQyw0Q0FBbUMsRUFDakNELFdBQVcsRUFDWCxNQUFNO01BQ047TUFDQ0EsV0FBVyxDQUFDRSxhQUFhLENBQUMsaUNBQWlDLENBQUMsSUFBSUYsV0FBVyxDQUFDRyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQ3JHSCxXQUFXLENBQUNHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUMzQ0gsV0FBVyxDQUFDRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQy9CLE1BQU0sR0FDTixRQUNOLENBQUM7SUFBQTtFQUFBLEdBQ0gsRUFDRixDQUFDO0VBRUQsT0FBTyxJQUFBQyxpQ0FBd0IsRUFBQ1AsTUFBTSxFQUFFRCxZQUFZLENBQUM7QUFDdkQifQ==
@@ -1,83 +1,57 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.default = void 0;
11
-
12
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
-
14
10
  var _botframeworkWebchatComponent = require("botframework-webchat-component");
15
-
16
11
  var _classnames = _interopRequireDefault(require("classnames"));
17
-
18
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
-
20
13
  var _react = _interopRequireWildcard(require("react"));
21
-
22
14
  var _renderAdaptiveCard = _interopRequireDefault(require("./private/renderAdaptiveCard"));
23
-
24
15
  var _useActionSetShouldNotBeMenuBarModEffect = _interopRequireDefault(require("./AdaptiveCardHacks/useActionSetShouldNotBeMenuBarModEffect"));
25
-
26
16
  var _useActionShouldBePushButtonModEffect = _interopRequireDefault(require("./AdaptiveCardHacks/useActionShouldBePushButtonModEffect"));
27
-
28
17
  var _useActiveElementModEffect = _interopRequireDefault(require("./AdaptiveCardHacks/useActiveElementModEffect"));
29
-
30
18
  var _useAdaptiveCardsHostConfig = _interopRequireDefault(require("../hooks/useAdaptiveCardsHostConfig"));
31
-
32
19
  var _useAdaptiveCardsPackage = _interopRequireDefault(require("../hooks/useAdaptiveCardsPackage"));
33
-
34
20
  var _useDisabledModEffect3 = _interopRequireDefault(require("./AdaptiveCardHacks/useDisabledModEffect"));
35
-
36
21
  var _usePersistValuesModEffect = _interopRequireDefault(require("./AdaptiveCardHacks/usePersistValuesModEffect"));
37
-
38
22
  var _useRoleModEffect3 = _interopRequireDefault(require("./AdaptiveCardHacks/useRoleModEffect"));
39
-
40
23
  var _useStyleSet3 = _interopRequireDefault(require("../../hooks/useStyleSet"));
41
-
42
24
  var _useValueRef = _interopRequireDefault(require("./AdaptiveCardHacks/private/useValueRef"));
43
-
44
25
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
45
-
46
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
47
-
48
27
  /* eslint no-magic-numbers: ["error", { "ignore": [-1, 0, 2] }] */
28
+
49
29
  var ErrorBox = _botframeworkWebchatComponent.Components.ErrorBox;
50
30
  var useDisabled = _botframeworkWebchatComponent.hooks.useDisabled,
51
- useLocalizer = _botframeworkWebchatComponent.hooks.useLocalizer,
52
- usePerformCardAction = _botframeworkWebchatComponent.hooks.usePerformCardAction,
53
- useRenderMarkdownAsHTML = _botframeworkWebchatComponent.hooks.useRenderMarkdownAsHTML,
54
- useScrollToEnd = _botframeworkWebchatComponent.hooks.useScrollToEnd;
31
+ useLocalizer = _botframeworkWebchatComponent.hooks.useLocalizer,
32
+ usePerformCardAction = _botframeworkWebchatComponent.hooks.usePerformCardAction,
33
+ useRenderMarkdownAsHTML = _botframeworkWebchatComponent.hooks.useRenderMarkdownAsHTML,
34
+ useScrollToEnd = _botframeworkWebchatComponent.hooks.useScrollToEnd;
55
35
  var node_env = undefined || "production";
56
-
57
36
  var AdaptiveCardRenderer = function AdaptiveCardRenderer(_ref) {
58
37
  var actionPerformedClassName = _ref.actionPerformedClassName,
59
- adaptiveCard = _ref.adaptiveCard,
60
- disabledFromProps = _ref.disabled,
61
- tapAction = _ref.tapAction;
62
-
38
+ adaptiveCard = _ref.adaptiveCard,
39
+ disabledFromProps = _ref.disabled,
40
+ tapAction = _ref.tapAction;
63
41
  var _useStyleSet = (0, _useStyleSet3.default)(),
64
- _useStyleSet2 = (0, _slicedToArray2.default)(_useStyleSet, 1),
65
- adaptiveCardRendererStyleSet = _useStyleSet2[0].adaptiveCardRenderer;
66
-
42
+ _useStyleSet2 = (0, _slicedToArray2.default)(_useStyleSet, 1),
43
+ adaptiveCardRendererStyleSet = _useStyleSet2[0].adaptiveCardRenderer;
67
44
  var _useAdaptiveCardsPack = (0, _useAdaptiveCardsPackage.default)(),
68
- _useAdaptiveCardsPack2 = (0, _slicedToArray2.default)(_useAdaptiveCardsPack, 1),
69
- _useAdaptiveCardsPack3 = _useAdaptiveCardsPack2[0],
70
- GlobalSettings = _useAdaptiveCardsPack3.GlobalSettings,
71
- HostConfig = _useAdaptiveCardsPack3.HostConfig;
72
-
45
+ _useAdaptiveCardsPack2 = (0, _slicedToArray2.default)(_useAdaptiveCardsPack, 1),
46
+ _useAdaptiveCardsPack3 = _useAdaptiveCardsPack2[0],
47
+ GlobalSettings = _useAdaptiveCardsPack3.GlobalSettings,
48
+ HostConfig = _useAdaptiveCardsPack3.HostConfig;
73
49
  var _useAdaptiveCardsHost = (0, _useAdaptiveCardsHostConfig.default)(),
74
- _useAdaptiveCardsHost2 = (0, _slicedToArray2.default)(_useAdaptiveCardsHost, 1),
75
- adaptiveCardsHostConfig = _useAdaptiveCardsHost2[0];
76
-
50
+ _useAdaptiveCardsHost2 = (0, _slicedToArray2.default)(_useAdaptiveCardsHost, 1),
51
+ adaptiveCardsHostConfig = _useAdaptiveCardsHost2[0];
77
52
  var _useDisabled = useDisabled(),
78
- _useDisabled2 = (0, _slicedToArray2.default)(_useDisabled, 1),
79
- disabledFromComposer = _useDisabled2[0];
80
-
53
+ _useDisabled2 = (0, _slicedToArray2.default)(_useDisabled, 1),
54
+ disabledFromComposer = _useDisabled2[0];
81
55
  var contentRef = (0, _react.useRef)();
82
56
  var localize = useLocalizer();
83
57
  var performCardAction = usePerformCardAction();
@@ -85,62 +59,63 @@ var AdaptiveCardRenderer = function AdaptiveCardRenderer(_ref) {
85
59
  var scrollToEnd = useScrollToEnd();
86
60
  var disabled = disabledFromComposer || disabledFromProps;
87
61
  var tapActionRef = (0, _useValueRef.default)(tapAction);
88
- var disabledRef = (0, _useValueRef.default)(disabled); // TODO: [P2] #3199 We should consider using `adaptiveCard.selectAction` instead.
89
- // The null check for "tapAction" is in "handleClickAndKeyPressForTapAction".
62
+ var disabledRef = (0, _useValueRef.default)(disabled);
90
63
 
64
+ // TODO: [P2] #3199 We should consider using `adaptiveCard.selectAction` instead.
65
+ // The null check for "tapAction" is in "handleClickAndKeyPressForTapAction".
91
66
  var handleClickAndKeyPress = (0, _react.useCallback)(function (event) {
92
67
  var _ref2 = event,
93
- key = _ref2.key,
94
- type = _ref2.type;
95
- var target = event.target; // Some items, e.g. tappable text, cannot be disabled thru DOM attributes
68
+ key = _ref2.key,
69
+ type = _ref2.type;
70
+ var target = event.target;
96
71
 
72
+ // Some items, e.g. tappable text, cannot be disabled thru DOM attributes
97
73
  var current = contentRef.current;
98
74
  var adaptiveCardRoot = current.querySelector('.ac-adaptiveCard[tabindex="0"]');
99
-
100
75
  if (!adaptiveCardRoot) {
101
76
  return console.warn('botframework-webchat: No Adaptive Card root container can be found; the card is probably on an unsupported Adaptive Card version.');
102
- } // For "keypress" event, we only listen to ENTER and SPACEBAR key.
103
-
77
+ }
104
78
 
79
+ // For "keypress" event, we only listen to ENTER and SPACEBAR key.
105
80
  if (type === 'keypress') {
106
81
  if (key !== 'Enter' && key !== ' ') {
107
82
  return;
108
83
  }
109
-
110
84
  event.preventDefault();
111
- } // We will call performCardAction if either:
85
+ }
86
+
87
+ // We will call performCardAction if either:
112
88
  // 1. We are on the target, or
113
89
  // 2. The event-dispatching element is not interactive
114
-
115
-
116
90
  if (target !== adaptiveCardRoot) {
117
- var tabIndex = (0, _botframeworkWebchatComponent.getTabIndex)(target); // If the user is clicking on something that is already clickable, do not allow them to click the card.
118
- // E.g. a hero card can be tappable, and image and buttons inside the hero card can also be tappable.
91
+ var tabIndex = (0, _botframeworkWebchatComponent.getTabIndex)(target);
119
92
 
93
+ // If the user is clicking on something that is already clickable, do not allow them to click the card.
94
+ // E.g. a hero card can be tappable, and image and buttons inside the hero card can also be tappable.
120
95
  if (typeof tabIndex === 'number' && tabIndex >= 0) {
121
96
  return;
122
97
  }
123
98
  }
124
-
125
99
  performCardAction(tapActionRef.current);
126
100
  scrollToEnd();
127
- }, [contentRef, performCardAction, scrollToEnd, tapActionRef]); // Only listen to event if it is not disabled and have "tapAction" prop.
101
+ }, [contentRef, performCardAction, scrollToEnd, tapActionRef]);
128
102
 
103
+ // Only listen to event if it is not disabled and have "tapAction" prop.
129
104
  var handleClickAndKeyPressForTapAction = !disabled && tapAction ? handleClickAndKeyPress : undefined;
130
105
  var handleExecuteAction = (0, _react.useCallback)(function (action) {
131
106
  // Some items, e.g. tappable image, cannot be disabled thru DOM attributes
132
107
  if (disabledRef.current) {
133
108
  return;
134
109
  }
135
-
136
110
  var actionTypeName = action.getJsonTypeName();
137
111
  var image = action.iconUrl,
138
- title = action.title; // We cannot use "instanceof" check here, because web devs may bring their own version of Adaptive Cards package.
139
- // We need to check using "getJsonTypeName()" instead.
112
+ title = action.title;
140
113
 
114
+ // We cannot use "instanceof" check here, because web devs may bring their own version of Adaptive Cards package.
115
+ // We need to check using "getJsonTypeName()" instead.
141
116
  if (actionTypeName === 'Action.OpenUrl') {
142
117
  var _ref3 = action,
143
- value = _ref3.url;
118
+ value = _ref3.url;
144
119
  performCardAction({
145
120
  image: image,
146
121
  title: title,
@@ -149,8 +124,7 @@ var AdaptiveCardRenderer = function AdaptiveCardRenderer(_ref) {
149
124
  });
150
125
  } else if (actionTypeName === 'Action.Submit') {
151
126
  var _ref4 = action,
152
- data = _ref4.data;
153
-
127
+ data = _ref4.data;
154
128
  if (typeof data !== 'undefined') {
155
129
  if (typeof data === 'string') {
156
130
  performCardAction({
@@ -170,66 +144,58 @@ var AdaptiveCardRenderer = function AdaptiveCardRenderer(_ref) {
170
144
  });
171
145
  }
172
146
  }
173
-
174
147
  scrollToEnd();
175
148
  } else {
176
149
  console.error("Web Chat: received unknown action from Adaptive Cards");
177
150
  console.error(action);
178
151
  }
179
- }, [disabledRef, performCardAction, scrollToEnd]); // For accessibility issue #1340, `tabindex="0"` must not be set for the root container if it is not interactive.
152
+ }, [disabledRef, performCardAction, scrollToEnd]);
180
153
 
154
+ // For accessibility issue #1340, `tabindex="0"` must not be set for the root container if it is not interactive.
181
155
  var setTabIndexAtCardRoot = !!tapAction;
182
-
183
156
  var _useActionShouldBePus = (0, _useActionShouldBePushButtonModEffect.default)(adaptiveCard),
184
- _useActionShouldBePus2 = (0, _slicedToArray2.default)(_useActionShouldBePus, 2),
185
- applyActionShouldBePushButtonMod = _useActionShouldBePus2[0],
186
- undoActionShouldBePushButtonMod = _useActionShouldBePus2[1];
187
-
157
+ _useActionShouldBePus2 = (0, _slicedToArray2.default)(_useActionShouldBePus, 2),
158
+ applyActionShouldBePushButtonMod = _useActionShouldBePus2[0],
159
+ undoActionShouldBePushButtonMod = _useActionShouldBePus2[1];
188
160
  var _useActionSetShouldNo = (0, _useActionSetShouldNotBeMenuBarModEffect.default)(adaptiveCard),
189
- _useActionSetShouldNo2 = (0, _slicedToArray2.default)(_useActionSetShouldNo, 2),
190
- applyActionSetShouldNotBeMenuBarMod = _useActionSetShouldNo2[0],
191
- undoActionSetShouldNotBeMenuBarMod = _useActionSetShouldNo2[1];
192
-
161
+ _useActionSetShouldNo2 = (0, _slicedToArray2.default)(_useActionSetShouldNo, 2),
162
+ applyActionSetShouldNotBeMenuBarMod = _useActionSetShouldNo2[0],
163
+ undoActionSetShouldNotBeMenuBarMod = _useActionSetShouldNo2[1];
193
164
  var _useActiveElementModE = (0, _useActiveElementModEffect.default)(adaptiveCard),
194
- _useActiveElementModE2 = (0, _slicedToArray2.default)(_useActiveElementModE, 2),
195
- applyActiveElementMod = _useActiveElementModE2[0],
196
- undoActiveElementMod = _useActiveElementModE2[1];
197
-
165
+ _useActiveElementModE2 = (0, _slicedToArray2.default)(_useActiveElementModE, 2),
166
+ applyActiveElementMod = _useActiveElementModE2[0],
167
+ undoActiveElementMod = _useActiveElementModE2[1];
198
168
  var _useDisabledModEffect = (0, _useDisabledModEffect3.default)(adaptiveCard),
199
- _useDisabledModEffect2 = (0, _slicedToArray2.default)(_useDisabledModEffect, 2),
200
- applyDisabledMod = _useDisabledModEffect2[0],
201
- undoDisabledMod = _useDisabledModEffect2[1];
202
-
169
+ _useDisabledModEffect2 = (0, _slicedToArray2.default)(_useDisabledModEffect, 2),
170
+ applyDisabledMod = _useDisabledModEffect2[0],
171
+ undoDisabledMod = _useDisabledModEffect2[1];
203
172
  var _usePersistValuesModE = (0, _usePersistValuesModEffect.default)(adaptiveCard),
204
- _usePersistValuesModE2 = (0, _slicedToArray2.default)(_usePersistValuesModE, 2),
205
- applyPersistValuesMod = _usePersistValuesModE2[0],
206
- undoPersistValuesMod = _usePersistValuesModE2[1];
207
-
173
+ _usePersistValuesModE2 = (0, _slicedToArray2.default)(_usePersistValuesModE, 2),
174
+ applyPersistValuesMod = _usePersistValuesModE2[0],
175
+ undoPersistValuesMod = _usePersistValuesModE2[1];
208
176
  var _useRoleModEffect = (0, _useRoleModEffect3.default)(adaptiveCard),
209
- _useRoleModEffect2 = (0, _slicedToArray2.default)(_useRoleModEffect, 2),
210
- applyRoleMod = _useRoleModEffect2[0],
211
- undoRoleMod = _useRoleModEffect2[1];
212
-
177
+ _useRoleModEffect2 = (0, _slicedToArray2.default)(_useRoleModEffect, 2),
178
+ applyRoleMod = _useRoleModEffect2[0],
179
+ undoRoleMod = _useRoleModEffect2[1];
213
180
  var _useMemo = (0, _react.useMemo)(function () {
214
- undoActionShouldBePushButtonMod();
215
- undoActionSetShouldNotBeMenuBarMod();
216
- undoActiveElementMod();
217
- undoDisabledMod();
218
- undoPersistValuesMod();
219
- undoRoleMod();
220
- return (0, _renderAdaptiveCard.default)(adaptiveCard, {
221
- adaptiveCardsHostConfig: adaptiveCardsHostConfig,
222
- adaptiveCardsPackage: {
223
- GlobalSettings: GlobalSettings,
224
- HostConfig: HostConfig
225
- },
226
- renderMarkdownAsHTML: renderMarkdownAsHTML,
227
- setTabIndexAtCardRoot: setTabIndexAtCardRoot
228
- });
229
- }, [adaptiveCard, adaptiveCardsHostConfig, GlobalSettings, HostConfig, renderMarkdownAsHTML, setTabIndexAtCardRoot, undoActionShouldBePushButtonMod, undoActionSetShouldNotBeMenuBarMod, undoActiveElementMod, undoDisabledMod, undoPersistValuesMod, undoRoleMod]),
230
- element = _useMemo.element,
231
- errors = _useMemo.errors;
232
-
181
+ undoActionShouldBePushButtonMod();
182
+ undoActionSetShouldNotBeMenuBarMod();
183
+ undoActiveElementMod();
184
+ undoDisabledMod();
185
+ undoPersistValuesMod();
186
+ undoRoleMod();
187
+ return (0, _renderAdaptiveCard.default)(adaptiveCard, {
188
+ adaptiveCardsHostConfig: adaptiveCardsHostConfig,
189
+ adaptiveCardsPackage: {
190
+ GlobalSettings: GlobalSettings,
191
+ HostConfig: HostConfig
192
+ },
193
+ renderMarkdownAsHTML: renderMarkdownAsHTML,
194
+ setTabIndexAtCardRoot: setTabIndexAtCardRoot
195
+ });
196
+ }, [adaptiveCard, adaptiveCardsHostConfig, GlobalSettings, HostConfig, renderMarkdownAsHTML, setTabIndexAtCardRoot, undoActionShouldBePushButtonMod, undoActionSetShouldNotBeMenuBarMod, undoActiveElementMod, undoDisabledMod, undoPersistValuesMod, undoRoleMod]),
197
+ element = _useMemo.element,
198
+ errors = _useMemo.errors;
233
199
  (0, _react.useMemo)(function () {
234
200
  adaptiveCard.onExecuteAction = handleExecuteAction;
235
201
  }, [adaptiveCard, handleExecuteAction]);
@@ -239,9 +205,10 @@ var AdaptiveCardRenderer = function AdaptiveCardRenderer(_ref) {
239
205
  return function () {
240
206
  current === null || current === void 0 ? void 0 : current.removeChild(element);
241
207
  };
242
- }, [contentRef, element]); // Apply all mods regardless whether the element changed or not.
243
- // This is because we have undoed mods when we call the `useXXXModEffect` hook.
208
+ }, [contentRef, element]);
244
209
 
210
+ // Apply all mods regardless whether the element changed or not.
211
+ // This is because we have undoed mods when we call the `useXXXModEffect` hook.
245
212
  (0, _react.useLayoutEffect)(function () {
246
213
  if (element) {
247
214
  applyActionShouldBePushButtonMod(element, actionPerformedClassName);
@@ -263,7 +230,6 @@ var AdaptiveCardRenderer = function AdaptiveCardRenderer(_ref) {
263
230
  ref: contentRef
264
231
  });
265
232
  };
266
-
267
233
  AdaptiveCardRenderer.defaultProps = {
268
234
  actionPerformedClassName: '',
269
235
  disabled: undefined,
@@ -284,4 +250,4 @@ AdaptiveCardRenderer.propTypes = {
284
250
  };
285
251
  var _default = AdaptiveCardRenderer;
286
252
  exports.default = _default;
287
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvckJveCIsIkNvbXBvbmVudHMiLCJ1c2VEaXNhYmxlZCIsImhvb2tzIiwidXNlTG9jYWxpemVyIiwidXNlUGVyZm9ybUNhcmRBY3Rpb24iLCJ1c2VSZW5kZXJNYXJrZG93bkFzSFRNTCIsInVzZVNjcm9sbFRvRW5kIiwibm9kZV9lbnYiLCJBZGFwdGl2ZUNhcmRSZW5kZXJlciIsImFjdGlvblBlcmZvcm1lZENsYXNzTmFtZSIsImFkYXB0aXZlQ2FyZCIsImRpc2FibGVkRnJvbVByb3BzIiwiZGlzYWJsZWQiLCJ0YXBBY3Rpb24iLCJ1c2VTdHlsZVNldCIsImFkYXB0aXZlQ2FyZFJlbmRlcmVyU3R5bGVTZXQiLCJhZGFwdGl2ZUNhcmRSZW5kZXJlciIsInVzZUFkYXB0aXZlQ2FyZHNQYWNrYWdlIiwiR2xvYmFsU2V0dGluZ3MiLCJIb3N0Q29uZmlnIiwidXNlQWRhcHRpdmVDYXJkc0hvc3RDb25maWciLCJhZGFwdGl2ZUNhcmRzSG9zdENvbmZpZyIsImRpc2FibGVkRnJvbUNvbXBvc2VyIiwiY29udGVudFJlZiIsInVzZVJlZiIsImxvY2FsaXplIiwicGVyZm9ybUNhcmRBY3Rpb24iLCJyZW5kZXJNYXJrZG93bkFzSFRNTCIsInNjcm9sbFRvRW5kIiwidGFwQWN0aW9uUmVmIiwidXNlVmFsdWVSZWYiLCJkaXNhYmxlZFJlZiIsImhhbmRsZUNsaWNrQW5kS2V5UHJlc3MiLCJ1c2VDYWxsYmFjayIsImV2ZW50Iiwia2V5IiwidHlwZSIsInRhcmdldCIsImN1cnJlbnQiLCJhZGFwdGl2ZUNhcmRSb290IiwicXVlcnlTZWxlY3RvciIsImNvbnNvbGUiLCJ3YXJuIiwicHJldmVudERlZmF1bHQiLCJ0YWJJbmRleCIsImdldFRhYkluZGV4IiwiaGFuZGxlQ2xpY2tBbmRLZXlQcmVzc0ZvclRhcEFjdGlvbiIsInVuZGVmaW5lZCIsImhhbmRsZUV4ZWN1dGVBY3Rpb24iLCJhY3Rpb24iLCJhY3Rpb25UeXBlTmFtZSIsImdldEpzb25UeXBlTmFtZSIsImltYWdlIiwiaWNvblVybCIsInRpdGxlIiwidmFsdWUiLCJ1cmwiLCJkYXRhIiwiX19pc0JvdEZyYW1ld29ya0NhcmRBY3Rpb24iLCJjYXJkQWN0aW9uIiwiZXJyb3IiLCJzZXRUYWJJbmRleEF0Q2FyZFJvb3QiLCJ1c2VBY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2RFZmZlY3QiLCJhcHBseUFjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZCIsInVuZG9BY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2QiLCJ1c2VBY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2RFZmZlY3QiLCJhcHBseUFjdGlvblNldFNob3VsZE5vdEJlTWVudUJhck1vZCIsInVuZG9BY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2QiLCJ1c2VBY3RpdmVFbGVtZW50TW9kRWZmZWN0IiwiYXBwbHlBY3RpdmVFbGVtZW50TW9kIiwidW5kb0FjdGl2ZUVsZW1lbnRNb2QiLCJ1c2VEaXNhYmxlZE1vZEVmZmVjdCIsImFwcGx5RGlzYWJsZWRNb2QiLCJ1bmRvRGlzYWJsZWRNb2QiLCJ1c2VQZXJzaXN0VmFsdWVzTW9kRWZmZWN0IiwiYXBwbHlQZXJzaXN0VmFsdWVzTW9kIiwidW5kb1BlcnNpc3RWYWx1ZXNNb2QiLCJ1c2VSb2xlTW9kRWZmZWN0IiwiYXBwbHlSb2xlTW9kIiwidW5kb1JvbGVNb2QiLCJ1c2VNZW1vIiwicmVuZGVyQWRhcHRpdmVDYXJkIiwiYWRhcHRpdmVDYXJkc1BhY2thZ2UiLCJlbGVtZW50IiwiZXJyb3JzIiwib25FeGVjdXRlQWN0aW9uIiwidXNlTGF5b3V0RWZmZWN0IiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImxlbmd0aCIsImNsYXNzTmFtZXMiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJhbnkiLCJpc1JlcXVpcmVkIiwiYm9vbCIsInNoYXBlIl0sInNvdXJjZVJvb3QiOiJidW5kbGU6Ly8vIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRpdmVDYXJkcy9BdHRhY2htZW50L0FkYXB0aXZlQ2FyZFJlbmRlcmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tbWFnaWMtbnVtYmVyczogW1wiZXJyb3JcIiwgeyBcImlnbm9yZVwiOiBbLTEsIDAsIDJdIH1dICovXG5cbmltcG9ydCB7IEFjdGlvbiBhcyBBZGFwdGl2ZUNhcmRBY3Rpb24sIEFkYXB0aXZlQ2FyZCwgT3BlblVybEFjdGlvbiwgU3VibWl0QWN0aW9uIH0gZnJvbSAnYWRhcHRpdmVjYXJkcyc7XG5pbXBvcnQgeyBDb21wb25lbnRzLCBnZXRUYWJJbmRleCwgaG9va3MgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1jb21wb25lbnQnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50SGFuZGxlcixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICBWRkNcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RMaW5lQ2FyZEFjdGlvbiB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWNvcmUnO1xuXG5pbXBvcnQgeyBCb3RGcmFtZXdvcmtDYXJkQWN0aW9uIH0gZnJvbSAnLi9BZGFwdGl2ZUNhcmRCdWlsZGVyJztcbmltcG9ydCByZW5kZXJBZGFwdGl2ZUNhcmQgZnJvbSAnLi9wcml2YXRlL3JlbmRlckFkYXB0aXZlQ2FyZCc7XG5pbXBvcnQgdXNlQWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kRWZmZWN0IGZyb20gJy4vQWRhcHRpdmVDYXJkSGFja3MvdXNlQWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kRWZmZWN0JztcbmltcG9ydCB1c2VBY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2RFZmZlY3QgZnJvbSAnLi9BZGFwdGl2ZUNhcmRIYWNrcy91c2VBY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2RFZmZlY3QnO1xuaW1wb3J0IHVzZUFjdGl2ZUVsZW1lbnRNb2RFZmZlY3QgZnJvbSAnLi9BZGFwdGl2ZUNhcmRIYWNrcy91c2VBY3RpdmVFbGVtZW50TW9kRWZmZWN0JztcbmltcG9ydCB1c2VBZGFwdGl2ZUNhcmRzSG9zdENvbmZpZyBmcm9tICcuLi9ob29rcy91c2VBZGFwdGl2ZUNhcmRzSG9zdENvbmZpZyc7XG5pbXBvcnQgdXNlQWRhcHRpdmVDYXJkc1BhY2thZ2UgZnJvbSAnLi4vaG9va3MvdXNlQWRhcHRpdmVDYXJkc1BhY2thZ2UnO1xuaW1wb3J0IHVzZURpc2FibGVkTW9kRWZmZWN0IGZyb20gJy4vQWRhcHRpdmVDYXJkSGFja3MvdXNlRGlzYWJsZWRNb2RFZmZlY3QnO1xuaW1wb3J0IHVzZVBlcnNpc3RWYWx1ZXNNb2RFZmZlY3QgZnJvbSAnLi9BZGFwdGl2ZUNhcmRIYWNrcy91c2VQZXJzaXN0VmFsdWVzTW9kRWZmZWN0JztcbmltcG9ydCB1c2VSb2xlTW9kRWZmZWN0IGZyb20gJy4vQWRhcHRpdmVDYXJkSGFja3MvdXNlUm9sZU1vZEVmZmVjdCc7XG5pbXBvcnQgdXNlU3R5bGVTZXQgZnJvbSAnLi4vLi4vaG9va3MvdXNlU3R5bGVTZXQnO1xuaW1wb3J0IHVzZVZhbHVlUmVmIGZyb20gJy4vQWRhcHRpdmVDYXJkSGFja3MvcHJpdmF0ZS91c2VWYWx1ZVJlZic7XG5cbmNvbnN0IHsgRXJyb3JCb3ggfSA9IENvbXBvbmVudHM7XG5jb25zdCB7IHVzZURpc2FibGVkLCB1c2VMb2NhbGl6ZXIsIHVzZVBlcmZvcm1DYXJkQWN0aW9uLCB1c2VSZW5kZXJNYXJrZG93bkFzSFRNTCwgdXNlU2Nyb2xsVG9FbmQgfSA9IGhvb2tzO1xuXG5jb25zdCBub2RlX2VudiA9IHByb2Nlc3MuZW52Lm5vZGVfZW52IHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WO1xuXG50eXBlIEFkYXB0aXZlQ2FyZFJlbmRlcmVyUHJvcHMgPSB7XG4gIGFjdGlvblBlcmZvcm1lZENsYXNzTmFtZT86IHN0cmluZztcbiAgYWRhcHRpdmVDYXJkOiBBZGFwdGl2ZUNhcmQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdGFwQWN0aW9uPzogRGlyZWN0TGluZUNhcmRBY3Rpb247XG59O1xuXG5jb25zdCBBZGFwdGl2ZUNhcmRSZW5kZXJlcjogVkZDPEFkYXB0aXZlQ2FyZFJlbmRlcmVyUHJvcHM+ID0gKHtcbiAgYWN0aW9uUGVyZm9ybWVkQ2xhc3NOYW1lLFxuICBhZGFwdGl2ZUNhcmQsXG4gIGRpc2FibGVkOiBkaXNhYmxlZEZyb21Qcm9wcyxcbiAgdGFwQWN0aW9uXG59KSA9PiB7XG4gIGNvbnN0IFt7IGFkYXB0aXZlQ2FyZFJlbmRlcmVyOiBhZGFwdGl2ZUNhcmRSZW5kZXJlclN0eWxlU2V0IH1dID0gdXNlU3R5bGVTZXQoKTtcbiAgY29uc3QgW3sgR2xvYmFsU2V0dGluZ3MsIEhvc3RDb25maWcgfV0gPSB1c2VBZGFwdGl2ZUNhcmRzUGFja2FnZSgpO1xuICBjb25zdCBbYWRhcHRpdmVDYXJkc0hvc3RDb25maWddID0gdXNlQWRhcHRpdmVDYXJkc0hvc3RDb25maWcoKTtcbiAgY29uc3QgW2Rpc2FibGVkRnJvbUNvbXBvc2VyXSA9IHVzZURpc2FibGVkKCk7XG4gIGNvbnN0IGNvbnRlbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemVyKCk7XG4gIGNvbnN0IHBlcmZvcm1DYXJkQWN0aW9uID0gdXNlUGVyZm9ybUNhcmRBY3Rpb24oKTtcbiAgY29uc3QgcmVuZGVyTWFya2Rvd25Bc0hUTUwgPSB1c2VSZW5kZXJNYXJrZG93bkFzSFRNTCgpO1xuICBjb25zdCBzY3JvbGxUb0VuZCA9IHVzZVNjcm9sbFRvRW5kKCk7XG5cbiAgY29uc3QgZGlzYWJsZWQgPSBkaXNhYmxlZEZyb21Db21wb3NlciB8fCBkaXNhYmxlZEZyb21Qcm9wcztcbiAgY29uc3QgdGFwQWN0aW9uUmVmID0gdXNlVmFsdWVSZWYodGFwQWN0aW9uKTtcblxuICBjb25zdCBkaXNhYmxlZFJlZiA9IHVzZVZhbHVlUmVmKGRpc2FibGVkKTtcblxuICAvLyBUT0RPOiBbUDJdICMzMTk5IFdlIHNob3VsZCBjb25zaWRlciB1c2luZyBgYWRhcHRpdmVDYXJkLnNlbGVjdEFjdGlvbmAgaW5zdGVhZC5cbiAgLy8gVGhlIG51bGwgY2hlY2sgZm9yIFwidGFwQWN0aW9uXCIgaXMgaW4gXCJoYW5kbGVDbGlja0FuZEtleVByZXNzRm9yVGFwQWN0aW9uXCIuXG4gIGNvbnN0IGhhbmRsZUNsaWNrQW5kS2V5UHJlc3MgPSB1c2VDYWxsYmFjazxLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD4gfCBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD4+KFxuICAgIChldmVudCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgeyBrZXksIHR5cGUgfSA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICAgIC8vIFNvbWUgaXRlbXMsIGUuZy4gdGFwcGFibGUgdGV4dCwgY2Fubm90IGJlIGRpc2FibGVkIHRocnUgRE9NIGF0dHJpYnV0ZXNcbiAgICAgIGNvbnN0IHsgY3VycmVudCB9ID0gY29udGVudFJlZjtcbiAgICAgIGNvbnN0IGFkYXB0aXZlQ2FyZFJvb3QgPSBjdXJyZW50LnF1ZXJ5U2VsZWN0b3IoJy5hYy1hZGFwdGl2ZUNhcmRbdGFiaW5kZXg9XCIwXCJdJyk7XG5cbiAgICAgIGlmICghYWRhcHRpdmVDYXJkUm9vdCkge1xuICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKFxuICAgICAgICAgICdib3RmcmFtZXdvcmstd2ViY2hhdDogTm8gQWRhcHRpdmUgQ2FyZCByb290IGNvbnRhaW5lciBjYW4gYmUgZm91bmQ7IHRoZSBjYXJkIGlzIHByb2JhYmx5IG9uIGFuIHVuc3VwcG9ydGVkIEFkYXB0aXZlIENhcmQgdmVyc2lvbi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZvciBcImtleXByZXNzXCIgZXZlbnQsIHdlIG9ubHkgbGlzdGVuIHRvIEVOVEVSIGFuZCBTUEFDRUJBUiBrZXkuXG4gICAgICBpZiAodHlwZSA9PT0gJ2tleXByZXNzJykge1xuICAgICAgICBpZiAoa2V5ICE9PSAnRW50ZXInICYmIGtleSAhPT0gJyAnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2Ugd2lsbCBjYWxsIHBlcmZvcm1DYXJkQWN0aW9uIGlmIGVpdGhlcjpcbiAgICAgIC8vIDEuIFdlIGFyZSBvbiB0aGUgdGFyZ2V0LCBvclxuICAgICAgLy8gMi4gVGhlIGV2ZW50LWRpc3BhdGNoaW5nIGVsZW1lbnQgaXMgbm90IGludGVyYWN0aXZlXG4gICAgICBpZiAodGFyZ2V0ICE9PSBhZGFwdGl2ZUNhcmRSb290KSB7XG4gICAgICAgIGNvbnN0IHRhYkluZGV4ID0gZ2V0VGFiSW5kZXgodGFyZ2V0KTtcblxuICAgICAgICAvLyBJZiB0aGUgdXNlciBpcyBjbGlja2luZyBvbiBzb21ldGhpbmcgdGhhdCBpcyBhbHJlYWR5IGNsaWNrYWJsZSwgZG8gbm90IGFsbG93IHRoZW0gdG8gY2xpY2sgdGhlIGNhcmQuXG4gICAgICAgIC8vIEUuZy4gYSBoZXJvIGNhcmQgY2FuIGJlIHRhcHBhYmxlLCBhbmQgaW1hZ2UgYW5kIGJ1dHRvbnMgaW5zaWRlIHRoZSBoZXJvIGNhcmQgY2FuIGFsc28gYmUgdGFwcGFibGUuXG4gICAgICAgIGlmICh0eXBlb2YgdGFiSW5kZXggPT09ICdudW1iZXInICYmIHRhYkluZGV4ID49IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcGVyZm9ybUNhcmRBY3Rpb24odGFwQWN0aW9uUmVmLmN1cnJlbnQpO1xuICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICB9LFxuICAgIFtjb250ZW50UmVmLCBwZXJmb3JtQ2FyZEFjdGlvbiwgc2Nyb2xsVG9FbmQsIHRhcEFjdGlvblJlZl1cbiAgKTtcblxuICAvLyBPbmx5IGxpc3RlbiB0byBldmVudCBpZiBpdCBpcyBub3QgZGlzYWJsZWQgYW5kIGhhdmUgXCJ0YXBBY3Rpb25cIiBwcm9wLlxuICBjb25zdCBoYW5kbGVDbGlja0FuZEtleVByZXNzRm9yVGFwQWN0aW9uID0gIWRpc2FibGVkICYmIHRhcEFjdGlvbiA/IGhhbmRsZUNsaWNrQW5kS2V5UHJlc3MgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgaGFuZGxlRXhlY3V0ZUFjdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChhY3Rpb246IEFkYXB0aXZlQ2FyZEFjdGlvbik6IHZvaWQgPT4ge1xuICAgICAgLy8gU29tZSBpdGVtcywgZS5nLiB0YXBwYWJsZSBpbWFnZSwgY2Fubm90IGJlIGRpc2FibGVkIHRocnUgRE9NIGF0dHJpYnV0ZXNcbiAgICAgIGlmIChkaXNhYmxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0aW9uVHlwZU5hbWUgPSBhY3Rpb24uZ2V0SnNvblR5cGVOYW1lKCk7XG4gICAgICBjb25zdCB7IGljb25Vcmw6IGltYWdlLCB0aXRsZSB9ID0gYWN0aW9uO1xuXG4gICAgICAvLyBXZSBjYW5ub3QgdXNlIFwiaW5zdGFuY2VvZlwiIGNoZWNrIGhlcmUsIGJlY2F1c2Ugd2ViIGRldnMgbWF5IGJyaW5nIHRoZWlyIG93biB2ZXJzaW9uIG9mIEFkYXB0aXZlIENhcmRzIHBhY2thZ2UuXG4gICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIHVzaW5nIFwiZ2V0SnNvblR5cGVOYW1lKClcIiBpbnN0ZWFkLlxuICAgICAgaWYgKGFjdGlvblR5cGVOYW1lID09PSAnQWN0aW9uLk9wZW5VcmwnKSB7XG4gICAgICAgIGNvbnN0IHsgdXJsOiB2YWx1ZSB9ID0gYWN0aW9uIGFzIE9wZW5VcmxBY3Rpb247XG5cbiAgICAgICAgcGVyZm9ybUNhcmRBY3Rpb24oe1xuICAgICAgICAgIGltYWdlLFxuICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgIHR5cGU6ICdvcGVuVXJsJyxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uVHlwZU5hbWUgPT09ICdBY3Rpb24uU3VibWl0Jykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGFjdGlvbiBhcyBTdWJtaXRBY3Rpb24gYXMge1xuICAgICAgICAgIGRhdGE6IHN0cmluZyB8IEJvdEZyYW1ld29ya0NhcmRBY3Rpb247XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHBlcmZvcm1DYXJkQWN0aW9uKHtcbiAgICAgICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICB0eXBlOiAnaW1CYWNrJyxcbiAgICAgICAgICAgICAgdmFsdWU6IGRhdGFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5fX2lzQm90RnJhbWV3b3JrQ2FyZEFjdGlvbikge1xuICAgICAgICAgICAgcGVyZm9ybUNhcmRBY3Rpb24oZGF0YS5jYXJkQWN0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVyZm9ybUNhcmRBY3Rpb24oe1xuICAgICAgICAgICAgICBpbWFnZSxcbiAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgIHR5cGU6ICdwb3N0QmFjaycsXG4gICAgICAgICAgICAgIHZhbHVlOiBkYXRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgV2ViIENoYXQ6IHJlY2VpdmVkIHVua25vd24gYWN0aW9uIGZyb20gQWRhcHRpdmUgQ2FyZHNgKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihhY3Rpb24pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2Rpc2FibGVkUmVmLCBwZXJmb3JtQ2FyZEFjdGlvbiwgc2Nyb2xsVG9FbmRdXG4gICk7XG5cbiAgLy8gRm9yIGFjY2Vzc2liaWxpdHkgaXNzdWUgIzEzNDAsIGB0YWJpbmRleD1cIjBcImAgbXVzdCBub3QgYmUgc2V0IGZvciB0aGUgcm9vdCBjb250YWluZXIgaWYgaXQgaXMgbm90IGludGVyYWN0aXZlLlxuICBjb25zdCBzZXRUYWJJbmRleEF0Q2FyZFJvb3QgPSAhIXRhcEFjdGlvbjtcblxuICBjb25zdCBbYXBwbHlBY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2QsIHVuZG9BY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2RdID1cbiAgICB1c2VBY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2RFZmZlY3QoYWRhcHRpdmVDYXJkKTtcbiAgY29uc3QgW2FwcGx5QWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kLCB1bmRvQWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kXSA9XG4gICAgdXNlQWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kRWZmZWN0KGFkYXB0aXZlQ2FyZCk7XG4gIGNvbnN0IFthcHBseUFjdGl2ZUVsZW1lbnRNb2QsIHVuZG9BY3RpdmVFbGVtZW50TW9kXSA9IHVzZUFjdGl2ZUVsZW1lbnRNb2RFZmZlY3QoYWRhcHRpdmVDYXJkKTtcbiAgY29uc3QgW2FwcGx5RGlzYWJsZWRNb2QsIHVuZG9EaXNhYmxlZE1vZF0gPSB1c2VEaXNhYmxlZE1vZEVmZmVjdChhZGFwdGl2ZUNhcmQpO1xuICBjb25zdCBbYXBwbHlQZXJzaXN0VmFsdWVzTW9kLCB1bmRvUGVyc2lzdFZhbHVlc01vZF0gPSB1c2VQZXJzaXN0VmFsdWVzTW9kRWZmZWN0KGFkYXB0aXZlQ2FyZCk7XG4gIGNvbnN0IFthcHBseVJvbGVNb2QsIHVuZG9Sb2xlTW9kXSA9IHVzZVJvbGVNb2RFZmZlY3QoYWRhcHRpdmVDYXJkKTtcblxuICBjb25zdCB7IGVsZW1lbnQsIGVycm9ycyB9OiB7IGVsZW1lbnQ/OiBIVE1MRWxlbWVudDsgZXJyb3JzPzogRXJyb3JbXSB9ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdW5kb0FjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZCgpO1xuICAgIHVuZG9BY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2QoKTtcbiAgICB1bmRvQWN0aXZlRWxlbWVudE1vZCgpO1xuICAgIHVuZG9EaXNhYmxlZE1vZCgpO1xuICAgIHVuZG9QZXJzaXN0VmFsdWVzTW9kKCk7XG4gICAgdW5kb1JvbGVNb2QoKTtcblxuICAgIHJldHVybiByZW5kZXJBZGFwdGl2ZUNhcmQoYWRhcHRpdmVDYXJkLCB7XG4gICAgICBhZGFwdGl2ZUNhcmRzSG9zdENvbmZpZyxcbiAgICAgIGFkYXB0aXZlQ2FyZHNQYWNrYWdlOiB7IEdsb2JhbFNldHRpbmdzLCBIb3N0Q29uZmlnIH0sXG4gICAgICByZW5kZXJNYXJrZG93bkFzSFRNTCxcbiAgICAgIHNldFRhYkluZGV4QXRDYXJkUm9vdFxuICAgIH0pO1xuICB9LCBbXG4gICAgYWRhcHRpdmVDYXJkLFxuICAgIGFkYXB0aXZlQ2FyZHNIb3N0Q29uZmlnLFxuICAgIEdsb2JhbFNldHRpbmdzLFxuICAgIEhvc3RDb25maWcsXG4gICAgcmVuZGVyTWFya2Rvd25Bc0hUTUwsXG4gICAgc2V0VGFiSW5kZXhBdENhcmRSb290LFxuICAgIHVuZG9BY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2QsXG4gICAgdW5kb0FjdGlvblNldFNob3VsZE5vdEJlTWVudUJhck1vZCxcbiAgICB1bmRvQWN0aXZlRWxlbWVudE1vZCxcbiAgICB1bmRvRGlzYWJsZWRNb2QsXG4gICAgdW5kb1BlcnNpc3RWYWx1ZXNNb2QsXG4gICAgdW5kb1JvbGVNb2RcbiAgXSk7XG5cbiAgdXNlTWVtbygoKSA9PiB7XG4gICAgYWRhcHRpdmVDYXJkLm9uRXhlY3V0ZUFjdGlvbiA9IGhhbmRsZUV4ZWN1dGVBY3Rpb247XG4gIH0sIFthZGFwdGl2ZUNhcmQsIGhhbmRsZUV4ZWN1dGVBY3Rpb25dKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHsgY3VycmVudCB9ID0gY29udGVudFJlZjtcblxuICAgIGN1cnJlbnQ/LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGN1cnJlbnQ/LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgIH07XG4gIH0sIFtjb250ZW50UmVmLCBlbGVtZW50XSk7XG5cbiAgLy8gQXBwbHkgYWxsIG1vZHMgcmVnYXJkbGVzcyB3aGV0aGVyIHRoZSBlbGVtZW50IGNoYW5nZWQgb3Igbm90LlxuICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2UgaGF2ZSB1bmRvZWQgbW9kcyB3aGVuIHdlIGNhbGwgdGhlIGB1c2VYWFhNb2RFZmZlY3RgIGhvb2suXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGFwcGx5QWN0aW9uU2hvdWxkQmVQdXNoQnV0dG9uTW9kKGVsZW1lbnQsIGFjdGlvblBlcmZvcm1lZENsYXNzTmFtZSk7XG4gICAgICBhcHBseUFjdGlvblNldFNob3VsZE5vdEJlTWVudUJhck1vZChlbGVtZW50KTtcbiAgICAgIGFwcGx5QWN0aXZlRWxlbWVudE1vZChlbGVtZW50KTtcbiAgICAgIGFwcGx5RGlzYWJsZWRNb2QoZWxlbWVudCwgZGlzYWJsZWQpO1xuICAgICAgYXBwbHlQZXJzaXN0VmFsdWVzTW9kKGVsZW1lbnQpO1xuICAgICAgYXBwbHlSb2xlTW9kKGVsZW1lbnQpO1xuICAgIH1cbiAgfSwgW1xuICAgIGFjdGlvblBlcmZvcm1lZENsYXNzTmFtZSxcbiAgICBhcHBseUFjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZCxcbiAgICBhcHBseUFjdGlvblNldFNob3VsZE5vdEJlTWVudUJhck1vZCxcbiAgICBhcHBseUFjdGl2ZUVsZW1lbnRNb2QsXG4gICAgYXBwbHlEaXNhYmxlZE1vZCxcbiAgICBhcHBseVBlcnNpc3RWYWx1ZXNNb2QsXG4gICAgYXBwbHlSb2xlTW9kLFxuICAgIGRpc2FibGVkLFxuICAgIGVsZW1lbnRcbiAgXSk7XG5cbiAgZXJyb3JzPy5sZW5ndGggJiYgY29uc29sZS53YXJuKCdib3RmcmFtZXdvcmstd2ViY2hhdDogRmFpbGVkIHRvIHJlbmRlciBBZGFwdGl2ZSBDYXJkcy4nLCBlcnJvcnMpO1xuXG4gIHJldHVybiBlcnJvcnM/Lmxlbmd0aCA/IChcbiAgICBub2RlX2VudiA9PT0gJ2RldmVsb3BtZW50JyAmJiA8RXJyb3JCb3ggZXJyb3I9e2Vycm9yc1swXX0gdHlwZT17bG9jYWxpemUoJ0FEQVBUSVZFX0NBUkRfRVJST1JfQk9YX1RJVExFX1JFTkRFUicpfSAvPlxuICApIDogKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhhZGFwdGl2ZUNhcmRSZW5kZXJlclN0eWxlU2V0ICsgJycsICd3ZWJjaGF0X19hZGFwdGl2ZS1jYXJkLXJlbmRlcmVyJyl9XG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja0FuZEtleVByZXNzRm9yVGFwQWN0aW9uIGFzIE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50Pn1cbiAgICAgIG9uS2V5UHJlc3M9e2hhbmRsZUNsaWNrQW5kS2V5UHJlc3NGb3JUYXBBY3Rpb24gYXMgS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+fVxuICAgICAgcmVmPXtjb250ZW50UmVmfVxuICAgIC8+XG4gICk7XG59O1xuXG5BZGFwdGl2ZUNhcmRSZW5kZXJlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGFjdGlvblBlcmZvcm1lZENsYXNzTmFtZTogJycsXG4gIGRpc2FibGVkOiB1bmRlZmluZWQsXG4gIHRhcEFjdGlvbjogdW5kZWZpbmVkXG59O1xuXG5BZGFwdGl2ZUNhcmRSZW5kZXJlci5wcm9wVHlwZXMgPSB7XG4gIGFjdGlvblBlcmZvcm1lZENsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWRhcHRpdmVDYXJkOiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvLyBUeXBlU2NyaXB0IGNsYXNzIGlzIG5vdCBtYXBwYWJsZSB0byBQcm9wVHlwZXMuZnVuY1xuICAvLyBAdHMtaWdub3JlXG4gIHRhcEFjdGlvbjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpbWFnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFkYXB0aXZlQ2FyZFJlbmRlcmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBWUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQTVCQTtBQThCQSxJQUFRQSxRQUFSLEdBQXFCQyx3Q0FBckIsQ0FBUUQsUUFBUjtBQUNBLElBQVFFLFdBQVIsR0FBcUdDLG1DQUFyRyxDQUFRRCxXQUFSO0FBQUEsSUFBcUJFLFlBQXJCLEdBQXFHRCxtQ0FBckcsQ0FBcUJDLFlBQXJCO0FBQUEsSUFBbUNDLG9CQUFuQyxHQUFxR0YsbUNBQXJHLENBQW1DRSxvQkFBbkM7QUFBQSxJQUF5REMsdUJBQXpELEdBQXFHSCxtQ0FBckcsQ0FBeURHLHVCQUF6RDtBQUFBLElBQWtGQyxjQUFsRixHQUFxR0osbUNBQXJHLENBQWtGSSxjQUFsRjtBQUVBLElBQU1DLFFBQVEsR0FBRyx5QkFBakI7O0FBU0EsSUFBTUMsb0JBQW9ELEdBQUcsU0FB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
253
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYm90ZnJhbWV3b3JrV2ViY2hhdENvbXBvbmVudCIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcHJvcFR5cGVzIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcmVuZGVyQWRhcHRpdmVDYXJkIiwiX3VzZUFjdGlvblNldFNob3VsZE5vdEJlTWVudUJhck1vZEVmZmVjdCIsIl91c2VBY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2RFZmZlY3QiLCJfdXNlQWN0aXZlRWxlbWVudE1vZEVmZmVjdCIsIl91c2VBZGFwdGl2ZUNhcmRzSG9zdENvbmZpZyIsIl91c2VBZGFwdGl2ZUNhcmRzUGFja2FnZSIsIl91c2VEaXNhYmxlZE1vZEVmZmVjdDMiLCJfdXNlUGVyc2lzdFZhbHVlc01vZEVmZmVjdCIsIl91c2VSb2xlTW9kRWZmZWN0MyIsIl91c2VTdHlsZVNldDMiLCJfdXNlVmFsdWVSZWYiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIkVycm9yQm94IiwiQ29tcG9uZW50cyIsInVzZURpc2FibGVkIiwiaG9va3MiLCJ1c2VMb2NhbGl6ZXIiLCJ1c2VQZXJmb3JtQ2FyZEFjdGlvbiIsInVzZVJlbmRlck1hcmtkb3duQXNIVE1MIiwidXNlU2Nyb2xsVG9FbmQiLCJub2RlX2VudiIsInVuZGVmaW5lZCIsIkFkYXB0aXZlQ2FyZFJlbmRlcmVyIiwiX3JlZiIsImFjdGlvblBlcmZvcm1lZENsYXNzTmFtZSIsImFkYXB0aXZlQ2FyZCIsImRpc2FibGVkRnJvbVByb3BzIiwiZGlzYWJsZWQiLCJ0YXBBY3Rpb24iLCJfdXNlU3R5bGVTZXQiLCJ1c2VTdHlsZVNldCIsIl91c2VTdHlsZVNldDIiLCJfc2xpY2VkVG9BcnJheTIiLCJhZGFwdGl2ZUNhcmRSZW5kZXJlclN0eWxlU2V0IiwiYWRhcHRpdmVDYXJkUmVuZGVyZXIiLCJfdXNlQWRhcHRpdmVDYXJkc1BhY2siLCJ1c2VBZGFwdGl2ZUNhcmRzUGFja2FnZSIsIl91c2VBZGFwdGl2ZUNhcmRzUGFjazIiLCJfdXNlQWRhcHRpdmVDYXJkc1BhY2szIiwiR2xvYmFsU2V0dGluZ3MiLCJIb3N0Q29uZmlnIiwiX3VzZUFkYXB0aXZlQ2FyZHNIb3N0IiwidXNlQWRhcHRpdmVDYXJkc0hvc3RDb25maWciLCJfdXNlQWRhcHRpdmVDYXJkc0hvc3QyIiwiYWRhcHRpdmVDYXJkc0hvc3RDb25maWciLCJfdXNlRGlzYWJsZWQiLCJfdXNlRGlzYWJsZWQyIiwiZGlzYWJsZWRGcm9tQ29tcG9zZXIiLCJjb250ZW50UmVmIiwidXNlUmVmIiwibG9jYWxpemUiLCJwZXJmb3JtQ2FyZEFjdGlvbiIsInJlbmRlck1hcmtkb3duQXNIVE1MIiwic2Nyb2xsVG9FbmQiLCJ0YXBBY3Rpb25SZWYiLCJ1c2VWYWx1ZVJlZiIsImRpc2FibGVkUmVmIiwiaGFuZGxlQ2xpY2tBbmRLZXlQcmVzcyIsInVzZUNhbGxiYWNrIiwiZXZlbnQiLCJfcmVmMiIsInR5cGUiLCJ0YXJnZXQiLCJjdXJyZW50IiwiYWRhcHRpdmVDYXJkUm9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJjb25zb2xlIiwid2FybiIsInByZXZlbnREZWZhdWx0IiwidGFiSW5kZXgiLCJnZXRUYWJJbmRleCIsImhhbmRsZUNsaWNrQW5kS2V5UHJlc3NGb3JUYXBBY3Rpb24iLCJoYW5kbGVFeGVjdXRlQWN0aW9uIiwiYWN0aW9uIiwiYWN0aW9uVHlwZU5hbWUiLCJnZXRKc29uVHlwZU5hbWUiLCJpbWFnZSIsImljb25VcmwiLCJ0aXRsZSIsIl9yZWYzIiwidmFsdWUiLCJ1cmwiLCJfcmVmNCIsImRhdGEiLCJfX2lzQm90RnJhbWV3b3JrQ2FyZEFjdGlvbiIsImNhcmRBY3Rpb24iLCJlcnJvciIsInNldFRhYkluZGV4QXRDYXJkUm9vdCIsIl91c2VBY3Rpb25TaG91bGRCZVB1cyIsInVzZUFjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZEVmZmVjdCIsIl91c2VBY3Rpb25TaG91bGRCZVB1czIiLCJhcHBseUFjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZCIsInVuZG9BY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2QiLCJfdXNlQWN0aW9uU2V0U2hvdWxkTm8iLCJ1c2VBY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2RFZmZlY3QiLCJfdXNlQWN0aW9uU2V0U2hvdWxkTm8yIiwiYXBwbHlBY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2QiLCJ1bmRvQWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kIiwiX3VzZUFjdGl2ZUVsZW1lbnRNb2RFIiwidXNlQWN0aXZlRWxlbWVudE1vZEVmZmVjdCIsIl91c2VBY3RpdmVFbGVtZW50TW9kRTIiLCJhcHBseUFjdGl2ZUVsZW1lbnRNb2QiLCJ1bmRvQWN0aXZlRWxlbWVudE1vZCIsIl91c2VEaXNhYmxlZE1vZEVmZmVjdCIsInVzZURpc2FibGVkTW9kRWZmZWN0IiwiX3VzZURpc2FibGVkTW9kRWZmZWN0MiIsImFwcGx5RGlzYWJsZWRNb2QiLCJ1bmRvRGlzYWJsZWRNb2QiLCJfdXNlUGVyc2lzdFZhbHVlc01vZEUiLCJ1c2VQZXJzaXN0VmFsdWVzTW9kRWZmZWN0IiwiX3VzZVBlcnNpc3RWYWx1ZXNNb2RFMiIsImFwcGx5UGVyc2lzdFZhbHVlc01vZCIsInVuZG9QZXJzaXN0VmFsdWVzTW9kIiwiX3VzZVJvbGVNb2RFZmZlY3QiLCJ1c2VSb2xlTW9kRWZmZWN0IiwiX3VzZVJvbGVNb2RFZmZlY3QyIiwiYXBwbHlSb2xlTW9kIiwidW5kb1JvbGVNb2QiLCJfdXNlTWVtbyIsInVzZU1lbW8iLCJyZW5kZXJBZGFwdGl2ZUNhcmQiLCJhZGFwdGl2ZUNhcmRzUGFja2FnZSIsImVsZW1lbnQiLCJlcnJvcnMiLCJvbkV4ZWN1dGVBY3Rpb24iLCJ1c2VMYXlvdXRFZmZlY3QiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwibGVuZ3RoIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNsYXNzTmFtZXMiLCJvbkNsaWNrIiwib25LZXlQcmVzcyIsInJlZiIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImFueSIsImlzUmVxdWlyZWQiLCJib29sIiwic2hhcGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6ImJ1bmRsZTovLy8iLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGl2ZUNhcmRzL0F0dGFjaG1lbnQvQWRhcHRpdmVDYXJkUmVuZGVyZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1tYWdpYy1udW1iZXJzOiBbXCJlcnJvclwiLCB7IFwiaWdub3JlXCI6IFstMSwgMCwgMl0gfV0gKi9cblxuaW1wb3J0IHsgQWN0aW9uIGFzIEFkYXB0aXZlQ2FyZEFjdGlvbiwgQWRhcHRpdmVDYXJkLCBPcGVuVXJsQWN0aW9uLCBTdWJtaXRBY3Rpb24gfSBmcm9tICdhZGFwdGl2ZWNhcmRzJztcbmltcG9ydCB7IENvbXBvbmVudHMsIGdldFRhYkluZGV4LCBob29rcyB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWNvbXBvbmVudCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHtcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIFZGQ1xufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IERpcmVjdExpbmVDYXJkQWN0aW9uIH0gZnJvbSAnYm90ZnJhbWV3b3JrLXdlYmNoYXQtY29yZSc7XG5cbmltcG9ydCB7IEJvdEZyYW1ld29ya0NhcmRBY3Rpb24gfSBmcm9tICcuL0FkYXB0aXZlQ2FyZEJ1aWxkZXInO1xuaW1wb3J0IHJlbmRlckFkYXB0aXZlQ2FyZCBmcm9tICcuL3ByaXZhdGUvcmVuZGVyQWRhcHRpdmVDYXJkJztcbmltcG9ydCB1c2VBY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2RFZmZlY3QgZnJvbSAnLi9BZGFwdGl2ZUNhcmRIYWNrcy91c2VBY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2RFZmZlY3QnO1xuaW1wb3J0IHVzZUFjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZEVmZmVjdCBmcm9tICcuL0FkYXB0aXZlQ2FyZEhhY2tzL3VzZUFjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZEVmZmVjdCc7XG5pbXBvcnQgdXNlQWN0aXZlRWxlbWVudE1vZEVmZmVjdCBmcm9tICcuL0FkYXB0aXZlQ2FyZEhhY2tzL3VzZUFjdGl2ZUVsZW1lbnRNb2RFZmZlY3QnO1xuaW1wb3J0IHVzZUFkYXB0aXZlQ2FyZHNIb3N0Q29uZmlnIGZyb20gJy4uL2hvb2tzL3VzZUFkYXB0aXZlQ2FyZHNIb3N0Q29uZmlnJztcbmltcG9ydCB1c2VBZGFwdGl2ZUNhcmRzUGFja2FnZSBmcm9tICcuLi9ob29rcy91c2VBZGFwdGl2ZUNhcmRzUGFja2FnZSc7XG5pbXBvcnQgdXNlRGlzYWJsZWRNb2RFZmZlY3QgZnJvbSAnLi9BZGFwdGl2ZUNhcmRIYWNrcy91c2VEaXNhYmxlZE1vZEVmZmVjdCc7XG5pbXBvcnQgdXNlUGVyc2lzdFZhbHVlc01vZEVmZmVjdCBmcm9tICcuL0FkYXB0aXZlQ2FyZEhhY2tzL3VzZVBlcnNpc3RWYWx1ZXNNb2RFZmZlY3QnO1xuaW1wb3J0IHVzZVJvbGVNb2RFZmZlY3QgZnJvbSAnLi9BZGFwdGl2ZUNhcmRIYWNrcy91c2VSb2xlTW9kRWZmZWN0JztcbmltcG9ydCB1c2VTdHlsZVNldCBmcm9tICcuLi8uLi9ob29rcy91c2VTdHlsZVNldCc7XG5pbXBvcnQgdXNlVmFsdWVSZWYgZnJvbSAnLi9BZGFwdGl2ZUNhcmRIYWNrcy9wcml2YXRlL3VzZVZhbHVlUmVmJztcblxuY29uc3QgeyBFcnJvckJveCB9ID0gQ29tcG9uZW50cztcbmNvbnN0IHsgdXNlRGlzYWJsZWQsIHVzZUxvY2FsaXplciwgdXNlUGVyZm9ybUNhcmRBY3Rpb24sIHVzZVJlbmRlck1hcmtkb3duQXNIVE1MLCB1c2VTY3JvbGxUb0VuZCB9ID0gaG9va3M7XG5cbmNvbnN0IG5vZGVfZW52ID0gcHJvY2Vzcy5lbnYubm9kZV9lbnYgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlY7XG5cbnR5cGUgQWRhcHRpdmVDYXJkUmVuZGVyZXJQcm9wcyA9IHtcbiAgYWN0aW9uUGVyZm9ybWVkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBhZGFwdGl2ZUNhcmQ6IEFkYXB0aXZlQ2FyZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0YXBBY3Rpb24/OiBEaXJlY3RMaW5lQ2FyZEFjdGlvbjtcbn07XG5cbmNvbnN0IEFkYXB0aXZlQ2FyZFJlbmRlcmVyOiBWRkM8QWRhcHRpdmVDYXJkUmVuZGVyZXJQcm9wcz4gPSAoe1xuICBhY3Rpb25QZXJmb3JtZWRDbGFzc05hbWUsXG4gIGFkYXB0aXZlQ2FyZCxcbiAgZGlzYWJsZWQ6IGRpc2FibGVkRnJvbVByb3BzLFxuICB0YXBBY3Rpb25cbn0pID0+IHtcbiAgY29uc3QgW3sgYWRhcHRpdmVDYXJkUmVuZGVyZXI6IGFkYXB0aXZlQ2FyZFJlbmRlcmVyU3R5bGVTZXQgfV0gPSB1c2VTdHlsZVNldCgpO1xuICBjb25zdCBbeyBHbG9iYWxTZXR0aW5ncywgSG9zdENvbmZpZyB9XSA9IHVzZUFkYXB0aXZlQ2FyZHNQYWNrYWdlKCk7XG4gIGNvbnN0IFthZGFwdGl2ZUNhcmRzSG9zdENvbmZpZ10gPSB1c2VBZGFwdGl2ZUNhcmRzSG9zdENvbmZpZygpO1xuICBjb25zdCBbZGlzYWJsZWRGcm9tQ29tcG9zZXJdID0gdXNlRGlzYWJsZWQoKTtcbiAgY29uc3QgY29udGVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZXIoKTtcbiAgY29uc3QgcGVyZm9ybUNhcmRBY3Rpb24gPSB1c2VQZXJmb3JtQ2FyZEFjdGlvbigpO1xuICBjb25zdCByZW5kZXJNYXJrZG93bkFzSFRNTCA9IHVzZVJlbmRlck1hcmtkb3duQXNIVE1MKCk7XG4gIGNvbnN0IHNjcm9sbFRvRW5kID0gdXNlU2Nyb2xsVG9FbmQoKTtcblxuICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkRnJvbUNvbXBvc2VyIHx8IGRpc2FibGVkRnJvbVByb3BzO1xuICBjb25zdCB0YXBBY3Rpb25SZWYgPSB1c2VWYWx1ZVJlZih0YXBBY3Rpb24pO1xuXG4gIGNvbnN0IGRpc2FibGVkUmVmID0gdXNlVmFsdWVSZWYoZGlzYWJsZWQpO1xuXG4gIC8vIFRPRE86IFtQMl0gIzMxOTkgV2Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIGBhZGFwdGl2ZUNhcmQuc2VsZWN0QWN0aW9uYCBpbnN0ZWFkLlxuICAvLyBUaGUgbnVsbCBjaGVjayBmb3IgXCJ0YXBBY3Rpb25cIiBpcyBpbiBcImhhbmRsZUNsaWNrQW5kS2V5UHJlc3NGb3JUYXBBY3Rpb25cIi5cbiAgY29uc3QgaGFuZGxlQ2xpY2tBbmRLZXlQcmVzcyA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PiB8IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50Pj4oXG4gICAgKGV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IGtleSwgdHlwZSB9ID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgLy8gU29tZSBpdGVtcywgZS5nLiB0YXBwYWJsZSB0ZXh0LCBjYW5ub3QgYmUgZGlzYWJsZWQgdGhydSBET00gYXR0cmlidXRlc1xuICAgICAgY29uc3QgeyBjdXJyZW50IH0gPSBjb250ZW50UmVmO1xuICAgICAgY29uc3QgYWRhcHRpdmVDYXJkUm9vdCA9IGN1cnJlbnQucXVlcnlTZWxlY3RvcignLmFjLWFkYXB0aXZlQ2FyZFt0YWJpbmRleD1cIjBcIl0nKTtcblxuICAgICAgaWYgKCFhZGFwdGl2ZUNhcmRSb290KSB7XG4gICAgICAgIHJldHVybiBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ2JvdGZyYW1ld29yay13ZWJjaGF0OiBObyBBZGFwdGl2ZSBDYXJkIHJvb3QgY29udGFpbmVyIGNhbiBiZSBmb3VuZDsgdGhlIGNhcmQgaXMgcHJvYmFibHkgb24gYW4gdW5zdXBwb3J0ZWQgQWRhcHRpdmUgQ2FyZCB2ZXJzaW9uLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIFwia2V5cHJlc3NcIiBldmVudCwgd2Ugb25seSBsaXN0ZW4gdG8gRU5URVIgYW5kIFNQQUNFQkFSIGtleS5cbiAgICAgIGlmICh0eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgICAgIGlmIChrZXkgIT09ICdFbnRlcicgJiYga2V5ICE9PSAnICcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBXZSB3aWxsIGNhbGwgcGVyZm9ybUNhcmRBY3Rpb24gaWYgZWl0aGVyOlxuICAgICAgLy8gMS4gV2UgYXJlIG9uIHRoZSB0YXJnZXQsIG9yXG4gICAgICAvLyAyLiBUaGUgZXZlbnQtZGlzcGF0Y2hpbmcgZWxlbWVudCBpcyBub3QgaW50ZXJhY3RpdmVcbiAgICAgIGlmICh0YXJnZXQgIT09IGFkYXB0aXZlQ2FyZFJvb3QpIHtcbiAgICAgICAgY29uc3QgdGFiSW5kZXggPSBnZXRUYWJJbmRleCh0YXJnZXQpO1xuXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGlzIGNsaWNraW5nIG9uIHNvbWV0aGluZyB0aGF0IGlzIGFscmVhZHkgY2xpY2thYmxlLCBkbyBub3QgYWxsb3cgdGhlbSB0byBjbGljayB0aGUgY2FyZC5cbiAgICAgICAgLy8gRS5nLiBhIGhlcm8gY2FyZCBjYW4gYmUgdGFwcGFibGUsIGFuZCBpbWFnZSBhbmQgYnV0dG9ucyBpbnNpZGUgdGhlIGhlcm8gY2FyZCBjYW4gYWxzbyBiZSB0YXBwYWJsZS5cbiAgICAgICAgaWYgKHR5cGVvZiB0YWJJbmRleCA9PT0gJ251bWJlcicgJiYgdGFiSW5kZXggPj0gMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwZXJmb3JtQ2FyZEFjdGlvbih0YXBBY3Rpb25SZWYuY3VycmVudCk7XG4gICAgICBzY3JvbGxUb0VuZCgpO1xuICAgIH0sXG4gICAgW2NvbnRlbnRSZWYsIHBlcmZvcm1DYXJkQWN0aW9uLCBzY3JvbGxUb0VuZCwgdGFwQWN0aW9uUmVmXVxuICApO1xuXG4gIC8vIE9ubHkgbGlzdGVuIHRvIGV2ZW50IGlmIGl0IGlzIG5vdCBkaXNhYmxlZCBhbmQgaGF2ZSBcInRhcEFjdGlvblwiIHByb3AuXG4gIGNvbnN0IGhhbmRsZUNsaWNrQW5kS2V5UHJlc3NGb3JUYXBBY3Rpb24gPSAhZGlzYWJsZWQgJiYgdGFwQWN0aW9uID8gaGFuZGxlQ2xpY2tBbmRLZXlQcmVzcyA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBoYW5kbGVFeGVjdXRlQWN0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKGFjdGlvbjogQWRhcHRpdmVDYXJkQWN0aW9uKTogdm9pZCA9PiB7XG4gICAgICAvLyBTb21lIGl0ZW1zLCBlLmcuIHRhcHBhYmxlIGltYWdlLCBjYW5ub3QgYmUgZGlzYWJsZWQgdGhydSBET00gYXR0cmlidXRlc1xuICAgICAgaWYgKGRpc2FibGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhY3Rpb25UeXBlTmFtZSA9IGFjdGlvbi5nZXRKc29uVHlwZU5hbWUoKTtcbiAgICAgIGNvbnN0IHsgaWNvblVybDogaW1hZ2UsIHRpdGxlIH0gPSBhY3Rpb247XG5cbiAgICAgIC8vIFdlIGNhbm5vdCB1c2UgXCJpbnN0YW5jZW9mXCIgY2hlY2sgaGVyZSwgYmVjYXVzZSB3ZWIgZGV2cyBtYXkgYnJpbmcgdGhlaXIgb3duIHZlcnNpb24gb2YgQWRhcHRpdmUgQ2FyZHMgcGFja2FnZS5cbiAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgdXNpbmcgXCJnZXRKc29uVHlwZU5hbWUoKVwiIGluc3RlYWQuXG4gICAgICBpZiAoYWN0aW9uVHlwZU5hbWUgPT09ICdBY3Rpb24uT3BlblVybCcpIHtcbiAgICAgICAgY29uc3QgeyB1cmw6IHZhbHVlIH0gPSBhY3Rpb24gYXMgT3BlblVybEFjdGlvbjtcblxuICAgICAgICBwZXJmb3JtQ2FyZEFjdGlvbih7XG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgdHlwZTogJ29wZW5VcmwnLFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb25UeXBlTmFtZSA9PT0gJ0FjdGlvbi5TdWJtaXQnKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYWN0aW9uIGFzIFN1Ym1pdEFjdGlvbiBhcyB7XG4gICAgICAgICAgZGF0YTogc3RyaW5nIHwgQm90RnJhbWV3b3JrQ2FyZEFjdGlvbjtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcGVyZm9ybUNhcmRBY3Rpb24oe1xuICAgICAgICAgICAgICBpbWFnZSxcbiAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgIHR5cGU6ICdpbUJhY2snLFxuICAgICAgICAgICAgICB2YWx1ZTogZGF0YVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChkYXRhLl9faXNCb3RGcmFtZXdvcmtDYXJkQWN0aW9uKSB7XG4gICAgICAgICAgICBwZXJmb3JtQ2FyZEFjdGlvbihkYXRhLmNhcmRBY3Rpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZXJmb3JtQ2FyZEFjdGlvbih7XG4gICAgICAgICAgICAgIGltYWdlLFxuICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgdHlwZTogJ3Bvc3RCYWNrJyxcbiAgICAgICAgICAgICAgdmFsdWU6IGRhdGFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBXZWIgQ2hhdDogcmVjZWl2ZWQgdW5rbm93biBhY3Rpb24gZnJvbSBBZGFwdGl2ZSBDYXJkc2ApO1xuICAgICAgICBjb25zb2xlLmVycm9yKGFjdGlvbik7XG4gICAgICB9XG4gICAgfSxcbiAgICBbZGlzYWJsZWRSZWYsIHBlcmZvcm1DYXJkQWN0aW9uLCBzY3JvbGxUb0VuZF1cbiAgKTtcblxuICAvLyBGb3IgYWNjZXNzaWJpbGl0eSBpc3N1ZSAjMTM0MCwgYHRhYmluZGV4PVwiMFwiYCBtdXN0IG5vdCBiZSBzZXQgZm9yIHRoZSByb290IGNvbnRhaW5lciBpZiBpdCBpcyBub3QgaW50ZXJhY3RpdmUuXG4gIGNvbnN0IHNldFRhYkluZGV4QXRDYXJkUm9vdCA9ICEhdGFwQWN0aW9uO1xuXG4gIGNvbnN0IFthcHBseUFjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZCwgdW5kb0FjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZF0gPVxuICAgIHVzZUFjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZEVmZmVjdChhZGFwdGl2ZUNhcmQpO1xuICBjb25zdCBbYXBwbHlBY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2QsIHVuZG9BY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2RdID1cbiAgICB1c2VBY3Rpb25TZXRTaG91bGROb3RCZU1lbnVCYXJNb2RFZmZlY3QoYWRhcHRpdmVDYXJkKTtcbiAgY29uc3QgW2FwcGx5QWN0aXZlRWxlbWVudE1vZCwgdW5kb0FjdGl2ZUVsZW1lbnRNb2RdID0gdXNlQWN0aXZlRWxlbWVudE1vZEVmZmVjdChhZGFwdGl2ZUNhcmQpO1xuICBjb25zdCBbYXBwbHlEaXNhYmxlZE1vZCwgdW5kb0Rpc2FibGVkTW9kXSA9IHVzZURpc2FibGVkTW9kRWZmZWN0KGFkYXB0aXZlQ2FyZCk7XG4gIGNvbnN0IFthcHBseVBlcnNpc3RWYWx1ZXNNb2QsIHVuZG9QZXJzaXN0VmFsdWVzTW9kXSA9IHVzZVBlcnNpc3RWYWx1ZXNNb2RFZmZlY3QoYWRhcHRpdmVDYXJkKTtcbiAgY29uc3QgW2FwcGx5Um9sZU1vZCwgdW5kb1JvbGVNb2RdID0gdXNlUm9sZU1vZEVmZmVjdChhZGFwdGl2ZUNhcmQpO1xuXG4gIGNvbnN0IHsgZWxlbWVudCwgZXJyb3JzIH06IHsgZWxlbWVudD86IEhUTUxFbGVtZW50OyBlcnJvcnM/OiBFcnJvcltdIH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICB1bmRvQWN0aW9uU2hvdWxkQmVQdXNoQnV0dG9uTW9kKCk7XG4gICAgdW5kb0FjdGlvblNldFNob3VsZE5vdEJlTWVudUJhck1vZCgpO1xuICAgIHVuZG9BY3RpdmVFbGVtZW50TW9kKCk7XG4gICAgdW5kb0Rpc2FibGVkTW9kKCk7XG4gICAgdW5kb1BlcnNpc3RWYWx1ZXNNb2QoKTtcbiAgICB1bmRvUm9sZU1vZCgpO1xuXG4gICAgcmV0dXJuIHJlbmRlckFkYXB0aXZlQ2FyZChhZGFwdGl2ZUNhcmQsIHtcbiAgICAgIGFkYXB0aXZlQ2FyZHNIb3N0Q29uZmlnLFxuICAgICAgYWRhcHRpdmVDYXJkc1BhY2thZ2U6IHsgR2xvYmFsU2V0dGluZ3MsIEhvc3RDb25maWcgfSxcbiAgICAgIHJlbmRlck1hcmtkb3duQXNIVE1MLFxuICAgICAgc2V0VGFiSW5kZXhBdENhcmRSb290XG4gICAgfSk7XG4gIH0sIFtcbiAgICBhZGFwdGl2ZUNhcmQsXG4gICAgYWRhcHRpdmVDYXJkc0hvc3RDb25maWcsXG4gICAgR2xvYmFsU2V0dGluZ3MsXG4gICAgSG9zdENvbmZpZyxcbiAgICByZW5kZXJNYXJrZG93bkFzSFRNTCxcbiAgICBzZXRUYWJJbmRleEF0Q2FyZFJvb3QsXG4gICAgdW5kb0FjdGlvblNob3VsZEJlUHVzaEJ1dHRvbk1vZCxcbiAgICB1bmRvQWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kLFxuICAgIHVuZG9BY3RpdmVFbGVtZW50TW9kLFxuICAgIHVuZG9EaXNhYmxlZE1vZCxcbiAgICB1bmRvUGVyc2lzdFZhbHVlc01vZCxcbiAgICB1bmRvUm9sZU1vZFxuICBdKTtcblxuICB1c2VNZW1vKCgpID0+IHtcbiAgICBhZGFwdGl2ZUNhcmQub25FeGVjdXRlQWN0aW9uID0gaGFuZGxlRXhlY3V0ZUFjdGlvbjtcbiAgfSwgW2FkYXB0aXZlQ2FyZCwgaGFuZGxlRXhlY3V0ZUFjdGlvbl0pO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgeyBjdXJyZW50IH0gPSBjb250ZW50UmVmO1xuXG4gICAgY3VycmVudD8uYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY3VycmVudD8ucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2NvbnRlbnRSZWYsIGVsZW1lbnRdKTtcblxuICAvLyBBcHBseSBhbGwgbW9kcyByZWdhcmRsZXNzIHdoZXRoZXIgdGhlIGVsZW1lbnQgY2hhbmdlZCBvciBub3QuXG4gIC8vIFRoaXMgaXMgYmVjYXVzZSB3ZSBoYXZlIHVuZG9lZCBtb2RzIHdoZW4gd2UgY2FsbCB0aGUgYHVzZVhYWE1vZEVmZmVjdGAgaG9vay5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgYXBwbHlBY3Rpb25TaG91bGRCZVB1c2hCdXR0b25Nb2QoZWxlbWVudCwgYWN0aW9uUGVyZm9ybWVkQ2xhc3NOYW1lKTtcbiAgICAgIGFwcGx5QWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kKGVsZW1lbnQpO1xuICAgICAgYXBwbHlBY3RpdmVFbGVtZW50TW9kKGVsZW1lbnQpO1xuICAgICAgYXBwbHlEaXNhYmxlZE1vZChlbGVtZW50LCBkaXNhYmxlZCk7XG4gICAgICBhcHBseVBlcnNpc3RWYWx1ZXNNb2QoZWxlbWVudCk7XG4gICAgICBhcHBseVJvbGVNb2QoZWxlbWVudCk7XG4gICAgfVxuICB9LCBbXG4gICAgYWN0aW9uUGVyZm9ybWVkQ2xhc3NOYW1lLFxuICAgIGFwcGx5QWN0aW9uU2hvdWxkQmVQdXNoQnV0dG9uTW9kLFxuICAgIGFwcGx5QWN0aW9uU2V0U2hvdWxkTm90QmVNZW51QmFyTW9kLFxuICAgIGFwcGx5QWN0aXZlRWxlbWVudE1vZCxcbiAgICBhcHBseURpc2FibGVkTW9kLFxuICAgIGFwcGx5UGVyc2lzdFZhbHVlc01vZCxcbiAgICBhcHBseVJvbGVNb2QsXG4gICAgZGlzYWJsZWQsXG4gICAgZWxlbWVudFxuICBdKTtcblxuICBlcnJvcnM/Lmxlbmd0aCAmJiBjb25zb2xlLndhcm4oJ2JvdGZyYW1ld29yay13ZWJjaGF0OiBGYWlsZWQgdG8gcmVuZGVyIEFkYXB0aXZlIENhcmRzLicsIGVycm9ycyk7XG5cbiAgcmV0dXJuIGVycm9ycz8ubGVuZ3RoID8gKFxuICAgIG5vZGVfZW52ID09PSAnZGV2ZWxvcG1lbnQnICYmIDxFcnJvckJveCBlcnJvcj17ZXJyb3JzWzBdfSB0eXBlPXtsb2NhbGl6ZSgnQURBUFRJVkVfQ0FSRF9FUlJPUl9CT1hfVElUTEVfUkVOREVSJyl9IC8+XG4gICkgOiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGFkYXB0aXZlQ2FyZFJlbmRlcmVyU3R5bGVTZXQgKyAnJywgJ3dlYmNoYXRfX2FkYXB0aXZlLWNhcmQtcmVuZGVyZXInKX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrQW5kS2V5UHJlc3NGb3JUYXBBY3Rpb24gYXMgTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+fVxuICAgICAgb25LZXlQcmVzcz17aGFuZGxlQ2xpY2tBbmRLZXlQcmVzc0ZvclRhcEFjdGlvbiBhcyBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD59XG4gICAgICByZWY9e2NvbnRlbnRSZWZ9XG4gICAgLz5cbiAgKTtcbn07XG5cbkFkYXB0aXZlQ2FyZFJlbmRlcmVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgYWN0aW9uUGVyZm9ybWVkQ2xhc3NOYW1lOiAnJyxcbiAgZGlzYWJsZWQ6IHVuZGVmaW5lZCxcbiAgdGFwQWN0aW9uOiB1bmRlZmluZWRcbn07XG5cbkFkYXB0aXZlQ2FyZFJlbmRlcmVyLnByb3BUeXBlcyA9IHtcbiAgYWN0aW9uUGVyZm9ybWVkQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhZGFwdGl2ZUNhcmQ6IFByb3BUeXBlcy5hbnkuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8vIFR5cGVTY3JpcHQgY2xhc3MgaXMgbm90IG1hcHBhYmxlIHRvIFByb3BUeXBlcy5mdW5jXG4gIC8vIEB0cy1pZ25vcmVcbiAgdGFwQWN0aW9uOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGltYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZ1xuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQWRhcHRpdmVDYXJkUmVuZGVyZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElB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