@simpleangularcontrols/sac-common 16.0.0-rc.21 → 16.0.0-rc.22

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 (115) hide show
  1. package/controls/grid/gridcolumnbase.d.ts +5 -1
  2. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  3. package/controls/treeview/treeview.d.ts +2 -2
  4. package/controls/treeview/treeview.d.ts.map +1 -1
  5. package/esm2022/common/basedatetimecontrol.mjs +1 -1
  6. package/esm2022/common/baseinputcontrol.mjs +1 -1
  7. package/esm2022/common/baselistcontrol.mjs +1 -1
  8. package/esm2022/common/basemodelcontrol.mjs +1 -1
  9. package/esm2022/common/baseselectcontrol.mjs +1 -1
  10. package/esm2022/common/baseuploadcontrol.mjs +1 -1
  11. package/esm2022/components/browser/browser.mjs +1 -1
  12. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +1 -1
  13. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +1 -1
  14. package/esm2022/components/browser/models/browserfilesaverequest.mjs +1 -1
  15. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +1 -1
  16. package/esm2022/components/browser/models/browsernodenewrequest.mjs +1 -1
  17. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +1 -1
  18. package/esm2022/components/browser/models/browsernoderequest.mjs +1 -1
  19. package/esm2022/controls/buttons/button.mjs +1 -1
  20. package/esm2022/controls/checkbox/checkbox.mjs +1 -1
  21. package/esm2022/controls/checkbox/radiobutton.mjs +1 -1
  22. package/esm2022/controls/checkbox/radiobuttons.mjs +1 -1
  23. package/esm2022/controls/confirm/confirm.button.mjs +1 -1
  24. package/esm2022/controls/confirm/confirm.mjs +1 -1
  25. package/esm2022/controls/confirm/confirm.service.mjs +1 -1
  26. package/esm2022/controls/contextmenu/contextmenu.mjs +1 -1
  27. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +1 -1
  28. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +1 -1
  29. package/esm2022/controls/contextmenu/contextmenuitem.mjs +1 -1
  30. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +1 -1
  31. package/esm2022/controls/datetime/date.mjs +1 -1
  32. package/esm2022/controls/datetime/dateselector.mjs +1 -1
  33. package/esm2022/controls/datetime/datetime.mjs +1 -1
  34. package/esm2022/controls/datetime/time.mjs +1 -1
  35. package/esm2022/controls/dialog/dialog.mjs +1 -1
  36. package/esm2022/controls/form/form.mjs +1 -1
  37. package/esm2022/controls/grid/grid.mjs +1 -1
  38. package/esm2022/controls/grid/gridbutton.mjs +1 -1
  39. package/esm2022/controls/grid/gridcolumn.mjs +1 -1
  40. package/esm2022/controls/grid/gridcolumnaction.mjs +1 -1
  41. package/esm2022/controls/grid/gridcolumnbase.mjs +16 -14
  42. package/esm2022/controls/grid/model.mjs +1 -1
  43. package/esm2022/controls/grid/paging.mjs +1 -1
  44. package/esm2022/controls/input/input.mjs +1 -1
  45. package/esm2022/controls/input/inputarea.mjs +1 -1
  46. package/esm2022/controls/input/inputcurrency.mjs +1 -1
  47. package/esm2022/controls/input/inputdecimal.mjs +1 -1
  48. package/esm2022/controls/input/inputemail.mjs +1 -1
  49. package/esm2022/controls/input/inputinteger.mjs +1 -1
  50. package/esm2022/controls/input/inputpassword.mjs +1 -1
  51. package/esm2022/controls/input/inputsearch.mjs +1 -1
  52. package/esm2022/controls/layout/formlayout.mjs +1 -1
  53. package/esm2022/controls/list/buildvaluestring.mjs +1 -1
  54. package/esm2022/controls/list/dropdown.mjs +1 -1
  55. package/esm2022/controls/list/dropdownoptions.mjs +1 -1
  56. package/esm2022/controls/list/listbox.mjs +1 -1
  57. package/esm2022/controls/multilanguage/multilanguageinput.mjs +1 -1
  58. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +1 -1
  59. package/esm2022/controls/static/formcontainer.mjs +1 -1
  60. package/esm2022/controls/static/staticlabel.mjs +1 -1
  61. package/esm2022/controls/tabs/tab.mjs +1 -1
  62. package/esm2022/controls/tabs/tabitem.mjs +1 -1
  63. package/esm2022/controls/tinymce/tinymce.mjs +1 -1
  64. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +1 -1
  65. package/esm2022/controls/tooltip/tooltip.mjs +1 -1
  66. package/esm2022/controls/treeview/treeview.mjs +6 -6
  67. package/esm2022/controls/upload/dropzonemultiple.mjs +1 -1
  68. package/esm2022/controls/upload/dropzonesingle.mjs +1 -1
  69. package/esm2022/controls/upload/uploadmultiple.mjs +1 -1
  70. package/esm2022/controls/upload/uploadsingle.mjs +1 -1
  71. package/esm2022/controls/validation/validationsummary.mjs +1 -1
  72. package/esm2022/controls/wizard/wizard.mjs +1 -1
  73. package/esm2022/controls/wizard/wizarditem.mjs +1 -1
  74. package/esm2022/enums/ControlHeight.mjs +1 -1
  75. package/esm2022/enums/IconType.mjs +1 -1
  76. package/esm2022/models/languagemodel.mjs +1 -1
  77. package/esm2022/services/sac-configuration.service.mjs +1 -1
  78. package/esm2022/services/sac-filebrowser.service.mjs +1 -1
  79. package/esm2022/services/sac-icon.service.mjs +1 -1
  80. package/esm2022/services/sac-language.service.mjs +1 -1
  81. package/esm2022/services/sac-localisation.service.mjs +1 -1
  82. package/esm2022/services/sac-validationkey.service.mjs +1 -1
  83. package/esm2022/utilities/convertion.mjs +1 -1
  84. package/esm2022/utilities/datatypes.mjs +1 -1
  85. package/esm2022/utilities/enums.mjs +1 -1
  86. package/esm2022/utilities/guid.mjs +1 -1
  87. package/esm2022/utilities/interpolation.mjs +1 -1
  88. package/esm2022/utilities/popuphelper.mjs +1 -1
  89. package/esm2022/utilities/positioning.mjs +1 -1
  90. package/esm2022/utilities/testingattribute.pipe.mjs +1 -1
  91. package/esm2022/validation/email.validator.mjs +1 -1
  92. package/esm2022/validation/equals.validator.mjs +1 -1
  93. package/esm2022/validation/invaliddate.validator.mjs +1 -1
  94. package/esm2022/validation/isDateValid.mjs +1 -1
  95. package/esm2022/validation/maxdate.validator.mjs +1 -1
  96. package/esm2022/validation/maxtime.validator.mjs +1 -1
  97. package/esm2022/validation/maxvalue.validator.mjs +1 -1
  98. package/esm2022/validation/mindate.validator.mjs +1 -1
  99. package/esm2022/validation/minfiles.validator.mjs +1 -1
  100. package/esm2022/validation/mintextlength.validator.mjs +1 -1
  101. package/esm2022/validation/mintime.validator.mjs +1 -1
  102. package/esm2022/validation/minvalue.validator.mjs +1 -1
  103. package/esm2022/validation/multilanguagerequired.validator.mjs +1 -1
  104. package/esm2022/validation/multilanguagerequiredany.validator.mjs +1 -1
  105. package/esm2022/validation/notequals.validator.mjs +1 -1
  106. package/esm2022/validation/pattern.validator.mjs +1 -1
  107. package/esm2022/validation/required.validator.mjs +1 -1
  108. package/esm2022/validation/validation.mjs +1 -1
  109. package/esm2022/validation/validationerrorcreator.mjs +1 -1
  110. package/esm2022/validation/validationerroritem.mjs +1 -1
  111. package/fesm2022/simpleangularcontrols-sac-common.mjs +668 -666
  112. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  113. package/package.json +1 -1
  114. package/simpleangularcontrols-sac-common-16.0.0-rc.22.tgz +0 -0
  115. package/simpleangularcontrols-sac-common-16.0.0-rc.21.tgz +0 -0
@@ -145,4 +145,4 @@ if((cov_2j8zwflweb().b[28][0]++,this.uploadInput)&&(cov_2j8zwflweb().b[28][1]++,
145
145
  * Konstruktor
146
146
  * @param ufile Upload Status
147
147
  */constructor(ufile){cov_2j8zwflweb().f[52]++;cov_2j8zwflweb().s[151]++;this.uploadId=ufile.uploadId;cov_2j8zwflweb().s[152]++;this.name=ufile.name;cov_2j8zwflweb().s[153]++;this.progress=ufile.progress;cov_2j8zwflweb().s[154]++;this.status=ufile.status;cov_2j8zwflweb().s[155]++;this.documentid=null;}}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXVwbG9hZGNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb21tb24vYmFzZXVwbG9hZGNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBRVosS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUErQixjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUUsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRXRDLDJCQUEyQjtBQUUzQjs7R0FFRztBQUNILE1BQ3NCLGFBQXFCLFNBQVEsbUJBQTBCO0lBMEh6RSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7T0FNRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDVixRQUFtQixFQUNuQixNQUFjO1FBRXRCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBeEkxQixxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQUVwQzs7V0FFRztRQUNLLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ0ssaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFckM7O1dB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QUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztDQUdKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlJztcbmltcG9ydCB7IElVcGxvYWRDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdXBsb2FkY29udHJvbCc7XG5pbXBvcnQgeyBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UsIFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLCBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhYy1sb2NhbGlzYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFVwbG9hZFN0YXRlLCBVcGxvYWR4T3B0aW9ucywgVXBsb2FkeFNlcnZpY2UgfSBmcm9tICduZ3gtdXBsb2FkeCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcblxuLyoqXG4gKiBCYXNlIEtsYXNzZSBmw7xyIFVwbG9hZGVyIENvbnRyb2xcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjVXBsb2FkQmFzZTxWQUxVRT4gZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEVybGF1YnRlIERhdGVpdHlwZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9hbGxvd2VkdHlwZXM6IHN0cmluZyA9ICcqJztcblxuICAgIC8qKlxuICAgICAqIEZpbGVzIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2F1dG91cGxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBhdXNpZXJlbiB2b24gVXBsb2FkcyBlcmxhdWJlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuYWJsZXBhdXNlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEFQSSBFbmRwb2ludFxuICAgICAqL1xuICAgIHByaXZhdGUgX2VuZHBvaW50OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgX3Rva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTZXR0aW5nc1xuICAgICAqL1xuICAgIHByaXZhdGUgb3B0aW9uczogVXBsb2FkeE9wdGlvbnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEZpbGUgSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVzJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHVwbG9hZElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIFNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBsb2FkU2VydmljZTogVXBsb2FkeFNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGluZyB2b24gbmV1ZW4gRmlsZXMgaW0gSW5wdXQgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWxlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgIC8vIGV4aXQgaWYgZmlsZXMgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgaWYgKCF0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkdldE1heEZpbGVzKCkgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBtYXhGaWxlcyA9IHRoaXMuR2V0TWF4RmlsZXMoKSArIHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZXMgPSBtYXhGaWxlcyAtIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChwb3NzaWJsZUZpbGVzIDwgMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IG5ldyBEYXRhVHJhbnNmZXIoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpLnNwbGljZShcbiAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aCArIHBvc3NpYmxlRmlsZXNcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgLy8gY2xvbmUgZmlsZXNcbiAgICAgICAgICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyA9IGRhdGFUcmFuc2Zlci5maWxlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVGaWxlcyh0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIExpc3RlbmVyIGbDvHIgRmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgbGlzdGVuZXJGbjogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlcnZpY2UgZsO8ciBFcnJvciBMb2NhbGlzYXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIE1heC4gRGF0ZWlncsO2c3NlIGbDvHIgRmlsZXMgZGllIGhvY2hnZWxhZGVuIHdlcmRlbiBrw7ZubmVuLiAwIGRlYWt0aXZpZXJ0IGRlbiBGaWx0ZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbWF4ZmlsZXNpemU6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIGFuIGVycm9yIGlzIHRyaWdnZXJlZCBpbiB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25maWxlZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gYSBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIGZvciBtdWx0aXBsZSB1cGxvYWRzIHBlciBmaWxlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbnVwbG9hZGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlPigpO1xuXG4gICAgLyoqXG4gICAgICogQXJyYXkgdm9uIFVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkczogU2FjVXBsb2FkRmlsZVtdO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIgYW5ndWxhciByZW5kZXJpbmcgZW5naW5lXG4gICAgICogQHBhcmFtIG5nWm9uZSBuZ3pvbmUgZm9yIGhhbmRsaW5nIGV4dGVybmFsIHNjcmlwdHNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xuXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBuZXcgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlKCkpO1xuXG4gICAgICAgIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxuICAgICAgICAgICAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXG4gICAgICAgICAgICBuZXcgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UodGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVwbG9hZHMgPSBbXTtcblxuICAgICAgICB0aGlzLm9wdGlvbnMuYWxsb3dlZFR5cGVzID0gJyonO1xuICAgICAgICB0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kgPSAxO1xuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSAnc29tZXRva2VuJztcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB0aGlzLl9hdXRvdXBsb2FkO1xuICAgICAgICB0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmNodW5rU2l6ZSA9IDEwMjQgKiAxNiAqIDg7XG4gICAgICAgIHRoaXMub3B0aW9ucy5oZWFkZXJzID0gKGY6IEZpbGUpID0+ICh7XG4gICAgICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IGBmaWxlbmFtZT0ke2VuY29kZVVSSShmLm5hbWUpfWAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEluaXQgbmV3IFNlcnZpY2UgSW5zdGFuY2VcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlID0gbmV3IFVwbG9hZHhTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5pbml0KHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgLy8gU3Vic2NyaXBlIEV2ZW50IGZvciBTdGF0ZSBjaGFuZ2VzXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5ldmVudHMuc3Vic2NyaWJlKCh1ZmlsZTogVXBsb2FkU3RhdGUpID0+IHRoaXMub25VcGxvYWQodWZpbGUpKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogSWNvbiBmb3IgYnJvd3NlIGJ1dHRvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkJyb3dzZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRCcm93c2VJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIGNvbnRpbm91cyBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uQ29udGludWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50Q29udGludWVJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIGRlbGV0ZSBidXR0b25zXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uRGVsZXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudERlbGV0ZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgcGF1c2UgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvblBhdXNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFBhdXNlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciB1cGxvYWQgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIGdldCBJY29uVXBsb2FkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudFVwbG9hZEljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhbGxvd2VkdHlwZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWR0eXBlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuIGbDvHIgZGVuIFVwbG9hZC4gRm9ybWF0OiBcIi54eHgsLnl5eSwuenp6XCJcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWxsb3dlZHR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWxsb3dlZHR5cGVzID0gdHlwZXM7XG4gICAgICAgIHRoaXMuc2V0QWxsb3dlZFR5cGVzKHR5cGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG91cGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvdXBsb2FkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbGVzIG5hY2ggZGVyIEF1c3dhaGwgYXV0b21hdGlzY2ggaG9jaGxhZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGF1dG91cGxvYWQodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hdXRvdXBsb2FkID0gdjtcbiAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9VcGxvYWQgPSB2O1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29ubmVjdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlcGF1c2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVwYXVzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWRzIGvDtm5uZW4gdW50ZXJicm9jaGVuIHdlcmRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlbmFibGVwYXVzZSh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VuYWJsZXBhdXNlID0gdjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRwb2ludDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGVuIFJlZ2lzdHJhdGlvbiBFbmRwb2ludCBmw7xyIFVwbG9hZHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVuZHBvaW50KHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9lbmRwb2ludCA9IHY7XG4gICAgICAgIHRoaXMuc2V0RW5kcG9pbnQodik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2tlbiBmb3IgQmVhcmVyIEF1dGhlbnRpY2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRva2VuKHY6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdG9rZW4gPSB2O1xuICAgICAgICB0aGlzLnNldFRva2VuKHYpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZGUga2FubiBmw7xyIENvbnRyb2xzIHZlcndlbmRldCB3ZXJkZW4sIHp1c8OkdHpsaWNoZSBWYWxpZGllcnVuZ2VuIGJlaSBoaW56dWbDvGdlbiBkZXIgRmlsZXMgenUgbWFjaGVuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBGaWxlIGRhcyBoaW56dWdlZsO8Z3Qgd3VyZGUuXG4gICAgICogQHJldHVybnMgVmFsZGllcnVuZyBpc3QgZXJmb2xncmVpY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgQ3VzdG9tQWRkVmFsaWRhdGlvbihmaWxlOiBVcGxvYWRTdGF0ZSk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIGRlciBEYXRlaSBkaWUgSG9jaGdlbGFkZW4gd2lyZFxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgZGVzIERhdGVpbmFtZW5zLlxuICAgICAqL1xuICAgIHB1YmxpYyBGaWxlbmFtZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZHNbMF0ubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgYW4gb2IgUXVldWUgRWxlbWVudGUgYmVpbmhhbHRldFxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGluIGRlciBRdWV1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBIYXNRdWV1ZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaWJ0IGFuIG9iIGVpbiBVcGxvYWQgYWJnZXNjaGxvc3NlbiBpc3RcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgZXJmb2xncmVpY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgSGFzU3VjY2Vzc1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzICE9PSAnY29tcGxldGUnKS5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBwYXVzaWVydFxuICAgICAqIEByZXR1cm5zIFBhdXNpZXJ0ZXIgVXBsb2FkIGlzdCB2b3JoYW5kZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNQYXVzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdwYXVzZWQnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBpbiBkZXIgUXVldWUgRWxlbWVudGUgZGllIHp1bSBVcGxvYWQgYmVyZWl0IHNpbmQgdm9yaGFuZGVuIHNpbmQuXG4gICAgICogQHJldHVybnMgRWxlbWVudGUgZsO8ciBVcGxvYWQgdm9yaGFuZGVuXG4gICAgICovXG4gICAgcHVibGljIElzU3RhdGVUb1VwbG9hZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZWluIFVwbG9hZCBlaW5lcyBGaWxlcyBhbSBsYXVmZW4gaXN0XG4gICAgICogQHJldHVybnMgVXBsb2FkIGlzdCBhbSBsYXVmZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgSXNVcGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpYnQgZGVuIFVwbG9hZGZvcnRzY2hyaXR0IHp1csO8Y2tcbiAgICAgKiBAcmV0dXJucyBVcGxvYWQgRm9ydHNjaHJpdHQuIFdlcnQgdm9uIDAtMTAwXG4gICAgICovXG4gICAgcHVibGljIFByb2dyZXNzKCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkc1swXS5wcm9ncmVzcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kZSB3ZWxjaGUgZGllIFVwbG9hZCBJRCdzIGluIGRhcyBNb2RlbCBzZXR6dCBvZGVyIGzDtnNjaHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlIFR5cGUgdm9uIEZpbGUgSUQnc1xuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBTZXRVcGxvYWRWYWx1ZShmaWxlOiBVcGxvYWRTdGF0ZSk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgc2luZ2xlIHVwbG9hZFxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIGNhbmNlbFxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWwodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnLCB1cGxvYWRJZDogdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIGFsbCBVcGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyBjYW5jZWxBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLkhhc1F1ZXVlSXRlbSgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ2NhbmNlbCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95IGRlcyBDb250cm9sc1xuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXJGbikge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lckZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXNpZXJ0IGRhcyBDb250cm9sXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICAvLyBJbml0IEV2ZW50IExpc3RlbmVyIGZvciBJbnB1dCBGaWxlIENvbnRyb2wgYW5kIEhhbmRsaW5nIEZpbGVzXG4gICAgICAgIHRoaXMubGlzdGVuZXJGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2NoYW5nZScsIHRoaXMuZmlsZUxpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0aGlzLl9hbGxvd2VkdHlwZXMpO1xuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHRoaXMuX2VuZHBvaW50KTtcbiAgICAgICAgdGhpcy5zZXRUb2tlbih0aGlzLl90b2tlbik7XG5cbiAgICAgICAgaWYgKHRoaXMuX2VuZHBvaW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VuZHBvaW50IGlzIG5vdCBkZWZpbmVkIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgRXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cGxvYWRzT3V0U3RyZWFtIFVwbG9hZCBJdGVtXG4gICAgICovXG4gICAgcHVibGljIG9uVXBsb2FkKHVmaWxlOiBVcGxvYWRTdGF0ZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudXBsb2Fkcy5maW5kSW5kZXgoKGYpID0+IGYudXBsb2FkSWQgPT09IHVmaWxlLnVwbG9hZElkKTtcblxuICAgICAgICBpZiAodWZpbGUuc3RhdHVzID09PSAnYWRkZWQnIHx8ICh1ZmlsZS5zdGF0dXMgPT09ICdxdWV1ZScgJiYgaW5kZXggPCAwKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNFeHRlbnNpb25WYWxpZCh1ZmlsZS5uYW1lKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5DdXN0b21BZGRWYWxpZGF0aW9uKHVmaWxlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzLnB1c2gobmV3IFNhY1VwbG9hZEZpbGUodWZpbGUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwodWZpbGUudXBsb2FkSWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmZpbGVlcnJvci5lbWl0KCdJTlZBTElEX0VYVEVOU0lPTicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNGaWxlU2l6ZVZhbGlkKHVmaWxlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9GSUxFU0laRScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjYW5jZWxsZWQnKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgICAgICB0aGlzLlNldFVwbG9hZFZhbHVlKHVmaWxlKTtcblxuICAgICAgICAgICAgY29uc3QgdXBsb2FkU3RhdGU6IElTYWNVcGxvYWRFdmVudENvbXBsZXRlU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdWZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiB1ZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgIHVwbG9hZGlkOiB0aGlzLnVwbG9hZHNbaW5kZXhdLnVwbG9hZElkLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5vbnVwbG9hZGNvbXBsZXRlLmVtaXQodXBsb2FkU3RhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHNbaW5kZXhdLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5zdGF0dXMgPSB1ZmlsZS5zdGF0dXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLlVwZGF0ZUZpbGVDb3VudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBTaW5nbGUgRmlsZVxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIENhbmNlbFxuICAgICAqL1xuICAgIHB1YmxpYyBwYXVzZSh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJywgdXBsb2FkSWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF1c2UgYWxsIFVwbG9hZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgcGF1c2VBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLklzVXBsb2FkaW5nKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAncGF1c2UnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmVhcmVyIHRva2VuIGluIHRoZSB1cGxvYWQgc2VydmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRUb2tlbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTaW5nbGUgRmlsZVxuICAgICAqXG4gICAgICogQHBhcmFtIHVwbG9hZElkIElEIG9mIEZpbGUgdG8gVXBsb2FkXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZCh1cGxvYWRJZCkge1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcsIHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBhbGwgcXVldWVkIEZpbGVzXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZEFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAndXBsb2FkJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkaWVydCBkYXMgVXBsb2FkIENvbnRyb2xcbiAgICAgKiBAcGFyYW0gYyBDb250cm9sIGRhcyB2YWxpZGllcnQgd2VyZGVuIHNvbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZCkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogZ2V0IG1heC4gZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgR2V0TWF4RmlsZXMoKTogbnVtYmVyO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIHByaXZhdGUgVXBkYXRlRmlsZUNvdW50KCk6IHZvaWQge1xuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElVcGxvYWRDb250cm9sKS51cGxvYWRlZGZpbGVjb3VudCA9IHRoaXMuVXBsb2FkZWRGaWxlQ291bnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB1cGxvYWRlZCBmaWxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgVXBsb2FkZWRGaWxlQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyA9PT0gJ2NvbXBsZXRlJykubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBkaWUgRGF0ZWllcndlaXRlcnVuZyBnw7xsdGlnIGlzdFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVuYW1lIERhdGVpbmFtZVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNFeHRlbnNpb25WYWxpZChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxvd2VkdHlwZXMgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IHRoaXMuX2FsbG93ZWR0eXBlcy5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoaXRtKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChpdG0udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGRhcyBGaWxlIG5pY2h0IHp1IGdyb3NzIGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlc2l6ZSBNYXggRmlsZSBTaXplIGluIEJ5dGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0ZpbGVTaXplVmFsaWQoZmlsZXNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tYXhmaWxlc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tYXhmaWxlc2l6ZSA+PSBmaWxlc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR6dCBkaWUgZXJsYXVidGVuIERhdGVudHlwZW4gZsO8ciBkZW4gVXBsb2FkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZXMgRXJsYXVidGUgRmlsZSBFeHRlbnNpb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRBbGxvd2VkVHlwZXModHlwZXM6IHN0cmluZykge1xuICAgICAgICAvLyBQcsO8ZmVuIFVwbG9hZElucHV0IGJlcmVpdHMgZ2VsYWRlbiwgaXN0IE5VTEwgd2VubiBFeHRlbnNpb24gaW0gTWFya3VwIG5hY2ggTmdNb2RlbCBnZXNldHp0IHdpcmQuXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZElucHV0ICYmIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgdHlwZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9IHR5cGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHp0IGRlbiBVcGxvYWQgRW5kcG9pdFxuICAgICAqIEBwYXJhbSB1cmwgUmVnaXN0ZXIgVVJJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRFbmRwb2ludCh1cmw6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZW5kcG9pbnQgPSB1cmw7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cblxuLyoqXG4gKiBLbGFzc2UgZsO8ciBkZW4gVXBsb2FkIGVpbmVyIERhdGVpIGluIGRlciBVcGxvYWQgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBTYWNVcGxvYWRGaWxlIHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIERvY3VtZW50IElEXG4gICAgICovXG4gICAgcHVibGljIGRvY3VtZW50aWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERhdGVpbmFtZVxuICAgICAqL1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgRm9ydHNjaHJpdHRcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJvZ3Jlc3M6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTdGF0dXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdHVzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkSWQ6IHN0cmluZztcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIEtvbnN0cnVrdG9yXG4gICAgICogQHBhcmFtIHVmaWxlIFVwbG9hZCBTdGF0dXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih1ZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRJZCA9IHVmaWxlLnVwbG9hZElkO1xuICAgICAgICB0aGlzLm5hbWUgPSB1ZmlsZS5uYW1lO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdWZpbGUucHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICB0aGlzLmRvY3VtZW50aWQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG59XG5cbi8vICNlbmRyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuIl19
148
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmo4endmbHdlYiIsImFjdHVhbENvdmVyYWdlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsIlZhbGlkYXRpb24iLCJTYWNCYXNlTW9kZWxDb250cm9sIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJWaWV3Q2hpbGQiLCJVcGxvYWR4U2VydmljZSIsIm9mIiwiU2FjVXBsb2FkQmFzZSIsImNvbnN0cnVjdG9yIiwiZm9ybWxheW91dCIsImluamVjdG9yIiwicmVuZGVyZXIiLCJuZ1pvbmUiLCJmIiwicyIsIl9hbGxvd2VkdHlwZXMiLCJfYXV0b3VwbG9hZCIsIl9lbmFibGVwYXVzZSIsIl9lbmRwb2ludCIsIl90b2tlbiIsIm9wdGlvbnMiLCJmaWxlTGlzdGVuZXIiLCJ1cGxvYWRJbnB1dCIsIm5hdGl2ZUVsZW1lbnQiLCJmaWxlcyIsImIiLCJHZXRNYXhGaWxlcyIsIm1heEZpbGVzIiwiVXBsb2FkZWRGaWxlQ291bnQiLCJwb3NzaWJsZUZpbGVzIiwibGVuZ3RoIiwiZGF0YVRyYW5zZmVyIiwiRGF0YVRyYW5zZmVyIiwiQXJyYXkiLCJmcm9tIiwic3BsaWNlIiwiZm9yRWFjaCIsImZpbGUiLCJpdGVtcyIsImFkZCIsInVwbG9hZFNlcnZpY2UiLCJoYW5kbGVGaWxlcyIsImlzcmVxdWlyZWQiLCJtYXhmaWxlc2l6ZSIsIm9uZmlsZWVycm9yIiwib251cGxvYWRjb21wbGV0ZSIsInZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQiLCJ2YWxpZGF0aW9uS2V5U2VydmljZSIsIlZhbGlkYXRpb25FcnJvclJlcXVpcmVkIiwidmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQiLCJWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQiLCJnZXQiLCJsbmdSZXNvdXJjZVNlcnZpY2UiLCJ1cGxvYWRzIiwiYWxsb3dlZFR5cGVzIiwiY29uY3VycmVuY3kiLCJ0b2tlbiIsImF1dG9VcGxvYWQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJjaHVua1NpemUiLCJoZWFkZXJzIiwiZW5jb2RlVVJJIiwibmFtZSIsImluaXQiLCJldmVudHMiLCJzdWJzY3JpYmUiLCJ1ZmlsZSIsIm9uVXBsb2FkIiwiSWNvbkJyb3dzZSIsImljb25TZXJ2aWNlIiwiVXBsb2FkQ29tcG9uZW50QnJvd3NlSWNvbiIsIkljb25Db250aW51ZSIsIlVwbG9hZENvbXBvbmVudENvbnRpbnVlSWNvbiIsIkljb25EZWxldGUiLCJVcGxvYWRDb21wb25lbnREZWxldGVJY29uIiwiSWNvblBhdXNlIiwiVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uIiwiSWNvblVwbG9hZCIsIlVwbG9hZENvbXBvbmVudFVwbG9hZEljb24iLCJhbGxvd2VkdHlwZXMiLCJ0eXBlcyIsInNldEFsbG93ZWRUeXBlcyIsImF1dG91cGxvYWQiLCJ2IiwiY29ubmVjdCIsImVuYWJsZXBhdXNlIiwiZW5kcG9pbnQiLCJzZXRFbmRwb2ludCIsInNldFRva2VuIiwiRmlsZW5hbWUiLCJHZXRTdHJpbmciLCJVcGxvYWROb0ZpbGVzU2VsZWN0ZWQiLCJIYXNRdWV1ZUl0ZW0iLCJIYXNTdWNjZXNzVXBsb2FkIiwiZmlsdGVyIiwiaXRtIiwic3RhdHVzIiwiSXNQYXVzZWQiLCJJc1N0YXRlVG9VcGxvYWQiLCJJc1VwbG9hZGluZyIsIlByb2dyZXNzIiwicHJvZ3Jlc3MiLCJjYW5jZWwiLCJ1cGxvYWRJZCIsImNvbnRyb2wiLCJhY3Rpb24iLCJjYW5jZWxBbGwiLCJuZ09uRGVzdHJveSIsImxpc3RlbmVyRm4iLCJuZ09uSW5pdCIsImxpc3RlbiIsIkVycm9yIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJpc0V4dGVuc2lvblZhbGlkIiwiaXNGaWxlU2l6ZVZhbGlkIiwic2l6ZSIsIkN1c3RvbUFkZFZhbGlkYXRpb24iLCJwdXNoIiwiU2FjVXBsb2FkRmlsZSIsImVtaXQiLCJTZXRVcGxvYWRWYWx1ZSIsInVwbG9hZFN0YXRlIiwidXBsb2FkaWQiLCJVcGRhdGVGaWxlQ291bnQiLCJwYXVzZSIsInBhdXNlQWxsIiwidmFsdWUiLCJ1cGxvYWQiLCJ1cGxvYWRBbGwiLCJ2YWxpZGF0ZURhdGEiLCJjIiwiZXJyb3IiLCJyZXF1aXJlZCIsIm5nQ29udHJvbCIsInVwbG9hZGVkZmlsZWNvdW50IiwiZmlsZW5hbWUiLCJpc1ZhbGlkIiwiZXh0ZW5zaW9ucyIsInNwbGl0IiwidG9Mb3dlckNhc2UiLCJlbmRzV2l0aCIsImZpbGVzaXplIiwic2V0QXR0cmlidXRlIiwidXJsIiwiZGVwcyIsImkxIiwiU2FjRm9ybUxheW91dENvbW1vbiIsImkwIiwiSW5qZWN0b3IiLCJSZW5kZXJlcjIiLCJOZ1pvbmUiLCJ0YXJnZXQiLCLJtcm1RmFjdG9yeVRhcmdldCIsImlucHV0cyIsIm91dHB1dHMiLCJ2aWV3UXVlcmllcyIsInByb3BlcnR5TmFtZSIsImZpcnN0IiwicHJlZGljYXRlIiwiZGVzY2VuZGFudHMiLCJzdGF0aWMiLCJ1c2VzSW5oZXJpdGFuY2UiLCJuZ0ltcG9ydCIsImRlY29yYXRvcnMiLCJkb2N1bWVudGlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29tbW9uL2Jhc2V1cGxvYWRjb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSc7XG5pbXBvcnQgeyBJVXBsb2FkQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXVwbG9hZGNvbnRyb2wnO1xuaW1wb3J0IHsgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTQUNMT0NBTElTQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBVcGxvYWRTdGF0ZSwgVXBsb2FkeE9wdGlvbnMsIFVwbG9hZHhTZXJ2aWNlIH0gZnJvbSAnbmd4LXVwbG9hZHgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuLy8gI3JlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG5cbi8qKlxuICogQmFzZSBLbGFzc2UgZsO8ciBVcGxvYWRlciBDb250cm9sXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1VwbG9hZEJhc2U8VkFMVUU+IGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWxsb3dlZHR5cGVzOiBzdHJpbmcgPSAnKic7XG5cbiAgICAvKipcbiAgICAgKiBGaWxlcyBhdXRvbWF0aXNjaCBob2NobGFkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9hdXRvdXBsb2FkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBQYXVzaWVyZW4gdm9uIFVwbG9hZHMgZXJsYXViZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbmFibGVwYXVzZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBUEkgRW5kcG9pbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbmRwb2ludDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIF90b2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2V0dGluZ3NcbiAgICAgKi9cbiAgICBwcml2YXRlIG9wdGlvbnM6IFVwbG9hZHhPcHRpb25zID0ge307XG5cbiAgICAvKipcbiAgICAgKiBGaWxlIElucHV0IENvbnRyb2xcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdmaWxlcycsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSB1cGxvYWRJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTZXJ2aWNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwbG9hZFNlcnZpY2U6IFVwbG9hZHhTZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxpbmcgdm9uIG5ldWVuIEZpbGVzIGltIElucHV0IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAvLyBleGl0IGlmIGZpbGVzIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgIGlmICghdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5HZXRNYXhGaWxlcygpID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWF4RmlsZXMgPSB0aGlzLkdldE1heEZpbGVzKCkgKyB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZUZpbGVzID0gbWF4RmlsZXMgLSB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAocG9zc2libGVGaWxlcyA8IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKS5zcGxpY2UoXG4gICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGggKyBwb3NzaWJsZUZpbGVzXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIGNsb25lIGZpbGVzXG4gICAgICAgICAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4gZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChmaWxlKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMgPSBkYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaGFuZGxlRmlsZXModGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5pZXJ0IGRhcyBDb250cm9sIGFscyBSZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0ZW5lciBmw7xyIEZpbGVzXG4gICAgICovXG4gICAgcHVibGljIGxpc3RlbmVyRm46ICgpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXJ2aWNlIGbDvHIgRXJyb3IgTG9jYWxpc2F0aW9uXG4gICAgICovXG4gICAgcHVibGljIGxuZ1Jlc291cmNlU2VydmljZTogSVNhY0xvY2FsaXNhdGlvblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBNYXguIERhdGVpZ3LDtnNzZSBmw7xyIEZpbGVzIGRpZSBob2NoZ2VsYWRlbiB3ZXJkZW4ga8O2bm5lbi4gMCBkZWFrdGl2aWVydCBkZW4gRmlsdGVyXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG1heGZpbGVzaXplOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhbiBlcnJvciBpcyB0cmlnZ2VyZWQgaW4gdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uZmlsZWVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIGEgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCBmb3IgbXVsdGlwbGUgdXBsb2FkcyBwZXIgZmlsZS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb251cGxvYWRjb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8SVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEFycmF5IHZvbiBVcGxvYWRzXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZHM6IFNhY1VwbG9hZEZpbGVbXTtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBiZWkgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGluIFZhbGlkYXRpb24gU3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZDtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXG4gICAgICogQHBhcmFtIHJlbmRlcmVyIGFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZVxuICAgICAqIEBwYXJhbSBuZ1pvbmUgbmd6b25lIGZvciBoYW5kbGluZyBleHRlcm5hbCBzY3JpcHRzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcblxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpKTtcblxuICAgICAgICB0aGlzLmxuZ1Jlc291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChcbiAgICAgICAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxuICAgICAgICAgICAgbmV3IFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRzID0gW107XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9ICcqJztcbiAgICAgICAgdGhpcy5vcHRpb25zLmNvbmN1cnJlbmN5ID0gMTtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gJ3NvbWV0b2tlbic7XG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdGhpcy5fYXV0b3VwbG9hZDtcbiAgICAgICAgdGhpcy5vcHRpb25zLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jaHVua1NpemUgPSAxMDI0ICogMTYgKiA4O1xuICAgICAgICB0aGlzLm9wdGlvbnMuaGVhZGVycyA9IChmOiBGaWxlKSA9PiAoe1xuICAgICAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBgZmlsZW5hbWU9JHtlbmNvZGVVUkkoZi5uYW1lKX1gLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbml0IG5ldyBTZXJ2aWNlIEluc3RhbmNlXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZSA9IG5ldyBVcGxvYWR4U2VydmljZSgpO1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaW5pdCh0aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgIC8vIFN1YnNjcmlwZSBFdmVudCBmb3IgU3RhdGUgY2hhbmdlc1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZSgodWZpbGU6IFVwbG9hZFN0YXRlKSA9PiB0aGlzLm9uVXBsb2FkKHVmaWxlKSk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8qKlxuICAgICAqIEljb24gZm9yIGJyb3dzZSBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25Ccm93c2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50QnJvd3NlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBjb250aW5vdXMgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkNvbnRpbnVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudENvbnRpbnVlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBkZWxldGUgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkRlbGV0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnREZWxldGVJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIHBhdXNlIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25QYXVzZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRQYXVzZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgdXBsb2FkIGJ1dHRvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvblVwbG9hZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRVcGxvYWRJY29uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWxsb3dlZHR5cGVzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd2VkdHlwZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXJsYXVidGUgRGF0ZWl0eXBlbiBmw7xyIGRlbiBVcGxvYWQuIEZvcm1hdDogXCIueHh4LC55eXksLnp6elwiXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFsbG93ZWR0eXBlcyh0eXBlczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2FsbG93ZWR0eXBlcyA9IHR5cGVzO1xuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0eXBlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvdXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b3VwbG9hZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxlcyBuYWNoIGRlciBBdXN3YWhsIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhdXRvdXBsb2FkKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fYXV0b3VwbG9hZCA9IHY7XG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdjtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuYWJsZXBhdXNlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlcGF1c2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkcyBrw7ZubmVuIHVudGVyYnJvY2hlbiB3ZXJkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW5hYmxlcGF1c2UodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9lbmFibGVwYXVzZSA9IHY7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbmRwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5kcG9pbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pZXJ0IGRlbiBSZWdpc3RyYXRpb24gRW5kcG9pbnQgZsO8ciBVcGxvYWRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlbmRwb2ludCh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZW5kcG9pbnQgPSB2O1xuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0b2tlbih2OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3Rva2VuID0gdjtcbiAgICAgICAgdGhpcy5zZXRUb2tlbih2KTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBNZXRob2RlIGthbm4gZsO8ciBDb250cm9scyB2ZXJ3ZW5kZXQgd2VyZGVuLCB6dXPDpHR6bGljaGUgVmFsaWRpZXJ1bmdlbiBiZWkgaGluenVmw7xnZW4gZGVyIEZpbGVzIHp1IG1hY2hlblxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGUgRmlsZSBkYXMgaGluenVnZWbDvGd0IHd1cmRlLlxuICAgICAqIEByZXR1cm5zIFZhbGRpZXJ1bmcgaXN0IGVyZm9sZ3JlaWNoXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IEN1c3RvbUFkZFZhbGlkYXRpb24oZmlsZTogVXBsb2FkU3RhdGUpOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBkZXIgRGF0ZWkgZGllIEhvY2hnZWxhZGVuIHdpcmRcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIGRlcyBEYXRlaW5hbWVucy5cbiAgICAgKi9cbiAgICBwdWJsaWMgRmlsZW5hbWUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy51cGxvYWRzWzBdLm5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZE5vRmlsZXNTZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaWJ0IGFuIG9iIFF1ZXVlIEVsZW1lbnRlIGJlaW5oYWx0ZXRcbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBpbiBkZXIgUXVldWVcbiAgICAgKi9cbiAgICBwdWJsaWMgSGFzUXVldWVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBhbiBvYiBlaW4gVXBsb2FkIGFiZ2VzY2hsb3NzZW4gaXN0XG4gICAgICogQHJldHVybnMgVXBsb2FkIGVyZm9sZ3JlaWNoXG4gICAgICovXG4gICAgcHVibGljIEhhc1N1Y2Nlc3NVcGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyAhPT0gJ2NvbXBsZXRlJykubGVuZ3RoID09PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgcGF1c2llcnRcbiAgICAgKiBAcmV0dXJucyBQYXVzaWVydGVyIFVwbG9hZCBpc3Qgdm9yaGFuZGVuXG4gICAgICovXG4gICAgcHVibGljIElzUGF1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgaW4gZGVyIFF1ZXVlIEVsZW1lbnRlIGRpZSB6dW0gVXBsb2FkIGJlcmVpdCBzaW5kIHZvcmhhbmRlbiBzaW5kLlxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGbDvHIgVXBsb2FkIHZvcmhhbmRlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1N0YXRlVG9VcGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgZWluZXMgRmlsZXMgYW0gbGF1ZmVuIGlzdFxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBpc3QgYW0gbGF1ZmVuXG4gICAgICovXG4gICAgcHVibGljIElzVXBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAndXBsb2FkaW5nJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaWJ0IGRlbiBVcGxvYWRmb3J0c2Nocml0dCB6dXLDvGNrXG4gICAgICogQHJldHVybnMgVXBsb2FkIEZvcnRzY2hyaXR0LiBXZXJ0IHZvbiAwLTEwMFxuICAgICAqL1xuICAgIHB1YmxpYyBQcm9ncmVzcygpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHNbMF0ucHJvZ3Jlc3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZGUgd2VsY2hlIGRpZSBVcGxvYWQgSUQncyBpbiBkYXMgTW9kZWwgc2V0enQgb2RlciBsw7ZzY2h0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBUeXBlIHZvbiBGaWxlIElEJ3NcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgU2V0VXBsb2FkVmFsdWUoZmlsZTogVXBsb2FkU3RhdGUpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIHNpbmdsZSB1cGxvYWRcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBjYW5jZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuY2VsKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJywgdXBsb2FkSWQ6IHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBhbGwgVXBsb2FkZWQgZmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuY2VsQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5IYXNRdWV1ZUl0ZW0oKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzdHJveSBkZXMgQ29udHJvbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmxpc3RlbmVyRm4pIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGlzaWVydCBkYXMgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgLy8gSW5pdCBFdmVudCBMaXN0ZW5lciBmb3IgSW5wdXQgRmlsZSBDb250cm9sIGFuZCBIYW5kbGluZyBGaWxlc1xuICAgICAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdjaGFuZ2UnLCB0aGlzLmZpbGVMaXN0ZW5lcik7XG5cbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModGhpcy5fYWxsb3dlZHR5cGVzKTtcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh0aGlzLl9lbmRwb2ludCk7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odGhpcy5fdG9rZW4pO1xuXG4gICAgICAgIGlmICh0aGlzLl9lbmRwb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRwb2ludCBpcyBub3QgZGVmaW5lZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIEV2ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBsb2Fkc091dFN0cmVhbSBVcGxvYWQgSXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBvblVwbG9hZCh1ZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnVwbG9hZHMuZmluZEluZGV4KChmKSA9PiBmLnVwbG9hZElkID09PSB1ZmlsZS51cGxvYWRJZCk7XG5cbiAgICAgICAgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCAodWZpbGUuc3RhdHVzID09PSAncXVldWUnICYmIGluZGV4IDwgMCkpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuQ3VzdG9tQWRkVmFsaWRhdGlvbih1ZmlsZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5wdXNoKG5ldyBTYWNVcGxvYWRGaWxlKHVmaWxlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsKHVmaWxlLnVwbG9hZElkKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9FWFRFTlNJT04nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRklMRVNJWkUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY2FuY2VsbGVkJykge1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5TZXRVcGxvYWRWYWx1ZShudWxsKTtcbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICAgICAgdGhpcy5TZXRVcGxvYWRWYWx1ZSh1ZmlsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFN0YXRlOiBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHVmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogdWZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICB1cGxvYWRpZDogdGhpcy51cGxvYWRzW2luZGV4XS51cGxvYWRJZCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMub251cGxvYWRjb21wbGV0ZS5lbWl0KHVwbG9hZFN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5VcGRhdGVGaWxlQ291bnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgU2luZ2xlIEZpbGVcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBDYW5jZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGF1c2UodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScsIHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhdXNlIGFsbCBVcGxvYWRzXG4gICAgICovXG4gICAgcHVibGljIHBhdXNlQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5Jc1VwbG9hZGluZygpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJlYXJlciB0b2tlbiBpbiB0aGUgdXBsb2FkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VG9rZW4odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2luZ2xlIEZpbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIFVwbG9hZFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWQodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnLCB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgYWxsIHF1ZXVlZCBGaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLklzU3RhdGVUb1VwbG9hZCgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGllcnQgZGFzIFVwbG9hZCBDb250cm9sXG4gICAgICogQHBhcmFtIGMgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmlzcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQpKGMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIGdldCBtYXguIGZpbGVzIHRoYXQgY2FuIGJlIHVwbG9hZGVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IEdldE1heEZpbGVzKCk6IG51bWJlcjtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICBwcml2YXRlIFVwZGF0ZUZpbGVDb3VudCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJVXBsb2FkQ29udHJvbCkudXBsb2FkZWRmaWxlY291bnQgPSB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdXBsb2FkZWQgZmlsZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIFVwbG9hZGVkRmlsZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdjb21wbGV0ZScpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZGllIERhdGVpZXJ3ZWl0ZXJ1bmcgZ8O8bHRpZyBpc3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlbmFtZSBEYXRlaW5hbWVcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRXh0ZW5zaW9uVmFsaWQoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fYWxsb3dlZHR5cGVzID09PSAnKicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uczogc3RyaW5nW10gPSB0aGlzLl9hbGxvd2VkdHlwZXMuc3BsaXQoJywnKTtcblxuICAgICAgICBleHRlbnNpb25zLmZvckVhY2goKGl0bSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpbGVuYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoaXRtLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBkYXMgRmlsZSBuaWNodCB6dSBncm9zcyBpc3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXNpemUgTWF4IEZpbGUgU2l6ZSBpbiBCeXRlc1xuICAgICAqL1xuICAgIHByaXZhdGUgaXNGaWxlU2l6ZVZhbGlkKGZpbGVzaXplOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubWF4ZmlsZXNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ZmlsZXNpemUgPj0gZmlsZXNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0enQgZGllIGVybGF1YnRlbiBEYXRlbnR5cGVuIGbDvHIgZGVuIFVwbG9hZFxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGVzIEVybGF1YnRlIEZpbGUgRXh0ZW5zaW9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgc2V0QWxsb3dlZFR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gUHLDvGZlbiBVcGxvYWRJbnB1dCBiZXJlaXRzIGdlbGFkZW4sIGlzdCBOVUxMIHdlbm4gRXh0ZW5zaW9uIGltIE1hcmt1cCBuYWNoIE5nTW9kZWwgZ2VzZXR6dCB3aXJkLlxuICAgICAgICBpZiAodGhpcy51cGxvYWRJbnB1dCAmJiB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2FjY2VwdCcsIHR5cGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSB0eXBlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR6dCBkZW4gVXBsb2FkIEVuZHBvaXRcbiAgICAgKiBAcGFyYW0gdXJsIFJlZ2lzdGVyIFVSSVxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RW5kcG9pbnQodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmVuZHBvaW50ID0gdXJsO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG5cbi8qKlxuICogS2xhc3NlIGbDvHIgZGVuIFVwbG9hZCBlaW5lciBEYXRlaSBpbiBkZXIgVXBsb2FkIENvbXBvbmVudFxuICovXG5leHBvcnQgY2xhc3MgU2FjVXBsb2FkRmlsZSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBEb2N1bWVudCBJRFxuICAgICAqL1xuICAgIHB1YmxpYyBkb2N1bWVudGlkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEYXRlaW5hbWVcbiAgICAgKi9cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIEZvcnRzY2hyaXR0XG4gICAgICovXG4gICAgcHVibGljIHByb2dyZXNzOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU3RhdHVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXR1czogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIElEXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZElkOiBzdHJpbmc7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBLb25zdHJ1a3RvclxuICAgICAqIEBwYXJhbSB1ZmlsZSBVcGxvYWQgU3RhdHVzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodWZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIHRoaXMudXBsb2FkSWQgPSB1ZmlsZS51cGxvYWRJZDtcbiAgICAgICAgdGhpcy5uYW1lID0gdWZpbGUubmFtZTtcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgdGhpcy5kb2N1bWVudGlkID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xufVxuXG4vLyAjZW5kcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcbiJdLCJtYXBwaW5ncyI6Ijhqc0RBMkpJO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQXZKSixPQUFTRSx3QkFBd0IsQ0FBRUMsOEJBQThCLEtBQVEsYUFBYSxDQUN0RixPQUFTQyx1QkFBdUIsQ0FBRUMsNkJBQTZCLEtBQVEsc0NBQXNDLENBQzdHLE9BQVNDLFVBQVUsS0FBUSxlQUFlLENBQzFDLE9BQVNDLG1CQUFtQixLQUFRLG9CQUFvQixDQUN4RCxPQUNJQyxTQUFTLENBRVRDLFlBQVksQ0FFWkMsS0FBSyxDQUlMQyxNQUFNLENBRU5DLFNBQVMsS0FDTixlQUFlLENBRXRCLE9BQXNDQyxjQUFjLEtBQVEsYUFBYSxDQUN6RSxPQUFxQkMsRUFBRSxLQUFRLE1BQU0sQyxrRkFFckM7QUFFQTs7R0FHQSxLQUNzQixDQUFBQyxhQUFxQixRQUFRLENBQUFSLG1CQUEwQixDQTBIekU7QUFFQTtBQUVBOzs7Ozs7T0FPQVMsWUFDSUMsVUFBK0IsQ0FDL0JDLFFBQWtCLENBQ1ZDLFFBQW1CLENBQ25CQyxNQUFjLEVBQUFwQixjQUFBLEdBQUFxQixDQUFBLE1BQUFyQixjQUFBLEdBQUFzQixDQUFBLE1BRXRCLEtBQUssQ0FBQ0wsVUFBVSxDQUFFQyxRQUFRLENBQUMsQ0FBQ2xCLGNBQUEs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
148
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMmo4endmbHdlYiIsImFjdHVhbENvdmVyYWdlIiwiU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIiwiU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UiLCJTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSIsIlZhbGlkYXRpb24iLCJTYWNCYXNlTW9kZWxDb250cm9sIiwiRGlyZWN0aXZlIiwiRXZlbnRFbWl0dGVyIiwiSW5wdXQiLCJPdXRwdXQiLCJWaWV3Q2hpbGQiLCJVcGxvYWR4U2VydmljZSIsIm9mIiwiU2FjVXBsb2FkQmFzZSIsImNvbnN0cnVjdG9yIiwiZm9ybWxheW91dCIsImluamVjdG9yIiwicmVuZGVyZXIiLCJuZ1pvbmUiLCJmIiwicyIsIl9hbGxvd2VkdHlwZXMiLCJfYXV0b3VwbG9hZCIsIl9lbmFibGVwYXVzZSIsIl9lbmRwb2ludCIsIl90b2tlbiIsIm9wdGlvbnMiLCJmaWxlTGlzdGVuZXIiLCJ1cGxvYWRJbnB1dCIsIm5hdGl2ZUVsZW1lbnQiLCJmaWxlcyIsImIiLCJHZXRNYXhGaWxlcyIsIm1heEZpbGVzIiwiVXBsb2FkZWRGaWxlQ291bnQiLCJwb3NzaWJsZUZpbGVzIiwibGVuZ3RoIiwiZGF0YVRyYW5zZmVyIiwiRGF0YVRyYW5zZmVyIiwiQXJyYXkiLCJmcm9tIiwic3BsaWNlIiwiZm9yRWFjaCIsImZpbGUiLCJpdGVtcyIsImFkZCIsInVwbG9hZFNlcnZpY2UiLCJoYW5kbGVGaWxlcyIsImlzcmVxdWlyZWQiLCJtYXhmaWxlc2l6ZSIsIm9uZmlsZWVycm9yIiwib251cGxvYWRjb21wbGV0ZSIsInZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQiLCJ2YWxpZGF0aW9uS2V5U2VydmljZSIsIlZhbGlkYXRpb25FcnJvclJlcXVpcmVkIiwidmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQiLCJWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQiLCJnZXQiLCJsbmdSZXNvdXJjZVNlcnZpY2UiLCJ1cGxvYWRzIiwiYWxsb3dlZFR5cGVzIiwiY29uY3VycmVuY3kiLCJ0b2tlbiIsImF1dG9VcGxvYWQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJjaHVua1NpemUiLCJoZWFkZXJzIiwiZW5jb2RlVVJJIiwibmFtZSIsImluaXQiLCJldmVudHMiLCJzdWJzY3JpYmUiLCJ1ZmlsZSIsIm9uVXBsb2FkIiwiSWNvbkJyb3dzZSIsImljb25TZXJ2aWNlIiwiVXBsb2FkQ29tcG9uZW50QnJvd3NlSWNvbiIsIkljb25Db250aW51ZSIsIlVwbG9hZENvbXBvbmVudENvbnRpbnVlSWNvbiIsIkljb25EZWxldGUiLCJVcGxvYWRDb21wb25lbnREZWxldGVJY29uIiwiSWNvblBhdXNlIiwiVXBsb2FkQ29tcG9uZW50UGF1c2VJY29uIiwiSWNvblVwbG9hZCIsIlVwbG9hZENvbXBvbmVudFVwbG9hZEljb24iLCJhbGxvd2VkdHlwZXMiLCJ0eXBlcyIsInNldEFsbG93ZWRUeXBlcyIsImF1dG91cGxvYWQiLCJ2IiwiY29ubmVjdCIsImVuYWJsZXBhdXNlIiwiZW5kcG9pbnQiLCJzZXRFbmRwb2ludCIsInNldFRva2VuIiwiRmlsZW5hbWUiLCJHZXRTdHJpbmciLCJVcGxvYWROb0ZpbGVzU2VsZWN0ZWQiLCJIYXNRdWV1ZUl0ZW0iLCJIYXNTdWNjZXNzVXBsb2FkIiwiZmlsdGVyIiwiaXRtIiwic3RhdHVzIiwiSXNQYXVzZWQiLCJJc1N0YXRlVG9VcGxvYWQiLCJJc1VwbG9hZGluZyIsIlByb2dyZXNzIiwicHJvZ3Jlc3MiLCJjYW5jZWwiLCJ1cGxvYWRJZCIsImNvbnRyb2wiLCJhY3Rpb24iLCJjYW5jZWxBbGwiLCJuZ09uRGVzdHJveSIsImxpc3RlbmVyRm4iLCJuZ09uSW5pdCIsImxpc3RlbiIsIkVycm9yIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJpc0V4dGVuc2lvblZhbGlkIiwiaXNGaWxlU2l6ZVZhbGlkIiwic2l6ZSIsIkN1c3RvbUFkZFZhbGlkYXRpb24iLCJwdXNoIiwiU2FjVXBsb2FkRmlsZSIsImVtaXQiLCJTZXRVcGxvYWRWYWx1ZSIsInVwbG9hZFN0YXRlIiwidXBsb2FkaWQiLCJVcGRhdGVGaWxlQ291bnQiLCJwYXVzZSIsInBhdXNlQWxsIiwidmFsdWUiLCJ1cGxvYWQiLCJ1cGxvYWRBbGwiLCJ2YWxpZGF0ZURhdGEiLCJjIiwiZXJyb3IiLCJyZXF1aXJlZCIsIm5nQ29udHJvbCIsInVwbG9hZGVkZmlsZWNvdW50IiwiZmlsZW5hbWUiLCJpc1ZhbGlkIiwiZXh0ZW5zaW9ucyIsInNwbGl0IiwidG9Mb3dlckNhc2UiLCJlbmRzV2l0aCIsImZpbGVzaXplIiwic2V0QXR0cmlidXRlIiwidXJsIiwiZGVwcyIsImkxIiwiU2FjRm9ybUxheW91dENvbW1vbiIsImkwIiwiSW5qZWN0b3IiLCJSZW5kZXJlcjIiLCJOZ1pvbmUiLCJ0YXJnZXQiLCLJtcm1RmFjdG9yeVRhcmdldCIsImlucHV0cyIsIm91dHB1dHMiLCJ2aWV3UXVlcmllcyIsInByb3BlcnR5TmFtZSIsImZpcnN0IiwicHJlZGljYXRlIiwiZGVzY2VuZGFudHMiLCJzdGF0aWMiLCJ1c2VzSW5oZXJpdGFuY2UiLCJuZ0ltcG9ydCIsImRlY29yYXRvcnMiLCJkb2N1bWVudGlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29tbW9uL2Jhc2V1cGxvYWRjb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZSc7XG5pbXBvcnQgeyBJVXBsb2FkQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXVwbG9hZGNvbnRyb2wnO1xuaW1wb3J0IHsgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLCBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTQUNMT0NBTElTQVRJT05fU0VSVklDRSwgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtbG9jYWxpc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBVcGxvYWRTdGF0ZSwgVXBsb2FkeE9wdGlvbnMsIFVwbG9hZHhTZXJ2aWNlIH0gZnJvbSAnbmd4LXVwbG9hZHgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuLy8gI3JlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG5cbi8qKlxuICogQmFzZSBLbGFzc2UgZsO8ciBVcGxvYWRlciBDb250cm9sXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1VwbG9hZEJhc2U8VkFMVUU+IGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxWQUxVRT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBFcmxhdWJ0ZSBEYXRlaXR5cGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWxsb3dlZHR5cGVzOiBzdHJpbmcgPSAnKic7XG5cbiAgICAvKipcbiAgICAgKiBGaWxlcyBhdXRvbWF0aXNjaCBob2NobGFkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9hdXRvdXBsb2FkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBQYXVzaWVyZW4gdm9uIFVwbG9hZHMgZXJsYXViZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbmFibGVwYXVzZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBUEkgRW5kcG9pbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbmRwb2ludDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIF90b2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2V0dGluZ3NcbiAgICAgKi9cbiAgICBwcml2YXRlIG9wdGlvbnM6IFVwbG9hZHhPcHRpb25zID0ge307XG5cbiAgICAvKipcbiAgICAgKiBGaWxlIElucHV0IENvbnRyb2xcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdmaWxlcycsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSB1cGxvYWRJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBTZXJ2aWNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwbG9hZFNlcnZpY2U6IFVwbG9hZHhTZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxpbmcgdm9uIG5ldWVuIEZpbGVzIGltIElucHV0IENvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAvLyBleGl0IGlmIGZpbGVzIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgIGlmICghdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5HZXRNYXhGaWxlcygpID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWF4RmlsZXMgPSB0aGlzLkdldE1heEZpbGVzKCkgKyB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZUZpbGVzID0gbWF4RmlsZXMgLSB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAocG9zc2libGVGaWxlcyA8IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKS5zcGxpY2UoXG4gICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGggKyBwb3NzaWJsZUZpbGVzXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIGNsb25lIGZpbGVzXG4gICAgICAgICAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4gZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChmaWxlKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMgPSBkYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaGFuZGxlRmlsZXModGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5pZXJ0IGRhcyBDb250cm9sIGFscyBSZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0ZW5lciBmw7xyIEZpbGVzXG4gICAgICovXG4gICAgcHVibGljIGxpc3RlbmVyRm46ICgpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXJ2aWNlIGbDvHIgRXJyb3IgTG9jYWxpc2F0aW9uXG4gICAgICovXG4gICAgcHVibGljIGxuZ1Jlc291cmNlU2VydmljZTogSVNhY0xvY2FsaXNhdGlvblNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBNYXguIERhdGVpZ3LDtnNzZSBmw7xyIEZpbGVzIGRpZSBob2NoZ2VsYWRlbiB3ZXJkZW4ga8O2bm5lbi4gMCBkZWFrdGl2aWVydCBkZW4gRmlsdGVyXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG1heGZpbGVzaXplOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiBhbiBlcnJvciBpcyB0cmlnZ2VyZWQgaW4gdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uZmlsZWVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIGEgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCBmb3IgbXVsdGlwbGUgdXBsb2FkcyBwZXIgZmlsZS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb251cGxvYWRjb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8SVNhY1VwbG9hZEV2ZW50Q29tcGxldGVTdGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEFycmF5IHZvbiBVcGxvYWRzXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZHM6IFNhY1VwbG9hZEZpbGVbXTtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBiZWkgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGluIFZhbGlkYXRpb24gU3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZDtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXG4gICAgICogQHBhcmFtIHJlbmRlcmVyIGFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZVxuICAgICAqIEBwYXJhbSBuZ1pvbmUgbmd6b25lIGZvciBoYW5kbGluZyBleHRlcm5hbCBzY3JpcHRzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcblxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpKTtcblxuICAgICAgICB0aGlzLmxuZ1Jlc291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChcbiAgICAgICAgICAgIFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFLFxuICAgICAgICAgICAgbmV3IFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlKHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRzID0gW107XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFsbG93ZWRUeXBlcyA9ICcqJztcbiAgICAgICAgdGhpcy5vcHRpb25zLmNvbmN1cnJlbmN5ID0gMTtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRva2VuID0gJ3NvbWV0b2tlbic7XG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdGhpcy5fYXV0b3VwbG9hZDtcbiAgICAgICAgdGhpcy5vcHRpb25zLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHRoaXMub3B0aW9ucy5jaHVua1NpemUgPSAxMDI0ICogMTYgKiA4O1xuICAgICAgICB0aGlzLm9wdGlvbnMuaGVhZGVycyA9IChmOiBGaWxlKSA9PiAoe1xuICAgICAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBgZmlsZW5hbWU9JHtlbmNvZGVVUkkoZi5uYW1lKX1gLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbml0IG5ldyBTZXJ2aWNlIEluc3RhbmNlXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZSA9IG5ldyBVcGxvYWR4U2VydmljZSgpO1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaW5pdCh0aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgIC8vIFN1YnNjcmlwZSBFdmVudCBmb3IgU3RhdGUgY2hhbmdlc1xuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZSgodWZpbGU6IFVwbG9hZFN0YXRlKSA9PiB0aGlzLm9uVXBsb2FkKHVmaWxlKSk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8qKlxuICAgICAqIEljb24gZm9yIGJyb3dzZSBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25Ccm93c2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuVXBsb2FkQ29tcG9uZW50QnJvd3NlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBjb250aW5vdXMgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkNvbnRpbnVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLlVwbG9hZENvbXBvbmVudENvbnRpbnVlSWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpY29uIGZvciBkZWxldGUgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvbkRlbGV0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnREZWxldGVJY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGljb24gZm9yIHBhdXNlIGJ1dHRvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEljb25QYXVzZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRQYXVzZUljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaWNvbiBmb3IgdXBsb2FkIGJ1dHRvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgSWNvblVwbG9hZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5VcGxvYWRDb21wb25lbnRVcGxvYWRJY29uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWxsb3dlZHR5cGVzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd2VkdHlwZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXJsYXVidGUgRGF0ZWl0eXBlbiBmw7xyIGRlbiBVcGxvYWQuIEZvcm1hdDogXCIueHh4LC55eXksLnp6elwiXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFsbG93ZWR0eXBlcyh0eXBlczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2FsbG93ZWR0eXBlcyA9IHR5cGVzO1xuICAgICAgICB0aGlzLnNldEFsbG93ZWRUeXBlcyh0eXBlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvdXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b3VwbG9hZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxlcyBuYWNoIGRlciBBdXN3YWhsIGF1dG9tYXRpc2NoIGhvY2hsYWRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBhdXRvdXBsb2FkKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fYXV0b3VwbG9hZCA9IHY7XG4gICAgICAgIHRoaXMub3B0aW9ucy5hdXRvVXBsb2FkID0gdjtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbm5lY3QodGhpcy5vcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVuYWJsZXBhdXNlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlcGF1c2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkcyBrw7ZubmVuIHVudGVyYnJvY2hlbiB3ZXJkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW5hYmxlcGF1c2UodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9lbmFibGVwYXVzZSA9IHY7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbmRwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5kcG9pbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pZXJ0IGRlbiBSZWdpc3RyYXRpb24gRW5kcG9pbnQgZsO8ciBVcGxvYWRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlbmRwb2ludCh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZW5kcG9pbnQgPSB2O1xuICAgICAgICB0aGlzLnNldEVuZHBvaW50KHYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRva2VuIGZvciBCZWFyZXIgQXV0aGVudGljYXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9rZW4gZm9yIEJlYXJlciBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0b2tlbih2OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3Rva2VuID0gdjtcbiAgICAgICAgdGhpcy5zZXRUb2tlbih2KTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBNZXRob2RlIGthbm4gZsO8ciBDb250cm9scyB2ZXJ3ZW5kZXQgd2VyZGVuLCB6dXPDpHR6bGljaGUgVmFsaWRpZXJ1bmdlbiBiZWkgaGluenVmw7xnZW4gZGVyIEZpbGVzIHp1IG1hY2hlblxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGUgRmlsZSBkYXMgaGluenVnZWbDvGd0IHd1cmRlLlxuICAgICAqIEByZXR1cm5zIFZhbGRpZXJ1bmcgaXN0IGVyZm9sZ3JlaWNoXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IEN1c3RvbUFkZFZhbGlkYXRpb24oZmlsZTogVXBsb2FkU3RhdGUpOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBkZXIgRGF0ZWkgZGllIEhvY2hnZWxhZGVuIHdpcmRcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIGRlcyBEYXRlaW5hbWVucy5cbiAgICAgKi9cbiAgICBwdWJsaWMgRmlsZW5hbWUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy51cGxvYWRzWzBdLm5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZE5vRmlsZXNTZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaWJ0IGFuIG9iIFF1ZXVlIEVsZW1lbnRlIGJlaW5oYWx0ZXRcbiAgICAgKiBAcmV0dXJucyBFbGVtZW50ZSBpbiBkZXIgUXVldWVcbiAgICAgKi9cbiAgICBwdWJsaWMgSGFzUXVldWVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2lidCBhbiBvYiBlaW4gVXBsb2FkIGFiZ2VzY2hsb3NzZW4gaXN0XG4gICAgICogQHJldHVybnMgVXBsb2FkIGVyZm9sZ3JlaWNoXG4gICAgICovXG4gICAgcHVibGljIEhhc1N1Y2Nlc3NVcGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2Fkcy5maWx0ZXIoKGl0bSkgPT4gaXRtLnN0YXR1cyAhPT0gJ2NvbXBsZXRlJykubGVuZ3RoID09PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgcGF1c2llcnRcbiAgICAgKiBAcmV0dXJucyBQYXVzaWVydGVyIFVwbG9hZCBpc3Qgdm9yaGFuZGVuXG4gICAgICovXG4gICAgcHVibGljIElzUGF1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAncGF1c2VkJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgaW4gZGVyIFF1ZXVlIEVsZW1lbnRlIGRpZSB6dW0gVXBsb2FkIGJlcmVpdCBzaW5kIHZvcmhhbmRlbiBzaW5kLlxuICAgICAqIEByZXR1cm5zIEVsZW1lbnRlIGbDvHIgVXBsb2FkIHZvcmhhbmRlblxuICAgICAqL1xuICAgIHB1YmxpYyBJc1N0YXRlVG9VcGxvYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdhZGRlZCcgfHwgaXRtLnN0YXR1cyA9PT0gJ3BhdXNlZCcpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHLDvGZ0IG9iIGVpbiBVcGxvYWQgZWluZXMgRmlsZXMgYW0gbGF1ZmVuIGlzdFxuICAgICAqIEByZXR1cm5zIFVwbG9hZCBpc3QgYW0gbGF1ZmVuXG4gICAgICovXG4gICAgcHVibGljIElzVXBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRzLmZpbHRlcigoaXRtKSA9PiBpdG0uc3RhdHVzID09PSAndXBsb2FkaW5nJykubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaWJ0IGRlbiBVcGxvYWRmb3J0c2Nocml0dCB6dXLDvGNrXG4gICAgICogQHJldHVybnMgVXBsb2FkIEZvcnRzY2hyaXR0LiBXZXJ0IHZvbiAwLTEwMFxuICAgICAqL1xuICAgIHB1YmxpYyBQcm9ncmVzcygpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHNbMF0ucHJvZ3Jlc3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZGUgd2VsY2hlIGRpZSBVcGxvYWQgSUQncyBpbiBkYXMgTW9kZWwgc2V0enQgb2RlciBsw7ZzY2h0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSBUeXBlIHZvbiBGaWxlIElEJ3NcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgU2V0VXBsb2FkVmFsdWUoZmlsZTogVXBsb2FkU3RhdGUpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIHNpbmdsZSB1cGxvYWRcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBjYW5jZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuY2VsKHVwbG9hZElkKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHsgYWN0aW9uOiAnY2FuY2VsJywgdXBsb2FkSWQ6IHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbCBhbGwgVXBsb2FkZWQgZmlsZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuY2VsQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5IYXNRdWV1ZUl0ZW0oKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdjYW5jZWwnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzdHJveSBkZXMgQ29udHJvbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmxpc3RlbmVyRm4pIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGlzaWVydCBkYXMgQ29udHJvbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgLy8gSW5pdCBFdmVudCBMaXN0ZW5lciBmb3IgSW5wdXQgRmlsZSBDb250cm9sIGFuZCBIYW5kbGluZyBGaWxlc1xuICAgICAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQsICdjaGFuZ2UnLCB0aGlzLmZpbGVMaXN0ZW5lcik7XG5cbiAgICAgICAgdGhpcy5zZXRBbGxvd2VkVHlwZXModGhpcy5fYWxsb3dlZHR5cGVzKTtcbiAgICAgICAgdGhpcy5zZXRFbmRwb2ludCh0aGlzLl9lbmRwb2ludCk7XG4gICAgICAgIHRoaXMuc2V0VG9rZW4odGhpcy5fdG9rZW4pO1xuXG4gICAgICAgIGlmICh0aGlzLl9lbmRwb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRwb2ludCBpcyBub3QgZGVmaW5lZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb25uZWN0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIEV2ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBsb2Fkc091dFN0cmVhbSBVcGxvYWQgSXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBvblVwbG9hZCh1ZmlsZTogVXBsb2FkU3RhdGUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnVwbG9hZHMuZmluZEluZGV4KChmKSA9PiBmLnVwbG9hZElkID09PSB1ZmlsZS51cGxvYWRJZCk7XG5cbiAgICAgICAgaWYgKHVmaWxlLnN0YXR1cyA9PT0gJ2FkZGVkJyB8fCAodWZpbGUuc3RhdHVzID09PSAncXVldWUnICYmIGluZGV4IDwgMCkpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uVmFsaWQodWZpbGUubmFtZSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuQ3VzdG9tQWRkVmFsaWRhdGlvbih1ZmlsZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkcy5wdXNoKG5ldyBTYWNVcGxvYWRGaWxlKHVmaWxlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsKHVmaWxlLnVwbG9hZElkKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0V4dGVuc2lvblZhbGlkKHVmaWxlLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25maWxlZXJyb3IuZW1pdCgnSU5WQUxJRF9FWFRFTlNJT04nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRmlsZVNpemVWYWxpZCh1ZmlsZS5zaXplKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZmlsZWVycm9yLmVtaXQoJ0lOVkFMSURfRklMRVNJWkUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodWZpbGUuc3RhdHVzID09PSAnY2FuY2VsbGVkJykge1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5TZXRVcGxvYWRWYWx1ZShudWxsKTtcbiAgICAgICAgfSBlbHNlIGlmICh1ZmlsZS5zdGF0dXMgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0ucHJvZ3Jlc3MgPSB1ZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICAgICAgdGhpcy5TZXRVcGxvYWRWYWx1ZSh1ZmlsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFN0YXRlOiBJU2FjVXBsb2FkRXZlbnRDb21wbGV0ZVN0YXRlID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHVmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogdWZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICB1cGxvYWRpZDogdGhpcy51cGxvYWRzW2luZGV4XS51cGxvYWRJZCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMub251cGxvYWRjb21wbGV0ZS5lbWl0KHVwbG9hZFN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRzW2luZGV4XS5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2Fkc1tpbmRleF0uc3RhdHVzID0gdWZpbGUuc3RhdHVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5VcGRhdGVGaWxlQ291bnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgU2luZ2xlIEZpbGVcbiAgICAgKiBAcGFyYW0gdXBsb2FkSWQgSUQgb2YgRmlsZSB0byBDYW5jZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGF1c2UodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICdwYXVzZScsIHVwbG9hZElkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhdXNlIGFsbCBVcGxvYWRzXG4gICAgICovXG4gICAgcHVibGljIHBhdXNlQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5Jc1VwbG9hZGluZygpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3BhdXNlJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJlYXJlciB0b2tlbiBpbiB0aGUgdXBsb2FkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VG9rZW4odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU2luZ2xlIEZpbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cGxvYWRJZCBJRCBvZiBGaWxlIHRvIFVwbG9hZFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWQodXBsb2FkSWQpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNvbnRyb2woeyBhY3Rpb246ICd1cGxvYWQnLCB1cGxvYWRJZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgYWxsIHF1ZXVlZCBGaWxlc1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWRBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLklzU3RhdGVUb1VwbG9hZCgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29udHJvbCh7IGFjdGlvbjogJ3VwbG9hZCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGllcnQgZGFzIFVwbG9hZCBDb250cm9sXG4gICAgICogQHBhcmFtIGMgQ29udHJvbCBkYXMgdmFsaWRpZXJ0IHdlcmRlbiBzb2xsXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmlzcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQpKGMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIGdldCBtYXguIGZpbGVzIHRoYXQgY2FuIGJlIHVwbG9hZGVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IEdldE1heEZpbGVzKCk6IG51bWJlcjtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICBwcml2YXRlIFVwZGF0ZUZpbGVDb3VudCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJVXBsb2FkQ29udHJvbCkudXBsb2FkZWRmaWxlY291bnQgPSB0aGlzLlVwbG9hZGVkRmlsZUNvdW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdXBsb2FkZWQgZmlsZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIFVwbG9hZGVkRmlsZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZHMuZmlsdGVyKChpdG0pID0+IGl0bS5zdGF0dXMgPT09ICdjb21wbGV0ZScpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcsO8ZnQgb2IgZGllIERhdGVpZXJ3ZWl0ZXJ1bmcgZ8O8bHRpZyBpc3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlbmFtZSBEYXRlaW5hbWVcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRXh0ZW5zaW9uVmFsaWQoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fYWxsb3dlZHR5cGVzID09PSAnKicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uczogc3RyaW5nW10gPSB0aGlzLl9hbGxvd2VkdHlwZXMuc3BsaXQoJywnKTtcblxuICAgICAgICBleHRlbnNpb25zLmZvckVhY2goKGl0bSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpbGVuYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoaXRtLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByw7xmdCBvYiBkYXMgRmlsZSBuaWNodCB6dSBncm9zcyBpc3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXNpemUgTWF4IEZpbGUgU2l6ZSBpbiBCeXRlc1xuICAgICAqL1xuICAgIHByaXZhdGUgaXNGaWxlU2l6ZVZhbGlkKGZpbGVzaXplOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubWF4ZmlsZXNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ZmlsZXNpemUgPj0gZmlsZXNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0enQgZGllIGVybGF1YnRlbiBEYXRlbnR5cGVuIGbDvHIgZGVuIFVwbG9hZFxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGVzIEVybGF1YnRlIEZpbGUgRXh0ZW5zaW9uc1xuICAgICAqL1xuICAgIHByaXZhdGUgc2V0QWxsb3dlZFR5cGVzKHR5cGVzOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gUHLDvGZlbiBVcGxvYWRJbnB1dCBiZXJlaXRzIGdlbGFkZW4sIGlzdCBOVUxMIHdlbm4gRXh0ZW5zaW9uIGltIE1hcmt1cCBuYWNoIE5nTW9kZWwgZ2VzZXR6dCB3aXJkLlxuICAgICAgICBpZiAodGhpcy51cGxvYWRJbnB1dCAmJiB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudCwgJ2FjY2VwdCcsIHR5cGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3B0aW9ucy5hbGxvd2VkVHlwZXMgPSB0eXBlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR6dCBkZW4gVXBsb2FkIEVuZHBvaXRcbiAgICAgKiBAcGFyYW0gdXJsIFJlZ2lzdGVyIFVSSVxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RW5kcG9pbnQodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmVuZHBvaW50ID0gdXJsO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG5cbi8qKlxuICogS2xhc3NlIGbDvHIgZGVuIFVwbG9hZCBlaW5lciBEYXRlaSBpbiBkZXIgVXBsb2FkIENvbXBvbmVudFxuICovXG5leHBvcnQgY2xhc3MgU2FjVXBsb2FkRmlsZSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBEb2N1bWVudCBJRFxuICAgICAqL1xuICAgIHB1YmxpYyBkb2N1bWVudGlkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEYXRlaW5hbWVcbiAgICAgKi9cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIEZvcnRzY2hyaXR0XG4gICAgICovXG4gICAgcHVibGljIHByb2dyZXNzOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBVcGxvYWQgU3RhdHVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXR1czogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIElEXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZElkOiBzdHJpbmc7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBLb25zdHJ1a3RvclxuICAgICAqIEBwYXJhbSB1ZmlsZSBVcGxvYWQgU3RhdHVzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodWZpbGU6IFVwbG9hZFN0YXRlKSB7XG4gICAgICAgIHRoaXMudXBsb2FkSWQgPSB1ZmlsZS51cGxvYWRJZDtcbiAgICAgICAgdGhpcy5uYW1lID0gdWZpbGUubmFtZTtcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHVmaWxlLnByb2dyZXNzO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IHVmaWxlLnN0YXR1cztcbiAgICAgICAgdGhpcy5kb2N1bWVudGlkID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xufVxuXG4vLyAjZW5kcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcbiJdLCJtYXBwaW5ncyI6Ijhqc0RBMkpJO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQXZKSixPQUFTRSx3QkFBd0IsQ0FBRUMsOEJBQThCLEtBQVEsYUFBYSxDQUN0RixPQUFTQyx1QkFBdUIsQ0FBRUMsNkJBQTZCLEtBQVEsc0NBQXNDLENBQzdHLE9BQVNDLFVBQVUsS0FBUSxlQUFlLENBQzFDLE9BQVNDLG1CQUFtQixLQUFRLG9CQUFvQixDQUN4RCxPQUNJQyxTQUFTLENBRVRDLFlBQVksQ0FFWkMsS0FBSyxDQUlMQyxNQUFNLENBRU5DLFNBQVMsS0FDTixlQUFlLENBRXRCLE9BQXNDQyxjQUFjLEtBQVEsYUFBYSxDQUN6RSxPQUFxQkMsRUFBRSxLQUFRLE1BQU0sQyxrRkFFckM7QUFFQTs7R0FHQSxLQUNzQixDQUFBQyxhQUFxQixRQUFRLENBQUFSLG1CQUEwQixDQTBIekU7QUFFQTtBQUVBOzs7Ozs7T0FPQVMsWUFDSUMsVUFBK0IsQ0FDL0JDLFFBQWtCLENBQ1ZDLFFBQW1CLENBQ25CQyxNQUFjLEVBQUFwQixjQUFBLEdBQUFxQixDQUFBLEtBQUFyQixDQUFBLGlCQUFBc0IsQ0FBQSxNQUV0QixLQUFLLENBQUNMLFVBQVUsQ0FBRUMsUUFBUSxDQUFDLENBQUNsQixjQUFB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