raise-common-lib 0.0.207 → 0.0.209

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 (77) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +89 -20
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +2 -2
  7. package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
  8. package/esm2015/lib/dashboard/dialog-group/download/index.component.js +3 -3
  9. package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +3 -3
  10. package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +2 -2
  11. package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +2 -2
  12. package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +2 -2
  13. package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -3
  14. package/esm2015/lib/dashboard/pane-group-new.component.js +1 -1
  15. package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +2 -2
  16. package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +2 -2
  17. package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +2 -2
  18. package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +3 -3
  19. package/esm2015/lib/form/checkbox-group/index.component.js +60 -5
  20. package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +2 -2
  21. package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
  22. package/esm5/lib/dashboard/dialog-group/download/index.component.js +3 -3
  23. package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +3 -3
  24. package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +2 -2
  25. package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +2 -2
  26. package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +2 -2
  27. package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -3
  28. package/esm5/lib/dashboard/pane-group-new.component.js +1 -1
  29. package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +2 -2
  30. package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +2 -2
  31. package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +2 -2
  32. package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +3 -3
  33. package/esm5/lib/form/checkbox-group/index.component.js +74 -5
  34. package/fesm2015/raise-common-lib.js +75 -20
  35. package/fesm2015/raise-common-lib.js.map +1 -1
  36. package/fesm5/raise-common-lib.js +89 -20
  37. package/fesm5/raise-common-lib.js.map +1 -1
  38. package/lib/form/checkbox-group/index.component.d.ts +5 -0
  39. package/package.json +1 -1
  40. package/raise-common-lib.metadata.json +1 -1
  41. package/src/assets/img/arrow_right.svg +4 -4
  42. package/src/assets/img/calendar-disabled.svg +6 -6
  43. package/src/assets/img/calendar.svg +6 -6
  44. package/src/assets/img/calendar_arrow_left.svg +3 -3
  45. package/src/assets/img/calendar_arrow_right.svg +3 -3
  46. package/src/assets/img/checked-vector.svg +3 -3
  47. package/src/assets/img/dialog-close.svg +4 -4
  48. package/src/assets/img/dialog-grow.svg +6 -6
  49. package/src/assets/img/dialog-shrink.svg +6 -6
  50. package/src/assets/img/plus.svg +4 -4
  51. package/src/assets/img/search.svg +4 -4
  52. package/src/assets/img/shrink-icon.svg +6 -6
  53. package/src/assets/img/time-disabled.svg +4 -4
  54. package/src/assets/img/time.svg +4 -4
  55. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  56. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  57. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  58. package/src/assets/img/toolbar-action-combine.svg +4 -4
  59. package/src/assets/img/toolbar-action-edit.svg +4 -4
  60. package/src/assets/img/toolbar-action-expand.svg +7 -7
  61. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  62. package/src/assets/img/toolbar-action-lock.svg +6 -6
  63. package/src/assets/img/toolbar-action-preview.svg +7 -7
  64. package/src/assets/img/toolbar-action-publish.svg +5 -5
  65. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  66. package/src/assets/img/toolbar-action-rename.svg +7 -7
  67. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  68. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  69. package/src/assets/img/toolbar-action-settle.svg +7 -7
  70. package/src/assets/img/toolbar-action-share.svg +5 -5
  71. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  72. package/src/assets/img/toolbar-action-sync.svg +4 -4
  73. package/src/assets/img/toolbar-action-template.svg +6 -6
  74. package/src/assets/img/toolbar-action-workflow.svg +9 -9
  75. package/src/assets/style/reset/button.scss +0 -1
  76. package/src/assets/style/reset/checkbox.scss +8 -3
  77. package/src/assets/style/variables.scss +1 -0
@@ -4085,7 +4085,7 @@ export class GadgetPivotChartComponent {
4085
4085
  }
4086
4086
  GadgetPivotChartComponent.decorators = [
4087
4087
  { type: Component, args: [{
4088
- selector: "kt-gadget-pivot-chart",
4088
+ selector: "rs-gadget-pivot-chart",
4089
4089
  template: "<div class=\"control-section\" style=\"overflow: hidden; height: 100%\">\r\n\t<ejs-pivotview\r\n\t\twidth=\"100%\"\r\n\t\theight=\"100%\"\r\n\t\tstyle=\"display: block\"\r\n\t\t[dataSourceSettings]=\"dataSourceSettings\"\r\n\t\t#pivotview\r\n\t\t(dataBound)=\"dataBound($event)\"\r\n\t\tenableValueSorting=\"true\"\r\n\t\tallowConditionalFormatting=\"true\"\r\n\t\tallowExcelExport=\"true\"\r\n\t\tallowGrouping=\"true\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\tenableVirtualization=\"true\"\r\n\t\t(aggregateCellInfo)=\"aggregateCellInfo($event)\"\r\n\t\t(cellClick)=\"cellClick($event)\"\r\n\t\tallowDrillThrough=\"true\"\r\n\t\t(actionFailure)=\"actionFailure($event)\"\r\n\t\t(fieldListRefreshed)=\"fieldListRefreshed($event)\"\r\n\t\t(drillThrough)=\"drillThrough($event)\"\r\n\t\t[chartSettings]=\"chartSettings\"\r\n\t\t(chartSeriesCreated)=\"chartSeriesCreated($event)\"\r\n\t\t[displayOption]=\"displayOption\"\r\n\t\t[showTooltip]=\"false\"\r\n\t\t(enginePopulated)=\"afterEnginePopulate($event)\"\r\n\t\t(beforeExport)=\"beforeExport($event)\"\r\n\t>\r\n\t</ejs-pivotview>\r\n\r\n\t<div class=\"pivotfieldlist-control\">\r\n\t\t<ejs-pivotfieldlist\r\n\t\t\t[id]=\"portlet.newId\"\r\n\t\t\t#pivotfieldlist\r\n\t\t\thidden=\"true\"\r\n\t\t\tenableValueSorting=\"true\"\r\n\t\t\tshowFieldList=\"true\"\r\n\t\t\tallowCalculatedField=\"true\"\r\n\t\t\tallowDeferLayoutUpdate=\"true\"\r\n\t\t\trenderMode=\"Popup\"\r\n\t\t\t(enginePopulated)=\"afterPopulate($event)\"\r\n\t\t\t(memberEditorOpen)=\"onMemberEditorOpen($event)\"\r\n\t\t\t(enginePopulating)=\"enginePopulating($event)\"\r\n\t\t\t(aggregateCellInfo)=\"aggregateCellInfo($event)\"\r\n\t\t\t(fieldDrop)=\"onFieldDrop($event)\"\r\n\t\t\t(actionComplete)=\"actionComplete($event)\"\r\n\t\t\t(actionBegin)=\"actionBegin($event)\"\r\n\t\t\t(calculatedFieldCreate)=\"calculatedFieldCreate($event)\"\r\n\t\t\t(load)=\"onLoad()\"\r\n\t\t\t(created)=\"created($event)\"\r\n\t\t>\r\n\t\t</ejs-pivotfieldlist>\r\n\t</div>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n",
4090
4090
  providers: [
4091
4091
  ToolbarService,
@@ -4290,4 +4290,4 @@ if (false) {
4290
4290
  */
4291
4291
  GadgetPivotChartComponent.prototype.pbf;
4292
4292
  }
4293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3JhaXNlLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvZGFzaGJvYXJkL2dhZGdldC1ncm91cC9nYWRnZXQtcGl2b3QtY2hhcnQvZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ04saUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUNULHVCQUF1QixFQUN2QixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixrQkFBa0IsRUFHbEIsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBRXRCLGtCQUFrQixFQUdsQixvQkFBb0IsRUFJcEIsbUJBQW1CLEdBRW5CLE1BQU0sbUNBQW1DLENBQUM7QUFFM0MsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTVELE9BQU8sRUFDTixNQUFNLEVBQ04sY0FBYyxFQUNkLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sSUFBSSxPQUFPLEVBQ2pCLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEdBQ0osTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUNOLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9B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QyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3ZDO29CQUNELElBQ0MsRUFBRSxDQUFDLE1BQU07d0JBQ1QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUNoQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7d0JBQzFCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7d0JBRTNELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzdDLElBQ0MsRUFBRSxDQUFDLE1BQU07d0JBQ1QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUNoQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7d0JBQzFCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7d0JBRTNELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hELElBQ0MsRUFBRSxDQUFDLE1BQU07d0JBQ1QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUNoQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7d0JBQzFCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQzVDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxD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NEM7Ozs7O0lBQzVDLG1EQUdFOzs7OztJQUNGLGtEQUEyQjs7Ozs7SUFDM0Isa0RBQTJCOztJQUMzQixtREFBc0I7O0lBQ3RCLCtDQUFtQzs7SUFDbkMsZ0RBQXdCOzs7OztJQUN4QixxREFBOEI7O0lBQzlCLGdEQUFtQjs7SUFDbkIsK0NBQThCOztJQUM5Qiw2Q0FBeUI7O0lBODlDekIsbURBQW9COzs7OztJQTM5Q25CLDREQUF3RDs7Ozs7SUFDeEQscURBQTBDOzs7OztJQUMxQyx3Q0FBOEI7Ozs7O0lBQzlCLHdDQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdElucHV0LFxyXG5cdE9uSW5pdCxcclxuXHRWaWV3Q2hpbGQsXHJcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdE91dHB1dCxcclxuXHRPcHRpb25hbCxcclxuXHRJbmplY3QsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7XHJcblx0SURhdGFPcHRpb25zLFxyXG5cdFBpdm90RmllbGRMaXN0Q29tcG9uZW50LFxyXG5cdFBpdm90Vmlld0NvbXBvbmVudCxcclxuXHRFbmdpbmVQb3B1bGF0ZWRFdmVudEFyZ3MsXHJcblx0SURhdGFTZXQsXHJcblx0VG9vbGJhclNlcnZpY2UsXHJcblx0RmllbGRMaXN0U2VydmljZSxcclxuXHROdW1iZXJGb3JtYXR0aW5nU2VydmljZSxcclxuXHRDYWxjdWxhdGVkRmllbGRTZXJ2aWNlLFxyXG5cdENhbGN1bGF0ZWRGaWVsZENyZWF0ZUV2ZW50QXJncyxcclxuXHRHcm91cGluZ0JhclNlcnZpY2UsXHJcblx0RmllbGREcm9wRXZlbnRBcmdzLFxyXG5cdElTb3J0LFxyXG5cdFZpcnR1YWxTY3JvbGxTZXJ2aWNlLFxyXG5cdElQaXZvdFZhbHVlcyxcclxuXHRJUGFnZVNldHRpbmdzLFxyXG5cdERyaWxsVGhyb3VnaEV2ZW50QXJncyxcclxuXHREcmlsbFRocm91Z2hTZXJ2aWNlLFxyXG5cdFBpdm90QWN0aW9uRmFpbHVyZUV2ZW50QXJncyxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcGl2b3R2aWV3XCI7XHJcblxyXG5pbXBvcnQgeyBMMTBuLCBjcmVhdGVFbGVtZW50LCBlbmFibGVSaXBwbGUgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHsgUEJGX1RPS0VOIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvSW5qZWN0aW9uVG9rZW5cIjtcclxuXHJcbmltcG9ydCB7XHJcblx0c29ydEJ5LFxyXG5cdGRpZmZlcmVuY2VXaXRoLFxyXG5cdHN0YXJ0c1dpdGgsXHJcblx0Y2xvbmVEZWVwLFxyXG5cdHVuaXFCeSxcclxuXHRmaWx0ZXIgYXMgX2ZpbHRlcixcclxuXHRtYXhCeSxcclxuXHRtaW5CeSxcclxuXHRzdW1CeSxcclxuXHRtZWFuQnksXHJcblx0bWVhbixcclxufSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuXHRBR0dSRUdBVEVfVFlQRVNfVEVYVCxcclxuXHRBTExfQUdHUkVHQVRFX1RZUEVTLFxyXG5cdERhc2hib2FyZFBvcmxldHNTZXJ2aWNlLFxyXG59IGZyb20gXCIuLi8uLi9kYXNoYm9hcmRQb3JsZXRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnJvd3NlciB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNYXNrZWRUZXh0Qm94IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1pbnB1dHMvc3JjL21hc2tlZHRleHRib3gvbWFza2VkdGV4dGJveFwiO1xyXG5pbXBvcnQgeyBEYXRhTWFuYWdlciB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YS9zcmMvbWFuYWdlclwiO1xyXG5pbXBvcnQgeyBQcmVkaWNhdGUsIFF1ZXJ5IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1kYXRhL3NyYy9xdWVyeVwiO1xyXG5pbXBvcnQgeyBEYXRhVXRpbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YVwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuZW5hYmxlUmlwcGxlKGZhbHNlKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcImt0LWdhZGdldC1waXZvdC1jaGFydFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2dhZGdldC1waXZvdC5jb21wb25lbnQuc2Nzc1wiXSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdFRvb2xiYXJTZXJ2aWNlLFxyXG5cdFx0RmllbGRMaXN0U2VydmljZSxcclxuXHRcdE51bWJlckZvcm1hdHRpbmdTZXJ2aWNlLFxyXG5cdFx0Q2FsY3VsYXRlZEZpZWxkU2VydmljZSxcclxuXHRcdEdyb3VwaW5nQmFyU2VydmljZSxcclxuXHRcdFZpcnR1YWxTY3JvbGxTZXJ2aWNlLFxyXG5cdFx0RHJpbGxUaHJvdWdoU2VydmljZSxcclxuXHRdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FkZ2V0UGl2b3RDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QElucHV0KCkgcG9ydGxldDtcclxuXHRASW5wdXQoKSBkYXNoYm9hcmQ7XHJcblx0QElucHV0KCkgcG9ydGxldHM7XHJcblx0QE91dHB1dCgpIHVwZGF0ZVBvcmxldENvbmZpZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRwcml2YXRlIFBpdm90X0RhdGE6IElEYXRhU2V0W107XHJcblx0cHJpdmF0ZSBjb25maWc7XHJcblx0cHVibGljIGRhdGFTb3VyY2VTZXR0aW5nczogSURhdGFPcHRpb25zO1xyXG5cdHByaXZhdGUgZXhjbHVkZUZpZWxkcyA9IFtdO1xyXG5cdHByaXZhdGUgZmlsdGVyU2V0dGluZ3MgPSBbXTtcclxuXHRwcml2YXRlIGRhdGVQaXBlRm9ybWF0O1xyXG5cdHB1YmxpYyB0cmFuc2xhdGlvbjtcclxuXHRAVmlld0NoaWxkKFwicGl2b3R2aWV3XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHByaXZhdGUgcGl2b3RPYmo6IFBpdm90Vmlld0NvbXBvbmVudDtcclxuXHRAVmlld0NoaWxkKFwicGl2b3RmaWVsZGxpc3RcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGZpZWxkbGlzdE9iajogUGl2b3RGaWVsZExpc3RDb21wb25lbnQ7XHJcblx0cHJpdmF0ZSBncmFuZFRvdGFscyA9IHt9O1xyXG5cdHByaXZhdGUgc3ViVG90YWxzID0ge307XHJcblx0cHJpdmF0ZSBwcmV2aW91c1NvcnQ6IElTb3J0O1xyXG5cdHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHRwcml2YXRlIGFsbERhdGFWYWx1ZTtcclxuXHQvLyBwcml2YXRlIGNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzO1xyXG5cdHByaXZhdGUgaXNJbml0OiBib29sZWFuID0gdHJ1ZTtcclxuXHRwcml2YXRlIHBpdm90U2VhcmNoQm94OiBNYXNrZWRUZXh0Qm94O1xyXG5cdHB1YmxpYyBkaXNwbGF5T3B0aW9uID0ge1xyXG5cdFx0dmlldzogXCJCb3RoXCIsXHJcblx0XHRwcmltYXJ5OiBcIkNoYXJ0XCIsXHJcblx0fTtcclxuXHRwdWJsaWMgY2hhcnRTZXR0aW5ncztcclxuXHRwdWJsaWMgdG9vbHRpcFNldHRpbmdzID0ge1xyXG5cdFx0ZW5hYmxlOiBmYWxzZSxcclxuXHR9O1xyXG5cdHByaXZhdGUgY29sdW1uVGV4dHMgPSBbXTtcclxuXHRwcml2YXRlIGNvbmZpZ0ZpZWxkcyA9IFtdO1xyXG5cdHByaXZhdGUgcXVhcnRlckZvcm1hdCA9IFtcclxuXHRcdHsgdmFsdWU6IFwiMDMvMjAyMVwiLCBmb3JtYXQ6IFwiTU0veXl5eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIjAzLzIxXCIsIGZvcm1hdDogXCJNTS9kZFwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIjMvMjAyMVwiLCBmb3JtYXQ6IFwiTS95eXl5XCIgfSxcclxuXHRcdHsgdmFsdWU6IFwiMy8yMVwiLCBmb3JtYXQ6IFwiTS95eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIk1hcmNoIDIwMjFcIiwgZm9ybWF0OiBcIk1NTU0geXl5eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIk1hciwgMjAyMVwiLCBmb3JtYXQ6IFwiTU1NLCB5eXl5XCIgfSxcclxuXHRcdHsgdmFsdWU6IFwiTWFyY2gsIDIwMjFcIiwgZm9ybWF0OiBcIk1NTU0sIHl5eXlcIiB9LFxyXG5cdFx0eyB2YWx1ZTogXCIyMDIxXCIsIGZvcm1hdDogXCJ5eXl5XCIgfSxcclxuXHRdO1xyXG5cdHpvb21TZXR0aW5ncyA9IHtcclxuXHRcdGVuYWJsZTogZmFsc2UsXHJcblx0fTtcclxuXHRpdGVtRGF0YVR5cGVTb3J0QXJyID0gW1xyXG5cdFx0XCJBc3NldHNcIixcclxuXHRcdFwiTGlhYmlsaXRpZXNcIixcclxuXHRcdFwiRXF1aXR5XCIsXHJcblx0XHRcIlAmTFwiLFxyXG5cdFx0XCJDYXNoZmxvd1wiLFxyXG5cdF07XHJcblx0cHJpdmF0ZSBmb3JtYXREYXRlcyA9IFtdO1xyXG5cdHByaXZhdGUgY3VzdG9tQ2FsY3VsYXRlZEZpZWxkczogYW55W10gPSBbXTsgLy8g6Ieq5a6a5LmJ6K6h566X5YiXXHJcblx0cHJpdmF0ZSBhbGxvd2VkQ2FsY3VsYXRlZEZpZWxkczogYW55W10gPSBbXTsgLy8g5YWB6K646Ieq5a6a5LmJ566X5rOV55qE5a2X5q61XHJcblx0cHJpdmF0ZSB6ZXJvRm9ybWF0RGF0YSA9IHtcclxuXHRcdGVtcHR5TGlzdDogW10sXHJcblx0XHRoZ0xpc3Q6IFtdLFxyXG5cdH07XHJcblx0cHJpdmF0ZSBtaWxsaW9uRmllbGRzID0gW107XHJcblx0cHJpdmF0ZSB0ZW1wU3VidG90YWxzID0gW107XHJcblx0cHVibGljIG9yZGVyQnlDb2x1bW5zOyAvLyBFZzogXCJEdWVEYXRlLCBTZXF1ZW5jZVwiXHJcblx0cHVibGljIGlzQXBwbHlJUlI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgY2FsY0lSUkRhdGE6IGFueTtcclxuXHRwcml2YXRlIHBlcmNlbnROdW1GaWVsZHMgPSBbXTtcclxuXHRwdWJsaWMgcGFnZUxvYWRpbmc7XHJcblx0b2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGlzbG9hZGVkOiBib29sZWFuOyAvLyDmmK/lkKblt7Lnu4/liJ3lp4vljJbov4dcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGRhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuXHRcdHByaXZhdGUgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwcml2YXRlIHBiZjogYW55LFxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcblx0XHRcdGxlZ2VuZFNldHRpbmdzOiB7XHJcblx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdGVuYWJsZU11bHRpcGxlQXhpczogZmFsc2UsXHJcblx0XHRcdHNob3dNdWx0aUxldmVsTGFiZWxzOiBmYWxzZSxcclxuXHRcdFx0Y2hhcnRTZXJpZXM6IHtcclxuXHRcdFx0XHR0eXBlOiBcIkNvbHVtblwiLFxyXG5cdFx0XHRcdGNvbHVtblNwYWNpbmc6IDAuMSxcclxuXHRcdFx0XHRjb2x1bW5XaWR0aDogMC45LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtdWx0aXBsZUF4aXNNb2RlOiBcIlN0YWNrZWRcIixcclxuXHRcdFx0cHJpbWFyeVhBeGlzOiB7XHJcblx0XHRcdFx0dGl0bGU6IFwiIFwiLFxyXG5cdFx0XHRcdGxhYmVsRm9ybWF0OiBcIk4yXCIsXHJcblx0XHRcdFx0bWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuXHRcdFx0XHRtaW5vckdyaWRMaW5lczoge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0XHRjb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxyXG5cdFx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRtaW5vclRpY2tMaW5lczogeyB2aXNpYmxlOiBmYWxzZSB9LFxyXG5cdFx0XHRcdGxpbmVTdHlsZToge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2hhcnRBcmVhOiB7XHJcblx0XHRcdFx0b3BhY2l0eTogMCxcclxuXHRcdFx0XHRib3JkZXI6IHtcclxuXHRcdFx0XHRcdHdpZHRoOiAwLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH0sXHJcblx0XHRcdHBhbGV0dGVzOiBbXHJcblx0XHRcdFx0XCIjNTk0YmI5XCIsXHJcblx0XHRcdFx0XCIjZjFhZjMyXCIsXHJcblx0XHRcdFx0XCIjNDY4OGVkXCIsXHJcblx0XHRcdFx0XCIjZTA1NjNlXCIsXHJcblx0XHRcdFx0XCIjODAzYTYzXCIsXHJcblx0XHRcdFx0XCIjNmRkOGI1XCIsXHJcblx0XHRcdFx0XCIjZTg3MjI1XCIsXHJcblx0XHRcdFx0XCIjYzVkZjQyXCIsXHJcblx0XHRcdFx0XCIjYzY0MzdkXCIsXHJcblx0XHRcdF0sXHJcblx0XHRcdHByaW1hcnlZQXhpczoge1xyXG5cdFx0XHRcdC8vIFnovbTmoIfpopjorr7nva7kuLrnqbpcclxuXHRcdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHRcdFx0bGFiZWxGb3JtYXQ6IFwiTjJcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0em9vbVNldHRpbmdzOiB7XHJcblx0XHRcdFx0ZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjpvKDmoIfmu5rova7nvKnmlL5cclxuXHRcdFx0XHRlbmFibGVQaW5jaFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjop6bmkbjnvKnmlL5cclxuXHRcdFx0XHRlbmFibGVTZWxlY3Rpb25ab29taW5nOiBmYWxzZSwgLy8g56aB55So6YCJ5oup5Yy65Z+f57yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlRGVmZXJyZWRab29taW5nOiBmYWxzZSwgLy8g56aB55So5bu26L+f57yp5pS+XHJcblx0XHRcdFx0dG9vbGJhckl0ZW1zOiBbXSxcclxuXHRcdFx0XHRlbmFibGVTY3JvbGxiYXI6IGZhbHNlLFxyXG5cdFx0XHRcdGVuYWJsZVpvb21pbmc6IGZhbHNlLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5nZXRJbmZvKCk7XHJcblx0XHR0aGlzLmdldERhdGEoKTtcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0U3RhcnRSZWZyZXNoKCkuc3Vic2NyaWJlKChkYXNoYm9hcmRJZCkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmRhc2hib2FyZC5pZCA9PT0gZGFzaGJvYXJkSWQpIHtcclxuXHRcdFx0XHRcdHRoaXMucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFJlZnJlc2hHYWRnZXQoKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuXHRcdFx0XHRpZiAoIWUpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgaWQgPSBlW1wibmV3SWRcIl07XHJcblx0XHRcdFx0Y29uc3QgY29uZmlnID0gZVtcImNvbmZpZ1wiXTtcclxuXHRcdFx0XHRpZiAoaWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCB8fCBpZCA9PT0gdGhpcy5wb3J0bGV0LmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoY29uZmlnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0Y2hhbmdlUGl2b3QoKS5zdWJzY3JpYmUoKHVwZGF0ZWQpID0+IHtcclxuXHRcdFx0XHRpZiAodXBkYXRlZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0VXBkYXRlZCgpLnN1YnNjcmliZSgobmV3SWQpID0+IHtcclxuXHRcdFx0XHRpZiAobmV3SWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCB8fCBuZXdJZCA9PT0gdGhpcy5wb3J0bGV0LmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFRhYmxlRm9ybWF0KCkuc3Vic2NyaWJlKCh1cGRhdGVkKSA9PiB7XHJcblx0XHRcdFx0aWYgKHVwZGF0ZWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG5cdFx0XHRcdC5jbGVhckZpZWxkTGlzdE9ic2VydmFibGUoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKHVwZGF0ZWQpID0+IHtcclxuXHRcdFx0XHRcdGlmICh1cGRhdGVkID09PSB0aGlzLnBvcnRsZXQubmV3SWQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuZGF0YVNvdXJjZSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuXHRcdFx0XHQuZ2V0UHZ0YWJsZURpc3BsYXlPcHRpb25DaGFydENoYW5nZSgpXHJcblx0XHRcdFx0LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZGF0YSB8fFxyXG5cdFx0XHRcdFx0XHQhdGhpcy5wb3J0bGV0IHx8XHJcblx0XHRcdFx0XHRcdHRoaXMucG9ydGxldC5uZXdJZCAhPT0gZGF0YS5uZXdJZFxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXS5jb21wbGV0ZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5pbml0Q2hhcnRTZXR0aW5nKGRhdGEuY2hhcnRUeXBlKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Q29uZmlnVG9Qb3JsZXQoKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHRcdFx0fSlcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG5cdFx0XHRcdC5nZXRFbmFibGVNdWx0aXBsZUF4aXNDaGFuZ2UoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWRhdGEgfHxcclxuXHRcdFx0XHRcdFx0IXRoaXMucG9ydGxldCB8fFxyXG5cdFx0XHRcdFx0XHR0aGlzLnBvcnRsZXQubmV3SWQgIT09IGRhdGEubmV3SWRcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodGhpcy5jaGFydFNldHRpbmdzW1wicG9pbnRSZW5kZXJcIl0pIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5jaGFydFNldHRpbmdzW1wicG9pbnRSZW5kZXJcIl0uY29tcGxldGUoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5lbmFibGVNdWx0aXBsZUF4aXMgPVxyXG5cdFx0XHRcdFx0XHRkYXRhLmVuYWJsZU11bHRpcGxlQXhpcztcclxuXHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MubXVsdGlwbGVBeGlzTW9kZSA9IGRhdGEubXVsdGlwbGVBeGlzTW9kZTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MubGVnZW5kU2V0dGluZ3MgPSB7XHJcblx0XHRcdFx0XHRcdHZpc2libGU6IGRhdGEudmlzaWJsZSxcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNoYXJ0U2V0dGluZ3MpO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmopXHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Q29uZmlnVG9Qb3JsZXQoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldENoYXJ0VHlwZUNoYW5nZSgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdCFkYXRhIHx8XHJcblx0XHRcdFx0XHQhdGhpcy5wb3J0bGV0IHx8XHJcblx0XHRcdFx0XHR0aGlzLnBvcnRsZXQubmV3SWQgIT09IGRhdGEubmV3SWRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLnR5cGUgPVxyXG5cdFx0XHRcdFx0ZGF0YS5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLnR5cGUgPT09IFwiU3RhY2tlZCBDb2x1bW5cIlxyXG5cdFx0XHRcdFx0XHQ/IFwiU3RhY2tpbmdDb2x1bW5cIlxyXG5cdFx0XHRcdFx0XHQ6IGRhdGEuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy50eXBlO1xyXG5cdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY2hhcnRTZXR0aW5ncyk7XHJcblx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmopIHRoaXMucGl2b3RPYmoucmVmcmVzaERhdGEoKTtcclxuXHRcdFx0XHR0aGlzLnNldENvbmZpZ1RvUG9ybGV0KCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0VGhlbWUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHQhZGF0YSB8fFxyXG5cdFx0XHRcdFx0IXRoaXMucG9ydGxldCB8fFxyXG5cdFx0XHRcdFx0dGhpcy5wb3J0bGV0Lm5ld0lkICE9PSBkYXRhLm5ld0lkXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IFsuLi5kYXRhLnRoZW1lXTtcclxuXHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNoYXJ0U2V0dGluZ3MpO1xyXG5cdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLmxheW91dFJlZnJlc2goKTtcclxuXHRcdFx0XHR0aGlzLnNldENvbmZpZ1RvUG9ybGV0KCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cclxuXHQvLyDmib7liLDmlbDnu4TkuK3lh7rnjrDmnIDlpJrpopHmrKHnmoTlhYPntKBcclxuXHRmaW5kTW9zdEZyZXF1ZW50KGFycikge1xyXG5cdFx0bGV0IG1heENvdW50ID0gMDtcclxuXHRcdGxldCBtb3N0RnJlcXVlbnROdW0gPSBudWxsO1xyXG5cclxuXHRcdC8vIOS9v+eUqOS4gOS4quWvueixoeadpeiuoeaVsFxyXG5cdFx0Y29uc3QgY291bnRNYXAgPSB7fTtcclxuXHJcblx0XHRhcnIuZm9yRWFjaCgobnVtKSA9PiB7XHJcblx0XHRcdGNvdW50TWFwW251bV0gPSAoY291bnRNYXBbbnVtXSB8fCAwKSArIDE7XHJcblxyXG5cdFx0XHQvLyDmo4Dmn6XmmK/lkKbmmK/mnIDlpJrnmoRcclxuXHRcdFx0aWYgKGNvdW50TWFwW251bV0gPiBtYXhDb3VudCkge1xyXG5cdFx0XHRcdG1heENvdW50ID0gY291bnRNYXBbbnVtXTtcclxuXHRcdFx0XHRtb3N0RnJlcXVlbnROdW0gPSBudW07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBtb3N0RnJlcXVlbnROdW07XHJcblx0fVxyXG5cclxuXHRsb2FkZWQoYXJncykge1xyXG5cdFx0Ly8g5om+5Yiw5omA5pyJeei9tOagh+etvlxyXG5cdFx0Y29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxyXG5cdFx0XHRgW2lkXj1cIiR7dGhpcy5waXZvdE9iai5lbGVtZW50LmlkfV9jaGFydDJfQXhpc0xhYmVsXCJdLFxyXG5cdFx0XHRbaWRePVwiJHt0aGlzLnBpdm90T2JqLmVsZW1lbnQuaWR9X2NoYXJ0M19BeGlzTGFiZWxcIl1gXHJcblx0XHQpO1xyXG5cdFx0bGV0IGlzRXJyb3JBY2N1cmFjeSA9IGZhbHNlO1xyXG5cdFx0bGV0IHhQb3NpdGlvbiA9IFtdO1xyXG5cdFx0ZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG5cdFx0XHQvLyDmmK/lkKbmnInnsr7luqbpl67pophcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdEJvb2xlYW4oTnVtYmVyKGVsZW1lbnQuaW5uZXJIVE1MKSkgJiZcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTC5sZW5ndGggPiAxNVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRpc0Vycm9yQWNjdXJhY3kgPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIOiusOW9leS4gOS4i3novbTmoIfnrb7nmoR45Z2Q5qCHXHJcblx0XHRcdGNvbnN0IGN1cnJlbnRYID0gcGFyc2VGbG9hdChlbGVtZW50LmdldEF0dHJpYnV0ZShcInhcIikpO1xyXG5cdFx0XHR4UG9zaXRpb24ucHVzaChjdXJyZW50WCk7XHJcblxyXG5cdFx0XHRpZiAoZWxlbWVudC5pbm5lckhUTUwuZW5kc1dpdGgoXCIuLi5cIikpIHtcclxuXHRcdFx0XHRsZXQgaW5uZXJIVE1MID0gZWxlbWVudC5pbm5lckhUTUwucmVwbGFjZShcIi4uLlwiLCBcIlwiKTtcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IE51bWJlcihpbm5lckhUTUwpLnRvRml4ZWQoMik7XHJcblx0XHRcdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcblx0XHRcdFx0XHRcInhcIixcclxuXHRcdFx0XHRcdGN1cnJlbnRYICsgaW5uZXJIVE1MLmxlbmd0aCAqIDMgLSAzICsgXCJcIlxyXG5cdFx0XHRcdCk7IC8vIOefq+ato+mVv+W6plxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGlmIChpc0Vycm9yQWNjdXJhY3kpIHtcclxuXHRcdFx0Ly8g5om+5Yiw5omA5pyJeei9tOagh+etvuS4reeahOW5s+Wdh3jlnZDmoIdcclxuXHRcdFx0bGV0IHggPSBtZWFuKHhQb3NpdGlvbik7XHJcblx0XHRcdGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHQvLyDmiYvliqjnsr7luqbkv67mraNcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IE51bWJlcihlbGVtZW50LmlubmVySFRNTCkudG9GaXhlZCgyKTtcclxuXHRcdFx0XHRpZiAoZWxlbWVudC5pbm5lckhUTUwgPT09IFwiLTAuMDBcIikge1xyXG5cdFx0XHRcdFx0ZWxlbWVudC5pbm5lckhUTUwgPSBOdW1iZXIoMCkudG9GaXhlZCgyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g5omL5Yqo6K6+572uIHjlnZDmoIdcclxuXHRcdFx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShcInhcIiwgeC50b1N0cmluZygpKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldENvbmZpZ1RvUG9ybGV0KCkge1xyXG5cdFx0Y29uc3QgY29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKTtcclxuXHRcdGlmICghY29uZmlnKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0ge1xyXG5cdFx0XHRkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcblx0XHRcdGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuXHRcdH07XHJcblx0XHR0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXSA9IG51bGw7XHJcblx0XHR0aGlzLmNvbmZpZyA9IHsgLi4uY29uZmlnIH07XHJcblx0XHR0aGlzLnVwZGF0ZVBvcmxldENvbmZpZy5lbWl0KHtcclxuXHRcdFx0bmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuXHRcdFx0Y29uZmlnLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRjaGFydFNlcmllc0NyZWF0ZWQoZSkge31cclxuXHJcblx0cHJpdmF0ZSBpbml0Q2hhcnRTZXR0aW5nKHR5cGU/OiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IHNldHRpbmcgPSB0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nO1xyXG5cdFx0aWYgKCFzZXR0aW5nKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRzZXR0aW5nLmNoYXJ0U2V0dGluZ3MuY2hhcnRTZXJpZXMuZGF0YUxhYmVsID0ge1xyXG5cdFx0XHR2aXNpYmxlOiB0cnVlLCAvLyBNYWtlIHRoZSBkYXRhIGxhYmVsIHZpc2libGVcclxuXHRcdFx0cG9zaXRpb246IFwiT3V0c2lkZVwiLCAvLyBQb3NpdGlvbiB0aGUgZGF0YSBsYWJlbCBvdXRzaWRlIHRoZSBjaGFydFxyXG5cdFx0XHQvLyBEZWZpbmUgdGhlIHRlbXBsYXRlIGZvciBkYXRhIGxhYmVsIGNvbnRlbnRcclxuXHRcdFx0dGVtcGxhdGU6XHJcblx0XHRcdFx0JzxkaXYgc3R5bGU9XCJjb2xvcjogQmxhY2tcIj4gJHsocG9pbnQueSkudG9Mb2NhbGVTdHJpbmcoKX08L2Rpdj4nLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuY2hhcnRTZXR0aW5ncyA9IHtcclxuXHRcdFx0Li4uc2V0dGluZy5jaGFydFNldHRpbmdzLFxyXG5cdFx0XHRwcmltYXJ5WEF4aXM6IHtcclxuXHRcdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHRcdFx0bGFiZWxGb3JtYXQ6IFwiTjJcIixcclxuXHRcdFx0XHRtYWpvckdyaWRMaW5lczogeyB3aWR0aDogMCB9LFxyXG5cdFx0XHRcdG1pbm9yR3JpZExpbmVzOiB7XHJcblx0XHRcdFx0XHR3aWR0aDogMCxcclxuXHRcdFx0XHRcdGNvbG9yOiBcInRyYW5zcGFyZW50XCIsXHJcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdG1pbm9yVGlja0xpbmVzOiB7IHZpc2libGU6IGZhbHNlIH0sXHJcblx0XHRcdFx0bGluZVN0eWxlOiB7XHJcblx0XHRcdFx0XHR3aWR0aDogMCxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwb2ludFJlbmRlcjogdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZSgoYXJnczogYW55KSA9PiB7XHJcblx0XHRcdFx0aWYgKGFyZ3MgJiYgYXJncy5wb2ludCAmJiBhcmdzLnBvaW50LnkpIHtcclxuXHRcdFx0XHRcdGFyZ3MucG9pbnQueSA9IHBhcnNlRmxvYXQoYXJncy5wb2ludC55LnRvRml4ZWQoMikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkgYXMgYW55LFxyXG5cdFx0XHRjaGFydEFyZWE6IHtcclxuXHRcdFx0XHRvcGFjaXR5OiAwLFxyXG5cdFx0XHRcdGJvcmRlcjoge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0cHJpbWFyeVlBeGlzOiB7XHJcblx0XHRcdFx0Ly8gWei9tOagh+mimOiuvue9ruS4uuepulxyXG5cdFx0XHRcdHRpdGxlOiBcIiBcIixcclxuXHRcdFx0XHRsYWJlbEZvcm1hdDogXCJOMlwiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRsb2FkZWQ6IHRoaXMuaXNsb2FkZWRcclxuXHRcdFx0XHQ/IG51bGxcclxuXHRcdFx0XHQ6ICh0aGlzLm9ic2VydmFibGUuc3Vic2NyaWJlKHRoaXMubG9hZGVkLmJpbmQodGhpcykpIGFzIGFueSksXHJcblx0XHRcdHpvb21TZXR0aW5nczoge1xyXG5cdFx0XHRcdGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiBmYWxzZSwgLy8g56aB55So6byg5qCH5rua6L2u57yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlUGluY2hab29taW5nOiBmYWxzZSwgLy8g56aB55So6Kem5pG457yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOmAieaLqeWMuuWfn+e8qeaUvlxyXG5cdFx0XHRcdGVuYWJsZURlZmVycmVkWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOW7tui/n+e8qeaUvlxyXG5cdFx0XHRcdHRvb2xiYXJJdGVtczogW10sXHJcblx0XHRcdFx0ZW5hYmxlU2Nyb2xsYmFyOiBmYWxzZSxcclxuXHRcdFx0XHRlbmFibGVab29taW5nOiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdH07XHJcblx0XHR0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcclxuXHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdGlmICghdGhpcy5jaGFydFNldHRpbmdzLnBhbGV0dGVzKSB7XHJcblx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IFtcclxuXHRcdFx0XHRcIiM1OTRiYjlcIixcclxuXHRcdFx0XHRcIiNmMWFmMzJcIixcclxuXHRcdFx0XHRcIiM0Njg4ZWRcIixcclxuXHRcdFx0XHRcIiNlMDU2M2VcIixcclxuXHRcdFx0XHRcIiM4MDNhNjNcIixcclxuXHRcdFx0XHRcIiM2ZGQ4YjVcIixcclxuXHRcdFx0XHRcIiNlODcyMjVcIixcclxuXHRcdFx0XHRcIiNjNWRmNDJcIixcclxuXHRcdFx0XHRcIiNjNjQzN2RcIixcclxuXHRcdFx0XTtcclxuXHRcdH1cclxuXHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy5jb2x1bW5TcGFjaW5nID0gMC4xO1xyXG5cdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLmNvbHVtbldpZHRoID0gMC45O1xyXG5cdFx0aWYgKHR5cGUpIHtcclxuXHRcdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzID0ge1xyXG5cdFx0XHRcdHR5cGUsXHJcblx0XHRcdFx0Y29sdW1uU3BhY2luZzogMC4xLFxyXG5cdFx0XHRcdGNvbHVtbldpZHRoOiAwLjksXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbk1lbWJlckVkaXRvck9wZW4oYXJnczogYW55KTogdm9pZCB7XHJcblx0XHQvLyDkvaDlj6/ku6XlnKjov5nph4zmoLnmja7pnIDopoHkv67mlLlhcmdz5p2l6Ieq5a6a5LmJ6L+H5ruk56qX5Y+j55qE6KGM5Li6XHJcblx0XHQvLyAxMTI0NyDkuJPpl6jkuLppdGVtIGRhdGEgdHlwZeiAjOiuvue9rlxyXG5cdFx0aWYgKGFyZ3MuZmllbGROYW1lID09PSBcIkFjY291bnRUeXBlQ29kZVwiKSB7XHJcblx0XHRcdGxldCByZXMgPSBuZXcgQXJyYXkoNSkuZmlsbChudWxsKTtcclxuXHRcdFx0Y29uc3QgZmllbGRNZW1iZXJzID0gWy4uLmFyZ3MuZmllbGRNZW1iZXJzXTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSBmaWVsZE1lbWJlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSAtMTtcclxuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy5pdGVtRGF0YVR5cGVTb3J0QXJyLmZpbmQoKG5hbWUsIGluZCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGZpZWxkTWVtYmVyc1tpXS5hY3R1YWxUZXh0ID09PSBuYW1lKSB7XHJcblx0XHRcdFx0XHRcdGluZGV4ID0gaW5kO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuIGZpZWxkTWVtYmVyc1tpXS5hY3R1YWxUZXh0ID09PSBuYW1lO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGlmICghaXRlbSkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IGZpbGxJdGVtID0gZmllbGRNZW1iZXJzLnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRyZXNbaW5kZXhdID0gZmlsbEl0ZW1bMF07XHJcblx0XHRcdH1cclxuXHRcdFx0cmVzID0gcmVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSkgfHwgW107XHJcblx0XHRcdGFyZ3MuZmllbGRNZW1iZXJzID0gWy4uLnJlcywgLi4uZmllbGRNZW1iZXJzXTtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lLW1lbWJlci1lZGl0b3ItZGlhbG9nXCIpO1xyXG5cdFx0XHRcdGlmIChlbGUpIHtcclxuXHRcdFx0XHRcdGVsZS5xdWVyeVNlbGVjdG9yKFwiLmUtZmlsdGVyLXNvcnRcIikuc2V0QXR0cmlidXRlKFxyXG5cdFx0XHRcdFx0XHRcInN0eWxlXCIsXHJcblx0XHRcdFx0XHRcdFwiZGlzcGxheTogbm9uZVwiXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRiZWZvcmVFeHBvcnQoZXhwb3J0RGF0YSkge1xyXG5cdFx0aWYgKGV4cG9ydERhdGEpIHtcclxuXHRcdFx0Y29uc3Qga2V5TWFwID0ge307XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZVNldHRpbmdzLmZvcm1hdFNldHRpbmdzLmZvckVhY2goKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRkYXRhLmZvcm1hdCA9PT0gXCIjLCMjIywsLjA7KCMsIyMjLCwuMClcIiB8fFxyXG5cdFx0XHRcdFx0ZGF0YS5mb3JtYXQgPT09IFwiIywjIyMsLDsoIywjIyMsLClcIiB8fFxyXG5cdFx0XHRcdFx0ZGF0YS5mb3JtYXQgPT09IFwiIywjIyMsLC4wMDsoIywjIyMsLC4wMClcIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0a2V5TWFwW2RhdGEubmFtZV0gPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRleHBvcnREYXRhLmRhdGFDb2xsZWN0aW9ucyAmJlxyXG5cdFx0XHRcdGV4cG9ydERhdGEuZGF0YUNvbGxlY3Rpb25zLmxlbmd0aFxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRleHBvcnREYXRhLmRhdGFDb2xsZWN0aW9uc1swXS5mb3JFYWNoKChyb3cpID0+IHtcclxuXHRcdFx0XHRcdHJvdy5mb3JFYWNoKChjZWxsKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChrZXlNYXBbY2VsbC5hY3R1YWxUZXh0XSkge1xyXG5cdFx0XHRcdFx0XHRcdGNlbGwudmFsdWUgPSBjZWxsLmFjdHVhbFZhbHVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBnZXREYXRhKGNvbmZpZz86IGFueSkge1xyXG5cdFx0dGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0bGV0IGNvbHVtbnMgPSBbXTtcclxuXHRcdGxldCB2YWx1ZXMgPSBbXTtcclxuXHRcdGxldCBmb3JtYXRTZXR0aW5ncyA9IFtdO1xyXG5cdFx0bGV0IHJvd3MgPSBbXTtcclxuXHRcdGxldCBmaWVsZE1hcHBpbmcgPSBbXTtcclxuXHRcdC8vIOa4heepumdyYW5kVG90YWxz5ZKMc3ViVG90YWxzXHJcblx0XHR0aGlzLmdyYW5kVG90YWxzID0ge307XHJcblx0XHR0aGlzLnN1YlRvdGFscyA9IHt9O1xyXG5cdFx0dGhpcy5jb25maWcgPSBjb25maWdcclxuXHRcdFx0PyBKU09OLnBhcnNlKGNvbmZpZylcclxuXHRcdFx0OiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG5cclxuXHRcdGxldCB0eXBlID1cclxuXHRcdFx0dGhpcy5jb25maWcgJiZcclxuXHRcdFx0dGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3NcclxuXHRcdFx0XHQ/IHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy50eXBlXHJcblx0XHRcdFx0OiBudWxsO1xyXG5cdFx0aWYgKHR5cGUgJiYgdHlwZSA9PT0gXCJTdGFja2VkIENvbHVtblwiKSB7XHJcblx0XHRcdHR5cGUgPSBcIlN0YWNraW5nQ29sdW1uXCI7XHJcblx0XHR9XHJcblx0XHR0aGlzLmluaXRDaGFydFNldHRpbmcodHlwZSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuY29uZmlnLmZpZWxkcykge1xyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuZmllbGRzKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5QaXZvdF9EYXRhID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRSZXN1bHRCeURhdGFUYWJsZShcclxuXHRcdFx0dGhpcy5wb3J0bGV0LFxyXG5cdFx0XHRmYWxzZSxcclxuXHRcdFx0ZmFsc2UsXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkLmlkXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMub3JkZXJCeUNvbHVtbnMgPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmdldE9yZGVyQnlDb2x1bW5zTmV3KFxyXG5cdFx0XHR0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSxcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5QaXZvdF9EYXRhID0gRGF0YVV0aWwucGFyc2UucGFyc2VKc29uKHRoaXMuUGl2b3RfRGF0YSk7XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhICYmIHRoaXMuUGl2b3RfRGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuZ2V0ZXhjbHVkZUZpZWxkcyh0aGlzLmNvbmZpZ0ZpZWxkcywgdGhpcy5QaXZvdF9EYXRhWzBdKTtcclxuXHRcdFx0aWYgKCF0aGlzLmFsbG93ZWRDYWxjdWxhdGVkRmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdHRoaXMuYWxsb3dlZENhbGN1bGF0ZWRGaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLlBpdm90X0RhdGFbMF0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgdGhpcy5jb25maWdGaWVsZHMpIHtcclxuXHRcdFx0XHRmaWVsZE1hcHBpbmcucHVzaCh7XHJcblx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRjYXB0aW9uOiBpdGVtLmFkZHRpb25OYW1lXHJcblx0XHRcdFx0XHRcdD8gYCR7aXRlbS5sYW5nVmFsdWV9ICR7aXRlbS5hZGR0aW9uTmFtZX1gXHJcblx0XHRcdFx0XHRcdDogaXRlbS5sYW5nVmFsdWUsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTogaXRlbS5kYXRhVHlwZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuY29uZmlnRmllbGRzKSB7XHJcblx0XHRcdHRoaXMucGVyY2VudE51bUZpZWxkcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmZvcm1hdERhdGVzID0gW107XHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuaGdMaXN0ID0gW107XHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuZW1wdHlMaXN0ID0gW107XHJcblx0XHRcdHRoaXMubWlsbGlvbkZpZWxkcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcblx0XHRcdFx0Ly8gU01QMi0yNDg2ICYgcGVyY2VudE51beeahGZvcm1hdOmXrumimFxyXG5cdFx0XHRcdGlmIChlbC5kYXRhVHlwZSA9PSBcInBlcmNlbnROdW1cIikge1xyXG5cdFx0XHRcdFx0dGhpcy5wZXJjZW50TnVtRmllbGRzLnB1c2goZWwuY29sTmFtZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQgJiZcclxuXHRcdFx0XHRcdFsyLCA1LCA4LCAxMSwgMTQsIDE3XS5pbmNsdWRlcyhlbC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXQpXHJcblx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0dGhpcy56ZXJvRm9ybWF0RGF0YS5oZ0xpc3QucHVzaChlbC5jb2xOYW1lKTtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRlbC5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdGVsLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdGVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkICYmXHJcblx0XHRcdFx0XHRbMywgNiwgOSwgMTIsIDE1LCAxOF0uaW5jbHVkZXMoZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0KVxyXG5cdFx0XHRcdClcclxuXHRcdFx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuZW1wdHlMaXN0LnB1c2goZWwuY29sTmFtZSk7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRlbC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCAmJlxyXG5cdFx0XHRcdFx0WzEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRlbC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpXHJcblx0XHRcdFx0XHR0aGlzLm1pbGxpb25GaWVsZHMucHVzaChlbC5jb2xOYW1lKTtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRlbC5kYXRhVHlwZSA9PT0gXCJudW1iZXJcIiAmJlxyXG5cdFx0XHRcdFx0KCFlbC5mb3JtYXQgfHxcclxuXHRcdFx0XHRcdFx0KGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdGVsLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHQhZWwuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQpKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0Ly9TTVAyLTMwMjYgYW5kIFNNUDItMzA1OVxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6XHJcblx0XHRcdFx0XHRcdFx0ZWwuY29sTmFtZSAhPT0gXCJQb3J0SW52U3RrXCIgJiZcclxuXHRcdFx0XHRcdFx0XHRlbC5jb2xOYW1lICE9PSBcIlBvcnRGZEludlN0a1wiXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsLmRwXHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHRcdDogXCIjIzAuIyMjIyMjIzBcIixcclxuXHRcdFx0XHRcdFx0dXNlR3JvdXBpbmc6IHRydWUsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0KGVsLmRhdGFUeXBlID09PSBcInBlcmNlbnRcIiB8fFxyXG5cdFx0XHRcdFx0XHRlbC5kYXRhVHlwZSA9PT0gXCJwZXJjZW50TnVtXCIpICYmXHJcblx0XHRcdFx0XHQoIWVsLmZvcm1hdCB8fFxyXG5cdFx0XHRcdFx0XHQoZWwuZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ZWwuZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0XHRcdCFlbC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCkpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRjb25zdCBmb3JtYXREYXRhID0ge1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBlbC5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRlbC5kcFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVsLmRhdGFUeXBlID09PSBcIm11bHRpcGxlXCIgJiZcclxuXHRcdFx0XHRcdCghZWwuZm9ybWF0IHx8XHJcblx0XHRcdFx0XHRcdChlbC5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0IWVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkKSlcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGNvbnN0IGZvcm1hdERhdGEgPSB7XHJcblx0XHRcdFx0XHRcdG5hbWU6IGVsLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGZvcm1hdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRlbC5kcFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChlbC5kYXRhVHlwZSA9PT0gXCJkYXRldGltZVwiIHx8IGVsLmRhdGFUeXBlID09PSBcImRhdGVcIikge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm1hdCA9IFwiXCI7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGVsLmZvcm1hdFswXS5kYXRlVHlwZSA9PSBcIlF1YXJ0ZXJcIikge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBmb3JtYXRfID0gZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgZm9ybWF0SW5mbyA9IHRoaXMucXVhcnRlckZvcm1hdC5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0XHQocXVyKSA9PiBxdXIudmFsdWUgPT0gZm9ybWF0X1xyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGZvcm1hdEluZm8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBmb3JtYXRJbmZvWzBdLmZvcm1hdDtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBmb3JtYXRfLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmZvcm1hdERhdGVzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGVsLmZvcm1hdFswXS5kYXRlVHlwZSA9PSBcIkRhdGVcIikge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBmcm9tSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcIihcIik7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHRvSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcIilcIik7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZvcm1hdF8gPVxyXG5cdFx0XHRcdFx0XHRcdFx0ZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheS5zbGljZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbUlkeCArIDEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRvSWR4XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoZm9ybWF0Xykge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkREL01NL1lZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC9NTS95eXl5XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkREL01NL1lZXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwiZGQvTU0veXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0vREQvWVlZWVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcIk1NL2RkL3l5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0vREQvWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTS9kZC95eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJZWVlZLU1NLUREXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwieXl5eS1NTS1kZFwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJZWS1NTS1ERFwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcInl5LU1NLWRkXCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkRELU1NLVlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC1NTS15eXl5XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkRELU1NLVlZXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwiZGQtTU0teXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0tREQtWVlZWVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcIk1NLWRkLXl5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0tREQtWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTS1kZC15eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJNTU0gREQsIFlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTU0gZGQsIHl5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiREQtTU1NLVlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC1NTU0teXl5eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKCFmb3JtYXQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBlbC5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdDogdGhpcy5kYXRlUGlwZUZvcm1hdCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGZvcm1hdERhdGEgPSB7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6IGZvcm1hdCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0Ly9jYWxjdWxhdGVkRmllbGRTZXR0aW5ncyBmb3JtYXQgcHVzaCB0byBmb3JtYXRTZXR0aW5nc1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jYWxjdWxhdGVkRmllbGRTZXR0aW5ncyAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jYWxjdWxhdGVkRmllbGRTZXR0aW5ncy5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy5jb25maWcuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MubWFwKChlbCkgPT4ge1xyXG5cdFx0XHRcdGlmIChlbC5mb3JtYXRTdHJpbmcgIT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBlbC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6IGVsLmZvcm1hdFN0cmluZyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRsZXQgc2VyaWVzID0gdGhpcy5jb25maWcueWF4aXMuc2VyaWVzO1xyXG5cdFx0aWYgKHNlcmllcykge1xyXG5cdFx0XHRmb3IgKGxldCBpdGVtIG9mIHNlcmllcykge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogaXRlbS5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0Y2FwdGlvbjogaXRlbS50aXRsZSxcclxuXHRcdFx0XHRcdHR5cGU6IGl0ZW0uY2FsTWV0aG9kLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgZ3JvdXBzID0gdGhpcy5jb25maWcueGF4aXMuZ3JvdXBzO1xyXG5cdFx0aWYgKGdyb3Vwcykge1xyXG5cdFx0XHRmb3IgKGxldCBnaXRlbSBvZiBncm91cHMpIHtcclxuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZ2l0ZW0ubmFtZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdGdpdGVtLnNob3dTdWJUb3RhbHMgPSBmaWVsZFswXS5zaG93U3ViVG90YWxzO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyb3dzLnB1c2goZ2l0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5jb25maWcuY29sdW1uR3JvdXAgJiYgdGhpcy5jb25maWcuY29sdW1uR3JvdXAubGVuZ3RoKSB7XHJcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgdGhpcy5jb25maWcuY29sdW1uR3JvdXApIHtcclxuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gaXRlbS5uYW1lXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoZmllbGQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aXRlbS5zaG93U3ViVG90YWxzID0gZmllbGRbMF0uc2hvd1N1YlRvdGFscztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29sdW1ucy5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyA9IFtdO1xyXG5cdFx0dGhpcy5jb25maWdGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHRcdFx0aWYgKGZpZWxkLmZvcm1hdCAmJiBmaWVsZC5mb3JtYXQubGVuZ3RoKSB7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmZvcm1hdFswXS5mb250U2V0dGluZ0NoZWNrZWQpIHtcclxuXHRcdFx0XHRcdGxldCBjb25kaXRpb25hbEZvcm1hdE9iaiA9IHtcclxuXHRcdFx0XHRcdFx0YXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0bWVhc3VyZTogXCJcIixcclxuXHRcdFx0XHRcdFx0dmFsdWUxOiBudWxsLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTI6IG51bGwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbnM6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHN0eWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGZvbnRGYW1pbHk6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0bGV0IG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaiA9IHtcclxuXHRcdFx0XHRcdFx0YXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0bWVhc3VyZTogXCJcIixcclxuXHRcdFx0XHRcdFx0dmFsdWUxOiBudWxsLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTI6IG51bGwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbnM6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHN0eWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGZvbnRGYW1pbHk6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Ly8gZm9udCBzZXR0aW5nIHN0YXJ0XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoubWVhc3VyZSA9XHJcblx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoubWVhc3VyZSA9XHJcblx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQgJiZcclxuXHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmNvbXBhcmVTZWxlY3RcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldENvbXBhcmVDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRkZWxldGUgY29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRkZWxldGUgbmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMjtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MucHVzaChuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmopO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncy51bnNoaWZ0KGNvbmRpdGlvbmFsRm9ybWF0T2JqKTtcclxuXHRcdFx0XHRcdC8vIGZvbnQgc2V0dGluZyBlbmRcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGV0IGZvcm1hdFNldHRpbmdzT2JqID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogXCJcIixcclxuXHRcdFx0XHRcdGZvcm1hdDogXCJcIixcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCkge1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmoubmFtZSA9IGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmouZm9ybWF0ID1cclxuXHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0c3dpdGNoIChmaWVsZC5mb3JtYXRbMF0uZGF0YVR5cGUpIHtcclxuXHRcdFx0XHRcdFx0Y2FzZSBcIm51bWJlclwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0Y2FzZSBcImludGVnZXJcIjpcclxuXHRcdFx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iai5mb3JtYXQgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0SW50ZWdlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIFwicGVyY2VudE51bVwiOlxyXG5cdFx0XHRcdFx0XHRjYXNlIFwicGVyY2VudFwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgXCJtdWx0aXBsZVwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIFwiZGF0ZVwiOlxyXG5cdFx0XHRcdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcclxuXHRcdFx0XHRcdFx0XHRsZXQgZm9ybWF0ID0gXCJcIjtcclxuXHRcdFx0XHRcdFx0XHRpZiAoZmllbGQuZm9ybWF0ICYmIGZpZWxkLmZvcm1hdC5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRbMF0uZGF0ZVR5cGUgPT0gXCJRdWFydGVyXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXREaXNwbGF5O1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmaWVsZC5mb3JtYXRbMF0uZGF0ZVR5cGUgPT0gXCJEYXRlXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGZyb21JZHggPVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiKFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHRvSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXREaXNwbGF5LmluZGV4T2YoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIilcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheS5zbGljZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb21JZHggKyAxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9JZHhcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpZiAoZm9ybWF0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iaiA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogZmllbGQuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGZpZWxkLmRhdGFUeXBlID0gXCJzdHJpbmdcIjtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmouZm9ybWF0ID0gdGhpcy5kYXRlUGlwZUZvcm1hdDtcclxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqW1widHlwZVwiXSA9IFwiZGF0ZVwiO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmRhdGFUeXBlICE9PSBcInN0cmluZ1wiICYmXHJcblx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iai5mb3JtYXRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0U2V0dGluZ3NPYmopO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMgPSB0aGlzLmNvbmZpZy5jdXN0b21DYWxjdWxhdGVkRmllbGRzXHJcblx0XHRcdD8gdGhpcy5jb25maWcuY3VzdG9tQ2FsY3VsYXRlZEZpZWxkc1xyXG5cdFx0XHQ6IFtdO1xyXG5cclxuXHRcdC8vIFNNUDItNDU4MiBBR0lDIC0gRGFzaGJvYXJkIGl0ZW0gc2VxdWVuY2VcclxuXHRcdGxldCBpc0V4aXN0U2VxID0gZmFsc2U7XHJcblx0XHRsZXQgc29ydFNldHRpbmdzID0gdGhpcy5jb25maWcuc29ydFNldHRpbmdzIHx8IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLlBpdm90X0RhdGEgJiZcclxuXHRcdFx0dGhpcy5QaXZvdF9EYXRhWzBdICYmXHJcblx0XHRcdHRoaXMuUGl2b3RfRGF0YVswXS5TZXEgIT09IG51bGxcclxuXHRcdCkge1xyXG5cdFx0XHQvLyDlj5bmtohOYW1l55qE6buY6K6k5o6S5bqP77yM5qC55o2uU2Vx5p2l5o6S5bqPXHJcblx0XHRcdHNvcnRTZXR0aW5ncy5wdXNoKHsgbmFtZTogXCJOYW1lXCIsIG9yZGVyOiBcIk5vbmVcIiB9KTtcclxuXHRcdFx0aXNFeGlzdFNlcSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRsZXQgZmlsdGVyU2V0dGluZ3MgPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmNoZWNrRmlsdGVyU2V0dGluZ3MoXHJcblx0XHRcdHRoaXMuY29uZmlnLFxyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcyxcclxuXHRcdFx0dGhpcy5QaXZvdF9EYXRhXHJcblx0XHQpO1xyXG5cdFx0bGV0IG5hbWVGaWx0ZXIgPSBmaWx0ZXJTZXR0aW5ncy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IFwiTmFtZVwiKTtcclxuXHRcdC8vIOWtmOWcqCBOYW1l55qEZmlsdGVy5pe277yM5Lya5oyJ54Wn6buY6K6k5o6S5bqP77yM6ZyA6KaB5a+5TmFtZei/m+ihjFNlceaOkuW6j+WkhOeQhlxyXG5cdFx0aWYgKGlzRXhpc3RTZXEgJiYgbmFtZUZpbHRlciAmJiByb3dzLnNvbWUoKHgpID0+IHgubmFtZSA9PT0gXCJOYW1lXCIpKSB7XHJcblx0XHRcdGxldCBpdGVtcyA9IG5hbWVGaWx0ZXIuaXRlbXM7IC8vIOaLv+WIsOW9k+WJjeaOkuW6j++8jOm7mOiupEEtWlxyXG5cdFx0XHRsZXQgc2VxQXJyID0gW107XHJcblx0XHRcdGl0ZW1zLmZvckVhY2goKG5hbWUpID0+IHtcclxuXHRcdFx0XHRsZXQgb2JqID0gdGhpcy5QaXZvdF9EYXRhLmZpbmQoKHgpID0+IHguTmFtZSA9PT0gbmFtZSk7XHJcblx0XHRcdFx0bGV0IGl0ZW06IGFueSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IG5hbWUsXHJcblx0XHRcdFx0XHRzZXE6IG9iai5TZXEsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRzZXFBcnIucHVzaChpdGVtKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHNlcUFyci5zb3J0KChhLCBiKSA9PiBhLnNlcSAtIGIuc2VxKTtcclxuXHRcdFx0bmFtZUZpbHRlci5pdGVtcyA9IHNlcUFyci5tYXAoKHgpID0+IHgubmFtZSk7XHJcblx0XHR9XHJcblx0XHRsZXQgaGFzSXRlbURhdGFUeXBlID0gZmFsc2U7XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhKSB7XHJcblx0XHRcdHRoaXMuUGl2b3RfRGF0YS5tYXAoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YVtcIkFjY291bnRUeXBlQ29kZVwiXSkge1xyXG5cdFx0XHRcdFx0aGFzSXRlbURhdGFUeXBlID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuXHRcdFx0XHRcdGlmIChkYXRhW3Jvdy5uYW1lXSA9PT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHRkYXRhW3Jvdy5uYW1lXSA9IFwibnVsbFwiO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGlmIChoYXNJdGVtRGF0YVR5cGUpIHtcclxuXHRcdFx0c29ydFNldHRpbmdzLnB1c2goe1xyXG5cdFx0XHRcdG5hbWU6IFwiQWNjb3VudFR5cGVDb2RlXCIsXHJcblx0XHRcdFx0b3JkZXI6IFwiQXNjZW5kaW5nXCIsXHJcblx0XHRcdFx0bWVtYmVyc09yZGVyOiBbLi4udGhpcy5pdGVtRGF0YVR5cGVTb3J0QXJyXSxcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmRhdGFTb3VyY2VTZXR0aW5ncyA9IHtcclxuXHRcdFx0ZGF0YVNvdXJjZTogdGhpcy5QaXZvdF9EYXRhLFxyXG5cdFx0XHRyb3dzOiByb3dzLFxyXG5cdFx0XHRjb2x1bW5zOiBjb2x1bW5zLFxyXG5cdFx0XHR2YWx1ZXM6IHZhbHVlcyxcclxuXHRcdFx0ZmlsdGVyczogdGhpcy5jb25maWcuZmlsdGVycyxcclxuXHRcdFx0ZmlsdGVyU2V0dGluZ3M6IGZpbHRlclNldHRpbmdzLFxyXG5cdFx0XHRleGNsdWRlRmllbGRzOiB0aGlzLmV4Y2x1ZGVGaWVsZHMsXHJcblx0XHRcdGZvcm1hdFNldHRpbmdzOiBmb3JtYXRTZXR0aW5ncyxcclxuXHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nczogY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyxcclxuXHRcdFx0ZXhwYW5kQWxsOiB0cnVlLFxyXG5cdFx0XHRlbmFibGVTb3J0aW5nOiB0cnVlLFxyXG5cdFx0XHRmaWVsZE1hcHBpbmc6IGZpZWxkTWFwcGluZyxcclxuXHRcdFx0Y2FsY3VsYXRlZEZpZWxkU2V0dGluZ3M6IHRoaXMuY29uZmlnLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzLFxyXG5cdFx0XHRzb3J0U2V0dGluZ3M6IHNvcnRTZXR0aW5ncyxcclxuXHRcdFx0dmFsdWVTb3J0U2V0dGluZ3M6IHRoaXMuY29uZmlnLnZhbHVlU29ydFNldHRpbmdzLFxyXG5cdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0c2hvd1Jvd0dyYW5kVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Um93R3JhbmRUb3RhbHMsXHJcblx0XHRcdHNob3dDb2x1bW5HcmFuZFRvdGFsczogdGhpcy5jb25maWcuc2hvd0NvbHVtbkdyYW5kVG90YWxzLFxyXG5cdFx0XHRzaG93U3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzLFxyXG5cdFx0XHRzaG93Um93U3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzLFxyXG5cdFx0XHRzaG93Q29sdW1uU3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzLFxyXG5cdFx0fTtcclxuXHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBhZnRlclBvcHVsYXRlKGFyZ3M6IEVuZ2luZVBvcHVsYXRlZEV2ZW50QXJncyk6IHZvaWQge1xyXG5cdFx0dGhpcy50ZW1wU3VidG90YWxzID0gW107XHJcblx0XHR0aGlzLmdyYW5kVG90YWxzID0ge307XHJcblx0XHR0aGlzLnN1YlRvdGFscyA9IHt9O1xyXG5cdFx0bGV0IHRlbXBzaG93QXJyYXkgPSBbXTtcclxuXHRcdHRoaXMuY29uZmlnLnlheGlzLnNlcmllcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRpdGVtLmhhc093blByb3BlcnR5KFwic2hvd1N1YlRvdGFsc1wiKSAmJlxyXG5cdFx0XHRcdGl0ZW0uaGFzT3duUHJvcGVydHkoXCJzaG93R3JhbmRUb3RhbHNcIilcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGVtcHNob3dBcnJheS5wdXNoKHtcclxuXHRcdFx0XHRcdG5hbWU6IGl0ZW0uY29sTmFtZSxcclxuXHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRzaG93U3ViVG90YWxzOiBpdGVtLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IGl0ZW0uc2hvd0dyYW5kVG90YWxzLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KFwic2hvd0dyYW5kVG90YWxzXCIpKSB7XHJcblx0XHRcdFx0XHR0ZW1wc2hvd0FycmF5LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRcdHNob3dHcmFuZFRvdGFsczogaXRlbS5zaG93R3JhbmRUb3RhbHMsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoXCJzaG93U3ViVG90YWxzXCIpKSB7XHJcblx0XHRcdFx0XHR0ZW1wc2hvd0FycmF5LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IGl0ZW0uc2hvd1N1YlRvdGFscyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqICYmIHRoaXMucGl2b3RPYmopIHtcclxuXHRcdFx0dGhpcy5jb25maWcuY29sdW1uR3JvdXAgPSBbXTtcclxuXHRcdFx0dGhpcy5jb25maWcueGF4aXMuZ3JvdXBzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLnlheGlzLnNlcmllcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5maWx0ZXJzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLmZpbHRlclNldHRpbmdzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzID0gW107XHJcblx0XHRcdGxldCBncm91cFNldHRpbmdzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiZ3JvdXBTZXR0aW5nc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBjb2x1bW5zID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiY29sdW1uc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCByb3dzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwicm93c1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBmaWx0ZXJzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiZmlsdGVyc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBmaWx0ZXJTZXR0aW5ncyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcImZpbHRlclNldHRpbmdzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0bGV0IHZhbHVlcyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcInZhbHVlc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBzb3J0U2V0dGluZ3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJzb3J0U2V0dGluZ3NcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJjYWxjdWxhdGVkRmllbGRTZXR0aW5nc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChncm91cFNldHRpbmdzLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcblx0XHRcdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0bmFtZTogY29sdW1uLm5hbWUsXHJcblx0XHRcdFx0XHRcdGNhcHRpb246IGNvbHVtbi5jYXB0aW9uLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8vSWYgdGhlcmUgaXMgYSBncm91cCwgZmlyc3QgZmlsdGVyIHRoZSBjb2x1bW5zIG9mIHRoZSBncm91cCBmaWVsZCwgYW5kIHRoZW4gb25seSBzYXZlIHRoZSBsYXN0IG9uZVxyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRpZiAoIXN0YXJ0c1dpdGgoY29sdW1uLm5hbWUsIGdyb3VwU2V0dGluZ3NbMF0ubmFtZSArIFwiX1wiKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBjb2x1bW4ubmFtZSxcclxuXHRcdFx0XHRcdFx0XHRjYXB0aW9uOlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLm5hbWUgPT09IGdyb3VwU2V0dGluZ3NbMF0ubmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IFwiXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjb2x1bW4uY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAobGV0IHJvdyBvZiByb3dzKSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcueGF4aXMuZ3JvdXBzLnB1c2goe1xyXG5cdFx0XHRcdFx0bmFtZTogcm93Lm5hbWUsXHJcblx0XHRcdFx0XHRjYXB0aW9uOiByb3cuY2FwdGlvbixcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG5cdFx0XHRcdHRoaXMuY29uZmlnLmZpbHRlcnMucHVzaCh7XHJcblx0XHRcdFx0XHRuYW1lOiBmaWx0ZXIubmFtZSxcclxuXHRcdFx0XHRcdGNhcHRpb246IGZpbHRlci5jYXB0aW9uLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclNldHRpbmdzICYmIHRoaXMuZmlsdGVyU2V0dGluZ3MubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLmZpbHRlclNldHRpbmdzID0gdGhpcy5maWx0ZXJTZXR0aW5ncztcclxuXHRcdFx0XHR0aGlzLmNvbmZpZy5maWx0ZXJTZXR0aW5ncyA9IHRoaXMuZmlsdGVyU2V0dGluZ3M7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMuZmlsdGVyU2V0dGluZ3M7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuZmlsdGVyU2V0dGluZ3MgPSBmaWx0ZXJTZXR0aW5ncztcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcclxuXHRcdFx0XHRsZXQgc2VyaWVzRGF0YTtcclxuXHRcdFx0XHRsZXQgdGVtcFNob3dPYmo7XHJcblx0XHRcdFx0bGV0IGZpbHRlclRlbXBzaG93QXJyYXkgPSBbXTtcclxuXHRcdFx0XHRpZiAodGVtcHNob3dBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGZpbHRlclRlbXBzaG93QXJyYXkgPSB0ZW1wc2hvd0FycmF5LmZpbHRlcihcclxuXHRcdFx0XHRcdFx0KGl0ZW0pID0+XHJcblx0XHRcdFx0XHRcdFx0aXRlbS5uYW1lID09PSB2YWx1ZS5uYW1lICYmXHJcblx0XHRcdFx0XHRcdFx0aXRlbS5jYWxNZXRob2QgPT09IHZhbHVlLnR5cGVcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRpZiAoZmlsdGVyVGVtcHNob3dBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0dGVtcFNob3dPYmogPSBmaWx0ZXJUZW1wc2hvd0FycmF5WzBdO1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0dGVtcFNob3dPYmouaGFzT3duUHJvcGVydHkoXCJzaG93U3ViVG90YWxzXCIpICYmXHJcblx0XHRcdFx0XHRcdFx0dGVtcFNob3dPYmouaGFzT3duUHJvcGVydHkoXCJzaG93R3JhbmRUb3RhbHNcIilcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0c2VyaWVzRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRjYWxNZXRob2Q6IHZhbHVlLnR5cGUsXHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdmFsdWUuY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0ZW1wU2hvd09iai5oYXNPd25Qcm9wZXJ0eShcInNob3dHcmFuZFRvdGFsc1wiKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0c2VyaWVzRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sTmFtZTogdmFsdWUubmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FsTWV0aG9kOiB2YWx1ZS50eXBlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdmFsdWUuY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0dyYW5kVG90YWxzOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRlbXBTaG93T2JqLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmICh0ZW1wU2hvd09iai5oYXNPd25Qcm9wZXJ0eShcInNob3dTdWJUb3RhbHNcIikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHNlcmllc0RhdGEgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNhbE1ldGhvZDogdmFsdWUudHlwZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHZhbHVlLmNhcHRpb24sXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoIXNlcmllc0RhdGEpIHtcclxuXHRcdFx0XHRcdHNlcmllc0RhdGEgPSB7XHJcblx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdHRpdGxlOiB2YWx1ZS5jYXB0aW9uLFxyXG5cdFx0XHRcdFx0XHRjYWxNZXRob2Q6IHZhbHVlLnR5cGUsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMucHVzaChzZXJpZXNEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBjYWxjdWxhdGUgb2YgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MpIHtcclxuXHRcdFx0XHRjb25zdCBjYWxjdWxhdGVEYXRhID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogY2FsY3VsYXRlLm5hbWUsXHJcblx0XHRcdFx0XHRmb3JtdWxhOiBjYWxjdWxhdGUuZm9ybXVsYSxcclxuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzpcclxuXHRcdFx0XHRcdFx0Y2FsY3VsYXRlLmZvcm1hdFN0cmluZyA9PT0gXCJcIlxyXG5cdFx0XHRcdFx0XHRcdD8gXCJOMlwiXHJcblx0XHRcdFx0XHRcdFx0OiBjYWxjdWxhdGUuZm9ybWF0U3RyaW5nLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dGhpcy5jb25maWcuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MucHVzaChjYWxjdWxhdGVEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jdXN0b21DYWxjdWxhdGVkRmllbGRzID0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5zb3J0U2V0dGluZ3MgPSBzb3J0U2V0dGluZ3M7XHJcblx0XHRcdHRoaXMuY29uZmlnLmdyb3VwU2V0dGluZ3MgPSBncm91cFNldHRpbmdzO1xyXG5cdFx0XHR0aGlzLmZpZWxkbGlzdE9iai51cGRhdGVWaWV3KHRoaXMucGl2b3RPYmopO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdC8vcmVtb3ZlIHRoZSBzb3J0XHJcblx0XHRpZiAodGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc29ydFNldHRpbmdzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5wcmV2aW91c1NvcnQgPSB0aGlzLmZpZWxkbGlzdE9iai5sYXN0U29ydEluZm87XHJcblx0XHRcdCh0aGlzLmZpZWxkbGlzdE9iaiBhcyBhbnkpLmxhc3RTb3J0SW5mbyA9IFtdO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGFmdGVyRW5naW5lUG9wdWxhdGUoYXJnczogYW55KSB7XHJcblx0XHRpZiAoIUJyb3dzZXIuaXNEZXZpY2UgJiYgdGhpcy5maWVsZGxpc3RPYmogJiYgdGhpcy5waXZvdE9iaikge1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5ncm91cFNldHRpbmdzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmosXHJcblx0XHRcdFx0XCJncm91cFNldHRpbmdzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0Ly8gdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqKSB0aGlzLmZpZWxkbGlzdE9iai51cGRhdGUodGhpcy5waXZvdE9iaik7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhICYmIHRoaXMuUGl2b3RfRGF0YS5sZW5ndGgpIHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5lbmdpbmVQb3B1bGF0ZWQoYXJncyk7XHJcblx0XHRcdH0sIDE1MDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKG9iaiwga2V5KSB7XHJcblx0XHRsZXQgcHJvcCA9IG51bGw7XHJcblx0XHRpZiAob2JqICYmIG9iai5kYXRhU291cmNlU2V0dGluZ3MpIHtcclxuXHRcdFx0cHJvcCA9IG9iai5kYXRhU291cmNlU2V0dGluZ3Nba2V5XTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9wKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiICYmXHJcblx0XHRcdFx0cHJvcC5sZW5ndGggPiAwXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdHByb3AgPSBwcm9wLm1hcCgoaXRlbSkgPT4gaXRlbS5wcm9wZXJ0aWVzIHx8IGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcHJvcDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBlbmdpbmVQb3B1bGF0aW5nKGFyZ3MpIHtcclxuXHRcdHRoaXMuZ3JhbmRUb3RhbHMgPSB7fTtcclxuXHRcdHRoaXMuc3ViVG90YWxzID0ge307XHJcblx0XHR0aGlzLmFsbERhdGFWYWx1ZSA9IFtdO1xyXG5cdFx0aWYgKGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5ncy5sZW5ndGgpIHtcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgaSA9IDA7XHJcblx0XHRcdFx0aSA8IGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5ncy5sZW5ndGg7XHJcblx0XHRcdFx0aSsrXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mbyAmJlxyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoubGFzdFNvcnRJbmZvLm5hbWUgPT09XHJcblx0XHRcdFx0XHRcdGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5nc1tpXS5uYW1lICYmXHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iai5sYXN0U29ydEluZm8ub3JkZXIgPT09IFwiQXNjZW5kaW5nXCIgJiZcclxuXHRcdFx0XHRcdCEoXHJcblx0XHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mby5uYW1lID09PVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm5hbWUgJiZcclxuXHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91c1NvcnQub3JkZXIgPT09IFwiTm9uZVwiXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5zb3J0U2V0dGluZ3NbaV0ub3JkZXIgPSBcIk5vbmVcIjtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5wcmV2aW91c1NvcnQgJiZcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mbyAmJlxyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoubGFzdFNvcnRJbmZvLm5hbWUgPT09XHJcblx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm5hbWUgJiZcclxuXHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm9yZGVyID09PSBcIkFzY2VuZGluZ1wiXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5zb3J0U2V0dGluZ3NbaV0ub3JkZXIgPSBcIkFzY2VuZGluZ1wiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGNlbGxDbGljayhhcmdzKSB7XHJcblx0XHQvLyDmuIXpmaTmjpLluo9cclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3Muc29ydE9yZGVyICYmXHJcblx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnZhbHVlU29ydFNldHRpbmdzLmhlYWRlclRleHQgJiZcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3Muc29ydE9yZGVyID09PVxyXG5cdFx0XHRcdFwiRGVzY2VuZGluZ1wiICYmXHJcblx0XHRcdGFyZ3MuZGF0YS52YWx1ZVNvcnQgJiZcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3MuaGVhZGVyVGV4dCA9PT1cclxuXHRcdFx0XHRhcmdzLmRhdGEudmFsdWVTb3J0LmxldmVsTmFtZVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouc2V0UHJvcGVydGllcyhcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHRkYXRhU291cmNlU2V0dGluZ3M6IHtcclxuXHRcdFx0XHRcdFx0dmFsdWVTb3J0U2V0dGluZ3M6IHtcclxuXHRcdFx0XHRcdFx0XHRzb3J0T3JkZXI6IFwiRGVzY2VuZGluZ1wiLFxyXG5cdFx0XHRcdFx0XHRcdGhlYWRlclRleHQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0dHJ1ZVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy52YWx1ZVNvcnRTZXR0aW5ncyA9IHt9O1xyXG5cdFx0XHR0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGRhdGFCb3VuZChlKSB7XHJcblx0XHRpZiAodGhpcy5pc0luaXQpIHtcclxuXHRcdFx0dGhpcy5pc0luaXQgPSBmYWxzZTtcclxuXHRcdH1cclxuXHRcdHRoaXMuZ3JhbmRUb3RhbHMgPSB7fTtcclxuXHRcdHRoaXMuc3ViVG90YWxzID0ge307XHJcblx0XHRpZiAodGhpcy5waXZvdE9iai5ncmlkKSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouZ3JpZC5yZXNpemVTdG9wID0gdGhpcy5yZXNpemVTdG9wLmJpbmQodGhpcyk7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqICYmXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLnBpdm90QnV0dG9uTW9kdWxlICYmXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLnBpdm90QnV0dG9uTW9kdWxlLm1lbnVPcHRpb25cclxuXHRcdCkge1xyXG5cdFx0XHQoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoucGl2b3RCdXR0b25Nb2R1bGUubWVudU9wdGlvbiBhcyBhbnlcclxuXHRcdFx0KS5zdHJpbmdBZ2dyZWdhdGVUeXBlcyA9IFtcclxuXHRcdFx0XHRcIkNvdW50XCIsXHJcblx0XHRcdFx0XCJEaXN0aW5jdENvdW50XCIsXHJcblx0XHRcdFx0XCJGaXJzdFwiLFxyXG5cdFx0XHRcdFwiTGFzdFwiLFxyXG5cdFx0XHRdO1xyXG5cdFx0fVxyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLnBpdm90QnV0dG9uTW9kdWxlICYmXHJcblx0XHRcdHRoaXMucGl2b3RPYmoucGl2b3RCdXR0b25Nb2R1bGUubWVudU9wdGlvblxyXG5cdFx0KSB7XHJcblx0XHRcdChcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLnBpdm90QnV0dG9uTW9kdWxlLm1lbnVPcHRpb24gYXMgYW55XHJcblx0XHRcdCkuc3RyaW5nQWdncmVnYXRlVHlwZXMgPSBbXHJcblx0XHRcdFx0XCJDb3VudFwiLFxyXG5cdFx0XHRcdFwiRGlzdGluY3RDb3VudFwiLFxyXG5cdFx0XHRcdFwiRmlyc3RcIixcclxuXHRcdFx0XHRcIkxhc3RcIixcclxuXHRcdFx0XTtcclxuXHRcdH1cclxuXHRcdGxldCBhbGxTdW1tYXJ5VHlwZSA9IEFMTF9BR0dSRUdBVEVfVFlQRVMgYXMgYW55O1xyXG5cdFx0dGhpcy5waXZvdE9iai5nZXRBbGxTdW1tYXJ5VHlwZSA9ICgpID0+IGFsbFN1bW1hcnlUeXBlO1xyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqKSB7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmFnZ3JlZ2F0ZVR5cGVzID0gYWxsU3VtbWFyeVR5cGU7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmdldEFsbFN1bW1hcnlUeXBlID0gKCkgPT4gYWxsU3VtbWFyeVR5cGU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhbGN1bGF0ZWRDZWxsU2V0cyhhcmdzLCBjdXJGaWVsZHMpIHtcclxuXHRcdGxldCBtYXRjaEZpZWxkcyA9IGN1ckZpZWxkc1tcIm1hdGNoRmllbGRzXCJdO1xyXG5cdFx0bGV0IGZvcm11bGEgPSBjdXJGaWVsZHNbXCJmb3JtdWxhXCJdO1xyXG5cdFx0bGV0IHZhbHVlID0gMDtcclxuXHRcdGxldCByb3dzID0gdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Mucm93cztcclxuXHRcdGxldCBpbnZhbGlkVHlwZXMgPSBbXCJzdHJpbmdcIiwgXCJudmFyY2hhclwiLCBcImRhdGVcIiwgXCJkYXRldGltZVwiXTtcclxuXHRcdGxldCBpc0ludmFsaWQgPSBtYXRjaEZpZWxkcy5zb21lKChmKSA9PlxyXG5cdFx0XHRpbnZhbGlkVHlwZXMuaW5jbHVkZXMoXHJcblx0XHRcdFx0dGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZi5tYXRjaFdvcmQpWzBdW1xyXG5cdFx0XHRcdFx0XCJkYXRhVHlwZVwiXHJcblx0XHRcdFx0XVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdFx0bGV0IGN1cnJlbnRyb3dDZWxsVHlwZSA9IGFyZ3Mucm93Q2VsbFR5cGU7XHJcblx0XHRpZiAoaXNJbnZhbGlkKSByZXR1cm4gXCItXCI7XHJcblx0XHRpZiAoXHJcblx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIiB8fFxyXG5cdFx0XHRhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBjaGlsZEhlYWRlcnMgPSBbXTtcclxuXHRcdFx0bGV0IHN1bSA9IDA7XHJcblx0XHRcdGxldCBjbG9uZUNlbGxTZXRzID0gY2xvbmVEZWVwKGFyZ3MuY2VsbFNldHMpO1xyXG5cdFx0XHRsZXQgZ3JvdXBOYW1lQXJyYXlzID0gW107XHJcblx0XHRcdGZvciAobGV0IGluZGV4ID0gYXJncy5yb3cubGV2ZWw7IGluZGV4IDwgcm93cy5sZW5ndGg7IGluZGV4KyspIHtcclxuXHRcdFx0XHRncm91cE5hbWVBcnJheXMucHVzaChyb3dzW2luZGV4XS5uYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNsb25lQ2VsbFNldHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0bGV0IGhlYWRlciA9IGdyb3VwTmFtZUFycmF5c1xyXG5cdFx0XHRcdFx0Lm1hcCgobmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChjbG9uZUNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGNsb25lQ2VsbFNldHNbaV1bbmFtZV07XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdGlmICghKGNoaWxkSGVhZGVycyBhcyBhbnkpLmluY2x1ZGVzKGhlYWRlcikpIHtcclxuXHRcdFx0XHRcdGNoaWxkSGVhZGVycy5wdXNoKGhlYWRlcik7XHJcblx0XHRcdFx0XHRsZXQgZmlsdGVyT2JqOiBhbnkgPSB7fTtcclxuXHRcdFx0XHRcdGdyb3VwTmFtZUFycmF5cy5tYXAoXHJcblx0XHRcdFx0XHRcdChuYW1lLCBpKSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW2ldKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGFyZ3MuY2VsbFNldHMgPSBfZmlsdGVyKGNsb25lQ2VsbFNldHMsIGZpbHRlck9iaik7XHJcblx0XHRcdFx0XHRhcmdzLnJvd0NlbGxUeXBlID0gXCJ2YWx1ZVwiO1xyXG5cdFx0XHRcdFx0c3VtICs9IHRoaXMuY2FsY3VsYXRlZFZhbHVlcyhhcmdzLCBtYXRjaEZpZWxkcywgZm9ybXVsYSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPSBjdXJyZW50cm93Q2VsbFR5cGU7XHJcblxyXG5cdFx0XHQvLyDmmoLlrZjlvZPliY1TdWJUb3RhbO+8jCDnlKjkuo7mlLbnvKnml7bor7vlj5ZcclxuXHRcdFx0bGV0IHByZWZpeEhlYWRlciA9IHRoaXMuZ2V0Q2FsY0hlYWRlcihhcmdzLCBmb3JtdWxhKTtcclxuXHRcdFx0dGhpcy51cGRhdGVUZW1wU3VidG90YWxzKHByZWZpeEhlYWRlciwgc3VtKTtcclxuXHRcdFx0cmV0dXJuIHN1bTtcclxuXHRcdH0gZWxzZSBpZiAoYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiKSB7XHJcblx0XHRcdGlmIChhcmdzLnJvdy5oYXNDaGlsZCkge1xyXG5cdFx0XHRcdC8vIGNvbGxhcHNlIOivu+WPllN1YlRvdGFsXHJcblx0XHRcdFx0bGV0IGhlYWRlciA9IHRoaXMuZ2V0Q2FsY0hlYWRlcihhcmdzLCBmb3JtdWxhKTtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSB0aGlzLnRlbXBTdWJ0b3RhbHMuZmluZEluZGV4KFxyXG5cdFx0XHRcdFx0KGl0ZW0pID0+IGl0ZW0ucm93TmFtZSA9PT0gaGVhZGVyXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoaW5kZXggPiAtMSkge1xyXG5cdFx0XHRcdFx0dmFsdWUgPSB0aGlzLnRlbXBTdWJ0b3RhbHNbaW5kZXhdLnJvd1ZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBleHBhbmRcclxuXHRcdFx0XHR2YWx1ZSA9IHRoaXMuY2FsY3VsYXRlZFZhbHVlcyhhcmdzLCBtYXRjaEZpZWxkcywgZm9ybXVsYSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdGFjdGlvbkZhaWx1cmUoYXJnczogUGl2b3RBY3Rpb25GYWlsdXJlRXZlbnRBcmdzKTogdm9pZCB7XHJcblx0XHRpZiAoYXJncy5hY3Rpb25OYW1lID09IFwiRHJpbGwgZG93blwiIHx8IGFyZ3MuYWN0aW9uTmFtZSA9PSBcIkRyaWxsIHVwXCIpIHtcclxuXHRcdFx0Ly8gVHJpZ2dlcnMgd2hlbiB0aGUgY3VycmVudCBVSSBhY3Rpb24gZmFpbHMgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCByZXN1bHQuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENhbGNIZWFkZXIoYXJncywgZm9ybXVsYT8pIHtcclxuXHRcdGxldCBoZWFkZXIgPSBcIlwiO1xyXG5cdFx0bGV0IHJvd3MgPSB0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5yb3dzO1xyXG5cdFx0bGV0IGdyb3VwTmFtZUFycmF5cyA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3Mucm93LmxldmVsOyBpbmRleCsrKSB7XHJcblx0XHRcdGdyb3VwTmFtZUFycmF5cy5wdXNoKHJvd3NbaW5kZXhdLm5hbWUpO1xyXG5cdFx0fVxyXG5cdFx0aGVhZGVyID0gZ3JvdXBOYW1lQXJyYXlzLmxlbmd0aFxyXG5cdFx0XHQ/IGdyb3VwTmFtZUFycmF5c1xyXG5cdFx0XHRcdFx0Lm1hcCgobmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gYXJncy5jZWxsU2V0c1swXVtuYW1lXTtcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQuam9pbihcIi1cIikgK1xyXG5cdFx0XHQgIFwiLVwiICtcclxuXHRcdFx0ICBhcmdzLnJvdy5hY3R1YWxUZXh0XHJcblx0XHRcdDogYXJncy5yb3cuYWN0dWFsVGV4dDtcclxuXHRcdGlmIChmb3JtdWxhKSBoZWFkZXIgKz0gXCJfX19cIiArIGZvcm11bGE7XHJcblx0XHRyZXR1cm4gaGVhZGVyO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVUZW1wU3VidG90YWxzKHJvd05hbWUsIHJvd1ZhbHVlKSB7XHJcblx0XHRsZXQgaW5kZXggPSB0aGlzLnRlbXBTdWJ0b3RhbHMuZmluZEluZGV4KFxyXG5cdFx0XHQoaXRlbSkgPT4gaXRlbS5yb3dOYW1lID09PSByb3dOYW1lXHJcblx0XHQpO1xyXG5cdFx0bGV0IHRlbXA6IGFueSA9IHt9O1xyXG5cdFx0dGVtcC5yb3dOYW1lID0gcm93TmFtZTtcclxuXHRcdHRlbXAucm93VmFsdWUgPSByb3dWYWx1ZTtcclxuXHRcdGlmIChpbmRleCA+IC0xKSB7XHJcblx0XHRcdHRoaXMudGVtcFN1YnRvdGFscy5zcGxpY2UoaW5kZXgsIDEsIHRlbXApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy50ZW1wU3VidG90YWxzLnB1c2godGVtcCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhbGN1bGF0ZWRWYWx1ZXMoYXJncywgbWF0Y2hGaWVsZHMsIGZvcm11bGEpIHtcclxuXHRcdGlmIChtYXRjaEZpZWxkcy5sZW5ndGgpIHtcclxuXHRcdFx0bGV0IGNhbGN1bGVkTWF0Y2hGaWVsZHMgPSBtYXRjaEZpZWxkcy5tYXAoKGYpID0+IHtcclxuXHRcdFx0XHRzd2l0Y2ggKGYubWF0Y2hNZXRob2QpIHtcclxuXHRcdFx0XHRcdGNhc2UgXCJGaXJzdFwiOlxyXG5cdFx0XHRcdFx0Y2FzZSBcIkxhc3RcIjpcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPSB0aGlzLmNhbGN1bGF0ZWRGaXN0TGFzdChcclxuXHRcdFx0XHRcdFx0XHRhcmdzLFxyXG5cdFx0XHRcdFx0XHRcdGYubWF0Y2hNZXRob2QsXHJcblx0XHRcdFx0XHRcdFx0Zi5tYXRjaFdvcmRcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiTWF4XCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gbWF4QnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpW2YubWF0Y2hXb3JkXTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiTWluXCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gbWluQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpW2YubWF0Y2hXb3JkXTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiU3VtXCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gc3VtQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHQvLyBTTVAyLTQwOTQgVW5pY29ybiAtIEwzIEFkanVzdGVkIE5BViB2YWx1ZSBpc3N1ZXNcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlICYmIGYucmVwbGFjZVZhbHVlLnRvRml4ZWQoMTApO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgXCJBdmdcIjpcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPSBtZWFuQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gZjtcclxuXHRcdFx0fSk7XHJcblx0XHRcdGxldCByZXN1bHRGb3JtdWxhID0gZm9ybXVsYTtcclxuXHRcdFx0aWYgKGNhbGN1bGVkTWF0Y2hGaWVsZHMubGVuZ3RoKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjYWxjdWxlZE1hdGNoRmllbGRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRyZXN1bHRGb3JtdWxhID0gcmVzdWx0Rm9ybXVsYS5yZXBsYWNlKFxyXG5cdFx0XHRcdFx0XHRjYWxjdWxlZE1hdGNoRmllbGRzW2ldLm1hdGNoU3RyLFxyXG5cdFx0XHRcdFx0XHRcIihcIiArIGNhbGN1bGVkTWF0Y2hGaWVsZHNbaV0ucmVwbGFjZVZhbHVlICsgXCIpXCJcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IG5ldyBGdW5jdGlvbihcclxuXHRcdFx0XHRcdFwicmV0dXJuIFwiICsgcmVzdWx0Rm9ybXVsYS5yZXBsYWNlKC9bXi08Pj86KClcXGQvKisuXS9nLCBcIlwiKVxyXG5cdFx0XHRcdCkoKTtcclxuXHRcdFx0XHRpZiAoaXNOYU4ocmVzdWx0KSB8fCAhaXNGaW5pdGUocmVzdWx0KSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIDA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdHJldHVybiBOYU47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiAwO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRJcnJIZWFkZXIobGV2ZWwsIGVsZSwgdHlwZSkge1xyXG5cdFx0aWYgKHR5cGUgPT09IFwicm93XCIpIHtcclxuXHRcdFx0bGV0IGN1clJvd3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJyb3dzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0bGV0IHJvd3NBcnIgPSBjdXJSb3dzLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKTtcclxuXHJcblx0XHRcdGxldCBoZWFkZXJBcnIgPSBbXTtcclxuXHRcdFx0bGV0IHJvd0xldmVsID0gbGV2ZWw7XHJcblx0XHRcdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPD0gcm93TGV2ZWw7IGluZGV4KyspIHtcclxuXHRcdFx0XHRoZWFkZXJBcnIucHVzaChlbGUuUm93W3Jvd3NBcnJbaW5kZXhdXSk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGhlYWRlckFyci5qb2luKFwiLlwiKTtcclxuXHRcdH0gZWxzZSBpZiAodHlwZSA9PT0gXCJjb2xcIikge1xyXG5cdFx0XHRsZXQgY3VyQ2xvdW1ucyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcImNvbHVtbnNcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgY29sc0FyciA9IGN1ckNsb3VtbnMubWFwKChpdGVtKSA9PiBpdGVtLm5hbWUpO1xyXG5cclxuXHRcdFx0bGV0IGhlYWRlckFyciA9IFtdO1xyXG5cdFx0XHRsZXQgY29sTGV2ZWwgPSBsZXZlbDtcclxuXHRcdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8PSBjb2xMZXZlbDsgaW5kZXgrKykge1xyXG5cdFx0XHRcdGhlYWRlckFyci5wdXNoKGVsZS5Db2xbY29sc0FycltpbmRleF1dKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gaGVhZGVyQXJyLmpvaW4oXCIuXCIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG90YWxGb3JtYXR0ZWQgPSB7fTtcclxuXHRwdWJsaWMgYWdncmVnYXRlQ2VsbEluZm8oYXJncykge1xyXG5cdFx0bGV0IGFzT2ZEYXRlID0gdGhpcy5wYmYudGltZSh0aGlzLmRhc2hib2FyZC5hc09mRGF0ZSk7XHJcblx0XHQvLyBpZiBjYWxjdWxhdGVkIGZpZWxkXHJcblx0XHRpZiAoYXJncy5hZ2dyZWdhdGVUeXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCIpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAoYXJncy5maWVsZE5hbWUgPT0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldLm5hbWUpIHtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSB0aGlzLmNhbGN1bGF0ZWRDZWxsU2V0cyhcclxuXHRcdFx0XHRcdFx0YXJncyxcclxuXHRcdFx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0W1xyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlSVJSXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJCZWZvcmVDYXJyaWVkXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJJUlJEYXRlXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJNVERcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZUlSUlFURFwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlSVJSWVREXCIsXHJcblx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCB2YWx1ZUZpZWxkO1xyXG5cdFx0XHRsZXQgZGF0ZUZpZWxkO1xyXG5cdFx0XHRsZXQgc3RhcnREYXRlO1xyXG5cdFx0XHRsZXQgZW5kRGF0ZTtcclxuXHRcdFx0c3dpdGNoIChhcmdzLmFnZ3JlZ2F0ZVR5cGUpIHtcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlSVJSXCI6XHJcblx0XHRcdFx0XHR2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZVwiO1xyXG5cdFx0XHRcdFx0ZGF0ZUZpZWxkID0gXCJJUlJEYXRlXCI7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlSVJSTVREXCI6XHJcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoYXNPZkRhdGUpXHJcblx0XHRcdFx0XHRcdC5zdGFydE9mKFwibW9udGhcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUlFURFwiOlxyXG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGFzT2ZEYXRlKVxyXG5cdFx0XHRcdFx0XHQuc3RhcnRPZihcInF1YXJ0ZXJcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUllURFwiOlxyXG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGFzT2ZEYXRlKVxyXG5cdFx0XHRcdFx0XHQuc3RhcnRPZihcInllYXJcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUklSUkRhdGVcIjpcclxuXHRcdFx0XHRcdHZhbHVlRmllbGQgPSBcIklSUkFkalZhbHVlXCI7XHJcblx0XHRcdFx0XHRkYXRlRmllbGQgPSBcIkNhbGN1bGF0ZUlSUkRhdGVcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVJUlJCZWZvcmVDYXJyaWVkXCI6XHJcblx0XHRcdFx0XHR2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZUJlZm9yZUNhcnJ5XCI7XHJcblx0XHRcdFx0XHRkYXRlRmllbGQgPSBcIklSUkRhdGVcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgTkFWQWRqID0gMDtcclxuXHRcdFx0bGV0IHZhbHVlcyA9IFtdO1xyXG5cdFx0XHRsZXQgYmVmb3JlU3RhcnROQVZBZGogPSAwOyAvLyDlrZjlgqjkuIrkuIDkuKrpmLbmrrXnmoROQVZBZGrmgLvlkoxcclxuXHRcdFx0bGV0IGJlZm9yZVN0YXJ0VmFsdWVzID0gW107IC8vIOWtmOWCqOS4iuS4gOS4qumYtuauteeahOe0r+iuoembhuWQiCAo5Y+q5piv5Li65LqG5omT5Y2w77yM5rKh5pyJ5a6e6ZmF55So6YCUKVxyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRhbW91bnQ6IGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJBbW91bnRcIl0sXHJcblx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSkgPT09XHJcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQvLyBTTVAyLTE2OTIwXHJcblx0XHRcdFx0Ly8gSWYgSVJSIERhdGUgPiBEYXNoYm9hcmQgcmVwb3J0IGRhdGUgPSBUYWtlcyBhcyBvZiBkYXNoYm9hcmQgcmVwb3J0IGRhdGVcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlSVJSSVJSRGF0ZVwiICYmXHJcblx0XHRcdFx0XHRhc09mRGF0ZSA8IHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtkYXRlRmllbGRdKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0ZGF0YS5kYXRlID0gYXNPZkRhdGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdE5BVkFkaiArPSBhcmdzLmNlbGxTZXRzW2ldW3ZhbHVlRmllbGRdO1xyXG5cdFx0XHRcdC8vIFNNUDItMTcyMTkgTVREIFFURCBZVEQgSVJSXHJcblx0XHRcdFx0aWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XHJcblx0XHRcdFx0XHRpZiAobW9tZW50KGRhdGEuZGF0ZSkuaXNCZWZvcmUoc3RhcnREYXRlKSkge1xyXG5cdFx0XHRcdFx0XHRkYXRhW3ZhbHVlRmllbGRdID0gYXJncy5jZWxsU2V0c1tpXVt2YWx1ZUZpZWxkXTtcclxuXHRcdFx0XHRcdFx0YmVmb3JlU3RhcnRWYWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdFx0YmVmb3JlU3RhcnROQVZBZGogKz0gZGF0YVt2YWx1ZUZpZWxkXTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IW1vbWVudChkYXRhLmRhdGUpLmlzQmV0d2VlbihcclxuXHRcdFx0XHRcdFx0XHRzdGFydERhdGUsXHJcblx0XHRcdFx0XHRcdFx0ZW5kRGF0ZSxcclxuXHRcdFx0XHRcdFx0XHRudWxsLFxyXG5cdFx0XHRcdFx0XHRcdFwiW11cIlxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhLmFtb3VudCAhPSAwKSB7XHJcblx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKE5BVkFkaiA+IDAuMDAwMSB8fCBOQVZBZGogPCAtMC4wMDAxKSB7XHJcblx0XHRcdFx0dmFsdWVzLnB1c2goe1xyXG5cdFx0XHRcdFx0YW1vdW50OiBOQVZBZGosXHJcblx0XHRcdFx0XHRkYXRlOiBhc09mRGF0ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZXMgPSBzb3J0QnkodmFsdWVzLCBcImRhdGVcIik7XHJcblx0XHRcdC8vIOWmguaenOaYr01URCxRVEQsWVREIOWImemcgOimgeaKiuW9k+WJjemYtuauteS7peWJjeeahOaJgOacieaVsOaNrui/m+ihjOaxh+aAu++8jOWKoOWFpeiuoeeul1xyXG5cdFx0XHRpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcclxuXHRcdFx0XHR2YWx1ZXMudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRhbW91bnQ6IC1iZWZvcmVTdGFydE5BVkFkaiwgLy8g5byA5aeL55qE5pWw5o2u6ZyA6KaB5Y+W5Y+NXHJcblx0XHRcdFx0XHRkYXRlOiB0aGlzLnBiZi50aW1lKHN0YXJ0RGF0ZSksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJiZWZvcmVTdGFydFZhbHVlczpcIiwgYmVmb3JlU3RhcnRWYWx1ZXMpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcInZhbHVlczpcIiwgdmFsdWVzKTtcclxuXHRcdFx0aWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0bGV0IGd1ZXNzID0gMC4xO1xyXG5cdFx0XHRcdGNvbnN0IHN1bUFtb3VudCA9IHZhbHVlc1xyXG5cdFx0XHRcdFx0Lm1hcCgoaXRlbSkgPT4gaXRlbS5hbW91bnQpXHJcblx0XHRcdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMCk7XHJcblx0XHRcdFx0aWYgKHN1bUFtb3VudCA8IDApIHtcclxuXHRcdFx0XHRcdGd1ZXNzID0gLTAuMTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly9TTVAyLTIyNDkgZml4ZWQgdGhlIGJpZyBpcnIgaXNzdWVcclxuXHRcdFx0XHRpZiAoc3VtQW1vdW50ID09PSAwKSB7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gMDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVJdGVtcyA9IHZhbHVlcy5zbGljZSgwLCB2YWx1ZXMubGVuZ3RoIC0gMSk7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUxpc3QgPSB2YWx1ZUl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5hbW91bnQpO1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0ZUxpc3QgPSB2YWx1ZUl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5kYXRlKTtcclxuXHRcdFx0XHRcdGNvbnN0IGxhc3RJdGVtID0gdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXTtcclxuXHRcdFx0XHRcdGNvbnN0IG5hdkFkanVzdCA9IGxhc3RJdGVtLmFtb3VudDtcclxuXHRcdFx0XHRcdGNvbnN0IGxhdGVzdERhdGUgPSBsYXN0SXRlbS5kYXRlO1xyXG5cdFx0XHRcdFx0bGV0IGlyciA9XHJcblx0XHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuRXhjZWxGb3JtdWxhcy5fQ2FsY3VsYXRlWGlycihcclxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFx0ZGF0ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFx0bmF2QWRqdXN0LFxyXG5cdFx0XHRcdFx0XHRcdGxhdGVzdERhdGVcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBpcnIgPT09IG51bGwgPyBcIlwiIDogaXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdO1xyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBhcmdzLmZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0ZmllbGQubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGRbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5kcFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0OiBcIlAyXCIsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vICBTTVAyLTE2NTIwIFRXUiDmnIgv5a2jL+W5tCAmJiBTTVAyLTE2NjgzIFZBUlxyXG5cdFx0aWYgKFxyXG5cdFx0XHRbXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVUV1JNVERcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVRXUlFURFwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVFdSWVREXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTlcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85OVwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk5XCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTVcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85NVwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk1XCIsXHJcblx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0KSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiPT09PT09PT09PT09PT09PT09PT09PT09PT1cIik7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiYXJnczpcIiwgYXJncyk7XHJcblx0XHRcdGxldCB2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZVwiO1xyXG5cdFx0XHRsZXQgZGF0ZUZpZWxkID0gXCJJUlJEYXRlXCI7XHJcblx0XHRcdGxldCB0aW1lUmFuZ2U7XHJcblx0XHRcdHN3aXRjaCAoYXJncy5hZ2dyZWdhdGVUeXBlKSB7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVRXUk1URFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJNVERfOTlcIjpcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVkFSTVREXzk1XCI6XHJcblx0XHRcdFx0XHR0aW1lUmFuZ2UgPSBcIm1vbnRoXCI7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVFdSUVREXCI6XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVZBUlFURF85OVwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJRVERfOTVcIjpcclxuXHRcdFx0XHRcdHRpbWVSYW5nZSA9IFwicXVhcnRlclwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVRXUllURFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJZVERfOTlcIjpcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVkFSWVREXzk1XCI6XHJcblx0XHRcdFx0XHR0aW1lUmFuZ2UgPSBcInllYXJcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgdmFsdWVzID0gW107IC8vIOi/meS4qumYtuauteeahOe0r+iuoembhuWQiFxyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRbdmFsdWVGaWVsZF06IGFyZ3MuY2VsbFNldHNbaV1bdmFsdWVGaWVsZF0sXHJcblx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSkgPT09XHJcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g5aaC5p6cYXNPZkRhdGXkuI3mmK8g5pys5pyIL+Wto+W6pi/lubQg55qE5pyA5ZCO5LiA5aSp77yM6YO95piv5oiq6IezIOS4iuS4quaciC/lraPluqYv5bm0IOeahOacgOWQjuS4gOWkqeeahOaVsOaNruWOu+iuoeeul1xyXG5cdFx0XHRsZXQgX2FzT2ZEYXRlID0gbW9tZW50KGFzT2ZEYXRlKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJfYXNPZkRhdGU6XCIsIF9hc09mRGF0ZSk7XHJcblx0XHRcdGxldCBpc0VuZE9mUGVyaW9kID0gKHVuaXQpID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdFx0X2FzT2ZEYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgPT09XHJcblx0XHRcdFx0XHRfYXNPZkRhdGUuZW5kT2YodW5pdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH07XHJcblx0XHRcdGxldCBlbmREYXRlID0gaXNFbmRPZlBlcmlvZCh0aW1lUmFuZ2UpXHJcblx0XHRcdFx0PyBtb21lbnQoYXNPZkRhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIilcclxuXHRcdFx0XHQ6IG1vbWVudChhc09mRGF0ZSlcclxuXHRcdFx0XHRcdFx0LnN1YnRyYWN0KDEsIHRpbWVSYW5nZSlcclxuXHRcdFx0XHRcdFx0LmVuZE9mKHRpbWVSYW5nZSlcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblxyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcImVuZERhdGU6XCIsIGVuZERhdGUpO1xyXG5cdFx0XHR2YWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKChpdGVtKSA9PlxyXG5cdFx0XHRcdG1vbWVudChpdGVtLmRhdGUpLmlzU2FtZU9yQmVmb3JlKGVuZERhdGUpXHJcblx0XHRcdCk7XHJcblx0XHRcdHZhbHVlcyA9IHNvcnRCeSh2YWx1ZXMsIFwiZGF0ZVwiKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJ2YWx1ZXM6XCIsIHZhbHVlcyk7XHJcblxyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0gdGhpcy5nZXRUaW1lUmFuZ2VzKFxyXG5cdFx0XHRcdFx0dmFsdWVzLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZSxcclxuXHRcdFx0XHRcdHRpbWVSYW5nZSxcclxuXHRcdFx0XHRcdFwiZGF0ZVwiXHJcblx0XHRcdFx0KTsgLy8g5ZCE5Liq6Zi25q6155qE5pWw5o2uXHJcblx0XHRcdFx0bGV0IHJlc3VsdFRvdGFsID0ge307IC8vIOWQhOS4qumYtuauteaAu+WSjFxyXG5cdFx0XHRcdGZvciAoY29uc3QgcHJvcCBpbiByZXN1bHQpIHtcclxuXHRcdFx0XHRcdHJlc3VsdFRvdGFsW3Byb3BdID0gcmVzdWx0W3Byb3BdLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGFjYyArIChjdXJbdmFsdWVGaWVsZF0gfHwgMCk7XHJcblx0XHRcdFx0XHR9LCAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZXN1bHQ6XCIsIHJlc3VsdCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZXN1bHRUb3RhbDpcIiwgcmVzdWx0VG90YWwpO1xyXG5cclxuXHRcdFx0XHRjb25zdCBjdW11bGF0aXZlU3VtID0ge307IC8vIOWQhOS4qumYtuautee0r+iuoeWSjFxyXG5cdFx0XHRcdGxldCBzdW0gPSAwO1xyXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdFRvdGFsKSkge1xyXG5cdFx0XHRcdFx0c3VtICs9IHJlc3VsdFRvdGFsW2tleV07XHJcblx0XHRcdFx0XHRjdW11bGF0aXZlU3VtW2Ake2tleX1gXSA9IHN1bTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJjdW11bGF0aXZlU3VtOlwiLCBjdW11bGF0aXZlU3VtKTtcclxuXHJcblx0XHRcdFx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1bXVsYXRpdmVTdW0pO1xyXG5cdFx0XHRcdGxldCB0d3JMaXN0ID0gW107XHJcblx0XHRcdFx0Ly8g6YGN5Y6G5q+P5Lik5Liq6Zi25q61IOiuoeeul1RXUlxyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcclxuXHRcdFx0XHRcdGNvbnN0IGtleTEgPSBrZXlzW2ldO1xyXG5cdFx0XHRcdFx0Y29uc3Qga2V5MiA9IGtleXNbaSArIDFdO1xyXG5cclxuXHRcdFx0XHRcdC8vIOiuoeeul+S4pOS4qumYtuauteS5i+mXtOeahOmAkuWinumHjywg5Ye65pWw5LiN6IO95Li6MFxyXG5cdFx0XHRcdFx0aWYgKGN1bXVsYXRpdmVTdW1ba2V5MV0gIT0gMCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpbmNyZW1lbnQgPVxyXG5cdFx0XHRcdFx0XHRcdGN1bXVsYXRpdmVTdW1ba2V5Ml0gLSBjdW11bGF0aXZlU3VtW2tleTFdO1xyXG5cdFx0XHRcdFx0XHRsZXQgdHdyID0gaW5jcmVtZW50IC8gY3VtdWxhdGl2ZVN1bVtrZXkxXTtcclxuXHRcdFx0XHRcdFx0dHdyTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRkYXRlOiBrZXkyLFxyXG5cdFx0XHRcdFx0XHRcdHR3cjogdHdyLFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g6K6h566XQXZlcmFnZSBUV1JcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcInR3ckxpc3Q6XCIsIHR3ckxpc3QpO1xyXG5cdFx0XHRcdGxldCBhdmVyYWdlVFdSID0gdGhpcy5jYWxjdWxhdGVHcm93dGhSYXRlKFxyXG5cdFx0XHRcdFx0dHdyTGlzdC5tYXAoKHgpID0+IHgudHdyKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCLorqHnrpdBdmVyYWdlIFRXUjpcIiwgYXZlcmFnZVRXUik7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0W1xyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUk1URFwiLFxyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUlFURFwiLFxyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUllURFwiLFxyXG5cdFx0XHRcdFx0XS5pbmNsdWRlcyhhcmdzLmFnZ3JlZ2F0ZVR5cGUpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyBTTVAyLTE2NTIwIFRXUiDmnIgv5a2jL+W5tFxyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdGlzTmFOKGF2ZXJhZ2VUV1IpIHx8IGF2ZXJhZ2VUV1IgPT0gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdD8gXCJcIlxyXG5cdFx0XHRcdFx0XHRcdDogYXZlcmFnZVRXUi50b0ZpeGVkKDQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoaXNOYU4oYXZlcmFnZVRXUikgfHwgYXZlcmFnZVRXUiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gU01QMi0xNjY4MyBWQVIg5Yy65YiGOTkl5ZKMOTUlXHJcblx0XHRcdFx0XHRcdGxldCBaU2NvcmUgPSBbXHJcblx0XHRcdFx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTlcIixcclxuXHRcdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85OVwiLFxyXG5cdFx0XHRcdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk5XCIsXHJcblx0XHRcdFx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0XHRcdFx0XHRcdD8gMi4zM1xyXG5cdFx0XHRcdFx0XHRcdDogMS42NTtcclxuXHRcdFx0XHRcdFx0aWYgKHR3ckxpc3QubGVuZ3RoIDwgMikge1xyXG5cdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBTRCA9IHRoaXMuY2FsY3VsYXRlU3RhbmRhcmREZXZpYXRpb24oXHJcblx0XHRcdFx0XHRcdFx0XHR0d3JMaXN0Lm1hcCgoeCkgPT4geC50d3IpXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcImNhbGN1bGF0ZVN0YW5kYXJkRGV2aWF0aW9uOlwiLCBTRCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IFZBUiA9IGF2ZXJhZ2VUV1IgLSBTRCAqIFpTY29yZTtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID0gVkFSLnRvRml4ZWQoNCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJhcmdzLnZhbHVlOlwiLCBhcmdzLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlICYmXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRkZWxldGUgdGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXTtcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogYXJncy5maWVsZE5hbWUsXHJcblx0XHRcdFx0XHRmb3JtYXQ6XHJcblx0XHRcdFx0XHRcdGZpZWxkLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdFx0XHQ/IGZpZWxkWzBdLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdCAgZmllbGRbMF0uZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0XHRcdCAgZmllbGRbMF0uZm9ybWF0WzBdLmZvcm1hdENoZWNrZWRcclxuXHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZvcm1hdFBlcmNlbnQoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRbMF0uZHBcclxuXHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdDogXCJQMlwiLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvL1NNUDItMjcwMVxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVJUlJBY3R1YWxBdWRpdGVkXCIpIHtcclxuXHRcdFx0bGV0IE5BVkFkaiA9IDA7XHJcblx0XHRcdGxldCB2YWx1ZXMgPSBbXTtcclxuXHRcdFx0bGV0IGZpZWxkID0gdGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdGVsLmNvbE5hbWUgPT09XHJcblx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmdldEFnZ3JlZ2F0ZVR5cGUoXHJcblx0XHRcdFx0XHRcdGFyZ3MuYWdncmVnYXRlVHlwZVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHQpO1xyXG5cdFx0XHQvL1NNUDItMjcxMyBvbmx5IGp1ZGdlIGZvciB0aGlzIGRhdGFNYXJ0KEdyb3NzTmV0KVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5wb3J0bGV0LmZpZ3VyZUNvZGUgPT09IFwiR3Jvc3NOZXRcIiB8fFxyXG5cdFx0XHRcdHRoaXMucG9ydGxldC5maWd1cmVDb2RlID09PVxyXG5cdFx0XHRcdFx0XCJDb21iaW5lZEludmVzdG1lbnRGdW5kTkNvbXBhbnlDYXNoZmxvd1wiXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0YW1vdW50OiBhcmdzLmNlbGxTZXRzW2ldW1wiSVJSQW1vdW50XCJdLFxyXG5cdFx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtcIklSUkRhdGVcIl0pID09PVxyXG5cdFx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdD8gYXNPZkRhdGVcclxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5wYmYudGltZShhcmdzLmNlbGxTZXRzW2ldW1wiSVJSRGF0ZVwiXSksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0TkFWQWRqICs9IGFyZ3MuY2VsbFNldHNbaV1bXCJBY3R1YWxBdWRpdGVkTkFWXCJdO1xyXG5cdFx0XHRcdFx0aWYgKGRhdGEuYW1vdW50ICE9IDApIHtcclxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goZGF0YSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdC8vZmlsdGVyIHRoZSBkYXRhIGJ5IHRoZSBEYXRhVHlwZShBY3R1YWwgUmVwb3J0ZWQgQXVkaXRlZClcclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0bGV0IGFyZ3NkYXRhID0gYXJncy5jZWxsU2V0cy5maWx0ZXIoXHJcblx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdGVsLkRhdGFUeXBlID09PSBcIkFDVFVBTF9BVURJVEVEXCIgfHxcclxuXHRcdFx0XHRcdFx0ZWwuRGF0YVR5cGUgPT09IFwiUkVQT1JURURcIlxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzZGF0YS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0YW1vdW50OiBhcmdzZGF0YVtpXVtcIklSUkFtb3VudFwiXSxcclxuXHRcdFx0XHRcdFx0ZGF0ZTpcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3NkYXRhW2ldW1wiSVJSRGF0ZVwiXSkgPT09XHJcblx0XHRcdFx0XHRcdFx0XCJJbnZhbGlkIGRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PyBhc09mRGF0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3NkYXRhW2ldW1wiSVJSRGF0ZVwiXSksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0TkFWQWRqICs9IGFyZ3NkYXRhW2ldW1wiSVJSQWRqVmFsdWVcIl07XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5hbW91bnQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKE5BVkFkaiA+IDAuMDAwMSB8fCBOQVZBZGogPCAtMC4wMDAxKSB7XHJcblx0XHRcdFx0dmFsdWVzLnB1c2goe1xyXG5cdFx0XHRcdFx0YW1vdW50OiBOQVZBZGosXHJcblx0XHRcdFx0XHRkYXRlOiBhc09mRGF0ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZXMgPSBzb3J0QnkodmFsdWVzLCBcImRhdGVcIik7XHJcblx0XHRcdGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGxldCBndWVzcyA9IDAuMTtcclxuXHRcdFx0XHRjb25zdCBzdW1BbW91bnQgPSB2YWx1ZXNcclxuXHRcdFx0XHRcdC5tYXAoKGl0ZW0pID0+IGl0ZW0uYW1vdW50KVxyXG5cdFx0XHRcdFx0LnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIsIDApO1xyXG5cdFx0XHRcdGlmIChzdW1BbW91bnQgPCAwKSB7XHJcblx0XHRcdFx0XHRndWVzcyA9IC0wLjE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vU01QMi0yMjQ5IGZpeGVkIHRoZSBiaWcgaXJyIGlzc3VlXHJcblx0XHRcdFx0aWYgKHN1bUFtb3VudCA9PT0gMCkge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IDA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlSXRlbXMgPSB2YWx1ZXMuc2xpY2UoMCwgdmFsdWVzLmxlbmd0aCAtIDEpO1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVMaXN0ID0gdmFsdWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uYW1vdW50KTtcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGVMaXN0ID0gdmFsdWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0ZSk7XHJcblx0XHRcdFx0XHRjb25zdCBsYXN0SXRlbSA9IHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV07XHJcblx0XHRcdFx0XHRjb25zdCBuYXZBZGp1c3QgPSBsYXN0SXRlbS5hbW91bnQ7XHJcblx0XHRcdFx0XHRjb25zdCBsYXRlc3REYXRlID0gbGFzdEl0ZW0uZGF0ZTtcclxuXHRcdFx0XHRcdGxldCBpcnIgPVxyXG5cdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLkV4Y2VsRm9ybXVsYXMuX0NhbGN1bGF0ZVhpcnIoXHJcblx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGVMaXN0LFxyXG5cdFx0XHRcdFx0XHRcdG5hdkFkanVzdCxcclxuXHRcdFx0XHRcdFx0XHRsYXRlc3REYXRlXHJcblx0XHRcdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlyciA9PT0gbnVsbCA/IDAgOiBpcnI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSAwO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZSAmJlxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV1cclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV07XHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IGFyZ3MuZmllbGROYW1lLFxyXG5cdFx0XHRcdFx0Zm9ybWF0OlxyXG5cdFx0XHRcdFx0XHRmaWVsZC5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0PyBmaWVsZFswXS5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UucGl2b3RUYWJsZWZvcm1hdFBlcmNlbnQoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRbMF0uZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmRwXHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHQ6IFwiUDJcIixcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQvL1NNUDItMzQxMVxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVJUlJSZXBvcnRlZFwiKSB7XHJcblx0XHRcdGxldCBOQVZBZGogPSAwO1xyXG5cdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdGxldCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRlbC5jb2xOYW1lID09PVxyXG5cdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRBZ2dyZWdhdGVUeXBlKFxyXG5cdFx0XHRcdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGVcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMucG9ydGxldC5maWd1cmVDb2RlID09PSBcIkdyb3NzTmV0XCIgfHxcclxuXHRcdFx0XHR0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSA9PT1cclxuXHRcdFx0XHRcdFwiQ29tYmluZWRJbnZlc3RtZW50RnVuZE5Db21wYW55Q2FzaGZsb3dcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuY2VsbFNldHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRcdGFtb3VudDogYXJncy5jZWxsU2V0c1tpXVtcIklSUkFtb3VudFwiXSxcclxuXHRcdFx0XHRcdFx0ZGF0ZTpcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJEYXRlXCJdKSA9PT1cclxuXHRcdFx0XHRcdFx0XHRcIkludmFsaWQgZGF0ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtcIklSUkRhdGVcIl0pLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdE5BVkFkaiArPSBhcmdzLmNlbGxTZXRzW2ldW1wiUmVwb3J0ZWROQVZcIl07XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5hbW91bnQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRjb25zdCBkYXRhID0ge1xyXG5cdFx0XHRcdFx0XHRhbW91bnQ6IGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJBbW91bnRcIl0sXHJcblx0XHRcdFx0XHRcdGRhdGU6XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wYmYudGltZShhcmdzLmNlbGxTZXRzW2ldW1wiSVJSRGF0ZVwiXSkgPT09XHJcblx0XHRcdFx0XHRcdFx0XCJJbnZhbGlkIGRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PyBhc09mRGF0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJEYXRlXCJdKSxcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHROQVZBZGogKz0gYXJncy5jZWxsU2V0c1tpXVtcIklSUkFkalZhbHVlXCJdO1xyXG5cdFx0XHRcdFx0aWYgKGRhdGEuYW1vdW50ICE9IDApIHtcclxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goZGF0YSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChOQVZBZGogPiAwLjAwMDEgfHwgTkFWQWRqIDwgLTAuMDAwMSkge1xyXG5cdFx0XHRcdHZhbHVlcy5wdXNoKHtcclxuXHRcdFx0XHRcdGFtb3VudDogTkFWQWRqLFxyXG5cdFx0XHRcdFx0ZGF0ZTogYXNPZkRhdGUsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0dmFsdWVzID0gc29ydEJ5KHZhbHVlcywgXCJkYXRlXCIpO1xyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgZ3Vlc3MgPSAwLjE7XHJcblx0XHRcdFx0Y29uc3Qgc3VtQW1vdW50ID0gdmFsdWVzXHJcblx0XHRcdFx0XHQubWFwKChpdGVtKSA9PiBpdGVtLmFtb3VudClcclxuXHRcdFx0XHRcdC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLCAwKTtcclxuXHRcdFx0XHRpZiAoc3VtQW1vdW50IDwgMCkge1xyXG5cdFx0XHRcdFx0Z3Vlc3MgPSAtMC4xO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvL1NNUDItMjI0OSBmaXhlZCB0aGUgYmlnIGlyciBpc3N1ZVxyXG5cdFx0XHRcdGlmIChzdW1BbW91bnQgPT09IDApIHtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSAwO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUl0ZW1zID0gdmFsdWVzLnNsaWNlKDAsIHZhbHVlcy5sZW5ndGggLSAxKTtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlTGlzdCA9IHZhbHVlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmFtb3VudCk7XHJcblx0XHRcdFx0XHRjb25zdCBkYXRlTGlzdCA9IHZhbHVlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmRhdGUpO1xyXG5cdFx0XHRcdFx0Y29uc3QgbGFzdEl0ZW0gPSB2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0Y29uc3QgbmF2QWRqdXN0ID0gbGFzdEl0ZW0uYW1vdW50O1xyXG5cdFx0XHRcdFx0Y29uc3QgbGF0ZXN0RGF0ZSA9IGxhc3RJdGVtLmRhdGU7XHJcblx0XHRcdFx0XHRsZXQgaXJyID1cclxuXHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5FeGNlbEZvcm11bGFzLl9DYWxjdWxhdGVYaXJyKFxyXG5cdFx0XHRcdFx0XHRcdHZhbHVlTGlzdCxcclxuXHRcdFx0XHRcdFx0XHRkYXRlTGlzdCxcclxuXHRcdFx0XHRcdFx0XHRuYXZBZGp1c3QsXHJcblx0XHRcdFx0XHRcdFx0bGF0ZXN0RGF0ZVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBpcnIgPT09IG51bGwgPyAwIDogaXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gMDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdO1xyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBhcmdzLmZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0ZmllbGQubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGRbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5kcFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0OiBcIlAyXCIsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlUElDXCIgfHxcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09PSBcIkNhbGN1bGF0ZURQSVwiIHx8XHJcblx0XHRcdGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVUVlBJXCIgfHxcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09PSBcIkNhbGN1bGF0ZVJWUElcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTUFjdHVhbEF1ZGl0ZWRcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTVJlcG9ydGVkXCJcclxuXHRcdCkge1xyXG5cdFx0XHRsZXQgdG90YWxOdW1lcmF0b3IgPSAwO1xyXG5cdFx0XHRsZXQgdG90YWxEZW5vbWluYXRvciA9IDA7XHJcblx0XHRcdGxldCBudW1lcmF0b3JOYW1lO1xyXG5cdFx0XHRsZXQgZGVub21pbmF0b3JOYW1lO1xyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChmaWVsZC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0Y29uc3QgZm9ybXVsYUFycmF5ID0gZmllbGRbMF0uZm9ybXVsYS5zcGxpdChcIi9cIik7XHJcblx0XHRcdFx0bnVtZXJhdG9yTmFtZSA9IGZvcm11bGFBcnJheVswXTtcclxuXHRcdFx0XHRkZW5vbWluYXRvck5hbWUgPSBmb3JtdWxhQXJyYXlbMV07XHJcblx0XHRcdH1cclxuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0dG90YWxOdW1lcmF0b3IgKz0gYXJncy5jZWxsU2V0c1tqXVtudW1lcmF0b3JOYW1lXTtcclxuXHRcdFx0XHR0b3RhbERlbm9taW5hdG9yICs9IGFyZ3MuY2VsbFNldHNbal1bZGVub21pbmF0b3JOYW1lXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodG90YWxEZW5vbWluYXRvciAhPT0gMCkge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSB0b3RhbE51bWVyYXRvciAvIHRvdGFsRGVub21pbmF0b3I7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV1cclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbXHJcblx0XHRcdFx0XHRcdGFyZ3MuZmllbGROYW1lXHJcblx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXSA9IHtcclxuXHRcdFx0XHRcdFx0bmFtZTogYXJncy5maWVsZE5hbWUsXHJcblx0XHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGZpZWxkWzBdLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0TXVsdGlwbGUoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmRwXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBcIiMjIzAuMDAneCdcIixcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJGaXJzdFwiIHx8IGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJMYXN0XCIpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IHRoaXMuY2FsY3VsYXRlZEZpc3RMYXN0KFxyXG5cdFx0XHRcdGFyZ3MsXHJcblx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlLFxyXG5cdFx0XHRcdGFyZ3MuZmllbGROYW1lXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ291bnRcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiRGlzdGluY3RDb3VudFwiXHJcblx0XHQpIHtcclxuXHRcdFx0aWYgKGFyZ3MudmFsdWUpIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZS50b0ZpeGVkKDIpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHQhYXJncy52YWx1ZSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSAwICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IGZhbHNlICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IFwiZmFsc2VcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGFyZ3Muc2tpcEZvcm1hdHRpbmcgPSB0cnVlO1xyXG5cdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdH1cclxuXHRcdC8vIOaWsOW7unBpdm90IHRhYmxlLCDov5jmsqHmnInorr7nva5yb3csIOmAieS6hmNvbHVtbuS5i+WQjmdyYW5kdG90YWzkvJrmnInlgLxcclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5yb3dDZWxsVHlwZSA9PT0gXCJncmFuZFRvdGFsXCIgJiZcclxuXHRcdFx0IXRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnJvd3MubGVuZ3RoXHJcblx0XHQpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHR9XHJcblx0XHQvL1NNUDItMjg4OVxyXG5cdFx0aWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCB2YWx1ZUZpZWxkX2RhdGEgPSB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gYXJncy5maWVsZE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YVswXS5zaG93U3ViVG90YWxzID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdFx0XHRhcmdzLnNraXBGb3JtYXR0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCB2YWx1ZUZpZWxkX2RhdGEgPSB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gYXJncy5maWVsZE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YVswXS5zaG93R3JhbmRUb3RhbHMgPT09IGZhbHNlKSB7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0XHRcdGFyZ3Muc2tpcEZvcm1hdHRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly8gU01QMi0zNDE2IHN0YXJ0XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuaGdMaXN0LmluY2x1ZGVzKGFyZ3MuZmllbGROYW1lKSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlID09PSAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IFwiLVwiO1xyXG5cdFx0XHRhcmdzLnNraXBGb3JtYXR0aW5nID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy56ZXJvRm9ybWF0RGF0YS5lbXB0eUxpc3QuaW5jbHVkZXMoYXJncy5maWVsZE5hbWUpICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgPT09IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0YXJncy5za2lwRm9ybWF0dGluZyA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMubWlsbGlvbkZpZWxkcy5pbmNsdWRlcyhhcmdzLmZpZWxkTmFtZSkgJiZcclxuXHRcdFx0IWlzTmFOKE51bWJlcihhcmdzLnZhbHVlKSkgJiZcclxuXHRcdFx0YXJncy52YWx1ZSAhPT0gMCAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSBcIlwiICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IG51bGxcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIiAmJlxyXG5cdFx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPT0gXCJncmFuZFRvdGFsXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLnRvdGFsRm9ybWF0dGVkW2FyZ3MuZmllbGROYW1lXSkge1xyXG5cdFx0XHRcdFx0dGhpcy50b3RhbEZvcm1hdHRlZFthcmdzLmZpZWxkTmFtZV0gPSB0cnVlO1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MudmFsdWUgLyAxMDAwMDAwO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZSAvIDEwMDAwMDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBTTVAyLTI0ODYgJiBwZXJjZW50TnVt55qEZm9ybWF06Zeu6aKYXHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMucGVyY2VudE51bUZpZWxkcy5sZW5ndGggJiZcclxuXHRcdFx0dGhpcy5wZXJjZW50TnVtRmllbGRzLmluY2x1ZGVzKGFyZ3MuZmllbGROYW1lKSAmJlxyXG5cdFx0XHQhaXNOYU4oTnVtYmVyKGFyZ3MudmFsdWUpKSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSAwICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IFwiXCIgJiZcclxuXHRcdFx0YXJncy52YWx1ZSAhPT0gbnVsbFxyXG5cdFx0KSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRhcmdzLmNvbHVtbkNlbGxUeXBlID09IFwiZ3JhbmRUb3RhbFwiICYmXHJcblx0XHRcdFx0YXJncy5yb3dDZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMudG90YWxGb3JtYXR0ZWRbYXJncy5maWVsZE5hbWVdKSB7XHJcblx0XHRcdFx0XHR0aGlzLnRvdGFsRm9ybWF0dGVkW2FyZ3MuZmllbGROYW1lXSA9IHRydWU7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZSAvIDEwMDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MudmFsdWUgLyAxMDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCIgJiZcclxuXHRcdFx0IU51bWJlci5pc05hTihhcmdzLnZhbHVlKVxyXG5cdFx0KSB7XHJcblx0XHRcdGFyZ3MudmFsdWUgPSBOdW1iZXIoYXJncy52YWx1ZSkudG9GaXhlZCgyKTtcclxuXHRcdH1cclxuXHRcdC8vIFNNUDItMzQxNiBlbmRcclxuXHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjYWxjdWxhdGVkRmlzdExhc3QoYXJncywgYWdncmVnYXRlVHlwZSwgZmllbGROYW1lKSB7XHJcblx0XHRpZiAoIWFyZ3Mucm93LmFjdHVhbFRleHQpIGFyZ3Mucm93LmFjdHVhbFRleHQgPSBhcmdzLnJvdy5mb3JtYXR0ZWRUZXh0O1xyXG5cdFx0aWYgKCFhcmdzLmNvbHVtbi5hY3R1YWxUZXh0KVxyXG5cdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ID0gYXJncy5jb2x1bW4uZm9ybWF0dGVkVGV4dDtcclxuXHRcdGxldCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0KGVsKSA9PiBlbC5jb2xOYW1lID09PSBmaWVsZE5hbWVcclxuXHRcdClbMF07XHJcblxyXG5cdFx0aWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwidmFsdWVcIiAmJiAhYXJncy5yb3cuaGFzQ2hpbGQpIHtcclxuXHRcdFx0aWYgKGFyZ3MuY2VsbFNldHNbMF0pIHtcclxuXHRcdFx0XHRpZiAoYWdncmVnYXRlVHlwZSA9PT0gXCJGaXJzdFwiKSB7XHJcblx0XHRcdFx0XHRmb3IgKFxyXG5cdFx0XHRcdFx0XHRsZXQgZmlyc3RJbmRleCA9IDA7XHJcblx0XHRcdFx0XHRcdGZpcnN0SW5kZXggPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDtcclxuXHRcdFx0XHRcdFx0Zmlyc3RJbmRleCsrXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoID09XHJcblx0XHRcdFx0XHRcdFx0XHQxICYmXHJcblx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInN0cmluZ1wiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm52YXJjaGFyXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aFxyXG5cdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbERhdGFWYWx1ZVthcmdzLnJvdy5yb3dJbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBvYmogPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClbMF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9iaikgYXJncy52YWx1ZSA9IG9iai52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MuY2VsbFNldHNbZmlyc3RJbmRleF1bZmllbGROYW1lXTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJudW1iZXJcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwibXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJwZXJjZW50TnVtXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUgIT0gbnVsbCkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGJmLnRpbWUoYXJncy52YWx1ZSkgPiBcIjE5MDAtMDEtMDFcIikgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYXJncy52YWx1ZSkgYnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChhZ2dyZWdhdGVUeXBlID09PSBcIkxhc3RcIikge1xyXG5cdFx0XHRcdFx0Zm9yIChcclxuXHRcdFx0XHRcdFx0bGV0IGxhc3RJbmRleCA9IGFyZ3MuY2VsbFNldHMubGVuZ3RoIC0gMTtcclxuXHRcdFx0XHRcdFx0bGFzdEluZGV4ID49IDA7XHJcblx0XHRcdFx0XHRcdGxhc3RJbmRleC0tXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoID09XHJcblx0XHRcdFx0XHRcdFx0XHQxICYmXHJcblx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInN0cmluZ1wiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm52YXJjaGFyXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aFxyXG5cdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbERhdGFWYWx1ZVthcmdzLnJvdy5yb3dJbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBvYmogPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClbMF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9iaikgYXJncy52YWx1ZSA9IG9iai52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MuY2VsbFNldHNbbGFzdEluZGV4XVtmaWVsZE5hbWVdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJudW1iZXJcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwibXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJwZXJjZW50TnVtXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUgIT0gbnVsbCkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGJmLnRpbWUoYXJncy52YWx1ZSkgPiBcIjE5MDAtMDEtMDFcIikgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYXJncy52YWx1ZSkgYnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm51bWJlclwiIHx8XHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm11bHRpcGxlXCIgfHxcclxuXHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInBlcmNlbnROdW1cIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnJvd3MubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdGlmICghdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHQhTnVtYmVyKHRoaXMuZ3JhbmRUb3RhbHNbZmllbGROYW1lXSkgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGlzTmFOKE51bWJlcih0aGlzLmdyYW5kVG90YWxzW2ZpZWxkTmFtZV0pKVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdID0gMDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSAhPT0gXCJDYWxjdWxhdGVkRmllbGRcIikge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdICs9IE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBcInJvd1wiICsgYXJncy5yb3cuYWN0dWFsVGV4dCArIGZpZWxkTmFtZSDooajnpLooY2VsbDogYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIGFyZ3MuY29sdW1uQ2VsbFR5cGUgPT09IFwiZ3JhbmRUb3RhbFwiKVxyXG5cdFx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdCFOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJyb3dcIiArIGFyZ3Mucm93LmFjdHVhbFRleHQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0KSB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0aXNOYU4oXHJcblx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJyb3dcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgKyBhcmdzLnJvdy5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdID0gMDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFwicm93XCIgKyBhcmdzLnJvdy5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XSArPSBOdW1iZXIoYXJncy52YWx1ZSk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8vIFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lIOihqOekuihjZWxsOiBhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIiAmJiBhcmdzLmNvbHVtbkNlbGxUeXBlID09PSBcInZhbHVlXCIpXHJcblx0XHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0IU51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdF1cclxuXHRcdFx0XHRcdFx0XHRcdCkgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XSA9IDA7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdF0gKz0gTnVtYmVyKGFyZ3MudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIiB8fCBhcmdzLnJvdy5oYXNDaGlsZCkge1xyXG5cdFx0XHRjb25zdCBkYXRhVHlwZSA9IGZpZWxkLmRhdGFUeXBlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVR5cGUgPT09IFwic3RyaW5nXCIgfHxcclxuXHRcdFx0XHRkYXRhVHlwZSA9PT0gXCJudmFyY2hhclwiIHx8XHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRkYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlID0gMDtcclxuXHRcdFx0XHRsZXQgY2hpbGRIZWFkZXJzID0gW107XHJcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0ZVR5cGUgPT09IFwiRmlyc3RcIikge1xyXG5cdFx0XHRcdFx0bGV0IGdyb3VwTmFtZUFycmF5cyA9IFtdO1xyXG5cdFx0XHRcdFx0bGV0IHJvd3MgPSB0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5yb3dzO1xyXG5cdFx0XHRcdFx0Zm9yIChcclxuXHRcdFx0XHRcdFx0bGV0IGluZGV4ID0gYXJncy5yb3cubGV2ZWw7XHJcblx0XHRcdFx0XHRcdGluZGV4IDwgcm93cy5sZW5ndGg7XHJcblx0XHRcdFx0XHRcdGluZGV4KytcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRncm91cE5hbWVBcnJheXMucHVzaChyb3dzW2luZGV4XS5uYW1lKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0XHRcdGxldCBoZWFkZXIgPSBncm91cE5hbWVBcnJheXNcclxuXHRcdFx0XHRcdFx0XHQubWFwKChuYW1lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChhcmdzLmNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmdzLmNlbGxTZXRzW2ldW25hbWVdO1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIShjaGlsZEhlYWRlcnMgYXMgYW55KS5pbmNsdWRlcyhoZWFkZXIpKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZpbHRlck9iajogYW55ID0ge307XHJcblx0XHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLm1hcChcclxuXHRcdFx0XHRcdFx0XHRcdChuYW1lLCB4KSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW3hdKVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IF9DZWxsU2V0cyA9IF9maWx0ZXIoYXJncy5jZWxsU2V0cywgZmlsdGVyT2JqKTtcclxuXHRcdFx0XHRcdFx0XHRjaGlsZEhlYWRlcnMucHVzaChoZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlICs9IE51bWJlcihfQ2VsbFNldHNbMF1bZmllbGROYW1lXSkgfHwgMDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoYWdncmVnYXRlVHlwZSA9PT0gXCJMYXN0XCIpIHtcclxuXHRcdFx0XHRcdGxldCBncm91cE5hbWVBcnJheXMgPSBbXTtcclxuXHRcdFx0XHRcdGxldCByb3dzID0gdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Mucm93cztcclxuXHRcdFx0XHRcdGZvciAoXHJcblx0XHRcdFx0XHRcdGxldCBpbmRleCA9IGFyZ3Mucm93LmxldmVsO1xyXG5cdFx0XHRcdFx0XHRpbmRleCA8IHJvd3MubGVuZ3RoO1xyXG5cdFx0XHRcdFx0XHRpbmRleCsrXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLnB1c2gocm93c1tpbmRleF0ubmFtZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gYXJncy5jZWxsU2V0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0XHRcdGxldCBoZWFkZXIgPSBncm91cE5hbWVBcnJheXNcclxuXHRcdFx0XHRcdFx0XHQubWFwKChuYW1lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChhcmdzLmNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmdzLmNlbGxTZXRzW2ldW25hbWVdO1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIShjaGlsZEhlYWRlcnMgYXMgYW55KS5pbmNsdWRlcyhoZWFkZXIpKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZpbHRlck9iajogYW55ID0ge307XHJcblx0XHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLm1hcChcclxuXHRcdFx0XHRcdFx0XHRcdChuYW1lLCB4KSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW3hdKVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IF9DZWxsU2V0cyA9IF9maWx0ZXIoYXJncy5jZWxsU2V0cywgZmlsdGVyT2JqKTtcclxuXHRcdFx0XHRcdFx0XHRjaGlsZEhlYWRlcnMucHVzaChoZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlICs9XHJcblx0XHRcdFx0XHRcdFx0XHROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdF9DZWxsU2V0c1tfQ2VsbFNldHMubGVuZ3RoIC0gMV1bZmllbGROYW1lXVxyXG5cdFx0XHRcdFx0XHRcdFx0KSB8fCAwO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoYXJncy5jb2x1bW4uYWN0dWFsVGV4dCAhPT0gXCJHcmFuZCBUb3RhbFwiKVxyXG5cdFx0XHRcdFx0dGhpcy5jb2x1bW5UZXh0cy5wdXNoKGFyZ3MuY29sdW1uLmFjdHVhbFRleHQpO1xyXG5cclxuXHRcdFx0XHRpZiAoIXRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFOdW1iZXIodGhpcy5zdWJUb3RhbHNbZmllbGROYW1lXSkgfHxcclxuXHRcdFx0XHRcdFx0aXNOYU4oTnVtYmVyKHRoaXMuc3ViVG90YWxzW2ZpZWxkTmFtZV0pKVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW2ZpZWxkTmFtZV0gPSAwO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5zdWJUb3RhbHNbZmllbGROYW1lXSArPSBOdW1iZXIodmFsdWUpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHR0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5jb2x1bW5zLmxlbmd0aCA9PSAxXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyBcInJvd1wiICsgYXJncy5yb3cuYWN0dWFsVGV4dCArIGZpZWxkTmFtZSDooajnpLooY2VsbDogYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIGFyZ3MuY29sdW1uQ2VsbFR5cGUgPT09IFwiZ3JhbmRUb3RhbFwiKVxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdCkgfHxcclxuXHRcdFx0XHRcdFx0aXNOYU4oXHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zdWJUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW4uYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XSA9IDA7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArIGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdF0gKz0gTnVtYmVyKHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gLS0tPiBhbGxEYXRhVmFsdWXkuK3ov5nkuKrljZXlhYPmoLznmoTlgLzkuI3mraPnoa5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRhcmdzLmNvbHVtbkNlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIiAmJlxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuYWxsRGF0YVZhbHVlICYmIHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgKyBcIkdyYW5kIFRvdGFsXCIgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8g5oqK5YmN6L656L+Z5LiqZmllbGTnmoTlh6DliJdzdWJ0b3RhbOWKoOi1t+adpVxyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbHVtblRleHRzID0gdW5pcUJ5KHRoaXMuY29sdW1uVGV4dHMsIChlbCkgPT4gZWwpO1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsID0gMDtcclxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtblRleHRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMuY29sdW1uVGV4dHNbaV07XHJcblx0XHRcdFx0XHRcdFx0dmFsICs9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArIGVsZW1lbnQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdF07XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IHZhbDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IHZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCBkYXRhVHlwZSA9IGZpZWxkLmRhdGFUeXBlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJzdHJpbmdcIiB8fFxyXG5cdFx0XHRcdGRhdGFUeXBlID09IFwibnZhcmNoYXJcIiB8fFxyXG5cdFx0XHRcdGRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJkYXRldGltZVwiXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmICghdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmFsbERhdGFWYWx1ZSAmJiB0aGlzLmFsbERhdGFWYWx1ZS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0bGV0IHJvd09ianMgPVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlW3RoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0XHRpZiAocm93T2Jqcykge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzQXJyID0gSlNPTi5wYXJzZShcclxuXHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHJvd09ianMpXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgb2JqQXJyID0gcm93T2Jqc0Fyci5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdGVsLmFjdHVhbFRleHQgPT0gZmllbGROYW1lICYmIGVsLmlzR3JhbmRTdW1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChvYmpBcnIgJiYgb2JqQXJyLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZ3JhbmRUb3RhbHMpLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSB0aGlzLmdyYW5kVG90YWxzW2ZpZWxkTmFtZV07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRhcmdzLnZhbHVlID0gdGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoYXJncy5jb2x1bW5DZWxsVHlwZSA9PT0gXCJncmFuZFRvdGFsXCIpIHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYWxsRGF0YVZhbHVlICYmIHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlW3RoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgcm93T2Jqc0FyciA9IEpTT04ucGFyc2UoXHJcblx0XHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHJvd09ianMpXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IG9iakFyciA9IHJvd09ianNBcnIuZmlsdGVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbC5pc0dyYW5kU3VtXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKG9iakFyciAmJiBvYmpBcnIubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRPYmplY3Qua2V5cyh0aGlzLmdyYW5kVG90YWxzKS5pbmNsdWRlcyhcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb2xcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQvLyBpZiAoXHJcblx0XHRcdFx0XHRcdC8vIFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdFx0XHQvLyApIHtcclxuXHRcdFx0XHRcdFx0Ly8gXHRhcmdzLnZhbHVlID0gdGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0Ly8gXHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdC8vIFx0XTtcclxuXHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5hbGxEYXRhVmFsdWUgJiYgdGhpcy5hbGxEYXRhVmFsdWUubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hbGxEYXRhVmFsdWVbdGhpcy5hbGxEYXRhVmFsdWUubGVuZ3RoIC0gMV07XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGxldCBvYmpBcnIgPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bSAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRlbC5jb2x1bW5IZWFkZXJzID09IGFyZ3MuY29sdW1uLmFjdHVhbFRleHRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChvYmpBcnIgJiYgb2JqQXJyLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZ3JhbmRUb3RhbHMpLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb2xcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0aGlzLmZvcm1hdFZhbChhcmdzLCBmaWVsZE5hbWUpO1xyXG5cdFx0cmV0dXJuIGFyZ3MudmFsdWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZvcm1hdFZhbChhcmdzLCBmaWVsZE5hbWUpIHtcclxuXHRcdHRoaXMuY29uZmlnRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblx0XHRcdGlmIChmaWVsZC5jb2xOYW1lID09IGZpZWxkTmFtZSkge1xyXG5cdFx0XHRcdHN3aXRjaCAoZmllbGQuZGF0YVR5cGUpIHtcclxuXHRcdFx0XHRcdGNhc2UgXCJkYXRlXCI6XHJcblx0XHRcdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcclxuXHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUpIGFyZ3MudmFsdWUgPSBuZXcgRGF0ZShhcmdzLnZhbHVlKTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRleGNsdWRlRmllbGRzKGZpZWxkcywgZGF0YSkge1xyXG5cdFx0bGV0IG5hbWVhcnJheSA9IFtdO1xyXG5cdFx0bGV0IGFycmF5ID0gW107XHJcblx0XHRmb3IgKGxldCBwcm9wIGluIGRhdGEpIHtcclxuXHRcdFx0YXJyYXkucHVzaChwcm9wKTtcclxuXHRcdH1cclxuXHRcdGZvciAobGV0IGl0ZW0gb2YgZmllbGRzKSB7XHJcblx0XHRcdG5hbWVhcnJheS5wdXNoKGl0ZW0uY29sTmFtZSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmV4Y2x1ZGVGaWVsZHMgPSBkaWZmZXJlbmNlV2l0aChhcnJheSwgbmFtZWFycmF5KTtcclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5leGNsdWRlRmllbGRzLmxlbmd0aCAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5ncm91cFNldHRpbmdzICYmXHJcblx0XHRcdHRoaXMuY29uZmlnLmdyb3VwU2V0dGluZ3MubGVuZ3RoXHJcblx0XHQpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmV4Y2x1ZGVGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRjb25zdCBlbCA9IHRoaXMuZXhjbHVkZUZpZWxkc1tpXTtcclxuXHRcdFx0XHRpZiAoc3RhcnRzV2l0aChlbCwgdGhpcy5jb25maWcuZ3JvdXBTZXR0aW5nc1swXS5uYW1lICsgXCJfXCIpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmV4Y2x1ZGVGaWVsZHMuc3BsaWNlKGksIDEpO1xyXG5cdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRJbmZvKCkge1xyXG5cdFx0dGhpcy5kYXRlUGlwZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGF0ZVBpcGVcIik7XHJcblx0XHR0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuXHRcdEwxMG4ubG9hZCh7XHJcblx0XHRcdFwiZW4tVVNcIjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR6aDoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcInpoLUhhbnQtSEtcIjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRqYToge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRrbzoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRmcjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgb25GaWVsZERyb3AoYXJnczogRmllbGREcm9wRXZlbnRBcmdzKSB7XHJcblx0XHQvL2NoYW5nZSB0aGUgY2FsY3VhbHRlRmllbGQgbWV0aG9kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBjYWxjdWxhdGVcclxuXHRcdGNvbnN0IGNhbGN1YWx0ZUZpZWxkID0gdGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKFxyXG5cdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IGFyZ3MuZmllbGROYW1lICYmIGVsLmlzQ2FsY3VsYXRlZEZpZWxkXHJcblx0XHQpO1xyXG5cdFx0aWYgKGNhbGN1YWx0ZUZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJncy5kcm9wRmllbGQudHlwZSA9XHJcblx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRDYWxjdWxhdGVNZXRob2QoXHJcblx0XHRcdFx0XHRjYWxjdWFsdGVGaWVsZFswXS5jb2xOYW1lXHJcblx0XHRcdFx0KSBhcyBhbnk7XHJcblx0XHRcdGFyZ3MuZHJvcEZpZWxkLmNhcHRpb24gPSBhcmdzLmRyb3BGaWVsZC5jYXB0aW9uXHJcblx0XHRcdFx0LnJlcGxhY2UoXCJDYWxjdWxhdGVcIiwgXCJcIilcclxuXHRcdFx0XHQudHJpbSgpO1xyXG5cdFx0fVxyXG5cdFx0Zm9yIChcclxuXHRcdFx0bGV0IGkgPSAwO1xyXG5cdFx0XHRpIDwgYXJncy5kYXRhU291cmNlU2V0dGluZ3MuZmlsdGVyU2V0dGluZ3MubGVuZ3RoO1xyXG5cdFx0XHRpKytcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0YXJncy5kYXRhU291cmNlU2V0dGluZ3MuZmlsdGVyU2V0dGluZ3NbaV0ubmFtZSA9PT1cclxuXHRcdFx0XHRcdGFyZ3MuZmllbGROYW1lICYmXHJcblx0XHRcdFx0YXJncy5kcm9wQXhpcyA9PT0gXCJcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5maWx0ZXJTZXR0aW5ncy5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJTZXR0aW5ncyA9IGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLmZpbHRlclNldHRpbmdzO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNyZWF0ZUJ1dHRvblRleHQoZmllbGQsIGksIGF4aXMsIHZhbHVlUG9zKSB7XHJcblx0XHRsZXQgYnV0dG9uVGV4dDogSFRNTEVsZW1lbnQ7XHJcblx0XHRsZXQgYWdncmVnYXRpb246IHN0cmluZztcclxuXHRcdGxldCBmaWx0ZXJNZW06IHN0cmluZztcclxuXHRcdGlmIChheGlzID09PSBcImZpbHRlcnNcIikge1xyXG5cdFx0XHRmaWx0ZXJNZW0gPSAoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoucGl2b3RCdXR0b25Nb2R1bGUgYXMgYW55XHJcblx0XHRcdCkudXBkYXRlQnV0dG9udGV4dChmaWVsZFtpXS5uYW1lKTtcclxuXHRcdH1cclxuXHRcdGxldCBlbmdpbmVNb2R1bGUgPSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZTtcclxuXHRcdGlmIChlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0YWdncmVnYXRpb24gPSBlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdLmFnZ3JlZ2F0ZVR5cGU7XHJcblx0XHRcdGFnZ3JlZ2F0aW9uID1cclxuXHRcdFx0XHRhZ2dyZWdhdGlvbiA9PT0gXCJTdW1cIlxyXG5cdFx0XHRcdFx0PyBlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdLnR5cGUgIT09IFwibnVtYmVyXCJcclxuXHRcdFx0XHRcdFx0PyBcIkNvdW50XCJcclxuXHRcdFx0XHRcdFx0OiBcIlN1bVwiXHJcblx0XHRcdFx0XHQ6IGFnZ3JlZ2F0aW9uO1xyXG5cdFx0fVxyXG5cdFx0bGV0IHRleHQ6IHN0cmluZyA9IGZpZWxkW2ldLmNhcHRpb24gPyBmaWVsZFtpXS5jYXB0aW9uIDogZmllbGRbaV0ubmFtZTtcclxuXHRcdGJ1dHRvblRleHQgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XHJcblx0XHRcdGF0dHJzOiB7XHJcblx0XHRcdFx0dGl0bGU6XHJcblx0XHRcdFx0XHRheGlzID09PSBcImZpbHRlcnNcIlxyXG5cdFx0XHRcdFx0XHQ/IHRleHQgKyBcIiAoXCIgKyBmaWx0ZXJNZW0gKyBcIilcIlxyXG5cdFx0XHRcdFx0XHQ6ICF0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5nc1xyXG5cdFx0XHRcdFx0XHRcdFx0LnNob3dBZ2dyZWdhdGlvbk9uVmFsdWVGaWVsZCB8fFxyXG5cdFx0XHRcdFx0XHQgIGF4aXMgIT09IFwidmFsdWVzXCIgfHxcclxuXHRcdFx0XHRcdFx0ICBhZ2dyZWdhdGlvbiA9PT0gXCJDYWxjdWxhdGVkRmllbGRcIlxyXG5cdFx0XHRcdFx0XHQ/IHRleHRcclxuXHRcdFx0XHRcdFx0OiB0aGlzLnBpdm90T2JqLmxvY2FsZU9iai5nZXRDb25zdGFudChhZ2dyZWdhdGlvbikgK1xyXG5cdFx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdFx0ICB0aGlzLnBpdm90T2JqLmxvY2FsZU9iai5nZXRDb25zdGFudChcIm9mXCIpICtcclxuXHRcdFx0XHRcdFx0ICBcIiBcIiArXHJcblx0XHRcdFx0XHRcdCAgdGV4dCxcclxuXHRcdFx0XHR0YWJpbmRleDogXCItMVwiLFxyXG5cdFx0XHRcdFwiYXJpYS1kaXNhYmxlZFwiOiBcImZhbHNlXCIsXHJcblx0XHRcdFx0b25jb250ZXh0bWVudTogXCJyZXR1cm4gZmFsc2U7XCIsXHJcblx0XHRcdFx0XCJkYXRhLXR5cGVcIjogdmFsdWVQb3MgPT09IGkgPyBcIlwiIDogYWdncmVnYXRpb24sXHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzTmFtZTpcclxuXHRcdFx0XHRcImUtY29udGVudFwiICtcclxuXHRcdFx0XHRcIiBcIiArXHJcblx0XHRcdFx0KHRoaXMucGl2b3RPYmouZ2V0TW9kdWxlTmFtZSgpID09PSBcInBpdm90dmlld1wiXHJcblx0XHRcdFx0XHQ/IHRoaXMucGl2b3RPYmouZ3JvdXBpbmdCYXJTZXR0aW5ncy5hbGxvd0RyYWdBbmREcm9wICYmXHJcblx0XHRcdFx0XHQgIGZpZWxkW2ldLmFsbG93RHJhZ0FuZERyb3BcclxuXHRcdFx0XHRcdFx0PyBcIlwiXHJcblx0XHRcdFx0XHRcdDogXCJlLWRpc2FibGUtZHJhZ1wiXHJcblx0XHRcdFx0XHQ6IFwiXCIpLFxyXG5cdFx0XHRpbm5lckhUTUw6XHJcblx0XHRcdFx0YXhpcyA9PT0gXCJmaWx0ZXJzXCJcclxuXHRcdFx0XHRcdD8gdGV4dCArIFwiIChcIiArIGZpbHRlck1lbSArIFwiKVwiXHJcblx0XHRcdFx0XHQ6ICF0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5nc1xyXG5cdFx0XHRcdFx0XHRcdC5zaG93QWdncmVnYXRpb25PblZhbHVlRmllbGQgfHxcclxuXHRcdFx0XHRcdCAgYXhpcyAhPT0gXCJ2YWx1ZXNcIiB8fFxyXG5cdFx0XHRcdFx0ICBhZ2dyZWdhdGlvbiA9PT0gXCJDYWxjdWxhdGVkRmllbGRcIlxyXG5cdFx0XHRcdFx0PyB0ZXh0XHJcblx0XHRcdFx0XHQ6IHRoaXMucGl2b3RPYmoubG9jYWxlT2JqLmdldENvbnN0YW50KGFnZ3JlZ2F0aW9uKSArXHJcblx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdCAgdGhpcy5waXZvdE9iai5sb2NhbGVPYmouZ2V0Q29uc3RhbnQoXCJvZlwiKSArXHJcblx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdCAgdGV4dCxcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIGJ1dHRvblRleHQ7XHJcblx0fVxyXG5cclxuXHQvLyBDYWxjdWxhdGVkIGZpZWxk5LqL5Lu277ya5Yib5bu6XHJcblx0cHVibGljIGNhbGN1bGF0ZWRGaWVsZENyZWF0ZShhcmdzOiBDYWxjdWxhdGVkRmllbGRDcmVhdGVFdmVudEFyZ3MpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5jYWxjdWxhdGVkRmllbGQubmFtZSAhPT0gXCJcIiAmJlxyXG5cdFx0XHRhcmdzLmNhbGN1bGF0ZWRGaWVsZC5uYW1lLnRyaW0oKSAhPT0gXCJcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBpbmRleCA9XHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzLmZpbmRJbmRleChcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwubmFtZSA9PT0gYXJncy5jYWxjdWxhdGVkRmllbGQubmFtZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdGlmIChpbmRleCAhPT0gLTEpIHtcclxuXHRcdFx0XHRpZiAoYXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybWF0U3RyaW5nID09PSBcIlwiKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3NbXHJcblx0XHRcdFx0XHRcdGluZGV4XHJcblx0XHRcdFx0XHRdLmZvcm1hdFN0cmluZyA9IFwiTjJcIjtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzW1xyXG5cdFx0XHRcdFx0XHRpbmRleFxyXG5cdFx0XHRcdFx0XS5mb3JtYXRTdHJpbmcgPSBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtYXRTdHJpbmc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtYXRTdHJpbmcgPT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGFyZ3MuY2FsY3VsYXRlZEZpZWxkLmZvcm1hdFN0cmluZyA9IFwiTjJcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8g56e76Zmk6YeN5aSNXHJcblx0XHRcdGxldCBmSW5kZXggPSB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMuZmluZEluZGV4KFxyXG5cdFx0XHRcdChmKSA9PiBmLm5hbWUgPT09IGFyZ3MuY2FsY3VsYXRlZEZpZWxkLm5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGZJbmRleCA+IC0xKSB7XHJcblx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzLnNwbGljZShmSW5kZXgsIDEpO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIOWMuemFjei/kOeul+espiBGaXJzdCB8fCBMYXN0XHJcblx0XHRcdGxldCBmb3JtdWxhU3RyID0gYXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybXVsYTtcclxuXHRcdFx0bGV0IHJlZzEgPSAvXCJGaXJzdFxcKCguKz8pXFwpXCIvZztcclxuXHRcdFx0bGV0IHJlZzIgPSAvXCJMYXN0XFwoKC4rPylcXClcIi9nO1xyXG5cdFx0XHRpZiAocmVnMS50ZXN0KGZvcm11bGFTdHIpIHx8IHJlZzIudGVzdChmb3JtdWxhU3RyKSkge1xyXG5cdFx0XHRcdC8vIOWIpOaWreaYr+WQpuWtmOWcqEZpcnN0IHx8IExhc3Qg6KGo6L6+5byPXHJcblx0XHRcdFx0bGV0IG1hdGNoRmlyc3RGaWVsZHMgPSBBcnJheS5mcm9tKFxyXG5cdFx0XHRcdFx0Zm9ybXVsYVN0cltcIm1hdGNoQWxsXCJdKC9cIkZpcnN0XFwoKC4rPylcXClcIi9nKSxcclxuXHRcdFx0XHRcdChtKSA9PiB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hTdHI6IG1bMF0sXHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hXb3JkOiBtWzFdLFxyXG5cdFx0XHRcdFx0XHRcdHJlcGxhY2VWYWx1ZTogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRtYXRjaE1ldGhvZDogXCJGaXJzdFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTGFzdEZpZWxkcyA9IEFycmF5LmZyb20oXHJcblx0XHRcdFx0XHRmb3JtdWxhU3RyW1wibWF0Y2hBbGxcIl0oL1wiTGFzdFxcKCguKz8pXFwpXCIvZyksXHJcblx0XHRcdFx0XHQobSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0XHRcdG1hdGNoU3RyOiBtWzBdLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoV29yZDogbVsxXSxcclxuXHRcdFx0XHRcdFx0XHRyZXBsYWNlVmFsdWU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hNZXRob2Q6IFwiTGFzdFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTWF4RmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJNYXhcXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIk1heFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTWluRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJNaW5cXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIk1pblwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoU3VtRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJTdW1cXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIlN1bVwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoQXZnRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJBdmdcXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIkF2Z1wiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0bWF0Y2hGaXJzdEZpZWxkcy5ldmVyeSgoeCkgPT5cclxuXHRcdFx0XHRcdFx0dGhpcy5hbGxvd2VkQ2FsY3VsYXRlZEZpZWxkcy5pbmNsdWRlcyh4Lm1hdGNoV29yZClcclxuXHRcdFx0XHRcdCkgJiZcclxuXHRcdFx0XHRcdG1hdGNoTGFzdEZpZWxkcy5ldmVyeSgoeCkgPT5cclxuXHRcdFx0XHRcdFx0dGhpcy5hbGxvd2VkQ2FsY3VsYXRlZEZpZWxkcy5pbmNsdWRlcyh4Lm1hdGNoV29yZClcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdC8vIOWIpOaWrUZpcnN05ZKMTGFzdOihqOi+vuW8j+WGheeahOWtl+auteaYr+WQpuWQiOazlVxyXG5cdFx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtdWxhOiBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtdWxhLFxyXG5cdFx0XHRcdFx0XHRtYXRjaEZpZWxkczogW1xyXG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaEZpcnN0RmllbGRzLFxyXG5cdFx0XHRcdFx0XHRcdC4uLm1hdGNoTGFzdEZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaE1heEZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaE1pbkZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaFN1bUZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaEF2Z0ZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XSxcclxuXHRcdFx0XHRcdFx0Z3JhbmRUb3RhbDogMCxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0bGV0IGZpZWxkTmFtZSA9IChcclxuXHRcdFx0XHRcdFx0Zm9ybXVsYVN0ci5zcGxpdChcIkZpcnN0KFwiKVsxXSB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtdWxhU3RyLnNwbGl0KFwiTGFzdChcIilbMV1cclxuXHRcdFx0XHRcdCkuc3BsaXQoXCIpXCIpWzBdO1xyXG5cdFx0XHRcdFx0YXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybXVsYSA9XHJcblx0XHRcdFx0XHRcdFwiJ1xcXCJcIiArIFwiU3VtKFwiICsgZmllbGROYW1lICsgJylcIj0nICsgZm9ybXVsYVN0ciArIFwiJ1wiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gQ2FsY3VsYXRlZCBmaWVsZOS6i+S7tu+8muWujOaIkFxyXG5cdHB1YmxpYyBhY3Rpb25Db21wbGV0ZShhcmdzKSB7XHJcblx0XHRpZiAoYXJncy5hY3Rpb25OYW1lID09IFwiRmllbGQgcmVtb3ZlZFwiKSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRhcmdzLmZpZWxkSW5mbyAmJlxyXG5cdFx0XHRcdGFyZ3MuZmllbGRJbmZvLmZpZWxkSXRlbSAmJlxyXG5cdFx0XHRcdGFyZ3MuZmllbGRJbmZvLmZpZWxkSXRlbS50eXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0bGV0IGZpZWxkID0gYXJncy5maWVsZEluZm8uZmllbGROYW1lO1xyXG5cdFx0XHRcdC8vIFJlbW92ZSB0aGUgZGVsZXRlZCBjYWxjdWxhdGVkIGZpZWxkIGZyb20gYW4gc3RvcmVkIGFycmF5LlxyXG5cdFx0XHRcdHRoaXMuY3VzdG9tQ2FsY3VsYXRlZEZpZWxkcyA9XHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMuZmlsdGVyKGZ1bmN0aW9uIChvYmopIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIG9iai5uYW1lICE9PSBmaWVsZDtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBDYWxjdWxhdGVkIGZpZWxk5LqL5Lu277ya5byA5aeLXHJcblx0cHVibGljIGFjdGlvbkJlZ2luKGFyZ3MpIHtcclxuXHRcdGlmIChhcmdzLmFjdGlvbk5hbWUgPT09IFwiRWRpdCBjYWxjdWxhdGVkIGZpZWxkXCIpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZSAmJlxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZmllbGRMaXN0W1xyXG5cdFx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZVxyXG5cdFx0XHRcdFx0XVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZmllbGRMaXN0W1xyXG5cdFx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZVxyXG5cdFx0XHRcdFx0XS5mb3JtdWxhID0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldLmZvcm11bGE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlc2l6ZVN0b3AoYXJncykge1xyXG5cdFx0aWYgKHRoaXMuY29uZmlnLmNvbHVtbnNXaWR0aCkge1xyXG5cdFx0XHRjb25zdCBoZWFkZXJfZmllbGQgPSB0aGlzLmNvbmZpZy5jb2x1bW5zV2lkdGguZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuaGVhZGVyVGV4dCA9PT0gYXJncy5jb2x1bW4uaGVhZGVyVGV4dFxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAoaGVhZGVyX2ZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRoZWFkZXJfZmllbGRbMF0ud2lkdGggPSBwYXJzZUludChhcmdzLmNvbHVtbi53aWR0aCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuY29sdW1uc1dpZHRoLnB1c2goe1xyXG5cdFx0XHRcdFx0aGVhZGVyVGV4dDogYXJncy5jb2x1bW4uaGVhZGVyVGV4dCxcclxuXHRcdFx0XHRcdHdpZHRoOiBwYXJzZUludChhcmdzLmNvbHVtbi53aWR0aCksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuY29uZmlnLmNvbHVtbnNXaWR0aCA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5zV2lkdGgucHVzaCh7XHJcblx0XHRcdFx0aGVhZGVyVGV4dDogYXJncy5jb2x1bW4uaGVhZGVyVGV4dCxcclxuXHRcdFx0XHR3aWR0aDogcGFyc2VJbnQoYXJncy5jb2x1bW4ud2lkdGgpLFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHBvcnRsZXQgPSB0aGlzLnBvcnRsZXQ7XHJcblx0XHRwb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdGNvbnN0IGluZGV4ID0gdGhpcy5wb3J0bGV0cy5maW5kSW5kZXgoKHgpID0+IHgubmV3SWQgPT09IHBvcnRsZXQubmV3SWQpO1xyXG5cdFx0aWYgKGluZGV4ID4gLTEpIHRoaXMucG9ydGxldHNbaW5kZXhdID0gcG9ydGxldDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBvbkxvYWQoKTogdm9pZCB7fVxyXG5cclxuXHRwcml2YXRlIGVuZ2luZVBvcHVsYXRlZChhcmdzKSB7XHJcblx0XHRsZXQgY2xvbmVkVmFsdWVzOiBJUGl2b3RWYWx1ZXM7XHJcblx0XHRsZXQgY3VycmVudFBpdm90VmFsdWVzOiBhbnkgPSB0aGlzLmdldENsb25lZFBpdm90VmFsdWVzKFxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5waXZvdFZhbHVlc1xyXG5cdFx0KTtcclxuXHRcdGxldCBwYWdlU2V0dGluZ3M6IElQYWdlU2V0dGluZ3MgPVxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5wYWdlU2V0dGluZ3M7XHJcblxyXG5cdFx0Ly8gdGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUucGFnZVNldHRpbmdzID0gbnVsbDtcclxuXHRcdGlmICh0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5nZW5lcmF0ZUdyaWREYXRhKSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmdlbmVyYXRlR3JpZERhdGEoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MsXHJcblx0XHRcdFx0dHJ1ZVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRjbG9uZWRWYWx1ZXMgPSB0aGlzLmdldENsb25lZFBpdm90VmFsdWVzKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLnBpdm90VmFsdWVzXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5waXZvdFZhbHVlcyA9IGN1cnJlbnRQaXZvdFZhbHVlcztcclxuXHJcblx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLnBhZ2VTZXR0aW5ncyA9IHBhZ2VTZXR0aW5ncztcclxuXHJcblx0XHRcdC8vIEhlcmUgXCJjbG9uZWRWYWx1ZXNcIiBjb250YWlucyB0aGUgd2hvbGUgcGl2b3QgdmFsdWVzLlxyXG5cdFx0XHR0aGlzLmFsbERhdGFWYWx1ZSA9IGNsb25lZFZhbHVlcztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0Q2xvbmVkUGl2b3RWYWx1ZXMocGl2b3RWYWx1ZXM6IElQaXZvdFZhbHVlcyk6IElQaXZvdFZhbHVlcyB7XHJcblx0XHRsZXQgY2xvbmVkU2V0czogSVBpdm90VmFsdWVzID0gW107XHJcblx0XHRpZiAocGl2b3RWYWx1ZXMgJiYgcGl2b3RWYWx1ZXMubGVuZ3RoKSB7XHJcblx0XHRcdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBwaXZvdFZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGlmIChwaXZvdFZhbHVlc1tpXSkge1xyXG5cdFx0XHRcdFx0Y2xvbmVkU2V0c1tpXSA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHBpdm90VmFsdWVzW2ldLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdGlmIChwaXZvdFZhbHVlc1tpXVtqXSkge1xyXG5cdFx0XHRcdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlICovXHJcblx0XHRcdFx0XHRcdFx0Y2xvbmVkU2V0c1tpXVtqXSA9IHRoaXMuZ2V0Q2xvbmVkUGl2b3RWYWx1ZU9iaihcclxuXHRcdFx0XHRcdFx0XHRcdHBpdm90VmFsdWVzW2ldW2pdIGFzIHsgW2tleTogc3RyaW5nXTogT2JqZWN0IH1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdC8qIGVzbGludC1lbmFibGUgKi9cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNsb25lZFNldHM7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENsb25lZFBpdm90VmFsdWVPYmooZGF0YTogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfSk6IHtcclxuXHRcdFtrZXk6IHN0cmluZ106IE9iamVjdDtcclxuXHR9IHtcclxuXHRcdGxldCBrZXlQb3M6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgZnJhbWVkU2V0OiBhbnkgPSB7fTtcclxuXHRcdGlmICghKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSkge1xyXG5cdFx0XHRsZXQgZmllbGRzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGRhdGEpO1xyXG5cdFx0XHR3aGlsZSAoa2V5UG9zIDwgZmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdGZyYW1lZFNldFtmaWVsZHNba2V5UG9zXV0gPSBkYXRhW2ZpZWxkc1trZXlQb3NdXTtcclxuXHRcdFx0XHRrZXlQb3MrKztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZnJhbWVkU2V0ID0gZGF0YTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBmcmFtZWRTZXQ7XHJcblx0fVxyXG5cclxuXHQvLyNyZWdpb24gRmlsdGVyaW5nIHRoZSBUcmVlTm9kZXNcclxuXHRwcml2YXRlIHNlYXJjaE5vZGVzKGFyZ3MpIHtcclxuXHRcdGxldCBfdGV4dCA9IGFyZ3MubWFza2VkVmFsdWU7XHJcblx0XHRsZXQgcHJlZGljYXRzID0gW10sXHJcblx0XHRcdF9hcnJheSA9IFtdLFxyXG5cdFx0XHRfZmlsdGVyID0gW107XHJcblx0XHRpZiAoX3RleHQgPT0gXCJcIikge1xyXG5cdFx0XHR0aGlzLmNoYW5nZURhdGFTb3VyY2UoXHJcblx0XHRcdFx0KCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueSkuZ2V0VHJlZURhdGEoKVxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bGV0IHByZWRpY2F0ZSA9IG5ldyBQcmVkaWNhdGUoXCJjYXB0aW9uXCIsIFwiY29udGFpbnNcIiwgX3RleHQsIHRydWUpO1xyXG5cdFx0XHRsZXQgZmlsdGVyZWRMaXN0ID0gbmV3IERhdGFNYW5hZ2VyKFxyXG5cdFx0XHRcdCgodGhpcyBhcyBhbnkpLmZpZWxkbGlzdE9iai50cmVlVmlld01vZHVsZSBhcyBhbnkpLmdldFRyZWVEYXRhKClcclxuXHRcdFx0KS5leGVjdXRlTG9jYWwobmV3IFF1ZXJ5KCkud2hlcmUocHJlZGljYXRlKSk7XHJcblx0XHRcdGZvciAobGV0IGogPSAwOyBqIDwgZmlsdGVyZWRMaXN0Lmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0X2ZpbHRlci5wdXNoKGZpbHRlcmVkTGlzdFtqXVtcImlkXCJdKTtcclxuXHRcdFx0XHRsZXQgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVySXRlbXMoXHJcblx0XHRcdFx0XHRmaWx0ZXJlZExpc3Rbal0sXHJcblx0XHRcdFx0XHQoXHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueVxyXG5cdFx0XHRcdFx0KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0X2FycmF5LmluZGV4T2YoZmlsdGVyc1tpXSkgPT0gLTEgJiZcclxuXHRcdFx0XHRcdFx0ZmlsdGVyc1tpXSAhPSBudWxsXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0X2FycmF5LnB1c2goZmlsdGVyc1tpXSk7XHJcblx0XHRcdFx0XHRcdHByZWRpY2F0cy5wdXNoKFxyXG5cdFx0XHRcdFx0XHRcdG5ldyBQcmVkaWNhdGUoXCJpZFwiLCBcImVxdWFsXCIsIGZpbHRlcnNbaV0sIGZhbHNlKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAocHJlZGljYXRzLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5jaGFuZ2VEYXRhU291cmNlKFtdKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRsZXQgcXVlcnkgPSBuZXcgUXVlcnkoKS53aGVyZShQcmVkaWNhdGUub3IocHJlZGljYXRzKSk7XHJcblx0XHRcdFx0bGV0IG5ld0xpc3QgPSBuZXcgRGF0YU1hbmFnZXIoXHJcblx0XHRcdFx0XHQoXHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueVxyXG5cdFx0XHRcdFx0KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdFx0KS5leGVjdXRlTG9jYWwocXVlcnkpO1xyXG5cdFx0XHRcdHRoaXMuY2hhbmdlRGF0YVNvdXJjZShuZXdMaXN0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly9GaW5kIHRoZSBQYXJlbnQgTm9kZXMgZm9yIGNvcnJlc3BvbmRpbmcgY2hpbGRzXHJcblx0cHVibGljIGdldEZpbHRlckl0ZW1zKGZMaXN0LCBsaXN0KSB7XHJcblx0XHRsZXQgbm9kZXMgPSBbXTtcclxuXHRcdG5vZGVzLnB1c2goZkxpc3RbXCJpZFwiXSk7XHJcblx0XHRsZXQgcXVlcnkyID0gbmV3IFF1ZXJ5KCkud2hlcmUoXCJpZFwiLCBcImVxdWFsXCIsIGZMaXN0W1wicGlkXCJdLCBmYWxzZSk7XHJcblx0XHRsZXQgZkxpc3QxID0gbmV3IERhdGFNYW5hZ2VyKGxpc3QpLmV4ZWN1dGVMb2NhbChxdWVyeTIpO1xyXG5cdFx0aWYgKGZMaXN0MS5sZW5ndGggIT0gMCkge1xyXG5cdFx0XHRsZXQgcE5vZGUgPSB0aGlzLmdldEZpbHRlckl0ZW1zKGZMaXN0MVswXSwgbGlzdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcE5vZGUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAobm9kZXMuaW5kZXhPZihwTm9kZVtpXSkgPT0gLTEgJiYgcE5vZGVbaV0gIT0gbnVsbClcclxuXHRcdFx0XHRcdG5vZGVzLnB1c2gocE5vZGVbaV0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBub2RlcztcclxuXHRcdH1cclxuXHRcdHJldHVybiBub2RlcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBjcmVhdGVkKGFyZ3M6IGFueSkge1xyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqICYmICF0aGlzLmZpZWxkbGlzdE9iai5lbmdpbmVNb2R1bGUuZmllbGRzKSB7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmVuZ2luZU1vZHVsZS5maWVsZHMgPSBbXTtcclxuXHRcdH1cclxuXHRcdGxldCBzZWFyY2ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XHJcblx0XHRzZWFyY2guaWQgPSBcInBpdm90U2VhcmNoQm94XCIgKyB0aGlzLmZpZWxkbGlzdE9iai5lbGVtZW50LmlkO1xyXG5cdFx0bGV0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XCIjXCIgKyB0aGlzLmZpZWxkbGlzdE9iai5lbGVtZW50LmlkICsgXCJfQ29udGFpbmVyIC5lLWZpZWxkLXRhYmxlXCJcclxuXHRcdCk7XHJcblx0XHRpZiAoZWwpIGVsLnByZXBlbmQoc2VhcmNoKTtcclxuXHRcdHRoaXMucGl2b3RTZWFyY2hCb3ggPSBuZXcgTWFza2VkVGV4dEJveCh7XHJcblx0XHRcdHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0aW9uLlNFQVJDSCB8fCBcIi5TRUFSQ0hcIixcclxuXHRcdFx0Y3NzQ2xhc3M6IFwicGl2b3Qtc2VhcmNoXCIsXHJcblx0XHRcdGNoYW5nZTogdGhpcy5zZWFyY2hOb2Rlcy5iaW5kKHRoaXMpLFxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnBpdm90U2VhcmNoQm94LmFwcGVuZFRvKFxyXG5cdFx0XHRcIiNwaXZvdFNlYXJjaEJveFwiICsgdGhpcy5maWVsZGxpc3RPYmouZWxlbWVudC5pZFxyXG5cdFx0KTtcclxuXHJcblx0XHQvLyBORVcgRGFzaGJvYXJkIOeCueWHu1wiYXBwbHlcIuaXtu+8jOivt+axguaWsOaVsOaNrlxyXG5cdFx0bGV0IGFwcGx5QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmVsZW1lbnQuaWQgKyBcIl9EZWZlclVwZGF0ZUJ1dHRvbjFcIlxyXG5cdFx0KTtcclxuXHRcdGFwcGx5QnRuICYmXHJcblx0XHRcdGFwcGx5QnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0RGF0YUJ5UG9ydGxldHNOZXcoXHJcblx0XHRcdFx0XHRbdGhpcy5wb3J0bGV0XSxcclxuXHRcdFx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkLFxyXG5cdFx0XHRcdFx0ZmFsc2VcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBmaWVsZExpc3RSZWZyZXNoZWQoYXJncykge1xyXG5cdFx0aWYgKHRoaXMucGl2b3RTZWFyY2hCb3gpIHtcclxuXHRcdFx0dGhpcy5waXZvdFNlYXJjaEJveC52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdHRoaXMuY2hhbmdlRGF0YVNvdXJjZShcclxuXHRcdFx0XHQodGhpcy5maWVsZGxpc3RPYmoudHJlZVZpZXdNb2R1bGUgYXMgYW55KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNoYW5nZURhdGFTb3VyY2UoZGF0YSkge1xyXG5cdFx0bGV0IGZpZWxkVGFibGUgPSAodGhpcyBhcyBhbnkpLmZpZWxkbGlzdE9iai50cmVlVmlld01vZHVsZS5maWVsZFRhYmxlO1xyXG5cdFx0aWYgKGZpZWxkVGFibGUpIHtcclxuXHRcdFx0ZmllbGRUYWJsZS5maWVsZHMgPSB7XHJcblx0XHRcdFx0ZGF0YVNvdXJjZTogZGF0YSxcclxuXHRcdFx0XHRpZDogXCJpZFwiLFxyXG5cdFx0XHRcdHRleHQ6IFwiY2FwdGlvblwiLFxyXG5cdFx0XHRcdGlzQ2hlY2tlZDogXCJpc1NlbGVjdGVkXCIsXHJcblx0XHRcdFx0cGFyZW50SUQ6IFwicGlkXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJzcHJpdGVDc3NDbGFzc1wiLFxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly9TTVAyLTI5NTcgZml4IHRoZSBkYXRlIGlzc3VlIG9uIHRoZSByYXcgZGF0YVxyXG5cdHB1YmxpYyBkcmlsbFRocm91Z2goYXJnczogRHJpbGxUaHJvdWdoRXZlbnRBcmdzKSB7XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuZ3JpZENvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y29uc3QgZGF0YSA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IGFyZ3MuZ3JpZENvbHVtbnNbaV0uZmllbGRcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZGF0YVswXS5kYXRhVHlwZSA9PT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdGRhdGFbMF0uZGF0YVR5cGUgPT09IFwiZGF0ZXRpbWVcIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0YXJncy5ncmlkQ29sdW1uc1tpXS50eXBlID0gXCJkYXRlXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdC8vI2VuZHJlZ2lvblxyXG5cclxuXHRwcml2YXRlIHNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwob2JqLCBkYXRhLCBjb2RlKSB7XHJcblx0XHRpZiAoY29kZSA9PT0gLTEpIHtcclxuXHRcdFx0b2JqLnN0eWxlLmNvbG9yID0gZGF0YS5uZWdhRm9udENvbG9yO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udEZhbWlseSA9IGRhdGEubmVnYUZvbnRGYW1pbHlWYWx1ZTtcclxuXHRcdFx0b2JqLnN0eWxlLmZvbnRTaXplID0gZGF0YS5uZWdhRm9udFNpemVWYWx1ZTtcclxuXHRcdFx0b2JqLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGRhdGEubmVnYUJhY2tncm91bmRDb2xvcjtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG9iai5zdHlsZS5jb2xvciA9IGRhdGEuZm9udENvbG9yO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseVZhbHVlO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplVmFsdWU7XHJcblx0XHRcdG9iai5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0Q29tcGFyZUNvbmRpdGlvbmFsKFxyXG5cdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRkYXRhXHJcblx0KSB7XHJcblx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMSkgPT0gMCkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkdyZWF0ZXJUaGFuXCI6IC8vIOWkp+S6jlxyXG5cdFx0XHRcdGNhc2UgXCJHcmVhdGVyVGhhbk9yRXF1YWxUb1wiOiAvLyDlpKfkuo7nrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RFcXVhbHNcIjogLy8g5LiN562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkJldHdlZW5cIjogLy8gdmFsdWUxPD0gdmFsIDw9dmFsdWUyXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikgPT09IDEpIHtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEuY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RCZXR3ZWVuXCI6IC8vIHZhbCA+PSB2YWx1ZTIsIHZhbCA8PSB2YWx1ZTFcclxuXHRcdFx0XHRcdGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUyKSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUyXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUxKSA9PT0gMSkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKGRhdGEuY29tcGFyZVZhbHVlMSk7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiTGVzc1RoYW5cIjtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJHcmVhdGVyVGhhblwiOiAvLyDlpKfkuo5cclxuXHRcdFx0XHRjYXNlIFwiR3JlYXRlclRoYW5PckVxdWFsVG9cIjogLy8g5aSn5LqO562J5LqOXHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoZGF0YS5jb21wYXJlVmFsdWUxKTtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkVxdWFsc1wiOiAvLyDnrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihkYXRhLmNvbXBhcmVWYWx1ZTEpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiRXF1YWxzXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIk5vdEVxdWFsc1wiOiAvLyDkuI3nrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBOdW1iZXIoZGF0YS5jb21wYXJlVmFsdWUxKTtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihkYXRhLmNvbXBhcmVWYWx1ZTEpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiR3JlYXRlclRoYW5cIjtcclxuXHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhbk9yRXF1YWxUb1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJCZXR3ZWVuXCI6IC8vIHZhbHVlMTw9IHZhbCA8PXZhbHVlMlxyXG5cdFx0XHRcdFx0aWYgKE1hdGguc2lnbihkYXRhLmNvbXBhcmVWYWx1ZTIpID09PSAxKSB7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRkYXRhLmNvbXBhcmVWYWx1ZTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEuY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RCZXR3ZWVuXCI6IC8vIHZhbCA+PSB2YWx1ZTIsIHZhbCA8PSB2YWx1ZTFcclxuXHRcdFx0XHRcdGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUyKSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUxXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0Ly8gcHVzaOi/m+aVsOe7hFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUyXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKE1hdGguc2lnbihkYXRhLmNvbXBhcmVWYWx1ZTEpID09PSAtMSkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBkYXRhLmNvbXBhcmVTZWxlY3Q7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiR3JlYXRlclRoYW5cIjogLy8g5aSn5LqOXHJcblx0XHRcdFx0Y2FzZSBcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCI6IC8vIOWkp+S6juetieS6jlxyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCI7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTE7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiQmV0d2VlblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJFcXVhbHNcIjogLy8g562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkVxdWFsc1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RFcXVhbHNcIjogLy8g5LiN562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIk5vdEVxdWFsc1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkJldHdlZW5cIjogLy8gdmFsdWUxPD0gdmFsIDw9dmFsdWUyXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikpIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTE7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTI7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IGRhdGEuY29tcGFyZVZhbHVlMTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMiA9IGRhdGEuY29tcGFyZVZhbHVlMjtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiTm90QmV0d2VlblwiOiAvLyB2YWwgPj0gdmFsdWUyLCB2YWwgPD0gdmFsdWUxXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikpIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IGRhdGEuY29tcGFyZVZhbHVlMTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkxlc3NUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gZGF0YS5jb21wYXJlVmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiTm90QmV0d2VlblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRpbWVBcnJheSDmlbDnu4Tlr7nosaEgW3tcImRhdGVcIjpcIjIwMjEtMDEtMDFcIn0se1wiZGF0ZVwiOlwiMjAyMS0wMi0wMVwifV1cclxuXHQgKiBAcGFyYW0gZW5kRGF0ZSDmiKroh7Pml7bpl7RcclxuXHQgKiBAcGFyYW0gaW50ZXJ2YWwg5pe26Ze06Ze06ZqUIHllYXIgLyBxdWFydGVyIC8gbW9udGhcclxuXHQgKiBAcGFyYW0gdGltZUtleSDml7bpl7TlrZfmrrXlkI0gZGF0ZVxyXG5cdCAqIEByZXR1cm5zIOWIkuWIhuWQjueahOaXtumXtOWIhue7hOWvueixoVxyXG5cdCAqL1xyXG5cdGdldFRpbWVSYW5nZXModGltZUFycmF5LCBlbmREYXRlLCBpbnRlcnZhbCwgdGltZUtleSkge1xyXG5cdFx0Ly8g5bCG5pe26Ze05a2X56ym5Liy6L2s5o2i5Li6IG1vbWVudCDlr7nosaFcclxuXHRcdGNvbnN0IGRhdGVzID0gdGltZUFycmF5Lm1hcCgoaXRlbSkgPT4gbW9tZW50KGl0ZW1bdGltZUtleSB8fCBcImRhdGVcIl0pKTtcclxuXHJcblx0XHQvLyDliIbpmpTnrKZcclxuXHRcdGNvbnN0IGRlbGltaXRlciA9IFwiLVwiO1xyXG5cclxuXHRcdC8vIOaJvuWIsOacgOWwj+aXtumXtOWSjOacgOWkp+aXtumXtFxyXG5cdFx0Y29uc3QgbWluRGF0ZSA9IG1vbWVudC5taW4oZGF0ZXMpO1xyXG5cdFx0Y29uc3QgbWF4RGF0ZSA9IG1vbWVudChlbmREYXRlKTtcclxuXHJcblx0XHQvLyDliJ3lp4vljJbnu5Pmnpzlr7nosaFcclxuXHRcdGNvbnN0IHJlc3VsdCA9IHt9O1xyXG5cclxuXHRcdC8vIOagueaNruWFpeWPgui/m+ihjOWIkuWIhlxyXG5cdFx0aWYgKGludGVydmFsID09PSBcInllYXJcIikge1xyXG5cdFx0XHRjb25zdCBzdGFydFllYXIgPSBtaW5EYXRlLnllYXIoKTtcclxuXHRcdFx0Y29uc3QgZW5kWWVhciA9IG1heERhdGUueWVhcigpO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgeWVhciA9IHN0YXJ0WWVhcjsgeWVhciA8PSBlbmRZZWFyOyB5ZWFyKyspIHtcclxuXHRcdFx0XHRyZXN1bHRbeWVhcl0gPSBbXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0cmVzdWx0W3llYXJdLnB1c2godGltZUFycmF5W2luZGV4XSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIGlmIChpbnRlcnZhbCA9PT0gXCJxdWFydGVyXCIpIHtcclxuXHRcdFx0Ly8g5a2Y5YKo5a2j5bqm5a2X56ym5LiyXHJcblx0XHRcdGNvbnN0IHF1YXJ0ZXJzID0gW107XHJcblxyXG5cdFx0XHQvLyDpgJDkuIDpgY3ljobmr4/kuKrlraPluqZcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgY3VycmVudERhdGUgPSBtaW5EYXRlLmNsb25lKCk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuYWRkKDMsIFwibW9udGhzXCIpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGNvbnN0IHllYXIgPSBjdXJyZW50RGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgcXVhcnRlciA9IE1hdGguY2VpbCgoY3VycmVudERhdGUubW9udGgoKSArIDEpIC8gMyk7IC8vIOiuoeeul+Wto+W6plxyXG5cdFx0XHRcdHF1YXJ0ZXJzLnB1c2goYCR7eWVhcn0ke2RlbGltaXRlcn1RJHtxdWFydGVyfWApOyAvLyDmoLzlvI/ljJblubbmt7vliqDliLDmlbDnu4RcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g6L6T5Ye65omA5pyJ5a2j5bqmXHJcblx0XHRcdHF1YXJ0ZXJzLmZvckVhY2goKHF1YXJ0ZXIsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0cmVzdWx0W3F1YXJ0ZXJdID0gW107XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgcXVhcnRlciA9IGRhdGUucXVhcnRlcigpOyAvLyDojrflj5blraPluqZcclxuXHRcdFx0XHRpZiAocXVhcnRlciA9PT0gMSlcclxuXHRcdFx0XHRcdHJlc3VsdFt5ZWFyICsgZGVsaW1pdGVyICsgXCJRMVwiXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHRcdGVsc2UgaWYgKHF1YXJ0ZXIgPT09IDIpXHJcblx0XHRcdFx0XHRyZXN1bHRbeWVhciArIGRlbGltaXRlciArIFwiUTJcIl0ucHVzaCh0aW1lQXJyYXlbaW5kZXhdKTtcclxuXHRcdFx0XHRlbHNlIGlmIChxdWFydGVyID09PSAzKVxyXG5cdFx0XHRcdFx0cmVzdWx0W3llYXIgKyBkZWxpbWl0ZXIgKyBcIlEzXCJdLnB1c2godGltZUFycmF5W2luZGV4XSk7XHJcblx0XHRcdFx0ZWxzZSBpZiAocXVhcnRlciA9PT0gNClcclxuXHRcdFx0XHRcdHJlc3VsdFt5ZWFyICsgZGVsaW1pdGVyICsgXCJRNFwiXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSBpZiAoaW50ZXJ2YWwgPT09IFwibW9udGhcIikge1xyXG5cdFx0XHQvLyDlrZjlgqjmnIjku73lrZfnrKbkuLJcclxuXHRcdFx0Y29uc3QgbW9udGhzID0gW107XHJcblxyXG5cdFx0XHQvLyDpgJDkuIDpgY3ljobmr4/kuKrmnIhcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgY3VycmVudERhdGUgPSBtaW5EYXRlLmNsb25lKCk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuYWRkKDEsIFwibW9udGhzXCIpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdG1vbnRocy5wdXNoKGN1cnJlbnREYXRlLmZvcm1hdChgWVlZWSR7ZGVsaW1pdGVyfU1NYCkpOyAvLyDmoLzlvI/ljJblubbmt7vliqDliLDmlbDnu4RcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g6L6T5Ye65omA5pyJ5pyI5Lu9XHJcblx0XHRcdG1vbnRocy5mb3JFYWNoKChtb250aCwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRyZXN1bHRbbW9udGhdID0gW107XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgbW9udGggPSAoZGF0ZS5tb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7IC8vIDAtMTFcclxuXHRcdFx0XHRyZXN1bHRbeWVhciArIGRlbGltaXRlciArIG1vbnRoXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog6K6h566X5Yeg5L2V566X5pWw5bmz5pa55pu0XHJcblx0ICogQHBhcmFtIHZhbHVlcyDmlbDnu4QgWzAsIDAsIDAuMjU3NV1cclxuXHQgKiBAcmV0dXJuc1xyXG5cdCAqL1xyXG5cdGNhbGN1bGF0ZUdyb3d0aFJhdGUodmFsdWVzKSB7XHJcblx0XHRjb25zdCBwcm9kdWN0ID0gdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYyAqICgxICsgdmFsKSwgMSk7XHJcblx0XHRpZiAocHJvZHVjdCA+PSAwKSB7XHJcblx0XHRcdHJldHVybiBNYXRoLnBvdyhwcm9kdWN0LCAxIC8gdmFsdWVzLmxlbmd0aCkgLSAxO1xyXG5cdFx0fSBlbHNlIGlmIChwcm9kdWN0IDwgMCkge1xyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCAlIDIgPT0gMCkge1xyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLm50aHJvb3QocHJvZHVjdCwgdmFsdWVzLmxlbmd0aCkgLSAxO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdG50aHJvb3QoeCwgbikge1xyXG5cdFx0bGV0IG5nID0gbiAlIDI7XHJcblx0XHRpZiAobmcgPT0gMSB8fCB4IDwgMCkgeCA9IC14O1xyXG5cdFx0dmFyIHIgPSBNYXRoLnBvdyh4LCAxIC8gbik7XHJcblx0XHRuID0gTWF0aC5wb3cociwgbik7XHJcblxyXG5cdFx0aWYgKE1hdGguYWJzKHggLSBuKSA8IDEgJiYgeCA+IDAgPT09IG4gPiAwKSByZXR1cm4gbmcgPyAtciA6IHI7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDmoIflh4blgY/lt65cclxuXHQgKiBAcGFyYW0gdmFsdWVzIOaVsOe7hCBbMCwgMCwgLTAuNDc3NV1cclxuXHQgKiBAcmV0dXJucyAwLjI3NTY4NDc1MzUzODA0NjNcclxuXHQgKi9cclxuXHRjYWxjdWxhdGVTdGFuZGFyZERldmlhdGlvbih2YWx1ZXMpIHtcclxuXHRcdGNvbnN0IG4gPSB2YWx1ZXMubGVuZ3RoO1xyXG5cclxuXHRcdC8vIOajgOafpeaVsOaNrueCueaVsOmHj1xyXG5cdFx0aWYgKG4gPCAyKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIuiHs+WwkemcgOimgeS4pOS4quaVsOaNrueCueadpeiuoeeul+agt+acrOagh+WHhuWBj+W3rlwiKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyDorqHnrpflnYflgLxcclxuXHRcdGNvbnN0IG1lYW4gPSB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjICsgdmFsLCAwKSAvIG47XHJcblxyXG5cdFx0Ly8g6K6h566X5pa55beuXHJcblx0XHRjb25zdCB2YXJpYW5jZSA9XHJcblx0XHRcdHZhbHVlcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgKyBNYXRoLnBvdyh2YWwgLSBtZWFuLCAyKSwgMCkgL1xyXG5cdFx0XHQobiAtIDEpO1xyXG5cclxuXHRcdC8vIOi/lOWbnuagh+WHhuWBj+W3rlxyXG5cdFx0cmV0dXJuIE1hdGguc3FydCh2YXJpYW5jZSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
4293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3JhaXNlLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvZGFzaGJvYXJkL2dhZGdldC1ncm91cC9nYWRnZXQtcGl2b3QtY2hhcnQvZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ04saUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUNULHVCQUF1QixFQUN2QixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixrQkFBa0IsRUFHbEIsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBRXRCLGtCQUFrQixFQUdsQixvQkFBb0IsRUFJcEIsbUJBQW1CLEdBRW5CLE1BQU0sbUNBQW1DLENBQUM7QUFFM0MsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTVELE9BQU8sRUFDTixNQUFNLEVBQ04sY0FBYyxFQUNkLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sSUFBSSxPQUFPLEVBQ2pCLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEdBQ0osTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUNOLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9B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QyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3ZDO29CQUNELElBQ0MsRUFBRSxDQUFDLE1BQU07d0JBQ1QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUNoQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7d0JBQzFCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7d0JBRTNELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzdDLElBQ0MsRUFBRSxDQUFDLE1BQU07d0JBQ1QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUNoQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7d0JBQzFCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7d0JBRTNELElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hELElBQ0MsRUFBRSxDQUFDLE1BQU07d0JBQ1QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUNoQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7d0JBQzFCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQzVDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxD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NEM7Ozs7O0lBQzVDLG1EQUdFOzs7OztJQUNGLGtEQUEyQjs7Ozs7SUFDM0Isa0RBQTJCOztJQUMzQixtREFBc0I7O0lBQ3RCLCtDQUFtQzs7SUFDbkMsZ0RBQXdCOzs7OztJQUN4QixxREFBOEI7O0lBQzlCLGdEQUFtQjs7SUFDbkIsK0NBQThCOztJQUM5Qiw2Q0FBeUI7O0lBODlDekIsbURBQW9COzs7OztJQTM5Q25CLDREQUF3RDs7Ozs7SUFDeEQscURBQTBDOzs7OztJQUMxQyx3Q0FBOEI7Ozs7O0lBQzlCLHdDQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdElucHV0LFxyXG5cdE9uSW5pdCxcclxuXHRWaWV3Q2hpbGQsXHJcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdE91dHB1dCxcclxuXHRPcHRpb25hbCxcclxuXHRJbmplY3QsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7XHJcblx0SURhdGFPcHRpb25zLFxyXG5cdFBpdm90RmllbGRMaXN0Q29tcG9uZW50LFxyXG5cdFBpdm90Vmlld0NvbXBvbmVudCxcclxuXHRFbmdpbmVQb3B1bGF0ZWRFdmVudEFyZ3MsXHJcblx0SURhdGFTZXQsXHJcblx0VG9vbGJhclNlcnZpY2UsXHJcblx0RmllbGRMaXN0U2VydmljZSxcclxuXHROdW1iZXJGb3JtYXR0aW5nU2VydmljZSxcclxuXHRDYWxjdWxhdGVkRmllbGRTZXJ2aWNlLFxyXG5cdENhbGN1bGF0ZWRGaWVsZENyZWF0ZUV2ZW50QXJncyxcclxuXHRHcm91cGluZ0JhclNlcnZpY2UsXHJcblx0RmllbGREcm9wRXZlbnRBcmdzLFxyXG5cdElTb3J0LFxyXG5cdFZpcnR1YWxTY3JvbGxTZXJ2aWNlLFxyXG5cdElQaXZvdFZhbHVlcyxcclxuXHRJUGFnZVNldHRpbmdzLFxyXG5cdERyaWxsVGhyb3VnaEV2ZW50QXJncyxcclxuXHREcmlsbFRocm91Z2hTZXJ2aWNlLFxyXG5cdFBpdm90QWN0aW9uRmFpbHVyZUV2ZW50QXJncyxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcGl2b3R2aWV3XCI7XHJcblxyXG5pbXBvcnQgeyBMMTBuLCBjcmVhdGVFbGVtZW50LCBlbmFibGVSaXBwbGUgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHsgUEJGX1RPS0VOIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvSW5qZWN0aW9uVG9rZW5cIjtcclxuXHJcbmltcG9ydCB7XHJcblx0c29ydEJ5LFxyXG5cdGRpZmZlcmVuY2VXaXRoLFxyXG5cdHN0YXJ0c1dpdGgsXHJcblx0Y2xvbmVEZWVwLFxyXG5cdHVuaXFCeSxcclxuXHRmaWx0ZXIgYXMgX2ZpbHRlcixcclxuXHRtYXhCeSxcclxuXHRtaW5CeSxcclxuXHRzdW1CeSxcclxuXHRtZWFuQnksXHJcblx0bWVhbixcclxufSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuXHRBR0dSRUdBVEVfVFlQRVNfVEVYVCxcclxuXHRBTExfQUdHUkVHQVRFX1RZUEVTLFxyXG5cdERhc2hib2FyZFBvcmxldHNTZXJ2aWNlLFxyXG59IGZyb20gXCIuLi8uLi9kYXNoYm9hcmRQb3JsZXRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnJvd3NlciB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNYXNrZWRUZXh0Qm94IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1pbnB1dHMvc3JjL21hc2tlZHRleHRib3gvbWFza2VkdGV4dGJveFwiO1xyXG5pbXBvcnQgeyBEYXRhTWFuYWdlciB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YS9zcmMvbWFuYWdlclwiO1xyXG5pbXBvcnQgeyBQcmVkaWNhdGUsIFF1ZXJ5IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1kYXRhL3NyYy9xdWVyeVwiO1xyXG5pbXBvcnQgeyBEYXRhVXRpbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YVwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuZW5hYmxlUmlwcGxlKGZhbHNlKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInJzLWdhZGdldC1waXZvdC1jaGFydFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2dhZGdldC1waXZvdC5jb21wb25lbnQuc2Nzc1wiXSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdFRvb2xiYXJTZXJ2aWNlLFxyXG5cdFx0RmllbGRMaXN0U2VydmljZSxcclxuXHRcdE51bWJlckZvcm1hdHRpbmdTZXJ2aWNlLFxyXG5cdFx0Q2FsY3VsYXRlZEZpZWxkU2VydmljZSxcclxuXHRcdEdyb3VwaW5nQmFyU2VydmljZSxcclxuXHRcdFZpcnR1YWxTY3JvbGxTZXJ2aWNlLFxyXG5cdFx0RHJpbGxUaHJvdWdoU2VydmljZSxcclxuXHRdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FkZ2V0UGl2b3RDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QElucHV0KCkgcG9ydGxldDtcclxuXHRASW5wdXQoKSBkYXNoYm9hcmQ7XHJcblx0QElucHV0KCkgcG9ydGxldHM7XHJcblx0QE91dHB1dCgpIHVwZGF0ZVBvcmxldENvbmZpZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRwcml2YXRlIFBpdm90X0RhdGE6IElEYXRhU2V0W107XHJcblx0cHJpdmF0ZSBjb25maWc7XHJcblx0cHVibGljIGRhdGFTb3VyY2VTZXR0aW5nczogSURhdGFPcHRpb25zO1xyXG5cdHByaXZhdGUgZXhjbHVkZUZpZWxkcyA9IFtdO1xyXG5cdHByaXZhdGUgZmlsdGVyU2V0dGluZ3MgPSBbXTtcclxuXHRwcml2YXRlIGRhdGVQaXBlRm9ybWF0O1xyXG5cdHB1YmxpYyB0cmFuc2xhdGlvbjtcclxuXHRAVmlld0NoaWxkKFwicGl2b3R2aWV3XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHByaXZhdGUgcGl2b3RPYmo6IFBpdm90Vmlld0NvbXBvbmVudDtcclxuXHRAVmlld0NoaWxkKFwicGl2b3RmaWVsZGxpc3RcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGZpZWxkbGlzdE9iajogUGl2b3RGaWVsZExpc3RDb21wb25lbnQ7XHJcblx0cHJpdmF0ZSBncmFuZFRvdGFscyA9IHt9O1xyXG5cdHByaXZhdGUgc3ViVG90YWxzID0ge307XHJcblx0cHJpdmF0ZSBwcmV2aW91c1NvcnQ6IElTb3J0O1xyXG5cdHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHRwcml2YXRlIGFsbERhdGFWYWx1ZTtcclxuXHQvLyBwcml2YXRlIGNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzO1xyXG5cdHByaXZhdGUgaXNJbml0OiBib29sZWFuID0gdHJ1ZTtcclxuXHRwcml2YXRlIHBpdm90U2VhcmNoQm94OiBNYXNrZWRUZXh0Qm94O1xyXG5cdHB1YmxpYyBkaXNwbGF5T3B0aW9uID0ge1xyXG5cdFx0dmlldzogXCJCb3RoXCIsXHJcblx0XHRwcmltYXJ5OiBcIkNoYXJ0XCIsXHJcblx0fTtcclxuXHRwdWJsaWMgY2hhcnRTZXR0aW5ncztcclxuXHRwdWJsaWMgdG9vbHRpcFNldHRpbmdzID0ge1xyXG5cdFx0ZW5hYmxlOiBmYWxzZSxcclxuXHR9O1xyXG5cdHByaXZhdGUgY29sdW1uVGV4dHMgPSBbXTtcclxuXHRwcml2YXRlIGNvbmZpZ0ZpZWxkcyA9IFtdO1xyXG5cdHByaXZhdGUgcXVhcnRlckZvcm1hdCA9IFtcclxuXHRcdHsgdmFsdWU6IFwiMDMvMjAyMVwiLCBmb3JtYXQ6IFwiTU0veXl5eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIjAzLzIxXCIsIGZvcm1hdDogXCJNTS9kZFwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIjMvMjAyMVwiLCBmb3JtYXQ6IFwiTS95eXl5XCIgfSxcclxuXHRcdHsgdmFsdWU6IFwiMy8yMVwiLCBmb3JtYXQ6IFwiTS95eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIk1hcmNoIDIwMjFcIiwgZm9ybWF0OiBcIk1NTU0geXl5eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIk1hciwgMjAyMVwiLCBmb3JtYXQ6IFwiTU1NLCB5eXl5XCIgfSxcclxuXHRcdHsgdmFsdWU6IFwiTWFyY2gsIDIwMjFcIiwgZm9ybWF0OiBcIk1NTU0sIHl5eXlcIiB9LFxyXG5cdFx0eyB2YWx1ZTogXCIyMDIxXCIsIGZvcm1hdDogXCJ5eXl5XCIgfSxcclxuXHRdO1xyXG5cdHpvb21TZXR0aW5ncyA9IHtcclxuXHRcdGVuYWJsZTogZmFsc2UsXHJcblx0fTtcclxuXHRpdGVtRGF0YVR5cGVTb3J0QXJyID0gW1xyXG5cdFx0XCJBc3NldHNcIixcclxuXHRcdFwiTGlhYmlsaXRpZXNcIixcclxuXHRcdFwiRXF1aXR5XCIsXHJcblx0XHRcIlAmTFwiLFxyXG5cdFx0XCJDYXNoZmxvd1wiLFxyXG5cdF07XHJcblx0cHJpdmF0ZSBmb3JtYXREYXRlcyA9IFtdO1xyXG5cdHByaXZhdGUgY3VzdG9tQ2FsY3VsYXRlZEZpZWxkczogYW55W10gPSBbXTsgLy8g6Ieq5a6a5LmJ6K6h566X5YiXXHJcblx0cHJpdmF0ZSBhbGxvd2VkQ2FsY3VsYXRlZEZpZWxkczogYW55W10gPSBbXTsgLy8g5YWB6K646Ieq5a6a5LmJ566X5rOV55qE5a2X5q61XHJcblx0cHJpdmF0ZSB6ZXJvRm9ybWF0RGF0YSA9IHtcclxuXHRcdGVtcHR5TGlzdDogW10sXHJcblx0XHRoZ0xpc3Q6IFtdLFxyXG5cdH07XHJcblx0cHJpdmF0ZSBtaWxsaW9uRmllbGRzID0gW107XHJcblx0cHJpdmF0ZSB0ZW1wU3VidG90YWxzID0gW107XHJcblx0cHVibGljIG9yZGVyQnlDb2x1bW5zOyAvLyBFZzogXCJEdWVEYXRlLCBTZXF1ZW5jZVwiXHJcblx0cHVibGljIGlzQXBwbHlJUlI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgY2FsY0lSUkRhdGE6IGFueTtcclxuXHRwcml2YXRlIHBlcmNlbnROdW1GaWVsZHMgPSBbXTtcclxuXHRwdWJsaWMgcGFnZUxvYWRpbmc7XHJcblx0b2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGlzbG9hZGVkOiBib29sZWFuOyAvLyDmmK/lkKblt7Lnu4/liJ3lp4vljJbov4dcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGRhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuXHRcdHByaXZhdGUgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwcml2YXRlIHBiZjogYW55LFxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcblx0XHRcdGxlZ2VuZFNldHRpbmdzOiB7XHJcblx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdGVuYWJsZU11bHRpcGxlQXhpczogZmFsc2UsXHJcblx0XHRcdHNob3dNdWx0aUxldmVsTGFiZWxzOiBmYWxzZSxcclxuXHRcdFx0Y2hhcnRTZXJpZXM6IHtcclxuXHRcdFx0XHR0eXBlOiBcIkNvbHVtblwiLFxyXG5cdFx0XHRcdGNvbHVtblNwYWNpbmc6IDAuMSxcclxuXHRcdFx0XHRjb2x1bW5XaWR0aDogMC45LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtdWx0aXBsZUF4aXNNb2RlOiBcIlN0YWNrZWRcIixcclxuXHRcdFx0cHJpbWFyeVhBeGlzOiB7XHJcblx0XHRcdFx0dGl0bGU6IFwiIFwiLFxyXG5cdFx0XHRcdGxhYmVsRm9ybWF0OiBcIk4yXCIsXHJcblx0XHRcdFx0bWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuXHRcdFx0XHRtaW5vckdyaWRMaW5lczoge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0XHRjb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxyXG5cdFx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRtaW5vclRpY2tMaW5lczogeyB2aXNpYmxlOiBmYWxzZSB9LFxyXG5cdFx0XHRcdGxpbmVTdHlsZToge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2hhcnRBcmVhOiB7XHJcblx0XHRcdFx0b3BhY2l0eTogMCxcclxuXHRcdFx0XHRib3JkZXI6IHtcclxuXHRcdFx0XHRcdHdpZHRoOiAwLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH0sXHJcblx0XHRcdHBhbGV0dGVzOiBbXHJcblx0XHRcdFx0XCIjNTk0YmI5XCIsXHJcblx0XHRcdFx0XCIjZjFhZjMyXCIsXHJcblx0XHRcdFx0XCIjNDY4OGVkXCIsXHJcblx0XHRcdFx0XCIjZTA1NjNlXCIsXHJcblx0XHRcdFx0XCIjODAzYTYzXCIsXHJcblx0XHRcdFx0XCIjNmRkOGI1XCIsXHJcblx0XHRcdFx0XCIjZTg3MjI1XCIsXHJcblx0XHRcdFx0XCIjYzVkZjQyXCIsXHJcblx0XHRcdFx0XCIjYzY0MzdkXCIsXHJcblx0XHRcdF0sXHJcblx0XHRcdHByaW1hcnlZQXhpczoge1xyXG5cdFx0XHRcdC8vIFnovbTmoIfpopjorr7nva7kuLrnqbpcclxuXHRcdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHRcdFx0bGFiZWxGb3JtYXQ6IFwiTjJcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0em9vbVNldHRpbmdzOiB7XHJcblx0XHRcdFx0ZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjpvKDmoIfmu5rova7nvKnmlL5cclxuXHRcdFx0XHRlbmFibGVQaW5jaFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjop6bmkbjnvKnmlL5cclxuXHRcdFx0XHRlbmFibGVTZWxlY3Rpb25ab29taW5nOiBmYWxzZSwgLy8g56aB55So6YCJ5oup5Yy65Z+f57yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlRGVmZXJyZWRab29taW5nOiBmYWxzZSwgLy8g56aB55So5bu26L+f57yp5pS+XHJcblx0XHRcdFx0dG9vbGJhckl0ZW1zOiBbXSxcclxuXHRcdFx0XHRlbmFibGVTY3JvbGxiYXI6IGZhbHNlLFxyXG5cdFx0XHRcdGVuYWJsZVpvb21pbmc6IGZhbHNlLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5nZXRJbmZvKCk7XHJcblx0XHR0aGlzLmdldERhdGEoKTtcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0U3RhcnRSZWZyZXNoKCkuc3Vic2NyaWJlKChkYXNoYm9hcmRJZCkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmRhc2hib2FyZC5pZCA9PT0gZGFzaGJvYXJkSWQpIHtcclxuXHRcdFx0XHRcdHRoaXMucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFJlZnJlc2hHYWRnZXQoKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuXHRcdFx0XHRpZiAoIWUpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgaWQgPSBlW1wibmV3SWRcIl07XHJcblx0XHRcdFx0Y29uc3QgY29uZmlnID0gZVtcImNvbmZpZ1wiXTtcclxuXHRcdFx0XHRpZiAoaWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCB8fCBpZCA9PT0gdGhpcy5wb3J0bGV0LmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoY29uZmlnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0Y2hhbmdlUGl2b3QoKS5zdWJzY3JpYmUoKHVwZGF0ZWQpID0+IHtcclxuXHRcdFx0XHRpZiAodXBkYXRlZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0VXBkYXRlZCgpLnN1YnNjcmliZSgobmV3SWQpID0+IHtcclxuXHRcdFx0XHRpZiAobmV3SWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCB8fCBuZXdJZCA9PT0gdGhpcy5wb3J0bGV0LmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFRhYmxlRm9ybWF0KCkuc3Vic2NyaWJlKCh1cGRhdGVkKSA9PiB7XHJcblx0XHRcdFx0aWYgKHVwZGF0ZWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG5cdFx0XHRcdC5jbGVhckZpZWxkTGlzdE9ic2VydmFibGUoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKHVwZGF0ZWQpID0+IHtcclxuXHRcdFx0XHRcdGlmICh1cGRhdGVkID09PSB0aGlzLnBvcnRsZXQubmV3SWQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuZGF0YVNvdXJjZSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuXHRcdFx0XHQuZ2V0UHZ0YWJsZURpc3BsYXlPcHRpb25DaGFydENoYW5nZSgpXHJcblx0XHRcdFx0LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZGF0YSB8fFxyXG5cdFx0XHRcdFx0XHQhdGhpcy5wb3J0bGV0IHx8XHJcblx0XHRcdFx0XHRcdHRoaXMucG9ydGxldC5uZXdJZCAhPT0gZGF0YS5uZXdJZFxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXS5jb21wbGV0ZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5pbml0Q2hhcnRTZXR0aW5nKGRhdGEuY2hhcnRUeXBlKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Q29uZmlnVG9Qb3JsZXQoKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHRcdFx0fSlcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG5cdFx0XHRcdC5nZXRFbmFibGVNdWx0aXBsZUF4aXNDaGFuZ2UoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWRhdGEgfHxcclxuXHRcdFx0XHRcdFx0IXRoaXMucG9ydGxldCB8fFxyXG5cdFx0XHRcdFx0XHR0aGlzLnBvcnRsZXQubmV3SWQgIT09IGRhdGEubmV3SWRcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodGhpcy5jaGFydFNldHRpbmdzW1wicG9pbnRSZW5kZXJcIl0pIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5jaGFydFNldHRpbmdzW1wicG9pbnRSZW5kZXJcIl0uY29tcGxldGUoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5lbmFibGVNdWx0aXBsZUF4aXMgPVxyXG5cdFx0XHRcdFx0XHRkYXRhLmVuYWJsZU11bHRpcGxlQXhpcztcclxuXHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MubXVsdGlwbGVBeGlzTW9kZSA9IGRhdGEubXVsdGlwbGVBeGlzTW9kZTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MubGVnZW5kU2V0dGluZ3MgPSB7XHJcblx0XHRcdFx0XHRcdHZpc2libGU6IGRhdGEudmlzaWJsZSxcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNoYXJ0U2V0dGluZ3MpO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmopXHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Q29uZmlnVG9Qb3JsZXQoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldENoYXJ0VHlwZUNoYW5nZSgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdCFkYXRhIHx8XHJcblx0XHRcdFx0XHQhdGhpcy5wb3J0bGV0IHx8XHJcblx0XHRcdFx0XHR0aGlzLnBvcnRsZXQubmV3SWQgIT09IGRhdGEubmV3SWRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLnR5cGUgPVxyXG5cdFx0XHRcdFx0ZGF0YS5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLnR5cGUgPT09IFwiU3RhY2tlZCBDb2x1bW5cIlxyXG5cdFx0XHRcdFx0XHQ/IFwiU3RhY2tpbmdDb2x1bW5cIlxyXG5cdFx0XHRcdFx0XHQ6IGRhdGEuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy50eXBlO1xyXG5cdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY2hhcnRTZXR0aW5ncyk7XHJcblx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmopIHRoaXMucGl2b3RPYmoucmVmcmVzaERhdGEoKTtcclxuXHRcdFx0XHR0aGlzLnNldENvbmZpZ1RvUG9ybGV0KCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0VGhlbWUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHQhZGF0YSB8fFxyXG5cdFx0XHRcdFx0IXRoaXMucG9ydGxldCB8fFxyXG5cdFx0XHRcdFx0dGhpcy5wb3J0bGV0Lm5ld0lkICE9PSBkYXRhLm5ld0lkXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IFsuLi5kYXRhLnRoZW1lXTtcclxuXHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNoYXJ0U2V0dGluZ3MpO1xyXG5cdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLmxheW91dFJlZnJlc2goKTtcclxuXHRcdFx0XHR0aGlzLnNldENvbmZpZ1RvUG9ybGV0KCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cclxuXHQvLyDmib7liLDmlbDnu4TkuK3lh7rnjrDmnIDlpJrpopHmrKHnmoTlhYPntKBcclxuXHRmaW5kTW9zdEZyZXF1ZW50KGFycikge1xyXG5cdFx0bGV0IG1heENvdW50ID0gMDtcclxuXHRcdGxldCBtb3N0RnJlcXVlbnROdW0gPSBudWxsO1xyXG5cclxuXHRcdC8vIOS9v+eUqOS4gOS4quWvueixoeadpeiuoeaVsFxyXG5cdFx0Y29uc3QgY291bnRNYXAgPSB7fTtcclxuXHJcblx0XHRhcnIuZm9yRWFjaCgobnVtKSA9PiB7XHJcblx0XHRcdGNvdW50TWFwW251bV0gPSAoY291bnRNYXBbbnVtXSB8fCAwKSArIDE7XHJcblxyXG5cdFx0XHQvLyDmo4Dmn6XmmK/lkKbmmK/mnIDlpJrnmoRcclxuXHRcdFx0aWYgKGNvdW50TWFwW251bV0gPiBtYXhDb3VudCkge1xyXG5cdFx0XHRcdG1heENvdW50ID0gY291bnRNYXBbbnVtXTtcclxuXHRcdFx0XHRtb3N0RnJlcXVlbnROdW0gPSBudW07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBtb3N0RnJlcXVlbnROdW07XHJcblx0fVxyXG5cclxuXHRsb2FkZWQoYXJncykge1xyXG5cdFx0Ly8g5om+5Yiw5omA5pyJeei9tOagh+etvlxyXG5cdFx0Y29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxyXG5cdFx0XHRgW2lkXj1cIiR7dGhpcy5waXZvdE9iai5lbGVtZW50LmlkfV9jaGFydDJfQXhpc0xhYmVsXCJdLFxyXG5cdFx0XHRbaWRePVwiJHt0aGlzLnBpdm90T2JqLmVsZW1lbnQuaWR9X2NoYXJ0M19BeGlzTGFiZWxcIl1gXHJcblx0XHQpO1xyXG5cdFx0bGV0IGlzRXJyb3JBY2N1cmFjeSA9IGZhbHNlO1xyXG5cdFx0bGV0IHhQb3NpdGlvbiA9IFtdO1xyXG5cdFx0ZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG5cdFx0XHQvLyDmmK/lkKbmnInnsr7luqbpl67pophcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdEJvb2xlYW4oTnVtYmVyKGVsZW1lbnQuaW5uZXJIVE1MKSkgJiZcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTC5sZW5ndGggPiAxNVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRpc0Vycm9yQWNjdXJhY3kgPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIOiusOW9leS4gOS4i3novbTmoIfnrb7nmoR45Z2Q5qCHXHJcblx0XHRcdGNvbnN0IGN1cnJlbnRYID0gcGFyc2VGbG9hdChlbGVtZW50LmdldEF0dHJpYnV0ZShcInhcIikpO1xyXG5cdFx0XHR4UG9zaXRpb24ucHVzaChjdXJyZW50WCk7XHJcblxyXG5cdFx0XHRpZiAoZWxlbWVudC5pbm5lckhUTUwuZW5kc1dpdGgoXCIuLi5cIikpIHtcclxuXHRcdFx0XHRsZXQgaW5uZXJIVE1MID0gZWxlbWVudC5pbm5lckhUTUwucmVwbGFjZShcIi4uLlwiLCBcIlwiKTtcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IE51bWJlcihpbm5lckhUTUwpLnRvRml4ZWQoMik7XHJcblx0XHRcdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcblx0XHRcdFx0XHRcInhcIixcclxuXHRcdFx0XHRcdGN1cnJlbnRYICsgaW5uZXJIVE1MLmxlbmd0aCAqIDMgLSAzICsgXCJcIlxyXG5cdFx0XHRcdCk7IC8vIOefq+ato+mVv+W6plxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGlmIChpc0Vycm9yQWNjdXJhY3kpIHtcclxuXHRcdFx0Ly8g5om+5Yiw5omA5pyJeei9tOagh+etvuS4reeahOW5s+Wdh3jlnZDmoIdcclxuXHRcdFx0bGV0IHggPSBtZWFuKHhQb3NpdGlvbik7XHJcblx0XHRcdGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHQvLyDmiYvliqjnsr7luqbkv67mraNcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IE51bWJlcihlbGVtZW50LmlubmVySFRNTCkudG9GaXhlZCgyKTtcclxuXHRcdFx0XHRpZiAoZWxlbWVudC5pbm5lckhUTUwgPT09IFwiLTAuMDBcIikge1xyXG5cdFx0XHRcdFx0ZWxlbWVudC5pbm5lckhUTUwgPSBOdW1iZXIoMCkudG9GaXhlZCgyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g5omL5Yqo6K6+572uIHjlnZDmoIdcclxuXHRcdFx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShcInhcIiwgeC50b1N0cmluZygpKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldENvbmZpZ1RvUG9ybGV0KCkge1xyXG5cdFx0Y29uc3QgY29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKTtcclxuXHRcdGlmICghY29uZmlnKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0ge1xyXG5cdFx0XHRkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcblx0XHRcdGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuXHRcdH07XHJcblx0XHR0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXSA9IG51bGw7XHJcblx0XHR0aGlzLmNvbmZpZyA9IHsgLi4uY29uZmlnIH07XHJcblx0XHR0aGlzLnVwZGF0ZVBvcmxldENvbmZpZy5lbWl0KHtcclxuXHRcdFx0bmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuXHRcdFx0Y29uZmlnLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRjaGFydFNlcmllc0NyZWF0ZWQoZSkge31cclxuXHJcblx0cHJpdmF0ZSBpbml0Q2hhcnRTZXR0aW5nKHR5cGU/OiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IHNldHRpbmcgPSB0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nO1xyXG5cdFx0aWYgKCFzZXR0aW5nKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRzZXR0aW5nLmNoYXJ0U2V0dGluZ3MuY2hhcnRTZXJpZXMuZGF0YUxhYmVsID0ge1xyXG5cdFx0XHR2aXNpYmxlOiB0cnVlLCAvLyBNYWtlIHRoZSBkYXRhIGxhYmVsIHZpc2libGVcclxuXHRcdFx0cG9zaXRpb246IFwiT3V0c2lkZVwiLCAvLyBQb3NpdGlvbiB0aGUgZGF0YSBsYWJlbCBvdXRzaWRlIHRoZSBjaGFydFxyXG5cdFx0XHQvLyBEZWZpbmUgdGhlIHRlbXBsYXRlIGZvciBkYXRhIGxhYmVsIGNvbnRlbnRcclxuXHRcdFx0dGVtcGxhdGU6XHJcblx0XHRcdFx0JzxkaXYgc3R5bGU9XCJjb2xvcjogQmxhY2tcIj4gJHsocG9pbnQueSkudG9Mb2NhbGVTdHJpbmcoKX08L2Rpdj4nLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuY2hhcnRTZXR0aW5ncyA9IHtcclxuXHRcdFx0Li4uc2V0dGluZy5jaGFydFNldHRpbmdzLFxyXG5cdFx0XHRwcmltYXJ5WEF4aXM6IHtcclxuXHRcdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHRcdFx0bGFiZWxGb3JtYXQ6IFwiTjJcIixcclxuXHRcdFx0XHRtYWpvckdyaWRMaW5lczogeyB3aWR0aDogMCB9LFxyXG5cdFx0XHRcdG1pbm9yR3JpZExpbmVzOiB7XHJcblx0XHRcdFx0XHR3aWR0aDogMCxcclxuXHRcdFx0XHRcdGNvbG9yOiBcInRyYW5zcGFyZW50XCIsXHJcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdG1pbm9yVGlja0xpbmVzOiB7IHZpc2libGU6IGZhbHNlIH0sXHJcblx0XHRcdFx0bGluZVN0eWxlOiB7XHJcblx0XHRcdFx0XHR3aWR0aDogMCxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwb2ludFJlbmRlcjogdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZSgoYXJnczogYW55KSA9PiB7XHJcblx0XHRcdFx0aWYgKGFyZ3MgJiYgYXJncy5wb2ludCAmJiBhcmdzLnBvaW50LnkpIHtcclxuXHRcdFx0XHRcdGFyZ3MucG9pbnQueSA9IHBhcnNlRmxvYXQoYXJncy5wb2ludC55LnRvRml4ZWQoMikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkgYXMgYW55LFxyXG5cdFx0XHRjaGFydEFyZWE6IHtcclxuXHRcdFx0XHRvcGFjaXR5OiAwLFxyXG5cdFx0XHRcdGJvcmRlcjoge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0cHJpbWFyeVlBeGlzOiB7XHJcblx0XHRcdFx0Ly8gWei9tOagh+mimOiuvue9ruS4uuepulxyXG5cdFx0XHRcdHRpdGxlOiBcIiBcIixcclxuXHRcdFx0XHRsYWJlbEZvcm1hdDogXCJOMlwiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRsb2FkZWQ6IHRoaXMuaXNsb2FkZWRcclxuXHRcdFx0XHQ/IG51bGxcclxuXHRcdFx0XHQ6ICh0aGlzLm9ic2VydmFibGUuc3Vic2NyaWJlKHRoaXMubG9hZGVkLmJpbmQodGhpcykpIGFzIGFueSksXHJcblx0XHRcdHpvb21TZXR0aW5nczoge1xyXG5cdFx0XHRcdGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiBmYWxzZSwgLy8g56aB55So6byg5qCH5rua6L2u57yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlUGluY2hab29taW5nOiBmYWxzZSwgLy8g56aB55So6Kem5pG457yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOmAieaLqeWMuuWfn+e8qeaUvlxyXG5cdFx0XHRcdGVuYWJsZURlZmVycmVkWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOW7tui/n+e8qeaUvlxyXG5cdFx0XHRcdHRvb2xiYXJJdGVtczogW10sXHJcblx0XHRcdFx0ZW5hYmxlU2Nyb2xsYmFyOiBmYWxzZSxcclxuXHRcdFx0XHRlbmFibGVab29taW5nOiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdH07XHJcblx0XHR0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcclxuXHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdGlmICghdGhpcy5jaGFydFNldHRpbmdzLnBhbGV0dGVzKSB7XHJcblx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IFtcclxuXHRcdFx0XHRcIiM1OTRiYjlcIixcclxuXHRcdFx0XHRcIiNmMWFmMzJcIixcclxuXHRcdFx0XHRcIiM0Njg4ZWRcIixcclxuXHRcdFx0XHRcIiNlMDU2M2VcIixcclxuXHRcdFx0XHRcIiM4MDNhNjNcIixcclxuXHRcdFx0XHRcIiM2ZGQ4YjVcIixcclxuXHRcdFx0XHRcIiNlODcyMjVcIixcclxuXHRcdFx0XHRcIiNjNWRmNDJcIixcclxuXHRcdFx0XHRcIiNjNjQzN2RcIixcclxuXHRcdFx0XTtcclxuXHRcdH1cclxuXHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy5jb2x1bW5TcGFjaW5nID0gMC4xO1xyXG5cdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLmNvbHVtbldpZHRoID0gMC45O1xyXG5cdFx0aWYgKHR5cGUpIHtcclxuXHRcdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzID0ge1xyXG5cdFx0XHRcdHR5cGUsXHJcblx0XHRcdFx0Y29sdW1uU3BhY2luZzogMC4xLFxyXG5cdFx0XHRcdGNvbHVtbldpZHRoOiAwLjksXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbk1lbWJlckVkaXRvck9wZW4oYXJnczogYW55KTogdm9pZCB7XHJcblx0XHQvLyDkvaDlj6/ku6XlnKjov5nph4zmoLnmja7pnIDopoHkv67mlLlhcmdz5p2l6Ieq5a6a5LmJ6L+H5ruk56qX5Y+j55qE6KGM5Li6XHJcblx0XHQvLyAxMTI0NyDkuJPpl6jkuLppdGVtIGRhdGEgdHlwZeiAjOiuvue9rlxyXG5cdFx0aWYgKGFyZ3MuZmllbGROYW1lID09PSBcIkFjY291bnRUeXBlQ29kZVwiKSB7XHJcblx0XHRcdGxldCByZXMgPSBuZXcgQXJyYXkoNSkuZmlsbChudWxsKTtcclxuXHRcdFx0Y29uc3QgZmllbGRNZW1iZXJzID0gWy4uLmFyZ3MuZmllbGRNZW1iZXJzXTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSBmaWVsZE1lbWJlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSAtMTtcclxuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy5pdGVtRGF0YVR5cGVTb3J0QXJyLmZpbmQoKG5hbWUsIGluZCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGZpZWxkTWVtYmVyc1tpXS5hY3R1YWxUZXh0ID09PSBuYW1lKSB7XHJcblx0XHRcdFx0XHRcdGluZGV4ID0gaW5kO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuIGZpZWxkTWVtYmVyc1tpXS5hY3R1YWxUZXh0ID09PSBuYW1lO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGlmICghaXRlbSkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IGZpbGxJdGVtID0gZmllbGRNZW1iZXJzLnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRyZXNbaW5kZXhdID0gZmlsbEl0ZW1bMF07XHJcblx0XHRcdH1cclxuXHRcdFx0cmVzID0gcmVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSkgfHwgW107XHJcblx0XHRcdGFyZ3MuZmllbGRNZW1iZXJzID0gWy4uLnJlcywgLi4uZmllbGRNZW1iZXJzXTtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lLW1lbWJlci1lZGl0b3ItZGlhbG9nXCIpO1xyXG5cdFx0XHRcdGlmIChlbGUpIHtcclxuXHRcdFx0XHRcdGVsZS5xdWVyeVNlbGVjdG9yKFwiLmUtZmlsdGVyLXNvcnRcIikuc2V0QXR0cmlidXRlKFxyXG5cdFx0XHRcdFx0XHRcInN0eWxlXCIsXHJcblx0XHRcdFx0XHRcdFwiZGlzcGxheTogbm9uZVwiXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRiZWZvcmVFeHBvcnQoZXhwb3J0RGF0YSkge1xyXG5cdFx0aWYgKGV4cG9ydERhdGEpIHtcclxuXHRcdFx0Y29uc3Qga2V5TWFwID0ge307XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZVNldHRpbmdzLmZvcm1hdFNldHRpbmdzLmZvckVhY2goKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRkYXRhLmZvcm1hdCA9PT0gXCIjLCMjIywsLjA7KCMsIyMjLCwuMClcIiB8fFxyXG5cdFx0XHRcdFx0ZGF0YS5mb3JtYXQgPT09IFwiIywjIyMsLDsoIywjIyMsLClcIiB8fFxyXG5cdFx0XHRcdFx0ZGF0YS5mb3JtYXQgPT09IFwiIywjIyMsLC4wMDsoIywjIyMsLC4wMClcIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0a2V5TWFwW2RhdGEubmFtZV0gPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRleHBvcnREYXRhLmRhdGFDb2xsZWN0aW9ucyAmJlxyXG5cdFx0XHRcdGV4cG9ydERhdGEuZGF0YUNvbGxlY3Rpb25zLmxlbmd0aFxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRleHBvcnREYXRhLmRhdGFDb2xsZWN0aW9uc1swXS5mb3JFYWNoKChyb3cpID0+IHtcclxuXHRcdFx0XHRcdHJvdy5mb3JFYWNoKChjZWxsKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChrZXlNYXBbY2VsbC5hY3R1YWxUZXh0XSkge1xyXG5cdFx0XHRcdFx0XHRcdGNlbGwudmFsdWUgPSBjZWxsLmFjdHVhbFZhbHVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBnZXREYXRhKGNvbmZpZz86IGFueSkge1xyXG5cdFx0dGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0bGV0IGNvbHVtbnMgPSBbXTtcclxuXHRcdGxldCB2YWx1ZXMgPSBbXTtcclxuXHRcdGxldCBmb3JtYXRTZXR0aW5ncyA9IFtdO1xyXG5cdFx0bGV0IHJvd3MgPSBbXTtcclxuXHRcdGxldCBmaWVsZE1hcHBpbmcgPSBbXTtcclxuXHRcdC8vIOa4heepumdyYW5kVG90YWxz5ZKMc3ViVG90YWxzXHJcblx0XHR0aGlzLmdyYW5kVG90YWxzID0ge307XHJcblx0XHR0aGlzLnN1YlRvdGFscyA9IHt9O1xyXG5cdFx0dGhpcy5jb25maWcgPSBjb25maWdcclxuXHRcdFx0PyBKU09OLnBhcnNlKGNvbmZpZylcclxuXHRcdFx0OiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG5cclxuXHRcdGxldCB0eXBlID1cclxuXHRcdFx0dGhpcy5jb25maWcgJiZcclxuXHRcdFx0dGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3NcclxuXHRcdFx0XHQ/IHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy50eXBlXHJcblx0XHRcdFx0OiBudWxsO1xyXG5cdFx0aWYgKHR5cGUgJiYgdHlwZSA9PT0gXCJTdGFja2VkIENvbHVtblwiKSB7XHJcblx0XHRcdHR5cGUgPSBcIlN0YWNraW5nQ29sdW1uXCI7XHJcblx0XHR9XHJcblx0XHR0aGlzLmluaXRDaGFydFNldHRpbmcodHlwZSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuY29uZmlnLmZpZWxkcykge1xyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuZmllbGRzKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5QaXZvdF9EYXRhID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRSZXN1bHRCeURhdGFUYWJsZShcclxuXHRcdFx0dGhpcy5wb3J0bGV0LFxyXG5cdFx0XHRmYWxzZSxcclxuXHRcdFx0ZmFsc2UsXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkLmlkXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMub3JkZXJCeUNvbHVtbnMgPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmdldE9yZGVyQnlDb2x1bW5zTmV3KFxyXG5cdFx0XHR0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSxcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5QaXZvdF9EYXRhID0gRGF0YVV0aWwucGFyc2UucGFyc2VKc29uKHRoaXMuUGl2b3RfRGF0YSk7XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhICYmIHRoaXMuUGl2b3RfRGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuZ2V0ZXhjbHVkZUZpZWxkcyh0aGlzLmNvbmZpZ0ZpZWxkcywgdGhpcy5QaXZvdF9EYXRhWzBdKTtcclxuXHRcdFx0aWYgKCF0aGlzLmFsbG93ZWRDYWxjdWxhdGVkRmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdHRoaXMuYWxsb3dlZENhbGN1bGF0ZWRGaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLlBpdm90X0RhdGFbMF0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgdGhpcy5jb25maWdGaWVsZHMpIHtcclxuXHRcdFx0XHRmaWVsZE1hcHBpbmcucHVzaCh7XHJcblx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRjYXB0aW9uOiBpdGVtLmFkZHRpb25OYW1lXHJcblx0XHRcdFx0XHRcdD8gYCR7aXRlbS5sYW5nVmFsdWV9ICR7aXRlbS5hZGR0aW9uTmFtZX1gXHJcblx0XHRcdFx0XHRcdDogaXRlbS5sYW5nVmFsdWUsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTogaXRlbS5kYXRhVHlwZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuY29uZmlnRmllbGRzKSB7XHJcblx0XHRcdHRoaXMucGVyY2VudE51bUZpZWxkcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmZvcm1hdERhdGVzID0gW107XHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuaGdMaXN0ID0gW107XHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuZW1wdHlMaXN0ID0gW107XHJcblx0XHRcdHRoaXMubWlsbGlvbkZpZWxkcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcblx0XHRcdFx0Ly8gU01QMi0yNDg2ICYgcGVyY2VudE51beeahGZvcm1hdOmXrumimFxyXG5cdFx0XHRcdGlmIChlbC5kYXRhVHlwZSA9PSBcInBlcmNlbnROdW1cIikge1xyXG5cdFx0XHRcdFx0dGhpcy5wZXJjZW50TnVtRmllbGRzLnB1c2goZWwuY29sTmFtZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQgJiZcclxuXHRcdFx0XHRcdFsyLCA1LCA4LCAxMSwgMTQsIDE3XS5pbmNsdWRlcyhlbC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXQpXHJcblx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0dGhpcy56ZXJvRm9ybWF0RGF0YS5oZ0xpc3QucHVzaChlbC5jb2xOYW1lKTtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRlbC5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdGVsLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdGVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkICYmXHJcblx0XHRcdFx0XHRbMywgNiwgOSwgMTIsIDE1LCAxOF0uaW5jbHVkZXMoZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0KVxyXG5cdFx0XHRcdClcclxuXHRcdFx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuZW1wdHlMaXN0LnB1c2goZWwuY29sTmFtZSk7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRlbC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCAmJlxyXG5cdFx0XHRcdFx0WzEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRlbC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpXHJcblx0XHRcdFx0XHR0aGlzLm1pbGxpb25GaWVsZHMucHVzaChlbC5jb2xOYW1lKTtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRlbC5kYXRhVHlwZSA9PT0gXCJudW1iZXJcIiAmJlxyXG5cdFx0XHRcdFx0KCFlbC5mb3JtYXQgfHxcclxuXHRcdFx0XHRcdFx0KGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdGVsLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHQhZWwuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQpKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0Ly9TTVAyLTMwMjYgYW5kIFNNUDItMzA1OVxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6XHJcblx0XHRcdFx0XHRcdFx0ZWwuY29sTmFtZSAhPT0gXCJQb3J0SW52U3RrXCIgJiZcclxuXHRcdFx0XHRcdFx0XHRlbC5jb2xOYW1lICE9PSBcIlBvcnRGZEludlN0a1wiXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsLmRwXHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHRcdDogXCIjIzAuIyMjIyMjIzBcIixcclxuXHRcdFx0XHRcdFx0dXNlR3JvdXBpbmc6IHRydWUsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0KGVsLmRhdGFUeXBlID09PSBcInBlcmNlbnRcIiB8fFxyXG5cdFx0XHRcdFx0XHRlbC5kYXRhVHlwZSA9PT0gXCJwZXJjZW50TnVtXCIpICYmXHJcblx0XHRcdFx0XHQoIWVsLmZvcm1hdCB8fFxyXG5cdFx0XHRcdFx0XHQoZWwuZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ZWwuZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0XHRcdCFlbC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCkpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRjb25zdCBmb3JtYXREYXRhID0ge1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBlbC5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRlbC5kcFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVsLmRhdGFUeXBlID09PSBcIm11bHRpcGxlXCIgJiZcclxuXHRcdFx0XHRcdCghZWwuZm9ybWF0IHx8XHJcblx0XHRcdFx0XHRcdChlbC5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0IWVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkKSlcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGNvbnN0IGZvcm1hdERhdGEgPSB7XHJcblx0XHRcdFx0XHRcdG5hbWU6IGVsLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGZvcm1hdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRlbC5kcFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChlbC5kYXRhVHlwZSA9PT0gXCJkYXRldGltZVwiIHx8IGVsLmRhdGFUeXBlID09PSBcImRhdGVcIikge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm1hdCA9IFwiXCI7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGVsLmZvcm1hdFswXS5kYXRlVHlwZSA9PSBcIlF1YXJ0ZXJcIikge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBmb3JtYXRfID0gZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgZm9ybWF0SW5mbyA9IHRoaXMucXVhcnRlckZvcm1hdC5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0XHQocXVyKSA9PiBxdXIudmFsdWUgPT0gZm9ybWF0X1xyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGZvcm1hdEluZm8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBmb3JtYXRJbmZvWzBdLmZvcm1hdDtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBmb3JtYXRfLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmZvcm1hdERhdGVzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGVsLmZvcm1hdFswXS5kYXRlVHlwZSA9PSBcIkRhdGVcIikge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBmcm9tSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcIihcIik7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHRvSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcIilcIik7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZvcm1hdF8gPVxyXG5cdFx0XHRcdFx0XHRcdFx0ZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheS5zbGljZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbUlkeCArIDEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRvSWR4XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoZm9ybWF0Xykge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkREL01NL1lZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC9NTS95eXl5XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkREL01NL1lZXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwiZGQvTU0veXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0vREQvWVlZWVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcIk1NL2RkL3l5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0vREQvWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTS9kZC95eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJZWVlZLU1NLUREXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwieXl5eS1NTS1kZFwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJZWS1NTS1ERFwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcInl5LU1NLWRkXCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkRELU1NLVlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC1NTS15eXl5XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkRELU1NLVlZXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwiZGQtTU0teXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0tREQtWVlZWVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcIk1NLWRkLXl5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0tREQtWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTS1kZC15eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJNTU0gREQsIFlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTU0gZGQsIHl5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiREQtTU1NLVlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC1NTU0teXl5eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKCFmb3JtYXQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBlbC5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdDogdGhpcy5kYXRlUGlwZUZvcm1hdCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGZvcm1hdERhdGEgPSB7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6IGZvcm1hdCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0Ly9jYWxjdWxhdGVkRmllbGRTZXR0aW5ncyBmb3JtYXQgcHVzaCB0byBmb3JtYXRTZXR0aW5nc1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jYWxjdWxhdGVkRmllbGRTZXR0aW5ncyAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jYWxjdWxhdGVkRmllbGRTZXR0aW5ncy5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy5jb25maWcuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MubWFwKChlbCkgPT4ge1xyXG5cdFx0XHRcdGlmIChlbC5mb3JtYXRTdHJpbmcgIT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBlbC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6IGVsLmZvcm1hdFN0cmluZyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRsZXQgc2VyaWVzID0gdGhpcy5jb25maWcueWF4aXMuc2VyaWVzO1xyXG5cdFx0aWYgKHNlcmllcykge1xyXG5cdFx0XHRmb3IgKGxldCBpdGVtIG9mIHNlcmllcykge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogaXRlbS5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0Y2FwdGlvbjogaXRlbS50aXRsZSxcclxuXHRcdFx0XHRcdHR5cGU6IGl0ZW0uY2FsTWV0aG9kLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgZ3JvdXBzID0gdGhpcy5jb25maWcueGF4aXMuZ3JvdXBzO1xyXG5cdFx0aWYgKGdyb3Vwcykge1xyXG5cdFx0XHRmb3IgKGxldCBnaXRlbSBvZiBncm91cHMpIHtcclxuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZ2l0ZW0ubmFtZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdGdpdGVtLnNob3dTdWJUb3RhbHMgPSBmaWVsZFswXS5zaG93U3ViVG90YWxzO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyb3dzLnB1c2goZ2l0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5jb25maWcuY29sdW1uR3JvdXAgJiYgdGhpcy5jb25maWcuY29sdW1uR3JvdXAubGVuZ3RoKSB7XHJcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgdGhpcy5jb25maWcuY29sdW1uR3JvdXApIHtcclxuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gaXRlbS5uYW1lXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoZmllbGQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aXRlbS5zaG93U3ViVG90YWxzID0gZmllbGRbMF0uc2hvd1N1YlRvdGFscztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29sdW1ucy5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyA9IFtdO1xyXG5cdFx0dGhpcy5jb25maWdGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHRcdFx0aWYgKGZpZWxkLmZvcm1hdCAmJiBmaWVsZC5mb3JtYXQubGVuZ3RoKSB7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmZvcm1hdFswXS5mb250U2V0dGluZ0NoZWNrZWQpIHtcclxuXHRcdFx0XHRcdGxldCBjb25kaXRpb25hbEZvcm1hdE9iaiA9IHtcclxuXHRcdFx0XHRcdFx0YXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0bWVhc3VyZTogXCJcIixcclxuXHRcdFx0XHRcdFx0dmFsdWUxOiBudWxsLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTI6IG51bGwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbnM6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHN0eWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGZvbnRGYW1pbHk6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0bGV0IG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaiA9IHtcclxuXHRcdFx0XHRcdFx0YXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0bWVhc3VyZTogXCJcIixcclxuXHRcdFx0XHRcdFx0dmFsdWUxOiBudWxsLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTI6IG51bGwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbnM6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHN0eWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGZvbnRGYW1pbHk6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Ly8gZm9udCBzZXR0aW5nIHN0YXJ0XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoubWVhc3VyZSA9XHJcblx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoubWVhc3VyZSA9XHJcblx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQgJiZcclxuXHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmNvbXBhcmVTZWxlY3RcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldENvbXBhcmVDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRkZWxldGUgY29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRkZWxldGUgbmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMjtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MucHVzaChuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmopO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncy51bnNoaWZ0KGNvbmRpdGlvbmFsRm9ybWF0T2JqKTtcclxuXHRcdFx0XHRcdC8vIGZvbnQgc2V0dGluZyBlbmRcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGV0IGZvcm1hdFNldHRpbmdzT2JqID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogXCJcIixcclxuXHRcdFx0XHRcdGZvcm1hdDogXCJcIixcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCkge1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmoubmFtZSA9IGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmouZm9ybWF0ID1cclxuXHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0c3dpdGNoIChmaWVsZC5mb3JtYXRbMF0uZGF0YVR5cGUpIHtcclxuXHRcdFx0XHRcdFx0Y2FzZSBcIm51bWJlclwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0Y2FzZSBcImludGVnZXJcIjpcclxuXHRcdFx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iai5mb3JtYXQgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0SW50ZWdlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIFwicGVyY2VudE51bVwiOlxyXG5cdFx0XHRcdFx0XHRjYXNlIFwicGVyY2VudFwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgXCJtdWx0aXBsZVwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIFwiZGF0ZVwiOlxyXG5cdFx0XHRcdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcclxuXHRcdFx0XHRcdFx0XHRsZXQgZm9ybWF0ID0gXCJcIjtcclxuXHRcdFx0XHRcdFx0XHRpZiAoZmllbGQuZm9ybWF0ICYmIGZpZWxkLmZvcm1hdC5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRbMF0uZGF0ZVR5cGUgPT0gXCJRdWFydGVyXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXREaXNwbGF5O1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmaWVsZC5mb3JtYXRbMF0uZGF0ZVR5cGUgPT0gXCJEYXRlXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGZyb21JZHggPVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiKFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHRvSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXREaXNwbGF5LmluZGV4T2YoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIilcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheS5zbGljZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb21JZHggKyAxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9JZHhcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpZiAoZm9ybWF0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iaiA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogZmllbGQuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGZpZWxkLmRhdGFUeXBlID0gXCJzdHJpbmdcIjtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmouZm9ybWF0ID0gdGhpcy5kYXRlUGlwZUZvcm1hdDtcclxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqW1widHlwZVwiXSA9IFwiZGF0ZVwiO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmRhdGFUeXBlICE9PSBcInN0cmluZ1wiICYmXHJcblx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iai5mb3JtYXRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0U2V0dGluZ3NPYmopO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMgPSB0aGlzLmNvbmZpZy5jdXN0b21DYWxjdWxhdGVkRmllbGRzXHJcblx0XHRcdD8gdGhpcy5jb25maWcuY3VzdG9tQ2FsY3VsYXRlZEZpZWxkc1xyXG5cdFx0XHQ6IFtdO1xyXG5cclxuXHRcdC8vIFNNUDItNDU4MiBBR0lDIC0gRGFzaGJvYXJkIGl0ZW0gc2VxdWVuY2VcclxuXHRcdGxldCBpc0V4aXN0U2VxID0gZmFsc2U7XHJcblx0XHRsZXQgc29ydFNldHRpbmdzID0gdGhpcy5jb25maWcuc29ydFNldHRpbmdzIHx8IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLlBpdm90X0RhdGEgJiZcclxuXHRcdFx0dGhpcy5QaXZvdF9EYXRhWzBdICYmXHJcblx0XHRcdHRoaXMuUGl2b3RfRGF0YVswXS5TZXEgIT09IG51bGxcclxuXHRcdCkge1xyXG5cdFx0XHQvLyDlj5bmtohOYW1l55qE6buY6K6k5o6S5bqP77yM5qC55o2uU2Vx5p2l5o6S5bqPXHJcblx0XHRcdHNvcnRTZXR0aW5ncy5wdXNoKHsgbmFtZTogXCJOYW1lXCIsIG9yZGVyOiBcIk5vbmVcIiB9KTtcclxuXHRcdFx0aXNFeGlzdFNlcSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRsZXQgZmlsdGVyU2V0dGluZ3MgPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmNoZWNrRmlsdGVyU2V0dGluZ3MoXHJcblx0XHRcdHRoaXMuY29uZmlnLFxyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcyxcclxuXHRcdFx0dGhpcy5QaXZvdF9EYXRhXHJcblx0XHQpO1xyXG5cdFx0bGV0IG5hbWVGaWx0ZXIgPSBmaWx0ZXJTZXR0aW5ncy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IFwiTmFtZVwiKTtcclxuXHRcdC8vIOWtmOWcqCBOYW1l55qEZmlsdGVy5pe277yM5Lya5oyJ54Wn6buY6K6k5o6S5bqP77yM6ZyA6KaB5a+5TmFtZei/m+ihjFNlceaOkuW6j+WkhOeQhlxyXG5cdFx0aWYgKGlzRXhpc3RTZXEgJiYgbmFtZUZpbHRlciAmJiByb3dzLnNvbWUoKHgpID0+IHgubmFtZSA9PT0gXCJOYW1lXCIpKSB7XHJcblx0XHRcdGxldCBpdGVtcyA9IG5hbWVGaWx0ZXIuaXRlbXM7IC8vIOaLv+WIsOW9k+WJjeaOkuW6j++8jOm7mOiupEEtWlxyXG5cdFx0XHRsZXQgc2VxQXJyID0gW107XHJcblx0XHRcdGl0ZW1zLmZvckVhY2goKG5hbWUpID0+IHtcclxuXHRcdFx0XHRsZXQgb2JqID0gdGhpcy5QaXZvdF9EYXRhLmZpbmQoKHgpID0+IHguTmFtZSA9PT0gbmFtZSk7XHJcblx0XHRcdFx0bGV0IGl0ZW06IGFueSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IG5hbWUsXHJcblx0XHRcdFx0XHRzZXE6IG9iai5TZXEsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRzZXFBcnIucHVzaChpdGVtKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHNlcUFyci5zb3J0KChhLCBiKSA9PiBhLnNlcSAtIGIuc2VxKTtcclxuXHRcdFx0bmFtZUZpbHRlci5pdGVtcyA9IHNlcUFyci5tYXAoKHgpID0+IHgubmFtZSk7XHJcblx0XHR9XHJcblx0XHRsZXQgaGFzSXRlbURhdGFUeXBlID0gZmFsc2U7XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhKSB7XHJcblx0XHRcdHRoaXMuUGl2b3RfRGF0YS5tYXAoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YVtcIkFjY291bnRUeXBlQ29kZVwiXSkge1xyXG5cdFx0XHRcdFx0aGFzSXRlbURhdGFUeXBlID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuXHRcdFx0XHRcdGlmIChkYXRhW3Jvdy5uYW1lXSA9PT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHRkYXRhW3Jvdy5uYW1lXSA9IFwibnVsbFwiO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGlmIChoYXNJdGVtRGF0YVR5cGUpIHtcclxuXHRcdFx0c29ydFNldHRpbmdzLnB1c2goe1xyXG5cdFx0XHRcdG5hbWU6IFwiQWNjb3VudFR5cGVDb2RlXCIsXHJcblx0XHRcdFx0b3JkZXI6IFwiQXNjZW5kaW5nXCIsXHJcblx0XHRcdFx0bWVtYmVyc09yZGVyOiBbLi4udGhpcy5pdGVtRGF0YVR5cGVTb3J0QXJyXSxcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmRhdGFTb3VyY2VTZXR0aW5ncyA9IHtcclxuXHRcdFx0ZGF0YVNvdXJjZTogdGhpcy5QaXZvdF9EYXRhLFxyXG5cdFx0XHRyb3dzOiByb3dzLFxyXG5cdFx0XHRjb2x1bW5zOiBjb2x1bW5zLFxyXG5cdFx0XHR2YWx1ZXM6IHZhbHVlcyxcclxuXHRcdFx0ZmlsdGVyczogdGhpcy5jb25maWcuZmlsdGVycyxcclxuXHRcdFx0ZmlsdGVyU2V0dGluZ3M6IGZpbHRlclNldHRpbmdzLFxyXG5cdFx0XHRleGNsdWRlRmllbGRzOiB0aGlzLmV4Y2x1ZGVGaWVsZHMsXHJcblx0XHRcdGZvcm1hdFNldHRpbmdzOiBmb3JtYXRTZXR0aW5ncyxcclxuXHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nczogY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyxcclxuXHRcdFx0ZXhwYW5kQWxsOiB0cnVlLFxyXG5cdFx0XHRlbmFibGVTb3J0aW5nOiB0cnVlLFxyXG5cdFx0XHRmaWVsZE1hcHBpbmc6IGZpZWxkTWFwcGluZyxcclxuXHRcdFx0Y2FsY3VsYXRlZEZpZWxkU2V0dGluZ3M6IHRoaXMuY29uZmlnLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzLFxyXG5cdFx0XHRzb3J0U2V0dGluZ3M6IHNvcnRTZXR0aW5ncyxcclxuXHRcdFx0dmFsdWVTb3J0U2V0dGluZ3M6IHRoaXMuY29uZmlnLnZhbHVlU29ydFNldHRpbmdzLFxyXG5cdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0c2hvd1Jvd0dyYW5kVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Um93R3JhbmRUb3RhbHMsXHJcblx0XHRcdHNob3dDb2x1bW5HcmFuZFRvdGFsczogdGhpcy5jb25maWcuc2hvd0NvbHVtbkdyYW5kVG90YWxzLFxyXG5cdFx0XHRzaG93U3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzLFxyXG5cdFx0XHRzaG93Um93U3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzLFxyXG5cdFx0XHRzaG93Q29sdW1uU3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzLFxyXG5cdFx0fTtcclxuXHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBhZnRlclBvcHVsYXRlKGFyZ3M6IEVuZ2luZVBvcHVsYXRlZEV2ZW50QXJncyk6IHZvaWQge1xyXG5cdFx0dGhpcy50ZW1wU3VidG90YWxzID0gW107XHJcblx0XHR0aGlzLmdyYW5kVG90YWxzID0ge307XHJcblx0XHR0aGlzLnN1YlRvdGFscyA9IHt9O1xyXG5cdFx0bGV0IHRlbXBzaG93QXJyYXkgPSBbXTtcclxuXHRcdHRoaXMuY29uZmlnLnlheGlzLnNlcmllcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRpdGVtLmhhc093blByb3BlcnR5KFwic2hvd1N1YlRvdGFsc1wiKSAmJlxyXG5cdFx0XHRcdGl0ZW0uaGFzT3duUHJvcGVydHkoXCJzaG93R3JhbmRUb3RhbHNcIilcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGVtcHNob3dBcnJheS5wdXNoKHtcclxuXHRcdFx0XHRcdG5hbWU6IGl0ZW0uY29sTmFtZSxcclxuXHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRzaG93U3ViVG90YWxzOiBpdGVtLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IGl0ZW0uc2hvd0dyYW5kVG90YWxzLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KFwic2hvd0dyYW5kVG90YWxzXCIpKSB7XHJcblx0XHRcdFx0XHR0ZW1wc2hvd0FycmF5LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRcdHNob3dHcmFuZFRvdGFsczogaXRlbS5zaG93R3JhbmRUb3RhbHMsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoXCJzaG93U3ViVG90YWxzXCIpKSB7XHJcblx0XHRcdFx0XHR0ZW1wc2hvd0FycmF5LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IGl0ZW0uc2hvd1N1YlRvdGFscyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqICYmIHRoaXMucGl2b3RPYmopIHtcclxuXHRcdFx0dGhpcy5jb25maWcuY29sdW1uR3JvdXAgPSBbXTtcclxuXHRcdFx0dGhpcy5jb25maWcueGF4aXMuZ3JvdXBzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLnlheGlzLnNlcmllcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5maWx0ZXJzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLmZpbHRlclNldHRpbmdzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzID0gW107XHJcblx0XHRcdGxldCBncm91cFNldHRpbmdzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiZ3JvdXBTZXR0aW5nc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBjb2x1bW5zID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiY29sdW1uc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCByb3dzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwicm93c1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBmaWx0ZXJzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiZmlsdGVyc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBmaWx0ZXJTZXR0aW5ncyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcImZpbHRlclNldHRpbmdzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0bGV0IHZhbHVlcyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcInZhbHVlc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBzb3J0U2V0dGluZ3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJzb3J0U2V0dGluZ3NcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJjYWxjdWxhdGVkRmllbGRTZXR0aW5nc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChncm91cFNldHRpbmdzLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcblx0XHRcdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0bmFtZTogY29sdW1uLm5hbWUsXHJcblx0XHRcdFx0XHRcdGNhcHRpb246IGNvbHVtbi5jYXB0aW9uLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8vSWYgdGhlcmUgaXMgYSBncm91cCwgZmlyc3QgZmlsdGVyIHRoZSBjb2x1bW5zIG9mIHRoZSBncm91cCBmaWVsZCwgYW5kIHRoZW4gb25seSBzYXZlIHRoZSBsYXN0IG9uZVxyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRpZiAoIXN0YXJ0c1dpdGgoY29sdW1uLm5hbWUsIGdyb3VwU2V0dGluZ3NbMF0ubmFtZSArIFwiX1wiKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBjb2x1bW4ubmFtZSxcclxuXHRcdFx0XHRcdFx0XHRjYXB0aW9uOlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLm5hbWUgPT09IGdyb3VwU2V0dGluZ3NbMF0ubmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IFwiXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjb2x1bW4uY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAobGV0IHJvdyBvZiByb3dzKSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcueGF4aXMuZ3JvdXBzLnB1c2goe1xyXG5cdFx0XHRcdFx0bmFtZTogcm93Lm5hbWUsXHJcblx0XHRcdFx0XHRjYXB0aW9uOiByb3cuY2FwdGlvbixcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG5cdFx0XHRcdHRoaXMuY29uZmlnLmZpbHRlcnMucHVzaCh7XHJcblx0XHRcdFx0XHRuYW1lOiBmaWx0ZXIubmFtZSxcclxuXHRcdFx0XHRcdGNhcHRpb246IGZpbHRlci5jYXB0aW9uLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclNldHRpbmdzICYmIHRoaXMuZmlsdGVyU2V0dGluZ3MubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLmZpbHRlclNldHRpbmdzID0gdGhpcy5maWx0ZXJTZXR0aW5ncztcclxuXHRcdFx0XHR0aGlzLmNvbmZpZy5maWx0ZXJTZXR0aW5ncyA9IHRoaXMuZmlsdGVyU2V0dGluZ3M7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMuZmlsdGVyU2V0dGluZ3M7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuZmlsdGVyU2V0dGluZ3MgPSBmaWx0ZXJTZXR0aW5ncztcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcclxuXHRcdFx0XHRsZXQgc2VyaWVzRGF0YTtcclxuXHRcdFx0XHRsZXQgdGVtcFNob3dPYmo7XHJcblx0XHRcdFx0bGV0IGZpbHRlclRlbXBzaG93QXJyYXkgPSBbXTtcclxuXHRcdFx0XHRpZiAodGVtcHNob3dBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGZpbHRlclRlbXBzaG93QXJyYXkgPSB0ZW1wc2hvd0FycmF5LmZpbHRlcihcclxuXHRcdFx0XHRcdFx0KGl0ZW0pID0+XHJcblx0XHRcdFx0XHRcdFx0aXRlbS5uYW1lID09PSB2YWx1ZS5uYW1lICYmXHJcblx0XHRcdFx0XHRcdFx0aXRlbS5jYWxNZXRob2QgPT09IHZhbHVlLnR5cGVcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRpZiAoZmlsdGVyVGVtcHNob3dBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0dGVtcFNob3dPYmogPSBmaWx0ZXJUZW1wc2hvd0FycmF5WzBdO1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0dGVtcFNob3dPYmouaGFzT3duUHJvcGVydHkoXCJzaG93U3ViVG90YWxzXCIpICYmXHJcblx0XHRcdFx0XHRcdFx0dGVtcFNob3dPYmouaGFzT3duUHJvcGVydHkoXCJzaG93R3JhbmRUb3RhbHNcIilcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0c2VyaWVzRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRjYWxNZXRob2Q6IHZhbHVlLnR5cGUsXHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdmFsdWUuY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0ZW1wU2hvd09iai5oYXNPd25Qcm9wZXJ0eShcInNob3dHcmFuZFRvdGFsc1wiKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0c2VyaWVzRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sTmFtZTogdmFsdWUubmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FsTWV0aG9kOiB2YWx1ZS50eXBlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdmFsdWUuY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0dyYW5kVG90YWxzOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRlbXBTaG93T2JqLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmICh0ZW1wU2hvd09iai5oYXNPd25Qcm9wZXJ0eShcInNob3dTdWJUb3RhbHNcIikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHNlcmllc0RhdGEgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNhbE1ldGhvZDogdmFsdWUudHlwZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHZhbHVlLmNhcHRpb24sXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoIXNlcmllc0RhdGEpIHtcclxuXHRcdFx0XHRcdHNlcmllc0RhdGEgPSB7XHJcblx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdHRpdGxlOiB2YWx1ZS5jYXB0aW9uLFxyXG5cdFx0XHRcdFx0XHRjYWxNZXRob2Q6IHZhbHVlLnR5cGUsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMucHVzaChzZXJpZXNEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBjYWxjdWxhdGUgb2YgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MpIHtcclxuXHRcdFx0XHRjb25zdCBjYWxjdWxhdGVEYXRhID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogY2FsY3VsYXRlLm5hbWUsXHJcblx0XHRcdFx0XHRmb3JtdWxhOiBjYWxjdWxhdGUuZm9ybXVsYSxcclxuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzpcclxuXHRcdFx0XHRcdFx0Y2FsY3VsYXRlLmZvcm1hdFN0cmluZyA9PT0gXCJcIlxyXG5cdFx0XHRcdFx0XHRcdD8gXCJOMlwiXHJcblx0XHRcdFx0XHRcdFx0OiBjYWxjdWxhdGUuZm9ybWF0U3RyaW5nLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dGhpcy5jb25maWcuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MucHVzaChjYWxjdWxhdGVEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jdXN0b21DYWxjdWxhdGVkRmllbGRzID0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5zb3J0U2V0dGluZ3MgPSBzb3J0U2V0dGluZ3M7XHJcblx0XHRcdHRoaXMuY29uZmlnLmdyb3VwU2V0dGluZ3MgPSBncm91cFNldHRpbmdzO1xyXG5cdFx0XHR0aGlzLmZpZWxkbGlzdE9iai51cGRhdGVWaWV3KHRoaXMucGl2b3RPYmopO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdC8vcmVtb3ZlIHRoZSBzb3J0XHJcblx0XHRpZiAodGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc29ydFNldHRpbmdzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5wcmV2aW91c1NvcnQgPSB0aGlzLmZpZWxkbGlzdE9iai5sYXN0U29ydEluZm87XHJcblx0XHRcdCh0aGlzLmZpZWxkbGlzdE9iaiBhcyBhbnkpLmxhc3RTb3J0SW5mbyA9IFtdO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGFmdGVyRW5naW5lUG9wdWxhdGUoYXJnczogYW55KSB7XHJcblx0XHRpZiAoIUJyb3dzZXIuaXNEZXZpY2UgJiYgdGhpcy5maWVsZGxpc3RPYmogJiYgdGhpcy5waXZvdE9iaikge1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5ncm91cFNldHRpbmdzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmosXHJcblx0XHRcdFx0XCJncm91cFNldHRpbmdzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0Ly8gdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqKSB0aGlzLmZpZWxkbGlzdE9iai51cGRhdGUodGhpcy5waXZvdE9iaik7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhICYmIHRoaXMuUGl2b3RfRGF0YS5sZW5ndGgpIHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5lbmdpbmVQb3B1bGF0ZWQoYXJncyk7XHJcblx0XHRcdH0sIDE1MDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKG9iaiwga2V5KSB7XHJcblx0XHRsZXQgcHJvcCA9IG51bGw7XHJcblx0XHRpZiAob2JqICYmIG9iai5kYXRhU291cmNlU2V0dGluZ3MpIHtcclxuXHRcdFx0cHJvcCA9IG9iai5kYXRhU291cmNlU2V0dGluZ3Nba2V5XTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9wKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiICYmXHJcblx0XHRcdFx0cHJvcC5sZW5ndGggPiAwXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdHByb3AgPSBwcm9wLm1hcCgoaXRlbSkgPT4gaXRlbS5wcm9wZXJ0aWVzIHx8IGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcHJvcDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBlbmdpbmVQb3B1bGF0aW5nKGFyZ3MpIHtcclxuXHRcdHRoaXMuZ3JhbmRUb3RhbHMgPSB7fTtcclxuXHRcdHRoaXMuc3ViVG90YWxzID0ge307XHJcblx0XHR0aGlzLmFsbERhdGFWYWx1ZSA9IFtdO1xyXG5cdFx0aWYgKGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5ncy5sZW5ndGgpIHtcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgaSA9IDA7XHJcblx0XHRcdFx0aSA8IGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5ncy5sZW5ndGg7XHJcblx0XHRcdFx0aSsrXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mbyAmJlxyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoubGFzdFNvcnRJbmZvLm5hbWUgPT09XHJcblx0XHRcdFx0XHRcdGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5nc1tpXS5uYW1lICYmXHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iai5sYXN0U29ydEluZm8ub3JkZXIgPT09IFwiQXNjZW5kaW5nXCIgJiZcclxuXHRcdFx0XHRcdCEoXHJcblx0XHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mby5uYW1lID09PVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm5hbWUgJiZcclxuXHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91c1NvcnQub3JkZXIgPT09IFwiTm9uZVwiXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5zb3J0U2V0dGluZ3NbaV0ub3JkZXIgPSBcIk5vbmVcIjtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5wcmV2aW91c1NvcnQgJiZcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mbyAmJlxyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoubGFzdFNvcnRJbmZvLm5hbWUgPT09XHJcblx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm5hbWUgJiZcclxuXHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm9yZGVyID09PSBcIkFzY2VuZGluZ1wiXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5zb3J0U2V0dGluZ3NbaV0ub3JkZXIgPSBcIkFzY2VuZGluZ1wiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGNlbGxDbGljayhhcmdzKSB7XHJcblx0XHQvLyDmuIXpmaTmjpLluo9cclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3Muc29ydE9yZGVyICYmXHJcblx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnZhbHVlU29ydFNldHRpbmdzLmhlYWRlclRleHQgJiZcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3Muc29ydE9yZGVyID09PVxyXG5cdFx0XHRcdFwiRGVzY2VuZGluZ1wiICYmXHJcblx0XHRcdGFyZ3MuZGF0YS52YWx1ZVNvcnQgJiZcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3MuaGVhZGVyVGV4dCA9PT1cclxuXHRcdFx0XHRhcmdzLmRhdGEudmFsdWVTb3J0LmxldmVsTmFtZVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouc2V0UHJvcGVydGllcyhcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHRkYXRhU291cmNlU2V0dGluZ3M6IHtcclxuXHRcdFx0XHRcdFx0dmFsdWVTb3J0U2V0dGluZ3M6IHtcclxuXHRcdFx0XHRcdFx0XHRzb3J0T3JkZXI6IFwiRGVzY2VuZGluZ1wiLFxyXG5cdFx0XHRcdFx0XHRcdGhlYWRlclRleHQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0dHJ1ZVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy52YWx1ZVNvcnRTZXR0aW5ncyA9IHt9O1xyXG5cdFx0XHR0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGRhdGFCb3VuZChlKSB7XHJcblx0XHRpZiAodGhpcy5pc0luaXQpIHtcclxuXHRcdFx0dGhpcy5pc0luaXQgPSBmYWxzZTtcclxuXHRcdH1cclxuXHRcdHRoaXMuZ3JhbmRUb3RhbHMgPSB7fTtcclxuXHRcdHRoaXMuc3ViVG90YWxzID0ge307XHJcblx0XHRpZiAodGhpcy5waXZvdE9iai5ncmlkKSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouZ3JpZC5yZXNpemVTdG9wID0gdGhpcy5yZXNpemVTdG9wLmJpbmQodGhpcyk7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqICYmXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLnBpdm90QnV0dG9uTW9kdWxlICYmXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLnBpdm90QnV0dG9uTW9kdWxlLm1lbnVPcHRpb25cclxuXHRcdCkge1xyXG5cdFx0XHQoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoucGl2b3RCdXR0b25Nb2R1bGUubWVudU9wdGlvbiBhcyBhbnlcclxuXHRcdFx0KS5zdHJpbmdBZ2dyZWdhdGVUeXBlcyA9IFtcclxuXHRcdFx0XHRcIkNvdW50XCIsXHJcblx0XHRcdFx0XCJEaXN0aW5jdENvdW50XCIsXHJcblx0XHRcdFx0XCJGaXJzdFwiLFxyXG5cdFx0XHRcdFwiTGFzdFwiLFxyXG5cdFx0XHRdO1xyXG5cdFx0fVxyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLnBpdm90QnV0dG9uTW9kdWxlICYmXHJcblx0XHRcdHRoaXMucGl2b3RPYmoucGl2b3RCdXR0b25Nb2R1bGUubWVudU9wdGlvblxyXG5cdFx0KSB7XHJcblx0XHRcdChcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLnBpdm90QnV0dG9uTW9kdWxlLm1lbnVPcHRpb24gYXMgYW55XHJcblx0XHRcdCkuc3RyaW5nQWdncmVnYXRlVHlwZXMgPSBbXHJcblx0XHRcdFx0XCJDb3VudFwiLFxyXG5cdFx0XHRcdFwiRGlzdGluY3RDb3VudFwiLFxyXG5cdFx0XHRcdFwiRmlyc3RcIixcclxuXHRcdFx0XHRcIkxhc3RcIixcclxuXHRcdFx0XTtcclxuXHRcdH1cclxuXHRcdGxldCBhbGxTdW1tYXJ5VHlwZSA9IEFMTF9BR0dSRUdBVEVfVFlQRVMgYXMgYW55O1xyXG5cdFx0dGhpcy5waXZvdE9iai5nZXRBbGxTdW1tYXJ5VHlwZSA9ICgpID0+IGFsbFN1bW1hcnlUeXBlO1xyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqKSB7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmFnZ3JlZ2F0ZVR5cGVzID0gYWxsU3VtbWFyeVR5cGU7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmdldEFsbFN1bW1hcnlUeXBlID0gKCkgPT4gYWxsU3VtbWFyeVR5cGU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhbGN1bGF0ZWRDZWxsU2V0cyhhcmdzLCBjdXJGaWVsZHMpIHtcclxuXHRcdGxldCBtYXRjaEZpZWxkcyA9IGN1ckZpZWxkc1tcIm1hdGNoRmllbGRzXCJdO1xyXG5cdFx0bGV0IGZvcm11bGEgPSBjdXJGaWVsZHNbXCJmb3JtdWxhXCJdO1xyXG5cdFx0bGV0IHZhbHVlID0gMDtcclxuXHRcdGxldCByb3dzID0gdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Mucm93cztcclxuXHRcdGxldCBpbnZhbGlkVHlwZXMgPSBbXCJzdHJpbmdcIiwgXCJudmFyY2hhclwiLCBcImRhdGVcIiwgXCJkYXRldGltZVwiXTtcclxuXHRcdGxldCBpc0ludmFsaWQgPSBtYXRjaEZpZWxkcy5zb21lKChmKSA9PlxyXG5cdFx0XHRpbnZhbGlkVHlwZXMuaW5jbHVkZXMoXHJcblx0XHRcdFx0dGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZi5tYXRjaFdvcmQpWzBdW1xyXG5cdFx0XHRcdFx0XCJkYXRhVHlwZVwiXHJcblx0XHRcdFx0XVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdFx0bGV0IGN1cnJlbnRyb3dDZWxsVHlwZSA9IGFyZ3Mucm93Q2VsbFR5cGU7XHJcblx0XHRpZiAoaXNJbnZhbGlkKSByZXR1cm4gXCItXCI7XHJcblx0XHRpZiAoXHJcblx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIiB8fFxyXG5cdFx0XHRhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBjaGlsZEhlYWRlcnMgPSBbXTtcclxuXHRcdFx0bGV0IHN1bSA9IDA7XHJcblx0XHRcdGxldCBjbG9uZUNlbGxTZXRzID0gY2xvbmVEZWVwKGFyZ3MuY2VsbFNldHMpO1xyXG5cdFx0XHRsZXQgZ3JvdXBOYW1lQXJyYXlzID0gW107XHJcblx0XHRcdGZvciAobGV0IGluZGV4ID0gYXJncy5yb3cubGV2ZWw7IGluZGV4IDwgcm93cy5sZW5ndGg7IGluZGV4KyspIHtcclxuXHRcdFx0XHRncm91cE5hbWVBcnJheXMucHVzaChyb3dzW2luZGV4XS5uYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNsb25lQ2VsbFNldHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0bGV0IGhlYWRlciA9IGdyb3VwTmFtZUFycmF5c1xyXG5cdFx0XHRcdFx0Lm1hcCgobmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChjbG9uZUNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGNsb25lQ2VsbFNldHNbaV1bbmFtZV07XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdGlmICghKGNoaWxkSGVhZGVycyBhcyBhbnkpLmluY2x1ZGVzKGhlYWRlcikpIHtcclxuXHRcdFx0XHRcdGNoaWxkSGVhZGVycy5wdXNoKGhlYWRlcik7XHJcblx0XHRcdFx0XHRsZXQgZmlsdGVyT2JqOiBhbnkgPSB7fTtcclxuXHRcdFx0XHRcdGdyb3VwTmFtZUFycmF5cy5tYXAoXHJcblx0XHRcdFx0XHRcdChuYW1lLCBpKSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW2ldKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGFyZ3MuY2VsbFNldHMgPSBfZmlsdGVyKGNsb25lQ2VsbFNldHMsIGZpbHRlck9iaik7XHJcblx0XHRcdFx0XHRhcmdzLnJvd0NlbGxUeXBlID0gXCJ2YWx1ZVwiO1xyXG5cdFx0XHRcdFx0c3VtICs9IHRoaXMuY2FsY3VsYXRlZFZhbHVlcyhhcmdzLCBtYXRjaEZpZWxkcywgZm9ybXVsYSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPSBjdXJyZW50cm93Q2VsbFR5cGU7XHJcblxyXG5cdFx0XHQvLyDmmoLlrZjlvZPliY1TdWJUb3RhbO+8jCDnlKjkuo7mlLbnvKnml7bor7vlj5ZcclxuXHRcdFx0bGV0IHByZWZpeEhlYWRlciA9IHRoaXMuZ2V0Q2FsY0hlYWRlcihhcmdzLCBmb3JtdWxhKTtcclxuXHRcdFx0dGhpcy51cGRhdGVUZW1wU3VidG90YWxzKHByZWZpeEhlYWRlciwgc3VtKTtcclxuXHRcdFx0cmV0dXJuIHN1bTtcclxuXHRcdH0gZWxzZSBpZiAoYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiKSB7XHJcblx0XHRcdGlmIChhcmdzLnJvdy5oYXNDaGlsZCkge1xyXG5cdFx0XHRcdC8vIGNvbGxhcHNlIOivu+WPllN1YlRvdGFsXHJcblx0XHRcdFx0bGV0IGhlYWRlciA9IHRoaXMuZ2V0Q2FsY0hlYWRlcihhcmdzLCBmb3JtdWxhKTtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSB0aGlzLnRlbXBTdWJ0b3RhbHMuZmluZEluZGV4KFxyXG5cdFx0XHRcdFx0KGl0ZW0pID0+IGl0ZW0ucm93TmFtZSA9PT0gaGVhZGVyXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoaW5kZXggPiAtMSkge1xyXG5cdFx0XHRcdFx0dmFsdWUgPSB0aGlzLnRlbXBTdWJ0b3RhbHNbaW5kZXhdLnJvd1ZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBleHBhbmRcclxuXHRcdFx0XHR2YWx1ZSA9IHRoaXMuY2FsY3VsYXRlZFZhbHVlcyhhcmdzLCBtYXRjaEZpZWxkcywgZm9ybXVsYSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdGFjdGlvbkZhaWx1cmUoYXJnczogUGl2b3RBY3Rpb25GYWlsdXJlRXZlbnRBcmdzKTogdm9pZCB7XHJcblx0XHRpZiAoYXJncy5hY3Rpb25OYW1lID09IFwiRHJpbGwgZG93blwiIHx8IGFyZ3MuYWN0aW9uTmFtZSA9PSBcIkRyaWxsIHVwXCIpIHtcclxuXHRcdFx0Ly8gVHJpZ2dlcnMgd2hlbiB0aGUgY3VycmVudCBVSSBhY3Rpb24gZmFpbHMgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCByZXN1bHQuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENhbGNIZWFkZXIoYXJncywgZm9ybXVsYT8pIHtcclxuXHRcdGxldCBoZWFkZXIgPSBcIlwiO1xyXG5cdFx0bGV0IHJvd3MgPSB0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5yb3dzO1xyXG5cdFx0bGV0IGdyb3VwTmFtZUFycmF5cyA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3Mucm93LmxldmVsOyBpbmRleCsrKSB7XHJcblx0XHRcdGdyb3VwTmFtZUFycmF5cy5wdXNoKHJvd3NbaW5kZXhdLm5hbWUpO1xyXG5cdFx0fVxyXG5cdFx0aGVhZGVyID0gZ3JvdXBOYW1lQXJyYXlzLmxlbmd0aFxyXG5cdFx0XHQ/IGdyb3VwTmFtZUFycmF5c1xyXG5cdFx0XHRcdFx0Lm1hcCgobmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gYXJncy5jZWxsU2V0c1swXVtuYW1lXTtcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQuam9pbihcIi1cIikgK1xyXG5cdFx0XHQgIFwiLVwiICtcclxuXHRcdFx0ICBhcmdzLnJvdy5hY3R1YWxUZXh0XHJcblx0XHRcdDogYXJncy5yb3cuYWN0dWFsVGV4dDtcclxuXHRcdGlmIChmb3JtdWxhKSBoZWFkZXIgKz0gXCJfX19cIiArIGZvcm11bGE7XHJcblx0XHRyZXR1cm4gaGVhZGVyO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVUZW1wU3VidG90YWxzKHJvd05hbWUsIHJvd1ZhbHVlKSB7XHJcblx0XHRsZXQgaW5kZXggPSB0aGlzLnRlbXBTdWJ0b3RhbHMuZmluZEluZGV4KFxyXG5cdFx0XHQoaXRlbSkgPT4gaXRlbS5yb3dOYW1lID09PSByb3dOYW1lXHJcblx0XHQpO1xyXG5cdFx0bGV0IHRlbXA6IGFueSA9IHt9O1xyXG5cdFx0dGVtcC5yb3dOYW1lID0gcm93TmFtZTtcclxuXHRcdHRlbXAucm93VmFsdWUgPSByb3dWYWx1ZTtcclxuXHRcdGlmIChpbmRleCA+IC0xKSB7XHJcblx0XHRcdHRoaXMudGVtcFN1YnRvdGFscy5zcGxpY2UoaW5kZXgsIDEsIHRlbXApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy50ZW1wU3VidG90YWxzLnB1c2godGVtcCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhbGN1bGF0ZWRWYWx1ZXMoYXJncywgbWF0Y2hGaWVsZHMsIGZvcm11bGEpIHtcclxuXHRcdGlmIChtYXRjaEZpZWxkcy5sZW5ndGgpIHtcclxuXHRcdFx0bGV0IGNhbGN1bGVkTWF0Y2hGaWVsZHMgPSBtYXRjaEZpZWxkcy5tYXAoKGYpID0+IHtcclxuXHRcdFx0XHRzd2l0Y2ggKGYubWF0Y2hNZXRob2QpIHtcclxuXHRcdFx0XHRcdGNhc2UgXCJGaXJzdFwiOlxyXG5cdFx0XHRcdFx0Y2FzZSBcIkxhc3RcIjpcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPSB0aGlzLmNhbGN1bGF0ZWRGaXN0TGFzdChcclxuXHRcdFx0XHRcdFx0XHRhcmdzLFxyXG5cdFx0XHRcdFx0XHRcdGYubWF0Y2hNZXRob2QsXHJcblx0XHRcdFx0XHRcdFx0Zi5tYXRjaFdvcmRcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiTWF4XCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gbWF4QnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpW2YubWF0Y2hXb3JkXTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiTWluXCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gbWluQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpW2YubWF0Y2hXb3JkXTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiU3VtXCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gc3VtQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHQvLyBTTVAyLTQwOTQgVW5pY29ybiAtIEwzIEFkanVzdGVkIE5BViB2YWx1ZSBpc3N1ZXNcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlICYmIGYucmVwbGFjZVZhbHVlLnRvRml4ZWQoMTApO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgXCJBdmdcIjpcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPSBtZWFuQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gZjtcclxuXHRcdFx0fSk7XHJcblx0XHRcdGxldCByZXN1bHRGb3JtdWxhID0gZm9ybXVsYTtcclxuXHRcdFx0aWYgKGNhbGN1bGVkTWF0Y2hGaWVsZHMubGVuZ3RoKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjYWxjdWxlZE1hdGNoRmllbGRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRyZXN1bHRGb3JtdWxhID0gcmVzdWx0Rm9ybXVsYS5yZXBsYWNlKFxyXG5cdFx0XHRcdFx0XHRjYWxjdWxlZE1hdGNoRmllbGRzW2ldLm1hdGNoU3RyLFxyXG5cdFx0XHRcdFx0XHRcIihcIiArIGNhbGN1bGVkTWF0Y2hGaWVsZHNbaV0ucmVwbGFjZVZhbHVlICsgXCIpXCJcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IG5ldyBGdW5jdGlvbihcclxuXHRcdFx0XHRcdFwicmV0dXJuIFwiICsgcmVzdWx0Rm9ybXVsYS5yZXBsYWNlKC9bXi08Pj86KClcXGQvKisuXS9nLCBcIlwiKVxyXG5cdFx0XHRcdCkoKTtcclxuXHRcdFx0XHRpZiAoaXNOYU4ocmVzdWx0KSB8fCAhaXNGaW5pdGUocmVzdWx0KSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIDA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdHJldHVybiBOYU47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiAwO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRJcnJIZWFkZXIobGV2ZWwsIGVsZSwgdHlwZSkge1xyXG5cdFx0aWYgKHR5cGUgPT09IFwicm93XCIpIHtcclxuXHRcdFx0bGV0IGN1clJvd3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJyb3dzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0bGV0IHJvd3NBcnIgPSBjdXJSb3dzLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKTtcclxuXHJcblx0XHRcdGxldCBoZWFkZXJBcnIgPSBbXTtcclxuXHRcdFx0bGV0IHJvd0xldmVsID0gbGV2ZWw7XHJcblx0XHRcdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPD0gcm93TGV2ZWw7IGluZGV4KyspIHtcclxuXHRcdFx0XHRoZWFkZXJBcnIucHVzaChlbGUuUm93W3Jvd3NBcnJbaW5kZXhdXSk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGhlYWRlckFyci5qb2luKFwiLlwiKTtcclxuXHRcdH0gZWxzZSBpZiAodHlwZSA9PT0gXCJjb2xcIikge1xyXG5cdFx0XHRsZXQgY3VyQ2xvdW1ucyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcImNvbHVtbnNcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgY29sc0FyciA9IGN1ckNsb3VtbnMubWFwKChpdGVtKSA9PiBpdGVtLm5hbWUpO1xyXG5cclxuXHRcdFx0bGV0IGhlYWRlckFyciA9IFtdO1xyXG5cdFx0XHRsZXQgY29sTGV2ZWwgPSBsZXZlbDtcclxuXHRcdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8PSBjb2xMZXZlbDsgaW5kZXgrKykge1xyXG5cdFx0XHRcdGhlYWRlckFyci5wdXNoKGVsZS5Db2xbY29sc0FycltpbmRleF1dKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gaGVhZGVyQXJyLmpvaW4oXCIuXCIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG90YWxGb3JtYXR0ZWQgPSB7fTtcclxuXHRwdWJsaWMgYWdncmVnYXRlQ2VsbEluZm8oYXJncykge1xyXG5cdFx0bGV0IGFzT2ZEYXRlID0gdGhpcy5wYmYudGltZSh0aGlzLmRhc2hib2FyZC5hc09mRGF0ZSk7XHJcblx0XHQvLyBpZiBjYWxjdWxhdGVkIGZpZWxkXHJcblx0XHRpZiAoYXJncy5hZ2dyZWdhdGVUeXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCIpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAoYXJncy5maWVsZE5hbWUgPT0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldLm5hbWUpIHtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSB0aGlzLmNhbGN1bGF0ZWRDZWxsU2V0cyhcclxuXHRcdFx0XHRcdFx0YXJncyxcclxuXHRcdFx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0W1xyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlSVJSXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJCZWZvcmVDYXJyaWVkXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJJUlJEYXRlXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJNVERcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZUlSUlFURFwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlSVJSWVREXCIsXHJcblx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCB2YWx1ZUZpZWxkO1xyXG5cdFx0XHRsZXQgZGF0ZUZpZWxkO1xyXG5cdFx0XHRsZXQgc3RhcnREYXRlO1xyXG5cdFx0XHRsZXQgZW5kRGF0ZTtcclxuXHRcdFx0c3dpdGNoIChhcmdzLmFnZ3JlZ2F0ZVR5cGUpIHtcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlSVJSXCI6XHJcblx0XHRcdFx0XHR2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZVwiO1xyXG5cdFx0XHRcdFx0ZGF0ZUZpZWxkID0gXCJJUlJEYXRlXCI7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlSVJSTVREXCI6XHJcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoYXNPZkRhdGUpXHJcblx0XHRcdFx0XHRcdC5zdGFydE9mKFwibW9udGhcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUlFURFwiOlxyXG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGFzT2ZEYXRlKVxyXG5cdFx0XHRcdFx0XHQuc3RhcnRPZihcInF1YXJ0ZXJcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUllURFwiOlxyXG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGFzT2ZEYXRlKVxyXG5cdFx0XHRcdFx0XHQuc3RhcnRPZihcInllYXJcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUklSUkRhdGVcIjpcclxuXHRcdFx0XHRcdHZhbHVlRmllbGQgPSBcIklSUkFkalZhbHVlXCI7XHJcblx0XHRcdFx0XHRkYXRlRmllbGQgPSBcIkNhbGN1bGF0ZUlSUkRhdGVcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVJUlJCZWZvcmVDYXJyaWVkXCI6XHJcblx0XHRcdFx0XHR2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZUJlZm9yZUNhcnJ5XCI7XHJcblx0XHRcdFx0XHRkYXRlRmllbGQgPSBcIklSUkRhdGVcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgTkFWQWRqID0gMDtcclxuXHRcdFx0bGV0IHZhbHVlcyA9IFtdO1xyXG5cdFx0XHRsZXQgYmVmb3JlU3RhcnROQVZBZGogPSAwOyAvLyDlrZjlgqjkuIrkuIDkuKrpmLbmrrXnmoROQVZBZGrmgLvlkoxcclxuXHRcdFx0bGV0IGJlZm9yZVN0YXJ0VmFsdWVzID0gW107IC8vIOWtmOWCqOS4iuS4gOS4qumYtuauteeahOe0r+iuoembhuWQiCAo5Y+q5piv5Li65LqG5omT5Y2w77yM5rKh5pyJ5a6e6ZmF55So6YCUKVxyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRhbW91bnQ6IGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJBbW91bnRcIl0sXHJcblx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSkgPT09XHJcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQvLyBTTVAyLTE2OTIwXHJcblx0XHRcdFx0Ly8gSWYgSVJSIERhdGUgPiBEYXNoYm9hcmQgcmVwb3J0IGRhdGUgPSBUYWtlcyBhcyBvZiBkYXNoYm9hcmQgcmVwb3J0IGRhdGVcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlSVJSSVJSRGF0ZVwiICYmXHJcblx0XHRcdFx0XHRhc09mRGF0ZSA8IHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtkYXRlRmllbGRdKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0ZGF0YS5kYXRlID0gYXNPZkRhdGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdE5BVkFkaiArPSBhcmdzLmNlbGxTZXRzW2ldW3ZhbHVlRmllbGRdO1xyXG5cdFx0XHRcdC8vIFNNUDItMTcyMTkgTVREIFFURCBZVEQgSVJSXHJcblx0XHRcdFx0aWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XHJcblx0XHRcdFx0XHRpZiAobW9tZW50KGRhdGEuZGF0ZSkuaXNCZWZvcmUoc3RhcnREYXRlKSkge1xyXG5cdFx0XHRcdFx0XHRkYXRhW3ZhbHVlRmllbGRdID0gYXJncy5jZWxsU2V0c1tpXVt2YWx1ZUZpZWxkXTtcclxuXHRcdFx0XHRcdFx0YmVmb3JlU3RhcnRWYWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdFx0YmVmb3JlU3RhcnROQVZBZGogKz0gZGF0YVt2YWx1ZUZpZWxkXTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IW1vbWVudChkYXRhLmRhdGUpLmlzQmV0d2VlbihcclxuXHRcdFx0XHRcdFx0XHRzdGFydERhdGUsXHJcblx0XHRcdFx0XHRcdFx0ZW5kRGF0ZSxcclxuXHRcdFx0XHRcdFx0XHRudWxsLFxyXG5cdFx0XHRcdFx0XHRcdFwiW11cIlxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhLmFtb3VudCAhPSAwKSB7XHJcblx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKE5BVkFkaiA+IDAuMDAwMSB8fCBOQVZBZGogPCAtMC4wMDAxKSB7XHJcblx0XHRcdFx0dmFsdWVzLnB1c2goe1xyXG5cdFx0XHRcdFx0YW1vdW50OiBOQVZBZGosXHJcblx0XHRcdFx0XHRkYXRlOiBhc09mRGF0ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZXMgPSBzb3J0QnkodmFsdWVzLCBcImRhdGVcIik7XHJcblx0XHRcdC8vIOWmguaenOaYr01URCxRVEQsWVREIOWImemcgOimgeaKiuW9k+WJjemYtuauteS7peWJjeeahOaJgOacieaVsOaNrui/m+ihjOaxh+aAu++8jOWKoOWFpeiuoeeul1xyXG5cdFx0XHRpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcclxuXHRcdFx0XHR2YWx1ZXMudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRhbW91bnQ6IC1iZWZvcmVTdGFydE5BVkFkaiwgLy8g5byA5aeL55qE5pWw5o2u6ZyA6KaB5Y+W5Y+NXHJcblx0XHRcdFx0XHRkYXRlOiB0aGlzLnBiZi50aW1lKHN0YXJ0RGF0ZSksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJiZWZvcmVTdGFydFZhbHVlczpcIiwgYmVmb3JlU3RhcnRWYWx1ZXMpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcInZhbHVlczpcIiwgdmFsdWVzKTtcclxuXHRcdFx0aWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0bGV0IGd1ZXNzID0gMC4xO1xyXG5cdFx0XHRcdGNvbnN0IHN1bUFtb3VudCA9IHZhbHVlc1xyXG5cdFx0XHRcdFx0Lm1hcCgoaXRlbSkgPT4gaXRlbS5hbW91bnQpXHJcblx0XHRcdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMCk7XHJcblx0XHRcdFx0aWYgKHN1bUFtb3VudCA8IDApIHtcclxuXHRcdFx0XHRcdGd1ZXNzID0gLTAuMTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly9TTVAyLTIyNDkgZml4ZWQgdGhlIGJpZyBpcnIgaXNzdWVcclxuXHRcdFx0XHRpZiAoc3VtQW1vdW50ID09PSAwKSB7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gMDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVJdGVtcyA9IHZhbHVlcy5zbGljZSgwLCB2YWx1ZXMubGVuZ3RoIC0gMSk7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUxpc3QgPSB2YWx1ZUl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5hbW91bnQpO1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0ZUxpc3QgPSB2YWx1ZUl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5kYXRlKTtcclxuXHRcdFx0XHRcdGNvbnN0IGxhc3RJdGVtID0gdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXTtcclxuXHRcdFx0XHRcdGNvbnN0IG5hdkFkanVzdCA9IGxhc3RJdGVtLmFtb3VudDtcclxuXHRcdFx0XHRcdGNvbnN0IGxhdGVzdERhdGUgPSBsYXN0SXRlbS5kYXRlO1xyXG5cdFx0XHRcdFx0bGV0IGlyciA9XHJcblx0XHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuRXhjZWxGb3JtdWxhcy5fQ2FsY3VsYXRlWGlycihcclxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFx0ZGF0ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFx0bmF2QWRqdXN0LFxyXG5cdFx0XHRcdFx0XHRcdGxhdGVzdERhdGVcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBpcnIgPT09IG51bGwgPyBcIlwiIDogaXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdO1xyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBhcmdzLmZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0ZmllbGQubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGRbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5kcFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0OiBcIlAyXCIsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vICBTTVAyLTE2NTIwIFRXUiDmnIgv5a2jL+W5tCAmJiBTTVAyLTE2NjgzIFZBUlxyXG5cdFx0aWYgKFxyXG5cdFx0XHRbXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVUV1JNVERcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVRXUlFURFwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVFdSWVREXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTlcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85OVwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk5XCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTVcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85NVwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk1XCIsXHJcblx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0KSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiPT09PT09PT09PT09PT09PT09PT09PT09PT1cIik7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiYXJnczpcIiwgYXJncyk7XHJcblx0XHRcdGxldCB2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZVwiO1xyXG5cdFx0XHRsZXQgZGF0ZUZpZWxkID0gXCJJUlJEYXRlXCI7XHJcblx0XHRcdGxldCB0aW1lUmFuZ2U7XHJcblx0XHRcdHN3aXRjaCAoYXJncy5hZ2dyZWdhdGVUeXBlKSB7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVRXUk1URFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJNVERfOTlcIjpcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVkFSTVREXzk1XCI6XHJcblx0XHRcdFx0XHR0aW1lUmFuZ2UgPSBcIm1vbnRoXCI7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVFdSUVREXCI6XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVZBUlFURF85OVwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJRVERfOTVcIjpcclxuXHRcdFx0XHRcdHRpbWVSYW5nZSA9IFwicXVhcnRlclwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVRXUllURFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJZVERfOTlcIjpcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVkFSWVREXzk1XCI6XHJcblx0XHRcdFx0XHR0aW1lUmFuZ2UgPSBcInllYXJcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgdmFsdWVzID0gW107IC8vIOi/meS4qumYtuauteeahOe0r+iuoembhuWQiFxyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRbdmFsdWVGaWVsZF06IGFyZ3MuY2VsbFNldHNbaV1bdmFsdWVGaWVsZF0sXHJcblx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSkgPT09XHJcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g5aaC5p6cYXNPZkRhdGXkuI3mmK8g5pys5pyIL+Wto+W6pi/lubQg55qE5pyA5ZCO5LiA5aSp77yM6YO95piv5oiq6IezIOS4iuS4quaciC/lraPluqYv5bm0IOeahOacgOWQjuS4gOWkqeeahOaVsOaNruWOu+iuoeeul1xyXG5cdFx0XHRsZXQgX2FzT2ZEYXRlID0gbW9tZW50KGFzT2ZEYXRlKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJfYXNPZkRhdGU6XCIsIF9hc09mRGF0ZSk7XHJcblx0XHRcdGxldCBpc0VuZE9mUGVyaW9kID0gKHVuaXQpID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdFx0X2FzT2ZEYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgPT09XHJcblx0XHRcdFx0XHRfYXNPZkRhdGUuZW5kT2YodW5pdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH07XHJcblx0XHRcdGxldCBlbmREYXRlID0gaXNFbmRPZlBlcmlvZCh0aW1lUmFuZ2UpXHJcblx0XHRcdFx0PyBtb21lbnQoYXNPZkRhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIilcclxuXHRcdFx0XHQ6IG1vbWVudChhc09mRGF0ZSlcclxuXHRcdFx0XHRcdFx0LnN1YnRyYWN0KDEsIHRpbWVSYW5nZSlcclxuXHRcdFx0XHRcdFx0LmVuZE9mKHRpbWVSYW5nZSlcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblxyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcImVuZERhdGU6XCIsIGVuZERhdGUpO1xyXG5cdFx0XHR2YWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKChpdGVtKSA9PlxyXG5cdFx0XHRcdG1vbWVudChpdGVtLmRhdGUpLmlzU2FtZU9yQmVmb3JlKGVuZERhdGUpXHJcblx0XHRcdCk7XHJcblx0XHRcdHZhbHVlcyA9IHNvcnRCeSh2YWx1ZXMsIFwiZGF0ZVwiKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJ2YWx1ZXM6XCIsIHZhbHVlcyk7XHJcblxyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0gdGhpcy5nZXRUaW1lUmFuZ2VzKFxyXG5cdFx0XHRcdFx0dmFsdWVzLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZSxcclxuXHRcdFx0XHRcdHRpbWVSYW5nZSxcclxuXHRcdFx0XHRcdFwiZGF0ZVwiXHJcblx0XHRcdFx0KTsgLy8g5ZCE5Liq6Zi25q6155qE5pWw5o2uXHJcblx0XHRcdFx0bGV0IHJlc3VsdFRvdGFsID0ge307IC8vIOWQhOS4qumYtuauteaAu+WSjFxyXG5cdFx0XHRcdGZvciAoY29uc3QgcHJvcCBpbiByZXN1bHQpIHtcclxuXHRcdFx0XHRcdHJlc3VsdFRvdGFsW3Byb3BdID0gcmVzdWx0W3Byb3BdLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGFjYyArIChjdXJbdmFsdWVGaWVsZF0gfHwgMCk7XHJcblx0XHRcdFx0XHR9LCAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZXN1bHQ6XCIsIHJlc3VsdCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZXN1bHRUb3RhbDpcIiwgcmVzdWx0VG90YWwpO1xyXG5cclxuXHRcdFx0XHRjb25zdCBjdW11bGF0aXZlU3VtID0ge307IC8vIOWQhOS4qumYtuautee0r+iuoeWSjFxyXG5cdFx0XHRcdGxldCBzdW0gPSAwO1xyXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdFRvdGFsKSkge1xyXG5cdFx0XHRcdFx0c3VtICs9IHJlc3VsdFRvdGFsW2tleV07XHJcblx0XHRcdFx0XHRjdW11bGF0aXZlU3VtW2Ake2tleX1gXSA9IHN1bTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJjdW11bGF0aXZlU3VtOlwiLCBjdW11bGF0aXZlU3VtKTtcclxuXHJcblx0XHRcdFx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1bXVsYXRpdmVTdW0pO1xyXG5cdFx0XHRcdGxldCB0d3JMaXN0ID0gW107XHJcblx0XHRcdFx0Ly8g6YGN5Y6G5q+P5Lik5Liq6Zi25q61IOiuoeeul1RXUlxyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcclxuXHRcdFx0XHRcdGNvbnN0IGtleTEgPSBrZXlzW2ldO1xyXG5cdFx0XHRcdFx0Y29uc3Qga2V5MiA9IGtleXNbaSArIDFdO1xyXG5cclxuXHRcdFx0XHRcdC8vIOiuoeeul+S4pOS4qumYtuauteS5i+mXtOeahOmAkuWinumHjywg5Ye65pWw5LiN6IO95Li6MFxyXG5cdFx0XHRcdFx0aWYgKGN1bXVsYXRpdmVTdW1ba2V5MV0gIT0gMCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpbmNyZW1lbnQgPVxyXG5cdFx0XHRcdFx0XHRcdGN1bXVsYXRpdmVTdW1ba2V5Ml0gLSBjdW11bGF0aXZlU3VtW2tleTFdO1xyXG5cdFx0XHRcdFx0XHRsZXQgdHdyID0gaW5jcmVtZW50IC8gY3VtdWxhdGl2ZVN1bVtrZXkxXTtcclxuXHRcdFx0XHRcdFx0dHdyTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRkYXRlOiBrZXkyLFxyXG5cdFx0XHRcdFx0XHRcdHR3cjogdHdyLFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g6K6h566XQXZlcmFnZSBUV1JcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcInR3ckxpc3Q6XCIsIHR3ckxpc3QpO1xyXG5cdFx0XHRcdGxldCBhdmVyYWdlVFdSID0gdGhpcy5jYWxjdWxhdGVHcm93dGhSYXRlKFxyXG5cdFx0XHRcdFx0dHdyTGlzdC5tYXAoKHgpID0+IHgudHdyKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCLorqHnrpdBdmVyYWdlIFRXUjpcIiwgYXZlcmFnZVRXUik7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0W1xyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUk1URFwiLFxyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUlFURFwiLFxyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUllURFwiLFxyXG5cdFx0XHRcdFx0XS5pbmNsdWRlcyhhcmdzLmFnZ3JlZ2F0ZVR5cGUpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyBTTVAyLTE2NTIwIFRXUiDmnIgv5a2jL+W5tFxyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdGlzTmFOKGF2ZXJhZ2VUV1IpIHx8IGF2ZXJhZ2VUV1IgPT0gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdD8gXCJcIlxyXG5cdFx0XHRcdFx0XHRcdDogYXZlcmFnZVRXUi50b0ZpeGVkKDQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoaXNOYU4oYXZlcmFnZVRXUikgfHwgYXZlcmFnZVRXUiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gU01QMi0xNjY4MyBWQVIg5Yy65YiGOTkl5ZKMOTUlXHJcblx0XHRcdFx0XHRcdGxldCBaU2NvcmUgPSBbXHJcblx0XHRcdFx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTlcIixcclxuXHRcdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85OVwiLFxyXG5cdFx0XHRcdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk5XCIsXHJcblx0XHRcdFx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0XHRcdFx0XHRcdD8gMi4zM1xyXG5cdFx0XHRcdFx0XHRcdDogMS42NTtcclxuXHRcdFx0XHRcdFx0aWYgKHR3ckxpc3QubGVuZ3RoIDwgMikge1xyXG5cdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBTRCA9IHRoaXMuY2FsY3VsYXRlU3RhbmRhcmREZXZpYXRpb24oXHJcblx0XHRcdFx0XHRcdFx0XHR0d3JMaXN0Lm1hcCgoeCkgPT4geC50d3IpXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcImNhbGN1bGF0ZVN0YW5kYXJkRGV2aWF0aW9uOlwiLCBTRCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IFZBUiA9IGF2ZXJhZ2VUV1IgLSBTRCAqIFpTY29yZTtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID0gVkFSLnRvRml4ZWQoNCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJhcmdzLnZhbHVlOlwiLCBhcmdzLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlICYmXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRkZWxldGUgdGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXTtcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogYXJncy5maWVsZE5hbWUsXHJcblx0XHRcdFx0XHRmb3JtYXQ6XHJcblx0XHRcdFx0XHRcdGZpZWxkLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdFx0XHQ/IGZpZWxkWzBdLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdCAgZmllbGRbMF0uZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0XHRcdCAgZmllbGRbMF0uZm9ybWF0WzBdLmZvcm1hdENoZWNrZWRcclxuXHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZvcm1hdFBlcmNlbnQoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRbMF0uZHBcclxuXHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdDogXCJQMlwiLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvL1NNUDItMjcwMVxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVJUlJBY3R1YWxBdWRpdGVkXCIpIHtcclxuXHRcdFx0bGV0IE5BVkFkaiA9IDA7XHJcblx0XHRcdGxldCB2YWx1ZXMgPSBbXTtcclxuXHRcdFx0bGV0IGZpZWxkID0gdGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdGVsLmNvbE5hbWUgPT09XHJcblx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmdldEFnZ3JlZ2F0ZVR5cGUoXHJcblx0XHRcdFx0XHRcdGFyZ3MuYWdncmVnYXRlVHlwZVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHQpO1xyXG5cdFx0XHQvL1NNUDItMjcxMyBvbmx5IGp1ZGdlIGZvciB0aGlzIGRhdGFNYXJ0KEdyb3NzTmV0KVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5wb3J0bGV0LmZpZ3VyZUNvZGUgPT09IFwiR3Jvc3NOZXRcIiB8fFxyXG5cdFx0XHRcdHRoaXMucG9ydGxldC5maWd1cmVDb2RlID09PVxyXG5cdFx0XHRcdFx0XCJDb21iaW5lZEludmVzdG1lbnRGdW5kTkNvbXBhbnlDYXNoZmxvd1wiXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0YW1vdW50OiBhcmdzLmNlbGxTZXRzW2ldW1wiSVJSQW1vdW50XCJdLFxyXG5cdFx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtcIklSUkRhdGVcIl0pID09PVxyXG5cdFx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdD8gYXNPZkRhdGVcclxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5wYmYudGltZShhcmdzLmNlbGxTZXRzW2ldW1wiSVJSRGF0ZVwiXSksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0TkFWQWRqICs9IGFyZ3MuY2VsbFNldHNbaV1bXCJBY3R1YWxBdWRpdGVkTkFWXCJdO1xyXG5cdFx0XHRcdFx0aWYgKGRhdGEuYW1vdW50ICE9IDApIHtcclxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goZGF0YSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdC8vZmlsdGVyIHRoZSBkYXRhIGJ5IHRoZSBEYXRhVHlwZShBY3R1YWwgUmVwb3J0ZWQgQXVkaXRlZClcclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0bGV0IGFyZ3NkYXRhID0gYXJncy5jZWxsU2V0cy5maWx0ZXIoXHJcblx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdGVsLkRhdGFUeXBlID09PSBcIkFDVFVBTF9BVURJVEVEXCIgfHxcclxuXHRcdFx0XHRcdFx0ZWwuRGF0YVR5cGUgPT09IFwiUkVQT1JURURcIlxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzZGF0YS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0YW1vdW50OiBhcmdzZGF0YVtpXVtcIklSUkFtb3VudFwiXSxcclxuXHRcdFx0XHRcdFx0ZGF0ZTpcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3NkYXRhW2ldW1wiSVJSRGF0ZVwiXSkgPT09XHJcblx0XHRcdFx0XHRcdFx0XCJJbnZhbGlkIGRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PyBhc09mRGF0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3NkYXRhW2ldW1wiSVJSRGF0ZVwiXSksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0TkFWQWRqICs9IGFyZ3NkYXRhW2ldW1wiSVJSQWRqVmFsdWVcIl07XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5hbW91bnQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKE5BVkFkaiA+IDAuMDAwMSB8fCBOQVZBZGogPCAtMC4wMDAxKSB7XHJcblx0XHRcdFx0dmFsdWVzLnB1c2goe1xyXG5cdFx0XHRcdFx0YW1vdW50OiBOQVZBZGosXHJcblx0XHRcdFx0XHRkYXRlOiBhc09mRGF0ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZXMgPSBzb3J0QnkodmFsdWVzLCBcImRhdGVcIik7XHJcblx0XHRcdGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGxldCBndWVzcyA9IDAuMTtcclxuXHRcdFx0XHRjb25zdCBzdW1BbW91bnQgPSB2YWx1ZXNcclxuXHRcdFx0XHRcdC5tYXAoKGl0ZW0pID0+IGl0ZW0uYW1vdW50KVxyXG5cdFx0XHRcdFx0LnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIsIDApO1xyXG5cdFx0XHRcdGlmIChzdW1BbW91bnQgPCAwKSB7XHJcblx0XHRcdFx0XHRndWVzcyA9IC0wLjE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vU01QMi0yMjQ5IGZpeGVkIHRoZSBiaWcgaXJyIGlzc3VlXHJcblx0XHRcdFx0aWYgKHN1bUFtb3VudCA9PT0gMCkge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IDA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlSXRlbXMgPSB2YWx1ZXMuc2xpY2UoMCwgdmFsdWVzLmxlbmd0aCAtIDEpO1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVMaXN0ID0gdmFsdWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uYW1vdW50KTtcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGVMaXN0ID0gdmFsdWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0ZSk7XHJcblx0XHRcdFx0XHRjb25zdCBsYXN0SXRlbSA9IHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV07XHJcblx0XHRcdFx0XHRjb25zdCBuYXZBZGp1c3QgPSBsYXN0SXRlbS5hbW91bnQ7XHJcblx0XHRcdFx0XHRjb25zdCBsYXRlc3REYXRlID0gbGFzdEl0ZW0uZGF0ZTtcclxuXHRcdFx0XHRcdGxldCBpcnIgPVxyXG5cdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLkV4Y2VsRm9ybXVsYXMuX0NhbGN1bGF0ZVhpcnIoXHJcblx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGVMaXN0LFxyXG5cdFx0XHRcdFx0XHRcdG5hdkFkanVzdCxcclxuXHRcdFx0XHRcdFx0XHRsYXRlc3REYXRlXHJcblx0XHRcdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlyciA9PT0gbnVsbCA/IDAgOiBpcnI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSAwO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZSAmJlxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV1cclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV07XHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IGFyZ3MuZmllbGROYW1lLFxyXG5cdFx0XHRcdFx0Zm9ybWF0OlxyXG5cdFx0XHRcdFx0XHRmaWVsZC5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0PyBmaWVsZFswXS5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UucGl2b3RUYWJsZWZvcm1hdFBlcmNlbnQoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRbMF0uZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmRwXHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHQ6IFwiUDJcIixcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQvL1NNUDItMzQxMVxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVJUlJSZXBvcnRlZFwiKSB7XHJcblx0XHRcdGxldCBOQVZBZGogPSAwO1xyXG5cdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdGxldCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRlbC5jb2xOYW1lID09PVxyXG5cdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRBZ2dyZWdhdGVUeXBlKFxyXG5cdFx0XHRcdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGVcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMucG9ydGxldC5maWd1cmVDb2RlID09PSBcIkdyb3NzTmV0XCIgfHxcclxuXHRcdFx0XHR0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSA9PT1cclxuXHRcdFx0XHRcdFwiQ29tYmluZWRJbnZlc3RtZW50RnVuZE5Db21wYW55Q2FzaGZsb3dcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuY2VsbFNldHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRcdGFtb3VudDogYXJncy5jZWxsU2V0c1tpXVtcIklSUkFtb3VudFwiXSxcclxuXHRcdFx0XHRcdFx0ZGF0ZTpcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJEYXRlXCJdKSA9PT1cclxuXHRcdFx0XHRcdFx0XHRcIkludmFsaWQgZGF0ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtcIklSUkRhdGVcIl0pLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdE5BVkFkaiArPSBhcmdzLmNlbGxTZXRzW2ldW1wiUmVwb3J0ZWROQVZcIl07XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5hbW91bnQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRjb25zdCBkYXRhID0ge1xyXG5cdFx0XHRcdFx0XHRhbW91bnQ6IGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJBbW91bnRcIl0sXHJcblx0XHRcdFx0XHRcdGRhdGU6XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wYmYudGltZShhcmdzLmNlbGxTZXRzW2ldW1wiSVJSRGF0ZVwiXSkgPT09XHJcblx0XHRcdFx0XHRcdFx0XCJJbnZhbGlkIGRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PyBhc09mRGF0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJEYXRlXCJdKSxcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHROQVZBZGogKz0gYXJncy5jZWxsU2V0c1tpXVtcIklSUkFkalZhbHVlXCJdO1xyXG5cdFx0XHRcdFx0aWYgKGRhdGEuYW1vdW50ICE9IDApIHtcclxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goZGF0YSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChOQVZBZGogPiAwLjAwMDEgfHwgTkFWQWRqIDwgLTAuMDAwMSkge1xyXG5cdFx0XHRcdHZhbHVlcy5wdXNoKHtcclxuXHRcdFx0XHRcdGFtb3VudDogTkFWQWRqLFxyXG5cdFx0XHRcdFx0ZGF0ZTogYXNPZkRhdGUsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0dmFsdWVzID0gc29ydEJ5KHZhbHVlcywgXCJkYXRlXCIpO1xyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgZ3Vlc3MgPSAwLjE7XHJcblx0XHRcdFx0Y29uc3Qgc3VtQW1vdW50ID0gdmFsdWVzXHJcblx0XHRcdFx0XHQubWFwKChpdGVtKSA9PiBpdGVtLmFtb3VudClcclxuXHRcdFx0XHRcdC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLCAwKTtcclxuXHRcdFx0XHRpZiAoc3VtQW1vdW50IDwgMCkge1xyXG5cdFx0XHRcdFx0Z3Vlc3MgPSAtMC4xO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvL1NNUDItMjI0OSBmaXhlZCB0aGUgYmlnIGlyciBpc3N1ZVxyXG5cdFx0XHRcdGlmIChzdW1BbW91bnQgPT09IDApIHtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSAwO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUl0ZW1zID0gdmFsdWVzLnNsaWNlKDAsIHZhbHVlcy5sZW5ndGggLSAxKTtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlTGlzdCA9IHZhbHVlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmFtb3VudCk7XHJcblx0XHRcdFx0XHRjb25zdCBkYXRlTGlzdCA9IHZhbHVlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmRhdGUpO1xyXG5cdFx0XHRcdFx0Y29uc3QgbGFzdEl0ZW0gPSB2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0Y29uc3QgbmF2QWRqdXN0ID0gbGFzdEl0ZW0uYW1vdW50O1xyXG5cdFx0XHRcdFx0Y29uc3QgbGF0ZXN0RGF0ZSA9IGxhc3RJdGVtLmRhdGU7XHJcblx0XHRcdFx0XHRsZXQgaXJyID1cclxuXHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5FeGNlbEZvcm11bGFzLl9DYWxjdWxhdGVYaXJyKFxyXG5cdFx0XHRcdFx0XHRcdHZhbHVlTGlzdCxcclxuXHRcdFx0XHRcdFx0XHRkYXRlTGlzdCxcclxuXHRcdFx0XHRcdFx0XHRuYXZBZGp1c3QsXHJcblx0XHRcdFx0XHRcdFx0bGF0ZXN0RGF0ZVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBpcnIgPT09IG51bGwgPyAwIDogaXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gMDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdO1xyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBhcmdzLmZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0ZmllbGQubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGRbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5kcFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0OiBcIlAyXCIsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlUElDXCIgfHxcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09PSBcIkNhbGN1bGF0ZURQSVwiIHx8XHJcblx0XHRcdGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVUVlBJXCIgfHxcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09PSBcIkNhbGN1bGF0ZVJWUElcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTUFjdHVhbEF1ZGl0ZWRcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTVJlcG9ydGVkXCJcclxuXHRcdCkge1xyXG5cdFx0XHRsZXQgdG90YWxOdW1lcmF0b3IgPSAwO1xyXG5cdFx0XHRsZXQgdG90YWxEZW5vbWluYXRvciA9IDA7XHJcblx0XHRcdGxldCBudW1lcmF0b3JOYW1lO1xyXG5cdFx0XHRsZXQgZGVub21pbmF0b3JOYW1lO1xyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChmaWVsZC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0Y29uc3QgZm9ybXVsYUFycmF5ID0gZmllbGRbMF0uZm9ybXVsYS5zcGxpdChcIi9cIik7XHJcblx0XHRcdFx0bnVtZXJhdG9yTmFtZSA9IGZvcm11bGFBcnJheVswXTtcclxuXHRcdFx0XHRkZW5vbWluYXRvck5hbWUgPSBmb3JtdWxhQXJyYXlbMV07XHJcblx0XHRcdH1cclxuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0dG90YWxOdW1lcmF0b3IgKz0gYXJncy5jZWxsU2V0c1tqXVtudW1lcmF0b3JOYW1lXTtcclxuXHRcdFx0XHR0b3RhbERlbm9taW5hdG9yICs9IGFyZ3MuY2VsbFNldHNbal1bZGVub21pbmF0b3JOYW1lXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodG90YWxEZW5vbWluYXRvciAhPT0gMCkge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSB0b3RhbE51bWVyYXRvciAvIHRvdGFsRGVub21pbmF0b3I7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV1cclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbXHJcblx0XHRcdFx0XHRcdGFyZ3MuZmllbGROYW1lXHJcblx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXSA9IHtcclxuXHRcdFx0XHRcdFx0bmFtZTogYXJncy5maWVsZE5hbWUsXHJcblx0XHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGZpZWxkWzBdLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0TXVsdGlwbGUoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmRwXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBcIiMjIzAuMDAneCdcIixcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJGaXJzdFwiIHx8IGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJMYXN0XCIpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IHRoaXMuY2FsY3VsYXRlZEZpc3RMYXN0KFxyXG5cdFx0XHRcdGFyZ3MsXHJcblx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlLFxyXG5cdFx0XHRcdGFyZ3MuZmllbGROYW1lXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ291bnRcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiRGlzdGluY3RDb3VudFwiXHJcblx0XHQpIHtcclxuXHRcdFx0aWYgKGFyZ3MudmFsdWUpIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZS50b0ZpeGVkKDIpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHQhYXJncy52YWx1ZSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSAwICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IGZhbHNlICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IFwiZmFsc2VcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGFyZ3Muc2tpcEZvcm1hdHRpbmcgPSB0cnVlO1xyXG5cdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdH1cclxuXHRcdC8vIOaWsOW7unBpdm90IHRhYmxlLCDov5jmsqHmnInorr7nva5yb3csIOmAieS6hmNvbHVtbuS5i+WQjmdyYW5kdG90YWzkvJrmnInlgLxcclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5yb3dDZWxsVHlwZSA9PT0gXCJncmFuZFRvdGFsXCIgJiZcclxuXHRcdFx0IXRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnJvd3MubGVuZ3RoXHJcblx0XHQpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHR9XHJcblx0XHQvL1NNUDItMjg4OVxyXG5cdFx0aWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCB2YWx1ZUZpZWxkX2RhdGEgPSB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gYXJncy5maWVsZE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YVswXS5zaG93U3ViVG90YWxzID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdFx0XHRhcmdzLnNraXBGb3JtYXR0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCB2YWx1ZUZpZWxkX2RhdGEgPSB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gYXJncy5maWVsZE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YVswXS5zaG93R3JhbmRUb3RhbHMgPT09IGZhbHNlKSB7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0XHRcdGFyZ3Muc2tpcEZvcm1hdHRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly8gU01QMi0zNDE2IHN0YXJ0XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuaGdMaXN0LmluY2x1ZGVzKGFyZ3MuZmllbGROYW1lKSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlID09PSAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IFwiLVwiO1xyXG5cdFx0XHRhcmdzLnNraXBGb3JtYXR0aW5nID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy56ZXJvRm9ybWF0RGF0YS5lbXB0eUxpc3QuaW5jbHVkZXMoYXJncy5maWVsZE5hbWUpICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgPT09IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0YXJncy5za2lwRm9ybWF0dGluZyA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMubWlsbGlvbkZpZWxkcy5pbmNsdWRlcyhhcmdzLmZpZWxkTmFtZSkgJiZcclxuXHRcdFx0IWlzTmFOKE51bWJlcihhcmdzLnZhbHVlKSkgJiZcclxuXHRcdFx0YXJncy52YWx1ZSAhPT0gMCAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSBcIlwiICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IG51bGxcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIiAmJlxyXG5cdFx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPT0gXCJncmFuZFRvdGFsXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLnRvdGFsRm9ybWF0dGVkW2FyZ3MuZmllbGROYW1lXSkge1xyXG5cdFx0XHRcdFx0dGhpcy50b3RhbEZvcm1hdHRlZFthcmdzLmZpZWxkTmFtZV0gPSB0cnVlO1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MudmFsdWUgLyAxMDAwMDAwO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZSAvIDEwMDAwMDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBTTVAyLTI0ODYgJiBwZXJjZW50TnVt55qEZm9ybWF06Zeu6aKYXHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMucGVyY2VudE51bUZpZWxkcy5sZW5ndGggJiZcclxuXHRcdFx0dGhpcy5wZXJjZW50TnVtRmllbGRzLmluY2x1ZGVzKGFyZ3MuZmllbGROYW1lKSAmJlxyXG5cdFx0XHQhaXNOYU4oTnVtYmVyKGFyZ3MudmFsdWUpKSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSAwICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IFwiXCIgJiZcclxuXHRcdFx0YXJncy52YWx1ZSAhPT0gbnVsbFxyXG5cdFx0KSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRhcmdzLmNvbHVtbkNlbGxUeXBlID09IFwiZ3JhbmRUb3RhbFwiICYmXHJcblx0XHRcdFx0YXJncy5yb3dDZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMudG90YWxGb3JtYXR0ZWRbYXJncy5maWVsZE5hbWVdKSB7XHJcblx0XHRcdFx0XHR0aGlzLnRvdGFsRm9ybWF0dGVkW2FyZ3MuZmllbGROYW1lXSA9IHRydWU7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZSAvIDEwMDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MudmFsdWUgLyAxMDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCIgJiZcclxuXHRcdFx0IU51bWJlci5pc05hTihhcmdzLnZhbHVlKVxyXG5cdFx0KSB7XHJcblx0XHRcdGFyZ3MudmFsdWUgPSBOdW1iZXIoYXJncy52YWx1ZSkudG9GaXhlZCgyKTtcclxuXHRcdH1cclxuXHRcdC8vIFNNUDItMzQxNiBlbmRcclxuXHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjYWxjdWxhdGVkRmlzdExhc3QoYXJncywgYWdncmVnYXRlVHlwZSwgZmllbGROYW1lKSB7XHJcblx0XHRpZiAoIWFyZ3Mucm93LmFjdHVhbFRleHQpIGFyZ3Mucm93LmFjdHVhbFRleHQgPSBhcmdzLnJvdy5mb3JtYXR0ZWRUZXh0O1xyXG5cdFx0aWYgKCFhcmdzLmNvbHVtbi5hY3R1YWxUZXh0KVxyXG5cdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ID0gYXJncy5jb2x1bW4uZm9ybWF0dGVkVGV4dDtcclxuXHRcdGxldCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0KGVsKSA9PiBlbC5jb2xOYW1lID09PSBmaWVsZE5hbWVcclxuXHRcdClbMF07XHJcblxyXG5cdFx0aWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwidmFsdWVcIiAmJiAhYXJncy5yb3cuaGFzQ2hpbGQpIHtcclxuXHRcdFx0aWYgKGFyZ3MuY2VsbFNldHNbMF0pIHtcclxuXHRcdFx0XHRpZiAoYWdncmVnYXRlVHlwZSA9PT0gXCJGaXJzdFwiKSB7XHJcblx0XHRcdFx0XHRmb3IgKFxyXG5cdFx0XHRcdFx0XHRsZXQgZmlyc3RJbmRleCA9IDA7XHJcblx0XHRcdFx0XHRcdGZpcnN0SW5kZXggPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDtcclxuXHRcdFx0XHRcdFx0Zmlyc3RJbmRleCsrXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoID09XHJcblx0XHRcdFx0XHRcdFx0XHQxICYmXHJcblx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInN0cmluZ1wiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm52YXJjaGFyXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aFxyXG5cdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbERhdGFWYWx1ZVthcmdzLnJvdy5yb3dJbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBvYmogPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClbMF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9iaikgYXJncy52YWx1ZSA9IG9iai52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MuY2VsbFNldHNbZmlyc3RJbmRleF1bZmllbGROYW1lXTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJudW1iZXJcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwibXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJwZXJjZW50TnVtXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUgIT0gbnVsbCkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGJmLnRpbWUoYXJncy52YWx1ZSkgPiBcIjE5MDAtMDEtMDFcIikgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYXJncy52YWx1ZSkgYnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChhZ2dyZWdhdGVUeXBlID09PSBcIkxhc3RcIikge1xyXG5cdFx0XHRcdFx0Zm9yIChcclxuXHRcdFx0XHRcdFx0bGV0IGxhc3RJbmRleCA9IGFyZ3MuY2VsbFNldHMubGVuZ3RoIC0gMTtcclxuXHRcdFx0XHRcdFx0bGFzdEluZGV4ID49IDA7XHJcblx0XHRcdFx0XHRcdGxhc3RJbmRleC0tXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoID09XHJcblx0XHRcdFx0XHRcdFx0XHQxICYmXHJcblx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInN0cmluZ1wiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm52YXJjaGFyXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aFxyXG5cdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbERhdGFWYWx1ZVthcmdzLnJvdy5yb3dJbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBvYmogPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClbMF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9iaikgYXJncy52YWx1ZSA9IG9iai52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MuY2VsbFNldHNbbGFzdEluZGV4XVtmaWVsZE5hbWVdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJudW1iZXJcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwibXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJwZXJjZW50TnVtXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUgIT0gbnVsbCkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGJmLnRpbWUoYXJncy52YWx1ZSkgPiBcIjE5MDAtMDEtMDFcIikgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYXJncy52YWx1ZSkgYnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm51bWJlclwiIHx8XHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm11bHRpcGxlXCIgfHxcclxuXHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInBlcmNlbnROdW1cIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnJvd3MubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdGlmICghdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHQhTnVtYmVyKHRoaXMuZ3JhbmRUb3RhbHNbZmllbGROYW1lXSkgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGlzTmFOKE51bWJlcih0aGlzLmdyYW5kVG90YWxzW2ZpZWxkTmFtZV0pKVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdID0gMDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSAhPT0gXCJDYWxjdWxhdGVkRmllbGRcIikge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdICs9IE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBcInJvd1wiICsgYXJncy5yb3cuYWN0dWFsVGV4dCArIGZpZWxkTmFtZSDooajnpLooY2VsbDogYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIGFyZ3MuY29sdW1uQ2VsbFR5cGUgPT09IFwiZ3JhbmRUb3RhbFwiKVxyXG5cdFx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdCFOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJyb3dcIiArIGFyZ3Mucm93LmFjdHVhbFRleHQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0KSB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0aXNOYU4oXHJcblx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJyb3dcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgKyBhcmdzLnJvdy5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdID0gMDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFwicm93XCIgKyBhcmdzLnJvdy5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XSArPSBOdW1iZXIoYXJncy52YWx1ZSk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8vIFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lIOihqOekuihjZWxsOiBhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIiAmJiBhcmdzLmNvbHVtbkNlbGxUeXBlID09PSBcInZhbHVlXCIpXHJcblx0XHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0IU51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdF1cclxuXHRcdFx0XHRcdFx0XHRcdCkgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XSA9IDA7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdF0gKz0gTnVtYmVyKGFyZ3MudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIiB8fCBhcmdzLnJvdy5oYXNDaGlsZCkge1xyXG5cdFx0XHRjb25zdCBkYXRhVHlwZSA9IGZpZWxkLmRhdGFUeXBlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVR5cGUgPT09IFwic3RyaW5nXCIgfHxcclxuXHRcdFx0XHRkYXRhVHlwZSA9PT0gXCJudmFyY2hhclwiIHx8XHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRkYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlID0gMDtcclxuXHRcdFx0XHRsZXQgY2hpbGRIZWFkZXJzID0gW107XHJcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0ZVR5cGUgPT09IFwiRmlyc3RcIikge1xyXG5cdFx0XHRcdFx0bGV0IGdyb3VwTmFtZUFycmF5cyA9IFtdO1xyXG5cdFx0XHRcdFx0bGV0IHJvd3MgPSB0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5yb3dzO1xyXG5cdFx0XHRcdFx0Zm9yIChcclxuXHRcdFx0XHRcdFx0bGV0IGluZGV4ID0gYXJncy5yb3cubGV2ZWw7XHJcblx0XHRcdFx0XHRcdGluZGV4IDwgcm93cy5sZW5ndGg7XHJcblx0XHRcdFx0XHRcdGluZGV4KytcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRncm91cE5hbWVBcnJheXMucHVzaChyb3dzW2luZGV4XS5uYW1lKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0XHRcdGxldCBoZWFkZXIgPSBncm91cE5hbWVBcnJheXNcclxuXHRcdFx0XHRcdFx0XHQubWFwKChuYW1lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChhcmdzLmNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmdzLmNlbGxTZXRzW2ldW25hbWVdO1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIShjaGlsZEhlYWRlcnMgYXMgYW55KS5pbmNsdWRlcyhoZWFkZXIpKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZpbHRlck9iajogYW55ID0ge307XHJcblx0XHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLm1hcChcclxuXHRcdFx0XHRcdFx0XHRcdChuYW1lLCB4KSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW3hdKVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IF9DZWxsU2V0cyA9IF9maWx0ZXIoYXJncy5jZWxsU2V0cywgZmlsdGVyT2JqKTtcclxuXHRcdFx0XHRcdFx0XHRjaGlsZEhlYWRlcnMucHVzaChoZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlICs9IE51bWJlcihfQ2VsbFNldHNbMF1bZmllbGROYW1lXSkgfHwgMDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoYWdncmVnYXRlVHlwZSA9PT0gXCJMYXN0XCIpIHtcclxuXHRcdFx0XHRcdGxldCBncm91cE5hbWVBcnJheXMgPSBbXTtcclxuXHRcdFx0XHRcdGxldCByb3dzID0gdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Mucm93cztcclxuXHRcdFx0XHRcdGZvciAoXHJcblx0XHRcdFx0XHRcdGxldCBpbmRleCA9IGFyZ3Mucm93LmxldmVsO1xyXG5cdFx0XHRcdFx0XHRpbmRleCA8IHJvd3MubGVuZ3RoO1xyXG5cdFx0XHRcdFx0XHRpbmRleCsrXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLnB1c2gocm93c1tpbmRleF0ubmFtZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gYXJncy5jZWxsU2V0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0XHRcdGxldCBoZWFkZXIgPSBncm91cE5hbWVBcnJheXNcclxuXHRcdFx0XHRcdFx0XHQubWFwKChuYW1lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChhcmdzLmNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmdzLmNlbGxTZXRzW2ldW25hbWVdO1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIShjaGlsZEhlYWRlcnMgYXMgYW55KS5pbmNsdWRlcyhoZWFkZXIpKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZpbHRlck9iajogYW55ID0ge307XHJcblx0XHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLm1hcChcclxuXHRcdFx0XHRcdFx0XHRcdChuYW1lLCB4KSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW3hdKVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IF9DZWxsU2V0cyA9IF9maWx0ZXIoYXJncy5jZWxsU2V0cywgZmlsdGVyT2JqKTtcclxuXHRcdFx0XHRcdFx0XHRjaGlsZEhlYWRlcnMucHVzaChoZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlICs9XHJcblx0XHRcdFx0XHRcdFx0XHROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdF9DZWxsU2V0c1tfQ2VsbFNldHMubGVuZ3RoIC0gMV1bZmllbGROYW1lXVxyXG5cdFx0XHRcdFx0XHRcdFx0KSB8fCAwO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoYXJncy5jb2x1bW4uYWN0dWFsVGV4dCAhPT0gXCJHcmFuZCBUb3RhbFwiKVxyXG5cdFx0XHRcdFx0dGhpcy5jb2x1bW5UZXh0cy5wdXNoKGFyZ3MuY29sdW1uLmFjdHVhbFRleHQpO1xyXG5cclxuXHRcdFx0XHRpZiAoIXRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFOdW1iZXIodGhpcy5zdWJUb3RhbHNbZmllbGROYW1lXSkgfHxcclxuXHRcdFx0XHRcdFx0aXNOYU4oTnVtYmVyKHRoaXMuc3ViVG90YWxzW2ZpZWxkTmFtZV0pKVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW2ZpZWxkTmFtZV0gPSAwO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5zdWJUb3RhbHNbZmllbGROYW1lXSArPSBOdW1iZXIodmFsdWUpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHR0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5jb2x1bW5zLmxlbmd0aCA9PSAxXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyBcInJvd1wiICsgYXJncy5yb3cuYWN0dWFsVGV4dCArIGZpZWxkTmFtZSDooajnpLooY2VsbDogYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIGFyZ3MuY29sdW1uQ2VsbFR5cGUgPT09IFwiZ3JhbmRUb3RhbFwiKVxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdCkgfHxcclxuXHRcdFx0XHRcdFx0aXNOYU4oXHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zdWJUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW4uYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XSA9IDA7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArIGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdF0gKz0gTnVtYmVyKHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gLS0tPiBhbGxEYXRhVmFsdWXkuK3ov5nkuKrljZXlhYPmoLznmoTlgLzkuI3mraPnoa5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRhcmdzLmNvbHVtbkNlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIiAmJlxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuYWxsRGF0YVZhbHVlICYmIHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgKyBcIkdyYW5kIFRvdGFsXCIgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8g5oqK5YmN6L656L+Z5LiqZmllbGTnmoTlh6DliJdzdWJ0b3RhbOWKoOi1t+adpVxyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbHVtblRleHRzID0gdW5pcUJ5KHRoaXMuY29sdW1uVGV4dHMsIChlbCkgPT4gZWwpO1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsID0gMDtcclxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtblRleHRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMuY29sdW1uVGV4dHNbaV07XHJcblx0XHRcdFx0XHRcdFx0dmFsICs9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArIGVsZW1lbnQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdF07XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IHZhbDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IHZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCBkYXRhVHlwZSA9IGZpZWxkLmRhdGFUeXBlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJzdHJpbmdcIiB8fFxyXG5cdFx0XHRcdGRhdGFUeXBlID09IFwibnZhcmNoYXJcIiB8fFxyXG5cdFx0XHRcdGRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJkYXRldGltZVwiXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmICghdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmFsbERhdGFWYWx1ZSAmJiB0aGlzLmFsbERhdGFWYWx1ZS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0bGV0IHJvd09ianMgPVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlW3RoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0XHRpZiAocm93T2Jqcykge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzQXJyID0gSlNPTi5wYXJzZShcclxuXHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHJvd09ianMpXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgb2JqQXJyID0gcm93T2Jqc0Fyci5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdGVsLmFjdHVhbFRleHQgPT0gZmllbGROYW1lICYmIGVsLmlzR3JhbmRTdW1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChvYmpBcnIgJiYgb2JqQXJyLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZ3JhbmRUb3RhbHMpLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSB0aGlzLmdyYW5kVG90YWxzW2ZpZWxkTmFtZV07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRhcmdzLnZhbHVlID0gdGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoYXJncy5jb2x1bW5DZWxsVHlwZSA9PT0gXCJncmFuZFRvdGFsXCIpIHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYWxsRGF0YVZhbHVlICYmIHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlW3RoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgcm93T2Jqc0FyciA9IEpTT04ucGFyc2UoXHJcblx0XHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHJvd09ianMpXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IG9iakFyciA9IHJvd09ianNBcnIuZmlsdGVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbC5pc0dyYW5kU3VtXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKG9iakFyciAmJiBvYmpBcnIubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRPYmplY3Qua2V5cyh0aGlzLmdyYW5kVG90YWxzKS5pbmNsdWRlcyhcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb2xcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQvLyBpZiAoXHJcblx0XHRcdFx0XHRcdC8vIFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdFx0XHQvLyApIHtcclxuXHRcdFx0XHRcdFx0Ly8gXHRhcmdzLnZhbHVlID0gdGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0Ly8gXHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdC8vIFx0XTtcclxuXHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5hbGxEYXRhVmFsdWUgJiYgdGhpcy5hbGxEYXRhVmFsdWUubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hbGxEYXRhVmFsdWVbdGhpcy5hbGxEYXRhVmFsdWUubGVuZ3RoIC0gMV07XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGxldCBvYmpBcnIgPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bSAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRlbC5jb2x1bW5IZWFkZXJzID09IGFyZ3MuY29sdW1uLmFjdHVhbFRleHRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChvYmpBcnIgJiYgb2JqQXJyLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZ3JhbmRUb3RhbHMpLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb2xcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0aGlzLmZvcm1hdFZhbChhcmdzLCBmaWVsZE5hbWUpO1xyXG5cdFx0cmV0dXJuIGFyZ3MudmFsdWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZvcm1hdFZhbChhcmdzLCBmaWVsZE5hbWUpIHtcclxuXHRcdHRoaXMuY29uZmlnRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblx0XHRcdGlmIChmaWVsZC5jb2xOYW1lID09IGZpZWxkTmFtZSkge1xyXG5cdFx0XHRcdHN3aXRjaCAoZmllbGQuZGF0YVR5cGUpIHtcclxuXHRcdFx0XHRcdGNhc2UgXCJkYXRlXCI6XHJcblx0XHRcdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcclxuXHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUpIGFyZ3MudmFsdWUgPSBuZXcgRGF0ZShhcmdzLnZhbHVlKTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRleGNsdWRlRmllbGRzKGZpZWxkcywgZGF0YSkge1xyXG5cdFx0bGV0IG5hbWVhcnJheSA9IFtdO1xyXG5cdFx0bGV0IGFycmF5ID0gW107XHJcblx0XHRmb3IgKGxldCBwcm9wIGluIGRhdGEpIHtcclxuXHRcdFx0YXJyYXkucHVzaChwcm9wKTtcclxuXHRcdH1cclxuXHRcdGZvciAobGV0IGl0ZW0gb2YgZmllbGRzKSB7XHJcblx0XHRcdG5hbWVhcnJheS5wdXNoKGl0ZW0uY29sTmFtZSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmV4Y2x1ZGVGaWVsZHMgPSBkaWZmZXJlbmNlV2l0aChhcnJheSwgbmFtZWFycmF5KTtcclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5leGNsdWRlRmllbGRzLmxlbmd0aCAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5ncm91cFNldHRpbmdzICYmXHJcblx0XHRcdHRoaXMuY29uZmlnLmdyb3VwU2V0dGluZ3MubGVuZ3RoXHJcblx0XHQpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmV4Y2x1ZGVGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRjb25zdCBlbCA9IHRoaXMuZXhjbHVkZUZpZWxkc1tpXTtcclxuXHRcdFx0XHRpZiAoc3RhcnRzV2l0aChlbCwgdGhpcy5jb25maWcuZ3JvdXBTZXR0aW5nc1swXS5uYW1lICsgXCJfXCIpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmV4Y2x1ZGVGaWVsZHMuc3BsaWNlKGksIDEpO1xyXG5cdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRJbmZvKCkge1xyXG5cdFx0dGhpcy5kYXRlUGlwZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGF0ZVBpcGVcIik7XHJcblx0XHR0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuXHRcdEwxMG4ubG9hZCh7XHJcblx0XHRcdFwiZW4tVVNcIjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR6aDoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcInpoLUhhbnQtSEtcIjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRqYToge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRrbzoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRmcjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgb25GaWVsZERyb3AoYXJnczogRmllbGREcm9wRXZlbnRBcmdzKSB7XHJcblx0XHQvL2NoYW5nZSB0aGUgY2FsY3VhbHRlRmllbGQgbWV0aG9kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBjYWxjdWxhdGVcclxuXHRcdGNvbnN0IGNhbGN1YWx0ZUZpZWxkID0gdGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKFxyXG5cdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IGFyZ3MuZmllbGROYW1lICYmIGVsLmlzQ2FsY3VsYXRlZEZpZWxkXHJcblx0XHQpO1xyXG5cdFx0aWYgKGNhbGN1YWx0ZUZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJncy5kcm9wRmllbGQudHlwZSA9XHJcblx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRDYWxjdWxhdGVNZXRob2QoXHJcblx0XHRcdFx0XHRjYWxjdWFsdGVGaWVsZFswXS5jb2xOYW1lXHJcblx0XHRcdFx0KSBhcyBhbnk7XHJcblx0XHRcdGFyZ3MuZHJvcEZpZWxkLmNhcHRpb24gPSBhcmdzLmRyb3BGaWVsZC5jYXB0aW9uXHJcblx0XHRcdFx0LnJlcGxhY2UoXCJDYWxjdWxhdGVcIiwgXCJcIilcclxuXHRcdFx0XHQudHJpbSgpO1xyXG5cdFx0fVxyXG5cdFx0Zm9yIChcclxuXHRcdFx0bGV0IGkgPSAwO1xyXG5cdFx0XHRpIDwgYXJncy5kYXRhU291cmNlU2V0dGluZ3MuZmlsdGVyU2V0dGluZ3MubGVuZ3RoO1xyXG5cdFx0XHRpKytcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0YXJncy5kYXRhU291cmNlU2V0dGluZ3MuZmlsdGVyU2V0dGluZ3NbaV0ubmFtZSA9PT1cclxuXHRcdFx0XHRcdGFyZ3MuZmllbGROYW1lICYmXHJcblx0XHRcdFx0YXJncy5kcm9wQXhpcyA9PT0gXCJcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5maWx0ZXJTZXR0aW5ncy5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJTZXR0aW5ncyA9IGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLmZpbHRlclNldHRpbmdzO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNyZWF0ZUJ1dHRvblRleHQoZmllbGQsIGksIGF4aXMsIHZhbHVlUG9zKSB7XHJcblx0XHRsZXQgYnV0dG9uVGV4dDogSFRNTEVsZW1lbnQ7XHJcblx0XHRsZXQgYWdncmVnYXRpb246IHN0cmluZztcclxuXHRcdGxldCBmaWx0ZXJNZW06IHN0cmluZztcclxuXHRcdGlmIChheGlzID09PSBcImZpbHRlcnNcIikge1xyXG5cdFx0XHRmaWx0ZXJNZW0gPSAoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoucGl2b3RCdXR0b25Nb2R1bGUgYXMgYW55XHJcblx0XHRcdCkudXBkYXRlQnV0dG9udGV4dChmaWVsZFtpXS5uYW1lKTtcclxuXHRcdH1cclxuXHRcdGxldCBlbmdpbmVNb2R1bGUgPSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZTtcclxuXHRcdGlmIChlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0YWdncmVnYXRpb24gPSBlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdLmFnZ3JlZ2F0ZVR5cGU7XHJcblx0XHRcdGFnZ3JlZ2F0aW9uID1cclxuXHRcdFx0XHRhZ2dyZWdhdGlvbiA9PT0gXCJTdW1cIlxyXG5cdFx0XHRcdFx0PyBlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdLnR5cGUgIT09IFwibnVtYmVyXCJcclxuXHRcdFx0XHRcdFx0PyBcIkNvdW50XCJcclxuXHRcdFx0XHRcdFx0OiBcIlN1bVwiXHJcblx0XHRcdFx0XHQ6IGFnZ3JlZ2F0aW9uO1xyXG5cdFx0fVxyXG5cdFx0bGV0IHRleHQ6IHN0cmluZyA9IGZpZWxkW2ldLmNhcHRpb24gPyBmaWVsZFtpXS5jYXB0aW9uIDogZmllbGRbaV0ubmFtZTtcclxuXHRcdGJ1dHRvblRleHQgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XHJcblx0XHRcdGF0dHJzOiB7XHJcblx0XHRcdFx0dGl0bGU6XHJcblx0XHRcdFx0XHRheGlzID09PSBcImZpbHRlcnNcIlxyXG5cdFx0XHRcdFx0XHQ/IHRleHQgKyBcIiAoXCIgKyBmaWx0ZXJNZW0gKyBcIilcIlxyXG5cdFx0XHRcdFx0XHQ6ICF0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5nc1xyXG5cdFx0XHRcdFx0XHRcdFx0LnNob3dBZ2dyZWdhdGlvbk9uVmFsdWVGaWVsZCB8fFxyXG5cdFx0XHRcdFx0XHQgIGF4aXMgIT09IFwidmFsdWVzXCIgfHxcclxuXHRcdFx0XHRcdFx0ICBhZ2dyZWdhdGlvbiA9PT0gXCJDYWxjdWxhdGVkRmllbGRcIlxyXG5cdFx0XHRcdFx0XHQ/IHRleHRcclxuXHRcdFx0XHRcdFx0OiB0aGlzLnBpdm90T2JqLmxvY2FsZU9iai5nZXRDb25zdGFudChhZ2dyZWdhdGlvbikgK1xyXG5cdFx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdFx0ICB0aGlzLnBpdm90T2JqLmxvY2FsZU9iai5nZXRDb25zdGFudChcIm9mXCIpICtcclxuXHRcdFx0XHRcdFx0ICBcIiBcIiArXHJcblx0XHRcdFx0XHRcdCAgdGV4dCxcclxuXHRcdFx0XHR0YWJpbmRleDogXCItMVwiLFxyXG5cdFx0XHRcdFwiYXJpYS1kaXNhYmxlZFwiOiBcImZhbHNlXCIsXHJcblx0XHRcdFx0b25jb250ZXh0bWVudTogXCJyZXR1cm4gZmFsc2U7XCIsXHJcblx0XHRcdFx0XCJkYXRhLXR5cGVcIjogdmFsdWVQb3MgPT09IGkgPyBcIlwiIDogYWdncmVnYXRpb24sXHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzTmFtZTpcclxuXHRcdFx0XHRcImUtY29udGVudFwiICtcclxuXHRcdFx0XHRcIiBcIiArXHJcblx0XHRcdFx0KHRoaXMucGl2b3RPYmouZ2V0TW9kdWxlTmFtZSgpID09PSBcInBpdm90dmlld1wiXHJcblx0XHRcdFx0XHQ/IHRoaXMucGl2b3RPYmouZ3JvdXBpbmdCYXJTZXR0aW5ncy5hbGxvd0RyYWdBbmREcm9wICYmXHJcblx0XHRcdFx0XHQgIGZpZWxkW2ldLmFsbG93RHJhZ0FuZERyb3BcclxuXHRcdFx0XHRcdFx0PyBcIlwiXHJcblx0XHRcdFx0XHRcdDogXCJlLWRpc2FibGUtZHJhZ1wiXHJcblx0XHRcdFx0XHQ6IFwiXCIpLFxyXG5cdFx0XHRpbm5lckhUTUw6XHJcblx0XHRcdFx0YXhpcyA9PT0gXCJmaWx0ZXJzXCJcclxuXHRcdFx0XHRcdD8gdGV4dCArIFwiIChcIiArIGZpbHRlck1lbSArIFwiKVwiXHJcblx0XHRcdFx0XHQ6ICF0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5nc1xyXG5cdFx0XHRcdFx0XHRcdC5zaG93QWdncmVnYXRpb25PblZhbHVlRmllbGQgfHxcclxuXHRcdFx0XHRcdCAgYXhpcyAhPT0gXCJ2YWx1ZXNcIiB8fFxyXG5cdFx0XHRcdFx0ICBhZ2dyZWdhdGlvbiA9PT0gXCJDYWxjdWxhdGVkRmllbGRcIlxyXG5cdFx0XHRcdFx0PyB0ZXh0XHJcblx0XHRcdFx0XHQ6IHRoaXMucGl2b3RPYmoubG9jYWxlT2JqLmdldENvbnN0YW50KGFnZ3JlZ2F0aW9uKSArXHJcblx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdCAgdGhpcy5waXZvdE9iai5sb2NhbGVPYmouZ2V0Q29uc3RhbnQoXCJvZlwiKSArXHJcblx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdCAgdGV4dCxcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIGJ1dHRvblRleHQ7XHJcblx0fVxyXG5cclxuXHQvLyBDYWxjdWxhdGVkIGZpZWxk5LqL5Lu277ya5Yib5bu6XHJcblx0cHVibGljIGNhbGN1bGF0ZWRGaWVsZENyZWF0ZShhcmdzOiBDYWxjdWxhdGVkRmllbGRDcmVhdGVFdmVudEFyZ3MpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5jYWxjdWxhdGVkRmllbGQubmFtZSAhPT0gXCJcIiAmJlxyXG5cdFx0XHRhcmdzLmNhbGN1bGF0ZWRGaWVsZC5uYW1lLnRyaW0oKSAhPT0gXCJcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBpbmRleCA9XHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzLmZpbmRJbmRleChcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwubmFtZSA9PT0gYXJncy5jYWxjdWxhdGVkRmllbGQubmFtZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdGlmIChpbmRleCAhPT0gLTEpIHtcclxuXHRcdFx0XHRpZiAoYXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybWF0U3RyaW5nID09PSBcIlwiKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3NbXHJcblx0XHRcdFx0XHRcdGluZGV4XHJcblx0XHRcdFx0XHRdLmZvcm1hdFN0cmluZyA9IFwiTjJcIjtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzW1xyXG5cdFx0XHRcdFx0XHRpbmRleFxyXG5cdFx0XHRcdFx0XS5mb3JtYXRTdHJpbmcgPSBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtYXRTdHJpbmc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtYXRTdHJpbmcgPT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGFyZ3MuY2FsY3VsYXRlZEZpZWxkLmZvcm1hdFN0cmluZyA9IFwiTjJcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8g56e76Zmk6YeN5aSNXHJcblx0XHRcdGxldCBmSW5kZXggPSB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMuZmluZEluZGV4KFxyXG5cdFx0XHRcdChmKSA9PiBmLm5hbWUgPT09IGFyZ3MuY2FsY3VsYXRlZEZpZWxkLm5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGZJbmRleCA+IC0xKSB7XHJcblx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzLnNwbGljZShmSW5kZXgsIDEpO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIOWMuemFjei/kOeul+espiBGaXJzdCB8fCBMYXN0XHJcblx0XHRcdGxldCBmb3JtdWxhU3RyID0gYXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybXVsYTtcclxuXHRcdFx0bGV0IHJlZzEgPSAvXCJGaXJzdFxcKCguKz8pXFwpXCIvZztcclxuXHRcdFx0bGV0IHJlZzIgPSAvXCJMYXN0XFwoKC4rPylcXClcIi9nO1xyXG5cdFx0XHRpZiAocmVnMS50ZXN0KGZvcm11bGFTdHIpIHx8IHJlZzIudGVzdChmb3JtdWxhU3RyKSkge1xyXG5cdFx0XHRcdC8vIOWIpOaWreaYr+WQpuWtmOWcqEZpcnN0IHx8IExhc3Qg6KGo6L6+5byPXHJcblx0XHRcdFx0bGV0IG1hdGNoRmlyc3RGaWVsZHMgPSBBcnJheS5mcm9tKFxyXG5cdFx0XHRcdFx0Zm9ybXVsYVN0cltcIm1hdGNoQWxsXCJdKC9cIkZpcnN0XFwoKC4rPylcXClcIi9nKSxcclxuXHRcdFx0XHRcdChtKSA9PiB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hTdHI6IG1bMF0sXHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hXb3JkOiBtWzFdLFxyXG5cdFx0XHRcdFx0XHRcdHJlcGxhY2VWYWx1ZTogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRtYXRjaE1ldGhvZDogXCJGaXJzdFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTGFzdEZpZWxkcyA9IEFycmF5LmZyb20oXHJcblx0XHRcdFx0XHRmb3JtdWxhU3RyW1wibWF0Y2hBbGxcIl0oL1wiTGFzdFxcKCguKz8pXFwpXCIvZyksXHJcblx0XHRcdFx0XHQobSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0XHRcdG1hdGNoU3RyOiBtWzBdLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoV29yZDogbVsxXSxcclxuXHRcdFx0XHRcdFx0XHRyZXBsYWNlVmFsdWU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hNZXRob2Q6IFwiTGFzdFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTWF4RmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJNYXhcXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIk1heFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTWluRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJNaW5cXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIk1pblwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoU3VtRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJTdW1cXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIlN1bVwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoQXZnRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJBdmdcXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIkF2Z1wiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0bWF0Y2hGaXJzdEZpZWxkcy5ldmVyeSgoeCkgPT5cclxuXHRcdFx0XHRcdFx0dGhpcy5hbGxvd2VkQ2FsY3VsYXRlZEZpZWxkcy5pbmNsdWRlcyh4Lm1hdGNoV29yZClcclxuXHRcdFx0XHRcdCkgJiZcclxuXHRcdFx0XHRcdG1hdGNoTGFzdEZpZWxkcy5ldmVyeSgoeCkgPT5cclxuXHRcdFx0XHRcdFx0dGhpcy5hbGxvd2VkQ2FsY3VsYXRlZEZpZWxkcy5pbmNsdWRlcyh4Lm1hdGNoV29yZClcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdC8vIOWIpOaWrUZpcnN05ZKMTGFzdOihqOi+vuW8j+WGheeahOWtl+auteaYr+WQpuWQiOazlVxyXG5cdFx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtdWxhOiBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtdWxhLFxyXG5cdFx0XHRcdFx0XHRtYXRjaEZpZWxkczogW1xyXG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaEZpcnN0RmllbGRzLFxyXG5cdFx0XHRcdFx0XHRcdC4uLm1hdGNoTGFzdEZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaE1heEZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaE1pbkZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaFN1bUZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaEF2Z0ZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XSxcclxuXHRcdFx0XHRcdFx0Z3JhbmRUb3RhbDogMCxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0bGV0IGZpZWxkTmFtZSA9IChcclxuXHRcdFx0XHRcdFx0Zm9ybXVsYVN0ci5zcGxpdChcIkZpcnN0KFwiKVsxXSB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtdWxhU3RyLnNwbGl0KFwiTGFzdChcIilbMV1cclxuXHRcdFx0XHRcdCkuc3BsaXQoXCIpXCIpWzBdO1xyXG5cdFx0XHRcdFx0YXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybXVsYSA9XHJcblx0XHRcdFx0XHRcdFwiJ1xcXCJcIiArIFwiU3VtKFwiICsgZmllbGROYW1lICsgJylcIj0nICsgZm9ybXVsYVN0ciArIFwiJ1wiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gQ2FsY3VsYXRlZCBmaWVsZOS6i+S7tu+8muWujOaIkFxyXG5cdHB1YmxpYyBhY3Rpb25Db21wbGV0ZShhcmdzKSB7XHJcblx0XHRpZiAoYXJncy5hY3Rpb25OYW1lID09IFwiRmllbGQgcmVtb3ZlZFwiKSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRhcmdzLmZpZWxkSW5mbyAmJlxyXG5cdFx0XHRcdGFyZ3MuZmllbGRJbmZvLmZpZWxkSXRlbSAmJlxyXG5cdFx0XHRcdGFyZ3MuZmllbGRJbmZvLmZpZWxkSXRlbS50eXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0bGV0IGZpZWxkID0gYXJncy5maWVsZEluZm8uZmllbGROYW1lO1xyXG5cdFx0XHRcdC8vIFJlbW92ZSB0aGUgZGVsZXRlZCBjYWxjdWxhdGVkIGZpZWxkIGZyb20gYW4gc3RvcmVkIGFycmF5LlxyXG5cdFx0XHRcdHRoaXMuY3VzdG9tQ2FsY3VsYXRlZEZpZWxkcyA9XHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMuZmlsdGVyKGZ1bmN0aW9uIChvYmopIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIG9iai5uYW1lICE9PSBmaWVsZDtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBDYWxjdWxhdGVkIGZpZWxk5LqL5Lu277ya5byA5aeLXHJcblx0cHVibGljIGFjdGlvbkJlZ2luKGFyZ3MpIHtcclxuXHRcdGlmIChhcmdzLmFjdGlvbk5hbWUgPT09IFwiRWRpdCBjYWxjdWxhdGVkIGZpZWxkXCIpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZSAmJlxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZmllbGRMaXN0W1xyXG5cdFx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZVxyXG5cdFx0XHRcdFx0XVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZmllbGRMaXN0W1xyXG5cdFx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZVxyXG5cdFx0XHRcdFx0XS5mb3JtdWxhID0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldLmZvcm11bGE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlc2l6ZVN0b3AoYXJncykge1xyXG5cdFx0aWYgKHRoaXMuY29uZmlnLmNvbHVtbnNXaWR0aCkge1xyXG5cdFx0XHRjb25zdCBoZWFkZXJfZmllbGQgPSB0aGlzLmNvbmZpZy5jb2x1bW5zV2lkdGguZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuaGVhZGVyVGV4dCA9PT0gYXJncy5jb2x1bW4uaGVhZGVyVGV4dFxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAoaGVhZGVyX2ZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRoZWFkZXJfZmllbGRbMF0ud2lkdGggPSBwYXJzZUludChhcmdzLmNvbHVtbi53aWR0aCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuY29sdW1uc1dpZHRoLnB1c2goe1xyXG5cdFx0XHRcdFx0aGVhZGVyVGV4dDogYXJncy5jb2x1bW4uaGVhZGVyVGV4dCxcclxuXHRcdFx0XHRcdHdpZHRoOiBwYXJzZUludChhcmdzLmNvbHVtbi53aWR0aCksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuY29uZmlnLmNvbHVtbnNXaWR0aCA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5zV2lkdGgucHVzaCh7XHJcblx0XHRcdFx0aGVhZGVyVGV4dDogYXJncy5jb2x1bW4uaGVhZGVyVGV4dCxcclxuXHRcdFx0XHR3aWR0aDogcGFyc2VJbnQoYXJncy5jb2x1bW4ud2lkdGgpLFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHBvcnRsZXQgPSB0aGlzLnBvcnRsZXQ7XHJcblx0XHRwb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdGNvbnN0IGluZGV4ID0gdGhpcy5wb3J0bGV0cy5maW5kSW5kZXgoKHgpID0+IHgubmV3SWQgPT09IHBvcnRsZXQubmV3SWQpO1xyXG5cdFx0aWYgKGluZGV4ID4gLTEpIHRoaXMucG9ydGxldHNbaW5kZXhdID0gcG9ydGxldDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBvbkxvYWQoKTogdm9pZCB7fVxyXG5cclxuXHRwcml2YXRlIGVuZ2luZVBvcHVsYXRlZChhcmdzKSB7XHJcblx0XHRsZXQgY2xvbmVkVmFsdWVzOiBJUGl2b3RWYWx1ZXM7XHJcblx0XHRsZXQgY3VycmVudFBpdm90VmFsdWVzOiBhbnkgPSB0aGlzLmdldENsb25lZFBpdm90VmFsdWVzKFxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5waXZvdFZhbHVlc1xyXG5cdFx0KTtcclxuXHRcdGxldCBwYWdlU2V0dGluZ3M6IElQYWdlU2V0dGluZ3MgPVxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5wYWdlU2V0dGluZ3M7XHJcblxyXG5cdFx0Ly8gdGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUucGFnZVNldHRpbmdzID0gbnVsbDtcclxuXHRcdGlmICh0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5nZW5lcmF0ZUdyaWREYXRhKSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmdlbmVyYXRlR3JpZERhdGEoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MsXHJcblx0XHRcdFx0dHJ1ZVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRjbG9uZWRWYWx1ZXMgPSB0aGlzLmdldENsb25lZFBpdm90VmFsdWVzKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLnBpdm90VmFsdWVzXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5waXZvdFZhbHVlcyA9IGN1cnJlbnRQaXZvdFZhbHVlcztcclxuXHJcblx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLnBhZ2VTZXR0aW5ncyA9IHBhZ2VTZXR0aW5ncztcclxuXHJcblx0XHRcdC8vIEhlcmUgXCJjbG9uZWRWYWx1ZXNcIiBjb250YWlucyB0aGUgd2hvbGUgcGl2b3QgdmFsdWVzLlxyXG5cdFx0XHR0aGlzLmFsbERhdGFWYWx1ZSA9IGNsb25lZFZhbHVlcztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0Q2xvbmVkUGl2b3RWYWx1ZXMocGl2b3RWYWx1ZXM6IElQaXZvdFZhbHVlcyk6IElQaXZvdFZhbHVlcyB7XHJcblx0XHRsZXQgY2xvbmVkU2V0czogSVBpdm90VmFsdWVzID0gW107XHJcblx0XHRpZiAocGl2b3RWYWx1ZXMgJiYgcGl2b3RWYWx1ZXMubGVuZ3RoKSB7XHJcblx0XHRcdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBwaXZvdFZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGlmIChwaXZvdFZhbHVlc1tpXSkge1xyXG5cdFx0XHRcdFx0Y2xvbmVkU2V0c1tpXSA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHBpdm90VmFsdWVzW2ldLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdGlmIChwaXZvdFZhbHVlc1tpXVtqXSkge1xyXG5cdFx0XHRcdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlICovXHJcblx0XHRcdFx0XHRcdFx0Y2xvbmVkU2V0c1tpXVtqXSA9IHRoaXMuZ2V0Q2xvbmVkUGl2b3RWYWx1ZU9iaihcclxuXHRcdFx0XHRcdFx0XHRcdHBpdm90VmFsdWVzW2ldW2pdIGFzIHsgW2tleTogc3RyaW5nXTogT2JqZWN0IH1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdC8qIGVzbGludC1lbmFibGUgKi9cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNsb25lZFNldHM7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENsb25lZFBpdm90VmFsdWVPYmooZGF0YTogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfSk6IHtcclxuXHRcdFtrZXk6IHN0cmluZ106IE9iamVjdDtcclxuXHR9IHtcclxuXHRcdGxldCBrZXlQb3M6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgZnJhbWVkU2V0OiBhbnkgPSB7fTtcclxuXHRcdGlmICghKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSkge1xyXG5cdFx0XHRsZXQgZmllbGRzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGRhdGEpO1xyXG5cdFx0XHR3aGlsZSAoa2V5UG9zIDwgZmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdGZyYW1lZFNldFtmaWVsZHNba2V5UG9zXV0gPSBkYXRhW2ZpZWxkc1trZXlQb3NdXTtcclxuXHRcdFx0XHRrZXlQb3MrKztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZnJhbWVkU2V0ID0gZGF0YTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBmcmFtZWRTZXQ7XHJcblx0fVxyXG5cclxuXHQvLyNyZWdpb24gRmlsdGVyaW5nIHRoZSBUcmVlTm9kZXNcclxuXHRwcml2YXRlIHNlYXJjaE5vZGVzKGFyZ3MpIHtcclxuXHRcdGxldCBfdGV4dCA9IGFyZ3MubWFza2VkVmFsdWU7XHJcblx0XHRsZXQgcHJlZGljYXRzID0gW10sXHJcblx0XHRcdF9hcnJheSA9IFtdLFxyXG5cdFx0XHRfZmlsdGVyID0gW107XHJcblx0XHRpZiAoX3RleHQgPT0gXCJcIikge1xyXG5cdFx0XHR0aGlzLmNoYW5nZURhdGFTb3VyY2UoXHJcblx0XHRcdFx0KCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueSkuZ2V0VHJlZURhdGEoKVxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bGV0IHByZWRpY2F0ZSA9IG5ldyBQcmVkaWNhdGUoXCJjYXB0aW9uXCIsIFwiY29udGFpbnNcIiwgX3RleHQsIHRydWUpO1xyXG5cdFx0XHRsZXQgZmlsdGVyZWRMaXN0ID0gbmV3IERhdGFNYW5hZ2VyKFxyXG5cdFx0XHRcdCgodGhpcyBhcyBhbnkpLmZpZWxkbGlzdE9iai50cmVlVmlld01vZHVsZSBhcyBhbnkpLmdldFRyZWVEYXRhKClcclxuXHRcdFx0KS5leGVjdXRlTG9jYWwobmV3IFF1ZXJ5KCkud2hlcmUocHJlZGljYXRlKSk7XHJcblx0XHRcdGZvciAobGV0IGogPSAwOyBqIDwgZmlsdGVyZWRMaXN0Lmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0X2ZpbHRlci5wdXNoKGZpbHRlcmVkTGlzdFtqXVtcImlkXCJdKTtcclxuXHRcdFx0XHRsZXQgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVySXRlbXMoXHJcblx0XHRcdFx0XHRmaWx0ZXJlZExpc3Rbal0sXHJcblx0XHRcdFx0XHQoXHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueVxyXG5cdFx0XHRcdFx0KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0X2FycmF5LmluZGV4T2YoZmlsdGVyc1tpXSkgPT0gLTEgJiZcclxuXHRcdFx0XHRcdFx0ZmlsdGVyc1tpXSAhPSBudWxsXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0X2FycmF5LnB1c2goZmlsdGVyc1tpXSk7XHJcblx0XHRcdFx0XHRcdHByZWRpY2F0cy5wdXNoKFxyXG5cdFx0XHRcdFx0XHRcdG5ldyBQcmVkaWNhdGUoXCJpZFwiLCBcImVxdWFsXCIsIGZpbHRlcnNbaV0sIGZhbHNlKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAocHJlZGljYXRzLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5jaGFuZ2VEYXRhU291cmNlKFtdKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRsZXQgcXVlcnkgPSBuZXcgUXVlcnkoKS53aGVyZShQcmVkaWNhdGUub3IocHJlZGljYXRzKSk7XHJcblx0XHRcdFx0bGV0IG5ld0xpc3QgPSBuZXcgRGF0YU1hbmFnZXIoXHJcblx0XHRcdFx0XHQoXHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueVxyXG5cdFx0XHRcdFx0KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdFx0KS5leGVjdXRlTG9jYWwocXVlcnkpO1xyXG5cdFx0XHRcdHRoaXMuY2hhbmdlRGF0YVNvdXJjZShuZXdMaXN0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly9GaW5kIHRoZSBQYXJlbnQgTm9kZXMgZm9yIGNvcnJlc3BvbmRpbmcgY2hpbGRzXHJcblx0cHVibGljIGdldEZpbHRlckl0ZW1zKGZMaXN0LCBsaXN0KSB7XHJcblx0XHRsZXQgbm9kZXMgPSBbXTtcclxuXHRcdG5vZGVzLnB1c2goZkxpc3RbXCJpZFwiXSk7XHJcblx0XHRsZXQgcXVlcnkyID0gbmV3IFF1ZXJ5KCkud2hlcmUoXCJpZFwiLCBcImVxdWFsXCIsIGZMaXN0W1wicGlkXCJdLCBmYWxzZSk7XHJcblx0XHRsZXQgZkxpc3QxID0gbmV3IERhdGFNYW5hZ2VyKGxpc3QpLmV4ZWN1dGVMb2NhbChxdWVyeTIpO1xyXG5cdFx0aWYgKGZMaXN0MS5sZW5ndGggIT0gMCkge1xyXG5cdFx0XHRsZXQgcE5vZGUgPSB0aGlzLmdldEZpbHRlckl0ZW1zKGZMaXN0MVswXSwgbGlzdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcE5vZGUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAobm9kZXMuaW5kZXhPZihwTm9kZVtpXSkgPT0gLTEgJiYgcE5vZGVbaV0gIT0gbnVsbClcclxuXHRcdFx0XHRcdG5vZGVzLnB1c2gocE5vZGVbaV0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBub2RlcztcclxuXHRcdH1cclxuXHRcdHJldHVybiBub2RlcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBjcmVhdGVkKGFyZ3M6IGFueSkge1xyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqICYmICF0aGlzLmZpZWxkbGlzdE9iai5lbmdpbmVNb2R1bGUuZmllbGRzKSB7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmVuZ2luZU1vZHVsZS5maWVsZHMgPSBbXTtcclxuXHRcdH1cclxuXHRcdGxldCBzZWFyY2ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XHJcblx0XHRzZWFyY2guaWQgPSBcInBpdm90U2VhcmNoQm94XCIgKyB0aGlzLmZpZWxkbGlzdE9iai5lbGVtZW50LmlkO1xyXG5cdFx0bGV0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XCIjXCIgKyB0aGlzLmZpZWxkbGlzdE9iai5lbGVtZW50LmlkICsgXCJfQ29udGFpbmVyIC5lLWZpZWxkLXRhYmxlXCJcclxuXHRcdCk7XHJcblx0XHRpZiAoZWwpIGVsLnByZXBlbmQoc2VhcmNoKTtcclxuXHRcdHRoaXMucGl2b3RTZWFyY2hCb3ggPSBuZXcgTWFza2VkVGV4dEJveCh7XHJcblx0XHRcdHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0aW9uLlNFQVJDSCB8fCBcIi5TRUFSQ0hcIixcclxuXHRcdFx0Y3NzQ2xhc3M6IFwicGl2b3Qtc2VhcmNoXCIsXHJcblx0XHRcdGNoYW5nZTogdGhpcy5zZWFyY2hOb2Rlcy5iaW5kKHRoaXMpLFxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnBpdm90U2VhcmNoQm94LmFwcGVuZFRvKFxyXG5cdFx0XHRcIiNwaXZvdFNlYXJjaEJveFwiICsgdGhpcy5maWVsZGxpc3RPYmouZWxlbWVudC5pZFxyXG5cdFx0KTtcclxuXHJcblx0XHQvLyBORVcgRGFzaGJvYXJkIOeCueWHu1wiYXBwbHlcIuaXtu+8jOivt+axguaWsOaVsOaNrlxyXG5cdFx0bGV0IGFwcGx5QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmVsZW1lbnQuaWQgKyBcIl9EZWZlclVwZGF0ZUJ1dHRvbjFcIlxyXG5cdFx0KTtcclxuXHRcdGFwcGx5QnRuICYmXHJcblx0XHRcdGFwcGx5QnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0RGF0YUJ5UG9ydGxldHNOZXcoXHJcblx0XHRcdFx0XHRbdGhpcy5wb3J0bGV0XSxcclxuXHRcdFx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkLFxyXG5cdFx0XHRcdFx0ZmFsc2VcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBmaWVsZExpc3RSZWZyZXNoZWQoYXJncykge1xyXG5cdFx0aWYgKHRoaXMucGl2b3RTZWFyY2hCb3gpIHtcclxuXHRcdFx0dGhpcy5waXZvdFNlYXJjaEJveC52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdHRoaXMuY2hhbmdlRGF0YVNvdXJjZShcclxuXHRcdFx0XHQodGhpcy5maWVsZGxpc3RPYmoudHJlZVZpZXdNb2R1bGUgYXMgYW55KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNoYW5nZURhdGFTb3VyY2UoZGF0YSkge1xyXG5cdFx0bGV0IGZpZWxkVGFibGUgPSAodGhpcyBhcyBhbnkpLmZpZWxkbGlzdE9iai50cmVlVmlld01vZHVsZS5maWVsZFRhYmxlO1xyXG5cdFx0aWYgKGZpZWxkVGFibGUpIHtcclxuXHRcdFx0ZmllbGRUYWJsZS5maWVsZHMgPSB7XHJcblx0XHRcdFx0ZGF0YVNvdXJjZTogZGF0YSxcclxuXHRcdFx0XHRpZDogXCJpZFwiLFxyXG5cdFx0XHRcdHRleHQ6IFwiY2FwdGlvblwiLFxyXG5cdFx0XHRcdGlzQ2hlY2tlZDogXCJpc1NlbGVjdGVkXCIsXHJcblx0XHRcdFx0cGFyZW50SUQ6IFwicGlkXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJzcHJpdGVDc3NDbGFzc1wiLFxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly9TTVAyLTI5NTcgZml4IHRoZSBkYXRlIGlzc3VlIG9uIHRoZSByYXcgZGF0YVxyXG5cdHB1YmxpYyBkcmlsbFRocm91Z2goYXJnczogRHJpbGxUaHJvdWdoRXZlbnRBcmdzKSB7XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuZ3JpZENvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y29uc3QgZGF0YSA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IGFyZ3MuZ3JpZENvbHVtbnNbaV0uZmllbGRcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZGF0YVswXS5kYXRhVHlwZSA9PT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdGRhdGFbMF0uZGF0YVR5cGUgPT09IFwiZGF0ZXRpbWVcIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0YXJncy5ncmlkQ29sdW1uc1tpXS50eXBlID0gXCJkYXRlXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdC8vI2VuZHJlZ2lvblxyXG5cclxuXHRwcml2YXRlIHNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwob2JqLCBkYXRhLCBjb2RlKSB7XHJcblx0XHRpZiAoY29kZSA9PT0gLTEpIHtcclxuXHRcdFx0b2JqLnN0eWxlLmNvbG9yID0gZGF0YS5uZWdhRm9udENvbG9yO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udEZhbWlseSA9IGRhdGEubmVnYUZvbnRGYW1pbHlWYWx1ZTtcclxuXHRcdFx0b2JqLnN0eWxlLmZvbnRTaXplID0gZGF0YS5uZWdhRm9udFNpemVWYWx1ZTtcclxuXHRcdFx0b2JqLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGRhdGEubmVnYUJhY2tncm91bmRDb2xvcjtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG9iai5zdHlsZS5jb2xvciA9IGRhdGEuZm9udENvbG9yO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseVZhbHVlO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplVmFsdWU7XHJcblx0XHRcdG9iai5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0Q29tcGFyZUNvbmRpdGlvbmFsKFxyXG5cdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRkYXRhXHJcblx0KSB7XHJcblx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMSkgPT0gMCkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkdyZWF0ZXJUaGFuXCI6IC8vIOWkp+S6jlxyXG5cdFx0XHRcdGNhc2UgXCJHcmVhdGVyVGhhbk9yRXF1YWxUb1wiOiAvLyDlpKfkuo7nrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RFcXVhbHNcIjogLy8g5LiN562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkJldHdlZW5cIjogLy8gdmFsdWUxPD0gdmFsIDw9dmFsdWUyXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikgPT09IDEpIHtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEuY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RCZXR3ZWVuXCI6IC8vIHZhbCA+PSB2YWx1ZTIsIHZhbCA8PSB2YWx1ZTFcclxuXHRcdFx0XHRcdGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUyKSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUyXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUxKSA9PT0gMSkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKGRhdGEuY29tcGFyZVZhbHVlMSk7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiTGVzc1RoYW5cIjtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJHcmVhdGVyVGhhblwiOiAvLyDlpKfkuo5cclxuXHRcdFx0XHRjYXNlIFwiR3JlYXRlclRoYW5PckVxdWFsVG9cIjogLy8g5aSn5LqO562J5LqOXHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoZGF0YS5jb21wYXJlVmFsdWUxKTtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkVxdWFsc1wiOiAvLyDnrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihkYXRhLmNvbXBhcmVWYWx1ZTEpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiRXF1YWxzXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIk5vdEVxdWFsc1wiOiAvLyDkuI3nrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBOdW1iZXIoZGF0YS5jb21wYXJlVmFsdWUxKTtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihkYXRhLmNvbXBhcmVWYWx1ZTEpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiR3JlYXRlclRoYW5cIjtcclxuXHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhbk9yRXF1YWxUb1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJCZXR3ZWVuXCI6IC8vIHZhbHVlMTw9IHZhbCA8PXZhbHVlMlxyXG5cdFx0XHRcdFx0aWYgKE1hdGguc2lnbihkYXRhLmNvbXBhcmVWYWx1ZTIpID09PSAxKSB7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRkYXRhLmNvbXBhcmVWYWx1ZTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEuY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RCZXR3ZWVuXCI6IC8vIHZhbCA+PSB2YWx1ZTIsIHZhbCA8PSB2YWx1ZTFcclxuXHRcdFx0XHRcdGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUyKSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUxXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0Ly8gcHVzaOi/m+aVsOe7hFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUyXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKE1hdGguc2lnbihkYXRhLmNvbXBhcmVWYWx1ZTEpID09PSAtMSkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBkYXRhLmNvbXBhcmVTZWxlY3Q7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiR3JlYXRlclRoYW5cIjogLy8g5aSn5LqOXHJcblx0XHRcdFx0Y2FzZSBcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCI6IC8vIOWkp+S6juetieS6jlxyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCI7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTE7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiQmV0d2VlblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJFcXVhbHNcIjogLy8g562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkVxdWFsc1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RFcXVhbHNcIjogLy8g5LiN562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIk5vdEVxdWFsc1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkJldHdlZW5cIjogLy8gdmFsdWUxPD0gdmFsIDw9dmFsdWUyXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikpIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTE7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTI7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IGRhdGEuY29tcGFyZVZhbHVlMTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMiA9IGRhdGEuY29tcGFyZVZhbHVlMjtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiTm90QmV0d2VlblwiOiAvLyB2YWwgPj0gdmFsdWUyLCB2YWwgPD0gdmFsdWUxXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikpIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IGRhdGEuY29tcGFyZVZhbHVlMTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkxlc3NUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gZGF0YS5jb21wYXJlVmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiTm90QmV0d2VlblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRpbWVBcnJheSDmlbDnu4Tlr7nosaEgW3tcImRhdGVcIjpcIjIwMjEtMDEtMDFcIn0se1wiZGF0ZVwiOlwiMjAyMS0wMi0wMVwifV1cclxuXHQgKiBAcGFyYW0gZW5kRGF0ZSDmiKroh7Pml7bpl7RcclxuXHQgKiBAcGFyYW0gaW50ZXJ2YWwg5pe26Ze06Ze06ZqUIHllYXIgLyBxdWFydGVyIC8gbW9udGhcclxuXHQgKiBAcGFyYW0gdGltZUtleSDml7bpl7TlrZfmrrXlkI0gZGF0ZVxyXG5cdCAqIEByZXR1cm5zIOWIkuWIhuWQjueahOaXtumXtOWIhue7hOWvueixoVxyXG5cdCAqL1xyXG5cdGdldFRpbWVSYW5nZXModGltZUFycmF5LCBlbmREYXRlLCBpbnRlcnZhbCwgdGltZUtleSkge1xyXG5cdFx0Ly8g5bCG5pe26Ze05a2X56ym5Liy6L2s5o2i5Li6IG1vbWVudCDlr7nosaFcclxuXHRcdGNvbnN0IGRhdGVzID0gdGltZUFycmF5Lm1hcCgoaXRlbSkgPT4gbW9tZW50KGl0ZW1bdGltZUtleSB8fCBcImRhdGVcIl0pKTtcclxuXHJcblx0XHQvLyDliIbpmpTnrKZcclxuXHRcdGNvbnN0IGRlbGltaXRlciA9IFwiLVwiO1xyXG5cclxuXHRcdC8vIOaJvuWIsOacgOWwj+aXtumXtOWSjOacgOWkp+aXtumXtFxyXG5cdFx0Y29uc3QgbWluRGF0ZSA9IG1vbWVudC5taW4oZGF0ZXMpO1xyXG5cdFx0Y29uc3QgbWF4RGF0ZSA9IG1vbWVudChlbmREYXRlKTtcclxuXHJcblx0XHQvLyDliJ3lp4vljJbnu5Pmnpzlr7nosaFcclxuXHRcdGNvbnN0IHJlc3VsdCA9IHt9O1xyXG5cclxuXHRcdC8vIOagueaNruWFpeWPgui/m+ihjOWIkuWIhlxyXG5cdFx0aWYgKGludGVydmFsID09PSBcInllYXJcIikge1xyXG5cdFx0XHRjb25zdCBzdGFydFllYXIgPSBtaW5EYXRlLnllYXIoKTtcclxuXHRcdFx0Y29uc3QgZW5kWWVhciA9IG1heERhdGUueWVhcigpO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgeWVhciA9IHN0YXJ0WWVhcjsgeWVhciA8PSBlbmRZZWFyOyB5ZWFyKyspIHtcclxuXHRcdFx0XHRyZXN1bHRbeWVhcl0gPSBbXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0cmVzdWx0W3llYXJdLnB1c2godGltZUFycmF5W2luZGV4XSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIGlmIChpbnRlcnZhbCA9PT0gXCJxdWFydGVyXCIpIHtcclxuXHRcdFx0Ly8g5a2Y5YKo5a2j5bqm5a2X56ym5LiyXHJcblx0XHRcdGNvbnN0IHF1YXJ0ZXJzID0gW107XHJcblxyXG5cdFx0XHQvLyDpgJDkuIDpgY3ljobmr4/kuKrlraPluqZcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgY3VycmVudERhdGUgPSBtaW5EYXRlLmNsb25lKCk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuYWRkKDMsIFwibW9udGhzXCIpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGNvbnN0IHllYXIgPSBjdXJyZW50RGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgcXVhcnRlciA9IE1hdGguY2VpbCgoY3VycmVudERhdGUubW9udGgoKSArIDEpIC8gMyk7IC8vIOiuoeeul+Wto+W6plxyXG5cdFx0XHRcdHF1YXJ0ZXJzLnB1c2goYCR7eWVhcn0ke2RlbGltaXRlcn1RJHtxdWFydGVyfWApOyAvLyDmoLzlvI/ljJblubbmt7vliqDliLDmlbDnu4RcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g6L6T5Ye65omA5pyJ5a2j5bqmXHJcblx0XHRcdHF1YXJ0ZXJzLmZvckVhY2goKHF1YXJ0ZXIsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0cmVzdWx0W3F1YXJ0ZXJdID0gW107XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgcXVhcnRlciA9IGRhdGUucXVhcnRlcigpOyAvLyDojrflj5blraPluqZcclxuXHRcdFx0XHRpZiAocXVhcnRlciA9PT0gMSlcclxuXHRcdFx0XHRcdHJlc3VsdFt5ZWFyICsgZGVsaW1pdGVyICsgXCJRMVwiXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHRcdGVsc2UgaWYgKHF1YXJ0ZXIgPT09IDIpXHJcblx0XHRcdFx0XHRyZXN1bHRbeWVhciArIGRlbGltaXRlciArIFwiUTJcIl0ucHVzaCh0aW1lQXJyYXlbaW5kZXhdKTtcclxuXHRcdFx0XHRlbHNlIGlmIChxdWFydGVyID09PSAzKVxyXG5cdFx0XHRcdFx0cmVzdWx0W3llYXIgKyBkZWxpbWl0ZXIgKyBcIlEzXCJdLnB1c2godGltZUFycmF5W2luZGV4XSk7XHJcblx0XHRcdFx0ZWxzZSBpZiAocXVhcnRlciA9PT0gNClcclxuXHRcdFx0XHRcdHJlc3VsdFt5ZWFyICsgZGVsaW1pdGVyICsgXCJRNFwiXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSBpZiAoaW50ZXJ2YWwgPT09IFwibW9udGhcIikge1xyXG5cdFx0XHQvLyDlrZjlgqjmnIjku73lrZfnrKbkuLJcclxuXHRcdFx0Y29uc3QgbW9udGhzID0gW107XHJcblxyXG5cdFx0XHQvLyDpgJDkuIDpgY3ljobmr4/kuKrmnIhcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgY3VycmVudERhdGUgPSBtaW5EYXRlLmNsb25lKCk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuYWRkKDEsIFwibW9udGhzXCIpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdG1vbnRocy5wdXNoKGN1cnJlbnREYXRlLmZvcm1hdChgWVlZWSR7ZGVsaW1pdGVyfU1NYCkpOyAvLyDmoLzlvI/ljJblubbmt7vliqDliLDmlbDnu4RcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g6L6T5Ye65omA5pyJ5pyI5Lu9XHJcblx0XHRcdG1vbnRocy5mb3JFYWNoKChtb250aCwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRyZXN1bHRbbW9udGhdID0gW107XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgbW9udGggPSAoZGF0ZS5tb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7IC8vIDAtMTFcclxuXHRcdFx0XHRyZXN1bHRbeWVhciArIGRlbGltaXRlciArIG1vbnRoXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog6K6h566X5Yeg5L2V566X5pWw5bmz5pa55pu0XHJcblx0ICogQHBhcmFtIHZhbHVlcyDmlbDnu4QgWzAsIDAsIDAuMjU3NV1cclxuXHQgKiBAcmV0dXJuc1xyXG5cdCAqL1xyXG5cdGNhbGN1bGF0ZUdyb3d0aFJhdGUodmFsdWVzKSB7XHJcblx0XHRjb25zdCBwcm9kdWN0ID0gdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYyAqICgxICsgdmFsKSwgMSk7XHJcblx0XHRpZiAocHJvZHVjdCA+PSAwKSB7XHJcblx0XHRcdHJldHVybiBNYXRoLnBvdyhwcm9kdWN0LCAxIC8gdmFsdWVzLmxlbmd0aCkgLSAxO1xyXG5cdFx0fSBlbHNlIGlmIChwcm9kdWN0IDwgMCkge1xyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCAlIDIgPT0gMCkge1xyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLm50aHJvb3QocHJvZHVjdCwgdmFsdWVzLmxlbmd0aCkgLSAxO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdG50aHJvb3QoeCwgbikge1xyXG5cdFx0bGV0IG5nID0gbiAlIDI7XHJcblx0XHRpZiAobmcgPT0gMSB8fCB4IDwgMCkgeCA9IC14O1xyXG5cdFx0dmFyIHIgPSBNYXRoLnBvdyh4LCAxIC8gbik7XHJcblx0XHRuID0gTWF0aC5wb3cociwgbik7XHJcblxyXG5cdFx0aWYgKE1hdGguYWJzKHggLSBuKSA8IDEgJiYgeCA+IDAgPT09IG4gPiAwKSByZXR1cm4gbmcgPyAtciA6IHI7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDmoIflh4blgY/lt65cclxuXHQgKiBAcGFyYW0gdmFsdWVzIOaVsOe7hCBbMCwgMCwgLTAuNDc3NV1cclxuXHQgKiBAcmV0dXJucyAwLjI3NTY4NDc1MzUzODA0NjNcclxuXHQgKi9cclxuXHRjYWxjdWxhdGVTdGFuZGFyZERldmlhdGlvbih2YWx1ZXMpIHtcclxuXHRcdGNvbnN0IG4gPSB2YWx1ZXMubGVuZ3RoO1xyXG5cclxuXHRcdC8vIOajgOafpeaVsOaNrueCueaVsOmHj1xyXG5cdFx0aWYgKG4gPCAyKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIuiHs+WwkemcgOimgeS4pOS4quaVsOaNrueCueadpeiuoeeul+agt+acrOagh+WHhuWBj+W3rlwiKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyDorqHnrpflnYflgLxcclxuXHRcdGNvbnN0IG1lYW4gPSB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjICsgdmFsLCAwKSAvIG47XHJcblxyXG5cdFx0Ly8g6K6h566X5pa55beuXHJcblx0XHRjb25zdCB2YXJpYW5jZSA9XHJcblx0XHRcdHZhbHVlcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgKyBNYXRoLnBvdyh2YWwgLSBtZWFuLCAyKSwgMCkgL1xyXG5cdFx0XHQobiAtIDEpO1xyXG5cclxuXHRcdC8vIOi/lOWbnuagh+WHhuWBj+W3rlxyXG5cdFx0cmV0dXJuIE1hdGguc3FydCh2YXJpYW5jZSk7XHJcblx0fVxyXG59XHJcbiJdfQ==