@taiga-ui/kit 2.98.0 → 2.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +25 -516
  2. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js +1 -1
  4. package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js.map +1 -1
  5. package/bundles/taiga-ui-kit-constants.umd.js +275 -4
  6. package/bundles/taiga-ui-kit-constants.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-constants.umd.min.js +1 -1
  8. package/bundles/taiga-ui-kit-constants.umd.min.js.map +1 -1
  9. package/bundles/taiga-ui-kit-pipes-iso-to-country-code.umd.js +339 -0
  10. package/bundles/taiga-ui-kit-pipes-iso-to-country-code.umd.js.map +1 -0
  11. package/bundles/taiga-ui-kit-pipes-iso-to-country-code.umd.min.js +2 -0
  12. package/bundles/taiga-ui-kit-pipes-iso-to-country-code.umd.min.js.map +1 -0
  13. package/bundles/taiga-ui-kit-pipes-to-country-code.umd.js +361 -0
  14. package/bundles/taiga-ui-kit-pipes-to-country-code.umd.js.map +1 -0
  15. package/bundles/taiga-ui-kit-pipes-to-country-code.umd.min.js +2 -0
  16. package/bundles/taiga-ui-kit-pipes-to-country-code.umd.min.js.map +1 -0
  17. package/bundles/taiga-ui-kit-pipes.umd.js +20 -4
  18. package/bundles/taiga-ui-kit-pipes.umd.js.map +1 -1
  19. package/bundles/taiga-ui-kit-pipes.umd.min.js +1 -1
  20. package/bundles/taiga-ui-kit-tokens.umd.js +9 -4
  21. package/bundles/taiga-ui-kit-tokens.umd.js.map +1 -1
  22. package/bundles/taiga-ui-kit-tokens.umd.min.js +1 -1
  23. package/bundles/taiga-ui-kit-tokens.umd.min.js.map +1 -1
  24. package/bundles/taiga-ui-kit-utils-phone.umd.js +27 -0
  25. package/bundles/taiga-ui-kit-utils-phone.umd.js.map +1 -0
  26. package/bundles/taiga-ui-kit-utils-phone.umd.min.js +2 -0
  27. package/bundles/taiga-ui-kit-utils-phone.umd.min.js.map +1 -0
  28. package/bundles/taiga-ui-kit-utils.umd.js +12 -4
  29. package/bundles/taiga-ui-kit-utils.umd.js.map +1 -1
  30. package/bundles/taiga-ui-kit-utils.umd.min.js +1 -1
  31. package/components/input-phone-international/index.d.ts +0 -4
  32. package/components/input-phone-international/input-phone-international.component.d.ts +7 -3
  33. package/components/input-phone-international/taiga-ui-kit-components-input-phone-international.metadata.json +1 -1
  34. package/{components/input-phone-international/const → constants}/countries.d.ts +1 -2
  35. package/constants/index.d.ts +2 -0
  36. package/constants/mask-after-code-regexp.d.ts +1 -0
  37. package/constants/taiga-ui-kit-constants.metadata.json +1 -1
  38. package/esm2015/components/input-phone-international/index.js +1 -4
  39. package/esm2015/components/input-phone-international/input-phone-international.component.js +24 -30
  40. package/esm2015/constants/countries.js +264 -0
  41. package/esm2015/constants/index.js +3 -1
  42. package/esm2015/constants/mask-after-code-regexp.js +2 -0
  43. package/esm2015/interfaces/country.js +1 -0
  44. package/esm2015/interfaces/index.js +1 -1
  45. package/esm2015/pipes/index.js +3 -1
  46. package/esm2015/pipes/iso-to-country-code/index.js +3 -0
  47. package/esm2015/pipes/iso-to-country-code/iso-to-country-code.module.js +13 -0
  48. package/esm2015/pipes/iso-to-country-code/iso-to-country-code.pipe.js +24 -0
  49. package/esm2015/pipes/iso-to-country-code/taiga-ui-kit-pipes-iso-to-country-code.js +5 -0
  50. package/esm2015/pipes/to-country-code/index.js +3 -0
  51. package/esm2015/pipes/to-country-code/taiga-ui-kit-pipes-to-country-code.js +5 -0
  52. package/esm2015/pipes/to-country-code/to-country-code.module.js +13 -0
  53. package/esm2015/pipes/to-country-code/to-country-code.pipe.js +47 -0
  54. package/esm2015/tokens/countries-masks.js +6 -0
  55. package/esm2015/tokens/index.js +2 -1
  56. package/esm2015/utils/index.js +2 -1
  57. package/esm2015/utils/phone/get-max-allowed-phone-length.js +4 -0
  58. package/esm2015/utils/phone/index.js +4 -0
  59. package/esm2015/utils/phone/iso-to-country-code.js +5 -0
  60. package/esm2015/utils/phone/not-kz-region.js +5 -0
  61. package/esm2015/utils/phone/taiga-ui-kit-utils-phone.js +5 -0
  62. package/esm5/components/input-phone-international/index.js +1 -4
  63. package/esm5/components/input-phone-international/input-phone-international.component.js +24 -31
  64. package/esm5/constants/countries.js +267 -0
  65. package/esm5/constants/index.js +3 -1
  66. package/esm5/constants/mask-after-code-regexp.js +2 -0
  67. package/esm5/interfaces/country.js +1 -0
  68. package/esm5/interfaces/index.js +1 -1
  69. package/esm5/pipes/index.js +3 -1
  70. package/esm5/pipes/iso-to-country-code/index.js +3 -0
  71. package/esm5/pipes/iso-to-country-code/iso-to-country-code.module.js +16 -0
  72. package/esm5/pipes/iso-to-country-code/iso-to-country-code.pipe.js +25 -0
  73. package/esm5/pipes/iso-to-country-code/taiga-ui-kit-pipes-iso-to-country-code.js +5 -0
  74. package/esm5/pipes/to-country-code/index.js +3 -0
  75. package/esm5/pipes/to-country-code/taiga-ui-kit-pipes-to-country-code.js +5 -0
  76. package/esm5/pipes/to-country-code/to-country-code.module.js +16 -0
  77. package/esm5/pipes/to-country-code/to-country-code.pipe.js +49 -0
  78. package/esm5/tokens/countries-masks.js +6 -0
  79. package/esm5/tokens/index.js +2 -1
  80. package/esm5/utils/index.js +2 -1
  81. package/esm5/utils/phone/get-max-allowed-phone-length.js +4 -0
  82. package/esm5/utils/phone/index.js +4 -0
  83. package/esm5/utils/phone/iso-to-country-code.js +5 -0
  84. package/esm5/utils/phone/not-kz-region.js +5 -0
  85. package/esm5/utils/phone/taiga-ui-kit-utils-phone.js +5 -0
  86. package/fesm2015/taiga-ui-kit-components-input-phone-international.js +26 -507
  87. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  88. package/fesm2015/taiga-ui-kit-constants.js +267 -1
  89. package/fesm2015/taiga-ui-kit-constants.js.map +1 -1
  90. package/fesm2015/taiga-ui-kit-pipes-iso-to-country-code.js +39 -0
  91. package/fesm2015/taiga-ui-kit-pipes-iso-to-country-code.js.map +1 -0
  92. package/fesm2015/taiga-ui-kit-pipes-to-country-code.js +62 -0
  93. package/fesm2015/taiga-ui-kit-pipes-to-country-code.js.map +1 -0
  94. package/fesm2015/taiga-ui-kit-pipes.js +2 -0
  95. package/fesm2015/taiga-ui-kit-pipes.js.map +1 -1
  96. package/fesm2015/taiga-ui-kit-tokens.js +6 -1
  97. package/fesm2015/taiga-ui-kit-tokens.js.map +1 -1
  98. package/fesm2015/taiga-ui-kit-utils-phone.js +21 -0
  99. package/fesm2015/taiga-ui-kit-utils-phone.js.map +1 -0
  100. package/fesm2015/taiga-ui-kit-utils.js +1 -0
  101. package/fesm2015/taiga-ui-kit-utils.js.map +1 -1
  102. package/fesm5/taiga-ui-kit-components-input-phone-international.js +27 -511
  103. package/fesm5/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  104. package/fesm5/taiga-ui-kit-constants.js +270 -2
  105. package/fesm5/taiga-ui-kit-constants.js.map +1 -1
  106. package/fesm5/taiga-ui-kit-pipes-iso-to-country-code.js +43 -0
  107. package/fesm5/taiga-ui-kit-pipes-iso-to-country-code.js.map +1 -0
  108. package/fesm5/taiga-ui-kit-pipes-to-country-code.js +67 -0
  109. package/fesm5/taiga-ui-kit-pipes-to-country-code.js.map +1 -0
  110. package/fesm5/taiga-ui-kit-pipes.js +2 -0
  111. package/fesm5/taiga-ui-kit-pipes.js.map +1 -1
  112. package/fesm5/taiga-ui-kit-tokens.js +6 -1
  113. package/fesm5/taiga-ui-kit-tokens.js.map +1 -1
  114. package/fesm5/taiga-ui-kit-utils-phone.js +21 -0
  115. package/fesm5/taiga-ui-kit-utils-phone.js.map +1 -0
  116. package/fesm5/taiga-ui-kit-utils.js +1 -0
  117. package/fesm5/taiga-ui-kit-utils.js.map +1 -1
  118. package/interfaces/index.d.ts +1 -0
  119. package/interfaces/taiga-ui-kit-interfaces.metadata.json +1 -1
  120. package/package.json +4 -4
  121. package/pipes/index.d.ts +2 -0
  122. package/pipes/iso-to-country-code/index.d.ts +2 -0
  123. package/pipes/iso-to-country-code/iso-to-country-code.module.d.ts +2 -0
  124. package/pipes/iso-to-country-code/iso-to-country-code.pipe.d.ts +7 -0
  125. package/pipes/iso-to-country-code/package.json +13 -0
  126. package/pipes/iso-to-country-code/taiga-ui-kit-pipes-iso-to-country-code.d.ts +4 -0
  127. package/pipes/iso-to-country-code/taiga-ui-kit-pipes-iso-to-country-code.metadata.json +1 -0
  128. package/pipes/taiga-ui-kit-pipes.metadata.json +1 -1
  129. package/pipes/to-country-code/index.d.ts +2 -0
  130. package/pipes/to-country-code/package.json +13 -0
  131. package/pipes/to-country-code/taiga-ui-kit-pipes-to-country-code.d.ts +4 -0
  132. package/pipes/to-country-code/taiga-ui-kit-pipes-to-country-code.metadata.json +1 -0
  133. package/pipes/to-country-code/to-country-code.module.d.ts +2 -0
  134. package/pipes/to-country-code/to-country-code.pipe.d.ts +7 -0
  135. package/tokens/index.d.ts +1 -0
  136. package/tokens/taiga-ui-kit-tokens.metadata.json +1 -1
  137. package/utils/index.d.ts +1 -0
  138. package/utils/phone/get-max-allowed-phone-length.d.ts +2 -0
  139. package/utils/phone/index.d.ts +3 -0
  140. package/utils/phone/iso-to-country-code.d.ts +2 -0
  141. package/utils/phone/not-kz-region.d.ts +1 -0
  142. package/utils/phone/package.json +13 -0
  143. package/utils/phone/taiga-ui-kit-utils-phone.d.ts +4 -0
  144. package/utils/phone/taiga-ui-kit-utils-phone.metadata.json +1 -0
  145. package/utils/taiga-ui-kit-utils.metadata.json +1 -1
  146. package/components/input-phone-international/country-iso-code.d.ts +0 -207
  147. package/esm2015/components/input-phone-international/const/countries.js +0 -265
  148. package/esm2015/components/input-phone-international/country-iso-code.js +0 -209
  149. package/esm2015/components/input-phone-international/interfaces/country.js +0 -1
  150. package/esm2015/components/input-phone-international/tokens/countries-masks.js +0 -6
  151. package/esm5/components/input-phone-international/const/countries.js +0 -268
  152. package/esm5/components/input-phone-international/country-iso-code.js +0 -209
  153. package/esm5/components/input-phone-international/interfaces/country.js +0 -1
  154. package/esm5/components/input-phone-international/tokens/countries-masks.js +0 -6
  155. /package/{components/input-phone-international/interfaces → interfaces}/country.d.ts +0 -0
  156. /package/{components/input-phone-international/tokens → tokens}/countries-masks.d.ts +0 -0
@@ -0,0 +1,4 @@
1
+ export * from './get-max-allowed-phone-length';
2
+ export * from './iso-to-country-code';
3
+ export * from './not-kz-region';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L3V0aWxzL3Bob25lLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dldC1tYXgtYWxsb3dlZC1waG9uZS1sZW5ndGgnO1xuZXhwb3J0ICogZnJvbSAnLi9pc28tdG8tY291bnRyeS1jb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vbm90LWt6LXJlZ2lvbic7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import { MASK_AFTER_CODE_REGEXP } from '@taiga-ui/kit/constants';
2
+ export function tuiIsoToCountryCode(countriesMasks, isoCode) {
3
+ return countriesMasks[isoCode].replace(MASK_AFTER_CODE_REGEXP, ``);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvLXRvLWNvdW50cnktY29kZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvdXRpbHMvcGhvbmUvIiwic291cmNlcyI6WyJpc28tdG8tY291bnRyeS1jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsY0FBaUQsRUFDakQsT0FBMEI7SUFFMUIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R1aUNvdW50cnlJc29Db2RlfSBmcm9tICdAdGFpZ2EtdWkvaTE4bic7XG5pbXBvcnQge01BU0tfQUZURVJfQ09ERV9SRUdFWFB9IGZyb20gJ0B0YWlnYS11aS9raXQvY29uc3RhbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlzb1RvQ291bnRyeUNvZGUoXG4gICAgY291bnRyaWVzTWFza3M6IFJlY29yZDxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPixcbiAgICBpc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSxcbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvdW50cmllc01hc2tzW2lzb0NvZGVdLnJlcGxhY2UoTUFTS19BRlRFUl9DT0RFX1JFR0VYUCwgYGApO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ export function tuiNotKzRegion(value) {
2
+ const region = Number(value.slice(1, 4));
3
+ return region < 600 || region > 799;
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWt6LXJlZ2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvdXRpbHMvcGhvbmUvIiwic291cmNlcyI6WyJub3Qta3otcmVnaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBYTtJQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6QyxPQUFPLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHR1aU5vdEt6UmVnaW9uKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWdpb24gPSBOdW1iZXIodmFsdWUuc2xpY2UoMSwgNCkpO1xuXG4gICAgcmV0dXJuIHJlZ2lvbiA8IDYwMCB8fCByZWdpb24gPiA3OTk7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWkta2l0LXV0aWxzLXBob25lLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC91dGlscy9waG9uZS8iLCJzb3VyY2VzIjpbInRhaWdhLXVpLWtpdC11dGlscy1waG9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,8 +1,5 @@
1
- export * from './const/countries';
2
- export * from './country-iso-code';
3
1
  export * from './input-phone-international.component';
4
2
  export * from './input-phone-international.module';
5
3
  export * from './input-phone-international.options';
6
- export * from './tokens/countries-masks';
7
4
  export * from './utils/extract-value-from-event';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC8iLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnN0L2NvdW50cmllcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvdW50cnktaXNvLWNvZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5vcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9jb3VudHJ5JztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zL2NvdW50cmllcy1tYXNrcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2V4dHJhY3QtdmFsdWUtZnJvbS1ldmVudCc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC8iLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLm9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9leHRyYWN0LXZhbHVlLWZyb20tZXZlbnQnO1xuIl19
@@ -6,29 +6,30 @@ import { TUI_MASK_SYMBOLS_REGEXP, TUI_NON_DIGITS_REGEXP, TuiFlagPipe, TuiPrimiti
6
6
  import { TuiCountryIsoCode } from '@taiga-ui/i18n';
7
7
  import { TUI_ARROW } from '@taiga-ui/kit/components/arrow';
8
8
  import { TuiInputPhoneComponent } from '@taiga-ui/kit/components/input-phone';
9
+ import { TuiToCountryCodePipe } from '@taiga-ui/kit/pipes';
9
10
  import { FIXED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers';
10
- import { TUI_COUNTRIES } from '@taiga-ui/kit/tokens';
11
+ import { TUI_COUNTRIES, TUI_COUNTRIES_MASKS } from '@taiga-ui/kit/tokens';
12
+ import { tuiGetMaxAllowedPhoneLength, tuiIsoToCountryCode } from '@taiga-ui/kit/utils';
11
13
  import { Observable } from 'rxjs';
12
- import { MASK_AFTER_CODE_REGEXP } from './const/countries';
13
14
  import { TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS, } from './input-phone-international.options';
14
- import { TUI_COUNTRIES_MASKS } from './tokens/countries-masks';
15
- import { extractValueFromEvent } from './utils/extract-value-from-event';
15
+ import { tuiExtractValueFromEvent } from './utils/extract-value-from-event';
16
16
  // @dynamic
17
17
  var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
18
18
  __extends(TuiInputPhoneInternationalComponent, _super);
19
- function TuiInputPhoneInternationalComponent(control, changeDetectorRef, countriesNames$, countriesMasks, options, flagPipe) {
19
+ function TuiInputPhoneInternationalComponent(control, changeDetectorRef, countriesNames$, countriesMasks, options, flagPipe, extractCountryCodePipe) {
20
20
  var _this = _super.call(this, control, changeDetectorRef) || this;
21
21
  _this.countriesNames$ = countriesNames$;
22
22
  _this.countriesMasks = countriesMasks;
23
23
  _this.options = options;
24
24
  _this.flagPipe = flagPipe;
25
+ _this.extractCountryCodePipe = extractCountryCodePipe;
25
26
  _this.countries = _this.options.countries;
26
27
  _this.countryIsoCodeChange = new EventEmitter();
27
28
  _this.countryIsoCode = _this.options.countryIsoCode;
28
29
  _this.open = false;
29
30
  _this.arrow = TUI_ARROW;
30
31
  _this.isoToCountryCodeMapper = function (item) {
31
- return _this.isoToCountryCode(item);
32
+ return tuiIsoToCountryCode(_this.countriesMasks, item);
32
33
  };
33
34
  return _this;
34
35
  }
@@ -61,14 +62,14 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
61
62
  });
62
63
  Object.defineProperty(TuiInputPhoneInternationalComponent.prototype, "inputPhoneCountryCode", {
63
64
  get: function () {
64
- return this.isoToCountryCode(this.countryIsoCode);
65
+ return tuiIsoToCountryCode(this.countriesMasks, this.countryIsoCode);
65
66
  },
66
67
  enumerable: true,
67
68
  configurable: true
68
69
  });
69
70
  Object.defineProperty(TuiInputPhoneInternationalComponent.prototype, "phoneMaskAfterCountryCode", {
70
71
  get: function () {
71
- var countryCode = this.isoToCountryCode(this.countryIsoCode);
72
+ var countryCode = this.inputPhoneCountryCode;
72
73
  return this.calculateMaskAfterCountryCode(this.countriesMasks[this.countryIsoCode], countryCode);
73
74
  },
74
75
  enumerable: true,
@@ -86,12 +87,12 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
86
87
  configurable: true
87
88
  });
88
89
  TuiInputPhoneInternationalComponent.prototype.onPaste = function (event) {
89
- var value = extractValueFromEvent(event).replace(TUI_NON_DIGITS_REGEXP, '');
90
- var countryIsoCode = this.extractCountryCode(value);
90
+ var value = tuiExtractValueFromEvent(event).replace(TUI_NON_DIGITS_REGEXP, '');
91
+ var countryIsoCode = this.extractCountryCodePipe.transform(value, this.countries);
91
92
  if (!countryIsoCode) {
92
93
  this.updateValue(("" + this.inputPhoneCountryCode + value)
93
94
  .replace(TUI_MASK_SYMBOLS_REGEXP, '')
94
- .slice(0, this.getMaxAllowedLength(this.countryIsoCode)));
95
+ .slice(0, tuiGetMaxAllowedPhoneLength(this.countriesMasks, this.countryIsoCode)));
95
96
  return;
96
97
  }
97
98
  if (countryIsoCode === TuiCountryIsoCode.RU) {
@@ -112,7 +113,7 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
112
113
  this.updateCountryIsoCode(isoCode);
113
114
  // recalculates mask inside inputPhone to prevent isoCode conflict
114
115
  this.changeDetectorRef.detectChanges();
115
- var maxLength = this.getMaxAllowedLength(isoCode);
116
+ var maxLength = tuiGetMaxAllowedPhoneLength(this.countriesMasks, isoCode);
116
117
  if (this.value.length > maxLength) {
117
118
  this.updateValue(this.value.slice(0, maxLength));
118
119
  }
@@ -124,8 +125,12 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
124
125
  _super.prototype.setDisabledState.call(this);
125
126
  this.close();
126
127
  };
128
+ /**
129
+ * @deprecated use `{{ countryIsoCode | tuiIsoToCountryCode }}`
130
+ * TODO drop in v4.0
131
+ */
127
132
  TuiInputPhoneInternationalComponent.prototype.isoToCountryCode = function (isoCode) {
128
- return this.countriesMasks[isoCode].replace(MASK_AFTER_CODE_REGEXP, '');
133
+ return tuiIsoToCountryCode(this.countriesMasks, isoCode);
129
134
  };
130
135
  TuiInputPhoneInternationalComponent.prototype.onModelChange = function (value) {
131
136
  this.updateValue(value);
@@ -142,25 +147,10 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
142
147
  TuiInputPhoneInternationalComponent.prototype.close = function () {
143
148
  this.open = false;
144
149
  };
145
- TuiInputPhoneInternationalComponent.prototype.getMaxAllowedLength = function (isoCode) {
146
- return this.countriesMasks[isoCode].replace(/[()\- ]/g, '').length;
147
- };
148
150
  TuiInputPhoneInternationalComponent.prototype.updateCountryIsoCode = function (code) {
149
151
  this.countryIsoCode = code;
150
152
  this.countryIsoCodeChange.emit(code);
151
153
  };
152
- TuiInputPhoneInternationalComponent.prototype.extractCountryCode = function (value) {
153
- var _this = this;
154
- return this.countries.find(function (countryIsoCode) {
155
- var ruCodeTest = countryIsoCode === TuiCountryIsoCode.RU &&
156
- /^[7 | 8]/.test(value) &&
157
- /^(?!880[1-9 ])/.test(value) &&
158
- value.length + 1 === _this.getMaxAllowedLength(TuiCountryIsoCode.RU);
159
- return (ruCodeTest ||
160
- (value.startsWith(_this.isoToCountryCode(countryIsoCode).replace(CHAR_PLUS, '')) &&
161
- value.length + 1 === _this.getMaxAllowedLength(countryIsoCode)));
162
- });
163
- };
164
154
  var TuiInputPhoneInternationalComponent_1;
165
155
  TuiInputPhoneInternationalComponent.ctorParameters = function () { return [
166
156
  { type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
@@ -168,7 +158,8 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
168
158
  { type: Observable, decorators: [{ type: Inject, args: [TUI_COUNTRIES,] }] },
169
159
  { type: undefined, decorators: [{ type: Inject, args: [TUI_COUNTRIES_MASKS,] }] },
170
160
  { type: undefined, decorators: [{ type: Inject, args: [TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,] }] },
171
- { type: TuiFlagPipe, decorators: [{ type: Inject, args: [TuiFlagPipe,] }] }
161
+ { type: TuiFlagPipe, decorators: [{ type: Inject, args: [TuiFlagPipe,] }] },
162
+ { type: TuiToCountryCodePipe, decorators: [{ type: Inject, args: [TuiToCountryCodePipe,] }] }
172
163
  ]; };
173
164
  __decorate([
174
165
  ViewChild(TuiInputPhoneComponent)
@@ -206,6 +197,7 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
206
197
  FIXED_DROPDOWN_CONTROLLER_PROVIDER,
207
198
  // TODO: for backward compatibility only. Drop in v4.0
208
199
  TuiFlagPipe,
200
+ TuiToCountryCodePipe,
209
201
  ],
210
202
  styles: [":host{display:block}:host._disabled{pointer-events:none}.t-hosted-dropdown{display:block}.t-country-select{width:5.625rem}.t-country-select:not(._readonly) ::ng-deep input:not(:disabled){cursor:pointer}.t-country-select._readonly ::ng-deep input{cursor:default}.t-arrow-icon{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.t-arrow-icon:hover{color:var(--tui-text-02)}:host._disabled .t-arrow-icon,:host._readonly .t-arrow-icon{pointer-events:none}:host[data-mode=onDark] .t-arrow-icon{color:var(--tui-text-03-night)}:host[data-mode=onDark] .t-arrow-icon:hover{color:var(--tui-text-01-night)}.t-arrow-icon_open{transform:rotate(180deg)}.t-input-phone{flex:1}.t-flag{width:1.75rem;height:1.25rem;margin-left:-.5rem}.t-country-item-flag{width:1.75rem;height:1.25rem}.t-country-item-name{margin-left:.75rem;margin-right:auto}.t-country-item-code{color:var(--tui-text-02);margin-right:.25rem}"]
211
203
  }),
@@ -216,9 +208,10 @@ var TuiInputPhoneInternationalComponent = /** @class */ (function (_super) {
216
208
  __param(2, Inject(TUI_COUNTRIES)),
217
209
  __param(3, Inject(TUI_COUNTRIES_MASKS)),
218
210
  __param(4, Inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS)),
219
- __param(5, Inject(TuiFlagPipe))
211
+ __param(5, Inject(TuiFlagPipe)),
212
+ __param(6, Inject(TuiToCountryCodePipe))
220
213
  ], TuiInputPhoneInternationalComponent);
221
214
  return TuiInputPhoneInternationalComponent;
222
215
  }(AbstractTuiControl));
223
216
  export { TuiInputPhoneInternationalComponent };
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC8iLCJzb3VyY2VzIjpbImlucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGdCQUFnQixFQUNoQiwyQkFBMkIsRUFFM0IsY0FBYyxFQUdkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsOEJBQThCLEVBQzlCLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyxz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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBDSEFSX1BMVVMsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpTWFwcGVyLFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfTUFTS19TWU1CT0xTX1JFR0VYUCxcbiAgICBUVUlfTk9OX0RJR0lUU19SRUdFWFAsXG4gICAgVHVpRmxhZ1BpcGUsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVNLFxuICAgIFR1aVNpemVTLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUNvdW50cnlJc29Db2RlfSBmcm9tICdAdGFpZ2EtdWkvaTE4bic7XG5pbXBvcnQge1RVSV9BUlJPV30gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2Fycm93JztcbmltcG9ydCB7VHVpSW5wdXRQaG9uZUNvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LXBob25lJztcbmltcG9ydCB7RklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9wcm92aWRlcnMnO1xuaW1wb3J0IHtUVUlfQ09VTlRSSUVTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01BU0tfQUZURVJfQ09ERV9SRUdFWFB9IGZyb20gJy4vY29uc3QvY291bnRyaWVzJztcbmltcG9ydCB7XG4gICAgVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUyxcbiAgICBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG59IGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5vcHRpb25zJztcbmltcG9ydCB7VFVJX0NPVU5UUklFU19NQVNLU30gZnJvbSAnLi90b2tlbnMvY291bnRyaWVzLW1hc2tzJztcbmltcG9ydCB7ZXh0cmFjdFZhbHVlRnJvbUV2ZW50fSBmcm9tICcuL3V0aWxzL2V4dHJhY3QtdmFsdWUtZnJvbS1ldmVudCc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICBGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgICAgICAvLyBUT0RPOiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvbmx5LiBEcm9wIGluIHY0LjBcbiAgICAgICAgVHVpRmxhZ1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpQ29udHJvbDxzdHJpbmc+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKFR1aUlucHV0UGhvbmVDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFBob25lQ29tcG9uZW50PzogVHVpSW5wdXRQaG9uZUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlVGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgQElucHV0KCdjb3VudHJ5SXNvQ29kZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzZXQgaXNvQ29kZShjb2RlOiBUdWlDb3VudHJ5SXNvQ29kZSkge1xuICAgICAgICB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQ/LndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY291bnRyeUlzb0NvZGUgPSBjb2RlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgY291bnRyaWVzID0gdGhpcy5vcHRpb25zLmNvdW50cmllcztcblxuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGNvdW50cnlJc29Db2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlDb3VudHJ5SXNvQ29kZT4oKTtcblxuICAgIGNvdW50cnlJc29Db2RlID0gdGhpcy5vcHRpb25zLmNvdW50cnlJc29Db2RlO1xuXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgcmVhZG9ubHkgYXJyb3c6IFBvbHltb3JwaGV1c0NvbnRlbnQ8XG4gICAgICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8VHVpU2l6ZUwgfCBUdWlTaXplTSB8IFR1aVNpemVTPlxuICAgID4gPSBUVUlfQVJST1c7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9DT1VOVFJJRVMpXG4gICAgICAgIHJlYWRvbmx5IGNvdW50cmllc05hbWVzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4+LFxuICAgICAgICBASW5qZWN0KFRVSV9DT1VOVFJJRVNfTUFTS1MpXG4gICAgICAgIHJlYWRvbmx5IGNvdW50cmllc01hc2tzOiBSZWNvcmQ8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVHVpRmxhZ1BpcGUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmxhZ1BpcGU6IFR1aUZsYWdQaXBlLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudCAmJiAhdGhpcy5jb21wdXRlZERpc2FibGVkXG4gICAgICAgICAgICA/IHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudC5uYXRpdmVGb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoISF0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCAmJiB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC5mb2N1c2VkKSB8fFxuICAgICAgICAgICAgKCEhdGhpcy5pbnB1dFBob25lQ29tcG9uZW50ICYmIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudC5mb2N1c2VkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpbnB1dFBob25lQ291bnRyeUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNvVG9Db3VudHJ5Q29kZSh0aGlzLmNvdW50cnlJc29Db2RlKTtcbiAgICB9XG5cbiAgICBnZXQgcGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb3VudHJ5Q29kZSA9IHRoaXMuaXNvVG9Db3VudHJ5Q29kZSh0aGlzLmNvdW50cnlJc29Db2RlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNYXNrQWZ0ZXJDb3VudHJ5Q29kZShcbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzTWFza3NbdGhpcy5jb3VudHJ5SXNvQ29kZV0sXG4gICAgICAgICAgICBjb3VudHJ5Q29kZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYDxpbWcgW3NyY109XCJjb3VudHJ5SXNvQ29kZSB8IHR1aUZsYWdQaXBlXCIgLz5gXG4gICAgICogVE9ETyBkcm9wIGluIHY0LjBcbiAgICAgKi9cbiAgICBnZXQgY291bnRyeUZsYWdQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZsYWdQYXRoKHRoaXMuY291bnRyeUlzb0NvZGUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlLmNhcHR1cmUucHJldmVudC5zdG9wJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdkcm9wLmNhcHR1cmUucHJldmVudC5zdG9wJywgWyckZXZlbnQnXSlcbiAgICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCB8IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgdmFsdWUgPSBleHRyYWN0VmFsdWVGcm9tRXZlbnQoZXZlbnQpLnJlcGxhY2UoVFVJX05PTl9ESUdJVFNfUkVHRVhQLCAnJyk7XG4gICAgICAgIGNvbnN0IGNvdW50cnlJc29Db2RlID0gdGhpcy5leHRyYWN0Q291bnRyeUNvZGUodmFsdWUpO1xuXG4gICAgICAgIGlmICghY291bnRyeUlzb0NvZGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5pbnB1dFBob25lQ291bnRyeUNvZGV9JHt2YWx1ZX1gXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFRVSV9NQVNLX1NZTUJPTFNfUkVHRVhQLCAnJylcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsIHRoaXMuZ2V0TWF4QWxsb3dlZExlbmd0aCh0aGlzLmNvdW50cnlJc29Db2RlKSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY291bnRyeUlzb0NvZGUgPT09IFR1aUNvdW50cnlJc29Db2RlLlJVKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL144LywgJzcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRyeUlzb0NvZGUoY291bnRyeUlzb0NvZGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGAke0NIQVJfUExVU30ke3ZhbHVlfWApO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IGlzb1RvQ291bnRyeUNvZGVNYXBwZXI6IFR1aU1hcHBlcjxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPiA9IGl0ZW0gPT5cbiAgICAgICAgdGhpcy5pc29Ub0NvdW50cnlDb2RlKGl0ZW0pO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGA8aW1nIFtzcmNdPVwiY291bnRyeUlzb0NvZGUgfCB0dWlGbGFnUGlwZVwiIC8+YFxuICAgICAqIFRPRE8gZHJvcCBpbiB2NC4wXG4gICAgICovXG4gICAgZ2V0RmxhZ1BhdGgoY29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mbGFnUGlwZS50cmFuc2Zvcm0oY29kZSk7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRyeUlzb0NvZGUoaXNvQ29kZSk7XG4gICAgICAgIC8vIHJlY2FsY3VsYXRlcyBtYXNrIGluc2lkZSBpbnB1dFBob25lIHRvIHByZXZlbnQgaXNvQ29kZSBjb25mbGljdFxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgoaXNvQ29kZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUuc2xpY2UoMCwgbWF4TGVuZ3RoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpc29Ub0NvdW50cnlDb2RlKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzTWFza3NbaXNvQ29kZV0ucmVwbGFjZShNQVNLX0FGVEVSX0NPREVfUkVHRVhQLCAnJyk7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrQWZ0ZXJDb3VudHJ5Q29kZShtYXNrOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbWFzay5yZXBsYWNlKGNvdW50cnlDb2RlLCAnJykudHJpbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF4QWxsb3dlZExlbmd0aChpc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50cmllc01hc2tzW2lzb0NvZGVdLnJlcGxhY2UoL1soKVxcLSBdL2csICcnKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb3VudHJ5SXNvQ29kZShjb2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlID0gY29kZTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZUNoYW5nZS5lbWl0KGNvZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdENvdW50cnlDb2RlKHZhbHVlOiBzdHJpbmcpOiBUdWlDb3VudHJ5SXNvQ29kZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50cmllcy5maW5kKGNvdW50cnlJc29Db2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1Q29kZVRlc3QgPVxuICAgICAgICAgICAgICAgIGNvdW50cnlJc29Db2RlID09PSBUdWlDb3VudHJ5SXNvQ29kZS5SVSAmJlxuICAgICAgICAgICAgICAgIC9eWzcgfCA4XS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAvXig/ITg4MFsxLTkgXSkvLnRlc3QodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoICsgMSA9PT0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKFR1aUNvdW50cnlJc29Db2RlLlJVKTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBydUNvZGVUZXN0IHx8XG4gICAgICAgICAgICAgICAgKHZhbHVlLnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNvVG9Db3VudHJ5Q29kZShjb3VudHJ5SXNvQ29kZSkucmVwbGFjZShDSEFSX1BMVVMsICcnKSxcbiAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCArIDEgPT09IHRoaXMuZ2V0TWF4QWxsb3dlZExlbmd0aChjb3VudHJ5SXNvQ29kZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC8iLCJzb3VyY2VzIjpbImlucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGdCQUFnQixFQUNoQiwyQkFBMkIsRUFFM0IsY0FBYyxFQUdkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsOEJBQThCLEVBQzlCLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNFLE9BQU8sRUFBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztB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dEQsV0FBVztnQkFDWCxvQkFBb0I7YUFDdkI7O1NBQ0osQ0FBQztRQWlDTyxXQUFBLFFBQVEsRUFBRSxDQUFBO1FBQ1YsV0FBQSxJQUFJLEVBQUUsQ0FBQTtRQUNOLFdBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRWpCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDekIsV0FBQSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFckIsV0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUUzQixXQUFBLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO1FBRTdDLFdBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRW5CLFdBQUEsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUE7T0E3Q3hCLG1DQUFtQyxDQXdML0M7SUFBRCwwQ0FBQztDQUFBLEFBeExELENBQ1ksa0JBQWtCLEdBdUw3QjtTQXhMWSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgQ0hBUl9QTFVTLFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVFVJX0ZPQ1VTQUJMRV9JVEVNX0FDQ0VTU09SLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIFR1aU1hcHBlcixcbiAgICB0dWlQdXJlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVFVJX01BU0tfU1lNQk9MU19SRUdFWFAsXG4gICAgVFVJX05PTl9ESUdJVFNfUkVHRVhQLFxuICAgIFR1aUZsYWdQaXBlLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplTSxcbiAgICBUdWlTaXplUyxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlDb3VudHJ5SXNvQ29kZX0gZnJvbSAnQHRhaWdhLXVpL2kxOG4nO1xuaW1wb3J0IHtUVUlfQVJST1d9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9hcnJvdyc7XG5pbXBvcnQge1R1aUlucHV0UGhvbmVDb21wb25lbnR9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZSc7XG5pbXBvcnQge1R1aVRvQ291bnRyeUNvZGVQaXBlfSBmcm9tICdAdGFpZ2EtdWkva2l0L3BpcGVzJztcbmltcG9ydCB7RklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9wcm92aWRlcnMnO1xuaW1wb3J0IHtUVUlfQ09VTlRSSUVTLCBUVUlfQ09VTlRSSUVTX01BU0tTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge3R1aUdldE1heEFsbG93ZWRQaG9uZUxlbmd0aCwgdHVpSXNvVG9Db3VudHJ5Q29kZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIFRVSV9JTlBVVF9QSE9ORV9JTlRFUk5BVElPTkFMX09QVElPTlMsXG4gICAgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxPcHRpb25zLFxufSBmcm9tICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwub3B0aW9ucyc7XG5pbXBvcnQge3R1aUV4dHJhY3RWYWx1ZUZyb21FdmVudH0gZnJvbSAnLi91dGlscy9leHRyYWN0LXZhbHVlLWZyb20tZXZlbnQnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICAgICAgRklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICAgICAgLy8gVE9ETzogZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb25seS4gRHJvcCBpbiB2NC4wXG4gICAgICAgIFR1aUZsYWdQaXBlLFxuICAgICAgICBUdWlUb0NvdW50cnlDb2RlUGlwZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlDb250cm9sPHN0cmluZz5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpSW5wdXRQaG9uZUNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0UGhvbmVDb21wb25lbnQ/OiBUdWlJbnB1dFBob25lQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltaXRpdmVUZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoJ2NvdW50cnlJc29Db2RlJylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNldCBpc29Db2RlKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudD8ud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZSA9IGNvZGU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBjb3VudHJpZXMgPSB0aGlzLm9wdGlvbnMuY291bnRyaWVzO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY291bnRyeUlzb0NvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aUNvdW50cnlJc29Db2RlPigpO1xuXG4gICAgY291bnRyeUlzb0NvZGUgPSB0aGlzLm9wdGlvbnMuY291bnRyeUlzb0NvZGU7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBhcnJvdzogUG9seW1vcnBoZXVzQ29udGVudDxcbiAgICAgICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUdWlTaXplTCB8IFR1aVNpemVNIHwgVHVpU2l6ZVM+XG4gICAgPiA9IFRVSV9BUlJPVztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX0NPVU5UUklFUylcbiAgICAgICAgcmVhZG9ubHkgY291bnRyaWVzTmFtZXMkOiBPYnNlcnZhYmxlPFJlY29yZDxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPj4sXG4gICAgICAgIEBJbmplY3QoVFVJX0NPVU5UUklFU19NQVNLUylcbiAgICAgICAgcmVhZG9ubHkgY291bnRyaWVzTWFza3M6IFJlY29yZDxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfUEhPTkVfSU5URVJOQVRJT05BTF9PUFRJT05TKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUdWlGbGFnUGlwZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmbGFnUGlwZTogVHVpRmxhZ1BpcGUsXG4gICAgICAgIEBJbmplY3QoVHVpVG9Db3VudHJ5Q29kZVBpcGUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZXh0cmFjdENvdW50cnlDb2RlUGlwZTogVHVpVG9Db3VudHJ5Q29kZVBpcGUsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dFBob25lQ29tcG9uZW50ICYmICF0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gdGhpcy5pbnB1dFBob25lQ29tcG9uZW50Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnRcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICghIXRoaXMucHJpbWl0aXZlVGV4dGZpZWxkICYmIHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkLmZvY3VzZWQpIHx8XG4gICAgICAgICAgICAoISF0aGlzLmlucHV0UGhvbmVDb21wb25lbnQgJiYgdGhpcy5pbnB1dFBob25lQ29tcG9uZW50LmZvY3VzZWQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0UGhvbmVDb3VudHJ5Q29kZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdHVpSXNvVG9Db3VudHJ5Q29kZSh0aGlzLmNvdW50cmllc01hc2tzLCB0aGlzLmNvdW50cnlJc29Db2RlKTtcbiAgICB9XG5cbiAgICBnZXQgcGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb3VudHJ5Q29kZSA9IHRoaXMuaW5wdXRQaG9uZUNvdW50cnlDb2RlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZU1hc2tBZnRlckNvdW50cnlDb2RlKFxuICAgICAgICAgICAgdGhpcy5jb3VudHJpZXNNYXNrc1t0aGlzLmNvdW50cnlJc29Db2RlXSxcbiAgICAgICAgICAgIGNvdW50cnlDb2RlLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBgPGltZyBbc3JjXT1cImNvdW50cnlJc29Db2RlIHwgdHVpRmxhZ1BpcGVcIiAvPmBcbiAgICAgKiBUT0RPIGRyb3AgaW4gdjQuMFxuICAgICAqL1xuICAgIGdldCBjb3VudHJ5RmxhZ1BhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmxhZ1BhdGgodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigncGFzdGUuY2FwdHVyZS5wcmV2ZW50LnN0b3AnLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AuY2FwdHVyZS5wcmV2ZW50LnN0b3AnLCBbJyRldmVudCddKVxuICAgIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50IHwgRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHR1aUV4dHJhY3RWYWx1ZUZyb21FdmVudChldmVudCkucmVwbGFjZShUVUlfTk9OX0RJR0lUU19SRUdFWFAsICcnKTtcbiAgICAgICAgY29uc3QgY291bnRyeUlzb0NvZGUgPSB0aGlzLmV4dHJhY3RDb3VudHJ5Q29kZVBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB0aGlzLmNvdW50cmllcyxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuaW5wdXRQaG9uZUNvdW50cnlDb2RlfSR7dmFsdWV9YFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShUVUlfTUFTS19TWU1CT0xTX1JFR0VYUCwgJycpXG4gICAgICAgICAgICAgICAgICAgIC5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlHZXRNYXhBbGxvd2VkUGhvbmVMZW5ndGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudHJpZXNNYXNrcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb3VudHJ5SXNvQ29kZSA9PT0gVHVpQ291bnRyeUlzb0NvZGUuUlUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXjgvLCAnNycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVDb3VudHJ5SXNvQ29kZShjb3VudHJ5SXNvQ29kZSk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoYCR7Q0hBUl9QTFVTfSR7dmFsdWV9YCk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgaXNvVG9Db3VudHJ5Q29kZU1hcHBlcjogVHVpTWFwcGVyPFR1aUNvdW50cnlJc29Db2RlLCBzdHJpbmc+ID0gaXRlbSA9PlxuICAgICAgICB0dWlJc29Ub0NvdW50cnlDb2RlKHRoaXMuY291bnRyaWVzTWFza3MsIGl0ZW0pO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGA8aW1nIFtzcmNdPVwiY291bnRyeUlzb0NvZGUgfCB0dWlGbGFnUGlwZVwiIC8+YFxuICAgICAqIFRPRE8gZHJvcCBpbiB2NC4wXG4gICAgICovXG4gICAgZ2V0RmxhZ1BhdGgoY29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mbGFnUGlwZS50cmFuc2Zvcm0oY29kZSk7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlQ291bnRyeUlzb0NvZGUoaXNvQ29kZSk7XG4gICAgICAgIC8vIHJlY2FsY3VsYXRlcyBtYXNrIGluc2lkZSBpbnB1dFBob25lIHRvIHByZXZlbnQgaXNvQ29kZSBjb25mbGljdFxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSB0dWlHZXRNYXhBbGxvd2VkUGhvbmVMZW5ndGgodGhpcy5jb3VudHJpZXNNYXNrcywgaXNvQ29kZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUuc2xpY2UoMCwgbWF4TGVuZ3RoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYHt7IGNvdW50cnlJc29Db2RlIHwgdHVpSXNvVG9Db3VudHJ5Q29kZSB9fWBcbiAgICAgKiBUT0RPIGRyb3AgaW4gdjQuMFxuICAgICAqL1xuICAgIGlzb1RvQ291bnRyeUNvZGUoaXNvQ29kZTogVHVpQ291bnRyeUlzb0NvZGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdHVpSXNvVG9Db3VudHJ5Q29kZSh0aGlzLmNvdW50cmllc01hc2tzLCBpc29Db2RlKTtcbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoYWN0aXZlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmFsbGJhY2tWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2tBZnRlckNvdW50cnlDb2RlKG1hc2s6IHN0cmluZywgY291bnRyeUNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtYXNrLnJlcGxhY2UoY291bnRyeUNvZGUsICcnKS50cmltKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb3VudHJ5SXNvQ29kZShjb2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlID0gY29kZTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZUNoYW5nZS5lbWl0KGNvZGUpO1xuICAgIH1cbn1cbiJdfQ==