@simpleangularcontrols/sac-common 13.0.0-rc.10 → 13.0.0-rc.12

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 (176) hide show
  1. package/common/basedatetimecontrol.d.ts +99 -13
  2. package/common/basedatetimecontrol.d.ts.map +1 -1
  3. package/common/basemodelcontrol.d.ts +33 -25
  4. package/common/basemodelcontrol.d.ts.map +1 -1
  5. package/common/baseuploadcontrol.d.ts +73 -52
  6. package/common/baseuploadcontrol.d.ts.map +1 -1
  7. package/controls/checkbox/radiobutton.d.ts +63 -28
  8. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  9. package/controls/contextmenu/contextmenu.d.ts +27 -20
  10. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  11. package/controls/contextmenu/contextmenu.interface.d.ts +4 -0
  12. package/controls/contextmenu/contextmenu.interface.d.ts.map +1 -0
  13. package/controls/contextmenu/contextmenu.interface.ngfactory.d.ts +2 -0
  14. package/controls/contextmenu/contextmenu.interface.ngfactory.d.ts.map +1 -0
  15. package/controls/contextmenu/contextmenu.interface.ngsummary.d.ts +2 -0
  16. package/controls/contextmenu/contextmenu.interface.ngsummary.d.ts.map +1 -0
  17. package/controls/contextmenu/contextmenuitem.d.ts +6 -1
  18. package/controls/contextmenu/contextmenuitem.d.ts.map +1 -1
  19. package/controls/contextmenu/contextmenuitembutton.d.ts +22 -21
  20. package/controls/contextmenu/contextmenuitembutton.d.ts.map +1 -1
  21. package/controls/datetime/date.d.ts +28 -27
  22. package/controls/datetime/date.d.ts.map +1 -1
  23. package/controls/datetime/datetime.d.ts +27 -27
  24. package/controls/datetime/datetime.d.ts.map +1 -1
  25. package/controls/datetime/time.d.ts +26 -26
  26. package/controls/datetime/time.d.ts.map +1 -1
  27. package/controls/dialog/dialog.d.ts +32 -44
  28. package/controls/dialog/dialog.d.ts.map +1 -1
  29. package/controls/layout/formlayout.d.ts +5 -1
  30. package/controls/layout/formlayout.d.ts.map +1 -1
  31. package/controls/list/buildvaluestring.d.ts +7 -0
  32. package/controls/list/buildvaluestring.d.ts.map +1 -0
  33. package/controls/list/buildvaluestring.ngfactory.d.ts +2 -0
  34. package/controls/list/buildvaluestring.ngfactory.d.ts.map +1 -0
  35. package/controls/list/buildvaluestring.ngsummary.d.ts +2 -0
  36. package/controls/list/buildvaluestring.ngsummary.d.ts.map +1 -0
  37. package/controls/list/dropdown.d.ts +9 -53
  38. package/controls/list/dropdown.d.ts.map +1 -1
  39. package/controls/list/dropdown.ngfactory.d.ts +0 -1
  40. package/controls/list/dropdown.ngfactory.d.ts.map +1 -1
  41. package/controls/list/dropdown.ngsummary.d.ts +0 -1
  42. package/controls/list/dropdown.ngsummary.d.ts.map +1 -1
  43. package/controls/list/dropdownoptions.d.ts +42 -0
  44. package/controls/list/dropdownoptions.d.ts.map +1 -0
  45. package/controls/list/dropdownoptions.ngfactory.d.ts +4 -0
  46. package/controls/list/dropdownoptions.ngfactory.d.ts.map +1 -0
  47. package/controls/list/dropdownoptions.ngsummary.d.ts +2 -0
  48. package/controls/list/dropdownoptions.ngsummary.d.ts.map +1 -0
  49. package/controls/static/formcontainer.d.ts +12 -4
  50. package/controls/static/formcontainer.d.ts.map +1 -1
  51. package/controls/tooltip/tooltip.d.ts +33 -51
  52. package/controls/tooltip/tooltip.d.ts.map +1 -1
  53. package/controls/treeview/treeview.d.ts +109 -109
  54. package/controls/treeview/treeview.d.ts.map +1 -1
  55. package/controls/treeview/treeview.ngfactory.d.ts +1 -1
  56. package/controls/treeview/treeview.ngsummary.d.ts +1 -1
  57. package/esm2020/common/basedatetimecontrol.mjs +65 -27
  58. package/esm2020/common/basemodelcontrol.mjs +73 -68
  59. package/esm2020/common/baseuploadcontrol.mjs +66 -57
  60. package/esm2020/controls/checkbox/radiobutton.mjs +43 -26
  61. package/esm2020/controls/contextmenu/contextmenu.interface.mjs +3 -0
  62. package/esm2020/controls/contextmenu/contextmenu.interface.ngfactory.mjs +3 -0
  63. package/esm2020/controls/contextmenu/contextmenu.interface.ngsummary.mjs +3 -0
  64. package/esm2020/controls/contextmenu/contextmenu.mjs +14 -14
  65. package/esm2020/controls/contextmenu/contextmenuitem.mjs +7 -4
  66. package/esm2020/controls/contextmenu/contextmenuitembutton.mjs +23 -15
  67. package/esm2020/controls/datetime/date.mjs +29 -30
  68. package/esm2020/controls/datetime/datetime.mjs +28 -30
  69. package/esm2020/controls/datetime/time.mjs +28 -30
  70. package/esm2020/controls/dialog/dialog.mjs +28 -41
  71. package/esm2020/controls/layout/formlayout.mjs +7 -8
  72. package/esm2020/controls/list/buildvaluestring.mjs +10 -0
  73. package/esm2020/controls/list/buildvaluestring.ngfactory.mjs +3 -0
  74. package/esm2020/controls/list/buildvaluestring.ngsummary.mjs +3 -0
  75. package/esm2020/controls/list/dropdown.mjs +22 -67
  76. package/esm2020/controls/list/dropdown.ngfactory.mjs +3 -3
  77. package/esm2020/controls/list/dropdown.ngsummary.mjs +3 -3
  78. package/esm2020/controls/list/dropdownoptions.mjs +22 -0
  79. package/esm2020/controls/list/dropdownoptions.ngfactory.mjs +3 -0
  80. package/esm2020/controls/list/dropdownoptions.ngsummary.mjs +3 -0
  81. package/esm2020/controls/static/formcontainer.mjs +12 -8
  82. package/esm2020/controls/tooltip/tooltip.mjs +43 -71
  83. package/esm2020/controls/treeview/treeview.mjs +102 -96
  84. package/esm2020/controls/treeview/treeview.ngfactory.mjs +3 -3
  85. package/esm2020/controls/treeview/treeview.ngsummary.mjs +3 -3
  86. package/esm2020/interfaces/ISacConfigurationService.mjs +3 -3
  87. package/esm2020/interfaces/ISacIconService.mjs +3 -3
  88. package/esm2020/interfaces/ISacUploadEventCompleteState.mjs +3 -0
  89. package/esm2020/interfaces/ISacUploadEventCompleteState.ngfactory.mjs +3 -0
  90. package/esm2020/interfaces/ISacUploadEventCompleteState.ngsummary.mjs +3 -0
  91. package/esm2020/interfaces/treeviewaction.interface.mjs +3 -0
  92. package/esm2020/interfaces/treeviewaction.interface.ngfactory.mjs +3 -0
  93. package/esm2020/interfaces/treeviewaction.interface.ngsummary.mjs +3 -0
  94. package/esm2020/public_api.mjs +6 -6
  95. package/esm2020/services/sac-configuration.service.mjs +8 -10
  96. package/esm2020/services/sac-icon.service.mjs +16 -8
  97. package/esm2020/utilities/enums.mjs +5 -3
  98. package/esm2020/utilities/popuphelper.mjs +80 -0
  99. package/esm2020/utilities/popuphelper.ngfactory.mjs +3 -0
  100. package/esm2020/utilities/popuphelper.ngsummary.mjs +3 -0
  101. package/esm2020/validation/equals.validator.mjs +3 -0
  102. package/esm2020/validation/equals.validator.ngfactory.mjs +3 -0
  103. package/esm2020/validation/equals.validator.ngsummary.mjs +3 -0
  104. package/esm2020/validation/notequals.validator.mjs +3 -0
  105. package/esm2020/validation/notequals.validator.ngfactory.mjs +3 -0
  106. package/esm2020/validation/notequals.validator.ngsummary.mjs +3 -0
  107. package/esm2020/validation/validation.mjs +40 -26
  108. package/fesm2015/simpleangularcontrols-sac-common.mjs +1358 -1253
  109. package/fesm2015/simpleangularcontrols-sac-common.mjs.map +1 -1
  110. package/fesm2020/simpleangularcontrols-sac-common.mjs +1358 -1253
  111. package/fesm2020/simpleangularcontrols-sac-common.mjs.map +1 -1
  112. package/interfaces/ISacConfigurationService.d.ts +11 -7
  113. package/interfaces/ISacConfigurationService.d.ts.map +1 -1
  114. package/interfaces/ISacIconService.d.ts +18 -2
  115. package/interfaces/ISacIconService.d.ts.map +1 -1
  116. package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
  117. package/interfaces/ISacUploadEventCompleteState.d.ts.map +1 -0
  118. package/interfaces/ISacUploadEventCompleteState.ngfactory.d.ts +2 -0
  119. package/interfaces/ISacUploadEventCompleteState.ngfactory.d.ts.map +1 -0
  120. package/interfaces/ISacUploadEventCompleteState.ngsummary.d.ts +2 -0
  121. package/interfaces/ISacUploadEventCompleteState.ngsummary.d.ts.map +1 -0
  122. package/interfaces/treeviewaction.interface.d.ts +5 -0
  123. package/interfaces/treeviewaction.interface.d.ts.map +1 -0
  124. package/interfaces/treeviewaction.interface.ngfactory.d.ts +2 -0
  125. package/interfaces/treeviewaction.interface.ngfactory.d.ts.map +1 -0
  126. package/interfaces/treeviewaction.interface.ngsummary.d.ts +2 -0
  127. package/interfaces/treeviewaction.interface.ngsummary.d.ts.map +1 -0
  128. package/package.json +1 -1
  129. package/public_api.d.ts +6 -5
  130. package/public_api.d.ts.map +1 -1
  131. package/services/sac-configuration.service.d.ts +8 -0
  132. package/services/sac-configuration.service.d.ts.map +1 -1
  133. package/services/sac-icon.service.d.ts +33 -1
  134. package/services/sac-icon.service.d.ts.map +1 -1
  135. package/simpleangularcontrols-sac-common-13.0.0-rc.12.tgz +0 -0
  136. package/utilities/enums.d.ts +3 -1
  137. package/utilities/enums.d.ts.map +1 -1
  138. package/utilities/popuphelper.d.ts +84 -0
  139. package/utilities/popuphelper.d.ts.map +1 -0
  140. package/utilities/popuphelper.ngfactory.d.ts +2 -0
  141. package/utilities/popuphelper.ngfactory.d.ts.map +1 -0
  142. package/utilities/popuphelper.ngsummary.d.ts +2 -0
  143. package/utilities/popuphelper.ngsummary.d.ts.map +1 -0
  144. package/validation/equals.validator.d.ts +3 -0
  145. package/validation/equals.validator.d.ts.map +1 -0
  146. package/validation/equals.validator.ngfactory.d.ts +2 -0
  147. package/validation/equals.validator.ngfactory.d.ts.map +1 -0
  148. package/validation/equals.validator.ngsummary.d.ts +2 -0
  149. package/validation/equals.validator.ngsummary.d.ts.map +1 -0
  150. package/validation/notequals.validator.d.ts +3 -0
  151. package/validation/notequals.validator.d.ts.map +1 -0
  152. package/validation/notequals.validator.ngfactory.d.ts +2 -0
  153. package/validation/notequals.validator.ngfactory.d.ts.map +1 -0
  154. package/validation/notequals.validator.ngsummary.d.ts +2 -0
  155. package/validation/notequals.validator.ngsummary.d.ts.map +1 -0
  156. package/validation/validation.d.ts +24 -6
  157. package/validation/validation.d.ts.map +1 -1
  158. package/controls/treeview/ngtreeitemaction.d.ts +0 -44
  159. package/controls/treeview/ngtreeitemaction.d.ts.map +0 -1
  160. package/controls/treeview/ngtreeitemaction.ngfactory.d.ts +0 -4
  161. package/controls/treeview/ngtreeitemaction.ngfactory.d.ts.map +0 -1
  162. package/controls/treeview/ngtreeitemaction.ngsummary.d.ts +0 -2
  163. package/controls/treeview/ngtreeitemaction.ngsummary.d.ts.map +0 -1
  164. package/controls/treeview/treeviewchild.d.ts +0 -16
  165. package/controls/treeview/treeviewchild.d.ts.map +0 -1
  166. package/controls/treeview/treeviewchild.ngfactory.d.ts +0 -4
  167. package/controls/treeview/treeviewchild.ngfactory.d.ts.map +0 -1
  168. package/controls/treeview/treeviewchild.ngsummary.d.ts +0 -2
  169. package/controls/treeview/treeviewchild.ngsummary.d.ts.map +0 -1
  170. package/esm2020/controls/treeview/ngtreeitemaction.mjs +0 -16
  171. package/esm2020/controls/treeview/ngtreeitemaction.ngfactory.mjs +0 -3
  172. package/esm2020/controls/treeview/ngtreeitemaction.ngsummary.mjs +0 -3
  173. package/esm2020/controls/treeview/treeviewchild.mjs +0 -8
  174. package/esm2020/controls/treeview/treeviewchild.ngfactory.mjs +0 -3
  175. package/esm2020/controls/treeview/treeviewchild.ngsummary.mjs +0 -3
  176. package/simpleangularcontrols-sac-common-13.0.0-rc.10.tgz +0 -0
@@ -1,5 +1,5 @@
1
- function cov_1pspdc72jq(){var path="C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\controls\\tooltip\\tooltip.mjs";var hash="7e14c0ca678a482fa5d3b67239db3c22f7d8efdd";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\controls\\tooltip\\tooltip.mjs",statementMap:{"0":{start:{line:24,column:8},end:{line:24,column:27}},"1":{start:{line:25,column:8},end:{line:25,column:23}},"2":{start:{line:29,column:8},end:{line:29,column:39}},"3":{start:{line:33,column:8},end:{line:42,column:10}},"4":{start:{line:35,column:12},end:{line:37,column:13}},"5":{start:{line:36,column:16},end:{line:36,column:23}},"6":{start:{line:38,column:12},end:{line:41,column:15}},"7":{start:{line:39,column:16},end:{line:39,column:39}},"8":{start:{line:40,column:16},end:{line:40,column:38}},"9":{start:{line:48,column:8},end:{line:48,column:37}},"10":{start:{line:52,column:8},end:{line:52,column:45}},"11":{start:{line:56,column:8},end:{line:56,column:25}},"12":{start:{line:60,column:8},end:{line:60,column:47}},"13":{start:{line:64,column:8},end:{line:64,column:24}},"14":{start:{line:72,column:8},end:{line:72,column:51}},"15":{start:{line:78,column:8},end:{line:80,column:9}},"16":{start:{line:79,column:12},end:{line:79,column:61}},"17":{start:{line:81,column:8},end:{line:81,column:40}},"18":{start:{line:82,column:8},end:{line:82,column:31}},"19":{start:{line:83,column:8},end:{line:83,column:35}},"20":{start:{line:89,column:8},end:{line:89,column:32}},"21":{start:{line:92,column:8},end:{line:92,column:37}},"22":{start:{line:100,column:31},end:{line:100,column:55}},"23":{start:{line:102,column:8},end:{line:105,column:9}},"24":{start:{line:104,column:12},end:{line:104,column:41}},"25":{start:{line:107,column:8},end:{line:110,column:9}},"26":{start:{line:109,column:12},end:{line:109,column:39}},"27":{start:{line:112,column:8},end:{line:115,column:9}},"28":{start:{line:114,column:12},end:{line:114,column:40}},"29":{start:{line:117,column:8},end:{line:120,column:9}},"30":{start:{line:119,column:12},end:{line:119,column:42}},"31":{start:{line:122,column:8},end:{line:143,column:9}},"32":{start:{line:124,column:12},end:{line:126,column:13}},"33":{start:{line:125,column:16},end:{line:125,column:45}},"34":{start:{line:128,column:12},end:{line:130,column:13}},"35":{start:{line:129,column:16},end:{line:129,column:43}},"36":{start:{line:132,column:12},end:{line:134,column:13}},"37":{start:{line:133,column:16},end:{line:133,column:44}},"38":{start:{line:136,column:12},end:{line:138,column:13}},"39":{start:{line:137,column:16},end:{line:137,column:46}},"40":{start:{line:139,column:12},end:{line:139,column:41}},"41":{start:{line:142,column:12},end:{line:142,column:38}},"42":{start:{line:149,column:8},end:{line:149,column:39}},"43":{start:{line:150,column:8},end:{line:150,column:45}},"44":{start:{line:156,column:8},end:{line:156,column:38}},"45":{start:{line:162,column:8},end:{line:162,column:38}},"46":{start:{line:163,column:8},end:{line:163,column:35}},"47":{start:{line:164,column:8},end:{line:168,column:11}},"48":{start:{line:165,column:12},end:{line:165,column:35}},"49":{start:{line:166,column:12},end:{line:166,column:34}},"50":{start:{line:167,column:12},end:{line:167,column:48}},"51":{start:{line:174,column:8},end:{line:179,column:9}},"52":{start:{line:175,column:12},end:{line:175,column:91}},"53":{start:{line:178,column:12},end:{line:178,column:21}},"54":{start:{line:185,column:8},end:{line:190,column:9}},"55":{start:{line:186,column:12},end:{line:186,column:85}},"56":{start:{line:189,column:12},end:{line:189,column:21}},"57":{start:{line:197,column:8},end:{line:199,column:9}},"58":{start:{line:198,column:12},end:{line:198,column:19}},"59":{start:{line:200,column:8},end:{line:200,column:35}},"60":{start:{line:207,column:8},end:{line:209,column:9}},"61":{start:{line:208,column:12},end:{line:208,column:19}},"62":{start:{line:210,column:8},end:{line:210,column:31}},"63":{start:{line:211,column:8},end:{line:211,column:30}},"64":{start:{line:218,column:8},end:{line:218,column:73}},"65":{start:{line:219,column:8},end:{line:219,column:73}},"66":{start:{line:220,column:8},end:{line:222,column:9}},"67":{start:{line:221,column:12},end:{line:221,column:75}},"68":{start:{line:229,column:8},end:{line:229,column:70}},"69":{start:{line:230,column:8},end:{line:230,column:70}},"70":{start:{line:231,column:8},end:{line:233,column:9}},"71":{start:{line:232,column:12},end:{line:232,column:75}},"72":{start:{line:241,column:26},end:{line:241,column:50}},"73":{start:{line:242,column:8},end:{line:244,column:9}},"74":{start:{line:243,column:12},end:{line:243,column:40}},"75":{start:{line:245,column:8},end:{line:247,column:9}},"76":{start:{line:246,column:12},end:{line:246,column:39}},"77":{start:{line:248,column:8},end:{line:250,column:9}},"78":{start:{line:249,column:12},end:{line:249,column:41}},"79":{start:{line:251,column:8},end:{line:253,column:9}},"80":{start:{line:252,column:12},end:{line:252,column:42}},"81":{start:{line:255,column:8},end:{line:255,column:37}},"82":{start:{line:263,column:26},end:{line:263,column:50}},"83":{start:{line:264,column:8},end:{line:266,column:9}},"84":{start:{line:265,column:12},end:{line:265,column:24}},"85":{start:{line:267,column:8},end:{line:269,column:9}},"86":{start:{line:268,column:12},end:{line:268,column:24}},"87":{start:{line:270,column:8},end:{line:272,column:9}},"88":{start:{line:271,column:12},end:{line:271,column:24}},"89":{start:{line:273,column:8},end:{line:276,column:9}},"90":{start:{line:275,column:12},end:{line:275,column:24}},"91":{start:{line:277,column:8},end:{line:277,column:21}},"92":{start:{line:283,column:26},end:{line:283,column:50}},"93":{start:{line:284,column:8},end:{line:284,column:46}},"94":{start:{line:291,column:8},end:{line:293,column:9}},"95":{start:{line:292,column:12},end:{line:292,column:41}},"96":{start:{line:294,column:31},end:{line:294,column:51}},"97":{start:{line:295,column:29},end:{line:295,column:97}},"98":{start:{line:296,column:28},end:{line:296,column:105}},"99":{start:{line:297,column:26},end:{line:297,column:100}},"100":{start:{line:298,column:27},end:{line:298,column:111}},"101":{start:{line:299,column:25},end:{line:299,column:66}},"102":{start:{line:300,column:28},end:{line:300,column:89}},"103":{start:{line:301,column:30},end:{line:301,column:75}},"104":{start:{line:302,column:31},end:{line:302,column:93}},"105":{start:{line:303,column:29},end:{line:303,column:74}},"106":{start:{line:304,column:32},end:{line:304,column:97}},"107":{start:{line:305,column:8},end:{line:308,column:9}},"108":{start:{line:307,column:12},end:{line:307,column:71}},"109":{start:{line:309,column:8},end:{line:312,column:9}},"110":{start:{line:311,column:12},end:{line:311,column:72}},"111":{start:{line:313,column:8},end:{line:316,column:9}},"112":{start:{line:315,column:12},end:{line:315,column:70}},"113":{start:{line:317,column:8},end:{line:320,column:9}},"114":{start:{line:319,column:12},end:{line:319,column:73}},"115":{start:{line:321,column:8},end:{line:321,column:32}},"116":{start:{line:327,column:8},end:{line:354,column:9}},"117":{start:{line:328,column:25},end:{line:328,column:51}},"118":{start:{line:329,column:12},end:{line:350,column:13}},"119":{start:{line:330,column:34},end:{line:330,column:56}},"120":{start:{line:331,column:40},end:{line:331,column:73}},"121":{start:{line:332,column:16},end:{line:345,column:17}},"122":{start:{line:334,column:24},end:{line:334,column:117}},"123":{start:{line:335,column:24},end:{line:335,column:111}},"124":{start:{line:337,column:24},end:{line:337,column:110}},"125":{start:{line:338,column:24},end:{line:338,column:102}},"126":{start:{line:340,column:24},end:{line:340,column:117}},"127":{start:{line:341,column:24},end:{line:341,column:111}},"128":{start:{line:343,column:24},end:{line:343,column:118}},"129":{start:{line:344,column:24},end:{line:344,column:110}},"130":{start:{line:346,column:16},end:{line:346,column:60}},"131":{start:{line:349,column:16},end:{line:349,column:60}},"132":{start:{line:353,column:12},end:{line:353,column:53}},"133":{start:{line:360,column:8},end:{line:389,column:9}},"134":{start:{line:361,column:25},end:{line:361,column:51}},"135":{start:{line:362,column:12},end:{line:385,column:13}},"136":{start:{line:363,column:34},end:{line:363,column:56}},"137":{start:{line:364,column:40},end:{line:364,column:73}},"138":{start:{line:366,column:43},end:{line:366,column:163}},"139":{start:{line:367,column:16},end:{line:380,column:17}},"140":{start:{line:369,column:24},end:{line:369,column:116}},"141":{start:{line:370,column:24},end:{line:370,column:109}},"142":{start:{line:372,column:24},end:{line:372,column:120}},"143":{start:{line:373,column:24},end:{line:373,column:113}},"144":{start:{line:375,column:24},end:{line:375,column:108}},"145":{start:{line:376,column:24},end:{line:376,column:101}},"146":{start:{line:378,column:24},end:{line:378,column:116}},"147":{start:{line:379,column:24},end:{line:379,column:111}},"148":{start:{line:381,column:16},end:{line:381,column:128}},"149":{start:{line:384,column:16},end:{line:384,column:60}},"150":{start:{line:388,column:12},end:{line:388,column:52}},"151":{start:{line:397,column:8},end:{line:399,column:9}},"152":{start:{line:398,column:12},end:{line:398,column:37}},"153":{start:{line:400,column:28},end:{line:400,column:73}},"154":{start:{line:401,column:21},end:{line:401,column:38}},"155":{start:{line:402,column:8},end:{line:402,column:36}},"156":{start:{line:411,column:8},end:{line:413,column:9}},"157":{start:{line:412,column:12},end:{line:412,column:21}},"158":{start:{line:414,column:28},end:{line:414,column:74}},"159":{start:{line:415,column:8},end:{line:415,column:47}},"160":{start:{line:418,column:0},end:{line:418,column:234}},"161":{start:{line:419,column:0},end:{line:419,column:420}},"162":{start:{line:420,column:0},end:{line:434,column:20}},"163":{start:{line:422,column:42},end:{line:422,column:107}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:23,column:4},end:{line:23,column:5}},loc:{start:{line:23,column:28},end:{line:65,column:5}},line:23},"1":{name:"(anonymous_1)",decl:{start:{line:33,column:31},end:{line:33,column:32}},loc:{start:{line:33,column:37},end:{line:42,column:9}},line:33},"2":{name:"(anonymous_2)",decl:{start:{line:38,column:23},end:{line:38,column:24}},loc:{start:{line:38,column:29},end:{line:41,column:13}},line:38},"3":{name:"(anonymous_3)",decl:{start:{line:71,column:4},end:{line:71,column:5}},loc:{start:{line:71,column:26},end:{line:73,column:5}},line:71},"4":{name:"(anonymous_4)",decl:{start:{line:77,column:4},end:{line:77,column:5}},loc:{start:{line:77,column:25},end:{line:84,column:5}},line:77},"5":{name:"(anonymous_5)",decl:{start:{line:88,column:4},end:{line:88,column:5}},loc:{start:{line:88,column:21},end:{line:90,column:5}},line:88},"6":{name:"(anonymous_6)",decl:{start:{line:91,column:4},end:{line:91,column:5}},loc:{start:{line:91,column:18},end:{line:93,column:5}},line:91},"7":{name:"(anonymous_7)",decl:{start:{line:99,column:4},end:{line:99,column:5}},loc:{start:{line:99,column:25},end:{line:144,column:5}},line:99},"8":{name:"(anonymous_8)",decl:{start:{line:148,column:4},end:{line:148,column:5}},loc:{start:{line:148,column:18},end:{line:151,column:5}},line:148},"9":{name:"(anonymous_9)",decl:{start:{line:155,column:4},end:{line:155,column:5}},loc:{start:{line:155,column:23},end:{line:157,column:5}},line:155},"10":{name:"(anonymous_10)",decl:{start:{line:161,column:4},end:{line:161,column:5}},loc:{start:{line:161,column:18},end:{line:169,column:5}},line:161},"11":{name:"(anonymous_11)",decl:{start:{line:164,column:19},end:{line:164,column:20}},loc:{start:{line:164,column:25},end:{line:168,column:9}},line:164},"12":{name:"(anonymous_12)",decl:{start:{line:173,column:4},end:{line:173,column:5}},loc:{start:{line:173,column:23},end:{line:180,column:5}},line:173},"13":{name:"(anonymous_13)",decl:{start:{line:184,column:4},end:{line:184,column:5}},loc:{start:{line:184,column:22},end:{line:191,column:5}},line:184},"14":{name:"(anonymous_14)",decl:{start:{line:195,column:4},end:{line:195,column:5}},loc:{start:{line:195,column:25},end:{line:201,column:5}},line:195},"15":{name:"(anonymous_15)",decl:{start:{line:205,column:4},end:{line:205,column:5}},loc:{start:{line:205,column:16},end:{line:212,column:5}},line:205},"16":{name:"(anonymous_16)",decl:{start:{line:216,column:4},end:{line:216,column:5}},loc:{start:{line:216,column:18},end:{line:223,column:5}},line:216},"17":{name:"(anonymous_17)",decl:{start:{line:227,column:4},end:{line:227,column:5}},loc:{start:{line:227,column:15},end:{line:234,column:5}},line:227},"18":{name:"(anonymous_18)",decl:{start:{line:240,column:4},end:{line:240,column:5}},loc:{start:{line:240,column:18},end:{line:256,column:5}},line:240},"19":{name:"(anonymous_19)",decl:{start:{line:262,column:4},end:{line:262,column:5}},loc:{start:{line:262,column:26},end:{line:278,column:5}},line:262},"20":{name:"(anonymous_20)",decl:{start:{line:282,column:4},end:{line:282,column:5}},loc:{start:{line:282,column:21},end:{line:285,column:5}},line:282},"21":{name:"(anonymous_21)",decl:{start:{line:289,column:4},end:{line:289,column:5}},loc:{start:{line:289,column:24},end:{line:322,column:5}},line:289},"22":{name:"(anonymous_22)",decl:{start:{line:326,column:4},end:{line:326,column:5}},loc:{start:{line:326,column:22},end:{line:355,column:5}},line:326},"23":{name:"(anonymous_23)",decl:{start:{line:359,column:4},end:{line:359,column:5}},loc:{start:{line:359,column:21},end:{line:390,column:5}},line:359},"24":{name:"(anonymous_24)",decl:{start:{line:396,column:4},end:{line:396,column:5}},loc:{start:{line:396,column:32},end:{line:403,column:5}},line:396},"25":{name:"(anonymous_25)",decl:{start:{line:409,column:4},end:{line:409,column:5}},loc:{start:{line:409,column:32},end:{line:416,column:5}},line:409},"26":{name:"(anonymous_26)",decl:{start:{line:422,column:28},end:{line:422,column:29}},loc:{start:{line:422,column:40},end:{line:422,column:109}},line:422}},branchMap:{"0":{loc:{start:{line:35,column:12},end:{line:37,column:13}},type:"if",locations:[{start:{line:35,column:12},end:{line:37,column:13}},{start:{line:35,column:12},end:{line:37,column:13}}],line:35},"1":{loc:{start:{line:78,column:8},end:{line:80,column:9}},type:"if",locations:[{start:{line:78,column:8},end:{line:80,column:9}},{start:{line:78,column:8},end:{line:80,column:9}}],line:78},"2":{loc:{start:{line:102,column:8},end:{line:105,column:9}},type:"if",locations:[{start:{line:102,column:8},end:{line:105,column:9}},{start:{line:102,column:8},end:{line:105,column:9}}],line:102},"3":{loc:{start:{line:102,column:12},end:{line:103,column:50}},type:"binary-expr",locations:[{start:{line:102,column:12},end:{line:102,column:51}},{start:{line:103,column:12},end:{line:103,column:50}}],line:102},"4":{loc:{start:{line:107,column:8},end:{line:110,column:9}},type:"if",locations:[{start:{line:107,column:8},end:{line:110,column:9}},{start:{line:107,column:8},end:{line:110,column:9}}],line:107},"5":{loc:{start:{line:107,column:12},end:{line:108,column:48}},type:"binary-expr",locations:[{start:{line:107,column:12},end:{line:107,column:49}},{start:{line:108,column:12},end:{line:108,column:48}}],line:107},"6":{loc:{start:{line:112,column:8},end:{line:115,column:9}},type:"if",locations:[{start:{line:112,column:8},end:{line:115,column:9}},{start:{line:112,column:8},end:{line:115,column:9}}],line:112},"7":{loc:{start:{line:112,column:12},end:{line:113,column:49}},type:"binary-expr",locations:[{start:{line:112,column:12},end:{line:112,column:50}},{start:{line:113,column:12},end:{line:113,column:49}}],line:112},"8":{loc:{start:{line:117,column:8},end:{line:120,column:9}},type:"if",locations:[{start:{line:117,column:8},end:{line:120,column:9}},{start:{line:117,column:8},end:{line:120,column:9}}],line:117},"9":{loc:{start:{line:117,column:12},end:{line:118,column:51}},type:"binary-expr",locations:[{start:{line:117,column:12},end:{line:117,column:52}},{start:{line:118,column:12},end:{line:118,column:51}}],line:117},"10":{loc:{start:{line:122,column:8},end:{line:143,column:9}},type:"if",locations:[{start:{line:122,column:8},end:{line:143,column:9}},{start:{line:122,column:8},end:{line:143,column:9}}],line:122},"11":{loc:{start:{line:124,column:12},end:{line:126,column:13}},type:"if",locations:[{start:{line:124,column:12},end:{line:126,column:13}},{start:{line:124,column:12},end:{line:126,column:13}}],line:124},"12":{loc:{start:{line:128,column:12},end:{line:130,column:13}},type:"if",locations:[{start:{line:128,column:12},end:{line:130,column:13}},{start:{line:128,column:12},end:{line:130,column:13}}],line:128},"13":{loc:{start:{line:132,column:12},end:{line:134,column:13}},type:"if",locations:[{start:{line:132,column:12},end:{line:134,column:13}},{start:{line:132,column:12},end:{line:134,column:13}}],line:132},"14":{loc:{start:{line:136,column:12},end:{line:138,column:13}},type:"if",locations:[{start:{line:136,column:12},end:{line:138,column:13}},{start:{line:136,column:12},end:{line:138,column:13}}],line:136},"15":{loc:{start:{line:174,column:8},end:{line:179,column:9}},type:"if",locations:[{start:{line:174,column:8},end:{line:179,column:9}},{start:{line:174,column:8},end:{line:179,column:9}}],line:174},"16":{loc:{start:{line:175,column:19},end:{line:175,column:90}},type:"binary-expr",locations:[{start:{line:175,column:19},end:{line:175,column:85}},{start:{line:175,column:89},end:{line:175,column:90}}],line:175},"17":{loc:{start:{line:185,column:8},end:{line:190,column:9}},type:"if",locations:[{start:{line:185,column:8},end:{line:190,column:9}},{start:{line:185,column:8},end:{line:190,column:9}}],line:185},"18":{loc:{start:{line:197,column:8},end:{line:199,column:9}},type:"if",locations:[{start:{line:197,column:8},end:{line:199,column:9}},{start:{line:197,column:8},end:{line:199,column:9}}],line:197},"19":{loc:{start:{line:207,column:8},end:{line:209,column:9}},type:"if",locations:[{start:{line:207,column:8},end:{line:209,column:9}},{start:{line:207,column:8},end:{line:209,column:9}}],line:207},"20":{loc:{start:{line:220,column:8},end:{line:222,column:9}},type:"if",locations:[{start:{line:220,column:8},end:{line:222,column:9}},{start:{line:220,column:8},end:{line:222,column:9}}],line:220},"21":{loc:{start:{line:231,column:8},end:{line:233,column:9}},type:"if",locations:[{start:{line:231,column:8},end:{line:233,column:9}},{start:{line:231,column:8},end:{line:233,column:9}}],line:231},"22":{loc:{start:{line:242,column:8},end:{line:244,column:9}},type:"if",locations:[{start:{line:242,column:8},end:{line:244,column:9}},{start:{line:242,column:8},end:{line:244,column:9}}],line:242},"23":{loc:{start:{line:245,column:8},end:{line:247,column:9}},type:"if",locations:[{start:{line:245,column:8},end:{line:247,column:9}},{start:{line:245,column:8},end:{line:247,column:9}}],line:245},"24":{loc:{start:{line:248,column:8},end:{line:250,column:9}},type:"if",locations:[{start:{line:248,column:8},end:{line:250,column:9}},{start:{line:248,column:8},end:{line:250,column:9}}],line:248},"25":{loc:{start:{line:251,column:8},end:{line:253,column:9}},type:"if",locations:[{start:{line:251,column:8},end:{line:253,column:9}},{start:{line:251,column:8},end:{line:253,column:9}}],line:251},"26":{loc:{start:{line:264,column:8},end:{line:266,column:9}},type:"if",locations:[{start:{line:264,column:8},end:{line:266,column:9}},{start:{line:264,column:8},end:{line:266,column:9}}],line:264},"27":{loc:{start:{line:264,column:12},end:{line:264,column:81}},type:"binary-expr",locations:[{start:{line:264,column:12},end:{line:264,column:46}},{start:{line:264,column:50},end:{line:264,column:81}}],line:264},"28":{loc:{start:{line:267,column:8},end:{line:269,column:9}},type:"if",locations:[{start:{line:267,column:8},end:{line:269,column:9}},{start:{line:267,column:8},end:{line:269,column:9}}],line:267},"29":{loc:{start:{line:267,column:12},end:{line:267,column:77}},type:"binary-expr",locations:[{start:{line:267,column:12},end:{line:267,column:44}},{start:{line:267,column:48},end:{line:267,column:77}}],line:267},"30":{loc:{start:{line:270,column:8},end:{line:272,column:9}},type:"if",locations:[{start:{line:270,column:8},end:{line:272,column:9}},{start:{line:270,column:8},end:{line:272,column:9}}],line:270},"31":{loc:{start:{line:270,column:12},end:{line:270,column:79}},type:"binary-expr",locations:[{start:{line:270,column:12},end:{line:270,column:45}},{start:{line:270,column:49},end:{line:270,column:79}}],line:270},"32":{loc:{start:{line:273,column:8},end:{line:276,column:9}},type:"if",locations:[{start:{line:273,column:8},end:{line:276,column:9}},{start:{line:273,column:8},end:{line:276,column:9}}],line:273},"33":{loc:{start:{line:273,column:12},end:{line:274,column:44}},type:"binary-expr",locations:[{start:{line:273,column:12},end:{line:273,column:47}},{start:{line:274,column:12},end:{line:274,column:44}}],line:273},"34":{loc:{start:{line:291,column:8},end:{line:293,column:9}},type:"if",locations:[{start:{line:291,column:8},end:{line:293,column:9}},{start:{line:291,column:8},end:{line:293,column:9}}],line:291},"35":{loc:{start:{line:305,column:8},end:{line:308,column:9}},type:"if",locations:[{start:{line:305,column:8},end:{line:308,column:9}},{start:{line:305,column:8},end:{line:308,column:9}}],line:305},"36":{loc:{start:{line:305,column:12},end:{line:305,column:56}},type:"binary-expr",locations:[{start:{line:305,column:12},end:{line:305,column:21}},{start:{line:305,column:25},end:{line:305,column:37}},{start:{line:305,column:41},end:{line:305,column:56}}],line:305},"37":{loc:{start:{line:309,column:8},end:{line:312,column:9}},type:"if",locations:[{start:{line:309,column:8},end:{line:312,column:9}},{start:{line:309,column:8},end:{line:312,column:9}}],line:309},"38":{loc:{start:{line:309,column:12},end:{line:309,column:57}},type:"binary-expr",locations:[{start:{line:309,column:12},end:{line:309,column:22}},{start:{line:309,column:26},end:{line:309,column:38}},{start:{line:309,column:42},end:{line:309,column:57}}],line:309},"39":{loc:{start:{line:313,column:8},end:{line:316,column:9}},type:"if",locations:[{start:{line:313,column:8},end:{line:316,column:9}},{start:{line:313,column:8},end:{line:316,column:9}}],line:313},"40":{loc:{start:{line:313,column:12},end:{line:313,column:55}},type:"binary-expr",locations:[{start:{line:313,column:12},end:{line:313,column:20}},{start:{line:313,column:24},end:{line:313,column:37}},{start:{line:313,column:41},end:{line:313,column:55}}],line:313},"41":{loc:{start:{line:317,column:8},end:{line:320,column:9}},type:"if",locations:[{start:{line:317,column:8},end:{line:320,column:9}},{start:{line:317,column:8},end:{line:320,column:9}}],line:317},"42":{loc:{start:{line:317,column:12},end:{line:317,column:58}},type:"binary-expr",locations:[{start:{line:317,column:12},end:{line:317,column:23}},{start:{line:317,column:27},end:{line:317,column:40}},{start:{line:317,column:44},end:{line:317,column:58}}],line:317},"43":{loc:{start:{line:327,column:8},end:{line:354,column:9}},type:"if",locations:[{start:{line:327,column:8},end:{line:354,column:9}},{start:{line:327,column:8},end:{line:354,column:9}}],line:327},"44":{loc:{start:{line:327,column:12},end:{line:327,column:63}},type:"binary-expr",locations:[{start:{line:327,column:12},end:{line:327,column:33}},{start:{line:327,column:37},end:{line:327,column:63}}],line:327},"45":{loc:{start:{line:329,column:12},end:{line:350,column:13}},type:"if",locations:[{start:{line:329,column:12},end:{line:350,column:13}},{start:{line:329,column:12},end:{line:350,column:13}}],line:329},"46":{loc:{start:{line:332,column:16},end:{line:345,column:17}},type:"switch",locations:[{start:{line:333,column:20},end:{line:335,column:111}},{start:{line:336,column:20},end:{line:338,column:102}},{start:{line:339,column:20},end:{line:341,column:111}},{start:{line:342,column:20},end:{line:344,column:110}}],line:332},"47":{loc:{start:{line:360,column:8},end:{line:389,column:9}},type:"if",locations:[{start:{line:360,column:8},end:{line:389,column:9}},{start:{line:360,column:8},end:{line:389,column:9}}],line:360},"48":{loc:{start:{line:360,column:12},end:{line:360,column:63}},type:"binary-expr",locations:[{start:{line:360,column:12},end:{line:360,column:33}},{start:{line:360,column:37},end:{line:360,column:63}}],line:360},"49":{loc:{start:{line:362,column:12},end:{line:385,column:13}},type:"if",locations:[{start:{line:362,column:12},end:{line:385,column:13}},{start:{line:362,column:12},end:{line:385,column:13}}],line:362},"50":{loc:{start:{line:367,column:16},end:{line:380,column:17}},type:"switch",locations:[{start:{line:368,column:20},end:{line:370,column:109}},{start:{line:371,column:20},end:{line:373,column:113}},{start:{line:374,column:20},end:{line:376,column:101}},{start:{line:377,column:20},end:{line:379,column:111}}],line:367},"51":{loc:{start:{line:397,column:8},end:{line:399,column:9}},type:"if",locations:[{start:{line:397,column:8},end:{line:399,column:9}},{start:{line:397,column:8},end:{line:399,column:9}}],line:397},"52":{loc:{start:{line:411,column:8},end:{line:413,column:9}},type:"if",locations:[{start:{line:411,column:8},end:{line:413,column:9}},{start:{line:411,column:8},end:{line:413,column:9}}],line:411}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0,0],"37":[0,0],"38":[0,0,0],"39":[0,0],"40":[0,0,0],"41":[0,0],"42":[0,0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0,0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0,0,0],"51":[0,0],"52":[0,0]},inputSourceMap:{version:3,file:"tooltip.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/tooltip/tooltip.ts"],names:[],mappings:"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",sourcesContent:["import {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Directive,\r\n DoCheck,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\nimport { TooltipPosition } from '../../utilities/enums';\r\n\r\n/**\r\n * Tooltip Component\r\n *\r\n * Requires the following identifiers in the HTML markup\r\n * - container: Container for ng-content in which the element is displayed where the tooltip is attached.\r\n * - tooltip: Container for tooltip\r\n *\r\n * Tooltip must be displayed in 2 steps. In a first step the tooltip markup is created with (ngIf). In a 2nd step\r\n * the tooltip can then be displayed via the CSS visibility. If this is not done, it can lead to a flickering effect in certain browsers.\r\n *\r\n */\r\n@Directive()\r\nexport abstract class SacTooltipCommon implements OnInit, OnDestroy, AfterViewChecked, DoCheck {\r\n // #region Properties\r\n\r\n /**\r\n * Inline mode for tooltip\r\n */\r\n private _inlinemode: boolean;\r\n /**\r\n * Defines whether the tooltip is visible\r\n */\r\n private _isTooltipVisible: boolean = false;\r\n /**\r\n * method if content has changed and proportions need to be reset in the UI.\r\n */\r\n private readonly onContentChange = (): void => {\r\n // Do nothing if is not visible\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n });\r\n };\r\n /**\r\n * Containers for the tooltip\r\n */\r\n private tooltipcontainer: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Position of the tooltip. Values: left|top|right|bottom|auto\r\n *\r\n * Value 'auto' can be combined with another value.\r\n */\r\n @Input()\r\n public position: string = 'right|auto';\r\n /**\r\n * Text for ToolTip\r\n */\r\n @Input()\r\n public tooltiptext: string;\r\n /**\r\n * Name of the container for content (e.g. icon) on which the tooltip is displayed.\r\n */\r\n @ViewChild('container', { static: true })\r\n public content: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Position of the tooltip on the left\r\n */\r\n public IsTooltipContentVisible: boolean = false;\r\n /**\r\n * Position des Tooltips links\r\n */\r\n public LeftPos: number = 0;\r\n /**\r\n * Property for enum in Angular HTML template\r\n */\r\n public TooltipPosition = TooltipPosition;\r\n /**\r\n * Position of the tooltip at the top\r\n */\r\n public TopPos: number = 0;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param ref Element Referenz\r\n */\r\n constructor(private readonly cdRef: ChangeDetectorRef, private readonly ref: ElementRef) { }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Setter for inline mode for tooltip\r\n */\r\n @Input()\r\n public set inlinemode(value: boolean) {\r\n this._inlinemode = convertToBoolean(value);\r\n }\r\n\r\n /**\r\n * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.\r\n */\r\n @ViewChild('tooltip', { static: false })\r\n public set tooltip(content: ElementRef) {\r\n if (content !== undefined) {\r\n document.body.appendChild(content.nativeElement);\r\n }\r\n\r\n this.tooltipcontainer = content;\r\n this.onContentChange();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`\r\n */\r\n public get inlinemode(): boolean {\r\n return this._inlinemode;\r\n }\r\n\r\n public get tooltop(): ElementRef {\r\n return this.tooltipcontainer;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Returns the position of the tooltip\r\n */\r\n public GetTooltipPosition(): TooltipPosition {\r\n const validPositions: TooltipPosition = this.ValidatePositions();\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (\r\n this.HasPosition(TooltipPosition.right) &&\r\n validPositions & TooltipPosition.right\r\n ) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (\r\n this.HasPosition(TooltipPosition.top) &&\r\n validPositions & TooltipPosition.top\r\n ) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (\r\n this.HasPosition(TooltipPosition.left) &&\r\n validPositions & TooltipPosition.left\r\n ) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (\r\n this.HasPosition(TooltipPosition.bottom) &&\r\n validPositions & TooltipPosition.bottom\r\n ) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n // Get Auto Position or Default\r\n if (this.IsAutoPosition()) {\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.right) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.top) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.left) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.bottom) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n return TooltipPosition.right;\r\n } else {\r\n return this.GetPosition();\r\n }\r\n }\r\n\r\n /**\r\n * Hide tooltip\r\n */\r\n public HideTooltip(): void {\r\n this._isTooltipVisible = false;\r\n this.IsTooltipContentVisible = false;\r\n }\r\n\r\n /**\r\n * Defines whether the tooltip is present in the markup\r\n */\r\n public IsTooltipVisible(): boolean {\r\n return this._isTooltipVisible;\r\n }\r\n\r\n /**\r\n * Show tooltip\r\n */\r\n public ShowTooltip(): void {\r\n this._isTooltipVisible = true;\r\n this.cdRef.detectChanges();\r\n\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n this.IsTooltipContentVisible = true;\r\n });\r\n }\r\n\r\n /**\r\n * Calculates the height of the tooltip\r\n */\r\n public getToolTipHeight(): number {\r\n if (this.tooltipcontainer) {\r\n return this.tooltipcontainer.nativeElement.firstElementChild.clientHeight ?? 0;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the width of the tooltips\r\n */\r\n public getToolTipWidth(): number {\r\n if (this.tooltipcontainer) {\r\n return this.tooltipcontainer.nativeElement.firstElementChild.clientWidth;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Detect Changes after view checked. Prevent ExpressionChangedAfterItHasBeenCheckedError error\r\n */\r\n public ngAfterViewChecked(): void {\r\n // Do nothing if is not visibile\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Detect UI Changes to Calculate Tooltip correct\r\n */\r\n public ngDoCheck(): void {\r\n // Do nothing if is not visibile\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n }\r\n\r\n /**\r\n * Event when the control is destroyed.\r\n */\r\n public ngOnDestroy() {\r\n // Unregister Event Listener\r\n window.removeEventListener('scroll', this.onContentChange, true);\r\n window.removeEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.removeChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Event when the control is initialized\r\n */\r\n public ngOnInit() {\r\n // Register Event Listener\r\n window.addEventListener('scroll', this.onContentChange, true);\r\n window.addEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.appendChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Abstract Methods\r\n\r\n /**\r\n * Offset for Tooltip. Required for BS4/BS5 to create padding\r\n */\r\n protected abstract getTooltipOffset(): number;\r\n\r\n // #endregion Protected Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Returns the defined position for the tooltip\r\n */\r\n private GetPosition(): TooltipPosition {\r\n const positions = this.position.split('|');\r\n\r\n if (this.HasPosition(TooltipPosition.left)) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.top)) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.right)) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.bottom)) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n // Default Position if empty\r\n return TooltipPosition.right;\r\n }\r\n\r\n /**\r\n * Returns whether the position has been configured\r\n *\r\n * @param position Position to be checked\r\n */\r\n private HasPosition(position: TooltipPosition): boolean {\r\n const positions = this.position.split('|');\r\n\r\n if (position === TooltipPosition.right && positions.indexOf('right') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.top && positions.indexOf('top') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.left && positions.indexOf('left') >= 0) {\r\n return true;\r\n }\r\n\r\n if (\r\n position === TooltipPosition.bottom &&\r\n positions.indexOf('bottom') >= 0\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Defines whether AutoPosition is active\r\n */\r\n private IsAutoPosition(): boolean {\r\n const positions = this.position.split('|');\r\n return positions.indexOf('auto') >= 0;\r\n }\r\n\r\n /**\r\n * Checks whether the position is valid or whether the tooltip on the position has space\r\n */\r\n private ValidatePositions(): TooltipPosition {\r\n // Check if Container is false\r\n if (this.tooltipcontainer === undefined) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n let allowedPositions: TooltipPosition = TooltipPosition.none;\r\n const basePosition: DOMRect = this.content.nativeElement.firstElementChild.getBoundingClientRect();\r\n const tooltipRect: DOMRect = this.tooltipcontainer.nativeElement.firstElementChild.getBoundingClientRect();\r\n\r\n const leftPosOk: boolean = basePosition.left - tooltipRect.width + (this.getTooltipOffset() * -1) > 0;\r\n const rightPosOk: boolean = basePosition.right + tooltipRect.width + this.getTooltipOffset() < window.innerWidth;\r\n const topPosOk: boolean = basePosition.top - tooltipRect.height > 0;\r\n const bottomPosOk: boolean = basePosition.bottom + tooltipRect.height < window.innerHeight;\r\n\r\n const leftHalfPosOk: boolean = basePosition.left - tooltipRect.width / 2 > 0;\r\n const rightHalfPosOk: boolean = basePosition.right + tooltipRect.width / 2 < window.innerWidth;\r\n const topHalfPosOk: boolean = basePosition.top - tooltipRect.height / 2 > 0;\r\n const bottomHalfPosOk: boolean = basePosition.bottom + tooltipRect.height / 2 < window.innerHeight;\r\n\r\n if (leftPosOk && topHalfPosOk && bottomHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.left;\r\n }\r\n\r\n if (rightPosOk && topHalfPosOk && bottomHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.right;\r\n }\r\n\r\n if (topPosOk && leftHalfPosOk && rightHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.top;\r\n }\r\n\r\n if (bottomPosOk && leftHalfPosOk && rightHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.bottom;\r\n }\r\n\r\n return allowedPositions;\r\n }\r\n\r\n /**\r\n * Calculates the position of the tooltip from links\r\n */\r\n private getLeftPosition(): number {\r\n if (this.content !== null && this.content !== undefined) {\r\n const item = this.content.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = item.firstElementChild as HTMLElement;\r\n const contentPosition: DOMRect = childItem.getBoundingClientRect();\r\n\r\n switch (this.GetTooltipPosition()) {\r\n case TooltipPosition.top:\r\n this.LeftPos = contentPosition.left + contentPosition.width / 2 - this.getToolTipWidth() / 2;\r\n return (contentPosition.left + contentPosition.width / 2 - this.getToolTipWidth() / 2\r\n );\r\n case TooltipPosition.right:\r\n this.LeftPos = contentPosition.left + contentPosition.width + this.getTooltipOffset();\r\n return contentPosition.left + contentPosition.width + this.getTooltipOffset();\r\n case TooltipPosition.bottom:\r\n this.LeftPos = contentPosition.left + contentPosition.width / 2 - this.getToolTipWidth() / 2;\r\n return (contentPosition.left + contentPosition.width / 2 - this.getToolTipWidth() / 2);\r\n case TooltipPosition.left:\r\n this.LeftPos = contentPosition.left - this.getToolTipWidth() + (this.getTooltipOffset() * -1);\r\n return contentPosition.left - this.getToolTipWidth() + (this.getTooltipOffset() * -1);\r\n }\r\n\r\n return this.content.nativeElement.offsetTop;\r\n } else {\r\n return this.content.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return this.ref.nativeElement.offsetLeft;\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the position of the tooltip from the top\r\n */\r\n private getTopPosition(): number {\r\n if (this.content !== null && this.content !== undefined) {\r\n const item = this.content.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = item.firstElementChild as HTMLElement;\r\n const contentPosition: DOMRect = childItem.getBoundingClientRect();\r\n\r\n // Get Position with Scroll (Scrollbars inside page should be substracted)\r\n const contentPositionTop = childItem.offsetTop + this.getOffsetTopParent(childItem.offsetParent as HTMLElement) - this.getScrollTopParent(childItem.parentElement);\r\n\r\n switch (this.GetTooltipPosition()) {\r\n case TooltipPosition.top:\r\n this.TopPos = contentPositionTop - this.getToolTipHeight() + (this.getTooltipOffset() * -1);\r\n return contentPositionTop - this.getToolTipHeight() + (this.getTooltipOffset() * -1);\r\n case TooltipPosition.right:\r\n this.TopPos = contentPositionTop + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n return contentPositionTop + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n case TooltipPosition.bottom:\r\n this.TopPos = contentPositionTop + contentPosition.height + this.getTooltipOffset();\r\n return contentPositionTop + contentPosition.height + this.getTooltipOffset();\r\n case TooltipPosition.left:\r\n this.TopPos = contentPositionTop + contentPosition.height / 2 - this.getToolTipHeight() / 2;\r\n return (contentPositionTop + contentPosition.height / 2 - this.getToolTipHeight() / 2);\r\n }\r\n\r\n return (childItem.clientTop + childItem.offsetTop - (this.getToolTipHeight() / 2 - childItem.clientHeight / 2));\r\n } else {\r\n return this.content.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return this.ref.nativeElement.offsetTop;\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the top of the page inside all elements\r\n * @param element HTML Element\r\n * @returns summarized top value for absolute position\r\n */\r\n private getOffsetTopParent(element: HTMLElement): number {\r\n if (!element.offsetParent) {\r\n return element.offsetTop;\r\n }\r\n\r\n const parentValue = this.getOffsetTopParent(element.offsetParent as HTMLElement);\r\n let offset = element.offsetTop;\r\n return parentValue + offset;\r\n }\r\n\r\n /**\r\n * Caclulate Scrollbars inside tree\r\n * @param element HTML Element\r\n * @returns Scroll top value of element with all childs\r\n */\r\n private getScrollTopParent(element: HTMLElement): number {\r\n // Body Scroll should not be calculated\r\n if (!element.parentElement) {\r\n return 0;\r\n }\r\n\r\n const parentValue = this.getScrollTopParent(element.parentElement);\r\n return parentValue + element.scrollTop;\r\n }\r\n\r\n\r\n // #endregion Private Methods\r\n}\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"7e14c0ca678a482fa5d3b67239db3c22f7d8efdd"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
- cov_1pspdc72jq=function(){return actualCoverage;};}return actualCoverage;}cov_1pspdc72jq();import{Directive,Input,ViewChild}from'@angular/core';import{convertToBoolean}from'../../utilities/convertion';import{TooltipPosition}from'../../utilities/enums';import*as i0 from"@angular/core";/**
1
+ function cov_1pspdc72jq(){var path="C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\controls\\tooltip\\tooltip.mjs";var hash="e6f1f6d7686178978be687614474b2f9308bf271";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng13\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2020\\controls\\tooltip\\tooltip.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:27}},"1":{start:{line:26,column:8},end:{line:26,column:23}},"2":{start:{line:31,column:8},end:{line:31,column:45}},"3":{start:{line:35,column:8},end:{line:35,column:39}},"4":{start:{line:39,column:8},end:{line:39,column:45}},"5":{start:{line:43,column:8},end:{line:43,column:25}},"6":{start:{line:47,column:8},end:{line:47,column:47}},"7":{start:{line:51,column:8},end:{line:51,column:24}},"8":{start:{line:55,column:8},end:{line:55,column:33}},"9":{start:{line:59,column:8},end:{line:59,column:32}},"10":{start:{line:65,column:8},end:{line:65,column:37}},"11":{start:{line:69,column:8},end:{line:78,column:10}},"12":{start:{line:71,column:12},end:{line:73,column:13}},"13":{start:{line:72,column:16},end:{line:72,column:23}},"14":{start:{line:74,column:12},end:{line:77,column:15}},"15":{start:{line:75,column:16},end:{line:75,column:39}},"16":{start:{line:76,column:16},end:{line:76,column:38}},"17":{start:{line:86,column:8},end:{line:86,column:32}},"18":{start:{line:92,column:8},end:{line:92,column:51}},"19":{start:{line:98,column:8},end:{line:100,column:9}},"20":{start:{line:99,column:12},end:{line:99,column:61}},"21":{start:{line:101,column:8},end:{line:101,column:40}},"22":{start:{line:102,column:8},end:{line:102,column:31}},"23":{start:{line:103,column:8},end:{line:103,column:35}},"24":{start:{line:106,column:8},end:{line:106,column:37}},"25":{start:{line:114,column:8},end:{line:114,column:159}},"26":{start:{line:120,column:8},end:{line:120,column:39}},"27":{start:{line:121,column:8},end:{line:121,column:45}},"28":{start:{line:127,column:8},end:{line:127,column:38}},"29":{start:{line:133,column:8},end:{line:133,column:38}},"30":{start:{line:134,column:8},end:{line:134,column:35}},"31":{start:{line:135,column:8},end:{line:139,column:11}},"32":{start:{line:136,column:12},end:{line:136,column:35}},"33":{start:{line:137,column:12},end:{line:137,column:34}},"34":{start:{line:138,column:12},end:{line:138,column:48}},"35":{start:{line:145,column:8},end:{line:145,column:70}},"36":{start:{line:151,column:8},end:{line:151,column:69}},"37":{start:{line:158,column:8},end:{line:160,column:9}},"38":{start:{line:159,column:12},end:{line:159,column:19}},"39":{start:{line:161,column:8},end:{line:161,column:35}},"40":{start:{line:168,column:8},end:{line:170,column:9}},"41":{start:{line:169,column:12},end:{line:169,column:19}},"42":{start:{line:171,column:8},end:{line:171,column:31}},"43":{start:{line:172,column:8},end:{line:172,column:30}},"44":{start:{line:179,column:8},end:{line:179,column:73}},"45":{start:{line:180,column:8},end:{line:180,column:73}},"46":{start:{line:181,column:8},end:{line:183,column:9}},"47":{start:{line:182,column:12},end:{line:182,column:75}},"48":{start:{line:190,column:8},end:{line:190,column:70}},"49":{start:{line:191,column:8},end:{line:191,column:70}},"50":{start:{line:192,column:8},end:{line:194,column:9}},"51":{start:{line:193,column:12},end:{line:193,column:75}},"52":{start:{line:202,column:22},end:{line:202,column:172}},"53":{start:{line:203,column:8},end:{line:203,column:29}},"54":{start:{line:204,column:33},end:{line:204,column:58}},"55":{start:{line:205,column:8},end:{line:210,column:9}},"56":{start:{line:206,column:12},end:{line:206,column:65}},"57":{start:{line:209,column:12},end:{line:209,column:36}},"58":{start:{line:211,column:8},end:{line:211,column:21}},"59":{start:{line:217,column:22},end:{line:217,column:171}},"60":{start:{line:218,column:8},end:{line:218,column:28}},"61":{start:{line:219,column:33},end:{line:219,column:58}},"62":{start:{line:220,column:8},end:{line:225,column:9}},"63":{start:{line:221,column:12},end:{line:221,column:65}},"64":{start:{line:224,column:12},end:{line:224,column:37}},"65":{start:{line:226,column:8},end:{line:226,column:21}},"66":{start:{line:229,column:0},end:{line:229,column:234}},"67":{start:{line:230,column:0},end:{line:230,column:420}},"68":{start:{line:231,column:0},end:{line:245,column:20}},"69":{start:{line:233,column:42},end:{line:233,column:107}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:28},end:{line:79,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:69,column:31},end:{line:69,column:32}},loc:{start:{line:69,column:37},end:{line:78,column:9}},line:69},"2":{name:"(anonymous_2)",decl:{start:{line:74,column:23},end:{line:74,column:24}},loc:{start:{line:74,column:29},end:{line:77,column:13}},line:74},"3":{name:"(anonymous_3)",decl:{start:{line:85,column:4},end:{line:85,column:5}},loc:{start:{line:85,column:21},end:{line:87,column:5}},line:85},"4":{name:"(anonymous_4)",decl:{start:{line:91,column:4},end:{line:91,column:5}},loc:{start:{line:91,column:26},end:{line:93,column:5}},line:91},"5":{name:"(anonymous_5)",decl:{start:{line:97,column:4},end:{line:97,column:5}},loc:{start:{line:97,column:25},end:{line:104,column:5}},line:97},"6":{name:"(anonymous_6)",decl:{start:{line:105,column:4},end:{line:105,column:5}},loc:{start:{line:105,column:18},end:{line:107,column:5}},line:105},"7":{name:"(anonymous_7)",decl:{start:{line:113,column:4},end:{line:113,column:5}},loc:{start:{line:113,column:25},end:{line:115,column:5}},line:113},"8":{name:"(anonymous_8)",decl:{start:{line:119,column:4},end:{line:119,column:5}},loc:{start:{line:119,column:18},end:{line:122,column:5}},line:119},"9":{name:"(anonymous_9)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:23},end:{line:128,column:5}},line:126},"10":{name:"(anonymous_10)",decl:{start:{line:132,column:4},end:{line:132,column:5}},loc:{start:{line:132,column:18},end:{line:140,column:5}},line:132},"11":{name:"(anonymous_11)",decl:{start:{line:135,column:19},end:{line:135,column:20}},loc:{start:{line:135,column:25},end:{line:139,column:9}},line:135},"12":{name:"(anonymous_12)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:23},end:{line:146,column:5}},line:144},"13":{name:"(anonymous_13)",decl:{start:{line:150,column:4},end:{line:150,column:5}},loc:{start:{line:150,column:22},end:{line:152,column:5}},line:150},"14":{name:"(anonymous_14)",decl:{start:{line:156,column:4},end:{line:156,column:5}},loc:{start:{line:156,column:25},end:{line:162,column:5}},line:156},"15":{name:"(anonymous_15)",decl:{start:{line:166,column:4},end:{line:166,column:5}},loc:{start:{line:166,column:16},end:{line:173,column:5}},line:166},"16":{name:"(anonymous_16)",decl:{start:{line:177,column:4},end:{line:177,column:5}},loc:{start:{line:177,column:18},end:{line:184,column:5}},line:177},"17":{name:"(anonymous_17)",decl:{start:{line:188,column:4},end:{line:188,column:5}},loc:{start:{line:188,column:15},end:{line:195,column:5}},line:188},"18":{name:"(anonymous_18)",decl:{start:{line:201,column:4},end:{line:201,column:5}},loc:{start:{line:201,column:22},end:{line:212,column:5}},line:201},"19":{name:"(anonymous_19)",decl:{start:{line:216,column:4},end:{line:216,column:5}},loc:{start:{line:216,column:21},end:{line:227,column:5}},line:216},"20":{name:"(anonymous_20)",decl:{start:{line:233,column:28},end:{line:233,column:29}},loc:{start:{line:233,column:40},end:{line:233,column:109}},line:233}},branchMap:{"0":{loc:{start:{line:71,column:12},end:{line:73,column:13}},type:"if",locations:[{start:{line:71,column:12},end:{line:73,column:13}},{start:{line:71,column:12},end:{line:73,column:13}}],line:71},"1":{loc:{start:{line:98,column:8},end:{line:100,column:9}},type:"if",locations:[{start:{line:98,column:8},end:{line:100,column:9}},{start:{line:98,column:8},end:{line:100,column:9}}],line:98},"2":{loc:{start:{line:158,column:8},end:{line:160,column:9}},type:"if",locations:[{start:{line:158,column:8},end:{line:160,column:9}},{start:{line:158,column:8},end:{line:160,column:9}}],line:158},"3":{loc:{start:{line:168,column:8},end:{line:170,column:9}},type:"if",locations:[{start:{line:168,column:8},end:{line:170,column:9}},{start:{line:168,column:8},end:{line:170,column:9}}],line:168},"4":{loc:{start:{line:181,column:8},end:{line:183,column:9}},type:"if",locations:[{start:{line:181,column:8},end:{line:183,column:9}},{start:{line:181,column:8},end:{line:183,column:9}}],line:181},"5":{loc:{start:{line:192,column:8},end:{line:194,column:9}},type:"if",locations:[{start:{line:192,column:8},end:{line:194,column:9}},{start:{line:192,column:8},end:{line:194,column:9}}],line:192},"6":{loc:{start:{line:205,column:8},end:{line:210,column:9}},type:"if",locations:[{start:{line:205,column:8},end:{line:210,column:9}},{start:{line:205,column:8},end:{line:210,column:9}}],line:205},"7":{loc:{start:{line:205,column:12},end:{line:205,column:99}},type:"binary-expr",locations:[{start:{line:205,column:12},end:{line:205,column:53}},{start:{line:205,column:57},end:{line:205,column:99}}],line:205},"8":{loc:{start:{line:220,column:8},end:{line:225,column:9}},type:"if",locations:[{start:{line:220,column:8},end:{line:225,column:9}},{start:{line:220,column:8},end:{line:225,column:9}}],line:220},"9":{loc:{start:{line:220,column:12},end:{line:220,column:99}},type:"binary-expr",locations:[{start:{line:220,column:12},end:{line:220,column:55}},{start:{line:220,column:59},end:{line:220,column:99}}],line:220}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},inputSourceMap:{version:3,file:"tooltip.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/tooltip/tooltip.ts"],names:[],mappings:"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",sourcesContent:["import { convertToBoolean } from '../../utilities/convertion';\r\nimport { TooltipPosition } from '../../utilities/enums';\r\nimport { PopUpHelper } from '../../utilities/popuphelper';\r\nimport {\r\n AfterViewChecked,\r\n ChangeDetectorRef,\r\n Directive,\r\n DoCheck,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Tooltip Component\r\n *\r\n * Requires the following identifiers in the HTML markup\r\n * - container: Container for ng-content in which the element is displayed where the tooltip is attached.\r\n * - tooltip: Container for tooltip\r\n *\r\n * Tooltip must be displayed in 2 steps. In a first step the tooltip markup is created with (ngIf). In a 2nd step\r\n * the tooltip can then be displayed via the CSS visibility. If this is not done, it can lead to a flickering effect in certain browsers.\r\n *\r\n */\r\n@Directive()\r\nexport abstract class SacTooltipCommon implements OnInit, OnDestroy, AfterViewChecked, DoCheck {\r\n // #region Properties\r\n\r\n /**\r\n * Helper class to display tooltip on correct position\r\n */\r\n private readonly popupHelper: PopUpHelper = new PopUpHelper();\r\n\r\n /**\r\n * Inline mode for tooltip\r\n */\r\n private _inlinemode: boolean;\r\n\r\n /**\r\n * Defines whether the tooltip is visible\r\n */\r\n private _isTooltipVisible: boolean = false;\r\n\r\n /**\r\n * Containers for the tooltip\r\n */\r\n private tooltipcontainer: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Position of the tooltip on the left\r\n */\r\n public IsTooltipContentVisible: boolean = false;\r\n\r\n /**\r\n * Position des Tooltips links\r\n */\r\n public LeftPos: number = 0;\r\n\r\n /**\r\n * Property for enum in Angular HTML template\r\n */\r\n public TooltipPosition = TooltipPosition;\r\n\r\n /**\r\n * Position of the tooltip at the top\r\n */\r\n public TopPos: number = 0;\r\n\r\n /**\r\n * Name of the container for content (e.g. icon) on which the tooltip is displayed.\r\n */\r\n @ViewChild('container', { static: true })\r\n public content: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Position of the picker arrow at the left\r\n */\r\n public posArrowLeft: number | null = null;\r\n\r\n /**\r\n * Position of the picker arrow at the top\r\n */\r\n public posArrowTop: number | null = null;\r\n\r\n /**\r\n * Position of the tooltip. Values: left|top|right|bottom|auto\r\n *\r\n * Value 'auto' can be combined with another value.\r\n */\r\n @Input()\r\n public position: string = 'right|auto';\r\n\r\n /**\r\n * Text for ToolTip\r\n */\r\n @Input()\r\n public tooltiptext: string;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param ref Element Referenz\r\n */\r\n constructor(private readonly cdRef: ChangeDetectorRef, private readonly ref: ElementRef) {}\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`\r\n */\r\n public get inlinemode(): boolean {\r\n return this._inlinemode;\r\n }\r\n\r\n /**\r\n * Setter for inline mode for tooltip\r\n */\r\n @Input()\r\n public set inlinemode(value: boolean) {\r\n this._inlinemode = convertToBoolean(value);\r\n }\r\n\r\n /**\r\n * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.\r\n */\r\n @ViewChild('tooltip', { static: false })\r\n public set tooltip(content: ElementRef) {\r\n if (content !== undefined) {\r\n document.body.appendChild(content.nativeElement);\r\n }\r\n\r\n this.tooltipcontainer = content;\r\n this.onContentChange();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public get tooltop(): ElementRef {\r\n return this.tooltipcontainer;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Returns the position of the tooltip\r\n */\r\n public GetTooltipPosition(): TooltipPosition {\r\n return this.popupHelper.getDisplayPosition(\r\n this.content,\r\n this.tooltipcontainer,\r\n this.getTooltipOffset(),\r\n this.getTooltipOffset(),\r\n this.position,\r\n true\r\n );\r\n }\r\n\r\n /**\r\n * Hide tooltip\r\n */\r\n public HideTooltip(): void {\r\n this._isTooltipVisible = false;\r\n this.IsTooltipContentVisible = false;\r\n }\r\n\r\n /**\r\n * Defines whether the tooltip is present in the markup\r\n */\r\n public IsTooltipVisible(): boolean {\r\n return this._isTooltipVisible;\r\n }\r\n\r\n /**\r\n * Show tooltip\r\n */\r\n public ShowTooltip(): void {\r\n this._isTooltipVisible = true;\r\n this.cdRef.detectChanges();\r\n\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n this.IsTooltipContentVisible = true;\r\n });\r\n }\r\n\r\n /**\r\n * Calculates the height of the tooltip\r\n */\r\n public getToolTipHeight(): number {\r\n return this.popupHelper.getPopupHeight(this.tooltipcontainer);\r\n }\r\n\r\n /**\r\n * Calculates the width of the tooltips\r\n */\r\n public getToolTipWidth(): number {\r\n return this.popupHelper.getPopupWidth(this.tooltipcontainer);\r\n }\r\n\r\n /**\r\n * Detect Changes after view checked. Prevent ExpressionChangedAfterItHasBeenCheckedError error\r\n */\r\n public ngAfterViewChecked(): void {\r\n // Do nothing if is not visibile\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Detect UI Changes to Calculate Tooltip correct\r\n */\r\n public ngDoCheck(): void {\r\n // Do nothing if is not visibile\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n }\r\n\r\n /**\r\n * Event when the control is destroyed.\r\n */\r\n public ngOnDestroy() {\r\n // Unregister Event Listener\r\n window.removeEventListener('scroll', this.onContentChange, true);\r\n window.removeEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.removeChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Event when the control is initialized\r\n */\r\n public ngOnInit() {\r\n // Register Event Listener\r\n window.addEventListener('scroll', this.onContentChange, true);\r\n window.addEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.appendChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Offset for Tooltip. Required for BS4/BS5 to create padding\r\n */\r\n protected abstract getTooltipOffset(): number;\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Calculates the position of the tooltip from links\r\n */\r\n private getLeftPosition(): number {\r\n const value = this.popupHelper.getPositionLeft(\r\n this.content,\r\n this.tooltipcontainer,\r\n this.ref,\r\n this.getTooltipOffset(),\r\n this.getTooltipOffset(),\r\n this.position,\r\n true\r\n );\r\n this.LeftPos = value;\r\n\r\n const requiredPosition = this.GetTooltipPosition();\r\n if (requiredPosition === TooltipPosition.left || requiredPosition === TooltipPosition.right) {\r\n this.posArrowTop = this.getToolTipHeight() / 2 - 6.5;\r\n } else {\r\n this.posArrowTop = null;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Calculates the position of the tooltip from the top\r\n */\r\n private getTopPosition(): number {\r\n const value = this.popupHelper.getPositionTop(\r\n this.content,\r\n this.tooltipcontainer,\r\n this.ref,\r\n this.getTooltipOffset(),\r\n this.getTooltipOffset(),\r\n this.position,\r\n true\r\n );\r\n this.TopPos = value;\r\n\r\n const requiredPosition = this.GetTooltipPosition();\r\n if (requiredPosition === TooltipPosition.bottom || requiredPosition === TooltipPosition.top) {\r\n this.posArrowLeft = this.getToolTipWidth() / 2 - 6.5;\r\n } else {\r\n this.posArrowLeft = null;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * method if content has changed and proportions need to be reset in the UI.\r\n */\r\n private readonly onContentChange = (): void => {\r\n // Do nothing if is not visible\r\n if (!this._isTooltipVisible) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n });\r\n };\r\n\r\n // #endregion Private Methods\r\n}\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"e6f1f6d7686178978be687614474b2f9308bf271"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_1pspdc72jq=function(){return actualCoverage;};}return actualCoverage;}cov_1pspdc72jq();import{convertToBoolean}from'../../utilities/convertion';import{TooltipPosition}from'../../utilities/enums';import{PopUpHelper}from'../../utilities/popuphelper';import{Directive,Input,ViewChild}from'@angular/core';import*as i0 from"@angular/core";/**
3
3
  * Tooltip Component
4
4
  *
5
5
  * Requires the following identifiers in the HTML markup
@@ -14,97 +14,69 @@ cov_1pspdc72jq=function(){return actualCoverage;};}return actualCoverage;}cov_1p
14
14
  /**
15
15
  * Konstruktor
16
16
  * @param ref Element Referenz
17
- */constructor(cdRef,ref){cov_1pspdc72jq().f[0]++;cov_1pspdc72jq().s[0]++;this.cdRef=cdRef;cov_1pspdc72jq().s[1]++;this.ref=ref;/**
17
+ */constructor(cdRef,ref){cov_1pspdc72jq().f[0]++;cov_1pspdc72jq().s[0]++;this.cdRef=cdRef;cov_1pspdc72jq().s[1]++;this.ref=ref;// #region Properties
18
+ /**
19
+ * Helper class to display tooltip on correct position
20
+ */cov_1pspdc72jq().s[2]++;this.popupHelper=new PopUpHelper();/**
18
21
  * Defines whether the tooltip is visible
19
- */cov_1pspdc72jq().s[2]++;this._isTooltipVisible=false;/**
20
- * method if content has changed and proportions need to be reset in the UI.
21
- */cov_1pspdc72jq().s[3]++;this.onContentChange=()=>{cov_1pspdc72jq().f[1]++;cov_1pspdc72jq().s[4]++;// Do nothing if is not visible
22
- if(!this._isTooltipVisible){cov_1pspdc72jq().b[0][0]++;cov_1pspdc72jq().s[5]++;return;}else{cov_1pspdc72jq().b[0][1]++;}cov_1pspdc72jq().s[6]++;setTimeout(()=>{cov_1pspdc72jq().f[2]++;cov_1pspdc72jq().s[7]++;this.getLeftPosition();cov_1pspdc72jq().s[8]++;this.getTopPosition();});};/**
23
- * Position of the tooltip. Values: left|top|right|bottom|auto
24
- *
25
- * Value 'auto' can be combined with another value.
26
- */cov_1pspdc72jq().s[9]++;this.position='right|auto';/**
22
+ */cov_1pspdc72jq().s[3]++;this._isTooltipVisible=false;/**
27
23
  * Position of the tooltip on the left
28
- */cov_1pspdc72jq().s[10]++;this.IsTooltipContentVisible=false;/**
24
+ */cov_1pspdc72jq().s[4]++;this.IsTooltipContentVisible=false;/**
29
25
  * Position des Tooltips links
30
- */cov_1pspdc72jq().s[11]++;this.LeftPos=0;/**
26
+ */cov_1pspdc72jq().s[5]++;this.LeftPos=0;/**
31
27
  * Property for enum in Angular HTML template
32
- */cov_1pspdc72jq().s[12]++;this.TooltipPosition=TooltipPosition;/**
28
+ */cov_1pspdc72jq().s[6]++;this.TooltipPosition=TooltipPosition;/**
33
29
  * Position of the tooltip at the top
34
- */cov_1pspdc72jq().s[13]++;this.TopPos=0;}// #endregion Constructors
30
+ */cov_1pspdc72jq().s[7]++;this.TopPos=0;/**
31
+ * Position of the picker arrow at the left
32
+ */cov_1pspdc72jq().s[8]++;this.posArrowLeft=null;/**
33
+ * Position of the picker arrow at the top
34
+ */cov_1pspdc72jq().s[9]++;this.posArrowTop=null;/**
35
+ * Position of the tooltip. Values: left|top|right|bottom|auto
36
+ *
37
+ * Value 'auto' can be combined with another value.
38
+ */cov_1pspdc72jq().s[10]++;this.position='right|auto';/**
39
+ * method if content has changed and proportions need to be reset in the UI.
40
+ */cov_1pspdc72jq().s[11]++;this.onContentChange=()=>{cov_1pspdc72jq().f[1]++;cov_1pspdc72jq().s[12]++;// Do nothing if is not visible
41
+ if(!this._isTooltipVisible){cov_1pspdc72jq().b[0][0]++;cov_1pspdc72jq().s[13]++;return;}else{cov_1pspdc72jq().b[0][1]++;}cov_1pspdc72jq().s[14]++;setTimeout(()=>{cov_1pspdc72jq().f[2]++;cov_1pspdc72jq().s[15]++;this.getLeftPosition();cov_1pspdc72jq().s[16]++;this.getTopPosition();});};}// #endregion Constructors
35
42
  // #region Public Getters And Setters
36
43
  /**
44
+ * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`
45
+ */get inlinemode(){cov_1pspdc72jq().f[3]++;cov_1pspdc72jq().s[17]++;return this._inlinemode;}/**
37
46
  * Setter for inline mode for tooltip
38
- */set inlinemode(value){cov_1pspdc72jq().f[3]++;cov_1pspdc72jq().s[14]++;this._inlinemode=convertToBoolean(value);}/**
47
+ */set inlinemode(value){cov_1pspdc72jq().f[4]++;cov_1pspdc72jq().s[18]++;this._inlinemode=convertToBoolean(value);}/**
39
48
  * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.
40
- */set tooltip(content){cov_1pspdc72jq().f[4]++;cov_1pspdc72jq().s[15]++;if(content!==undefined){cov_1pspdc72jq().b[1][0]++;cov_1pspdc72jq().s[16]++;document.body.appendChild(content.nativeElement);}else{cov_1pspdc72jq().b[1][1]++;}cov_1pspdc72jq().s[17]++;this.tooltipcontainer=content;cov_1pspdc72jq().s[18]++;this.onContentChange();cov_1pspdc72jq().s[19]++;this.cdRef.detectChanges();}/**
41
- * Property for inline mode for tooltip. Sets the display mode on the wrapper element to `inline`
42
- */get inlinemode(){cov_1pspdc72jq().f[5]++;cov_1pspdc72jq().s[20]++;return this._inlinemode;}get tooltop(){cov_1pspdc72jq().f[6]++;cov_1pspdc72jq().s[21]++;return this.tooltipcontainer;}// #endregion Public Getters And Setters
49
+ */set tooltip(content){cov_1pspdc72jq().f[5]++;cov_1pspdc72jq().s[19]++;if(content!==undefined){cov_1pspdc72jq().b[1][0]++;cov_1pspdc72jq().s[20]++;document.body.appendChild(content.nativeElement);}else{cov_1pspdc72jq().b[1][1]++;}cov_1pspdc72jq().s[21]++;this.tooltipcontainer=content;cov_1pspdc72jq().s[22]++;this.onContentChange();cov_1pspdc72jq().s[23]++;this.cdRef.detectChanges();}get tooltop(){cov_1pspdc72jq().f[6]++;cov_1pspdc72jq().s[24]++;return this.tooltipcontainer;}// #endregion Public Getters And Setters
43
50
  // #region Public Methods
44
51
  /**
45
52
  * Returns the position of the tooltip
46
- */GetTooltipPosition(){cov_1pspdc72jq().f[7]++;const validPositions=(cov_1pspdc72jq().s[22]++,this.ValidatePositions());// tslint:disable-next-line:no-bitwise
47
- cov_1pspdc72jq().s[23]++;if((cov_1pspdc72jq().b[3][0]++,this.HasPosition(TooltipPosition.right))&&(cov_1pspdc72jq().b[3][1]++,validPositions&TooltipPosition.right)){cov_1pspdc72jq().b[2][0]++;cov_1pspdc72jq().s[24]++;return TooltipPosition.right;}else{cov_1pspdc72jq().b[2][1]++;}// tslint:disable-next-line:no-bitwise
48
- cov_1pspdc72jq().s[25]++;if((cov_1pspdc72jq().b[5][0]++,this.HasPosition(TooltipPosition.top))&&(cov_1pspdc72jq().b[5][1]++,validPositions&TooltipPosition.top)){cov_1pspdc72jq().b[4][0]++;cov_1pspdc72jq().s[26]++;return TooltipPosition.top;}else{cov_1pspdc72jq().b[4][1]++;}// tslint:disable-next-line:no-bitwise
49
- cov_1pspdc72jq().s[27]++;if((cov_1pspdc72jq().b[7][0]++,this.HasPosition(TooltipPosition.left))&&(cov_1pspdc72jq().b[7][1]++,validPositions&TooltipPosition.left)){cov_1pspdc72jq().b[6][0]++;cov_1pspdc72jq().s[28]++;return TooltipPosition.left;}else{cov_1pspdc72jq().b[6][1]++;}// tslint:disable-next-line:no-bitwise
50
- cov_1pspdc72jq().s[29]++;if((cov_1pspdc72jq().b[9][0]++,this.HasPosition(TooltipPosition.bottom))&&(cov_1pspdc72jq().b[9][1]++,validPositions&TooltipPosition.bottom)){cov_1pspdc72jq().b[8][0]++;cov_1pspdc72jq().s[30]++;return TooltipPosition.bottom;}else{cov_1pspdc72jq().b[8][1]++;}// Get Auto Position or Default
51
- cov_1pspdc72jq().s[31]++;if(this.IsAutoPosition()){cov_1pspdc72jq().b[10][0]++;cov_1pspdc72jq().s[32]++;// tslint:disable-next-line:no-bitwise
52
- if(validPositions&TooltipPosition.right){cov_1pspdc72jq().b[11][0]++;cov_1pspdc72jq().s[33]++;return TooltipPosition.right;}else{cov_1pspdc72jq().b[11][1]++;}// tslint:disable-next-line:no-bitwise
53
- cov_1pspdc72jq().s[34]++;if(validPositions&TooltipPosition.top){cov_1pspdc72jq().b[12][0]++;cov_1pspdc72jq().s[35]++;return TooltipPosition.top;}else{cov_1pspdc72jq().b[12][1]++;}// tslint:disable-next-line:no-bitwise
54
- cov_1pspdc72jq().s[36]++;if(validPositions&TooltipPosition.left){cov_1pspdc72jq().b[13][0]++;cov_1pspdc72jq().s[37]++;return TooltipPosition.left;}else{cov_1pspdc72jq().b[13][1]++;}// tslint:disable-next-line:no-bitwise
55
- cov_1pspdc72jq().s[38]++;if(validPositions&TooltipPosition.bottom){cov_1pspdc72jq().b[14][0]++;cov_1pspdc72jq().s[39]++;return TooltipPosition.bottom;}else{cov_1pspdc72jq().b[14][1]++;}cov_1pspdc72jq().s[40]++;return TooltipPosition.right;}else{cov_1pspdc72jq().b[10][1]++;cov_1pspdc72jq().s[41]++;return this.GetPosition();}}/**
53
+ */GetTooltipPosition(){cov_1pspdc72jq().f[7]++;cov_1pspdc72jq().s[25]++;return this.popupHelper.getDisplayPosition(this.content,this.tooltipcontainer,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true);}/**
56
54
  * Hide tooltip
57
- */HideTooltip(){cov_1pspdc72jq().f[8]++;cov_1pspdc72jq().s[42]++;this._isTooltipVisible=false;cov_1pspdc72jq().s[43]++;this.IsTooltipContentVisible=false;}/**
55
+ */HideTooltip(){cov_1pspdc72jq().f[8]++;cov_1pspdc72jq().s[26]++;this._isTooltipVisible=false;cov_1pspdc72jq().s[27]++;this.IsTooltipContentVisible=false;}/**
58
56
  * Defines whether the tooltip is present in the markup
59
- */IsTooltipVisible(){cov_1pspdc72jq().f[9]++;cov_1pspdc72jq().s[44]++;return this._isTooltipVisible;}/**
57
+ */IsTooltipVisible(){cov_1pspdc72jq().f[9]++;cov_1pspdc72jq().s[28]++;return this._isTooltipVisible;}/**
60
58
  * Show tooltip
61
- */ShowTooltip(){cov_1pspdc72jq().f[10]++;cov_1pspdc72jq().s[45]++;this._isTooltipVisible=true;cov_1pspdc72jq().s[46]++;this.cdRef.detectChanges();cov_1pspdc72jq().s[47]++;setTimeout(()=>{cov_1pspdc72jq().f[11]++;cov_1pspdc72jq().s[48]++;this.getLeftPosition();cov_1pspdc72jq().s[49]++;this.getTopPosition();cov_1pspdc72jq().s[50]++;this.IsTooltipContentVisible=true;});}/**
59
+ */ShowTooltip(){cov_1pspdc72jq().f[10]++;cov_1pspdc72jq().s[29]++;this._isTooltipVisible=true;cov_1pspdc72jq().s[30]++;this.cdRef.detectChanges();cov_1pspdc72jq().s[31]++;setTimeout(()=>{cov_1pspdc72jq().f[11]++;cov_1pspdc72jq().s[32]++;this.getLeftPosition();cov_1pspdc72jq().s[33]++;this.getTopPosition();cov_1pspdc72jq().s[34]++;this.IsTooltipContentVisible=true;});}/**
62
60
  * Calculates the height of the tooltip
63
- */getToolTipHeight(){cov_1pspdc72jq().f[12]++;cov_1pspdc72jq().s[51]++;if(this.tooltipcontainer){cov_1pspdc72jq().b[15][0]++;cov_1pspdc72jq().s[52]++;return(cov_1pspdc72jq().b[16][0]++,this.tooltipcontainer.nativeElement.firstElementChild.clientHeight)??(cov_1pspdc72jq().b[16][1]++,0);}else{cov_1pspdc72jq().b[15][1]++;cov_1pspdc72jq().s[53]++;return 0;}}/**
61
+ */getToolTipHeight(){cov_1pspdc72jq().f[12]++;cov_1pspdc72jq().s[35]++;return this.popupHelper.getPopupHeight(this.tooltipcontainer);}/**
64
62
  * Calculates the width of the tooltips
65
- */getToolTipWidth(){cov_1pspdc72jq().f[13]++;cov_1pspdc72jq().s[54]++;if(this.tooltipcontainer){cov_1pspdc72jq().b[17][0]++;cov_1pspdc72jq().s[55]++;return this.tooltipcontainer.nativeElement.firstElementChild.clientWidth;}else{cov_1pspdc72jq().b[17][1]++;cov_1pspdc72jq().s[56]++;return 0;}}/**
63
+ */getToolTipWidth(){cov_1pspdc72jq().f[13]++;cov_1pspdc72jq().s[36]++;return this.popupHelper.getPopupWidth(this.tooltipcontainer);}/**
66
64
  * Detect Changes after view checked. Prevent ExpressionChangedAfterItHasBeenCheckedError error
67
- */ngAfterViewChecked(){cov_1pspdc72jq().f[14]++;cov_1pspdc72jq().s[57]++;// Do nothing if is not visibile
68
- if(!this._isTooltipVisible){cov_1pspdc72jq().b[18][0]++;cov_1pspdc72jq().s[58]++;return;}else{cov_1pspdc72jq().b[18][1]++;}cov_1pspdc72jq().s[59]++;this.cdRef.detectChanges();}/**
65
+ */ngAfterViewChecked(){cov_1pspdc72jq().f[14]++;cov_1pspdc72jq().s[37]++;// Do nothing if is not visibile
66
+ if(!this._isTooltipVisible){cov_1pspdc72jq().b[2][0]++;cov_1pspdc72jq().s[38]++;return;}else{cov_1pspdc72jq().b[2][1]++;}cov_1pspdc72jq().s[39]++;this.cdRef.detectChanges();}/**
69
67
  * Detect UI Changes to Calculate Tooltip correct
70
- */ngDoCheck(){cov_1pspdc72jq().f[15]++;cov_1pspdc72jq().s[60]++;// Do nothing if is not visibile
71
- if(!this._isTooltipVisible){cov_1pspdc72jq().b[19][0]++;cov_1pspdc72jq().s[61]++;return;}else{cov_1pspdc72jq().b[19][1]++;}cov_1pspdc72jq().s[62]++;this.getLeftPosition();cov_1pspdc72jq().s[63]++;this.getTopPosition();}/**
68
+ */ngDoCheck(){cov_1pspdc72jq().f[15]++;cov_1pspdc72jq().s[40]++;// Do nothing if is not visibile
69
+ if(!this._isTooltipVisible){cov_1pspdc72jq().b[3][0]++;cov_1pspdc72jq().s[41]++;return;}else{cov_1pspdc72jq().b[3][1]++;}cov_1pspdc72jq().s[42]++;this.getLeftPosition();cov_1pspdc72jq().s[43]++;this.getTopPosition();}/**
72
70
  * Event when the control is destroyed.
73
- */ngOnDestroy(){cov_1pspdc72jq().f[16]++;cov_1pspdc72jq().s[64]++;// Unregister Event Listener
74
- window.removeEventListener('scroll',this.onContentChange,true);cov_1pspdc72jq().s[65]++;window.removeEventListener('resize',this.onContentChange,true);cov_1pspdc72jq().s[66]++;if(this.tooltipcontainer!==undefined){cov_1pspdc72jq().b[20][0]++;cov_1pspdc72jq().s[67]++;document.body.removeChild(this.tooltipcontainer.nativeElement);}else{cov_1pspdc72jq().b[20][1]++;}}/**
71
+ */ngOnDestroy(){cov_1pspdc72jq().f[16]++;cov_1pspdc72jq().s[44]++;// Unregister Event Listener
72
+ window.removeEventListener('scroll',this.onContentChange,true);cov_1pspdc72jq().s[45]++;window.removeEventListener('resize',this.onContentChange,true);cov_1pspdc72jq().s[46]++;if(this.tooltipcontainer!==undefined){cov_1pspdc72jq().b[4][0]++;cov_1pspdc72jq().s[47]++;document.body.removeChild(this.tooltipcontainer.nativeElement);}else{cov_1pspdc72jq().b[4][1]++;}}/**
75
73
  * Event when the control is initialized
76
- */ngOnInit(){cov_1pspdc72jq().f[17]++;cov_1pspdc72jq().s[68]++;// Register Event Listener
77
- window.addEventListener('scroll',this.onContentChange,true);cov_1pspdc72jq().s[69]++;window.addEventListener('resize',this.onContentChange,true);cov_1pspdc72jq().s[70]++;if(this.tooltipcontainer!==undefined){cov_1pspdc72jq().b[21][0]++;cov_1pspdc72jq().s[71]++;document.body.appendChild(this.tooltipcontainer.nativeElement);}else{cov_1pspdc72jq().b[21][1]++;}}// #endregion Protected Abstract Methods
74
+ */ngOnInit(){cov_1pspdc72jq().f[17]++;cov_1pspdc72jq().s[48]++;// Register Event Listener
75
+ window.addEventListener('scroll',this.onContentChange,true);cov_1pspdc72jq().s[49]++;window.addEventListener('resize',this.onContentChange,true);cov_1pspdc72jq().s[50]++;if(this.tooltipcontainer!==undefined){cov_1pspdc72jq().b[5][0]++;cov_1pspdc72jq().s[51]++;document.body.appendChild(this.tooltipcontainer.nativeElement);}else{cov_1pspdc72jq().b[5][1]++;}}// #endregion Protected Methods
78
76
  // #region Private Methods
79
77
  /**
80
- * Returns the defined position for the tooltip
81
- */GetPosition(){cov_1pspdc72jq().f[18]++;const positions=(cov_1pspdc72jq().s[72]++,this.position.split('|'));cov_1pspdc72jq().s[73]++;if(this.HasPosition(TooltipPosition.left)){cov_1pspdc72jq().b[22][0]++;cov_1pspdc72jq().s[74]++;return TooltipPosition.left;}else{cov_1pspdc72jq().b[22][1]++;}cov_1pspdc72jq().s[75]++;if(this.HasPosition(TooltipPosition.top)){cov_1pspdc72jq().b[23][0]++;cov_1pspdc72jq().s[76]++;return TooltipPosition.top;}else{cov_1pspdc72jq().b[23][1]++;}cov_1pspdc72jq().s[77]++;if(this.HasPosition(TooltipPosition.right)){cov_1pspdc72jq().b[24][0]++;cov_1pspdc72jq().s[78]++;return TooltipPosition.right;}else{cov_1pspdc72jq().b[24][1]++;}cov_1pspdc72jq().s[79]++;if(this.HasPosition(TooltipPosition.bottom)){cov_1pspdc72jq().b[25][0]++;cov_1pspdc72jq().s[80]++;return TooltipPosition.bottom;}else{cov_1pspdc72jq().b[25][1]++;}// Default Position if empty
82
- cov_1pspdc72jq().s[81]++;return TooltipPosition.right;}/**
83
- * Returns whether the position has been configured
84
- *
85
- * @param position Position to be checked
86
- */HasPosition(position){cov_1pspdc72jq().f[19]++;const positions=(cov_1pspdc72jq().s[82]++,this.position.split('|'));cov_1pspdc72jq().s[83]++;if((cov_1pspdc72jq().b[27][0]++,position===TooltipPosition.right)&&(cov_1pspdc72jq().b[27][1]++,positions.indexOf('right')>=0)){cov_1pspdc72jq().b[26][0]++;cov_1pspdc72jq().s[84]++;return true;}else{cov_1pspdc72jq().b[26][1]++;}cov_1pspdc72jq().s[85]++;if((cov_1pspdc72jq().b[29][0]++,position===TooltipPosition.top)&&(cov_1pspdc72jq().b[29][1]++,positions.indexOf('top')>=0)){cov_1pspdc72jq().b[28][0]++;cov_1pspdc72jq().s[86]++;return true;}else{cov_1pspdc72jq().b[28][1]++;}cov_1pspdc72jq().s[87]++;if((cov_1pspdc72jq().b[31][0]++,position===TooltipPosition.left)&&(cov_1pspdc72jq().b[31][1]++,positions.indexOf('left')>=0)){cov_1pspdc72jq().b[30][0]++;cov_1pspdc72jq().s[88]++;return true;}else{cov_1pspdc72jq().b[30][1]++;}cov_1pspdc72jq().s[89]++;if((cov_1pspdc72jq().b[33][0]++,position===TooltipPosition.bottom)&&(cov_1pspdc72jq().b[33][1]++,positions.indexOf('bottom')>=0)){cov_1pspdc72jq().b[32][0]++;cov_1pspdc72jq().s[90]++;return true;}else{cov_1pspdc72jq().b[32][1]++;}cov_1pspdc72jq().s[91]++;return false;}/**
87
- * Defines whether AutoPosition is active
88
- */IsAutoPosition(){cov_1pspdc72jq().f[20]++;const positions=(cov_1pspdc72jq().s[92]++,this.position.split('|'));cov_1pspdc72jq().s[93]++;return positions.indexOf('auto')>=0;}/**
89
- * Checks whether the position is valid or whether the tooltip on the position has space
90
- */ValidatePositions(){cov_1pspdc72jq().f[21]++;cov_1pspdc72jq().s[94]++;// Check if Container is false
91
- if(this.tooltipcontainer===undefined){cov_1pspdc72jq().b[34][0]++;cov_1pspdc72jq().s[95]++;return TooltipPosition.right;}else{cov_1pspdc72jq().b[34][1]++;}let allowedPositions=(cov_1pspdc72jq().s[96]++,TooltipPosition.none);const basePosition=(cov_1pspdc72jq().s[97]++,this.content.nativeElement.firstElementChild.getBoundingClientRect());const tooltipRect=(cov_1pspdc72jq().s[98]++,this.tooltipcontainer.nativeElement.firstElementChild.getBoundingClientRect());const leftPosOk=(cov_1pspdc72jq().s[99]++,basePosition.left-tooltipRect.width+this.getTooltipOffset()*-1>0);const rightPosOk=(cov_1pspdc72jq().s[100]++,basePosition.right+tooltipRect.width+this.getTooltipOffset()<window.innerWidth);const topPosOk=(cov_1pspdc72jq().s[101]++,basePosition.top-tooltipRect.height>0);const bottomPosOk=(cov_1pspdc72jq().s[102]++,basePosition.bottom+tooltipRect.height<window.innerHeight);const leftHalfPosOk=(cov_1pspdc72jq().s[103]++,basePosition.left-tooltipRect.width/2>0);const rightHalfPosOk=(cov_1pspdc72jq().s[104]++,basePosition.right+tooltipRect.width/2<window.innerWidth);const topHalfPosOk=(cov_1pspdc72jq().s[105]++,basePosition.top-tooltipRect.height/2>0);const bottomHalfPosOk=(cov_1pspdc72jq().s[106]++,basePosition.bottom+tooltipRect.height/2<window.innerHeight);cov_1pspdc72jq().s[107]++;if((cov_1pspdc72jq().b[36][0]++,leftPosOk)&&(cov_1pspdc72jq().b[36][1]++,topHalfPosOk)&&(cov_1pspdc72jq().b[36][2]++,bottomHalfPosOk)){cov_1pspdc72jq().b[35][0]++;cov_1pspdc72jq().s[108]++;// tslint:disable-next-line:no-bitwise
92
- allowedPositions=allowedPositions|TooltipPosition.left;}else{cov_1pspdc72jq().b[35][1]++;}cov_1pspdc72jq().s[109]++;if((cov_1pspdc72jq().b[38][0]++,rightPosOk)&&(cov_1pspdc72jq().b[38][1]++,topHalfPosOk)&&(cov_1pspdc72jq().b[38][2]++,bottomHalfPosOk)){cov_1pspdc72jq().b[37][0]++;cov_1pspdc72jq().s[110]++;// tslint:disable-next-line:no-bitwise
93
- allowedPositions=allowedPositions|TooltipPosition.right;}else{cov_1pspdc72jq().b[37][1]++;}cov_1pspdc72jq().s[111]++;if((cov_1pspdc72jq().b[40][0]++,topPosOk)&&(cov_1pspdc72jq().b[40][1]++,leftHalfPosOk)&&(cov_1pspdc72jq().b[40][2]++,rightHalfPosOk)){cov_1pspdc72jq().b[39][0]++;cov_1pspdc72jq().s[112]++;// tslint:disable-next-line:no-bitwise
94
- allowedPositions=allowedPositions|TooltipPosition.top;}else{cov_1pspdc72jq().b[39][1]++;}cov_1pspdc72jq().s[113]++;if((cov_1pspdc72jq().b[42][0]++,bottomPosOk)&&(cov_1pspdc72jq().b[42][1]++,leftHalfPosOk)&&(cov_1pspdc72jq().b[42][2]++,rightHalfPosOk)){cov_1pspdc72jq().b[41][0]++;cov_1pspdc72jq().s[114]++;// tslint:disable-next-line:no-bitwise
95
- allowedPositions=allowedPositions|TooltipPosition.bottom;}else{cov_1pspdc72jq().b[41][1]++;}cov_1pspdc72jq().s[115]++;return allowedPositions;}/**
96
78
  * Calculates the position of the tooltip from links
97
- */getLeftPosition(){cov_1pspdc72jq().f[22]++;cov_1pspdc72jq().s[116]++;if((cov_1pspdc72jq().b[44][0]++,this.content!==null)&&(cov_1pspdc72jq().b[44][1]++,this.content!==undefined)){cov_1pspdc72jq().b[43][0]++;const item=(cov_1pspdc72jq().s[117]++,this.content.nativeElement);cov_1pspdc72jq().s[118]++;if(item.children.length>=1){cov_1pspdc72jq().b[45][0]++;const childItem=(cov_1pspdc72jq().s[119]++,item.firstElementChild);const contentPosition=(cov_1pspdc72jq().s[120]++,childItem.getBoundingClientRect());cov_1pspdc72jq().s[121]++;switch(this.GetTooltipPosition()){case TooltipPosition.top:cov_1pspdc72jq().b[46][0]++;cov_1pspdc72jq().s[122]++;this.LeftPos=contentPosition.left+contentPosition.width/2-this.getToolTipWidth()/2;cov_1pspdc72jq().s[123]++;return contentPosition.left+contentPosition.width/2-this.getToolTipWidth()/2;case TooltipPosition.right:cov_1pspdc72jq().b[46][1]++;cov_1pspdc72jq().s[124]++;this.LeftPos=contentPosition.left+contentPosition.width+this.getTooltipOffset();cov_1pspdc72jq().s[125]++;return contentPosition.left+contentPosition.width+this.getTooltipOffset();case TooltipPosition.bottom:cov_1pspdc72jq().b[46][2]++;cov_1pspdc72jq().s[126]++;this.LeftPos=contentPosition.left+contentPosition.width/2-this.getToolTipWidth()/2;cov_1pspdc72jq().s[127]++;return contentPosition.left+contentPosition.width/2-this.getToolTipWidth()/2;case TooltipPosition.left:cov_1pspdc72jq().b[46][3]++;cov_1pspdc72jq().s[128]++;this.LeftPos=contentPosition.left-this.getToolTipWidth()+this.getTooltipOffset()*-1;cov_1pspdc72jq().s[129]++;return contentPosition.left-this.getToolTipWidth()+this.getTooltipOffset()*-1;}cov_1pspdc72jq().s[130]++;return this.content.nativeElement.offsetTop;}else{cov_1pspdc72jq().b[45][1]++;cov_1pspdc72jq().s[131]++;return this.content.nativeElement.offsetTop;}}else{cov_1pspdc72jq().b[43][1]++;cov_1pspdc72jq().s[132]++;return this.ref.nativeElement.offsetLeft;}}/**
79
+ */getLeftPosition(){cov_1pspdc72jq().f[18]++;const value=(cov_1pspdc72jq().s[52]++,this.popupHelper.getPositionLeft(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_1pspdc72jq().s[53]++;this.LeftPos=value;const requiredPosition=(cov_1pspdc72jq().s[54]++,this.GetTooltipPosition());cov_1pspdc72jq().s[55]++;if((cov_1pspdc72jq().b[7][0]++,requiredPosition===TooltipPosition.left)||(cov_1pspdc72jq().b[7][1]++,requiredPosition===TooltipPosition.right)){cov_1pspdc72jq().b[6][0]++;cov_1pspdc72jq().s[56]++;this.posArrowTop=this.getToolTipHeight()/2-6.5;}else{cov_1pspdc72jq().b[6][1]++;cov_1pspdc72jq().s[57]++;this.posArrowTop=null;}cov_1pspdc72jq().s[58]++;return value;}/**
98
80
  * Calculates the position of the tooltip from the top
99
- */getTopPosition(){cov_1pspdc72jq().f[23]++;cov_1pspdc72jq().s[133]++;if((cov_1pspdc72jq().b[48][0]++,this.content!==null)&&(cov_1pspdc72jq().b[48][1]++,this.content!==undefined)){cov_1pspdc72jq().b[47][0]++;const item=(cov_1pspdc72jq().s[134]++,this.content.nativeElement);cov_1pspdc72jq().s[135]++;if(item.children.length>=1){cov_1pspdc72jq().b[49][0]++;const childItem=(cov_1pspdc72jq().s[136]++,item.firstElementChild);const contentPosition=(cov_1pspdc72jq().s[137]++,childItem.getBoundingClientRect());// Get Position with Scroll (Scrollbars inside page should be substracted)
100
- const contentPositionTop=(cov_1pspdc72jq().s[138]++,childItem.offsetTop+this.getOffsetTopParent(childItem.offsetParent)-this.getScrollTopParent(childItem.parentElement));cov_1pspdc72jq().s[139]++;switch(this.GetTooltipPosition()){case TooltipPosition.top:cov_1pspdc72jq().b[50][0]++;cov_1pspdc72jq().s[140]++;this.TopPos=contentPositionTop-this.getToolTipHeight()+this.getTooltipOffset()*-1;cov_1pspdc72jq().s[141]++;return contentPositionTop-this.getToolTipHeight()+this.getTooltipOffset()*-1;case TooltipPosition.right:cov_1pspdc72jq().b[50][1]++;cov_1pspdc72jq().s[142]++;this.TopPos=contentPositionTop+contentPosition.height/2-this.getToolTipHeight()/2;cov_1pspdc72jq().s[143]++;return contentPositionTop+contentPosition.height/2-this.getToolTipHeight()/2;case TooltipPosition.bottom:cov_1pspdc72jq().b[50][2]++;cov_1pspdc72jq().s[144]++;this.TopPos=contentPositionTop+contentPosition.height+this.getTooltipOffset();cov_1pspdc72jq().s[145]++;return contentPositionTop+contentPosition.height+this.getTooltipOffset();case TooltipPosition.left:cov_1pspdc72jq().b[50][3]++;cov_1pspdc72jq().s[146]++;this.TopPos=contentPositionTop+contentPosition.height/2-this.getToolTipHeight()/2;cov_1pspdc72jq().s[147]++;return contentPositionTop+contentPosition.height/2-this.getToolTipHeight()/2;}cov_1pspdc72jq().s[148]++;return childItem.clientTop+childItem.offsetTop-(this.getToolTipHeight()/2-childItem.clientHeight/2);}else{cov_1pspdc72jq().b[49][1]++;cov_1pspdc72jq().s[149]++;return this.content.nativeElement.offsetTop;}}else{cov_1pspdc72jq().b[47][1]++;cov_1pspdc72jq().s[150]++;return this.ref.nativeElement.offsetTop;}}/**
101
- * Calculates the top of the page inside all elements
102
- * @param element HTML Element
103
- * @returns summarized top value for absolute position
104
- */getOffsetTopParent(element){cov_1pspdc72jq().f[24]++;cov_1pspdc72jq().s[151]++;if(!element.offsetParent){cov_1pspdc72jq().b[51][0]++;cov_1pspdc72jq().s[152]++;return element.offsetTop;}else{cov_1pspdc72jq().b[51][1]++;}const parentValue=(cov_1pspdc72jq().s[153]++,this.getOffsetTopParent(element.offsetParent));let offset=(cov_1pspdc72jq().s[154]++,element.offsetTop);cov_1pspdc72jq().s[155]++;return parentValue+offset;}/**
105
- * Caclulate Scrollbars inside tree
106
- * @param element HTML Element
107
- * @returns Scroll top value of element with all childs
108
- */getScrollTopParent(element){cov_1pspdc72jq().f[25]++;cov_1pspdc72jq().s[156]++;// Body Scroll should not be calculated
109
- if(!element.parentElement){cov_1pspdc72jq().b[52][0]++;cov_1pspdc72jq().s[157]++;return 0;}else{cov_1pspdc72jq().b[52][1]++;}const parentValue=(cov_1pspdc72jq().s[158]++,this.getScrollTopParent(element.parentElement));cov_1pspdc72jq().s[159]++;return parentValue+element.scrollTop;}}cov_1pspdc72jq().s[160]++;SacTooltipCommon.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacTooltipCommon,deps:[{token:i0.ChangeDetectorRef},{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive});cov_1pspdc72jq().s[161]++;SacTooltipCommon.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"13.2.7",type:SacTooltipCommon,inputs:{position:"position",tooltiptext:"tooltiptext",inlinemode:"inlinemode"},viewQueries:[{propertyName:"content",first:true,predicate:["container"],descendants:true,static:true},{propertyName:"tooltip",first:true,predicate:["tooltip"],descendants:true}],ngImport:i0});cov_1pspdc72jq().s[162]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacTooltipCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_1pspdc72jq().f[26]++;cov_1pspdc72jq().s[163]++;return[{type:i0.ChangeDetectorRef},{type:i0.ElementRef}];},propDecorators:{position:[{type:Input}],tooltiptext:[{type:Input}],content:[{type:ViewChild,args:['container',{static:true}]}],inlinemode:[{type:Input}],tooltip:[{type:ViewChild,args:['tooltip',{static:false}]}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUdULEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUV4RDs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxPQUFnQixnQkFBZ0I7SUFpRXBDLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7OztPQUdHO0lBQ0gsWUFBNkIsS0FBd0IsRUFBbUIsR0FBZTtRQUExRCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUFtQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBbEV2Rjs7V0FFRztRQUNLLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUMzQzs7V0FFRztRQUNjLG9CQUFlLEdBQUcsR0FBUyxFQUFFO1lBQzVDLCtCQUErQjtZQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMzQixPQUFPO2FBQ1I7WUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBTUY7Ozs7V0FJRztRQUVJLGFBQVEsR0FBVyxZQUFZLENBQUM7UUFZdkM7O1dBRUc7UUFDSSw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFDaEQ7O1dBRUc7UUFDSSxZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQzNCOztXQUVHO1FBQ0ksb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFDekM7O1dBRUc7UUFDSSxXQUFNLEdBQVcsQ0FBQyxDQUFDO0lBVWlFLENBQUM7SUFFNUYsMEJBQTBCO0lBRTFCLHFDQUFxQztJQUVyQzs7T0FFRztJQUNILElBQ1csVUFBVSxDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLE9BQU8sQ0FBQyxPQUFtQjtRQUNwQyxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDekIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELHdDQUF3QztJQUV4Qyx5QkFBeUI7SUFFekI7O09BRUc7SUFDSSxrQkFBa0I7UUFDdkIsTUFBTSxjQUFjLEdBQW9CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRWpFLHNDQUFzQztRQUN0QyxJQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztZQUN2QyxjQUFjLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFDdEM7WUFDQSxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDOUI7UUFFRCxzQ0FBc0M7UUFDdEMsSUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDckMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQ3BDO1lBQ0EsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQzVCO1FBRUQsc0NBQXNDO1FBQ3RDLElBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3RDLGNBQWMsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUNyQztZQUNBLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztTQUM3QjtRQUVELHNDQUFzQztRQUN0QyxJQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxjQUFjLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFDdkM7WUFDQSxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUM7U0FDL0I7UUFFRCwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDekIsc0NBQXNDO1lBQ3RDLElBQUksY0FBYyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFDLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQzthQUM5QjtZQUVELHNDQUFzQztZQUN0QyxJQUFJLGNBQWMsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUM7YUFDNUI7WUFFRCxzQ0FBc0M7WUFDdEMsSUFBSSxjQUFjLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDekMsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO2FBQzdCO1lBRUQsc0NBQXNDO1lBQ3RDLElBQUksY0FBYyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNDLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQzthQUMvQjtZQUVELE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQztTQUM5QjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztTQUNoRjthQUFNO1lBQ0wsT0FBTyxDQUFDLENBQUM7U0FDVjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDcEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztTQUMxRTthQUFNO1lBQ0wsT0FBTyxDQUFDLENBQUM7U0FDVjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLGtCQUFrQjtRQUN2QixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVM7UUFDZCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsNEJBQTRCO1FBQzVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFakUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYiwwQkFBMEI7UUFDMUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQVdELHdDQUF3QztJQUV4QywwQkFBMEI7SUFFMUI7O09BRUc7SUFDSyxXQUFXO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO1NBQzdCO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUM7U0FDNUI7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNDLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQztTQUM5QjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUMsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQy9CO1FBRUQsNEJBQTRCO1FBQzVCLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFdBQVcsQ0FBQyxRQUF5QjtRQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQyxJQUFJLFFBQVEsS0FBSyxlQUFlLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFFBQVEsS0FBSyxlQUFlLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFFBQVEsS0FBSyxlQUFlLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUNFLFFBQVEsS0FBSyxlQUFlLENBQUMsTUFBTTtZQUNuQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFDaEM7WUFDQSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssaUJBQWlCO1FBQ3ZCLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdkMsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxnQkFBZ0IsR0FBb0IsZUFBZSxDQUFDLElBQUksQ0FBQztRQUM3RCxNQUFNLFlBQVksR0FBWSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25HLE1BQU0sV0FBVyxHQUFZLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUUzRyxNQUFNLFNBQVMsR0FBWSxZQUFZLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RyxNQUFNLFVBQVUsR0FBWSxZQUFZLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNqSCxNQUFNLFFBQVEsR0FBWSxZQUFZLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sV0FBVyxHQUFZLFlBQVksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRTNGLE1BQU0sYUFBYSxHQUFZLFlBQVksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sY0FBYyxHQUFZLFlBQVksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUMvRixNQUFNLFlBQVksR0FBWSxZQUFZLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1RSxNQUFNLGVBQWUsR0FBWSxZQUFZLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFFbkcsSUFBSSxTQUFTLElBQUksWUFBWSxJQUFJLGVBQWUsRUFBRTtZQUNoRCxzQ0FBc0M7WUFDdEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQztTQUM1RDtRQUVELElBQUksVUFBVSxJQUFJLFlBQVksSUFBSSxlQUFlLEVBQUU7WUFDakQsc0NBQXNDO1lBQ3RDLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDN0Q7UUFFRCxJQUFJLFFBQVEsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFO1lBQy9DLHNDQUFzQztZQUN0QyxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxXQUFXLElBQUksYUFBYSxJQUFJLGNBQWMsRUFBRTtZQUNsRCxzQ0FBc0M7WUFDdEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztTQUM5RDtRQUVELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBRXhDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWdDLENBQUM7Z0JBQ3hELE1BQU0sZUFBZSxHQUFZLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUVuRSxRQUFRLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO29CQUNqQyxLQUFLLGVBQWUsQ0FBQyxHQUFHO3dCQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDN0YsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FDcEYsQ0FBQztvQkFDSixLQUFLLGVBQWUsQ0FBQyxLQUFLO3dCQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzt3QkFDdEYsT0FBTyxlQUFlLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQ2hGLEtBQUssZUFBZSxDQUFDLE1BQU07d0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUM3RixPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3pGLEtBQUssZUFBZSxDQUFDLElBQUk7d0JBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM5RixPQUFPLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDekY7Z0JBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7YUFDN0M7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7YUFDN0M7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFFeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBZ0MsQ0FBQztnQkFDeEQsTUFBTSxlQUFlLEdBQVksU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBRW5FLDBFQUEwRTtnQkFDMUUsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsWUFBMkIsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRW5LLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7b0JBQ2pDLEtBQUssZUFBZSxDQUFDLEdBQUc7d0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM1RixPQUFPLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdkYsS0FBSyxlQUFlLENBQUMsS0FBSzt3QkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDaEcsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDM0YsS0FBSyxlQUFlLENBQUMsTUFBTTt3QkFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsR0FBRyxlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3dCQUNwRixPQUFPLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQy9FLEtBQUssZUFBZSxDQUFDLElBQUk7d0JBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLEdBQUcsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUM1RixPQUFPLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzFGO2dCQUVELE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2pIO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2FBQzdDO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0IsQ0FBQyxPQUFvQjtRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN6QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDMUI7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFlBQTJCLENBQUMsQ0FBQztRQUNqRixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQy9CLE9BQU8sV0FBVyxHQUFHLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGtCQUFrQixDQUFDLE9BQW9CO1FBQzdDLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUMxQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxPQUFPLFdBQVcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3pDLENBQUM7OzZHQTdmbUIsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFEckMsU0FBUztpSUFxQ0QsUUFBUTtzQkFEZCxLQUFLO2dCQU1DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBTUMsT0FBTztzQkFEYixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBc0M3QixVQUFVO3NCQURwQixLQUFLO2dCQVNLLE9BQU87c0JBRGpCLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBEaXJlY3RpdmUsXHJcbiAgRG9DaGVjayxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZW51bXMnO1xyXG5cclxuLyoqXHJcbiAqIFRvb2x0aXAgQ29tcG9uZW50XHJcbiAqXHJcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgaW4gdGhlIEhUTUwgbWFya3VwXHJcbiAqIC0gY29udGFpbmVyOiBDb250YWluZXIgZm9yIG5nLWNvbnRlbnQgaW4gd2hpY2ggdGhlIGVsZW1lbnQgaXMgZGlzcGxheWVkIHdoZXJlIHRoZSB0b29sdGlwIGlzIGF0dGFjaGVkLlxyXG4gKiAtIHRvb2x0aXA6IENvbnRhaW5lciBmb3IgdG9vbHRpcFxyXG4gKlxyXG4gKiBUb29sdGlwIG11c3QgYmUgZGlzcGxheWVkIGluIDIgc3RlcHMuIEluIGEgZmlyc3Qgc3RlcCB0aGUgdG9vbHRpcCBtYXJrdXAgaXMgY3JlYXRlZCB3aXRoIChuZ0lmKS4gSW4gYSAybmQgc3RlcFxyXG4gKiB0aGUgdG9vbHRpcCBjYW4gdGhlbiBiZSBkaXNwbGF5ZWQgdmlhIHRoZSBDU1MgdmlzaWJpbGl0eS4gSWYgdGhpcyBpcyBub3QgZG9uZSwgaXQgY2FuIGxlYWQgdG8gYSBmbGlja2VyaW5nIGVmZmVjdCBpbiBjZXJ0YWluIGJyb3dzZXJzLlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIERvQ2hlY2sge1xyXG4gIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvKipcclxuICAgKiBJbmxpbmUgbW9kZSBmb3IgdG9vbHRpcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2lubGluZW1vZGU6IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHZpc2libGVcclxuICAgKi9cclxuICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgb25Db250ZW50Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJsZVxyXG4gICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcclxuICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuICAvKipcclxuICAgKiBDb250YWluZXJzIGZvciB0aGUgdG9vbHRpcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9vbHRpcGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXHJcbiAgICpcclxuICAgKiBWYWx1ZSAnYXV0bycgY2FuIGJlIGNvbWJpbmVkIHdpdGggYW5vdGhlciB2YWx1ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwb3NpdGlvbjogc3RyaW5nID0gJ3JpZ2h0fGF1dG8nO1xyXG4gIC8qKlxyXG4gICAqIFRleHQgZm9yIFRvb2xUaXBcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0b29sdGlwdGV4dDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIE5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgY29udGVudCAoZS5nLiBpY29uKSBvbiB3aGljaCB0aGUgdG9vbHRpcCBpcyBkaXNwbGF5ZWQuXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwdWJsaWMgY29udGVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIG9uIHRoZSBsZWZ0XHJcbiAgICovXHJcbiAgcHVibGljIElzVG9vbHRpcENvbnRlbnRWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogUG9zaXRpb24gZGVzIFRvb2x0aXBzIGxpbmtzXHJcbiAgICovXHJcbiAgcHVibGljIExlZnRQb3M6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBhdCB0aGUgdG9wXHJcbiAgICovXHJcbiAgcHVibGljIFRvcFBvczogbnVtYmVyID0gMDtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIHJlZiBFbGVtZW50IFJlZmVyZW56XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVhZG9ubHkgcmVmOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGlubGluZW1vZGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lubGluZW1vZGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHRlciBmb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAuIElzIHJlcXVpcmVkIGFzIHRoZSB0b29sdGlwIGNhbiBiZSBoaWRkZW4gdmlhIG5nSWYuXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBzZXQgdG9vbHRpcChjb250ZW50OiBFbGVtZW50UmVmKSB7XHJcbiAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRvb2x0aXBjb250YWluZXIgPSBjb250ZW50O1xyXG4gICAgdGhpcy5vbkNvbnRlbnRDaGFuZ2UoKTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvcGVydHkgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwLiBTZXRzIHRoZSBkaXNwbGF5IG1vZGUgb24gdGhlIHdyYXBwZXIgZWxlbWVudCB0byBgaW5saW5lYFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgaW5saW5lbW9kZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmxpbmVtb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0b29sdG9wKCk6IEVsZW1lbnRSZWYge1xyXG4gICAgcmV0dXJuIHRoaXMudG9vbHRpcGNvbnRhaW5lcjtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcFxyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGNvbnN0IHZhbGlkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSB0aGlzLlZhbGlkYXRlUG9zaXRpb25zKCk7XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24ucmlnaHQpICYmXHJcbiAgICAgIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0XHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi50b3ApICYmXHJcbiAgICAgIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLnRvcFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpICYmXHJcbiAgICAgIHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmxlZnRcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24uYm90dG9tKSAmJlxyXG4gICAgICB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21cclxuICAgICkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHZXQgQXV0byBQb3NpdGlvbiBvciBEZWZhdWx0XHJcbiAgICBpZiAodGhpcy5Jc0F1dG9Qb3NpdGlvbigpKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xyXG4gICAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgaWYgKHZhbGlkUG9zaXRpb25zICYgVG9vbHRpcFBvc2l0aW9uLmxlZnQpIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5ib3R0b20pIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIaWRlIHRvb2x0aXBcclxuICAgKi9cclxuICBwdWJsaWMgSGlkZVRvb2x0aXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgcHJlc2VudCBpbiB0aGUgbWFya3VwXHJcbiAgICovXHJcbiAgcHVibGljIElzVG9vbHRpcFZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNUb29sdGlwVmlzaWJsZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgdG9vbHRpcFxyXG4gICAqL1xyXG4gIHB1YmxpYyBTaG93VG9vbHRpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSB0cnVlO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcclxuICAgICAgdGhpcy5Jc1Rvb2x0aXBDb250ZW50VmlzaWJsZSA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBvZiB0aGUgdG9vbHRpcFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRUb29sVGlwSGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGllbnRIZWlnaHQgPz8gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHRvb2x0aXBzXHJcbiAgICovXHJcbiAgcHVibGljIGdldFRvb2xUaXBXaWR0aCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xpZW50V2lkdGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVjdCBDaGFuZ2VzIGFmdGVyIHZpZXcgY2hlY2tlZC4gUHJldmVudCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yIGVycm9yXHJcbiAgICovXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXHJcbiAgICBpZiAoIXRoaXMuX2lzVG9vbHRpcFZpc2libGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZWN0IFVJIENoYW5nZXMgdG8gQ2FsY3VsYXRlIFRvb2x0aXAgY29ycmVjdFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmlsZVxyXG4gICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBkZXN0cm95ZWQuXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBpbml0aWFsaXplZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuXHJcbiAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gUHJvdGVjdGVkIEFic3RyYWN0IE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogT2Zmc2V0IGZvciBUb29sdGlwLiBSZXF1aXJlZCBmb3IgQlM0L0JTNSB0byBjcmVhdGUgcGFkZGluZ1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUb29sdGlwT2Zmc2V0KCk6IG51bWJlcjtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgQWJzdHJhY3QgTWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBkZWZpbmVkIHBvc2l0aW9uIGZvciB0aGUgdG9vbHRpcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgR2V0UG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMucG9zaXRpb24uc3BsaXQoJ3wnKTtcclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24ubGVmdCkpIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi50b3ApKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24udG9wO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5yaWdodCkpIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24uYm90dG9tKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEZWZhdWx0IFBvc2l0aW9uIGlmIGVtcHR5XHJcbiAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwb3NpdGlvbiBoYXMgYmVlbiBjb25maWd1cmVkXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcG9zaXRpb24gUG9zaXRpb24gdG8gYmUgY2hlY2tlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgSGFzUG9zaXRpb24ocG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5wb3NpdGlvbi5zcGxpdCgnfCcpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0ICYmIHBvc2l0aW9ucy5pbmRleE9mKCdyaWdodCcpID49IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24udG9wICYmIHBvc2l0aW9ucy5pbmRleE9mKCd0b3AnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLmxlZnQgJiYgcG9zaXRpb25zLmluZGV4T2YoJ2xlZnQnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgcG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b20gJiZcclxuICAgICAgcG9zaXRpb25zLmluZGV4T2YoJ2JvdHRvbScpID49IDBcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmVzIHdoZXRoZXIgQXV0b1Bvc2l0aW9uIGlzIGFjdGl2ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgSXNBdXRvUG9zaXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcbiAgICByZXR1cm4gcG9zaXRpb25zLmluZGV4T2YoJ2F1dG8nKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHBvc2l0aW9uIGlzIHZhbGlkIG9yIHdoZXRoZXIgdGhlIHRvb2x0aXAgb24gdGhlIHBvc2l0aW9uIGhhcyBzcGFjZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgVmFsaWRhdGVQb3NpdGlvbnMoKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIC8vIENoZWNrIGlmIENvbnRhaW5lciBpcyBmYWxzZVxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGFsbG93ZWRQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5ub25lO1xyXG4gICAgY29uc3QgYmFzZVBvc2l0aW9uOiBET01SZWN0ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCB0b29sdGlwUmVjdDogRE9NUmVjdCA9IHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGxlZnRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggKyAodGhpcy5nZXRUb29sdGlwT2Zmc2V0KCkgKiAtMSkgPiAwO1xyXG4gICAgY29uc3QgcmlnaHRQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoICsgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCkgPCB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGNvbnN0IHRvcFBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnRvcCAtIHRvb2x0aXBSZWN0LmhlaWdodCA+IDA7XHJcbiAgICBjb25zdCBib3R0b21Qb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5ib3R0b20gKyB0b29sdGlwUmVjdC5oZWlnaHQgPCB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcblxyXG4gICAgY29uc3QgbGVmdEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggLyAyID4gMDtcclxuICAgIGNvbnN0IHJpZ2h0SGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnJpZ2h0ICsgdG9vbHRpcFJlY3Qud2lkdGggLyAyIDwgd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB0b3BIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24udG9wIC0gdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMiA+IDA7XHJcbiAgICBjb25zdCBib3R0b21IYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMiA8IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHJcbiAgICBpZiAobGVmdFBvc09rICYmIHRvcEhhbGZQb3NPayAmJiBib3R0b21IYWxmUG9zT2spIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmlnaHRQb3NPayAmJiB0b3BIYWxmUG9zT2sgJiYgYm90dG9tSGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b3BQb3NPayAmJiBsZWZ0SGFsZlBvc09rICYmIHJpZ2h0SGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYm90dG9tUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFsbG93ZWRQb3NpdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIGxpbmtzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRMZWZ0UG9zaXRpb24oKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQgIT09IG51bGwgJiYgdGhpcy5jb250ZW50ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID49IDEpIHtcclxuICAgICAgICBjb25zdCBjaGlsZEl0ZW0gPSBpdGVtLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLkdldFRvb2x0aXBQb3NpdGlvbigpKSB7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC8gMiAtIHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyO1xyXG4gICAgICAgICAgICByZXR1cm4gKGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC8gMiAtIHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5yaWdodDpcclxuICAgICAgICAgICAgdGhpcy5MZWZ0UG9zID0gY29udGVudFBvc2l0aW9uLmxlZnQgKyBjb250ZW50UG9zaXRpb24ud2lkdGggKyB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoICsgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCk7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC8gMiAtIHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyO1xyXG4gICAgICAgICAgICByZXR1cm4gKGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoIC8gMiAtIHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKSArICh0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSAqIC0xKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvbi5sZWZ0IC0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKSArICh0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSAqIC0xKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VG9wUG9zaXRpb24oKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQgIT09IG51bGwgJiYgdGhpcy5jb250ZW50ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID49IDEpIHtcclxuICAgICAgICBjb25zdCBjaGlsZEl0ZW0gPSBpdGVtLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbjogRE9NUmVjdCA9IGNoaWxkSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgLy8gR2V0IFBvc2l0aW9uIHdpdGggU2Nyb2xsIChTY3JvbGxiYXJzIGluc2lkZSBwYWdlIHNob3VsZCBiZSBzdWJzdHJhY3RlZClcclxuICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb25Ub3AgPSBjaGlsZEl0ZW0ub2Zmc2V0VG9wICsgdGhpcy5nZXRPZmZzZXRUb3BQYXJlbnQoY2hpbGRJdGVtLm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCkgLSB0aGlzLmdldFNjcm9sbFRvcFBhcmVudChjaGlsZEl0ZW0ucGFyZW50RWxlbWVudCk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKSkge1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvblRvcCAtIHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpICsgKHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpICogLTEpO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uVG9wIC0gdGhpcy5nZXRUb29sVGlwSGVpZ2h0KCkgKyAodGhpcy5nZXRUb29sdGlwT2Zmc2V0KCkgKiAtMSk7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5yaWdodDpcclxuICAgICAgICAgICAgdGhpcy5Ub3BQb3MgPSBjb250ZW50UG9zaXRpb25Ub3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb25Ub3AgKyAoY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIpIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XHJcbiAgICAgICAgICAgIHRoaXMuVG9wUG9zID0gY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCArIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCArIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ubGVmdDpcclxuICAgICAgICAgICAgdGhpcy5Ub3BQb3MgPSBjb250ZW50UG9zaXRpb25Ub3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0IC8gMiAtIHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMjtcclxuICAgICAgICAgICAgcmV0dXJuIChjb250ZW50UG9zaXRpb25Ub3AgKyBjb250ZW50UG9zaXRpb24uaGVpZ2h0IC8gMiAtIHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKGNoaWxkSXRlbS5jbGllbnRUb3AgKyBjaGlsZEl0ZW0ub2Zmc2V0VG9wIC0gKHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMiAtIGNoaWxkSXRlbS5jbGllbnRIZWlnaHQgLyAyKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsY3VsYXRlcyB0aGUgdG9wIG9mIHRoZSBwYWdlIGluc2lkZSBhbGwgZWxlbWVudHNcclxuICAgKiBAcGFyYW0gZWxlbWVudCBIVE1MIEVsZW1lbnRcclxuICAgKiBAcmV0dXJucyBzdW1tYXJpemVkIHRvcCB2YWx1ZSBmb3IgYWJzb2x1dGUgcG9zaXRpb25cclxuICAgKi9cclxuICBwcml2YXRlIGdldE9mZnNldFRvcFBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XHJcbiAgICBpZiAoIWVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XHJcbiAgICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJlbnRWYWx1ZSA9IHRoaXMuZ2V0T2Zmc2V0VG9wUGFyZW50KGVsZW1lbnQub2Zmc2V0UGFyZW50IGFzIEhUTUxFbGVtZW50KTtcclxuICAgIGxldCBvZmZzZXQgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIG9mZnNldDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhY2x1bGF0ZSBTY3JvbGxiYXJzIGluc2lkZSB0cmVlXHJcbiAgICogQHBhcmFtIGVsZW1lbnQgSFRNTCBFbGVtZW50XHJcbiAgICogQHJldHVybnMgU2Nyb2xsIHRvcCB2YWx1ZSBvZiBlbGVtZW50IHdpdGggYWxsIGNoaWxkc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0U2Nyb2xsVG9wUGFyZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcclxuICAgIC8vIEJvZHkgU2Nyb2xsIHNob3VsZCBub3QgYmUgY2FsY3VsYXRlZFxyXG4gICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldFNjcm9sbFRvcFBhcmVudChlbGVtZW50LnBhcmVudEVsZW1lbnQpO1xyXG4gICAgcmV0dXJuIHBhcmVudFZhbHVlICsgZWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxufVxyXG4iXX0=
110
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMXBzcGRjNzJqcSIsImFjdHVhbENvdmVyYWdlIiwiRGlyZWN0aXZlIiwiSW5wdXQiLCJWaWV3Q2hpbGQiLCJjb252ZXJ0VG9Cb29sZWFuIiwiVG9vbHRpcFBvc2l0aW9uIiwiU2FjVG9vbHRpcENvbW1vbiIsImNvbnN0cnVjdG9yIiwiY2RSZWYiLCJyZWYiLCJmIiwicyIsIl9pc1Rvb2x0aXBWaXNpYmxlIiwib25Db250ZW50Q2hhbmdlIiwiYiIsInNldFRpbWVvdXQiLCJnZXRMZWZ0UG9zaXRpb24iLCJnZXRUb3BQb3NpdGlvbiIsInBvc2l0aW9uIiwiSXNUb29sdGlwQ29udGVudFZpc2libGUiLCJMZWZ0UG9zIiwiVG9wUG9zIiwiaW5saW5lbW9kZSIsInZhbHVlIiwiX2lubGluZW1vZGUiLCJ0b29sdGlwIiwiY29udGVudCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwibmF0aXZlRWxlbWVudCIsInRvb2x0aXBjb250YWluZXIiLCJkZXRlY3RDaGFuZ2VzIiwidG9vbHRvcCIsIkdldFRvb2x0aXBQb3NpdGlvbiIsInZhbGlkUG9zaXRpb25zIiwiVmFsaWRhdGVQb3NpdGlvbnMiLCJIYXNQb3NpdGlvbiIsInJpZ2h0IiwidG9wIiwibGVmdCIsImJvdHRvbSIsIklzQXV0b1Bvc2l0aW9uIiwiR2V0UG9zaXRpb24iLCJIaWRlVG9vbHRpcCIsIklzVG9vbHRpcFZpc2libGUiLCJTaG93VG9vbHRpcCIsImdldFRvb2xUaXBIZWlnaHQiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImNsaWVudEhlaWdodCIsImdldFRvb2xUaXBXaWR0aCIsImNsaWVudFdpZHRoIiwibmdBZnRlclZpZXdDaGVja2VkIiwibmdEb0NoZWNrIiwibmdPbkRlc3Ryb3kiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVtb3ZlQ2hpbGQiLCJuZ09uSW5pdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJwb3NpdGlvbnMiLCJzcGxpdCIsImluZGV4T2YiLCJhbGxvd2VkUG9zaXRpb25zIiwibm9uZSIsImJhc2VQb3NpdGlvbiIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvb2x0aXBSZWN0IiwibGVmdFBvc09rIiwid2lkdGgiLCJnZXRUb29sdGlwT2Zmc2V0IiwicmlnaHRQb3NPayIsImlubmVyV2lkdGgiLCJ0b3BQb3NPayIsImhlaWdodCIsImJvdHRvbVBvc09rIiwiaW5uZXJIZWlnaHQiLCJsZWZ0SGFsZlBvc09rIiwicmlnaHRIYWxmUG9zT2siLCJ0b3BIYWxmUG9zT2siLCJib3R0b21IYWxmUG9zT2siLCJpdGVtIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJjaGlsZEl0ZW0iLCJjb250ZW50UG9zaXRpb24iLCJvZmZzZXRUb3AiLCJvZmZzZXRMZWZ0IiwiY29udGVudFBvc2l0aW9uVG9wIiwiZ2V0T2Zmc2V0VG9wUGFyZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0U2Nyb2xsVG9wUGFyZW50IiwicGFyZW50RWxlbWVudCIsImNsaWVudFRvcCIsImVsZW1lbnQiLCJwYXJlbnRWYWx1ZSIsIm9mZnNldCIsInNjcm9sbFRvcCIsImRlcHMiLCJ0b2tlbiIsImkwIiwiQ2hhbmdlRGV0ZWN0b3JSZWYiLCJFbGVtZW50UmVmIiwidGFyZ2V0IiwiybXJtUZhY3RvcnlUYXJnZXQiLCJpbnB1dHMiLCJ0b29sdGlwdGV4dCIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIERvQ2hlY2ssXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jb252ZXJ0aW9uJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudW1zJztcclxuXHJcbi8qKlxyXG4gKiBUb29sdGlwIENvbXBvbmVudFxyXG4gKlxyXG4gKiBSZXF1aXJlcyB0aGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGluIHRoZSBIVE1MIG1hcmt1cFxyXG4gKiAtIGNvbnRhaW5lcjogQ29udGFpbmVyIGZvciBuZy1jb250ZW50IGluIHdoaWNoIHRoZSBlbGVtZW50IGlzIGRpc3BsYXllZCB3aGVyZSB0aGUgdG9vbHRpcCBpcyBhdHRhY2hlZC5cclxuICogLSB0b29sdGlwOiBDb250YWluZXIgZm9yIHRvb2x0aXBcclxuICpcclxuICogVG9vbHRpcCBtdXN0IGJlIGRpc3BsYXllZCBpbiAyIHN0ZXBzLiBJbiBhIGZpcnN0IHN0ZXAgdGhlIHRvb2x0aXAgbWFya3VwIGlzIGNyZWF0ZWQgd2l0aCAobmdJZikuIEluIGEgMm5kIHN0ZXBcclxuICogdGhlIHRvb2x0aXAgY2FuIHRoZW4gYmUgZGlzcGxheWVkIHZpYSB0aGUgQ1NTIHZpc2liaWxpdHkuIElmIHRoaXMgaXMgbm90IGRvbmUsIGl0IGNhbiBsZWFkIHRvIGEgZmxpY2tlcmluZyBlZmZlY3QgaW4gY2VydGFpbiBicm93c2Vycy5cclxuICpcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjVG9vbHRpcENvbW1vbiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkLCBEb0NoZWNrIHtcclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogSW5saW5lIG1vZGUgZm9yIHRvb2x0aXBcclxuICAgKi9cclxuICBwcml2YXRlIF9pbmxpbmVtb2RlOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaXNUb29sdGlwVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIG1ldGhvZCBpZiBjb250ZW50IGhhcyBjaGFuZ2VkIGFuZCBwcm9wb3J0aW9ucyBuZWVkIHRvIGJlIHJlc2V0IGluIHRoZSBVSS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IG9uQ29udGVudENoYW5nZSA9ICgpOiB2b2lkID0+IHtcclxuICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2libGVcclxuICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcclxuICAgIH0pO1xyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogQ29udGFpbmVycyBmb3IgdGhlIHRvb2x0aXBcclxuICAgKi9cclxuICBwcml2YXRlIHRvb2x0aXBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xyXG4gICAqXHJcbiAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcclxuICAvKipcclxuICAgKiBUZXh0IGZvciBUb29sVGlwXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdG9vbHRpcHRleHQ6IHN0cmluZztcclxuICAvKipcclxuICAgKiBOYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIGNvbnRlbnQgKGUuZy4gaWNvbikgb24gd2hpY2ggdGhlIHRvb2x0aXAgaXMgZGlzcGxheWVkLlxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIGNvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBvbiB0aGUgbGVmdFxyXG4gICAqL1xyXG4gIHB1YmxpYyBJc1Rvb2x0aXBDb250ZW50VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBsaW5rc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBMZWZ0UG9zOiBudW1iZXIgPSAwO1xyXG4gIC8qKlxyXG4gICAqIFByb3BlcnR5IGZvciBlbnVtIGluIEFuZ3VsYXIgSFRNTCB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcbiAgLyoqXHJcbiAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgYXQgdGhlIHRvcFxyXG4gICAqL1xyXG4gIHB1YmxpYyBUb3BQb3M6IG51bWJlciA9IDA7XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvKipcclxuICAgKiBLb25zdHJ1a3RvclxyXG4gICAqIEBwYXJhbSByZWYgRWxlbWVudCBSZWZlcmVuelxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlYWRvbmx5IHJlZjogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbmxpbmVtb2RlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZm9yIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIHRoZSB0b29sdGlwLiBJcyByZXF1aXJlZCBhcyB0aGUgdG9vbHRpcCBjYW4gYmUgaGlkZGVuIHZpYSBuZ0lmLlxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xyXG4gICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b29sdGlwY29udGFpbmVyID0gY29udGVudDtcclxuICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb3BlcnR5IGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcC4gU2V0cyB0aGUgZGlzcGxheSBtb2RlIG9uIHRoZSB3cmFwcGVyIGVsZW1lbnQgdG8gYGlubGluZWBcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGlubGluZW1vZGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5saW5lbW9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdG9vbHRvcCgpOiBFbGVtZW50UmVmIHtcclxuICAgIHJldHVybiB0aGlzLnRvb2x0aXBjb250YWluZXI7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcclxuICAgKi9cclxuICBwdWJsaWMgR2V0VG9vbHRpcFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICBjb25zdCB2YWxpZFBvc2l0aW9uczogVG9vbHRpcFBvc2l0aW9uID0gdGhpcy5WYWxpZGF0ZVBvc2l0aW9ucygpO1xyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLnJpZ2h0KSAmJlxyXG4gICAgICB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5yaWdodFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSAmJlxyXG4gICAgICB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi50b3BcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLkhhc1Bvc2l0aW9uKFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSAmJlxyXG4gICAgICB2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0XHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkgJiZcclxuICAgICAgdmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24uYm90dG9tXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2V0IEF1dG8gUG9zaXRpb24gb3IgRGVmYXVsdFxyXG4gICAgaWYgKHRoaXMuSXNBdXRvUG9zaXRpb24oKSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcclxuICAgICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24udG9wKSB7XHJcbiAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi50b3A7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGlmICh2YWxpZFBvc2l0aW9ucyAmIFRvb2x0aXBQb3NpdGlvbi5sZWZ0KSB7XHJcbiAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5sZWZ0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBpZiAodmFsaWRQb3NpdGlvbnMgJiBUb29sdGlwUG9zaXRpb24uYm90dG9tKSB7XHJcbiAgICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRQb3NpdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGlkZSB0b29sdGlwXHJcbiAgICovXHJcbiAgcHVibGljIEhpZGVUb29sdGlwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5Jc1Rvb2x0aXBDb250ZW50VmlzaWJsZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHByZXNlbnQgaW4gdGhlIG1hcmt1cFxyXG4gICAqL1xyXG4gIHB1YmxpYyBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzVG9vbHRpcFZpc2libGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IHRvb2x0aXBcclxuICAgKi9cclxuICBwdWJsaWMgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VG9vbFRpcEhlaWdodCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lcikge1xyXG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xpZW50SGVpZ2h0ID8/IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSB0b29sdGlwc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRUb29sVGlwV2lkdGgoKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudFdpZHRoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlY3QgQ2hhbmdlcyBhZnRlciB2aWV3IGNoZWNrZWQuIFByZXZlbnQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciBlcnJvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmlsZVxyXG4gICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVjdCBVSSBDaGFuZ2VzIHRvIENhbGN1bGF0ZSBUb29sdGlwIGNvcnJlY3RcclxuICAgKi9cclxuICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJpbGVcclxuICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcclxuICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgZGVzdHJveWVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIFVucmVnaXN0ZXIgRXZlbnQgTGlzdGVuZXJcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG5cclxuICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgaW5pdGlhbGl6ZWRcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBSZWdpc3RlciBFdmVudCBMaXN0ZW5lclxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIFByb3RlY3RlZCBBYnN0cmFjdCBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIE9mZnNldCBmb3IgVG9vbHRpcC4gUmVxdWlyZWQgZm9yIEJTNC9CUzUgdG8gY3JlYXRlIHBhZGRpbmdcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0VG9vbHRpcE9mZnNldCgpOiBudW1iZXI7XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIEFic3RyYWN0IE1ldGhvZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZGVmaW5lZCBwb3NpdGlvbiBmb3IgdGhlIHRvb2x0aXBcclxuICAgKi9cclxuICBwcml2YXRlIEdldFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uLnNwbGl0KCd8Jyk7XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmxlZnQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ubGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24udG9wKSkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnRvcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5IYXNQb3NpdGlvbihUb29sdGlwUG9zaXRpb24ucmlnaHQpKSB7XHJcbiAgICAgIHJldHVybiBUb29sdGlwUG9zaXRpb24ucmlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuSGFzUG9zaXRpb24oVG9vbHRpcFBvc2l0aW9uLmJvdHRvbSkpIHtcclxuICAgICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5ib3R0b207XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGVmYXVsdCBQb3NpdGlvbiBpZiBlbXB0eVxyXG4gICAgcmV0dXJuIFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgcG9zaXRpb24gaGFzIGJlZW4gY29uZmlndXJlZFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIFBvc2l0aW9uIHRvIGJlIGNoZWNrZWRcclxuICAgKi9cclxuICBwcml2YXRlIEhhc1Bvc2l0aW9uKHBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMucG9zaXRpb24uc3BsaXQoJ3wnKTtcclxuXHJcbiAgICBpZiAocG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5yaWdodCAmJiBwb3NpdGlvbnMuaW5kZXhPZigncmlnaHQnKSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcCAmJiBwb3NpdGlvbnMuaW5kZXhPZigndG9wJykgPj0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5sZWZ0ICYmIHBvc2l0aW9ucy5pbmRleE9mKCdsZWZ0JykgPj0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tICYmXHJcbiAgICAgIHBvc2l0aW9ucy5pbmRleE9mKCdib3R0b20nKSA+PSAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyB3aGV0aGVyIEF1dG9Qb3NpdGlvbiBpcyBhY3RpdmVcclxuICAgKi9cclxuICBwcml2YXRlIElzQXV0b1Bvc2l0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5wb3NpdGlvbi5zcGxpdCgnfCcpO1xyXG4gICAgcmV0dXJuIHBvc2l0aW9ucy5pbmRleE9mKCdhdXRvJykgPj0gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBwb3NpdGlvbiBpcyB2YWxpZCBvciB3aGV0aGVyIHRoZSB0b29sdGlwIG9uIHRoZSBwb3NpdGlvbiBoYXMgc3BhY2VcclxuICAgKi9cclxuICBwcml2YXRlIFZhbGlkYXRlUG9zaXRpb25zKCk6IFRvb2x0aXBQb3NpdGlvbiB7XHJcbiAgICAvLyBDaGVjayBpZiBDb250YWluZXIgaXMgZmFsc2VcclxuICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gVG9vbHRpcFBvc2l0aW9uLnJpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBhbGxvd2VkUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24ubm9uZTtcclxuICAgIGNvbnN0IGJhc2VQb3NpdGlvbjogRE9NUmVjdCA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgdG9vbHRpcFJlY3Q6IERPTVJlY3QgPSB0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICBjb25zdCBsZWZ0UG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtIHRvb2x0aXBSZWN0LndpZHRoICsgKHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpICogLTEpID4gMDtcclxuICAgIGNvbnN0IHJpZ2h0UG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ucmlnaHQgKyB0b29sdGlwUmVjdC53aWR0aCArIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpIDwgd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB0b3BQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24uYm90dG9tICsgdG9vbHRpcFJlY3QuaGVpZ2h0IDwgd2luZG93LmlubmVySGVpZ2h0O1xyXG5cclxuICAgIGNvbnN0IGxlZnRIYWxmUG9zT2s6IGJvb2xlYW4gPSBiYXNlUG9zaXRpb24ubGVmdCAtIHRvb2x0aXBSZWN0LndpZHRoIC8gMiA+IDA7XHJcbiAgICBjb25zdCByaWdodEhhbGZQb3NPazogYm9vbGVhbiA9IGJhc2VQb3NpdGlvbi5yaWdodCArIHRvb2x0aXBSZWN0LndpZHRoIC8gMiA8IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgY29uc3QgdG9wSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLnRvcCAtIHRvb2x0aXBSZWN0LmhlaWdodCAvIDIgPiAwO1xyXG4gICAgY29uc3QgYm90dG9tSGFsZlBvc09rOiBib29sZWFuID0gYmFzZVBvc2l0aW9uLmJvdHRvbSArIHRvb2x0aXBSZWN0LmhlaWdodCAvIDIgPCB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcblxyXG4gICAgaWYgKGxlZnRQb3NPayAmJiB0b3BIYWxmUG9zT2sgJiYgYm90dG9tSGFsZlBvc09rKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgIGFsbG93ZWRQb3NpdGlvbnMgPSBhbGxvd2VkUG9zaXRpb25zIHwgVG9vbHRpcFBvc2l0aW9uLmxlZnQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJpZ2h0UG9zT2sgJiYgdG9wSGFsZlBvc09rICYmIGJvdHRvbUhhbGZQb3NPaykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi5yaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodG9wUG9zT2sgJiYgbGVmdEhhbGZQb3NPayAmJiByaWdodEhhbGZQb3NPaykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICBhbGxvd2VkUG9zaXRpb25zID0gYWxsb3dlZFBvc2l0aW9ucyB8IFRvb2x0aXBQb3NpdGlvbi50b3A7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGJvdHRvbVBvc09rICYmIGxlZnRIYWxmUG9zT2sgJiYgcmlnaHRIYWxmUG9zT2spIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgYWxsb3dlZFBvc2l0aW9ucyA9IGFsbG93ZWRQb3NpdGlvbnMgfCBUb29sdGlwUG9zaXRpb24uYm90dG9tO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhbGxvd2VkUG9zaXRpb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0TGVmdFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICE9PSBudWxsICYmIHRoaXMuY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb246IERPTVJlY3QgPSBjaGlsZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKSkge1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxyXG4gICAgICAgICAgICB0aGlzLkxlZnRQb3MgPSBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAvIDIgLSB0aGlzLmdldFRvb2xUaXBXaWR0aCgpIC8gMjtcclxuICAgICAgICAgICAgcmV0dXJuIChjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAvIDIgLSB0aGlzLmdldFRvb2xUaXBXaWR0aCgpIC8gMlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XHJcbiAgICAgICAgICAgIHRoaXMuTGVmdFBvcyA9IGNvbnRlbnRQb3NpdGlvbi5sZWZ0ICsgY29udGVudFBvc2l0aW9uLndpZHRoICsgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCArIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxyXG4gICAgICAgICAgICB0aGlzLkxlZnRQb3MgPSBjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAvIDIgLSB0aGlzLmdldFRvb2xUaXBXaWR0aCgpIC8gMjtcclxuICAgICAgICAgICAgcmV0dXJuIChjb250ZW50UG9zaXRpb24ubGVmdCArIGNvbnRlbnRQb3NpdGlvbi53aWR0aCAvIDIgLSB0aGlzLmdldFRvb2xUaXBXaWR0aCgpIC8gMik7XHJcbiAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxyXG4gICAgICAgICAgICB0aGlzLkxlZnRQb3MgPSBjb250ZW50UG9zaXRpb24ubGVmdCAtIHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgKyAodGhpcy5nZXRUb29sdGlwT2Zmc2V0KCkgKiAtMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50UG9zaXRpb24ubGVmdCAtIHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgKyAodGhpcy5nZXRUb29sdGlwT2Zmc2V0KCkgKiAtMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcclxuICAgKi9cclxuICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICE9PSBudWxsICYmIHRoaXMuY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRJdGVtID0gaXRlbS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjb250ZW50UG9zaXRpb246IERPTVJlY3QgPSBjaGlsZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIC8vIEdldCBQb3NpdGlvbiB3aXRoIFNjcm9sbCAoU2Nyb2xsYmFycyBpbnNpZGUgcGFnZSBzaG91bGQgYmUgc3Vic3RyYWN0ZWQpXHJcbiAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uVG9wID0gY2hpbGRJdGVtLm9mZnNldFRvcCArIHRoaXMuZ2V0T2Zmc2V0VG9wUGFyZW50KGNoaWxkSXRlbS5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpIC0gdGhpcy5nZXRTY3JvbGxUb3BQYXJlbnQoY2hpbGRJdGVtLnBhcmVudEVsZW1lbnQpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCkpIHtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcclxuICAgICAgICAgICAgdGhpcy5Ub3BQb3MgPSBjb250ZW50UG9zaXRpb25Ub3AgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSArICh0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSAqIC0xKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvblRvcCAtIHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpICsgKHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpICogLTEpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XHJcbiAgICAgICAgICAgIHRoaXMuVG9wUG9zID0gY29udGVudFBvc2l0aW9uVG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFBvc2l0aW9uVG9wICsgKGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgLyAyKSAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxyXG4gICAgICAgICAgICB0aGlzLlRvcFBvcyA9IGNvbnRlbnRQb3NpdGlvblRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgKyB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRQb3NpdGlvblRvcCArIGNvbnRlbnRQb3NpdGlvbi5oZWlnaHQgKyB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKTtcclxuICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XHJcbiAgICAgICAgICAgIHRoaXMuVG9wUG9zID0gY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDI7XHJcbiAgICAgICAgICAgIHJldHVybiAoY29udGVudFBvc2l0aW9uVG9wICsgY29udGVudFBvc2l0aW9uLmhlaWdodCAvIDIgLSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIChjaGlsZEl0ZW0uY2xpZW50VG9wICsgY2hpbGRJdGVtLm9mZnNldFRvcCAtICh0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIgLSBjaGlsZEl0ZW0uY2xpZW50SGVpZ2h0IC8gMikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvcCBvZiB0aGUgcGFnZSBpbnNpZGUgYWxsIGVsZW1lbnRzXHJcbiAgICogQHBhcmFtIGVsZW1lbnQgSFRNTCBFbGVtZW50XHJcbiAgICogQHJldHVybnMgc3VtbWFyaXplZCB0b3AgdmFsdWUgZm9yIGFic29sdXRlIHBvc2l0aW9uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRPZmZzZXRUb3BQYXJlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBudW1iZXIge1xyXG4gICAgaWYgKCFlbGVtZW50Lm9mZnNldFBhcmVudCkge1xyXG4gICAgICByZXR1cm4gZWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLmdldE9mZnNldFRvcFBhcmVudChlbGVtZW50Lm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCk7XHJcbiAgICBsZXQgb2Zmc2V0ID0gZWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICByZXR1cm4gcGFyZW50VmFsdWUgKyBvZmZzZXQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWNsdWxhdGUgU2Nyb2xsYmFycyBpbnNpZGUgdHJlZVxyXG4gICAqIEBwYXJhbSBlbGVtZW50IEhUTUwgRWxlbWVudFxyXG4gICAqIEByZXR1cm5zIFNjcm9sbCB0b3AgdmFsdWUgb2YgZWxlbWVudCB3aXRoIGFsbCBjaGlsZHNcclxuICAgKi9cclxuICBwcml2YXRlIGdldFNjcm9sbFRvcFBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XHJcbiAgICAvLyBCb2R5IFNjcm9sbCBzaG91bGQgbm90IGJlIGNhbGN1bGF0ZWRcclxuICAgIGlmICghZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmVudFZhbHVlID0gdGhpcy5nZXRTY3JvbGxUb3BQYXJlbnQoZWxlbWVudC5wYXJlbnRFbGVtZW50KTtcclxuICAgIHJldHVybiBwYXJlbnRWYWx1ZSArIGVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiZ3R0REEwQk07QUFBQUEsY0FBQSxTQUFBQSxDQUFBLFNBQUFDLGNBQUEsV0FBQUEsY0FBQSxFQUFBRCxjQUFBLEdBMUJOLE9BR0VFLFNBQVMsQ0FHVEMsS0FBSyxDQUdMQyxTQUFTLEtBQ0osZUFBZSxDQUN0QixPQUFTQyxnQkFBZ0IsS0FBUSw0QkFBNEIsQ0FDN0QsT0FBU0MsZUFBZSxLQUFRLHVCQUF1QixDLGlDQUV2RDs7Ozs7Ozs7OztHQVlBLE1BQU0sTUFBZ0IsQ0FBQUMsZ0JBQWdCLENBaUVwQztBQUVBO0FBRUE7OztPQUlBQyxZQUE2QkMsS0FBd0IsQ0FBbUJDLEdBQWUsRUFBQVYsY0FBQSxHQUFBVyxDQUFBLE1BQUFYLGNBQUEsR0FBQVksQ0FBQSxNQUExRCxLQUFBSCxLQUFLLENBQUxBLEtBQUssQ0FBbUJULGNBQUEsR0FBQVksQ0FBQSxNQUFtQixLQUFBRixHQUFHLENBQUhBLEdBQUcsQ0FsRTNFOztXQUFBVixjQUFBLEdBQUFZLENBQUEsTUFHUSxLQUFBQyxpQkFBaUIsQ0FBWSxLQUFLLENBQzFDOztXQUFBYixjQUFBLEdBQUFZLENBQUEsTUFHaUIsS0FBQUUsZUFBZSxDQUFHLElBQVcsQ0FBQWQsY0FBQSxHQUFBVyxDQUFBLE1BQUFYLGNBQUEsR0FBQVksQ0FBQSxNQUM1QztBQUNBLEdBQUksQ0FBQyxJQUFJLENBQUNDLGlCQUFpQixDQUFFLENBQUFiLGNBQUEsR0FBQWUsQ0FBQSxTQUFBZixjQUFBLEdBQUFZLENBQUEsTUFDM0IsTyxDQUNELEtBQUFaLGNBQUEsR0FBQWUsQ0FB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
81
+ */getTopPosition(){cov_1pspdc72jq().f[19]++;const value=(cov_1pspdc72jq().s[59]++,this.popupHelper.getPositionTop(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_1pspdc72jq().s[60]++;this.TopPos=value;const requiredPosition=(cov_1pspdc72jq().s[61]++,this.GetTooltipPosition());cov_1pspdc72jq().s[62]++;if((cov_1pspdc72jq().b[9][0]++,requiredPosition===TooltipPosition.bottom)||(cov_1pspdc72jq().b[9][1]++,requiredPosition===TooltipPosition.top)){cov_1pspdc72jq().b[8][0]++;cov_1pspdc72jq().s[63]++;this.posArrowLeft=this.getToolTipWidth()/2-6.5;}else{cov_1pspdc72jq().b[8][1]++;cov_1pspdc72jq().s[64]++;this.posArrowLeft=null;}cov_1pspdc72jq().s[65]++;return value;}}cov_1pspdc72jq().s[66]++;SacTooltipCommon.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacTooltipCommon,deps:[{token:i0.ChangeDetectorRef},{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive});cov_1pspdc72jq().s[67]++;SacTooltipCommon.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"13.2.7",type:SacTooltipCommon,inputs:{position:"position",tooltiptext:"tooltiptext",inlinemode:"inlinemode"},viewQueries:[{propertyName:"content",first:true,predicate:["container"],descendants:true,static:true},{propertyName:"tooltip",first:true,predicate:["tooltip"],descendants:true}],ngImport:i0});cov_1pspdc72jq().s[68]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"13.2.7",ngImport:i0,type:SacTooltipCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_1pspdc72jq().f[20]++;cov_1pspdc72jq().s[69]++;return[{type:i0.ChangeDetectorRef},{type:i0.ElementRef}];},propDecorators:{content:[{type:ViewChild,args:['container',{static:true}]}],position:[{type:Input}],tooltiptext:[{type:Input}],inlinemode:[{type:Input}],tooltip:[{type:ViewChild,args:['tooltip',{static:false}]}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFHSCxTQUFTLEVBR1QsS0FBSyxFQUdMLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQzs7QUFFdkI7Ozs7Ozs7Ozs7R0FVRztBQUVILE1BQU0sT0FBZ0IsZ0JBQWdCO0lBeUVsQyx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7T0FHRztJQUNILFlBQTZCLEtBQXdCLEVBQW1CLEdBQWU7UUFBMUQsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFBbUIsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQWhGdkYscUJBQXFCO1FBRXJCOztXQUVHO1FBQ2MsZ0JBQVcsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQU85RDs7V0FFRztRQUNLLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQU8zQzs7V0FFRztRQUNJLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUVoRDs7V0FFRztRQUNJLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFFM0I7O1dBRUc7UUFDSSxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUV6Qzs7V0FFRztRQUNJLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFRMUI7O1dBRUc7UUFDSSxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFFMUM7O1dBRUc7UUFDSSxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFFekM7Ozs7V0FJRztRQUVJLGFBQVEsR0FBVyxZQUFZLENBQUM7UUFzT3ZDOztXQUVHO1FBQ2Msb0JB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QUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OzZHQXJTaUIsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFEckMsU0FBUztpSUFnREMsT0FBTztzQkFEYixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBbUJqQyxRQUFRO3NCQURkLEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSztnQkE0QkssVUFBVTtzQkFEcEIsS0FBSztnQkFTSyxPQUFPO3NCQURqQixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZW51bXMnO1xyXG5pbXBvcnQgeyBQb3BVcEhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9wb3B1cGhlbHBlcic7XHJcbmltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdDaGVja2VkLFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIFRvb2x0aXAgQ29tcG9uZW50XHJcbiAqXHJcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgaW4gdGhlIEhUTUwgbWFya3VwXHJcbiAqIC0gY29udGFpbmVyOiBDb250YWluZXIgZm9yIG5nLWNvbnRlbnQgaW4gd2hpY2ggdGhlIGVsZW1lbnQgaXMgZGlzcGxheWVkIHdoZXJlIHRoZSB0b29sdGlwIGlzIGF0dGFjaGVkLlxyXG4gKiAtIHRvb2x0aXA6IENvbnRhaW5lciBmb3IgdG9vbHRpcFxyXG4gKlxyXG4gKiBUb29sdGlwIG11c3QgYmUgZGlzcGxheWVkIGluIDIgc3RlcHMuIEluIGEgZmlyc3Qgc3RlcCB0aGUgdG9vbHRpcCBtYXJrdXAgaXMgY3JlYXRlZCB3aXRoIChuZ0lmKS4gSW4gYSAybmQgc3RlcFxyXG4gKiB0aGUgdG9vbHRpcCBjYW4gdGhlbiBiZSBkaXNwbGF5ZWQgdmlhIHRoZSBDU1MgdmlzaWJpbGl0eS4gSWYgdGhpcyBpcyBub3QgZG9uZSwgaXQgY2FuIGxlYWQgdG8gYSBmbGlja2VyaW5nIGVmZmVjdCBpbiBjZXJ0YWluIGJyb3dzZXJzLlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIERvQ2hlY2sge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwIG9uIGNvcnJlY3QgcG9zaXRpb25cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cEhlbHBlcjogUG9wVXBIZWxwZXIgPSBuZXcgUG9wVXBIZWxwZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElubGluZSBtb2RlIGZvciB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lubGluZW1vZGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgdmlzaWJsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWluZXJzIGZvciB0aGUgdG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvb2x0aXBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgb24gdGhlIGxlZnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIElzVG9vbHRpcENvbnRlbnRWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgbGlua3NcclxuICAgICAqL1xyXG4gICAgcHVibGljIExlZnRQb3M6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBmb3IgZW51bSBpbiBBbmd1bGFyIEhUTUwgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGF0IHRoZSB0b3BcclxuICAgICAqL1xyXG4gICAgcHVibGljIFRvcFBvczogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgY29udGVudCAoZS5nLiBpY29uKSBvbiB3aGljaCB0aGUgdG9vbHRpcCBpcyBkaXNwbGF5ZWQuXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgY29udGVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSBsZWZ0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwb3NBcnJvd0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgdG9wXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwb3NBcnJvd1RvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xyXG4gICAgICpcclxuICAgICAqIFZhbHVlICdhdXRvJyBjYW4gYmUgY29tYmluZWQgd2l0aCBhbm90aGVyIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHBvc2l0aW9uOiBzdHJpbmcgPSAncmlnaHR8YXV0byc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IGZvciBUb29sVGlwXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdG9vbHRpcHRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogS29uc3RydWt0b3JcclxuICAgICAqIEBwYXJhbSByZWYgRWxlbWVudCBSZWZlcmVuelxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWFkb25seSByZWY6IEVsZW1lbnRSZWYpIHt9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBmb3IgaW5saW5lIG1vZGUgZm9yIHRvb2x0aXAuIFNldHMgdGhlIGRpc3BsYXkgbW9kZSBvbiB0aGUgd3JhcHBlciBlbGVtZW50IHRvIGBpbmxpbmVgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaW5saW5lbW9kZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lbW9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHRlciBmb3IgaW5saW5lIG1vZGUgZm9yIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgaW5saW5lbW9kZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2lubGluZW1vZGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHRlciBmb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAuIElzIHJlcXVpcmVkIGFzIHRoZSB0b29sdGlwIGNhbiBiZSBoaWRkZW4gdmlhIG5nSWYuXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICAgIHB1YmxpYyBzZXQgdG9vbHRpcChjb250ZW50OiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIgPSBjb250ZW50O1xyXG4gICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0b29sdG9wKCk6IEVsZW1lbnRSZWYge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBjb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXREaXNwbGF5UG9zaXRpb24oXHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxyXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXHJcbiAgICAgICAgICAgIHRydWVcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZSB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Jc1Rvb2x0aXBDb250ZW50VmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHByZXNlbnQgaW4gdGhlIG1hcmt1cFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSXNUb29sdGlwVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNUb29sdGlwVmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgdG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRUb29sVGlwSGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy50b29sdGlwY29udGFpbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSB0b29sdGlwc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0VG9vbFRpcFdpZHRoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBXaWR0aCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGV0ZWN0IENoYW5nZXMgYWZ0ZXIgdmlldyBjaGVja2VkLiBQcmV2ZW50IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IgZXJyb3JcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmlsZVxyXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVjdCBVSSBDaGFuZ2VzIHRvIENhbGN1bGF0ZSBUb29sdGlwIGNvcnJlY3RcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmlsZVxyXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgaW5pdGlhbGl6ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPZmZzZXQgZm9yIFRvb2x0aXAuIFJlcXVpcmVkIGZvciBCUzQvQlM1IHRvIGNyZWF0ZSBwYWRkaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUb29sdGlwT2Zmc2V0KCk6IG51bWJlcjtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRMZWZ0UG9zaXRpb24oKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcclxuICAgICAgICAgICAgdGhpcy5yZWYsXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5MZWZ0UG9zID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUG9zaXRpb24gPSB0aGlzLkdldFRvb2x0aXBQb3NpdGlvbigpO1xyXG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCB8fCByZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMiAtIDYuNTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uVG9wKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcclxuICAgICAgICAgICAgdGhpcy5yZWYsXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5Ub3BQb3MgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XHJcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b20gfHwgcmVxdWlyZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyIC0gNi41O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIG1ldGhvZCBpZiBjb250ZW50IGhhcyBjaGFuZ2VkIGFuZCBwcm9wb3J0aW9ucyBuZWVkIHRvIGJlIHJlc2V0IGluIHRoZSBVSS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJsZVxyXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMXBzcGRjNzJqcSIsImFjdHVhbENvdmVyYWdlIiwiY29udmVydFRvQm9vbGVhbiIsIlRvb2x0aXBQb3NpdGlvbiIsIlBvcFVwSGVscGVyIiwiRGlyZWN0aXZlIiwiSW5wdXQiLCJWaWV3Q2hpbGQiLCJTYWNUb29sdGlwQ29tbW9uIiwiY29uc3RydWN0b3IiLCJjZFJlZiIsInJlZiIsImYiLCJzIiwicG9wdXBIZWxwZXIiLCJfaXNUb29sdGlwVmlzaWJsZSIsIklzVG9vbHRpcENvbnRlbnRWaXNpYmxlIiwiTGVmdFBvcyIsIlRvcFBvcyIsInBvc0Fycm93TGVmdCIsInBvc0Fycm93VG9wIiwicG9zaXRpb24iLCJvbkNvbnRlbnRDaGFuZ2UiLCJiIiwic2V0VGltZW91dCIsImdldExlZnRQb3NpdGlvbiIsImdldFRvcFBvc2l0aW9uIiwiaW5saW5lbW9kZSIsIl9pbmxpbmVtb2RlIiwidmFsdWUiLCJ0b29sdGlwIiwiY29udGVudCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwibmF0aXZlRWxlbWVudCIsInRvb2x0aXBjb250YWluZXIiLCJkZXRlY3RDaGFuZ2VzIiwidG9vbHRvcCIsIkdldFRvb2x0aXBQb3NpdGlvbiIsImdldERpc3BsYXlQb3NpdGlvbiIsImdldFRvb2x0aXBPZmZzZXQiLCJIaWRlVG9vbHRpcCIsIklzVG9vbHRpcFZpc2libGUiLCJTaG93VG9vbHRpcCIsImdldFRvb2xUaXBIZWlnaHQiLCJnZXRQb3B1cEhlaWdodCIsImdldFRvb2xUaXBXaWR0aCIsImdldFBvcHVwV2lkdGgiLCJuZ0FmdGVyVmlld0NoZWNrZWQiLCJuZ0RvQ2hlY2siLCJuZ09uRGVzdHJveSIsIndpbmRvdyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW1vdmVDaGlsZCIsIm5nT25Jbml0IiwiYWRkRXZlbnRMaXN0ZW5lciIsImdldFBvc2l0aW9uTGVmdCIsInJlcXVpcmVkUG9zaXRpb24iLCJsZWZ0IiwicmlnaHQiLCJnZXRQb3NpdGlvblRvcCIsImJvdHRvbSIsInRvcCIsImRlcHMiLCJ0b2tlbiIsImkwIiwiQ2hhbmdlRGV0ZWN0b3JSZWYiLCJFbGVtZW50UmVmIiwidGFyZ2V0IiwiybXJtUZhY3RvcnlUYXJnZXQiLCJpbnB1dHMiLCJ0b29sdGlwdGV4dCIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZW51bXMnO1xyXG5pbXBvcnQgeyBQb3BVcEhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9wb3B1cGhlbHBlcic7XHJcbmltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdDaGVja2VkLFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIFRvb2x0aXAgQ29tcG9uZW50XHJcbiAqXHJcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgaW4gdGhlIEhUTUwgbWFya3VwXHJcbiAqIC0gY29udGFpbmVyOiBDb250YWluZXIgZm9yIG5nLWNvbnRlbnQgaW4gd2hpY2ggdGhlIGVsZW1lbnQgaXMgZGlzcGxheWVkIHdoZXJlIHRoZSB0b29sdGlwIGlzIGF0dGFjaGVkLlxyXG4gKiAtIHRvb2x0aXA6IENvbnRhaW5lciBmb3IgdG9vbHRpcFxyXG4gKlxyXG4gKiBUb29sdGlwIG11c3QgYmUgZGlzcGxheWVkIGluIDIgc3RlcHMuIEluIGEgZmlyc3Qgc3RlcCB0aGUgdG9vbHRpcCBtYXJrdXAgaXMgY3JlYXRlZCB3aXRoIChuZ0lmKS4gSW4gYSAybmQgc3RlcFxyXG4gKiB0aGUgdG9vbHRpcCBjYW4gdGhlbiBiZSBkaXNwbGF5ZWQgdmlhIHRoZSBDU1MgdmlzaWJpbGl0eS4gSWYgdGhpcyBpcyBub3QgZG9uZSwgaXQgY2FuIGxlYWQgdG8gYSBmbGlja2VyaW5nIGVmZmVjdCBpbiBjZXJ0YWluIGJyb3dzZXJzLlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIERvQ2hlY2sge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwIG9uIGNvcnJlY3QgcG9zaXRpb25cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cEhlbHBlcjogUG9wVXBIZWxwZXIgPSBuZXcgUG9wVXBIZWxwZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElubGluZSBtb2RlIGZvciB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lubGluZW1vZGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgdmlzaWJsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWluZXJzIGZvciB0aGUgdG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvb2x0aXBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgb24gdGhlIGxlZnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIElzVG9vbHRpcENvbnRlbnRWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBkZXMgVG9vbHRpcHMgbGlua3NcclxuICAgICAqL1xyXG4gICAgcHVibGljIExlZnRQb3M6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBmb3IgZW51bSBpbiBBbmd1bGFyIEhUTUwgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGF0IHRoZSB0b3BcclxuICAgICAqL1xyXG4gICAgcHVibGljIFRvcFBvczogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgY29udGVudCAoZS5nLiBpY29uKSBvbiB3aGljaCB0aGUgdG9vbHRpcCBpcyBkaXNwbGF5ZWQuXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgY29udGVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSBsZWZ0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwb3NBcnJvd0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgdG9wXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwb3NBcnJvd1RvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xyXG4gICAgICpcclxuICAgICAqIFZhbHVlICdhdXRvJyBjYW4gYmUgY29tYmluZWQgd2l0aCBhbm90aGVyIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHBvc2l0aW9uOiBzdHJpbmcgPSAncmlnaHR8YXV0byc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IGZvciBUb29sVGlwXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdG9vbHRpcHRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogS29uc3RydWt0b3JcclxuICAgICAqIEBwYXJhbSByZWYgRWxlbWVudCBSZWZlcmVuelxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWFkb25seSByZWY6IEVsZW1lbnRSZWYpIHt9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wZXJ0eSBmb3IgaW5saW5lIG1vZGUgZm9yIHRvb2x0aXAuIFNldHMgdGhlIGRpc3BsYXkgbW9kZSBvbiB0aGUgd3JhcHBlciBlbGVtZW50IHRvIGBpbmxpbmVgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaW5saW5lbW9kZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lbW9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHRlciBmb3IgaW5saW5lIG1vZGUgZm9yIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgaW5saW5lbW9kZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2lubGluZW1vZGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHRlciBmb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAuIElzIHJlcXVpcmVkIGFzIHRoZSB0b29sdGlwIGNhbiBiZSBoaWRkZW4gdmlhIG5nSWYuXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICAgIHB1YmxpYyBzZXQgdG9vbHRpcChjb250ZW50OiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIgPSBjb250ZW50O1xyXG4gICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0b29sdG9wKCk6IEVsZW1lbnRSZWYge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBjb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXREaXNwbGF5UG9zaXRpb24oXHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxyXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXHJcbiAgICAgICAgICAgIHRydWVcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZSB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Jc1Rvb2x0aXBDb250ZW50VmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHByZXNlbnQgaW4gdGhlIG1hcmt1cFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgSXNUb29sdGlwVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNUb29sdGlwVmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgdG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRUb29sVGlwSGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy50b29sdGlwY29udGFpbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSB0b29sdGlwc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0VG9vbFRpcFdpZHRoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBXaWR0aCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGV0ZWN0IENoYW5nZXMgYWZ0ZXIgdmlldyBjaGVja2VkLiBQcmV2ZW50IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IgZXJyb3JcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmlsZVxyXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVjdCBVSSBDaGFuZ2VzIHRvIENhbGN1bGF0ZSBUb29sdGlwIGNvcnJlY3RcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmlsZVxyXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xyXG4gICAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgaW5pdGlhbGl6ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy50b29sdGlwY29udGFpbmVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPZmZzZXQgZm9yIFRvb2x0aXAuIFJlcXVpcmVkIGZvciBCUzQvQlM1IHRvIGNyZWF0ZSBwYWRkaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUb29sdGlwT2Zmc2V0KCk6IG51bWJlcjtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRMZWZ0UG9zaXRpb24oKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcclxuICAgICAgICAgICAgdGhpcy5yZWYsXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5MZWZ0UG9zID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUG9zaXRpb24gPSB0aGlzLkdldFRvb2x0aXBQb3NpdGlvbigpO1xyXG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCB8fCByZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMiAtIDYuNTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uVG9wKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcclxuICAgICAgICAgICAgdGhpcy5yZWYsXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxyXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5Ub3BQb3MgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XHJcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b20gfHwgcmVxdWlyZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IHRoaXMuZ2V0VG9vbFRpcFdpZHRoKCkgLyAyIC0gNi41O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIG1ldGhvZCBpZiBjb250ZW50IGhhcyBjaGFuZ2VkIGFuZCBwcm9wb3J0aW9ucyBuZWVkIHRvIGJlIHJlc2V0IGluIHRoZSBVSS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJsZVxyXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcbiJdLCJtYXBwaW5ncyI6IndteEJBeUJHO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQXpCSCxPQUFTRSxnQkFBZ0IsS0FBUSw0QkFBNEIsQ0FDN0QsT0FBU0MsZUFBZSxLQUFRLHVCQUF1QixDQUN2RCxPQUFTQyxXQUFXLEtBQVEsNkJBQTZCLENBQ3pELE9BR0lDLFNBQVMsQ0FHVEMsS0FBSyxDQUdMQyxTQUFTLEtBQ04sZUFBZSxDLGlDQUV0Qjs7Ozs7Ozs7OztHQVlBLE1BQU0sTUFBZ0IsQ0FBQUMsZ0JBQWdCLENBeUVsQztBQUVBO0FBRUE7OztPQUlBQyxZQUE2QkMsS0FBd0IsQ0FBbUJDLEdBQWUsRUFBQVgsY0FBQSxHQUFBWSxDQUFBLE1BQUFaLGNBQUEsR0FBQWEsQ0FBQSxNQUExRCxLQUFBSCxLQUFLLENBQUxBLEtBQUssQ0FBbUJWLGNBQUEsR0FBQWEsQ0FBQSxNQUFtQixLQUFBRixHQUFHLENBQUhBLEdBQUcsQ0FoRjNFO0FBRUE7O1dBQUFYLGNBQUEsR0FBQWEsQ0FBQSxNQUdpQixLQUFBQyxXQUFXLENBQWdCLEdBQUksQ0FBQVYsV0FBVyxFQUFFLENBTzdEOztXQUFBSixjQUFBLEdBQUFhLENBQUEsTUFHUSxLQUFBRSxpQkFBaUIsQ0FBWSxLQUFLLENBTzFDOztXQUFBZixjQUFBLEdBQUFhLENBQUEsTUFHTyxLQUFBRyx1QkFBdUIsQ0FBWSxLQUFLLENBRS9DOztXQUFBaEIsY0FBQSxHQUFBYSxDQUFBLE1BR08sS0FBQUksT0FBTyxDQUFXLENBQUMsQ0FFMUI7O1dBQUFqQixjQUFBLEdBQUFhLENBQUEsTUFHTyxLQUFB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