highmark-markdown 1.2.71 → 1.2.72

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 (245) hide show
  1. package/.aiignore +7 -9
  2. package/.swcrc +4 -3
  3. package/example.js +11655 -33035
  4. package/lib/attributeNames.js +7 -7
  5. package/lib/constants.js +19 -19
  6. package/lib/example/constants.js +7 -7
  7. package/lib/example/customEventTypes.js +9 -9
  8. package/lib/example/importer.js +72 -28
  9. package/lib/example/indexOptions.js +3 -3
  10. package/lib/example/view/button/page.js +34 -135
  11. package/lib/example/view/button/tab/css.js +14 -114
  12. package/lib/example/view/button/tab/html.js +14 -114
  13. package/lib/example/view/button/tab/markdown.js +14 -114
  14. package/lib/example/view/button/tab/markdownStyle.js +14 -114
  15. package/lib/example/view/button/tab/plainText.js +14 -114
  16. package/lib/example/view/button/tab/preview.js +14 -114
  17. package/lib/example/view/button/tab.js +36 -136
  18. package/lib/example/view/div/container/css.js +15 -153
  19. package/lib/example/view/div/container/html.js +19 -157
  20. package/lib/example/view/div/container/markdown.js +38 -190
  21. package/lib/example/view/div/container/markdownStyle.js +39 -191
  22. package/lib/example/view/div/container/plainText.js +15 -153
  23. package/lib/example/view/div/container/preview.js +25 -177
  24. package/lib/example/view/div/container.js +20 -156
  25. package/lib/example/view/div/html.js +18 -173
  26. package/lib/example/view/div/pageButtons.js +63 -236
  27. package/lib/example/view/div/preview.js +58 -268
  28. package/lib/example/view/div/sizeable/left.js +13 -104
  29. package/lib/example/view/div/tabButtons/left.js +42 -161
  30. package/lib/example/view/div/tabButtons/right.js +75 -198
  31. package/lib/example/view/div/tabButtons.js +15 -172
  32. package/lib/example/view/textarea/css.js +29 -147
  33. package/lib/example/view/textarea/markdown.js +29 -145
  34. package/lib/example/view/textarea/markdownStyle.js +29 -145
  35. package/lib/example/view/textarea/parseTree/css.js +21 -132
  36. package/lib/example/view/textarea/parseTree/html.js +21 -132
  37. package/lib/example/view/textarea/parseTree/markdown.js +17 -129
  38. package/lib/example/view/textarea/parseTree/markdownStyle.js +17 -129
  39. package/lib/example/view/textarea/parseTree.js +20 -135
  40. package/lib/example/view/textarea/plainText.js +32 -153
  41. package/lib/example/view/textarea.js +16 -23
  42. package/lib/example/view/xmp.js +30 -187
  43. package/lib/example/view.js +281 -518
  44. package/lib/example.js +10 -10
  45. package/lib/index/item.js +25 -87
  46. package/lib/index/list.js +29 -62
  47. package/lib/index/match.js +23 -62
  48. package/lib/index.js +34 -34
  49. package/lib/letters.js +3 -3
  50. package/lib/map/className.js +6 -6
  51. package/lib/map/node/css.js +50 -42
  52. package/lib/map/node/html.js +108 -71
  53. package/lib/map/nonTerminalNode/markdown.js +49 -40
  54. package/lib/map/nonTerminalNode/markdownStyle.js +49 -40
  55. package/lib/map/tagName.js +6 -6
  56. package/lib/markdown/bnf.js +300 -3
  57. package/lib/markdown/entries.js +3 -3
  58. package/lib/markdown/lexer.js +23 -126
  59. package/lib/markdown/parser.js +18 -121
  60. package/lib/markdownStyle/bnf.js +80 -3
  61. package/lib/markdownStyle/entries.js +8 -8
  62. package/lib/markdownStyle/lexer.js +23 -126
  63. package/lib/markdownStyle/parser.js +18 -121
  64. package/lib/mixins/node.js +53 -53
  65. package/lib/mixins/token.js +13 -13
  66. package/lib/node/css/amount.js +16 -110
  67. package/lib/node/css/argument.js +8 -95
  68. package/lib/node/css/arguments.js +13 -127
  69. package/lib/node/css/class.js +13 -127
  70. package/lib/node/css/colour.js +16 -110
  71. package/lib/node/css/content.js +12 -103
  72. package/lib/node/css/declaration.js +19 -109
  73. package/lib/node/css/identifier.js +16 -110
  74. package/lib/node/css/name.js +13 -127
  75. package/lib/node/css/pseudoClass.js +13 -127
  76. package/lib/node/css/ruleName.js +43 -137
  77. package/lib/node/css/ruleSet.js +45 -139
  78. package/lib/node/css/selector.js +8 -95
  79. package/lib/node/css/selectors.js +19 -110
  80. package/lib/node/css/selectorsList.js +22 -115
  81. package/lib/node/css/string.js +16 -110
  82. package/lib/node/css/target.js +12 -103
  83. package/lib/node/css/topmost.js +70 -182
  84. package/lib/node/css/value.js +12 -126
  85. package/lib/node/css/values.js +16 -107
  86. package/lib/node/css/verbatim.js +35 -132
  87. package/lib/node/css.js +66 -275
  88. package/lib/node/html/anchor/contents.js +8 -92
  89. package/lib/node/html/anchor/footnote.js +8 -92
  90. package/lib/node/html/anchor/index.js +8 -92
  91. package/lib/node/html/anchor.js +38 -157
  92. package/lib/node/html/container.js +24 -154
  93. package/lib/node/html/directive/contents.js +8 -95
  94. package/lib/node/html/directive/footnotes.js +8 -95
  95. package/lib/node/html/directive/index.js +8 -95
  96. package/lib/node/html/directive/pageNumber.js +8 -95
  97. package/lib/node/html/directive.js +23 -123
  98. package/lib/node/html/division.js +127 -273
  99. package/lib/node/html/error.js +41 -179
  100. package/lib/node/html/footnote.js +40 -149
  101. package/lib/node/html/heading/index.js +61 -183
  102. package/lib/node/html/heading/primary.js +12 -112
  103. package/lib/node/html/heading/quaternary.js +12 -112
  104. package/lib/node/html/heading/secondary.js +12 -112
  105. package/lib/node/html/heading/tertiary.js +12 -112
  106. package/lib/node/html/heading.js +30 -147
  107. package/lib/node/html/image.js +76 -207
  108. package/lib/node/html/item/contents.js +20 -124
  109. package/lib/node/html/item/footnote.js +21 -125
  110. package/lib/node/html/item/index.js +39 -145
  111. package/lib/node/html/item/ordered.js +23 -133
  112. package/lib/node/html/item/unordered.js +10 -110
  113. package/lib/node/html/line/block.js +15 -119
  114. package/lib/node/html/line.js +89 -242
  115. package/lib/node/html/link/contents.js +36 -153
  116. package/lib/node/html/link/email.js +89 -243
  117. package/lib/node/html/link/footnote.js +94 -238
  118. package/lib/node/html/link/hyper.js +89 -243
  119. package/lib/node/html/link/index.js +67 -222
  120. package/lib/node/html/list/contents.js +20 -124
  121. package/lib/node/html/list/footnotes.js +40 -160
  122. package/lib/node/html/list/index.js +20 -124
  123. package/lib/node/html/list/ordered.js +10 -110
  124. package/lib/node/html/list/unordered.js +10 -110
  125. package/lib/node/html/listing/block.js +33 -177
  126. package/lib/node/html/listing/inline.js +35 -174
  127. package/lib/node/html/pageNumber.js +65 -216
  128. package/lib/node/html/paragraph.js +10 -110
  129. package/lib/node/html/reference.js +10 -110
  130. package/lib/node/html/table.js +10 -110
  131. package/lib/node/html/tableBody.js +10 -110
  132. package/lib/node/html/tableBodyCell.js +10 -110
  133. package/lib/node/html/tableBodyRow.js +10 -110
  134. package/lib/node/html/tableHead.js +10 -110
  135. package/lib/node/html/tableHeadCell.js +10 -110
  136. package/lib/node/html/tableHeadRow.js +10 -110
  137. package/lib/node/html/text/block.js +10 -110
  138. package/lib/node/html/text/comma.js +21 -128
  139. package/lib/node/html/text/emphasised.js +14 -118
  140. package/lib/node/html/text/index.js +28 -143
  141. package/lib/node/html/text/inline.js +34 -147
  142. package/lib/node/html/text/plain.js +10 -110
  143. package/lib/node/html/text/strong.js +14 -118
  144. package/lib/node/html/text/stronglyEmphasised.js +66 -208
  145. package/lib/node/html/text.js +24 -162
  146. package/lib/node/html/topmost.js +100 -240
  147. package/lib/node/html.js +256 -554
  148. package/lib/node/markdown/blockEnd.js +5 -89
  149. package/lib/node/markdown/blockStart.js +18 -113
  150. package/lib/node/markdown/className.js +12 -100
  151. package/lib/node/markdown/container.js +18 -113
  152. package/lib/node/markdown/directive/embed.js +39 -137
  153. package/lib/node/markdown/directive/include.js +39 -137
  154. package/lib/node/markdown/division.js +70 -216
  155. package/lib/node/markdown/document.js +44 -147
  156. package/lib/node/markdown/error.js +12 -100
  157. package/lib/node/markdown/footnote.js +12 -100
  158. package/lib/node/markdown/hyperlink.js +34 -131
  159. package/lib/node/markdown/image.js +12 -100
  160. package/lib/node/markdown/item/ordered.js +15 -103
  161. package/lib/node/markdown/link/email.js +34 -131
  162. package/lib/node/markdown/link/footnote.js +14 -102
  163. package/lib/node/markdown/listng/block.js +12 -100
  164. package/lib/node/markdown/listng/inline.js +18 -106
  165. package/lib/node/markdown/path.js +12 -100
  166. package/lib/node/markdown/reference.js +15 -103
  167. package/lib/node/markdown/subDivision.js +35 -126
  168. package/lib/node/markdown/text/block.js +5 -89
  169. package/lib/node/markdown/text/plain.js +5 -89
  170. package/lib/node/markdown/text.js +46 -134
  171. package/lib/node/markdown.js +34 -169
  172. package/lib/node/markdownStyle/amount.js +13 -101
  173. package/lib/node/markdownStyle/argument.js +5 -89
  174. package/lib/node/markdownStyle/arguments.js +5 -89
  175. package/lib/node/markdownStyle/colour.js +12 -100
  176. package/lib/node/markdownStyle/content.js +21 -109
  177. package/lib/node/markdownStyle/declaration.js +5 -89
  178. package/lib/node/markdownStyle/document.js +5 -89
  179. package/lib/node/markdownStyle/error.js +5 -89
  180. package/lib/node/markdownStyle/identifier.js +13 -101
  181. package/lib/node/markdownStyle/name.js +5 -89
  182. package/lib/node/markdownStyle/nonsense.js +5 -89
  183. package/lib/node/markdownStyle/pseudoClass.js +5 -89
  184. package/lib/node/markdownStyle/ruleName.js +12 -100
  185. package/lib/node/markdownStyle/ruleSet.js +5 -89
  186. package/lib/node/markdownStyle/selector.js +5 -89
  187. package/lib/node/markdownStyle/selectors.js +5 -89
  188. package/lib/node/markdownStyle/selectorsList.js +5 -89
  189. package/lib/node/markdownStyle/string.js +12 -100
  190. package/lib/node/markdownStyle/target.js +12 -100
  191. package/lib/node/markdownStyle/value.js +5 -89
  192. package/lib/node/markdownStyle/values.js +5 -89
  193. package/lib/node/markdownStyle/verbatim.js +5 -89
  194. package/lib/node/markdownStyle.js +16 -135
  195. package/lib/prepends.js +4 -4
  196. package/lib/queries/markdown.js +7 -7
  197. package/lib/queries/markdownStyle.js +7 -7
  198. package/lib/ruleNames/markdown.js +145 -145
  199. package/lib/ruleNames/markdownStyle.js +51 -51
  200. package/lib/style/defaultMarkdown.js +247 -3
  201. package/lib/style/font.js +54 -3
  202. package/lib/styleElement/markdown/default.js +17 -131
  203. package/lib/styleElement/markdown.js +30 -151
  204. package/lib/styleElement.js +30 -69
  205. package/lib/targets.js +3 -3
  206. package/lib/tokenTypes.js +39 -39
  207. package/lib/transform/css/ruleSet.js +15 -106
  208. package/lib/transform/css/selectors.js +17 -108
  209. package/lib/transform/css/selectorsList.js +28 -121
  210. package/lib/transform/css.js +35 -139
  211. package/lib/transform/html/anchor/index.js +11 -99
  212. package/lib/transform/html/division.js +18 -112
  213. package/lib/transform/html/footnote.js +25 -122
  214. package/lib/transform/html/heading/index.js +7 -91
  215. package/lib/transform/html/index.js +44 -139
  216. package/lib/transform/html/item/contents.js +23 -111
  217. package/lib/transform/html/item/footnote.js +11 -99
  218. package/lib/transform/html/item/index.js +11 -99
  219. package/lib/transform/html/line.js +10 -98
  220. package/lib/transform/html/link/contents.js +20 -111
  221. package/lib/transform/html/link/footnote.js +36 -140
  222. package/lib/transform/html/list/contents.js +37 -151
  223. package/lib/transform/html/list/footnotes.js +19 -110
  224. package/lib/transform/html/list/index.js +16 -100
  225. package/lib/transform/html/pageNumber.js +15 -106
  226. package/lib/transform/html.js +28 -132
  227. package/lib/transform/markdown/directive/embed.js +9 -120
  228. package/lib/transform/markdown/directive/ignore.js +6 -90
  229. package/lib/transform/markdown/directive/include.js +15 -129
  230. package/lib/transform/markdown/subDivision.js +6 -90
  231. package/lib/transform/markdown.js +7 -134
  232. package/lib/utilities/contents.js +74 -145
  233. package/lib/utilities/css.js +12 -16
  234. package/lib/utilities/dom.js +11 -11
  235. package/lib/utilities/entities.js +2 -2
  236. package/lib/utilities/entries.js +5 -5
  237. package/lib/utilities/grammar.js +57 -86
  238. package/lib/utilities/html.js +21 -25
  239. package/lib/utilities/index.js +76 -89
  240. package/lib/utilities/markdown.js +14 -17
  241. package/lib/utilities/markdownStyle.js +2 -2
  242. package/lib/utilities/object.js +16 -16
  243. package/lib/utilities/query.js +13 -14
  244. package/lib/utilities/string.js +2 -2
  245. package/package.json +1 -1
@@ -8,288 +8,142 @@ Object.defineProperty(exports, "default", {
8
8
  return DivisionHTMLNode;
9
9
  }
10
10
  });
11
- var _necessary = require("necessary");
12
- var _html = /*#__PURE__*/ _interop_require_default(require("../../node/html"));
13
- var _pageNumber = /*#__PURE__*/ _interop_require_default(require("../../node/html/pageNumber"));
14
- var _division = /*#__PURE__*/ _interop_require_default(require("../../transform/html/division"));
15
- var _pageNumber1 = /*#__PURE__*/ _interop_require_default(require("../../transform/html/pageNumber"));
16
- var _index = /*#__PURE__*/ _interop_require_default(require("../../transform/html/anchor/index"));
17
- var _footnote = /*#__PURE__*/ _interop_require_default(require("../../transform/html/item/footnote"));
18
- var _footnotes = /*#__PURE__*/ _interop_require_default(require("../../transform/html/list/footnotes"));
19
- var _markdown = require("../../ruleNames/markdown");
20
- var _html1 = require("../../utilities/html");
21
- function _assert_this_initialized(self) {
22
- if (self === void 0) {
23
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
24
- }
25
- return self;
26
- }
27
- function _call_super(_this, derived, args) {
28
- derived = _get_prototype_of(derived);
29
- return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
30
- }
31
- function _class_call_check(instance, Constructor) {
32
- if (!(instance instanceof Constructor)) {
33
- throw new TypeError("Cannot call a class as a function");
34
- }
35
- }
36
- function _defineProperties(target, props) {
37
- for(var i = 0; i < props.length; i++){
38
- var descriptor = props[i];
39
- descriptor.enumerable = descriptor.enumerable || false;
40
- descriptor.configurable = true;
41
- if ("value" in descriptor) descriptor.writable = true;
42
- Object.defineProperty(target, descriptor.key, descriptor);
43
- }
44
- }
45
- function _create_class(Constructor, protoProps, staticProps) {
46
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
47
- if (staticProps) _defineProperties(Constructor, staticProps);
48
- return Constructor;
49
- }
50
- function _define_property(obj, key, value) {
51
- if (key in obj) {
52
- Object.defineProperty(obj, key, {
53
- value: value,
54
- enumerable: true,
55
- configurable: true,
56
- writable: true
57
- });
58
- } else {
59
- obj[key] = value;
60
- }
61
- return obj;
62
- }
63
- function _get_prototype_of(o) {
64
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
65
- return o.__proto__ || Object.getPrototypeOf(o);
66
- };
67
- return _get_prototype_of(o);
68
- }
69
- function _inherits(subClass, superClass) {
70
- if (typeof superClass !== "function" && superClass !== null) {
71
- throw new TypeError("Super expression must either be null or a function");
72
- }
73
- subClass.prototype = Object.create(superClass && superClass.prototype, {
74
- constructor: {
75
- value: subClass,
76
- writable: true,
77
- configurable: true
78
- }
79
- });
80
- if (superClass) _set_prototype_of(subClass, superClass);
81
- }
82
- function _instanceof(left, right) {
83
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
84
- return !!right[Symbol.hasInstance](left);
85
- } else {
86
- return left instanceof right;
87
- }
88
- }
11
+ const _necessary = require("necessary");
12
+ const _html = /*#__PURE__*/ _interop_require_default(require("../../node/html"));
13
+ const _pageNumber = /*#__PURE__*/ _interop_require_default(require("../../node/html/pageNumber"));
14
+ const _division = /*#__PURE__*/ _interop_require_default(require("../../transform/html/division"));
15
+ const _pageNumber1 = /*#__PURE__*/ _interop_require_default(require("../../transform/html/pageNumber"));
16
+ const _index = /*#__PURE__*/ _interop_require_default(require("../../transform/html/anchor/index"));
17
+ const _footnote = /*#__PURE__*/ _interop_require_default(require("../../transform/html/item/footnote"));
18
+ const _footnotes = /*#__PURE__*/ _interop_require_default(require("../../transform/html/list/footnotes"));
19
+ const _markdown = require("../../ruleNames/markdown");
20
+ const _html1 = require("../../utilities/html");
89
21
  function _interop_require_default(obj) {
90
22
  return obj && obj.__esModule ? obj : {
91
23
  default: obj
92
24
  };
93
25
  }
94
- function _possible_constructor_return(self, call) {
95
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
96
- return call;
26
+ const { extract } = _necessary.arrayUtilities;
27
+ class DivisionHTMLNode extends _html.default {
28
+ constructor(outerNode, parentNode, childNodes, domElement, divisionClassName){
29
+ super(outerNode, parentNode, childNodes, domElement);
30
+ this.divisionClassName = divisionClassName;
97
31
  }
98
- return _assert_this_initialized(self);
99
- }
100
- function _set_prototype_of(o, p) {
101
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
102
- o.__proto__ = p;
103
- return o;
104
- };
105
- return _set_prototype_of(o, p);
106
- }
107
- function _type_of(obj) {
108
- "@swc/helpers - typeof";
109
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
110
- }
111
- function _is_native_reflect_construct() {
112
- try {
113
- var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
114
- } catch (_) {}
115
- return (_is_native_reflect_construct = function() {
116
- return !!result;
117
- })();
118
- }
119
- var extract = _necessary.arrayUtilities.extract;
120
- var DivisionHTMLNode = /*#__PURE__*/ function(HTMLNode) {
121
- _inherits(DivisionHTMLNode, HTMLNode);
122
- function DivisionHTMLNode(outerNode, parentNode, childNodes, domElement, divisionClassName) {
123
- _class_call_check(this, DivisionHTMLNode);
124
- var _this;
125
- _this = _call_super(this, DivisionHTMLNode, [
126
- outerNode,
127
- parentNode,
128
- childNodes,
129
- domElement
130
- ]);
131
- _this.divisionClassName = divisionClassName;
132
- return _this;
32
+ getDivisionClassName() {
33
+ return this.divisionClassName;
133
34
  }
134
- _create_class(DivisionHTMLNode, [
135
- {
136
- key: "getDivisionClassName",
137
- value: function getDivisionClassName() {
138
- return this.divisionClassName;
139
- }
140
- },
141
- {
142
- key: "getDivDOMElement",
143
- value: function getDivDOMElement() {
144
- var domElement = this.getDOMElement(), divDOMElement = domElement; ///
145
- return divDOMElement;
146
- }
147
- },
148
- {
149
- key: "className",
150
- value: function className(context) {
151
- var className = this.divisionClassName; ///
152
- return className;
153
- }
154
- },
155
- {
156
- key: "getRuleName",
157
- value: function getRuleName() {
158
- var ruleNme = _markdown.DIVISION_MARKDOWN_RULE_NAME;
159
- return ruleNme;
160
- }
161
- },
162
- {
163
- key: "isIgnored",
164
- value: function isIgnored() {
165
- var markdownNode = this.getMarkdownNode(), divisionMarkdownNode = markdownNode, ignored = divisionMarkdownNode.isIgnored();
166
- return ignored;
167
- }
168
- },
169
- {
170
- key: "pageNumber",
171
- value: function pageNumber(context) {
172
- var pageNumber = this.fromFirstLastChildNode(function(firstLastChildNode) {
173
- var pageNumber = null;
174
- var firstLastChildNodePageNumberHTMLNode = _instanceof(firstLastChildNode, _pageNumber.default);
175
- if (firstLastChildNodePageNumberHTMLNode) {
176
- var pageNumberHTMLNode = firstLastChildNode; ///
177
- pageNumber = pageNumberHTMLNode.getPageNumber();
178
- }
179
- return pageNumber;
180
- });
181
- return pageNumber;
182
- }
183
- },
184
- {
185
- key: "paginate",
186
- value: function paginate(htmlTransforms, context) {
187
- var ignored = this.isIgnored();
188
- if (ignored) {
189
- return;
190
- }
191
- var node = this, start = 1, divisionHTMLNode = this, footnotesDirectiveHTMLNode = (0, _html1.footnotesDirectiveHTMLNodeFromNode)(node), pageNumberDirectiveHTMLNode = (0, _html1.pageNumberDirectiveHTMLNodeFromNode)(node);
192
- var pageNumber = context.pageNumber;
193
- Object.assign(context, {
194
- start: start
195
- });
196
- if (footnotesDirectiveHTMLNode !== null) {
197
- var footnotesListHTMLTransform = divisionHTMLNode.resolveFootnotes(context);
198
- if (footnotesListHTMLTransform !== null) {
199
- footnotesListHTMLTransform.appendToDivisionHTMLNode(divisionHTMLNode);
200
- }
201
- }
202
- if (pageNumberDirectiveHTMLNode !== null) {
203
- var pageNumberHTMLTransform = divisionHTMLNode.resolvePageNumber(pageNumber);
204
- pageNumberHTMLTransform.appendToDivisionHTMLNode(divisionHTMLNode);
205
- }
206
- var htmlTransform;
207
- var indexAnchorHTMLTransform = _index.default.fromPageNumber(pageNumber);
208
- htmlTransform = indexAnchorHTMLTransform; ///
209
- htmlTransforms.push(htmlTransform);
210
- var divisionHTMLTransform = _division.default.fromDivisionHTMLNode(divisionHTMLNode);
211
- htmlTransform = divisionHTMLTransform; ///
212
- htmlTransforms.push(htmlTransform);
213
- pageNumber++;
214
- Object.assign(context, {
215
- pageNumber: pageNumber
216
- });
217
- delete context.start;
218
- }
219
- },
220
- {
221
- key: "resolveFootnotes",
222
- value: function resolveFootnotes(context) {
223
- var node = this, footnoteHTMLNodes = (0, _html1.footnoteHTMLNodesFromNode)(node), footnoteLinkHTMLNodes = (0, _html1.footnoteLinkHTMLNodesFromNode)(node);
224
- var start;
225
- var ref, ref1;
226
- ref = context, ref1 = ref.start, start = ref1 === void 0 ? 1 : ref1, ref;
227
- var footnoteItemHTMLTransforms = [];
228
- var number = start; ///
229
- footnoteLinkHTMLNodes.forEach(function(footnoteLinkHTMLNode) {
230
- var identifier = footnoteLinkHTMLNode.identifier(context), footnoteHTMLNode = extract(footnoteHTMLNodes, function(footnoteHTMLNode) {
231
- var identifierMatches = footnoteHTMLNode.matchIdentifier(identifier);
232
- if (identifierMatches) {
233
- return true;
234
- }
235
- }) || null;
236
- if (footnoteHTMLNode !== null) {
237
- var paragraphHTMLNode = footnoteHTMLNode.getParagraphHTMLNode(), footnoteItemHTMLTransform = _footnote.default.fromParagraphHTMLNOdeAndIdentifier(paragraphHTMLNode, identifier);
238
- footnoteItemHTMLTransforms.push(footnoteItemHTMLTransform);
239
- footnoteLinkHTMLNode.setNumber(number);
240
- number++;
241
- } else {
242
- footnoteLinkHTMLNode.resetNumber();
243
- }
244
- });
245
- var footnotesListHTMLTransform = _footnotes.default.fromStartAndFootnoteItemHTMLTransforms(start, footnoteItemHTMLTransforms);
246
- start = number; ///
247
- Object.assign(context, {
248
- start: start
249
- });
250
- return footnotesListHTMLTransform;
251
- }
252
- },
253
- {
254
- key: "resolvePageNumber",
255
- value: function resolvePageNumber(pageNumber) {
256
- var pageNumberHTMLTransform = _pageNumber1.default.fromPageNumber(pageNumber);
257
- return pageNumberHTMLTransform;
258
- }
259
- },
260
- {
261
- key: "asString",
262
- value: function asString() {
263
- var ruleName = this.getRuleName(), string = ruleName; ///
264
- return string;
35
+ getDivDOMElement() {
36
+ const domElement = this.getDOMElement(), divDOMElement = domElement; ///
37
+ return divDOMElement;
38
+ }
39
+ className(context) {
40
+ const className = this.divisionClassName; ///
41
+ return className;
42
+ }
43
+ getRuleName() {
44
+ const ruleNme = _markdown.DIVISION_MARKDOWN_RULE_NAME;
45
+ return ruleNme;
46
+ }
47
+ isIgnored() {
48
+ const markdownNode = this.getMarkdownNode(), divisionMarkdownNode = markdownNode, ignored = divisionMarkdownNode.isIgnored();
49
+ return ignored;
50
+ }
51
+ pageNumber(context) {
52
+ const pageNumber = this.fromFirstLastChildNode((firstLastChildNode)=>{
53
+ let pageNumber = null;
54
+ const firstLastChildNodePageNumberHTMLNode = firstLastChildNode instanceof _pageNumber.default;
55
+ if (firstLastChildNodePageNumberHTMLNode) {
56
+ const pageNumberHTMLNode = firstLastChildNode; ///
57
+ pageNumber = pageNumberHTMLNode.getPageNumber();
265
58
  }
59
+ return pageNumber;
60
+ });
61
+ return pageNumber;
62
+ }
63
+ paginate(htmlTransforms, context) {
64
+ const ignored = this.isIgnored();
65
+ if (ignored) {
66
+ return;
266
67
  }
267
- ], [
268
- {
269
- key: "fromNothing",
270
- value: function fromNothing() {
271
- var divisionClassName = null, divisionHTMLNode = _html.default.fromNothing(DivisionHTMLNode, divisionClassName);
272
- return divisionHTMLNode;
273
- }
274
- },
275
- {
276
- key: "fromOuterNode",
277
- value: function fromOuterNode(outerNode) {
278
- var divisionMarkdownNode = outerNode, divisionClassName = divisionMarkdownNode.getDivisionClassName(), divisionHTMLNode = _html.default.fromOuterNode(DivisionHTMLNode, outerNode, divisionClassName);
279
- return divisionHTMLNode;
280
- }
281
- },
282
- {
283
- key: "fromPaginatedHTMLNodesAndDivisionClassName",
284
- value: function fromPaginatedHTMLNodesAndDivisionClassName(paginatedHTMLNodes, divisionClassName) {
285
- var childHTMLNodes = paginatedHTMLNodes, divisionHTMLNode = _html.default.fromChildHTMLNodes(DivisionHTMLNode, childHTMLNodes, divisionClassName);
286
- return divisionHTMLNode;
68
+ const node = this, start = 1, divisionHTMLNode = this, footnotesDirectiveHTMLNode = (0, _html1.footnotesDirectiveHTMLNodeFromNode)(node), pageNumberDirectiveHTMLNode = (0, _html1.pageNumberDirectiveHTMLNodeFromNode)(node);
69
+ let { pageNumber } = context;
70
+ Object.assign(context, {
71
+ start
72
+ });
73
+ if (footnotesDirectiveHTMLNode !== null) {
74
+ const footnotesListHTMLTransform = divisionHTMLNode.resolveFootnotes(context);
75
+ if (footnotesListHTMLTransform !== null) {
76
+ footnotesListHTMLTransform.appendToDivisionHTMLNode(divisionHTMLNode);
287
77
  }
288
78
  }
289
- ]);
290
- return DivisionHTMLNode;
291
- }(_html.default);
292
- _define_property(DivisionHTMLNode, "tagName", "div");
293
- _define_property(DivisionHTMLNode, "className", null);
79
+ if (pageNumberDirectiveHTMLNode !== null) {
80
+ const pageNumberHTMLTransform = divisionHTMLNode.resolvePageNumber(pageNumber);
81
+ pageNumberHTMLTransform.appendToDivisionHTMLNode(divisionHTMLNode);
82
+ }
83
+ let htmlTransform;
84
+ const indexAnchorHTMLTransform = _index.default.fromPageNumber(pageNumber);
85
+ htmlTransform = indexAnchorHTMLTransform; ///
86
+ htmlTransforms.push(htmlTransform);
87
+ const divisionHTMLTransform = _division.default.fromDivisionHTMLNode(divisionHTMLNode);
88
+ htmlTransform = divisionHTMLTransform; ///
89
+ htmlTransforms.push(htmlTransform);
90
+ pageNumber++;
91
+ Object.assign(context, {
92
+ pageNumber
93
+ });
94
+ delete context.start;
95
+ }
96
+ resolveFootnotes(context) {
97
+ const node = this, footnoteHTMLNodes = (0, _html1.footnoteHTMLNodesFromNode)(node), footnoteLinkHTMLNodes = (0, _html1.footnoteLinkHTMLNodesFromNode)(node);
98
+ let start;
99
+ ({ start = 1 } = context);
100
+ const footnoteItemHTMLTransforms = [];
101
+ let number = start; ///
102
+ footnoteLinkHTMLNodes.forEach((footnoteLinkHTMLNode)=>{
103
+ const identifier = footnoteLinkHTMLNode.identifier(context), footnoteHTMLNode = extract(footnoteHTMLNodes, (footnoteHTMLNode)=>{
104
+ const identifierMatches = footnoteHTMLNode.matchIdentifier(identifier);
105
+ if (identifierMatches) {
106
+ return true;
107
+ }
108
+ }) || null;
109
+ if (footnoteHTMLNode !== null) {
110
+ const paragraphHTMLNode = footnoteHTMLNode.getParagraphHTMLNode(), footnoteItemHTMLTransform = _footnote.default.fromParagraphHTMLNOdeAndIdentifier(paragraphHTMLNode, identifier);
111
+ footnoteItemHTMLTransforms.push(footnoteItemHTMLTransform);
112
+ footnoteLinkHTMLNode.setNumber(number);
113
+ number++;
114
+ } else {
115
+ footnoteLinkHTMLNode.resetNumber();
116
+ }
117
+ });
118
+ const footnotesListHTMLTransform = _footnotes.default.fromStartAndFootnoteItemHTMLTransforms(start, footnoteItemHTMLTransforms);
119
+ start = number; ///
120
+ Object.assign(context, {
121
+ start
122
+ });
123
+ return footnotesListHTMLTransform;
124
+ }
125
+ resolvePageNumber(pageNumber) {
126
+ const pageNumberHTMLTransform = _pageNumber1.default.fromPageNumber(pageNumber);
127
+ return pageNumberHTMLTransform;
128
+ }
129
+ asString() {
130
+ const ruleName = this.getRuleName(), string = ruleName; ///
131
+ return string;
132
+ }
133
+ static tagName = "div";
134
+ static className = null;
135
+ static fromNothing() {
136
+ const divisionClassName = null, divisionHTMLNode = _html.default.fromNothing(DivisionHTMLNode, divisionClassName);
137
+ return divisionHTMLNode;
138
+ }
139
+ static fromOuterNode(outerNode) {
140
+ const divisionMarkdownNode = outerNode, divisionClassName = divisionMarkdownNode.getDivisionClassName(), divisionHTMLNode = _html.default.fromOuterNode(DivisionHTMLNode, outerNode, divisionClassName);
141
+ return divisionHTMLNode;
142
+ }
143
+ static fromPaginatedHTMLNodesAndDivisionClassName(paginatedHTMLNodes, divisionClassName) {
144
+ const childHTMLNodes = paginatedHTMLNodes, divisionHTMLNode = _html.default.fromChildHTMLNodes(DivisionHTMLNode, childHTMLNodes, divisionClassName);
145
+ return divisionHTMLNode;
146
+ }
147
+ }
294
148
 
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL2h0bWwvZGl2aXNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgSFRNTE5vZGUgZnJvbSBcIi4uLy4uL25vZGUvaHRtbFwiO1xuaW1wb3J0IFBhZ2VOdW1iZXJIVE1MTm9kZSBmcm9tIFwiLi4vLi4vbm9kZS9odG1sL3BhZ2VOdW1iZXJcIjtcbmltcG9ydCBEaXZpc2lvbkhUTUxUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uL3RyYW5zZm9ybS9odG1sL2RpdmlzaW9uXCI7XG5pbXBvcnQgUGFnZU51bWJlckhUTUxUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uL3RyYW5zZm9ybS9odG1sL3BhZ2VOdW1iZXJcIjtcbmltcG9ydCBJbmRleEFuY2hvckhUTUxUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uL3RyYW5zZm9ybS9odG1sL2FuY2hvci9pbmRleFwiO1xuaW1wb3J0IEZvb3Rub3RlSXRlbUhUTUxUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uL3RyYW5zZm9ybS9odG1sL2l0ZW0vZm9vdG5vdGVcIjtcbmltcG9ydCBGb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybSBmcm9tIFwiLi4vLi4vdHJhbnNmb3JtL2h0bWwvbGlzdC9mb290bm90ZXNcIjtcblxuaW1wb3J0IHsgRElWSVNJT05fTUFSS0RPV05fUlVMRV9OQU1FIH0gZnJvbSBcIi4uLy4uL3J1bGVOYW1lcy9tYXJrZG93blwiO1xuaW1wb3J0IHsgZm9vdG5vdGVIVE1MTm9kZXNGcm9tTm9kZSxcbiAgICAgICAgIGZvb3Rub3RlTGlua0hUTUxOb2Rlc0Zyb21Ob2RlLFxuICAgICAgICAgZm9vdG5vdGVzRGlyZWN0aXZlSFRNTE5vZGVGcm9tTm9kZSxcbiAgICAgICAgIHBhZ2VOdW1iZXJEaXJlY3RpdmVIVE1MTm9kZUZyb21Ob2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9odG1sXCI7XG5cbmNvbnN0IHsgZXh0cmFjdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpdmlzaW9uSFRNTE5vZGUgZXh0ZW5kcyBIVE1MTm9kZSB7XG4gIGNvbnN0cnVjdG9yKG91dGVyTm9kZSwgcGFyZW50Tm9kZSwgY2hpbGROb2RlcywgZG9tRWxlbWVudCwgZGl2aXNpb25DbGFzc05hbWUpIHtcbiAgICBzdXBlcihvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIGRvbUVsZW1lbnQpO1xuXG4gICAgdGhpcy5kaXZpc2lvbkNsYXNzTmFtZSA9IGRpdmlzaW9uQ2xhc3NOYW1lO1xuICB9XG5cbiAgZ2V0RGl2aXNpb25DbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2aXNpb25DbGFzc05hbWU7XG4gIH1cblxuICBnZXREaXZET01FbGVtZW50KCkge1xuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcbiAgICAgICAgICBkaXZET01FbGVtZW50ID0gZG9tRWxlbWVudDsgIC8vL1xuXG4gICAgcmV0dXJuIGRpdkRPTUVsZW1lbnQ7XG4gIH1cblxuICBjbGFzc05hbWUoY29udGV4dCkge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuZGl2aXNpb25DbGFzc05hbWU7IC8vL1xuXG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIGNvbnN0IHJ1bGVObWUgPSBESVZJU0lPTl9NQVJLRE9XTl9SVUxFX05BTUU7XG5cbiAgICByZXR1cm4gcnVsZU5tZTtcbiAgfVxuXG4gIGlzSWdub3JlZCgpIHtcbiAgICBjb25zdCBtYXJrZG93bk5vZGUgPSB0aGlzLmdldE1hcmtkb3duTm9kZSgpLFxuICAgICAgICAgIGRpdmlzaW9uTWFya2Rvd25Ob2RlID0gbWFya2Rvd25Ob2RlLCAgLy8vXG4gICAgICAgICAgaWdub3JlZCA9IGRpdmlzaW9uTWFya2Rvd25Ob2RlLmlzSWdub3JlZCgpO1xuXG4gICAgcmV0dXJuIGlnbm9yZWQ7XG4gIH1cblxuICBwYWdlTnVtYmVyKGNvbnRleHQpIHtcbiAgICBjb25zdCBwYWdlTnVtYmVyID0gdGhpcy5mcm9tRmlyc3RMYXN0Q2hpbGROb2RlKChmaXJzdExhc3RDaGlsZE5vZGUpID0+IHtcbiAgICAgIGxldCBwYWdlTnVtYmVyID0gbnVsbDtcblxuICAgICAgY29uc3QgZmlyc3RMYXN0Q2hpbGROb2RlUGFnZU51bWJlckhUTUxOb2RlID0gKGZpcnN0TGFzdENoaWxkTm9kZSBpbnN0YW5jZW9mIFBhZ2VOdW1iZXJIVE1MTm9kZSk7XG5cbiAgICAgIGlmIChmaXJzdExhc3RDaGlsZE5vZGVQYWdlTnVtYmVySFRNTE5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFnZU51bWJlckhUTUxOb2RlID0gZmlyc3RMYXN0Q2hpbGROb2RlOyAgLy8vXG5cbiAgICAgICAgcGFnZU51bWJlciA9IHBhZ2VOdW1iZXJIVE1MTm9kZS5nZXRQYWdlTnVtYmVyKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYWdlTnVtYmVyO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhZ2VOdW1iZXI7XG4gIH1cblxuICBwYWdpbmF0ZShodG1sVHJhbnNmb3JtcywgY29udGV4dCkge1xuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmlzSWdub3JlZCgpO1xuXG4gICAgaWYgKGlnbm9yZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIHN0YXJ0ID0gMSxcbiAgICAgICAgICBkaXZpc2lvbkhUTUxOb2RlID0gdGhpcyxcbiAgICAgICAgICBmb290bm90ZXNEaXJlY3RpdmVIVE1MTm9kZSA9IGZvb3Rub3Rlc0RpcmVjdGl2ZUhUTUxOb2RlRnJvbU5vZGUobm9kZSksXG4gICAgICAgICAgcGFnZU51bWJlckRpcmVjdGl2ZUhUTUxOb2RlID0gcGFnZU51bWJlckRpcmVjdGl2ZUhUTUxOb2RlRnJvbU5vZGUobm9kZSk7XG5cbiAgICBsZXQgeyBwYWdlTnVtYmVyIH0gPSBjb250ZXh0O1xuXG4gICAgT2JqZWN0LmFzc2lnbihjb250ZXh0LCB7XG4gICAgICBzdGFydFxuICAgIH0pO1xuXG4gICAgaWYgKGZvb3Rub3Rlc0RpcmVjdGl2ZUhUTUxOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybSAgPSBkaXZpc2lvbkhUTUxOb2RlLnJlc29sdmVGb290bm90ZXMoY29udGV4dCk7XG5cbiAgICAgIGlmIChmb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybSAhPT0gbnVsbCkge1xuICAgICAgICBmb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybS5hcHBlbmRUb0RpdmlzaW9uSFRNTE5vZGUoZGl2aXNpb25IVE1MTm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhZ2VOdW1iZXJEaXJlY3RpdmVIVE1MTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcGFnZU51bWJlckhUTUxUcmFuc2Zvcm0gPSBkaXZpc2lvbkhUTUxOb2RlLnJlc29sdmVQYWdlTnVtYmVyKHBhZ2VOdW1iZXIpO1xuXG4gICAgICBwYWdlTnVtYmVySFRNTFRyYW5zZm9ybS5hcHBlbmRUb0RpdmlzaW9uSFRNTE5vZGUoZGl2aXNpb25IVE1MTm9kZSk7XG4gICAgfVxuXG4gICAgbGV0IGh0bWxUcmFuc2Zvcm07XG5cbiAgICBjb25zdCBpbmRleEFuY2hvckhUTUxUcmFuc2Zvcm0gPSBJbmRleEFuY2hvckhUTUxUcmFuc2Zvcm0uZnJvbVBhZ2VOdW1iZXIocGFnZU51bWJlcik7XG5cbiAgICBodG1sVHJhbnNmb3JtID0gaW5kZXhBbmNob3JIVE1MVHJhbnNmb3JtOyAgLy8vXG5cbiAgICBodG1sVHJhbnNmb3Jtcy5wdXNoKGh0bWxUcmFuc2Zvcm0pO1xuXG4gICAgY29uc3QgZGl2aXNpb25IVE1MVHJhbnNmb3JtID0gRGl2aXNpb25IVE1MVHJhbnNmb3JtLmZyb21EaXZpc2lvbkhUTUxOb2RlKGRpdmlzaW9uSFRNTE5vZGUpO1xuXG4gICAgaHRtbFRyYW5zZm9ybSA9IGRpdmlzaW9uSFRNTFRyYW5zZm9ybTsgIC8vL1xuXG4gICAgaHRtbFRyYW5zZm9ybXMucHVzaChodG1sVHJhbnNmb3JtKTtcblxuICAgIHBhZ2VOdW1iZXIrKztcblxuICAgIE9iamVjdC5hc3NpZ24oY29udGV4dCwge1xuICAgICAgcGFnZU51bWJlclxuICAgIH0pO1xuXG4gICAgZGVsZXRlIGNvbnRleHQuc3RhcnQ7XG4gIH1cblxuICByZXNvbHZlRm9vdG5vdGVzKGNvbnRleHQpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIGZvb3Rub3RlSFRNTE5vZGVzID0gZm9vdG5vdGVIVE1MTm9kZXNGcm9tTm9kZShub2RlKSxcbiAgICAgICAgICBmb290bm90ZUxpbmtIVE1MTm9kZXMgPSBmb290bm90ZUxpbmtIVE1MTm9kZXNGcm9tTm9kZShub2RlKTtcblxuICAgIGxldCBzdGFydDtcblxuICAgICh7IHN0YXJ0ID0gMSB9ID0gY29udGV4dCk7XG5cbiAgICBjb25zdCBmb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtcyA9IFtdO1xuXG4gICAgbGV0IG51bWJlciA9IHN0YXJ0OyAvLy9cblxuICAgIGZvb3Rub3RlTGlua0hUTUxOb2Rlcy5mb3JFYWNoKChmb290bm90ZUxpbmtIVE1MTm9kZSkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpZmllciA9IGZvb3Rub3RlTGlua0hUTUxOb2RlLmlkZW50aWZpZXIoY29udGV4dCksXG4gICAgICAgICAgICBmb290bm90ZUhUTUxOb2RlID0gZXh0cmFjdChmb290bm90ZUhUTUxOb2RlcywgKGZvb3Rub3RlSFRNTE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllck1hdGNoZXMgPSBmb290bm90ZUhUTUxOb2RlLm1hdGNoSWRlbnRpZmllcihpZGVudGlmaWVyKTtcblxuICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllck1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgICAgaWYgKGZvb3Rub3RlSFRNTE5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyYWdyYXBoSFRNTE5vZGUgPSBmb290bm90ZUhUTUxOb2RlLmdldFBhcmFncmFwaEhUTUxOb2RlKCksXG4gICAgICAgICAgICAgIGZvb3Rub3RlSXRlbUhUTUxUcmFuc2Zvcm0gPSBGb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtLmZyb21QYXJhZ3JhcGhIVE1MTk9kZUFuZElkZW50aWZpZXIocGFyYWdyYXBoSFRNTE5vZGUsIGlkZW50aWZpZXIpXG5cbiAgICAgICAgZm9vdG5vdGVJdGVtSFRNTFRyYW5zZm9ybXMucHVzaChmb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtKTtcblxuICAgICAgICBmb290bm90ZUxpbmtIVE1MTm9kZS5zZXROdW1iZXIobnVtYmVyKTtcblxuICAgICAgICBudW1iZXIrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvb3Rub3RlTGlua0hUTUxOb2RlLnJlc2V0TnVtYmVyKClcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZvb3Rub3Rlc0xpc3RIVE1MVHJhbnNmb3JtID0gRm9vdG5vdGVzTGlzdEhUTUxUcmFuc2Zvcm0uZnJvbVN0YXJ0QW5kRm9vdG5vdGVJdGVtSFRNTFRyYW5zZm9ybXMoc3RhcnQsIGZvb3Rub3RlSXRlbUhUTUxUcmFuc2Zvcm1zKTtcblxuICAgIHN0YXJ0ID0gbnVtYmVyOyAvLy9cblxuICAgIE9iamVjdC5hc3NpZ24oY29udGV4dCwge1xuICAgICAgc3RhcnRcbiAgICB9KTtcblxuICAgIHJldHVybiBmb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybTtcbiAgfVxuXG4gIHJlc29sdmVQYWdlTnVtYmVyKHBhZ2VOdW1iZXIpIHtcbiAgICBjb25zdCBwYWdlTnVtYmVySFRNTFRyYW5zZm9ybSA9IFBhZ2VOdW1iZXJIVE1MVHJhbnNmb3JtLmZyb21QYWdlTnVtYmVyKHBhZ2VOdW1iZXIpO1xuXG4gICAgcmV0dXJuIHBhZ2VOdW1iZXJIVE1MVHJhbnNmb3JtO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSB0aGlzLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gcnVsZU5hbWU7ICAvLy9cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgdGFnTmFtZSA9IFwiZGl2XCI7XG5cbiAgc3RhdGljIGNsYXNzTmFtZSA9IG51bGw7XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGRpdmlzaW9uQ2xhc3NOYW1lID0gbnVsbCxcbiAgICAgICAgICBkaXZpc2lvbkhUTUxOb2RlID0gSFRNTE5vZGUuZnJvbU5vdGhpbmcoRGl2aXNpb25IVE1MTm9kZSwgZGl2aXNpb25DbGFzc05hbWUpO1xuXG4gICAgcmV0dXJuIGRpdmlzaW9uSFRNTE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU91dGVyTm9kZShvdXRlck5vZGUpIHtcbiAgICBjb25zdCBkaXZpc2lvbk1hcmtkb3duTm9kZSA9IG91dGVyTm9kZSwgLy8vXG4gICAgICAgICAgZGl2aXNpb25DbGFzc05hbWUgPSBkaXZpc2lvbk1hcmtkb3duTm9kZS5nZXREaXZpc2lvbkNsYXNzTmFtZSgpLFxuICAgICAgICAgIGRpdmlzaW9uSFRNTE5vZGUgPSBIVE1MTm9kZS5mcm9tT3V0ZXJOb2RlKERpdmlzaW9uSFRNTE5vZGUsIG91dGVyTm9kZSwgZGl2aXNpb25DbGFzc05hbWUpO1xuXG4gICAgcmV0dXJuIGRpdmlzaW9uSFRNTE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVBhZ2luYXRlZEhUTUxOb2Rlc0FuZERpdmlzaW9uQ2xhc3NOYW1lKHBhZ2luYXRlZEhUTUxOb2RlcywgZGl2aXNpb25DbGFzc05hbWUpIHtcbiAgICBjb25zdCBjaGlsZEhUTUxOb2RlcyA9IHBhZ2luYXRlZEhUTUxOb2RlcywgIC8vL1xuICAgICAgICAgIGRpdmlzaW9uSFRNTE5vZGUgPSBIVE1MTm9kZS5mcm9tQ2hpbGRIVE1MTm9kZXMoRGl2aXNpb25IVE1MTm9kZSwgY2hpbGRIVE1MTm9kZXMsIGRpdmlzaW9uQ2xhc3NOYW1lKTtcblxuICAgIHJldHVybiBkaXZpc2lvbkhUTUxOb2RlO1xuICB9XG59XG4iXSwibmFtZXMiOlsiRGl2aXNpb25IVE1MTm9kZSIsImV4dHJhY3QiLCJhcnJheVV0aWxpdGllcyIsIm91dGVyTm9kZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVzIiwiZG9tRWxlbWVudCIsImRpdmlzaW9uQ2xhc3NOYW1lIiwiZ2V0RGl2aXNpb25DbGFzc05hbWUiLCJnZXREaXZET01FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsImRpdkRPTUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb250ZXh0IiwiZ2V0UnVsZU5hbWUiLCJydWxlTm1lIiwiRElWSVNJT05fTUFSS0RPV05fUlVMRV9OQU1FIiwiaXNJZ25vcmVkIiwibWFya2Rvd25Ob2RlIiwiZ2V0TWFya2Rvd25Ob2RlIiwiZGl2aXNpb25NYXJrZG93bk5vZGUiLCJpZ25vcmVkIiwicGFnZU51bWJlciIsImZyb21GaXJzdExhc3RDaGlsZE5vZGUiLCJmaXJzdExhc3RDaGlsZE5vZGUiLCJmaXJzdExhc3RDaGlsZE5vZGVQYWdlTnVtYmVySFRNTE5vZGUiLCJQYWdlTnVtYmVySFRNTE5vZGUiLCJwYWdlTnVtYmVySFRNTE5vZGUiLCJnZXRQYWdlTnVtYmVyIiwicGFnaW5hdGUiLCJodG1sVHJhbnNmb3JtcyIsIm5vZGUiLCJzdGFydCIsImRpdmlzaW9uSFRNTE5vZGUiLCJmb290bm90ZXNEaXJlY3RpdmVIVE1MTm9kZSIsImZvb3Rub3Rlc0RpcmVjdGl2ZUhUTUxOb2RlRnJvbU5vZGUiLCJwYWdlTnVtYmVyRGlyZWN0aXZlSFRNTE5vZGUiLCJwYWdlTnVtYmVyRGlyZWN0aXZlSFRNTE5vZGVGcm9tTm9kZSIsIk9iamVjdCIsImFzc2lnbiIsImZvb3Rub3Rlc0xpc3RIVE1MVHJhbnNmb3JtIiwicmVzb2x2ZUZvb3Rub3RlcyIsImFwcGVuZFRvRGl2aXNpb25IVE1MTm9kZSIsInBhZ2VOdW1iZXJIVE1MVHJhbnNmb3JtIiwicmVzb2x2ZVBhZ2VOdW1iZXIiLCJodG1sVHJhbnNmb3JtIiwiaW5kZXhBbmNob3JIVE1MVHJhbnNmb3JtIiwiSW5kZXhBbmNob3JIVE1MVHJhbnNmb3JtIiwiZnJvbVBhZ2VOdW1iZXIiLCJwdXNoIiwiZGl2aXNpb25IVE1MVHJhbnNmb3JtIiwiRGl2aXNpb25IVE1MVHJhbnNmb3JtIiwiZnJvbURpdmlzaW9uSFRNTE5vZGUiLCJmb290bm90ZUhUTUxOb2RlcyIsImZvb3Rub3RlSFRNTE5vZGVzRnJvbU5vZGUiLCJmb290bm90ZUxpbmtIVE1MTm9kZXMiLCJmb290bm90ZUxpbmtIVE1MTm9kZXNGcm9tTm9kZSIsImZvb3Rub3RlSXRlbUhUTUxUcmFuc2Zvcm1zIiwibnVtYmVyIiwiZm9yRWFjaCIsImZvb3Rub3RlTGlua0hUTUxOb2RlIiwiaWRlbnRpZmllciIsImZvb3Rub3RlSFRNTE5vZGUiLCJpZGVudGlmaWVyTWF0Y2hlcyIsIm1hdGNoSWRlbnRpZmllciIsInBhcmFncmFwaEhUTUxOb2RlIiwiZ2V0UGFyYWdyYXBoSFRNTE5vZGUiLCJmb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtIiwiRm9vdG5vdGVJdGVtSFRNTFRyYW5zZm9ybSIsImZyb21QYXJhZ3JhcGhIVE1MTk9kZUFuZElkZW50aWZpZXIiLCJzZXROdW1iZXIiLCJyZXNldE51bWJlciIsIkZvb3Rub3Rlc0xpc3RIVE1MVHJhbnNmb3JtIiwiZnJvbVN0YXJ0QW5kRm9vdG5vdGVJdGVtSFRNTFRyYW5zZm9ybXMiLCJQYWdlTnVtYmVySFRNTFRyYW5zZm9ybSIsImFzU3RyaW5nIiwicnVsZU5hbWUiLCJzdHJpbmciLCJmcm9tTm90aGluZyIsIkhUTUxOb2RlIiwiZnJvbU91dGVyTm9kZSIsImZyb21QYWdpbmF0ZWRIVE1MTm9kZXNBbmREaXZpc2lvbkNsYXNzTmFtZSIsInBhZ2luYXRlZEhUTUxOb2RlcyIsImNoaWxkSFRNTE5vZGVzIiwiZnJvbUNoaWxkSFRNTE5vZGVzIiwidGFnTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFvQnFCQTs7O3lCQWxCVTsyREFFVjtpRUFDVTsrREFDRztrRUFDRTs0REFDQzsrREFDQztnRUFDQzt3QkFFSztxQkFJUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXBELElBQU0sQUFBRUMsVUFBWUMseUJBQWMsQ0FBMUJEO0FBRU8sSUFBQSxBQUFNRCxpQ0FBTjtjQUFNQTthQUFBQSxpQkFDUEcsU0FBUyxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxpQkFBaUI7Z0NBRHpEUDs7Z0JBRWpCLGtCQUZpQkE7WUFFWEc7WUFBV0M7WUFBWUM7WUFBWUM7O1FBRXpDLE1BQUtDLGlCQUFpQixHQUFHQTs7O2tCQUpSUDs7WUFPbkJRLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0QsaUJBQWlCO1lBQy9COzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1ILGFBQWEsSUFBSSxDQUFDSSxhQUFhLElBQy9CQyxnQkFBZ0JMLFlBQWEsR0FBRztnQkFFdEMsT0FBT0s7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVQyxPQUFPO2dCQUNmLElBQU1ELFlBQVksSUFBSSxDQUFDTCxpQkFBaUIsRUFBRSxHQUFHO2dCQUU3QyxPQUFPSztZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLFVBQVVDLHFDQUEyQjtnQkFFM0MsT0FBT0Q7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxlQUFlLElBQUksQ0FBQ0MsZUFBZSxJQUNuQ0MsdUJBQXVCRixjQUN2QkcsVUFBVUQscUJBQXFCSCxTQUFTO2dCQUU5QyxPQUFPSTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVdULE9BQU87Z0JBQ2hCLElBQU1TLGFBQWEsSUFBSSxDQUFDQyxzQkFBc0IsQ0FBQyxTQUFDQztvQkFDOUMsSUFBSUYsYUFBYTtvQkFFakIsSUFBTUcsdUNBQXdDRCxBQUFrQixZQUFsQkEsb0JBQThCRSxtQkFBa0I7b0JBRTlGLElBQUlELHNDQUFzQzt3QkFDeEMsSUFBTUUscUJBQXFCSCxvQkFBcUIsR0FBRzt3QkFFbkRGLGFBQWFLLG1CQUFtQkMsYUFBYTtvQkFDL0M7b0JBRUEsT0FBT047Z0JBQ1Q7Z0JBRUEsT0FBT0E7WUFDVDs7O1lBRUFPLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTQyxjQUFjLEVBQUVqQixPQUFPO2dCQUM5QixJQUFNUSxVQUFVLElBQUksQ0FBQ0osU0FBUztnQkFFOUIsSUFBSUksU0FBUztvQkFDWDtnQkFDRjtnQkFFQSxJQUFNVSxPQUFPLElBQUksRUFDWEMsUUFBUSxHQUNSQyxtQkFBbUIsSUFBSSxFQUN2QkMsNkJBQTZCQyxJQUFBQSx5Q0FBa0MsRUFBQ0osT0FDaEVLLDhCQUE4QkMsSUFBQUEsMENBQW1DLEVBQUNOO2dCQUV4RSxJQUFJLEFBQUVULGFBQWVULFFBQWZTO2dCQUVOZ0IsT0FBT0MsTUFBTSxDQUFDMUIsU0FBUztvQkFDckJtQixPQUFBQTtnQkFDRjtnQkFFQSxJQUFJRSwrQkFBK0IsTUFBTTtvQkFDdkMsSUFBTU0sNkJBQThCUCxpQkFBaUJRLGdCQUFnQixDQUFDNUI7b0JBRXRFLElBQUkyQiwrQkFBK0IsTUFBTTt3QkFDdkNBLDJCQUEyQkUsd0JBQXdCLENBQUNUO29CQUN0RDtnQkFDRjtnQkFFQSxJQUFJRyxnQ0FBZ0MsTUFBTTtvQkFDeEMsSUFBTU8sMEJBQTBCVixpQkFBaUJXLGlCQUFpQixDQUFDdEI7b0JBRW5FcUIsd0JBQXdCRCx3QkFBd0IsQ0FBQ1Q7Z0JBQ25EO2dCQUVBLElBQUlZO2dCQUVKLElBQU1DLDJCQUEyQkMsY0FBd0IsQ0FBQ0MsY0FBYyxDQUFDMUI7Z0JBRXpFdUIsZ0JBQWdCQywwQkFBMkIsR0FBRztnQkFFOUNoQixlQUFlbUIsSUFBSSxDQUFDSjtnQkFFcEIsSUFBTUssd0JBQXdCQyxpQkFBcUIsQ0FBQ0Msb0JBQW9CLENBQUNuQjtnQkFFekVZLGdCQUFnQkssdUJBQXdCLEdBQUc7Z0JBRTNDcEIsZUFBZW1CLElBQUksQ0FBQ0o7Z0JBRXBCdkI7Z0JBRUFnQixPQUFPQyxNQUFNLENBQUMxQixTQUFTO29CQUNyQlMsWUFBQUE7Z0JBQ0Y7Z0JBRUEsT0FBT1QsUUFBUW1CLEtBQUs7WUFDdEI7OztZQUVBUyxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCNUIsT0FBTztnQkFDdEIsSUFBTWtCLE9BQU8sSUFBSSxFQUNYc0Isb0JBQW9CQyxJQUFBQSxnQ0FBeUIsRUFBQ3ZCLE9BQzlDd0Isd0JBQXdCQyxJQUFBQSxvQ0FBNkIsRUFBQ3pCO2dCQUU1RCxJQUFJQzs7c0JBRWFuQixvQkFBZG1CLE9BQUFBLDBCQUFRO2dCQUVYLElBQU15Qiw2QkFBNkIsRUFBRTtnQkFFckMsSUFBSUMsU0FBUzFCLE9BQU8sR0FBRztnQkFFdkJ1QixzQkFBc0JJLE9BQU8sQ0FBQyxTQUFDQztvQkFDN0IsSUFBTUMsYUFBYUQscUJBQXFCQyxVQUFVLENBQUNoRCxVQUM3Q2lELG1CQUFtQjdELFFBQVFvRCxtQkFBbUIsU0FBQ1M7d0JBQzdDLElBQU1DLG9CQUFvQkQsaUJBQWlCRSxlQUFlLENBQUNIO3dCQUUzRCxJQUFJRSxtQkFBbUI7NEJBQ3JCLE9BQU87d0JBQ1Q7b0JBQ0YsTUFBTTtvQkFFWixJQUFJRCxxQkFBcUIsTUFBTTt3QkFDN0IsSUFBTUcsb0JBQW9CSCxpQkFBaUJJLG9CQUFvQixJQUN6REMsNEJBQTRCQyxpQkFBeUIsQ0FBQ0Msa0NBQWtDLENBQUNKLG1CQUFtQko7d0JBRWxISiwyQkFBMkJSLElBQUksQ0FBQ2tCO3dCQUVoQ1AscUJBQXFCVSxTQUFTLENBQUNaO3dCQUUvQkE7b0JBQ0YsT0FBTzt3QkFDTEUscUJBQXFCVyxXQUFXO29CQUNsQztnQkFDRjtnQkFFQSxJQUFNL0IsNkJBQTZCZ0Msa0JBQTBCLENBQUNDLHNDQUFzQyxDQUFDekMsT0FBT3lCO2dCQUU1R3pCLFFBQVEwQixRQUFRLEdBQUc7Z0JBRW5CcEIsT0FBT0MsTUFBTSxDQUFDMUIsU0FBUztvQkFDckJtQixPQUFBQTtnQkFDRjtnQkFFQSxPQUFPUTtZQUNUOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGtCQUFrQnRCLFVBQVU7Z0JBQzFCLElBQU1xQiwwQkFBMEIrQixvQkFBdUIsQ0FBQzFCLGNBQWMsQ0FBQzFCO2dCQUV2RSxPQUFPcUI7WUFDVDs7O1lBRUFnQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsV0FBVyxJQUFJLENBQUM5RCxXQUFXLElBQzNCK0QsU0FBU0QsVUFBVyxHQUFHO2dCQUU3QixPQUFPQztZQUNUOzs7O1lBTU9DLEtBQUFBO21CQUFQLFNBQU9BO2dCQUNMLElBQU12RSxvQkFBb0IsTUFDcEIwQixtQkFBbUI4QyxhQUFRLENBQUNELFdBQVcsQ0FuTDVCOUUsa0JBbUwrQ087Z0JBRWhFLE9BQU8wQjtZQUNUOzs7WUFFTytDLEtBQUFBO21CQUFQLFNBQU9BLGNBQWM3RSxTQUFTO2dCQUM1QixJQUFNaUIsdUJBQXVCakIsV0FDdkJJLG9CQUFvQmEscUJBQXFCWixvQkFBb0IsSUFDN0R5QixtQkFBbUI4QyxhQUFRLENBQUNDLGFBQWEsQ0EzTDlCaEYsa0JBMkxpREcsV0FBV0k7Z0JBRTdFLE9BQU8wQjtZQUNUOzs7WUFFT2dELEtBQUFBO21CQUFQLFNBQU9BLDJDQUEyQ0Msa0JBQWtCLEVBQUUzRSxpQkFBaUI7Z0JBQ3JGLElBQU00RSxpQkFBaUJELG9CQUNqQmpELG1CQUFtQjhDLGFBQVEsQ0FBQ0ssa0JBQWtCLENBbE1uQ3BGLGtCQWtNc0RtRixnQkFBZ0I1RTtnQkFFdkYsT0FBTzBCO1lBQ1Q7OztXQXJNbUJqQztFQUF5QitFLGFBQVE7QUE2S3BELGlCQTdLbUIvRSxrQkE2S1pxRixXQUFVO0FBRWpCLGlCQS9LbUJyRixrQkErS1pZLGFBQVkifQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL2h0bWwvZGl2aXNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgSFRNTE5vZGUgZnJvbSBcIi4uLy4uL25vZGUvaHRtbFwiO1xuaW1wb3J0IFBhZ2VOdW1iZXJIVE1MTm9kZSBmcm9tIFwiLi4vLi4vbm9kZS9odG1sL3BhZ2VOdW1iZXJcIjtcbmltcG9ydCBEaXZpc2lvbkhUTUxUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uL3RyYW5zZm9ybS9odG1sL2RpdmlzaW9uXCI7XG5pbXBvcnQgUGFnZU51bWJlckhUTUxUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uL3RyYW5zZm9ybS9odG1sL3BhZ2VOdW1iZXJcIjtcbmltcG9ydCBJbmRleEFuY2hvckhUTUxUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uL3RyYW5zZm9ybS9odG1sL2FuY2hvci9pbmRleFwiO1xuaW1wb3J0IEZvb3Rub3RlSXRlbUhUTUxUcmFuc2Zvcm0gZnJvbSBcIi4uLy4uL3RyYW5zZm9ybS9odG1sL2l0ZW0vZm9vdG5vdGVcIjtcbmltcG9ydCBGb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybSBmcm9tIFwiLi4vLi4vdHJhbnNmb3JtL2h0bWwvbGlzdC9mb290bm90ZXNcIjtcblxuaW1wb3J0IHsgRElWSVNJT05fTUFSS0RPV05fUlVMRV9OQU1FIH0gZnJvbSBcIi4uLy4uL3J1bGVOYW1lcy9tYXJrZG93blwiO1xuaW1wb3J0IHsgZm9vdG5vdGVIVE1MTm9kZXNGcm9tTm9kZSxcbiAgICAgICAgIGZvb3Rub3RlTGlua0hUTUxOb2Rlc0Zyb21Ob2RlLFxuICAgICAgICAgZm9vdG5vdGVzRGlyZWN0aXZlSFRNTE5vZGVGcm9tTm9kZSxcbiAgICAgICAgIHBhZ2VOdW1iZXJEaXJlY3RpdmVIVE1MTm9kZUZyb21Ob2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9odG1sXCI7XG5cbmNvbnN0IHsgZXh0cmFjdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpdmlzaW9uSFRNTE5vZGUgZXh0ZW5kcyBIVE1MTm9kZSB7XG4gIGNvbnN0cnVjdG9yKG91dGVyTm9kZSwgcGFyZW50Tm9kZSwgY2hpbGROb2RlcywgZG9tRWxlbWVudCwgZGl2aXNpb25DbGFzc05hbWUpIHtcbiAgICBzdXBlcihvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIGRvbUVsZW1lbnQpO1xuXG4gICAgdGhpcy5kaXZpc2lvbkNsYXNzTmFtZSA9IGRpdmlzaW9uQ2xhc3NOYW1lO1xuICB9XG5cbiAgZ2V0RGl2aXNpb25DbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2aXNpb25DbGFzc05hbWU7XG4gIH1cblxuICBnZXREaXZET01FbGVtZW50KCkge1xuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcbiAgICAgICAgICBkaXZET01FbGVtZW50ID0gZG9tRWxlbWVudDsgIC8vL1xuXG4gICAgcmV0dXJuIGRpdkRPTUVsZW1lbnQ7XG4gIH1cblxuICBjbGFzc05hbWUoY29udGV4dCkge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuZGl2aXNpb25DbGFzc05hbWU7IC8vL1xuXG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIGNvbnN0IHJ1bGVObWUgPSBESVZJU0lPTl9NQVJLRE9XTl9SVUxFX05BTUU7XG5cbiAgICByZXR1cm4gcnVsZU5tZTtcbiAgfVxuXG4gIGlzSWdub3JlZCgpIHtcbiAgICBjb25zdCBtYXJrZG93bk5vZGUgPSB0aGlzLmdldE1hcmtkb3duTm9kZSgpLFxuICAgICAgICAgIGRpdmlzaW9uTWFya2Rvd25Ob2RlID0gbWFya2Rvd25Ob2RlLCAgLy8vXG4gICAgICAgICAgaWdub3JlZCA9IGRpdmlzaW9uTWFya2Rvd25Ob2RlLmlzSWdub3JlZCgpO1xuXG4gICAgcmV0dXJuIGlnbm9yZWQ7XG4gIH1cblxuICBwYWdlTnVtYmVyKGNvbnRleHQpIHtcbiAgICBjb25zdCBwYWdlTnVtYmVyID0gdGhpcy5mcm9tRmlyc3RMYXN0Q2hpbGROb2RlKChmaXJzdExhc3RDaGlsZE5vZGUpID0+IHtcbiAgICAgIGxldCBwYWdlTnVtYmVyID0gbnVsbDtcblxuICAgICAgY29uc3QgZmlyc3RMYXN0Q2hpbGROb2RlUGFnZU51bWJlckhUTUxOb2RlID0gKGZpcnN0TGFzdENoaWxkTm9kZSBpbnN0YW5jZW9mIFBhZ2VOdW1iZXJIVE1MTm9kZSk7XG5cbiAgICAgIGlmIChmaXJzdExhc3RDaGlsZE5vZGVQYWdlTnVtYmVySFRNTE5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFnZU51bWJlckhUTUxOb2RlID0gZmlyc3RMYXN0Q2hpbGROb2RlOyAgLy8vXG5cbiAgICAgICAgcGFnZU51bWJlciA9IHBhZ2VOdW1iZXJIVE1MTm9kZS5nZXRQYWdlTnVtYmVyKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYWdlTnVtYmVyO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhZ2VOdW1iZXI7XG4gIH1cblxuICBwYWdpbmF0ZShodG1sVHJhbnNmb3JtcywgY29udGV4dCkge1xuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmlzSWdub3JlZCgpO1xuXG4gICAgaWYgKGlnbm9yZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIHN0YXJ0ID0gMSxcbiAgICAgICAgICBkaXZpc2lvbkhUTUxOb2RlID0gdGhpcyxcbiAgICAgICAgICBmb290bm90ZXNEaXJlY3RpdmVIVE1MTm9kZSA9IGZvb3Rub3Rlc0RpcmVjdGl2ZUhUTUxOb2RlRnJvbU5vZGUobm9kZSksXG4gICAgICAgICAgcGFnZU51bWJlckRpcmVjdGl2ZUhUTUxOb2RlID0gcGFnZU51bWJlckRpcmVjdGl2ZUhUTUxOb2RlRnJvbU5vZGUobm9kZSk7XG5cbiAgICBsZXQgeyBwYWdlTnVtYmVyIH0gPSBjb250ZXh0O1xuXG4gICAgT2JqZWN0LmFzc2lnbihjb250ZXh0LCB7XG4gICAgICBzdGFydFxuICAgIH0pO1xuXG4gICAgaWYgKGZvb3Rub3Rlc0RpcmVjdGl2ZUhUTUxOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybSAgPSBkaXZpc2lvbkhUTUxOb2RlLnJlc29sdmVGb290bm90ZXMoY29udGV4dCk7XG5cbiAgICAgIGlmIChmb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybSAhPT0gbnVsbCkge1xuICAgICAgICBmb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybS5hcHBlbmRUb0RpdmlzaW9uSFRNTE5vZGUoZGl2aXNpb25IVE1MTm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhZ2VOdW1iZXJEaXJlY3RpdmVIVE1MTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcGFnZU51bWJlckhUTUxUcmFuc2Zvcm0gPSBkaXZpc2lvbkhUTUxOb2RlLnJlc29sdmVQYWdlTnVtYmVyKHBhZ2VOdW1iZXIpO1xuXG4gICAgICBwYWdlTnVtYmVySFRNTFRyYW5zZm9ybS5hcHBlbmRUb0RpdmlzaW9uSFRNTE5vZGUoZGl2aXNpb25IVE1MTm9kZSk7XG4gICAgfVxuXG4gICAgbGV0IGh0bWxUcmFuc2Zvcm07XG5cbiAgICBjb25zdCBpbmRleEFuY2hvckhUTUxUcmFuc2Zvcm0gPSBJbmRleEFuY2hvckhUTUxUcmFuc2Zvcm0uZnJvbVBhZ2VOdW1iZXIocGFnZU51bWJlcik7XG5cbiAgICBodG1sVHJhbnNmb3JtID0gaW5kZXhBbmNob3JIVE1MVHJhbnNmb3JtOyAgLy8vXG5cbiAgICBodG1sVHJhbnNmb3Jtcy5wdXNoKGh0bWxUcmFuc2Zvcm0pO1xuXG4gICAgY29uc3QgZGl2aXNpb25IVE1MVHJhbnNmb3JtID0gRGl2aXNpb25IVE1MVHJhbnNmb3JtLmZyb21EaXZpc2lvbkhUTUxOb2RlKGRpdmlzaW9uSFRNTE5vZGUpO1xuXG4gICAgaHRtbFRyYW5zZm9ybSA9IGRpdmlzaW9uSFRNTFRyYW5zZm9ybTsgIC8vL1xuXG4gICAgaHRtbFRyYW5zZm9ybXMucHVzaChodG1sVHJhbnNmb3JtKTtcblxuICAgIHBhZ2VOdW1iZXIrKztcblxuICAgIE9iamVjdC5hc3NpZ24oY29udGV4dCwge1xuICAgICAgcGFnZU51bWJlclxuICAgIH0pO1xuXG4gICAgZGVsZXRlIGNvbnRleHQuc3RhcnQ7XG4gIH1cblxuICByZXNvbHZlRm9vdG5vdGVzKGNvbnRleHQpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIGZvb3Rub3RlSFRNTE5vZGVzID0gZm9vdG5vdGVIVE1MTm9kZXNGcm9tTm9kZShub2RlKSxcbiAgICAgICAgICBmb290bm90ZUxpbmtIVE1MTm9kZXMgPSBmb290bm90ZUxpbmtIVE1MTm9kZXNGcm9tTm9kZShub2RlKTtcblxuICAgIGxldCBzdGFydDtcblxuICAgICh7IHN0YXJ0ID0gMSB9ID0gY29udGV4dCk7XG5cbiAgICBjb25zdCBmb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtcyA9IFtdO1xuXG4gICAgbGV0IG51bWJlciA9IHN0YXJ0OyAvLy9cblxuICAgIGZvb3Rub3RlTGlua0hUTUxOb2Rlcy5mb3JFYWNoKChmb290bm90ZUxpbmtIVE1MTm9kZSkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpZmllciA9IGZvb3Rub3RlTGlua0hUTUxOb2RlLmlkZW50aWZpZXIoY29udGV4dCksXG4gICAgICAgICAgICBmb290bm90ZUhUTUxOb2RlID0gZXh0cmFjdChmb290bm90ZUhUTUxOb2RlcywgKGZvb3Rub3RlSFRNTE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllck1hdGNoZXMgPSBmb290bm90ZUhUTUxOb2RlLm1hdGNoSWRlbnRpZmllcihpZGVudGlmaWVyKTtcblxuICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllck1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgICAgaWYgKGZvb3Rub3RlSFRNTE5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyYWdyYXBoSFRNTE5vZGUgPSBmb290bm90ZUhUTUxOb2RlLmdldFBhcmFncmFwaEhUTUxOb2RlKCksXG4gICAgICAgICAgICAgIGZvb3Rub3RlSXRlbUhUTUxUcmFuc2Zvcm0gPSBGb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtLmZyb21QYXJhZ3JhcGhIVE1MTk9kZUFuZElkZW50aWZpZXIocGFyYWdyYXBoSFRNTE5vZGUsIGlkZW50aWZpZXIpXG5cbiAgICAgICAgZm9vdG5vdGVJdGVtSFRNTFRyYW5zZm9ybXMucHVzaChmb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtKTtcblxuICAgICAgICBmb290bm90ZUxpbmtIVE1MTm9kZS5zZXROdW1iZXIobnVtYmVyKTtcblxuICAgICAgICBudW1iZXIrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvb3Rub3RlTGlua0hUTUxOb2RlLnJlc2V0TnVtYmVyKClcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZvb3Rub3Rlc0xpc3RIVE1MVHJhbnNmb3JtID0gRm9vdG5vdGVzTGlzdEhUTUxUcmFuc2Zvcm0uZnJvbVN0YXJ0QW5kRm9vdG5vdGVJdGVtSFRNTFRyYW5zZm9ybXMoc3RhcnQsIGZvb3Rub3RlSXRlbUhUTUxUcmFuc2Zvcm1zKTtcblxuICAgIHN0YXJ0ID0gbnVtYmVyOyAvLy9cblxuICAgIE9iamVjdC5hc3NpZ24oY29udGV4dCwge1xuICAgICAgc3RhcnRcbiAgICB9KTtcblxuICAgIHJldHVybiBmb290bm90ZXNMaXN0SFRNTFRyYW5zZm9ybTtcbiAgfVxuXG4gIHJlc29sdmVQYWdlTnVtYmVyKHBhZ2VOdW1iZXIpIHtcbiAgICBjb25zdCBwYWdlTnVtYmVySFRNTFRyYW5zZm9ybSA9IFBhZ2VOdW1iZXJIVE1MVHJhbnNmb3JtLmZyb21QYWdlTnVtYmVyKHBhZ2VOdW1iZXIpO1xuXG4gICAgcmV0dXJuIHBhZ2VOdW1iZXJIVE1MVHJhbnNmb3JtO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSB0aGlzLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gcnVsZU5hbWU7ICAvLy9cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgdGFnTmFtZSA9IFwiZGl2XCI7XG5cbiAgc3RhdGljIGNsYXNzTmFtZSA9IG51bGw7XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGRpdmlzaW9uQ2xhc3NOYW1lID0gbnVsbCxcbiAgICAgICAgICBkaXZpc2lvbkhUTUxOb2RlID0gSFRNTE5vZGUuZnJvbU5vdGhpbmcoRGl2aXNpb25IVE1MTm9kZSwgZGl2aXNpb25DbGFzc05hbWUpO1xuXG4gICAgcmV0dXJuIGRpdmlzaW9uSFRNTE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU91dGVyTm9kZShvdXRlck5vZGUpIHtcbiAgICBjb25zdCBkaXZpc2lvbk1hcmtkb3duTm9kZSA9IG91dGVyTm9kZSwgLy8vXG4gICAgICAgICAgZGl2aXNpb25DbGFzc05hbWUgPSBkaXZpc2lvbk1hcmtkb3duTm9kZS5nZXREaXZpc2lvbkNsYXNzTmFtZSgpLFxuICAgICAgICAgIGRpdmlzaW9uSFRNTE5vZGUgPSBIVE1MTm9kZS5mcm9tT3V0ZXJOb2RlKERpdmlzaW9uSFRNTE5vZGUsIG91dGVyTm9kZSwgZGl2aXNpb25DbGFzc05hbWUpO1xuXG4gICAgcmV0dXJuIGRpdmlzaW9uSFRNTE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVBhZ2luYXRlZEhUTUxOb2Rlc0FuZERpdmlzaW9uQ2xhc3NOYW1lKHBhZ2luYXRlZEhUTUxOb2RlcywgZGl2aXNpb25DbGFzc05hbWUpIHtcbiAgICBjb25zdCBjaGlsZEhUTUxOb2RlcyA9IHBhZ2luYXRlZEhUTUxOb2RlcywgIC8vL1xuICAgICAgICAgIGRpdmlzaW9uSFRNTE5vZGUgPSBIVE1MTm9kZS5mcm9tQ2hpbGRIVE1MTm9kZXMoRGl2aXNpb25IVE1MTm9kZSwgY2hpbGRIVE1MTm9kZXMsIGRpdmlzaW9uQ2xhc3NOYW1lKTtcblxuICAgIHJldHVybiBkaXZpc2lvbkhUTUxOb2RlO1xuICB9XG59XG4iXSwibmFtZXMiOlsiRGl2aXNpb25IVE1MTm9kZSIsImV4dHJhY3QiLCJhcnJheVV0aWxpdGllcyIsIkhUTUxOb2RlIiwib3V0ZXJOb2RlIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJkb21FbGVtZW50IiwiZGl2aXNpb25DbGFzc05hbWUiLCJnZXREaXZpc2lvbkNsYXNzTmFtZSIsImdldERpdkRPTUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwiZGl2RE9NRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbnRleHQiLCJnZXRSdWxlTmFtZSIsInJ1bGVObWUiLCJESVZJU0lPTl9NQVJLRE9XTl9SVUxFX05BTUUiLCJpc0lnbm9yZWQiLCJtYXJrZG93bk5vZGUiLCJnZXRNYXJrZG93bk5vZGUiLCJkaXZpc2lvbk1hcmtkb3duTm9kZSIsImlnbm9yZWQiLCJwYWdlTnVtYmVyIiwiZnJvbUZpcnN0TGFzdENoaWxkTm9kZSIsImZpcnN0TGFzdENoaWxkTm9kZSIsImZpcnN0TGFzdENoaWxkTm9kZVBhZ2VOdW1iZXJIVE1MTm9kZSIsIlBhZ2VOdW1iZXJIVE1MTm9kZSIsInBhZ2VOdW1iZXJIVE1MTm9kZSIsImdldFBhZ2VOdW1iZXIiLCJwYWdpbmF0ZSIsImh0bWxUcmFuc2Zvcm1zIiwibm9kZSIsInN0YXJ0IiwiZGl2aXNpb25IVE1MTm9kZSIsImZvb3Rub3Rlc0RpcmVjdGl2ZUhUTUxOb2RlIiwiZm9vdG5vdGVzRGlyZWN0aXZlSFRNTE5vZGVGcm9tTm9kZSIsInBhZ2VOdW1iZXJEaXJlY3RpdmVIVE1MTm9kZSIsInBhZ2VOdW1iZXJEaXJlY3RpdmVIVE1MTm9kZUZyb21Ob2RlIiwiT2JqZWN0IiwiYXNzaWduIiwiZm9vdG5vdGVzTGlzdEhUTUxUcmFuc2Zvcm0iLCJyZXNvbHZlRm9vdG5vdGVzIiwiYXBwZW5kVG9EaXZpc2lvbkhUTUxOb2RlIiwicGFnZU51bWJlckhUTUxUcmFuc2Zvcm0iLCJyZXNvbHZlUGFnZU51bWJlciIsImh0bWxUcmFuc2Zvcm0iLCJpbmRleEFuY2hvckhUTUxUcmFuc2Zvcm0iLCJJbmRleEFuY2hvckhUTUxUcmFuc2Zvcm0iLCJmcm9tUGFnZU51bWJlciIsInB1c2giLCJkaXZpc2lvbkhUTUxUcmFuc2Zvcm0iLCJEaXZpc2lvbkhUTUxUcmFuc2Zvcm0iLCJmcm9tRGl2aXNpb25IVE1MTm9kZSIsImZvb3Rub3RlSFRNTE5vZGVzIiwiZm9vdG5vdGVIVE1MTm9kZXNGcm9tTm9kZSIsImZvb3Rub3RlTGlua0hUTUxOb2RlcyIsImZvb3Rub3RlTGlua0hUTUxOb2Rlc0Zyb21Ob2RlIiwiZm9vdG5vdGVJdGVtSFRNTFRyYW5zZm9ybXMiLCJudW1iZXIiLCJmb3JFYWNoIiwiZm9vdG5vdGVMaW5rSFRNTE5vZGUiLCJpZGVudGlmaWVyIiwiZm9vdG5vdGVIVE1MTm9kZSIsImlkZW50aWZpZXJNYXRjaGVzIiwibWF0Y2hJZGVudGlmaWVyIiwicGFyYWdyYXBoSFRNTE5vZGUiLCJnZXRQYXJhZ3JhcGhIVE1MTm9kZSIsImZvb3Rub3RlSXRlbUhUTUxUcmFuc2Zvcm0iLCJGb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtIiwiZnJvbVBhcmFncmFwaEhUTUxOT2RlQW5kSWRlbnRpZmllciIsInNldE51bWJlciIsInJlc2V0TnVtYmVyIiwiRm9vdG5vdGVzTGlzdEhUTUxUcmFuc2Zvcm0iLCJmcm9tU3RhcnRBbmRGb290bm90ZUl0ZW1IVE1MVHJhbnNmb3JtcyIsIlBhZ2VOdW1iZXJIVE1MVHJhbnNmb3JtIiwiYXNTdHJpbmciLCJydWxlTmFtZSIsInN0cmluZyIsInRhZ05hbWUiLCJmcm9tTm90aGluZyIsImZyb21PdXRlck5vZGUiLCJmcm9tUGFnaW5hdGVkSFRNTE5vZGVzQW5kRGl2aXNpb25DbGFzc05hbWUiLCJwYWdpbmF0ZWRIVE1MTm9kZXMiLCJjaGlsZEhUTUxOb2RlcyIsImZyb21DaGlsZEhUTUxOb2RlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBb0JBOzs7ZUFBcUJBOzs7MkJBbEJVOzZEQUVWO21FQUNVO2lFQUNHO29FQUNFOzhEQUNDO2lFQUNDO2tFQUNDOzBCQUVLO3VCQUlROzs7Ozs7QUFFcEQsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0MseUJBQWM7QUFFbkIsTUFBTUYseUJBQXlCRyxhQUFRO0lBQ3BELFlBQVlDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsaUJBQWlCLENBQUU7UUFDNUUsS0FBSyxDQUFDSixXQUFXQyxZQUFZQyxZQUFZQztRQUV6QyxJQUFJLENBQUNDLGlCQUFpQixHQUFHQTtJQUMzQjtJQUVBQyx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLENBQUNELGlCQUFpQjtJQUMvQjtJQUVBRSxtQkFBbUI7UUFDakIsTUFBTUgsYUFBYSxJQUFJLENBQUNJLGFBQWEsSUFDL0JDLGdCQUFnQkwsWUFBYSxHQUFHO1FBRXRDLE9BQU9LO0lBQ1Q7SUFFQUMsVUFBVUMsT0FBTyxFQUFFO1FBQ2pCLE1BQU1ELFlBQVksSUFBSSxDQUFDTCxpQkFBaUIsRUFBRSxHQUFHO1FBRTdDLE9BQU9LO0lBQ1Q7SUFFQUUsY0FBYztRQUNaLE1BQU1DLFVBQVVDLHFDQUEyQjtRQUUzQyxPQUFPRDtJQUNUO0lBRUFFLFlBQVk7UUFDVixNQUFNQyxlQUFlLElBQUksQ0FBQ0MsZUFBZSxJQUNuQ0MsdUJBQXVCRixjQUN2QkcsVUFBVUQscUJBQXFCSCxTQUFTO1FBRTlDLE9BQU9JO0lBQ1Q7SUFFQUMsV0FBV1QsT0FBTyxFQUFFO1FBQ2xCLE1BQU1TLGFBQWEsSUFBSSxDQUFDQyxzQkFBc0IsQ0FBQyxDQUFDQztZQUM5QyxJQUFJRixhQUFhO1lBRWpCLE1BQU1HLHVDQUF3Q0QsOEJBQThCRSxtQkFBa0I7WUFFOUYsSUFBSUQsc0NBQXNDO2dC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