@sapui5/sap.fe.macros 1.139.0 → 1.140.0

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 (152) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Field.js +65 -55
  4. package/src/sap/fe/macros/Field.ts +83 -57
  5. package/src/sap/fe/macros/FooterContent.js +5 -2
  6. package/src/sap/fe/macros/FooterContent.tsx +4 -1
  7. package/src/sap/fe/macros/MessageButton.js +1 -2
  8. package/src/sap/fe/macros/MessageButton.tsx +0 -1
  9. package/src/sap/fe/macros/MultiValueField.js +1 -3
  10. package/src/sap/fe/macros/MultiValueField.tsx +0 -2
  11. package/src/sap/fe/macros/Share.js +14 -2
  12. package/src/sap/fe/macros/Share.tsx +13 -0
  13. package/src/sap/fe/macros/Status.js +226 -0
  14. package/src/sap/fe/macros/Status.tsx +192 -0
  15. package/src/sap/fe/macros/ValueHelp.js +4 -28
  16. package/src/sap/fe/macros/ValueHelp.tsx +2 -42
  17. package/src/sap/fe/macros/ai/EasyFilterBar.js +105 -96
  18. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +122 -103
  19. package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
  20. package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
  21. package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
  22. package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
  23. package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
  24. package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
  25. package/src/sap/fe/macros/chart/MdcChartTemplate.js +2 -4
  26. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +1 -4
  27. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +3 -1
  28. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -0
  29. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
  30. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
  31. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
  32. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
  33. package/src/sap/fe/macros/designtime/Designtime.helper.js +28 -1
  34. package/src/sap/fe/macros/designtime/Designtime.helper.ts +27 -0
  35. package/src/sap/fe/macros/field/FieldBaseDelegate.js +13 -7
  36. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +12 -8
  37. package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
  38. package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
  39. package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
  40. package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
  41. package/src/sap/fe/macros/form/Form.js +1 -4
  42. package/src/sap/fe/macros/form/Form.tsx +0 -3
  43. package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
  44. package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
  45. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  46. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  47. package/src/sap/fe/macros/form/FormHelper.js +1 -2
  48. package/src/sap/fe/macros/form/FormHelper.ts +0 -1
  49. package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
  50. package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
  51. package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
  52. package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
  53. package/src/sap/fe/macros/internal/FilterField.block.js +7 -1
  54. package/src/sap/fe/macros/internal/FilterField.block.ts +8 -0
  55. package/src/sap/fe/macros/internal/field/DisplayStyle.js +3 -3
  56. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +2 -2
  57. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +1 -1
  58. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +1 -0
  59. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
  60. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
  61. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
  62. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
  63. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -1
  64. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +10 -3
  65. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +13 -2
  66. package/src/sap/fe/macros/library.js +1 -1
  67. package/src/sap/fe/macros/messagebundle.properties +5 -3
  68. package/src/sap/fe/macros/messagebundle_ar.properties +7 -1
  69. package/src/sap/fe/macros/messagebundle_bg.properties +7 -1
  70. package/src/sap/fe/macros/messagebundle_ca.properties +10 -4
  71. package/src/sap/fe/macros/messagebundle_cnr.properties +7 -1
  72. package/src/sap/fe/macros/messagebundle_cs.properties +6 -0
  73. package/src/sap/fe/macros/messagebundle_cy.properties +8 -2
  74. package/src/sap/fe/macros/messagebundle_da.properties +7 -1
  75. package/src/sap/fe/macros/messagebundle_de.properties +13 -7
  76. package/src/sap/fe/macros/messagebundle_el.properties +6 -0
  77. package/src/sap/fe/macros/messagebundle_en.properties +10 -4
  78. package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -2
  79. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +10 -4
  80. package/src/sap/fe/macros/messagebundle_es.properties +8 -2
  81. package/src/sap/fe/macros/messagebundle_es_MX.properties +10 -4
  82. package/src/sap/fe/macros/messagebundle_et.properties +8 -2
  83. package/src/sap/fe/macros/messagebundle_fi.properties +6 -0
  84. package/src/sap/fe/macros/messagebundle_fr.properties +8 -2
  85. package/src/sap/fe/macros/messagebundle_fr_CA.properties +7 -1
  86. package/src/sap/fe/macros/messagebundle_hi.properties +7 -1
  87. package/src/sap/fe/macros/messagebundle_hr.properties +7 -1
  88. package/src/sap/fe/macros/messagebundle_hu.properties +6 -0
  89. package/src/sap/fe/macros/messagebundle_id.properties +10 -4
  90. package/src/sap/fe/macros/messagebundle_it.properties +6 -0
  91. package/src/sap/fe/macros/messagebundle_iw.properties +7 -1
  92. package/src/sap/fe/macros/messagebundle_ja.properties +8 -2
  93. package/src/sap/fe/macros/messagebundle_kk.properties +10 -4
  94. package/src/sap/fe/macros/messagebundle_ko.properties +6 -0
  95. package/src/sap/fe/macros/messagebundle_lt.properties +7 -1
  96. package/src/sap/fe/macros/messagebundle_lv.properties +7 -1
  97. package/src/sap/fe/macros/messagebundle_mk.properties +7 -1
  98. package/src/sap/fe/macros/messagebundle_ms.properties +6 -0
  99. package/src/sap/fe/macros/messagebundle_nl.properties +6 -0
  100. package/src/sap/fe/macros/messagebundle_no.properties +6 -0
  101. package/src/sap/fe/macros/messagebundle_pl.properties +7 -1
  102. package/src/sap/fe/macros/messagebundle_pt.properties +6 -0
  103. package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -0
  104. package/src/sap/fe/macros/messagebundle_ro.properties +7 -1
  105. package/src/sap/fe/macros/messagebundle_ru.properties +9 -3
  106. package/src/sap/fe/macros/messagebundle_sh.properties +7 -1
  107. package/src/sap/fe/macros/messagebundle_sk.properties +6 -0
  108. package/src/sap/fe/macros/messagebundle_sl.properties +6 -0
  109. package/src/sap/fe/macros/messagebundle_sr.properties +7 -1
  110. package/src/sap/fe/macros/messagebundle_sv.properties +6 -0
  111. package/src/sap/fe/macros/messagebundle_th.properties +7 -1
  112. package/src/sap/fe/macros/messagebundle_tr.properties +6 -0
  113. package/src/sap/fe/macros/messagebundle_uk.properties +9 -3
  114. package/src/sap/fe/macros/messagebundle_vi.properties +8 -2
  115. package/src/sap/fe/macros/messagebundle_zh_CN.properties +6 -0
  116. package/src/sap/fe/macros/messagebundle_zh_TW.properties +7 -1
  117. package/src/sap/fe/macros/messages/MessageButton.js +39 -18
  118. package/src/sap/fe/macros/messages/MessageButton.ts +40 -17
  119. package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
  120. package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
  121. package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
  122. package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
  123. package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
  124. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
  125. package/src/sap/fe/macros/share/ShareAPI.js +4 -29
  126. package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
  127. package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
  128. package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
  129. package/src/sap/fe/macros/table/MdcTableTemplate.js +3 -1
  130. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +6 -2
  131. package/src/sap/fe/macros/table/TableHelper.js +1 -2
  132. package/src/sap/fe/macros/table/TableHelper.ts +0 -1
  133. package/src/sap/fe/macros/table/TableRuntime.js +24 -5
  134. package/src/sap/fe/macros/table/TableRuntime.ts +31 -3
  135. package/src/sap/fe/macros/table/Utils.js +6 -2
  136. package/src/sap/fe/macros/table/Utils.ts +5 -1
  137. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
  138. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
  139. package/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -2
  140. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +0 -1
  141. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
  142. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
  143. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +5 -1
  144. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +7 -0
  145. package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
  146. package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
  147. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +10 -1
  148. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +17 -0
  149. package/src/sap/fe/macros/visualfilters/VisualFilter.js +1 -2
  150. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +0 -1
  151. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +2 -3
  152. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +1 -2
@@ -20,6 +20,7 @@ import { generate } from "sap/fe/core/helpers/StableIdHelper";
20
20
  import { getContextRelativeTargetObjectPath, type DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
21
21
  import type Contact from "sap/fe/macros/contact/Contact";
22
22
  import type BuildingBlockObjectProperty from "sap/fe/macros/controls/BuildingBlockObjectProperty";
23
+ import type ConditionalWrapper from "sap/fe/macros/controls/ConditionalWrapper";
23
24
  import type FieldWrapper from "sap/fe/macros/controls/FieldWrapper";
24
25
  import type TextLink from "sap/fe/macros/controls/TextLink";
25
26
  import FieldRuntime from "sap/fe/macros/field/FieldRuntime";
@@ -237,7 +238,6 @@ class Field extends MacroAPI<{ readOnly: boolean; semanticObject: string }> {
237
238
  /**
238
239
  * This is used to optionally provide an external value that comes from a different model than the OData model.
239
240
  * It is designed to work with a field with value help, and without support for complex value help (currency / unit).
240
- * @experimental
241
241
  * @public
242
242
  */
243
243
  @property({
@@ -251,7 +251,6 @@ class Field extends MacroAPI<{ readOnly: boolean; semanticObject: string }> {
251
251
  /**
252
252
  * This is used to optionally provide an external description that comes from a different model than the oData model.
253
253
  * This should be used in conjunction with the value property.
254
- * @experimental
255
254
  * @public
256
255
  */
257
256
  @property({
@@ -553,8 +552,27 @@ class Field extends MacroAPI<{ readOnly: boolean; semanticObject: string }> {
553
552
  this._setAriaLabelledBy(this.content as unknown as ControlWithAccessibility);
554
553
  }
555
554
 
555
+ private getInnerControl(source: Control): Control | undefined {
556
+ if (source?.isA("sap.fe.macros.controls.FieldWrapper") && !source?.isA("sap.fe.macros.controls.FileWrapper")) {
557
+ const fieldWrapper = source as EnhanceWithUI5<FieldWrapper>;
558
+ const controls = fieldWrapper.getContentEdit() as Control[];
559
+ let innerControl;
560
+ if (controls.length >= 1) {
561
+ innerControl = controls[0];
562
+ }
563
+ if (innerControl?.isA("sap.m.HBox")) {
564
+ innerControl = (innerControl as HBox).getItems()[0];
565
+ }
566
+ return innerControl;
567
+ }
568
+ }
569
+
556
570
  onAfterRendering(): void {
557
- if (this.collaborationEnabled && !this.focusHandlersAttached) {
571
+ const editControl = this.getInnerControl(this.content);
572
+ const notLockControls = ["sap.m.CheckBox"];
573
+
574
+ const canLock = !notLockControls.includes(editControl?.getMetadata().getName() ?? "");
575
+ if (this.collaborationEnabled && !this.focusHandlersAttached && canLock) {
558
576
  // The event delegate doesn't work on the Field, we need to put it on its content (FieldWrapper)
559
577
  this.content?.addEventDelegate(
560
578
  {
@@ -725,63 +743,69 @@ class Field extends MacroAPI<{ readOnly: boolean; semanticObject: string }> {
725
743
  */
726
744
  getEnabled(): boolean {
727
745
  let control = Field.getControlInFieldWrapper(this.content);
728
- if (control !== null && control !== undefined && !control?.isA("sap.m.Text")) {
729
- //check needed for file wrapper which does not have a content
730
- if (this.collaborationEnabled && control.isA<HBox>("sap.m.HBox")) {
731
- // for chaining reasons, let´s keep it like that
732
- control = control.getItems()[0];
733
- }
734
- if (control.isA<VBox>("sap.m.VBox")) {
735
- // for chaining reasons, let´s keep it like that
736
- control = control.getItems()[0];
737
- }
738
746
 
739
- // we need to call the getProperty in the following examples
740
- // otherwise we end up in a max call stack size
741
- if (control.isA<CheckBox>("sap.m.CheckBox")) {
742
- return control.getProperty("enabled");
743
- } else if (control.isA<InputBase>("sap.m.InputBase")) {
744
- return control.getProperty("enabled");
745
- } else if (control.isA<Link>("sap.m.Link")) {
746
- return control.getProperty("enabled");
747
- } else if (control.isA<Button>("sap.m.Button")) {
748
- return control.getProperty("enabled");
749
- } else if (control.isA<ObjectStatus>("sap.m.ObjectStatus")) {
750
- return true;
751
- } else if (control.isA<ObjectIdentifier>("sap.m.ObjectIdentifier")) {
752
- return true;
753
- } else if (control.isA<FormElementWrapper>("sap.fe.core.controls.FormElementWrapper")) {
754
- // It is for a Draft Indicator
755
- return true;
756
- } else if (control.isA<DataPoint>("sap.fe.macros.internal.DataPoint")) {
757
- return control.getEnabled();
758
- } else if (control.isA<Email>("sap.fe.macros.contact.Email")) {
759
- return control.getProperty("linkEnabled");
760
- } else if (control.isA<Contact>("sap.fe.macros.contact.Contact")) {
761
- return control.getEnabled();
762
- } else if (control.isA<ExpandableText>("sap.m.ExpandableText")) {
763
- // otherwise show more would be inactive
764
- return true;
765
- } else if (control.isA<mdcField>("sap.ui.mdc.Field")) {
766
- const editMode = control.getEditMode();
767
- // The mdc field does not have a direct property "enabled", therefore we map
768
- // the internal disabled setting of the edit mode in this graceful pattern
769
- return editMode !== FieldEditMode.Disabled;
770
- } else if (control.isA<FileWrapper>("sap.fe.macros.controls.FileWrapper")) {
771
- // The file wrapper could contain a link or an avatar with a delete button,
772
- // we must ensure the enablement in both cases
773
- return control.link ? control.link.getProperty("enabled") : true;
774
- } else if (
775
- control.isA("sap.fe.macros.controls.ConditionalWrapper") ||
776
- (control as Control).isA<TextLink>("sap.fe.macros.controls.TextLink")
777
- ) {
778
- return true;
779
- } else {
780
- return false;
781
- }
782
- } else {
747
+ if (control === null || control === undefined || control?.isA("sap.m.Text")) {
783
748
  return true;
784
749
  }
750
+
751
+ // Handle collaboration-enabled HBox
752
+ if (this.collaborationEnabled && control.isA<HBox>("sap.m.HBox")) {
753
+ control = control.getItems()[0];
754
+ }
755
+
756
+ // Handle VBox wrapper
757
+ if (control.isA<VBox>("sap.m.VBox")) {
758
+ control = control.getItems()[0];
759
+ }
760
+
761
+ // Handle property-based controls that use "enabled" property
762
+ if (
763
+ control.isA<CheckBox>("sap.m.CheckBox") ||
764
+ control.isA<InputBase>("sap.m.InputBase") ||
765
+ control.isA<Link>("sap.m.Link") ||
766
+ control.isA<Button>("sap.m.Button")
767
+ ) {
768
+ return control.getProperty("enabled");
769
+ }
770
+
771
+ // Handle controls that are always enabled
772
+ if (
773
+ control.isA<ObjectStatus>("sap.m.ObjectStatus") ||
774
+ control.isA<ObjectIdentifier>("sap.m.ObjectIdentifier") ||
775
+ control.isA<FormElementWrapper>("sap.fe.core.controls.FormElementWrapper") ||
776
+ control.isA<ExpandableText>("sap.m.ExpandableText") ||
777
+ control.isA<typeof ConditionalWrapper>("sap.fe.macros.controls.ConditionalWrapper") ||
778
+ control.isA<TextLink>("sap.fe.macros.controls.TextLink")
779
+ ) {
780
+ return true;
781
+ }
782
+
783
+ // Handle special property cases
784
+ if (control.isA<DataPoint>("sap.fe.macros.internal.DataPoint") || control.isA<Contact>("sap.fe.macros.contact.Contact")) {
785
+ return control.getEnabled();
786
+ }
787
+
788
+ if (control.isA<Email>("sap.fe.macros.contact.Email")) {
789
+ return control.getProperty("linkEnabled");
790
+ }
791
+
792
+ // Handle MDC Field special case
793
+ if (control.isA<mdcField>("sap.ui.mdc.Field")) {
794
+ const editMode = control.getEditMode();
795
+ return editMode !== FieldEditMode.Disabled;
796
+ }
797
+
798
+ // Handle FileWrapper special case
799
+ if (control.isA<FileWrapper>("sap.fe.macros.controls.FileWrapper")) {
800
+ return control.link ? control.link.getProperty("enabled") : true;
801
+ }
802
+
803
+ // Handle HBox with SituationsIndicator at item[1]
804
+ if ((control as HBox).isA?.("sap.m.HBox") && (control as HBox).getItems()[1]?.isA("sap.fe.macros.situations.SituationsIndicator")) {
805
+ return true;
806
+ }
807
+
808
+ return false;
785
809
  }
786
810
 
787
811
  /**
@@ -969,6 +993,8 @@ class Field extends MacroAPI<{ readOnly: boolean; semanticObject: string }> {
969
993
  preparedProperties.isDynamicInstantiation = true;
970
994
  if (preparedProperties.mainPropertyRelativePath) this.mainPropertyRelativePath = preparedProperties.mainPropertyRelativePath;
971
995
  if (preparedProperties.collaborationEnabled) this.collaborationEnabled = preparedProperties.collaborationEnabled;
996
+ if (preparedProperties.displayStyle === "File")
997
+ preparedProperties.fileUploaderVisible = !this.readOnly && preparedProperties.editableExpression;
972
998
  return preparedProperties;
973
999
  }
974
1000
 
@@ -361,7 +361,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
361
361
  case ActionType.DataFieldForAction:
362
362
  return this.getDataFieldForActionButton(action);
363
363
  case ActionType.Primary:
364
- if (this._hiddenDraft && !this._hideCreateNext) {
364
+ const controller = this._getOwner()?.getRootController();
365
+ const viewData = controller.getView().getViewData();
366
+ const viewLevel = viewData?.viewLevel ?? 0;
367
+ if (this._hiddenDraft && !this._hideCreateNext && viewLevel > 1) {
365
368
  const emphasizedButtonToolKitExp = emphasizedButtonExpression ? resolveBindingString(emphasizedButtonExpression) : undefined;
366
369
  return this.getPrimary(compileExpression(ifElse(Draft.IsNewObject, undefined, emphasizedButtonToolKitExp)));
367
370
  }
@@ -446,4 +449,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
446
449
  _exports = FooterContent;
447
450
  return _exports;
448
451
  }, false);
449
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb290ZXJDb250ZW50IiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwicmVxdWlyZWQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjOCIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2hpZGVDcmVhdGVOZXh0IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uQWZ0ZXJCaW5kaW5nIiwiX2hpZGRlbkRyYWZ0IiwiY29udHJvbGxlciIsIl9nZXRPd25lciIsImdldFJvb3RDb250cm9sbGVyIiwidmlld0NvbnRleHQiLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJpc05ld09iamVjdCIsImVkaXRGbG93IiwiaXNSb290Q29udGV4dE5ldyIsImdldE1vZGVsIiwic2V0UHJvcGVydHkiLCJpbml0aWFsaXplIiwib3duZXIiLCJzZXRNb2RlbCIsIkpTT05Nb2RlbCIsImFjdGlvbnMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiYmluZGluZ0NvbnRleHRzIiwiY29udmVydGVyQ29udGV4dCIsImdldE9iamVjdCIsImNvbnRleHRQYXRoVG9Vc2UiLCJmdWxsQ29udGV4dFBhdGgiLCJvRGF0YU1ldGFNb2RlbCIsIm1vZGVscyIsIm1ldGFNb2RlbCIsImRhdGFWaWV3TW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJpc0RyYWZ0VmFsaWRhdGlvbiIsIk1vZGVsSGVscGVyIiwiZ2V0RHJhZnRSb290IiwiUHJlcGFyYXRpb25BY3Rpb24iLCJlbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJNZXNzYWdlcyIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImdldEFwcENvbXBvbmVudCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiSGlkZGVuRHJhZnQiLCJlbmFibGVkIiwiaGlkZUNyZWF0ZU5leHQiLCJnZXRBY3Rpb25Nb2RlbFBhdGgiLCJhY3Rpb24iLCJhbm5vdGF0aW9uUGF0aCIsImFjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidW5kZWZpbmVkIiwiZ2V0RHJhZnRJbmRpY2F0b3IiLCJlbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlTZXQiLCJjb21tb25Bbm5vdGF0aW9uIiwiRHJhZnRSb290IiwiRHJhZnROb2RlIiwiX2pzeCIsIkRyYWZ0SW5kaWNhdG9yIiwic3RhdGUiLCJ2aXNpYmxlIiwiZ2V0QXBwbHlCdXR0b24iLCJlbXBoYXNpemVkRXhwcmVzc2lvbiIsInZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ2aWV3TGV2ZWwiLCJpc0Rlc2t0b3AiLCJmY2xFbmFibGVkIiwiTWVudUJ1dHRvbiIsInRleHQiLCJkZWZhdWx0QWN0aW9uIiwiX2FwcGx5RG9jdW1lbnQiLCJ1c2VEZWZhdWx0QWN0aW9uT25seSIsImJ1dHRvbk1vZGUiLCJjaGlsZHJlbiIsIk1lbnUiLCJNZW51SXRlbSIsInByZXNzIiwiX3ZhbGlkYXRlRG9jdW1lbnQiLCJCdXR0b24iLCJpZCIsImNyZWF0ZUlkIiwiZ2V0UHJpbWFyeSIsImhpZGRlbkRyYWZ0IiwiYWRkRGVwZW5kZW50IiwiQ29tbWFuZEV4ZWN1dGlvbiIsInJlZiIsImNtZEV4ZWN1dGlvbiIsImNvbW1hbmQiLCJleGVjdXRlIiwiX3NhdmVEb2N1bWVudCIsIm9yIiwiaWZFbHNlIiwiYW5kIiwiVUkiLCJJc0VkaXRhYmxlIiwiZXF1YWwiLCJwYXRoSW5Nb2RlbCIsImdldFRleHRTYXZlQnV0dG9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJsYXlvdXREYXRhIiwiT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSIsInByaW9yaXR5IiwiZ3JvdXAiLCJzYXZlQnV0dG9uVGV4dCIsImdldFRyYW5zbGF0ZWRUZXh0IiwiY3JlYXRlQnV0dG9uVGV4dCIsIlNlc3Npb24iLCJTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiSXNDcmVhdGVNb2RlIiwiRHJhZnQiLCJJc05ld09iamVjdCIsImdldENhbmNlbEJ1dHRvbiIsIl9jYW5jZWxEb2N1bWVudCIsImNhbmNlbEJ1dHRvbiIsImlzRHJhZnRSb290IiwiYXJpYUhhc1BvcHVwIiwiY29uc3RhbnQiLCJjbG9zZU92ZXJmbG93T25JbnRlcmFjdGlvbiIsImdldENyZWF0ZU5leHRCdXR0b24iLCJjcmVhdGVOZXh0RG9jdW1lbnQiLCJnZXRUb29sYmFyU2VwYXJhdG9yIiwiVG9vbGJhclNlcGFyYXRvciIsImdldERhdGFGaWVsZEZvckFjdGlvbkJ1dHRvbiIsInByZXNzRXZlbnQiLCJ2aWV3IiwiYW5ub3RhdGlvblBhdGhDb250ZXh0IiwiZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aCIsImRhdGFGaWVsZEZvckFjdGlvbiIsInRhcmdldE9iamVjdCIsImFjdGlvblBhcmFtZXRlcnMiLCJlbnRpdHlTZXROYW1lIiwibmFtZSIsImludm9jYXRpb25Hcm91cGluZyIsIkludm9jYXRpb25Hcm91cGluZyIsImxpYnJhcnkiLCJDaGFuZ2VTZXQiLCJJc29sYXRlZCIsImxhYmVsIiwiTGFiZWwiLCJ0b1N0cmluZyIsImlzTmF2aWdhYmxlIiwiZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uIiwiaGFuZGxlcnMiLCJvbkNhbGxBY3Rpb24iLCJBY3Rpb24iLCJjb250ZXh0cyIsIm1vZGVsIiwic3RhcnRzV2l0aCIsImlzQWN0aW9uV2l0aERpYWxvZyIsIkNyaXRpY2FsaXR5Rm9ybWF0dGVycyIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZSIsImljb24iLCJpc0FJT3BlcmF0aW9uIiwiYWlJY29uIiwiZ2V0TWFuaWZlc3RCdXR0b24iLCJPYmplY3RQYWdlVGVtcGxhdGluZyIsImlzTWFuaWZlc3RBY3Rpb24iLCJldmVudCIsIkZQTUhlbHBlciIsImFjdGlvbldyYXBwZXIiLCJoYW5kbGVyTW9kdWxlIiwiaGFuZGxlck1ldGhvZCIsImNhdGNoIiwiZXJyb3IiLCJMb2ciLCJfanN4cyIsImdldEFjdGlvbkNvbnRyb2xzIiwiZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24iLCJidWlsZEVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uIiwibWFwIiwiQWN0aW9uVHlwZSIsIkRlZmF1bHRBcHBseSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsIlByaW1hcnkiLCJlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiU2Vjb25kYXJ5IiwiQ3JlYXRlTmV4dCIsIlNlcGFyYXRvciIsImZpbHRlciIsIm1lc3NhZ2VCdXR0b24iLCJNZXNzYWdlQnV0dG9uIiwibWVzc2FnZUNoYW5nZSIsIl9nZXRGb290ZXJWaXNpYmlsaXR5IiwiYXJpYUxhYmVsbGVkQnkiLCJmb290ZXJCYXIiLCJPdmVyZmxvd1Rvb2xiYXIiLCJhc3luY01vZGUiLCJJbnZpc2libGVUZXh0IiwiVG9vbGJhclNwYWNlciIsImZpcmVQcmVzcyIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZvb3RlckNvbnRlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFGaWVsZEZvckFjdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgaWZFbHNlLCBvciwgcGF0aEluTW9kZWwsIHJlc29sdmVCaW5kaW5nU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgQ29tbWFuZFByb3BlcnRpZXMsIFJlZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlTWFuaWZlc3RTZXR0aW5ncywgSGlkZGVuRHJhZnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBpc0FjdGlvbldpdGhEaWFsb2cgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB7IGFpSWNvbiwgdHlwZSBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgRHJhZnQsIFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb3JlTGliIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgKiBhcyBDcml0aWNhbGl0eUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJ1dHRvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZXNzYWdlcy9NZXNzYWdlQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IERyYWZ0SW5kaWNhdG9yIGZyb20gXCJzYXAvbS9EcmFmdEluZGljYXRvclwiO1xuaW1wb3J0IE1lbnUgZnJvbSBcInNhcC9tL01lbnVcIjtcbmltcG9ydCBNZW51QnV0dG9uIGZyb20gXCJzYXAvbS9NZW51QnV0dG9uXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBUb29sYmFyU3BhY2VyIGZyb20gXCJzYXAvbS9Ub29sYmFyU3BhY2VyXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSW52aXNpYmxlVGV4dCBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlVGV4dFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0ICogYXMgT2JqZWN0UGFnZVRlbXBsYXRpbmcgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlVGVtcGxhdGluZ1wiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhckxheW91dERhdGFcIjtcbmltcG9ydCBUb29sYmFyU2VwYXJhdG9yIGZyb20gXCJzYXAvbS9Ub29sYmFyU2VwYXJhdG9yXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxudHlwZSBDb250cm9sbGVyV2l0aEFjdGlvbiA9IENvbnRyb2xsZXIgJiB7XG5cdGhhbmRsZXJzOiB7XG5cdFx0b25DYWxsQWN0aW9uOiBGdW5jdGlvbjtcblx0fTtcbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuRm9vdGVyQ29udGVudFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9vdGVyQ29udGVudCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8T3ZlcmZsb3dUb29sYmFyPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5Ub29sYmFyXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfVG9vbGJhciA9IHRydWU7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5tLklCYXJcIilcblx0X19pbXBsZW1lbnRzX19zYXBfbV9JQmFyID0gdHJ1ZTtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRjbWRFeGVjdXRpb24hOiBSZWY8Q29tbWFuZEV4ZWN1dGlvbj47XG5cblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXTtcblxuXHRvRGF0YU1ldGFNb2RlbCE6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdGRhdGFWaWV3TW9kZWxQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxFbnRpdHlTZXQ+O1xuXG5cdGlzRHJhZnRWYWxpZGF0aW9uITogYm9vbGVhbjtcblxuXHRfaGlkZGVuRHJhZnQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2hpZGVDcmVhdGVOZXh0ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8Rm9vdGVyQ29udGVudD4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgb3RoZXJzKTtcblx0fVxuXG5cdEBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlcihcInJvdXRpbmdcIiwgXCJvbkFmdGVyQmluZGluZ1wiKVxuXHRwdWJsaWMgYXN5bmMgb25BZnRlckJpbmRpbmcodGhpczogRm9vdGVyQ29udGVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRjb25zdCB2aWV3Q29udGV4dCA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRjb25zdCBpc05ld09iamVjdCA9IGF3YWl0IGNvbnRyb2xsZXIuZWRpdEZsb3cuaXNSb290Q29udGV4dE5ldyh2aWV3Q29udGV4dCk7XG5cdFx0XHQodGhpcy5nZXRNb2RlbChcImZvb3RlckludGVybmFsXCIpIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoXCIvcm9vdElzTmV3T2JqZWN0XCIsIGlzTmV3T2JqZWN0KTtcblx0XHR9XG5cdH1cblxuXHRpbml0aWFsaXplKCk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHR0aGlzLnNldE1vZGVsKG5ldyBKU09OTW9kZWwoKSwgXCJmb290ZXJJbnRlcm5hbFwiKTtcblx0XHR0aGlzLmFjdGlvbnMgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uYmluZGluZ0NvbnRleHRzPy5jb252ZXJ0ZXJDb250ZXh0Py5nZXRPYmplY3QoXCJmb290ZXJBY3Rpb25zXCIpO1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoVG9Vc2UgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdHRoaXMub0RhdGFNZXRhTW9kZWwgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzLm1ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHR0aGlzLmRhdGFWaWV3TW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLm1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlID8/IHRoaXMuY29udGV4dFBhdGgpITtcblx0XHRjb25zdCBzdGFydGluZ0VudGl0eVNldCA9IHRoaXMuZGF0YVZpZXdNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdFx0dGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiA9ICEhKFxuXHRcdFx0TW9kZWxIZWxwZXIuZ2V0RHJhZnRSb290KHN0YXJ0aW5nRW50aXR5U2V0KT8uUHJlcGFyYXRpb25BY3Rpb24gJiYgc3RhcnRpbmdFbnRpdHlTZXQ/LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMuQ29tbW9uPy5NZXNzYWdlc1xuXHRcdCk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID0gKGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHR0aGlzLl9oaWRlQ3JlYXRlTmV4dCA9XG5cdFx0XHQoY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkhpZGRlbkRyYWZ0IGFzIEhpZGRlbkRyYWZ0KT8uaGlkZUNyZWF0ZU5leHQgPT09XG5cdFx0XHR0cnVlO1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldEFjdGlvbk1vZGVsUGF0aChhY3Rpb246IEJhc2VBY3Rpb24pOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEZvckFjdGlvbj4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRcdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0Y29uc3QgYWN0aW9uQ29udGV4dCA9IHRoaXMub0RhdGFNZXRhTW9kZWwuZ2V0Q29udGV4dChhbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZEZvckFjdGlvbj4oYWN0aW9uQ29udGV4dCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXREcmFmdEluZGljYXRvcigpOiBEcmFmdEluZGljYXRvciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW50aXR5U2V0ID0gKHRoaXMuZGF0YVZpZXdNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0IHx8IHRoaXMuZGF0YVZpZXdNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIGFzIEVudGl0eVNldDsgLy8gc3RhcnRpbmdFbnRpdHlTZXQgaXMgdXNlZCBvbiBjb250YWlubWVudCBzY2VuYXJpb1xuXHRcdGNvbnN0IGNvbW1vbkFubm90YXRpb24gPSBlbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNvbW1vbjtcblx0XHRpZiAoKGNvbW1vbkFubm90YXRpb24/LkRyYWZ0Um9vdCB8fCBjb21tb25Bbm5vdGF0aW9uPy5EcmFmdE5vZGUpICYmICF0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0cmV0dXJuIDxEcmFmdEluZGljYXRvciBzdGF0ZT1cInt1aT4vZHJhZnRTdGF0dXN9XCIgdmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIiAvPjtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgZ2V0QXBwbHlCdXR0b24oZW1waGFzaXplZEV4cHJlc3Npb246IFByb3BlcnR5QmluZGluZ0luZm8pOiBCdXR0b24gfCBNZW51QnV0dG9uIHwgbnVsbCB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGlmICgodmlld0RhdGE/LnZpZXdMZXZlbCAhPSBudWxsICYmIHZpZXdEYXRhPy52aWV3TGV2ZWwgPD0gMSkgfHwgdGhpcy5faGlkZGVuRHJhZnQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAodGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiAmJiAhdmlld0RhdGEuaXNEZXNrdG9wICYmICF2aWV3RGF0YS5mY2xFbmFibGVkKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfQVBQTFlfRFJBRlR9XCJcblx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl9hcHBseURvY3VtZW50KGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0dXNlRGVmYXVsdEFjdGlvbk9ubHk9XCJ0cnVlXCJcblx0XHRcdFx0XHRidXR0b25Nb2RlPVwiU3BsaXRcIlxuXHRcdFx0XHRcdHR5cGU9e2VtcGhhc2l6ZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9XCJub3QtYWRhcHRhYmxlXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxNZW51PlxuXHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfVkFMSURBVEVfRFJBRlR9XCJcblx0XHRcdFx0XHRcdFx0cHJlc3M9e2FzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl92YWxpZGF0ZURvY3VtZW50KCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvTWVudT5cblx0XHRcdFx0PC9NZW51QnV0dG9uPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJTdGFuZGFyZEFjdGlvbjo6QXBwbHlcIil9XG5cdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfQVBQTFlfRFJBRlR9XCJcblx0XHRcdFx0dHlwZT17ZW1waGFzaXplZEV4cHJlc3Npb259XG5cdFx0XHRcdGVuYWJsZWQ9e3RydWV9XG5cdFx0XHRcdHByZXNzPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRcdFx0YXdhaXQgY29udHJvbGxlci5fYXBwbHlEb2N1bWVudChjb250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0dmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIlxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGdldFByaW1hcnkoZW1waGFzaXplZEV4cHJlc3Npb24/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvLCBhY3Rpb24/OiBCYXNlQWN0aW9uKTogQnV0dG9uIHwgTWVudUJ1dHRvbiB8IG51bGwge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IGhpZGRlbkRyYWZ0ID0gKGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHRjb25zdCB2aWV3RGF0YSA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29udHJvbGxlclxuXHRcdFx0LmdldFZpZXcoKVxuXHRcdFx0LmFkZERlcGVuZGVudChcblx0XHRcdFx0PENvbW1hbmRFeGVjdXRpb25cblx0XHRcdFx0XHRyZWY9e3RoaXMuY21kRXhlY3V0aW9ufVxuXHRcdFx0XHRcdGNvbW1hbmQ9XCJTYXZlXCJcblx0XHRcdFx0XHRleGVjdXRlPXtjb250cm9sbGVyLl9zYXZlRG9jdW1lbnR9XG5cdFx0XHRcdFx0dmlzaWJsZT17b3IoXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdGhpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdFx0dmlld0RhdGEuZmNsRW5hYmxlZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0XHRVSS5Jc0VkaXRhYmxlXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRlcXVhbChwYXRoSW5Nb2RlbChcIi9pc0lubGluZUVkaXRBY3RpdmVcIiwgXCJ1aVwiKSwgdHJ1ZSlcblx0XHRcdFx0XHQpfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHRpZiAodGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiAmJiAhdmlld0RhdGEuaXNEZXNrdG9wKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VGV4dFNhdmVCdXR0b24oKX1cblx0XHRcdFx0XHRqc3g6Y29tbWFuZD1cImNtZDpTYXZlfGRlZmF1bHRBY3Rpb25cIlxuXHRcdFx0XHRcdHVzZURlZmF1bHRBY3Rpb25Pbmx5PVwidHJ1ZVwiXG5cdFx0XHRcdFx0YnV0dG9uTW9kZT1cIlNwbGl0XCJcblx0XHRcdFx0XHR0eXBlPXtlbXBoYXNpemVkRXhwcmVzc2lvbn1cblx0XHRcdFx0XHR2aXNpYmxlPXtjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT1cIm5vdC1hZGFwdGFibGVcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PE1lbnU+XG5cdFx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdFx0dGV4dD1cIntzYXAuZmUuaTE4bj5UX0NPTU1PTl9PQkpFQ1RfUEFHRV9WQUxJREFURV9EUkFGVH1cIlxuXHRcdFx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IGNvbnRyb2xsZXIuX3ZhbGlkYXRlRG9jdW1lbnQoKTtcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9NZW51PlxuXHRcdFx0XHQ8L01lbnVCdXR0b24+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiU3RhbmRhcmRBY3Rpb246OlNhdmVcIil9XG5cdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VGV4dFNhdmVCdXR0b24oKX1cblx0XHRcdFx0dHlwZT17ZW1waGFzaXplZEV4cHJlc3Npb259XG5cdFx0XHRcdHZpc2libGU9e2NvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdGhpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCl9XG5cdFx0XHRcdGVuYWJsZWQ9e3RydWV9XG5cdFx0XHRcdGpzeDpjb21tYW5kPVwiY21kOlNhdmV8cHJlc3NcIlxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgcHJpb3JpdHk9e2FjdGlvbj8ucHJpb3JpdHl9IGdyb3VwPXthY3Rpb24/Lmdyb3VwfT48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0J1dHRvbj5cblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRUZXh0U2F2ZUJ1dHRvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdFx0Y29uc3Qgc2F2ZUJ1dHRvblRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9TQVZFXCIpO1xuXHRcdGNvbnN0IGNyZWF0ZUJ1dHRvblRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9DUkVBVEVcIik7XG5cdFx0Ly8gSWYgd2UncmUgaW4gc3RpY2t5IG1vZGUgIC0+IHRoZSB1aSBpcyBpbiBjcmVhdGUgbW9kZSwgc2hvdyBDcmVhdGUsIGVsc2Ugc2hvdyBTYXZlXG5cdFx0Ly8gSWYgbm90IC0+IHdlJ3JlIGluIGRyYWZ0IG9yIGhpZGRlbiBkcmFmdFxuXHRcdC8vIEluIGNhc2Ugb2YgZHJhZnQgaWYgaXQgaXMgYSBuZXcgb2JqZWN0ICghSXNBY3RpdmVFbnRpdHkgJiYgIUhhc0FjdGl2ZUVudGl0eSksIHNob3cgY3JlYXRlLCBlbHNlIHNob3cgc2F2ZVxuXHRcdC8vIEluIGNhc2Ugb2YgaGlkZGVuIGRyYWZ0IHRoZSBidXR0b24gc2hvd3MgdXAgaW4gYWxsIHBhZ2VzIGFuZCBmb2xsb3dzIHRoZSBiZWxvdyBjcml0ZXJpYVxuXHRcdC8vIFx0XHRJZiB0aGUgcm9vdCBvYmplY3QgaXMgYSBuZXcgb2JqZWN0ICghSXNBY3RpdmVFbnRpdHkgJiYgIUhhc0FjdGl2ZUVudGl0eSkgdGhlbiBhbGwgcGFnZXMgc2hvdWxkIHNob3cgQ3JlYXRlLlxuXHRcdC8vIFx0XHRJZiB0aGUgcm9vciBvYmplY3QgaXMgbm90IGEgbmV3IG9iamVjdCB0aGVuIGFsbCBwYWdlcyBzaG91bGQgc2hvdyBTYXZlLlxuXHRcdHJldHVybiBpZkVsc2UoXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdCh0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0IGFzIEVudGl0eVNldCkuYW5ub3RhdGlvbnMuU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRVSS5Jc0NyZWF0ZU1vZGUsXG5cdFx0XHRcdGlmRWxzZSh0aGlzLl9oaWRkZW5EcmFmdCwgYW5kKHBhdGhJbk1vZGVsKFwiL3Jvb3RJc05ld09iamVjdFwiLCBcImZvb3RlckludGVybmFsXCIpKSwgRHJhZnQuSXNOZXdPYmplY3QpXG5cdFx0XHQpLFxuXHRcdFx0Y3JlYXRlQnV0dG9uVGV4dCxcblx0XHRcdHNhdmVCdXR0b25UZXh0XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q2FuY2VsQnV0dG9uKGFjdGlvbj86IEJhc2VBY3Rpb24pOiBCdXR0b24gfCBudWxsIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRjb25zdCBoaWRkZW5EcmFmdCA9IChjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuSGlkZGVuRHJhZnQgYXMgSGlkZGVuRHJhZnQpXG5cdFx0XHQ/LmVuYWJsZWQ7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnRyb2xsZXIuZ2V0VmlldygpLmFkZERlcGVuZGVudChcblx0XHRcdDxDb21tYW5kRXhlY3V0aW9uXG5cdFx0XHRcdHJlZj17dGhpcy5jbWRFeGVjdXRpb259XG5cdFx0XHRcdGNvbW1hbmQ9XCJDYW5jZWxcIlxuXHRcdFx0XHRleGVjdXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5fY2FuY2VsRG9jdW1lbnQoeyBjYW5jZWxCdXR0b246IFwiZmU6OkZvb3RlckJhcjo6U3RhbmRhcmRBY3Rpb246OkNhbmNlbFwiIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHR2aXNpYmxlPXtpZkVsc2UoXG5cdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0dmlld0RhdGEuZmNsRW5hYmxlZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHQpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdC8vIE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgc2V0dGluZyBpcyBuZWVkZWQgd2hlbiB0aGUgZGlzY2FyZCBidXR0b24gaXMgaW4gdGhlIG92ZXJmbG93XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJTdGFuZGFyZEFjdGlvbjo6Q2FuY2VsXCIpfVxuXHRcdFx0XHR0ZXh0PXtcblx0XHRcdFx0XHRNb2RlbEhlbHBlci5pc0RyYWZ0Um9vdCh0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCkgJiYgIXRoaXMuX2hpZGRlbkRyYWZ0XG5cdFx0XHRcdFx0XHQ/IFwie3NhcC5mZS5pMThuPkNfQ09NTU9OX09CSkVDVF9QQUdFX0RJU0NBUkRfRFJBRlR9XCJcblx0XHRcdFx0XHRcdDogXCJ7c2FwLmZlLmkxOG4+Q19DT01NT05fT0JKRUNUX1BBR0VfQ0FOQ0VMfVwiXG5cdFx0XHRcdH1cblx0XHRcdFx0anN4OmNvbW1hbmQ9XCJjbWQ6Q2FuY2VsfHByZXNzXCJcblx0XHRcdFx0dmlzaWJsZT17Y29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHRVSS5Jc0VkaXRhYmxlXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KX1cblx0XHRcdFx0YXJpYUhhc1BvcHVwPXtpZkVsc2UocGF0aEluTW9kZWwoXCIvaXNEb2N1bWVudE1vZGlmaWVkXCIsIFwidWlcIiksIGNvbnN0YW50KFwiRGlhbG9nXCIpLCBjb25zdGFudChcIk5vbmVcIikpfVxuXHRcdFx0XHRlbmFibGVkPXt0cnVlfVxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogKFxuXHRcdFx0XHRcdFx0PE92ZXJmbG93VG9vbGJhckxheW91dERhdGFcblx0XHRcdFx0XHRcdFx0cHJpb3JpdHk9e2FjdGlvbj8ucHJpb3JpdHl9XG5cdFx0XHRcdFx0XHRcdGNsb3NlT3ZlcmZsb3dPbkludGVyYWN0aW9uPXtmYWxzZX1cblx0XHRcdFx0XHRcdD48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9CdXR0b24+XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q3JlYXRlTmV4dEJ1dHRvbihlbXBoYXNpemVkRXhwcmVzc2lvbjogUHJvcGVydHlCaW5kaW5nSW5mbyk6IEJ1dHRvbiB8IG51bGwge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gY29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncztcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIlN0YW5kYXJkQWN0aW9uOjpDcmVhdGVOZXh0XCIpfVxuXHRcdFx0XHR0ZXh0PXtcIntzYXAuZmUuaTE4bj5DX0NPTU1PTl9PQkpFQ1RfUEFHRV9DUkVBVEVfTkVYVH1cIn1cblx0XHRcdFx0cHJlc3M9e2NvbnRyb2xsZXIuZWRpdEZsb3cuY3JlYXRlTmV4dERvY3VtZW50fVxuXHRcdFx0XHR0eXBlPXtlbXBoYXNpemVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmlzaWJsZT17aWZFbHNlKFxuXHRcdFx0XHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRhbmQoRHJhZnQuSXNOZXdPYmplY3QsIGVxdWFsKHBhdGhJbk1vZGVsKFwiL3Nob3dTYXZlQW5kQ2FuY2VsQnV0dG9uXCIsIFwiZmNsaGVscGVyXCIpLCB0cnVlKSksXG5cdFx0XHRcdFx0XHREcmFmdC5Jc05ld09iamVjdFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0RHJhZnQuSXNOZXdPYmplY3Rcblx0XHRcdFx0KX1cblx0XHRcdFx0ZW5hYmxlZD17dHJ1ZX1cblx0XHRcdFx0ZHQ6ZGVzaWdudGltZT1cIm5vdC1hZGFwdGFibGVcIlxuXHRcdFx0PlxuXHRcdFx0XHR7eyBsYXlvdXREYXRhOiA8T3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSBjbG9zZU92ZXJmbG93T25JbnRlcmFjdGlvbj17ZmFsc2V9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT4gfX1cblx0XHRcdDwvQnV0dG9uPlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGdldFRvb2xiYXJTZXBhcmF0b3IoYWN0aW9uOiBCYXNlQWN0aW9uKTogVG9vbGJhclNlcGFyYXRvciB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxUb29sYmFyU2VwYXJhdG9yPlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIGdyb3VwPXthY3Rpb24uZ3JvdXB9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT5cblx0XHRcdFx0fX1cblx0XHRcdDwvVG9vbGJhclNlcGFyYXRvcj5cblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXREYXRhRmllbGRGb3JBY3Rpb25CdXR0b24oYWN0aW9uOiBCYXNlQWN0aW9uKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoYWN0aW9uLmFubm90YXRpb25QYXRoKSB7XG5cdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRcdFx0bGV0IHByZXNzRXZlbnQ6IHsgcHJlc3M6IChldmVudDogRXZlbnQpID0+IHZvaWQgfSB8IHsgXCJqc3g6Y29tbWFuZFwiOiBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvblBhdGhDb250ZXh0ID0gdGhpcy5vRGF0YU1ldGFNb2RlbC5nZXRDb250ZXh0KGFubm90YXRpb25QYXRoKTtcblx0XHRcdGNvbnN0IGRhdGFGaWVsZENvbnRleHRNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RGF0YUZpZWxkRm9yQWN0aW9uPihhbm5vdGF0aW9uUGF0aENvbnRleHQpO1xuXHRcdFx0Y29uc3QgZGF0YUZpZWxkRm9yQWN0aW9uID0gZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0XHRpZiAoZGF0YUZpZWxkRm9yQWN0aW9uKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvblBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0ZW50aXR5U2V0TmFtZTogdGhpcy5kYXRhVmlld01vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQ/Lm5hbWUsXG5cdFx0XHRcdFx0aW52b2NhdGlvbkdyb3VwaW5nOlxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkRm9yQWN0aW9uLkludm9jYXRpb25Hcm91cGluZyA9PT0gXCJVSS5PcGVyYXRpb25Hcm91cGluZ1R5cGUvQ2hhbmdlU2V0XCJcblx0XHRcdFx0XHRcdFx0PyAobGlicmFyeSBhcyBDb3JlTGliKS5JbnZvY2F0aW9uR3JvdXBpbmcuQ2hhbmdlU2V0XG5cdFx0XHRcdFx0XHRcdDogKGxpYnJhcnkgYXMgQ29yZUxpYikuSW52b2NhdGlvbkdyb3VwaW5nLklzb2xhdGVkLFxuXHRcdFx0XHRcdGxhYmVsOiBkYXRhRmllbGRGb3JBY3Rpb24uTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0aXNOYXZpZ2FibGU6IGFjdGlvbi5pc05hdmlnYWJsZSxcblx0XHRcdFx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb25cblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKCFhY3Rpb24uY29tbWFuZCkge1xuXHRcdFx0XHRcdHByZXNzRXZlbnQgPSB7XG5cdFx0XHRcdFx0XHRwcmVzczogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHQoY29udHJvbGxlciBhcyBDb250cm9sbGVyV2l0aEFjdGlvbikuaGFuZGxlcnMub25DYWxsQWN0aW9uKHZpZXcsIGRhdGFGaWVsZEZvckFjdGlvbi5BY3Rpb24gYXMgc3RyaW5nLCB7XG5cdFx0XHRcdFx0XHRcdFx0Li4uYWN0aW9uUGFyYW1ldGVycyxcblx0XHRcdFx0XHRcdFx0XHQuLi57XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZXh0czogdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0bW9kZWw6IHZpZXcuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBjb21tYW5kIGNvbWluZyBmcm9tIHRoZSBtYW5pZmVzdCBkb2Vzbid0IGdldCB0aGUgbWFuZGF0b3J5IHByZWZpeCBcImNtZDpcIiBzbyB3ZSBuZWVkIHRvIGFkZCBpdFxuXHRcdFx0XHRcdGlmICghYWN0aW9uLmNvbW1hbmQuc3RhcnRzV2l0aChcImNtZDpcIikpIHtcblx0XHRcdFx0XHRcdGFjdGlvbi5jb21tYW5kID0gYGNtZDoke2FjdGlvbi5jb21tYW5kfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHByZXNzRXZlbnQgPSB7IFwianN4OmNvbW1hbmRcIjogYCR7YWN0aW9uLmNvbW1hbmR9fHByZXNzYCBhcyBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQodGhpcy5nZXRBY3Rpb25Nb2RlbFBhdGgoYWN0aW9uKSl9XG5cdFx0XHRcdFx0XHQvLyBUaGlzIGV4cHJlc3Npb24gY29uc2lkZXJzIGFjdGlvbnMgd2l0aCBkeW5hbWljIHZpc2liaWxpdHkuXG5cdFx0XHRcdFx0XHQvLyBXaGVuIHdlIGhhdmUgb3RoZXIgdmFsdWVzIHRoYW4gdHJ1ZSBvciBmYWxzZSwgaS5lLiBhbiBleHByZXNzaW9uLCB3ZSBleGNsdWRlIHRoZSBhY3Rpb25zIGZyb20gYWRhcHRpbmcgdGhlIHZpc2liaWxpdHkuXG5cdFx0XHRcdFx0XHRkdDpkZXNpZ250aW1lPXthY3Rpb24udmlzaWJsZSA9PT0gXCJ0cnVlXCIgfHwgYWN0aW9uLnZpc2libGUgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IFwibm90LWFkYXB0YWJsZS12aXNpYmlsaXR5XCJ9XG5cdFx0XHRcdFx0XHR0ZXh0PXthY3Rpb25QYXJhbWV0ZXJzLmxhYmVsfVxuXHRcdFx0XHRcdFx0ey4uLnByZXNzRXZlbnR9XG5cdFx0XHRcdFx0XHRhcmlhSGFzUG9wdXA9e2lzQWN0aW9uV2l0aERpYWxvZyhkYXRhRmllbGRDb250ZXh0TW9kZWxQYXRoLnRhcmdldE9iamVjdCl9XG5cdFx0XHRcdFx0XHR2aXNpYmxlPXthY3Rpb24udmlzaWJsZX1cblx0XHRcdFx0XHRcdGVuYWJsZWQ9e2FjdGlvbi5lbmFibGVkfVxuXHRcdFx0XHRcdFx0dHlwZT17Q3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZShkYXRhRmllbGRDb250ZXh0TW9kZWxQYXRoKX1cblx0XHRcdFx0XHRcdGljb249e2FjdGlvbj8uaXNBSU9wZXJhdGlvbiA9PT0gdHJ1ZSA/IGFpSWNvbiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRsYXlvdXREYXRhOiAoXG5cdFx0XHRcdFx0XHRcdFx0PE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgcHJpb3JpdHk9e2FjdGlvbi5wcmlvcml0eX0gZ3JvdXA9e2FjdGlvbi5ncm91cH0+PC9PdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhPlxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0XHQpIGFzIEJ1dHRvbjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldE1hbmlmZXN0QnV0dG9uKGFjdGlvbjogQmFzZUFjdGlvbik6IEJ1dHRvbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKE9iamVjdFBhZ2VUZW1wbGF0aW5nLmlzTWFuaWZlc3RBY3Rpb24oYWN0aW9uKSkge1xuXHRcdFx0bGV0IHByZXNzRXZlbnQ6IHsgcHJlc3M6IChldmVudDogRXZlbnQpID0+IHZvaWQgfSB8IHsgXCJqc3g6Y29tbWFuZFwiOiBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0aWYgKGFjdGlvbi5jb21tYW5kKSB7XG5cdFx0XHRcdHByZXNzRXZlbnQgPSB7IFwianN4OmNvbW1hbmRcIjogYGNtZDoke2FjdGlvbi5jb21tYW5kfXxwcmVzc2AgfTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHByZXNzRXZlbnQgPSB7XG5cdFx0XHRcdFx0cHJlc3M6IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdEZQTUhlbHBlci5hY3Rpb25XcmFwcGVyKGV2ZW50LCBhY3Rpb24uaGFuZGxlck1vZHVsZSwgYWN0aW9uLmhhbmRsZXJNZXRob2QsIHt9KS5jYXRjaCgoZXJyb3I6IHVua25vd24pID0+XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChhY3Rpb24uaWQpfVxuXHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9e2FjdGlvbi52aXNpYmxlID09PSBcInRydWVcIiB8fCBhY3Rpb24udmlzaWJsZSA9PT0gXCJmYWxzZVwiID8gdW5kZWZpbmVkIDogXCJub3QtYWRhcHRhYmxlLXZpc2liaWxpdHlcIn1cblx0XHRcdFx0XHR0ZXh0PXthY3Rpb24udGV4dCA/PyBcIlwifVxuXHRcdFx0XHRcdHsuLi5wcmVzc0V2ZW50fVxuXHRcdFx0XHRcdHR5cGU9XCJUcmFuc3BhcmVudFwiXG5cdFx0XHRcdFx0dmlzaWJsZT17YWN0aW9uLnZpc2libGV9XG5cdFx0XHRcdFx0ZW5hYmxlZD17YWN0aW9uLmVuYWJsZWR9XG5cdFx0XHRcdFx0aWNvbj17YWN0aW9uPy5pc0FJT3BlcmF0aW9uID09PSB0cnVlID8gYWlJY29uIDogdW5kZWZpbmVkfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIHByaW9yaXR5PXthY3Rpb24ucHJpb3JpdHl9IGdyb3VwPXthY3Rpb24uZ3JvdXB9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT5cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdOKAmlxuXHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdCkgYXMgQnV0dG9uO1xuXHRcdH1cblx0fVxuXG5cdGdldEFjdGlvbkNvbnRyb2xzKCk6IEJ1dHRvbltdIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbiA9IE9iamVjdFBhZ2VUZW1wbGF0aW5nLmJ1aWxkRW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24odGhpcy5kYXRhVmlld01vZGVsUGF0aCk7XG5cdFx0cmV0dXJuIHRoaXMuYWN0aW9uc1xuXHRcdFx0Py5tYXAoKGFjdGlvbjogQmFzZUFjdGlvbikgPT4ge1xuXHRcdFx0XHRzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBBY3Rpb25UeXBlLkRlZmF1bHRBcHBseTpcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldEFwcGx5QnV0dG9uKGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uKTtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YUZpZWxkRm9yQWN0aW9uQnV0dG9uKGFjdGlvbik7XG5cdFx0XHRcdFx0Y2FzZSBBY3Rpb25UeXBlLlByaW1hcnk6XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5faGlkZGVuRHJhZnQgJiYgIXRoaXMuX2hpZGVDcmVhdGVOZXh0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGVtcGhhc2l6ZWRCdXR0b25Ub29sS2l0RXhwID0gZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb25cblx0XHRcdFx0XHRcdFx0XHQ/IHJlc29sdmVCaW5kaW5nU3RyaW5nKGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uKVxuXHRcdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRQcmltYXJ5KGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShEcmFmdC5Jc05ld09iamVjdCwgdW5kZWZpbmVkLCBlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCkpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldFByaW1hcnkoZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24sIGFjdGlvbik7XG5cdFx0XHRcdFx0Y2FzZSBBY3Rpb25UeXBlLlNlY29uZGFyeTpcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldENhbmNlbEJ1dHRvbihhY3Rpb24pO1xuXHRcdFx0XHRcdGNhc2UgQWN0aW9uVHlwZS5DcmVhdGVOZXh0OlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuX2hpZGRlbkRyYWZ0ICYmICF0aGlzLl9oaWRlQ3JlYXRlTmV4dCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCA9IGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0PyByZXNvbHZlQmluZGluZ1N0cmluZyhlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbilcblx0XHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0Q3JlYXRlTmV4dEJ1dHRvbihcblx0XHRcdFx0XHRcdFx0XHRjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoRHJhZnQuSXNOZXdPYmplY3QsIGVtcGhhc2l6ZWRCdXR0b25Ub29sS2l0RXhwLCB1bmRlZmluZWQpKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdGNhc2UgQWN0aW9uVHlwZS5TZXBhcmF0b3I6XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUb29sYmFyU2VwYXJhdG9yKGFjdGlvbik7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldE1hbmlmZXN0QnV0dG9uKGFjdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuZmlsdGVyKChhY3Rpb24pOiBhY3Rpb24gaXMgQnV0dG9uID0+ICEhYWN0aW9uKTtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogT3ZlcmZsb3dUb29sYmFyIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRjb25zdCB2aWV3RGF0YSA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgbWVzc2FnZUJ1dHRvbjogTWVzc2FnZUJ1dHRvbiA9IChcblx0XHRcdDxNZXNzYWdlQnV0dG9uXG5cdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiTWVzc2FnZUJ1dHRvblwiKX1cblx0XHRcdFx0dmlzaWJsZT17Y29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0dGhpcy5faGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KX1cblx0XHRcdFx0bWVzc2FnZUNoYW5nZT17KCk6IHZvaWQgPT4gY29udHJvbGxlci5fZ2V0Rm9vdGVyVmlzaWJpbGl0eSgpfVxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W3RoaXMuY3JlYXRlSWQoXCJNZXNzYWdlQnV0dG9uOjpBcmlhVGV4dFwiKSBhcyBzdHJpbmddfVxuXHRcdFx0XHR0eXBlPVwiRW1waGFzaXplZFwiXG5cdFx0XHRcdGFyaWFIYXNQb3B1cD1cIkRpYWxvZ1wiXG5cdFx0XHQvPlxuXHRcdCk7XG5cdFx0Y29uc3QgZm9vdGVyQmFyID0gKFxuXHRcdFx0PE92ZXJmbG93VG9vbGJhciBpZD17dGhpcy5jcmVhdGVJZChcIl9mY1wiKX0gYXN5bmNNb2RlPXt0cnVlfT5cblx0XHRcdFx0PEludmlzaWJsZVRleHRcblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIk1lc3NhZ2VCdXR0b246OkFyaWFUZXh0XCIpfVxuXHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+Q19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9CVVRUT05fQVJJQV9URVhUfVwiXG5cdFx0XHRcdC8+XG5cdFx0XHRcdHttZXNzYWdlQnV0dG9ufVxuXHRcdFx0XHQ8VG9vbGJhclNwYWNlciAvPlxuXHRcdFx0XHR7dGhpcy5nZXREcmFmdEluZGljYXRvcigpfVxuXHRcdFx0XHR7dGhpcy5nZXRBY3Rpb25Db250cm9scygpfVxuXHRcdFx0PC9PdmVyZmxvd1Rvb2xiYXI+XG5cdFx0KTtcblx0XHRjb250cm9sbGVyXG5cdFx0XHQuZ2V0VmlldygpXG5cdFx0XHQuYWRkRGVwZW5kZW50KFxuXHRcdFx0XHQ8Q29tbWFuZEV4ZWN1dGlvblxuXHRcdFx0XHRcdHJlZj17dGhpcy5jbWRFeGVjdXRpb259XG5cdFx0XHRcdFx0Y29tbWFuZD1cIk9wZW5NZXNzYWdlQnV0dG9uTWVudVwiXG5cdFx0XHRcdFx0ZXhlY3V0ZT17KCk6IE1lc3NhZ2VCdXR0b24gPT4gbWVzc2FnZUJ1dHRvbi5maXJlUHJlc3MoKX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0cmV0dXJuIGZvb3RlckJhcjtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvQ0E7RUFHQTtFQUFBLElBYXFCQSxhQUFhLElBQUFDLElBQUEsR0FEakNDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFBQyxLQUFBLEdBRTVDQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFBQyxLQUFBLEdBR3pDRCxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsRUFBQUUsS0FBQSxHQUdoQ0MsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRSxRQUFRO0lBQ2RDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR0RILFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUdESixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FHNUJDLGVBQWUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FtQmpCQywwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsRUFBQWQsSUFBQSxDQUFBZSxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGNBQUE7SUFKeEQsU0FBQWxCLGNBQVltQixLQUFxRCxFQUFFQyxNQUF5QixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUM3RkEsS0FBQSxHQUFBSCxjQUFBLENBQUFJLElBQUEsT0FBTUgsS0FBSyxFQUFFQyxNQUFNLENBQUM7TUFBQ0csMEJBQUEsQ0FBQUYsS0FBQSx1Q0FBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsOEJBQUFJLFlBQUEsRUFBQUosS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLFFBQUFLLFlBQUEsRUFBQUwsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFNLFlBQUEsRUFBQU4sS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGlCQUFBTyxZQUFBLEVBQUFQLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxrQkFBQVEsWUFBQSxFQUFBUixLQUFBO01BQUFBLEtBQUEsQ0FIZFMsZUFBZSxHQUFHLEtBQUs7TUFBQSxPQUFBVCxLQUFBO0lBSS9CO0lBQUNVLFFBQUEsR0FBQS9CLGFBQUE7SUFBQWdDLGNBQUEsQ0FBQWhDLGFBQUEsRUFBQWtCLGNBQUE7SUFBQSxJQUFBZSxNQUFBLEdBQUFqQyxhQUFBLENBQUFrQyxTQUFBO0lBQUFELE1BQUEsQ0FHWUUsY0FBYyxHQUQzQixlQUNhQSxjQUFjQSxDQUFBLEVBQXFDO01BQy9ELElBQUksSUFBSSxDQUFDQyxZQUFZLEVBQUU7UUFDdEIsTUFBTUMsVUFBVSxHQUFHLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsRUFBRUMsaUJBQWlCLENBQUMsQ0FBbUI7UUFDMUUsTUFBTUMsV0FBVyxHQUFHSCxVQUFVLENBQUNJLE9BQU8sQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7UUFDNUQsTUFBTUMsV0FBVyxHQUFHLE1BQU1OLFVBQVUsQ0FBQ08sUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQ0wsV0FBVyxDQUFDO1FBQzFFLElBQUksQ0FBQ00sUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQWVDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRUosV0FBVyxDQUFDO01BQzVGO0lBQ0QsQ0FBQztJQUFBVixNQUFBLENBRURlLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFBLEVBQVM7TUFDbEIsTUFBTUMsS0FBSyxHQUFHLElBQUksQ0FBQ1gsU0FBUyxDQUFDLENBQUM7TUFDOUIsSUFBSSxDQUFDWSxRQUFRLENBQUMsSUFBSUMsU0FBUyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztNQUNoRCxJQUFJLENBQUNDLE9BQU8sR0FBR0gsS0FBSyxFQUFFSSxtQkFBbUIsRUFBRUMsZUFBZSxFQUFFQyxnQkFBZ0IsRUFBRUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztNQUN4RyxNQUFNQyxnQkFBZ0IsR0FBR1IsS0FBSyxFQUFFSSxtQkFBbUIsRUFBRUssZUFBZTtNQUNwRSxJQUFJLENBQUNDLGNBQWMsR0FBR1YsS0FBSyxFQUFFSSxtQkFBbUIsRUFBRU8sTUFBTSxDQUFDQyxTQUEyQjtNQUNwRixJQUFJLENBQUNDLGlCQUFpQixHQUFHLElBQUksQ0FBQ0MsNkJBQTZCLENBQUMsSUFBSSxDQUFDQyxRQUFRLEVBQUVQLGdCQUFnQixJQUFJLElBQUksQ0FBQ1EsV0FBVyxDQUFFO01BQ2pILE1BQU1DLGlCQUFpQixHQUFHLElBQUksQ0FBQ0osaUJBQWlCLENBQUNJLGlCQUFpQjtNQUNsRSxJQUFJLENBQUNDLGlCQUFpQixHQUFHLENBQUMsRUFDekJDLFdBQVcsQ0FBQ0MsWUFBWSxDQUFDSCxpQkFBaUIsQ0FBQyxFQUFFSSxpQkFBaUIsSUFBSUosaUJBQWlCLEVBQUVLLFVBQVUsQ0FBQ0MsV0FBVyxDQUFDQyxNQUFNLEVBQUVDLFFBQVEsQ0FDNUg7TUFDRCxJQUFJLENBQUNDLE9BQU8sR0FBRyxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BDOztJQUVBO0FBQ0Q7QUFDQSxPQUZDO0lBQUEzQyxNQUFBLENBR0E0QyxtQkFBbUIsR0FBbkIsU0FBQUEsbUJBQW1CQSxDQUFBLEVBQVM7TUFDM0IsTUFBTXhDLFVBQVUsR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUVDLGlCQUFpQixDQUFDLENBQXlCO01BQ2hGLElBQUksQ0FBQ0gsWUFBWSxHQUFJQyxVQUFVLENBQUN5QyxlQUFlLENBQUMsQ0FBQyxDQUFDQywwQkFBMEIsQ0FBQyxDQUFDLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLFdBQVcsRUFDekdDLE9BQU87TUFDVixJQUFJLENBQUNwRCxlQUFlLEdBQ2xCTyxVQUFVLENBQUN5QyxlQUFlLENBQUMsQ0FBQyxDQUFDQywwQkFBMEIsQ0FBQyxDQUFDLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLFdBQVcsRUFBa0JFLGNBQWMsS0FDeEgsSUFBSTtNQUNMLElBQUksQ0FBQyxJQUFJLENBQUNSLE9BQU8sRUFBRTtRQUNsQixJQUFJLENBQUMzQixVQUFVLENBQUMsQ0FBQztNQUNsQjtJQUNELENBQUM7SUFBQWYsTUFBQSxDQUVPbUQsa0JBQWtCLEdBQTFCLFNBQVFBLGtCQUFrQkEsQ0FBQ0MsTUFBa0IsRUFBdUQ7TUFDbkcsTUFBTUMsY0FBYyxHQUFHRCxNQUFNLENBQUNDLGNBQWM7TUFDNUMsSUFBSUEsY0FBYyxFQUFFO1FBQ25CLE1BQU1DLGFBQWEsR0FBRyxJQUFJLENBQUM1QixjQUFjLENBQUM2QixVQUFVLENBQUNGLGNBQWMsQ0FBQztRQUNwRSxPQUFPRywyQkFBMkIsQ0FBcUJGLGFBQWEsQ0FBQztNQUN0RTtNQUNBLE9BQU9HLFNBQVM7SUFDakIsQ0FBQztJQUFBekQsTUFBQSxDQUVEMEQsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQSxFQUErQjtNQUMvQyxNQUFNQyxTQUFTLEdBQUksSUFBSSxDQUFDOUIsaUJBQWlCLENBQUMrQixlQUFlLElBQUksSUFBSSxDQUFDL0IsaUJBQWlCLENBQUNJLGlCQUErQixDQUFDLENBQUM7TUFDckgsTUFBTTRCLGdCQUFnQixHQUFHRixTQUFTLENBQUNwQixXQUFXLEVBQUVDLE1BQU07TUFDdEQsSUFBSSxDQUFDcUIsZ0JBQWdCLEVBQUVDLFNBQVMsSUFBSUQsZ0JBQWdCLEVBQUVFLFNBQVMsS0FBSyxDQUFDLElBQUksQ0FBQzVELFlBQVksRUFBRTtRQUN2RixPQUFPNkQsSUFBQSxDQUFDQyxjQUFjO1VBQUNDLEtBQUssRUFBQyxtQkFBbUI7VUFBQ0MsT0FBTyxFQUFDO1FBQWtCLENBQUUsQ0FBQztNQUMvRTtNQUNBLE9BQU9WLFNBQVM7SUFDakIsQ0FBQztJQUFBekQsTUFBQSxDQUVPb0UsY0FBYyxHQUF0QixTQUFRQSxjQUFjQSxDQUFDQyxvQkFBeUMsRUFBOEI7TUFDN0YsTUFBTWpFLFVBQVUsR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUVDLGlCQUFpQixDQUFDLENBQXlCO01BQ2hGLE1BQU1nRSxRQUFRLEdBQUdsRSxVQUFVLENBQUNJLE9BQU8sQ0FBQyxDQUFDLENBQUMrRCxXQUFXLENBQUMsQ0FBeUI7TUFDM0UsSUFBS0QsUUFBUSxFQUFFRSxTQUFTLElBQUksSUFBSSxJQUFJRixRQUFRLEVBQUVFLFNBQVMsSUFBSSxDQUFDLElBQUssSUFBSSxDQUFDckUsWUFBWSxFQUFFO1FBQ25GLE9BQU8sSUFBSTtNQUNaO01BQ0EsSUFBSSxJQUFJLENBQUMrQixpQkFBaUIsSUFBSSxDQUFDb0MsUUFBUSxDQUFDRyxTQUFTLElBQUksQ0FBQ0gsUUFBUSxDQUFDSSxVQUFVLEVBQUU7UUFDMUUsT0FDQ1YsSUFBQSxDQUFDVyxVQUFVO1VBQ1ZDLElBQUksRUFBQyxnREFBZ0Q7VUFDckRDLGFBQWEsRUFBRSxNQUFBQSxDQUFBLEtBQTJCO1lBQ3pDLE1BQU16RSxVQUFVLENBQUMwRSxjQUFjLENBQUMxRSxVQUFVLENBQUNJLE9BQU8sQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztVQUMxRSxDQUFFO1VBQ0ZzRSxvQkFBb0IsRUFBQyxNQUFNO1VBQzNCQyxVQUFVLEVBQUMsT0FBTztVQUNsQnpHLElBQUksRUFBRThGLG9CQUFxQjtVQUMzQixpQkFBYyxlQUFlO1VBQUFZLFFBQUEsRUFFN0JqQixJQUFBLENBQUNrQixJQUFJO1lBQUFELFFBQUEsRUFDSmpCLElBQUEsQ0FBQ21CLFFBQVE7Y0FDUlAsSUFBSSxFQUFDLG1EQUFtRDtjQUN4RFEsS0FBSyxFQUFFLE1BQUFBLENBQUEsS0FBMkI7Z0JBQ2pDLE1BQU1oRixVQUFVLENBQUNpRixpQkFBaUIsQ0FBQyxDQUFDO2NBQ3JDO1lBQUUsQ0FDRjtVQUFDLENBQ0c7UUFBQyxDQUNJLENBQUM7TUFFZjtNQUNBLE9BQ0NyQixJQUFBLENBQUNzQixNQUFNO1FBQ05DLEVBQUUsRUFBRSxJQUFJLENBQUNDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBRTtRQUMzQ1osSUFBSSxFQUFDLGdEQUFnRDtRQUNyRHJHLElBQUksRUFBRThGLG9CQUFxQjtRQUMzQnBCLE9BQU8sRUFBRSxJQUFLO1FBQ2RtQyxLQUFLLEVBQUUsTUFBQUEsQ0FBQSxLQUEyQjtVQUNqQyxNQUFNaEYsVUFBVSxDQUFDMEUsY0FBYyxDQUFDMUUsVUFBVSxDQUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDMUUsQ0FBRTtRQUNGMEQsT0FBTyxFQUFDLGtCQUFrQjtRQUMxQixpQkFBYztNQUFlLENBQzdCLENBQUM7SUFFSixDQUFDO0lBQUFuRSxNQUFBLENBRU95RixVQUFVLEdBQWxCLFNBQVFBLFVBQVVBLENBQUNwQixvQkFBMEMsRUFBRWpCLE1BQW1CLEVBQThCO01BQy9HLE1BQU1oRCxVQUFVLEdBQUcsSUFBSSxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFQyxpQkFBaUIsQ0FBQyxDQUF5QjtNQUNoRixNQUFNb0YsV0FBVyxHQUFJdEYsVUFBVSxDQUFDeUMsZUFBZSxDQUFDLENBQUMsQ0FBQ0MsMEJBQTBCLENBQUMsQ0FBQyxDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxXQUFXLEVBQ3pHQyxPQUFPO01BQ1YsTUFBTXFCLFFBQVEsR0FBR2xFLFVBQVUsQ0FBQ0ksT0FBTyxDQUFDLENBQUMsQ0FBQytELFdBQVcsQ0FBQyxDQUF5QjtNQUMzRW5FLFVBQVUsQ0FDUkksT0FBTyxDQUFDLENBQUMsQ0FDVG1GLFlBQVksQ0FDWjNCLElBQUEsQ0FBQzRCLGdCQUFnQjtRQUNoQkMsR0FBRyxFQUFFLElBQUksQ0FBQ0MsWUFBYTtRQUN2QkMsT0FBTyxFQUFDLE1BQU07UUFDZEMsT0FBTyxFQUFFNUYsVUFBVSxDQUFDNkYsYUFBYztRQUNsQzlCLE9BQU8sRUFBRStCLEVBQUUsQ0FDVkMsTUFBTSxDQUNMVCxXQUFXLEtBQUssSUFBSSxFQUNwQlMsTUFBTSxDQUNMN0IsUUFBUSxDQUFDSSxVQUFVLEtBQUssSUFBSSxFQUM1QjBCLEdBQUcsQ0FBQ0MsRUFBRSxDQUFDQyxVQUFVLEVBQUVDLEtBQUssQ0FBQ0MsV0FBVyxDQUFDLDBCQUEwQixFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ3JGSCxFQUFFLENBQUNDLFVBQ0osQ0FBQyxFQUNERCxFQUFFLENBQUNDLFVBQ0osQ0FBQyxFQUNEQyxLQUFLLENBQUNDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQ3JEO01BQUUsQ0FDRixDQUNGLENBQUM7TUFDRixJQUFJLElBQUksQ0FBQ3RFLGlCQUFpQixJQUFJLENBQUNvQyxRQUFRLENBQUNHLFNBQVMsRUFBRTtRQUNsRCxPQUNDVCxJQUFBLENBQUNXLFVBQVU7VUFDVkMsSUFBSSxFQUFFLElBQUksQ0FBQzZCLGlCQUFpQixDQUFDLENBQUU7VUFDL0IsZUFBWSx3QkFBd0I7VUFDcEMxQixvQkFBb0IsRUFBQyxNQUFNO1VBQzNCQyxVQUFVLEVBQUMsT0FBTztVQUNsQnpHLElBQUksRUFBRThGLG9CQUFxQjtVQUMzQkYsT0FBTyxFQUFFdUMsaUJBQWlCLENBQ3pCUCxNQUFNLENBQ0xULFdBQVcsS0FBSyxJQUFJLEVBQ3BCUyxNQUFNLENBQ0w3QixRQUFRLENBQUNJLFVBQVUsS0FBSyxJQUFJLEVBQzVCMEIsR0FBRyxDQUFDQyxFQUFFLENBQUNDLFVBQVUsRUFBRUMsS0FBSyxDQUFDQyxXQUFXLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDckZILEVBQUUsQ0FBQ0MsVUFDSixDQUFDLEVBQ0RELEVBQUUsQ0FBQ0MsVUFDSixDQUNELENBQUU7VUFDRixpQkFBYyxlQUFlO1VBQUFyQixRQUFBLEVBRTdCakIsSUFBQSxDQUFDa0IsSUFBSTtZQUFBRCxRQUFBLEVBQ0pqQixJQUFBLENBQUNtQixRQUFRO2NBQ1JQLElBQUksRUFBQyxtREFBbUQ7Y0FDeERRLEtBQUssRUFBRSxNQUFBQSxDQUFBLEtBQTJCO2dCQUNqQyxNQUFNaEYsVUFBVSxDQUFDaUYsaUJBQWlCLENBQUMsQ0FBQztjQUNyQztZQUFFLENBQ0Y7VUFBQyxDQUNHO1FBQUMsQ0FDSSxDQUFDO01BRWY7TUFFQSxPQUNDckIsSUFBQSxDQUFDc0IsTUFBTTtRQUNOQyxFQUFFLEVBQUUsSUFBSSxDQUFDQyxRQUFRLENBQUMsc0JBQXNCLENBQUU7UUFDMUNaLElBQUksRUFBRSxJQUFJLENBQUM2QixpQkFBaUIsQ0FBQyxDQUFFO1FBQy9CbEksSUFBSSxFQUFFOEYsb0JBQXFCO1FBQzNCRixPQUFPLEVBQUV1QyxpQkFBaUIsQ0FDekJQLE1BQU0sQ0FDTFQsV0FBVyxLQUFLLElBQUksRUFDcEJTLE1BQU0sQ0FDTDdCLFFBQVEsQ0FBQ0ksVUFBVSxLQUFLLElBQUksRUFDNUIwQixHQUFHLENBQUNDLEVBQUUsQ0FBQ0MsVUFBVSxFQUFFQyxLQUFLLENBQUNDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUNyRkgsRUFBRSxDQUFDQyxVQUNKLENBQUMsRUFDREQsRUFBRSxDQUFDQyxVQUNKLENBQ0QsQ0FBRTtRQUNGckQsT0FBTyxFQUFFLElBQUs7UUFDZCxlQUFZLGdCQUFnQjtRQUM1QixpQkFBYyxlQUFlO1FBQUFnQyxRQUFBLEVBRTVCO1VBQ0EwQixVQUFVLEVBQUUzQyxJQUFBLENBQUM0Qyx5QkFBeUI7WUFBQ0MsUUFBUSxFQUFFekQsTUFBTSxFQUFFeUQsUUFBUztZQUFDQyxLQUFLLEVBQUUxRCxNQUFNLEVBQUUwRDtVQUFNLENBQTRCO1FBQ3JIO01BQUMsQ0FDTSxDQUFDO0lBRVgsQ0FBQztJQUFBOUcsTUFBQSxDQUVPeUcsaUJBQWlCLEdBQXpCLFNBQVFBLGlCQUFpQkEsQ0FBQSxFQUFxQztNQUM3RCxNQUFNTSxjQUFjLEdBQUcsSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQztNQUN0RSxNQUFNQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUNELGlCQUFpQixDQUFDLHlCQUF5QixDQUFDO01BQzFFO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBLE9BQU9iLE1BQU0sQ0FDWkEsTUFBTSxDQUNKLElBQUksQ0FBQ3RFLGlCQUFpQixDQUFDSSxpQkFBaUIsQ0FBZU0sV0FBVyxDQUFDMkUsT0FBTyxFQUFFQyxzQkFBc0IsS0FBSzFELFNBQVMsRUFDakg0QyxFQUFFLENBQUNlLFlBQVksRUFDZmpCLE1BQU0sQ0FBQyxJQUFJLENBQUNoRyxZQUFZLEVBQUVpRyxHQUFHLENBQUNJLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUVhLEtBQUssQ0FBQ0MsV0FBVyxDQUNwRyxDQUFDLEVBQ0RMLGdCQUFnQixFQUNoQkYsY0FDRCxDQUFDO0lBQ0YsQ0FBQztJQUFBL0csTUFBQSxDQUVPdUgsZUFBZSxHQUF2QixTQUFRQSxlQUFlQSxDQUFDbkUsTUFBbUIsRUFBaUI7TUFDM0QsTUFBTWhELFVBQVUsR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUVDLGlCQUFpQixDQUFDLENBQXlCO01BQ2hGLE1BQU1vRixXQUFXLEdBQUl0RixVQUFVLENBQUN5QyxlQUFlLENBQUMsQ0FBQyxDQUFDQywwQkFBMEIsQ0FBQyxDQUFDLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLFdBQVcsRUFDekdDLE9BQU87TUFDVixNQUFNcUIsUUFBUSxHQUFHbEUsVUFBVSxDQUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDK0QsV0FBVyxDQUFDLENBQXlCO01BQzNFbkUsVUFBVSxDQUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDbUYsWUFBWSxDQUNoQzNCLElBQUEsQ0FBQzRCLGdCQUFnQjtRQUNoQkMsR0FBRyxFQUFFLElBQUksQ0FBQ0MsWUFBYTtRQUN2QkMsT0FBTyxFQUFDLFFBQVE7UUFDaEJDLE9BQU8sRUFBRUEsQ0FBQSxLQUFZO1VBQ3BCNUYsVUFBVSxDQUFDb0gsZUFBZSxDQUFDO1lBQUVDLFlBQVksRUFBRTtVQUF3QyxDQUFDLENBQUM7UUFDdEYsQ0FBRTtRQUNGdEQsT0FBTyxFQUFFZ0MsTUFBTSxDQUNkVCxXQUFXLEtBQUssSUFBSSxFQUNwQlMsTUFBTSxDQUNMN0IsUUFBUSxDQUFDSSxVQUFVLEtBQUssSUFBSSxFQUM1QjBCLEdBQUcsQ0FBQ0MsRUFBRSxDQUFDQyxVQUFVLEVBQUVDLEtBQUssQ0FBQ0MsV0FBVyxDQUFDLDBCQUEwQixFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ3JGSCxFQUFFLENBQUNDLFVBQ0osQ0FBQyxFQUNERCxFQUFFLENBQUNDLFVBQ0o7TUFBRSxDQUNGLENBQ0YsQ0FBQztNQUNEO01BQ0EsT0FDQ3RDLElBQUEsQ0FBQ3NCLE1BQU07UUFDTkMsRUFBRSxFQUFFLElBQUksQ0FBQ0MsUUFBUSxDQUFDLHdCQUF3QixDQUFFO1FBQzVDWixJQUFJLEVBQ0h6QyxXQUFXLENBQUN1RixXQUFXLENBQUMsSUFBSSxDQUFDN0YsaUJBQWlCLENBQUMrQixlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQ3pELFlBQVksR0FDbEYsa0RBQWtELEdBQ2xELDJDQUNIO1FBQ0QsZUFBWSxrQkFBa0I7UUFDOUJnRSxPQUFPLEVBQUV1QyxpQkFBaUIsQ0FDekJQLE1BQU0sQ0FDTFQsV0FBVyxLQUFLLElBQUksRUFDcEJTLE1BQU0sQ0FDTDdCLFFBQVEsQ0FBQ0ksVUFBVSxLQUFLLElBQUksRUFDNUIwQixHQUFHLENBQUNDLEVBQUUsQ0FBQ0MsVUFBVSxFQUFFQyxLQUFLLENBQUNDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUNyRkgsRUFBRSxDQUFDQyxVQUNKLENBQUMsRUFDREQsRUFBRSxDQUFDQyxVQUNKLENBQ0QsQ0FBRTtRQUNGcUIsWUFBWSxFQUFFeEIsTUFBTSxDQUFDSyxXQUFXLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEVBQUVvQixRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUVBLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBRTtRQUNyRzNFLE9BQU8sRUFBRSxJQUFLO1FBQ2QsaUJBQWMsZUFBZTtRQUFBZ0MsUUFBQSxFQUU1QjtVQUNBMEIsVUFBVSxFQUNUM0MsSUFBQSxDQUFDNEMseUJBQXlCO1lBQ3pCQyxRQUFRLEVBQUV6RCxNQUFNLEVBQUV5RCxRQUFTO1lBQzNCZ0IsMEJBQTBCLEVBQUU7VUFBTSxDQUNQO1FBRTlCO01BQUMsQ0FDTSxDQUFDO0lBRVgsQ0FBQztJQUFBN0gsTUFBQSxDQUVPOEgsbUJBQW1CLEdBQTNCLFNBQVFBLG1CQUFtQkEsQ0FBQ3pELG9CQUF5QyxFQUFpQjtNQUNyRixNQUFNakUsVUFBVSxHQUFHLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsRUFBRUMsaUJBQWlCLENBQUMsQ0FBeUI7TUFDaEYsTUFBTWdFLFFBQVEsR0FBR2xFLFVBQVUsQ0FBQ0ksT0FBTyxDQUFDLENBQUMsQ0FBQytELFdBQVcsQ0FBQyxDQUF5QjtNQUMzRSxPQUNDUCxJQUFBLENBQUNzQixNQUFNO1FBQ05DLEVBQUUsRUFBRSxJQUFJLENBQUNDLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBRTtRQUNoRFosSUFBSSxFQUFFLGdEQUFpRDtRQUN2RFEsS0FBSyxFQUFFaEYsVUFBVSxDQUFDTyxRQUFRLENBQUNvSCxrQkFBbUI7UUFDOUN4SixJQUFJLEVBQUU4RixvQkFBcUI7UUFDM0JGLE9BQU8sRUFBRWdDLE1BQU0sQ0FDZCxJQUFJLENBQUNoRyxZQUFZLEtBQUssSUFBSSxFQUMxQmdHLE1BQU0sQ0FDTDdCLFFBQVEsQ0FBQ0ksVUFBVSxLQUFLLElBQUksRUFDNUIwQixHQUFHLENBQUNpQixLQUFLLENBQUNDLFdBQVcsRUFBRWYsS0FBSyxDQUFDQyxXQUFXLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDekZhLEtBQUssQ0FBQ0MsV0FDUCxDQUFDLEVBQ0RELEtBQUssQ0FBQ0MsV0FDUCxDQUFFO1FBQ0ZyRSxPQUFPLEVBQUUsSUFBSztRQUNkLGlCQUFjLGVBQWU7UUFBQWdDLFFBQUEsRUFFNUI7VUFBRTBCLFVBQVUsRUFBRTNDLElBQUEsQ0FBQzRDLHlCQUF5QjtZQUFDaUIsMEJBQTBCLEVBQUU7VUFBTSxDQUE0QjtRQUFFO01BQUMsQ0FDcEcsQ0FBQztJQUVYLENBQUM7SUFBQTdILE1BQUEsQ0FFT2dJLG1CQUFtQixHQUEzQixTQUFRQSxtQkFBbUJBLENBQUM1RSxNQUFrQixFQUFvQjtNQUNqRSxPQUNDWSxJQUFBLENBQUNpRSxnQkFBZ0I7UUFBQWhELFFBQUEsRUFDZjtVQUNBMEIsVUFBVSxFQUFFM0MsSUFBQSxDQUFDNEMseUJBQXlCO1lBQUNFLEtBQUssRUFBRTFELE1BQU0sQ0FBQzBEO1VBQU0sQ0FBNEI7UUFDeEY7TUFBQyxDQUNnQixDQUFDO0lBRXJCLENBQUM7SUFBQTlHLE1BQUEsQ0FFT2tJLDJCQUEyQixHQUFuQyxTQUFRQSwyQkFBMkJBLENBQUM5RSxNQUFrQixFQUFzQjtNQUMzRSxJQUFJQSxNQUFNLENBQUNDLGNBQWMsRUFBRTtRQUMxQixNQUFNakQsVUFBVSxHQUFHLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsRUFBRUMsaUJBQWlCLENBQUMsQ0FBeUI7UUFDaEYsTUFBTStDLGNBQWMsR0FBR0QsTUFBTSxDQUFDQyxjQUFjO1FBQzVDLElBQUk4RSxVQUFvRjtRQUN4RixNQUFNQyxJQUFJLEdBQUdoSSxVQUFVLENBQUNJLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE1BQU02SCxxQkFBcUIsR0FBRyxJQUFJLENBQUMzRyxjQUFjLENBQUM2QixVQUFVLENBQUNGLGNBQWMsQ0FBQztRQUM1RSxNQUFNaUYseUJBQXlCLEdBQUc5RSwyQkFBMkIsQ0FBcUI2RSxxQkFBcUIsQ0FBQztRQUN4RyxNQUFNRSxrQkFBa0IsR0FBR0QseUJBQXlCLENBQUNFLFlBQVk7UUFDakUsSUFBSUQsa0JBQWtCLEVBQUU7VUFDdkIsTUFBTUUsZ0JBQWdCLEdBQUc7WUFDeEJDLGFBQWEsRUFBRSxJQUFJLENBQUM3RyxpQkFBaUIsQ0FBQytCLGVBQWUsRUFBRStFLElBQUk7WUFDM0RDLGtCQUFrQixFQUNqQkwsa0JBQWtCLENBQUNNLGtCQUFrQixLQUFLLG9DQUFvQyxHQUMxRUMsT0FBTyxDQUFhRCxrQkFBa0IsQ0FBQ0UsU0FBUyxHQUNoREQsT0FBTyxDQUFhRCxrQkFBa0IsQ0FBQ0csUUFBUTtZQUNwREMsS0FBSyxFQUFFVixrQkFBa0IsQ0FBQ1csS0FBSyxFQUFFQyxRQUFRLENBQUMsQ0FBQztZQUMzQ0MsV0FBVyxFQUFFaEcsTUFBTSxDQUFDZ0csV0FBVztZQUMvQkMsOEJBQThCLEVBQUVqRyxNQUFNLENBQUNpRztVQUN4QyxDQUFDO1VBQ0QsSUFBSSxDQUFDakcsTUFBTSxDQUFDMkMsT0FBTyxFQUFFO1lBQ3BCb0MsVUFBVSxHQUFHO2NBQ1ovQyxLQUFLLEVBQUVBLENBQUEsS0FBWTtnQkFDakJoRixVQUFVLENBQTBCa0osUUFBUSxDQUFDQyxZQUFZLENBQUNuQixJQUFJLEVBQUVHLGtCQUFrQixDQUFDaUIsTUFBTSxFQUFZO2tCQUNyRyxHQUFHZixnQkFBZ0I7a0JBQ25CLEdBQUc7b0JBQ0ZnQixRQUFRLEVBQUVyQixJQUFJLENBQUMzSCxpQkFBaUIsQ0FBQyxDQUFDO29CQUNsQ2lKLEtBQUssRUFBRXRCLElBQUksQ0FBQ3ZILFFBQVEsQ0FBQztrQkFDdEI7Z0JBQ0QsQ0FBQyxDQUFDO2NBQ0g7WUFDRCxDQUFDO1VBQ0YsQ0FBQyxNQUFNO1lBQ047WUFDQSxJQUFJLENBQUN1QyxNQUFNLENBQUMyQyxPQUFPLENBQUM0RCxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7Y0FDdkN2RyxNQUFNLENBQUMyQyxPQUFPLEdBQUcsT0FBTzNDLE1BQU0sQ0FBQzJDLE9BQU8sRUFBRTtZQUN6QztZQUNBb0MsVUFBVSxHQUFHO2NBQUUsYUFBYSxFQUFFLEdBQUcvRSxNQUFNLENBQUMyQyxPQUFPO1lBQThCLENBQUM7VUFDL0U7VUFDQSxPQUNDL0IsSUFBQSxDQUFDc0IsTUFBTTtZQUNOQyxFQUFFLEVBQUUsSUFBSSxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDckMsa0JBQWtCLENBQUNDLE1BQU0sQ0FBQztZQUNqRDtZQUNBO1lBQUE7WUFDQSxpQkFBZUEsTUFBTSxDQUFDZSxPQUFPLEtBQUssTUFBTSxJQUFJZixNQUFNLENBQUNlLE9BQU8sS0FBSyxPQUFPLEdBQUdWLFNBQVMsR0FBRywwQkFBMkI7WUFDaEhtQixJQUFJLEVBQUU2RCxnQkFBZ0IsQ0FBQ1EsS0FBTTtZQUFBLEdBQ3pCZCxVQUFVO1lBQ2RSLFlBQVksRUFBRWlDLGtCQUFrQixDQUFDdEIseUJBQXlCLENBQUNFLFlBQVksQ0FBRTtZQUN6RXJFLE9BQU8sRUFBRWYsTUFBTSxDQUFDZSxPQUFRO1lBQ3hCbEIsT0FBTyxFQUFFRyxNQUFNLENBQUNILE9BQVE7WUFDeEIxRSxJQUFJLEVBQUVzTCxxQkFBcUIsQ0FBQ0MsdUNBQXVDLENBQUN4Qix5QkFBeUIsQ0FBRTtZQUMvRnlCLElBQUksRUFBRTNHLE1BQU0sRUFBRTRHLGFBQWEsS0FBSyxJQUFJLEdBQUdDLE1BQU0sR0FBR3hHLFNBQVU7WUFBQXdCLFFBQUEsRUFFekQ7Y0FDQTBCLFVBQVUsRUFDVDNDLElBQUEsQ0FBQzRDLHlCQUF5QjtnQkFBQ0MsUUFBUSxFQUFFekQsTUFBTSxDQUFDeUQsUUFBUztnQkFBQ0MsS0FBSyxFQUFFMUQsTUFBTSxDQUFDMEQ7Y0FBTSxDQUE0QjtZQUV4RztVQUFDLENBQ00sQ0FBQztRQUVYO01BQ0Q7SUFDRCxDQUFDO0lBQUE5RyxNQUFBLENBRU9rSyxpQkFBaUIsR0FBekIsU0FBUUEsaUJBQWlCQSxDQUFDOUcsTUFBa0IsRUFBc0I7TUFDakUsSUFBSStHLG9CQUFvQixDQUFDQyxnQkFBZ0IsQ0FBQ2hILE1BQU0sQ0FBQyxFQUFFO1FBQ2xELElBQUkrRSxVQUFvRjtRQUN4RixJQUFJL0UsTUFBTSxDQUFDMkMsT0FBTyxFQUFFO1VBQ25Cb0MsVUFBVSxHQUFHO1lBQUUsYUFBYSxFQUFFLE9BQU8vRSxNQUFNLENBQUMyQyxPQUFPO1VBQVMsQ0FBQztRQUM5RCxDQUFDLE1BQU07VUFDTm9DLFVBQVUsR0FBRztZQUNaL0MsS0FBSyxFQUFHaUYsS0FBWSxJQUFXO2NBQzlCQyxTQUFTLENBQUNDLGFBQWEsQ0FBQ0YsS0FBSyxFQUFFakgsTUFBTSxDQUFDb0gsYUFBYSxFQUFFcEgsTUFBTSxDQUFDcUgsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNDLEtBQUssQ0FBRUMsS0FBYyxJQUNuR0MsR0FBRyxDQUFDRCxLQUFLLENBQUNBLEtBQWUsQ0FDMUIsQ0FBQztZQUNGO1VBQ0QsQ0FBQztRQUNGO1FBQ0EsT0FDQ0UsS0FBQSxDQUFDdkYsTUFBTTtVQUNOQyxFQUFFLEVBQUUsSUFBSSxDQUFDQyxRQUFRLENBQUNwQyxNQUFNLENBQUNtQyxFQUFFLENBQUU7VUFDN0IsaUJBQWVuQyxNQUFNLENBQUNlLE9BQU8sS0FBSyxNQUFNLElBQUlmLE1BQU0sQ0FBQ2UsT0FBTyxLQUFLLE9BQU8sR0FBR1YsU0FBUyxHQUFHLDBCQUEyQjtVQUNoSG1CLElBQUksRUFBRXhCLE1BQU0sQ0FBQ3dCLElBQUksSUFBSSxFQUFHO1VBQUEsR0FDcEJ1RCxVQUFVO1VBQ2Q1SixJQUFJLEVBQUMsYUFBYTtVQUNsQjRGLE9BQU8sRUFBRWYsTUFBTSxDQUFDZSxPQUFRO1VBQ3hCbEIsT0FBTyxFQUFFRyxNQUFNLENBQUNILE9BQVE7VUFDeEI4RyxJQUFJLEVBQUUzRyxNQUFNLEVBQUU0RyxhQUFhLEtBQUssSUFBSSxHQUFHQyxNQUFNLEdBQUd4RyxTQUFVO1VBQUF3QixRQUFBLEdBRXpEO1lBQ0EwQixVQUFVLEVBQUUzQyxJQUFBLENBQUM0Qyx5QkFBeUI7Y0FBQ0MsUUFBUSxFQUFFekQsTUFBTSxDQUFDeUQsUUFBUztjQUFDQyxLQUFLLEVBQUUxRCxNQUFNLENBQUMwRDtZQUFNLENBQTRCO1VBQ25ILENBQUMsRUFBQyxRQUVIO1FBQUEsQ0FBUSxDQUFDO01BRVg7SUFDRCxDQUFDO0lBQUE5RyxNQUFBLENBRUQ4SyxpQkFBaUIsR0FBakIsU0FBQUEsaUJBQWlCQSxDQUFBLEVBQXlCO01BQ3pDLE1BQU1DLDBCQUEwQixHQUFHWixvQkFBb0IsQ0FBQ2EsK0JBQStCLENBQUMsSUFBSSxDQUFDbkosaUJBQWlCLENBQUM7TUFDL0csT0FBTyxJQUFJLENBQUNWLE9BQU8sRUFDaEI4SixHQUFHLENBQUU3SCxNQUFrQixJQUFLO1FBQzdCLFFBQVFBLE1BQU0sQ0FBQzdFLElBQUk7VUFDbEIsS0FBSzJNLFVBQVUsQ0FBQ0MsWUFBWTtZQUMzQixPQUFPLElBQUksQ0FBQy9HLGNBQWMsQ0FBQzJHLDBCQUEwQixDQUFDO1VBQ3ZELEtBQUtHLFVBQVUsQ0FBQ0Usa0JBQWtCO1lBQ2pDLE9BQU8sSUFBSSxDQUFDbEQsMkJBQTJCLENBQUM5RSxNQUFNLENBQUM7VUFDaEQsS0FBSzhILFVBQVUsQ0FBQ0csT0FBTztZQUN0QixJQUFJLElBQUksQ0FBQ2xMLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQ04sZUFBZSxFQUFFO2NBQy9DLE1BQU15TCwwQkFBMEIsR0FBR1AsMEJBQTBCLEdBQzFEUSxvQkFBb0IsQ0FBQ1IsMEJBQTBCLENBQUMsR0FDaER0SCxTQUFTO2NBQ1osT0FBTyxJQUFJLENBQUNnQyxVQUFVLENBQUNpQixpQkFBaUIsQ0FBQ1AsTUFBTSxDQUFDa0IsS0FBSyxDQUFDQyxXQUFXLEVBQUU3RCxTQUFTLEVBQUU2SCwwQkFBMEIsQ0FBQyxDQUFDLENBQUM7WUFDNUc7WUFDQSxPQUFPLElBQUksQ0FBQzdGLFVBQVUsQ0FBQ3NGLDBCQUEwQixFQUFFM0gsTUFBTSxDQUFDO1VBQzNELEtBQUs4SCxVQUFVLENBQUNNLFNBQVM7WUFDeEIsT0FBTyxJQUFJLENBQUNqRSxlQUFlLENBQUNuRSxNQUFNLENBQUM7VUFDcEMsS0FBSzhILFVBQVUsQ0FBQ08sVUFBVTtZQUN6QixJQUFJLElBQUksQ0FBQ3RMLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQ04sZUFBZSxFQUFFO2NBQy9DLE1BQU15TCwwQkFBMEIsR0FBR1AsMEJBQTBCLEdBQzFEUSxvQkFBb0IsQ0FBQ1IsMEJBQTBCLENBQUMsR0FDaER0SCxTQUFTO2NBQ1osT0FBTyxJQUFJLENBQUNxRSxtQkFBbUIsQ0FDOUJwQixpQkFBaUIsQ0FBQ1AsTUFBTSxDQUFDa0IsS0FBSyxDQUFDQyxXQUFXLEVBQUVnRSwwQkFBMEIsRUFBRTdILFNBQVMsQ0FBQyxDQUNuRixDQUFDO1lBQ0Y7WUFDQTtVQUNELEtBQUt5SCxVQUFVLENBQUNRLFNBQVM7WUFDeEIsT0FBTyxJQUFJLENBQUMxRCxtQkFBbUIsQ0FBQzVFLE1BQU0sQ0FBQztVQUN4QztZQUNDLE9BQU8sSUFBSSxDQUFDOEcsaUJBQWlCLENBQUM5RyxNQUFNLENBQUM7UUFDdkM7TUFDRCxDQUFDLENBQUMsQ0FDRHVJLE1BQU0sQ0FBRXZJLE1BQU0sSUFBdUIsQ0FBQyxDQUFDQSxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUFBcEQsTUFBQSxDQUVEMkMsYUFBYSxHQUFiLFNBQUFBLGFBQWFBLENBQUEsRUFBb0I7TUFDaEMsTUFBTXZDLFVBQVUsR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUVDLGlCQUFpQixDQUFDLENBQXlCO01BQ2hGLE1BQU1nRSxRQUFRLEdBQUdsRSxVQUFVLENBQUNJLE9BQU8sQ0FBQyxDQUFDLENBQUMrRCxXQUFXLENBQUMsQ0FBeUI7TUFDM0UsTUFBTXFILGFBQTRCLEdBQ2pDNUgsSUFBQSxDQUFDNkgsYUFBYTtRQUNidEcsRUFBRSxFQUFFLElBQUksQ0FBQ0MsUUFBUSxDQUFDLGVBQWUsQ0FBRTtRQUNuQ3JCLE9BQU8sRUFBRXVDLGlCQUFpQixDQUN6QlAsTUFBTSxDQUNMLElBQUksQ0FBQ2hHLFlBQVksS0FBSyxJQUFJLEVBQzFCZ0csTUFBTSxDQUNMN0IsUUFBUSxDQUFDSSxVQUFVLEtBQUssSUFBSSxFQUM1QjBCLEdBQUcsQ0FBQ0MsRUFBRSxDQUFDQyxVQUFVLEVBQUVDLEtBQUssQ0FBQ0MsV0FBVyxDQUFDLDBCQUEwQixFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ3JGLElBQ0QsQ0FBQyxFQUNELElBQ0QsQ0FDRCxDQUFFO1FBQ0ZzRixhQUFhLEVBQUVBLENBQUEsS0FBWTFMLFVBQVUsQ0FBQzJMLG9CQUFvQixDQUFDLENBQUU7UUFDN0RDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQ3hHLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFZO1FBQ3JFakgsSUFBSSxFQUFDLFlBQVk7UUFDakJvSixZQUFZLEVBQUM7TUFBUSxDQUNyQixDQUNEO01BQ0QsTUFBTXNFLFNBQVMsR0FDZHBCLEtBQUEsQ0FBQ3FCLGVBQWU7UUFBQzNHLEVBQUUsRUFBRSxJQUFJLENBQUNDLFFBQVEsQ0FBQyxLQUFLLENBQUU7UUFBQzJHLFNBQVMsRUFBRSxJQUFLO1FBQUFsSCxRQUFBLEdBQzFEakIsSUFBQSxDQUFDb0ksYUFBYTtVQUNiN0csRUFBRSxFQUFFLElBQUksQ0FBQ0MsUUFBUSxDQUFDLHlCQUF5QixDQUFFO1VBQzdDWixJQUFJLEVBQUM7UUFBbUUsQ0FDeEUsQ0FBQyxFQUNEZ0gsYUFBYSxFQUNkNUgsSUFBQSxDQUFDcUksYUFBYSxJQUFFLENBQUMsRUFDaEIsSUFBSSxDQUFDM0ksaUJBQWlCLENBQUMsQ0FBQyxFQUN4QixJQUFJLENBQUNvSCxpQkFBaUIsQ0FBQyxDQUFDO01BQUEsQ0FDVCxDQUNqQjtNQUNEMUssVUFBVSxDQUNSSSxPQUFPLENBQUMsQ0FBQyxDQUNUbUYsWUFBWSxDQUNaM0IsSUFBQSxDQUFDNEIsZ0JBQWdCO1FBQ2hCQyxHQUFHLEVBQUUsSUFBSSxDQUFDQyxZQUFhO1FBQ3ZCQyxPQUFPLEVBQUMsdUJBQXVCO1FBQy9CQyxPQUFPLEVBQUVBLENBQUEsS0FBcUI0RixhQUFhLENBQUNVLFNBQVMsQ0FBQztNQUFFLENBQ3hELENBQ0YsQ0FBQztNQUNGLE9BQU9MLFNBQVM7SUFDakIsQ0FBQztJQUFBLE9BQUFsTyxhQUFBO0VBQUEsRUE3Z0J5Q3dPLGFBQWEsR0FBQWhOLFdBQUEsR0FBQWlOLHlCQUFBLENBQUF4TixPQUFBLENBQUFpQixTQUFBLHdDQUFBL0IsS0FBQTtJQUFBdU8sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FFbkIsSUFBSTtJQUFBO0VBQUEsSUFBQXBOLFlBQUEsR0FBQWdOLHlCQUFBLENBQUF4TixPQUFBLENBQUFpQixTQUFBLCtCQUFBN0IsS0FBQTtJQUFBcU8sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FHYixJQUFJO0lBQUE7RUFBQSxJQUFBbk4sWUFBQSxHQUFBK00seUJBQUEsQ0FBQXhOLE9BQUEsQ0FBQWlCLFNBQUEsU0FBQTVCLEtBQUE7SUFBQW9PLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbE4sWUFBQSxHQUFBOE0seUJBQUEsQ0FBQXhOLE9BQUEsQ0FBQWlCLFNBQUEsZUFBQXhCLEtBQUE7SUFBQWdPLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBak4sWUFBQSxHQUFBNk0seUJBQUEsQ0FBQXhOLE9BQUEsQ0FBQWlCLFNBQUEsa0JBQUF2QixLQUFBO0lBQUErTixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWhOLFlBQUEsR0FBQTRNLHlCQUFBLENBQUF4TixPQUFBLENBQUFpQixTQUFBLG1CQUFBdEIsS0FBQTtJQUFBOE4sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFKLHlCQUFBLENBQUF4TixPQUFBLENBQUFpQixTQUFBLHFCQUFBcEIsS0FBQSxHQUFBZ08sTUFBQSxDQUFBQyx3QkFBQSxDQUFBOU4sT0FBQSxDQUFBaUIsU0FBQSxxQkFBQWpCLE9BQUEsQ0FBQWlCLFNBQUEsR0FBQWpCLE9BQUEsTUFBQUQsTUFBQTtFQUFBZSxRQUFBLEdBQUEvQixhQUFBO0VBQUEsT0FBQStCLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
452
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb290ZXJDb250ZW50IiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsIl9kZWM0IiwicHJvcGVydHkiLCJ0eXBlIiwicmVxdWlyZWQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjOCIsImNvbnRyb2xsZXJFeHRlbnNpb25IYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2hpZGVDcmVhdGVOZXh0IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uQWZ0ZXJCaW5kaW5nIiwiX2hpZGRlbkRyYWZ0IiwiY29udHJvbGxlciIsIl9nZXRPd25lciIsImdldFJvb3RDb250cm9sbGVyIiwidmlld0NvbnRleHQiLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJpc05ld09iamVjdCIsImVkaXRGbG93IiwiaXNSb290Q29udGV4dE5ldyIsImdldE1vZGVsIiwic2V0UHJvcGVydHkiLCJpbml0aWFsaXplIiwib3duZXIiLCJzZXRNb2RlbCIsIkpTT05Nb2RlbCIsImFjdGlvbnMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiYmluZGluZ0NvbnRleHRzIiwiY29udmVydGVyQ29udGV4dCIsImdldE9iamVjdCIsImNvbnRleHRQYXRoVG9Vc2UiLCJmdWxsQ29udGV4dFBhdGgiLCJvRGF0YU1ldGFNb2RlbCIsIm1vZGVscyIsIm1ldGFNb2RlbCIsImRhdGFWaWV3TW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJpc0RyYWZ0VmFsaWRhdGlvbiIsIk1vZGVsSGVscGVyIiwiZ2V0RHJhZnRSb290IiwiUHJlcGFyYXRpb25BY3Rpb24iLCJlbnRpdHlUeXBlIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJNZXNzYWdlcyIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImdldEFwcENvbXBvbmVudCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiSGlkZGVuRHJhZnQiLCJlbmFibGVkIiwiaGlkZUNyZWF0ZU5leHQiLCJnZXRBY3Rpb25Nb2RlbFBhdGgiLCJhY3Rpb24iLCJhbm5vdGF0aW9uUGF0aCIsImFjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidW5kZWZpbmVkIiwiZ2V0RHJhZnRJbmRpY2F0b3IiLCJlbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlTZXQiLCJjb21tb25Bbm5vdGF0aW9uIiwiRHJhZnRSb290IiwiRHJhZnROb2RlIiwiX2pzeCIsIkRyYWZ0SW5kaWNhdG9yIiwic3RhdGUiLCJ2aXNpYmxlIiwiZ2V0QXBwbHlCdXR0b24iLCJlbXBoYXNpemVkRXhwcmVzc2lvbiIsInZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ2aWV3TGV2ZWwiLCJpc0Rlc2t0b3AiLCJmY2xFbmFibGVkIiwiTWVudUJ1dHRvbiIsInRleHQiLCJkZWZhdWx0QWN0aW9uIiwiX2FwcGx5RG9jdW1lbnQiLCJ1c2VEZWZhdWx0QWN0aW9uT25seSIsImJ1dHRvbk1vZGUiLCJjaGlsZHJlbiIsIk1lbnUiLCJNZW51SXRlbSIsInByZXNzIiwiX3ZhbGlkYXRlRG9jdW1lbnQiLCJCdXR0b24iLCJpZCIsImNyZWF0ZUlkIiwiZ2V0UHJpbWFyeSIsImhpZGRlbkRyYWZ0IiwiYWRkRGVwZW5kZW50IiwiQ29tbWFuZEV4ZWN1dGlvbiIsInJlZiIsImNtZEV4ZWN1dGlvbiIsImNvbW1hbmQiLCJleGVjdXRlIiwiX3NhdmVEb2N1bWVudCIsIm9yIiwiaWZFbHNlIiwiYW5kIiwiVUkiLCJJc0VkaXRhYmxlIiwiZXF1YWwiLCJwYXRoSW5Nb2RlbCIsImdldFRleHRTYXZlQnV0dG9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJsYXlvdXREYXRhIiwiT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSIsInByaW9yaXR5IiwiZ3JvdXAiLCJzYXZlQnV0dG9uVGV4dCIsImdldFRyYW5zbGF0ZWRUZXh0IiwiY3JlYXRlQnV0dG9uVGV4dCIsIlNlc3Npb24iLCJTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiSXNDcmVhdGVNb2RlIiwiRHJhZnQiLCJJc05ld09iamVjdCIsImdldENhbmNlbEJ1dHRvbiIsIl9jYW5jZWxEb2N1bWVudCIsImNhbmNlbEJ1dHRvbiIsImlzRHJhZnRSb290IiwiYXJpYUhhc1BvcHVwIiwiY29uc3RhbnQiLCJjbG9zZU92ZXJmbG93T25JbnRlcmFjdGlvbiIsImdldENyZWF0ZU5leHRCdXR0b24iLCJjcmVhdGVOZXh0RG9jdW1lbnQiLCJnZXRUb29sYmFyU2VwYXJhdG9yIiwiVG9vbGJhclNlcGFyYXRvciIsImdldERhdGFGaWVsZEZvckFjdGlvbkJ1dHRvbiIsInByZXNzRXZlbnQiLCJ2aWV3IiwiYW5ub3RhdGlvblBhdGhDb250ZXh0IiwiZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aCIsImRhdGFGaWVsZEZvckFjdGlvbiIsInRhcmdldE9iamVjdCIsImFjdGlvblBhcmFtZXRlcnMiLCJlbnRpdHlTZXROYW1lIiwibmFtZSIsImludm9jYXRpb25Hcm91cGluZyIsIkludm9jYXRpb25Hcm91cGluZyIsImxpYnJhcnkiLCJDaGFuZ2VTZXQiLCJJc29sYXRlZCIsImxhYmVsIiwiTGFiZWwiLCJ0b1N0cmluZyIsImlzTmF2aWdhYmxlIiwiZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uIiwiaGFuZGxlcnMiLCJvbkNhbGxBY3Rpb24iLCJBY3Rpb24iLCJjb250ZXh0cyIsIm1vZGVsIiwic3RhcnRzV2l0aCIsImlzQWN0aW9uV2l0aERpYWxvZyIsIkNyaXRpY2FsaXR5Rm9ybWF0dGVycyIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZSIsImljb24iLCJpc0FJT3BlcmF0aW9uIiwiYWlJY29uIiwiZ2V0TWFuaWZlc3RCdXR0b24iLCJPYmplY3RQYWdlVGVtcGxhdGluZyIsImlzTWFuaWZlc3RBY3Rpb24iLCJldmVudCIsIkZQTUhlbHBlciIsImFjdGlvbldyYXBwZXIiLCJoYW5kbGVyTW9kdWxlIiwiaGFuZGxlck1ldGhvZCIsImNhdGNoIiwiZXJyb3IiLCJMb2ciLCJfanN4cyIsImdldEFjdGlvbkNvbnRyb2xzIiwiZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24iLCJidWlsZEVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uIiwibWFwIiwiQWN0aW9uVHlwZSIsIkRlZmF1bHRBcHBseSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsIlByaW1hcnkiLCJlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiU2Vjb25kYXJ5IiwiQ3JlYXRlTmV4dCIsIlNlcGFyYXRvciIsImZpbHRlciIsIm1lc3NhZ2VCdXR0b24iLCJNZXNzYWdlQnV0dG9uIiwibWVzc2FnZUNoYW5nZSIsIl9nZXRGb290ZXJWaXNpYmlsaXR5IiwiYXJpYUxhYmVsbGVkQnkiLCJmb290ZXJCYXIiLCJPdmVyZmxvd1Rvb2xiYXIiLCJhc3luY01vZGUiLCJJbnZpc2libGVUZXh0IiwiVG9vbGJhclNwYWNlciIsImZpcmVQcmVzcyIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZvb3RlckNvbnRlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFGaWVsZEZvckFjdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgaWZFbHNlLCBvciwgcGF0aEluTW9kZWwsIHJlc29sdmVCaW5kaW5nU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBkZWZpbmVSZWZlcmVuY2UsIGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgQ29tbWFuZFByb3BlcnRpZXMsIFJlZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgQ29tbWFuZEV4ZWN1dGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvQ29tbWFuZEV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlTWFuaWZlc3RTZXR0aW5ncywgSGlkZGVuRHJhZnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBpc0FjdGlvbldpdGhEaWFsb2cgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB7IGFpSWNvbiwgdHlwZSBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgRHJhZnQsIFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBDb3JlTGliIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgKiBhcyBDcml0aWNhbGl0eUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJ1dHRvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZXNzYWdlcy9NZXNzYWdlQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IERyYWZ0SW5kaWNhdG9yIGZyb20gXCJzYXAvbS9EcmFmdEluZGljYXRvclwiO1xuaW1wb3J0IE1lbnUgZnJvbSBcInNhcC9tL01lbnVcIjtcbmltcG9ydCBNZW51QnV0dG9uIGZyb20gXCJzYXAvbS9NZW51QnV0dG9uXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcInNhcC9tL01lbnVJdGVtXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBUb29sYmFyU3BhY2VyIGZyb20gXCJzYXAvbS9Ub29sYmFyU3BhY2VyXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSW52aXNpYmxlVGV4dCBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlVGV4dFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgeyBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0ICogYXMgT2JqZWN0UGFnZVRlbXBsYXRpbmcgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9PYmplY3RQYWdlVGVtcGxhdGluZ1wiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhckxheW91dERhdGFcIjtcbmltcG9ydCBUb29sYmFyU2VwYXJhdG9yIGZyb20gXCJzYXAvbS9Ub29sYmFyU2VwYXJhdG9yXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxudHlwZSBDb250cm9sbGVyV2l0aEFjdGlvbiA9IENvbnRyb2xsZXIgJiB7XG5cdGhhbmRsZXJzOiB7XG5cdFx0b25DYWxsQWN0aW9uOiBGdW5jdGlvbjtcblx0fTtcbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuRm9vdGVyQ29udGVudFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9vdGVyQ29udGVudCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8T3ZlcmZsb3dUb29sYmFyPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5Ub29sYmFyXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfVG9vbGJhciA9IHRydWU7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5tLklCYXJcIilcblx0X19pbXBsZW1lbnRzX19zYXBfbV9JQmFyID0gdHJ1ZTtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRjbWRFeGVjdXRpb24hOiBSZWY8Q29tbWFuZEV4ZWN1dGlvbj47XG5cblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXTtcblxuXHRvRGF0YU1ldGFNb2RlbCE6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdGRhdGFWaWV3TW9kZWxQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxFbnRpdHlTZXQ+O1xuXG5cdGlzRHJhZnRWYWxpZGF0aW9uITogYm9vbGVhbjtcblxuXHRfaGlkZGVuRHJhZnQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2hpZGVDcmVhdGVOZXh0ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8Rm9vdGVyQ29udGVudD4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgb3RoZXJzKTtcblx0fVxuXG5cdEBjb250cm9sbGVyRXh0ZW5zaW9uSGFuZGxlcihcInJvdXRpbmdcIiwgXCJvbkFmdGVyQmluZGluZ1wiKVxuXHRwdWJsaWMgYXN5bmMgb25BZnRlckJpbmRpbmcodGhpczogRm9vdGVyQ29udGVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRjb25zdCB2aWV3Q29udGV4dCA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRjb25zdCBpc05ld09iamVjdCA9IGF3YWl0IGNvbnRyb2xsZXIuZWRpdEZsb3cuaXNSb290Q29udGV4dE5ldyh2aWV3Q29udGV4dCk7XG5cdFx0XHQodGhpcy5nZXRNb2RlbChcImZvb3RlckludGVybmFsXCIpIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoXCIvcm9vdElzTmV3T2JqZWN0XCIsIGlzTmV3T2JqZWN0KTtcblx0XHR9XG5cdH1cblxuXHRpbml0aWFsaXplKCk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHR0aGlzLnNldE1vZGVsKG5ldyBKU09OTW9kZWwoKSwgXCJmb290ZXJJbnRlcm5hbFwiKTtcblx0XHR0aGlzLmFjdGlvbnMgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uYmluZGluZ0NvbnRleHRzPy5jb252ZXJ0ZXJDb250ZXh0Py5nZXRPYmplY3QoXCJmb290ZXJBY3Rpb25zXCIpO1xuXHRcdGNvbnN0IGNvbnRleHRQYXRoVG9Vc2UgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdHRoaXMub0RhdGFNZXRhTW9kZWwgPSBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzLm1ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHR0aGlzLmRhdGFWaWV3TW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLm1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlID8/IHRoaXMuY29udGV4dFBhdGgpITtcblx0XHRjb25zdCBzdGFydGluZ0VudGl0eVNldCA9IHRoaXMuZGF0YVZpZXdNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdFx0dGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiA9ICEhKFxuXHRcdFx0TW9kZWxIZWxwZXIuZ2V0RHJhZnRSb290KHN0YXJ0aW5nRW50aXR5U2V0KT8uUHJlcGFyYXRpb25BY3Rpb24gJiYgc3RhcnRpbmdFbnRpdHlTZXQ/LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMuQ29tbW9uPy5NZXNzYWdlc1xuXHRcdCk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID0gKGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHR0aGlzLl9oaWRlQ3JlYXRlTmV4dCA9XG5cdFx0XHQoY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkhpZGRlbkRyYWZ0IGFzIEhpZGRlbkRyYWZ0KT8uaGlkZUNyZWF0ZU5leHQgPT09XG5cdFx0XHR0cnVlO1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldEFjdGlvbk1vZGVsUGF0aChhY3Rpb246IEJhc2VBY3Rpb24pOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZEZvckFjdGlvbj4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRcdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0Y29uc3QgYWN0aW9uQ29udGV4dCA9IHRoaXMub0RhdGFNZXRhTW9kZWwuZ2V0Q29udGV4dChhbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZEZvckFjdGlvbj4oYWN0aW9uQ29udGV4dCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXREcmFmdEluZGljYXRvcigpOiBEcmFmdEluZGljYXRvciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW50aXR5U2V0ID0gKHRoaXMuZGF0YVZpZXdNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0IHx8IHRoaXMuZGF0YVZpZXdNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIGFzIEVudGl0eVNldDsgLy8gc3RhcnRpbmdFbnRpdHlTZXQgaXMgdXNlZCBvbiBjb250YWlubWVudCBzY2VuYXJpb1xuXHRcdGNvbnN0IGNvbW1vbkFubm90YXRpb24gPSBlbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNvbW1vbjtcblx0XHRpZiAoKGNvbW1vbkFubm90YXRpb24/LkRyYWZ0Um9vdCB8fCBjb21tb25Bbm5vdGF0aW9uPy5EcmFmdE5vZGUpICYmICF0aGlzLl9oaWRkZW5EcmFmdCkge1xuXHRcdFx0cmV0dXJuIDxEcmFmdEluZGljYXRvciBzdGF0ZT1cInt1aT4vZHJhZnRTdGF0dXN9XCIgdmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIiAvPjtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgZ2V0QXBwbHlCdXR0b24oZW1waGFzaXplZEV4cHJlc3Npb246IFByb3BlcnR5QmluZGluZ0luZm8pOiBCdXR0b24gfCBNZW51QnV0dG9uIHwgbnVsbCB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGlmICgodmlld0RhdGE/LnZpZXdMZXZlbCAhPSBudWxsICYmIHZpZXdEYXRhPy52aWV3TGV2ZWwgPD0gMSkgfHwgdGhpcy5faGlkZGVuRHJhZnQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAodGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiAmJiAhdmlld0RhdGEuaXNEZXNrdG9wICYmICF2aWV3RGF0YS5mY2xFbmFibGVkKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfQVBQTFlfRFJBRlR9XCJcblx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl9hcHBseURvY3VtZW50KGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCkpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0dXNlRGVmYXVsdEFjdGlvbk9ubHk9XCJ0cnVlXCJcblx0XHRcdFx0XHRidXR0b25Nb2RlPVwiU3BsaXRcIlxuXHRcdFx0XHRcdHR5cGU9e2VtcGhhc2l6ZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9XCJub3QtYWRhcHRhYmxlXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdDxNZW51PlxuXHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfVkFMSURBVEVfRFJBRlR9XCJcblx0XHRcdFx0XHRcdFx0cHJlc3M9e2FzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCBjb250cm9sbGVyLl92YWxpZGF0ZURvY3VtZW50KCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvTWVudT5cblx0XHRcdFx0PC9NZW51QnV0dG9uPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJTdGFuZGFyZEFjdGlvbjo6QXBwbHlcIil9XG5cdFx0XHRcdHRleHQ9XCJ7c2FwLmZlLmkxOG4+VF9DT01NT05fT0JKRUNUX1BBR0VfQVBQTFlfRFJBRlR9XCJcblx0XHRcdFx0dHlwZT17ZW1waGFzaXplZEV4cHJlc3Npb259XG5cdFx0XHRcdGVuYWJsZWQ9e3RydWV9XG5cdFx0XHRcdHByZXNzPXthc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0XHRcdFx0YXdhaXQgY29udHJvbGxlci5fYXBwbHlEb2N1bWVudChjb250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0dmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIlxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGdldFByaW1hcnkoZW1waGFzaXplZEV4cHJlc3Npb24/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvLCBhY3Rpb24/OiBCYXNlQWN0aW9uKTogQnV0dG9uIHwgTWVudUJ1dHRvbiB8IG51bGwge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IGhpZGRlbkRyYWZ0ID0gKGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHRjb25zdCB2aWV3RGF0YSA9IGNvbnRyb2xsZXIuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29udHJvbGxlclxuXHRcdFx0LmdldFZpZXcoKVxuXHRcdFx0LmFkZERlcGVuZGVudChcblx0XHRcdFx0PENvbW1hbmRFeGVjdXRpb25cblx0XHRcdFx0XHRyZWY9e3RoaXMuY21kRXhlY3V0aW9ufVxuXHRcdFx0XHRcdGNvbW1hbmQ9XCJTYXZlXCJcblx0XHRcdFx0XHRleGVjdXRlPXtjb250cm9sbGVyLl9zYXZlRG9jdW1lbnR9XG5cdFx0XHRcdFx0dmlzaWJsZT17b3IoXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdGhpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdFx0dmlld0RhdGEuZmNsRW5hYmxlZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0XHRVSS5Jc0VkaXRhYmxlXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRlcXVhbChwYXRoSW5Nb2RlbChcIi9pc0lubGluZUVkaXRBY3RpdmVcIiwgXCJ1aVwiKSwgdHJ1ZSlcblx0XHRcdFx0XHQpfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHRpZiAodGhpcy5pc0RyYWZ0VmFsaWRhdGlvbiAmJiAhdmlld0RhdGEuaXNEZXNrdG9wKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudUJ1dHRvblxuXHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VGV4dFNhdmVCdXR0b24oKX1cblx0XHRcdFx0XHRqc3g6Y29tbWFuZD1cImNtZDpTYXZlfGRlZmF1bHRBY3Rpb25cIlxuXHRcdFx0XHRcdHVzZURlZmF1bHRBY3Rpb25Pbmx5PVwidHJ1ZVwiXG5cdFx0XHRcdFx0YnV0dG9uTW9kZT1cIlNwbGl0XCJcblx0XHRcdFx0XHR0eXBlPXtlbXBoYXNpemVkRXhwcmVzc2lvbn1cblx0XHRcdFx0XHR2aXNpYmxlPXtjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT1cIm5vdC1hZGFwdGFibGVcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PE1lbnU+XG5cdFx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdFx0dGV4dD1cIntzYXAuZmUuaTE4bj5UX0NPTU1PTl9PQkpFQ1RfUEFHRV9WQUxJREFURV9EUkFGVH1cIlxuXHRcdFx0XHRcdFx0XHRwcmVzcz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IGNvbnRyb2xsZXIuX3ZhbGlkYXRlRG9jdW1lbnQoKTtcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9NZW51PlxuXHRcdFx0XHQ8L01lbnVCdXR0b24+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiU3RhbmRhcmRBY3Rpb246OlNhdmVcIil9XG5cdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VGV4dFNhdmVCdXR0b24oKX1cblx0XHRcdFx0dHlwZT17ZW1waGFzaXplZEV4cHJlc3Npb259XG5cdFx0XHRcdHZpc2libGU9e2NvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdGhpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFVJLklzRWRpdGFibGVcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCl9XG5cdFx0XHRcdGVuYWJsZWQ9e3RydWV9XG5cdFx0XHRcdGpzeDpjb21tYW5kPVwiY21kOlNhdmV8cHJlc3NcIlxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgcHJpb3JpdHk9e2FjdGlvbj8ucHJpb3JpdHl9IGdyb3VwPXthY3Rpb24/Lmdyb3VwfT48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0J1dHRvbj5cblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRUZXh0U2F2ZUJ1dHRvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdFx0Y29uc3Qgc2F2ZUJ1dHRvblRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9TQVZFXCIpO1xuXHRcdGNvbnN0IGNyZWF0ZUJ1dHRvblRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9PUF9PQkpFQ1RfUEFHRV9DUkVBVEVcIik7XG5cdFx0Ly8gSWYgd2UncmUgaW4gc3RpY2t5IG1vZGUgIC0+IHRoZSB1aSBpcyBpbiBjcmVhdGUgbW9kZSwgc2hvdyBDcmVhdGUsIGVsc2Ugc2hvdyBTYXZlXG5cdFx0Ly8gSWYgbm90IC0+IHdlJ3JlIGluIGRyYWZ0IG9yIGhpZGRlbiBkcmFmdFxuXHRcdC8vIEluIGNhc2Ugb2YgZHJhZnQgaWYgaXQgaXMgYSBuZXcgb2JqZWN0ICghSXNBY3RpdmVFbnRpdHkgJiYgIUhhc0FjdGl2ZUVudGl0eSksIHNob3cgY3JlYXRlLCBlbHNlIHNob3cgc2F2ZVxuXHRcdC8vIEluIGNhc2Ugb2YgaGlkZGVuIGRyYWZ0IHRoZSBidXR0b24gc2hvd3MgdXAgaW4gYWxsIHBhZ2VzIGFuZCBmb2xsb3dzIHRoZSBiZWxvdyBjcml0ZXJpYVxuXHRcdC8vIFx0XHRJZiB0aGUgcm9vdCBvYmplY3QgaXMgYSBuZXcgb2JqZWN0ICghSXNBY3RpdmVFbnRpdHkgJiYgIUhhc0FjdGl2ZUVudGl0eSkgdGhlbiBhbGwgcGFnZXMgc2hvdWxkIHNob3cgQ3JlYXRlLlxuXHRcdC8vIFx0XHRJZiB0aGUgcm9vciBvYmplY3QgaXMgbm90IGEgbmV3IG9iamVjdCB0aGVuIGFsbCBwYWdlcyBzaG91bGQgc2hvdyBTYXZlLlxuXHRcdHJldHVybiBpZkVsc2UoXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdCh0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0IGFzIEVudGl0eVNldCkuYW5ub3RhdGlvbnMuU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRVSS5Jc0NyZWF0ZU1vZGUsXG5cdFx0XHRcdGlmRWxzZSh0aGlzLl9oaWRkZW5EcmFmdCwgYW5kKHBhdGhJbk1vZGVsKFwiL3Jvb3RJc05ld09iamVjdFwiLCBcImZvb3RlckludGVybmFsXCIpKSwgRHJhZnQuSXNOZXdPYmplY3QpXG5cdFx0XHQpLFxuXHRcdFx0Y3JlYXRlQnV0dG9uVGV4dCxcblx0XHRcdHNhdmVCdXR0b25UZXh0XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q2FuY2VsQnV0dG9uKGFjdGlvbj86IEJhc2VBY3Rpb24pOiBCdXR0b24gfCBudWxsIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRjb25zdCBoaWRkZW5EcmFmdCA9IChjb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuSGlkZGVuRHJhZnQgYXMgSGlkZGVuRHJhZnQpXG5cdFx0XHQ/LmVuYWJsZWQ7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnRyb2xsZXIuZ2V0VmlldygpLmFkZERlcGVuZGVudChcblx0XHRcdDxDb21tYW5kRXhlY3V0aW9uXG5cdFx0XHRcdHJlZj17dGhpcy5jbWRFeGVjdXRpb259XG5cdFx0XHRcdGNvbW1hbmQ9XCJDYW5jZWxcIlxuXHRcdFx0XHRleGVjdXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5fY2FuY2VsRG9jdW1lbnQoeyBjYW5jZWxCdXR0b246IFwiZmU6OkZvb3RlckJhcjo6U3RhbmRhcmRBY3Rpb246OkNhbmNlbFwiIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHR2aXNpYmxlPXtpZkVsc2UoXG5cdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0dmlld0RhdGEuZmNsRW5hYmxlZCA9PT0gdHJ1ZSxcblx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHQpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdC8vIE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgc2V0dGluZyBpcyBuZWVkZWQgd2hlbiB0aGUgZGlzY2FyZCBidXR0b24gaXMgaW4gdGhlIG92ZXJmbG93XG5cdFx0cmV0dXJuIChcblx0XHRcdDxCdXR0b25cblx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJTdGFuZGFyZEFjdGlvbjo6Q2FuY2VsXCIpfVxuXHRcdFx0XHR0ZXh0PXtcblx0XHRcdFx0XHRNb2RlbEhlbHBlci5pc0RyYWZ0Um9vdCh0aGlzLmRhdGFWaWV3TW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCkgJiYgIXRoaXMuX2hpZGRlbkRyYWZ0XG5cdFx0XHRcdFx0XHQ/IFwie3NhcC5mZS5pMThuPkNfQ09NTU9OX09CSkVDVF9QQUdFX0RJU0NBUkRfRFJBRlR9XCJcblx0XHRcdFx0XHRcdDogXCJ7c2FwLmZlLmkxOG4+Q19DT01NT05fT0JKRUNUX1BBR0VfQ0FOQ0VMfVwiXG5cdFx0XHRcdH1cblx0XHRcdFx0anN4OmNvbW1hbmQ9XCJjbWQ6Q2FuY2VsfHByZXNzXCJcblx0XHRcdFx0dmlzaWJsZT17Y29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0aGlkZGVuRHJhZnQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRcdGFuZChVSS5Jc0VkaXRhYmxlLCBlcXVhbChwYXRoSW5Nb2RlbChcIi9zaG93U2F2ZUFuZENhbmNlbEJ1dHRvblwiLCBcImZjbGhlbHBlclwiKSwgdHJ1ZSkpLFxuXHRcdFx0XHRcdFx0XHRVSS5Jc0VkaXRhYmxlXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0VUkuSXNFZGl0YWJsZVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KX1cblx0XHRcdFx0YXJpYUhhc1BvcHVwPXtpZkVsc2UocGF0aEluTW9kZWwoXCIvaXNEb2N1bWVudE1vZGlmaWVkXCIsIFwidWlcIiksIGNvbnN0YW50KFwiRGlhbG9nXCIpLCBjb25zdGFudChcIk5vbmVcIikpfVxuXHRcdFx0XHRlbmFibGVkPXt0cnVlfVxuXHRcdFx0XHRkdDpkZXNpZ250aW1lPVwibm90LWFkYXB0YWJsZVwiXG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogKFxuXHRcdFx0XHRcdFx0PE92ZXJmbG93VG9vbGJhckxheW91dERhdGFcblx0XHRcdFx0XHRcdFx0cHJpb3JpdHk9e2FjdGlvbj8ucHJpb3JpdHl9XG5cdFx0XHRcdFx0XHRcdGNsb3NlT3ZlcmZsb3dPbkludGVyYWN0aW9uPXtmYWxzZX1cblx0XHRcdFx0XHRcdD48L092ZXJmbG93VG9vbGJhckxheW91dERhdGE+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9CdXR0b24+XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q3JlYXRlTmV4dEJ1dHRvbihlbXBoYXNpemVkRXhwcmVzc2lvbjogUHJvcGVydHlCaW5kaW5nSW5mbyk6IEJ1dHRvbiB8IG51bGwge1xuXHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIE9iamVjdFBhZ2VDb250cm9sbGVyO1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gY29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncztcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIlN0YW5kYXJkQWN0aW9uOjpDcmVhdGVOZXh0XCIpfVxuXHRcdFx0XHR0ZXh0PXtcIntzYXAuZmUuaTE4bj5DX0NPTU1PTl9PQkpFQ1RfUEFHRV9DUkVBVEVfTkVYVH1cIn1cblx0XHRcdFx0cHJlc3M9e2NvbnRyb2xsZXIuZWRpdEZsb3cuY3JlYXRlTmV4dERvY3VtZW50fVxuXHRcdFx0XHR0eXBlPXtlbXBoYXNpemVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmlzaWJsZT17aWZFbHNlKFxuXHRcdFx0XHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdHZpZXdEYXRhLmZjbEVuYWJsZWQgPT09IHRydWUsXG5cdFx0XHRcdFx0XHRhbmQoRHJhZnQuSXNOZXdPYmplY3QsIGVxdWFsKHBhdGhJbk1vZGVsKFwiL3Nob3dTYXZlQW5kQ2FuY2VsQnV0dG9uXCIsIFwiZmNsaGVscGVyXCIpLCB0cnVlKSksXG5cdFx0XHRcdFx0XHREcmFmdC5Jc05ld09iamVjdFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0RHJhZnQuSXNOZXdPYmplY3Rcblx0XHRcdFx0KX1cblx0XHRcdFx0ZW5hYmxlZD17dHJ1ZX1cblx0XHRcdFx0ZHQ6ZGVzaWdudGltZT1cIm5vdC1hZGFwdGFibGVcIlxuXHRcdFx0PlxuXHRcdFx0XHR7eyBsYXlvdXREYXRhOiA8T3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YSBjbG9zZU92ZXJmbG93T25JbnRlcmFjdGlvbj17ZmFsc2V9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT4gfX1cblx0XHRcdDwvQnV0dG9uPlxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIGdldFRvb2xiYXJTZXBhcmF0b3IoYWN0aW9uOiBCYXNlQWN0aW9uKTogVG9vbGJhclNlcGFyYXRvciB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxUb29sYmFyU2VwYXJhdG9yPlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIGdyb3VwPXthY3Rpb24uZ3JvdXB9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT5cblx0XHRcdFx0fX1cblx0XHRcdDwvVG9vbGJhclNlcGFyYXRvcj5cblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXREYXRhRmllbGRGb3JBY3Rpb25CdXR0b24oYWN0aW9uOiBCYXNlQWN0aW9uKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoYWN0aW9uLmFubm90YXRpb25QYXRoKSB7XG5cdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYWN0aW9uLmFubm90YXRpb25QYXRoO1xuXHRcdFx0bGV0IHByZXNzRXZlbnQ6IHsgcHJlc3M6IChldmVudDogRXZlbnQpID0+IHZvaWQgfSB8IHsgXCJqc3g6Y29tbWFuZFwiOiBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvblBhdGhDb250ZXh0ID0gdGhpcy5vRGF0YU1ldGFNb2RlbC5nZXRDb250ZXh0KGFubm90YXRpb25QYXRoKTtcblx0XHRcdGNvbnN0IGRhdGFGaWVsZENvbnRleHRNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RGF0YUZpZWxkRm9yQWN0aW9uPihhbm5vdGF0aW9uUGF0aENvbnRleHQpO1xuXHRcdFx0Y29uc3QgZGF0YUZpZWxkRm9yQWN0aW9uID0gZGF0YUZpZWxkQ29udGV4dE1vZGVsUGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0XHRpZiAoZGF0YUZpZWxkRm9yQWN0aW9uKSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvblBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0ZW50aXR5U2V0TmFtZTogdGhpcy5kYXRhVmlld01vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQ/Lm5hbWUsXG5cdFx0XHRcdFx0aW52b2NhdGlvbkdyb3VwaW5nOlxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkRm9yQWN0aW9uLkludm9jYXRpb25Hcm91cGluZyA9PT0gXCJVSS5PcGVyYXRpb25Hcm91cGluZ1R5cGUvQ2hhbmdlU2V0XCJcblx0XHRcdFx0XHRcdFx0PyAobGlicmFyeSBhcyBDb3JlTGliKS5JbnZvY2F0aW9uR3JvdXBpbmcuQ2hhbmdlU2V0XG5cdFx0XHRcdFx0XHRcdDogKGxpYnJhcnkgYXMgQ29yZUxpYikuSW52b2NhdGlvbkdyb3VwaW5nLklzb2xhdGVkLFxuXHRcdFx0XHRcdGxhYmVsOiBkYXRhRmllbGRGb3JBY3Rpb24uTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0aXNOYXZpZ2FibGU6IGFjdGlvbi5pc05hdmlnYWJsZSxcblx0XHRcdFx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb25cblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKCFhY3Rpb24uY29tbWFuZCkge1xuXHRcdFx0XHRcdHByZXNzRXZlbnQgPSB7XG5cdFx0XHRcdFx0XHRwcmVzczogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHQoY29udHJvbGxlciBhcyBDb250cm9sbGVyV2l0aEFjdGlvbikuaGFuZGxlcnMub25DYWxsQWN0aW9uKHZpZXcsIGRhdGFGaWVsZEZvckFjdGlvbi5BY3Rpb24gYXMgc3RyaW5nLCB7XG5cdFx0XHRcdFx0XHRcdFx0Li4uYWN0aW9uUGFyYW1ldGVycyxcblx0XHRcdFx0XHRcdFx0XHQuLi57XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZXh0czogdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0bW9kZWw6IHZpZXcuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBjb21tYW5kIGNvbWluZyBmcm9tIHRoZSBtYW5pZmVzdCBkb2Vzbid0IGdldCB0aGUgbWFuZGF0b3J5IHByZWZpeCBcImNtZDpcIiBzbyB3ZSBuZWVkIHRvIGFkZCBpdFxuXHRcdFx0XHRcdGlmICghYWN0aW9uLmNvbW1hbmQuc3RhcnRzV2l0aChcImNtZDpcIikpIHtcblx0XHRcdFx0XHRcdGFjdGlvbi5jb21tYW5kID0gYGNtZDoke2FjdGlvbi5jb21tYW5kfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHByZXNzRXZlbnQgPSB7IFwianN4OmNvbW1hbmRcIjogYCR7YWN0aW9uLmNvbW1hbmR9fHByZXNzYCBhcyBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQodGhpcy5nZXRBY3Rpb25Nb2RlbFBhdGgoYWN0aW9uKSl9XG5cdFx0XHRcdFx0XHQvLyBUaGlzIGV4cHJlc3Npb24gY29uc2lkZXJzIGFjdGlvbnMgd2l0aCBkeW5hbWljIHZpc2liaWxpdHkuXG5cdFx0XHRcdFx0XHQvLyBXaGVuIHdlIGhhdmUgb3RoZXIgdmFsdWVzIHRoYW4gdHJ1ZSBvciBmYWxzZSwgaS5lLiBhbiBleHByZXNzaW9uLCB3ZSBleGNsdWRlIHRoZSBhY3Rpb25zIGZyb20gYWRhcHRpbmcgdGhlIHZpc2liaWxpdHkuXG5cdFx0XHRcdFx0XHRkdDpkZXNpZ250aW1lPXthY3Rpb24udmlzaWJsZSA9PT0gXCJ0cnVlXCIgfHwgYWN0aW9uLnZpc2libGUgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IFwibm90LWFkYXB0YWJsZS12aXNpYmlsaXR5XCJ9XG5cdFx0XHRcdFx0XHR0ZXh0PXthY3Rpb25QYXJhbWV0ZXJzLmxhYmVsfVxuXHRcdFx0XHRcdFx0ey4uLnByZXNzRXZlbnR9XG5cdFx0XHRcdFx0XHRhcmlhSGFzUG9wdXA9e2lzQWN0aW9uV2l0aERpYWxvZyhkYXRhRmllbGRDb250ZXh0TW9kZWxQYXRoLnRhcmdldE9iamVjdCl9XG5cdFx0XHRcdFx0XHR2aXNpYmxlPXthY3Rpb24udmlzaWJsZX1cblx0XHRcdFx0XHRcdGVuYWJsZWQ9e2FjdGlvbi5lbmFibGVkfVxuXHRcdFx0XHRcdFx0dHlwZT17Q3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZShkYXRhRmllbGRDb250ZXh0TW9kZWxQYXRoKX1cblx0XHRcdFx0XHRcdGljb249e2FjdGlvbj8uaXNBSU9wZXJhdGlvbiA9PT0gdHJ1ZSA/IGFpSWNvbiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRsYXlvdXREYXRhOiAoXG5cdFx0XHRcdFx0XHRcdFx0PE92ZXJmbG93VG9vbGJhckxheW91dERhdGEgcHJpb3JpdHk9e2FjdGlvbi5wcmlvcml0eX0gZ3JvdXA9e2FjdGlvbi5ncm91cH0+PC9PdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhPlxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0XHQpIGFzIEJ1dHRvbjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldE1hbmlmZXN0QnV0dG9uKGFjdGlvbjogQmFzZUFjdGlvbik6IEJ1dHRvbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKE9iamVjdFBhZ2VUZW1wbGF0aW5nLmlzTWFuaWZlc3RBY3Rpb24oYWN0aW9uKSkge1xuXHRcdFx0bGV0IHByZXNzRXZlbnQ6IHsgcHJlc3M6IChldmVudDogRXZlbnQpID0+IHZvaWQgfSB8IHsgXCJqc3g6Y29tbWFuZFwiOiBDb21tYW5kUHJvcGVydGllcyB9O1xuXHRcdFx0aWYgKGFjdGlvbi5jb21tYW5kKSB7XG5cdFx0XHRcdHByZXNzRXZlbnQgPSB7IFwianN4OmNvbW1hbmRcIjogYGNtZDoke2FjdGlvbi5jb21tYW5kfXxwcmVzc2AgfTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHByZXNzRXZlbnQgPSB7XG5cdFx0XHRcdFx0cHJlc3M6IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdEZQTUhlbHBlci5hY3Rpb25XcmFwcGVyKGV2ZW50LCBhY3Rpb24uaGFuZGxlck1vZHVsZSwgYWN0aW9uLmhhbmRsZXJNZXRob2QsIHt9KS5jYXRjaCgoZXJyb3I6IHVua25vd24pID0+XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChhY3Rpb24uaWQpfVxuXHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9e2FjdGlvbi52aXNpYmxlID09PSBcInRydWVcIiB8fCBhY3Rpb24udmlzaWJsZSA9PT0gXCJmYWxzZVwiID8gdW5kZWZpbmVkIDogXCJub3QtYWRhcHRhYmxlLXZpc2liaWxpdHlcIn1cblx0XHRcdFx0XHR0ZXh0PXthY3Rpb24udGV4dCA/PyBcIlwifVxuXHRcdFx0XHRcdHsuLi5wcmVzc0V2ZW50fVxuXHRcdFx0XHRcdHR5cGU9XCJUcmFuc3BhcmVudFwiXG5cdFx0XHRcdFx0dmlzaWJsZT17YWN0aW9uLnZpc2libGV9XG5cdFx0XHRcdFx0ZW5hYmxlZD17YWN0aW9uLmVuYWJsZWR9XG5cdFx0XHRcdFx0aWNvbj17YWN0aW9uPy5pc0FJT3BlcmF0aW9uID09PSB0cnVlID8gYWlJY29uIDogdW5kZWZpbmVkfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IDxPdmVyZmxvd1Rvb2xiYXJMYXlvdXREYXRhIHByaW9yaXR5PXthY3Rpb24ucHJpb3JpdHl9IGdyb3VwPXthY3Rpb24uZ3JvdXB9PjwvT3ZlcmZsb3dUb29sYmFyTGF5b3V0RGF0YT5cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdOKAmlxuXHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdCkgYXMgQnV0dG9uO1xuXHRcdH1cblx0fVxuXG5cdGdldEFjdGlvbkNvbnRyb2xzKCk6IEJ1dHRvbltdIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbiA9IE9iamVjdFBhZ2VUZW1wbGF0aW5nLmJ1aWxkRW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24odGhpcy5kYXRhVmlld01vZGVsUGF0aCk7XG5cdFx0cmV0dXJuIHRoaXMuYWN0aW9uc1xuXHRcdFx0Py5tYXAoKGFjdGlvbjogQmFzZUFjdGlvbikgPT4ge1xuXHRcdFx0XHRzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBBY3Rpb25UeXBlLkRlZmF1bHRBcHBseTpcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldEFwcGx5QnV0dG9uKGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uKTtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGF0YUZpZWxkRm9yQWN0aW9uQnV0dG9uKGFjdGlvbik7XG5cdFx0XHRcdFx0Y2FzZSBBY3Rpb25UeXBlLlByaW1hcnk6XG5cdFx0XHRcdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBPYmplY3RQYWdlQ29udHJvbGxlcjtcblx0XHRcdFx0XHRcdGNvbnN0IHZpZXdEYXRhID0gY29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncztcblx0XHRcdFx0XHRcdGNvbnN0IHZpZXdMZXZlbCA9IHZpZXdEYXRhPy52aWV3TGV2ZWwgPz8gMDtcblx0XHRcdFx0XHRcdGlmICh0aGlzLl9oaWRkZW5EcmFmdCAmJiAhdGhpcy5faGlkZUNyZWF0ZU5leHQgJiYgdmlld0xldmVsID4gMSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCA9IGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0PyByZXNvbHZlQmluZGluZ1N0cmluZyhlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvbilcblx0XHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0UHJpbWFyeShjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoRHJhZnQuSXNOZXdPYmplY3QsIHVuZGVmaW5lZCwgZW1waGFzaXplZEJ1dHRvblRvb2xLaXRFeHApKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRQcmltYXJ5KGVtcGhhc2l6ZWRCdXR0b25FeHByZXNzaW9uLCBhY3Rpb24pO1xuXHRcdFx0XHRcdGNhc2UgQWN0aW9uVHlwZS5TZWNvbmRhcnk6XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRDYW5jZWxCdXR0b24oYWN0aW9uKTtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuQ3JlYXRlTmV4dDpcblx0XHRcdFx0XHRcdGlmICh0aGlzLl9oaWRkZW5EcmFmdCAmJiAhdGhpcy5faGlkZUNyZWF0ZU5leHQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZW1waGFzaXplZEJ1dHRvblRvb2xLaXRFeHAgPSBlbXBoYXNpemVkQnV0dG9uRXhwcmVzc2lvblxuXHRcdFx0XHRcdFx0XHRcdD8gcmVzb2x2ZUJpbmRpbmdTdHJpbmcoZW1waGFzaXplZEJ1dHRvbkV4cHJlc3Npb24pXG5cdFx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmdldENyZWF0ZU5leHRCdXR0b24oXG5cdFx0XHRcdFx0XHRcdFx0Y29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKERyYWZ0LklzTmV3T2JqZWN0LCBlbXBoYXNpemVkQnV0dG9uVG9vbEtpdEV4cCwgdW5kZWZpbmVkKSlcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRjYXNlIEFjdGlvblR5cGUuU2VwYXJhdG9yOlxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VG9vbGJhclNlcGFyYXRvcihhY3Rpb24pO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRNYW5pZmVzdEJ1dHRvbihhY3Rpb24pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmZpbHRlcigoYWN0aW9uKTogYWN0aW9uIGlzIEJ1dHRvbiA9PiAhIWFjdGlvbik7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IE92ZXJmbG93VG9vbGJhciB7XG5cdFx0Y29uc3QgY29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSBjb250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnN0IG1lc3NhZ2VCdXR0b246IE1lc3NhZ2VCdXR0b24gPSAoXG5cdFx0XHQ8TWVzc2FnZUJ1dHRvblxuXHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIk1lc3NhZ2VCdXR0b25cIil9XG5cdFx0XHRcdHZpc2libGU9e2NvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdHRoaXMuX2hpZGRlbkRyYWZ0ID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YS5mY2xFbmFibGVkID09PSB0cnVlLFxuXHRcdFx0XHRcdFx0XHRhbmQoVUkuSXNFZGl0YWJsZSwgZXF1YWwocGF0aEluTW9kZWwoXCIvc2hvd1NhdmVBbmRDYW5jZWxCdXR0b25cIiwgXCJmY2xoZWxwZXJcIiksIHRydWUpKSxcblx0XHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCl9XG5cdFx0XHRcdG1lc3NhZ2VDaGFuZ2U9eygpOiB2b2lkID0+IGNvbnRyb2xsZXIuX2dldEZvb3RlclZpc2liaWxpdHkoKX1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0aGlzLmNyZWF0ZUlkKFwiTWVzc2FnZUJ1dHRvbjo6QXJpYVRleHRcIikgYXMgc3RyaW5nXX1cblx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRhcmlhSGFzUG9wdXA9XCJEaWFsb2dcIlxuXHRcdFx0Lz5cblx0XHQpO1xuXHRcdGNvbnN0IGZvb3RlckJhciA9IChcblx0XHRcdDxPdmVyZmxvd1Rvb2xiYXIgaWQ9e3RoaXMuY3JlYXRlSWQoXCJfZmNcIil9IGFzeW5jTW9kZT17dHJ1ZX0+XG5cdFx0XHRcdDxJbnZpc2libGVUZXh0XG5cdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJNZXNzYWdlQnV0dG9uOjpBcmlhVGV4dFwiKX1cblx0XHRcdFx0XHR0ZXh0PVwie3NhcC5mZS5pMThuPkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfQlVUVE9OX0FSSUFfVEVYVH1cIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHR7bWVzc2FnZUJ1dHRvbn1cblx0XHRcdFx0PFRvb2xiYXJTcGFjZXIgLz5cblx0XHRcdFx0e3RoaXMuZ2V0RHJhZnRJbmRpY2F0b3IoKX1cblx0XHRcdFx0e3RoaXMuZ2V0QWN0aW9uQ29udHJvbHMoKX1cblx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyPlxuXHRcdCk7XG5cdFx0Y29udHJvbGxlclxuXHRcdFx0LmdldFZpZXcoKVxuXHRcdFx0LmFkZERlcGVuZGVudChcblx0XHRcdFx0PENvbW1hbmRFeGVjdXRpb25cblx0XHRcdFx0XHRyZWY9e3RoaXMuY21kRXhlY3V0aW9ufVxuXHRcdFx0XHRcdGNvbW1hbmQ9XCJPcGVuTWVzc2FnZUJ1dHRvbk1lbnVcIlxuXHRcdFx0XHRcdGV4ZWN1dGU9eygpOiBNZXNzYWdlQnV0dG9uID0+IG1lc3NhZ2VCdXR0b24uZmlyZVByZXNzKCl9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdHJldHVybiBmb290ZXJCYXI7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0NBO0VBR0E7RUFBQSxJQWFxQkEsYUFBYSxJQUFBQyxJQUFBLEdBRGpDQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBQUMsS0FBQSxHQUU1Q0Msa0JBQWtCLENBQUMscUJBQXFCLENBQUMsRUFBQUMsS0FBQSxHQUd6Q0Qsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUFFLEtBQUEsR0FHaENDLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdESCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHREosUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBRzVCQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBbUJqQkMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLEVBQUFkLElBQUEsQ0FBQWUsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBSnhELFNBQUFsQixjQUFZbUIsS0FBcUQsRUFBRUMsTUFBeUIsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDN0ZBLEtBQUEsR0FBQUgsY0FBQSxDQUFBSSxJQUFBLE9BQU1ILEtBQUssRUFBRUMsTUFB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
@@ -502,7 +502,10 @@ export default class FooterContent extends BuildingBlock<OverflowToolbar> {
502
502
  case ActionType.DataFieldForAction:
503
503
  return this.getDataFieldForActionButton(action);
504
504
  case ActionType.Primary:
505
- if (this._hiddenDraft && !this._hideCreateNext) {
505
+ const controller = this._getOwner()?.getRootController() as ObjectPageController;
506
+ const viewData = controller.getView().getViewData() as BaseManifestSettings;
507
+ const viewLevel = viewData?.viewLevel ?? 0;
508
+ if (this._hiddenDraft && !this._hideCreateNext && viewLevel > 1) {
506
509
  const emphasizedButtonToolKitExp = emphasizedButtonExpression
507
510
  ? resolveBindingString(emphasizedButtonExpression)
508
511
  : undefined;
@@ -26,7 +26,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/building
26
26
  * &lt;macros:MessageButton visibilityChange=".handler.onMessageButtonVisibilityChange" /&gt;
27
27
  * </pre>
28
28
  * @public
29
- * @experimental
30
29
  */
31
30
  let MessageButton = (_dec = defineUI5Class("sap.fe.macros.MessageButton"), _dec2 = event(), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
32
31
  function MessageButton(idOrSettings, settings) {
@@ -260,4 +259,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/building
260
259
  _exports = MessageButton;
261
260
  return _exports;
262
261
  }, false);
263
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlQnV0dG9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXAiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiX21lc3NhZ2VNb2RlbCIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsIl9tbVByb3BlcnR5QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImF0dGFjaENoYW5nZSIsInByb2Nlc3NNZXNzYWdlcyIsImV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwibWVzc2FnZXMiLCJnZXREYXRhIiwibWVzc2FnZURldGFpbHMiLCJyZWR1Y2UiLCJyZWR1Y2VkTWVzc2FnZXMiLCJtZXNzYWdlIiwiaXNCb3VuZCIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJpc01lc3NhZ2VUZWNobmljYWwiLCJnZXRUZWNobmljYWwiLCJwdXNoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJtZXNzYWdlSGFuZGxlciIsImJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIiwiYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMiLCJtZXNzYWdlUHJpb3JpdHlNYXAiLCJFcnJvciIsIldhcm5pbmciLCJTdWNjZXNzIiwiSW5mb3JtYXRpb24iLCJOb25lIiwiYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5IiwiZXJyb3JDb3VudCIsIm1lc3NhZ2VJdGVtcyIsIm1lc3NhZ2VEZXRhaWwiLCJtZXNzYWdlVHlwZSIsImdldFR5cGUiLCJtZXNzYWdlUHJpb3JpdHkiLCJNZXNzYWdlVHlwZSIsImNyZWF0ZU1lc3NhZ2VJdGVtIiwiZ2V0Q29udGVudCIsInNldFRleHQiLCJ0b1N0cmluZyIsInByaW9yaXRpemVkQnV0dG9uVHlwZSIsIkJ1dHRvblR5cGUiLCJOZWdhdGl2ZSIsIkNyaXRpY2FsIiwiTmV1dHJhbCIsIkRlZmF1bHQiLCJzZXRUeXBlIiwicHJpb3JpdGl6ZWRUb29sVGlwS2V5IiwidG9vbHRpcEtleSIsInRvb2x0aXBUZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJzZXRUb29sdGlwIiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGUiLCJmaXJlRXZlbnQiLCJ2aXNpYmxlIiwiY3JlYXRlTWVzc2FnZVBvcG92ZXIiLCJtZXNzYWdlSXRlbSIsIl9qc3giLCJNZXNzYWdlSXRlbSIsInRpdGxlIiwiZ2V0TWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0RGVzY3JpcHRpb24iLCJ0eXBlIiwibWFya3VwRGVzY3JpcHRpb24iLCJsb25ndGV4dFVybCIsImdldERlc2NyaXB0aW9uVXJsIiwic3VidGl0bGUiLCJnZXRBZGRpdGlvbmFsVGV4dCIsImdyb3VwTmFtZSIsImFjdGl2ZVRpdGxlIiwiZ2V0Q29udHJvbElkcyIsImFjdGl2ZVRpdGxlSGFuZGxlciIsImdldElkIiwiX21lc3NhZ2VQb3BvdmVyIiwiZGVzdHJveSIsIk1lc3NhZ2VQb3BvdmVyIiwiZ3JvdXBJdGVtcyIsImFjdGl2ZVRpdGxlUHJlc3MiLCJwcmVzc0V2ZW50IiwiZ2V0UGFyYW1ldGVyIiwiaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyIsImNoaWxkcmVuIiwiaXRlbXMiLCJhZGREZXBlbmRlbnQiLCJzZXRUaW1lb3V0Iiwib3BlbkJ5IiwiY29udHJvbElkIiwiZ2V0Q29udHJvbElkIiwiY29udHJvbCIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImZvY3VzIiwiTG9nIiwiZXJyb3IiLCJ0b2dnbGVNZXNzYWdlUG9wb3ZlciIsInRvZ2dsZSIsIkJ1dHRvbiIsInByZXNzIiwiYmluZCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlRGV0YWlsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBNZXNzYWdlSXRlbSBmcm9tIFwic2FwL20vTWVzc2FnZUl0ZW1cIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgTWVzc2FnZVBvcG92ZXIgZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBQcm9wZXJ0eUJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9Qcm9wZXJ0eUJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL21lc3NhZ2UvTWVzc2FnZU1vZGVsXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBzaG93IGJvdW5kIG1lc3NhZ2VzLlxuICpcbiAqIFRoZSBNZXNzYWdlIEJ1dHRvbiBCdWlsZGluZyBCbG9jayBnZXRzIHRoZSBib3VuZCBtZXNzYWdlcyBmcm9tIHRoZSBNZXNzYWdlTW9kZWwuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNZXNzYWdlQnV0dG9uIHZpc2liaWxpdHlDaGFuZ2U9XCIuaGFuZGxlci5vbk1lc3NhZ2VCdXR0b25WaXNpYmlsaXR5Q2hhbmdlXCIgLyZndDtcbiAqIDwvcHJlPlxuICogQHB1YmxpY1xuICogQGV4cGVyaW1lbnRhbFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk1lc3NhZ2VCdXR0b25cIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc3NhZ2VCdXR0b24gZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPEJ1dHRvbj4ge1xuXHQvKipcblx0ICogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBtZXNzYWdlIGJ1dHRvbidzIHZpc2liaWxpdHkgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGV2ZW50KClcblx0dmlzaWJpbGl0eUNoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdF9tZXNzYWdlTW9kZWwhOiBNZXNzYWdlTW9kZWw7XG5cblx0X21lc3NhZ2VQb3BvdmVyITogTWVzc2FnZVBvcG92ZXI7XG5cblx0X21tUHJvcGVydHlCaW5kaW5nITogUHJvcGVydHlCaW5kaW5nO1xuXG5cdF9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXA6IFJlY29yZDxzdHJpbmcsIE1lc3NhZ2VEZXRhaWw+ID0ge307XG5cblx0Y29uc3RydWN0b3IoaWRPclNldHRpbmdzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPE1lc3NhZ2VCdXR0b24+LCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxNZXNzYWdlQnV0dG9uPikge1xuXHRcdHN1cGVyKGlkT3JTZXR0aW5ncywgc2V0dGluZ3MpO1xuXHR9XG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0XHQvLyBnZXQgdGhlIG1lc3NhZ2UgbW9kZWwgYW5kIGF0dGFjaCB0byBpdCdzIGNoYW5nZSBldmVudC5cblx0XHR0aGlzLl9tZXNzYWdlTW9kZWwgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCk7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcgPSB0aGlzLl9tZXNzYWdlTW9kZWwuYmluZFByb3BlcnR5KFwiL1wiKTtcblx0XHR0aGlzLl9tbVByb3BlcnR5QmluZGluZy5hdHRhY2hDaGFuZ2UodGhpcy5wcm9jZXNzTWVzc2FnZXMsIHRoaXMpO1xuXHRcdGNvbnN0IGV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnByb2Nlc3NNZXNzYWdlcygpO1xuXHRcdFx0XHR0aGlzLnJlbW92ZUV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLmFkZEV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2Vzc2VzIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKlxuXHQgKiBGaWx0ZXJzIG91dCB0aGUgYm91bmQgYW5kIG5vbiB0ZWNobmljYWwgbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbFxuXHQgKiBBbmQgY2FsbHMgdGhlIE1lc3NhZ2VIYW5kbGVyLmJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGFsbG93IGNvbnN1bWVycyB0byBhZGFwdCB0aGUgbWVzc2FnZXMgdGhhdCB3aWxsIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGl0IGFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uJ3MgcHJvZXBydGllcyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqL1xuXHRhc3luYyBwcm9jZXNzTWVzc2FnZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IHRoaXMuX21lc3NhZ2VNb2RlbD8uZ2V0RGF0YSgpO1xuXG5cdFx0Ly8gZ2V0IGJvdW5kIG1lc3NhZ2VzLlxuXHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWxzID0gbWVzc2FnZXMucmVkdWNlKChyZWR1Y2VkTWVzc2FnZXM6IE1lc3NhZ2VEZXRhaWxbXSwgbWVzc2FnZSk6IE1lc3NhZ2VEZXRhaWxbXSA9PiB7XG5cdFx0XHRjb25zdCBpc0JvdW5kID0gbWVzc2FnZS5nZXRUYXJnZXRzKCkubGVuZ3RoID4gMDtcblx0XHRcdGNvbnN0IGlzTWVzc2FnZVRlY2huaWNhbCA9IG1lc3NhZ2UuZ2V0VGVjaG5pY2FsKCk7XG5cdFx0XHRpZiAoaXNCb3VuZCAmJiAhaXNNZXNzYWdlVGVjaG5pY2FsKSB7XG5cdFx0XHRcdHJlZHVjZWRNZXNzYWdlcy5wdXNoKHsgbWVzc2FnZSB9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZWR1Y2VkTWVzc2FnZXM7XG5cdFx0fSwgW10pO1xuXG5cdFx0aWYgKG1lc3NhZ2VEZXRhaWxzICYmIG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5iZWZvcmVTaG93TWVzc2FnZUJ1dHRvbihtZXNzYWdlRGV0YWlscyk7XG5cdFx0fVxuXHRcdHRoaXMuYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMobWVzc2FnZURldGFpbHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uIHByb3BlcnRpZXMgYW5kIGNyZWF0ZXMgYSBtZXNzYWdlIHBvcG92ZXIgdG8gc2hvdyB0aGUgbWVzc2FnZXMuXG5cdCAqXG5cdCAqIFNldHMgdGhlIG1lc3NhZ2VzIGJ1dHRvbnMgcHJvcGVydGllcyBvbiB0aGUgYmFzaXMgb2YgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBtZXNzYWdlcyBidXR0b24gaXMgZGV0ZXJtaW5lZCBvbiB0aGUgYmFzaXMgb2YgdGhlIHByaW9yaXR5IG9mIG1lc3NhZ2VzIHRvIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGNyZWF0ZXMgYSBtZXNzYWdlIHBvcG92ZXIgdG8gc2hvdyB0aGUgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSBtZXNzYWdlRGV0YWlscyBNZXNzYWdlIGRldGFpbHMgdXNlZCB0byByZW5kZXIgZWFjaCBtZXNzYWdlIGl0ZW0uXG5cdCAqL1xuXHRhZGp1c3RNZXNzYWdlQnV0dG9uUHJvcGVydGllcyhtZXNzYWdlRGV0YWlsczogTWVzc2FnZURldGFpbFtdKTogdm9pZCB7XG5cdFx0dGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwID0ge307XG5cdFx0aWYgKG1lc3NhZ2VEZXRhaWxzICYmIG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VQcmlvcml0eU1hcCA9IHtcblx0XHRcdFx0RXJyb3I6IDAsXG5cdFx0XHRcdFdhcm5pbmc6IDEsXG5cdFx0XHRcdFN1Y2Nlc3M6IDIsXG5cdFx0XHRcdEluZm9ybWF0aW9uOiAzLFxuXHRcdFx0XHROb25lOiA0XG5cdFx0XHR9O1xuXG5cdFx0XHRsZXQgYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5ID0gbWVzc2FnZVByaW9yaXR5TWFwLk5vbmU7IC8vIHdlIHN0YXJ0IGZyb20gdGhlIGxvd2VzdFxuXHRcdFx0bGV0IGVycm9yQ291bnQgPSAwO1xuXHRcdFx0Y29uc3QgbWVzc2FnZUl0ZW1zOiBNZXNzYWdlSXRlbVtdID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IG1lc3NhZ2VEZXRhaWwgb2YgbWVzc2FnZURldGFpbHMpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWwubWVzc2FnZTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVR5cGUgPSBtZXNzYWdlLmdldFR5cGUoKTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVByaW9yaXR5ID0gbWVzc2FnZVByaW9yaXR5TWFwW21lc3NhZ2VUeXBlXTtcblx0XHRcdFx0aWYgKG1lc3NhZ2VQcmlvcml0eSA8IGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSkge1xuXHRcdFx0XHRcdGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobWVzc2FnZVR5cGUgPT09IE1lc3NhZ2VUeXBlLkVycm9yKSB7XG5cdFx0XHRcdFx0ZXJyb3JDb3VudCsrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lc3NhZ2VJdGVtcy5wdXNoKHRoaXMuY3JlYXRlTWVzc2FnZUl0ZW0obWVzc2FnZURldGFpbCkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgcHJvcGVydGllcyBvbiB0aGUgbWVzc2FnZSBidXR0b25zXG5cblx0XHRcdC8vIHNldFRleHRcblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUZXh0KG1lc3NhZ2VEZXRhaWxzLmxlbmd0aC50b1N0cmluZygpKTtcblxuXHRcdFx0Ly8gc2V0VHlwZVxuXHRcdFx0Y29uc3QgcHJpb3JpdGl6ZWRCdXR0b25UeXBlID0gW1xuXHRcdFx0XHRCdXR0b25UeXBlLk5lZ2F0aXZlLFxuXHRcdFx0XHRCdXR0b25UeXBlLkNyaXRpY2FsLFxuXHRcdFx0XHRCdXR0b25UeXBlLlN1Y2Nlc3MsXG5cdFx0XHRcdEJ1dHRvblR5cGUuTmV1dHJhbCxcblx0XHRcdFx0QnV0dG9uVHlwZS5EZWZhdWx0XG5cdFx0XHRdO1xuXHRcdFx0dGhpcy5nZXRDb250ZW50KCk/LnNldFR5cGUocHJpb3JpdGl6ZWRCdXR0b25UeXBlW2F2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eV0pO1xuXG5cdFx0XHQvLyBzZXRUb29sdGlwXG5cdFx0XHRjb25zdCBwcmlvcml0aXplZFRvb2xUaXBLZXkgPSBbXG5cdFx0XHRcdFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9FUlJPUlwiLFxuXHRcdFx0XHRcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfV0FSTklOR19UT09MVElQXCIsXG5cdFx0XHRcdFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfU1VDQ0VTU1wiLFxuXHRcdFx0XHRcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX0lORk9cIixcblx0XHRcdFx0XCJcIlxuXHRcdFx0XTtcblx0XHRcdGNvbnN0IHRvb2x0aXBLZXkgPVxuXHRcdFx0XHRlcnJvckNvdW50ID4gMVxuXHRcdFx0XHRcdD8gXCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX01VTFRJUExFX0VSUk9SX1RPT0xUSVBcIlxuXHRcdFx0XHRcdDogcHJpb3JpdGl6ZWRUb29sVGlwS2V5W2F2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eV07XG5cdFx0XHRsZXQgdG9vbHRpcFRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KHRvb2x0aXBLZXkpO1xuXHRcdFx0aWYgKGVycm9yQ291bnQgPiAxKSB7XG5cdFx0XHRcdHRvb2x0aXBUZXh0ID0gYCR7ZXJyb3JDb3VudH0gICR7dG9vbHRpcFRleHR9YDtcblx0XHRcdH1cblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUb29sdGlwKHRvb2x0aXBUZXh0KTtcblxuXHRcdFx0Ly8gc2V0VmlzaWJsZVxuXHRcdFx0aWYgKCF0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRWaXNpYmxlKHRydWUpO1xuXHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInZpc2liaWxpdHlDaGFuZ2VcIiwgeyB2aXNpYmxlOiB0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBhbHNvIHNob3cgdGhlIG1lc3NhZ2UgcG9wb3ZlclxuXHRcdFx0dGhpcy5jcmVhdGVNZXNzYWdlUG9wb3ZlcihtZXNzYWdlSXRlbXMpO1xuXHRcdH1cblxuXHRcdGlmIChtZXNzYWdlRGV0YWlscy5sZW5ndGggPT09IDApIHtcblx0XHRcdGlmICh0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ2aXNpYmlsaXR5Q2hhbmdlXCIsIHsgdmlzaWJsZTogdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSB9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1lc3NhZ2UgSXRlbS5cblx0ICogQHBhcmFtIG1lc3NhZ2VEZXRhaWwgTWVzc2FnZSBkZXRhaWwgcmVsZXZhbnQgZm9yIGNyZWF0aW5nIHRoZSBtZXNzYWdlIGl0ZW0uXG5cdCAqIEByZXR1cm5zIE1lc3NhZ2VJdGVtIGNyZWF0ZWQgZnJvbSBNZXNzYWdlIERldGFpbFxuXHQgKi9cblx0Y3JlYXRlTWVzc2FnZUl0ZW0obWVzc2FnZURldGFpbDogTWVzc2FnZURldGFpbCk6IE1lc3NhZ2VJdGVtIHtcblx0XHRjb25zdCBtZXNzYWdlID0gbWVzc2FnZURldGFpbC5tZXNzYWdlO1xuXHRcdGNvbnN0IG1lc3NhZ2VJdGVtID0gKFxuXHRcdFx0PE1lc3NhZ2VJdGVtXG5cdFx0XHRcdHRpdGxlPXttZXNzYWdlLmdldE1lc3NhZ2UoKX1cblx0XHRcdFx0ZGVzY3JpcHRpb249e21lc3NhZ2UuZ2V0RGVzY3JpcHRpb24oKX1cblx0XHRcdFx0dHlwZT17bWVzc2FnZS5nZXRUeXBlKCl9XG5cdFx0XHRcdG1hcmt1cERlc2NyaXB0aW9uPXt0cnVlfVxuXHRcdFx0XHRsb25ndGV4dFVybD17bWVzc2FnZS5nZXREZXNjcmlwdGlvblVybCgpfVxuXHRcdFx0XHRzdWJ0aXRsZT17bWVzc2FnZS5nZXRBZGRpdGlvbmFsVGV4dCgpfVxuXHRcdFx0XHRncm91cE5hbWU9e21lc3NhZ2VEZXRhaWwuZ3JvdXBOYW1lIHx8IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX01FU1NBR0VfQlVUVE9OX1NBUEZFX01FU1NBR0VfR1JPVVBfR0VORVJBTFwiKX1cblx0XHRcdFx0YWN0aXZlVGl0bGU9e21lc3NhZ2UuZ2V0Q29udHJvbElkcygpLmxlbmd0aCA+IDAgfHwgdHlwZW9mIG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyID09PSBcImZ1bmN0aW9uXCJ9XG5cdFx0XHQvPlxuXHRcdCkgYXMgTWVzc2FnZUl0ZW07XG5cdFx0dGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwW21lc3NhZ2VJdGVtLmdldElkKCldID0gbWVzc2FnZURldGFpbDtcblx0XHRyZXR1cm4gbWVzc2FnZUl0ZW07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1lc3NhZ2UgUG9wb3Zlci5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtc1xuXHQgKi9cblx0Y3JlYXRlTWVzc2FnZVBvcG92ZXIobWVzc2FnZUl0ZW1zOiBNZXNzYWdlSXRlbVtdKTogdm9pZCB7XG5cdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXI/LmRlc3Ryb3koKTtcblx0XHR0aGlzLl9tZXNzYWdlUG9wb3ZlciA9IChcblx0XHRcdDxNZXNzYWdlUG9wb3ZlclxuXHRcdFx0XHRncm91cEl0ZW1zPXt0cnVlfVxuXHRcdFx0XHRhY3RpdmVUaXRsZVByZXNzPXsocHJlc3NFdmVudDogTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZUl0ZW0gPSBwcmVzc0V2ZW50LmdldFBhcmFtZXRlcihcIml0ZW1cIik7XG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVBY3RpdmVUaXRsZVByZXNzKG1lc3NhZ2VJdGVtKTtcblx0XHRcdFx0fX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRpdGVtczogbWVzc2FnZUl0ZW1zXG5cdFx0XHRcdH19XG5cdFx0XHQ8L01lc3NhZ2VQb3BvdmVyPlxuXHRcdCkgYXMgTWVzc2FnZVBvcG92ZXI7XG5cdFx0dGhpcy5nZXRDb250ZW50KCk/LmFkZERlcGVuZGVudCh0aGlzLl9tZXNzYWdlUG9wb3Zlcik7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9tZXNzYWdlUG9wb3Zlci5vcGVuQnkodGhpcy5nZXRDb250ZW50KCkgYXMgQnV0dG9uKTtcblx0XHR9LCAwKTtcblx0fVxuXHQvKipcblx0ICogSGFuZGxlcyBhY3RpdmUgdGl0bGUgcHJlc3MuXG5cdCAqXG5cdCAqIElmIGFuIGFjdGl2ZVRpdGxlSGFuZGxlciBpcyBwcm92aWRlZCBieSB0aGUgY29uc3VtZXIgdmlhIHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiB0aGVuIGl0IGlzIGNhbGxlZC5cblx0ICogT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gZm9jdXMgb24gdGhlIGNvbnRyb2wgaWYgYSBjb250cm9sIElkIGluIHRoZSBtZXNzYWdlIGlzIGF2YWlsYWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtXG5cdCAqL1xuXHRoYW5kbGVBY3RpdmVUaXRsZVByZXNzKG1lc3NhZ2VJdGVtPzogTWVzc2FnZUl0ZW0pOiB2b2lkIHtcblx0XHRpZiAobWVzc2FnZUl0ZW0pIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWwgPSB0aGlzLl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXBbbWVzc2FnZUl0ZW0/LmdldElkKCldO1xuXHRcdFx0aWYgKG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyKSB7XG5cdFx0XHRcdG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyKG1lc3NhZ2VEZXRhaWwubWVzc2FnZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBjb250cm9sSWQgPSBtZXNzYWdlRGV0YWlsLm1lc3NhZ2UuZ2V0Q29udHJvbElkKCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2wgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRyb2xJZCk7XG5cdFx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdFx0Y29udHJvbC5mb2N1cygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihcIm1lc3NhZ2UgaXRlbSBub3QgZm91bmQhXCIpO1xuXHRcdH1cblx0fVxuXG5cdGRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcuZGVzdHJveSgpO1xuXHR9XG5cdC8qKlxuXHQgKiBUb2dnbGUgaGFuZGxlciBmb3IgdGhlIG1lc3NhZ2UgcG9wb3Zlci5cblx0ICovXG5cdHRvZ2dsZU1lc3NhZ2VQb3BvdmVyKCk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VQb3BvdmVyLnRvZ2dsZSh0aGlzLmNvbnRlbnQgYXMgQnV0dG9uKTtcblx0fVxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgY29udGVudCBmb3IgdGhlIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb250ZW50IGNvbnRyb2wuXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IEJ1dHRvbiB7XG5cdFx0cmV0dXJuIDxCdXR0b24gdmlzaWJsZT1cImZhbHNlXCIgcHJlc3M9e3RoaXMudG9nZ2xlTWVzc2FnZVBvcG92ZXIuYmluZCh0aGlzKX0gLz47XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFaQSxJQWNxQkEsYUFBYSxJQUFBQyxJQUFBLEdBRGpDQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBQUMsS0FBQSxHQU01Q0MsS0FBSyxDQUFDLENBQUMsRUFBQUgsSUFBQSxDQUFBSSxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGNBQUE7SUFXUixTQUFBUCxjQUFZUSxZQUFtRCxFQUFFQyxRQUFzQyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN4R0EsS0FBQSxHQUFBSCxjQUFBLENBQUFJLElBQUEsT0FBTUgsWUFBWSxFQUFFQyxRQUFRLENBQUM7TUFoQjlCO0FBQ0Q7QUFDQTtBQUNBO01BSENHLDBCQUFBLENBQUFGLEtBQUEsc0JBQUFHLFdBQUEsRUFBQUgsS0FBQTtNQUFBQSxLQUFBLENBYUFJLDRCQUE0QixHQUFrQyxDQUFDLENBQUM7TUFBQSxPQUFBSixLQUFBO0lBSWhFO0lBQ0E7QUFDRDtBQUNBO0lBRkNLLFFBQUEsR0FBQWYsYUFBQTtJQUFBZ0IsY0FBQSxDQUFBaEIsYUFBQSxFQUFBTyxjQUFBO0lBQUEsSUFBQVUsTUFBQSxHQUFBakIsYUFBQSxDQUFBa0IsU0FBQTtJQUFBRCxNQUFBLENBR0FFLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQUEsRUFBUztNQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDQyxPQUFPLEVBQUU7UUFDbEIs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
262
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlQnV0dG9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXAiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiX21lc3NhZ2VNb2RlbCIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsIl9tbVByb3BlcnR5QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImF0dGFjaENoYW5nZSIsInByb2Nlc3NNZXNzYWdlcyIsImV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwibWVzc2FnZXMiLCJnZXREYXRhIiwibWVzc2FnZURldGFpbHMiLCJyZWR1Y2UiLCJyZWR1Y2VkTWVzc2FnZXMiLCJtZXNzYWdlIiwiaXNCb3VuZCIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJpc01lc3NhZ2VUZWNobmljYWwiLCJnZXRUZWNobmljYWwiLCJwdXNoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJtZXNzYWdlSGFuZGxlciIsImJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIiwiYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMiLCJtZXNzYWdlUHJpb3JpdHlNYXAiLCJFcnJvciIsIldhcm5pbmciLCJTdWNjZXNzIiwiSW5mb3JtYXRpb24iLCJOb25lIiwiYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5IiwiZXJyb3JDb3VudCIsIm1lc3NhZ2VJdGVtcyIsIm1lc3NhZ2VEZXRhaWwiLCJtZXNzYWdlVHlwZSIsImdldFR5cGUiLCJtZXNzYWdlUHJpb3JpdHkiLCJNZXNzYWdlVHlwZSIsImNyZWF0ZU1lc3NhZ2VJdGVtIiwiZ2V0Q29udGVudCIsInNldFRleHQiLCJ0b1N0cmluZyIsInByaW9yaXRpemVkQnV0dG9uVHlwZSIsIkJ1dHRvblR5cGUiLCJOZWdhdGl2ZSIsIkNyaXRpY2FsIiwiTmV1dHJhbCIsIkRlZmF1bHQiLCJzZXRUeXBlIiwicHJpb3JpdGl6ZWRUb29sVGlwS2V5IiwidG9vbHRpcEtleSIsInRvb2x0aXBUZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJzZXRUb29sdGlwIiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGUiLCJmaXJlRXZlbnQiLCJ2aXNpYmxlIiwiY3JlYXRlTWVzc2FnZVBvcG92ZXIiLCJtZXNzYWdlSXRlbSIsIl9qc3giLCJNZXNzYWdlSXRlbSIsInRpdGxlIiwiZ2V0TWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0RGVzY3JpcHRpb24iLCJ0eXBlIiwibWFya3VwRGVzY3JpcHRpb24iLCJsb25ndGV4dFVybCIsImdldERlc2NyaXB0aW9uVXJsIiwic3VidGl0bGUiLCJnZXRBZGRpdGlvbmFsVGV4dCIsImdyb3VwTmFtZSIsImFjdGl2ZVRpdGxlIiwiZ2V0Q29udHJvbElkcyIsImFjdGl2ZVRpdGxlSGFuZGxlciIsImdldElkIiwiX21lc3NhZ2VQb3BvdmVyIiwiZGVzdHJveSIsIk1lc3NhZ2VQb3BvdmVyIiwiZ3JvdXBJdGVtcyIsImFjdGl2ZVRpdGxlUHJlc3MiLCJwcmVzc0V2ZW50IiwiZ2V0UGFyYW1ldGVyIiwiaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyIsImNoaWxkcmVuIiwiaXRlbXMiLCJhZGREZXBlbmRlbnQiLCJzZXRUaW1lb3V0Iiwib3BlbkJ5IiwiY29udHJvbElkIiwiZ2V0Q29udHJvbElkIiwiY29udHJvbCIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImZvY3VzIiwiTG9nIiwiZXJyb3IiLCJ0b2dnbGVNZXNzYWdlUG9wb3ZlciIsInRvZ2dsZSIsIkJ1dHRvbiIsInByZXNzIiwiYmluZCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlRGV0YWlsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBNZXNzYWdlSXRlbSBmcm9tIFwic2FwL20vTWVzc2FnZUl0ZW1cIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgTWVzc2FnZVBvcG92ZXIgZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBQcm9wZXJ0eUJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9Qcm9wZXJ0eUJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL21lc3NhZ2UvTWVzc2FnZU1vZGVsXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBzaG93IGJvdW5kIG1lc3NhZ2VzLlxuICpcbiAqIFRoZSBNZXNzYWdlIEJ1dHRvbiBCdWlsZGluZyBCbG9jayBnZXRzIHRoZSBib3VuZCBtZXNzYWdlcyBmcm9tIHRoZSBNZXNzYWdlTW9kZWwuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNZXNzYWdlQnV0dG9uIHZpc2liaWxpdHlDaGFuZ2U9XCIuaGFuZGxlci5vbk1lc3NhZ2VCdXR0b25WaXNpYmlsaXR5Q2hhbmdlXCIgLyZndDtcbiAqIDwvcHJlPlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk1lc3NhZ2VCdXR0b25cIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc3NhZ2VCdXR0b24gZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPEJ1dHRvbj4ge1xuXHQvKipcblx0ICogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBtZXNzYWdlIGJ1dHRvbidzIHZpc2liaWxpdHkgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGV2ZW50KClcblx0dmlzaWJpbGl0eUNoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdF9tZXNzYWdlTW9kZWwhOiBNZXNzYWdlTW9kZWw7XG5cblx0X21lc3NhZ2VQb3BvdmVyITogTWVzc2FnZVBvcG92ZXI7XG5cblx0X21tUHJvcGVydHlCaW5kaW5nITogUHJvcGVydHlCaW5kaW5nO1xuXG5cdF9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXA6IFJlY29yZDxzdHJpbmcsIE1lc3NhZ2VEZXRhaWw+ID0ge307XG5cblx0Y29uc3RydWN0b3IoaWRPclNldHRpbmdzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPE1lc3NhZ2VCdXR0b24+LCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxNZXNzYWdlQnV0dG9uPikge1xuXHRcdHN1cGVyKGlkT3JTZXR0aW5ncywgc2V0dGluZ3MpO1xuXHR9XG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0XHQvLyBnZXQgdGhlIG1lc3NhZ2UgbW9kZWwgYW5kIGF0dGFjaCB0byBpdCdzIGNoYW5nZSBldmVudC5cblx0XHR0aGlzLl9tZXNzYWdlTW9kZWwgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCk7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcgPSB0aGlzLl9tZXNzYWdlTW9kZWwuYmluZFByb3BlcnR5KFwiL1wiKTtcblx0XHR0aGlzLl9tbVByb3BlcnR5QmluZGluZy5hdHRhY2hDaGFuZ2UodGhpcy5wcm9jZXNzTWVzc2FnZXMsIHRoaXMpO1xuXHRcdGNvbnN0IGV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnByb2Nlc3NNZXNzYWdlcygpO1xuXHRcdFx0XHR0aGlzLnJlbW92ZUV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLmFkZEV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2Vzc2VzIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKlxuXHQgKiBGaWx0ZXJzIG91dCB0aGUgYm91bmQgYW5kIG5vbiB0ZWNobmljYWwgbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbFxuXHQgKiBBbmQgY2FsbHMgdGhlIE1lc3NhZ2VIYW5kbGVyLmJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGFsbG93IGNvbnN1bWVycyB0byBhZGFwdCB0aGUgbWVzc2FnZXMgdGhhdCB3aWxsIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGl0IGFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uJ3MgcHJvZXBydGllcyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqL1xuXHRhc3luYyBwcm9jZXNzTWVzc2FnZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IHRoaXMuX21lc3NhZ2VNb2RlbD8uZ2V0RGF0YSgpO1xuXG5cdFx0Ly8gZ2V0IGJvdW5kIG1lc3NhZ2VzLlxuXHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWxzID0gbWVzc2FnZXMucmVkdWNlKChyZWR1Y2VkTWVzc2FnZXM6IE1lc3NhZ2VEZXRhaWxbXSwgbWVzc2FnZSk6IE1lc3NhZ2VEZXRhaWxbXSA9PiB7XG5cdFx0XHRjb25zdCBpc0JvdW5kID0gbWVzc2FnZS5nZXRUYXJnZXRzKCkubGVuZ3RoID4gMDtcblx0XHRcdGNvbnN0IGlzTWVzc2FnZVRlY2huaWNhbCA9IG1lc3NhZ2UuZ2V0VGVjaG5pY2FsKCk7XG5cdFx0XHRpZiAoaXNCb3VuZCAmJiAhaXNNZXNzYWdlVGVjaG5pY2FsKSB7XG5cdFx0XHRcdHJlZHVjZWRNZXNzYWdlcy5wdXNoKHsgbWVzc2FnZSB9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZWR1Y2VkTWVzc2FnZXM7XG5cdFx0fSwgW10pO1xuXG5cdFx0aWYgKG1lc3NhZ2VEZXRhaWxzICYmIG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5iZWZvcmVTaG93TWVzc2FnZUJ1dHRvbihtZXNzYWdlRGV0YWlscyk7XG5cdFx0fVxuXHRcdHRoaXMuYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMobWVzc2FnZURldGFpbHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uIHByb3BlcnRpZXMgYW5kIGNyZWF0ZXMgYSBtZXNzYWdlIHBvcG92ZXIgdG8gc2hvdyB0aGUgbWVzc2FnZXMuXG5cdCAqXG5cdCAqIFNldHMgdGhlIG1lc3NhZ2VzIGJ1dHRvbnMgcHJvcGVydGllcyBvbiB0aGUgYmFzaXMgb2YgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBtZXNzYWdlcyBidXR0b24gaXMgZGV0ZXJtaW5lZCBvbiB0aGUgYmFzaXMgb2YgdGhlIHByaW9yaXR5IG9mIG1lc3NhZ2VzIHRvIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGNyZWF0ZXMgYSBtZXNzYWdlIHBvcG92ZXIgdG8gc2hvdyB0aGUgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSBtZXNzYWdlRGV0YWlscyBNZXNzYWdlIGRldGFpbHMgdXNlZCB0byByZW5kZXIgZWFjaCBtZXNzYWdlIGl0ZW0uXG5cdCAqL1xuXHRhZGp1c3RNZXNzYWdlQnV0dG9uUHJvcGVydGllcyhtZXNzYWdlRGV0YWlsczogTWVzc2FnZURldGFpbFtdKTogdm9pZCB7XG5cdFx0dGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwID0ge307XG5cdFx0aWYgKG1lc3NhZ2VEZXRhaWxzICYmIG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VQcmlvcml0eU1hcCA9IHtcblx0XHRcdFx0RXJyb3I6IDAsXG5cdFx0XHRcdFdhcm5pbmc6IDEsXG5cdFx0XHRcdFN1Y2Nlc3M6IDIsXG5cdFx0XHRcdEluZm9ybWF0aW9uOiAzLFxuXHRcdFx0XHROb25lOiA0XG5cdFx0XHR9O1xuXG5cdFx0XHRsZXQgYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5ID0gbWVzc2FnZVByaW9yaXR5TWFwLk5vbmU7IC8vIHdlIHN0YXJ0IGZyb20gdGhlIGxvd2VzdFxuXHRcdFx0bGV0IGVycm9yQ291bnQgPSAwO1xuXHRcdFx0Y29uc3QgbWVzc2FnZUl0ZW1zOiBNZXNzYWdlSXRlbVtdID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IG1lc3NhZ2VEZXRhaWwgb2YgbWVzc2FnZURldGFpbHMpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWwubWVzc2FnZTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVR5cGUgPSBtZXNzYWdlLmdldFR5cGUoKTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVByaW9yaXR5ID0gbWVzc2FnZVByaW9yaXR5TWFwW21lc3NhZ2VUeXBlXTtcblx0XHRcdFx0aWYgKG1lc3NhZ2VQcmlvcml0eSA8IGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSkge1xuXHRcdFx0XHRcdGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobWVzc2FnZVR5cGUgPT09IE1lc3NhZ2VUeXBlLkVycm9yKSB7XG5cdFx0XHRcdFx0ZXJyb3JDb3VudCsrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lc3NhZ2VJdGVtcy5wdXNoKHRoaXMuY3JlYXRlTWVzc2FnZUl0ZW0obWVzc2FnZURldGFpbCkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgcHJvcGVydGllcyBvbiB0aGUgbWVzc2FnZSBidXR0b25zXG5cblx0XHRcdC8vIHNldFRleHRcblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUZXh0KG1lc3NhZ2VEZXRhaWxzLmxlbmd0aC50b1N0cmluZygpKTtcblxuXHRcdFx0Ly8gc2V0VHlwZVxuXHRcdFx0Y29uc3QgcHJpb3JpdGl6ZWRCdXR0b25UeXBlID0gW1xuXHRcdFx0XHRCdXR0b25UeXBlLk5lZ2F0aXZlLFxuXHRcdFx0XHRCdXR0b25UeXBlLkNyaXRpY2FsLFxuXHRcdFx0XHRCdXR0b25UeXBlLlN1Y2Nlc3MsXG5cdFx0XHRcdEJ1dHRvblR5cGUuTmV1dHJhbCxcblx0XHRcdFx0QnV0dG9uVHlwZS5EZWZhdWx0XG5cdFx0XHRdO1xuXHRcdFx0dGhpcy5nZXRDb250ZW50KCk/LnNldFR5cGUocHJpb3JpdGl6ZWRCdXR0b25UeXBlW2F2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eV0pO1xuXG5cdFx0XHQvLyBzZXRUb29sdGlwXG5cdFx0XHRjb25zdCBwcmlvcml0aXplZFRvb2xUaXBLZXkgPSBbXG5cdFx0XHRcdFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9FUlJPUlwiLFxuXHRcdFx0XHRcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfV0FSTklOR19UT09MVElQXCIsXG5cdFx0XHRcdFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfU1VDQ0VTU1wiLFxuXHRcdFx0XHRcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX0lORk9cIixcblx0XHRcdFx0XCJcIlxuXHRcdFx0XTtcblx0XHRcdGNvbnN0IHRvb2x0aXBLZXkgPVxuXHRcdFx0XHRlcnJvckNvdW50ID4gMVxuXHRcdFx0XHRcdD8gXCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX01VTFRJUExFX0VSUk9SX1RPT0xUSVBcIlxuXHRcdFx0XHRcdDogcHJpb3JpdGl6ZWRUb29sVGlwS2V5W2F2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eV07XG5cdFx0XHRsZXQgdG9vbHRpcFRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KHRvb2x0aXBLZXkpO1xuXHRcdFx0aWYgKGVycm9yQ291bnQgPiAxKSB7XG5cdFx0XHRcdHRvb2x0aXBUZXh0ID0gYCR7ZXJyb3JDb3VudH0gICR7dG9vbHRpcFRleHR9YDtcblx0XHRcdH1cblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUb29sdGlwKHRvb2x0aXBUZXh0KTtcblxuXHRcdFx0Ly8gc2V0VmlzaWJsZVxuXHRcdFx0aWYgKCF0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRWaXNpYmxlKHRydWUpO1xuXHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInZpc2liaWxpdHlDaGFuZ2VcIiwgeyB2aXNpYmxlOiB0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBhbHNvIHNob3cgdGhlIG1lc3NhZ2UgcG9wb3ZlclxuXHRcdFx0dGhpcy5jcmVhdGVNZXNzYWdlUG9wb3ZlcihtZXNzYWdlSXRlbXMpO1xuXHRcdH1cblxuXHRcdGlmIChtZXNzYWdlRGV0YWlscy5sZW5ndGggPT09IDApIHtcblx0XHRcdGlmICh0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ2aXNpYmlsaXR5Q2hhbmdlXCIsIHsgdmlzaWJsZTogdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSB9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1lc3NhZ2UgSXRlbS5cblx0ICogQHBhcmFtIG1lc3NhZ2VEZXRhaWwgTWVzc2FnZSBkZXRhaWwgcmVsZXZhbnQgZm9yIGNyZWF0aW5nIHRoZSBtZXNzYWdlIGl0ZW0uXG5cdCAqIEByZXR1cm5zIE1lc3NhZ2VJdGVtIGNyZWF0ZWQgZnJvbSBNZXNzYWdlIERldGFpbFxuXHQgKi9cblx0Y3JlYXRlTWVzc2FnZUl0ZW0obWVzc2FnZURldGFpbDogTWVzc2FnZURldGFpbCk6IE1lc3NhZ2VJdGVtIHtcblx0XHRjb25zdCBtZXNzYWdlID0gbWVzc2FnZURldGFpbC5tZXNzYWdlO1xuXHRcdGNvbnN0IG1lc3NhZ2VJdGVtID0gKFxuXHRcdFx0PE1lc3NhZ2VJdGVtXG5cdFx0XHRcdHRpdGxlPXttZXNzYWdlLmdldE1lc3NhZ2UoKX1cblx0XHRcdFx0ZGVzY3JpcHRpb249e21lc3NhZ2UuZ2V0RGVzY3JpcHRpb24oKX1cblx0XHRcdFx0dHlwZT17bWVzc2FnZS5nZXRUeXBlKCl9XG5cdFx0XHRcdG1hcmt1cERlc2NyaXB0aW9uPXt0cnVlfVxuXHRcdFx0XHRsb25ndGV4dFVybD17bWVzc2FnZS5nZXREZXNjcmlwdGlvblVybCgpfVxuXHRcdFx0XHRzdWJ0aXRsZT17bWVzc2FnZS5nZXRBZGRpdGlvbmFsVGV4dCgpfVxuXHRcdFx0XHRncm91cE5hbWU9e21lc3NhZ2VEZXRhaWwuZ3JvdXBOYW1lIHx8IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX01FU1NBR0VfQlVUVE9OX1NBUEZFX01FU1NBR0VfR1JPVVBfR0VORVJBTFwiKX1cblx0XHRcdFx0YWN0aXZlVGl0bGU9e21lc3NhZ2UuZ2V0Q29udHJvbElkcygpLmxlbmd0aCA+IDAgfHwgdHlwZW9mIG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyID09PSBcImZ1bmN0aW9uXCJ9XG5cdFx0XHQvPlxuXHRcdCkgYXMgTWVzc2FnZUl0ZW07XG5cdFx0dGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwW21lc3NhZ2VJdGVtLmdldElkKCldID0gbWVzc2FnZURldGFpbDtcblx0XHRyZXR1cm4gbWVzc2FnZUl0ZW07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1lc3NhZ2UgUG9wb3Zlci5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtc1xuXHQgKi9cblx0Y3JlYXRlTWVzc2FnZVBvcG92ZXIobWVzc2FnZUl0ZW1zOiBNZXNzYWdlSXRlbVtdKTogdm9pZCB7XG5cdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXI/LmRlc3Ryb3koKTtcblx0XHR0aGlzLl9tZXNzYWdlUG9wb3ZlciA9IChcblx0XHRcdDxNZXNzYWdlUG9wb3ZlclxuXHRcdFx0XHRncm91cEl0ZW1zPXt0cnVlfVxuXHRcdFx0XHRhY3RpdmVUaXRsZVByZXNzPXsocHJlc3NFdmVudDogTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZUl0ZW0gPSBwcmVzc0V2ZW50LmdldFBhcmFtZXRlcihcIml0ZW1cIik7XG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVBY3RpdmVUaXRsZVByZXNzKG1lc3NhZ2VJdGVtKTtcblx0XHRcdFx0fX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRpdGVtczogbWVzc2FnZUl0ZW1zXG5cdFx0XHRcdH19XG5cdFx0XHQ8L01lc3NhZ2VQb3BvdmVyPlxuXHRcdCkgYXMgTWVzc2FnZVBvcG92ZXI7XG5cdFx0dGhpcy5nZXRDb250ZW50KCk/LmFkZERlcGVuZGVudCh0aGlzLl9tZXNzYWdlUG9wb3Zlcik7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9tZXNzYWdlUG9wb3Zlci5vcGVuQnkodGhpcy5nZXRDb250ZW50KCkgYXMgQnV0dG9uKTtcblx0XHR9LCAwKTtcblx0fVxuXHQvKipcblx0ICogSGFuZGxlcyBhY3RpdmUgdGl0bGUgcHJlc3MuXG5cdCAqXG5cdCAqIElmIGFuIGFjdGl2ZVRpdGxlSGFuZGxlciBpcyBwcm92aWRlZCBieSB0aGUgY29uc3VtZXIgdmlhIHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiB0aGVuIGl0IGlzIGNhbGxlZC5cblx0ICogT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gZm9jdXMgb24gdGhlIGNvbnRyb2wgaWYgYSBjb250cm9sIElkIGluIHRoZSBtZXNzYWdlIGlzIGF2YWlsYWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtXG5cdCAqL1xuXHRoYW5kbGVBY3RpdmVUaXRsZVByZXNzKG1lc3NhZ2VJdGVtPzogTWVzc2FnZUl0ZW0pOiB2b2lkIHtcblx0XHRpZiAobWVzc2FnZUl0ZW0pIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWwgPSB0aGlzLl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXBbbWVzc2FnZUl0ZW0/LmdldElkKCldO1xuXHRcdFx0aWYgKG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyKSB7XG5cdFx0XHRcdG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyKG1lc3NhZ2VEZXRhaWwubWVzc2FnZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBjb250cm9sSWQgPSBtZXNzYWdlRGV0YWlsLm1lc3NhZ2UuZ2V0Q29udHJvbElkKCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2wgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRyb2xJZCk7XG5cdFx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdFx0Y29udHJvbC5mb2N1cygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihcIm1lc3NhZ2UgaXRlbSBub3QgZm91bmQhXCIpO1xuXHRcdH1cblx0fVxuXG5cdGRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcuZGVzdHJveSgpO1xuXHR9XG5cdC8qKlxuXHQgKiBUb2dnbGUgaGFuZGxlciBmb3IgdGhlIG1lc3NhZ2UgcG9wb3Zlci5cblx0ICovXG5cdHRvZ2dsZU1lc3NhZ2VQb3BvdmVyKCk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VQb3BvdmVyLnRvZ2dsZSh0aGlzLmNvbnRlbnQgYXMgQnV0dG9uKTtcblx0fVxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgY29udGVudCBmb3IgdGhlIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb250ZW50IGNvbnRyb2wuXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IEJ1dHRvbiB7XG5cdFx0cmV0dXJuIDxCdXR0b24gdmlzaWJsZT1cImZhbHNlXCIgcHJlc3M9e3RoaXMudG9nZ2xlTWVzc2FnZVBvcG92ZXIuYmluZCh0aGlzKX0gLz47XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBWEEsSUFhcUJBLGFBQWEsSUFBQUMsSUFBQSxHQURqQ0MsY0FBYyxDQUFDLDZCQUE2QixDQUFDLEVBQUFDLEtBQUEsR0FNNUNDLEtBQUssQ0FBQyxDQUFDLEVBQUFILElBQUEsQ0FBQUksTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBV1IsU0FBQVAsY0FBWVEsWUFBbUQsRUFBRUMsUUFBc0MsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDeEdBLEtBQUEsR0FBQUgsY0FBQSxDQUFBSSxJQUFBLE9BQU1ILFlBQVksRUFBRUMsUUFBUSxDQUFDO01BaEI5QjtBQUNEO0FBQ0E7QUFDQTtNQUhDRywwQkFBQSxDQUFBRixLQUFBLHNCQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUEsS0FBQSxDQWFBSSw0QkFBNEIsR0FBa0MsQ0FBQyxDQUFDO01BQUEsT0FBQUosS0FBQTtJQUloRTtJQUNBO0FBQ0Q7QUFDQTtJQUZDSyxRQUFBLEdBQUFmLGFBQUE7SUFBQWdCLGNBQUEsQ0FBQWhCLGFBQUEsRUFBQU8sY0FBQTtJQUFBLElBQUFVLE1BQUEsR0FBQWpCLGFBQUEsQ0FBQWtCLFNBQUE7SUFBQUQsTUFBQSxDQUdBRSxtQkFBbUIsR0FBbkIsU0FBQUEsbUJBQW1CQSxDQUFBLEVBQVM7TUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQ0MsT0FBTyxFQUFFO1FBQ2xCLElBQUksQ0FBQ0EsT0FBTyxHQUFHLElB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