@colijnit/homedecorator 255.1.4 → 255.1.6

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 (89) hide show
  1. package/app/core/enum/message-type.enum.d.ts +3 -1
  2. package/app/core/interface/message-with-payload.interface.d.ts +6 -0
  3. package/app/core/model/homedecorator-settings-options.d.ts +2 -0
  4. package/app/core/service/homedecorator-app-event.service.d.ts +1 -0
  5. package/app/core/service/homedecorator-connector-adapter.service.d.ts +2 -0
  6. package/app/core/service/homedecorator-connector.service.d.ts +5 -4
  7. package/app/core/service/homedecorator-settings.service.d.ts +2 -1
  8. package/app/core/service/presets.service.d.ts +3 -1
  9. package/app/homedecorator.component.d.ts +3 -1
  10. package/app/homedecorator.module.d.ts +2 -1
  11. package/app/plugins/core3d/service/floor-pattern.service.d.ts +1 -1
  12. package/app/plugins/core3d/service/floor-tile-intersection.service.d.ts +2 -1
  13. package/app/plugins/core3d/service/floor.service.d.ts +3 -1
  14. package/app/plugins/core3d/service/post-processing.service.d.ts +21 -7
  15. package/app/plugins/core3d/service/scene.service.d.ts +1 -1
  16. package/app/plugins/core3d/service/ssr.service.d.ts +0 -1
  17. package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +11 -2
  18. package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +185 -15
  19. package/app/plugins/model-uploader/model-uploader.module.d.ts +5 -1
  20. package/app/plugins/render/render-dialog/render-dialog.component.d.ts +4 -1
  21. package/app/plugins/render/render-dialog/render-dialog.component.scss +5 -5
  22. package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +3 -1
  23. package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +1 -0
  24. package/app/plugins/room-planner/components/settings/settings.component.d.ts +5 -1
  25. package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +4 -1
  26. package/app/plugins/room-planner/room-planner/room-planner.component.scss +1 -0
  27. package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +1 -3
  28. package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +2 -0
  29. package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +1 -1
  30. package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +2 -0
  31. package/assets/icons/dash-button.svg +7 -0
  32. package/assets/icons/pen-ruler.svg +1 -0
  33. package/assets/icons/retry-button.svg +7 -0
  34. package/bundles/colijnit-homedecorator.umd.js +822 -601
  35. package/bundles/colijnit-homedecorator.umd.js.map +1 -1
  36. package/esm2015/app/app.version.js +3 -3
  37. package/esm2015/app/core/enum/message-type.enum.js +3 -1
  38. package/esm2015/app/core/interface/message-with-payload.interface.js +1 -1
  39. package/esm2015/app/core/model/homedecorator-settings-options.js +3 -1
  40. package/esm2015/app/core/service/3dm-api.js +4 -4
  41. package/esm2015/app/core/service/homedecorator-app-event.service.js +2 -1
  42. package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +25 -2
  43. package/esm2015/app/core/service/homedecorator-connector.service.js +25 -22
  44. package/esm2015/app/core/service/homedecorator-settings.service.js +3 -2
  45. package/esm2015/app/core/service/presets.service.js +13 -5
  46. package/esm2015/app/core/utils/material.utils.js +3 -3
  47. package/esm2015/app/homedecorator.component.js +26 -19
  48. package/esm2015/app/homedecorator.module.js +8 -4
  49. package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +5 -5
  50. package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +2 -2
  51. package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +2 -2
  52. package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +2 -2
  53. package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +2 -2
  54. package/esm2015/app/plugins/core3d/items/factory.js +3 -2
  55. package/esm2015/app/plugins/core3d/service/ar.service.js +2 -1
  56. package/esm2015/app/plugins/core3d/service/floor-pattern.service.js +24 -18
  57. package/esm2015/app/plugins/core3d/service/floor-tile-intersection.service.js +13 -8
  58. package/esm2015/app/plugins/core3d/service/floor.service.js +9 -4
  59. package/esm2015/app/plugins/core3d/service/light-presets.service.js +10 -8
  60. package/esm2015/app/plugins/core3d/service/lights.service.js +8 -1
  61. package/esm2015/app/plugins/core3d/service/outline.service.js +4 -6
  62. package/esm2015/app/plugins/core3d/service/post-processing.service.js +148 -51
  63. package/esm2015/app/plugins/core3d/service/scene-event.service.js +14 -7
  64. package/esm2015/app/plugins/core3d/service/scene.service.js +84 -74
  65. package/esm2015/app/plugins/core3d/service/ssr.service.js +2 -53
  66. package/esm2015/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.js +10 -5
  67. package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +2 -2
  68. package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +281 -166
  69. package/esm2015/app/plugins/model-uploader/model-uploader.module.js +22 -3
  70. package/esm2015/app/plugins/render/render-controls/render-controls.component.js +3 -2
  71. package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +19 -14
  72. package/esm2015/app/plugins/render/service/new-render.service.js +4 -2
  73. package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +4 -2
  74. package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +2 -2
  75. package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +29 -15
  76. package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +5 -2
  77. package/esm2015/app/plugins/room-planner/components/settings/settings.component.js +12 -5
  78. package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +31 -15
  79. package/esm2015/app/plugins/room-planner/room-planner/room-planner.component.js +691 -683
  80. package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +43 -41
  81. package/esm2015/app/plugins/threedselector/threedselector/threedselector.component.js +1 -1
  82. package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +26 -20
  83. package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +2 -2
  84. package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +15 -8
  85. package/esm2015/app/shared/loading-overlay/loading-overlay.component.js +4 -2
  86. package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +3 -3
  87. package/fesm2015/colijnit-homedecorator.js +1656 -1322
  88. package/fesm2015/colijnit-homedecorator.js.map +1 -1
  89. package/package.json +1 -1
@@ -2,8 +2,8 @@
2
2
  /* tslint:disable */
3
3
  export const VersionInfo = {
4
4
  application: "Homedecorator",
5
- appVersion: "255.1.2",
6
- revision: "111849"
5
+ appVersion: "255.1.6",
6
+ revision: "112253"
7
7
  };
8
8
  /* tslint:enable */
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9hcHAudmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnRUFBZ0U7QUFDaEUsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUMzQixXQUFXLEVBQUUsZUFBZTtJQUMxQixVQUFVLEVBQUUsU0FBUztJQUNyQixRQUFRLEVBQUUsUUFBUTtDQUNuQixDQUFBO0FBQ0QsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSU1QT1JUQU5UOiBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURUQhIERPIE5PVCBNQU5VQUxMWSBFRElUIVxuLyogdHNsaW50OmRpc2FibGUgKi9cbmV4cG9ydCBjb25zdCBWZXJzaW9uSW5mbyA9IHtcbmFwcGxpY2F0aW9uOiBcIkhvbWVkZWNvcmF0b3JcIixcbiAgYXBwVmVyc2lvbjogXCIyNTUuMS4yXCIsXG4gIHJldmlzaW9uOiBcIjExMTg0OVwiXG59XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9hcHAudmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnRUFBZ0U7QUFDaEUsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUMzQixXQUFXLEVBQUUsZUFBZTtJQUMxQixVQUFVLEVBQUUsU0FBUztJQUNyQixRQUFRLEVBQUUsUUFBUTtDQUNuQixDQUFBO0FBQ0QsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSU1QT1JUQU5UOiBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURUQhIERPIE5PVCBNQU5VQUxMWSBFRElUIVxuLyogdHNsaW50OmRpc2FibGUgKi9cbmV4cG9ydCBjb25zdCBWZXJzaW9uSW5mbyA9IHtcbmFwcGxpY2F0aW9uOiBcIkhvbWVkZWNvcmF0b3JcIixcbiAgYXBwVmVyc2lvbjogXCIyNTUuMS42XCIsXG4gIHJldmlzaW9uOiBcIjExMjI1M1wiXG59XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
@@ -67,5 +67,7 @@ export var MessageType;
67
67
  MessageType["StartCroppingPDF"] = "StartCroppingPDF";
68
68
  MessageType["BlenderRenderFileReady"] = "BlenderRenderFileReady";
69
69
  MessageType["UserModelUploaded"] = "UserModelUploaded";
70
+ MessageType["ChangeTexture"] = "ChangeTexture";
71
+ MessageType["RenderError"] = "RenderError";
70
72
  })(MessageType || (MessageType = {}));
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksV0FvRVg7QUFwRUQsV0FBWSxXQUFXO0lBQ3JCLHdEQUF5QyxDQUFBO0lBQ3pDLGtEQUFtQyxDQUFBO0lBQ25DLHdEQUF5QyxDQUFBO0lBQ3pDLHNEQUF1QyxDQUFBO0lBQ3ZDLHNDQUF1QixDQUFBO0lBQ3ZCLHNDQUF1QixDQUFBO0lBQ3ZCLGtEQUFtQyxDQUFBO0lBQ25DLG9EQUFxQyxDQUFBO0lBQ3JDLGdEQUFpQyxDQUFBO0lBQ2pDLGtEQUFtQyxDQUFBO0lBQ25DLGtDQUFtQixDQUFBO0lBQ25CLGdEQUFpQyxDQUFBO0lBQ2pDLDBEQUEyQyxDQUFBO0lBQzNDLHdEQUF5QyxDQUFBO0lBQ3pDLHdEQUF5QyxDQUFBO0lBQ3pDLGtGQUFtRSxDQUFBO0lBQ25FLGtGQUFtRSxDQUFBO0lBQ25FLDBEQUEyQyxDQUFBO0lBQzNDLHdFQUF5RCxDQUFBO0lBQ3pELDhEQUErQyxDQUFBO0lBQy9DLGtFQUFtRCxDQUFBO0lBQ25ELDhDQUErQixDQUFBO0lBQy9CLDREQUE2QyxDQUFBO0lBQzdDLDREQUE2QyxDQUFBO0lBQzdDLG9FQUFxRCxDQUFBO0lBQ3JELG9FQUFxRCxDQUFBO0lBQ3JELGtDQUFtQixDQUFBO0lBQ25CLHNDQUF1QixDQUFBO0lBQ3ZCLG9DQUFxQixDQUFBO0lBQ3JCLDRDQUE2QixDQUFBO0lBQzdCLHdDQUF5QixDQUFBO0lBQ3pCLDBFQUEyRCxDQUFBO0lBQzNELDREQUE2QyxDQUFBO0lBQzdDLGtFQUFtRCxDQUFBO0lBQ25ELHNEQUF1QyxDQUFBO0lBQ3ZDLHNDQUF1QixDQUFBO0lBQ3ZCLGdEQUFpQyxDQUFBO0lBQ2pDLDREQUE2QyxDQUFBO0lBQzdDLDBDQUEyQixDQUFBO0lBQzNCLG9GQUFxRSxDQUFBO0lBQ3JFLDRCQUFhLENBQUE7SUFDYiw0QkFBYSxDQUFBO0lBQ2Isc0NBQXVCLENBQUE7SUFDdkIsd0NBQXlCLENBQUE7SUFDekIsNENBQTZCLENBQUE7SUFDN0Isb0RBQXFDLENBQUE7SUFDckMsNENBQTZCLENBQUE7SUFDN0IsZ0RBQWlDLENBQUE7SUFDakMsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsZ0RBQWlDLENBQUE7SUFDakMsb0RBQXFDLENBQUE7SUFDckMsOEVBQStELENBQUE7SUFDL0Qsd0VBQXlELENBQUE7SUFDekQsMEVBQTJELENBQUE7SUFDM0QsZ0RBQWlDLENBQUE7SUFDakMsc0VBQXVELENBQUE7SUFDdkQsZ0VBQWlELENBQUE7SUFDakQsNERBQTZDLENBQUE7SUFDN0Msb0RBQXFDLENBQUE7SUFDckMsc0RBQXVDLENBQUE7SUFDdkMsb0RBQXFDLENBQUE7SUFDckMsMERBQTJDLENBQUE7SUFDM0Msc0RBQXVDLENBQUE7SUFDdkMsb0RBQXFDLENBQUE7SUFDckMsZ0VBQWdELENBQUE7SUFDaEQsc0RBQXNDLENBQUE7QUFDeEMsQ0FBQyxFQXBFVyxXQUFXLEtBQVgsV0FBVyxRQW9FdEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBNZXNzYWdlVHlwZSB7XHJcbiAgU3RhcnRXaXRoRW1wdHlSb29tID0gJ1N0YXJ0V2l0aEVtcHR5Um9vbScsXHJcbiAgU3RhcnRXaXRoUHJlc2V0ID0gJ1N0YXJ0V2l0aFByZXNldCcsXHJcbiAgTG9hZFJvb21Gcm9tUHJlc2V0ID0gJ0xvYWRSb29tRnJvbVByZXNldCcsXHJcbiAgTG9hZFJvb21Gcm9tQ2xvdWQgPSAnTG9hZFJvb21Gcm9tQ2xvdWQnLFxyXG4gIFNldDJEVmlldyA9ICdTZXQyRFZpZXcnLFxyXG4gIFNldDNEVmlldyA9ICdTZXQzRFZpZXcnLFxyXG4gIFZpZXdNb2RlQ2hhbmdlZCA9ICdWaWV3TW9kZUNoYW5nZWQnLFxyXG4gIEJsb2NrTGVmdFNpZGViYXIgPSAnQmxvY2tMZWZ0U2lkZWJhcicsXHJcbiAgU2V0TGVmdFNpZGViYXIgPSAnU2V0TGVmdFNpZGViYXInLFxyXG4gIEhpZGVMZWZ0U2lkZWJhciA9ICdIaWRlTGVmdFNpZGViYXInLFxyXG4gIE5ld1Jvb20gPSAnTmV3Um9vbScsXHJcbiAgU2hvd09wZW5EaWFsb2cgPSAnU2hvd09wZW5EaWFsb2cnLFxyXG4gIFJlZ2lzdGVyVG9vbGJhckljb24gPSAnUmVnaXN0ZXJUb29sYmFySWNvbicsXHJcbiAgU2hvd1Byb2R1Y3RDYXRhbG9nID0gJ1Nob3dQcm9kdWN0Q2F0YWxvZycsXHJcbiAgSGlkZVByb2R1Y3RDYXRhbG9nID0gJ0hpZGVQcm9kdWN0Q2F0YWxvZycsXHJcbiAgTG9hZElPbmVGdXJuaXR1cmVJbnRvU2NlbmVCeVNLVSA9ICdMb2FkSU9uZUZ1cm5pdHVyZUludG9TY2VuZUJ5U0tVJyxcclxuICBDb3B5SU9uZUZ1cm5pdHVyZUludG9TY2VuZUJ5U0tVID0gJ0NvcHlJT25lRnVybml0dXJlSW50b1NjZW5lQnlTS1UnLFxyXG4gIFJlbW92ZUl0ZW1Gcm9tU2NlbmUgPSAnUmVtb3ZlSXRlbUZyb21TY2VuZScsXHJcbiAgRmluaXNoZWRJT25lRnVybml0dXJlQnVpbGQgPSAnRmluaXNoZWRJT25lRnVybml0dXJlQnVpbGQnLFxyXG4gIFVuZGVmaW5lZEVycm9yT2NjdXJlZCA9ICdVbmRlZmluZWRFcnJvck9jY3VyZWQnLFxyXG4gIExlZnRTaWRlYmFyQ2xvc2VDbGlja2VkID0gJ0xlZnRTaWRlYmFyQ2xvc2VDbGlja2VkJyxcclxuICBSZXNldFJvb21wbGFuID0gJ1Jlc2V0Um9vbXBsYW4nLFxyXG4gIFNob3dMb2FkaW5nSW5kaWNhdG9yID0gJ1Nob3dMb2FkaW5nSW5kaWNhdG9yJyxcclxuICBIaWRlTG9hZGluZ0luZGljYXRvciA9ICdIaWRlTG9hZGluZ0luZGljYXRvcicsXHJcbiAgU2hvd0lPbmVMb2FkaW5nSW5kaWNhdG9yID0gJ1Nob3dJT25lTG9hZGluZ0luZGljYXRvcicsXHJcbiAgSGlkZUlPbmVMb2FkaW5nSW5kaWNhdG9yID0gJ0hpZGVJT25lTG9hZGluZ0luZGljYXRvcicsXHJcbiAgU2V0RHJhZyA9ICdTZXREcmFnJyxcclxuICBTdGFydERyYWcgPSAnU3RhcnREcmFnJyxcclxuICBFeGl0RHJhZyA9ICdFeGl0RHJhZycsXHJcbiAgUGxhY2VPblRvdWNoID0gJ1BsYWNlT25Ub3VjaCcsXHJcbiAgU2F2ZVByZXNldCA9ICdTYXZlUHJlc2V0JyxcclxuICBMb2FkSU9uZUZ1cm5pdHVyZUZyb21QcmVzZXQgPSAnTG9hZElPbmVGdXJuaXR1cmVGcm9tUHJlc2V0JyxcclxuICBTaG93RnVybml0dXJlU2lkZWJhciA9ICdTaG93RnVybml0dXJlU2lkZWJhcicsXHJcbiAgUmVtb3ZlU2VsZWN0ZWRGdXJuaXR1cmUgPSAnUmVtb3ZlU2VsZWN0ZWRGdXJuaXR1cmUnLFxyXG4gIEVuYWJsZUludGVncmF0aW9uID0gJ0VuYWJsZUludGVncmF0aW9uJyxcclxuICBBZGRUb0NhcnQgPSAnQWRkVG9DYXJ0JyxcclxuICBBcnRpY2xlQ3JlYXRlZCA9ICdBcnRpY2xlQ3JlYXRlZCcsXHJcbiAgQ29uZmlndXJhdGlvbkNoYW5nZWQgPSAnQ29uZmlndXJhdGlvbkNoYW5nZWQnLFxyXG4gIEl0ZW1SZW1vdmVkID0gJ0l0ZW1SZW1vdmVkJyxcclxuICBXYWxrVGhyb3VnaENhbWVyYVNldHRpbmdzQ2hhbmdlZCA9ICdXYWxrVGhyb3VnaENhbWVyYVNldHRpbmdzQ2hhbmdlZCcsXHJcbiAgVW5kbyA9ICdVbmRvJyxcclxuICBSZWRvID0gJ1JlZG8nLFxyXG4gIFNhdmVTdGF0ZSA9ICdTYXZlU3RhdGUnLFxyXG4gIENsZWFyU3RhdGUgPSAnQ2xlYXJTdGF0ZScsXHJcbiAgUmVwbGFjZVN0YXRlID0gJ1JlcGxhY2VTdGF0ZScsXHJcbiAgR3JvdXBNb2RlQ2hhbmdlZCA9ICdHcm91cE1vZGVDaGFuZ2VkJyxcclxuICBHcm91cE9iamVjdHMgPSAnR3JvdXBPYmplY3RzJyxcclxuICBVbmdyb3VwT2JqZWN0cyA9ICdVbmdyb3VwT2JqZWN0cycsXHJcbiAgQ2xpY2tEcmFnZ2VkID0gJ0NsaWNrRHJhZ2dlZCcsXHJcbiAgSXRlbVNlbGVjdGVkID0gJ0l0ZW1TZWxlY3RlZCcsXHJcbiAgSXRlbVVuc2VsZWN0ZWQgPSAnSXRlbVVuc2VsZWN0ZWQnLFxyXG4gIFNjZW5lSW5pdGlhbGl6ZWQgPSAnU2NlbmVJbml0aWFsaXplZCcsXHJcbiAgU2hvdWxkQ29weUZ1cm5pdHVyZUZyb21QcmVzZXQgPSAnU2hvdWxkQ29weUZ1cm5pdHVyZUZyb21QcmVzZXQnLFxyXG4gIFdhbGxMZW5ndGhJbnB1dFNob3dDaGFuZ2VkID0gJ1dhbGxMZW5ndGhJbnB1dFNob3dDaGFuZ2VkJyxcclxuICBXYWxsTGVuZ3RoSW5wdXRWYWx1ZUNoYW5nZWQgPSAnV2FsbExlbmd0aElucHV0VmFsdWVDaGFuZ2VkJyxcclxuICBUYWtlU2NyZWVuc2hvdCA9ICdUYWtlU2NyZWVuc2hvdCcsXHJcbiAgUmVuZGVyU2VydmljZVRyeVRvQ29ubmVjdCA9ICdSZW5kZXJTZXJ2aWNlVHJ5VG9Db25uZWN0JyxcclxuICBSZW5kZXJTZXJ2aWNlQ29ubmVjdGVkID0gJ1JlbmRlclNlcnZpY2VDb25uZWN0ZWQnLFxyXG4gIENsb25lVGhpcmRQYXJ0eU1vZGVsID0gJ0Nsb25lVGhpcmRQYXJ0eU1vZGVsJyxcclxuICBTdGFydEdyb3VwT2JqZWN0ID0gJ1N0YXJ0R3JvdXBPYmplY3QnLFxyXG4gIENhbmNlbEdyb3VwT2JqZWN0ID0gJ0NhbmNlbEdyb3VwT2JqZWN0JyxcclxuICBTdGFydFdpdGhEaWFncmFtID0gJ1N0YXJ0V2l0aERpYWdyYW0nLFxyXG4gIFN0YXJ0RHJhd2luZ0RpYWdyYW0gPSAnU3RhcnREcmF3aW5nRGlhZ3JhbScsXHJcbiAgTG9hZFNjYWxlZERpYWdyYW0gPSAnTG9hZFNjYWxlZERpYWdyYW0nLFxyXG4gIFN0YXJ0Q3JvcHBpbmdQREYgPSAnU3RhcnRDcm9wcGluZ1BERicsXHJcbiAgQmxlbmRlclJlbmRlckZpbGVSZWFkeT0gJ0JsZW5kZXJSZW5kZXJGaWxlUmVhZHknLFxyXG4gIFVzZXJNb2RlbFVwbG9hZGVkPSAnVXNlck1vZGVsVXBsb2FkZWQnLFxyXG59XHJcbiJdfQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksV0FzRVg7QUF0RUQsV0FBWSxXQUFXO0lBQ3JCLHdEQUF5QyxDQUFBO0lBQ3pDLGtEQUFtQyxDQUFBO0lBQ25DLHdEQUF5QyxDQUFBO0lBQ3pDLHNEQUF1QyxDQUFBO0lBQ3ZDLHNDQUF1QixDQUFBO0lBQ3ZCLHNDQUF1QixDQUFBO0lBQ3ZCLGtEQUFtQyxDQUFBO0lBQ25DLG9EQUFxQyxDQUFBO0lBQ3JDLGdEQUFpQyxDQUFBO0lBQ2pDLGtEQUFtQyxDQUFBO0lBQ25DLGtDQUFtQixDQUFBO0lBQ25CLGdEQUFpQyxDQUFBO0lBQ2pDLDBEQUEyQyxDQUFBO0lBQzNDLHdEQUF5QyxDQUFBO0lBQ3pDLHdEQUF5QyxDQUFBO0lBQ3pDLGtGQUFtRSxDQUFBO0lBQ25FLGtGQUFtRSxDQUFBO0lBQ25FLDBEQUEyQyxDQUFBO0lBQzNDLHdFQUF5RCxDQUFBO0lBQ3pELDhEQUErQyxDQUFBO0lBQy9DLGtFQUFtRCxDQUFBO0lBQ25ELDhDQUErQixDQUFBO0lBQy9CLDREQUE2QyxDQUFBO0lBQzdDLDREQUE2QyxDQUFBO0lBQzdDLG9FQUFxRCxDQUFBO0lBQ3JELG9FQUFxRCxDQUFBO0lBQ3JELGtDQUFtQixDQUFBO0lBQ25CLHNDQUF1QixDQUFBO0lBQ3ZCLG9DQUFxQixDQUFBO0lBQ3JCLDRDQUE2QixDQUFBO0lBQzdCLHdDQUF5QixDQUFBO0lBQ3pCLDBFQUEyRCxDQUFBO0lBQzNELDREQUE2QyxDQUFBO0lBQzdDLGtFQUFtRCxDQUFBO0lBQ25ELHNEQUF1QyxDQUFBO0lBQ3ZDLHNDQUF1QixDQUFBO0lBQ3ZCLGdEQUFpQyxDQUFBO0lBQ2pDLDREQUE2QyxDQUFBO0lBQzdDLDBDQUEyQixDQUFBO0lBQzNCLG9GQUFxRSxDQUFBO0lBQ3JFLDRCQUFhLENBQUE7SUFDYiw0QkFBYSxDQUFBO0lBQ2Isc0NBQXVCLENBQUE7SUFDdkIsd0NBQXlCLENBQUE7SUFDekIsNENBQTZCLENBQUE7SUFDN0Isb0RBQXFDLENBQUE7SUFDckMsNENBQTZCLENBQUE7SUFDN0IsZ0RBQWlDLENBQUE7SUFDakMsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsZ0RBQWlDLENBQUE7SUFDakMsb0RBQXFDLENBQUE7SUFDckMsOEVBQStELENBQUE7SUFDL0Qsd0VBQXlELENBQUE7SUFDekQsMEVBQTJELENBQUE7SUFDM0QsZ0RBQWlDLENBQUE7SUFDakMsc0VBQXVELENBQUE7SUFDdkQsZ0VBQWlELENBQUE7SUFDakQsNERBQTZDLENBQUE7SUFDN0Msb0RBQXFDLENBQUE7SUFDckMsc0RBQXVDLENBQUE7SUFDdkMsb0RBQXFDLENBQUE7SUFDckMsMERBQTJDLENBQUE7SUFDM0Msc0RBQXVDLENBQUE7SUFDdkMsb0RBQXFDLENBQUE7SUFDckMsZ0VBQWdELENBQUE7SUFDaEQsc0RBQXNDLENBQUE7SUFDdEMsOENBQStCLENBQUE7SUFDL0IsMENBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQXRFVyxXQUFXLEtBQVgsV0FBVyxRQXNFdEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBNZXNzYWdlVHlwZSB7XHJcbiAgU3RhcnRXaXRoRW1wdHlSb29tID0gJ1N0YXJ0V2l0aEVtcHR5Um9vbScsXHJcbiAgU3RhcnRXaXRoUHJlc2V0ID0gJ1N0YXJ0V2l0aFByZXNldCcsXHJcbiAgTG9hZFJvb21Gcm9tUHJlc2V0ID0gJ0xvYWRSb29tRnJvbVByZXNldCcsXHJcbiAgTG9hZFJvb21Gcm9tQ2xvdWQgPSAnTG9hZFJvb21Gcm9tQ2xvdWQnLFxyXG4gIFNldDJEVmlldyA9ICdTZXQyRFZpZXcnLFxyXG4gIFNldDNEVmlldyA9ICdTZXQzRFZpZXcnLFxyXG4gIFZpZXdNb2RlQ2hhbmdlZCA9ICdWaWV3TW9kZUNoYW5nZWQnLFxyXG4gIEJsb2NrTGVmdFNpZGViYXIgPSAnQmxvY2tMZWZ0U2lkZWJhcicsXHJcbiAgU2V0TGVmdFNpZGViYXIgPSAnU2V0TGVmdFNpZGViYXInLFxyXG4gIEhpZGVMZWZ0U2lkZWJhciA9ICdIaWRlTGVmdFNpZGViYXInLFxyXG4gIE5ld1Jvb20gPSAnTmV3Um9vbScsXHJcbiAgU2hvd09wZW5EaWFsb2cgPSAnU2hvd09wZW5EaWFsb2cnLFxyXG4gIFJlZ2lzdGVyVG9vbGJhckljb24gPSAnUmVnaXN0ZXJUb29sYmFySWNvbicsXHJcbiAgU2hvd1Byb2R1Y3RDYXRhbG9nID0gJ1Nob3dQcm9kdWN0Q2F0YWxvZycsXHJcbiAgSGlkZVByb2R1Y3RDYXRhbG9nID0gJ0hpZGVQcm9kdWN0Q2F0YWxvZycsXHJcbiAgTG9hZElPbmVGdXJuaXR1cmVJbnRvU2NlbmVCeVNLVSA9ICdMb2FkSU9uZUZ1cm5pdHVyZUludG9TY2VuZUJ5U0tVJyxcclxuICBDb3B5SU9uZUZ1cm5pdHVyZUludG9TY2VuZUJ5U0tVID0gJ0NvcHlJT25lRnVybml0dXJlSW50b1NjZW5lQnlTS1UnLFxyXG4gIFJlbW92ZUl0ZW1Gcm9tU2NlbmUgPSAnUmVtb3ZlSXRlbUZyb21TY2VuZScsXHJcbiAgRmluaXNoZWRJT25lRnVybml0dXJlQnVpbGQgPSAnRmluaXNoZWRJT25lRnVybml0dXJlQnVpbGQnLFxyXG4gIFVuZGVmaW5lZEVycm9yT2NjdXJlZCA9ICdVbmRlZmluZWRFcnJvck9jY3VyZWQnLFxyXG4gIExlZnRTaWRlYmFyQ2xvc2VDbGlja2VkID0gJ0xlZnRTaWRlYmFyQ2xvc2VDbGlja2VkJyxcclxuICBSZXNldFJvb21wbGFuID0gJ1Jlc2V0Um9vbXBsYW4nLFxyXG4gIFNob3dMb2FkaW5nSW5kaWNhdG9yID0gJ1Nob3dMb2FkaW5nSW5kaWNhdG9yJyxcclxuICBIaWRlTG9hZGluZ0luZGljYXRvciA9ICdIaWRlTG9hZGluZ0luZGljYXRvcicsXHJcbiAgU2hvd0lPbmVMb2FkaW5nSW5kaWNhdG9yID0gJ1Nob3dJT25lTG9hZGluZ0luZGljYXRvcicsXHJcbiAgSGlkZUlPbmVMb2FkaW5nSW5kaWNhdG9yID0gJ0hpZGVJT25lTG9hZGluZ0luZGljYXRvcicsXHJcbiAgU2V0RHJhZyA9ICdTZXREcmFnJyxcclxuICBTdGFydERyYWcgPSAnU3RhcnREcmFnJyxcclxuICBFeGl0RHJhZyA9ICdFeGl0RHJhZycsXHJcbiAgUGxhY2VPblRvdWNoID0gJ1BsYWNlT25Ub3VjaCcsXHJcbiAgU2F2ZVByZXNldCA9ICdTYXZlUHJlc2V0JyxcclxuICBMb2FkSU9uZUZ1cm5pdHVyZUZyb21QcmVzZXQgPSAnTG9hZElPbmVGdXJuaXR1cmVGcm9tUHJlc2V0JyxcclxuICBTaG93RnVybml0dXJlU2lkZWJhciA9ICdTaG93RnVybml0dXJlU2lkZWJhcicsXHJcbiAgUmVtb3ZlU2VsZWN0ZWRGdXJuaXR1cmUgPSAnUmVtb3ZlU2VsZWN0ZWRGdXJuaXR1cmUnLFxyXG4gIEVuYWJsZUludGVncmF0aW9uID0gJ0VuYWJsZUludGVncmF0aW9uJyxcclxuICBBZGRUb0NhcnQgPSAnQWRkVG9DYXJ0JyxcclxuICBBcnRpY2xlQ3JlYXRlZCA9ICdBcnRpY2xlQ3JlYXRlZCcsXHJcbiAgQ29uZmlndXJhdGlvbkNoYW5nZWQgPSAnQ29uZmlndXJhdGlvbkNoYW5nZWQnLFxyXG4gIEl0ZW1SZW1vdmVkID0gJ0l0ZW1SZW1vdmVkJyxcclxuICBXYWxrVGhyb3VnaENhbWVyYVNldHRpbmdzQ2hhbmdlZCA9ICdXYWxrVGhyb3VnaENhbWVyYVNldHRpbmdzQ2hhbmdlZCcsXHJcbiAgVW5kbyA9ICdVbmRvJyxcclxuICBSZWRvID0gJ1JlZG8nLFxyXG4gIFNhdmVTdGF0ZSA9ICdTYXZlU3RhdGUnLFxyXG4gIENsZWFyU3RhdGUgPSAnQ2xlYXJTdGF0ZScsXHJcbiAgUmVwbGFjZVN0YXRlID0gJ1JlcGxhY2VTdGF0ZScsXHJcbiAgR3JvdXBNb2RlQ2hhbmdlZCA9ICdHcm91cE1vZGVDaGFuZ2VkJyxcclxuICBHcm91cE9iamVjdHMgPSAnR3JvdXBPYmplY3RzJyxcclxuICBVbmdyb3VwT2JqZWN0cyA9ICdVbmdyb3VwT2JqZWN0cycsXHJcbiAgQ2xpY2tEcmFnZ2VkID0gJ0NsaWNrRHJhZ2dlZCcsXHJcbiAgSXRlbVNlbGVjdGVkID0gJ0l0ZW1TZWxlY3RlZCcsXHJcbiAgSXRlbVVuc2VsZWN0ZWQgPSAnSXRlbVVuc2VsZWN0ZWQnLFxyXG4gIFNjZW5lSW5pdGlhbGl6ZWQgPSAnU2NlbmVJbml0aWFsaXplZCcsXHJcbiAgU2hvdWxkQ29weUZ1cm5pdHVyZUZyb21QcmVzZXQgPSAnU2hvdWxkQ29weUZ1cm5pdHVyZUZyb21QcmVzZXQnLFxyXG4gIFdhbGxMZW5ndGhJbnB1dFNob3dDaGFuZ2VkID0gJ1dhbGxMZW5ndGhJbnB1dFNob3dDaGFuZ2VkJyxcclxuICBXYWxsTGVuZ3RoSW5wdXRWYWx1ZUNoYW5nZWQgPSAnV2FsbExlbmd0aElucHV0VmFsdWVDaGFuZ2VkJyxcclxuICBUYWtlU2NyZWVuc2hvdCA9ICdUYWtlU2NyZWVuc2hvdCcsXHJcbiAgUmVuZGVyU2VydmljZVRyeVRvQ29ubmVjdCA9ICdSZW5kZXJTZXJ2aWNlVHJ5VG9Db25uZWN0JyxcclxuICBSZW5kZXJTZXJ2aWNlQ29ubmVjdGVkID0gJ1JlbmRlclNlcnZpY2VDb25uZWN0ZWQnLFxyXG4gIENsb25lVGhpcmRQYXJ0eU1vZGVsID0gJ0Nsb25lVGhpcmRQYXJ0eU1vZGVsJyxcclxuICBTdGFydEdyb3VwT2JqZWN0ID0gJ1N0YXJ0R3JvdXBPYmplY3QnLFxyXG4gIENhbmNlbEdyb3VwT2JqZWN0ID0gJ0NhbmNlbEdyb3VwT2JqZWN0JyxcclxuICBTdGFydFdpdGhEaWFncmFtID0gJ1N0YXJ0V2l0aERpYWdyYW0nLFxyXG4gIFN0YXJ0RHJhd2luZ0RpYWdyYW0gPSAnU3RhcnREcmF3aW5nRGlhZ3JhbScsXHJcbiAgTG9hZFNjYWxlZERpYWdyYW0gPSAnTG9hZFNjYWxlZERpYWdyYW0nLFxyXG4gIFN0YXJ0Q3JvcHBpbmdQREYgPSAnU3RhcnRDcm9wcGluZ1BERicsXHJcbiAgQmxlbmRlclJlbmRlckZpbGVSZWFkeT0gJ0JsZW5kZXJSZW5kZXJGaWxlUmVhZHknLFxyXG4gIFVzZXJNb2RlbFVwbG9hZGVkPSAnVXNlck1vZGVsVXBsb2FkZWQnLFxyXG4gIENoYW5nZVRleHR1cmUgPSAnQ2hhbmdlVGV4dHVyZScsXHJcbiAgUmVuZGVyRXJyb3IgPSAnUmVuZGVyRXJyb3InLFxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  import { MessageType } from '../enum/message-type.enum';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS13aXRoLXBheWxvYWQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvY29yZS9pbnRlcmZhY2UvbWVzc2FnZS13aXRoLXBheWxvYWQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWVzc2FnZVR5cGV9IGZyb20gJy4uL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1ByZXNldH0gZnJvbSAnLi4vbW9kZWwvcHJlc2V0JztcclxuaW1wb3J0IHtUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Vmlld01vZGV9IGZyb20gJy4uL2VudW0vdmlldy1tb2RlLmVudW0nO1xyXG5pbXBvcnQgdHlwZSB7SXRlbX0gZnJvbSAnLi4vLi4vcGx1Z2lucy9jb3JlM2QvaXRlbXMvaXRlbSc7XHJcbmltcG9ydCB0eXBlIHtJdGVtR3JvdXB9IGZyb20gJy4uLy4uL3BsdWdpbnMvY29yZTNkL2l0ZW1zL2l0ZW0tZ3JvdXAnO1xyXG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9tb2RlbC9jYXRlZ29yeSc7XHJcbmltcG9ydCB7RHJhZ2dlZERhdGF9IGZyb20gJy4uLy4uL3BsdWdpbnMvY29yZTNkL2ludGVyZmFjZS9kcmFnZ2VkLWRhdGEuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yRXh0ZXJuYWxTZXR0aW5nc0ludGVyZmFjZX0gZnJvbSAnLi9ob21lZGVjb3JhdG9yLWV4dGVybmFsLXNldHRpbmdzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7VG9vbGJhckljb259IGZyb20gJy4vdG9vbGJhci1pY29uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7TG9hZGluZ092ZXJsYXlEYXRhfSBmcm9tICcuL2xvYWRpbmctb3ZlcmxheS1kYXRhLmludGVyZmFjZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saXN0LW9iamVjdC1leHRlbmRlZC5ibyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VzV2l0aFBheWxvYWQge1xyXG4gIFtNZXNzYWdlVHlwZS5TdGFydFdpdGhQcmVzZXRdOiB7IHByZXNldDogUHJlc2V0LCBzd2l0Y2hUbzJEPzogYm9vbGVhbiB9O1xyXG4gIFtNZXNzYWdlVHlwZS5Mb2FkUm9vbUZyb21QcmVzZXRdOiBQcmVzZXQ7XHJcbiAgW01lc3NhZ2VUeXBlLkxvYWRSb29tRnJvbUNsb3VkXTogc3RyaW5nO1xyXG4gIFtNZXNzYWdlVHlwZS5CbG9ja0xlZnRTaWRlYmFyXTogYm9vbGVhbjtcclxuICBbTWVzc2FnZVR5cGUuU2V0TGVmdFNpZGViYXJdOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIFtNZXNzYWdlVHlwZS5SZWdpc3RlclRvb2xiYXJJY29uXTogVG9vbGJhckljb247XHJcbiAgW01lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZF06IFZpZXdNb2RlO1xyXG4gIFtNZXNzYWdlVHlwZS5TZXQzRFZpZXddOiB7IHNlbmRVcGRhdGVzOiBib29sZWFuIH07XHJcbiAgW01lc3NhZ2VUeXBlLlNldDJEVmlld106IHsgc2VuZFVwZGF0ZXM6IGJvb2xlYW4gfTtcclxuICBbTWVzc2FnZVR5cGUuTG9hZElPbmVGdXJuaXR1cmVJbnRvU2NlbmVCeVNLVV06IHtcclxuICAgIHNrdTogc3RyaW5nLFxyXG4gICAgc2V0dGluZ3M6IEhvbWVkZWNvcmF0b3JFeHRlcm5hbFNldHRpbmdzSW50ZXJmYWNlLFxyXG4gICAgcG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIsIHo/OiBudW1iZXIgfSxcclxuICAgIGZ1bGxBcnRpY2xlT2JqZWN0OiBBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkXHJcbiAgfTtcclxuICBbTWVzc2FnZVR5cGUuQ29weUlPbmVGdXJuaXR1cmVJbnRvU2NlbmVCeVNLVV06IEl0ZW07XHJcbiAgW01lc3NhZ2VUeXBlLlJlbW92ZUl0ZW1Gcm9tU2NlbmVdOiBzdHJpbmc7XHJcbiAgW01lc3NhZ2VUeXBlLkxvYWRJT25lRnVybml0dXJlRnJvbVByZXNldF06IGFueVtdO1xyXG4gIFtNZXNzYWdlVHlwZS5TaG93TG9hZGluZ0luZGljYXRvcl06IExvYWRpbmdPdmVybGF5RGF0YTtcclxuICBbTWVzc2FnZVR5cGUuU2V0RHJhZ106IERyYWdnZWREYXRhIHwgSXRlbTtcclxuICBbTWVzc2FnZVR5cGUuU3RhcnREcmFnXTogeyB4OiBudW1iZXIsIHk6IG51bWJlciwgej86IG51bWJlciB9O1xyXG4gIFtNZXNzYWdlVHlwZS5Db25maWd1cmF0aW9uQ2hhbmdlZF06IGFueTtcclxuICBbTWVzc2FnZVR5cGUuQXJ0aWNsZUNyZWF0ZWRdOiBhbnk7XHJcbiAgW01lc3NhZ2VUeXBlLkl0ZW1SZW1vdmVkXTogeyBpdGVtOiBhbnksIGFkZGVkVG9Hcm91cD86IGJvb2xlYW4gfTtcclxuICBbTWVzc2FnZVR5cGUuU2hvd0Z1cm5pdHVyZVNpZGViYXJdOiBzdHJpbmcgfCBDYXRlZ29yeTtcclxuICBbTWVzc2FnZVR5cGUuU2F2ZVN0YXRlXTogeyBhY3Rpb246IHN0cmluZywgcGF0Y2g/OiBib29sZWFuIH07XHJcbiAgW01lc3NhZ2VUeXBlLkNsZWFyU3RhdGVdOiBzdHJpbmc7XHJcbiAgW01lc3NhZ2VUeXBlLlJlcGxhY2VTdGF0ZV06IHsgZGF0YTogYW55LCB0aXRsZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcgfTtcclxuICBbTWVzc2FnZVR5cGUuR3JvdXBNb2RlQ2hhbmdlZF06IHsgc2hvd0dyb3VwTWVudTogYm9vbGVhbiB9O1xyXG4gIFtNZXNzYWdlVHlwZS5JdGVtU2VsZWN0ZWRdOiBJdGVtIHwgSXRlbUdyb3VwO1xyXG4gIFtNZXNzYWdlVHlwZS5JdGVtVW5zZWxlY3RlZF06IEl0ZW0gfCBJdGVtR3JvdXA7XHJcbiAgW01lc3NhZ2VUeXBlLlNob3VsZENvcHlGdXJuaXR1cmVGcm9tUHJlc2V0XTogYm9vbGVhbjtcclxuICBbTWVzc2FnZVR5cGUuV2FsbExlbmd0aElucHV0U2hvd0NoYW5nZWRdOiBib29sZWFuO1xyXG4gIFtNZXNzYWdlVHlwZS5XYWxsTGVuZ3RoSW5wdXRWYWx1ZUNoYW5nZWRdOiBudW1iZXI7XHJcbiAgW01lc3NhZ2VUeXBlLkNsb25lVGhpcmRQYXJ0eU1vZGVsXTogSXRlbTtcclxuICBbTWVzc2FnZVR5cGUuU3RhcnREcmF3aW5nRGlhZ3JhbV06IGFueTtcclxuICBbTWVzc2FnZVR5cGUuTG9hZFNjYWxlZERpYWdyYW1dOiBhbnk7XHJcbiAgW01lc3NhZ2VUeXBlLlN0YXJ0Q3JvcHBpbmdQREZdOiBhbnk7XHJcbiAgW01lc3NhZ2VUeXBlLkJsZW5kZXJSZW5kZXJGaWxlUmVhZHldOiBhbnk7XHJcbiAgW01lc3NhZ2VUeXBlLlVzZXJNb2RlbFVwbG9hZGVkXTogYW55O1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS13aXRoLXBheWxvYWQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvY29yZS9pbnRlcmZhY2UvbWVzc2FnZS13aXRoLXBheWxvYWQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWVzc2FnZVR5cGV9IGZyb20gJy4uL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1ByZXNldH0gZnJvbSAnLi4vbW9kZWwvcHJlc2V0JztcclxuaW1wb3J0IHtUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Vmlld01vZGV9IGZyb20gJy4uL2VudW0vdmlldy1tb2RlLmVudW0nO1xyXG5pbXBvcnQgdHlwZSB7SXRlbX0gZnJvbSAnLi4vLi4vcGx1Z2lucy9jb3JlM2QvaXRlbXMvaXRlbSc7XHJcbmltcG9ydCB0eXBlIHtJdGVtR3JvdXB9IGZyb20gJy4uLy4uL3BsdWdpbnMvY29yZTNkL2l0ZW1zL2l0ZW0tZ3JvdXAnO1xyXG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9tb2RlbC9jYXRlZ29yeSc7XHJcbmltcG9ydCB7RHJhZ2dlZERhdGF9IGZyb20gJy4uLy4uL3BsdWdpbnMvY29yZTNkL2ludGVyZmFjZS9kcmFnZ2VkLWRhdGEuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yRXh0ZXJuYWxTZXR0aW5nc0ludGVyZmFjZX0gZnJvbSAnLi9ob21lZGVjb3JhdG9yLWV4dGVybmFsLXNldHRpbmdzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7VG9vbGJhckljb259IGZyb20gJy4vdG9vbGJhci1pY29uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7TG9hZGluZ092ZXJsYXlEYXRhfSBmcm9tICcuL2xvYWRpbmctb3ZlcmxheS1kYXRhLmludGVyZmFjZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saXN0LW9iamVjdC1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7VGV4dHVyZX0gZnJvbSAnLi4vbW9kZWwvdGV4dHVyZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VzV2l0aFBheWxvYWQge1xyXG4gIFtNZXNzYWdlVHlwZS5TdGFydFdpdGhQcmVzZXRdOiB7IHByZXNldDogUHJlc2V0LCBzd2l0Y2hUbzJEPzogYm9vbGVhbiB9O1xyXG4gIFtNZXNzYWdlVHlwZS5Mb2FkUm9vbUZyb21QcmVzZXRdOiBQcmVzZXQ7XHJcbiAgW01lc3NhZ2VUeXBlLkxvYWRSb29tRnJvbUNsb3VkXTogc3RyaW5nO1xyXG4gIFtNZXNzYWdlVHlwZS5CbG9ja0xlZnRTaWRlYmFyXTogYm9vbGVhbjtcclxuICBbTWVzc2FnZVR5cGUuU2V0TGVmdFNpZGViYXJdOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIFtNZXNzYWdlVHlwZS5SZWdpc3RlclRvb2xiYXJJY29uXTogVG9vbGJhckljb247XHJcbiAgW01lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZF06IFZpZXdNb2RlO1xyXG4gIFtNZXNzYWdlVHlwZS5TZXQzRFZpZXddOiB7IHNlbmRVcGRhdGVzOiBib29sZWFuIH07XHJcbiAgW01lc3NhZ2VUeXBlLlNldDJEVmlld106IHsgc2VuZFVwZGF0ZXM6IGJvb2xlYW4gfTtcclxuICBbTWVzc2FnZVR5cGUuTG9hZElPbmVGdXJuaXR1cmVJbnRvU2NlbmVCeVNLVV06IHtcclxuICAgIHNrdTogc3RyaW5nLFxyXG4gICAgc2V0dGluZ3M6IEhvbWVkZWNvcmF0b3JFeHRlcm5hbFNldHRpbmdzSW50ZXJmYWNlLFxyXG4gICAgcG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIsIHo/OiBudW1iZXIgfSxcclxuICAgIGZ1bGxBcnRpY2xlT2JqZWN0OiBBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkXHJcbiAgfTtcclxuICBbTWVzc2FnZVR5cGUuQ29weUlPbmVGdXJuaXR1cmVJbnRvU2NlbmVCeVNLVV06IEl0ZW07XHJcbiAgW01lc3NhZ2VUeXBlLlJlbW92ZUl0ZW1Gcm9tU2NlbmVdOiBzdHJpbmc7XHJcbiAgW01lc3NhZ2VUeXBlLkxvYWRJT25lRnVybml0dXJlRnJvbVByZXNldF06IGFueVtdO1xyXG4gIFtNZXNzYWdlVHlwZS5TaG93TG9hZGluZ0luZGljYXRvcl06IExvYWRpbmdPdmVybGF5RGF0YTtcclxuICBbTWVzc2FnZVR5cGUuU2V0RHJhZ106IERyYWdnZWREYXRhIHwgSXRlbTtcclxuICBbTWVzc2FnZVR5cGUuU3RhcnREcmFnXTogeyB4OiBudW1iZXIsIHk6IG51bWJlciwgej86IG51bWJlciB9O1xyXG4gIFtNZXNzYWdlVHlwZS5Db25maWd1cmF0aW9uQ2hhbmdlZF06IGFueTtcclxuICBbTWVzc2FnZVR5cGUuQXJ0aWNsZUNyZWF0ZWRdOiBhbnk7XHJcbiAgW01lc3NhZ2VUeXBlLkl0ZW1SZW1vdmVkXTogeyBpdGVtOiBhbnksIGFkZGVkVG9Hcm91cD86IGJvb2xlYW4gfTtcclxuICBbTWVzc2FnZVR5cGUuU2hvd0Z1cm5pdHVyZVNpZGViYXJdOiBzdHJpbmcgfCBDYXRlZ29yeTtcclxuICBbTWVzc2FnZVR5cGUuU2F2ZVN0YXRlXTogeyBhY3Rpb246IHN0cmluZywgcGF0Y2g/OiBib29sZWFuIH07XHJcbiAgW01lc3NhZ2VUeXBlLkNsZWFyU3RhdGVdOiBzdHJpbmc7XHJcbiAgW01lc3NhZ2VUeXBlLlJlcGxhY2VTdGF0ZV06IHsgZGF0YTogYW55LCB0aXRsZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcgfTtcclxuICBbTWVzc2FnZVR5cGUuR3JvdXBNb2RlQ2hhbmdlZF06IHsgc2hvd0dyb3VwTWVudTogYm9vbGVhbiB9O1xyXG4gIFtNZXNzYWdlVHlwZS5JdGVtU2VsZWN0ZWRdOiBJdGVtIHwgSXRlbUdyb3VwO1xyXG4gIFtNZXNzYWdlVHlwZS5JdGVtVW5zZWxlY3RlZF06IEl0ZW0gfCBJdGVtR3JvdXA7XHJcbiAgW01lc3NhZ2VUeXBlLlNob3VsZENvcHlGdXJuaXR1cmVGcm9tUHJlc2V0XTogYm9vbGVhbjtcclxuICBbTWVzc2FnZVR5cGUuV2FsbExlbmd0aElucHV0U2hvd0NoYW5nZWRdOiBib29sZWFuO1xyXG4gIFtNZXNzYWdlVHlwZS5XYWxsTGVuZ3RoSW5wdXRWYWx1ZUNoYW5nZWRdOiBudW1iZXI7XHJcbiAgW01lc3NhZ2VUeXBlLkNsb25lVGhpcmRQYXJ0eU1vZGVsXTogSXRlbTtcclxuICBbTWVzc2FnZVR5cGUuU3RhcnREcmF3aW5nRGlhZ3JhbV06IGFueTtcclxuICBbTWVzc2FnZVR5cGUuTG9hZFNjYWxlZERpYWdyYW1dOiBhbnk7XHJcbiAgW01lc3NhZ2VUeXBlLlN0YXJ0Q3JvcHBpbmdQREZdOiBhbnk7XHJcbiAgW01lc3NhZ2VUeXBlLkJsZW5kZXJSZW5kZXJGaWxlUmVhZHldOiBhbnk7XHJcbiAgW01lc3NhZ2VUeXBlLlVzZXJNb2RlbFVwbG9hZGVkXTogYW55O1xyXG4gIFtNZXNzYWdlVHlwZS5DaGFuZ2VUZXh0dXJlXTogVGV4dHVyZTtcclxuICBbTWVzc2FnZVR5cGUuUmVuZGVyRXJyb3JdOiB7dGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nfTtcclxufVxyXG4iXX0=
@@ -45,6 +45,8 @@ export class HomedecoratorSettingsOptions {
45
45
  this.pathTracer = false;
46
46
  this.ssrEnabled = false;
47
47
  this.maxRenderSamples = 100;
48
+ this.aoEnabled = true;
49
+ this.aaEnabled = true;
48
50
  }
49
51
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci1zZXR0aW5ncy1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvY29yZS9tb2RlbC9ob21lZGVjb3JhdG9yLXNldHRpbmdzLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLDRCQUE0QjtJQUF6QztRQUNTLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1Qiw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFDMUMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLDJCQUFzQixHQUFZLElBQUksQ0FBQztRQUN2Qyx5QkFBb0IsR0FBWSxJQUFJLENBQUMsQ0FBQyxvQkFBb0I7UUFDMUQseUJBQW9CLEdBQVksSUFBSSxDQUFDLENBQUMsYUFBYTtRQUNuRCx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBQ3hDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4Qyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsb0NBQStCLEdBQVksS0FBSyxDQUFDO1FBQ2pELHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVsQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4QyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQywyQkFBc0IsR0FBWSxJQUFJLENBQUM7UUFDdkMsK0JBQTBCLEdBQVksSUFBSSxDQUFDO1FBQzNDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBQ2hDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGtEQUE2QyxHQUFZLEtBQUssQ0FBQztRQUMvRCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsOEJBQXlCLEdBQVcsb0JBQW9CLENBQUM7UUFDekQsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLHFCQUFnQixHQUFXLEdBQUcsQ0FBQztJQUN4QyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSG9tZWRlY29yYXRvclNldHRpbmdzT3B0aW9ucyB7XHJcbiAgcHVibGljIHNob3dTdG9ja1N0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93M0RXYXRlcm1hcms6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1pvb21CdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1RhZ0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93QXNDb25maWd1cmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGRldmVsb3BtZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlubGluZUFuc3dlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0FyQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dDYXB0aW9uQWRkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGluc3RhbnRSZXBsYWNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGJvdHRvbUFuc3dlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgb25seVRocmVlRDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93UmVuZGVyQ29ubmVjdGlvbkluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZm9yY2VBZGp1c3RhYmxlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93Um9vbURvd25sb2FkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd1Jvb21SZW5kZXJCdXR0b246IGJvb2xlYW4gPSB0cnVlOyAvLyAzRE0gcmVuZGVyIGJ1dHRvblxyXG4gIHB1YmxpYyBzaG93T3duQ2F0YWxvZ0J1dHRvbjogYm9vbGVhbiA9IHRydWU7IC8vIEhESCBvcHRpb25cclxuICBwdWJsaWMgc2hvd0Rvd25sb2FkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dPbmx5SG9tZURlY29GaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd01lYXN1cmVtZW50c0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW1lcmFQb3NpdGlvbkZpeGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGNhbWVyYVBvc2l0aW9uRml4ZWRBbmRTY3JvbGxiYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaGFuZGxlUGFyYW1ldHJpYzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgYXJFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTdGFuZGFsb25lQVJCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdnJFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHF1YWxpdHlTZXR0aW5nc0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgeHJEZWJ1ZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VTdGFuZGFsb25lRmxvb3JzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHVzZVN0YW5kYWxvbmVIaWdoTGlnaHQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93RWRpdFBlbmNpbENvbmZpZ3VyYXRvcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGluc3RhbnRFZGl0TWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhbmltYXRpb25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBjdXN0b21pemF0aW9uRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VQbGFjZW1lbnRTbmFwcGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VWYXJpYXRpb25PblBhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0Zvcm1EaWFsb2c6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93T25seUxhc3RBbnN3ZXJEZXNjcmlwdGlvbkdlbmVyaWNTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZW5hYmxlM0RJblBob3RvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHVzZU5ld1JlbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VSZW5kZXJXZWJzb2NrZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZDogc3RyaW5nID0gJ3NjZW5lX3N0dWRpb19lZXZlZSc7XHJcbiAgcHVibGljIHBhdGhUcmFjZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc3NyRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBtYXhSZW5kZXJTYW1wbGVzOiBudW1iZXIgPSAxMDA7XHJcbn1cclxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci1zZXR0aW5ncy1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvY29yZS9tb2RlbC9ob21lZGVjb3JhdG9yLXNldHRpbmdzLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLDRCQUE0QjtJQUF6QztRQUNTLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1Qiw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFDMUMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLDJCQUFzQixHQUFZLElBQUksQ0FBQztRQUN2Qyx5QkFBb0IsR0FBWSxJQUFJLENBQUMsQ0FBQyxvQkFBb0I7UUFDMUQseUJBQW9CLEdBQVksSUFBSSxDQUFDLENBQUMsYUFBYTtRQUNuRCx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBQ3hDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4Qyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsb0NBQStCLEdBQVksS0FBSyxDQUFDO1FBQ2pELHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVsQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4QyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQywyQkFBc0IsR0FBWSxJQUFJLENBQUM7UUFDdkMsK0JBQTBCLEdBQVksSUFBSSxDQUFDO1FBQzNDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBQ2hDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGtEQUE2QyxHQUFZLEtBQUssQ0FBQztRQUMvRCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsOEJBQXlCLEdBQVcsb0JBQW9CLENBQUM7UUFDekQsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLHFCQUFnQixHQUFXLEdBQUcsQ0FBQztRQUMvQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEhvbWVkZWNvcmF0b3JTZXR0aW5nc09wdGlvbnMge1xyXG4gIHB1YmxpYyBzaG93U3RvY2tTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvdzNEV2F0ZXJtYXJrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dab29tQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dUYWdGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0FzQ29uZmlndXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkZXZlbG9wbWVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpbmxpbmVBbnN3ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dBckJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93Q2FwdGlvbkFkZEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpbnN0YW50UmVwbGFjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBib3R0b21BbnN3ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIG9ubHlUaHJlZUQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1JlbmRlckNvbm5lY3Rpb25JbmZvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGZvcmNlQWRqdXN0YWJsZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1Jvb21Eb3dubG9hZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dSb29tUmVuZGVyQnV0dG9uOiBib29sZWFuID0gdHJ1ZTsgLy8gM0RNIHJlbmRlciBidXR0b25cclxuICBwdWJsaWMgc2hvd093bkNhdGFsb2dCdXR0b246IGJvb2xlYW4gPSB0cnVlOyAvLyBIREggb3B0aW9uXHJcbiAgcHVibGljIHNob3dEb3dubG9hZEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93T25seUhvbWVEZWNvRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dNZWFzdXJlbWVudHNCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgY2FtZXJhUG9zaXRpb25GaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW1lcmFQb3NpdGlvbkZpeGVkQW5kU2Nyb2xsYmFyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGhhbmRsZVBhcmFtZXRyaWM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGFyRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93U3RhbmRhbG9uZUFSQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHZyRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBxdWFsaXR5U2V0dGluZ3NFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHhyRGVidWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdXNlU3RhbmRhbG9uZUZsb29yczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VTdGFuZGFsb25lSGlnaExpZ2h0OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd0VkaXRQZW5jaWxDb25maWd1cmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBpbnN0YW50RWRpdE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYW5pbWF0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgY3VzdG9taXphdGlvbkVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdXNlUGxhY2VtZW50U25hcHBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdXNlVmFyaWF0aW9uT25QYXJ0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dGb3JtRGlhbG9nOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd09ubHlMYXN0QW5zd2VyRGVzY3JpcHRpb25HZW5lcmljU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGVuYWJsZTNESW5QaG90bzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VOZXdSZW5kZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdXNlUmVuZGVyV2Vic29ja2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHByb2R1Y3RSZW5kZXJTY2VuZUFzc2V0SWQ6IHN0cmluZyA9ICdzY2VuZV9zdHVkaW9fZWV2ZWUnO1xyXG4gIHB1YmxpYyBwYXRoVHJhY2VyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNzckVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbWF4UmVuZGVyU2FtcGxlczogbnVtYmVyID0gMTAwO1xyXG4gIHB1YmxpYyBhb0VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBhYUVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG59XHJcbiJdfQ==
@@ -51,7 +51,7 @@ export class ApiServiceModule {
51
51
  this.messageService.emit(MessageType.ShowLoadingIndicator, { title: 'Rendering...' });
52
52
  this.requestRender(filename, camera, standalone, renderParameters);
53
53
  }).catch(error => {
54
- console.log(error);
54
+ this.messageService.emit(MessageType.RenderError, { title: 'Upload error', message: error.message });
55
55
  });
56
56
  });
57
57
  }
@@ -89,8 +89,8 @@ export class ApiServiceModule {
89
89
  return dataURL;
90
90
  };
91
91
  }
92
- }).catch(err => {
93
- console.log(err);
92
+ }).catch(error => {
93
+ this.messageService.emit(MessageType.RenderError, { title: 'Render error', message: error.message });
94
94
  });
95
95
  });
96
96
  }
@@ -243,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
243
243
  providedIn: 'root'
244
244
  }]
245
245
  }], ctorParameters: function () { return [{ type: i1.HomedecoratorConnectorService }, { type: i2.MessageBusService }, { type: i3.HttpClient }, { type: i4.HomedecoratorSettingsService }, { type: i5.MatDialog }]; } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiM2RtLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL2NvcmUvc2VydmljZS8zZG0tYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQXFCLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFHL0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0NBUzFCO0FBRUQsTUFBTSxPQUFPLE1BQU07Q0FNbEI7QUFFRCxNQUFNLE9BQU8sU0FBUztDQUtyQjtBQUVELElBQUssVUFLSjtBQUxELFdBQUssVUFBVTtJQUNiLDJDQUFRLENBQUE7SUFDUix5Q0FBTyxDQUFBO0lBQ1AseUNBQU8sQ0FBQTtJQUNQLDZDQUFTLENBQUE7QUFDWCxDQUFDLEVBTEksVUFBVSxLQUFWLFVBQVUsUUFLZDtBQUVELElBQUssVUFHSjtBQUhELFdBQUssVUFBVTtJQUNiLG1EQUFZLENBQUE7SUFDWixtREFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhJLFVBQVUsS0FBVixVQUFVLFFBR2Q7QUFNRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ1MscUJBQW9ELEVBQ3BELGNBQWlDLEVBQ2hDLEtBQWlCLEVBQ2pCLGdCQUE4QyxFQUM5QyxPQUFrQjtRQUpuQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQStCO1FBQ3BELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBOEI7UUFDOUMsWUFBTyxHQUFQLE9BQU8sQ0FBVztJQUU1QixDQUFDO0lBRVksY0FBYyxDQUFDLFFBQWtCLEVBQUUsUUFBZ0IsRUFBRSxN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QUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0V1bGVyLCBNYXRoVXRpbHMsIFBlcnNwZWN0aXZlQ2FtZXJhLCBRdWF0ZXJuaW9uLCBWZWN0b3IzfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZX0gZnJvbSAnLi9ob21lZGVjb3JhdG9yLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge01lc3NhZ2VCdXNTZXJ2aWNlfSBmcm9tICcuL21lc3NhZ2UtYnVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi9lbnVtL21lc3NhZ2UtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckNvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4vaG9tZWRlY29yYXRvci1jb25uZWN0b3Iuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgT3V0cHV0U2V0dGluZ3Mge1xyXG4gIHB1YmxpYyB3aWR0aDogbnVtYmVyO1xyXG4gIHB1YmxpYyBoZWlnaHQ6IG51bWJlcjtcclxuICBwdWJsaWMgb3V0cHV0VHlwZTogT3V0cHV0VHlwZTtcclxuICBwdWJsaWMgdHJhbnNwYXJlbmN5OiBib29sZWFuO1xyXG4gIHB1YmxpYyBxdWFsaXR5OiBudW1iZXI7XHJcbiAgcHVibGljIHJlbmRlclR5cGU6IFJlbmRlclR5cGU7XHJcbiAgcHVibGljIGR1cmF0aW9uOiBudW1iZXI7XHJcbiAgcHVibGljIGJvdW5jZXM6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENhbWVyYSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBhc3NldElkOiBzdHJpbmc7IC8vIGZvciBwcmUtY3JlYXRlZCBjYW1lcmFcclxuICBmb3Y6IG51bWJlcjsgLy8gb3IgbWF5YmUgbGVucyBpbiBtbT9cclxuICB0cmFuc2Zvcm06IGFueTtcclxuICBkb2Y6IENhbWVyYURPRjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENhbWVyYURPRiB7XHJcbiAgZm9jYWxMZW5ndGg6IG51bWJlcjtcclxuICBmU3RvcDogbnVtYmVyO1xyXG4gIGJsYWRlczogbnVtYmVyO1xyXG4gIHJvdGF0aW9uOiBudW1iZXI7XHJcbn1cclxuXHJcbmVudW0gT3V0cHV0VHlwZSB7XHJcbiAgSnBlZyA9IDAsXHJcbiAgUG5nID0gMSxcclxuICBHbGIgPSAyLFxyXG4gIFZpZGVvID0gM1xyXG59XHJcblxyXG5lbnVtIFJlbmRlclR5cGUge1xyXG4gIFJlYWx0aW1lID0gMCxcclxuICBSYXl0cmFjZSA9IDFcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2VNb2R1bGUge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGlPbmVDb250cm9sbGVyU2VydmljZTogSG9tZWRlY29yYXRvckNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwbG9hZFRvQXBpR0xCKGZvcm1EYXRhOiBGb3JtRGF0YSwgZmlsZW5hbWU6IHN0cmluZywgY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYSwgc3RhbmRhbG9uZTogYm9vbGVhbiwgcmVuZGVyUGFyYW1ldGVyczogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBhcGlVcmw6IHN0cmluZyA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy51cGxvYWRFbmRwb2ludDtcclxuICAgIGNvbnN0IG9wdGlvbnM6IE9iamVjdCA9IHt9O1xyXG4gICAgdGhpcy5fc2VuZFJlcXVlc3QoYXBpVXJsLCBmb3JtRGF0YSwgb3B0aW9ucykudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuSGlkZUxvYWRpbmdJbmRpY2F0b3IpO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuU2hvd0xvYWRpbmdJbmRpY2F0b3IsIHt0aXRsZTogJ1JlbmRlcmluZy4uLid9KTtcclxuICAgICAgdGhpcy5yZXF1ZXN0UmVuZGVyKGZpbGVuYW1lLCBjYW1lcmEsIHN0YW5kYWxvbmUsIHJlbmRlclBhcmFtZXRlcnMpO1xyXG4gICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0UmVuZGVyKGZpbGVuYW1lOiBzdHJpbmcsIGNhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmEsIHN0YW5kYWxvbmU6IGJvb2xlYW4sIHJlbmRlclBhcmFtZXRlcnM6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBhcGlVcmw6IHN0cmluZyA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5yZW5kZXJFbmRwb2ludDtcclxuICAgIGNvbnN0IG9wdGlvbnM6IE9iamVjdCA9IHRoaXMuX3NldE9wdGlvbnMoKTtcclxuICAgIGxldCByZXF1ZXN0OiBPYmplY3Q7XHJcblxyXG4gICAgaWYgKHN0YW5kYWxvbmUpIHtcclxuICAgICAgcmVxdWVzdCA9IHRoaXMuX2NyZWF0ZVByb2R1Y3RSZW5kZXJSZXF1ZXN0Qm9keShmaWxlbmFtZSwgY2FtZXJhLCByZW5kZXJQYXJhbWV0ZXJzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlcXVlc3QgPSB0aGlzLl9jcmVhdGVSZW5kZXJSZXF1ZXN0Qm9keShmaWxlbmFtZSwgY2FtZXJhLCByZW5kZXJQYXJhbWV0ZXJzKTtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuX3NlbmRSZXF1ZXN0KGFwaVVybCwgcmVxdWVzdCwgb3B0aW9ucykudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAoIXN0YW5kYWxvbmUpIHtcclxuICAgICAgICBjb25zdCBkb3dubG9hZEZpbGVuYW1lOiBzdHJpbmcgPSBmaWxlbmFtZS5yZXBsYWNlKCcuZ2xiJywgJy5qcGcnKTtcclxuICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgZWxlbWVudC5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZXN1bHQpO1xyXG4gICAgICAgIGVsZW1lbnQuZG93bmxvYWQgPSBkb3dubG9hZEZpbGVuYW1lO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcbiAgICAgICAgZWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkhpZGVMb2FkaW5nSW5kaWNhdG9yKTtcclxuICAgICAgICB0aGlzLl9kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKDxCbG9iPnJlc3VsdCk7XHJcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGFVUkw6IHN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkhpZGVMb2FkaW5nSW5kaWNhdG9yKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5CbGVuZGVyUmVuZGVyRmlsZVJlYWR5LCBkYXRhVVJMKTtcclxuICAgICAgICAgIHJldHVybiBkYXRhVVJMO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3NlbmRSZXF1ZXN0KHVybDogc3RyaW5nLCBib2R5OiBhbnksIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2h0dHAucG9zdChgJHt1cmx9YCwgYm9keSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRPcHRpb25zKCk6IE9iamVjdCB7XHJcbiAgICBjb25zdCBoZWFkZXJzOiBPYmplY3QgPSB7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LU1ldGhvZCc6ICdQT1NUJ1xyXG4gICAgfTtcclxuICAgIHJldHVybiB7aGVhZGVycywgcmVzcG9uc2VUeXBlOiAnYmxvYicsIHJlcG9ydFByb2dyZXNzOiB0cnVlfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZVJlbmRlclJlcXVlc3RCb2R5KGZpbGVuYW1lOiBzdHJpbmcsIGNhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmEsIHJlbmRlclBhcmFtZXRlcnM6IGFueSk6IE9iamVjdCB7XHJcbiAgICBjb25zdCBwb3N0Qm9keTogYW55ID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnJlbmRlckFwaUNsaWVudElkLFxyXG4gICAgICBzY2VuZVNldHRpbmdzOiB7XHJcbiAgICAgICAgc2NlbmVBc3NldElkOiByZW5kZXJQYXJhbWV0ZXJzLnNjZW5lQXNzZXRJZCxcclxuICAgICAgICBhY3RpdmVDYW1lcmFJZDogMVxyXG4gICAgICB9LFxyXG4gICAgICBvdXRwdXRTZXR0aW5nczogdGhpcy5fc2V0T3V0cHV0U2V0dGluZ3MocmVuZGVyUGFyYW1ldGVycyksXHJcbiAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICBtYXRlcmlhbHM6IFtdLFxyXG4gICAgICAgIGNhbWVyYXM6IFtcclxuICAgICAgICAgIHRoaXMuX2NhbWVyYVNldHRpbmdzKGNhbWVyYSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIGxpZ2h0czogW10sXHJcbiAgICAgICAgZ3JvdXBzOiBbXSxcclxuICAgICAgICBwcmVmYWJzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiA3LFxyXG4gICAgICAgICAgICBhc3NldElkOiBmaWxlbmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBwb3N0Qm9keTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZVByb2R1Y3RSZW5kZXJSZXF1ZXN0Qm9keShmaWxlbmFtZTogc3RyaW5nLCBjYW1lcmE6IFBlcnNwZWN0aXZlQ2FtZXJhLCByZW5kZXJQYXJhbWV0ZXJzOiBhbnkpOiBPYmplY3Qge1xyXG4gICAgY29uc3QgcG9zdEJvZHk6IGFueSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5yZW5kZXJBcGlDbGllbnRJZCxcclxuICAgICAgc2NlbmVTZXR0aW5nczoge1xyXG4gICAgICAgIHNjZW5lQXNzZXRJZDogcmVuZGVyUGFyYW1ldGVycy5zY2VuZUFzc2V0SWQsXHJcbiAgICAgICAgYWN0aXZlQ2FtZXJhSWQ6IDFcclxuICAgICAgfSxcclxuICAgICAgb3V0cHV0U2V0dGluZ3M6IHRoaXMuX3NldFByb2R1Y3RPdXRwdXRTZXR0aW5ncyhyZW5kZXJQYXJhbWV0ZXJzKSxcclxuICAgICAgY29udGVudDoge1xyXG4gICAgICAgIG1hdGVyaWFsczogW10sXHJcbiAgICAgICAgY2FtZXJhczogW1xyXG4gICAgICAgICAgdGhpcy5fY2FtZXJhUHJvZHVjdFNldHRpbmdzKGNhbWVyYSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIGxpZ2h0czogW10sXHJcbiAgICAgICAgZ3JvdXBzOiBbXSxcclxuICAgICAgICBwcmVmYWJzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiA3LFxyXG4gICAgICAgICAgICBhc3NldElkOiBmaWxlbmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBwb3N0Qm9keTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE91dHB1dFNldHRpbmdzKHJlbmRlclBhcmFtZXRlcnMpOiBPdXRwdXRTZXR0aW5ncyB7XHJcbiAgICBjb25zdCBvdXRwdXRTZXR0aW5nczogT3V0cHV0U2V0dGluZ3MgPSBuZXcgT3V0cHV0U2V0dGluZ3MoKTtcclxuICAgIG91dHB1dFNldHRpbmdzLndpZHRoID0gcmVuZGVyUGFyYW1ldGVycy53aWR0aDtcclxuICAgIG91dHB1dFNldHRpbmdzLmhlaWdodCA9IHJlbmRlclBhcmFtZXRlcnMuaGVpZ2h0O1xyXG4gICAgb3V0cHV0U2V0dGluZ3Mub3V0cHV0VHlwZSA9IE91dHB1dFR5cGUuSnBlZztcclxuICAgIG91dHB1dFNldHRpbmdzLnJlbmRlclR5cGUgPSBSZW5kZXJUeXBlLlJheXRyYWNlO1xyXG4gICAgcmV0dXJuIG91dHB1dFNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0UHJvZHVjdE91dHB1dFNldHRpbmdzKHJlbmRlclBhcmFtZXRlcnMpOiBPdXRwdXRTZXR0aW5ncyB7XHJcbiAgICBjb25zdCBvdXRwdXRTZXR0aW5nczogT3V0cHV0U2V0dGluZ3MgPSBuZXcgT3V0cHV0U2V0dGluZ3MoKTtcclxuICAgIG91dHB1dFNldHRpbmdzLndpZHRoID0gcmVuZGVyUGFyYW1ldGVycy53aWR0aDtcclxuICAgIG91dHB1dFNldHRpbmdzLmhlaWdodCA9IHJlbmRlclBhcmFtZXRlcnMuaGVpZ2h0O1xyXG4gICAgb3V0cHV0U2V0dGluZ3Mub3V0cHV0VHlwZSA9IE91dHB1dFR5cGUuSnBlZztcclxuICAgIG91dHB1dFNldHRpbmdzLnJlbmRlclR5cGUgPSBSZW5kZXJUeXBlLlJlYWx0aW1lO1xyXG4gICAgcmV0dXJuIG91dHB1dFNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlQ2FtZXJhUG9zaXRpb25Sb3RhdGlvbihjYW1lcmE6IFBlcnNwZWN0aXZlQ2FtZXJhKTogYW55IHtcclxuICAgIGNvbnN0IHBvczogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKCkuY29weShjYW1lcmEucG9zaXRpb24pO1xyXG4gICAgY29uc3QgcXVhdGVybmlvbjogUXVhdGVybmlvbiA9IGNhbWVyYS5xdWF0ZXJuaW9uO1xyXG4gICAgY29uc3QgYmxlbmRlclF1YXQ6IFF1YXRlcm5pb24gPSBuZXcgUXVhdGVybmlvbigpLnNldEZyb21BeGlzQW5nbGUobmV3IFZlY3RvcjMoMSwgMCwgMCksIE1hdGhVdGlscy5kZWdUb1JhZCg5MCkpO1xyXG4gICAgY29uc3QgZXVsZXI6IEV1bGVyID0gbmV3IEV1bGVyKCkuc2V0RnJvbVF1YXRlcm5pb24oXHJcbiAgICAgIGJsZW5kZXJRdWF0Lm11bHRpcGx5KHF1YXRlcm5pb24pLFxyXG4gICAgICAnWllYJ1xyXG4gICAgKTtcclxuICAgIHBvcy5hcHBseUF4aXNBbmdsZShuZXcgVmVjdG9yMygxLCAwLCAwKSwgTWF0aFV0aWxzLmRlZ1RvUmFkKDkwKSk7XHJcbiAgICBjb25zdCByb3Q6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMyhcclxuICAgICAgTWF0aFV0aWxzLnJhZFRvRGVnKGV1bGVyLngpLFxyXG4gICAgICBNYXRoVXRpbHMucmFkVG9EZWcoZXVsZXIueSksXHJcbiAgICAgIE1hdGhVdGlscy5yYWRUb0RlZyhldWxlci56KVxyXG4gICAgKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdwb3NpdGlvbic6IHBvcyxcclxuICAgICAgJ3JvdGF0aW9uJzogcm90XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0Q2FtZXJhUm90YXRpb24oY2FtZXJhSW5mbzogYW55KTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgc2V0OiB7XHJcbiAgICAgICAgICB4OiB0aGlzLl9zaG9ydGVuVmFsdWUoY2FtZXJhSW5mby5wb3NpdGlvbi54KSxcclxuICAgICAgICAgIHk6IHRoaXMuX3Nob3J0ZW5WYWx1ZShjYW1lcmFJbmZvLnBvc2l0aW9uLnkpLFxyXG4gICAgICAgICAgejogdGhpcy5fc2hvcnRlblZhbHVlKGNhbWVyYUluZm8ucG9zaXRpb24ueilcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHJvdGF0aW9uOiB7XHJcbiAgICAgICAgc2V0OiB7XHJcbiAgICAgICAgICB4OiB0aGlzLl9zaG9ydGVuVmFsdWUoY2FtZXJhSW5mby5yb3RhdGlvbi54KSxcclxuICAgICAgICAgIHk6IHRoaXMuX3Nob3J0ZW5WYWx1ZShjYW1lcmFJbmZvLnJvdGF0aW9uLnkpLFxyXG4gICAgICAgICAgejogdGhpcy5fc2hvcnRlblZhbHVlKGNhbWVyYUluZm8ucm90YXRpb24ueilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYW1lcmFTZXR0aW5ncyhjYW1lcmE6IFBlcnNwZWN0aXZlQ2FtZXJhKTogQ2FtZXJhIHtcclxuICAgIGNvbnN0IGNhbWVyYUluZm8gPSB0aGlzLl9jYWxjdWxhdGVDYW1lcmFQb3NpdGlvblJvdGF0aW9uKGNhbWVyYSk7XHJcbiAgICBjb25zdCByZW5kZXJDYW1lcmE6IENhbWVyYSA9IG5ldyBDYW1lcmEoKTtcclxuICAgIHJlbmRlckNhbWVyYS5pZCA9IDE7XHJcbiAgICByZW5kZXJDYW1lcmEuYXNzZXRJZCA9ICdjYW1lcmFfY29saWpuJztcclxuICAgIHJlbmRlckNhbWVyYS50cmFuc2Zvcm0gPSB0aGlzLl9zZXRDYW1lcmFSb3RhdGlvbihjYW1lcmFJbmZvKTtcclxuICAgIHJldHVybiByZW5kZXJDYW1lcmE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYW1lcmFQcm9kdWN0U2V0dGluZ3MoY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYSk6IGFueSB7XHJcbiAgICBjb25zdCBjYW1lcmFJbmZvID0gdGhpcy5fY2FsY3VsYXRlQ2FtZXJhUG9zaXRpb25Sb3RhdGlvbihjYW1lcmEpO1xyXG4gICAgY29uc3QgcmVuZGVyQ2FtZXJhOiBDYW1lcmEgPSBuZXcgQ2FtZXJhKCk7XHJcbiAgICByZW5kZXJDYW1lcmEuaWQgPSAxO1xyXG4gICAgcmVuZGVyQ2FtZXJhLmFzc2V0SWQgPSAnY2FtZXJhX2NvbGlqbic7XHJcbiAgICByZW5kZXJDYW1lcmEudHJhbnNmb3JtID0gdGhpcy5fc2V0Q2FtZXJhUm90YXRpb24oY2FtZXJhSW5mbyk7XHJcbiAgICByZW5kZXJDYW1lcmEuZm92ID0gOTA7XHJcbiAgICByZXR1cm4gcmVuZGVyQ2FtZXJhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0U2NlbmVCYXNlZExpZ2h0cyhzY2VuZUFzc2V0SWQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICBpZiAoc2NlbmVBc3NldElkLmluY2x1ZGVzKCdlZXZlZScpKSB7XHJcbiAgICAgIHJldHVybiBbe1xyXG4gICAgICAgICdpZCc6IDcsXHJcbiAgICAgICAgJ2Fzc2V0SWQnOiAnbGlnaHRzX2VldmVlJ1xyXG4gICAgICB9XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3J0ZW5WYWx1ZSh2YWx1ZSk6IG51bWJlciB7XHJcbiAgICBjb25zdCBmYWN0b3I6IG51bWJlciA9IE1hdGgucG93KDEwLCA1KTtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlICogZmFjdG9yKSAvIGZhY3RvcjtcclxuICB9XHJcbn1cclxuIl19
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiM2RtLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL2NvcmUvc2VydmljZS8zZG0tYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQXFCLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFHL0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0NBUzFCO0FBRUQsTUFBTSxPQUFPLE1BQU07Q0FNbEI7QUFFRCxNQUFNLE9BQU8sU0FBUztDQUtyQjtBQUVELElBQUssVUFLSjtBQUxELFdBQUssVUFBVTtJQUNiLDJDQUFRLENBQUE7SUFDUix5Q0FBTyxDQUFBO0lBQ1AseUNBQU8sQ0FBQTtJQUNQLDZDQUFTLENBQUE7QUFDWCxDQUFDLEVBTEksVUFBVSxLQUFWLFVBQVUsUUFLZDtBQUVELElBQUssVUFHSjtBQUhELFdBQUssVUFBVTtJQUNiLG1EQUFZLENBQUE7SUFDWixtREFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhJLFVBQVUsS0FBVixVQUFVLFFBR2Q7QUFNRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ1MscUJBQW9ELEVBQ3BELGNBQWlDLEVBQ2hDLEtBQWlCLEVBQ2pCLGdCQUE4QyxFQUM5QyxPQUFrQjtRQUpuQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQStCO1FBQ3BELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBOEI7UUFDOUMsWUFBTyxHQUFQLE9BQU8sQ0FBVztJQUU1QixDQUFDO0lBRVksY0FBYyxDQUFDLFFBQWtCLEVBQUUsUUFBZ0IsRUFBRSxN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RSxDQUFDLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUM3QyxDQUFDOzs4R0FyTlUsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FIZixNQUFNOzRGQUdQLGdCQUFnQjtrQkFKNUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtFdWxlciwgTWF0aFV0aWxzLCBQZXJzcGVjdGl2ZUNhbWVyYSwgUXVhdGVybmlvbiwgVmVjdG9yM30gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4vaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtNZXNzYWdlQnVzU2VydmljZX0gZnJvbSAnLi9tZXNzYWdlLWJ1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtNZXNzYWdlVHlwZX0gZnJvbSAnLi4vZW51bS9tZXNzYWdlLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuL2hvbWVkZWNvcmF0b3ItY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE91dHB1dFNldHRpbmdzIHtcclxuICBwdWJsaWMgd2lkdGg6IG51bWJlcjtcclxuICBwdWJsaWMgaGVpZ2h0OiBudW1iZXI7XHJcbiAgcHVibGljIG91dHB1dFR5cGU6IE91dHB1dFR5cGU7XHJcbiAgcHVibGljIHRyYW5zcGFyZW5jeTogYm9vbGVhbjtcclxuICBwdWJsaWMgcXVhbGl0eTogbnVtYmVyO1xyXG4gIHB1YmxpYyByZW5kZXJUeXBlOiBSZW5kZXJUeXBlO1xyXG4gIHB1YmxpYyBkdXJhdGlvbjogbnVtYmVyO1xyXG4gIHB1YmxpYyBib3VuY2VzOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDYW1lcmEge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgYXNzZXRJZDogc3RyaW5nOyAvLyBmb3IgcHJlLWNyZWF0ZWQgY2FtZXJhXHJcbiAgZm92OiBudW1iZXI7IC8vIG9yIG1heWJlIGxlbnMgaW4gbW0/XHJcbiAgdHJhbnNmb3JtOiBhbnk7XHJcbiAgZG9mOiBDYW1lcmFET0Y7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDYW1lcmFET0Yge1xyXG4gIGZvY2FsTGVuZ3RoOiBudW1iZXI7XHJcbiAgZlN0b3A6IG51bWJlcjtcclxuICBibGFkZXM6IG51bWJlcjtcclxuICByb3RhdGlvbjogbnVtYmVyO1xyXG59XHJcblxyXG5lbnVtIE91dHB1dFR5cGUge1xyXG4gIEpwZWcgPSAwLFxyXG4gIFBuZyA9IDEsXHJcbiAgR2xiID0gMixcclxuICBWaWRlbyA9IDNcclxufVxyXG5cclxuZW51bSBSZW5kZXJUeXBlIHtcclxuICBSZWFsdGltZSA9IDAsXHJcbiAgUmF5dHJhY2UgPSAxXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlTW9kdWxlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpT25lQ29udHJvbGxlclNlcnZpY2U6IEhvbWVkZWNvcmF0b3JDb25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHVibGljIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlQnVzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIF9zZXR0aW5nc1NlcnZpY2U6IEhvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGxvYWRUb0FwaUdMQihmb3JtRGF0YTogRm9ybURhdGEsIGZpbGVuYW1lOiBzdHJpbmcsIGNhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmEsIHN0YW5kYWxvbmU6IGJvb2xlYW4sIHJlbmRlclBhcmFtZXRlcnM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgYXBpVXJsOiBzdHJpbmcgPSB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MudXBsb2FkRW5kcG9pbnQ7XHJcbiAgICBjb25zdCBvcHRpb25zOiBPYmplY3QgPSB7fTtcclxuICAgIHRoaXMuX3NlbmRSZXF1ZXN0KGFwaVVybCwgZm9ybURhdGEsIG9wdGlvbnMpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkhpZGVMb2FkaW5nSW5kaWNhdG9yKTtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNob3dMb2FkaW5nSW5kaWNhdG9yLCB7dGl0bGU6ICdSZW5kZXJpbmcuLi4nfSk7XHJcbiAgICAgIHRoaXMucmVxdWVzdFJlbmRlcihmaWxlbmFtZSwgY2FtZXJhLCBzdGFuZGFsb25lLCByZW5kZXJQYXJhbWV0ZXJzKTtcclxuICAgIH0pLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlJlbmRlckVycm9yLCB7dGl0bGU6ICdVcGxvYWQgZXJyb3InLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0UmVuZGVyKGZpbGVuYW1lOiBzdHJpbmcsIGNhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmEsIHN0YW5kYWxvbmU6IGJvb2xlYW4sIHJlbmRlclBhcmFtZXRlcnM6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBhcGlVcmw6IHN0cmluZyA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5yZW5kZXJFbmRwb2ludDtcclxuICAgIGNvbnN0IG9wdGlvbnM6IE9iamVjdCA9IHRoaXMuX3NldE9wdGlvbnMoKTtcclxuICAgIGxldCByZXF1ZXN0OiBPYmplY3Q7XHJcblxyXG4gICAgaWYgKHN0YW5kYWxvbmUpIHtcclxuICAgICAgcmVxdWVzdCA9IHRoaXMuX2NyZWF0ZVByb2R1Y3RSZW5kZXJSZXF1ZXN0Qm9keShmaWxlbmFtZSwgY2FtZXJhLCByZW5kZXJQYXJhbWV0ZXJzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlcXVlc3QgPSB0aGlzLl9jcmVhdGVSZW5kZXJSZXF1ZXN0Qm9keShmaWxlbmFtZSwgY2FtZXJhLCByZW5kZXJQYXJhbWV0ZXJzKTtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuX3NlbmRSZXF1ZXN0KGFwaVVybCwgcmVxdWVzdCwgb3B0aW9ucykudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAoIXN0YW5kYWxvbmUpIHtcclxuICAgICAgICBjb25zdCBkb3dubG9hZEZpbGVuYW1lOiBzdHJpbmcgPSBmaWxlbmFtZS5yZXBsYWNlKCcuZ2xiJywgJy5qcGcnKTtcclxuICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgZWxlbWVudC5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChyZXN1bHQpO1xyXG4gICAgICAgIGVsZW1lbnQuZG93bmxvYWQgPSBkb3dubG9hZEZpbGVuYW1lO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcbiAgICAgICAgZWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkhpZGVMb2FkaW5nSW5kaWNhdG9yKTtcclxuICAgICAgICB0aGlzLl9kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKDxCbG9iPnJlc3VsdCk7XHJcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGFVUkw6IHN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkhpZGVMb2FkaW5nSW5kaWNhdG9yKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5CbGVuZGVyUmVuZGVyRmlsZVJlYWR5LCBkYXRhVVJMKTtcclxuICAgICAgICAgIHJldHVybiBkYXRhVVJMO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlJlbmRlckVycm9yLCB7dGl0bGU6ICdSZW5kZXIgZXJyb3InLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3NlbmRSZXF1ZXN0KHVybDogc3RyaW5nLCBib2R5OiBhbnksIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2h0dHAucG9zdChgJHt1cmx9YCwgYm9keSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRPcHRpb25zKCk6IE9iamVjdCB7XHJcbiAgICBjb25zdCBoZWFkZXJzOiBPYmplY3QgPSB7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LU1ldGhvZCc6ICdQT1NUJ1xyXG4gICAgfTtcclxuICAgIHJldHVybiB7aGVhZGVycywgcmVzcG9uc2VUeXBlOiAnYmxvYicsIHJlcG9ydFByb2dyZXNzOiB0cnVlfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZVJlbmRlclJlcXVlc3RCb2R5KGZpbGVuYW1lOiBzdHJpbmcsIGNhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmEsIHJlbmRlclBhcmFtZXRlcnM6IGFueSk6IE9iamVjdCB7XHJcbiAgICBjb25zdCBwb3N0Qm9keTogYW55ID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnJlbmRlckFwaUNsaWVudElkLFxyXG4gICAgICBzY2VuZVNldHRpbmdzOiB7XHJcbiAgICAgICAgc2NlbmVBc3NldElkOiByZW5kZXJQYXJhbWV0ZXJzLnNjZW5lQXNzZXRJZCxcclxuICAgICAgICBhY3RpdmVDYW1lcmFJZDogMVxyXG4gICAgICB9LFxyXG4gICAgICBvdXRwdXRTZXR0aW5nczogdGhpcy5fc2V0T3V0cHV0U2V0dGluZ3MocmVuZGVyUGFyYW1ldGVycyksXHJcbiAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICBtYXRlcmlhbHM6IFtdLFxyXG4gICAgICAgIGNhbWVyYXM6IFtcclxuICAgICAgICAgIHRoaXMuX2NhbWVyYVNldHRpbmdzKGNhbWVyYSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIGxpZ2h0czogW10sXHJcbiAgICAgICAgZ3JvdXBzOiBbXSxcclxuICAgICAgICBwcmVmYWJzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiA3LFxyXG4gICAgICAgICAgICBhc3NldElkOiBmaWxlbmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBwb3N0Qm9keTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZVByb2R1Y3RSZW5kZXJSZXF1ZXN0Qm9keShmaWxlbmFtZTogc3RyaW5nLCBjYW1lcmE6IFBlcnNwZWN0aXZlQ2FtZXJhLCByZW5kZXJQYXJhbWV0ZXJzOiBhbnkpOiBPYmplY3Qge1xyXG4gICAgY29uc3QgcG9zdEJvZHk6IGFueSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5yZW5kZXJBcGlDbGllbnRJZCxcclxuICAgICAgc2NlbmVTZXR0aW5nczoge1xyXG4gICAgICAgIHNjZW5lQXNzZXRJZDogcmVuZGVyUGFyYW1ldGVycy5zY2VuZUFzc2V0SWQsXHJcbiAgICAgICAgYWN0aXZlQ2FtZXJhSWQ6IDFcclxuICAgICAgfSxcclxuICAgICAgb3V0cHV0U2V0dGluZ3M6IHRoaXMuX3NldFByb2R1Y3RPdXRwdXRTZXR0aW5ncyhyZW5kZXJQYXJhbWV0ZXJzKSxcclxuICAgICAgY29udGVudDoge1xyXG4gICAgICAgIG1hdGVyaWFsczogW10sXHJcbiAgICAgICAgY2FtZXJhczogW1xyXG4gICAgICAgICAgdGhpcy5fY2FtZXJhUHJvZHVjdFNldHRpbmdzKGNhbWVyYSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIGxpZ2h0czogW10sXHJcbiAgICAgICAgZ3JvdXBzOiBbXSxcclxuICAgICAgICBwcmVmYWJzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiA3LFxyXG4gICAgICAgICAgICBhc3NldElkOiBmaWxlbmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBwb3N0Qm9keTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE91dHB1dFNldHRpbmdzKHJlbmRlclBhcmFtZXRlcnMpOiBPdXRwdXRTZXR0aW5ncyB7XHJcbiAgICBjb25zdCBvdXRwdXRTZXR0aW5nczogT3V0cHV0U2V0dGluZ3MgPSBuZXcgT3V0cHV0U2V0dGluZ3MoKTtcclxuICAgIG91dHB1dFNldHRpbmdzLndpZHRoID0gcmVuZGVyUGFyYW1ldGVycy53aWR0aDtcclxuICAgIG91dHB1dFNldHRpbmdzLmhlaWdodCA9IHJlbmRlclBhcmFtZXRlcnMuaGVpZ2h0O1xyXG4gICAgb3V0cHV0U2V0dGluZ3Mub3V0cHV0VHlwZSA9IE91dHB1dFR5cGUuSnBlZztcclxuICAgIG91dHB1dFNldHRpbmdzLnJlbmRlclR5cGUgPSBSZW5kZXJUeXBlLlJheXRyYWNlO1xyXG4gICAgcmV0dXJuIG91dHB1dFNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0UHJvZHVjdE91dHB1dFNldHRpbmdzKHJlbmRlclBhcmFtZXRlcnMpOiBPdXRwdXRTZXR0aW5ncyB7XHJcbiAgICBjb25zdCBvdXRwdXRTZXR0aW5nczogT3V0cHV0U2V0dGluZ3MgPSBuZXcgT3V0cHV0U2V0dGluZ3MoKTtcclxuICAgIG91dHB1dFNldHRpbmdzLndpZHRoID0gcmVuZGVyUGFyYW1ldGVycy53aWR0aDtcclxuICAgIG91dHB1dFNldHRpbmdzLmhlaWdodCA9IHJlbmRlclBhcmFtZXRlcnMuaGVpZ2h0O1xyXG4gICAgb3V0cHV0U2V0dGluZ3Mub3V0cHV0VHlwZSA9IE91dHB1dFR5cGUuSnBlZztcclxuICAgIG91dHB1dFNldHRpbmdzLnJlbmRlclR5cGUgPSBSZW5kZXJUeXBlLlJlYWx0aW1lO1xyXG4gICAgcmV0dXJuIG91dHB1dFNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlQ2FtZXJhUG9zaXRpb25Sb3RhdGlvbihjYW1lcmE6IFBlcnNwZWN0aXZlQ2FtZXJhKTogYW55IHtcclxuICAgIGNvbnN0IHBvczogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKCkuY29weShjYW1lcmEucG9zaXRpb24pO1xyXG4gICAgY29uc3QgcXVhdGVybmlvbjogUXVhdGVybmlvbiA9IGNhbWVyYS5xdWF0ZXJuaW9uO1xyXG4gICAgY29uc3QgYmxlbmRlclF1YXQ6IFF1YXRlcm5pb24gPSBuZXcgUXVhdGVybmlvbigpLnNldEZyb21BeGlzQW5nbGUobmV3IFZlY3RvcjMoMSwgMCwgMCksIE1hdGhVdGlscy5kZWdUb1JhZCg5MCkpO1xyXG4gICAgY29uc3QgZXVsZXI6IEV1bGVyID0gbmV3IEV1bGVyKCkuc2V0RnJvbVF1YXRlcm5pb24oXHJcbiAgICAgIGJsZW5kZXJRdWF0Lm11bHRpcGx5KHF1YXRlcm5pb24pLFxyXG4gICAgICAnWllYJ1xyXG4gICAgKTtcclxuICAgIHBvcy5hcHBseUF4aXNBbmdsZShuZXcgVmVjdG9yMygxLCAwLCAwKSwgTWF0aFV0aWxzLmRlZ1RvUmFkKDkwKSk7XHJcbiAgICBjb25zdCByb3Q6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMyhcclxuICAgICAgTWF0aFV0aWxzLnJhZFRvRGVnKGV1bGVyLngpLFxyXG4gICAgICBNYXRoVXRpbHMucmFkVG9EZWcoZXVsZXIueSksXHJcbiAgICAgIE1hdGhVdGlscy5yYWRUb0RlZyhldWxlci56KVxyXG4gICAgKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdwb3NpdGlvbic6IHBvcyxcclxuICAgICAgJ3JvdGF0aW9uJzogcm90XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0Q2FtZXJhUm90YXRpb24oY2FtZXJhSW5mbzogYW55KTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgc2V0OiB7XHJcbiAgICAgICAgICB4OiB0aGlzLl9zaG9ydGVuVmFsdWUoY2FtZXJhSW5mby5wb3NpdGlvbi54KSxcclxuICAgICAgICAgIHk6IHRoaXMuX3Nob3J0ZW5WYWx1ZShjYW1lcmFJbmZvLnBvc2l0aW9uLnkpLFxyXG4gICAgICAgICAgejogdGhpcy5fc2hvcnRlblZhbHVlKGNhbWVyYUluZm8ucG9zaXRpb24ueilcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHJvdGF0aW9uOiB7XHJcbiAgICAgICAgc2V0OiB7XHJcbiAgICAgICAgICB4OiB0aGlzLl9zaG9ydGVuVmFsdWUoY2FtZXJhSW5mby5yb3RhdGlvbi54KSxcclxuICAgICAgICAgIHk6IHRoaXMuX3Nob3J0ZW5WYWx1ZShjYW1lcmFJbmZvLnJvdGF0aW9uLnkpLFxyXG4gICAgICAgICAgejogdGhpcy5fc2hvcnRlblZhbHVlKGNhbWVyYUluZm8ucm90YXRpb24ueilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYW1lcmFTZXR0aW5ncyhjYW1lcmE6IFBlcnNwZWN0aXZlQ2FtZXJhKTogQ2FtZXJhIHtcclxuICAgIGNvbnN0IGNhbWVyYUluZm8gPSB0aGlzLl9jYWxjdWxhdGVDYW1lcmFQb3NpdGlvblJvdGF0aW9uKGNhbWVyYSk7XHJcbiAgICBjb25zdCByZW5kZXJDYW1lcmE6IENhbWVyYSA9IG5ldyBDYW1lcmEoKTtcclxuICAgIHJlbmRlckNhbWVyYS5pZCA9IDE7XHJcbiAgICByZW5kZXJDYW1lcmEuYXNzZXRJZCA9ICdjYW1lcmFfY29saWpuJztcclxuICAgIHJlbmRlckNhbWVyYS50cmFuc2Zvcm0gPSB0aGlzLl9zZXRDYW1lcmFSb3RhdGlvbihjYW1lcmFJbmZvKTtcclxuICAgIHJldHVybiByZW5kZXJDYW1lcmE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYW1lcmFQcm9kdWN0U2V0dGluZ3MoY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYSk6IGFueSB7XHJcbiAgICBjb25zdCBjYW1lcmFJbmZvID0gdGhpcy5fY2FsY3VsYXRlQ2FtZXJhUG9zaXRpb25Sb3RhdGlvbihjYW1lcmEpO1xyXG4gICAgY29uc3QgcmVuZGVyQ2FtZXJhOiBDYW1lcmEgPSBuZXcgQ2FtZXJhKCk7XHJcbiAgICByZW5kZXJDYW1lcmEuaWQgPSAxO1xyXG4gICAgcmVuZGVyQ2FtZXJhLmFzc2V0SWQgPSAnY2FtZXJhX2NvbGlqbic7XHJcbiAgICByZW5kZXJDYW1lcmEudHJhbnNmb3JtID0gdGhpcy5fc2V0Q2FtZXJhUm90YXRpb24oY2FtZXJhSW5mbyk7XHJcbiAgICByZW5kZXJDYW1lcmEuZm92ID0gOTA7XHJcbiAgICByZXR1cm4gcmVuZGVyQ2FtZXJhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0U2NlbmVCYXNlZExpZ2h0cyhzY2VuZUFzc2V0SWQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICBpZiAoc2NlbmVBc3NldElkLmluY2x1ZGVzKCdlZXZlZScpKSB7XHJcbiAgICAgIHJldHVybiBbe1xyXG4gICAgICAgICdpZCc6IDcsXHJcbiAgICAgICAgJ2Fzc2V0SWQnOiAnbGlnaHRzX2VldmVlJ1xyXG4gICAgICB9XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3J0ZW5WYWx1ZSh2YWx1ZSk6IG51bWJlciB7XHJcbiAgICBjb25zdCBmYWN0b3I6IG51bWJlciA9IE1hdGgucG93KDEwLCA1KTtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlICogZmFjdG9yKSAvIGZhY3RvcjtcclxuICB9XHJcbn1cclxuIl19
@@ -15,6 +15,7 @@ export class HomedecoratorAppEventService {
15
15
  this.objectMovingOrRotating = new Subject();
16
16
  this.addToCart = new Subject();
17
17
  this.addExternalSourceToCart = new Subject();
18
+ this.dirty = new Subject();
18
19
  }
19
20
  }
20
21
  HomedecoratorAppEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HomedecoratorAppEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -25,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
25
26
  providedIn: 'root'
26
27
  }]
27
28
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci1hcHAtZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLWFwcC1ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBUzlDLE1BQU0sT0FBTyw0QkFBNEI7SUFIekM7UUFLUyxnQkFBVyxHQUE0QixJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztRQUM5RSxzQkFBaUIsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEYsd0JBQW1CLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDN0Qsd0JBQW1CLEdBQTRCLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzlFLGtCQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLDJCQUFzQixHQUF1QixJQUFJLE9BQU8sRUFBYSxDQUFDO1FBQ3RFLHVCQUFrQixHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXJFLGdCQUFXLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFDL0MsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqRCwyQkFBc0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1RCxjQUFTLEdBQXFFLElBQUksT0FBTyxFQUEyRCxDQUFDO1FBQ3JKLDRCQUF1QixHQUErQyxJQUFJLE9BQU8sRUFBcUMsQ0FBQztLQUUvSDs7MEhBbEJZLDRCQUE0Qjs4SEFBNUIsNEJBQTRCLGNBRjNCLE1BQU07NEZBRVAsNEJBQTRCO2tCQUh4QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvc2VsZWN0aW9uJztcclxuaW1wb3J0IHtBbnN3ZXJ9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvYW5zd2VyJztcclxuaW1wb3J0IHtBcnRpY2xlRXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZX0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvaW50ZXJmYWNlL2V4dGVybmFsLXNvdXJjZS1hcnRpY2xlLWFkZC5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9tZWRlY29yYXRvckFwcEV2ZW50U2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBpbnN0YW5jZVNldDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcclxuICBwdWJsaWMgZW5hYmxlSW50ZWdyYXRpb246IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyBhcnRpY2xlSW5mb1JlY2VpdmVkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgcHVibGljIGFuc3dlckNvdW50UmVjZWl2ZWQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gIHB1YmxpYyByZWFkeVRvUmVuZGVyOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0U2VsZWN0aW9uc0NhbGxlZDogU3ViamVjdDxTZWxlY3Rpb24+ID0gbmV3IFN1YmplY3Q8U2VsZWN0aW9uPigpO1xyXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RBbnN3ZXJDYWxsZWQ6IFN1YmplY3Q8QW5zd2VyPiA9IG5ldyBTdWJqZWN0PEFuc3dlcj4oKTtcclxuXHJcbiAgcHVibGljIHNob3dPdXRsaW5lOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHVibGljIGhpZGVPdXRsaW5lOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIG9iamVjdE1vdmluZ09yUm90YXRpbmc6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBwdWJsaWMgYWRkVG9DYXJ0OiBTdWJqZWN0PHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0+ID0gbmV3IFN1YmplY3Q8eyBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQsIHF1YW50aXR5OiBudW1iZXIgfT4oKTtcclxuICBwdWJsaWMgYWRkRXh0ZXJuYWxTb3VyY2VUb0NhcnQ6IFN1YmplY3Q8RXh0ZXJuYWxTb3VyY2VBcnRpY2xlQWRkSW50ZXJmYWNlPiA9IG5ldyBTdWJqZWN0PEV4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZT4oKTtcclxuXHJcbn1cclxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci1hcHAtZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLWFwcC1ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBUzlDLE1BQU0sT0FBTyw0QkFBNEI7SUFIekM7UUFLUyxnQkFBVyxHQUE0QixJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztRQUM5RSxzQkFBaUIsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEYsd0JBQW1CLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDN0Qsd0JBQW1CLEdBQTRCLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzlFLGtCQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLDJCQUFzQixHQUF1QixJQUFJLE9BQU8sRUFBYSxDQUFDO1FBQ3RFLHVCQUFrQixHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXJFLGdCQUFXLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFDL0MsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqRCwyQkFBc0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1RCxjQUFTLEdBQXFFLElBQUksT0FBTyxFQUEyRCxDQUFDO1FBQ3JKLDRCQUF1QixHQUErQyxJQUFJLE9BQU8sRUFBcUMsQ0FBQztRQUV2SCxVQUFLLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7S0FDekQ7OzBIQW5CWSw0QkFBNEI7OEhBQTVCLDRCQUE0QixjQUYzQixNQUFNOzRGQUVQLDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XHJcbmltcG9ydCB7QW5zd2VyfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2Fuc3dlcic7XHJcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvJztcclxuaW1wb3J0IHtFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2V9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL2ludGVyZmFjZS9leHRlcm5hbC1zb3VyY2UtYXJ0aWNsZS1hZGQuaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvbWVkZWNvcmF0b3JBcHBFdmVudFNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgaW5zdGFuY2VTZXQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIGVuYWJsZUludGVncmF0aW9uOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgYXJ0aWNsZUluZm9SZWNlaXZlZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHB1YmxpYyBhbnN3ZXJDb3VudFJlY2VpdmVkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICBwdWJsaWMgcmVhZHlUb1JlbmRlcjogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdFNlbGVjdGlvbnNDYWxsZWQ6IFN1YmplY3Q8U2VsZWN0aW9uPiA9IG5ldyBTdWJqZWN0PFNlbGVjdGlvbj4oKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QW5zd2VyQ2FsbGVkOiBTdWJqZWN0PEFuc3dlcj4gPSBuZXcgU3ViamVjdDxBbnN3ZXI+KCk7XHJcblxyXG4gIHB1YmxpYyBzaG93T3V0bGluZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIHB1YmxpYyBoaWRlT3V0bGluZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHB1YmxpYyBvYmplY3RNb3ZpbmdPclJvdGF0aW5nOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIGFkZFRvQ2FydDogU3ViamVjdDx7IGFydGljbGU6IHN0cmluZyB8IEFydGljbGVFeHRlbmRlZCwgcXVhbnRpdHk6IG51bWJlciB9PiA9IG5ldyBTdWJqZWN0PHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0+KCk7XHJcbiAgcHVibGljIGFkZEV4dGVybmFsU291cmNlVG9DYXJ0OiBTdWJqZWN0PEV4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZT4gPSBuZXcgU3ViamVjdDxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+KCk7XHJcblxyXG4gIHB1YmxpYyBkaXJ0eTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbn1cclxuIl19
@@ -28,6 +28,8 @@ import { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full
28
28
  import { ArticleCategory } from '@colijnit/configuratorapi/build/model/article-category';
29
29
  import { ArticleFlat } from '@colijnit/articleapi/build/model/article-flat.bo';
30
30
  import { UserRoleType } from '../enum/user-role-type.enum';
31
+ import { CoDomainValue } from '@colijnit/mainapi/build/model/co-domain-value.bo';
32
+ import { DomainName } from '@colijnit/mainapi/build/enum/domain-name.enum';
31
33
  import * as i0 from "@angular/core";
32
34
  import * as i1 from "./homedecorator-app-event.service";
33
35
  export class ExternalConnector {
@@ -92,6 +94,8 @@ export class HomedecoratorConnectorAdapterService {
92
94
  else {
93
95
  if (!this.connectors.hasOwnProperty(externalSource)) {
94
96
  if (externalSourceId !== null) {
97
+ // make sure to set this.externalSource = undefined to get the data of the HOST and not the previous external source
98
+ this.externalSource = undefined;
95
99
  const externalSourceData = yield this.getExternalSource(externalSourceId);
96
100
  if (externalSourceData !== null) {
97
101
  if (externalSourceData.password !== undefined && externalSourceData.username !== undefined) {
@@ -262,7 +266,8 @@ export class HomedecoratorConnectorAdapterService {
262
266
  });
263
267
  }
264
268
  getJsonConfiguredArticles(goodId, goodType, quantity, externalSource = false, showLoader = true, instanceId, configuratorStatistics) {
265
- return this.articleApi.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, instanceId, configuratorStatistics);
269
+ // @ts-ignore
270
+ return this.articleApi.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, instanceId.toString(), configuratorStatistics);
266
271
  }
267
272
  // public getJsonMatchTableArticles(): Promise<void> {
268
273
  // return this.connector.getJsonMatchTableArticles();
@@ -348,6 +353,9 @@ export class HomedecoratorConnectorAdapterService {
348
353
  if (response && response.validationResult && response.validationResult.success) {
349
354
  return response.resultObject;
350
355
  }
356
+ else if (!response.validationResult.success) {
357
+ return Promise.reject(response.validationResult.messages[0].message);
358
+ }
351
359
  else {
352
360
  return '';
353
361
  }
@@ -355,6 +363,9 @@ export class HomedecoratorConnectorAdapterService {
355
363
  }
356
364
  getCatalogDefinitionsList() {
357
365
  return __awaiter(this, void 0, void 0, function* () {
366
+ if (!this.articleApi) {
367
+ return;
368
+ }
358
369
  const response = yield this.articleApi.getCatalogDefinitions().catch(e => {
359
370
  return new DataServiceResponseData();
360
371
  });
@@ -419,6 +430,18 @@ export class HomedecoratorConnectorAdapterService {
419
430
  }
420
431
  });
421
432
  }
433
+ getModelPlacementOptions() {
434
+ return __awaiter(this, void 0, void 0, function* () {
435
+ // DOM_3D_PLACEMENT
436
+ const result = yield this.mainApi.getDomainCollection('NL', DomainName.Dom3DPlacement);
437
+ if (result.validationResult && result.validationResult.success) {
438
+ return this._boFactory.makeBOArrayFromRawBackendDataArray(CoDomainValue, result.resultObjects);
439
+ }
440
+ else {
441
+ console.error(result.validationMessagesAsString);
442
+ }
443
+ });
444
+ }
422
445
  // public async addToCart(goodId: number, goodType: GoodType, instanceId: number, sessionId: string, quantity: number = 1): Promise<void> {
423
446
  // const json: string = await this._getJSONFromArticleObject(goodId, goodType, instanceId, sessionId, quantity);
424
447
  // this._appEventService.addToCart.next({article: json, quantity: 1});
@@ -449,4 +472,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
449
472
  providedIn: 'root'
450
473
  }]
451
474
  }], ctorParameters: function () { return [{ type: i1.HomedecoratorAppEventService }]; } });
452
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHN0IsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTFFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUMvRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDdEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUd0RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHdkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDbEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTNFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBRTFHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUNuRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUN2RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDdkYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzdFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBR3pELE1BQU0sT0FBTyxpQkFBaUI7Q0FHN0I7QUFRRCx5SUFBeUk7QUFDekksZ0RBQWdEO0FBSWhELE1BQU0sT0FBTyxvQ0FBb0M7SUEwQy9DLFlBQ1UsZ0JBQThDO1FBQTlDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBOEI7UUExQ3hDLHFCQUFnQixHQUFzQixJQUFJLE9BQU8sRUFBWSxDQUFDO1FBQzlELGVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUN0RCxvQkFBZSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTdELGdDQUEyQixHQUF3QixJQUFJLEdBQUcsQ0FBaUI7WUFDakYsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMzQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzNCLENBQUMsQ0FBQztRQTBCSSxlQUFVLEdBQXNCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQU12RCxlQUFVLEdBQTBCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUt4RSxDQUFDO0lBbkNELElBQVcsU0FBUztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDeEI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7U0FDbEU7SUFDSCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0QjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQWVZLGFBQWEsQ0FBQyxPQUFnQixFQUFFLGNBQXVCLEVBQUUsV0FBcUIsRUFBRSxnQkFBeUI7O1lBQ3BILElBQUksY0FBYyxLQUFLLFNBQVMsSUFBSSxjQUFjLEtBQUssSUFBSSxFQUFFO2dCQUMzRCxNQUFNLGNBQWMsR0FBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQztnQkFDL0csSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksY0FBYyxFQUFFO29CQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDM0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQzNGO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLGNBQWMsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDMUM7Z0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksY0FBYyxFQUFFO29CQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQzthQUNqQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBQ25ELElBQUksZ0JBQWdCLEtBQUssSUFBSSxFQUFFO3dCQUM3QixNQUFNLGtCQUFrQixHQUFtQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUMxRixJQUFJLGtCQUFrQixLQUFLLElBQUksRUFBRTs0QkFDL0IsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLGtCQUFrQixDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0NBQzFGLE9BQU8sQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDO2dDQUMvQyxPQUFPLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztnQ0FDL0MsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQzs2QkFDbkM7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsTUFBTSxlQUFlLEdBQVksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3RELE1BQU0sZUFBZSxHQUE0QixNQUFNLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNwSCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNuQixPQUFPLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDdkMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxlQUFlLElBQUksZUFBZSxDQUFDLGlCQUFpQixDQUFDLEtBQUssU0FBUyxFQUFFO3dCQUN2RSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQzt3QkFDMUMsTUFBTSxvQkFBb0IsR0FBaUIsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ3JFLE1BQU0sYUFBYSxHQUFrQixNQUFNLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTs0QkFDbEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDZixPQUFPLElBQUksQ0FBQzt3QkFDZCxDQUFDLENBQUMsQ0FBQzt3QkFDSCxJQUFJLGFBQWEsRUFBRTs0QkFDakIsTUFBTSxrQkFBa0IsR0FBYSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDM0Qsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7NEJBQ2hGLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzs0QkFDL0YsTUFBTSxpQkFBaUIsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDOzRCQUNyRSxpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzRCQUNoRCxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsRUFBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQzs0QkFDMUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxpQkFBaUIsQ0FBQzt5QkFDckQ7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7YUFDdEM7UUFDSCxDQUFDO0tBQUE7SUFFWSxNQUFNOztZQUNqQixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEMsQ0FBQztLQUFBO0lBRU0sOEJBQThCO1FBQ25DLElBQUksR0FBVyxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDdkQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUU7b0JBQ3hELEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO2lCQUMzQzthQUNGO1NBQ0Y7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO2FBQzlCO1NBQ0Y7UUFDRCxJQUFJLEdBQUcsRUFBRTtZQUNQLE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFDO2FBQ2hCO1NBQ0Y7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFWSxxQkFBcUIsQ0FBQyxPQUEwQzs7WUFDM0UsYUFBYTtZQUNiLE1BQU0sUUFBUSxHQUE0QixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0YsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQzlFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQywwQkFBMEIsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUEwQyxDQUFDO2FBQzNJO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDO0tBQUE7SUFFWSxzQkFBc0IsQ0FBQyxHQUFXOztZQUM3QyxNQUFNLFFBQVEsR0FBNEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVGLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO2dCQUM5RSxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtRQUNILENBQUM7S0FBQTtJQUVNLGdCQUFnQixDQUFDLE1BQWM7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUFrQixFQUFFLGFBQXFCLEVBQUUsYUFBcUI7UUFDdEYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLFlBQVksQ0FBQyxVQUFrQixFQUFFLDJCQUFvQztRQUMxRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFWSxrQkFBa0I7O1lBQzdCLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNwRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBQ0gsd0JBQXdCO1lBQ3hCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUMzRCxNQUFNLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUMvQyxPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDLENBQUMsQ0FBQztpQkFDSjthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQUE7SUFFRCwrQkFBK0I7SUFDbEIsVUFBVSxDQUFDLEdBQVcsRUFBRSxNQUFjOztZQUNqRCxNQUFNLE1BQU0sR0FBVyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5RCxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDaEQ7WUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixDQUFDO0tBQUE7SUFFWSxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsTUFBYzs7WUFDNUQsTUFBTSxRQUFRLEdBQTRCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkcsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQzlFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQVksQ0FBQzthQUN0RztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBO0lBRUQsa0NBQWtDO0lBQ2xDLG9DQUFvQztJQUNwQyxJQUFJO0lBRUoseUNBQXlDO0lBQ3pDLDRDQUE0QztJQUM1QyxJQUFJO0lBRUcsMEJBQTBCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFWSxrQkFBa0I7O1lBQzdCLE1BQU0sUUFBUSxHQUE0QixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0UsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQzlFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBZ0IsQ0FBQzthQUM3RztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztLQUFBO0lBRVksYUFBYTs7WUFDeEIsTUFBTSxRQUFRLEdBQTRCLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxRSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDOUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGtDQUFrQyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFlLENBQUM7YUFDM0c7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7S0FBQTtJQUVZLGVBQWU7O1lBQzFCLE1BQU0sUUFBUSxHQUE0QixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNsRixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDOUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGtDQUFrQyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFrQixDQUFDO2FBQ2pIO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0tBQUE7SUFFTSx5QkFBeUIsQ0FBQyxNQUFjLEVBQ2QsUUFBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsaUJBQTBCLEtBQUssRUFDL0IsYUFBc0IsSUFBSSxFQUMxQixVQUFtQixFQUNuQixzQkFBMEQ7UUFDekYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDNUksQ0FBQztJQUVELHNEQUFzRDtJQUN0RCx1REFBdUQ7SUFDdkQsSUFBSTtJQUVTLHNCQUFzQixDQUFDLEVBQVU7O1lBQzVDLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbEQ7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLHVCQUF1QixFQUFFLENBQUM7YUFDdEM7UUFDSCxDQUFDO0tBQUE7SUFFWSxZQUFZLENBQUMsTUFBYyxFQUFFLFNBQWtCOztZQUMxRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0QsQ0FBQztLQUFBO0lBRU0sWUFBWSxDQUFDLHdCQUFpQyxJQUFJO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sZUFBZSxDQUNwQixTQUFvQixFQUFFLGVBQXlCLEVBQUUsS0FBZSxFQUFFLFNBQWtCO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTSxlQUFlLENBQUMsU0FBb0I7UUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsU0FBb0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFWSw0QkFBNEIsQ0FDdkMsaUJBQXFDLEVBQUUsV0FBbUIsRUFBRSxZQUFxQixJQUFJLEVBQUUsYUFBc0IsSUFBSTs7WUFDakgsTUFBTSxRQUFRLEdBQTRCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkksSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLFlBQVksRUFBRTtnQkFDdkcsSUFBSSxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxLQUFLLEVBQUUsRUFBRTtvQkFDcEksT0FBTyxVQUFVLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDNUU7cUJBQU07b0JBQ0wsT0FBTyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQy9FLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ3pGO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUM7YUFDWDtRQUNILENBQUM7S0FBQTtJQUVZLHlCQUF5QixDQUFDLE1BQWU7O1lBQ3BELE1BQU0sUUFBUSxHQUE0QixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hHLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO2dCQUM5RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQW1CLENBQUM7YUFDeEc7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVNLDhCQUE4QixDQUFDLGlCQUFxQyxFQUFFLFlBQXFCLElBQUk7UUFDcEcsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVZLGFBQWEsQ0FBQyxNQUFjOztZQUN2QyxNQUFNLFFBQVEsR0FBNEIsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BHLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO2dCQUM5RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsa0NBQWtDLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQWtCLENBQUM7YUFDaEg7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7S0FBQTtJQUVZLG9CQUFvQixDQUFDLFNBQXdCOztZQUN4RCxNQUFNLFFBQVEsR0FBNEIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xHLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO2dCQUM5RSxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUM7YUFDWDtRQUNILENBQUM7S0FBQTtJQUVZLGVBQWUsQ0FBQyxRQUFnQixFQUFFLFlBQW9COztZQUNqRSxNQUFNLFFBQVEsR0FBNEIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN0RyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDOUUsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDO2FBQzlCO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxDQUFDO2FBQ1g7UUFDSCxDQUFDO0tBQUE7SUFFWSx5QkFBeUI7O1lBQ3BDLE1BQU0sUUFBUSxHQUE0QixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hHLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQzlFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUF3QixDQUFDO2FBQzdIO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7YUFDcEQ7UUFDSCxDQUFDO0tBQUE7SUFFWSxpQkFBaUIsQ0FBQyxnQkFBd0I7O1lBQ3JELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE1BQU0sUUFBUSxHQUE0QixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNwRyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDOUUsSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFO29CQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQW1CLENBQUM7aUJBQ3hHO3FCQUFNO29CQUNMLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQzthQUNyRztRQUNILENBQUM7S0FBQTtJQUVZLG9CQUFvQixDQUFDLE1BQWM7O1lBQzlDLE1BQU0sTUFBTSxHQUE0QixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0YsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDOUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQWlDLENBQUM7YUFDdkg7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUNsRDtRQUNILENBQUM7S0FBQTtJQUVZLG9CQUFvQixDQUFDLGVBQXVCOztZQUN2RCxNQUFNLE1BQU0sR0FBNEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BHLElBQUksTUFBTSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQzlELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBaUMsQ0FBQzthQUNsSTtpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO2FBQ2xEO1FBQ0gsQ0FBQztLQUFBO0lBRUQsRUFBRTtJQUNXLGNBQWMsQ0FBQyxHQUFXOztZQUNyQyxNQUFNLE1BQU0sR0FBNEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQTJCLENBQUM7YUFDM0c7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUNsRDtRQUNILENBQUM7S0FBQTtJQUVELDJJQUEySTtJQUMzSSxrSEFBa0g7SUFDbEgsd0VBQXdFO0lBQ3hFLElBQUk7SUFDSixFQUFFO0lBQ0YsOEpBQThKO0lBQzlKLDRFQUE0RTtJQUM1RSx1REFBdUQ7SUFDdkQsc0RBQXNEO0lBQ3RELDJEQUEyRDtJQUMzRCxrREFBa0Q7SUFDbEQsMkRBQTJEO0lBQzNELDhEQUE4RDtJQUM5RCwrSEFBK0g7SUFDL0gsSUFBSTtJQUVJLDBCQUEwQixDQUFDLElBQVk7UUFDN0MsSUFBSSxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7a0lBbFpVLG9DQUFvQztzSUFBcEMsb0NBQW9DLGNBRm5DLE1BQU07NEZBRVAsb0NBQW9DO2tCQUhoRCxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQge0Fuc3dlcn0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9hbnN3ZXInO1xyXG5pbXBvcnQge1NlbGVjdGlvbn0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9zZWxlY3Rpb24nO1xyXG5pbXBvcnQge1F1ZXN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3F1ZXN0aW9uJztcclxuaW1wb3J0IHtBbnN3ZXJQcmljZX0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9hbnN3ZXItcHJpY2UnO1xyXG5pbXBvcnQge0FydGljbGV9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZSc7XHJcbmltcG9ydCB7RGVjb05vZGV9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvZGVjby1ub2RlJztcclxuaW1wb3J0IHtTa2lwQnV0dG9uSW5mb30gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9za2lwLWJ1dHRvbi1pbmZvJztcclxuaW1wb3J0IHtDb25maWd1cmF0b3JTdGF0aXN0aWNzRW52aXJvbm1lbnR9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvY29uZmlndXJhdG9yLXN0YXRpc3RpY3MtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQge09wdGlvbnN9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL29wdGlvbnMnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRvcn0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaSc7XHJcbmltcG9ydCB7SW50ZXJuYWxQYXJhbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9pbnRlcm5hbC1wYXJhbS5lbnVtJztcclxuaW1wb3J0IHtRdWVzdGlvbkFuZEFuc3dlcnN9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvcXVlc3Rpb24tYW5kLWFuc3dlcnMnO1xyXG5pbXBvcnQge01haW5BcGl9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpJztcclxuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvZGF0YS1zZXJ2aWNlLXJlc3BvbnNlLWRhdGEnO1xyXG5pbXBvcnQge0FydGljbGVzfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9hcnRpY2xlcyc7XHJcbmltcG9ydCB7QXJ0aWNsZVRleHR9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS10ZXh0LmJvJztcclxuaW1wb3J0IHtCdXNpbmVzc09iamVjdEZhY3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3NlcnZpY2UvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnknO1xyXG5pbXBvcnQge0ltYWdlVXRpbHN9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3V0aWxzL2ltYWdlLXV0aWxzJztcclxuaW1wb3J0IHtFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLWNhdGFsb2ctc3RhcnR1cC1pbmZvLXJlcXVlc3QnO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mbyc7XHJcbmltcG9ydCB7TG9naW5SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvbG9naW4tcmVzcG9uc2UnO1xyXG5pbXBvcnQge0NhdGFsb2dEZWZpbml0aW9ufSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9jYXRhbG9nLWRlZmluaXRpb24uYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1zb3VyY2UuYm8nO1xyXG5pbXBvcnQge0FydGljbGVGdWxsT2JqZWN0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0JztcclxuaW1wb3J0IHtBcnRpY2xlQ2F0ZWdvcnl9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1jYXRlZ29yeSc7XHJcbmltcG9ydCB7QXJ0aWNsZUZsYXR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZmxhdC5ibyc7XHJcbmltcG9ydCB7VXNlclJvbGVUeXBlfSBmcm9tICcuLi9lbnVtL3VzZXItcm9sZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JBcHBFdmVudFNlcnZpY2V9IGZyb20gJy4vaG9tZWRlY29yYXRvci1hcHAtZXZlbnQuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxDb25uZWN0b3Ige1xyXG4gIHB1YmxpYyBsb2dpblJlc3BvbnNlOiBMb2dpblJlc3BvbnNlO1xyXG4gIHB1YmxpYyBjb25uZWN0b3I6IENvbm5lY3RvcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0b3Ige1xyXG4gIGNvbm5lY3Rvcj86IENvbmZpZ3VyYXRvcjtcclxuICBhcnRpY2xlQXBpPzogQXJ0aWNsZXM7XHJcbiAgbWFpbkFwaT86IE1haW5BcGk7XHJcbn1cclxuXHJcbi8vIFNvbGUgcmVzcG9uc2liaWxpdHkgaXMgc2ltcGx5IHRvIHdyYXAgYXJvdW5kIGEgY29saWpuLkNvbm5lY3RvciB0byBjcmVhdGUgYSBzdGFibGUgaW5uZXIgaW50ZXJmYWNlIHRvIHRoZSBsaWJyYXJ5IGluIGEgMToxIG1ldGhvZCB3YXkuXHJcbi8vIE9ubHkgdG8gYmUgdXNlZCBieSB0aGUgSU9uZUNvbnRyb2xsZXJTZXJ2aWNlLlxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb21lZGVjb3JhdG9yQ29ubmVjdG9yQWRhcHRlclNlcnZpY2Uge1xyXG4gIHB1YmxpYyByZWFkb25seSBxdWVzdGlvblJlY2VpdmVkOiBTdWJqZWN0PFF1ZXN0aW9uPiA9IG5ldyBTdWJqZWN0PFF1ZXN0aW9uPigpO1xyXG4gIHB1YmxpYyByZWFkb25seSBzaG93TG9hZGVyOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvblJlc2V0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfcHVibGljYXRpb25Db2RlRm9yVXNlclJvbGU6IE1hcDxzdHJpbmcsIG51bWJlcj4gPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPihbXHJcbiAgICBbVXNlclJvbGVUeXBlLkN1c3RvbWVyLCAxNl0sXHJcbiAgICBbVXNlclJvbGVUeXBlLkVtcGxveWVlLCAxXVxyXG4gIF0pO1xyXG5cclxuICBwdWJsaWMgZ2V0IGNvbm5lY3RvcigpOiBDb25maWd1cmF0b3Ige1xyXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0b3I7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3JzW3RoaXMuZXh0ZXJuYWxTb3VyY2VdLmNvbm5lY3Rvci5jb25uZWN0b3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFydGljbGVBcGkoKTogQXJ0aWNsZXMge1xyXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hcnRpY2xlQXBpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yc1t0aGlzLmV4dGVybmFsU291cmNlXS5jb25uZWN0b3IuYXJ0aWNsZUFwaTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbWFpbkFwaSgpOiBNYWluQXBpIHtcclxuICAgIGlmICghdGhpcy5leHRlcm5hbFNvdXJjZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbWFpbkFwaTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RvcnNbdGhpcy5leHRlcm5hbFNvdXJjZV0uY29ubmVjdG9yLm1haW5BcGk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29ubmVjdG9yczogRXh0ZXJuYWxDb25uZWN0b3IgPSBuZXcgRXh0ZXJuYWxDb25uZWN0b3IoKTtcclxuICBwdWJsaWMgZXh0ZXJuYWxTb3VyY2U6IHN0cmluZztcclxuICBwdWJsaWMgbG9naW5SZXNwb25zZTogTG9naW5SZXNwb25zZTtcclxuICBwcml2YXRlIF9jb25uZWN0b3I/OiBDb25maWd1cmF0b3I7XHJcbiAgcHJpdmF0ZSBfYXJ0aWNsZUFwaTogQXJ0aWNsZXM7XHJcbiAgcHJpdmF0ZSBfbWFpbkFwaTogTWFpbkFwaTtcclxuICBwcml2YXRlIF9ib0ZhY3Rvcnk6IEJ1c2luZXNzT2JqZWN0RmFjdG9yeSA9IG5ldyBCdXNpbmVzc09iamVjdEZhY3RvcnkoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hcHBFdmVudFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBFdmVudFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0Q29ubmVjdG9yKG9wdGlvbnM6IE9wdGlvbnMsIGV4dGVybmFsU291cmNlPzogc3RyaW5nLCBmb3JjZVJlbG9hZD86IGJvb2xlYW4sIGV4dGVybmFsU291cmNlSWQ/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChleHRlcm5hbFNvdXJjZSA9PT0gdW5kZWZpbmVkIHx8IGV4dGVybmFsU291cmNlID09PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IHJlbmV3Q29ubmVjdG9yOiBib29sZWFuID0gKHRoaXMuX2Nvbm5lY3RvciA/IHRoaXMuX2Nvbm5lY3Rvci51cmwgIT09IG9wdGlvbnMudXJsIDogZmFsc2UpIHx8IGZvcmNlUmVsb2FkO1xyXG4gICAgICBpZiAoIXRoaXMuX2Nvbm5lY3RvciB8fCByZW5ld0Nvbm5lY3Rvcikge1xyXG4gICAgICAgIHRoaXMuX2Nvbm5lY3RvciA9IG5ldyBDb25maWd1cmF0b3Iob3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5sb2dpblJlc3BvbnNlID0gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmNvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLl9jb25uZWN0b3Iuc2hvd0xvYWRlci5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5zaG93TG9hZGVyLm5leHQodmFsdWUpKTtcclxuICAgICAgICB0aGlzLl9jb25uZWN0b3IuY29ubmVjdGlvblJlc2V0SW5hY3Rpdml0eS5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5jb25uZWN0aW9uUmVzZXQubmV4dCgpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuX2FydGljbGVBcGkgfHwgcmVuZXdDb25uZWN0b3IpIHtcclxuICAgICAgICB0aGlzLl9hcnRpY2xlQXBpID0gbmV3IEFydGljbGVzKG9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5fbWFpbkFwaSB8fCByZW5ld0Nvbm5lY3Rvcikge1xyXG4gICAgICAgIHRoaXMuX21haW5BcGkgPSBuZXcgTWFpbkFwaShvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbm5lY3RvcnMuaGFzT3duUHJvcGVydHkoZXh0ZXJuYWxTb3VyY2UpKSB7XHJcbiAgICAgICAgaWYgKGV4dGVybmFsU291cmNlSWQgIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGV4dGVybmFsU291cmNlRGF0YTogRXh0ZXJuYWxTb3VyY2UgPSBhd2FpdCB0aGlzLmdldEV4dGVybmFsU291cmNlKGV4dGVybmFsU291cmNlSWQpO1xyXG4gICAgICAgICAgaWYgKGV4dGVybmFsU291cmNlRGF0YSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoZXh0ZXJuYWxTb3VyY2VEYXRhLnBhc3N3b3JkICE9PSB1bmRlZmluZWQgJiYgZXh0ZXJuYWxTb3VyY2VEYXRhLnVzZXJuYW1lICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBvcHRpb25zLnBhc3N3b3JkID0gZXh0ZXJuYWxTb3VyY2VEYXRhLnBhc3N3b3JkO1xyXG4gICAgICAgICAgICAgIG9wdGlvbnMudXNlcm5hbWUgPSBleHRlcm5hbFNvdXJjZURhdGEudXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgb3B0aW9ucy51c2VMb2dpbkVuY3J5cHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGV4dGVybmFsTWFpbkFwaTogTWFpbkFwaSA9IG5ldyBNYWluQXBpKG9wdGlvbnMpO1xyXG4gICAgICAgIGNvbnN0IGV4dGVybmFsVmVyc2lvbjogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCBleHRlcm5hbE1haW5BcGkuZ2V0UHVibGljUGFyYW1zKCtvcHRpb25zLnNjaGVtYSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChleHRlcm5hbFZlcnNpb24gJiYgZXh0ZXJuYWxWZXJzaW9uWydjYXRhbG9nU2V0dGluZ3MnXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBjb25zdCBjYXRhbG9nU2V0dGluZ3MgPSBKU09OLnBhcnNlKGV4dGVybmFsVmVyc2lvblsnY2F0YWxvZ1NldHRpbmdzJ10pO1xyXG4gICAgICAgICAgb3B0aW9ucy52ZXJzaW9uID0gY2F0YWxvZ1NldHRpbmdzLnZlcnNpb247XHJcbiAgICAgICAgICBjb25zdCBleHRlcm5hbENvbmZpZ3VyYXRvcjogQ29uZmlndXJhdG9yID0gbmV3IENvbmZpZ3VyYXRvcihvcHRpb25zKTtcclxuICAgICAgICAgIGNvbnN0IGxvZ2luUmVzcG9uc2U6IExvZ2luUmVzcG9uc2UgPSBhd2FpdCBleHRlcm5hbENvbmZpZ3VyYXRvci5jb25uZWN0KCkuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGxvZ2luUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgY29uc3QgZXh0ZXJuYWxBcnRpY2xlQXBpOiBBcnRpY2xlcyA9IG5ldyBBcnRpY2xlcyhvcHRpb25zKTtcclxuICAgICAgICAgICAgZXh0ZXJuYWxDb25maWd1cmF0b3Iuc2hvd0xvYWRlci5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5zaG93TG9hZGVyLm5leHQodmFsdWUpKTtcclxuICAgICAgICAgICAgZXh0ZXJuYWxDb25maWd1cmF0b3IuY29ubmVjdGlvblJlc2V0SW5hY3Rpdml0eS5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5jb25uZWN0aW9uUmVzZXQubmV4dCgpKTtcclxuICAgICAgICAgICAgY29uc3QgZXh0ZXJuYWxDb25uZWN0b3I6IEV4dGVybmFsQ29ubmVjdG9yID0gbmV3IEV4dGVybmFsQ29ubmVjdG9yKCk7XHJcbiAgICAgICAgICAgIGV4dGVybmFsQ29ubmVjdG9yLmxvZ2luUmVzcG9uc2UgPSBsb2dpblJlc3BvbnNlO1xyXG4gICAgICAgICAgICBleHRlcm5hbENvbm5lY3Rvci5jb25uZWN0b3IgPSB7Y29ubmVjdG9yOiBleHRlcm5hbENvbmZpZ3VyYXRvciwgbWFpbkFwaTogZXh0ZXJuYWxNYWluQXBpLCBhcnRpY2xlQXBpOiBleHRlcm5hbEFydGljbGVBcGl9O1xyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3RvcnNbZXh0ZXJuYWxTb3VyY2VdID0gZXh0ZXJuYWxDb25uZWN0b3I7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXh0ZXJuYWxTb3VyY2UgPSBleHRlcm5hbFNvdXJjZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2dPdXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5sb2dPdXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQdWJsaWNhdGlvbkNvZGVCYXNlZE9uTG9naW4oKTogbnVtYmVyIHtcclxuICAgIGxldCByb2w6IHN0cmluZztcclxuICAgIGlmICh0aGlzLmV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbm5lY3RvcnMuaGFzT3duUHJvcGVydHkodGhpcy5leHRlcm5hbFNvdXJjZSkpIHtcclxuICAgICAgICBjb25zdCBleHRlcm5hbENvbm5lY3RvciA9IHRoaXMuY29ubmVjdG9yc1t0aGlzLmV4dGVybmFsU291cmNlXTtcclxuICAgICAgICBpZiAoZXh0ZXJuYWxDb25uZWN0b3IgJiYgZXh0ZXJuYWxDb25uZWN0b3IubG9naW5SZXNwb25zZSkge1xyXG4gICAgICAgICAgcm9sID0gZXh0ZXJuYWxDb25uZWN0b3IubG9naW5SZXNwb25zZS5yb2w7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5sb2dpblJlc3BvbnNlKSB7XHJcbiAgICAgICAgcm9sID0gdGhpcy5sb2dpblJlc3BvbnNlLnJvbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJvbCkge1xyXG4gICAgICBjb25zdCBwdWJDb2RlOiBudW1iZXIgPSB0aGlzLl9nZXRQdWJsaWNhdGlvbkNvZGVGb3JSb2xlKHJvbCk7XHJcbiAgICAgIGlmIChwdWJDb2RlICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHB1YkNvZGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFdlYlZpZXdTdGFydHVwSW5mbyhyZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QpOiBQcm9taXNlPEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvPiB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0V2Vidmlld1N0YXJ0dXBJbmZvKHJlcXVlc3QpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbywgcmVzcG9uc2UucmVzdWx0T2JqZWN0KSBhcyB1bmtub3duIGFzIEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZElkRnJvbUFydGljbGVOcihza3U6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0R29vZElkRnJvbUFydGljbGVOcihza3UpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXN1bHRPYmplY3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0Tm9kZUluc3RhbmNlKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5pbml0Tm9kZUluc3RhbmNlKGdvb2RJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlQ29ubmVjdGlvbihpbnN0YW5jZUlkOiBzdHJpbmcsIG9sZENvbm5lY3Rpb246IHN0cmluZywgbmV3Q29ubmVjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmNoYW5nZUNvbm5lY3Rpb24oaW5zdGFuY2VJZCwgb2xkQ29ubmVjdGlvbiwgbmV3Q29ubmVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29weUluc3RhbmNlKGluc3RhbmNlSWQ6IHN0cmluZywgc2hvdWxkU2F2ZUN1cnJlbnRJbnN0YW5jZUlkOiBib29sZWFuKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmNvcHlJbnN0YW5jZShpbnN0YW5jZUlkLCBzaG91bGRTYXZlQ3VycmVudEluc3RhbmNlSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNhdmVDb25maWd1cmF0aW9ucygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGF3YWl0IHRoaXMuY29ubmVjdG9yLnNhdmVDb25maWd1cmF0aW9ucygpLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgLy8gc2F2ZSBleHRlcm5hbCBzb3VyY2VzXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbm5lY3RvcnMpIHtcclxuICAgICAgaWYgKHRoaXMuY29ubmVjdG9ycy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgY29ubmVjdG9yID0gdGhpcy5jb25uZWN0b3JzW2tleV0uY29ubmVjdG9yLmNvbm5lY3RvcjtcclxuICAgICAgICBhd2FpdCBjb25uZWN0b3Iuc2F2ZUNvbmZpZ3VyYXRpb25zKCkuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBAcmV0dXJucyBUaGUgaW5pdGlhbCBhcnRpY2xlXHJcbiAgcHVibGljIGFzeW5jIGdldEFydGljbGUoc2t1OiBzdHJpbmcsIGJyYW5jaDogc3RyaW5nKTogUHJvbWlzZTxBcnRpY2xlPiB7XHJcbiAgICBjb25zdCBnb29kSWQ6IG51bWJlciA9IGF3YWl0IHRoaXMuZ2V0R29vZElkRnJvbUFydGljbGVOcihza3UpO1xyXG4gICAgaWYgKGdvb2RJZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRBcnRpY2xlUXVpY2tTZWwoZ29vZElkLCBicmFuY2gpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZVF1aWNrU2VsKGdvb2RJZDogbnVtYmVyLCBicmFuY2g6IHN0cmluZyk6IFByb21pc2U8QXJ0aWNsZT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5hcnRpY2xlQXBpLmdldEFydGljbGVRdWlja1NlbChnb29kSWQsIGJyYW5jaCk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEFydGljbGUsIHJlc3BvbnNlLnJlc3VsdE9iamVjdC5vQXJ0aWNsZVswXSkgYXMgQXJ0aWNsZTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGxvYWRTZWxlY3Rpb25zKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5jb25uZWN0b3IuZ2V0U2VsZWN0aW9ucygpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gcHVibGljIGdldFF1ZXN0aW9uQW5kQW5zd2VycygpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuY29ubmVjdG9yLmdldFF1ZXN0aW9uQW5kQW5zd2VycygpO1xyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIGdldFF1ZXN0aW9uQW5kQW5zd2Vyc0FzeW5jKCk6IFByb21pc2U8UXVlc3Rpb25BbmRBbnN3ZXJzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0UXVlc3Rpb25BbmRBbnN3ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VsZWN0aW9uc0FzeW5jKCk6IFByb21pc2U8U2VsZWN0aW9uW10+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldFNlbGVjdGlvbnMoKTtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VCT0FycmF5RnJvbVJhd0JhY2tlbmREYXRhQXJyYXkoU2VsZWN0aW9uLCByZXNwb25zZS5yZXN1bHRPYmplY3RzKSBhcyBTZWxlY3Rpb25bXTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZWNvc0FzeW5jKCk6IFByb21pc2U8RGVjb05vZGVbXT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0RGVjb3MoKTtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VCT0FycmF5RnJvbVJhd0JhY2tlbmREYXRhQXJyYXkoRGVjb05vZGUsIHJlc3BvbnNlLnJlc3VsdE9iamVjdHMpIGFzIERlY29Ob2RlW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QW5zd2VyUHJpY2VzKCk6IFByb21pc2U8QW5zd2VyUHJpY2VbXT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0QW5zd2Vyc1ByaWNlcygpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZUJPQXJyYXlGcm9tUmF3QmFja2VuZERhdGFBcnJheShBbnN3ZXJQcmljZSwgcmVzcG9uc2UucmVzdWx0T2JqZWN0cykgYXMgQW5zd2VyUHJpY2VbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRKc29uQ29uZmlndXJlZEFydGljbGVzKGdvb2RJZDogbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2RUeXBlOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IG51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbFNvdXJjZTogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMb2FkZXI6IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlSWQ/OiBudW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdG9yU3RhdGlzdGljcz86IENvbmZpZ3VyYXRvclN0YXRpc3RpY3NFbnZpcm9ubWVudCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hcnRpY2xlQXBpLmdldEpzb25BcnRpY2xlRmxhdFRyZWUoZ29vZElkLCBnb29kVHlwZSwgcXVhbnRpdHksIGV4dGVybmFsU291cmNlLCBzaG93TG9hZGVyLCBpbnN0YW5jZUlkLCBjb25maWd1cmF0b3JTdGF0aXN0aWNzKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBnZXRKc29uTWF0Y2hUYWJsZUFydGljbGVzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmdldEpzb25NYXRjaFRhYmxlQXJ0aWNsZXMoKTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRJbnN0YW5jZVRvQ29uZmlndXJlKGlkOiBzdHJpbmcpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICBpZiAoaWQgIT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLnNldEluc3RhbmNlVG9Db25maWd1cmUoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNlbGVjdEFuc3dlcihhbnN3ZXI6IEFuc3dlciwgdXNlcklucHV0Pzogc3RyaW5nKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLnNlbGVjdEFuc3dlcihhbnN3ZXIsIGZhbHNlLCB1c2VySW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbEFuc3dlcihnZXRBbnN3ZXJzQW5kUXVlc3Rpb246IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmNhbmNlbEFuc3dlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFNlbGVjdGlvbihcclxuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uLCBmb3JjZUJhY2tUb05vZGU/OiBib29sZWFuLCBhZnRlcj86IGJvb2xlYW4sIGNvbm5lY3Rvcj86IHN0cmluZyk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5zZWxlY3RTZWxlY3Rpb24oc2VsZWN0aW9uLCBmYWxzZSwgZm9yY2VCYWNrVG9Ob2RlLCBhZnRlciwgY29ubmVjdG9yKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb24pOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZGVsZXRlU2VsZWN0aW9uKHNlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVwbGFjZVNlbGVjdGlvbihzZWxlY3Rpb246IFNlbGVjdGlvbik6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5yZXBsYWNlU2VsZWN0aW9uKHNlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0SW1hZ2VGb3JBbnN3ZXJPclNlbGVjdGlvbihcclxuICAgIGFuc3dlck9yU2VsZWN0aW9uOiBBbnN3ZXIgfCBTZWxlY3Rpb24sIHB1YmxpY2F0aW9uOiBudW1iZXIsIHRodW1iTmFpbDogYm9vbGVhbiA9IHRydWUsIHNob3dMb2FkZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuYXJ0aWNsZUFwaS5nZXRTaW5nbGVJbWFnZShhbnN3ZXJPclNlbGVjdGlvbi5ub2RlSWQsIHB1YmxpY2F0aW9uLCB0cnVlLCB0aHVtYk5haWwpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzICYmIHJlc3BvbnNlLnJlc3VsdE9iamVjdCkge1xyXG4gICAgICBpZiAocmVzcG9uc2UucmVzdWx0T2JqZWN0LmZpbGVQYXRoICE9PSBudWxsICYmIHJlc3BvbnNlLnJlc3VsdE9iamVjdC5maWxlUGF0aCAhPT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLnJlc3VsdE9iamVjdC5maWxlUGF0aCAhPT0gJycpIHtcclxuICAgICAgICByZXR1cm4gSW1hZ2VVdGlscy5nZXRGaXhlZEltYWdlRmlsZXBhdGhVcmwocmVzcG9uc2UucmVzdWx0T2JqZWN0LmZpbGVQYXRoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gSW1hZ2VVdGlscy5nZXREb2NCb2R5V2l0aE1pbWVUeXBlRGVmaW5pdGlvbihyZXNwb25zZS5yZXN1bHRPYmplY3QuZmlsZU5hbWUsXHJcbiAgICAgICAgICB0aHVtYk5haWwgPyByZXNwb25zZS5yZXN1bHRPYmplY3QudGh1bWJuYWlsQm9keSA6IHJlc3BvbnNlLnJlc3VsdE9iamVjdC5kb2N1bWVudEJvZHkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2tpcEJ1dHRvbkltYWdlQW5kVGV4dChnb29kSWQ/OiBudW1iZXIpOiBQcm9taXNlPFNraXBCdXR0b25JbmZvPiB7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRTa2lwQnV0dG9uSW1hZ2VBbmRUZXh0KGdvb2RJZCwgZmFsc2UpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShTa2lwQnV0dG9uSW5mbywgcmVzcG9uc2UucmVzdWx0T2JqZWN0KSBhcyBTa2lwQnV0dG9uSW5mbztcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE1vb2RJbWFnZUZvckFuc3dlclNlbGVjdGlvbihhbnN3ZXJPclNlbGVjdGlvbjogQW5zd2VyIHwgU2VsZWN0aW9uLCB0aHVtYk5haWw6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLmdldEltYWdlRm9yQW5zd2VyT3JTZWxlY3Rpb24oYW5zd2VyT3JTZWxlY3Rpb24sIDMyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbnN3ZXJJbmZvKGFuc3dlcjogQW5zd2VyKTogUHJvbWlzZTxBcnRpY2xlVGV4dFtdPiB7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRBbnN3ZXJUZXh0cyhhbnN3ZXIubm9kZUlkLCBmYWxzZSk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlQk9BcnJheUZyb21SYXdCYWNrZW5kRGF0YUFycmF5KEFydGljbGVUZXh0LCByZXNwb25zZS5yZXN1bHRPYmplY3QpIGFzIEFydGljbGVUZXh0W107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0SW50ZXJuYWxQYXJhbWV0ZXIocGFyYW1ldGVyOiBJbnRlcm5hbFBhcmFtKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMubWFpbkFwaS5nZXRJbnRlcm5hbFBhcmFtZXRlclZhbHVlKHBhcmFtZXRlcik7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdE9iamVjdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzdG9yZTNETW9kZWxDRE4oZmlsZW5hbWU6IHN0cmluZywgZmlsZUNvbnRlbnRzOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5tYWluQXBpLnVwbG9hZE1vZGVsVG9DRE4oZmlsZW5hbWUsIGZpbGVDb250ZW50cyk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdE9iamVjdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRDYXRhbG9nRGVmaW5pdGlvbnNMaXN0KCk6IFByb21pc2U8Q2F0YWxvZ0RlZmluaXRpb25bXT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5hcnRpY2xlQXBpLmdldENhdGFsb2dEZWZpbml0aW9ucygpLmNhdGNoKGUgPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKCk7XHJcbiAgICB9KTtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VCT0FycmF5RnJvbVJhd0JhY2tlbmREYXRhQXJyYXkoQ2F0YWxvZ0RlZmluaXRpb24sIHJlc3BvbnNlLnJlc3VsdE9iamVjdHMpIGFzIENhdGFsb2dEZWZpbml0aW9uW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLnZhbGlkYXRpb25NZXNzYWdlc0FzU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRFeHRlcm5hbFNvdXJjZShleHRlcm5hbFNvdXJjZUlkOiBudW1iZXIpOiBQcm9taXNlPEV4dGVybmFsU291cmNlPiB7XHJcbiAgICBpZiAoIWV4dGVybmFsU291cmNlSWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0RXh0ZXJuYWxTb3VyY2UoZXh0ZXJuYWxTb3VyY2VJZCk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdE9iamVjdCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShFeHRlcm5hbFNvdXJjZSwgcmVzcG9uc2UucmVzdWx0T2JqZWN0KSBhcyBFeHRlcm5hbFNvdXJjZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZSAmJiByZXNwb25zZS5tZXNzYWdlID8gcmVzcG9uc2UubWVzc2FnZSA6ICdFcnJvciByZXRyaWV2aW5nIGV4dGVybmFsIHNvdXJjZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxBcnRpY2xlRnVsbE9iamVjdD4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuYXJ0aWNsZUFwaS5nZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQpO1xyXG4gICAgaWYgKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEFydGljbGVGdWxsT2JqZWN0LCByZXN1bHQucmVzdWx0T2JqZWN0KSBhcyB1bmtub3duIGFzIEFydGljbGVGdWxsT2JqZWN0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihyZXN1bHQudmFsaWRhdGlvbk1lc3NhZ2VzQXNTdHJpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVDYXRlZ29yaWVzKHB1YmxpY2F0aW9uQ29kZTogbnVtYmVyKTogUHJvbWlzZTxBcnRpY2xlQ2F0ZWdvcnlbXT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuYXJ0aWNsZUFwaS5nZXRBcnRpY2xlQ2F0ZWdvcmllcyhwdWJsaWNhdGlvbkNvZGUpO1xyXG4gICAgaWYgKHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3VsdC52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlQk9BcnJheUZyb21SYXdCYWNrZW5kRGF0YUFycmF5KEFydGljbGVDYXRlZ29yeSwgcmVzdWx0LnJlc3VsdE9iamVjdHMpIGFzIHVua25vd24gYXMgQXJ0aWNsZUNhdGVnb3J5W107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKHJlc3VsdC52YWxpZGF0aW9uTWVzc2FnZXNBc1N0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1xyXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlRmxhdChza3U6IHN0cmluZyk6IFByb21pc2U8QXJ0aWNsZUZsYXQ+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0QXJ0aWNsZUZsYXQoc2t1KTtcclxuICAgIGlmIChyZXN1bHQudmFsaWRhdGlvblJlc3VsdCAmJiByZXN1bHQudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShBcnRpY2xlRmxhdCwgcmVzdWx0LnJlc3VsdE9iamVjdCkgYXMgdW5rbm93biBhcyBBcnRpY2xlRmxhdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IocmVzdWx0LnZhbGlkYXRpb25NZXNzYWdlc0FzU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBhc3luYyBhZGRUb0NhcnQoZ29vZElkOiBudW1iZXIsIGdvb2RUeXBlOiBHb29kVHlwZSwgaW5zdGFuY2VJZDogbnVtYmVyLCBzZXNzaW9uSWQ6IHN0cmluZywgcXVhbnRpdHk6IG51bWJlciA9IDEpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAvLyAgIGNvbnN0IGpzb246IHN0cmluZyA9IGF3YWl0IHRoaXMuX2dldEpTT05Gcm9tQXJ0aWNsZU9iamVjdChnb29kSWQsIGdvb2RUeXBlLCBpbnN0YW5jZUlkLCBzZXNzaW9uSWQsIHF1YW50aXR5KTtcclxuICAvLyAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5hZGRUb0NhcnQubmV4dCh7YXJ0aWNsZToganNvbiwgcXVhbnRpdHk6IDF9KTtcclxuICAvLyB9XHJcbiAgLy9cclxuICAvLyBwcml2YXRlIGFzeW5jIF9nZXRKU09ORnJvbUFydGljbGVPYmplY3QoZ29vZElkOiBudW1iZXIsIGdvb2RUeXBlOiBHb29kVHlwZSwgaW5zdGFuY2VJZDogbnVtYmVyLCBzZXNzaW9uSWQ6IHN0cmluZywgcXVhbnRpdHk6IG51bWJlciA9IDEpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gIC8vICAgY29uc3QgY29uZmlndXJhdG9yU3RhdGlzdGljcyA9IG5ldyBDb25maWd1cmF0b3JTdGF0aXN0aWNzRW52aXJvbm1lbnQoKTtcclxuICAvLyAgIGNvbmZpZ3VyYXRvclN0YXRpc3RpY3MudXNlclR5cGUgPSAnSG9tZWRlY29yYXRvcic7XHJcbiAgLy8gICBjb25maWd1cmF0b3JTdGF0aXN0aWNzLnRyYW5zYWN0aW9uVHlwZSA9ICdTYWxlcyc7XHJcbiAgLy8gICBjb25maWd1cmF0b3JTdGF0aXN0aWNzLmFjdGlvbkRvbWFpbiA9ICdIb21lZGVjb3JhdG9yJztcclxuICAvLyAgIGNvbmZpZ3VyYXRvclN0YXRpc3RpY3Muc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xyXG4gIC8vICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy53ZWJIb3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgLy8gICBjb25maWd1cmF0b3JTdGF0aXN0aWNzLmJ1bmRsZUhvc3QgPSB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAvLyAgIHJldHVybiBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0SnNvbkFydGljbGVGbGF0VHJlZShnb29kSWQsIGdvb2RUeXBlLCBxdWFudGl0eSwgdHJ1ZSwgaW5zdGFuY2VJZCwgY29uZmlndXJhdG9yU3RhdGlzdGljcyk7XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIF9nZXRQdWJsaWNhdGlvbkNvZGVGb3JSb2xlKHJvbGU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fcHVibGljYXRpb25Db2RlRm9yVXNlclJvbGUuaGFzKHJvbGUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9wdWJsaWNhdGlvbkNvZGVGb3JVc2VyUm9sZS5nZXQocm9sZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
475
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHN0IsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTFFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUMvRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDdEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUd0RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHdkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDbEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTNFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBRTFHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHdEQUF3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OlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7QW5zd2VyfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2Fuc3dlcic7XHJcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XHJcbmltcG9ydCB7UXVlc3Rpb259IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvcXVlc3Rpb24nO1xyXG5pbXBvcnQge0Fuc3dlclByaWNlfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2Fuc3dlci1wcmljZSc7XHJcbmltcG9ydCB7QXJ0aWNsZX0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlJztcclxuaW1wb3J0IHtEZWNvTm9kZX0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9kZWNvLW5vZGUnO1xyXG5pbXBvcnQge1NraXBCdXR0b25JbmZvfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NraXAtYnV0dG9uLWluZm8nO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRvclN0YXRpc3RpY3NFbnZpcm9ubWVudH0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9jb25maWd1cmF0b3Itc3RhdGlzdGljcy1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7T3B0aW9uc30gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvb3B0aW9ucyc7XHJcbmltcG9ydCB7Q29uZmlndXJhdG9yfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpJztcclxuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLXBhcmFtLmVudW0nO1xyXG5pbXBvcnQge1F1ZXN0aW9uQW5kQW5zd2Vyc30gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9xdWVzdGlvbi1hbmQtYW5zd2Vycyc7XHJcbmltcG9ydCB7TWFpbkFwaX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGknO1xyXG5pbXBvcnQge0RhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9kYXRhLXNlcnZpY2UtcmVzcG9uc2UtZGF0YSc7XHJcbmltcG9ydCB7QXJ0aWNsZXN9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL2FydGljbGVzJztcclxuaW1wb3J0IHtBcnRpY2xlVGV4dH0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXRleHQuYm8nO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvc2VydmljZS9idXNpbmVzcy1vYmplY3QtZmFjdG9yeSc7XHJcbmltcG9ydCB7SW1hZ2VVdGlsc30gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdXRpbHMvaW1hZ2UtdXRpbHMnO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtY2F0YWxvZy1zdGFydHVwLWluZm8tcmVxdWVzdCc7XHJcbmltcG9ydCB7RXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm99IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLWNhdGFsb2ctc3RhcnR1cC1pbmZvJztcclxuaW1wb3J0IHtMb2dpblJlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9sb2dpbi1yZXNwb25zZSc7XHJcbmltcG9ydCB7Q2F0YWxvZ0RlZmluaXRpb259IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2NhdGFsb2ctZGVmaW5pdGlvbi5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2V9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLXNvdXJjZS5ibyc7XHJcbmltcG9ydCB7QXJ0aWNsZUZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xyXG5pbXBvcnQge0FydGljbGVDYXRlZ29yeX0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWNhdGVnb3J5JztcclxuaW1wb3J0IHtBcnRpY2xlRmxhdH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1mbGF0LmJvJztcclxuaW1wb3J0IHtVc2VyUm9sZVR5cGV9IGZyb20gJy4uL2VudW0vdXNlci1yb2xlLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckFwcEV2ZW50U2VydmljZX0gZnJvbSAnLi9ob21lZGVjb3JhdG9yLWFwcC1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm8nO1xyXG5pbXBvcnQge0RvbWFpbk5hbWV9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vZG9tYWluLW5hbWUuZW51bSc7XHJcblxyXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxDb25uZWN0b3Ige1xyXG4gIHB1YmxpYyBsb2dpblJlc3BvbnNlOiBMb2dpblJlc3BvbnNlO1xyXG4gIHB1YmxpYyBjb25uZWN0b3I6IENvbm5lY3RvcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0b3Ige1xyXG4gIGNvbm5lY3Rvcj86IENvbmZpZ3VyYXRvcjtcclxuICBhcnRpY2xlQXBpPzogQXJ0aWNsZXM7XHJcbiAgbWFpbkFwaT86IE1haW5BcGk7XHJcbn1cclxuXHJcbi8vIFNvbGUgcmVzcG9uc2liaWxpdHkgaXMgc2ltcGx5IHRvIHdyYXAgYXJvdW5kIGEgY29saWpuLkNvbm5lY3RvciB0byBjcmVhdGUgYSBzdGFibGUgaW5uZXIgaW50ZXJmYWNlIHRvIHRoZSBsaWJyYXJ5IGluIGEgMToxIG1ldGhvZCB3YXkuXHJcbi8vIE9ubHkgdG8gYmUgdXNlZCBieSB0aGUgSU9uZUNvbnRyb2xsZXJTZXJ2aWNlLlxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb21lZGVjb3JhdG9yQ29ubmVjdG9yQWRhcHRlclNlcnZpY2Uge1xyXG4gIHB1YmxpYyByZWFkb25seSBxdWVzdGlvblJlY2VpdmVkOiBTdWJqZWN0PFF1ZXN0aW9uPiA9IG5ldyBTdWJqZWN0PFF1ZXN0aW9uPigpO1xyXG4gIHB1YmxpYyByZWFkb25seSBzaG93TG9hZGVyOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvblJlc2V0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfcHVibGljYXRpb25Db2RlRm9yVXNlclJvbGU6IE1hcDxzdHJpbmcsIG51bWJlcj4gPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPihbXHJcbiAgICBbVXNlclJvbGVUeXBlLkN1c3RvbWVyLCAxNl0sXHJcbiAgICBbVXNlclJvbGVUeXBlLkVtcGxveWVlLCAxXVxyXG4gIF0pO1xyXG5cclxuICBwdWJsaWMgZ2V0IGNvbm5lY3RvcigpOiBDb25maWd1cmF0b3Ige1xyXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0b3I7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3JzW3RoaXMuZXh0ZXJuYWxTb3VyY2VdLmNvbm5lY3Rvci5jb25uZWN0b3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFydGljbGVBcGkoKTogQXJ0aWNsZXMge1xyXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hcnRpY2xlQXBpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yc1t0aGlzLmV4dGVybmFsU291cmNlXS5jb25uZWN0b3IuYXJ0aWNsZUFwaTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbWFpbkFwaSgpOiBNYWluQXBpIHtcclxuICAgIGlmICghdGhpcy5leHRlcm5hbFNvdXJjZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbWFpbkFwaTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RvcnNbdGhpcy5leHRlcm5hbFNvdXJjZV0uY29ubmVjdG9yLm1haW5BcGk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29ubmVjdG9yczogRXh0ZXJuYWxDb25uZWN0b3IgPSBuZXcgRXh0ZXJuYWxDb25uZWN0b3IoKTtcclxuICBwdWJsaWMgZXh0ZXJuYWxTb3VyY2U6IHN0cmluZztcclxuICBwdWJsaWMgbG9naW5SZXNwb25zZTogTG9naW5SZXNwb25zZTtcclxuICBwcml2YXRlIF9jb25uZWN0b3I/OiBDb25maWd1cmF0b3I7XHJcbiAgcHJpdmF0ZSBfYXJ0aWNsZUFwaTogQXJ0aWNsZXM7XHJcbiAgcHJpdmF0ZSBfbWFpbkFwaTogTWFpbkFwaTtcclxuICBwcml2YXRlIF9ib0ZhY3Rvcnk6IEJ1c2luZXNzT2JqZWN0RmFjdG9yeSA9IG5ldyBCdXNpbmVzc09iamVjdEZhY3RvcnkoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hcHBFdmVudFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBFdmVudFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0Q29ubmVjdG9yKG9wdGlvbnM6IE9wdGlvbnMsIGV4dGVybmFsU291cmNlPzogc3RyaW5nLCBmb3JjZVJlbG9hZD86IGJvb2xlYW4sIGV4dGVybmFsU291cmNlSWQ/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChleHRlcm5hbFNvdXJjZSA9PT0gdW5kZWZpbmVkIHx8IGV4dGVybmFsU291cmNlID09PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IHJlbmV3Q29ubmVjdG9yOiBib29sZWFuID0gKHRoaXMuX2Nvbm5lY3RvciA/IHRoaXMuX2Nvbm5lY3Rvci51cmwgIT09IG9wdGlvbnMudXJsIDogZmFsc2UpIHx8IGZvcmNlUmVsb2FkO1xyXG4gICAgICBpZiAoIXRoaXMuX2Nvbm5lY3RvciB8fCByZW5ld0Nvbm5lY3Rvcikge1xyXG4gICAgICAgIHRoaXMuX2Nvbm5lY3RvciA9IG5ldyBDb25maWd1cmF0b3Iob3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5sb2dpblJlc3BvbnNlID0gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmNvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLl9jb25uZWN0b3Iuc2hvd0xvYWRlci5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5zaG93TG9hZGVyLm5leHQodmFsdWUpKTtcclxuICAgICAgICB0aGlzLl9jb25uZWN0b3IuY29ubmVjdGlvblJlc2V0SW5hY3Rpdml0eS5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5jb25uZWN0aW9uUmVzZXQubmV4dCgpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuX2FydGljbGVBcGkgfHwgcmVuZXdDb25uZWN0b3IpIHtcclxuICAgICAgICB0aGlzLl9hcnRpY2xlQXBpID0gbmV3IEFydGljbGVzKG9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5fbWFpbkFwaSB8fCByZW5ld0Nvbm5lY3Rvcikge1xyXG4gICAgICAgIHRoaXMuX21haW5BcGkgPSBuZXcgTWFpbkFwaShvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbm5lY3RvcnMuaGFzT3duUHJvcGVydHkoZXh0ZXJuYWxTb3VyY2UpKSB7XHJcbiAgICAgICAgaWYgKGV4dGVybmFsU291cmNlSWQgIT09IG51bGwpIHtcclxuICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0byBzZXQgdGhpcy5leHRlcm5hbFNvdXJjZSA9IHVuZGVmaW5lZCB0byBnZXQgdGhlIGRhdGEgb2YgdGhlIEhPU1QgYW5kIG5vdCB0aGUgcHJldmlvdXMgZXh0ZXJuYWwgc291cmNlXHJcbiAgICAgICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgY29uc3QgZXh0ZXJuYWxTb3VyY2VEYXRhOiBFeHRlcm5hbFNvdXJjZSA9IGF3YWl0IHRoaXMuZ2V0RXh0ZXJuYWxTb3VyY2UoZXh0ZXJuYWxTb3VyY2VJZCk7XHJcbiAgICAgICAgICBpZiAoZXh0ZXJuYWxTb3VyY2VEYXRhICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChleHRlcm5hbFNvdXJjZURhdGEucGFzc3dvcmQgIT09IHVuZGVmaW5lZCAmJiBleHRlcm5hbFNvdXJjZURhdGEudXNlcm5hbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIG9wdGlvbnMucGFzc3dvcmQgPSBleHRlcm5hbFNvdXJjZURhdGEucGFzc3dvcmQ7XHJcbiAgICAgICAgICAgICAgb3B0aW9ucy51c2VybmFtZSA9IGV4dGVybmFsU291cmNlRGF0YS51c2VybmFtZTtcclxuICAgICAgICAgICAgICBvcHRpb25zLnVzZUxvZ2luRW5jcnlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxNYWluQXBpOiBNYWluQXBpID0gbmV3IE1haW5BcGkob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxWZXJzaW9uOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IGV4dGVybmFsTWFpbkFwaS5nZXRQdWJsaWNQYXJhbXMoK29wdGlvbnMuc2NoZW1hKS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGV4dGVybmFsVmVyc2lvbiAmJiBleHRlcm5hbFZlcnNpb25bJ2NhdGFsb2dTZXR0aW5ncyddICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGNvbnN0IGNhdGFsb2dTZXR0aW5ncyA9IEpTT04ucGFyc2UoZXh0ZXJuYWxWZXJzaW9uWydjYXRhbG9nU2V0dGluZ3MnXSk7XHJcbiAgICAgICAgICBvcHRpb25zLnZlcnNpb24gPSBjYXRhbG9nU2V0dGluZ3MudmVyc2lvbjtcclxuICAgICAgICAgIGNvbnN0IGV4dGVybmFsQ29uZmlndXJhdG9yOiBDb25maWd1cmF0b3IgPSBuZXcgQ29uZmlndXJhdG9yKG9wdGlvbnMpO1xyXG4gICAgICAgICAgY29uc3QgbG9naW5SZXNwb25zZTogTG9naW5SZXNwb25zZSA9IGF3YWl0IGV4dGVybmFsQ29uZmlndXJhdG9yLmNvbm5lY3QoKS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAobG9naW5SZXNwb25zZSkge1xyXG4gICAgICAgICAgICBjb25zdCBleHRlcm5hbEFydGljbGVBcGk6IEFydGljbGVzID0gbmV3IEFydGljbGVzKG9wdGlvbnMpO1xyXG4gICAgICAgICAgICBleHRlcm5hbENvbmZpZ3VyYXRvci5zaG93TG9hZGVyLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLnNob3dMb2FkZXIubmV4dCh2YWx1ZSkpO1xyXG4gICAgICAgICAgICBleHRlcm5hbENvbmZpZ3VyYXRvci5jb25uZWN0aW9uUmVzZXRJbmFjdGl2aXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLmNvbm5lY3Rpb25SZXNldC5uZXh0KCkpO1xyXG4gICAgICAgICAgICBjb25zdCBleHRlcm5hbENvbm5lY3RvcjogRXh0ZXJuYWxDb25uZWN0b3IgPSBuZXcgRXh0ZXJuYWxDb25uZWN0b3IoKTtcclxuICAgICAgICAgICAgZXh0ZXJuYWxDb25uZWN0b3IubG9naW5SZXNwb25zZSA9IGxvZ2luUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIGV4dGVybmFsQ29ubmVjdG9yLmNvbm5lY3RvciA9IHtjb25uZWN0b3I6IGV4dGVybmFsQ29uZmlndXJhdG9yLCBtYWluQXBpOiBleHRlcm5hbE1haW5BcGksIGFydGljbGVBcGk6IGV4dGVybmFsQXJ0aWNsZUFwaX07XHJcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdG9yc1tleHRlcm5hbFNvdXJjZV0gPSBleHRlcm5hbENvbm5lY3RvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5leHRlcm5hbFNvdXJjZSA9IGV4dGVybmFsU291cmNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvZ091dCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuY29ubmVjdG9yLmxvZ091dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFB1YmxpY2F0aW9uQ29kZUJhc2VkT25Mb2dpbigpOiBudW1iZXIge1xyXG4gICAgbGV0IHJvbDogc3RyaW5nO1xyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UpIHtcclxuICAgICAgaWYgKHRoaXMuY29ubmVjdG9ycy5oYXNPd25Qcm9wZXJ0eSh0aGlzLmV4dGVybmFsU291cmNlKSkge1xyXG4gICAgICAgIGNvbnN0IGV4dGVybmFsQ29ubmVjdG9yID0gdGhpcy5jb25uZWN0b3JzW3RoaXMuZXh0ZXJuYWxTb3VyY2VdO1xyXG4gICAgICAgIGlmIChleHRlcm5hbENvbm5lY3RvciAmJiBleHRlcm5hbENvbm5lY3Rvci5sb2dpblJlc3BvbnNlKSB7XHJcbiAgICAgICAgICByb2wgPSBleHRlcm5hbENvbm5lY3Rvci5sb2dpblJlc3BvbnNlLnJvbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmxvZ2luUmVzcG9uc2UpIHtcclxuICAgICAgICByb2wgPSB0aGlzLmxvZ2luUmVzcG9uc2Uucm9sO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocm9sKSB7XHJcbiAgICAgIGNvbnN0IHB1YkNvZGU6IG51bWJlciA9IHRoaXMuX2dldFB1YmxpY2F0aW9uQ29kZUZvclJvbGUocm9sKTtcclxuICAgICAgaWYgKHB1YkNvZGUgIT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gcHViQ29kZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIDI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0V2ViVmlld1N0YXJ0dXBJbmZvKHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdCk6IFByb21pc2U8RXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8+IHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuYXJ0aWNsZUFwaS5nZXRXZWJ2aWV3U3RhcnR1cEluZm8ocmVxdWVzdCk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvLCByZXNwb25zZS5yZXN1bHRPYmplY3QpIGFzIHVua25vd24gYXMgRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm87XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuYXJ0aWNsZUFwaS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdSk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdE9iamVjdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXROb2RlSW5zdGFuY2UoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmluaXROb2RlSW5zdGFuY2UoZ29vZElkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VDb25uZWN0aW9uKGluc3RhbmNlSWQ6IHN0cmluZywgb2xkQ29ubmVjdGlvbjogc3RyaW5nLCBuZXdDb25uZWN0aW9uOiBzdHJpbmcpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuY2hhbmdlQ29ubmVjdGlvbihpbnN0YW5jZUlkLCBvbGRDb25uZWN0aW9uLCBuZXdDb25uZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb3B5SW5zdGFuY2UoaW5zdGFuY2VJZDogc3RyaW5nLCBzaG91bGRTYXZlQ3VycmVudEluc3RhbmNlSWQ6IGJvb2xlYW4pOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuY29weUluc3RhbmNlKGluc3RhbmNlSWQsIHNob3VsZFNhdmVDdXJyZW50SW5zdGFuY2VJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2F2ZUNvbmZpZ3VyYXRpb25zKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgYXdhaXQgdGhpcy5jb25uZWN0b3Iuc2F2ZUNvbmZpZ3VyYXRpb25zKCkuY2F0Y2goKGUpID0+IHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgICAvLyBzYXZlIGV4dGVybmFsIHNvdXJjZXNcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29ubmVjdG9ycykge1xyXG4gICAgICBpZiAodGhpcy5jb25uZWN0b3JzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBjb25zdCBjb25uZWN0b3IgPSB0aGlzLmNvbm5lY3RvcnNba2V5XS5jb25uZWN0b3IuY29ubmVjdG9yO1xyXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rvci5zYXZlQ29uZmlndXJhdGlvbnMoKS5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIEByZXR1cm5zIFRoZSBpbml0aWFsIGFydGljbGVcclxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZShza3U6IHN0cmluZywgYnJhbmNoOiBzdHJpbmcpOiBQcm9taXNlPEFydGljbGU+IHtcclxuICAgIGNvbnN0IGdvb2RJZDogbnVtYmVyID0gYXdhaXQgdGhpcy5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdSk7XHJcbiAgICBpZiAoZ29vZElkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEFydGljbGVRdWlja1NlbChnb29kSWQsIGJyYW5jaCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlUXVpY2tTZWwoZ29vZElkOiBudW1iZXIsIGJyYW5jaDogc3RyaW5nKTogUHJvbWlzZTxBcnRpY2xlPiB7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0QXJ0aWNsZVF1aWNrU2VsKGdvb2RJZCwgYnJhbmNoKTtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQXJ0aWNsZSwgcmVzcG9uc2UucmVzdWx0T2JqZWN0Lm9BcnRpY2xlWzBdKSBhcyBBcnRpY2xlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgbG9hZFNlbGVjdGlvbnMoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmNvbm5lY3Rvci5nZXRTZWxlY3Rpb25zKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwdWJsaWMgZ2V0UXVlc3Rpb25BbmRBbnN3ZXJzKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5jb25uZWN0b3IuZ2V0UXVlc3Rpb25BbmRBbnN3ZXJzKCk7XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgZ2V0UXVlc3Rpb25BbmRBbnN3ZXJzQXN5bmMoKTogUHJvbWlzZTxRdWVzdGlvbkFuZEFuc3dlcnM+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRRdWVzdGlvbkFuZEFuc3dlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTZWxlY3Rpb25zQXN5bmMoKTogUHJvbWlzZTxTZWxlY3Rpb25bXT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0U2VsZWN0aW9ucygpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZUJPQXJyYXlGcm9tUmF3QmFja2VuZERhdGFBcnJheShTZWxlY3Rpb24sIHJlc3BvbnNlLnJlc3VsdE9iamVjdHMpIGFzIFNlbGVjdGlvbltdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldERlY29zQXN5bmMoKTogUHJvbWlzZTxEZWNvTm9kZVtdPiB7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXREZWNvcygpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZUJPQXJyYXlGcm9tUmF3QmFja2VuZERhdGFBcnJheShEZWNvTm9kZSwgcmVzcG9uc2UucmVzdWx0T2JqZWN0cykgYXMgRGVjb05vZGVbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbnN3ZXJQcmljZXMoKTogUHJvbWlzZTxBbnN3ZXJQcmljZVtdPiB7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5nZXRBbnN3ZXJzUHJpY2VzKCk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlQk9BcnJheUZyb21SYXdCYWNrZW5kRGF0YUFycmF5KEFuc3dlclByaWNlLCByZXNwb25zZS5yZXN1bHRPYmplY3RzKSBhcyBBbnN3ZXJQcmljZVtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEpzb25Db25maWd1cmVkQXJ0aWNsZXMoZ29vZElkOiBudW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZFR5cGU6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudGl0eTogbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU291cmNlOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xvYWRlcjogYm9vbGVhbiA9IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VJZD86IG51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0b3JTdGF0aXN0aWNzPzogQ29uZmlndXJhdG9yU3RhdGlzdGljc0Vudmlyb25tZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiB0aGlzLmFydGljbGVBcGkuZ2V0SnNvbkFydGljbGVGbGF0VHJlZShnb29kSWQsIGdvb2RUeXBlLCBxdWFudGl0eSwgZXh0ZXJuYWxTb3VyY2UsIHNob3dMb2FkZXIsIGluc3RhbmNlSWQudG9TdHJpbmcoKSwgY29uZmlndXJhdG9yU3RhdGlzdGljcyk7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgZ2V0SnNvbk1hdGNoVGFibGVBcnRpY2xlcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAvLyAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5nZXRKc29uTWF0Y2hUYWJsZUFydGljbGVzKCk7XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2V0SW5zdGFuY2VUb0NvbmZpZ3VyZShpZDogc3RyaW5nKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgaWYgKGlkICE9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5zZXRJbnN0YW5jZVRvQ29uZmlndXJlKGlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0YVNlcnZpY2VSZXNwb25zZURhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZWxlY3RBbnN3ZXIoYW5zd2VyOiBBbnN3ZXIsIHVzZXJJbnB1dD86IHN0cmluZyk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5zZWxlY3RBbnN3ZXIoYW5zd2VyLCBmYWxzZSwgdXNlcklucHV0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWxBbnN3ZXIoZ2V0QW5zd2Vyc0FuZFF1ZXN0aW9uOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rvci5jYW5jZWxBbnN3ZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RTZWxlY3Rpb24oXHJcbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbiwgZm9yY2VCYWNrVG9Ob2RlPzogYm9vbGVhbiwgYWZ0ZXI/OiBib29sZWFuLCBjb25uZWN0b3I/OiBzdHJpbmcpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3Iuc2VsZWN0U2VsZWN0aW9uKHNlbGVjdGlvbiwgZmFsc2UsIGZvcmNlQmFja1RvTm9kZSwgYWZ0ZXIsIGNvbm5lY3Rvcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yLmRlbGV0ZVNlbGVjdGlvbihzZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlcGxhY2VTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb24pOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IucmVwbGFjZVNlbGVjdGlvbihzZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEltYWdlRm9yQW5zd2VyT3JTZWxlY3Rpb24oXHJcbiAgICBhbnN3ZXJPclNlbGVjdGlvbjogQW5zd2VyIHwgU2VsZWN0aW9uLCBwdWJsaWNhdGlvbjogbnVtYmVyLCB0aHVtYk5haWw6IGJvb2xlYW4gPSB0cnVlLCBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0U2luZ2xlSW1hZ2UoYW5zd2VyT3JTZWxlY3Rpb24ubm9kZUlkLCBwdWJsaWNhdGlvbiwgdHJ1ZSwgdGh1bWJOYWlsKTtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2VzcyAmJiByZXNwb25zZS5yZXN1bHRPYmplY3QpIHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdE9iamVjdC5maWxlUGF0aCAhPT0gbnVsbCAmJiByZXNwb25zZS5yZXN1bHRPYmplY3QuZmlsZVBhdGggIT09IHVuZGVmaW5lZCAmJiByZXNwb25zZS5yZXN1bHRPYmplY3QuZmlsZVBhdGggIT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIEltYWdlVXRpbHMuZ2V0Rml4ZWRJbWFnZUZpbGVwYXRoVXJsKHJlc3BvbnNlLnJlc3VsdE9iamVjdC5maWxlUGF0aCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIEltYWdlVXRpbHMuZ2V0RG9jQm9keVdpdGhNaW1lVHlwZURlZmluaXRpb24ocmVzcG9uc2UucmVzdWx0T2JqZWN0LmZpbGVOYW1lLFxyXG4gICAgICAgICAgdGh1bWJOYWlsID8gcmVzcG9uc2UucmVzdWx0T2JqZWN0LnRodW1ibmFpbEJvZHkgOiByZXNwb25zZS5yZXN1bHRPYmplY3QuZG9jdW1lbnRCb2R5KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNraXBCdXR0b25JbWFnZUFuZFRleHQoZ29vZElkPzogbnVtYmVyKTogUHJvbWlzZTxTa2lwQnV0dG9uSW5mbz4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0U2tpcEJ1dHRvbkltYWdlQW5kVGV4dChnb29kSWQsIGZhbHNlKTtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoU2tpcEJ1dHRvbkluZm8sIHJlc3BvbnNlLnJlc3VsdE9iamVjdCkgYXMgU2tpcEJ1dHRvbkluZm87XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRNb29kSW1hZ2VGb3JBbnN3ZXJTZWxlY3Rpb24oYW5zd2VyT3JTZWxlY3Rpb246IEFuc3dlciB8IFNlbGVjdGlvbiwgdGh1bWJOYWlsOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRJbWFnZUZvckFuc3dlck9yU2VsZWN0aW9uKGFuc3dlck9yU2VsZWN0aW9uLCAzMik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QW5zd2VySW5mbyhhbnN3ZXI6IEFuc3dlcik6IFByb21pc2U8QXJ0aWNsZVRleHRbXT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5jb25uZWN0b3IuZ2V0QW5zd2VyVGV4dHMoYW5zd2VyLm5vZGVJZCwgZmFsc2UpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZUJPQXJyYXlGcm9tUmF3QmFja2VuZERhdGFBcnJheShBcnRpY2xlVGV4dCwgcmVzcG9uc2UucmVzdWx0T2JqZWN0KSBhcyBBcnRpY2xlVGV4dFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEludGVybmFsUGFyYW1ldGVyKHBhcmFtZXRlcjogSW50ZXJuYWxQYXJhbSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLm1haW5BcGkuZ2V0SW50ZXJuYWxQYXJhbWV0ZXJWYWx1ZShwYXJhbWV0ZXIpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXN1bHRPYmplY3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc3RvcmUzRE1vZGVsQ0ROKGZpbGVuYW1lOiBzdHJpbmcsIGZpbGVDb250ZW50czogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMubWFpbkFwaS51cGxvYWRNb2RlbFRvQ0ROKGZpbGVuYW1lLCBmaWxlQ29udGVudHMpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXN1bHRPYmplY3Q7XHJcbiAgICB9IGVsc2UgaWYgKCFyZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQubWVzc2FnZXNbMF0ubWVzc2FnZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Q2F0YWxvZ0RlZmluaXRpb25zTGlzdCgpOiBQcm9taXNlPENhdGFsb2dEZWZpbml0aW9uW10+IHtcclxuICAgIGlmICghdGhpcy5hcnRpY2xlQXBpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuYXJ0aWNsZUFwaS5nZXRDYXRhbG9nRGVmaW5pdGlvbnMoKS5jYXRjaChlID0+IHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSgpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlQk9BcnJheUZyb21SYXdCYWNrZW5kRGF0YUFycmF5KENhdGFsb2dEZWZpbml0aW9uLCByZXNwb25zZS5yZXN1bHRPYmplY3RzKSBhcyBDYXRhbG9nRGVmaW5pdGlvbltdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS52YWxpZGF0aW9uTWVzc2FnZXNBc1N0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0RXh0ZXJuYWxTb3VyY2UoZXh0ZXJuYWxTb3VyY2VJZDogbnVtYmVyKTogUHJvbWlzZTxFeHRlcm5hbFNvdXJjZT4ge1xyXG4gICAgaWYgKCFleHRlcm5hbFNvdXJjZUlkKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2U6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5hcnRpY2xlQXBpLmdldEV4dGVybmFsU291cmNlKGV4dGVybmFsU291cmNlSWQpO1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5yZXN1bHRPYmplY3QpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoRXh0ZXJuYWxTb3VyY2UsIHJlc3BvbnNlLnJlc3VsdE9iamVjdCkgYXMgRXh0ZXJuYWxTb3VyY2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UgJiYgcmVzcG9uc2UubWVzc2FnZSA/IHJlc3BvbnNlLm1lc3NhZ2UgOiAnRXJyb3IgcmV0cmlldmluZyBleHRlcm5hbCBzb3VyY2UnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQ6IG51bWJlcik6IFByb21pc2U8QXJ0aWNsZUZ1bGxPYmplY3Q+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkKTtcclxuICAgIGlmIChyZXN1bHQudmFsaWRhdGlvblJlc3VsdCAmJiByZXN1bHQudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShBcnRpY2xlRnVsbE9iamVjdCwgcmVzdWx0LnJlc3VsdE9iamVjdCkgYXMgdW5rbm93biBhcyBBcnRpY2xlRnVsbE9iamVjdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IocmVzdWx0LnZhbGlkYXRpb25NZXNzYWdlc0FzU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlQ2F0ZWdvcmllcyhwdWJsaWNhdGlvbkNvZGU6IG51bWJlcik6IFByb21pc2U8QXJ0aWNsZUNhdGVnb3J5W10+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmFydGljbGVBcGkuZ2V0QXJ0aWNsZUNhdGVnb3JpZXMocHVibGljYXRpb25Db2RlKTtcclxuICAgIGlmIChyZXN1bHQudmFsaWRhdGlvblJlc3VsdCAmJiByZXN1bHQudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZUJPQXJyYXlGcm9tUmF3QmFja2VuZERhdGFBcnJheShBcnRpY2xlQ2F0ZWdvcnksIHJlc3VsdC5yZXN1bHRPYmplY3RzKSBhcyB1bmtub3duIGFzIEFydGljbGVDYXRlZ29yeVtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihyZXN1bHQudmFsaWRhdGlvbk1lc3NhZ2VzQXNTdHJpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9cclxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUZsYXQoc2t1OiBzdHJpbmcpOiBQcm9taXNlPEFydGljbGVGbGF0PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5hcnRpY2xlQXBpLmdldEFydGljbGVGbGF0KHNrdSk7XHJcbiAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQXJ0aWNsZUZsYXQsIHJlc3VsdC5yZXN1bHRPYmplY3QpIGFzIHVua25vd24gYXMgQXJ0aWNsZUZsYXQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKHJlc3VsdC52YWxpZGF0aW9uTWVzc2FnZXNBc1N0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TW9kZWxQbGFjZW1lbnRPcHRpb25zKCk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XHJcbiAgICAvLyBET01fM0RfUExBQ0VNRU5UXHJcbiAgICBjb25zdCByZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5tYWluQXBpLmdldERvbWFpbkNvbGxlY3Rpb24oJ05MJywgRG9tYWluTmFtZS5Eb20zRFBsYWNlbWVudCk7XHJcbiAgICBpZiAocmVzdWx0LnZhbGlkYXRpb25SZXN1bHQgJiYgcmVzdWx0LnZhbGlkYXRpb25SZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICByZXR1cm4gPENvRG9tYWluVmFsdWVbXT48dW5rbm93bj50aGlzLl9ib0ZhY3RvcnkubWFrZUJPQXJyYXlGcm9tUmF3QmFja2VuZERhdGFBcnJheShDb0RvbWFpblZhbHVlLCByZXN1bHQucmVzdWx0T2JqZWN0cyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKHJlc3VsdC52YWxpZGF0aW9uTWVzc2FnZXNBc1N0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgYXN5bmMgYWRkVG9DYXJ0KGdvb2RJZDogbnVtYmVyLCBnb29kVHlwZTogR29vZFR5cGUsIGluc3RhbmNlSWQ6IG51bWJlciwgc2Vzc2lvbklkOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIgPSAxKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgLy8gICBjb25zdCBqc29uOiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9nZXRKU09ORnJvbUFydGljbGVPYmplY3QoZ29vZElkLCBnb29kVHlwZSwgaW5zdGFuY2VJZCwgc2Vzc2lvbklkLCBxdWFudGl0eSk7XHJcbiAgLy8gICB0aGlzLl9hcHBFdmVudFNlcnZpY2UuYWRkVG9DYXJ0Lm5leHQoe2FydGljbGU6IGpzb24sIHF1YW50aXR5OiAxfSk7XHJcbiAgLy8gfVxyXG4gIC8vXHJcbiAgLy8gcHJpdmF0ZSBhc3luYyBfZ2V0SlNPTkZyb21BcnRpY2xlT2JqZWN0KGdvb2RJZDogbnVtYmVyLCBnb29kVHlwZTogR29vZFR5cGUsIGluc3RhbmNlSWQ6IG51bWJlciwgc2Vzc2lvbklkOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIgPSAxKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAvLyAgIGNvbnN0IGNvbmZpZ3VyYXRvclN0YXRpc3RpY3MgPSBuZXcgQ29uZmlndXJhdG9yU3RhdGlzdGljc0Vudmlyb25tZW50KCk7XHJcbiAgLy8gICBjb25maWd1cmF0b3JTdGF0aXN0aWNzLnVzZXJUeXBlID0gJ0hvbWVkZWNvcmF0b3InO1xyXG4gIC8vICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy50cmFuc2FjdGlvblR5cGUgPSAnU2FsZXMnO1xyXG4gIC8vICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy5hY3Rpb25Eb21haW4gPSAnSG9tZWRlY29yYXRvcic7XHJcbiAgLy8gICBjb25maWd1cmF0b3JTdGF0aXN0aWNzLnNlc3Npb25JZCA9IHNlc3Npb25JZDtcclxuICAvLyAgIGNvbmZpZ3VyYXRvclN0YXRpc3RpY3Mud2ViSG9zdCA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gIC8vICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy5idW5kbGVIb3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgLy8gICByZXR1cm4gYXdhaXQgdGhpcy5hcnRpY2xlQXBpLmdldEpzb25BcnRpY2xlRmxhdFRyZWUoZ29vZElkLCBnb29kVHlwZSwgcXVhbnRpdHksIHRydWUsIGluc3RhbmNlSWQsIGNvbmZpZ3VyYXRvclN0YXRpc3RpY3MpO1xyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UHVibGljYXRpb25Db2RlRm9yUm9sZShyb2xlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuX3B1YmxpY2F0aW9uQ29kZUZvclVzZXJSb2xlLmhhcyhyb2xlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fcHVibGljYXRpb25Db2RlRm9yVXNlclJvbGUuZ2V0KHJvbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==