@colijnit/corecomponents_v12 258.1.4 → 258.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 (21) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +98 -58
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.metadata.json +1 -1
  4. package/esm2015/lib/components/hour-scheduling/hour-scheduling.component.js +1 -1
  5. package/esm2015/lib/components/hour-scheduling/model/enum/scheduling-object.interface.js +2 -0
  6. package/esm2015/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component.js +59 -26
  7. package/esm2015/lib/components/simple-grid/simple-grid.component.js +48 -43
  8. package/esm2015/lib/core/enum/core-components-icon.enum.js +3 -1
  9. package/esm2015/lib/core/model/core-components-icon-svg.js +3 -1
  10. package/esm2015/public-api.js +2 -1
  11. package/fesm2015/colijnit-corecomponents_v12.js +110 -68
  12. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  13. package/lib/components/hour-scheduling/hour-scheduling.component.d.ts +1 -8
  14. package/lib/components/hour-scheduling/model/enum/scheduling-object.interface.d.ts +10 -0
  15. package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component.d.ts +14 -3
  16. package/lib/components/hour-scheduling-expandable/style/_layout.scss +1 -4
  17. package/lib/components/simple-grid/simple-grid.component.d.ts +2 -0
  18. package/lib/components/simple-grid/style/_layout.scss +31 -0
  19. package/lib/core/enum/core-components-icon.enum.d.ts +2 -0
  20. package/package.json +1 -1
  21. package/public-api.d.ts +1 -0
@@ -273,4 +273,4 @@ HourSchedulingComponent.propDecorators = {
273
273
  newObjectPlanEvent: [{ type: Output }],
274
274
  showClass: [{ type: HostBinding, args: ['class.co-hour-scheduling',] }]
275
275
  };
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9ob3VyLXNjaGVkdWxpbmcvaG91ci1zY2hlZHVsaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNKLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixHQUNuRSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUE0RnpDLE1BQU0sT0FBTyx1QkFBdUI7SUEyQmxDLFlBQ1UsS0FBd0IsRUFDeEIsUUFBa0IsRUFDbEIsSUFBWTtRQUZaLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQTVCZixlQUFVLEdBQWEsRUFBRSxDQUFDO1FBQzFCLHFCQUFnQixHQUEyQyxFQUFFLENBQUM7UUFDOUQsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBRXBDLGtCQUFhLEdBQWUsSUFBSSxDQUFDO1FBUXpCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUduQyxvQkFBZSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ25FLHVCQUFrQixHQUF3RCxJQUFJLFlBQVksRUFHdkcsQ0FBQztRQUdFLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFPL0IsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxTQUFTLEdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hNLElBQUksT0FBTyxHQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxTCxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRXZCLEtBQUssSUFBSSxTQUFTLEdBQUcsU0FBUyxFQUFFLFNBQVMsSUFBSSxPQUFPLEVBQUUsU0FBUyxJQUFJLFFBQVEsRUFBRTtZQUMzRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDckMsSUFBSSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUM1RixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQsSUFBSSxTQUFTLEdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hNLElBQUksT0FBTyxHQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxTCxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRXZCLEtBQUssSUFBSSxTQUFTLEdBQUcsU0FB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Q0FBQyxDQUFDO2FBQ1Y7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1NBQ1g7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFBQSxDQUFDOzs7WUF0VUgsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRFVDtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQTlGQyxpQkFBaUI7WUFHWCxRQUFRO1lBRnFCLE1BQU07Ozt1QkF1R3hDLEtBQUs7NEJBQ0wsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsS0FBSzs2QkFDTCxLQUFLO2lDQUNMLEtBQUs7cUJBQ0wsS0FBSzs4QkFFTCxNQUFNO2lDQUNOLE1BQU07d0JBS04sV0FBVyxTQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBIb3N0QmluZGluZyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE5nWm9uZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmludGVyZmFjZSBTY2hlZHVsaW5nT2JqZWN0IHtcclxuICBzdGFydDogbnVtYmVyO1xyXG4gIGVuZDogbnVtYmVyO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHN1YlRpdGxlPzogc3RyaW5nO1xyXG5cclxuICBba2V5OiBzdHJpbmddOiBhbnk7IC8vIEFsbG93cyBkeW5hbWljIHByb3BlcnRpZXMgaW5jbHVkaW5nIHVuaXF1ZSBpZGVudGlmaWVyc1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWhvdXItc2NoZWR1bGluZycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWJsb2NrXCIgKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91ckxhYmVsc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaG91ci1sYWJlbFwiPjxzcGFuIFt0ZXh0Q29udGVudF09XCJob3VyXCI+PC9zcGFuPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWRpc3BsYXlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlyc3QtaGFsZi1ob3VyIG9iamVjdC1oYWxmXCJcclxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGFzLW9iamVjdHMnOiBzY2hlZHVsZWRPYmplY3RzW2hvdXJdPy5sZW5ndGggPiAwLCAnYWN0aXZlJzogYWN0aXZlSGFsZkhvdXIgPT09IGhvdXIgKyAnLWZpcnN0SGFsZid9XCJcclxuICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChjbGljayk9XCJvbk9iamVjdERpc3BsYXlDbGljayhob3VyLCAnZmlyc3RIYWxmJylcIlxyXG4gICAgICAgICAgICAgKGRyb3ApPVwib25Ecm9wKCRldmVudCwgaG91cilcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tVGVtcGxhdGVVc2VkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzY2hlZHVsZWRPYmplY3RzW2hvdXJdXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRkZW4taG91ci1sYWJlbFwiIFtoaWRkZW5dPVwidHJ1ZVwiIFt0ZXh0Q29udGVudF09XCJob3VyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvYmogb2Ygc2NoZWR1bGVkT2JqZWN0c1tob3VyXVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNjaGVkdWxlZC1vYmplY3RcIlxyXG4gICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwib25EcmFnU3RhcnQoJGV2ZW50LCBvYmopXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGRlbi1ob3VyLWxhYmVsXCIgW2hpZGRlbl09XCJ0cnVlXCIgW3RleHRDb250ZW50XT1cImFkZE1pbnV0ZXMoaG91cilcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCIgW3RleHRDb250ZW50XT1cIm9iai50aXRsZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLXRpdGxlXCIgW3RleHRDb250ZW50XT1cIm9iai5zdWJUaXRsZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tVGVtcGxhdGVVc2VkXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgIGhvdXI6IGhvdXIsXHJcbiAgICAgICAgICAgICAgaGlkZGVuSG91cjogaG91cixcclxuICAgICAgICAgICAgICBvYmplY3RzOiBzY2hlZHVsZWRPYmplY3RzW2hvdXJdXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlY29uZC1oYWxmLWhvdXIgb2JqZWN0LWhhbGZcIlxyXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwieydoYXMtb2JqZWN0cyc6IHNjaGVkdWxlZE9iamVjdHNbYWRkTWludXRlcyhob3VyKV0/Lmxlbmd0aCA+IDAsICdhY3RpdmUnOiBhY3RpdmVIYWxmSG91ciA9PT0gaG91ciArICctc2Vjb25kSGFsZid9XCJcclxuICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChjbGljayk9XCJvbk9iamVjdERpc3BsYXlDbGljayhob3VyLCAnc2Vjb25kSGFsZicpXCJcclxuICAgICAgICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQsIGFkZE1pbnV0ZXMoaG91cikpXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbVRlbXBsYXRlVXNlZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NoZWR1bGVkT2JqZWN0c1thZGRNaW51dGVzKGhvdXIpXVwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvYmogb2Ygc2NoZWR1bGVkT2JqZWN0c1thZGRNaW51dGVzKGhvdXIpXVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNjaGVkdWxlZC1vYmplY3RcIlxyXG4gICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwib25EcmFnU3RhcnQoJGV2ZW50LCBvYmopXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCIgW3RleHRDb250ZW50XT1cIm9iai50aXRsZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ViLXRpdGxlXCIgW3RleHRDb250ZW50XT1cIm9iai5zdWJUaXRsZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZGVuLWhvdXItbGFiZWxcIiBbaGlkZGVuXT1cInRydWVcIiBbdGV4dENvbnRlbnRdPVwiYWRkTWludXRlcyhob3VyKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tVGVtcGxhdGVVc2VkXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgIGhvdXI6IGhvdXIsXHJcbiAgICAgICAgICAgICAgaGlkZGVuSG91cjogYWRkTWludXRlcyhob3VyKSxcclxuICAgICAgICAgICAgICBvYmplY3RzOiBzY2hlZHVsZWRPYmplY3RzW2FkZE1pbnV0ZXMoaG91cildXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdXJTY2hlZHVsaW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIGhvdXJMYWJlbHM6IHN0cmluZ1tdID0gW107XHJcbiAgcHVibGljIHNjaGVkdWxlZE9iamVjdHM6IHsgW2hvdXI6IHN0cmluZ106IFNjaGVkdWxpbmdPYmplY3RbXSB9ID0ge307XHJcbiAgcHVibGljIGFjdGl2ZUhvdXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBhY3RpdmVIYWxmSG91cjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgZHJhZ2dlZE9iamVjdDogYW55IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzY2hlZHVsZTogYW55O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGFydFRpbWVQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGVuZFRpbWVQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIG9iamVjdHNQcm9wOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoaWxkUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tVGVtcGxhdGVVc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGlkUHJvcDogc3RyaW5nOyAgLy8gSW5wdXQgZm9yIHVuaXF1ZSBpZGVudGlmaWVyIHByb3BlcnR5XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgdGltZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbmV3T2JqZWN0UGxhbkV2ZW50OiBFdmVudEVtaXR0ZXI8eyBjdXJyZW50SG91cjogc3RyaW5nLCBkYXRhOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGN1cnJlbnRIb3VyOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBzdHJpbmdcclxuICB9PigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWhvdXItc2NoZWR1bGluZycpXHJcbiAgcHVibGljIHNob3dDbGFzczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lXHJcbiAgKSB7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCkgPT4gdGhpcy5vbkRvY3VtZW50Q2xpY2spO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdlbmVyYXRlVGltZUJsb2NrcygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVNjaGVkdWxlZE9iamVjdHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCgpID0+IHRoaXMub25Eb2N1bWVudENsaWNrKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZVRpbWVCbG9ja3MoKSB7XHJcbiAgICBsZXQgc3RhcnRVbml4OiBudW1iZXIgPSAhdGhpcy5jaGlsZFByb3AgPyB0aGlzLmRhdGVUb1VuaXhFcG9jaChuZXcgRGF0ZSh0aGlzLnNjaGVkdWxlW3RoaXMuc3RhcnRUaW1lUHJvcF0pKSA6IHRoaXMuZGF0ZVRvVW5peEVwb2NoKG5ldyBEYXRlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0pKTtcclxuICAgIGxldCBlbmRVbml4OiBudW1iZXIgPSAhdGhpcy5jaGlsZFByb3AgPyB0aGlzLmRhdGVUb1VuaXhFcG9jaChuZXcgRGF0ZSh0aGlzLnNjaGVkdWxlW3RoaXMuZW5kVGltZVByb3BdKSkgOiB0aGlzLmRhdGVUb1VuaXhFcG9jaChuZXcgRGF0ZSh0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLmVuZFRpbWVQcm9wXSkpO1xyXG5cclxuICAgIGxldCBpbnRlcnZhbCA9IDYwICogNjA7XHJcblxyXG4gICAgZm9yIChsZXQgaG91ckNvdW50ID0gc3RhcnRVbml4OyBob3VyQ291bnQgPD0gZW5kVW5peDsgaG91ckNvdW50ICs9IGludGVydmFsKSB7XHJcbiAgICAgIGxldCBob3VyID0gbmV3IERhdGUoaG91ckNvdW50ICogMTAwMClcclxuICAgICAgbGV0IGhvdXJTdHJpbmcgPSBgJHtob3VyLmdldEhvdXJzKCl9OiR7aG91ci5nZXRNaW51dGVzKCkgPT09IDAgPyAnMDAnIDogaG91ci5nZXRNaW51dGVzKCl9YDtcclxuICAgICAgdGhpcy5ob3VyTGFiZWxzLnB1c2goaG91clN0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVTY2hlZHVsZWRPYmplY3RzKCkge1xyXG4gICAgY29uc3Qgb2JqZWN0c0xpc3QgPSB0aGlzLnNjaGVkdWxlW3RoaXMub2JqZWN0c1Byb3BdO1xyXG5cclxuICAgIGxldCBzdGFydFVuaXg6IG51bWJlciA9ICF0aGlzLmNoaWxkUHJvcCA/IHRoaXMuZGF0ZVRvVW5peEVwb2NoKG5ldyBEYXRlKHRoaXMuc2NoZWR1bGVbdGhpcy5zdGFydFRpbWVQcm9wXSkpIDogdGhpcy5kYXRlVG9Vbml4RXBvY2gobmV3IERhdGUodGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5zdGFydFRpbWVQcm9wXSkpO1xyXG4gICAgbGV0IGVuZFVuaXg6IG51bWJlciA9ICF0aGlzLmNoaWxkUHJvcCA/IHRoaXMuZGF0ZVRvVW5peEVwb2NoKG5ldyBEYXRlKHRoaXMuc2NoZWR1bGVbdGhpcy5lbmRUaW1lUHJvcF0pKSA6IHRoaXMuZGF0ZVRvVW5peEVwb2NoKG5ldyBEYXRlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuZW5kVGltZVByb3BdKSk7XHJcblxyXG4gICAgbGV0IGludGVydmFsID0gMzAgKiA2MDtcclxuXHJcbiAgICBmb3IgKGxldCBob3VyQ291bnQgPSBzdGFydFVuaXg7IGhvdXJDb3VudCA8PSBlbmRVbml4OyBob3VyQ291bnQgKz0gaW50ZXJ2YWwpIHtcclxuICAgICAgbGV0IGhvdXIgPSBuZXcgRGF0ZShob3VyQ291bnQgKiAxMDAwKVxyXG4gICAgICBsZXQgaG91clN0cmluZyA9IGAke2hvdXIuZ2V0SG91cnMoKX06JHtob3VyLmdldE1pbnV0ZXMoKSA9PT0gMCA/ICcwMCcgOiBob3VyLmdldE1pbnV0ZXMoKX1gO1xyXG4gICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHNbaG91clN0cmluZ10gPSB0aGlzLl9nZXRPYmplY3RzRm9ySG91ckFuZE1pbnV0ZXMoXHJcbiAgICAgICAgaG91ci5nZXRIb3VycygpLFxyXG4gICAgICAgIGhvdXIuZ2V0TWludXRlcygpLFxyXG4gICAgICAgIG9iamVjdHNMaXN0XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRPYmplY3RzRm9ySG91ckFuZE1pbnV0ZXMoXHJcbiAgICBob3VyOiBudW1iZXIsXHJcbiAgICBtaW51dGVzOiBudW1iZXIsXHJcbiAgICBvYmplY3RzTGlzdDogYW55W11cclxuICApOiBTY2hlZHVsaW5nT2JqZWN0W10ge1xyXG4gICAgY29uc3Qgb2JqZWN0c0ZvckhvdXI6IFNjaGVkdWxpbmdPYmplY3RbXSA9IFtdO1xyXG4gICAgb2JqZWN0c0xpc3QuZm9yRWFjaCgob2JqKSA9PiB7XHJcbiAgICAgIGxldCBzcGxpdCA9IHRoaXMuY29udmVydFRvSG91ck5vdGF0aW9uKG9ialt0aGlzLnN0YXJ0VGltZVByb3BdKS5zcGxpdCgnOicpO1xyXG4gICAgICBpZiAocGFyc2VJbnQoc3BsaXRbMF0pID09PSBob3VyICYmIHBhcnNlSW50KHNwbGl0WzFdKSA9PT0gbWludXRlcykge1xyXG4gICAgICAgIG9iamVjdHNGb3JIb3VyLnB1c2goey4uLm9ian0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gb2JqZWN0c0ZvckhvdXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIG9uRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIG9iajogYW55KSB7XHJcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGN1cnJlbnRIb3VyU3BhbiA9XHJcbiAgICAgIGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCEucGFyZW50RWxlbWVudCEucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAnLmhpZGRlbi1ob3VyLWxhYmVsJ1xyXG4gICAgICApITtcclxuICAgIGNvbnN0IGN1cnJlbnRIb3VyID0gY3VycmVudEhvdXJTcGFuLnRleHRDb250ZW50ITtcclxuXHJcbiAgICB0aGlzLmRyYWdnZWRPYmplY3QgPSBvYmo7XHJcbiAgICBldmVudC5kYXRhVHJhbnNmZXIhLnNldERhdGEoXHJcbiAgICAgICd0ZXh0JyxcclxuICAgICAgSlNPTi5zdHJpbmdpZnkoe29iajogdGhpcy5kcmFnZ2VkT2JqZWN0LCBjdXJyZW50SG91cn0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ3VzdG9tRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIG9iajogU2NoZWR1bGluZ09iamVjdCkge1xyXG4gICAgdGhpcy5vbkRyYWdTdGFydChldmVudCwgb2JqKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIWN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcmFnLW92ZXInKSkge1xyXG4gICAgICAgIGN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZCgnZHJhZy1vdmVyJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBjdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoJ2RyYWctb3ZlcicpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQsIGhvdXI6IHN0cmluZykge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY3VycmVudFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnLW92ZXInKTtcclxuXHJcbiAgICBsZXQgcGFyc2VkID0gdGhpcy50cnlQYXJzZUpTT05PYmplY3QoZXZlbnQuZGF0YVRyYW5zZmVyIS5nZXREYXRhKFwidGV4dFwiKSk7XHJcblxyXG4gICAgaWYgKCFwYXJzZWQpIHtcclxuICAgICAgdGhpcy5uZXdPYmplY3RQbGFuRXZlbnQuZW1pdCh7Y3VycmVudEhvdXI6IGhvdXIsIGRhdGE6IHBhcnNlZC50b1N0cmluZygpfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzcGxpdEhvdXIgPSBob3VyLnNwbGl0KCc6Jyk7XHJcblxyXG4gICAgY29uc3QgbmV3RW5kTWludXRlcyA9IHNwbGl0SG91clsxXSA9PT0gXCIwMFwiID8gMzAgOiAwO1xyXG4gICAgY29uc3QgbmV3RW5kSG91ciA9IHNwbGl0SG91clsxXSA9PT0gXCIzMFwiID8gKHBhcnNlSW50KHNwbGl0SG91clswXSkgKyAxKSA6IHBhcnNlSW50KHNwbGl0SG91clswXSk7XHJcblxyXG4gICAgY29uc3Qgb3JpZ2luYWxTdGFydEhvdXIgPSB0aGlzLmNvbnZlcnRUb0hvdXJOb3RhdGlvbihwYXJzZWQub2JqW3RoaXMuc3RhcnRUaW1lUHJvcF0pO1xyXG4gICAgLy8gR2V0IHRoZSB1bmlxdWUgaWRlbnRpZmllciB2YWx1ZSBmcm9tIHRoZSBvYmplY3QgdXNpbmcgdGhlIGBpZFByb3BgXHJcbiAgICBjb25zdCBvYmpJZCA9IHBhcnNlZC5vYmpbdGhpcy5pZFByb3BdO1xyXG5cclxuICAgIC8vIEVuc3VyZSB3ZSBjcmVhdGUgYSBuZXcgb2JqZWN0IHRvIGF2b2lkIG11dGF0aW9uIGlzc3Vlc1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZWRPYmplY3QgPSB7XHJcbiAgICAgIC4uLnBhcnNlZC5vYmosXHJcbiAgICAgIFt0aGlzLnN0YXJ0VGltZVByb3BdOiB0aGlzLmNyZWF0ZURhdGUocGFyc2VJbnQoc3BsaXRIb3VyWzBdKSwgcGFyc2VJbnQoc3BsaXRIb3VyWzFdKSksXHJcbiAgICAgIFt0aGlzLmVuZFRpbWVQcm9wXTogdGhpcy5jcmVhdGVEYXRlKG5ld0VuZEhvdXIsIG5ld0VuZE1pbnV0ZXMpXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gaXRzIG9sZCBob3VyIGJsb2NrIHVzaW5nIGl0cyB1bmlxdWUgaWRcclxuICAgIGNvbnN0IG9yaWdpbmFsSG91ckJsb2NrID0gdGhpcy5mb3JtYXRIb3VyKHBhcnNlSW50KG9yaWdpbmFsU3RhcnRIb3VyLnNwbGl0KCc6JylbMF0pLCBwYXJzZUludChvcmlnaW5hbFN0YXJ0SG91ci5zcGxpdCgnOicpWzFdKSk7XHJcbiAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHNbb3JpZ2luYWxIb3VyQmxvY2tdID0gdGhpcy5zY2hlZHVsZWRPYmplY3RzW29yaWdpbmFsSG91ckJsb2NrXS5maWx0ZXIobyA9PiBvW3RoaXMuaWRQcm9wXSAhPT0gb2JqSWQpO1xyXG5cclxuICAgIC8vIEFkZCB0aGUgb2JqZWN0IHRvIHRoZSBuZXcgaG91ciBibG9ja1xyXG5cclxuICAgIGlmICghdGhpcy5zY2hlZHVsZWRPYmplY3RzW2hvdXJdKSB7XHJcbiAgICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tob3VyXSA9IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zY2hlZHVsZWRPYmplY3RzW2hvdXJdLnB1c2godXBkYXRlZE9iamVjdCk7XHJcblxyXG4gICAgLy8gQ2xlYXIgdGhlIGRyYWdnZWQgb2JqZWN0XHJcbiAgICB0aGlzLmRyYWdnZWRPYmplY3QgPSBudWxsO1xyXG5cclxuICAgIHRoaXMudGltZUNoYW5nZUV2ZW50LmVtaXQodXBkYXRlZE9iamVjdCk7XHJcbiAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gdG8gdXBkYXRlIHRoZSB2aWV3XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0VG9Ib3VyTm90YXRpb24oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoZGF0ZSkudG9JU09TdHJpbmcoKSwgJ0hIOm1tJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlRGF0ZShob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBkYXRlLnNldEhvdXJzKGhvdXJzKTtcclxuICAgIGRhdGUuc2V0TWludXRlcyhtaW51dGVzID8gbWludXRlcyA6IDApO1xyXG4gICAgcmV0dXJuIGRhdGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGF0ZVRvVW5peEVwb2NoKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkpIC8gMTAwMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb3JtYXRIb3VyKGhvdXI6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7aG91cn06JHttaW51dGVzID8gbWludXRlcyA6ICcwMCd9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRNaW51dGVzKGhvdXI6IHN0cmluZykge1xyXG4gICAgbGV0IHNwbGl0ID0gaG91ci5zcGxpdChcIjpcIik7XHJcbiAgICBzcGxpdFsxXSA9IFwiMzBcIjtcclxuICAgIHJldHVybiBzcGxpdC5qb2luKCc6Jyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAvLyBDbGVhciBhY3RpdmUgc3RhdGUgd2hlbiBjbGlja2luZyBvdXRzaWRlXHJcbiAgICBpZiAoIXRhcmdldEVsZW1lbnQuY2xvc2VzdCgnLm9iamVjdC1kaXNwbGF5JykpIHtcclxuICAgICAgdGhpcy5hY3RpdmVIYWxmSG91ciA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uT2JqZWN0RGlzcGxheUNsaWNrKGhvdXI6IHN0cmluZywgaGFsZjogJ2ZpcnN0SGFsZicgfCAnc2Vjb25kSGFsZicpIHtcclxuICAgIGNvbnN0IGhhbGZIb3VySWRlbnRpZmllciA9IGAke2hvdXJ9LSR7aGFsZn1gO1xyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZUhhbGZIb3VyID09PSBoYWxmSG91cklkZW50aWZpZXIpIHtcclxuICAgICAgLy8gRGVhY3RpdmF0ZSBpZiBjbGlja2VkIGFnYWluXHJcbiAgICAgIHRoaXMuYWN0aXZlSGFsZkhvdXIgPSBudWxsO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNjaGVkdWxlZE9iamVjdHNbaG91cl0/Lmxlbmd0aCA+IDAgfHwgdGhpcy5zY2hlZHVsZWRPYmplY3RzW3RoaXMuYWRkTWludXRlcyhob3VyKV0/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gQWN0aXZhdGUgdGhlIGhhbGYtaG91ciBpZiB0aGVyZSBhcmUgb2JqZWN0c1xyXG4gICAgICB0aGlzLmFjdGl2ZUhhbGZIb3VyID0gaGFsZkhvdXJJZGVudGlmaWVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyeVBhcnNlSlNPTk9iamVjdChqc29uU3RyaW5nOiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBvID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcclxuXHJcbiAgICAgIC8vIEhhbmRsZSBub24tZXhjZXB0aW9uLXRocm93aW5nIGNhc2VzOlxyXG4gICAgICAvLyBOZWl0aGVyIEpTT04ucGFyc2UoZmFsc2UpIG9yIEpTT04ucGFyc2UoMTIzNCkgdGhyb3cgZXJyb3JzLCBoZW5jZSB0aGUgdHlwZS1jaGVja2luZyxcclxuICAgICAgLy8gYnV0Li4uIEpTT04ucGFyc2UobnVsbCkgcmV0dXJucyBudWxsLCBhbmQgdHlwZW9mIG51bGwgPT09IFwib2JqZWN0XCIsXHJcbiAgICAgIC8vIHNvIHdlIG11c3QgY2hlY2sgZm9yIHRoYXQsIHRvby4gVGhhbmtmdWxseSwgbnVsbCBpcyBmYWxzZXksIHNvIHRoaXMgc3VmZmljZXM6XHJcbiAgICAgIGlmIChvICYmIHR5cGVvZiBvID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgcmV0dXJuIG87XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfTtcclxufVxyXG4iXX0=
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9ob3VyLXNjaGVkdWxpbmcvaG91ci1zY2hlZHVsaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNKLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixHQUNuRSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFzRnpDLE1BQU0sT0FBTyx1QkFBdUI7SUEyQmxDLFlBQ1UsS0FBd0IsRUFDeEIsUUFBa0IsRUFDbEIsSUFBWTtRQUZaLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQTVCZixlQUFVLEdBQWEsRUFBRSxDQUFDO1FBQzFCLHFCQUFnQixHQUEyQyxFQUFFLENBQUM7UUFDOUQsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBRXBDLGtCQUFhLEdBQWUsSUFBSSxDQUFDO1FBUXpCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUduQyxvQkFBZSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ25FLHVCQUFrQixHQUF3RCxJQUFJLFlBQVksRUFHdkcsQ0FBQztRQUdFLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFPL0IsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxTQUFTLEdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hNLElBQUksT0FBTyxHQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxTCxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRXZCLEtBQUssSUFBSSxTQUFTLEdBQUcsU0FBUyxFQUFFLFNBQVMsSUFBSSxPQUFPLEVBQUUsU0FBUyxJQUFJLFFBQVEsRUFBRTtZQUMzRSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDckMsSUFBSSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUM1RixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQsSUFBSSxTQUFTLEdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hNLElBQUksT0FBTyxHQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxTCxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRXZCLEtBQUssSUFBSSxTQUFTLEdBQUcsU0FB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Q0FBQyxDQUFDO2FBQ1Y7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1NBQ1g7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFBQSxDQUFDOzs7WUF0VUgsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRFVDtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXhGQyxpQkFBaUI7WUFHWCxRQUFRO1lBRnFCLE1BQU07Ozt1QkFpR3hDLEtBQUs7NEJBQ0wsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsS0FBSzs2QkFDTCxLQUFLO2lDQUNMLEtBQUs7cUJBQ0wsS0FBSzs4QkFFTCxNQUFNO2lDQUNOLE1BQU07d0JBS04sV0FBVyxTQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBIb3N0QmluZGluZyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE5nWm9uZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7U2NoZWR1bGluZ09iamVjdH0gZnJvbSAnLi9tb2RlbC9lbnVtL3NjaGVkdWxpbmctb2JqZWN0LmludGVyZmFjZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1ob3VyLXNjaGVkdWxpbmcnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwidGltZS1ibG9ja1wiICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJMYWJlbHNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhvdXItbGFiZWxcIj48c3BhbiBbdGV4dENvbnRlbnRdPVwiaG91clwiPjwvc3Bhbj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1kaXNwbGF5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpcnN0LWhhbGYtaG91ciBvYmplY3QtaGFsZlwiXHJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2hhcy1vYmplY3RzJzogc2NoZWR1bGVkT2JqZWN0c1tob3VyXT8ubGVuZ3RoID4gMCwgJ2FjdGl2ZSc6IGFjdGl2ZUhhbGZIb3VyID09PSBob3VyICsgJy1maXJzdEhhbGYnfVwiXHJcbiAgICAgICAgICAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwib25PYmplY3REaXNwbGF5Q2xpY2soaG91ciwgJ2ZpcnN0SGFsZicpXCJcclxuICAgICAgICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQsIGhvdXIpXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbVRlbXBsYXRlVXNlZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NoZWR1bGVkT2JqZWN0c1tob3VyXVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZGVuLWhvdXItbGFiZWxcIiBbaGlkZGVuXT1cInRydWVcIiBbdGV4dENvbnRlbnRdPVwiaG91clwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb2JqIG9mIHNjaGVkdWxlZE9iamVjdHNbaG91cl1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzY2hlZHVsZWQtb2JqZWN0XCJcclxuICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudCwgb2JqKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRkZW4taG91ci1sYWJlbFwiIFtoaWRkZW5dPVwidHJ1ZVwiIFt0ZXh0Q29udGVudF09XCJhZGRNaW51dGVzKGhvdXIpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiIFt0ZXh0Q29udGVudF09XCJvYmoudGl0bGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJvYmouc3ViVGl0bGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVRlbXBsYXRlVXNlZFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICBob3VyOiBob3VyLFxyXG4gICAgICAgICAgICAgIGhpZGRlbkhvdXI6IGhvdXIsXHJcbiAgICAgICAgICAgICAgb2JqZWN0czogc2NoZWR1bGVkT2JqZWN0c1tob3VyXVxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmQtaGFsZi1ob3VyIG9iamVjdC1oYWxmXCJcclxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGFzLW9iamVjdHMnOiBzY2hlZHVsZWRPYmplY3RzW2FkZE1pbnV0ZXMoaG91cildPy5sZW5ndGggPiAwLCAnYWN0aXZlJzogYWN0aXZlSGFsZkhvdXIgPT09IGhvdXIgKyAnLXNlY29uZEhhbGYnfVwiXHJcbiAgICAgICAgICAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwib25PYmplY3REaXNwbGF5Q2xpY2soaG91ciwgJ3NlY29uZEhhbGYnKVwiXHJcbiAgICAgICAgICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50LCBhZGRNaW51dGVzKGhvdXIpKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21UZW1wbGF0ZVVzZWRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNjaGVkdWxlZE9iamVjdHNbYWRkTWludXRlcyhob3VyKV1cIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb2JqIG9mIHNjaGVkdWxlZE9iamVjdHNbYWRkTWludXRlcyhob3VyKV1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzY2hlZHVsZWQtb2JqZWN0XCJcclxuICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudCwgb2JqKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiIFt0ZXh0Q29udGVudF09XCJvYmoudGl0bGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Yi10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJvYmouc3ViVGl0bGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpZGRlbi1ob3VyLWxhYmVsXCIgW2hpZGRlbl09XCJ0cnVlXCIgW3RleHRDb250ZW50XT1cImFkZE1pbnV0ZXMoaG91cilcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVRlbXBsYXRlVXNlZFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICBob3VyOiBob3VyLFxyXG4gICAgICAgICAgICAgIGhpZGRlbkhvdXI6IGFkZE1pbnV0ZXMoaG91ciksXHJcbiAgICAgICAgICAgICAgb2JqZWN0czogc2NoZWR1bGVkT2JqZWN0c1thZGRNaW51dGVzKGhvdXIpXVxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3VyU2NoZWR1bGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBob3VyTGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHB1YmxpYyBzY2hlZHVsZWRPYmplY3RzOiB7IFtob3VyOiBzdHJpbmddOiBTY2hlZHVsaW5nT2JqZWN0W10gfSA9IHt9O1xyXG4gIHB1YmxpYyBhY3RpdmVIb3VyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgYWN0aXZlSGFsZkhvdXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGRyYWdnZWRPYmplY3Q6IGFueSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2NoZWR1bGU6IGFueTtcclxuICBASW5wdXQoKSBwdWJsaWMgc3RhcnRUaW1lUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlbmRUaW1lUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvYmplY3RzUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGlsZFByb3A6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVRlbXBsYXRlVXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZFByb3A6IHN0cmluZzsgIC8vIElucHV0IGZvciB1bmlxdWUgaWRlbnRpZmllciBwcm9wZXJ0eVxyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIHRpbWVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG5ld09iamVjdFBsYW5FdmVudDogRXZlbnRFbWl0dGVyPHsgY3VycmVudEhvdXI6IHN0cmluZywgZGF0YTogc3RyaW5nIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBjdXJyZW50SG91cjogc3RyaW5nLFxyXG4gICAgZGF0YTogc3RyaW5nXHJcbiAgfT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1ob3VyLXNjaGVkdWxpbmcnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxyXG4gICkge1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCgpID0+IHRoaXMub25Eb2N1bWVudENsaWNrKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZW5lcmF0ZVRpbWVCbG9ja3MoKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVTY2hlZHVsZWRPYmplY3RzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywoKSA9PiB0aGlzLm9uRG9jdW1lbnRDbGljayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVUaW1lQmxvY2tzKCkge1xyXG4gICAgbGV0IHN0YXJ0VW5peDogbnVtYmVyID0gIXRoaXMuY2hpbGRQcm9wID8gdGhpcy5kYXRlVG9Vbml4RXBvY2gobmV3IERhdGUodGhpcy5zY2hlZHVsZVt0aGlzLnN0YXJ0VGltZVByb3BdKSkgOiB0aGlzLmRhdGVUb1VuaXhFcG9jaChuZXcgRGF0ZSh0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLnN0YXJ0VGltZVByb3BdKSk7XHJcbiAgICBsZXQgZW5kVW5peDogbnVtYmVyID0gIXRoaXMuY2hpbGRQcm9wID8gdGhpcy5kYXRlVG9Vbml4RXBvY2gobmV3IERhdGUodGhpcy5zY2hlZHVsZVt0aGlzLmVuZFRpbWVQcm9wXSkpIDogdGhpcy5kYXRlVG9Vbml4RXBvY2gobmV3IERhdGUodGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5lbmRUaW1lUHJvcF0pKTtcclxuXHJcbiAgICBsZXQgaW50ZXJ2YWwgPSA2MCAqIDYwO1xyXG5cclxuICAgIGZvciAobGV0IGhvdXJDb3VudCA9IHN0YXJ0VW5peDsgaG91ckNvdW50IDw9IGVuZFVuaXg7IGhvdXJDb3VudCArPSBpbnRlcnZhbCkge1xyXG4gICAgICBsZXQgaG91ciA9IG5ldyBEYXRlKGhvdXJDb3VudCAqIDEwMDApXHJcbiAgICAgIGxldCBob3VyU3RyaW5nID0gYCR7aG91ci5nZXRIb3VycygpfToke2hvdXIuZ2V0TWludXRlcygpID09PSAwID8gJzAwJyA6IGhvdXIuZ2V0TWludXRlcygpfWA7XHJcbiAgICAgIHRoaXMuaG91ckxhYmVscy5wdXNoKGhvdXJTdHJpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlU2NoZWR1bGVkT2JqZWN0cygpIHtcclxuICAgIGNvbnN0IG9iamVjdHNMaXN0ID0gdGhpcy5zY2hlZHVsZVt0aGlzLm9iamVjdHNQcm9wXTtcclxuXHJcbiAgICBsZXQgc3RhcnRVbml4OiBudW1iZXIgPSAhdGhpcy5jaGlsZFByb3AgPyB0aGlzLmRhdGVUb1VuaXhFcG9jaChuZXcgRGF0ZSh0aGlzLnNjaGVkdWxlW3RoaXMuc3RhcnRUaW1lUHJvcF0pKSA6IHRoaXMuZGF0ZVRvVW5peEVwb2NoKG5ldyBEYXRlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0pKTtcclxuICAgIGxldCBlbmRVbml4OiBudW1iZXIgPSAhdGhpcy5jaGlsZFByb3AgPyB0aGlzLmRhdGVUb1VuaXhFcG9jaChuZXcgRGF0ZSh0aGlzLnNjaGVkdWxlW3RoaXMuZW5kVGltZVByb3BdKSkgOiB0aGlzLmRhdGVUb1VuaXhFcG9jaChuZXcgRGF0ZSh0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLmVuZFRpbWVQcm9wXSkpO1xyXG5cclxuICAgIGxldCBpbnRlcnZhbCA9IDMwICogNjA7XHJcblxyXG4gICAgZm9yIChsZXQgaG91ckNvdW50ID0gc3RhcnRVbml4OyBob3VyQ291bnQgPD0gZW5kVW5peDsgaG91ckNvdW50ICs9IGludGVydmFsKSB7XHJcbiAgICAgIGxldCBob3VyID0gbmV3IERhdGUoaG91ckNvdW50ICogMTAwMClcclxuICAgICAgbGV0IGhvdXJTdHJpbmcgPSBgJHtob3VyLmdldEhvdXJzKCl9OiR7aG91ci5nZXRNaW51dGVzKCkgPT09IDAgPyAnMDAnIDogaG91ci5nZXRNaW51dGVzKCl9YDtcclxuICAgICAgdGhpcy5zY2hlZHVsZWRPYmplY3RzW2hvdXJTdHJpbmddID0gdGhpcy5fZ2V0T2JqZWN0c0ZvckhvdXJBbmRNaW51dGVzKFxyXG4gICAgICAgIGhvdXIuZ2V0SG91cnMoKSxcclxuICAgICAgICBob3VyLmdldE1pbnV0ZXMoKSxcclxuICAgICAgICBvYmplY3RzTGlzdFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0T2JqZWN0c0ZvckhvdXJBbmRNaW51dGVzKFxyXG4gICAgaG91cjogbnVtYmVyLFxyXG4gICAgbWludXRlczogbnVtYmVyLFxyXG4gICAgb2JqZWN0c0xpc3Q6IGFueVtdXHJcbiAgKTogU2NoZWR1bGluZ09iamVjdFtdIHtcclxuICAgIGNvbnN0IG9iamVjdHNGb3JIb3VyOiBTY2hlZHVsaW5nT2JqZWN0W10gPSBbXTtcclxuICAgIG9iamVjdHNMaXN0LmZvckVhY2goKG9iaikgPT4ge1xyXG4gICAgICBsZXQgc3BsaXQgPSB0aGlzLmNvbnZlcnRUb0hvdXJOb3RhdGlvbihvYmpbdGhpcy5zdGFydFRpbWVQcm9wXSkuc3BsaXQoJzonKTtcclxuICAgICAgaWYgKHBhcnNlSW50KHNwbGl0WzBdKSA9PT0gaG91ciAmJiBwYXJzZUludChzcGxpdFsxXSkgPT09IG1pbnV0ZXMpIHtcclxuICAgICAgICBvYmplY3RzRm9ySG91ci5wdXNoKHsuLi5vYmp9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG9iamVjdHNGb3JIb3VyO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBvbkRyYWdTdGFydChldmVudDogRHJhZ0V2ZW50LCBvYmo6IGFueSkge1xyXG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjdXJyZW50SG91clNwYW4gPVxyXG4gICAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQhLnBhcmVudEVsZW1lbnQhLnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgJy5oaWRkZW4taG91ci1sYWJlbCdcclxuICAgICAgKSE7XHJcbiAgICBjb25zdCBjdXJyZW50SG91ciA9IGN1cnJlbnRIb3VyU3Bhbi50ZXh0Q29udGVudCE7XHJcblxyXG4gICAgdGhpcy5kcmFnZ2VkT2JqZWN0ID0gb2JqO1xyXG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyIS5zZXREYXRhKFxyXG4gICAgICAndGV4dCcsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtvYmo6IHRoaXMuZHJhZ2dlZE9iamVjdCwgY3VycmVudEhvdXJ9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkN1c3RvbURyYWdTdGFydChldmVudDogRHJhZ0V2ZW50LCBvYmo6IFNjaGVkdWxpbmdPYmplY3QpIHtcclxuICAgIHRoaXMub25EcmFnU3RhcnQoZXZlbnQsIG9iaik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKCFjdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnZHJhZy1vdmVyJykpIHtcclxuICAgICAgICBjdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2RyYWctb3ZlcicpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgY3VycmVudFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnLW92ZXInKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50LCBob3VyOiBzdHJpbmcpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZy1vdmVyJyk7XHJcblxyXG4gICAgbGV0IHBhcnNlZCA9IHRoaXMudHJ5UGFyc2VKU09OT2JqZWN0KGV2ZW50LmRhdGFUcmFuc2ZlciEuZ2V0RGF0YShcInRleHRcIikpO1xyXG5cclxuICAgIGlmICghcGFyc2VkKSB7XHJcbiAgICAgIHRoaXMubmV3T2JqZWN0UGxhbkV2ZW50LmVtaXQoe2N1cnJlbnRIb3VyOiBob3VyLCBkYXRhOiBwYXJzZWQudG9TdHJpbmcoKX0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3BsaXRIb3VyID0gaG91ci5zcGxpdCgnOicpO1xyXG5cclxuICAgIGNvbnN0IG5ld0VuZE1pbnV0ZXMgPSBzcGxpdEhvdXJbMV0gPT09IFwiMDBcIiA/IDMwIDogMDtcclxuICAgIGNvbnN0IG5ld0VuZEhvdXIgPSBzcGxpdEhvdXJbMV0gPT09IFwiMzBcIiA/IChwYXJzZUludChzcGxpdEhvdXJbMF0pICsgMSkgOiBwYXJzZUludChzcGxpdEhvdXJbMF0pO1xyXG5cclxuICAgIGNvbnN0IG9yaWdpbmFsU3RhcnRIb3VyID0gdGhpcy5jb252ZXJ0VG9Ib3VyTm90YXRpb24ocGFyc2VkLm9ialt0aGlzLnN0YXJ0VGltZVByb3BdKTtcclxuICAgIC8vIEdldCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgdmFsdWUgZnJvbSB0aGUgb2JqZWN0IHVzaW5nIHRoZSBgaWRQcm9wYFxyXG4gICAgY29uc3Qgb2JqSWQgPSBwYXJzZWQub2JqW3RoaXMuaWRQcm9wXTtcclxuXHJcbiAgICAvLyBFbnN1cmUgd2UgY3JlYXRlIGEgbmV3IG9iamVjdCB0byBhdm9pZCBtdXRhdGlvbiBpc3N1ZXNcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkT2JqZWN0ID0ge1xyXG4gICAgICAuLi5wYXJzZWQub2JqLFxyXG4gICAgICBbdGhpcy5zdGFydFRpbWVQcm9wXTogdGhpcy5jcmVhdGVEYXRlKHBhcnNlSW50KHNwbGl0SG91clswXSksIHBhcnNlSW50KHNwbGl0SG91clsxXSkpLFxyXG4gICAgICBbdGhpcy5lbmRUaW1lUHJvcF06IHRoaXMuY3JlYXRlRGF0ZShuZXdFbmRIb3VyLCBuZXdFbmRNaW51dGVzKVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIGl0cyBvbGQgaG91ciBibG9jayB1c2luZyBpdHMgdW5pcXVlIGlkXHJcbiAgICBjb25zdCBvcmlnaW5hbEhvdXJCbG9jayA9IHRoaXMuZm9ybWF0SG91cihwYXJzZUludChvcmlnaW5hbFN0YXJ0SG91ci5zcGxpdCgnOicpWzBdKSwgcGFyc2VJbnQob3JpZ2luYWxTdGFydEhvdXIuc3BsaXQoJzonKVsxXSkpO1xyXG4gICAgdGhpcy5zY2hlZHVsZWRPYmplY3RzW29yaWdpbmFsSG91ckJsb2NrXSA9IHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tvcmlnaW5hbEhvdXJCbG9ja10uZmlsdGVyKG8gPT4gb1t0aGlzLmlkUHJvcF0gIT09IG9iaklkKTtcclxuXHJcbiAgICAvLyBBZGQgdGhlIG9iamVjdCB0byB0aGUgbmV3IGhvdXIgYmxvY2tcclxuXHJcbiAgICBpZiAoIXRoaXMuc2NoZWR1bGVkT2JqZWN0c1tob3VyXSkge1xyXG4gICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHNbaG91cl0gPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tob3VyXS5wdXNoKHVwZGF0ZWRPYmplY3QpO1xyXG5cclxuICAgIC8vIENsZWFyIHRoZSBkcmFnZ2VkIG9iamVjdFxyXG4gICAgdGhpcy5kcmFnZ2VkT2JqZWN0ID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnRpbWVDaGFuZ2VFdmVudC5lbWl0KHVwZGF0ZWRPYmplY3QpO1xyXG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlld1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydFRvSG91ck5vdGF0aW9uKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKGRhdGUpLnRvSVNPU3RyaW5nKCksICdISDptbScpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZURhdGUoaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcikge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZGF0ZS5zZXRIb3Vycyhob3Vycyk7XHJcbiAgICBkYXRlLnNldE1pbnV0ZXMobWludXRlcyA/IG1pbnV0ZXMgOiAwKTtcclxuICAgIHJldHVybiBkYXRlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRhdGVUb1VuaXhFcG9jaChkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKGRhdGUuZ2V0VGltZSgpKSAvIDEwMDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9ybWF0SG91cihob3VyOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke2hvdXJ9OiR7bWludXRlcyA/IG1pbnV0ZXMgOiAnMDAnfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkTWludXRlcyhob3VyOiBzdHJpbmcpIHtcclxuICAgIGxldCBzcGxpdCA9IGhvdXIuc3BsaXQoXCI6XCIpO1xyXG4gICAgc3BsaXRbMV0gPSBcIjMwXCI7XHJcbiAgICByZXR1cm4gc3BsaXQuam9pbignOicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gQ2xlYXIgYWN0aXZlIHN0YXRlIHdoZW4gY2xpY2tpbmcgb3V0c2lkZVxyXG4gICAgaWYgKCF0YXJnZXRFbGVtZW50LmNsb3Nlc3QoJy5vYmplY3QtZGlzcGxheScpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSGFsZkhvdXIgPSBudWxsO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9iamVjdERpc3BsYXlDbGljayhob3VyOiBzdHJpbmcsIGhhbGY6ICdmaXJzdEhhbGYnIHwgJ3NlY29uZEhhbGYnKSB7XHJcbiAgICBjb25zdCBoYWxmSG91cklkZW50aWZpZXIgPSBgJHtob3VyfS0ke2hhbGZ9YDtcclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVIYWxmSG91ciA9PT0gaGFsZkhvdXJJZGVudGlmaWVyKSB7XHJcbiAgICAgIC8vIERlYWN0aXZhdGUgaWYgY2xpY2tlZCBhZ2FpblxyXG4gICAgICB0aGlzLmFjdGl2ZUhhbGZIb3VyID0gbnVsbDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zY2hlZHVsZWRPYmplY3RzW2hvdXJdPy5sZW5ndGggPiAwIHx8IHRoaXMuc2NoZWR1bGVkT2JqZWN0c1t0aGlzLmFkZE1pbnV0ZXMoaG91cildPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vIEFjdGl2YXRlIHRoZSBoYWxmLWhvdXIgaWYgdGhlcmUgYXJlIG9iamVjdHNcclxuICAgICAgdGhpcy5hY3RpdmVIYWxmSG91ciA9IGhhbGZIb3VySWRlbnRpZmllcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cnlQYXJzZUpTT05PYmplY3QoanNvblN0cmluZzogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgbyA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XHJcblxyXG4gICAgICAvLyBIYW5kbGUgbm9uLWV4Y2VwdGlvbi10aHJvd2luZyBjYXNlczpcclxuICAgICAgLy8gTmVpdGhlciBKU09OLnBhcnNlKGZhbHNlKSBvciBKU09OLnBhcnNlKDEyMzQpIHRocm93IGVycm9ycywgaGVuY2UgdGhlIHR5cGUtY2hlY2tpbmcsXHJcbiAgICAgIC8vIGJ1dC4uLiBKU09OLnBhcnNlKG51bGwpIHJldHVybnMgbnVsbCwgYW5kIHR5cGVvZiBudWxsID09PSBcIm9iamVjdFwiLFxyXG4gICAgICAvLyBzbyB3ZSBtdXN0IGNoZWNrIGZvciB0aGF0LCB0b28uIFRoYW5rZnVsbHksIG51bGwgaXMgZmFsc2V5LCBzbyB0aGlzIHN1ZmZpY2VzOlxyXG4gICAgICBpZiAobyAmJiB0eXBlb2YgbyA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIHJldHVybiBvO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH07XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGluZy1vYmplY3QuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy9tb2RlbC9lbnVtL3NjaGVkdWxpbmctb2JqZWN0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsaW5nT2JqZWN0IHtcclxuICBzdGFydDogbnVtYmVyO1xyXG4gIGVuZDogbnVtYmVyO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHN1YlRpdGxlPzogc3RyaW5nO1xyXG4gIHNlbGVjdGVkPzogYm9vbGVhbjtcclxuICBoZWlnaHQ/OiBudW1iZXI7XHJcbiAgdG9wPzogbnVtYmVyO1xyXG5cclxuICBba2V5OiBzdHJpbmddOiBhbnk7IC8vIEFsbG93cyBkeW5hbWljIHByb3BlcnRpZXMgaW5jbHVkaW5nIHVuaXF1ZSBpZGVudGlmaWVyc1xyXG59XHJcbiJdfQ==
@@ -1,7 +1,14 @@
1
1
  import { Component, HostBinding, Input, ViewEncapsulation } from "@angular/core";
2
2
  export class HourSchedulingExpandableTemplateComponent {
3
3
  constructor() {
4
- this.objects = [];
4
+ this.layouts = [];
5
+ }
6
+ set objects(objects) {
7
+ this._objects = objects;
8
+ this.layouts = this.calculateLeftAndWidthOfObjects();
9
+ }
10
+ get objects() {
11
+ return this._objects;
5
12
  }
6
13
  showClass() {
7
14
  return true;
@@ -10,42 +17,67 @@ export class HourSchedulingExpandableTemplateComponent {
10
17
  onDragStartCustom === null || onDragStartCustom === void 0 ? void 0 : onDragStartCustom.call(obj);
11
18
  event.dataTransfer.setData("text", JSON.stringify({ obj }));
12
19
  }
13
- leftForObject(index, objects) {
14
- if (index === 0) {
15
- return 0;
16
- }
17
- else {
18
- return index * this.widthForObject(index, objects);
19
- }
20
- }
21
- widthForObject(index, objects) {
22
- if (objects.length > 1) {
23
- return 100 / objects.length;
24
- }
25
- if (objects.length === 1) {
26
- return 100;
20
+ calculateLeftAndWidthOfObjects() {
21
+ const layoutData = new Array(this._objects.length);
22
+ // Helper: check if two time ranges overlap
23
+ const isOverlapping = (startA, endA, startB, endB) => {
24
+ return startA < endB && startB < endA;
25
+ };
26
+ // Step 1: build overlap groups
27
+ const overlapGroups = [];
28
+ const processed = new Set();
29
+ for (let i = 0; i < this._objects.length; i++) {
30
+ if (processed.has(i))
31
+ continue;
32
+ const group = [i];
33
+ const objA = this._objects[i];
34
+ const startA = new Date(objA.start);
35
+ const endA = new Date(objA.end);
36
+ for (let j = i + 1; j < this._objects.length; j++) {
37
+ const objB = this._objects[j];
38
+ const startB = new Date(objB.start);
39
+ const endB = new Date(objB.end);
40
+ if (isOverlapping(startA, endA, startB, endB)) {
41
+ group.push(j);
42
+ processed.add(j);
43
+ }
44
+ }
45
+ group.forEach(index => processed.add(index));
46
+ overlapGroups.push(group);
27
47
  }
48
+ // Step 2: assign layout per group
49
+ overlapGroups.forEach(group => {
50
+ const total = group.length;
51
+ const width = 100 / total;
52
+ group.forEach((objectIndex, i) => {
53
+ layoutData[objectIndex] = {
54
+ leftPercent: i * width,
55
+ widthPercent: width
56
+ };
57
+ });
58
+ });
59
+ return layoutData;
28
60
  }
29
61
  }
30
62
  HourSchedulingExpandableTemplateComponent.decorators = [
31
63
  { type: Component, args: [{
32
64
  selector: "co-hour-scheduling-expandable-template",
33
65
  template: `
34
- <div class="row">
66
+
35
67
  <div
36
68
  *ngFor="let obj of objects"
37
69
  [class]="'custom-scheduled-object'"
38
- [class.selected]="obj['selected']"
39
- [draggable]="!obj['selected']"
40
- [style.--height]="obj['height'] + 'px'"
41
- [style.--top]="obj['top'] + 'px'"
42
- [style.--left]="leftForObject(objects.indexOf(obj), objects) + '%'"
43
- [style.--width]="widthForObject(objects.indexOf(obj), objects) + '%'"
70
+ [class.selected]="obj.selected"
71
+ [draggable]="!obj.selected"
72
+ [style.--height]="obj.height + 'px'"
73
+ [style.--top]="obj.top + 'px'"
74
+ [style.--left]="layouts[objects.indexOf(obj)].leftPercent + '%'"
75
+ [style.--width]="layouts[objects.indexOf(obj)].widthPercent + '%'"
44
76
  (click)="onSelectBlock(obj)"
45
77
  (dragstart)="onExpandableDragStart($event, obj, onDragStartCustom(obj) )">
46
78
 
47
79
  <div
48
- *ngIf="obj['selected']"
80
+ *ngIf="obj.selected"
49
81
  class="top-resizer"
50
82
  (mousedown)="onResizeStart($event, obj, 'top')"></div>
51
83
  <ng-template
@@ -55,11 +87,10 @@ HourSchedulingExpandableTemplateComponent.decorators = [
55
87
  }"
56
88
  >
57
89
  </ng-template>
58
- <div *ngIf="obj['selected']"
90
+ <div *ngIf="obj.selected"
59
91
  class="bottom-resizer"
60
92
  (mousedown)="onResizeStart($event, obj, 'bottom')"></div>
61
93
  </div>
62
- </div>
63
94
  `,
64
95
  encapsulation: ViewEncapsulation.None
65
96
  },] }
@@ -70,6 +101,8 @@ HourSchedulingExpandableTemplateComponent.propDecorators = {
70
101
  onDragStartCustom: [{ type: Input }],
71
102
  onResizeStart: [{ type: Input }],
72
103
  onSelectBlock: [{ type: Input }],
104
+ startTimeProp: [{ type: Input }],
105
+ endTimeProp: [{ type: Input }],
73
106
  showClass: [{ type: HostBinding, args: ["class.co-hour-scheduling-expandable-template",] }]
74
107
  };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQXFDNUYsTUFBTSxPQUFPLHlDQUF5QztJQW5DdEQ7UUF5Q1MsWUFBTyxHQUFhLEVBQUUsQ0FBQztJQThDaEMsQ0FBQztJQTVCUSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0scUJBQXFCLENBQUMsS0FBZ0IsRUFBRSxHQUFXLEVBQUUsaUJBQTJCO1FBQ3JGLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixLQUFLLENBQUMsWUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWEsRUFBRSxPQUFpQjtRQUNuRCxJQUFHLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDZCxPQUFPLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDTCxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNwRDtJQUVILENBQUM7SUFFTSxjQUFjLENBQUMsS0FBYSxFQUFFLE9BQWlCO1FBQ3BELElBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTyxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUM3QjtRQUNELElBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxHQUFHLENBQUM7U0FDWjtJQUNILENBQUM7OztZQXBGRixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHdDQUF3QztnQkFDbEQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E4QlQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDeEM7Ozs2QkFHRSxLQUFLO3NCQUdMLEtBQUs7Z0NBR0wsS0FBSzs0QkFJTCxLQUFLOzRCQUlMLEtBQUs7d0JBT0wsV0FBVyxTQUFDLDhDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiY28taG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGVcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2N1c3RvbS1zY2hlZHVsZWQtb2JqZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm9ialsnc2VsZWN0ZWQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCIhb2JqWydzZWxlY3RlZCddXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1oZWlnaHRdPVwib2JqWydoZWlnaHQnXSArICdweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvcF09XCJvYmpbJ3RvcCddICsgJ3B4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbGVmdF09XCJsZWZ0Rm9yT2JqZWN0KG9iamVjdHMuaW5kZXhPZihvYmopLCBvYmplY3RzKSArICclJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0td2lkdGhdPVwid2lkdGhGb3JPYmplY3Qob2JqZWN0cy5pbmRleE9mKG9iaiksIG9iamVjdHMpICsgJyUnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RCbG9jayhvYmopXCJcclxuICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRXhwYW5kYWJsZURyYWdTdGFydCgkZXZlbnQsIG9iaiwgb25EcmFnU3RhcnRDdXN0b20ob2JqKSApXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9ialsnc2VsZWN0ZWQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wLXJlc2l6ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplU3RhcnQoJGV2ZW50LCBvYmosICd0b3AnKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9iamVjdFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICBvYmplY3Q6IG9ialxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqWydzZWxlY3RlZCddXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3R0b20tcmVzaXplclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25SZXNpemVTdGFydCgkZXZlbnQsIG9iaiwgJ2JvdHRvbScpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZVRlbXBsYXRlQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb2JqZWN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9iamVjdHM6IE9iamVjdFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9uRHJhZ1N0YXJ0Q3VzdG9tOiBGdW5jdGlvbjtcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9uUmVzaXplU3RhcnQ6IEZ1bmN0aW9uO1xyXG5cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgb25TZWxlY3RCbG9jazogRnVuY3Rpb247XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkV4cGFuZGFibGVEcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCwgb2JqOiBPYmplY3QsIG9uRHJhZ1N0YXJ0Q3VzdG9tOiBGdW5jdGlvbikge1xyXG4gICAgb25EcmFnU3RhcnRDdXN0b20/LmNhbGwob2JqKTtcclxuICAgIGV2ZW50LmRhdGFUcmFuc2ZlciEuc2V0RGF0YShcInRleHRcIiwgSlNPTi5zdHJpbmdpZnkoeyBvYmogfSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxlZnRGb3JPYmplY3QoaW5kZXg6IG51bWJlciwgb2JqZWN0czogT2JqZWN0W10pIHtcclxuICAgIGlmKGluZGV4ID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGluZGV4ICogdGhpcy53aWR0aEZvck9iamVjdChpbmRleCwgb2JqZWN0cyk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHdpZHRoRm9yT2JqZWN0KGluZGV4OiBudW1iZXIsIG9iamVjdHM6IE9iamVjdFtdKSB7XHJcbiAgICBpZihvYmplY3RzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgcmV0dXJuIDEwMCAvIG9iamVjdHMubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYob2JqZWN0cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgcmV0dXJuIDEwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQXFDNUYsTUFBTSxPQUFPLHlDQUF5QztJQWxDdEQ7UUFxQ1MsWUFBTyxHQUFtRCxFQUFFLENBQUM7SUFpR3RFLENBQUM7SUE1RkMsSUFDVyxPQUFPLENBQUMsT0FBMkI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBcUJNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHTSxxQkFBcUIsQ0FBQyxLQUFnQixFQUFFLEdBQVcsRUFBRSxpQkFBMkI7UUFDckYsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxZQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENB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SUwsS0FBSzs0QkFHTCxLQUFLOzBCQUdMLEtBQUs7d0JBSUwsV0FBVyxTQUFDLDhDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTY2hlZHVsaW5nT2JqZWN0fSBmcm9tICcuLi8uLi8uLi9ob3VyLXNjaGVkdWxpbmcvbW9kZWwvZW51bS9zY2hlZHVsaW5nLW9iamVjdC5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZVwiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2N1c3RvbS1zY2hlZHVsZWQtb2JqZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm9iai5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCIhb2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1oZWlnaHRdPVwib2JqLmhlaWdodCArICdweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvcF09XCJvYmoudG9wICsgJ3B4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tbGVmdF09XCJsYXlvdXRzW29iamVjdHMuaW5kZXhPZihvYmopXS5sZWZ0UGVyY2VudCArICclJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0td2lkdGhdPVwibGF5b3V0c1tvYmplY3RzLmluZGV4T2Yob2JqKV0ud2lkdGhQZXJjZW50ICsgJyUnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RCbG9jayhvYmopXCJcclxuICAgICAgICAgICAgICAgICAgICAoZHJhZ3N0YXJ0KT1cIm9uRXhwYW5kYWJsZURyYWdTdGFydCgkZXZlbnQsIG9iaiwgb25EcmFnU3RhcnRDdXN0b20ob2JqKSApXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9iai5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9wLXJlc2l6ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplU3RhcnQoJGV2ZW50LCBvYmosICd0b3AnKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9iamVjdFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICBvYmplY3Q6IG9ialxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib2JqLnNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3R0b20tcmVzaXplclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25SZXNpemVTdGFydCgkZXZlbnQsIG9iaiwgJ2JvdHRvbScpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZVRlbXBsYXRlQ29tcG9uZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBfb2JqZWN0czogU2NoZWR1bGluZ09iamVjdFtdO1xyXG4gIHB1YmxpYyBsYXlvdXRzOnsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9iamVjdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgb2JqZWN0cyhvYmplY3RzOiBTY2hlZHVsaW5nT2JqZWN0W10pIHtcclxuICAgIHRoaXMuX29iamVjdHMgPSBvYmplY3RzXHJcbiAgICB0aGlzLmxheW91dHMgPSB0aGlzLmNhbGN1bGF0ZUxlZnRBbmRXaWR0aE9mT2JqZWN0cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvYmplY3RzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb247XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBvblJlc2l6ZVN0YXJ0OiBGdW5jdGlvbjtcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG9uU2VsZWN0QmxvY2s6IEZ1bmN0aW9uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdGFydFRpbWVQcm9wOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVuZFRpbWVQcm9wOiBzdHJpbmc7XHJcblxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS10ZW1wbGF0ZVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRhYmxlRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIG9iajogT2JqZWN0LCBvbkRyYWdTdGFydEN1c3RvbTogRnVuY3Rpb24pIHtcclxuICAgIG9uRHJhZ1N0YXJ0Q3VzdG9tPy5jYWxsKG9iaik7XHJcbiAgICBldmVudC5kYXRhVHJhbnNmZXIhLnNldERhdGEoXCJ0ZXh0XCIsIEpTT04uc3RyaW5naWZ5KHsgb2JqIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlTGVmdEFuZFdpZHRoT2ZPYmplY3RzKCk6IHsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdIHtcclxuICAgIGNvbnN0IGxheW91dERhdGE6IHsgbGVmdFBlcmNlbnQ6IG51bWJlcjsgd2lkdGhQZXJjZW50OiBudW1iZXIgfVtdID0gbmV3IEFycmF5KHRoaXMuX29iamVjdHMubGVuZ3RoKTtcclxuXHJcbiAgICAvLyBIZWxwZXI6IGNoZWNrIGlmIHR3byB0aW1lIHJhbmdlcyBvdmVybGFwXHJcbiAgICBjb25zdCBpc092ZXJsYXBwaW5nID0gKHN0YXJ0QTogRGF0ZSwgZW5kQTogRGF0ZSwgc3RhcnRCOiBEYXRlLCBlbmRCOiBEYXRlKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBzdGFydEEgPCBlbmRCICYmIHN0YXJ0QiA8IGVuZEE7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFN0ZXAgMTogYnVpbGQgb3ZlcmxhcCBncm91cHNcclxuICAgIGNvbnN0IG92ZXJsYXBHcm91cHM6IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBwcm9jZXNzZWQgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX29iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHByb2Nlc3NlZC5oYXMoaSkpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgY29uc3QgZ3JvdXA6IG51bWJlcltdID0gW2ldO1xyXG4gICAgICBjb25zdCBvYmpBID0gdGhpcy5fb2JqZWN0c1tpXTtcclxuICAgICAgY29uc3Qgc3RhcnRBID0gbmV3IERhdGUob2JqQS5zdGFydCk7XHJcbiAgICAgIGNvbnN0IGVuZEEgPSBuZXcgRGF0ZShvYmpBLmVuZCk7XHJcblxyXG4gICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCB0aGlzLl9vYmplY3RzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgY29uc3Qgb2JqQiA9IHRoaXMuX29iamVjdHNbal07XHJcbiAgICAgICAgY29uc3Qgc3RhcnRCID0gbmV3IERhdGUob2JqQi5zdGFydCk7XHJcbiAgICAgICAgY29uc3QgZW5kQiA9IG5ldyBEYXRlKG9iakIuZW5kKTtcclxuXHJcbiAgICAgICAgaWYgKGlzT3ZlcmxhcHBpbmcoc3RhcnRBLCBlbmRBLCBzdGFydEIsIGVuZEIpKSB7XHJcbiAgICAgICAgICBncm91cC5wdXNoKGopO1xyXG4gICAgICAgICAgcHJvY2Vzc2VkLmFkZChqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdyb3VwLmZvckVhY2goaW5kZXggPT4gcHJvY2Vzc2VkLmFkZChpbmRleCkpO1xyXG4gICAgICBvdmVybGFwR3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN0ZXAgMjogYXNzaWduIGxheW91dCBwZXIgZ3JvdXBcclxuICAgIG92ZXJsYXBHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IHRvdGFsID0gZ3JvdXAubGVuZ3RoO1xyXG4gICAgICBjb25zdCB3aWR0aCA9IDEwMCAvIHRvdGFsO1xyXG5cclxuICAgICAgZ3JvdXAuZm9yRWFjaCgob2JqZWN0SW5kZXgsIGkpID0+IHtcclxuICAgICAgICBsYXlvdXREYXRhW29iamVjdEluZGV4XSA9IHtcclxuICAgICAgICAgIGxlZnRQZXJjZW50OiBpICogd2lkdGgsXHJcbiAgICAgICAgICB3aWR0aFBlcmNlbnQ6IHdpZHRoXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGF5b3V0RGF0YTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==