tnp-helpers 13.1.11 → 13.1.13

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 (158) hide show
  1. package/app.js +3 -3
  2. package/browser/README.md +24 -24
  3. package/browser/esm2020/lib/base-component.mjs +49 -49
  4. package/browser/esm2020/lib/base-formly-component.mjs +112 -112
  5. package/browser/esm2020/lib/condition-wait.mjs +45 -45
  6. package/browser/esm2020/lib/constants.mjs +7 -7
  7. package/browser/esm2020/lib/dual-component-ctrl.mjs +118 -118
  8. package/browser/esm2020/lib/firedev-models.mjs +3 -3
  9. package/browser/esm2020/lib/helpers-array-obj.mjs +82 -82
  10. package/browser/esm2020/lib/helpers-environment.mjs +32 -32
  11. package/browser/esm2020/lib/helpers-numbers.mjs +8 -8
  12. package/browser/esm2020/lib/helpers-strings-regexes.mjs +50 -50
  13. package/browser/esm2020/lib/helpers-strings.mjs +252 -252
  14. package/browser/esm2020/lib/helpers.mjs +280 -280
  15. package/browser/esm2020/lib/index.mjs +14 -14
  16. package/browser/esm2020/lib/long-press.directive.mjs +112 -112
  17. package/browser/esm2020/lib/project.mjs +429 -429
  18. package/browser/esm2020/lib/resize-service.mjs +21 -21
  19. package/browser/esm2020/public-api.mjs +1 -1
  20. package/browser/esm2020/tnp-helpers.mjs +4 -4
  21. package/browser/fesm2015/tnp-helpers.mjs +1542 -1542
  22. package/browser/fesm2020/tnp-helpers.mjs +1534 -1534
  23. package/browser/lib/base-component.d.ts +16 -16
  24. package/browser/lib/base-formly-component.d.ts +30 -30
  25. package/browser/lib/condition-wait.d.ts +7 -7
  26. package/browser/lib/constants.d.ts +5 -5
  27. package/browser/lib/dual-component-ctrl.d.ts +24 -24
  28. package/browser/lib/firedev-models.d.ts +12 -12
  29. package/browser/lib/helpers-array-obj.d.ts +14 -14
  30. package/browser/lib/helpers-environment.d.ts +4 -4
  31. package/browser/lib/helpers-numbers.d.ts +2 -2
  32. package/browser/lib/helpers-strings-regexes.d.ts +27 -27
  33. package/browser/lib/helpers-strings.d.ts +49 -49
  34. package/browser/lib/helpers.d.ts +27 -27
  35. package/browser/lib/index.d.ts +10 -10
  36. package/browser/lib/long-press.directive.d.ts +24 -24
  37. package/browser/lib/project.d.ts +94 -94
  38. package/browser/lib/resize-service.d.ts +8 -8
  39. package/browser/tnp-helpers.d.ts +4 -4
  40. package/client/README.md +24 -24
  41. package/client/esm2020/lib/base-component.mjs +49 -49
  42. package/client/esm2020/lib/base-formly-component.mjs +112 -112
  43. package/client/esm2020/lib/condition-wait.mjs +45 -45
  44. package/client/esm2020/lib/constants.mjs +7 -7
  45. package/client/esm2020/lib/dual-component-ctrl.mjs +118 -118
  46. package/client/esm2020/lib/firedev-models.mjs +3 -3
  47. package/client/esm2020/lib/helpers-array-obj.mjs +82 -82
  48. package/client/esm2020/lib/helpers-environment.mjs +32 -32
  49. package/client/esm2020/lib/helpers-numbers.mjs +8 -8
  50. package/client/esm2020/lib/helpers-strings-regexes.mjs +50 -50
  51. package/client/esm2020/lib/helpers-strings.mjs +252 -252
  52. package/client/esm2020/lib/helpers.mjs +280 -280
  53. package/client/esm2020/lib/index.mjs +14 -14
  54. package/client/esm2020/lib/long-press.directive.mjs +112 -112
  55. package/client/esm2020/lib/project.mjs +429 -429
  56. package/client/esm2020/lib/resize-service.mjs +21 -21
  57. package/client/esm2020/public-api.mjs +1 -1
  58. package/client/esm2020/tnp-helpers.mjs +4 -4
  59. package/client/fesm2015/tnp-helpers.mjs +1542 -1542
  60. package/client/fesm2020/tnp-helpers.mjs +1534 -1534
  61. package/client/lib/base-component.d.ts +16 -16
  62. package/client/lib/base-formly-component.d.ts +30 -30
  63. package/client/lib/condition-wait.d.ts +7 -7
  64. package/client/lib/constants.d.ts +5 -5
  65. package/client/lib/dual-component-ctrl.d.ts +24 -24
  66. package/client/lib/firedev-models.d.ts +12 -12
  67. package/client/lib/helpers-array-obj.d.ts +14 -14
  68. package/client/lib/helpers-environment.d.ts +4 -4
  69. package/client/lib/helpers-numbers.d.ts +2 -2
  70. package/client/lib/helpers-strings-regexes.d.ts +27 -27
  71. package/client/lib/helpers-strings.d.ts +49 -49
  72. package/client/lib/helpers.d.ts +27 -27
  73. package/client/lib/index.d.ts +10 -10
  74. package/client/lib/long-press.directive.d.ts +24 -24
  75. package/client/lib/project.d.ts +94 -94
  76. package/client/lib/resize-service.d.ts +8 -8
  77. package/client/tnp-helpers.d.ts +4 -4
  78. package/index.d.ts +1 -1
  79. package/lib/angular.helper.d.ts +22 -22
  80. package/lib/base-component.d.ts +13 -13
  81. package/lib/base-component.js +3 -3
  82. package/lib/base-formly-component.d.ts +27 -27
  83. package/lib/base-formly-component.js +3 -3
  84. package/lib/condition-wait.d.ts +8 -8
  85. package/lib/constants.d.ts +6 -6
  86. package/lib/dual-component-ctrl.d.ts +24 -24
  87. package/lib/dual-component-ctrl.js +3 -3
  88. package/lib/firedev-models.d.ts +13 -13
  89. package/lib/git-project.d.ts +46 -46
  90. package/lib/helpers-array-obj.d.ts +15 -15
  91. package/lib/helpers-cli-tool.backend.d.ts +55 -55
  92. package/lib/helpers-dependencies.backend.d.ts +11 -11
  93. package/lib/helpers-environment.d.ts +5 -5
  94. package/lib/helpers-file-folders.backend.d.ts +83 -83
  95. package/lib/helpers-git.backend.d.ts +43 -43
  96. package/lib/helpers-json5.backend.d.ts +16 -16
  97. package/lib/helpers-morphi-framework.backend.d.ts +4 -4
  98. package/lib/helpers-network.backend.d.ts +8 -8
  99. package/lib/helpers-npm.backend.d.ts +3 -3
  100. package/lib/helpers-numbers.d.ts +3 -3
  101. package/lib/helpers-path.backend.d.ts +7 -7
  102. package/lib/helpers-process.backend.d.ts +53 -53
  103. package/lib/helpers-strings-regexes.d.ts +28 -28
  104. package/lib/helpers-strings.d.ts +50 -50
  105. package/lib/helpers-system-terminal.backend.d.ts +5 -5
  106. package/lib/helpers-vscode.backend.d.ts +5 -5
  107. package/lib/helpers.d.ts +69 -69
  108. package/lib/helpers.js +2 -2
  109. package/lib/index.d.ts +11 -11
  110. package/lib/long-press.directive.d.ts +22 -22
  111. package/lib/merge-helpers.backend.d.ts +23 -23
  112. package/lib/project.d.ts +97 -97
  113. package/lib/resize-service.d.ts +6 -6
  114. package/lib/ts-code/index.d.ts +1 -1
  115. package/lib/ts-code/ts-code-extractor.d.ts +14 -14
  116. package/lib/ts-code/ts-code-modifier.backend.d.ts +12 -12
  117. package/package.json +2 -2
  118. package/package.json_devDependencies.json +222 -222
  119. package/package.json_tnp.json5 +44 -44
  120. package/tmp-environment.json +8 -8
  121. package/websql/README.md +24 -24
  122. package/websql/esm2020/lib/base-component.mjs +49 -49
  123. package/websql/esm2020/lib/base-formly-component.mjs +112 -112
  124. package/websql/esm2020/lib/condition-wait.mjs +45 -45
  125. package/websql/esm2020/lib/constants.mjs +7 -7
  126. package/websql/esm2020/lib/dual-component-ctrl.mjs +118 -118
  127. package/websql/esm2020/lib/firedev-models.mjs +3 -3
  128. package/websql/esm2020/lib/helpers-array-obj.mjs +82 -82
  129. package/websql/esm2020/lib/helpers-environment.mjs +32 -32
  130. package/websql/esm2020/lib/helpers-numbers.mjs +8 -8
  131. package/websql/esm2020/lib/helpers-strings-regexes.mjs +50 -50
  132. package/websql/esm2020/lib/helpers-strings.mjs +252 -252
  133. package/websql/esm2020/lib/helpers.mjs +280 -280
  134. package/websql/esm2020/lib/index.mjs +14 -14
  135. package/websql/esm2020/lib/long-press.directive.mjs +112 -112
  136. package/websql/esm2020/lib/project.mjs +429 -429
  137. package/websql/esm2020/lib/resize-service.mjs +21 -21
  138. package/websql/esm2020/public-api.mjs +1 -1
  139. package/websql/esm2020/tnp-helpers.mjs +4 -4
  140. package/websql/fesm2015/tnp-helpers.mjs +1542 -1542
  141. package/websql/fesm2020/tnp-helpers.mjs +1534 -1534
  142. package/websql/lib/base-component.d.ts +16 -16
  143. package/websql/lib/base-formly-component.d.ts +30 -30
  144. package/websql/lib/condition-wait.d.ts +7 -7
  145. package/websql/lib/constants.d.ts +5 -5
  146. package/websql/lib/dual-component-ctrl.d.ts +24 -24
  147. package/websql/lib/firedev-models.d.ts +12 -12
  148. package/websql/lib/helpers-array-obj.d.ts +14 -14
  149. package/websql/lib/helpers-environment.d.ts +4 -4
  150. package/websql/lib/helpers-numbers.d.ts +2 -2
  151. package/websql/lib/helpers-strings-regexes.d.ts +27 -27
  152. package/websql/lib/helpers-strings.d.ts +49 -49
  153. package/websql/lib/helpers.d.ts +27 -27
  154. package/websql/lib/index.d.ts +10 -10
  155. package/websql/lib/long-press.directive.d.ts +24 -24
  156. package/websql/lib/project.d.ts +94 -94
  157. package/websql/lib/resize-service.d.ts +8 -8
  158. package/websql/tnp-helpers.d.ts +4 -4
@@ -1,8 +1,8 @@
1
- export class HelpersNumber {
2
- constructor() {
3
- this.randomInteger = (max, min) => Math.round(Math.random() * (max - min)) + min;
4
- }
5
- }
6
- ;
7
- ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers-numbers.ts
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1udW1iZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2hlbHBlcnMtbnVtYmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQUNFLGtCQUFhLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUc5RSxDQUFDO0NBQUE7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRCIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIEhlbHBlcnNOdW1iZXIge1xuICByYW5kb21JbnRlZ2VyID0gKG1heCwgbWluKSA9PiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG5cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2hlbHBlcnMtbnVtYmVycy50cyJdfQ==
1
+ export class HelpersNumber {
2
+ constructor() {
3
+ this.randomInteger = (max, min) => Math.round(Math.random() * (max - min)) + min;
4
+ }
5
+ }
6
+ ;
7
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers-numbers.ts
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1udW1iZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2hlbHBlcnMtbnVtYmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQUNFLGtCQUFhLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUc5RSxDQUFDO0NBQUE7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBIZWxwZXJzTnVtYmVyIHtcbiAgcmFuZG9tSW50ZWdlciA9IChtYXgsIG1pbikgPT4gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuXG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9oZWxwZXJzLW51bWJlcnMudHMiXX0=
@@ -1,51 +1,51 @@
1
- import { _ } from 'tnp-core/browser';
2
- export class HelpersStringsRegexes {
3
- escapeStringForRegEx(s) {
4
- return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
5
- }
6
- matchExactOnce(s, regex) {
7
- if (!_.isString(s) || !_.isRegExp(regex)) {
8
- return void 0;
9
- }
10
- const result = s.match(regex);
11
- if (_.isNil(result)) {
12
- return void 0;
13
- }
14
- return result.length >= 1 ? _.first(result) : void 0;
15
- }
16
- get regex() {
17
- return {
18
- /**
19
- * mathes
20
- * xxx.xxx.xxx.xxx
21
- * xxx.xxx.xxx.xxx:port
22
- * http://xxx.xxx.xxx.xxx:port
23
- * http://xxx.xxx.xxx.xxx
24
- * https://xxx.xxx.xxx.xxx:port
25
- * https://xxx.xxx.xxx.xxx *
26
- */
27
- get forStringWithIpHost() {
28
- const regex = /(http(s)?\:\/\/)?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\:[0-9]+)?/;
29
- return regex;
30
- },
31
- /**
32
- * mathes
33
- * http://domain.com:port
34
- * http://domain.com
35
- * http://domain:port
36
- * http://domain
37
- * https://domain.com:port
38
- * https://domain.com
39
- * https://domain:port
40
- * https://domain
41
- */
42
- get forStringWithDomainHost() {
43
- const regex = /(((http(s)?\:\/\/)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+(\:[0-9]+)?)|((http(s)?\:\/\/)[a-zA-Z0-9-]{1,61}))/;
44
- return regex;
45
- }
46
- };
47
- }
48
- }
49
- ;
50
- ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers-strings-regexes.ts
1
+ import { _ } from 'tnp-core/browser';
2
+ export class HelpersStringsRegexes {
3
+ escapeStringForRegEx(s) {
4
+ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
5
+ }
6
+ matchExactOnce(s, regex) {
7
+ if (!_.isString(s) || !_.isRegExp(regex)) {
8
+ return void 0;
9
+ }
10
+ const result = s.match(regex);
11
+ if (_.isNil(result)) {
12
+ return void 0;
13
+ }
14
+ return result.length >= 1 ? _.first(result) : void 0;
15
+ }
16
+ get regex() {
17
+ return {
18
+ /**
19
+ * mathes
20
+ * xxx.xxx.xxx.xxx
21
+ * xxx.xxx.xxx.xxx:port
22
+ * http://xxx.xxx.xxx.xxx:port
23
+ * http://xxx.xxx.xxx.xxx
24
+ * https://xxx.xxx.xxx.xxx:port
25
+ * https://xxx.xxx.xxx.xxx *
26
+ */
27
+ get forStringWithIpHost() {
28
+ const regex = /(http(s)?\:\/\/)?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\:[0-9]+)?/;
29
+ return regex;
30
+ },
31
+ /**
32
+ * mathes
33
+ * http://domain.com:port
34
+ * http://domain.com
35
+ * http://domain:port
36
+ * http://domain
37
+ * https://domain.com:port
38
+ * https://domain.com
39
+ * https://domain:port
40
+ * https://domain
41
+ */
42
+ get forStringWithDomainHost() {
43
+ const regex = /(((http(s)?\:\/\/)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+(\:[0-9]+)?)|((http(s)?\:\/\/)[a-zA-Z0-9-]{1,61}))/;
44
+ return regex;
45
+ }
46
+ };
47
+ }
48
+ }
49
+ ;
50
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers-strings-regexes.ts
51
51
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1zdHJpbmdzLXJlZ2V4ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvaGVscGVycy1zdHJpbmdzLXJlZ2V4ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsb0JBQW9CLENBQUMsQ0FBUztRQUM1QixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGNBQWMsQ0FBQyxDQUFTLEVBQUUsS0FBYTtRQUNyQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEMsT0FBTyxLQUFLLENBQUMsQ0FBQztTQUNmO1FBQ0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsT0FBTyxLQUFLLENBQUMsQ0FBQztTQUNmO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU87WUFDTDs7Ozs7Ozs7YUFRQztZQUNELElBQUksbUJBQW1CO2dCQUNyQixNQUFNLEtBQUssR0FBRyw0TEFBNEwsQ0FBQztnQkFDM00sT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0Q7Ozs7Ozs7Ozs7WUFVQTtZQUNBLElBQUksdUJBQXVCO2dCQUN6QixNQUFNLEtBQUssR0FBRyxrSUFBa0ksQ0FBQztnQkFDakosT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1NBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUVBQXVFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuZXhwb3J0IGNsYXNzIEhlbHBlcnNTdHJpbmdzUmVnZXhlcyB7XG5cblxuXG4gIGVzY2FwZVN0cmluZ0ZvclJlZ0V4KHM6IHN0cmluZykge1xuICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICB9XG5cbiAgbWF0Y2hFeGFjdE9uY2Uoczogc3RyaW5nLCByZWdleDogUmVnRXhwKTogc3RyaW5nIHtcbiAgICBpZiAoIV8uaXNTdHJpbmcocykgfHwgIV8uaXNSZWdFeHAocmVnZXgpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBzLm1hdGNoKHJlZ2V4KTtcbiAgICBpZiAoXy5pc05pbChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+PSAxID8gXy5maXJzdChyZXN1bHQpIDogdm9pZCAwO1xuICB9XG5cbiAgZ2V0IHJlZ2V4KCkge1xuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgKiBtYXRoZXNcbiAgICAgKiB4eHgueHh4Lnh4eC54eHhcbiAgICAgKiB4eHgueHh4Lnh4eC54eHg6cG9ydFxuICAgICAqIGh0dHA6Ly94eHgueHh4Lnh4eC54eHg6cG9ydFxuICAgICAqIGh0dHA6Ly94eHgueHh4Lnh4eC54eHhcbiAgICAgKiBodHRwczovL3h4eC54eHgueHh4Lnh4eDpwb3J0XG4gICAgICogaHR0cHM6Ly94eHgueHh4Lnh4eC54eHggICAqXG4gICAgICovXG4gICAgICBnZXQgZm9yU3RyaW5nV2l0aElwSG9zdCgpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSAvKGh0dHAocyk/XFw6XFwvXFwvKT8oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXFwuKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcXC4oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KShcXDpbMC05XSspPy87XG4gICAgICAgIHJldHVybiByZWdleDtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAqIG1hdGhlc1xuICAgICogaHR0cDovL2RvbWFpbi5jb206cG9ydFxuICAgICogaHR0cDovL2RvbWFpbi5jb21cbiAgICAqIGh0dHA6Ly9kb21haW46cG9ydFxuICAgICogaHR0cDovL2RvbWFpblxuICAgICogaHR0cHM6Ly9kb21haW4uY29tOnBvcnRcbiAgICAqIGh0dHBzOi8vZG9tYWluLmNvbVxuICAgICogaHR0cHM6Ly9kb21haW46cG9ydFxuICAgICogaHR0cHM6Ly9kb21haW5cbiAgICAqL1xuICAgICAgZ2V0IGZvclN0cmluZ1dpdGhEb21haW5Ib3N0KCkge1xuICAgICAgICBjb25zdCByZWdleCA9IC8oKChodHRwKHMpP1xcOlxcL1xcLyk/W2EtekEtWjAtOV1bYS16QS1aMC05LV17MSw2MX1bYS16QS1aMC05XSg/OlxcLlthLXpBLVpdezIsfSkrKFxcOlswLTldKyk/KXwoKGh0dHAocyk/XFw6XFwvXFwvKVthLXpBLVowLTktXXsxLDYxfSkpLztcbiAgICAgICAgcmV0dXJuIHJlZ2V4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2hlbHBlcnMtc3RyaW5ncy1yZWdleGVzLnRzIl19