igniteui-angular 12.2.4 → 12.2.8

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 (78) hide show
  1. package/bundles/igniteui-angular.umd.js +466 -521
  2. package/bundles/igniteui-angular.umd.js.map +1 -1
  3. package/esm2015/igniteui-angular.js +106 -107
  4. package/esm2015/lib/action-strip/action-strip.component.js +19 -2
  5. package/esm2015/lib/action-strip/grid-actions/grid-action-button.component.js +2 -2
  6. package/esm2015/lib/action-strip/grid-actions/grid-editing-actions.component.js +4 -4
  7. package/esm2015/lib/action-strip/grid-actions/grid-pinning-actions.component.js +5 -5
  8. package/esm2015/lib/banner/banner.component.js +1 -1
  9. package/esm2015/lib/core/i18n/action-strip-resources.js +4 -0
  10. package/esm2015/lib/core/i18n/resources.js +5 -3
  11. package/esm2015/lib/core/utils.js +24 -2
  12. package/esm2015/lib/data-operations/data-clone-strategy.js +7 -0
  13. package/esm2015/lib/data-operations/data-util.js +8 -8
  14. package/esm2015/lib/data-operations/grouping-strategy.js +1 -1
  15. package/esm2015/lib/directives/radio/radio-group.directive.js +5 -13
  16. package/esm2015/lib/drop-down/drop-down-item.base.js +1 -5
  17. package/esm2015/lib/grids/api.service.js +2 -2
  18. package/esm2015/lib/grids/cell.component.js +1 -17
  19. package/esm2015/lib/grids/column-actions/column-actions.component.js +3 -7
  20. package/esm2015/lib/grids/common/crud.service.js +4 -3
  21. package/esm2015/lib/grids/common/grid.interface.js +1 -1
  22. package/esm2015/lib/grids/common/pipes.js +2 -2
  23. package/esm2015/lib/grids/common/row.interface.js +1 -1
  24. package/esm2015/lib/grids/grid/grid.component.js +21 -8
  25. package/esm2015/lib/grids/grid/grid.pipes.js +3 -3
  26. package/esm2015/lib/grids/grid-base.directive.js +82 -118
  27. package/esm2015/lib/grids/grid-public-row.js +18 -16
  28. package/esm2015/lib/grids/headers/grid-header-row.component.js +2 -2
  29. package/esm2015/lib/grids/hierarchical-grid/hierarchical-grid.component.js +3 -7
  30. package/esm2015/lib/grids/row.directive.js +2 -3
  31. package/esm2015/lib/grids/summaries/grid-summary.service.js +2 -2
  32. package/esm2015/lib/grids/tree-grid/tree-grid.component.js +3 -7
  33. package/esm2015/lib/grids/tree-grid/tree-grid.pipes.js +3 -3
  34. package/esm2015/lib/icon/icon.component.js +1 -6
  35. package/esm2015/lib/services/exporter-common/base-export-service.js +2 -2
  36. package/esm2015/lib/services/overlay/overlay.js +2 -1
  37. package/esm2015/lib/services/overlay/utilities.js +1 -1
  38. package/esm2015/lib/services/transaction/base-transaction.js +17 -4
  39. package/esm2015/lib/services/transaction/igx-hierarchical-transaction.js +3 -4
  40. package/esm2015/lib/services/transaction/igx-transaction.js +3 -3
  41. package/esm2015/lib/services/transaction/transaction-factory.service.js +1 -2
  42. package/esm2015/lib/services/transaction/transaction.js +1 -1
  43. package/esm2015/lib/toast/toast.component.js +43 -21
  44. package/esm2015/public_api.js +2 -1
  45. package/fesm2015/igniteui-angular.js +265 -330
  46. package/fesm2015/igniteui-angular.js.map +1 -1
  47. package/igniteui-angular.d.ts +105 -106
  48. package/igniteui-angular.metadata.json +1 -1
  49. package/lib/action-strip/action-strip.component.d.ts +10 -0
  50. package/lib/banner/banner.component.d.ts +1 -2
  51. package/lib/core/i18n/action-strip-resources.d.ts +4 -0
  52. package/lib/core/i18n/resources.d.ts +3 -1
  53. package/lib/core/utils.d.ts +12 -0
  54. package/lib/data-operations/data-clone-strategy.d.ts +6 -0
  55. package/lib/data-operations/data-util.d.ts +5 -3
  56. package/lib/data-operations/grouping-strategy.d.ts +5 -2
  57. package/lib/directives/radio/radio-group.directive.d.ts +4 -4
  58. package/lib/grids/cell.component.d.ts +0 -9
  59. package/lib/grids/column-actions/column-actions.component.d.ts +2 -1
  60. package/lib/grids/common/grid.interface.d.ts +2 -0
  61. package/lib/grids/common/row.interface.d.ts +1 -0
  62. package/lib/grids/grid/grid.component.d.ts +19 -1
  63. package/lib/grids/grid/grid.pipes.d.ts +2 -1
  64. package/lib/grids/grid-base.directive.d.ts +66 -37
  65. package/lib/grids/grid-public-row.d.ts +10 -3
  66. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
  67. package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -1
  68. package/lib/icon/icon.component.d.ts +2 -2
  69. package/lib/services/overlay/utilities.d.ts +2 -1
  70. package/lib/services/transaction/base-transaction.d.ts +7 -0
  71. package/lib/services/transaction/transaction.d.ts +5 -0
  72. package/lib/toast/toast.component.d.ts +10 -4
  73. package/migrations/common/filterSourceDirs.d.ts +2 -2
  74. package/migrations/common/filterSourceDirs.js +2 -2
  75. package/package.json +1 -1
  76. package/public_api.d.ts +2 -0
  77. package/esm2015/lib/core/deprecateDecorators.js +0 -101
  78. package/lib/core/deprecateDecorators.d.ts +0 -20
@@ -179,7 +179,7 @@ export class IgxGridTransactionPipe {
179
179
  transform(collection, _id, _pipeTrigger) {
180
180
  const grid = this.gridAPI.grid;
181
181
  if (grid.transactions.enabled) {
182
- const result = DataUtil.mergeTransactions(cloneArray(collection), grid.transactions.getAggregatedChanges(true), grid.primaryKey);
182
+ const result = DataUtil.mergeTransactions(cloneArray(collection), grid.transactions.getAggregatedChanges(true), grid.primaryKey, grid.dataCloneStrategy);
183
183
  return result;
184
184
  }
185
185
  return collection;
@@ -435,4 +435,4 @@ export class IgxHeaderGroupStylePipe {
435
435
  IgxHeaderGroupStylePipe.decorators = [
436
436
  { type: Pipe, args: [{ name: 'igxHeaderGroupStyle' },] }
437
437
  ];
438
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL3BpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBVWhEOzs7R0FHRztBQUlILE1BQU0sT0FBTywyQkFBMkI7SUFFN0IsU0FBUyxDQUFDLFVBQW1CLEVBQUUsQ0FBTSxFQUFFLElBQVMsRUFBRSxLQUFhLEVBQUUsS0FBYSxFQUFFLEVBQVU7UUFDN0YsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLGVBQWUsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDakQsZUFBZSxDQUFDLElBQUksRUFBRSxL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QixFQUFFOztBQVNyQyxNQUFNLE9BQU8sdUJBQXVCO0lBRXpCLFNBQVMsQ0FBQyxNQUErQixFQUFFLE1BQTBCLEVBQUUsQ0FBUztRQUNuRixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUVELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDN0Q7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7OztZQWhCSixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyaWRCYXNlQVBJU2VydmljZSB9IGZyb20gJy4uL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IElneEdyaWRCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZ3JpZC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRhVXRpbCB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9kYXRhLXV0aWwnO1xuaW1wb3J0IHsgY2xvbmVBcnJheSwgcmVzb2x2ZU5lc3RlZFBhdGggfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEdyaWRUeXBlIH0gZnJvbSAnLi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29sdW1uRGlzcGxheU9yZGVyIH0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5BY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1uLWFjdGlvbnMvY29sdW1uLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IElneEFkZFJvdyB9IGZyb20gJy4vY3J1ZC5zZXJ2aWNlJztcbmltcG9ydCB7IElneEdyaWRSb3cgfSBmcm9tICcuLi9ncmlkLXB1YmxpYy1yb3cnO1xuaW1wb3J0IHsgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQgfSBmcm9tICcuLi90cmVlLWdyaWQvdHJlZS1ncmlkLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4R3JpZFJvd0NvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQvZ3JpZC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IElneEhpZXJhcmNoaWNhbFJvd0NvbXBvbmVudCB9IGZyb20gJy4uL2hpZXJhcmNoaWNhbC1ncmlkL2hpZXJhcmNoaWNhbC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IElneFN1bW1hcnlPcGVyYW5kLCBJZ3hTdW1tYXJ5UmVzdWx0IH0gZnJvbSAnLi4vc3VtbWFyaWVzL2dyaWQtc3VtbWFyeSc7XG5cbmludGVyZmFjZSBDU1NQcm9wIHtcbiAgICBbcHJvcDogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneENlbGxTdHlsZUNsYXNzZXMnXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRDZWxsU3R5bGVDbGFzc2VzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShjc3NDbGFzc2VzOiBDU1NQcm9wLCBfOiBhbnksIGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgX186IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGlmICghY3NzQ2xhc3Nlcykge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBjc3NDbGFzcyBvZiBPYmplY3Qua2V5cyhjc3NDbGFzc2VzKSkge1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2tPclZhbHVlID0gY3NzQ2xhc3Nlc1tjc3NDbGFzc107XG4gICAgICAgICAgICBjb25zdCBhcHBseSA9IHR5cGVvZiBjYWxsYmFja09yVmFsdWUgPT09ICdmdW5jdGlvbicgP1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrT3JWYWx1ZShkYXRhLCBmaWVsZCwgcmVzb2x2ZU5lc3RlZFBhdGgoZGF0YSwgZmllbGQpLCBpbmRleCkgOiBjYWxsYmFja09yVmFsdWU7XG4gICAgICAgICAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChjc3NDbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4Q2VsbFN0eWxlcydcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZENlbGxTdHlsZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHN0eWxlczogQ1NTUHJvcCwgXzogYW55LCBkYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIF9fOiBudW1iZXIpOiBDU1NQcm9wIHtcbiAgICAgICAgY29uc3QgY3NzID0ge307XG4gICAgICAgIGlmICghc3R5bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY3NzO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHN0eWxlc1twcm9wXTtcbiAgICAgICAgICAgIGNzc1twcm9wXSA9IHR5cGVvZiByZXMgPT09ICdmdW5jdGlvbicgPyByZXMoZGF0YSwgZmllbGQsIHJlc29sdmVOZXN0ZWRQYXRoKGRhdGEsIGZpZWxkKSwgaW5kZXgpIDogcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNzcztcbiAgICB9XG59XG5cbnR5cGUgX1Jvd1R5cGUgPSBJZ3hHcmlkUm93Q29tcG9uZW50IHwgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQgfCBJZ3hIaWVyYXJjaGljYWxSb3dDb21wb25lbnQ7XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHsgbmFtZTogJ2lneEdyaWRSb3dDbGFzc2VzJyB9KVxuZXhwb3J0IGNsYXNzIElneEdyaWRSb3dDbGFzc2VzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyByb3c6IElneEdyaWRSb3c7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZURpcmVjdGl2ZSAmIEdyaWRUeXBlPikge1xuICAgICAgICB0aGlzLnJvdyA9IG5ldyBJZ3hHcmlkUm93KHRoaXMuZ3JpZEFQSS5ncmlkIGFzIGFueSwgLTEsIHt9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgICAgICBjc3NDbGFzc2VzOiBDU1NQcm9wLFxuICAgICAgICByb3c6IF9Sb3dUeXBlLFxuICAgICAgICBlZGl0TW9kZTogYm9vbGVhbixcbiAgICAgICAgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gICAgICAgIGRpcnR5OiBib29sZWFuLFxuICAgICAgICBkZWxldGVkOiBib29sZWFuLFxuICAgICAgICBkcmFnZ2luZzogYm9vbGVhbixcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgICAgbXJsOiBib29sZWFuLFxuICAgICAgICBmaWx0ZXJlZE91dDogYm9vbGVhbixcbiAgICAgICAgXzogbnVtYmVyXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQoWydpZ3gtZ3JpZF9fdHInLCBpbmRleCAlIDIgPyByb3cuZ3JpZC5ldmVuUm93Q1NTIDogcm93LmdyaWQub2RkUm93Q1NTXSk7XG4gICAgICAgIGNvbnN0IG1hcHBpbmcgPSBbXG4gICAgICAgICAgICBbc2VsZWN0ZWQsICdpZ3gtZ3JpZF9fdHItLXNlbGVjdGVkJ10sXG4gICAgICAgICAgICBbZWRpdE1vZGUsICdpZ3gtZ3JpZF9fdHItLWVkaXQnXSxcbiAgICAgICAgICAgIFtkaXJ0eSwgJ2lneC1ncmlkX190ci0tZWRpdGVkJ10sXG4gICAgICAgICAgICBbZGVsZXRlZCwgJ2lneC1ncmlkX190ci0tZGVsZXRlZCddLFxuICAgICAgICAgICAgW2RyYWdnaW5nLCAnaWd4LWdyaWRfX3RyLS1kcmFnJ10sXG4gICAgICAgICAgICBbbXJsLCAnaWd4LWdyaWRfX3RyLS1tcmwnXSxcbiAgICAgICAgICAgIC8vIFRyZWUgZ3JpZCBvbmx5XG4gICAgICAgICAgICBbZmlsdGVyZWRPdXQsICdpZ3gtZ3JpZF9fdHItLWZpbHRlcmVkJ11cbiAgICAgICAgXTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtzdGF0ZSwgX2NsYXNzXSBvZiBtYXBwaW5nKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuYWRkKF9jbGFzcyBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjc3NDbGFzcyBvZiBPYmplY3Qua2V5cyhjc3NDbGFzc2VzID8/IHt9KSkge1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2tPclZhbHVlID0gY3NzQ2xhc3Nlc1tjc3NDbGFzc107XG4gICAgICAgICAgICB0aGlzLnJvdy5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgKHRoaXMucm93IGFzIGFueSkuX2RhdGEgPSByb3cucm93RGF0YTtcbiAgICAgICAgICAgIGNvbnN0IGFwcGx5ID0gdHlwZW9mIGNhbGxiYWNrT3JWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGNhbGxiYWNrT3JWYWx1ZSh0aGlzLnJvdykgOiBjYWxsYmFja09yVmFsdWU7XG4gICAgICAgICAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGNzc0NsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoeyBuYW1lOiAnaWd4R3JpZFJvd1N0eWxlcycgfSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkUm93U3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBncmlkQVBJOiBHcmlkQmFzZUFQSVNlcnZpY2U8SWd4R3JpZEJhc2VEaXJlY3RpdmUgJiBHcmlkVHlwZT4pIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShzdHlsZXM6IENTU1Byb3AsIHJvd0RhdGE6IGFueSwgaW5kZXg6IG51bWJlciwgX186IG51bWJlcik6IENTU1Byb3Age1xuICAgICAgICBjb25zdCBjc3MgPSB7fTtcbiAgICAgICAgaWYgKCFzdHlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjc3M7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNiID0gc3R5bGVzW3Byb3BdO1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gbmV3IElneEdyaWRSb3coKHRoaXMuZ3JpZEFQSS5ncmlkIGFzIGFueSksIGluZGV4LCByb3dEYXRhKTtcbiAgICAgICAgICAgIGNzc1twcm9wXSA9IHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJyA/IGNiKHJvdykgOiBjYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3NzO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hOb3RHcm91cGVkJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkTm90R3JvdXBlZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IGFueVtdKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uY29sdW1uR3JvdXApO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hUb3BMZXZlbCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFRvcExldmVsQ29sdW1ucyBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5maWx0ZXIoaXRlbSA9PiBpdGVtLmxldmVsID09PSAwKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZmlsdGVyQ29uZGl0aW9uJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRGaWx0ZXJDb25kaXRpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUuc3BsaXQoLyg/PVtBLVpdKS8pLmpvaW4oJyAnKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZFRyYW5zYWN0aW9uJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRUcmFuc2FjdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JpZEFQSTogR3JpZEJhc2VBUElTZXJ2aWNlPElneEdyaWRCYXNlRGlyZWN0aXZlICYgR3JpZFR5cGU+KSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIF9pZDogc3RyaW5nLCBfcGlwZVRyaWdnZXI6IG51bWJlcikge1xuICAgICAgICBjb25zdCBncmlkOiBJZ3hHcmlkQmFzZURpcmVjdGl2ZSA9IHRoaXMuZ3JpZEFQSS5ncmlkO1xuXG4gICAgICAgIGlmIChncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBEYXRhVXRpbC5tZXJnZVRyYW5zYWN0aW9ucyhcbiAgICAgICAgICAgICAgICBjbG9uZUFycmF5KGNvbGxlY3Rpb24pLFxuICAgICAgICAgICAgICAgIGdyaWQudHJhbnNhY3Rpb25zLmdldEFnZ3JlZ2F0ZWRDaGFuZ2VzKHRydWUpLFxuICAgICAgICAgICAgICAgIGdyaWQucHJpbWFyeUtleSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdwYWdpbmF0b3JPcHRpb25zJyxcbiAgICBwdXJlOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkUGFnaW5hdG9yT3B0aW9uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlczogQXJyYXk8bnVtYmVyPikge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KFsuLi52YWx1ZXNdKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICd2aXNpYmxlQ29sdW1ucycsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hIYXNWaXNpYmxlQ29sdW1uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlczogYW55W10sIGhhc1Zpc2libGVDb2x1bW5zKSB7XG4gICAgICAgIGlmICghKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzVmlzaWJsZUNvbHVtbnMgPyB2YWx1ZXMgOiBbXTtcbiAgICB9XG5cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZFJvd1Bpbm5pbmcnLFxuICAgIHB1cmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvd1Bpbm5pbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZURpcmVjdGl2ZSAmIEdyaWRUeXBlPikgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBpZDogc3RyaW5nLCBpc1Bpbm5lZCA9IGZhbHNlLCBfcGlwZVRyaWdnZXI6IG51bWJlcikge1xuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkQVBJLmdyaWQ7XG5cbiAgICAgICAgaWYgKGdyaWQuaGFzUGlubmVkUmVjb3JkcyAmJiBpc1Bpbm5lZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY29sbGVjdGlvbi5maWx0ZXIocmVjID0+ICFncmlkLmlzU3VtbWFyeVJvdyhyZWMpICYmIGdyaWQuaXNSZWNvcmRQaW5uZWQocmVjKSk7XG4gICAgICAgICAgICByZXN1bHQuc29ydCgocmVjMSwgcmVjMikgPT4gZ3JpZC5nZXRJbml0aWFsUGlubmVkSW5kZXgocmVjMSkgLSBncmlkLmdldEluaXRpYWxQaW5uZWRJbmRleChyZWMyKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JpZC51bnBpbm5lZFJlY29yZHMgPSBjb2xsZWN0aW9uO1xuICAgICAgICBpZiAoIWdyaWQuaGFzUGlubmVkUmVjb3Jkcykge1xuICAgICAgICAgICAgZ3JpZC5waW5uZWRSZWNvcmRzID0gW107XG4gICAgICAgICAgICByZXR1cm4gaXNQaW5uZWQgPyBbXSA6IGNvbGxlY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5tYXAoKHJlYykgPT4gIWdyaWQuaXNTdW1tYXJ5Um93KHJlYykgJiZcbiAgICAgICAgICAgIGdyaWQuaXNSZWNvcmRQaW5uZWQocmVjKSA/IHsgcmVjb3JkUmVmOiByZWMsIGdob3N0UmVjb3JkOiB0cnVlIH0gOiByZWMpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdjb2x1bW5BY3Rpb25FbmFibGVkJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENvbHVtbkFjdGlvbkVuYWJsZWRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElneENvbHVtbkFjdGlvbnNDb21wb25lbnQpIHByb3RlY3RlZCBjb2x1bW5BY3Rpb25zOiBJZ3hDb2x1bW5BY3Rpb25zQ29tcG9uZW50KSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgICAgIGNvbGxlY3Rpb246IElneENvbHVtbkNvbXBvbmVudFtdLFxuICAgICAgICBhY3Rpb25GaWx0ZXI6ICh2YWx1ZTogSWd4Q29sdW1uQ29tcG9uZW50LCBpbmRleDogbnVtYmVyLCBhcnJheTogSWd4Q29sdW1uQ29tcG9uZW50W10pID0+IGJvb2xlYW4sXG4gICAgICAgIF9waXBlVHJpZ2dlcjogbnVtYmVyXG4gICAgKTogSWd4Q29sdW1uQ29tcG9uZW50W10ge1xuICAgICAgICBpZiAoIWNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb3B5ID0gY29sbGVjdGlvbi5zbGljZSgwKTtcbiAgICAgICAgaWYgKGNvcHkubGVuZ3RoICYmIGNvcHlbMF0uZ3JpZC5oYXNDb2x1bW5MYXlvdXRzKSB7XG4gICAgICAgICAgICBjb3B5ID0gY29weS5maWx0ZXIoYyA9PiBjLmNvbHVtbkxheW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvbkZpbHRlcikge1xuICAgICAgICAgICAgY29weSA9IGNvcHkuZmlsdGVyKGFjdGlvbkZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJlc2VydmUgdGhlIGFjdGlvbmFibGUgY29sbGVjdGlvbiBmb3IgdXNlIGluIHRoZSBjb21wb25lbnRcbiAgICAgICAgdGhpcy5jb2x1bW5BY3Rpb25zLmFjdGlvbmFibGVDb2x1bW5zID0gY29weTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbHRlckFjdGlvbkNvbHVtbnMnLFxuICAgIHB1cmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4RmlsdGVyQWN0aW9uQ29sdW1uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSWd4Q29sdW1uQWN0aW9uc0NvbXBvbmVudCkgcHJvdGVjdGVkIGNvbHVtbkFjdGlvbnM6IElneENvbHVtbkFjdGlvbnNDb21wb25lbnQpIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBJZ3hDb2x1bW5Db21wb25lbnRbXSwgZmlsdGVyQ3JpdGVyaWE6IHN0cmluZywgX3BpcGVUcmlnZ2VyOiBudW1iZXIpOiBJZ3hDb2x1bW5Db21wb25lbnRbXSB7XG4gICAgICAgIGlmICghY29sbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvcHkgPSBjb2xsZWN0aW9uLnNsaWNlKDApO1xuICAgICAgICBpZiAoZmlsdGVyQ3JpdGVyaWEgJiYgZmlsdGVyQ3JpdGVyaWEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRnVuYyA9IChjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyVGV4dCA9IGMuaGVhZGVyIHx8IGMuZmllbGQ7XG4gICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXJUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlclRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlckNyaXRlcmlhLnRvTG9jYWxlTG93ZXJDYXNlKCkpID49IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgKGMuY2hpbGRyZW4/LnNvbWUoZmlsdGVyRnVuYykgPz8gZmFsc2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvcHkgPSBjb2xsZWN0aW9uLmZpbHRlcihmaWx0ZXJGdW5jKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgZmlsdGVyZWQgY29sbGVjdGlvbiBmb3IgdXNlIGluIHRoZSBjb21wb25lbnRcbiAgICAgICAgdGhpcy5jb2x1bW5BY3Rpb25zLmZpbHRlcmVkQ29sdW1ucyA9IGNvcHk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdzb3J0QWN0aW9uQ29sdW1ucycsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTb3J0QWN0aW9uQ29sdW1uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogSWd4Q29sdW1uQ29tcG9uZW50W10sIGRpc3BsYXlPcmRlcjogQ29sdW1uRGlzcGxheU9yZGVyLCBfcGlwZVRyaWdnZXI6IG51bWJlcik6IElneENvbHVtbkNvbXBvbmVudFtdIHtcbiAgICAgICAgaWYgKGRpc3BsYXlPcmRlciA9PT0gQ29sdW1uRGlzcGxheU9yZGVyLkFscGhhYmV0aWNhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uc29ydCgoYSwgYikgPT4gKGEuaGVhZGVyIHx8IGEuZmllbGQpLmxvY2FsZUNvbXBhcmUoYi5oZWFkZXIgfHwgYi5maWVsZCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnZGF0YU1hcHBlcicgfSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRGF0YU1hcHBlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oZGF0YTogYW55W10sIGZpZWxkOiBzdHJpbmcsIF86IG51bWJlciwgdmFsOiBhbnksIGlzTmVzdGVkUGF0aDogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gaXNOZXN0ZWRQYXRoID8gcmVzb2x2ZU5lc3RlZFBhdGgoZGF0YSwgZmllbGQpIDogdmFsO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnaWd4U3RyaW5nUmVwbGFjZScgfSlcbmV4cG9ydCBjbGFzcyBJZ3hTdHJpbmdSZXBsYWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBzZWFyY2g6IHN0cmluZyB8IFJlZ0V4cCwgcmVwbGFjZW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHNlYXJjaCwgcmVwbGFjZW1lbnQpO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAndHJhbnNhY3Rpb25TdGF0ZScgfSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkVHJhbnNhY3Rpb25TdGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0ocm93X2lkOiBhbnksIGZpZWxkOiBzdHJpbmcsIHJvd0VkaXRhYmxlOiBib29sZWFuLCB0cmFuc2FjdGlvbnM6IGFueSwgXzogYW55LCBfXzogYW55LCBfX186IGFueSkge1xuICAgICAgICBpZiAocm93RWRpdGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvd0N1cnJlbnRTdGF0ZSA9IHRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkVmFsdWUocm93X2lkLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAocm93Q3VycmVudFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlTmVzdGVkUGF0aChyb3dDdXJyZW50U3RhdGUsIGZpZWxkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25zLmdldFN0YXRlKHJvd19pZCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVOZXN0ZWRQYXRoKHRyYW5zYWN0aW9uPy52YWx1ZSA/PyB7fSwgZmllbGQpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uICYmIHRyYW5zYWN0aW9uLnZhbHVlICYmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCB8fCB2YWx1ZSA9PT0gZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdjb2x1bW5Gb3JtYXR0ZXInIH0pXG5leHBvcnQgY2xhc3MgSWd4Q29sdW1uRm9ybWF0dGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBmb3JtYXR0ZXI6ICh2OiBhbnksIGRhdGE6IGFueSkgPT4gYW55LCByb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlcih2YWx1ZSwgcm93RGF0YSk7XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdzdW1tYXJ5Rm9ybWF0dGVyJyB9KVxuZXhwb3J0IGNsYXNzIElneFN1bW1hcnlGb3JtYXR0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHN1bW1hcnlSZXN1bHQ6IElneFN1bW1hcnlSZXN1bHQsIHN1bW1hcnlPcGVyYW5kOiBJZ3hTdW1tYXJ5T3BlcmFuZCxcbiAgICAgICAgc3VtbWFyeUZvcm1hdHRlcjogKHM6IElneFN1bW1hcnlSZXN1bHQsIG86IElneFN1bW1hcnlPcGVyYW5kKSA9PiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHN1bW1hcnlGb3JtYXR0ZXIoc3VtbWFyeVJlc3VsdCwgc3VtbWFyeU9wZXJhbmQpO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnZ3JpZEFkZFJvdycgfSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQWRkUm93UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBncmlkQVBJOiBHcmlkQmFzZUFQSVNlcnZpY2U8SWd4R3JpZEJhc2VEaXJlY3RpdmUgJiBHcmlkVHlwZT4pIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBhbnksIGlzUGlubmVkID0gZmFsc2UsIF9waXBlVHJpZ2dlcjogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcbiAgICAgICAgaWYgKCFncmlkLnJvd0VkaXRhYmxlIHx8ICFncmlkLmNydWRTZXJ2aWNlLnJvdyB8fCBncmlkLmNydWRTZXJ2aWNlLnJvdy5nZXRDbGFzc05hbWUoKSAhPT0gSWd4QWRkUm93Lm5hbWUgfHxcbiAgICAgICAgICAgICFncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuYWRkUm93UGFyZW50IHx8IGlzUGlubmVkICE9PSBncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuYWRkUm93UGFyZW50LmlzUGlubmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb3B5ID0gY29sbGVjdGlvbi5zbGljZSgwKTtcbiAgICAgICAgY29uc3QgcmVjID0gKGdyaWQuY3J1ZFNlcnZpY2Uucm93IGFzIElneEFkZFJvdykucmVjb3JkUmVmO1xuICAgICAgICBjb3B5LnNwbGljZShncmlkLmNydWRTZXJ2aWNlLnJvdy5pbmRleCwgMCwgcmVjKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdpZ3hIZWFkZXJHcm91cFdpZHRoJyB9KVxuZXhwb3J0IGNsYXNzIElneEhlYWRlckdyb3VwV2lkdGhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHdpZHRoOiBhbnksIG1pbldpZHRoOiBhbnksIGhhc0xheW91dDogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gaGFzTGF5b3V0ID8gJycgOiBgJHtNYXRoLm1heChwYXJzZUZsb2F0KHdpZHRoKSwgbWluV2lkdGgpfXB4YDtcbiAgICB9XG59XG5cbkBQaXBlKHsgbmFtZTogJ2lneEhlYWRlckdyb3VwU3R5bGUnIH0pXG5leHBvcnQgY2xhc3MgSWd4SGVhZGVyR3JvdXBTdHlsZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oc3R5bGVzOiB7IFtwcm9wOiBzdHJpbmddOiBhbnkgfSwgY29sdW1uOiBJZ3hDb2x1bW5Db21wb25lbnQsIF86IG51bWJlcik6IHsgW3Byb3A6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgY29uc3QgY3NzID0ge307XG5cbiAgICAgICAgaWYgKCFzdHlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjc3M7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMoc3R5bGVzKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gc3R5bGVzW3Byb3BdO1xuICAgICAgICAgICAgY3NzW3Byb3BdID0gdHlwZW9mIHJlcyA9PT0gJ2Z1bmN0aW9uJyA/IHJlcyhjb2x1bW4pIDogcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNzcztcbiAgICB9XG59XG4iXX0=
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL3BpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBVWhEOzs7R0FHRztBQUlILE1BQU0sT0FBTywyQkFBMkI7SUFFN0IsU0FBUyxDQUFDLFVBQW1CLEVBQUUsQ0FBTSxFQUFFLElBQVMsRUFBRSxLQUFhLEVBQUUsS0FBYSxFQUFFLEVBQVU7UUFDN0YsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLGVBQWUsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDakQsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDMUYsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN6QjtTQUNKO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7OztZQXRCSixJQUFJLFNBQUM7Z0JBQ0YsSUFBSSxFQUFFLHFCQUFxQjthQUM5Qjs7QUF1QkQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUV2QixTQUFTLENBQUMsTUFBZSxFQUFFLENBQU0sRUFBRSxJQUFTLEVBQUUsS0FBYSxFQUFFLEtBQWEsRUFBRSxFQUFVO1FBQ3pGLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLEdBQUcsQ0FBQztTQUNkO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUN6RztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7O1lBakJKLElBQUksU0FBQztnQkFDRixJQUFJLEVBQUUsZUFBZTthQUN4Qjs7QUFvQkQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUc5QixZQUFvQixPQUE0RDtRQUE1RCxZQUFPLEdBQVAsT0FBTyxDQUFxRDtRQUM1RSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxTQUFTLENBQ1osVUFBbUIsRUFDbkIsR0FBYSxFQUNiLFFBQWlCLEVBQ2pCLFFBQWlCLEVBQ2pCLEtBQWMsRUFDZCxPQUFnQixFQUNoQixRQUFpQixFQUNqQixLQUFhLEVBQ2IsR0FBWSxFQUNaLFdBQW9CLEVBQ3BCLENBQVM7UUFFVCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQy9GLE1BQU0sT0FBTyxHQUFHO1lBQ1osQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUM7WUFDcEMsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUM7WUFDaEMsQ0FBQyxLQUFLLEVBQUUsc0JBQXNCLENBQUM7WUFDL0IsQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUM7WUFDbEMsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUM7WUFDaEMsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7WUFDMUIsaUJBQWlCO1lBQ2pCLENBQUMsV0FBVyxFQUFFLHdCQUF3QixDQUFDO1NBQzFDLENBQUM7UUFFRixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFO1lBQ25DLElBQUksS0FBSyxFQUFFO2dCQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO2FBQ2hDO1NBQ0o7UUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxhQUFWLFVBQVUsY0FBVixVQUFVLEdBQUksRUFBRSxDQUFDLEVBQUU7WUFDbEQsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBVyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLE9BQU8sZUFBZSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBQ2xHLElBQUksS0FBSyxFQUFFO2dCQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDeEI7U0FDSjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OztZQWpESixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7OztZQTlFMUIsa0JBQWtCOztBQWtJM0I7OztHQUdHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixZQUFvQixPQUE0RDtRQUE1RCxZQUFPLEdBQVAsT0FBTyxDQUFxRDtJQUFJLENBQUM7SUFFOUUsU0FBUyxDQUFDLE1BQWUsRUFBRSxPQUFZLEVBQUUsS0FBYSxFQUFFLEVBQVU7UUFDckUsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sR0FBRyxDQUFDO1NBQ2Q7UUFDRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBWSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN2RDtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7O1lBaEJKLElBQUksU0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTs7O1lBdEl6QixrQkFBa0I7O0FBeUozQjs7O0dBR0c7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBRXZCLFNBQVMsQ0FBQyxLQUFZO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7OztZQVBKLElBQUksU0FBQztnQkFDRixJQUFJLEVBQUUsZUFBZTthQUN4Qjs7QUFRRDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBRXhCLFNBQVMsQ0FBQyxLQUFZO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7O1lBUEosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxhQUFhO2FBQ3RCOztBQVFEOzs7R0FHRztBQUtILE1BQU0sT0FBTywwQkFBMEI7SUFFNUIsU0FBUyxDQUFDLEtBQWE7UUFDMUIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs7WUFSSixJQUFJLFNBQUM7Z0JBQ0YsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsSUFBSSxFQUFFLElBQUk7YUFDYjs7QUFRRDs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sc0JBQXNCO0lBRS9CLFlBQW9CLE9BQTREO1FBQTVELFlBQU8sR0FBUCxPQUFPLENBQXFEO0lBQUksQ0FBQztJQUU5RSxTQUFTLENBQUMsVUFBaUIsRUFBRSxHQUFXLEVBQUUsWUFBb0I7UUFDakUsTUFBTSxJQUFJLEdBQXlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBRXJELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDM0IsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUNyQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQzVDLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUIsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDOzs7WUFwQkosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJO2FBQ2I7OztZQTNNUSxrQkFBa0I7O0FBK04zQjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sMkJBQTJCO0lBQzdCLFNBQVMsQ0FBQyxNQUFxQjtRQUNsQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7O1lBUEosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLElBQUksRUFBRSxJQUFJO2FBQ2I7O0FBT0Q7OztHQUdHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixTQUFTLENBQUMsTUFBYSxFQUFFLGlCQUFpQjtRQUM3QyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVCLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7O1lBVkosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLElBQUksRUFBRSxJQUFJO2FBQ2I7O0FBV0Q7O0dBRUc7QUFLSCxNQUFNLE9BQU8scUJBQXFCO0lBRTlCLFlBQW9CLE9BQTREO1FBQTVELFlBQU8sR0FBUCxPQUFPLENBQXFEO0lBQUksQ0FBQztJQUU5RSxTQUFTLENBQUMsVUFBaUIsRUFBRSxFQUFVLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxZQUFvQjtRQUNsRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUUvQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLEVBQUU7WUFDbkMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0YsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNqRyxPQUFPLE1BQU0sQ0FBQztTQUNqQjtRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1NBQ3JDO1FBRUQsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7OztZQXpCSixJQUFJLFNBQUM7Z0JBQ0YsSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsSUFBSSxFQUFFLElBQUk7YUFDYjs7O1lBclFRLGtCQUFrQjs7QUFrUzNCLE1BQU0sT0FBTywwQkFBMEI7SUFFbkMsWUFBeUQsYUFBd0M7UUFBeEMsa0JBQWEsR0FBYixhQUFhLENBQTJCO0lBQUksQ0FBQztJQUUvRixTQUFTLENBQ1osVUFBZ0MsRUFDaEMsWUFBZ0csRUFDaEcsWUFBb0I7UUFFcEIsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLE9BQU8sVUFBVSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM5QyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksWUFBWSxFQUFFO1lBQ2QsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7UUFDRCw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7O1lBMUJKLElBQUksU0FBQztnQkFDRixJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixJQUFJLEVBQUUsSUFBSTthQUNiOzs7WUExUlEseUJBQXlCLHVCQTZSakIsTUFBTSxTQUFDLHlCQUF5Qjs7QUEyQmpELE1BQU0sT0FBTywwQkFBMEI7SUFFbkMsWUFBeUQsYUFBd0M7UUFBeEMsa0JBQWEsR0FBYixhQUFhLENBQTJCO0lBQUksQ0FBQztJQUUvRixTQUFTLENBQUMsVUFBZ0MsRUFBRSxjQUFzQixFQUFFLFlBQW9CO1FBQzNGLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixPQUFPLFVBQVUsQ0FBQztTQUNyQjtRQUNELElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTs7Z0JBQ3JCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDYixPQUFPLEtBQUssQ0FBQztpQkFDaEI7Z0JBQ0QsT0FBTyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDO29CQUNsRixDQUFDLE1BQUEsTUFBQSxDQUFDLENBQUMsUUFBUSwwQ0FBRSxJQUFJLENBQUMsVUFBVSxDQUFDLG1DQUFJLEtBQUssQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQztZQUNGLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsNERBQTREO1FBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzs7WUEzQkosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2FBQ2I7OztZQXZUUSx5QkFBeUIsdUJBMFRqQixNQUFNLFNBQUMseUJBQXlCOztBQTRCakQsTUFBTSxPQUFPLHdCQUF3QjtJQUUxQixTQUFTLENBQUMsVUFBZ0MsRUFBRSxZQUFnQyxFQUFFLFlBQW9CO1FBQ3JHLElBQUksWUFBWSxLQUFLLGtCQUFrQixDQUFDLFlBQVksRUFBRTtZQUNsRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzlGO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQzs7O1lBWEosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLElBQUksRUFBRSxJQUFJO2FBQ2I7O0FBWUQsTUFBTSxPQUFPLHFCQUFxQjtJQUV2QixTQUFTLENBQUMsSUFBVyxFQUFFLEtBQWEsRUFBRSxDQUFTLEVBQUUsR0FBUSxFQUFFLFlBQXFCO1FBQ25GLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMvRCxDQUFDOzs7WUFMSixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFOztBQVM1QixNQUFNLE9BQU8sb0JBQW9CO0lBRXRCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsTUFBdUIsRUFBRSxXQUFtQjtRQUN4RSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OztZQUxKLElBQUksU0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTs7QUFTbEMsTUFBTSxPQUFPLDJCQUEyQjtJQUU3QixTQUFTLENBQUMsTUFBVyxFQUFFLEtBQWEsRUFBRSxXQUFvQixFQUFFLFlBQWlCLEVBQUUsQ0FBTSxFQUFFLEVBQU8sRUFBRSxHQUFROztRQUMzRyxJQUFJLFdBQVcsRUFBRTtZQUNiLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkUsSUFBSSxlQUFlLEVBQUU7Z0JBQ2pCLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7YUFDaEQ7U0FDSjthQUFNO1lBQ0gsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxLQUFLLG1DQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRSxPQUFPLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1NBQ3hGO0lBQ0wsQ0FBQzs7O1lBZkosSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFOztBQW1CbEMsTUFBTSxPQUFPLHNCQUFzQjtJQUV4QixTQUFTLENBQUMsS0FBVSxFQUFFLFNBQXFDLEVBQUUsT0FBWTtRQUM1RSxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7O1lBTEosSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFOztBQVNqQyxNQUFNLE9BQU8sdUJBQXVCO0lBRXpCLFNBQVMsQ0FBQyxhQUErQixFQUFFLGNBQWlDLEVBQy9FLGdCQUFvRTtRQUNwRSxPQUFPLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7WUFOSixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7O0FBVWxDLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsWUFBb0IsT0FBNEQ7UUFBNUQsWUFBTyxHQUFQLE9BQU8sQ0FBcUQ7SUFBSSxDQUFDO0lBRTlFLFNBQVMsQ0FBQyxVQUFlLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxZQUFvQjtRQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxLQUFLLFNBQVMsQ0FBQyxJQUFJO1lBQ3BHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ3ZHLE9BQU8sVUFBVSxDQUFDO1NBQ3JCO1FBQ0QsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLEdBQUcsR0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQWlCLENBQUMsU0FBUyxDQUFDO1FBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzs7WUFmSixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFOzs7WUExWm5CLGtCQUFrQjs7QUE2YTNCLE1BQU0sT0FBTyx1QkFBdUI7SUFFekIsU0FBUyxDQUFDLEtBQVUsRUFBRSxRQUFhLEVBQUUsU0FBa0I7UUFDMUQsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3pFLENBQUM7OztZQUxKLElBQUksU0FBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTs7QUFTckMsTUFBTSxPQUFPLHVCQUF1QjtJQUV6QixTQUFTLENBQUMsTUFBK0IsRUFBRSxNQUEwQixFQUFFLENBQVM7UUFDbkYsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sR0FBRyxDQUFDO1NBQ2Q7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQzdEO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOzs7WUFoQkosSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmlkQmFzZUFQSVNlcnZpY2UgfSBmcm9tICcuLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2dyaWQtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IGNsb25lQXJyYXksIHJlc29sdmVOZXN0ZWRQYXRoIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkVHlwZSB9IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IENvbHVtbkRpc3BsYXlPcmRlciB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgSWd4Q29sdW1uQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbi1hY3Rpb25zL2NvbHVtbi1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hBZGRSb3cgfSBmcm9tICcuL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hHcmlkUm93IH0gZnJvbSAnLi4vZ3JpZC1wdWJsaWMtcm93JztcbmltcG9ydCB7IElneFRyZWVHcmlkUm93Q29tcG9uZW50IH0gZnJvbSAnLi4vdHJlZS1ncmlkL3RyZWUtZ3JpZC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IElneEdyaWRSb3dDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkL2dyaWQtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxSb3dDb21wb25lbnQgfSBmcm9tICcuLi9oaWVyYXJjaGljYWwtZ3JpZC9oaWVyYXJjaGljYWwtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hTdW1tYXJ5T3BlcmFuZCwgSWd4U3VtbWFyeVJlc3VsdCB9IGZyb20gJy4uL3N1bW1hcmllcy9ncmlkLXN1bW1hcnknO1xuXG5pbnRlcmZhY2UgQ1NTUHJvcCB7XG4gICAgW3Byb3A6IHN0cmluZ106IGFueTtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hDZWxsU3R5bGVDbGFzc2VzJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQ2VsbFN0eWxlQ2xhc3Nlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY3NzQ2xhc3NlczogQ1NTUHJvcCwgXzogYW55LCBkYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIF9fOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWNzc0NsYXNzZXMpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3Mgb2YgT2JqZWN0LmtleXMoY3NzQ2xhc3NlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrT3JWYWx1ZSA9IGNzc0NsYXNzZXNbY3NzQ2xhc3NdO1xuICAgICAgICAgICAgY29uc3QgYXBwbHkgPSB0eXBlb2YgY2FsbGJhY2tPclZhbHVlID09PSAnZnVuY3Rpb24nID9cbiAgICAgICAgICAgICAgICBjYWxsYmFja09yVmFsdWUoZGF0YSwgZmllbGQsIHJlc29sdmVOZXN0ZWRQYXRoKGRhdGEsIGZpZWxkKSwgaW5kZXgpIDogY2FsbGJhY2tPclZhbHVlO1xuICAgICAgICAgICAgaWYgKGFwcGx5KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY3NzQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneENlbGxTdHlsZXMnXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRDZWxsU3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShzdHlsZXM6IENTU1Byb3AsIF86IGFueSwgZGF0YTogYW55LCBmaWVsZDogc3RyaW5nLCBpbmRleDogbnVtYmVyLCBfXzogbnVtYmVyKTogQ1NTUHJvcCB7XG4gICAgICAgIGNvbnN0IGNzcyA9IHt9O1xuICAgICAgICBpZiAoIXN0eWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIGNzcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyhzdHlsZXMpKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBzdHlsZXNbcHJvcF07XG4gICAgICAgICAgICBjc3NbcHJvcF0gPSB0eXBlb2YgcmVzID09PSAnZnVuY3Rpb24nID8gcmVzKGRhdGEsIGZpZWxkLCByZXNvbHZlTmVzdGVkUGF0aChkYXRhLCBmaWVsZCksIGluZGV4KSA6IHJlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjc3M7XG4gICAgfVxufVxuXG50eXBlIF9Sb3dUeXBlID0gSWd4R3JpZFJvd0NvbXBvbmVudCB8IElneFRyZWVHcmlkUm93Q29tcG9uZW50IHwgSWd4SGllcmFyY2hpY2FsUm93Q29tcG9uZW50O1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7IG5hbWU6ICdpZ3hHcmlkUm93Q2xhc3NlcycgfSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkUm93Q2xhc3Nlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwdWJsaWMgcm93OiBJZ3hHcmlkUm93O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBncmlkQVBJOiBHcmlkQmFzZUFQSVNlcnZpY2U8SWd4R3JpZEJhc2VEaXJlY3RpdmUgJiBHcmlkVHlwZT4pIHtcbiAgICAgICAgdGhpcy5yb3cgPSBuZXcgSWd4R3JpZFJvdyh0aGlzLmdyaWRBUEkuZ3JpZCBhcyBhbnksIC0xLCB7fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShcbiAgICAgICAgY3NzQ2xhc3NlczogQ1NTUHJvcCxcbiAgICAgICAgcm93OiBfUm93VHlwZSxcbiAgICAgICAgZWRpdE1vZGU6IGJvb2xlYW4sXG4gICAgICAgIHNlbGVjdGVkOiBib29sZWFuLFxuICAgICAgICBkaXJ0eTogYm9vbGVhbixcbiAgICAgICAgZGVsZXRlZDogYm9vbGVhbixcbiAgICAgICAgZHJhZ2dpbmc6IGJvb2xlYW4sXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICAgIG1ybDogYm9vbGVhbixcbiAgICAgICAgZmlsdGVyZWRPdXQ6IGJvb2xlYW4sXG4gICAgICAgIF86IG51bWJlclxuICAgICkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KFsnaWd4LWdyaWRfX3RyJywgaW5kZXggJSAyID8gcm93LmdyaWQuZXZlblJvd0NTUyA6IHJvdy5ncmlkLm9kZFJvd0NTU10pO1xuICAgICAgICBjb25zdCBtYXBwaW5nID0gW1xuICAgICAgICAgICAgW3NlbGVjdGVkLCAnaWd4LWdyaWRfX3RyLS1zZWxlY3RlZCddLFxuICAgICAgICAgICAgW2VkaXRNb2RlLCAnaWd4LWdyaWRfX3RyLS1lZGl0J10sXG4gICAgICAgICAgICBbZGlydHksICdpZ3gtZ3JpZF9fdHItLWVkaXRlZCddLFxuICAgICAgICAgICAgW2RlbGV0ZWQsICdpZ3gtZ3JpZF9fdHItLWRlbGV0ZWQnXSxcbiAgICAgICAgICAgIFtkcmFnZ2luZywgJ2lneC1ncmlkX190ci0tZHJhZyddLFxuICAgICAgICAgICAgW21ybCwgJ2lneC1ncmlkX190ci0tbXJsJ10sXG4gICAgICAgICAgICAvLyBUcmVlIGdyaWQgb25seVxuICAgICAgICAgICAgW2ZpbHRlcmVkT3V0LCAnaWd4LWdyaWRfX3RyLS1maWx0ZXJlZCddXG4gICAgICAgIF07XG5cbiAgICAgICAgZm9yIChjb25zdCBbc3RhdGUsIF9jbGFzc10gb2YgbWFwcGluZykge1xuICAgICAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFkZChfY2xhc3MgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3Mgb2YgT2JqZWN0LmtleXMoY3NzQ2xhc3NlcyA/PyB7fSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrT3JWYWx1ZSA9IGNzc0NsYXNzZXNbY3NzQ2xhc3NdO1xuICAgICAgICAgICAgdGhpcy5yb3cuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICh0aGlzLnJvdyBhcyBhbnkpLl9kYXRhID0gcm93LnJvd0RhdGE7XG4gICAgICAgICAgICBjb25zdCBhcHBseSA9IHR5cGVvZiBjYWxsYmFja09yVmFsdWUgPT09ICdmdW5jdGlvbicgPyBjYWxsYmFja09yVmFsdWUodGhpcy5yb3cpIDogY2FsbGJhY2tPclZhbHVlO1xuICAgICAgICAgICAgaWYgKGFwcGx5KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFkZChjc3NDbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHsgbmFtZTogJ2lneEdyaWRSb3dTdHlsZXMnIH0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvd1N0eWxlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JpZEFQSTogR3JpZEJhc2VBUElTZXJ2aWNlPElneEdyaWRCYXNlRGlyZWN0aXZlICYgR3JpZFR5cGU+KSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oc3R5bGVzOiBDU1NQcm9wLCByb3dEYXRhOiBhbnksIGluZGV4OiBudW1iZXIsIF9fOiBudW1iZXIpOiBDU1NQcm9wIHtcbiAgICAgICAgY29uc3QgY3NzID0ge307XG4gICAgICAgIGlmICghc3R5bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY3NzO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyhzdHlsZXMpKSB7XG4gICAgICAgICAgICBjb25zdCBjYiA9IHN0eWxlc1twcm9wXTtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBJZ3hHcmlkUm93KCh0aGlzLmdyaWRBUEkuZ3JpZCBhcyBhbnkpLCBpbmRleCwgcm93RGF0YSk7XG4gICAgICAgICAgICBjc3NbcHJvcF0gPSB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicgPyBjYihyb3cpIDogY2I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNzcztcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4Tm90R3JvdXBlZCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZE5vdEdyb3VwZWRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmZpbHRlcihpdGVtID0+ICFpdGVtLmNvbHVtbkdyb3VwKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4VG9wTGV2ZWwnXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRUb3BMZXZlbENvbHVtbnMgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IGFueVtdKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbS5sZXZlbCA9PT0gMCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbHRlckNvbmRpdGlvbicsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRmlsdGVyQ29uZGl0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnNwbGl0KC8oPz1bQS1aXSkvKS5qb2luKCcgJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2dyaWRUcmFuc2FjdGlvbicsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkVHJhbnNhY3Rpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZURpcmVjdGl2ZSAmIEdyaWRUeXBlPikgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBfaWQ6IHN0cmluZywgX3BpcGVUcmlnZ2VyOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZ3JpZDogSWd4R3JpZEJhc2VEaXJlY3RpdmUgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcblxuICAgICAgICBpZiAoZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gRGF0YVV0aWwubWVyZ2VUcmFuc2FjdGlvbnMoXG4gICAgICAgICAgICAgICAgY2xvbmVBcnJheShjb2xsZWN0aW9uKSxcbiAgICAgICAgICAgICAgICBncmlkLnRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkQ2hhbmdlcyh0cnVlKSxcbiAgICAgICAgICAgICAgICBncmlkLnByaW1hcnlLZXksXG4gICAgICAgICAgICAgICAgZ3JpZC5kYXRhQ2xvbmVTdHJhdGVneSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdwYWdpbmF0b3JPcHRpb25zJyxcbiAgICBwdXJlOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkUGFnaW5hdG9yT3B0aW9uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlczogQXJyYXk8bnVtYmVyPikge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KFsuLi52YWx1ZXNdKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICd2aXNpYmxlQ29sdW1ucycsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hIYXNWaXNpYmxlQ29sdW1uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlczogYW55W10sIGhhc1Zpc2libGVDb2x1bW5zKSB7XG4gICAgICAgIGlmICghKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzVmlzaWJsZUNvbHVtbnMgPyB2YWx1ZXMgOiBbXTtcbiAgICB9XG5cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZFJvd1Bpbm5pbmcnLFxuICAgIHB1cmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvd1Bpbm5pbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZURpcmVjdGl2ZSAmIEdyaWRUeXBlPikgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBpZDogc3RyaW5nLCBpc1Bpbm5lZCA9IGZhbHNlLCBfcGlwZVRyaWdnZXI6IG51bWJlcikge1xuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkQVBJLmdyaWQ7XG5cbiAgICAgICAgaWYgKGdyaWQuaGFzUGlubmVkUmVjb3JkcyAmJiBpc1Bpbm5lZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY29sbGVjdGlvbi5maWx0ZXIocmVjID0+ICFncmlkLmlzU3VtbWFyeVJvdyhyZWMpICYmIGdyaWQuaXNSZWNvcmRQaW5uZWQocmVjKSk7XG4gICAgICAgICAgICByZXN1bHQuc29ydCgocmVjMSwgcmVjMikgPT4gZ3JpZC5nZXRJbml0aWFsUGlubmVkSW5kZXgocmVjMSkgLSBncmlkLmdldEluaXRpYWxQaW5uZWRJbmRleChyZWMyKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JpZC51bnBpbm5lZFJlY29yZHMgPSBjb2xsZWN0aW9uO1xuICAgICAgICBpZiAoIWdyaWQuaGFzUGlubmVkUmVjb3Jkcykge1xuICAgICAgICAgICAgZ3JpZC5waW5uZWRSZWNvcmRzID0gW107XG4gICAgICAgICAgICByZXR1cm4gaXNQaW5uZWQgPyBbXSA6IGNvbGxlY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5tYXAoKHJlYykgPT4gIWdyaWQuaXNTdW1tYXJ5Um93KHJlYykgJiZcbiAgICAgICAgICAgIGdyaWQuaXNSZWNvcmRQaW5uZWQocmVjKSA/IHsgcmVjb3JkUmVmOiByZWMsIGdob3N0UmVjb3JkOiB0cnVlIH0gOiByZWMpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdjb2x1bW5BY3Rpb25FbmFibGVkJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENvbHVtbkFjdGlvbkVuYWJsZWRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElneENvbHVtbkFjdGlvbnNDb21wb25lbnQpIHByb3RlY3RlZCBjb2x1bW5BY3Rpb25zOiBJZ3hDb2x1bW5BY3Rpb25zQ29tcG9uZW50KSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgICAgIGNvbGxlY3Rpb246IElneENvbHVtbkNvbXBvbmVudFtdLFxuICAgICAgICBhY3Rpb25GaWx0ZXI6ICh2YWx1ZTogSWd4Q29sdW1uQ29tcG9uZW50LCBpbmRleDogbnVtYmVyLCBhcnJheTogSWd4Q29sdW1uQ29tcG9uZW50W10pID0+IGJvb2xlYW4sXG4gICAgICAgIF9waXBlVHJpZ2dlcjogbnVtYmVyXG4gICAgKTogSWd4Q29sdW1uQ29tcG9uZW50W10ge1xuICAgICAgICBpZiAoIWNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb3B5ID0gY29sbGVjdGlvbi5zbGljZSgwKTtcbiAgICAgICAgaWYgKGNvcHkubGVuZ3RoICYmIGNvcHlbMF0uZ3JpZC5oYXNDb2x1bW5MYXlvdXRzKSB7XG4gICAgICAgICAgICBjb3B5ID0gY29weS5maWx0ZXIoYyA9PiBjLmNvbHVtbkxheW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvbkZpbHRlcikge1xuICAgICAgICAgICAgY29weSA9IGNvcHkuZmlsdGVyKGFjdGlvbkZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJlc2VydmUgdGhlIGFjdGlvbmFibGUgY29sbGVjdGlvbiBmb3IgdXNlIGluIHRoZSBjb21wb25lbnRcbiAgICAgICAgdGhpcy5jb2x1bW5BY3Rpb25zLmFjdGlvbmFibGVDb2x1bW5zID0gY29weTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbHRlckFjdGlvbkNvbHVtbnMnLFxuICAgIHB1cmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4RmlsdGVyQWN0aW9uQ29sdW1uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSWd4Q29sdW1uQWN0aW9uc0NvbXBvbmVudCkgcHJvdGVjdGVkIGNvbHVtbkFjdGlvbnM6IElneENvbHVtbkFjdGlvbnNDb21wb25lbnQpIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBJZ3hDb2x1bW5Db21wb25lbnRbXSwgZmlsdGVyQ3JpdGVyaWE6IHN0cmluZywgX3BpcGVUcmlnZ2VyOiBudW1iZXIpOiBJZ3hDb2x1bW5Db21wb25lbnRbXSB7XG4gICAgICAgIGlmICghY29sbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvcHkgPSBjb2xsZWN0aW9uLnNsaWNlKDApO1xuICAgICAgICBpZiAoZmlsdGVyQ3JpdGVyaWEgJiYgZmlsdGVyQ3JpdGVyaWEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRnVuYyA9IChjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyVGV4dCA9IGMuaGVhZGVyIHx8IGMuZmllbGQ7XG4gICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXJUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlclRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlckNyaXRlcmlhLnRvTG9jYWxlTG93ZXJDYXNlKCkpID49IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgKGMuY2hpbGRyZW4/LnNvbWUoZmlsdGVyRnVuYykgPz8gZmFsc2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvcHkgPSBjb2xsZWN0aW9uLmZpbHRlcihmaWx0ZXJGdW5jKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgZmlsdGVyZWQgY29sbGVjdGlvbiBmb3IgdXNlIGluIHRoZSBjb21wb25lbnRcbiAgICAgICAgdGhpcy5jb2x1bW5BY3Rpb25zLmZpbHRlcmVkQ29sdW1ucyA9IGNvcHk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdzb3J0QWN0aW9uQ29sdW1ucycsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hTb3J0QWN0aW9uQ29sdW1uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogSWd4Q29sdW1uQ29tcG9uZW50W10sIGRpc3BsYXlPcmRlcjogQ29sdW1uRGlzcGxheU9yZGVyLCBfcGlwZVRyaWdnZXI6IG51bWJlcik6IElneENvbHVtbkNvbXBvbmVudFtdIHtcbiAgICAgICAgaWYgKGRpc3BsYXlPcmRlciA9PT0gQ29sdW1uRGlzcGxheU9yZGVyLkFscGhhYmV0aWNhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uc29ydCgoYSwgYikgPT4gKGEuaGVhZGVyIHx8IGEuZmllbGQpLmxvY2FsZUNvbXBhcmUoYi5oZWFkZXIgfHwgYi5maWVsZCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnZGF0YU1hcHBlcicgfSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRGF0YU1hcHBlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oZGF0YTogYW55W10sIGZpZWxkOiBzdHJpbmcsIF86IG51bWJlciwgdmFsOiBhbnksIGlzTmVzdGVkUGF0aDogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gaXNOZXN0ZWRQYXRoID8gcmVzb2x2ZU5lc3RlZFBhdGgoZGF0YSwgZmllbGQpIDogdmFsO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnaWd4U3RyaW5nUmVwbGFjZScgfSlcbmV4cG9ydCBjbGFzcyBJZ3hTdHJpbmdSZXBsYWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBzZWFyY2g6IHN0cmluZyB8IFJlZ0V4cCwgcmVwbGFjZW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHNlYXJjaCwgcmVwbGFjZW1lbnQpO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAndHJhbnNhY3Rpb25TdGF0ZScgfSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkVHJhbnNhY3Rpb25TdGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0ocm93X2lkOiBhbnksIGZpZWxkOiBzdHJpbmcsIHJvd0VkaXRhYmxlOiBib29sZWFuLCB0cmFuc2FjdGlvbnM6IGFueSwgXzogYW55LCBfXzogYW55LCBfX186IGFueSkge1xuICAgICAgICBpZiAocm93RWRpdGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvd0N1cnJlbnRTdGF0ZSA9IHRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkVmFsdWUocm93X2lkLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAocm93Q3VycmVudFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlTmVzdGVkUGF0aChyb3dDdXJyZW50U3RhdGUsIGZpZWxkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25zLmdldFN0YXRlKHJvd19pZCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVOZXN0ZWRQYXRoKHRyYW5zYWN0aW9uPy52YWx1ZSA/PyB7fSwgZmllbGQpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uICYmIHRyYW5zYWN0aW9uLnZhbHVlICYmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCB8fCB2YWx1ZSA9PT0gZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdjb2x1bW5Gb3JtYXR0ZXInIH0pXG5leHBvcnQgY2xhc3MgSWd4Q29sdW1uRm9ybWF0dGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBmb3JtYXR0ZXI6ICh2OiBhbnksIGRhdGE6IGFueSkgPT4gYW55LCByb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlcih2YWx1ZSwgcm93RGF0YSk7XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdzdW1tYXJ5Rm9ybWF0dGVyJyB9KVxuZXhwb3J0IGNsYXNzIElneFN1bW1hcnlGb3JtYXR0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHN1bW1hcnlSZXN1bHQ6IElneFN1bW1hcnlSZXN1bHQsIHN1bW1hcnlPcGVyYW5kOiBJZ3hTdW1tYXJ5T3BlcmFuZCxcbiAgICAgICAgc3VtbWFyeUZvcm1hdHRlcjogKHM6IElneFN1bW1hcnlSZXN1bHQsIG86IElneFN1bW1hcnlPcGVyYW5kKSA9PiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHN1bW1hcnlGb3JtYXR0ZXIoc3VtbWFyeVJlc3VsdCwgc3VtbWFyeU9wZXJhbmQpO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnZ3JpZEFkZFJvdycgfSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQWRkUm93UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBncmlkQVBJOiBHcmlkQmFzZUFQSVNlcnZpY2U8SWd4R3JpZEJhc2VEaXJlY3RpdmUgJiBHcmlkVHlwZT4pIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBhbnksIGlzUGlubmVkID0gZmFsc2UsIF9waXBlVHJpZ2dlcjogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcbiAgICAgICAgaWYgKCFncmlkLnJvd0VkaXRhYmxlIHx8ICFncmlkLmNydWRTZXJ2aWNlLnJvdyB8fCBncmlkLmNydWRTZXJ2aWNlLnJvdy5nZXRDbGFzc05hbWUoKSAhPT0gSWd4QWRkUm93Lm5hbWUgfHxcbiAgICAgICAgICAgICFncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuYWRkUm93UGFyZW50IHx8IGlzUGlubmVkICE9PSBncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuYWRkUm93UGFyZW50LmlzUGlubmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb3B5ID0gY29sbGVjdGlvbi5zbGljZSgwKTtcbiAgICAgICAgY29uc3QgcmVjID0gKGdyaWQuY3J1ZFNlcnZpY2Uucm93IGFzIElneEFkZFJvdykucmVjb3JkUmVmO1xuICAgICAgICBjb3B5LnNwbGljZShncmlkLmNydWRTZXJ2aWNlLnJvdy5pbmRleCwgMCwgcmVjKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdpZ3hIZWFkZXJHcm91cFdpZHRoJyB9KVxuZXhwb3J0IGNsYXNzIElneEhlYWRlckdyb3VwV2lkdGhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHdpZHRoOiBhbnksIG1pbldpZHRoOiBhbnksIGhhc0xheW91dDogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gaGFzTGF5b3V0ID8gJycgOiBgJHtNYXRoLm1heChwYXJzZUZsb2F0KHdpZHRoKSwgbWluV2lkdGgpfXB4YDtcbiAgICB9XG59XG5cbkBQaXBlKHsgbmFtZTogJ2lneEhlYWRlckdyb3VwU3R5bGUnIH0pXG5leHBvcnQgY2xhc3MgSWd4SGVhZGVyR3JvdXBTdHlsZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oc3R5bGVzOiB7IFtwcm9wOiBzdHJpbmddOiBhbnkgfSwgY29sdW1uOiBJZ3hDb2x1bW5Db21wb25lbnQsIF86IG51bWJlcik6IHsgW3Byb3A6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgY29uc3QgY3NzID0ge307XG5cbiAgICAgICAgaWYgKCFzdHlsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBjc3M7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMoc3R5bGVzKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gc3R5bGVzW3Byb3BdO1xuICAgICAgICAgICAgY3NzW3Byb3BdID0gdHlwZW9mIHJlcyA9PT0gJ2Z1bmN0aW9uJyA/IHJlcyhjb2x1bW4pIDogcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNzcztcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9jb21tb24vcm93LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUdyb3VwQnlSZWNvcmQgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1yZWNvcmQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneFN1bW1hcnlSZXN1bHQgfSBmcm9tICcuLi9zdW1tYXJpZXMvZ3JpZC1zdW1tYXJ5JztcbmltcG9ydCB7IElUcmVlR3JpZFJlY29yZCB9IGZyb20gJy4uL3RyZWUtZ3JpZC90cmVlLWdyaWQuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDZWxsVHlwZSB9IGZyb20gJy4vY2VsbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JpZFR5cGUgfSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBSb3dUeXBlIHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIHZpZXdJbmRleDogbnVtYmVyO1xuICAgIGlzR3JvdXBCeVJvdz86IGJvb2xlYW47XG4gICAgaXNTdW1tYXJ5Um93PzogYm9vbGVhbjtcbiAgICBzdW1tYXJpZXM/OiBNYXA8c3RyaW5nLCBJZ3hTdW1tYXJ5UmVzdWx0W10+O1xuICAgIGdyb3VwUm93PzogSUdyb3VwQnlSZWNvcmQ7XG4gICAgLyoqIERlcHJlY2F0ZWQsIHdpbGwgYmUgcmVtb3ZlZC4ga2V5IGlzIHRoZSBuZXcgcHJvcGVydHkgKi9cbiAgICByb3dJRD86IGFueTtcbiAgICBrZXk/OiBhbnk7XG4gICAgLyoqIERlcHJlY2F0ZWQsIHdpbGwgYmUgcmVtb3ZlZC4gZGF0YSBpcyB0aGUgbmV3IHByb3BlcnR5ICovXG4gICAgcm93RGF0YT86IGFueTtcbiAgICBkYXRhPzogYW55O1xuICAgIGNlbGxzPzogQ2VsbFR5cGVbXTtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcGlubmVkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGRlbGV0ZWQ/OiBib29sZWFuO1xuICAgIGluRWRpdE1vZGU/OiBib29sZWFuO1xuICAgIGNoaWxkcmVuPzogUm93VHlwZVtdO1xuICAgIHBhcmVudD86IFJvd1R5cGU7XG4gICAgaGFzQ2hpbGRyZW4/OiBib29sZWFuO1xuICAgIHRyZWVSb3c/IDogSVRyZWVHcmlkUmVjb3JkO1xuICAgIGdyaWQ6IEdyaWRUeXBlO1xuICAgIHVwZGF0ZT86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICAgIGRlbGV0ZT86ICgpID0+IGFueTtcbiAgICBwaW4/OiAoKSA9PiB2b2lkO1xuICAgIHVucGluPzogKCkgPT4gdm9pZDtcbn1cblxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9jb21tb24vcm93LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUdyb3VwQnlSZWNvcmQgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1yZWNvcmQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneFN1bW1hcnlSZXN1bHQgfSBmcm9tICcuLi9zdW1tYXJpZXMvZ3JpZC1zdW1tYXJ5JztcbmltcG9ydCB7IElUcmVlR3JpZFJlY29yZCB9IGZyb20gJy4uL3RyZWUtZ3JpZC90cmVlLWdyaWQuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDZWxsVHlwZSB9IGZyb20gJy4vY2VsbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3JpZFR5cGUgfSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBSb3dUeXBlIHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIHZpZXdJbmRleDogbnVtYmVyO1xuICAgIGlzR3JvdXBCeVJvdz86IGJvb2xlYW47XG4gICAgaXNTdW1tYXJ5Um93PzogYm9vbGVhbjtcbiAgICBzdW1tYXJpZXM/OiBNYXA8c3RyaW5nLCBJZ3hTdW1tYXJ5UmVzdWx0W10+O1xuICAgIGdyb3VwUm93PzogSUdyb3VwQnlSZWNvcmQ7XG4gICAgLyoqIERlcHJlY2F0ZWQsIHdpbGwgYmUgcmVtb3ZlZC4ga2V5IGlzIHRoZSBuZXcgcHJvcGVydHkgKi9cbiAgICByb3dJRD86IGFueTtcbiAgICBrZXk/OiBhbnk7XG4gICAgLyoqIERlcHJlY2F0ZWQsIHdpbGwgYmUgcmVtb3ZlZC4gZGF0YSBpcyB0aGUgbmV3IHByb3BlcnR5ICovXG4gICAgcm93RGF0YT86IGFueTtcbiAgICBkYXRhPzogYW55O1xuICAgIGNlbGxzPzogQ2VsbFR5cGVbXTtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcGlubmVkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGRlbGV0ZWQ/OiBib29sZWFuO1xuICAgIGFkZFJvd1VJPzogYm9vbGVhbjtcbiAgICBpbkVkaXRNb2RlPzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbj86IFJvd1R5cGVbXTtcbiAgICBwYXJlbnQ/OiBSb3dUeXBlO1xuICAgIGhhc0NoaWxkcmVuPzogYm9vbGVhbjtcbiAgICB0cmVlUm93PyA6IElUcmVlR3JpZFJlY29yZDtcbiAgICBncmlkOiBHcmlkVHlwZTtcbiAgICB1cGRhdGU/OiAodmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgICBkZWxldGU/OiAoKSA9PiBhbnk7XG4gICAgcGluPzogKCkgPT4gdm9pZDtcbiAgICB1bnBpbj86ICgpID0+IHZvaWQ7XG59XG5cbiJdfQ==