@microsoft/windows-admin-center-sdk 4.87.0 → 4.167.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 (154) hide show
  1. package/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/id-ID/strings.json +1 -1
  7. package/angular/assets/strings/it-IT/strings.json +1 -1
  8. package/angular/assets/strings/ja-JP/strings.json +1 -1
  9. package/angular/assets/strings/ko-KR/strings.json +1 -1
  10. package/angular/assets/strings/nl-NL/strings.json +1 -1
  11. package/angular/assets/strings/pl-PL/strings.json +1 -1
  12. package/angular/assets/strings/pt-BR/strings.json +1 -1
  13. package/angular/assets/strings/pt-PT/strings.json +1 -1
  14. package/angular/assets/strings/ru-RU/strings.json +1 -1
  15. package/angular/assets/strings/strings.json +1 -1
  16. package/angular/assets/strings/sv-SE/strings.json +1 -1
  17. package/angular/assets/strings/tr-TR/strings.json +1 -1
  18. package/angular/assets/strings/zh-CN/strings.json +1 -1
  19. package/angular/assets/strings/zh-TW/strings.json +1 -1
  20. package/angular/esm2020/src/controls/actions/containers/action-bar/action-bar.component.mjs +2 -2
  21. package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
  22. package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
  23. package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
  24. package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
  25. package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
  26. package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
  27. package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
  28. package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
  29. package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
  30. package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
  31. package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
  32. package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
  33. package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
  34. package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
  35. package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
  36. package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
  37. package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
  38. package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
  39. package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
  40. package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
  41. package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
  42. package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
  43. package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
  44. package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
  45. package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
  46. package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
  47. package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
  48. package/angular/esm2020/src/generated/strings.mjs +1 -1
  49. package/angular/esm2020/src/service/navigation.service.mjs +3 -8
  50. package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
  51. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +128 -73
  52. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  53. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +116 -71
  54. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  55. package/angular/package.json +1 -1
  56. package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
  57. package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
  58. package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
  59. package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
  60. package/angular/src/directives/svg/svg.directive.d.ts +1 -2
  61. package/angular/src/generated/strings.d.ts +12 -0
  62. package/core/assets/strings/cs-CZ/strings.json +1 -1
  63. package/core/assets/strings/es-ES/strings.json +1 -1
  64. package/core/assets/strings/fr-FR/strings.json +1 -1
  65. package/core/assets/strings/hu-HU/strings.json +1 -1
  66. package/core/assets/strings/id-ID/strings.json +1 -1
  67. package/core/assets/strings/it-IT/strings.json +1 -1
  68. package/core/assets/strings/ja-JP/strings.json +1 -1
  69. package/core/assets/strings/ko-KR/strings.json +1 -1
  70. package/core/assets/strings/pl-PL/strings.json +1 -1
  71. package/core/assets/strings/pt-BR/strings.json +1 -1
  72. package/core/assets/strings/pt-PT/strings.json +1 -1
  73. package/core/assets/strings/ru-RU/strings.json +1 -1
  74. package/core/assets/strings/sv-SE/strings.json +1 -1
  75. package/core/assets/strings/tr-TR/strings.json +1 -1
  76. package/core/assets/strings/zh-CN/strings.json +1 -1
  77. package/core/assets/strings/zh-TW/strings.json +1 -1
  78. package/core/azure/azure-constants.d.ts +3 -2
  79. package/core/azure/azure-constants.d.ts.map +1 -1
  80. package/core/azure/azure-constants.js +11 -3
  81. package/core/azure/azure-constants.js.map +1 -1
  82. package/core/base/utilities.d.ts +3 -3
  83. package/core/base/utilities.d.ts.map +1 -1
  84. package/core/base/utilities.js +2 -2
  85. package/core/base/utilities.js.map +1 -1
  86. package/core/data/active-directory/active-directory.d.ts.map +1 -1
  87. package/core/data/active-directory/active-directory.js +1 -1
  88. package/core/data/active-directory/active-directory.js.map +1 -1
  89. package/core/data/cookie.d.ts.map +1 -1
  90. package/core/data/cookie.js +7 -0
  91. package/core/data/cookie.js.map +1 -1
  92. package/core/data/gateway-url-translator.d.ts +1 -0
  93. package/core/data/gateway-url-translator.d.ts.map +1 -1
  94. package/core/data/gateway-url-translator.js +21 -6
  95. package/core/data/gateway-url-translator.js.map +1 -1
  96. package/core/data/gateway-urls.d.ts +6 -0
  97. package/core/data/gateway-urls.d.ts.map +1 -1
  98. package/core/data/gateway-urls.js +8 -0
  99. package/core/data/gateway-urls.js.map +1 -1
  100. package/core/data/node-connection.d.ts.map +1 -1
  101. package/core/data/node-connection.js +0 -2
  102. package/core/data/node-connection.js.map +1 -1
  103. package/core/generated/powershell-scripts.d.ts.map +1 -1
  104. package/core/generated/powershell-scripts.js +1 -1
  105. package/core/generated/powershell-scripts.js.map +1 -1
  106. package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +38 -16
  107. package/core/security/tool-condition-validator.d.ts.map +1 -1
  108. package/core/security/tool-condition-validator.js +5 -5
  109. package/core/security/tool-condition-validator.js.map +1 -1
  110. package/core/shared/server-inventory/server-inventory-cache.d.ts.map +1 -1
  111. package/core/shared/server-inventory/server-inventory-cache.js +1 -1
  112. package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
  113. package/core/shared/server-inventory/server-inventory.d.ts +4 -4
  114. package/core/shared/server-inventory/server-inventory.d.ts.map +1 -1
  115. package/core/shared/server-inventory/server-inventory.js +2 -2
  116. package/core/shared/server-inventory/server-inventory.js.map +1 -1
  117. package/microsoft-windows-admin-center-sdk-4.167.0.tgz +0 -0
  118. package/package.json +10 -8
  119. package/styles/css/main-v2.css +1 -1
  120. package/tools/code-formatter/.eslintrc.base.json +1 -0
  121. package/tools/code-formatter/lint.d.ts.map +1 -1
  122. package/tools/code-formatter/lint.js +7 -1
  123. package/tools/code-formatter/lint.js.map +1 -1
  124. package/tools/code-formatter/utilities.d.ts +7 -0
  125. package/tools/code-formatter/utilities.d.ts.map +1 -0
  126. package/tools/code-formatter/utilities.js +79 -0
  127. package/tools/code-formatter/utilities.js.map +1 -0
  128. package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
  129. package/tools/gulp-update-notes-resource/index.js +4 -4
  130. package/tools/gulp-update-notes-resource/index.js.map +1 -1
  131. package/tools/module-template/.eslintrc.json +3 -0
  132. package/tools/module-template/build/pipelines/ci-build.yml +2 -2
  133. package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
  134. package/tools/wac-cli/src/angular15/configs/angular-json-config.d.ts +2 -7
  135. package/tools/wac-cli/src/angular15/configs/angular-json-config.d.ts.map +1 -1
  136. package/tools/wac-cli/src/angular15/configs/angular-json-config.js +8 -1
  137. package/tools/wac-cli/src/angular15/configs/angular-json-config.js.map +1 -1
  138. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
  139. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
  140. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +16 -0
  141. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
  142. package/tools/wac-cli/src/angular15/configs/package-json-config.d.ts +4 -0
  143. package/tools/wac-cli/src/angular15/configs/package-json-config.d.ts.map +1 -1
  144. package/tools/wac-cli/src/angular15/configs/package-json-config.js +13 -9
  145. package/tools/wac-cli/src/angular15/configs/package-json-config.js.map +1 -1
  146. package/tools/wac-cli/src/angular15/main.d.ts +20 -4
  147. package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
  148. package/tools/wac-cli/src/angular15/main.js +44 -8
  149. package/tools/wac-cli/src/angular15/main.js.map +1 -1
  150. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
  151. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
  152. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +49 -0
  153. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
  154. package/tools/wac-cli/templates/wac-template/package.json +3 -0
@@ -1,6 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, ContentChildren, QueryList } from '@angular/core';
3
- import { Input } from '@angular/core';
2
+ import { Component, ContentChildren, QueryList, Input } from '@angular/core';
4
3
  import { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';
5
4
  import { EditableLayoutItemComponent } from './editable-layout-item.component';
6
5
  import { LayoutComponent } from './layout.component';
@@ -197,4 +196,4 @@ __decorate([
197
196
  }], isEditMode: [{
198
197
  type: Input
199
198
  }], updateLayout: [] }); })();
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2xheW91dC9lZGl0YWJsZS1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvbGF5b3V0L2VkaXRhYmxlLWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsZUFBZSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGVBQWU7SUFHeEQ7O09BRUc7SUFDSCxJQUFjLGFBQWE7UUFDdkIsT0FBTyx5QkFBeUIsQ0FBQztJQUNyQyxDQUFDO0lBUVMscUJBQXFCO1FBQzNCLE9BQU8sS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ3hDLHFCQUFxQjtZQUNyQixzQkFBc0I7WUFDdEIsMkJBQTJCO1NBQzlCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxXQUFvQjtRQUN2QyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxQixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFB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O1lBSXJDLFVBQVU7a0JBRGhCLEtBQUs7WUEwSkksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBPbkNoYW5nZXMsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL2RlYm91bmNlLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBFZGl0YWJsZUxheW91dEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2VkaXRhYmxlLWxheW91dC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheW91dENvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWVkaXRhYmxlLWxheW91dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdGFibGUtbGF5b3V0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdGFibGVMYXlvdXRDb21wb25lbnQgZXh0ZW5kcyBMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ3JpZFNxdWFyZVNpemUgPSA3MjtcclxuICAgIHByaXZhdGUgc3RhdGljIGdyaWRQYWRkaW5nU2l6ZSA9IDg7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnRWRpdGFibGVMYXlvdXRDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oRWRpdGFibGVMYXlvdXRJdGVtQ29tcG9uZW50KVxyXG4gICAgcHJvdGVjdGVkIGVkaXRhYmxlTGF5b3V0SXRlbXM6IFF1ZXJ5TGlzdDxFZGl0YWJsZUxheW91dEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLWxheW91dC1yZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICdzbWUtcG9zaXRpb24tc3RyZXRjaCcsXHJcbiAgICAgICAgICAgICdzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvJ1xyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZURyYWdnYWJsZSh0aGlzLmlzRWRpdE1vZGUpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gY2hhbmdlIChzdGFydC9zdG9wKSB0aGUgZHJhZ2dhYmxlIGJlaGF2aW9yIG9mIHRoaXMgbGF5b3V0LlxyXG4gICAgICogQHBhcmFtIGlzRHJhZ2dhYmxlIGZsYWcgdG8gc3RhcnQvc3RvcCBkcmFnZ2FibGUgYmVoYXZpb3Igb2YgYWxsIHRoZSBsYXlvdXQgaW5zaWRlIHRoaXMgbGF5b3V0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hhbmdlRHJhZ2dhYmxlKGlzRHJhZ2dhYmxlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGVMYXlvdXRJdGVtcykge1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0YWJsZUxheW91dEl0ZW1zID0gdGhpcy5lZGl0YWJsZUxheW91dEl0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlZGl0YWJsZUxheW91dEl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZUxheW91dEl0ZW1zW2ldLmlzTGF5b3V0SXRlbURyYWdnYWJsZSA9IGlzRHJhZ2dhYmxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zbmFwVG9HcmlkKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZUxheW91dEl0ZW1zLmZvckVhY2goKGNoaWxkQ29tcG9uZW50OiBFZGl0YWJsZUxheW91dEl0ZW1Db21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goY2hpbGRDb21wb25lbnQuZHJhZ0VuZC5zdWJzY3JpYmUoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0VuZChpdGVtKTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZ3JpZEhlaWdodCgpIHtcclxuICAgICAgICBjb25zdCBlZGl0YWJsZUxheW91dEl0ZW1zID0gdGhpcy5lZGl0YWJsZUxheW91dEl0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBjb25zdCBpdGVtc0J5TWF4WSA9IGVkaXRhYmxlTGF5b3V0SXRlbXMubWFwKGl0ZW0gPT4gaXRlbS55Q29vcmRJbkdyaWQgKyBpdGVtLmhlaWdodEluR3JpZCkuc29ydCgoYSwgYikgPT4gYSA+IGIgPyAxIDogLTEpO1xyXG4gICAgICAgIHJldHVybiBNYXRoLm1heChpdGVtc0J5TWF4WS5sYXN0KCkgKyBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkUGFkZGluZ1NpemUsIHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZ3JpZFdpZHRoKCkge1xyXG4gICAgICAgIGNvbnN0IGVkaXRhYmxlTGF5b3V0SXRlbXMgPSB0aGlzLmVkaXRhYmxlTGF5b3V0SXRlbXMudG9BcnJheSgpO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zQnlNYXhYID0gZWRpdGFibGVMYXlvdXRJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLnhDb29yZEluR3JpZCArIGl0ZW0ud2lkdGhJbkdyaWQpLnNvcnQoKGEsIGIpID0+IGEgPiBiID8gMSA6IC0xKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoaXRlbXNCeU1heFgubGFzdCgpICsgRWRpdGFibGVMYXlvdXRDb21wb25lbnQuZ3JpZFBhZGRpbmdTaXplLCB0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgb25jZSBjaGlsZC9pdGVtIGxheW91dCBpcyBkcmFnZ2VkIHRvIGNoYW5nZSB0aGUgdGhlaXIgcG9zaXRpb24gb3JcclxuICAgICAqIHRoZWlyIGNvcm5lcnMgYXJlIGJlaW5nIGRyYWdnZWQgdG8gcmVzaXplIHRoZW0uIFRoaXMgd2lsbCBiZSBjYWxsZWQgb24gb25Nb3VzZVVwIGFuZCBvbk1vdXNlTGVhdmUgZXZlbnQuXHJcbiAgICAgKiBAcGFyYW0gaXRlbSBsYXlvdXQgdGhhdCBpcyBqdXN0IGRyYWdnZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkcmFnRW5kKGl0ZW0pIHtcclxuICAgICAgICBjb25zdCBlZGl0YWJsZUxheW91dEl0ZW1zID0gdGhpcy5lZGl0YWJsZUxheW91dEl0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbUlkID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgZHJhZ2dlZEl0ZW1JZC5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIGNvbnN0IGlkT2ZMYXN0RWxlbWVudCA9IGRyYWdnZWRJdGVtSWQucG9wKCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlZGl0YWJsZUxheW91dEl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtWTEgPSBpdGVtLnlDb29yZEluR3JpZDtcclxuICAgICAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW1YMSA9IGl0ZW0ueENvb3JkSW5HcmlkO1xyXG4gICAgICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbVkyID0gZHJhZ2dlZEl0ZW1ZMSArIGl0ZW0uaGVpZ2h0SW5HcmlkO1xyXG4gICAgICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbVgyID0gZHJhZ2dlZEl0ZW1YMSArIGl0ZW0ud2lkdGhJbkdyaWQ7XHJcbiAgICAgICAgICAgIGlmIChpZE9mTGFzdEVsZW1lbnQgIT09IGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0uaWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbVkxID0gZWRpdGFibGVMYXlvdXRJdGVtc1tpXS55Q29vcmRJbkdyaWQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0l0ZW1YMSA9IGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0ueENvb3JkSW5HcmlkO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJdGVtWDIgPSBleGlzdGluZ0l0ZW1YMSArIGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0ud2lkdGhJbkdyaWQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0l0ZW1ZMiA9IGV4aXN0aW5nSXRlbVkxICsgZWRpdGFibGVMYXlvdXRJdGVtc1tpXS5oZWlnaHRJbkdyaWQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc1hPdmVybGFwcGluZyA9IHRoaXMuYXJlRWxlbWVudHNPdmVybGFwcGluZyhkcmFnZ2VkSXRlbVgxLCBkcmFnZ2VkSXRlbVgyLCBleGlzdGluZ0l0ZW1YMSwgZXhpc3RpbmdJdGVtWDIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNZT3ZlcmxhcHBpbmcgPSB0aGlzLmFyZUVsZW1lbnRzT3ZlcmxhcHBpbmcoZHJhZ2dlZEl0ZW1ZMSwgZHJhZ2dlZEl0ZW1ZMiwgZXhpc3RpbmdJdGVtWTEsIGV4aXN0aW5nSXRlbVkyKTtcclxuICAgICAgICAgICAgICAgIGlmICgoaXNYT3ZlcmxhcHBpbmcgJiYgaXNZT3ZlcmxhcHBpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nSXRlbVkxID49IGRyYWdnZWRJdGVtWTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZEl0ZW1JZC5wdXNoKGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZUxheW91dEl0ZW1zW2ldLnlDb29yZEluR3JpZCA9IGRyYWdnZWRJdGVtWTI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55Q29vcmRJbkdyaWQgPSBleGlzdGluZ0l0ZW1ZMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZEl0ZW1JZC5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaSA9PT0gZWRpdGFibGVMYXlvdXRJdGVtcy5sZW5ndGggLSAxICYmIGRyYWdnZWRJdGVtSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnRW5kKGVkaXRhYmxlTGF5b3V0SXRlbXNbZHJhZ2dlZEl0ZW1JZC5wb3AoKV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc25hcFRvR3JpZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBjaGVjayBvdmVybGFwcGluZyB3aGVuIGNvb3JkaW5hdGVzIGFyZSBvdXQgb2YgY29uZmxpY3RpbmcgYXJlYSwgbGlrZSBiaWdnZXIgZGl2IGlzIGRyYWdnZWQgb3ZlciBzbWFsbGVyIGRpdi5cclxuICAgICAqIEBwYXJhbSBwb2ludE9uZU9mRHJhZ2dlZERpdiBZL1ggc3RhcnRpbmcgcG9pbnQgb2YgVmVydGljYWwvSG9yaXpvbnRhbCBwb2ludCBvZiBkcmFnZ2VkIGRpdlxyXG4gICAgICogQHBhcmFtIHBvaW50VHdvT2ZEcmFnZ2VkRGl2IFkvWCBlbmRpbmcgcG9pbnQgb2YgVmVydGljYWwvSG9yaXpvbnRhbCBwb2ludCBvZiBkcmFnZ2VkIGRpdlxyXG4gICAgICogQHBhcmFtIHBvaW50T25lT2ZFeGlzdGluZ0RpdiBZL1ggc3RhcnRpbmcgcG9pbnQgb2YgVmVydGljYWwvSG9yaXpvbnRhbCBkaXYgb3ZlciB3aGljaCBuZXcgZGl2IGlzIGRyYWdnZWRcclxuICAgICAqIEBwYXJhbSBwb2ludFR3b09mRXhpc3RpbmdEaXYgWS9YIGVuZGluZyBwb2ludCBvZiBWZXJ0aWNhbC9Ib3Jpem9udGFsIGRpdiBvdmVyIHdoaWNoIG5ldyBkaXYgaXMgZHJhZ2dlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXJlRWxlbWVudHNPdmVybGFwcGluZyhcclxuICAgICAgICBwb2ludE9uZU9mRHJhZ2dlZERpdjogbnVtYmVyLFxyXG4gICAgICAgIHBvaW50VHdvT2ZEcmFnZ2VkRGl2OiBudW1iZXIsXHJcbiAgICAgICAgcG9pbnRPbmVPZkV4aXN0aW5nRGl2OiBudW1iZXIsXHJcbiAgICAgICAgcG9pbnRUd29PZkV4aXN0aW5nRGl2OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuY2hlY2tCZXR3ZWVuKHBvaW50T25lT2ZFeGlzdGluZ0RpdiwgcG9pbnRUd29PZkV4aXN0aW5nRGl2LCBwb2ludE9uZU9mRHJhZ2dlZERpdilcclxuICAgICAgICAgICAgfHwgdGhpcy5jaGVja0JldHdlZW4ocG9pbnRPbmVPZkV4aXN0aW5nRGl2LCBwb2ludFR3b09mRXhpc3RpbmdEaXYsIHBvaW50VHdvT2ZEcmFnZ2VkRGl2KSlcclxuICAgICAgICAgICAgfHwgKHBvaW50T25lT2ZEcmFnZ2VkRGl2IDw9IHBvaW50T25lT2ZFeGlzdGluZ0RpdiAmJiBwb2ludFR3b09mRHJhZ2dlZERpdiA+PSBwb2ludFR3b09mRXhpc3RpbmdEaXYpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSnVzdCB0byBjaGVjayBpZiBzZWFyY2hlZCBpdGVtIGlzIGZhbGwgdW5kZXIgY2VydGFpbiByYW5nZS5cclxuICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBvZiByYW5nZVxyXG4gICAgICogQHBhcmFtIGVuZCBlbmQgb2YgcmFuZ2VcclxuICAgICAqIEBwYXJhbSBzZWFyY2ggaXRlbSBiZWluZyBzZWFyY2hlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hlY2tCZXR3ZWVuKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBzZWFyY2g6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoc2VhcmNoID4gc3RhcnQpICYmIChzZWFyY2ggPCBlbmQpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgaXMgYWRqdXN0IGFsbCB0aGUgZGl2IHdpdGggdG8gZmFsbCBvbiB0aGUgYm91bmRhcnkgb2YgZ3JpZCB3aXRoIDcyIHggNzIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzbmFwVG9HcmlkKCkge1xyXG4gICAgICAgIHRoaXMuZWRpdGFibGVMYXlvdXRJdGVtcy5mb3JFYWNoKChjaGlsZENvbXBvbmVudDogRWRpdGFibGVMYXlvdXRJdGVtQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmRlclggPSBjaGlsZENvbXBvbmVudC54Q29vcmRJbkdyaWQgJSBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkU3F1YXJlU2l6ZTtcclxuICAgICAgICAgICAgY29uc3QgcmVtYWluZGVyWSA9IGNoaWxkQ29tcG9uZW50LnlDb29yZEluR3JpZCAlIEVkaXRhYmxlTGF5b3V0Q29tcG9uZW50LmdyaWRTcXVhcmVTaXplO1xyXG4gICAgICAgICAgICBjb25zdCByZW1haW5kZXJIZWlnaHQgPSBjaGlsZENvbXBvbmVudC5oZWlnaHRJbkdyaWQgJSBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkU3F1YXJlU2l6ZTtcclxuICAgICAgICAgICAgY29uc3QgcmVtYWluZGVyV2lkdGggPSBjaGlsZENvbXBvbmVudC53aWR0aEluR3JpZCAlIEVkaXRhYmxlTGF5b3V0Q29tcG9uZW50LmdyaWRTcXVhcmVTaXplO1xyXG4gICAgICAgICAgICBpZiAocmVtYWluZGVyWCAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgY2hpbGRDb21wb25lbnQueENvb3JkSW5HcmlkID0gTWF0aC5tYXgoY2hpbGRDb21wb25lbnQueENvb3JkSW5HcmlkIC0gcmVtYWluZGVyWCwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlbWFpbmRlclkgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIGNoaWxkQ29tcG9uZW50LnlDb29yZEluR3JpZCA9IE1hdGgubWF4KGNoaWxkQ29tcG9uZW50LnlDb29yZEluR3JpZCAtIHJlbWFpbmRlclksIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZW1haW5kZXJIZWlnaHQgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIGNoaWxkQ29tcG9uZW50LmhlaWdodEluR3JpZCA9XHJcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoY2hpbGRDb21wb25lbnQuaGVpZ2h0SW5HcmlkIC0gcmVtYWluZGVySGVpZ2h0LCBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkU3F1YXJlU2l6ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlbWFpbmRlcldpZHRoICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZENvbXBvbmVudC53aWR0aEluR3JpZCA9IE1hdGgubWF4KGNoaWxkQ29tcG9uZW50LndpZHRoSW5HcmlkIC0gcmVtYWluZGVyV2lkdGgsIEVkaXRhYmxlTGF5b3V0Q29tcG9uZW50LmdyaWRTcXVhcmVTaXplKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gYWRqdXN0IGZvciBtaW5pbXVtIGFyZWEgYm91bmRzXHJcbiAgICAgICAgICAgIGlmIChjaGlsZENvbXBvbmVudC5hcmVhIDwgY2hpbGRDb21wb25lbnQubWluQXJlYSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHdpZHRoTW9kaWZpZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhlaWdodE1vZGlmaWVyID0gMDtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZENvbXBvbmVudC53aWR0aEluR3JpZCA+PSBjaGlsZENvbXBvbmVudC5oZWlnaHRJbkdyaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aE1vZGlmaWVyID0gRWRpdGFibGVMYXlvdXRDb21wb25lbnQuZ3JpZFNxdWFyZVNpemU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb21wb25lbnQuaGVpZ2h0SW5HcmlkID49IGNoaWxkQ29tcG9uZW50LndpZHRoSW5HcmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0TW9kaWZpZXIgPSBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkU3F1YXJlU2l6ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNoaWxkQ29tcG9uZW50LndpZHRoSW5HcmlkICs9IHdpZHRoTW9kaWZpZXI7XHJcbiAgICAgICAgICAgICAgICBjaGlsZENvbXBvbmVudC5oZWlnaHRJbkdyaWQgKz0gaGVpZ2h0TW9kaWZpZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBARGVib3VuY2UoMClcclxuICAgIHByb3RlY3RlZCB1cGRhdGVMYXlvdXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGVMYXlvdXRJdGVtcykge1xyXG4gICAgICAgICAgICBjb25zdCBsYXlvdXRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCB8fCAwO1xyXG4gICAgICAgICAgICBpZiAoIWxheW91dFdpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBjb29yZHMgYW5kIGJveFNpemVcclxuICAgICAgICAgICAgY29uc3QgZWRpdGFibGVMYXlvdXRJdGVtcyA9IHRoaXMuZWRpdGFibGVMYXlvdXRJdGVtcy50b0FycmF5KCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVkaXRhYmxlTGF5b3V0SXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0ud2lkdGhJbkdyaWQgPSBlZGl0YWJsZUxheW91dEl0ZW1zW2ldLndpZHRoSW5HcmlkO1xyXG4gICAgICAgICAgICAgICAgZWRpdGFibGVMYXlvdXRJdGVtc1tpXS5oZWlnaHRJbkdyaWQgPSBlZGl0YWJsZUxheW91dEl0ZW1zW2ldLmhlaWdodEluR3JpZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic21lLWVkaXRhYmxlLWxheW91dC1ncmlkXCIgW3N0eWxlLmhlaWdodC5weF09XCJncmlkSGVpZ2h0XCIgW3N0eWxlLndpZHRoLnB4XT1cImdyaWRXaWR0aFwiPlxyXG48bmctY29udGVudCBzZWxlY3Q9XCJzbWUtZWRpdGFibGUtbGF5b3V0LWl0ZW1cIj48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG4iXX0=
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2xheW91dC9lZGl0YWJsZS1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvbGF5b3V0L2VkaXRhYmxlLWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsZUFBZSxFQUFhLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQU1yRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZUFBZTtJQUd4RDs7T0FFRztJQUNILElBQWMsYUFBYTtRQUN2QixPQUFPLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFRUyxxQkFBcUI7UUFDM0IsT0FBTyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDeEMscUJBQXFCO1lBQ3JCLHNCQUFzQjtZQUN0QiwyQkFBMkI7U0FDOUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0ksZUFBZSxDQUFDLFdBQW9CO1FBQ3ZDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9ELEtB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QUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIE9uQ2hhbmdlcywgUXVlcnlMaXN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL2RlYm91bmNlLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBFZGl0YWJsZUxheW91dEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2VkaXRhYmxlLWxheW91dC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheW91dENvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWVkaXRhYmxlLWxheW91dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdGFibGUtbGF5b3V0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdGFibGVMYXlvdXRDb21wb25lbnQgZXh0ZW5kcyBMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ3JpZFNxdWFyZVNpemUgPSA3MjtcclxuICAgIHByaXZhdGUgc3RhdGljIGdyaWRQYWRkaW5nU2l6ZSA9IDg7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnRWRpdGFibGVMYXlvdXRDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oRWRpdGFibGVMYXlvdXRJdGVtQ29tcG9uZW50KVxyXG4gICAgcHJvdGVjdGVkIGVkaXRhYmxlTGF5b3V0SXRlbXM6IFF1ZXJ5TGlzdDxFZGl0YWJsZUxheW91dEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLWxheW91dC1yZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICdzbWUtcG9zaXRpb24tc3RyZXRjaCcsXHJcbiAgICAgICAgICAgICdzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvJ1xyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZURyYWdnYWJsZSh0aGlzLmlzRWRpdE1vZGUpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gY2hhbmdlIChzdGFydC9zdG9wKSB0aGUgZHJhZ2dhYmxlIGJlaGF2aW9yIG9mIHRoaXMgbGF5b3V0LlxyXG4gICAgICogQHBhcmFtIGlzRHJhZ2dhYmxlIGZsYWcgdG8gc3RhcnQvc3RvcCBkcmFnZ2FibGUgYmVoYXZpb3Igb2YgYWxsIHRoZSBsYXlvdXQgaW5zaWRlIHRoaXMgbGF5b3V0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hhbmdlRHJhZ2dhYmxlKGlzRHJhZ2dhYmxlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGVMYXlvdXRJdGVtcykge1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0YWJsZUxheW91dEl0ZW1zID0gdGhpcy5lZGl0YWJsZUxheW91dEl0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlZGl0YWJsZUxheW91dEl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZUxheW91dEl0ZW1zW2ldLmlzTGF5b3V0SXRlbURyYWdnYWJsZSA9IGlzRHJhZ2dhYmxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zbmFwVG9HcmlkKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZUxheW91dEl0ZW1zLmZvckVhY2goKGNoaWxkQ29tcG9uZW50OiBFZGl0YWJsZUxheW91dEl0ZW1Db21wb25lbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goY2hpbGRDb21wb25lbnQuZHJhZ0VuZC5zdWJzY3JpYmUoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0VuZChpdGVtKTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZ3JpZEhlaWdodCgpIHtcclxuICAgICAgICBjb25zdCBlZGl0YWJsZUxheW91dEl0ZW1zID0gdGhpcy5lZGl0YWJsZUxheW91dEl0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBjb25zdCBpdGVtc0J5TWF4WSA9IGVkaXRhYmxlTGF5b3V0SXRlbXMubWFwKGl0ZW0gPT4gaXRlbS55Q29vcmRJbkdyaWQgKyBpdGVtLmhlaWdodEluR3JpZCkuc29ydCgoYSwgYikgPT4gYSA+IGIgPyAxIDogLTEpO1xyXG4gICAgICAgIHJldHVybiBNYXRoLm1heChpdGVtc0J5TWF4WS5sYXN0KCkgKyBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkUGFkZGluZ1NpemUsIHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZ3JpZFdpZHRoKCkge1xyXG4gICAgICAgIGNvbnN0IGVkaXRhYmxlTGF5b3V0SXRlbXMgPSB0aGlzLmVkaXRhYmxlTGF5b3V0SXRlbXMudG9BcnJheSgpO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zQnlNYXhYID0gZWRpdGFibGVMYXlvdXRJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLnhDb29yZEluR3JpZCArIGl0ZW0ud2lkdGhJbkdyaWQpLnNvcnQoKGEsIGIpID0+IGEgPiBiID8gMSA6IC0xKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoaXRlbXNCeU1heFgubGFzdCgpICsgRWRpdGFibGVMYXlvdXRDb21wb25lbnQuZ3JpZFBhZGRpbmdTaXplLCB0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgb25jZSBjaGlsZC9pdGVtIGxheW91dCBpcyBkcmFnZ2VkIHRvIGNoYW5nZSB0aGUgdGhlaXIgcG9zaXRpb24gb3JcclxuICAgICAqIHRoZWlyIGNvcm5lcnMgYXJlIGJlaW5nIGRyYWdnZWQgdG8gcmVzaXplIHRoZW0uIFRoaXMgd2lsbCBiZSBjYWxsZWQgb24gb25Nb3VzZVVwIGFuZCBvbk1vdXNlTGVhdmUgZXZlbnQuXHJcbiAgICAgKiBAcGFyYW0gaXRlbSBsYXlvdXQgdGhhdCBpcyBqdXN0IGRyYWdnZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkcmFnRW5kKGl0ZW0pIHtcclxuICAgICAgICBjb25zdCBlZGl0YWJsZUxheW91dEl0ZW1zID0gdGhpcy5lZGl0YWJsZUxheW91dEl0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbUlkID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgZHJhZ2dlZEl0ZW1JZC5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIGNvbnN0IGlkT2ZMYXN0RWxlbWVudCA9IGRyYWdnZWRJdGVtSWQucG9wKCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlZGl0YWJsZUxheW91dEl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtWTEgPSBpdGVtLnlDb29yZEluR3JpZDtcclxuICAgICAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW1YMSA9IGl0ZW0ueENvb3JkSW5HcmlkO1xyXG4gICAgICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbVkyID0gZHJhZ2dlZEl0ZW1ZMSArIGl0ZW0uaGVpZ2h0SW5HcmlkO1xyXG4gICAgICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbVgyID0gZHJhZ2dlZEl0ZW1YMSArIGl0ZW0ud2lkdGhJbkdyaWQ7XHJcbiAgICAgICAgICAgIGlmIChpZE9mTGFzdEVsZW1lbnQgIT09IGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0uaWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbVkxID0gZWRpdGFibGVMYXlvdXRJdGVtc1tpXS55Q29vcmRJbkdyaWQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0l0ZW1YMSA9IGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0ueENvb3JkSW5HcmlkO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJdGVtWDIgPSBleGlzdGluZ0l0ZW1YMSArIGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0ud2lkdGhJbkdyaWQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0l0ZW1ZMiA9IGV4aXN0aW5nSXRlbVkxICsgZWRpdGFibGVMYXlvdXRJdGVtc1tpXS5oZWlnaHRJbkdyaWQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc1hPdmVybGFwcGluZyA9IHRoaXMuYXJlRWxlbWVudHNPdmVybGFwcGluZyhkcmFnZ2VkSXRlbVgxLCBkcmFnZ2VkSXRlbVgyLCBleGlzdGluZ0l0ZW1YMSwgZXhpc3RpbmdJdGVtWDIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNZT3ZlcmxhcHBpbmcgPSB0aGlzLmFyZUVsZW1lbnRzT3ZlcmxhcHBpbmcoZHJhZ2dlZEl0ZW1ZMSwgZHJhZ2dlZEl0ZW1ZMiwgZXhpc3RpbmdJdGVtWTEsIGV4aXN0aW5nSXRlbVkyKTtcclxuICAgICAgICAgICAgICAgIGlmICgoaXNYT3ZlcmxhcHBpbmcgJiYgaXNZT3ZlcmxhcHBpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nSXRlbVkxID49IGRyYWdnZWRJdGVtWTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZEl0ZW1JZC5wdXNoKGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZUxheW91dEl0ZW1zW2ldLnlDb29yZEluR3JpZCA9IGRyYWdnZWRJdGVtWTI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55Q29vcmRJbkdyaWQgPSBleGlzdGluZ0l0ZW1ZMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dlZEl0ZW1JZC5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaSA9PT0gZWRpdGFibGVMYXlvdXRJdGVtcy5sZW5ndGggLSAxICYmIGRyYWdnZWRJdGVtSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnRW5kKGVkaXRhYmxlTGF5b3V0SXRlbXNbZHJhZ2dlZEl0ZW1JZC5wb3AoKV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc25hcFRvR3JpZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBjaGVjayBvdmVybGFwcGluZyB3aGVuIGNvb3JkaW5hdGVzIGFyZSBvdXQgb2YgY29uZmxpY3RpbmcgYXJlYSwgbGlrZSBiaWdnZXIgZGl2IGlzIGRyYWdnZWQgb3ZlciBzbWFsbGVyIGRpdi5cclxuICAgICAqIEBwYXJhbSBwb2ludE9uZU9mRHJhZ2dlZERpdiBZL1ggc3RhcnRpbmcgcG9pbnQgb2YgVmVydGljYWwvSG9yaXpvbnRhbCBwb2ludCBvZiBkcmFnZ2VkIGRpdlxyXG4gICAgICogQHBhcmFtIHBvaW50VHdvT2ZEcmFnZ2VkRGl2IFkvWCBlbmRpbmcgcG9pbnQgb2YgVmVydGljYWwvSG9yaXpvbnRhbCBwb2ludCBvZiBkcmFnZ2VkIGRpdlxyXG4gICAgICogQHBhcmFtIHBvaW50T25lT2ZFeGlzdGluZ0RpdiBZL1ggc3RhcnRpbmcgcG9pbnQgb2YgVmVydGljYWwvSG9yaXpvbnRhbCBkaXYgb3ZlciB3aGljaCBuZXcgZGl2IGlzIGRyYWdnZWRcclxuICAgICAqIEBwYXJhbSBwb2ludFR3b09mRXhpc3RpbmdEaXYgWS9YIGVuZGluZyBwb2ludCBvZiBWZXJ0aWNhbC9Ib3Jpem9udGFsIGRpdiBvdmVyIHdoaWNoIG5ldyBkaXYgaXMgZHJhZ2dlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXJlRWxlbWVudHNPdmVybGFwcGluZyhcclxuICAgICAgICBwb2ludE9uZU9mRHJhZ2dlZERpdjogbnVtYmVyLFxyXG4gICAgICAgIHBvaW50VHdvT2ZEcmFnZ2VkRGl2OiBudW1iZXIsXHJcbiAgICAgICAgcG9pbnRPbmVPZkV4aXN0aW5nRGl2OiBudW1iZXIsXHJcbiAgICAgICAgcG9pbnRUd29PZkV4aXN0aW5nRGl2OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuY2hlY2tCZXR3ZWVuKHBvaW50T25lT2ZFeGlzdGluZ0RpdiwgcG9pbnRUd29PZkV4aXN0aW5nRGl2LCBwb2ludE9uZU9mRHJhZ2dlZERpdilcclxuICAgICAgICAgICAgfHwgdGhpcy5jaGVja0JldHdlZW4ocG9pbnRPbmVPZkV4aXN0aW5nRGl2LCBwb2ludFR3b09mRXhpc3RpbmdEaXYsIHBvaW50VHdvT2ZEcmFnZ2VkRGl2KSlcclxuICAgICAgICAgICAgfHwgKHBvaW50T25lT2ZEcmFnZ2VkRGl2IDw9IHBvaW50T25lT2ZFeGlzdGluZ0RpdiAmJiBwb2ludFR3b09mRHJhZ2dlZERpdiA+PSBwb2ludFR3b09mRXhpc3RpbmdEaXYpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSnVzdCB0byBjaGVjayBpZiBzZWFyY2hlZCBpdGVtIGlzIGZhbGwgdW5kZXIgY2VydGFpbiByYW5nZS5cclxuICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBvZiByYW5nZVxyXG4gICAgICogQHBhcmFtIGVuZCBlbmQgb2YgcmFuZ2VcclxuICAgICAqIEBwYXJhbSBzZWFyY2ggaXRlbSBiZWluZyBzZWFyY2hlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hlY2tCZXR3ZWVuKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBzZWFyY2g6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoc2VhcmNoID4gc3RhcnQpICYmIChzZWFyY2ggPCBlbmQpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgaXMgYWRqdXN0IGFsbCB0aGUgZGl2IHdpdGggdG8gZmFsbCBvbiB0aGUgYm91bmRhcnkgb2YgZ3JpZCB3aXRoIDcyIHggNzIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzbmFwVG9HcmlkKCkge1xyXG4gICAgICAgIHRoaXMuZWRpdGFibGVMYXlvdXRJdGVtcy5mb3JFYWNoKChjaGlsZENvbXBvbmVudDogRWRpdGFibGVMYXlvdXRJdGVtQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmRlclggPSBjaGlsZENvbXBvbmVudC54Q29vcmRJbkdyaWQgJSBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkU3F1YXJlU2l6ZTtcclxuICAgICAgICAgICAgY29uc3QgcmVtYWluZGVyWSA9IGNoaWxkQ29tcG9uZW50LnlDb29yZEluR3JpZCAlIEVkaXRhYmxlTGF5b3V0Q29tcG9uZW50LmdyaWRTcXVhcmVTaXplO1xyXG4gICAgICAgICAgICBjb25zdCByZW1haW5kZXJIZWlnaHQgPSBjaGlsZENvbXBvbmVudC5oZWlnaHRJbkdyaWQgJSBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkU3F1YXJlU2l6ZTtcclxuICAgICAgICAgICAgY29uc3QgcmVtYWluZGVyV2lkdGggPSBjaGlsZENvbXBvbmVudC53aWR0aEluR3JpZCAlIEVkaXRhYmxlTGF5b3V0Q29tcG9uZW50LmdyaWRTcXVhcmVTaXplO1xyXG4gICAgICAgICAgICBpZiAocmVtYWluZGVyWCAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgY2hpbGRDb21wb25lbnQueENvb3JkSW5HcmlkID0gTWF0aC5tYXgoY2hpbGRDb21wb25lbnQueENvb3JkSW5HcmlkIC0gcmVtYWluZGVyWCwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlbWFpbmRlclkgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIGNoaWxkQ29tcG9uZW50LnlDb29yZEluR3JpZCA9IE1hdGgubWF4KGNoaWxkQ29tcG9uZW50LnlDb29yZEluR3JpZCAtIHJlbWFpbmRlclksIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZW1haW5kZXJIZWlnaHQgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIGNoaWxkQ29tcG9uZW50LmhlaWdodEluR3JpZCA9XHJcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoY2hpbGRDb21wb25lbnQuaGVpZ2h0SW5HcmlkIC0gcmVtYWluZGVySGVpZ2h0LCBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkU3F1YXJlU2l6ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlbWFpbmRlcldpZHRoICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZENvbXBvbmVudC53aWR0aEluR3JpZCA9IE1hdGgubWF4KGNoaWxkQ29tcG9uZW50LndpZHRoSW5HcmlkIC0gcmVtYWluZGVyV2lkdGgsIEVkaXRhYmxlTGF5b3V0Q29tcG9uZW50LmdyaWRTcXVhcmVTaXplKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gYWRqdXN0IGZvciBtaW5pbXVtIGFyZWEgYm91bmRzXHJcbiAgICAgICAgICAgIGlmIChjaGlsZENvbXBvbmVudC5hcmVhIDwgY2hpbGRDb21wb25lbnQubWluQXJlYSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHdpZHRoTW9kaWZpZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgbGV0IGhlaWdodE1vZGlmaWVyID0gMDtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZENvbXBvbmVudC53aWR0aEluR3JpZCA+PSBjaGlsZENvbXBvbmVudC5oZWlnaHRJbkdyaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aE1vZGlmaWVyID0gRWRpdGFibGVMYXlvdXRDb21wb25lbnQuZ3JpZFNxdWFyZVNpemU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb21wb25lbnQuaGVpZ2h0SW5HcmlkID49IGNoaWxkQ29tcG9uZW50LndpZHRoSW5HcmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0TW9kaWZpZXIgPSBFZGl0YWJsZUxheW91dENvbXBvbmVudC5ncmlkU3F1YXJlU2l6ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNoaWxkQ29tcG9uZW50LndpZHRoSW5HcmlkICs9IHdpZHRoTW9kaWZpZXI7XHJcbiAgICAgICAgICAgICAgICBjaGlsZENvbXBvbmVudC5oZWlnaHRJbkdyaWQgKz0gaGVpZ2h0TW9kaWZpZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBARGVib3VuY2UoMClcclxuICAgIHByb3RlY3RlZCB1cGRhdGVMYXlvdXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGVMYXlvdXRJdGVtcykge1xyXG4gICAgICAgICAgICBjb25zdCBsYXlvdXRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCB8fCAwO1xyXG4gICAgICAgICAgICBpZiAoIWxheW91dFdpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBjb29yZHMgYW5kIGJveFNpemVcclxuICAgICAgICAgICAgY29uc3QgZWRpdGFibGVMYXlvdXRJdGVtcyA9IHRoaXMuZWRpdGFibGVMYXlvdXRJdGVtcy50b0FycmF5KCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVkaXRhYmxlTGF5b3V0SXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGVkaXRhYmxlTGF5b3V0SXRlbXNbaV0ud2lkdGhJbkdyaWQgPSBlZGl0YWJsZUxheW91dEl0ZW1zW2ldLndpZHRoSW5HcmlkO1xyXG4gICAgICAgICAgICAgICAgZWRpdGFibGVMYXlvdXRJdGVtc1tpXS5oZWlnaHRJbkdyaWQgPSBlZGl0YWJsZUxheW91dEl0ZW1zW2ldLmhlaWdodEluR3JpZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic21lLWVkaXRhYmxlLWxheW91dC1ncmlkXCIgW3N0eWxlLmhlaWdodC5weF09XCJncmlkSGVpZ2h0XCIgW3N0eWxlLndpZHRoLnB4XT1cImdyaWRXaWR0aFwiPlxyXG48bmctY29udGVudCBzZWxlY3Q9XCJzbWUtZWRpdGFibGUtbGF5b3V0LWl0ZW1cIj48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,9 +1,9 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { NgForm } from '@angular/forms';
3
+ import { EnvironmentModule } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';
3
4
  import { AuthorizationManager } from '@microsoft/windows-admin-center-sdk/core/security/authorization-manager';
4
5
  import { AppContextService } from '../../service/app-context.service';
5
6
  import { ValidationAlertSeverity } from '../form/validation-alert/validation-alert';
6
- import { EnvironmentModule } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../service/app-context.service";
9
9
  import * as i2 from "@angular/common";
@@ -330,4 +330,4 @@ export class NodeCredentialsFormComponent {
330
330
  type: ViewChild,
331
331
  args: ['manageAsForm']
332
332
  }] }); })();
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jcmVkZW50aWFscy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL25vZGUtY3JlZGVudGlhbHMtZm9ybS9ub2RlLWNyZWRlbnRpYWxzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvbm9kZS1jcmVkZW50aWFscy1mb3JtL25vZGUtY3JlZGVudGlhbHMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUE0QixvQkFBb0IsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBRXpJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDRnRGLHlDQUE0SDtJQUF0RCwwUkFBcUI7SUFBaUMsaUJBQWlCOzs7SUFBdkUsd0NBQXFCLHVDQUFBOzs7O0lBQzNGLG1DQUF1RCx3QkFBQTtJQUNHLGdTQUFnQztJQUFtRyxpQkFBaUIsRUFBQTs7O0lBRDdLLDBDQUFxQjtJQUNJLGVBQWdDO0lBQWhDLG1EQUFnQyxrREFBQSw4REFBQTs7O0lBRjFGLCtIQUE2STtJQUM3SSxtSEFFVzs7O0lBSE0sNENBQW9CO0lBQzFCLGVBQW9CO0lBQXBCLDRDQUFvQjs7OztJQVMvQiwwQ0FBbUw7SUFBMUcsZ1NBQXdCLHNP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Q0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGtCQUFrQixDQUFDLEtBQStCO1FBQ3JELE1BQU0sTUFBTSxHQUFxQixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEUsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUc7Z0JBQzlCLEtBQUssRUFBRSxJQUFJO2dCQUNYLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPO2dCQUN4QyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsT0FBTzthQUM1QyxDQUFDO1NBQ0w7UUFFRCxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7MkhBck1RLDRCQUE0Qjs4R0FBNUIsNEJBQTRCOzs7Ozs7UUN0QnpDLGtDQUEyRDtRQUN2RCw2RkFrQmM7UUFDZCw2RkFNYztRQUNsQixpQkFBTzs7UUEzQmUsK0JBQWE7UUFDbEIsZUFBa0I7UUFBbEIsb0NBQWtCO1FBbUJsQixlQUFpQjtRQUFqQixtQ0FBaUI7O3VGREVyQiw0QkFBNEI7Y0FieEMsU0FBUzsyQkFDSSwyQkFBMkI7b0VBaUc5QixrQkFBa0I7a0JBRHhCLE1BQU07WUFJQSwwQkFBMEI7a0JBRGhDLE1BQU07WUFJQSxjQUFjO2tCQURwQixLQUFLO1lBSUMsYUFBYTtrQkFEbkIsS0FBSztZQUlDLE1BQU07a0JBRFosS0FBSztZQUlDLFFBQVE7a0JBRGQsS0FBSztZQUlDLFlBQVk7a0JBRGxCLFNBQVM7bUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBdXRob3JpemF0aW9uQ3JlZGVudGlhbHMsIEF1dGhvcml6YXRpb25NYW5hZ2VyIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9zZWN1cml0eS9hdXRob3JpemF0aW9uLW1hbmFnZXInO1xyXG5pbXBvcnQgeyBTdHJpbmdzIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVkL3N0cmluZ3MnO1xyXG5pbXBvcnQgeyBBcHBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENoZWNrVmFsaWRhdGlvbkV2ZW50QXJncyB9IGZyb20gJy4uL2Zvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLXZhbGlkYXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uQWxlcnRzLCBWYWxpZGF0aW9uQWxlcnRTZXZlcml0eSB9IGZyb20gJy4uL2Zvcm0vdmFsaWRhdGlvbi1hbGVydC92YWxpZGF0aW9uLWFsZXJ0JztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRNb2R1bGUgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL21hbmlmZXN0L2Vudmlyb25tZW50LW1vZHVsZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1ub2RlLWNyZWRlbnRpYWxzLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL25vZGUtY3JlZGVudGlhbHMtZm9ybS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuLyoqXHJcbiAqIENyZWRlbnRpYWxzIEZvcm0gQ29tcG9uZW50OlxyXG4gKlxyXG4gKiBUT0RPOlxyXG4gKiAxLiBDb252ZXJ0IHRvIHVzaW5nIGFuZ3VsYXIgZm9ybSBjb250cm9sc1xyXG4gKiAyLiBDb252ZXJ0IHRvIGJlIGEgZm9ybSBjb250cm9sXHJcbiAqIDMuIFRoZSBhdXRoZW50aWNhdGlvbiBmbG93IGlzIGV4cGVjdGVkIHRvIGNoYW5nZSBkcmFzdGljYWxseSBiZXR3ZWVuIG5vdyBhbmQgR0EuXHJcbiAqICAgIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBwdXQgbXVjaCBlZmZvcnQgaW50byB0aGlzIGNvbnRyb2wgYXQgdGhpcyB0aW1lXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTm9kZUNyZWRlbnRpYWxzRm9ybUNvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgc3RyaW5ncyA9IE1zZnRTbWUuZ2V0U3RyaW5nczxTdHJpbmdzPigpLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLk5vZGVDcmVkZW50aWFsc0Zvcm07XHJcbiAgICBwdWJsaWMgaGFzUGVyTm9kZUNyZWRlbnRpYWxzID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgZ2xvYmFsVXNlcm5hbWU6IHN0cmluZztcclxuICAgIHB1YmxpYyBteUFjY291bnQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyB0aGUgVXNlcm5hbWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCB1c2VybmFtZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC51c2VybmFtZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXV0aG9yaXphdGlvbkNyZWRlbnRpYWxzKCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHVzZXJuYW1lKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwudXNlcm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG9yIHNldHMgdGhlIHBhc3N3b3JkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQgcGFzc3dvcmQodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubW9kZWwucGFzc3dvcmQgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUF1dGhvcml6YXRpb25DcmVkZW50aWFscygpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBwYXNzd29yZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnBhc3N3b3JkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBvciBzZXRzIGEgdmFsdWUgaW5kaWNhdGluZyBpZiB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgYXBwbGllZCB0byBhbGwgbm9kZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCBhcHBseVRvQWxsKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5hcHBseVRvQWxsID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBdXRob3JpemF0aW9uQ3JlZGVudGlhbHMoKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgYXBwbHlUb0FsbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5hcHBseVRvQWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBvciBzZXRzIGEgdmFsdWUgaW5kaWNhdGluZyBpZiBMQVBTIHNob3VsZCBiZSB1c2VkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQgdXNlTGFwcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMubW9kZWwudXNlTGFwcyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXV0aG9yaXphdGlvbkNyZWRlbnRpYWxzKCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHVzZUxhcHMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwudXNlTGFwcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyB0aGUgbGFwcyBMb2NhbCBBZG1pbiBOYW1lXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQgbGFwc0xvY2FsQWRtaW5OYW1lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmxhcHNMb2NhbEFkbWluTmFtZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXV0aG9yaXphdGlvbkNyZWRlbnRpYWxzKCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IGxhcHNMb2NhbEFkbWluTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLmxhcHNMb2NhbEFkbWluTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyBhIHZhbHVlIGluZGljYXRpbmcgaWYgZ2xvYmFsIGF1dGggc2hvdWxkIGJlIHVzZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCB1c2VHbG9iYWxBdXRoKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC51c2VHbG9iYWxBdXRoID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBdXRob3JpemF0aW9uQ3JlZGVudGlhbHMoKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgdXNlR2xvYmFsQXV0aCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC51c2VHbG9iYWxBdXRoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZWwgdG8gaG9sZCBpbnRlcm5hbCBmb3JtIGZpZWxkIHZhbHVlcztcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBtb2RlbCA9IHtcclxuICAgICAgICB1c2VybmFtZTogJycsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICcnLFxyXG4gICAgICAgIGFwcGx5VG9BbGw6IGZhbHNlLFxyXG4gICAgICAgIHVzZUxhcHM6IGZhbHNlLFxyXG4gICAgICAgIGxhcHNMb2NhbEFkbWluTmFtZTogJycsXHJcbiAgICAgICAgdXNlR2xvYmFsQXV0aDogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY3JlZGVudGlhbHNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRob3JpemF0aW9uQ3JlZGVudGlhbHM+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYXV0aG9yaXphdGlvbk1ldGhvZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJvb2xlYW4+KCk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzaG93QXBwbHlUb0FsbCA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpc1NlcnZpY2VNb2RlID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtSWQ6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG5vQ2hvaWNlID0gZmFsc2U7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbWFuYWdlQXNGb3JtJylcclxuICAgIHB1YmxpYyBtYW5hZ2VBc0Zvcm06IE5nRm9ybTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBOb2RlQ3JlZGVudGlhbHNGb3JtIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSkge1xyXG4gICAgICAgIHRoaXMubXlBY2NvdW50ID0gRW52aXJvbm1lbnRNb2R1bGUuaXNHYXRld2F5TGludXggP1xyXG4gICAgICAgICAgICB0aGlzLnN0cmluZ3MuVXNlR2xvYmFsQXV0aC5teUxpbnV4QWNjb3VudCA6IHRoaXMuc3RyaW5ncy5Vc2VHbG9iYWxBdXRoLm15V2luZG93c0FjY291bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0KG5vZGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvLyBUT0RPOiBoYW5kbGUgbm8gbm9kZU5hbWVzIHByb3ZpZGVkXHJcbiAgICAgICAgdGhpcy5hcHBseVRvQWxsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYW5hZ2VBc0Zvcm0uZm9ybS5jb250cm9scy51c2VybmFtZS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMubWFuYWdlQXNGb3JtLmZvcm0uY29udHJvbHMucGFzc3dvcmQucmVzZXQoKTtcclxuICAgICAgICB0aGlzLnVzZUxhcHMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxhcHNMb2NhbEFkbWluTmFtZSA9IEF1dGhvcml6YXRpb25NYW5hZ2VyLmRlZmF1bHRMYXBzTG9jYWxBZG1pbk5hbWU7IC8vIFNob3cgZGVmYXVsdCB2YWx1ZSwgdXNlcnMgY2FuIGNoYW5nZS5cclxuICAgICAgICB0aGlzLnVzZUdsb2JhbEF1dGggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaGFzUGVyTm9kZUNyZWRlbnRpYWxzID0gT2JqZWN0LmtleXModGhpcy5hcHBDb250ZXh0U2VydmljZS5hdXRob3JpemF0aW9uTWFuYWdlci5ub2RlVG9rZW5zKS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICBjb25zdCBub2RlVG9rZW4gPSB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLmF1dGhvcml6YXRpb25NYW5hZ2VyLm5vZGVUb2tlbnNbbm9kZU5hbWVdO1xyXG4gICAgICAgIGNvbnN0IGdsb2JhbFRva2VuID0gdGhpcy5hcHBDb250ZXh0U2VydmljZS5hdXRob3JpemF0aW9uTWFuYWdlci5tYW5hZ2VBc1Rva2VuO1xyXG5cclxuICAgICAgICBpZiAobm9kZVRva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlR2xvYmFsQXV0aCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJuYW1lID0gbm9kZVRva2VuLnVzZXJuYW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGdsb2JhbFRva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVXNlcm5hbWUgPSBnbG9iYWxUb2tlbi51c2VybmFtZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZUF1dGhvcml6YXRpb25DcmVkZW50aWFscygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBhdXRoQ3JlZHM6IEF1dGhvcml6YXRpb25DcmVkZW50aWFscyA9IHtcclxuICAgICAgICAgICAgdXNlcm5hbWU6IHRoaXMudXNlcm5hbWUsXHJcbiAgICAgICAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkLFxyXG4gICAgICAgICAgICBhcHBseVRvQWxsTm9kZXM6IHRoaXMuYXBwbHlUb0FsbCxcclxuICAgICAgICAgICAgdXNlTGFwczogZmFsc2UsIC8vIEJ5IGRlZmF1bHQgdXNlTGFwcyBzaG91bGQgYmUgZmFsc2VcclxuICAgICAgICAgICAgbGFwc0xvY2FsQWRtaW5OYW1lOiB0aGlzLmxhcHNMb2NhbEFkbWluTmFtZVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5ub0Nob2ljZSAmJiB0aGlzLnVzZUdsb2JhbEF1dGgpIHtcclxuICAgICAgICAgICAgYXV0aENyZWRzLnVzZXJuYW1lID0gbnVsbDtcclxuICAgICAgICAgICAgYXV0aENyZWRzLnBhc3N3b3JkID0gbnVsbDtcclxuICAgICAgICAgICAgYXV0aENyZWRzLmFwcGx5VG9BbGxOb2RlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBhdXRoQ3JlZHMudXNlTGFwcyA9IHRoaXMudXNlTGFwcztcclxuICAgICAgICAgICAgYXV0aENyZWRzLmxhcHNMb2NhbEFkbWluTmFtZSA9IHRoaXMubGFwc0xvY2FsQWRtaW5OYW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jcmVkZW50aWFsc0NoYW5nZWQubmV4dChhdXRoQ3JlZHMpO1xyXG4gICAgICAgIC8vIGNhcHR1cmUgd2hldGhlciB0aGUgZm9ybSBoYXMgYSBcIkxvY2FsIGFkbWluaXN0cmF0b3IgcGFzc3dvcmRcIiBmb3JtIGZpZWxkc1xyXG4gICAgICAgIHRoaXMuYXV0aG9yaXphdGlvbk1ldGhvZENoYW5nZWQuZW1pdCh0aGlzLnVzZUdsb2JhbEF1dGgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdGUgdGhlIGF1dGggdHlwZSBmaWVsZFxyXG4gICAgICogQHBhcmFtIGV2ZW50IHRoZSB2YWxpZGF0aW9uIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZUF1dGhUeXBlKGV2ZW50OiBDaGVja1ZhbGlkYXRpb25FdmVudEFyZ3MpIHtcclxuICAgICAgICBjb25zdCBhbGVydHM6IFZhbGlkYXRpb25BbGVydHMgPSB7fTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnVzZUdsb2JhbEF1dGgpIHtcclxuICAgICAgICAgICAgYWxlcnRzWyd1c2VHbG9iYWxBdXRoJ10gPSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuc3RyaW5ncy5Vc2VHbG9iYWxBdXRoLndhcm5pbmcsXHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogVmFsaWRhdGlvbkFsZXJ0U2V2ZXJpdHkuV2FybmluZ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1NlcnZpY2VNb2RlKSB7XHJcbiAgICAgICAgICAgIGFsZXJ0c1snc2VydmljZU1vZGUnXSA9IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5zdHJpbmdzLmRlcGxveW1lbnRHdWlkZU1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogVmFsaWRhdGlvbkFsZXJ0U2V2ZXJpdHkuV2FybmluZ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgTXNmdFNtZS5kZWVwQXNzaWduKGV2ZW50LmFsZXJ0cywgYWxlcnRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRlIHRoZSBhcHBseSB0byBhbGwgZmllbGRcclxuICAgICAqIEBwYXJhbSBldmVudCB0aGUgdmFsaWRhdGlvbiBldmVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGVBcHBseVRvQWxsKGV2ZW50OiBDaGVja1ZhbGlkYXRpb25FdmVudEFyZ3MpIHtcclxuICAgICAgICBjb25zdCBhbGVydHM6IFZhbGlkYXRpb25BbGVydHMgPSB7fTtcclxuICAgICAgICBpZiAoIXRoaXMudXNlR2xvYmFsQXV0aCAmJiB0aGlzLmhhc1Blck5vZGVDcmVkZW50aWFscyAmJiB0aGlzLmFwcGx5VG9BbGwpIHtcclxuICAgICAgICAgICAgYWxlcnRzWydoYXNQZXJOb2RlQ3JlZGVudGlhbHMnXSA9IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5zdHJpbmdzLkFwcGx5VG9BbGwud2FybmluZyxcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiBWYWxpZGF0aW9uQWxlcnRTZXZlcml0eS5XYXJuaW5nXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBNc2Z0U21lLmRlZXBBc3NpZ24oZXZlbnQuYWxlcnRzLCBhbGVydHMpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxmb3JtIG5hbWU9XCJtYW5hZ2VBc1wiIFtpZF09XCJmb3JtSWRcIiAjbWFuYWdlQXNGb3JtPVwibmdGb3JtXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIW5vQ2hvaWNlXCI+XHJcbiAgICAgICAgPHNtZS1mb3JtLWZpZWxkIHR5cGU9XCJyYWRpb2dyb3VwXCIgbmFtZT1cImF1dGhUeXBlXCIgWyhuZ01vZGVsKV09XCJ1c2VHbG9iYWxBdXRoXCIgKGN1c3RvbVZhbGlkYXRlKT1cInZhbGlkYXRlQXV0aFR5cGUoJGV2ZW50KVwiIFtpbW1lZGlhdGVWYWxpZGF0aW9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPHNtZS1vcHRpb24gW3ZhbHVlXT1cInRydWVcIiBbbGFiZWxdPVwic3RyaW5ncy5Vc2VHbG9iYWxBdXRoLmxhYmVsRm9ybWF0IHwgc21lRm9ybWF0OihnbG9iYWxVc2VybmFtZSB8fCBteUFjY291bnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtZS1mb3JtLWZpZWxkICpuZ0lmPVwiIWlzU2VydmljZU1vZGVcIiB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwidXNlTGFwc1wiIFsobmdNb2RlbCldPVwidXNlTGFwc1wiIFtsYWJlbF09XCJzdHJpbmdzLlVzZUxhcHMubGFiZWxcIj48L3NtZS1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCAqbmdJZj1cIiFpc1NlcnZpY2VNb2RlXCIgW2Rpc2FibGVkXT1cIiF1c2VMYXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWUtZm9ybS1maWVsZCB0eXBlPVwidGV4dFwiIG5hbWU9XCJsYXBzTG9jYWxBZG1pbk5hbWVcIiBbKG5nTW9kZWwpXT1cImxhcHNMb2NhbEFkbWluTmFtZVwiIFtsYWJlbF09XCJzdHJpbmdzLmxhcHNMb2NhbEFkbWluTmFtZS5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJzdHJpbmdzLmxhcHNMb2NhbEFkbWluTmFtZS5wbGFjZWhvbGRlclwiPjwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvc21lLW9wdGlvbj5cclxuICAgICAgICAgICAgPHNtZS1vcHRpb24gW3ZhbHVlXT1cImZhbHNlXCIgW2xhYmVsXT1cInN0cmluZ3MuVXNlUGVyTm9kZUF1dGgubGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8c21lLWZvcm0tZmllbGQgdHlwZT1cInRleHRcIiBuYW1lPVwidXNlcm5hbWVcIiBbKG5nTW9kZWwpXT1cInVzZXJuYW1lXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbbGFiZWxdPVwic3RyaW5ncy5Vc2VybmFtZS5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJzdHJpbmdzLlVzZXJuYW1lLnBsYWNlaG9sZGVyXCI+PC9zbWUtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8c21lLWZvcm0tZmllbGQgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW2xhYmVsXT1cInN0cmluZ3MuUGFzc3dvcmQubGFiZWxcIiBbcGxhY2Vob2xkZXJdPVwic3RyaW5ncy5QYXNzd29yZC5wbGFjZWhvbGRlclwiPjwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtZS1mb3JtLWZpZWxkICpuZ0lmPVwic2hvd0FwcGx5VG9BbGxcIiB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYXBwbHlUb0FsbFwiIFsobmdNb2RlbCldPVwiYXBwbHlUb0FsbFwiIFtsYWJlbF09XCJzdHJpbmdzLkFwcGx5VG9BbGwubGFiZWxcIiAoY3VzdG9tVmFsaWRhdGUpPVwidmFsaWRhdGVBcHBseVRvQWxsKCRldmVudClcIj48L3NtZS1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9zbWUtb3B0aW9uPlxyXG4gICAgICAgIDwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIm5vQ2hvaWNlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1wYWRkaW5nLXRvcC1zbVwiPlxyXG4gICAgICAgICAgICA8c21lLWZvcm0tZmllbGQgdHlwZT1cInRleHRcIiBuYW1lPVwidXNlcm5hbWVcIiBbKG5nTW9kZWwpXT1cInVzZXJuYW1lXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbbGFiZWxdPVwic3RyaW5ncy5Vc2VybmFtZS5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJzdHJpbmdzLlVzZXJuYW1lLnBsYWNlaG9sZGVyXCI+PC9zbWUtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPHNtZS1mb3JtLWZpZWxkIHR5cGU9XCJwYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZFwiIFsobmdNb2RlbCldPVwicGFzc3dvcmRcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIFtsYWJlbF09XCJzdHJpbmdzLlBhc3N3b3JkLmxhYmVsXCIgW3BsYWNlaG9sZGVyXT1cInN0cmluZ3MuUGFzc3dvcmQucGxhY2Vob2xkZXJcIj48L3NtZS1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8c21lLWZvcm0tZmllbGQgKm5nSWY9XCJzaG93QXBwbHlUb0FsbFwiIHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhcHBseVRvQWxsXCIgWyhuZ01vZGVsKV09XCJhcHBseVRvQWxsXCIgW2xhYmVsXT1cInN0cmluZ3MuQXBwbHlUb0FsbC5sYWJlbFwiIChjdXN0b21WYWxpZGF0ZSk9XCJ2YWxpZGF0ZUFwcGx5VG9BbGwoJGV2ZW50KVwiPjwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Zvcm0+Il19
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jcmVkZW50aWFscy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL25vZGUtY3JlZGVudGlhbHMtZm9ybS9ub2RlLWNyZWRlbnRpYWxzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvbm9kZS1jcmVkZW50aWFscy1mb3JtL25vZGUtY3JlZGVudGlhbHMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDMUcsT0FBTyxFQUE0QixvQkFBb0IsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBRXpJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDRmxGLHlDQUE0SDtJQUF0RCwwUkFBcUI7SUFBaUMsaUJBQWlCOzs7SUFBdkUsd0NBQXFCLHVDQUFBOzs7O0lBQzNGLG1DQUF1RCx3QkFBQTtJQUNHLGdTQUFnQztJQUFtRyxpQkFBaUIsRUFBQTs7O0lBRDdLLDBDQUFxQjtJQUNJLGVBQWdDO0lBQWhDLG1EQUFnQyxrREFBQSw4REFBQTs7O0lBRjFGLCtIQUE2STtJQUM3SSxtSEFFVzs7O0lBSE0sNENBQW9CO0lBQzFCLGVBQW9CO0lBQXBCLDRDQUFvQjs7OztJQVMvQiwwQ0FBbUw7SUFBMUcsZ1NBQXdCLHNP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Q0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGtCQUFrQixDQUFDLEtBQStCO1FBQ3JELE1BQU0sTUFBTSxHQUFxQixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEUsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUc7Z0JBQzlCLEtBQUssRUFBRSxJQUFJO2dCQUNYLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPO2dCQUN4QyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsT0FBTzthQUM1QyxDQUFDO1NBQ0w7UUFFRCxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7MkhBck1RLDRCQUE0Qjs4R0FBNUIsNEJBQTRCOzs7Ozs7UUN0QnpDLGtDQUEyRDtRQUN2RCw2RkFrQmM7UUFDZCw2RkFNYztRQUNsQixpQkFBTzs7UUEzQmUsK0JBQWE7UUFDbEIsZUFBa0I7UUFBbEIsb0NBQWtCO1FBbUJsQixlQUFpQjtRQUFqQixtQ0FBaUI7O3VGREVyQiw0QkFBNEI7Y0FieEMsU0FBUzsyQkFDSSwyQkFBMkI7b0VBaUc5QixrQkFBa0I7a0JBRHhCLE1BQU07WUFJQSwwQkFBMEI7a0JBRGhDLE1BQU07WUFJQSxjQUFjO2tCQURwQixLQUFLO1lBSUMsYUFBYTtrQkFEbkIsS0FBSztZQUlDLE1BQU07a0JBRFosS0FBSztZQUlDLFFBQVE7a0JBRGQsS0FBSztZQUlDLFlBQVk7a0JBRGxCLFNBQVM7bUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudE1vZHVsZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvbWFuaWZlc3QvZW52aXJvbm1lbnQtbW9kdWxlcyc7XHJcbmltcG9ydCB7IEF1dGhvcml6YXRpb25DcmVkZW50aWFscywgQXV0aG9yaXphdGlvbk1hbmFnZXIgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3NlY3VyaXR5L2F1dGhvcml6YXRpb24tbWFuYWdlcic7XHJcbmltcG9ydCB7IFN0cmluZ3MgfSBmcm9tICcuLi8uLi9nZW5lcmF0ZWQvc3RyaW5ncyc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hlY2tWYWxpZGF0aW9uRXZlbnRBcmdzIH0gZnJvbSAnLi4vZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtdmFsaWRhdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25BbGVydHMsIFZhbGlkYXRpb25BbGVydFNldmVyaXR5IH0gZnJvbSAnLi4vZm9ybS92YWxpZGF0aW9uLWFsZXJ0L3ZhbGlkYXRpb24tYWxlcnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1ub2RlLWNyZWRlbnRpYWxzLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL25vZGUtY3JlZGVudGlhbHMtZm9ybS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuLyoqXHJcbiAqIENyZWRlbnRpYWxzIEZvcm0gQ29tcG9uZW50OlxyXG4gKlxyXG4gKiBUT0RPOlxyXG4gKiAxLiBDb252ZXJ0IHRvIHVzaW5nIGFuZ3VsYXIgZm9ybSBjb250cm9sc1xyXG4gKiAyLiBDb252ZXJ0IHRvIGJlIGEgZm9ybSBjb250cm9sXHJcbiAqIDMuIFRoZSBhdXRoZW50aWNhdGlvbiBmbG93IGlzIGV4cGVjdGVkIHRvIGNoYW5nZSBkcmFzdGljYWxseSBiZXR3ZWVuIG5vdyBhbmQgR0EuXHJcbiAqICAgIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBwdXQgbXVjaCBlZmZvcnQgaW50byB0aGlzIGNvbnRyb2wgYXQgdGhpcyB0aW1lXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTm9kZUNyZWRlbnRpYWxzRm9ybUNvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgc3RyaW5ncyA9IE1zZnRTbWUuZ2V0U3RyaW5nczxTdHJpbmdzPigpLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLk5vZGVDcmVkZW50aWFsc0Zvcm07XHJcbiAgICBwdWJsaWMgaGFzUGVyTm9kZUNyZWRlbnRpYWxzID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgZ2xvYmFsVXNlcm5hbWU6IHN0cmluZztcclxuICAgIHB1YmxpYyBteUFjY291bnQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyB0aGUgVXNlcm5hbWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCB1c2VybmFtZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC51c2VybmFtZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXV0aG9yaXphdGlvbkNyZWRlbnRpYWxzKCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHVzZXJuYW1lKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwudXNlcm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG9yIHNldHMgdGhlIHBhc3N3b3JkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQgcGFzc3dvcmQodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubW9kZWwucGFzc3dvcmQgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUF1dGhvcml6YXRpb25DcmVkZW50aWFscygpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBwYXNzd29yZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnBhc3N3b3JkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBvciBzZXRzIGEgdmFsdWUgaW5kaWNhdGluZyBpZiB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgYXBwbGllZCB0byBhbGwgbm9kZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCBhcHBseVRvQWxsKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5hcHBseVRvQWxsID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBdXRob3JpemF0aW9uQ3JlZGVudGlhbHMoKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgYXBwbHlUb0FsbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5hcHBseVRvQWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBvciBzZXRzIGEgdmFsdWUgaW5kaWNhdGluZyBpZiBMQVBTIHNob3VsZCBiZSB1c2VkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQgdXNlTGFwcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMubW9kZWwudXNlTGFwcyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXV0aG9yaXphdGlvbkNyZWRlbnRpYWxzKCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHVzZUxhcHMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwudXNlTGFwcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyB0aGUgbGFwcyBMb2NhbCBBZG1pbiBOYW1lXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQgbGFwc0xvY2FsQWRtaW5OYW1lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmxhcHNMb2NhbEFkbWluTmFtZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXV0aG9yaXphdGlvbkNyZWRlbnRpYWxzKCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IGxhcHNMb2NhbEFkbWluTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLmxhcHNMb2NhbEFkbWluTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyBhIHZhbHVlIGluZGljYXRpbmcgaWYgZ2xvYmFsIGF1dGggc2hvdWxkIGJlIHVzZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCB1c2VHbG9iYWxBdXRoKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC51c2VHbG9iYWxBdXRoID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBdXRob3JpemF0aW9uQ3JlZGVudGlhbHMoKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgdXNlR2xvYmFsQXV0aCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC51c2VHbG9iYWxBdXRoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZWwgdG8gaG9sZCBpbnRlcm5hbCBmb3JtIGZpZWxkIHZhbHVlcztcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBtb2RlbCA9IHtcclxuICAgICAgICB1c2VybmFtZTogJycsXHJcbiAgICAgICAgcGFzc3dvcmQ6ICcnLFxyXG4gICAgICAgIGFwcGx5VG9BbGw6IGZhbHNlLFxyXG4gICAgICAgIHVzZUxhcHM6IGZhbHNlLFxyXG4gICAgICAgIGxhcHNMb2NhbEFkbWluTmFtZTogJycsXHJcbiAgICAgICAgdXNlR2xvYmFsQXV0aDogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY3JlZGVudGlhbHNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRob3JpemF0aW9uQ3JlZGVudGlhbHM+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYXV0aG9yaXphdGlvbk1ldGhvZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJvb2xlYW4+KCk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzaG93QXBwbHlUb0FsbCA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpc1NlcnZpY2VNb2RlID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtSWQ6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG5vQ2hvaWNlID0gZmFsc2U7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbWFuYWdlQXNGb3JtJylcclxuICAgIHB1YmxpYyBtYW5hZ2VBc0Zvcm06IE5nRm9ybTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBOb2RlQ3JlZGVudGlhbHNGb3JtIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSkge1xyXG4gICAgICAgIHRoaXMubXlBY2NvdW50ID0gRW52aXJvbm1lbnRNb2R1bGUuaXNHYXRld2F5TGludXggP1xyXG4gICAgICAgICAgICB0aGlzLnN0cmluZ3MuVXNlR2xvYmFsQXV0aC5teUxpbnV4QWNjb3VudCA6IHRoaXMuc3RyaW5ncy5Vc2VHbG9iYWxBdXRoLm15V2luZG93c0FjY291bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0KG5vZGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvLyBUT0RPOiBoYW5kbGUgbm8gbm9kZU5hbWVzIHByb3ZpZGVkXHJcbiAgICAgICAgdGhpcy5hcHBseVRvQWxsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYW5hZ2VBc0Zvcm0uZm9ybS5jb250cm9scy51c2VybmFtZS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMubWFuYWdlQXNGb3JtLmZvcm0uY29udHJvbHMucGFzc3dvcmQucmVzZXQoKTtcclxuICAgICAgICB0aGlzLnVzZUxhcHMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxhcHNMb2NhbEFkbWluTmFtZSA9IEF1dGhvcml6YXRpb25NYW5hZ2VyLmRlZmF1bHRMYXBzTG9jYWxBZG1pbk5hbWU7IC8vIFNob3cgZGVmYXVsdCB2YWx1ZSwgdXNlcnMgY2FuIGNoYW5nZS5cclxuICAgICAgICB0aGlzLnVzZUdsb2JhbEF1dGggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaGFzUGVyTm9kZUNyZWRlbnRpYWxzID0gT2JqZWN0LmtleXModGhpcy5hcHBDb250ZXh0U2VydmljZS5hdXRob3JpemF0aW9uTWFuYWdlci5ub2RlVG9rZW5zKS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICBjb25zdCBub2RlVG9rZW4gPSB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLmF1dGhvcml6YXRpb25NYW5hZ2VyLm5vZGVUb2tlbnNbbm9kZU5hbWVdO1xyXG4gICAgICAgIGNvbnN0IGdsb2JhbFRva2VuID0gdGhpcy5hcHBDb250ZXh0U2VydmljZS5hdXRob3JpemF0aW9uTWFuYWdlci5tYW5hZ2VBc1Rva2VuO1xyXG5cclxuICAgICAgICBpZiAobm9kZVRva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlR2xvYmFsQXV0aCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJuYW1lID0gbm9kZVRva2VuLnVzZXJuYW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGdsb2JhbFRva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVXNlcm5hbWUgPSBnbG9iYWxUb2tlbi51c2VybmFtZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZUF1dGhvcml6YXRpb25DcmVkZW50aWFscygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBhdXRoQ3JlZHM6IEF1dGhvcml6YXRpb25DcmVkZW50aWFscyA9IHtcclxuICAgICAgICAgICAgdXNlcm5hbWU6IHRoaXMudXNlcm5hbWUsXHJcbiAgICAgICAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkLFxyXG4gICAgICAgICAgICBhcHBseVRvQWxsTm9kZXM6IHRoaXMuYXBwbHlUb0FsbCxcclxuICAgICAgICAgICAgdXNlTGFwczogZmFsc2UsIC8vIEJ5IGRlZmF1bHQgdXNlTGFwcyBzaG91bGQgYmUgZmFsc2VcclxuICAgICAgICAgICAgbGFwc0xvY2FsQWRtaW5OYW1lOiB0aGlzLmxhcHNMb2NhbEFkbWluTmFtZVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5ub0Nob2ljZSAmJiB0aGlzLnVzZUdsb2JhbEF1dGgpIHtcclxuICAgICAgICAgICAgYXV0aENyZWRzLnVzZXJuYW1lID0gbnVsbDtcclxuICAgICAgICAgICAgYXV0aENyZWRzLnBhc3N3b3JkID0gbnVsbDtcclxuICAgICAgICAgICAgYXV0aENyZWRzLmFwcGx5VG9BbGxOb2RlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBhdXRoQ3JlZHMudXNlTGFwcyA9IHRoaXMudXNlTGFwcztcclxuICAgICAgICAgICAgYXV0aENyZWRzLmxhcHNMb2NhbEFkbWluTmFtZSA9IHRoaXMubGFwc0xvY2FsQWRtaW5OYW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jcmVkZW50aWFsc0NoYW5nZWQubmV4dChhdXRoQ3JlZHMpO1xyXG4gICAgICAgIC8vIGNhcHR1cmUgd2hldGhlciB0aGUgZm9ybSBoYXMgYSBcIkxvY2FsIGFkbWluaXN0cmF0b3IgcGFzc3dvcmRcIiBmb3JtIGZpZWxkc1xyXG4gICAgICAgIHRoaXMuYXV0aG9yaXphdGlvbk1ldGhvZENoYW5nZWQuZW1pdCh0aGlzLnVzZUdsb2JhbEF1dGgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdGUgdGhlIGF1dGggdHlwZSBmaWVsZFxyXG4gICAgICogQHBhcmFtIGV2ZW50IHRoZSB2YWxpZGF0aW9uIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWxpZGF0ZUF1dGhUeXBlKGV2ZW50OiBDaGVja1ZhbGlkYXRpb25FdmVudEFyZ3MpIHtcclxuICAgICAgICBjb25zdCBhbGVydHM6IFZhbGlkYXRpb25BbGVydHMgPSB7fTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnVzZUdsb2JhbEF1dGgpIHtcclxuICAgICAgICAgICAgYWxlcnRzWyd1c2VHbG9iYWxBdXRoJ10gPSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuc3RyaW5ncy5Vc2VHbG9iYWxBdXRoLndhcm5pbmcsXHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogVmFsaWRhdGlvbkFsZXJ0U2V2ZXJpdHkuV2FybmluZ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1NlcnZpY2VNb2RlKSB7XHJcbiAgICAgICAgICAgIGFsZXJ0c1snc2VydmljZU1vZGUnXSA9IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5zdHJpbmdzLmRlcGxveW1lbnRHdWlkZU1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogVmFsaWRhdGlvbkFsZXJ0U2V2ZXJpdHkuV2FybmluZ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgTXNmdFNtZS5kZWVwQXNzaWduKGV2ZW50LmFsZXJ0cywgYWxlcnRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYXRlIHRoZSBhcHBseSB0byBhbGwgZmllbGRcclxuICAgICAqIEBwYXJhbSBldmVudCB0aGUgdmFsaWRhdGlvbiBldmVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGVBcHBseVRvQWxsKGV2ZW50OiBDaGVja1ZhbGlkYXRpb25FdmVudEFyZ3MpIHtcclxuICAgICAgICBjb25zdCBhbGVydHM6IFZhbGlkYXRpb25BbGVydHMgPSB7fTtcclxuICAgICAgICBpZiAoIXRoaXMudXNlR2xvYmFsQXV0aCAmJiB0aGlzLmhhc1Blck5vZGVDcmVkZW50aWFscyAmJiB0aGlzLmFwcGx5VG9BbGwpIHtcclxuICAgICAgICAgICAgYWxlcnRzWydoYXNQZXJOb2RlQ3JlZGVudGlhbHMnXSA9IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5zdHJpbmdzLkFwcGx5VG9BbGwud2FybmluZyxcclxuICAgICAgICAgICAgICAgIHNldmVyaXR5OiBWYWxpZGF0aW9uQWxlcnRTZXZlcml0eS5XYXJuaW5nXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBNc2Z0U21lLmRlZXBBc3NpZ24oZXZlbnQuYWxlcnRzLCBhbGVydHMpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxmb3JtIG5hbWU9XCJtYW5hZ2VBc1wiIFtpZF09XCJmb3JtSWRcIiAjbWFuYWdlQXNGb3JtPVwibmdGb3JtXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIW5vQ2hvaWNlXCI+XHJcbiAgICAgICAgPHNtZS1mb3JtLWZpZWxkIHR5cGU9XCJyYWRpb2dyb3VwXCIgbmFtZT1cImF1dGhUeXBlXCIgWyhuZ01vZGVsKV09XCJ1c2VHbG9iYWxBdXRoXCIgKGN1c3RvbVZhbGlkYXRlKT1cInZhbGlkYXRlQXV0aFR5cGUoJGV2ZW50KVwiIFtpbW1lZGlhdGVWYWxpZGF0aW9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPHNtZS1vcHRpb24gW3ZhbHVlXT1cInRydWVcIiBbbGFiZWxdPVwic3RyaW5ncy5Vc2VHbG9iYWxBdXRoLmxhYmVsRm9ybWF0IHwgc21lRm9ybWF0OihnbG9iYWxVc2VybmFtZSB8fCBteUFjY291bnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtZS1mb3JtLWZpZWxkICpuZ0lmPVwiIWlzU2VydmljZU1vZGVcIiB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwidXNlTGFwc1wiIFsobmdNb2RlbCldPVwidXNlTGFwc1wiIFtsYWJlbF09XCJzdHJpbmdzLlVzZUxhcHMubGFiZWxcIj48L3NtZS1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCAqbmdJZj1cIiFpc1NlcnZpY2VNb2RlXCIgW2Rpc2FibGVkXT1cIiF1c2VMYXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWUtZm9ybS1maWVsZCB0eXBlPVwidGV4dFwiIG5hbWU9XCJsYXBzTG9jYWxBZG1pbk5hbWVcIiBbKG5nTW9kZWwpXT1cImxhcHNMb2NhbEFkbWluTmFtZVwiIFtsYWJlbF09XCJzdHJpbmdzLmxhcHNMb2NhbEFkbWluTmFtZS5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJzdHJpbmdzLmxhcHNMb2NhbEFkbWluTmFtZS5wbGFjZWhvbGRlclwiPjwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvc21lLW9wdGlvbj5cclxuICAgICAgICAgICAgPHNtZS1vcHRpb24gW3ZhbHVlXT1cImZhbHNlXCIgW2xhYmVsXT1cInN0cmluZ3MuVXNlUGVyTm9kZUF1dGgubGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8c21lLWZvcm0tZmllbGQgdHlwZT1cInRleHRcIiBuYW1lPVwidXNlcm5hbWVcIiBbKG5nTW9kZWwpXT1cInVzZXJuYW1lXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbbGFiZWxdPVwic3RyaW5ncy5Vc2VybmFtZS5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJzdHJpbmdzLlVzZXJuYW1lLnBsYWNlaG9sZGVyXCI+PC9zbWUtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8c21lLWZvcm0tZmllbGQgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW2xhYmVsXT1cInN0cmluZ3MuUGFzc3dvcmQubGFiZWxcIiBbcGxhY2Vob2xkZXJdPVwic3RyaW5ncy5QYXNzd29yZC5wbGFjZWhvbGRlclwiPjwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtZS1mb3JtLWZpZWxkICpuZ0lmPVwic2hvd0FwcGx5VG9BbGxcIiB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYXBwbHlUb0FsbFwiIFsobmdNb2RlbCldPVwiYXBwbHlUb0FsbFwiIFtsYWJlbF09XCJzdHJpbmdzLkFwcGx5VG9BbGwubGFiZWxcIiAoY3VzdG9tVmFsaWRhdGUpPVwidmFsaWRhdGVBcHBseVRvQWxsKCRldmVudClcIj48L3NtZS1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9zbWUtb3B0aW9uPlxyXG4gICAgICAgIDwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIm5vQ2hvaWNlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1wYWRkaW5nLXRvcC1zbVwiPlxyXG4gICAgICAgICAgICA8c21lLWZvcm0tZmllbGQgdHlwZT1cInRleHRcIiBuYW1lPVwidXNlcm5hbWVcIiBbKG5nTW9kZWwpXT1cInVzZXJuYW1lXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbbGFiZWxdPVwic3RyaW5ncy5Vc2VybmFtZS5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJzdHJpbmdzLlVzZXJuYW1lLnBsYWNlaG9sZGVyXCI+PC9zbWUtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPHNtZS1mb3JtLWZpZWxkIHR5cGU9XCJwYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZFwiIFsobmdNb2RlbCldPVwicGFzc3dvcmRcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIFtsYWJlbF09XCJzdHJpbmdzLlBhc3N3b3JkLmxhYmVsXCIgW3BsYWNlaG9sZGVyXT1cInN0cmluZ3MuUGFzc3dvcmQucGxhY2Vob2xkZXJcIj48L3NtZS1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8c21lLWZvcm0tZmllbGQgKm5nSWY9XCJzaG93QXBwbHlUb0FsbFwiIHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhcHBseVRvQWxsXCIgWyhuZ01vZGVsKV09XCJhcHBseVRvQWxsXCIgW2xhYmVsXT1cInN0cmluZ3MuQXBwbHlUb0FsbC5sYWJlbFwiIChjdXN0b21WYWxpZGF0ZSk9XCJ2YWxpZGF0ZUFwcGx5VG9BbGwoJGV2ZW50KVwiPjwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Zvcm0+Il19
@@ -163,6 +163,9 @@ function PropertyGridComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
163
163
  i0.ɵɵtemplate(2, PropertyGridComponent_ng_template_10_span_2_Template, 2, 1, "span", 25);
164
164
  i0.ɵɵelementStart(3, "a", 28);
165
165
  i0.ɵɵtext(4);
166
+ i0.ɵɵelementEnd();
167
+ i0.ɵɵelementStart(5, "span", 29);
168
+ i0.ɵɵtext(6);
166
169
  i0.ɵɵelementEnd()();
167
170
  } if (rf & 2) {
168
171
  const item_r35 = ctx.$implicit;
@@ -170,14 +173,18 @@ function PropertyGridComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
170
173
  const ctx_r9 = i0.ɵɵnextContext();
171
174
  const _r12 = i0.ɵɵreference(15);
172
175
  i0.ɵɵadvance(1);
173
- i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(7, _c4, item_r35, i_r36));
176
+ i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(8, _c4, item_r35, i_r36));
174
177
  i0.ɵɵadvance(1);
175
178
  i0.ɵɵproperty("ngIf", item_r35.prefixString);
176
179
  i0.ɵɵadvance(1);
177
180
  i0.ɵɵproperty("routerLink", item_r35.link);
178
- i0.ɵɵattribute("aria-labelledby", ctx_r9.idBag.labelSpan + i_r36 + " " + (ctx_r9.idBag.valueSpan + i_r36))("aria-describedby", ctx_r9.idBag.detailsSpan + i_r36);
181
+ i0.ɵɵattribute("aria-describedby", ctx_r9.idBag.detailsSpan + i_r36);
179
182
  i0.ɵɵadvance(1);
180
183
  i0.ɵɵtextInterpolate(item_r35.value);
184
+ i0.ɵɵadvance(1);
185
+ i0.ɵɵproperty("id", ctx_r9.idBag.detailsSpan + i_r36);
186
+ i0.ɵɵadvance(1);
187
+ i0.ɵɵtextInterpolate(ctx_r9.getInternalLinkDescription(item_r35));
181
188
  } }
182
189
  function PropertyGridComponent_ng_template_12_ng_container_1_Template(rf, ctx) { if (rf & 1) {
183
190
  i0.ɵɵelementContainer(0);
@@ -195,8 +202,11 @@ function PropertyGridComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
195
202
  i0.ɵɵelementStart(0, "p");
196
203
  i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_12_ng_container_1_Template, 1, 0, "ng-container", 19);
197
204
  i0.ɵɵtemplate(2, PropertyGridComponent_ng_template_12_span_2_Template, 2, 1, "span", 25);
198
- i0.ɵɵelementStart(3, "a", 29);
205
+ i0.ɵɵelementStart(3, "a", 30);
199
206
  i0.ɵɵtext(4);
207
+ i0.ɵɵelementEnd();
208
+ i0.ɵɵelementStart(5, "span", 29);
209
+ i0.ɵɵtext(6);
200
210
  i0.ɵɵelementEnd()();
201
211
  } if (rf & 2) {
202
212
  const item_r40 = ctx.$implicit;
@@ -204,14 +214,18 @@ function PropertyGridComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
204
214
  const ctx_r11 = i0.ɵɵnextContext();
205
215
  const _r12 = i0.ɵɵreference(15);
206
216
  i0.ɵɵadvance(1);
207
- i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(7, _c4, item_r40, i_r41));
217
+ i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(8, _c4, item_r40, i_r41));
208
218
  i0.ɵɵadvance(1);
209
219
  i0.ɵɵproperty("ngIf", item_r40.prefixString);
210
220
  i0.ɵɵadvance(1);
211
221
  i0.ɵɵproperty("href", item_r40.link, i0.ɵɵsanitizeUrl);
212
- i0.ɵɵattribute("aria-labelledby", ctx_r11.idBag.labelSpan + i_r41 + " " + (ctx_r11.idBag.valueSpan + i_r41))("aria-describedby", ctx_r11.idBag.detailsSpan + i_r41);
222
+ i0.ɵɵattribute("aria-describedby", ctx_r11.idBag.detailsSpan + i_r41);
213
223
  i0.ɵɵadvance(1);
214
224
  i0.ɵɵtextInterpolate(item_r40.value);
225
+ i0.ɵɵadvance(1);
226
+ i0.ɵɵproperty("id", ctx_r11.idBag.detailsSpan + i_r41);
227
+ i0.ɵɵadvance(1);
228
+ i0.ɵɵtextInterpolate(ctx_r11.getExternalLinkDescription(item_r40));
215
229
  } }
216
230
  function PropertyGridComponent_ng_template_14_span_0_Template(rf, ctx) { if (rf & 1) {
217
231
  i0.ɵɵelement(0, "span");
@@ -220,14 +234,14 @@ function PropertyGridComponent_ng_template_14_span_0_Template(rf, ctx) { if (rf
220
234
  i0.ɵɵclassMapInterpolate1("sme-margin-right-xs sme-icon ", item_r45.iconClass, "");
221
235
  } }
222
236
  function PropertyGridComponent_ng_template_14_sme_status_icon_1_Template(rf, ctx) { if (rf & 1) {
223
- i0.ɵɵelement(0, "sme-status-icon", 32);
237
+ i0.ɵɵelement(0, "sme-status-icon", 33);
224
238
  } if (rf & 2) {
225
239
  const item_r45 = i0.ɵɵnextContext().$implicit;
226
240
  i0.ɵɵproperty("status", item_r45.status);
227
241
  } }
228
242
  function PropertyGridComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
229
- i0.ɵɵtemplate(0, PropertyGridComponent_ng_template_14_span_0_Template, 1, 3, "span", 30);
230
- i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_14_sme_status_icon_1_Template, 1, 1, "sme-status-icon", 31);
243
+ i0.ɵɵtemplate(0, PropertyGridComponent_ng_template_14_span_0_Template, 1, 3, "span", 31);
244
+ i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_14_sme_status_icon_1_Template, 1, 1, "sme-status-icon", 32);
231
245
  } if (rf & 2) {
232
246
  const item_r45 = ctx.$implicit;
233
247
  i0.ɵɵproperty("ngIf", !!item_r45.iconClass);
@@ -363,6 +377,12 @@ export class PropertyGridComponent extends CoreBaseComponent {
363
377
  item.loading = false;
364
378
  }
365
379
  }
380
+ getInternalLinkDescription(item) {
381
+ return this.strings.MsftSmeShell.Angular.PropertyGrid.InternalLink.label.format(item.link);
382
+ }
383
+ getExternalLinkDescription(item) {
384
+ return this.strings.MsftSmeShell.Angular.PropertyGrid.ExternalLink.label.format(item.link);
385
+ }
366
386
  /**
367
387
  * Creates the idBag used by this component to store unique element ids.
368
388
  * id values will be assigned be the @see BaseComponent super class.
@@ -404,7 +424,7 @@ export class PropertyGridComponent extends CoreBaseComponent {
404
424
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.externalLinkTemplate = _t.first);
405
425
  } }, inputs: { orientation: "orientation" }, outputs: { layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
406
426
  { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => PropertyGridComponent)) }
407
- ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 16, vars: 7, consts: [[1, "sme-position-inset-none", "sme-position-stretch-h", 3, "padLastItem", "oneColumn"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "medium", 3, "until", "columns", 4, "ngIf"], ["name", "wide", 3, "columns", 4, "ngIf"], [3, "columnSpan", "maxWidth", 4, "ngFor", "ngForOf"], ["readonlyTemplate", ""], ["actionLinkTemplate", ""], ["internalLinkTemplate", ""], ["externalLinkTemplate", ""], ["iconTemplate", ""], ["name", "medium", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "maxWidth"], ["tabindex", "0", "aria-live", "polite", "aria-atomic", "true", "smeTooltipZone", "", 1, "sme-property-grid-item"], ["zone", "smeTooltipZone"], [1, "sme-arrange-stack-h"], ["class", "sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs", "aria-hidden", "true", "tabindex", "0", 3, "title", "tooltipZone", 4, "ngIf"], [1, "sme-screen-reader"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["aria-hidden", "true", "tabindex", "0", 1, "sme-position-flex-none", "sme-icon", "sme-icon-info", "sme-info-bubble", "sme-margin-left-xs", 3, "title", "tooltipZone"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent", 4, "ngIf"], [4, "ngIf"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent"], [1, "sme-read-only-template"], ["class", "sme-padding-right-xs", 4, "ngIf"], ["tabindex", "0", "role", "link", 1, "sme-link", "sme-focus-zone", "sme-action-link-template", 3, "click"], [1, "sme-padding-right-xs"], ["role", "link", 1, "sme-link", "sme-focus-zone", 3, "routerLink"], ["role", "link", "target", "_blank", 1, "sme-link", "sme-focus-zone", "sme-icon", "sme-icon-after", "sme-icon-openInNewWindow", 3, "href"], [3, "class", 4, "ngIf"], ["class", "sme-layout-inline-block sme-margin-right-xs ", "size", "16px", 3, "status", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", "sme-margin-right-xs", 3, "status"]], template: function PropertyGridComponent_Template(rf, ctx) { if (rf & 1) {
427
+ ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 16, vars: 7, consts: [[1, "sme-position-inset-none", "sme-position-stretch-h", 3, "padLastItem", "oneColumn"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "medium", 3, "until", "columns", 4, "ngIf"], ["name", "wide", 3, "columns", 4, "ngIf"], [3, "columnSpan", "maxWidth", 4, "ngFor", "ngForOf"], ["readonlyTemplate", ""], ["actionLinkTemplate", ""], ["internalLinkTemplate", ""], ["externalLinkTemplate", ""], ["iconTemplate", ""], ["name", "medium", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "maxWidth"], ["tabindex", "0", "aria-live", "polite", "aria-atomic", "true", "smeTooltipZone", "", 1, "sme-property-grid-item"], ["zone", "smeTooltipZone"], [1, "sme-arrange-stack-h"], ["class", "sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs", "aria-hidden", "true", "tabindex", "0", 3, "title", "tooltipZone", 4, "ngIf"], [1, "sme-screen-reader"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["aria-hidden", "true", "tabindex", "0", 1, "sme-position-flex-none", "sme-icon", "sme-icon-info", "sme-info-bubble", "sme-margin-left-xs", 3, "title", "tooltipZone"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent", 4, "ngIf"], [4, "ngIf"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent"], [1, "sme-read-only-template"], ["class", "sme-padding-right-xs", 4, "ngIf"], ["tabindex", "0", "role", "link", 1, "sme-link", "sme-focus-zone", "sme-action-link-template", 3, "click"], [1, "sme-padding-right-xs"], ["role", "link", 1, "sme-link", "sme-focus-zone", 3, "routerLink"], [1, "sme-screen-reader", 3, "id"], ["role", "link", "target", "_blank", 1, "sme-link", "sme-focus-zone", "sme-icon", "sme-icon-after", "sme-icon-openInNewWindow", 3, "href"], [3, "class", 4, "ngIf"], ["class", "sme-layout-inline-block sme-margin-right-xs ", "size", "16px", 3, "status", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", "sme-margin-right-xs", 3, "status"]], template: function PropertyGridComponent_Template(rf, ctx) { if (rf & 1) {
408
428
  i0.ɵɵelementStart(0, "sme-layout", 0, 1);
409
429
  i0.ɵɵelement(2, "sme-layout-definition", 2);
410
430
  i0.ɵɵtemplate(3, PropertyGridComponent_sme_layout_definition_3_Template, 1, 2, "sme-layout-definition", 3);
@@ -413,8 +433,8 @@ export class PropertyGridComponent extends CoreBaseComponent {
413
433
  i0.ɵɵelementEnd();
414
434
  i0.ɵɵtemplate(6, PropertyGridComponent_ng_template_6_Template, 2, 2, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
415
435
  i0.ɵɵtemplate(8, PropertyGridComponent_ng_template_8_Template, 5, 9, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
416
- i0.ɵɵtemplate(10, PropertyGridComponent_ng_template_10_Template, 5, 10, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
417
- i0.ɵɵtemplate(12, PropertyGridComponent_ng_template_12_Template, 5, 10, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
436
+ i0.ɵɵtemplate(10, PropertyGridComponent_ng_template_10_Template, 7, 11, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
437
+ i0.ɵɵtemplate(12, PropertyGridComponent_ng_template_12_Template, 7, 11, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
418
438
  i0.ɵɵtemplate(14, PropertyGridComponent_ng_template_14_Template, 2, 2, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
419
439
  } if (rf & 2) {
420
440
  i0.ɵɵproperty("padLastItem", true)("oneColumn", ctx.orientation === "vertical");
@@ -431,7 +451,7 @@ export class PropertyGridComponent extends CoreBaseComponent {
431
451
  type: Component,
432
452
  args: [{ selector: 'sme-property-grid', providers: [
433
453
  { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => PropertyGridComponent)) }
434
- ], template: "<sme-layout #layout [padLastItem]=\"true\" class=\"sme-position-inset-none sme-position-stretch-h\" [oneColumn]=\"orientation === 'vertical'\">\r\n <sme-layout-definition name=\"narrow\" [until]=\"layoutItemWidth\" [columns]=\"1\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"medium\" [until]=\"layoutItemWidth*2\" [columns]=\"2\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"wide\" [columns]=\"3\"></sme-layout-definition>\r\n <sme-layout-item *ngFor=\"let item of items; index as i\" [columnSpan]=\"item.columnSpan\"\r\n [maxWidth]=\"orientation === 'vertical' ? null : item.columnSpan * layoutItemWidth\">\r\n <div class=\"sme-property-grid-item\" tabindex=\"0\" aria-live=\"polite\" aria-atomic=\"true\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n <label class=\"sme-arrange-stack-h\">\r\n <span>{{ item.label }}</span>\r\n <span *ngIf=\"item.tooltip\" class=\"sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs\"\r\n [title]=\"item.tooltip\" [tooltipZone]=\"zone\" aria-hidden=\"true\" tabindex=\"0\"></span>\r\n <!-- in scan mode screen reader does not focus on the info icon properly to read the title -->\r\n <span class=\"sme-screen-reader\">{{ item.tooltip }}</span>\r\n </label>\r\n <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: i}\"></ng-container>\r\n </div>\r\n </sme-layout-item>\r\n</sme-layout>\r\n\r\n<!-- Read only -->\r\n<ng-template #readonlyTemplate let-item let-i=\"index\">\r\n <sme-loading-wheel *ngIf=\"item.loading && item.isAsync\" size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n <ng-container *ngIf=\"!item.loading || !item.isAsync\">\r\n <p class=\"sme-read-only-template\" [attr.aria-labelledby]=\"idBag.labelSpan + i\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"!item.link && !item.action\">{{ stringifyValue(item.value) }}</span>\r\n </p>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<!-- Action link (role button) -->\r\n<ng-template #actionLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a tabindex=\"0\" class=\"sme-link sme-focus-zone sme-action-link-template\" role=\"link\" (click)=\"item.action(item)\"\r\n [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Internal link -->\r\n<ng-template #internalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone\" role=\"link\" [routerLink]=\"item.link\" [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- External link -->\r\n<ng-template #externalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone sme-icon sme-icon-after sme-icon-openInNewWindow\" role=\"link\" [href]=\"item.link\" target=\"_blank\"\r\n [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Icon Template -->\r\n<ng-template #iconTemplate let-item let-i=\"index\">\r\n <span *ngIf=\"!!item.iconClass\" class=\"sme-margin-right-xs sme-icon {{item.iconClass}}\"></span>\r\n <sme-status-icon *ngIf=\"item.status !== undefined && item.status !== null && !item.iconClass\" class=\"sme-layout-inline-block sme-margin-right-xs \"\r\n [status]=\"item.status\" size=\"16px\"></sme-status-icon>\r\n</ng-template>\r\n" }]
454
+ ], template: "<sme-layout #layout [padLastItem]=\"true\" class=\"sme-position-inset-none sme-position-stretch-h\" [oneColumn]=\"orientation === 'vertical'\">\r\n <sme-layout-definition name=\"narrow\" [until]=\"layoutItemWidth\" [columns]=\"1\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"medium\" [until]=\"layoutItemWidth*2\" [columns]=\"2\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"wide\" [columns]=\"3\"></sme-layout-definition>\r\n <sme-layout-item *ngFor=\"let item of items; index as i\" [columnSpan]=\"item.columnSpan\"\r\n [maxWidth]=\"orientation === 'vertical' ? null : item.columnSpan * layoutItemWidth\">\r\n <div class=\"sme-property-grid-item\" tabindex=\"0\" aria-live=\"polite\" aria-atomic=\"true\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n <label class=\"sme-arrange-stack-h\">\r\n <span>{{ item.label }}</span>\r\n <span *ngIf=\"item.tooltip\" class=\"sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs\"\r\n [title]=\"item.tooltip\" [tooltipZone]=\"zone\" aria-hidden=\"true\" tabindex=\"0\"></span>\r\n <!-- in scan mode screen reader does not focus on the info icon properly to read the title -->\r\n <span class=\"sme-screen-reader\">{{ item.tooltip }}</span>\r\n </label>\r\n <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: i}\"></ng-container>\r\n </div>\r\n </sme-layout-item>\r\n</sme-layout>\r\n\r\n<!-- Read only -->\r\n<ng-template #readonlyTemplate let-item let-i=\"index\">\r\n <sme-loading-wheel *ngIf=\"item.loading && item.isAsync\" size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n <ng-container *ngIf=\"!item.loading || !item.isAsync\">\r\n <p class=\"sme-read-only-template\" [attr.aria-labelledby]=\"idBag.labelSpan + i\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"!item.link && !item.action\">{{ stringifyValue(item.value) }}</span>\r\n </p>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<!-- Action link (role button) -->\r\n<ng-template #actionLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a tabindex=\"0\" class=\"sme-link sme-focus-zone sme-action-link-template\" role=\"link\" (click)=\"item.action(item)\"\r\n [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Internal link -->\r\n<ng-template #internalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone\" role=\"link\" [routerLink]=\"item.link\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getInternalLinkDescription(item) }}</span>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- External link -->\r\n<ng-template #externalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone sme-icon sme-icon-after sme-icon-openInNewWindow\" role=\"link\" [href]=\"item.link\" target=\"_blank\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getExternalLinkDescription(item) }}</span>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Icon Template -->\r\n<ng-template #iconTemplate let-item let-i=\"index\">\r\n <span *ngIf=\"!!item.iconClass\" class=\"sme-margin-right-xs sme-icon {{item.iconClass}}\"></span>\r\n <sme-status-icon *ngIf=\"item.status !== undefined && item.status !== null && !item.iconClass\" class=\"sme-layout-inline-block sme-margin-right-xs \"\r\n [status]=\"item.status\" size=\"16px\"></sme-status-icon>\r\n</ng-template>\r\n" }]
435
455
  }], function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
436
456
  type: SkipSelf
437
457
  }, {
@@ -461,4 +481,4 @@ export class PropertyGridComponent extends CoreBaseComponent {
461
481
  }], windowBreakpointChanged: [{
462
482
  type: Output
463
483
  }] }); })();
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsQjlGLDRDQUEwSTs7O0lBQWxFLGtEQUEyQixjQUFBOzs7SUFDbkcsNENBQTRHOztJQUF0QywyQkFBYTs7O0lBTTdFLDJCQUNxRjs7OztJQUFuRix3Q0FBc0IscUJBQUE7OztJQUkxQix3QkFBc0c7Ozs7SUFWMUcsMkNBQ3FGLGtCQUFBLGdCQUFBLFdBQUE7SUFHekUsWUFBZ0I7SUFBQSxpQkFBTztJQUM3QiwyRkFDcUY7SUFFckYsZ0NBQWdDO0lBQUEsWUFBa0I7SUFBQSxpQkFBTyxFQUFBO0lBRTNELDJHQUFzRztJQUN4RyxpQkFBTSxFQUFBOzs7OztJQVhnRCxnREFB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LE1BQU07dUJBQUMsbUJBQW1CO3dCQXpDNUUsS0FBSztrQkFEWCxlQUFlO21CQUFDLHlCQUF5QjtZQUluQyxnQkFBZ0I7a0JBRHRCLFNBQVM7bUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBSXhDLGtCQUFrQjtrQkFEeEIsU0FBUzttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJMUMsb0JBQW9CO2tCQUQxQixTQUFTO21CQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUk1QyxvQkFBb0I7a0JBRDFCLFNBQVM7bUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBYzVDLFdBQVc7a0JBRGpCLEtBQUs7WUFPQyxhQUFhO2tCQURuQixNQUFNO1lBT0EsdUJBQXVCO2tCQUQ3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheW91dCwgU01FX0xBWU9VVF9QUk9WSURFUiB9IGZyb20gJy4uL2NvbW1vbi9sYXlvdXQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0eS1ncmlkLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgfSBmcm9tICcuL3Byb3BlcnR5LWdyaWQtcmVzcG9uc2l2ZS13aW5kb3ctbWFuYWdlcic7XHJcblxyXG4vKipcclxuICogVGhlIHBhbmUgb3JpZW50YXRpb24gb2YgdGhlIHNwbGl0IHZpZXcuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBQcm9wZXJ0eUdyaWRPcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XHJcblxyXG4vKipcclxuICpcclxuICogQHNtZURvYyB7QGxhYmVsIFByb3BlcnR5IEdyaWQgQGlkIHNtZS1wcm9wZXJ0eS1ncmlkLWNvbXBvbmVudH1cclxuICpcclxuICogQG92ZXJ2aWV3XHJcbiAqIEBmaWxlIHtAZmlsZXBhdGggLi9leGFtcGxlcy9vdmVydmlldy5tZH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBCYXNpYyBVc2FnZSBAaWQgYmFzaWMtdXNhZ2V9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYmFzaWMtdXNhZ2UuY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgVmVydGljYWwgT3JpZW50YXRpb24gQGlkIHZlcnRpY2FsLW9yaWVudGF0aW9ufVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3ZlcnRpY2FsLW9yaWVudGF0aW9uLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW0gd2l0aCBhIExpbmsgQGlkIGxpbmstaXRlbX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9saW5rLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSB3aXRoIGEgVG9vbHRpcCBAaWQgdG9vbHRpcC1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3Rvb2x0aXAtaXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIHdpdGggYSBBY3Rpb24gQGlkIGFjdGlvbi1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb24taXRlbS5jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSBTcGFubmluZyBNdWx0aXBsZSBDb2x1bW5zIEBpZCBtdWx0aS1jb2x1bW59XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktY29sdW1uLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbXMgd2l0aCBTdGF0dXMgYW5kIEljb25zIEBpZCBzdGF0dXMtYW5kLWljb25zfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3N0YXR1cy1pdGVtLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW1zIHdpdGggY29tcGxleCB2YWx1ZSB0eXBlcyBAaWQgY29tcGxleC12YWx1ZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9jb21wbGV4LXZhbHVlcy5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcHJvcGVydHktZ3JpZCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydHktZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IFNNRV9MQVlPVVRfUFJPVklERVIsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFByb3BlcnR5R3JpZENvbXBvbmVudCkgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlHcmlkQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBMYXlvdXQsIE9uQ2hhbmdlcyB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBiYXNpYyBjb2x1bW4gd2lkdGggZm9yIHRoZSBwcm9wZXJ0eSBncmlkIGl0ZW1zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbGF5b3V0SXRlbVdpZHRoID0gMzAwO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudClcclxuICAgIHB1YmxpYyBpdGVtczogUXVlcnlMaXN0PFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3JlYWRvbmx5VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHJlYWRvbmx5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2FjdGlvbkxpbmtUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgYWN0aW9uTGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdpbnRlcm5hbExpbmtUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgaW50ZXJuYWxMaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2V4dGVybmFsTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBleHRlcm5hbExpbmtUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ1Byb3BlcnR5R3JpZENvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgb3JpZW50YXRpb24gZm9yIHRoZSBwcm9wZXJ0eSBncmlkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgb3JpZW50YXRpb246IFByb3BlcnR5R3JpZE9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIExheW91dCBpbnRlcmZhY2VcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgbGF5b3V0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIExheW91dCBpbnRlcmZhY2VcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgd2luZG93QnJlYWtwb2ludENoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwcml2YXRlIHByb3BlcnR5R3JpZFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyID0gbmV3IFByb3BlcnR5R3JpZFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBASW5qZWN0KFNNRV9MQVlPVVRfUFJPVklERVIpIGxheW91dDogTGF5b3V0KSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIC8vIG9sZCBzdHlsZSBzdXBwb3J0ZWQgc21lLXByb3BlcnR5LWdyaWQtYXJyYW5nZS12ZXJ0aWNhbCBjbGFzcy4gZGVmYXVsdCB0byB2ZXJ0aWNhbCBvcmllbnRhdGlvbiBpZiB0aGlzIGNsYXNzIGlzIGFwcGxpZWQuXHJcbiAgICAgICAgY29uc3QgaGFzVmVydGljYWxDbGFzcyA9ICg8SFRNTEVsZW1lbnQ+dGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50KS5jbGFzc0xpc3QuY29udGFpbnMoJ3NtZS1wcm9wZXJ0eS1ncmlkLWFycmFuZ2UtdmVydGljYWwnKTtcclxuICAgICAgICB0aGlzLm9yaWVudGF0aW9uID0gaGFzVmVydGljYWxDbGFzcyA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XHJcblxyXG4gICAgICAgIC8vIG9uIHBhcmVudCBsYXlvdXQgY2hhbmdlcywgcmUtZW1pdCB0aGUgbGF5b3V0IGNoYW5nZSB0byBvdXIgZXZlbnRcclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgbGF5b3V0LmxheW91dENoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5R3JpZFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLm9uV2luZG93U2l6ZUNoYW5nZWQodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdHJpbmdpZnlWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgaWYgKE1zZnRTbWUuaXNOdWxsT3JXaGl0ZVNwYWNlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJy0nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IHRoaXMuc3RyaW5naWZ5VmFsdWUodikpLmpvaW4oJyxcXG4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKE1zZnRTbWUuaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUZW1wbGF0ZShpdGVtOiBQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGlvbkxpbmtUZW1wbGF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0ubGluaykge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5pc0V4dGVybmFsTGluaykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZXJuYWxMaW5rVGVtcGxhdGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbExpbmtUZW1wbGF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5yZWFkb25seVRlbXBsYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMub3JpZW50YXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBoYW5kbGVzIHRoZSB1bmRlZmluZWQgdmFsdWUgd29uJ3QgYmUgdXBkYXRlZCBzaXR1YXRpb24gZm9yIGFzeW5jIHByb3BlcnR5IGl0ZW0uXHJcbiAgICAgKiBBbmd1bGFyIGlzc3VlIHRoYXQgdGhlIHByb3BlcnR5IGl0ZW0gdmFsdWUgaW5pdGlhbGl6ZWQgd2l0aCB1bmRlZmluZWQsIGlmIGFmdGVyIGFzeW5jIHRpbWUsIHRoZSB2YWx1ZSBiZWluZyBzZXQgaXMgc3RpbGwgdW5kZWZpbmVkLFxyXG4gICAgICogQW5ndWxhciB3aWxsIG5vdCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhlIHZhbHVlIG9uIGNoYW5nZWQgZXZlbnQuIFRodXMgd2UgaGF2ZSB0byBtYW51YWxseSBjYWxsIHRvIHJlZnJlc2ggaXQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0aGF0IG5lZWRzIHRvIGhhcmQgcmVmcmVzaC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhcmRSZWZyZXNoSXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XHJcbiAgICAgICAgaWYgKCFpdGVtc1tpbmRleF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2luZGV4XTtcclxuICAgICAgICBpZiAoaXRlbS5pc0FzeW5jICYmIGl0ZW0udmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpdGVtLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIHRoZSBpZEJhZyB1c2VkIGJ5IHRoaXMgY29tcG9uZW50IHRvIHN0b3JlIHVuaXF1ZSBlbGVtZW50IGlkcy5cclxuICAgICAqIGlkIHZhbHVlcyB3aWxsIGJlIGFzc2lnbmVkIGJlIHRoZSBAc2VlIEJhc2VDb21wb25lbnQgc3VwZXIgY2xhc3MuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjcmVhdGVJZEJhZygpOiBNc2Z0U21lLlN0cmluZ01hcDxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXRhaWxzU3BhbjogJycsXHJcbiAgICAgICAgICAgIGxhYmVsU3BhbjogJycsXHJcbiAgICAgICAgICAgIHZhbHVlU3BhbjogJydcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaW5pdGlhbCBob3N0IGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0byB0aGlzIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldEluaXRpYWxIb3N0Q2xhc3NlcygpIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkuY29uY2F0KFtcclxuICAgICAgICAgICAgJ3NtZS1wcm9wZXJ0eS1ncmlkJyxcclxuICAgICAgICAgICAgJ3NtZS1sYXlvdXQtcmVsYXRpdmUnLFxyXG4gICAgICAgICAgICAnc21lLWZvY3VzLXpvbmUnXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHNtZS1sYXlvdXQgI2xheW91dCBbcGFkTGFzdEl0ZW1dPVwidHJ1ZVwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWluc2V0LW5vbmUgc21lLXBvc2l0aW9uLXN0cmV0Y2gtaFwiIFtvbmVDb2x1bW5dPVwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcIj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uIG5hbWU9XCJuYXJyb3dcIiBbdW50aWxdPVwibGF5b3V0SXRlbVdpZHRoXCIgW2NvbHVtbnNdPVwiMVwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gKm5nSWY9XCJvcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiIG5hbWU9XCJtZWRpdW1cIiBbdW50aWxdPVwibGF5b3V0SXRlbVdpZHRoKjJcIiBbY29sdW1uc109XCIyXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiAqbmdJZj1cIm9yaWVudGF0aW9uICE9PSAndmVydGljYWwnXCIgbmFtZT1cIndpZGVcIiBbY29sdW1uc109XCIzXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgPHNtZS1sYXlvdXQtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgaW5kZXggYXMgaVwiIFtjb2x1bW5TcGFuXT1cIml0ZW0uY29sdW1uU3BhblwiXHJcbiAgICBbbWF4V2lkdGhdPVwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgPyBudWxsIDogaXRlbS5jb2x1bW5TcGFuICogbGF5b3V0SXRlbVdpZHRoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21lLXByb3BlcnR5LWdyaWQtaXRlbVwiIHRhYmluZGV4PVwiMFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiICN6b25lPVwic21lVG9vbHRpcFpvbmVcIiBzbWVUb29sdGlwWm9uZT5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2staFwiPlxyXG4gICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnRvb2x0aXBcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWljb24gc21lLWljb24taW5mbyBzbWUtaW5mby1idWJibGUgc21lLW1hcmdpbi1sZWZ0LXhzXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRvb2x0aXBcIiBbdG9vbHRpcFpvbmVdPVwiem9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRhYmluZGV4PVwiMFwiPjwvc3Bhbj5cclxuICAgICAgICA8IS0tIGluIHNjYW4gbW9kZSBzY3JlZW4gcmVhZGVyIGRvZXMgbm90IGZvY3VzIG9uIHRoZSBpbmZvIGljb24gcHJvcGVybHkgdG8gcmVhZCB0aGUgdGl0bGUgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtc2NyZWVuLXJlYWRlclwiPnt7IGl0ZW0udG9vbHRpcCB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGl0ZW0pO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc21lLWxheW91dC1pdGVtPlxyXG48L3NtZS1sYXlvdXQ+XHJcblxyXG48IS0tIFJlYWQgb25seSAtLT5cclxuPG5nLXRlbXBsYXRlICNyZWFkb25seVRlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8c21lLWxvYWRpbmctd2hlZWwgKm5nSWY9XCJpdGVtLmxvYWRpbmcgJiYgaXRlbS5pc0FzeW5jXCIgc2l6ZT1cImV4dHJhLXNtYWxsXCIgW2lubGluZV09XCJ0cnVlXCIgW2lzQmFja2dyb3VuZFRyYW5zcGFyZW50XT1cInRydWVcIj48L3NtZS1sb2FkaW5nLXdoZWVsPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5sb2FkaW5nIHx8ICFpdGVtLmlzQXN5bmNcIj5cclxuICAgIDxwIGNsYXNzPVwic21lLXJlYWQtb25seS10ZW1wbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZEJhZy5sYWJlbFNwYW4gKyBpXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0ubGluayAmJiAhaXRlbS5hY3Rpb25cIj57eyBzdHJpbmdpZnlWYWx1ZShpdGVtLnZhbHVlKSB9fTwvc3Bhbj5cclxuICAgIDwvcD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQWN0aW9uIGxpbmsgKHJvbGUgYnV0dG9uKSAtLT5cclxuPG5nLXRlbXBsYXRlICNhY3Rpb25MaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZSBzbWUtYWN0aW9uLWxpbmstdGVtcGxhdGVcIiByb2xlPVwibGlua1wiIChjbGljayk9XCJpdGVtLmFjdGlvbihpdGVtKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIoaWRCYWcubGFiZWxTcGFuICsgaSkgKyAnICcgKyAoaWRCYWcudmFsdWVTcGFuICsgaSlcIlxyXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkQmFnLmRldGFpbHNTcGFuICsgaVwiPnt7IGl0ZW0udmFsdWUgfX08L2E+XHJcbiAgPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBJbnRlcm5hbCBsaW5rIC0tPlxyXG48bmctdGVtcGxhdGUgI2ludGVybmFsTGlua1RlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8cD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpdGVtLnByZWZpeFN0cmluZ1wiIGNsYXNzPVwic21lLXBhZGRpbmctcmlnaHQteHNcIj57eyBpdGVtLnByZWZpeFN0cmluZyB9fTwvc3Bhbj5cclxuICAgIDxhIGNsYXNzPVwic21lLWxpbmsgc21lLWZvY3VzLXpvbmVcIiByb2xlPVwibGlua1wiIFtyb3V0ZXJMaW5rXT1cIml0ZW0ubGlua1wiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIoaWRCYWcubGFiZWxTcGFuICsgaSkgKyAnICcgKyAoaWRCYWcudmFsdWVTcGFuICsgaSlcIlxyXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkQmFnLmRldGFpbHNTcGFuICsgaVwiPnt7IGl0ZW0udmFsdWUgfX08L2E+XHJcbiAgPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBFeHRlcm5hbCBsaW5rIC0tPlxyXG48bmctdGVtcGxhdGUgI2V4dGVybmFsTGlua1RlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8cD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpdGVtLnByZWZpeFN0cmluZ1wiIGNsYXNzPVwic21lLXBhZGRpbmctcmlnaHQteHNcIj57eyBpdGVtLnByZWZpeFN0cmluZyB9fTwvc3Bhbj5cclxuICAgIDxhIGNsYXNzPVwic21lLWxpbmsgc21lLWZvY3VzLXpvbmUgc21lLWljb24gc21lLWljb24tYWZ0ZXIgc21lLWljb24tb3BlbkluTmV3V2luZG93XCIgcm9sZT1cImxpbmtcIiBbaHJlZl09XCJpdGVtLmxpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiKGlkQmFnLmxhYmVsU3BhbiArIGkpICsgJyAnICsgKGlkQmFnLnZhbHVlU3BhbiArIGkpXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBpdGVtLnZhbHVlIH19PC9hPlxyXG4gIDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gSWNvbiBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNpY29uVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxzcGFuICpuZ0lmPVwiISFpdGVtLmljb25DbGFzc1wiIGNsYXNzPVwic21lLW1hcmdpbi1yaWdodC14cyBzbWUtaWNvbiB7e2l0ZW0uaWNvbkNsYXNzfX1cIj48L3NwYW4+XHJcbiAgPHNtZS1zdGF0dXMtaWNvbiAqbmdJZj1cIml0ZW0uc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgaXRlbS5zdGF0dXMgIT09IG51bGwgJiYgIWl0ZW0uaWNvbkNsYXNzXCIgY2xhc3M9XCJzbWUtbGF5b3V0LWlubGluZS1ibG9jayBzbWUtbWFyZ2luLXJpZ2h0LXhzIFwiXHJcbiAgICBbc3RhdHVzXT1cIml0ZW0uc3RhdHVzXCIgc2l6ZT1cIjE2cHhcIj48L3NtZS1zdGF0dXMtaWNvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
484
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsQjlGLDRDQUEwSTs7O0lBQWxFLGtEQUEyQixjQUFBOzs7SUFDbkcsNENBQTRHOztJQUF0QywyQkFBYTs7O0lBTTdFLDJCQUNxRjs7OztJQUFuRix3Q0FBc0IscUJBQUE7OztJQUkxQix3QkFBc0c7Ozs7SUFWMUcsMkNBQ3FGLGtCQUFBLGdCQUFBLFdBQUE7SUFHekUsWUFBZ0I7SUFBQSxpQkFBTztJQUM3QiwyRkFDcUY7SUFFckYsZ0NBQWdDO0lBQUEsWUFBa0I7SUFBQSxpQkFBTyxFQUFBO0lBRTNELDJHQUFzRztJQUN4RyxpQkFBTSxFQUFBOzs7OztJQVhnRCxnREFBOEIscUdBQUE7SUFJMUUsZUFBZ0I7SUFBaEIsb0NBQWdCO0lBQ2YsZUFBa0I7SUFBbEIsdUNBQWtCO0lBR08sZUFBa0I7SUFBbEIsc0NBQWtCO0lBRXJDLGVBQW9DO0lBQXBDLCtEQUFvQyx3RUFBQTs7O0lBT3ZELHdDQUFnSjs7SUFBckUsNkJBQWUsaUNBQUE7OztJQUd0Rix3QkFBaUc7OztJQUNqRyw0QkFBeUM7SUFBQSxZQUFnQztJQUFBLGlCQUFPOzs7O0lBQXZDLGVBQWdDO0lBQWhDLDREQUFnQzs7O0lBSDdFLDZCQUFxRDtJQUNuRCw2QkFBK0g7SUFDN0gsc0hBQWlHO0lBQ2pHLHNHQUFnRjtJQUNsRixpQkFBSTtJQUNOLDBCQUFlOzs7Ozs7O0lBSnFCLGVBQTRDO0lBQTVDLGtFQUE0Qyx1REFBQTtJQUM3RCxlQUErQjtJQUEvQix1Q0FBK0Isd0VBQUE7SUFDdkMsZUFBZ0M7SUFBaEMseURBQWdDOzs7SUFKM0MsaUhBQWdKO0lBQ2hKLHVHQUtlOzs7SUFOSywyREFBa0M7SUFDdkMsZUFBb0M7SUFBcEMsNkRBQW9DOzs7SUFXakQsd0JBQWlHOzs7SUFDakcsZ0NBQTZEO0lBQUEsWUFBdUI7SUFBQSxpQkFBTzs7O0lBQTlCLGVBQXVCO0lBQXZCLDJDQUF1Qjs7OztJQUZ0Rix5QkFBRztJQUNELHVHQUFpRztJQUNqRyx1RkFBMkY7SUFDM0YsNkJBRWtEO0lBRm1DLCtMQUFTLGVBQUEseUJBQWlCLENBQUEsSUFBQztJQUU5RCxZQUFnQjtJQUFBLGlCQUFJLEVBQUE7Ozs7OztJQUp2RCxlQUErQjtJQUEvQix1Q0FBK0Isd0VBQUE7SUFDdkMsZUFBdUI7SUFBdkIsNENBQXVCO0lBRTVCLGVBQTRFO0lBQTVFLDBHQUE0RSxzREFBQTtJQUM1QixlQUFnQjtJQUFoQixvQ0FBZ0I7OztJQU9sRSx3QkFBaUc7OztJQUNqRyxnQ0FBNkQ7SUFBQSxZQUF1QjtJQUFBLGlCQUFPOzs7SUFBOUIsZUFBdUI7SUFBdkIsMkNBQXVCOzs7SUFGdEYseUJBQUc7SUFDRCx3R0FBaUc7SUFDakcsd0ZBQTJGO0lBQzNGLDZCQUNrRDtJQUFBLFlBQWdCO0lBQUEsaUJBQUk7SUFDdEUsZ0NBQTZEO0lBQUEsWUFBc0M7SUFBQSxpQkFBTyxFQUFBOzs7Ozs7SUFKM0YsZUFBK0I7SUFBL0IsdUNBQStCLHdFQUFBO0lBQ3ZDLGVBQXVCO0lBQXZCLDRDQUF1QjtJQUNpQixlQUF3QjtJQUF4QiwwQ0FBd0I7SUFDckUsb0VBQStDO0lBQUMsZUFBZ0I7SUFBaEIsb0NBQWdCO0lBQ2xDLGVBQTRCO0lBQTVCLHFEQUE0QjtJQUFDLGVBQXNDO0lBQXRDLGlFQUFzQzs7O0lBT25HLHdCQUFpRzs7O0lBQ2pHLGdDQUE2RDtJQUFBLFlBQXVCO0lBQUEsaUJBQU87OztJQUE5QixlQUF1QjtJQUF2QiwyQ0FBdUI7OztJQUZ0Rix5QkFBRztJQUNELHdHQUFpRztJQUNqRyx3RkFBMkY7SUFDM0YsNkJBQ2tEO0lBQUEsWUFBZ0I7SUFBQSxpQkFBSTtJQUN0RSxnQ0FBNkQ7SUFBQSxZQUFzQztJQUFBLGlCQUFPLEVBQUE7Ozs7OztJQUozRixlQUErQjtJQUEvQix1Q0FBK0Isd0VBQUE7SUFDdkMsZUFBdUI7SUFBdkIsNENBQXVCO0lBQ2tFLGVBQWtCO0lBQWxCLHNEQUFrQjtJQUNoSCxxRUFBK0M7SUFBQyxlQUFnQjtJQUFoQixvQ0FBZ0I7SUFDbEMsZUFBNEI7SUFBNUIsc0RBQTRCO0lBQUMsZUFBc0M7SUFBdEMsa0VBQXNDOzs7SUFNckcsdUJBQThGOzs7SUFBL0Qsa0ZBQXVEOzs7SUFDdEYsc0NBQ3VEOzs7SUFBckQsd0NBQXNCOzs7SUFGeEIsd0ZBQThGO0lBQzlGLDhHQUN1RDs7O0lBRmhELDJDQUFzQjtJQUNYLGVBQTBFO0lBQTFFLHVHQUEwRTs7QUR2QzlGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDRztBQVFILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxpQkFBaUI7SUFnRHhELFlBQVksUUFBa0IsRUFBdUQsTUFBYztRQUMvRixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFoRHBCOztXQUVHO1FBQ0ksb0JBQWUsR0FBRyxHQUFHLENBQUM7UUF3QjdCOztXQUVHO1FBRUksZ0JBQVcsR0FBNEIsWUFBWSxDQUFDO1FBRTNEOztXQUVHO1FBRUksa0JBQWEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVwRTs7V0FFRztRQUVJLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXRFLHdDQUFtQyxHQUFHLElBQUksbUNBQW1DLEVBQUUsQ0FBQztRQUlwRiwwSEFBMEg7UUFDMUgsTUFBTSxnQkFBZ0IsR0FBaUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFjLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ2hJLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBRWhFLG1FQUFtRTtRQUNuRSxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSSxDQUFDLG1DQUFtQyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2pHLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQ0wsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQTVDRDs7T0FFRztJQUNILElBQWMsYUFBYTtRQUN2QixPQUFPLHVCQUF1QixDQUFDO0lBQ25DLENBQUM7SUF5Q00sY0FBYyxDQUFDLEtBQVU7UUFDNUIsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLElBQUk7Z0JBQ0EsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDekM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDWixPQUFPLEtBQUssQ0FBQzthQUNoQjtTQUNKO1FBQ0QsT0FBTyxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBK0I7UUFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7U0FDbEM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO2FBQ3BDO2lCQUFNO2dCQUNILE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO2FBQ3BDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZSxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDYixPQUFPO1NBQ1Y7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUVNLDBCQUEwQixDQUFDLElBQStCO1FBQzdELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVNLDBCQUEwQixDQUFDLElBQStCO1FBQzdELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFdBQVc7UUFDakIsT0FBTztZQUNILFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEVBQUU7WUFDYixTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ08scUJBQXFCO1FBQzNCLE9BQU8sS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ3hDLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsZ0JBQWdCO1NBQ25CLENBQUMsQ0FBQztJQUNQLENBQUM7OzZHQTdKUSxxQkFBcUIsMERBZ0RrQyxtQkFBbUI7dUdBaEQxRSxxQkFBcUI7b0NBTWIseUJBQXlCOzs7Ozs7Ozs7Ozs7Ozs7bUxBVi9CO1lBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBQyxFQUFFO1NBQ3pGO1FDakVMLHdDQUF5STtRQUN2SSwyQ0FBcUc7UUFDckcsMEdBQTBJO1FBQzFJLDBHQUE0RztRQUM1RyxnR0FZa0I7UUFDcEIsaUJBQWE7UUFHYix1SEFRYztRQUdkLHVIQVFjO1FBR2QsMEhBUWM7UUFHZCwwSEFRYztRQUdkLDBIQUljOztRQXBFTSxrQ0FBb0IsNkNBQUE7UUFDRCxlQUF5QjtRQUF6QiwyQ0FBeUIsY0FBQTtRQUN0QyxlQUFnQztRQUFoQyxxREFBZ0M7UUFDaEMsZUFBZ0M7UUFBaEMscURBQWdDO1FBQ3RCLGVBQVU7UUFBVixtQ0FBVTs7dUZEK0RqQyxxQkFBcUI7Y0FQakMsU0FBUzsyQkFDSSxtQkFBbUIsYUFFbEI7b0JBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsc0JBQXNCLEVBQUMsRUFBRTtpQkFDekY7O3NCQWtEZ0MsUUFBUTs7c0JBQUksUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxtQkFBbUI7d0JBekM1RSxLQUFLO2tCQURYLGVBQWU7bUJBQUMseUJBQXlCO1lBSW5DLGdCQUFnQjtrQkFEdEIsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJeEMsa0JBQWtCO2tCQUR4QixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUkxQyxvQkFBb0I7a0JBRDFCLFNBQVM7bUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBSTVDLG9CQUFvQjtrQkFEMUIsU0FBUzttQkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFjNUMsV0FBVztrQkFEakIsS0FBSztZQU9DLGFBQWE7a0JBRG5CLE1BQU07WUFPQSx1QkFBdUI7a0JBRDdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LWdyaWQtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUdyaWRSZXNwb25zaXZlV2luZG93TWFuYWdlciB9IGZyb20gJy4vcHJvcGVydHktZ3JpZC1yZXNwb25zaXZlLXdpbmRvdy1tYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgcGFuZSBvcmllbnRhdGlvbiBvZiB0aGUgc3BsaXQgdmlldy5cclxuICovXHJcbmV4cG9ydCB0eXBlIFByb3BlcnR5R3JpZE9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUHJvcGVydHkgR3JpZCBAaWQgc21lLXByb3BlcnR5LWdyaWQtY29tcG9uZW50fVxyXG4gKlxyXG4gKiBAb3ZlcnZpZXdcclxuICogQGZpbGUge0BmaWxlcGF0aCAuL2V4YW1wbGVzL292ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFVzYWdlIEBpZCBiYXNpYy11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9iYXNpYy11c2FnZS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBWZXJ0aWNhbCBPcmllbnRhdGlvbiBAaWQgdmVydGljYWwtb3JpZW50YXRpb259XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdmVydGljYWwtb3JpZW50YXRpb24uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSB3aXRoIGEgTGluayBAaWQgbGluay1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2xpbmstaXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIHdpdGggYSBUb29sdGlwIEBpZCB0b29sdGlwLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdG9vbHRpcC1pdGVtLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW0gd2l0aCBhIEFjdGlvbiBAaWQgYWN0aW9uLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbi1pdGVtLmNvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb24taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIFNwYW5uaW5nIE11bHRpcGxlIENvbHVtbnMgQGlkIG11bHRpLWNvbHVtbn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1jb2x1bW4taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtcyB3aXRoIFN0YXR1cyBhbmQgSWNvbnMgQGlkIHN0YXR1cy1hbmQtaWNvbnN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc3RhdHVzLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbXMgd2l0aCBjb21wbGV4IHZhbHVlIHR5cGVzIEBpZCBjb21wbGV4LXZhbHVlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2NvbXBsZXgtdmFsdWVzLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1wcm9wZXJ0eS1ncmlkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJvcGVydHlHcmlkQ29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdyaWRDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIExheW91dCwgT25DaGFuZ2VzIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGJhc2ljIGNvbHVtbiB3aWR0aCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsYXlvdXRJdGVtV2lkdGggPSAzMDA7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50KVxyXG4gICAgcHVibGljIGl0ZW1zOiBRdWVyeUxpc3Q8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncmVhZG9ubHlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgcmVhZG9ubHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBhY3Rpb25MaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ludGVybmFsTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBpbnRlcm5hbExpbmtUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZXh0ZXJuYWxMaW5rVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGV4dGVybmFsTGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUHJvcGVydHlHcmlkQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBmb3IgdGhlIHByb3BlcnR5IGdyaWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogUHJvcGVydHlHcmlkT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBsYXlvdXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB3aW5kb3dCcmVha3BvaW50Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgcHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgPSBuZXcgUHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgLy8gb2xkIHN0eWxlIHN1cHBvcnRlZCBzbWUtcHJvcGVydHktZ3JpZC1hcnJhbmdlLXZlcnRpY2FsIGNsYXNzLiBkZWZhdWx0IHRvIHZlcnRpY2FsIG9yaWVudGF0aW9uIGlmIHRoaXMgY2xhc3MgaXMgYXBwbGllZC5cclxuICAgICAgICBjb25zdCBoYXNWZXJ0aWNhbENsYXNzID0gKDxIVE1MRWxlbWVudD50aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygnc21lLXByb3BlcnR5LWdyaWQtYXJyYW5nZS12ZXJ0aWNhbCcpO1xyXG4gICAgICAgIHRoaXMub3JpZW50YXRpb24gPSBoYXNWZXJ0aWNhbENsYXNzID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcclxuXHJcbiAgICAgICAgLy8gb24gcGFyZW50IGxheW91dCBjaGFuZ2VzLCByZS1lbWl0IHRoZSBsYXlvdXQgY2hhbmdlIHRvIG91ciBldmVudFxyXG4gICAgICAgIGlmIChsYXlvdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICBsYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0cmluZ2lmeVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPcldoaXRlU3BhY2UodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnLSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHYgPT4gdGhpcy5zdHJpbmdpZnlWYWx1ZSh2KSkuam9pbignLFxcbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTXNmdFNtZS5pc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRlbXBsYXRlKGl0ZW06IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQpIHtcclxuICAgICAgICBpZiAoaXRlbS5hY3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uTGlua1RlbXBsYXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5saW5rKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRXh0ZXJuYWxMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbExpbmtUZW1wbGF0ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVybmFsTGlua1RlbXBsYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRvbmx5VGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcy5vcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGhhbmRsZXMgdGhlIHVuZGVmaW5lZCB2YWx1ZSB3b24ndCBiZSB1cGRhdGVkIHNpdHVhdGlvbiBmb3IgYXN5bmMgcHJvcGVydHkgaXRlbS5cclxuICAgICAqIEFuZ3VsYXIgaXNzdWUgdGhhdCB0aGUgcHJvcGVydHkgaXRlbSB2YWx1ZSBpbml0aWFsaXplZCB3aXRoIHVuZGVmaW5lZCwgaWYgYWZ0ZXIgYXN5bmMgdGltZSwgdGhlIHZhbHVlIGJlaW5nIHNldCBpcyBzdGlsbCB1bmRlZmluZWQsXHJcbiAgICAgKiBBbmd1bGFyIHdpbGwgbm90IGJlIGFibGUgdG8gdHJpZ2dlciB0aGUgdmFsdWUgb24gY2hhbmdlZCBldmVudC4gVGh1cyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNhbGwgdG8gcmVmcmVzaCBpdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRoYXQgbmVlZHMgdG8gaGFyZCByZWZyZXNoLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFyZFJlZnJlc2hJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBpZiAoIWl0ZW1zW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xyXG4gICAgICAgIGlmIChpdGVtLmlzQXN5bmMgJiYgaXRlbS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SW50ZXJuYWxMaW5rRGVzY3JpcHRpb24oaXRlbTogUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuUHJvcGVydHlHcmlkLkludGVybmFsTGluay5sYWJlbC5mb3JtYXQoaXRlbS5saW5rKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0RXh0ZXJuYWxMaW5rRGVzY3JpcHRpb24oaXRlbTogUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuUHJvcGVydHlHcmlkLkV4dGVybmFsTGluay5sYWJlbC5mb3JtYXQoaXRlbS5saW5rKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYmUgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRldGFpbHNTcGFuOiAnJyxcclxuICAgICAgICAgICAgbGFiZWxTcGFuOiAnJyxcclxuICAgICAgICAgICAgdmFsdWVTcGFuOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLXByb3BlcnR5LWdyaWQnLFxyXG4gICAgICAgICAgICAnc21lLWxheW91dC1yZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICdzbWUtZm9jdXMtem9uZSdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWxheW91dCAjbGF5b3V0IFtwYWRMYXN0SXRlbV09XCJ0cnVlXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCIgW29uZUNvbHVtbl09XCJvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiPlxyXG4gIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gbmFtZT1cIm5hcnJvd1wiIFt1bnRpbF09XCJsYXlvdXRJdGVtV2lkdGhcIiBbY29sdW1uc109XCIxXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiAqbmdJZj1cIm9yaWVudGF0aW9uICE9PSAndmVydGljYWwnXCIgbmFtZT1cIm1lZGl1bVwiIFt1bnRpbF09XCJsYXlvdXRJdGVtV2lkdGgqMlwiIFtjb2x1bW5zXT1cIjJcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uICpuZ0lmPVwib3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCdcIiBuYW1lPVwid2lkZVwiIFtjb2x1bW5zXT1cIjNcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICA8c21lLWxheW91dC1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBpbmRleCBhcyBpXCIgW2NvbHVtblNwYW5dPVwiaXRlbS5jb2x1bW5TcGFuXCJcclxuICAgIFttYXhXaWR0aF09XCJvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IG51bGwgOiBpdGVtLmNvbHVtblNwYW4gKiBsYXlvdXRJdGVtV2lkdGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtcHJvcGVydHktZ3JpZC1pdGVtXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1saXZlPVwicG9saXRlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgI3pvbmU9XCJzbWVUb29sdGlwWm9uZVwiIHNtZVRvb2x0aXBab25lPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCI+XHJcbiAgICAgICAgPHNwYW4+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udG9vbHRpcFwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtaWNvbiBzbWUtaWNvbi1pbmZvIHNtZS1pbmZvLWJ1YmJsZSBzbWUtbWFyZ2luLWxlZnQteHNcIlxyXG4gICAgICAgICAgW3RpdGxlXT1cIml0ZW0udG9vbHRpcFwiIFt0b29sdGlwWm9uZV09XCJ6b25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGFiaW5kZXg9XCIwXCI+PC9zcGFuPlxyXG4gICAgICAgIDwhLS0gaW4gc2NhbiBtb2RlIHNjcmVlbiByZWFkZXIgZG9lcyBub3QgZm9jdXMgb24gdGhlIGluZm8gaWNvbiBwcm9wZXJseSB0byByZWFkIHRoZSB0aXRsZSAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3sgaXRlbS50b29sdGlwIH19PC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0VGVtcGxhdGUoaXRlbSk7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zbWUtbGF5b3V0LWl0ZW0+XHJcbjwvc21lLWxheW91dD5cclxuXHJcbjwhLS0gUmVhZCBvbmx5IC0tPlxyXG48bmctdGVtcGxhdGUgI3JlYWRvbmx5VGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxzbWUtbG9hZGluZy13aGVlbCAqbmdJZj1cIml0ZW0ubG9hZGluZyAmJiBpdGVtLmlzQXN5bmNcIiBzaXplPVwiZXh0cmEtc21hbGxcIiBbaW5saW5lXT1cInRydWVcIiBbaXNCYWNrZ3JvdW5kVHJhbnNwYXJlbnRdPVwidHJ1ZVwiPjwvc21lLWxvYWRpbmctd2hlZWw+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmxvYWRpbmcgfHwgIWl0ZW0uaXNBc3luY1wiPlxyXG4gICAgPHAgY2xhc3M9XCJzbWUtcmVhZC1vbmx5LXRlbXBsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkQmFnLmxhYmVsU3BhbiArIGlcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkQmFnLmRldGFpbHNTcGFuICsgaVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5saW5rICYmICFpdGVtLmFjdGlvblwiPnt7IHN0cmluZ2lmeVZhbHVlKGl0ZW0udmFsdWUpIH19PC9zcGFuPlxyXG4gICAgPC9wPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBY3Rpb24gbGluayAocm9sZSBidXR0b24pIC0tPlxyXG48bmctdGVtcGxhdGUgI2FjdGlvbkxpbmtUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5wcmVmaXhTdHJpbmdcIiBjbGFzcz1cInNtZS1wYWRkaW5nLXJpZ2h0LXhzXCI+e3sgaXRlbS5wcmVmaXhTdHJpbmcgfX08L3NwYW4+XHJcbiAgICA8YSB0YWJpbmRleD1cIjBcIiBjbGFzcz1cInNtZS1saW5rIHNtZS1mb2N1cy16b25lIHNtZS1hY3Rpb24tbGluay10ZW1wbGF0ZVwiIHJvbGU9XCJsaW5rXCIgKGNsaWNrKT1cIml0ZW0uYWN0aW9uKGl0ZW0pXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIihpZEJhZy5sYWJlbFNwYW4gKyBpKSArICcgJyArIChpZEJhZy52YWx1ZVNwYW4gKyBpKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgaXRlbS52YWx1ZSB9fTwvYT5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEludGVybmFsIGxpbmsgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW50ZXJuYWxMaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZVwiIHJvbGU9XCJsaW5rXCIgW3JvdXRlckxpbmtdPVwiaXRlbS5saW5rXCJcclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBpdGVtLnZhbHVlIH19PC9hPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzbWUtc2NyZWVuLXJlYWRlclwiIFtpZF09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBnZXRJbnRlcm5hbExpbmtEZXNjcmlwdGlvbihpdGVtKSB9fTwvc3Bhbj5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEV4dGVybmFsIGxpbmsgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZXh0ZXJuYWxMaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZSBzbWUtaWNvbiBzbWUtaWNvbi1hZnRlciBzbWUtaWNvbi1vcGVuSW5OZXdXaW5kb3dcIiByb2xlPVwibGlua1wiIFtocmVmXT1cIml0ZW0ubGlua1wiIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgaXRlbS52YWx1ZSB9fTwvYT5cclxuICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIiBbaWRdPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgZ2V0RXh0ZXJuYWxMaW5rRGVzY3JpcHRpb24oaXRlbSkgfX08L3NwYW4+XHJcbiAgPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBJY29uIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI2ljb25UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHNwYW4gKm5nSWY9XCIhIWl0ZW0uaWNvbkNsYXNzXCIgY2xhc3M9XCJzbWUtbWFyZ2luLXJpZ2h0LXhzIHNtZS1pY29uIHt7aXRlbS5pY29uQ2xhc3N9fVwiPjwvc3Bhbj5cclxuICA8c21lLXN0YXR1cy1pY29uICpuZ0lmPVwiaXRlbS5zdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnN0YXR1cyAhPT0gbnVsbCAmJiAhaXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cInNtZS1sYXlvdXQtaW5saW5lLWJsb2NrIHNtZS1tYXJnaW4tcmlnaHQteHMgXCJcclxuICAgIFtzdGF0dXNdPVwiaXRlbS5zdGF0dXNcIiBzaXplPVwiMTZweFwiPjwvc21lLXN0YXR1cy1pY29uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=