ca-components 1.2.22 → 1.2.25

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.
@@ -81,6 +81,7 @@ export class CaInputDropdownComponent {
81
81
  set options(values) {
82
82
  if (values)
83
83
  this._options = [...values];
84
+ console.log('this.lastValidOption', this.lastValidOption);
84
85
  if (this.lastValidOption) {
85
86
  const findInOptions = this.inputConfig.searchinGroupIndex
86
87
  ? this.getMainGroup()
@@ -159,7 +160,6 @@ export class CaInputDropdownComponent {
159
160
  : this._options;
160
161
  const findOption = findInOptions.find((option) => option[this.optionValue] == value);
161
162
  if (findOption) {
162
- this.lastValidOption = findOption;
163
163
  this.setDropdownValue(findOption);
164
164
  }
165
165
  }
@@ -435,6 +435,7 @@ export class CaInputDropdownComponent {
435
435
  }
436
436
  }
437
437
  setDropdownValue(option, optionValue, label) {
438
+ this.lastValidOption = option;
438
439
  this.selectedItem.emit(option);
439
440
  const optValue = optionValue ? optionValue : this.optionValue;
440
441
  const lbel = label ? label : this.label;
@@ -689,4 +690,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
689
690
  type: Output,
690
691
  args: ['searchInputEvent']
691
692
  }] } });
692
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFDSCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLElBQUksRUFDSixPQUFPLEVBQ1AsU0FBUyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBRWQsWUFBWTtBQUNaLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsU0FBUyxHQUNaLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsWUFBWTtBQUNaLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUt0RCxhQUFhO0FBQ2IsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sb0ZBQW9GLENBQUM7QUFDeEksT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sb0dBQW9HLENBQUM7QUFDL0osT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNEZBQTRGLENBQUM7QUFDcEosT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sc0ZBQXNGLENBQUM7QUFD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SyxFQUFFO2dCQUkzQyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFTTyxRQUFRO3NCQUFwQixLQUFLO2dCQUlHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBUUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJTyxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBUUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBb0JPLHVCQUF1QjtzQkFBbkMsS0FBSztnQkFlRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxRQUFRO3NCQUFqQixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVlLGVBQWU7c0JBQXBDLE1BQU07dUJBQUMsWUFBWTtnQkFFRyxnQkFBZ0I7c0JBQXRDLE1BQU07dUJBQUMsYUFBYTtnQkFFTSxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHRyxnQkFBZ0I7c0JBQTNDLE1BQU07dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgc2tpcCxcbiAgICBTdWJqZWN0LFxuICAgIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbi8vIGJvb3RzdHJhcFxuaW1wb3J0IHtcbiAgICBOZ2JQb3BvdmVyLFxuICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgTmdiTW9kdWxlLFxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbi8vIGFuaW1hdGlvblxuaW1wb3J0IHsgaW5wdXREcm9wZG93bkFuaW1hdGlvbiB9IGZyb20gJy4vYW5pbWF0aW9ucyc7XG5cbi8vIGNvbmZpZ1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC9jb25maWcnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0L2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlci9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbSc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXItaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0uY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zUGlwZSB9IGZyb20gJy4vcGlwZXMvZHJvcGRvd24tb3B0aW9ucy5waXBlJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuaW1wb3J0IHsgT3B0aW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9pbnB1dC1kcm9wZG93bi1vcHRpb24ubW9kZWwnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbi8vIGNsYXNzZXNcbmltcG9ydCB7IEV2ZW50SW5wdXRNYW5hZ2VyIH0gZnJvbSAnLi4vY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWV2ZW50LW1hbmFnZXInO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBJbnB1dFRlc3RDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhTG9hZFN0YXR1c1N0cmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhLWxvYWQtc3RhdHVzLXN0cmluZy9jYS1sb2FkLXN0YXR1cy1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IENhUHJvZmlsZUltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtcHJvZmlsZS1pbWFnZS9jYS1wcm9maWxlLWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNhLWlucHV0LWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0Zvcm1Db250cm9sUGlwZV0sXG4gICAgYW5pbWF0aW9uczogW2lucHV0RHJvcGRvd25BbmltYXRpb24oJ3Nob3dIaWRlRHJvcGRvd25PcHRpb25zJyldLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nYk1vZHVsZSxcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIC8vIENvbXBvbmVudFxuICAgICAgICBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCxcbiAgICAgICAgQ2FMb2FkU3RhdHVzU3RyaW5nQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Hcm91cHNDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVzVHRkQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25UZXh0Q291bnRlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRG91YmxlVGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25UcmlwbGVUZXh0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRlZmF1bHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRnVlbEZyYW5jaGlzZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRGlzcGF0Y2hDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRldGFpbHNUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZnVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIElucHV0VGVzdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtLFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlclNoaXBwZXJJdGVtQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlckl0ZW1Db21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgLy8gUGlwZXNcbiAgICAgICAgRm9ybUNvbnRyb2xQaXBlLFxuICAgICAgICBEcm9wZG93bkNvdW50UGlwZSxcbiAgICAgICAgSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q2xhc3NQaXBlLFxuICAgICAgICBEcm9wZG93bk9wdGlvbnNQaXBlLFxuICAgICAgICBJbnB1dERyb3Bkb3duR2V0SWNvbnNQaXBlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIENhSW5wdXREcm9wZG93bkNvbXBvbmVudFxuICAgIGltcGxlbWVudHNcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBBZnRlclZpZXdJbml0XG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFJlZiE6IElucHV0VGVzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCd0MicpIHB1YmxpYyBwb3BvdmVyUmVmITogTmdiUG9wb3ZlcjtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbXBvbmVudFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBhbnk7XG5cbiAgICAvLyBMYWJlbCBpbnB1dCAtIHZhbHVlIHRoYXQgd2lsbCBiZSBzaG93ZWQgaW5zaWRlIGlucHV0XG4gICAgQElucHV0KCkgbGFiZWwhOiBrZXlvZiBPcHRpb25Nb2RlbDtcblxuICAgIC8vIG9wdGlvblZhbHVlIGlucHV0IC0ga2V5IHZhbHVlIGZyb20gb2JqZWN0IC0gRW1pdCB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB3aG9sZSBvYmplY3RcbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZSE6IHN0cmluZztcblxuICAgIGlucHV0SG92ZXJlZEl0ZW06IG51bWJlciA9IC0xO1xuICAgIGRyb3BEb3duSXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBkaWZmZXJlbnQgdGVtcGxhdGVzIGZvciBib2R5IHJlbmRlcmluZ1xuICAgIHB1YmxpYyBfdGVtcGxhdGUhOiBzdHJpbmc7XG4gICAgX2NhbkFkZE5ldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2V0IHRlbXBsYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGVtcGxhdGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBtdWx0aXNlbGVjdFRlbXBsYXRlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgQElucHV0KCkgc2V0IGNhbkFkZE5ldyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9jYW5BZGROZXcgPSB2YWx1ZTtcbiAgICB9IC8vIEFERCBORVcgaXRlbSBpbiBvcHRpb25zXG5cbiAgICBwdWJsaWMgZ2V0IGNhbkFkZE5ldygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbkFkZE5ldztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBjYW5PcGVuTW9kYWwhOiBib29sZWFuOyAvLyBvcGVuIG1vZGFsIHdpdGggQUREIE5FVyBidXR0b25cblxuICAgIC8vIHNvcnQtdGVtcGxhdGUgZm9yIGRpZmZlcmVudCBvcHRpb25zXG4gICAgcHVibGljIF9zb3J0ITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNldCBzb3J0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc29ydCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc29ydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnQ7XG4gICAgfVxuXG4gICAgLy8gY3VycmVudGx5IGFjdGl2ZSBpdGVtXG4gICAgcHVibGljIF9hY3RpdmVJdGVtITogT3B0aW9uTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHNldCBhY3RpdmVJdGVtKHZhbHVlOiBPcHRpb25Nb2RlbCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW07XG4gICAgfVxuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbUNvbG9yITogT3B0aW9uTW9kZWwgfCBudWxsOyAvLyBjdXJyZW50bHkgYWN0aXZlIGNvbG9yIGluIGRyb3Bkb3duXG4gICAgQElucHV0KCkgbGFiZWxNb2RlITogJ0xhYmVsJyB8ICdDb2xvcic7XG5cbiAgICAvLyB3aGVuIHNlbmQgU1ZHLCBwbGVhc2UgcHJlbW1hcGVkIG9iamVjdDogYWRkICdmb2xkZXInIHwgJ3N1YmZvbGRlcidcbiAgICBwdWJsaWMgX29wdGlvbnM6IE9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyh2YWx1ZXM6IE9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcykgdGhpcy5fb3B0aW9ucyA9IFsuLi52YWx1ZXNdO1xuXG4gICAgICAgIGlmICh0aGlzLmxhc3RWYWxpZE9wdGlvbikge1xuICAgICAgICAgICAgY29uc3QgZmluZEluT3B0aW9ucyA9IHRoaXMuaW5wdXRDb25maWcuc2VhcmNoaW5Hcm91cEluZGV4XG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldE1haW5Hcm91cCgpXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9vcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgZmluZE9wdGlvbiA9IGZpbmRJbk9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAob3B0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZSBhcyBrZXlvZiBPcHRpb25Nb2RlbF0gPT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0VmFsaWRPcHRpb25cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChmaW5kT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKGZpbmRPcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTXVsdGlTZWxlY3QgU2VsZWN0ZWQgSXRlbXMgRnJvbSBCYWNrZW5kXG4gICAgQElucHV0KCkgc2V0IHByZWxvYWRNdWx0aXNlbGVjdEl0ZW1zKHZhbHVlczogT3B0aW9uTW9kZWxbXSkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcyh0aGlzLmlucHV0Q29uZmlnLmxhYmVsKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25NdWx0aXNlbGVjdFNlbGVjdChpdGVtKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGlzRGV0YWlsc1BhZ2VzITogYm9vbGVhbjsgLy8gb25seSBmb3IgZGV0YWlscyBwYWdlc1xuICAgIEBJbnB1dCgpIGlzSW5jb3JyZWN0VmFsdWUhOiBib29sZWFuOyAvLyBhcHBsaWNhbnQgcmV2aWV3IG9wdGlvblxuICAgIEBJbnB1dCgpIGlzQWRkcmVzc0Ryb3Bkb3duITogYm9vbGVhbjsgLy8gb25seSBmb3IgYWRkcmVzcyBkcm9wZG93blxuXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbTogRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtczogRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsW10gfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWxbXSB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbUNvbG9yOiBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWwgfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWwgfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZExhYmVsTW9kZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgY2xvc2VEcm9wZG93bjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBzYXZlSXRlbTogRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgZGF0YTogT3B0aW9uTW9kZWwgfCBudWxsO1xuICAgICAgICBhY3Rpb246IHN0cmluZztcbiAgICB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBPcHRpb25Nb2RlbCB8IG51bGw7IGFjdGlvbjogc3RyaW5nIH0+KCk7XG4gICAgQE91dHB1dCgpIGluY29ycmVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHBsYWNlaG9sZGVySWNvbkV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgncGFnaW5hdGlvbicpIHBhZ2luYXRpb25FdmVudDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCdhY3RpdmVHcm91cCcpIGFjdGl2ZUdyb3VwRXZlbnQ6IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsPigpO1xuICAgIEBPdXRwdXQoJ2NsZWFySW5wdXRFdmVudCcpIGNsZWFySW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQE91dHB1dCgnc2VhcmNoSW5wdXRFdmVudCcpIHNlYXJjaElucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgLy8gZXZlbnRzXG4gICAgcHVibGljIHNlYXJjaElucHV0VGV4dCA9IG5ldyBFdmVudElucHV0TWFuYWdlcjxzdHJpbmc+KFxuICAgICAgICBudWxsLFxuICAgICAgICB0aGlzLnNlYXJjaElucHV0RXZlbnRcbiAgICApO1xuXG4gICAgLy8gQ29weSBvZiBPcHRpb25zXG4gICAgcHVibGljIG9yaWdpbmFsT3B0aW9uczogT3B0aW9uTW9kZWxbXSA9IFtdO1xuXG4gICAgLy8gUGFnaW5hdGlvblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uTnVtYmVyOiBudW1iZXIgPSAwO1xuXG4gICAgLy8gTXVsdGlzZWxlY3QgZHJvcGRvd24gb3B0aW9uc1xuICAgIHB1YmxpYyBtdWx0aXNlbGVjdEl0ZW1zOiBPcHRpb25Nb2RlbFtdID0gW107XG4gICAgcHVibGljIGlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG11bHRpU2VsZWN0TGFiZWwhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0hOiBPcHRpb25Nb2RlbCB8IG51bGw7XG5cbiAgICAvLyBBZGQgbW9kZVxuICAgIHB1YmxpYyBpc0luQWRkTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gRHJvcGRvd24gbmF2aWdhdGlvbiB3aXRoIGtleWJvYXJkXG4gICAgcHJpdmF0ZSBkcm9wZG93blBvc2l0aW9uOiBudW1iZXIgPSAtMTtcblxuICAgIC8vIERyb3Bkb3duIENsZWFydGltZW91dFxuICAgIHB1YmxpYyBjbGVhclRpbWVvdXREcm9wZG93bjogc3RyaW5nIHwgbnVtYmVyIHwgTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgaG92ZXJpbmdJbmRleCE6IG51bWJlcjtcbiAgICBwdWJsaWMgaW5wdXREcm9wZG93blN2Z1JvdXRlcyA9IElucHV0RHJvcGRvd25TdmdSb3V0ZXM7XG4gICAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSA9IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bTtcblxuICAgIC8vIERlc3Ryb3lcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAU2VsZigpIHB1YmxpYyBzdXBlckNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge1xuICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBnZXQgZ2V0U3VwZXJDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5wdXRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCk7XG5cbiAgICBwdWJsaWMgbGFzdFZhbGlkT3B0aW9uITogT3B0aW9uTW9kZWw7XG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbmRJbk9wdGlvbnMgPSB0aGlzLmlucHV0Q29uZmlnLnNlYXJjaGluR3JvdXBJbmRleFxuICAgICAgICAgICAgPyB0aGlzLmdldE1haW5Hcm91cCgpXG4gICAgICAgICAgICA6IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIGNvbnN0IGZpbmRPcHRpb24gPSBmaW5kSW5PcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZSBhcyBrZXlvZiBPcHRpb25Nb2RlbF0gPT0gdmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZmluZE9wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5sYXN0VmFsaWRPcHRpb24gPSBmaW5kT3B0aW9uO1xuICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKGZpbmRPcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuICAgIHB1YmxpYyBvbkNoYW5nZShfOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBNdWx0aXNlbGVjdFxuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0TGFiZWwgPSB0aGlzLmlucHV0Q29uZmlnLmxhYmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzZWFyY2hUZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGFiZWxNb2RlID09PSAnQ29sb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoc2VhcmNoVGV4dCB8fCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLm9wZW4oKTtcbiAgICAgICAgICAgIH0sIDQ1MCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25TY3JvbGxEcm9wZG93bihldmVudDogRXZlbnRUYXJnZXQgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmICh0YXJnZXQuc2Nyb2xsVG9wICsgdGFyZ2V0Lm9mZnNldEhlaWdodCA9PT0gdGFyZ2V0LnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uTnVtYmVyICs9IDE7XG5cbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkV2ZW50LmVtaXQodGhpcy5wYWdpbmF0aW9uTnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkFjdGl2ZUl0ZW0ob3B0aW9uOiBPcHRpb25Nb2RlbCwgZ3JvdXA/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jYW5PcGVuTW9kYWwgJiZcbiAgICAgICAgICAgIG9wdGlvbj8uW3RoaXMubGFiZWxdPy50b0xvd2VyQ2FzZSgpID09PSAnYWRkIG5ldydcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICBjYW5PcGVuTW9kYWw6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJvcGRvd25WYWx1ZShvcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbUdyb3VwKGV2ZW50OiB7IG9wdGlvbjogT3B0aW9uTW9kZWw7IGdyb3VwOiBhbnkgfSkge1xuICAgICAgICB0aGlzLm9uQWN0aXZlSXRlbShldmVudC5vcHRpb24sIGV2ZW50Lmdyb3VwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA9IC0xO1xuXG4gICAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKCcnKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRyb3Bkb3duTGFiZWwoKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1Db2xvciA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ29sb3IuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21tYW5kRXZlbnQoZXZlbnQ6IENvbW1hbmRzRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ0VkaXQgSW5wdXQnKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0NvbG9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ1RvZ2dsZSBEcm9wZG93bicpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY29uZmlybScgJiYgZXZlbnQubW9kZSA9PT0gJ25ldycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3SXRlbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NvbmZpcm0nICYmIGV2ZW50Lm1vZGUgPT09ICdlZGl0Jykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJdGVtKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnUGxhY2Vob2xkZXIgSWNvbiBFdmVudCcpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJJY29uRXZlbnQuZW1pdCh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjYW5jZWwnKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnY2FuY2VsJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE5ld0l0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB7XG4gICAgICAgICAgICBpZDogcGFyc2VJbnQodXVpZHY0KCkpLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2whLnZhbHVlLFxuICAgICAgICB9O1xuICAgICAgICAvL3RoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlzVmlzaWJsZUNvbW1hbmRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHsgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSwgYWN0aW9uOiAnbmV3JyB9KTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzVG91Y2hlZElucHV0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgICAgICAgIGNvbG9ySWQ6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IuaWRcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2xvcklkLFxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2xvcixcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2RlLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoe1xuICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgIGFjdGlvbjogJ2VkaXQnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3Q29uZmlnKCkge1xuICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgIGNvbW1hbmRzOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdjb25maXJtLWNhbmNlbCcsXG4gICAgICAgICAgICAgICAgZmlyc3RDb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvcHVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMzA3NGQzJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgICAgICAgICAgICAgICBzdmc6IElucHV0RHJvcGRvd25TdmdSb3V0ZXMuc3BlY0NvbmZpcm1TdmcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZWNvbmRDb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvcHVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMyZjJmMmYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgc3ZnOiBJbnB1dERyb3Bkb3duU3ZnUm91dGVzLnhDbGVhclN2ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5pc0luQWRkTW9kZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNJbkFkZE1vZGUgPSBmYWxzZTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbmNvcnJlY3RJbnB1dChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmluY29ycmVjdEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpZGVudGl0eShpbmRleDogbnVtYmVyLCBpdGVtOiBPcHRpb25Nb2RlbCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVOZXN0ZWRMaXN0KG9wdGlvbjogT3B0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbi5vcGVuKSB7XG4gICAgICAgICAgICBvcHRpb24ub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAoaXRlbS5vcGVuID0gZmFsc2UpKTtcblxuICAgICAgICBvcHRpb24ub3BlbiA9ICFvcHRpb24ub3BlbjtcblxuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR3JvdXBFdmVudC5lbWl0KG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVySW5wdXQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFySW5wdXRFdmVudChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsZWFySW5wdXRFdmVudC5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgICAgIC8vIGxhYmVsIGRyb3Bkb3duXG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRHJvcGRvd25MYWJlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbm9ybWFsIGRyb3Bkb3duXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xlYXJTZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVIaWRkZW5Ecm9wZG93bigpIHtcbiAgICAgICAgdGhpcy5kcm9wRG93bklzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLmRyb3Bkb3duVmFsdWUgfHwgJycpO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlT3BlbkRyb3Bkb3duKCkge1xuICAgICAgICB0aGlzLmRyb3BEb3duSXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd0hpZGVEcm9wZG93bihhY3Rpb246IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cyA9IGFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSAhPT0gJ0NvbG9yJykge1xuICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldFZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRhaWxzIHBhZ2VzXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY3VzdG9tQ2xhc3M/LmluY2x1ZGVzKCdkZXRhaWxzLXBhZ2VzJykgJiZcbiAgICAgICAgICAgICFhY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHRoaXMuX2FjdGl2ZUl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1haW5Hcm91cCgpIHtcbiAgICAgICAgbGV0IG1haW5Hcm91cDogT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgICAgICB0aGlzLl9vcHRpb25zLm1hcCgoZ3JvdXBzKSA9PiB7XG4gICAgICAgICAgICBtYWluR3JvdXAucHVzaChcbiAgICAgICAgICAgICAgICAuLi5ncm91cHNbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuc2VhcmNoaW5Hcm91cEluZGV4IGFzIGtleW9mIE9wdGlvbk1vZGVsXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1haW5Hcm91cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcERvd25LZXlOYXZpZ2F0aW9uKHtcbiAgICAgICAga2V5Q29kZSxcbiAgICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICAgIGtleUNvZGU6IG51bWJlcjtcbiAgICAgICAgZGF0YTogYW55O1xuICAgIH0pIHtcbiAgICAgICAgLy8gTmF2aWdhdGUgZG93blxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25OYXZpZ2F0aW9uKDEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5hdmlnYXRlIHVwXG4gICAgICAgIGlmIChrZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJlc3MgJ2VudGVyJ1xuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW07XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWFpbkdyb3VwID0gdGhpcy5nZXRNYWluR3JvdXAoKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSBtYWluR3JvdXBbdGhpcy5pbnB1dEhvdmVyZWRJdGVtXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5vcHRpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyBbdGhpcy5sYWJlbF06ICcnIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbT8uW3RoaXMubGFiZWxdPy50b0xvd2VyQ2FzZSgpID09PSAnYWRkIG5ldydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLkFERF9ORVcsXG4gICAgICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKHNlbGVjdGVkSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gOSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXJSZWYuaXNPcGVuKCkpIHRoaXMucG9wb3ZlclJlZj8ub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERyb3Bkb3duVmFsdWUoXG4gICAgICAgIG9wdGlvbjogT3B0aW9uTW9kZWwsXG4gICAgICAgIG9wdGlvblZhbHVlPzogc3RyaW5nLFxuICAgICAgICBsYWJlbD86IHN0cmluZ1xuICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG9wdGlvbik7XG4gICAgICAgIGNvbnN0IG9wdFZhbHVlID0gb3B0aW9uVmFsdWUgPyBvcHRpb25WYWx1ZSA6IHRoaXMub3B0aW9uVmFsdWU7XG4gICAgICAgIGNvbnN0IGxiZWwgPSBsYWJlbCA/IGxhYmVsIDogdGhpcy5sYWJlbDtcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gb3B0VmFsdWVcbiAgICAgICAgICAgID8gb3B0aW9uW29wdFZhbHVlIGFzIGtleW9mIE9wdGlvbk1vZGVsXVxuICAgICAgICAgICAgOiBvcHRpb247XG5cbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IG9wdGlvbltsYmVsIGFzIGtleW9mIE9wdGlvbk1vZGVsXSB8fCBjb250cm9sVmFsdWU7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbjtcbiAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoY29udHJvbFZhbHVlLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIE11bHRpc2VsZWN0IERyb3Bkb3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgb25NdWx0aXNlbGVjdFNlbGVjdChvcHRpb246IE9wdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgLy90aGlzLmlucHV0Q29uZmlnLmxhYmVsID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0SXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3B0aW9uLmlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gb3B0aW9uLmlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbS5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zID0gdGhpcy5fb3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdCh0aGlzLm11bHRpc2VsZWN0SXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLnNvcnQoXG4gICAgICAgICAgICAoeCwgeSkgPT4gTnVtYmVyKHkuYWN0aXZlKSAtIE51bWJlcih4LmFjdGl2ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBbLi4udGhpcy5fb3B0aW9uc107XG5cbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAuc2xpY2UoLTEpWzBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTXVsdGlTZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHRoaXMubXVsdGlzZWxlY3RJdGVtc1tpbmRleF0uaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm11bHRpc2VsZWN0SXRlbXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc29ydChcbiAgICAgICAgICAgICh4LCB5KSA9PiBOdW1iZXIoeS5hY3RpdmUpIC0gTnVtYmVyKHguYWN0aXZlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5fb3B0aW9ucztcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgIC5zbGljZSgtMSlbMF07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChcbiAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKGN1cnJlbnRMYWJlbD86IHN0cmluZykge1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KG51bGwpO1xuXG4gICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gIXRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgRW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBkcm9wZG93blZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgICBwdWJsaWMgc2V0Q29udHJvbFZhbHVlKHZhbHVlPzogc3RyaW5nLCBkcm9wZG93bklucHV0VmFsdWU/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7IC8vIE5vdGlmeSBBbmd1bGFyIGZvcm0gYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICBpZiAodmFsdWUpIHRoaXMub25Ub3VjaGVkKCk7IC8vIE1hcmsgYXMgdG91Y2hlZFxuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWUgPSBkcm9wZG93bklucHV0VmFsdWUgfHwgdmFsdWU7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKGRyb3Bkb3duSW5wdXRWYWx1ZSB8fCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdGhyb3VnaCBkcm9wZG93biB3aXRoIGtleWJvYXJkIGFycm93c1xuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25OYXZpZ2F0aW9uKHN0ZXA6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXh0U3RlcCA9IHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSArIHN0ZXA7XG5cbiAgICAgICAgaWYgKG5leHRTdGVwID4gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kcm9wZG93bk9wdGlvbi5sZW5ndGggLSAxKVxuICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gMDtcbiAgICAgICAgZWxzZSBpZiAobmV4dFN0ZXAgPCAwKVxuICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID1cbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRyb3Bkb3duT3B0aW9uLmxlbmd0aCAtIDE7XG4gICAgICAgIGVsc2UgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gbmV4dFN0ZXA7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJhcHBsaWNhdGlvbi1kcm9wZG93blwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGlucHV0Q29uZmlnXG4gICAgICAgICAgICB8IGlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzXG4gICAgICAgICAgICAgICAgOiBtdWx0aXNlbGVjdEl0ZW1zXG4gICAgICAgICAgICAgICAgOiBpc011bHRpU2VsZWN0SW5wdXRGb2N1c1xuICAgIFwiXG4+XG4gICAgQGlmIChtdWx0aXNlbGVjdEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICA8cCBjbGFzcz1cIm11bHRpc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBtdWx0aVNlbGVjdExhYmVsIH19XG4gICAgICAgIDwvcD5cbiAgICB9XG5cbiAgICBAaWYgKGlucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmUpIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBhcnJvdyAtLT5cbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWFycm93XCJcbiAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy5pbnB1dERyb3Bkb3duQXJyb3dTdmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKVwiXG4gICAgICAgID48L3N2Zy1pY29uPlxuICAgIH1cblxuICAgIEBpZiAobXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiYgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBjbGVhciBhbGwgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY2xlYXIgbXVsdGlzZWxlY3QtY2xlYXJcIlxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhciBBbGxcIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMmYyZjJmXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24gJiZcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgX3RlbXBsYXRlID09PSAnbXVsdGlzZWxlY3QnXG4gICAgKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgaXRlbXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcyB7eyBtdWx0aXNlbGVjdFRlbXBsYXRlIH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0IG9mIG11bHRpc2VsZWN0SXRlbXM7XG4gICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4O1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSAkaW5kZXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSAtIFRvdGFsIENvdW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19IG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm11bHRpU2VsZWN0SXRlbVJhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJmMmYyZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gc2VhcmNoIC0tPlxuXG4gICAgQGlmICghaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgQGlmICghc2VhcmNoSW5wdXRUZXh0LnZhbHVlKSB7XG4gICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJkcm9wRG93bklzT3BlblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmxlZnRJY29uXT1cImlucHV0Q29uZmlnLnBsYWNlaG9sZGVySWNvblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdncm91cHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25fdmFsdWUgZHJvcGRvd24tb3B0aW9ucyAge3tcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKF90ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vcHRpb24gZHJvcGRvd24tZG91YmxlLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOb1Jlc3Vsc3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlci1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZC1icm9rZXItY29udGFjdC1ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93bldpdGhJbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNwZWNpYWwgRHJvcGRvd24gU2VsZWN0ZWQgU1ZHIHdpdGggb3IgV2l0aG91dCBUZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQgJiYgYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5wdXREcm9wZG93bkdldEljb25zOiBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2Uge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5zZXQtY29sb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtPy5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnI2ZmZmZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ud2l0aFRleHQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkcm9wZG93blZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxjYS1pbnB1dC10ZXN0XG4gICAgICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImNhSW5wdXREcm9wZG93blBvcG92ZXJcIlxuICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICAgICAgW3BsYWNlbWVudF09XCJcbiAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXG4gICAgICAgICAgICAgICAgICAgID8gWydib3R0b20tbGVmdCcsICd0b3AtbGVmdCddXG4gICAgICAgICAgICAgICAgICAgIDogWydib3R0b20tbGVmdCddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRGb3JtQ29udHJvbCB8IGZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtwYXJlbnRDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICBbaW5jb3JyZWN0VmFsdWVdPVwiaXNJbmNvcnJlY3RWYWx1ZVwiXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJfdGVtcGxhdGVcIlxuICAgICAgICAgICAgKGJsdXJJbnB1dCk9XCJvbkJsdXJJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGVhcik9XCJvbkNsZWFySW5wdXRFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjb21tYW5kRXZlbnQpPVwiY29tbWFuZEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKHNob3dIaWRlRHJvcGRvd24pPVwic2hvd0hpZGVEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChkcm9wRG93bktleU5hdmlnYXRpb24pPVwiZHJvcERvd25LZXlOYXZpZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgKGluY29ycmVjdEV2ZW50KT1cIm9uSW5jb3JyZWN0SW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoaGlkZGVuKT1cImhhbmRsZUhpZGRlbkRyb3Bkb3duKClcIlxuICAgICAgICAgICAgKHNob3duKT1cImhhbmRsZU9wZW5Ecm9wZG93bigpXCJcbiAgICAgICAgPjwvY2EtaW5wdXQtdGVzdD5cbiAgICB9XG5cbiAgICA8IS0tIERyb3Bkb3duIGljb24gaW5zdGVhZCBvZiBpbnB1dCAtLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnLmlzSWNvbklucHV0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGlucHV0LWljb24tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICB2YWxpZDpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaXNWYWxpZEljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlucHV0SWNvbj8uaW5jbHVkZXMoJ2N1c3RvbScpLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogcG9wb3ZlclJlZj8uaXNPcGVuKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJbJ2JvdHRvbS1sZWZ0J11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtaWNvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXREcm9wZG93blN2Z1JvdXRlcy5yZXBhaXJQbVN2Z1JvdXRlICtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaW5wdXRJY29uXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjY2FJbnB1dERyb3Bkb3duUG9wb3Zlcj5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEcm9wZG93biBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnPy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCAmJiBfb3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucy1kaXZpZGVyIHt7XG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzcGF0Y2hfZHJvcGRvd25dPVwiX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgICAoaW5wdXRDb25maWc/Lm5hbWUgIT0gJ0FkZHJlc3MnICYmXG4gICAgICAgICAgICBpbnB1dENvbmZpZz8ubmFtZSAhPSAnUm91dGluZ0FkZHJlc3MnICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCkgfHxcbiAgICAgICAgKChpbnB1dENvbmZpZz8ubmFtZSA9PSAnQWRkcmVzcycgfHxcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgX29wdGlvbnM/Lmxlbmd0aClcbiAgICApIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbERyb3Bkb3duKCRldmVudC50YXJnZXQpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZ3JvdXBzJyB8fFxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyxcbiAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgJ25vLXJlc3VsdC1jb250YWluZXInOiBfb3B0aW9uc1swXT8ubmFtZSA9PT0gJ05vIFJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zICB7eyBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3MgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICBAc3dpdGNoIChfdGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTVkcgVGVtcGxhdGUgKFJlbmRlciBzdmdzIG9yIHRleHQgaWYgc3ZncyBkb2Vzbid0IGV4aXN0ICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5TVkdfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duV2l0aEltYWdlXT1cImlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyIFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93blN2Z1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdmcgVGV4dCBUZW1wbGF0ZSAoZGlzcGxheSBmbGV4KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN2Z1RleHRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGlzcGF0Y2ggZHJvcGRvd24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9ESVNQQVRDSF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGF0Y2hUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGV0YWlscyB0ZW1wbGF0ZSAodHJ1Y2ssIHRyYWlsZXIuLi4gZGV0YWlscy1wYWdlcykgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uREVUQUlMU19URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRdPVwiX3NvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXRhaWxzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdyb3VwaW5nIHRlbXBsYXRlIChjYW4gc2VlIG9uIGNvbnRhY3QgbW9kYWwpICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkdST1VQUykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNdWx0aXNlbGVjdCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLk1VTFRJU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1dPVwibGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uTXVsdGlzZWxlY3RTZWxlY3QpPVwib25NdWx0aXNlbGVjdFNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMYWJlbHMgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MQUJFTFMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sYWJlbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbE1vZGVdPVwibGFiZWxNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5BZGROZXddPVwiX2NhbkFkZE5ld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxhYmVscz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEaXNwYXRjaCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRJU1BBVENIKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIERpc3BhdGNoZXIgVGVtcGxhdGUgKHVzZXIgYXZhdGFyICsgdXNlciBuYW1lKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBDb21iaW5lIFRydWNrLVRyYWlsZXItRHJpdmVyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVTX1RURCkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIENvbnRhY3QgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3Q+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBTaGlwcGVyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9TSElQUEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRlbXBsYXRlIFRleHQgLSBDb3VudGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uVEVYVF9DT1VOVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1ZWwgRnJhbmNoaXNlIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRlVFTF9GUkFOQ0hJU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b2dnbGVOZXN0ZWRMaXN0KT1cInRvZ2dsZU5lc3RlZExpc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtR3JvdXApPVwib25BY3RpdmVJdGVtR3JvdXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIERvdWJsZSBUZXh0IFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ET1VCTEVfVEVYVF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBEb3VibGUgQ29sdW1uIFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ET1VCTEVfQ09MVU1OX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRyaXBsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRSSVBMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gUEFZUk9MTCBUUlVDS1MgVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlBBWVJPTExfVFJVQ0tTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3NcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWZhdWx0IFRlbXBsYXRlIC0gUmVuZGVyIE9ubHkgVGV4dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
693
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFDSCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLElBQUksRUFDSixPQUFPLEVBQ1AsU0FBUyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBRWQsWUFBWTtBQUNaLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsU0FBUyxHQUNaLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsWUFBWTtBQUNaLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUt0RCxhQUFhO0FBQ2IsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sb0ZBQW9GLENBQUM7QUFDeEksT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sb0dBQW9HLENBQUM7QUFDL0osT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNEZBQTRGLENBQUM7QUFDcEosT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sc0ZBQXNGLENBQUM7QUFDM0ksT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sOEZBQThGLENBQUM7QUFDdkosT0FBTyxFQUFFLCtDQUErQyxFQUFFLE1BQU0sZ0hBQWdILENBQUM7QUFDakwsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDMUgsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sb0ZBQW9GLENBQUM7QUFDekksT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDMUgsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sb0dBQW9HLENBQUM7QUFDL0osT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sb0dBQW9HLENBQUM7QUFDL0osT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sc0ZBQXNGLENBQUM7QUFDM0ksT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sc0dBQXNHLENBQUM7QUFDbEssT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sc0dBQXNHLENBQUM7QUFDbEssT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sOEZBQThGLENBQUM7QUFDdkosT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sMEZBQTBGLENBQUM7QUFDakosT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDaEksT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sOEZBQThGLENBQUM7QUFDdkosT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sMEZBQTBGLENBQUM7QUFDakosT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sMElBQTBJLENBQUM7QUFDek0sT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNEhBQTRILENBQUM7QUFDcEwsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sb0pBQW9KLENBQUM7QUFDbk4sT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sd0lBQXdJLENBQUM7QUFFcE0sUUFBUTtBQUNSLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6QixpQ0FBaUMsR0FDcEMsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsVUFBVTtBQUNWLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELGFBQWE7QUFDYixPQUFPLEVBRUgsV0FBVyxFQUNYLFdBQVcsRUFFWCxtQkFBbUIsR0FDdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQU14QixhQUFhO0FBQ2IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdEYsUUFBUTtBQUNSLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2RSxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLFVBQVU7QUFDVixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVwRixhQUFhO0FBQ2IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sb0pBQW9KLENBQUM7Ozs7OztBQXNEbk4sTUFBTSxPQUFPLHdCQUF3QjtJQTBCakMsSUFBYSxRQUFRLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBSUQsSUFBYSxTQUFTLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDLENBQUMsMEJBQTBCO0lBRTVCLElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQU1ELElBQWEsSUFBSSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBSUQsSUFBYSxVQUFVLENBQUMsS0FBeUI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQU9ELElBQWEsT0FBTyxDQUFDLE1BQXFCO1FBQ3RDLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRXhDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCO2dCQUNyRCxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDcEIsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FDakMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBZ0MsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FDM0IsQ0FBQztZQUVGLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxJQUFhLHVCQUF1QixDQUFDLE1BQXFCO1FBQ3RELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkQsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBbUVELFlBQ21CLFlBQXVCLEVBQzlCLEtBQXdCLEVBQ3hCLFFBQW1CO1FBRlosaUJBQVksR0FBWixZQUFZLENBQVc7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQXhKL0IscUJBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDOUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFJaEMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQXlDNUIscUVBQXFFO1FBQzlELGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBeUMxQixpQkFBWSxHQUNsQixJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUNqQyxrQkFBYSxHQUNuQixJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUNuQyxzQkFBaUIsR0FDdkIsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDakMsc0JBQWlCLEdBQ3ZCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDckIsa0JBQWEsR0FDbkIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN0QixhQUFRLEdBR2IsSUFBSSxZQUFZLEVBQWdELENBQUM7UUFDNUQsbUJBQWMsR0FDcEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN0Qix5QkFBb0IsR0FDMUIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNWLG9CQUFlLEdBQ2pDLElBQUksWUFBWSxFQUFVLENBQUM7UUFDUixxQkFBZ0IsR0FDbkMsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUNULG9CQUFlLEdBQ3RDLElBQUksWUFBWSxFQUFXLENBQUM7UUFFSixxQkFBZ0IsR0FDeEMsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMvQixTQUFTO1FBQ0Ysb0JBQWUsR0FBRyxJQUFJLGlCQUFpQixDQUMxQyxJQUFJLEVBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUN4QixDQUFDO1FBRUYsa0JBQWtCO1FBQ1gsb0JBQWUsR0FBa0IsRUFBRSxDQUFDO1FBRTNDLGFBQWE7UUFDTixxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFFcEMsK0JBQStCO1FBQ3hCLHFCQUFnQixHQUFrQixFQUFFLENBQUM7UUFDckMsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBSWhELFdBQVc7UUFDSixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVwQyxvQ0FBb0M7UUFDNUIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFNL0IsMkJBQXNCLEdBQUcsc0JBQXNCLENBQUM7UUFDaEQsNkJBQXdCLEdBQUcsd0JBQXdCLENBQUM7UUFFM0QsVUFBVTtRQUNGLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBY2hDLHFCQUFnQixHQUFnQixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQWdCdEQsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQTBkNUIsNkVBQTZFO1FBRXRFLGtCQUFhLEdBQXVCLEVBQUUsQ0FBQztRQW5mMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQ3JDLENBQUM7SUFLRCxVQUFVLENBQUMsS0FBVTtRQUNqQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQjtZQUNyRCxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNwQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUNqQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFnQyxDQUFDLElBQUksS0FBSyxDQUNyRSxDQUFDO1FBRUYsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0wsQ0FBQztJQUdNLFFBQVEsQ0FBQyxDQUFNLElBQVMsQ0FBQztJQUV6QixnQkFBZ0IsQ0FBQyxFQUFPO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxRQUFRO1FBQ0osY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVk7YUFDN0IsSUFBSSxDQUNELG9CQUFvQixFQUFFLEVBQ3RCLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQzNCO2FBQ0EsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUF5QjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxLQUFvQixDQUFDO1FBRXBDLElBQUksTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1lBRTNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQW1CLEVBQUUsS0FBVztRQUNoRCxJQUNJLElBQUksQ0FBQyxZQUFZO1lBQ2pCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxTQUFTLEVBQ25ELENBQUM7WUFDQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDbkIsRUFBRSxFQUFFLElBQUk7Z0JBQ1IsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE9BQU87Z0JBQ2hDLFlBQVksRUFBRSxJQUFJO2FBQ3JCLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBMEM7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQW9CO1FBQ3BDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssd0JBQXdCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUN0QixNQUFNLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZ0IsQ0FBQyxLQUFLO1NBQ3BDLENBQUM7UUFDRiw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBRW5DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFOUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUs7Z0JBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTztnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlO29CQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJO29CQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLO2dCQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7b0JBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUk7YUFDL0IsQ0FBQztZQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUs7YUFDcEMsQ0FBQztRQUNOLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztZQUN0QixNQUFNLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLFFBQVEsRUFBRTtnQkFDTixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixZQUFZLEVBQUU7b0JBQ1YsS0FBSyxFQUFFO3dCQUNILElBQUksRUFBRSxTQUFTO3dCQUNmLGVBQWUsRUFBRSxTQUFTO3FCQUM3QjtvQkFDRCxJQUFJLEVBQUUsU0FBUztvQkFDZixHQUFHLEVBQUUsc0JBQXNCLENBQUMsY0FBYztpQkFDN0M7Z0JBQ0QsYUFBYSxFQUFFO29CQUNYLEtBQUssRUFBRTt3QkFDSCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxlQUFlLEVBQUUsU0FBUztxQkFDN0I7b0JBQ0QsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsR0FBRyxFQUFFLHNCQUFzQixDQUFDLFNBQVM7aUJBQ3hDO2FBQ0o7WUFDRCxXQUFXLEVBQUUsRUFBRTtTQUNsQixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWEsRUFBRSxJQUFpQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQW1CO1FBQ3ZDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFcEQsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFFM0IsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQWM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDekIsaUJBQWlCO1lBRWpCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDOUIsQ0FBQztZQUNELGtCQUFrQjtpQkFDYixDQUFDO2dCQUNGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFlO1FBQ25DLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxNQUFNLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsZUFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsZ0JBQWdCO1FBQ2hCLElBQ0ksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQztZQUN2RCxDQUFDLE1BQU0sRUFDVCxDQUFDO1lBQ0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksU0FBUyxHQUFrQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6QixTQUFTLENBQUMsSUFBSSxDQUNWLEdBQUcsTUFBTSxDQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQXVDLENBQzNELENBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEVBQ3pCLE9BQU8sRUFDUCxJQUFJLEdBSVA7UUFDRyxnQkFBZ0I7UUFDaEIsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxjQUFjO1FBQ2QsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELGdCQUFnQjtRQUNoQixJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLFlBQVksQ0FBQztZQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNwQyxZQUFZLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BELENBQUM7aUJBQU0sQ0FBQztnQkFDSixZQUFZO29CQUNSLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7d0JBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQ3hCO3dCQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ25DLENBQUM7WUFFRCxJQUNJLElBQUksQ0FBQyxZQUFZO2dCQUNqQixZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssU0FBUyxFQUN6RCxDQUFDO2dCQUNDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUNuQixFQUFFLEVBQUUsSUFBSTtvQkFDUixJQUFJLEVBQUUsa0JBQWtCLENBQUMsT0FBTztvQkFDaEMsWUFBWSxFQUFFLElBQUk7aUJBQ3JCLENBQUMsQ0FBQztZQUNQLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzRCxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUNuQixNQUFtQixFQUNuQixXQUFvQixFQUNwQixLQUFjO1FBRWQsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDOUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEMsTUFBTSxZQUFZLEdBQUcsUUFBUTtZQUN6QixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQTZCLENBQUM7WUFDdkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUViLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUF5QixDQUFDLElBQUksWUFBWSxDQUFDO1FBRXJFLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELDhGQUE4RjtJQUN2RixtQkFBbUIsQ0FBQyxNQUFtQjtRQUMxQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLHFDQUFxQztRQUVyQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUQsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztvQkFDSCxHQUFHLElBQUk7b0JBQ1AsTUFBTSxFQUFFLElBQUk7aUJBQ2YsQ0FBQztZQUNOLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNmLE9BQU87d0JBQ0gsR0FBRyxJQUFJO3dCQUNQLE1BQU0sRUFBRSxLQUFLO3FCQUNoQixDQUFDO2dCQUNOLENBQUM7cUJBQU0sQ0FBQztvQkFDSixPQUFPO3dCQUNILEdBQUcsSUFBSTt3QkFDUCxNQUFNLEVBQUUsSUFBSTtxQkFDZixDQUFDO2dCQUNOLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDaEQsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFFBQVE7YUFDekMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzdCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEQsQ0FBQztJQUNMLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFhO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5QyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM5QyxPQUFPO29CQUNILEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztvQkFDL0IsTUFBTSxFQUFFLEtBQUs7aUJBQ2hCLENBQUM7WUFDTixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDaEQsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFFBQVE7aUJBQ3pDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDN0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0IsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxZQUFxQjtRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxPQUFPO2dCQUNILEdBQUcsSUFBSTtnQkFDUCxNQUFNLEVBQUUsS0FBSzthQUNoQixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRU0seUJBQXlCO1FBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUU3RCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFJTSxlQUFlLENBQUMsS0FBYyxFQUFFLGtCQUEyQjtRQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsdUNBQXVDO1FBQzdELElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtRQUMvQyxJQUFJLENBQUMsYUFBYSxHQUFHLGtCQUFrQixJQUFJLEtBQUssQ0FBQztRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQixDQUFDLElBQVk7UUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUU5QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzlELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7YUFDekIsSUFBSSxRQUFRLEdBQUcsQ0FBQztZQUNqQixJQUFJLENBQUMsZ0JBQWdCO2dCQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7O1lBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsWUFBWSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7K0dBMXJCUSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix1OUJBOUN0QixDQUFDLGVBQWUsQ0FBQywrVENsSGhDLDRsb0NBc3lCQTtnQkRqckJRLFNBQVM7Z0JBQ1QsWUFBWSw0SEFDWixXQUFXLHNJQUNYLGdCQUFnQixzWEFDaEIsbUJBQW1CLGlOQUNuQixTQUFTLHNXQUNULG9CQUFvQixpT0FJcEIsdUNBQXVDLDJNQUN2QywrQ0FBK0Msb05BQy9DLDhCQUE4QixrTEFDOUIsbUNBQW1DLDZNQUNuQyw4QkFBOEIsMk5BQzlCLGtDQUFrQyx1TEFDbEMseUNBQXlDLCtMQUN6QyxzQ0FBc0MsME1BQ3RDLHlDQUF5QywrTEFDekMseUNBQXlDLHdMQUN6QyxtQ0FBbUMsd0xBQ25DLDBDQUEwQyxnTUFDMUMsMENBQTBDLGdNQUMxQyx1Q0FBdUMsMk1BQ3ZDLHFDQUFxQyxtT0FDckMsZ0NBQWdDLG9MQUNoQyx1Q0FBdUMsb01BQ3ZDLHFDQUFxQywwTEFDckMsbUNBQW1DLDZNQUNuQyxrQkFBa0IscVZBQ2xCLDZDQUE2Qyw4S0FDN0Msc0NBQXNDLDRJQUN0Qyw2Q0FBNkMsMkpBQzdDLDBDQUEwQyxrTUFDMUMsNkNBQTZDO2dCQUM3QyxRQUFRO2dCQUNSLGVBQWUsK0NBQ2YsaUJBQWlCLG1EQUNqQixpQ0FBaUMsaUVBQ2pDLG1CQUFtQix5REFDbkIseUJBQXlCLGdEQTFDakIsQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDOzs0RkE2Q3RELHdCQUF3QjtrQkFwRHBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBR3JCLElBQUksaUJBQ0QsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLGVBQWUsQ0FBQyxjQUNoQixDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLENBQUMsV0FDdEQ7d0JBQ0wsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1Qsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQix1Q0FBdUM7d0JBQ3ZDLCtDQUErQzt3QkFDL0MsOEJBQThCO3dCQUM5QixtQ0FBbUM7d0JBQ25DLDhCQUE4Qjt3QkFDOUIsa0NBQWtDO3dCQUNsQyx5Q0FBeUM7d0JBQ3pDLHNDQUFzQzt3QkFDdEMseUNBQXlDO3dCQUN6Qyx5Q0FBeUM7d0JBQ3pDLG1DQUFtQzt3QkFDbkMsMENBQTBDO3dCQUMxQywwQ0FBMEM7d0JBQzFDLHVDQUF1Qzt3QkFDdkMscUNBQXFDO3dCQUNyQyxnQ0FBZ0M7d0JBQ2hDLHVDQUF1Qzt3QkFDdkMscUNBQXFDO3dCQUNyQyxtQ0FBbUM7d0JBQ25DLGtCQUFrQjt3QkFDbEIsNkNBQTZDO3dCQUM3QyxzQ0FBc0M7d0JBQ3RDLDZDQUE2Qzt3QkFDN0MsMENBQTBDO3dCQUMxQyw2Q0FBNkM7d0JBQzdDLFFBQVE7d0JBQ1IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGlDQUFpQzt3QkFDakMsbUJBQW1CO3dCQUNuQix5QkFBeUI7cUJBQzVCOzswQkEyS0ksSUFBSTtpR0FqS1csUUFBUTtzQkFBM0IsU0FBUzt1QkFBQyxPQUFPO2dCQUNNLFVBQVU7c0JBQWpDLFNBQVM7dUJBQUMsSUFBSTtnQkFFZixvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUkzQyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFTTyxRQUFRO3NCQUFwQixLQUFLO2dCQUlHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBUUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJTyxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBUUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBcUJPLHVCQUF1QjtzQkFBbkMsS0FBSztnQkFlRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxRQUFRO3NCQUFqQixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVlLGVBQWU7c0JBQXBDLE1BQU07dUJBQUMsWUFBWTtnQkFFRyxnQkFBZ0I7c0JBQXRDLE1BQU07dUJBQUMsYUFBYTtnQkFFTSxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHRyxnQkFBZ0I7c0JBQTNDLE1BQU07dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgc2tpcCxcbiAgICBTdWJqZWN0LFxuICAgIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbi8vIGJvb3RzdHJhcFxuaW1wb3J0IHtcbiAgICBOZ2JQb3BvdmVyLFxuICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgTmdiTW9kdWxlLFxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbi8vIGFuaW1hdGlvblxuaW1wb3J0IHsgaW5wdXREcm9wZG93bkFuaW1hdGlvbiB9IGZyb20gJy4vYW5pbWF0aW9ucyc7XG5cbi8vIGNvbmZpZ1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC9jb25maWcnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0L2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlci9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbSc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXItaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0uY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zUGlwZSB9IGZyb20gJy4vcGlwZXMvZHJvcGRvd24tb3B0aW9ucy5waXBlJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuaW1wb3J0IHsgT3B0aW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9pbnB1dC1kcm9wZG93bi1vcHRpb24ubW9kZWwnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbi8vIGNsYXNzZXNcbmltcG9ydCB7IEV2ZW50SW5wdXRNYW5hZ2VyIH0gZnJvbSAnLi4vY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWV2ZW50LW1hbmFnZXInO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBJbnB1dFRlc3RDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhTG9hZFN0YXR1c1N0cmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhLWxvYWQtc3RhdHVzLXN0cmluZy9jYS1sb2FkLXN0YXR1cy1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IENhUHJvZmlsZUltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtcHJvZmlsZS1pbWFnZS9jYS1wcm9maWxlLWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNhLWlucHV0LWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0Zvcm1Db250cm9sUGlwZV0sXG4gICAgYW5pbWF0aW9uczogW2lucHV0RHJvcGRvd25BbmltYXRpb24oJ3Nob3dIaWRlRHJvcGRvd25PcHRpb25zJyldLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nYk1vZHVsZSxcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIC8vIENvbXBvbmVudFxuICAgICAgICBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCxcbiAgICAgICAgQ2FMb2FkU3RhdHVzU3RyaW5nQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Hcm91cHNDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVzVHRkQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25UZXh0Q291bnRlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRG91YmxlVGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25UcmlwbGVUZXh0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRlZmF1bHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRnVlbEZyYW5jaGlzZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRGlzcGF0Y2hDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRldGFpbHNUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZnVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIElucHV0VGVzdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtLFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlclNoaXBwZXJJdGVtQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlckl0ZW1Db21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgLy8gUGlwZXNcbiAgICAgICAgRm9ybUNvbnRyb2xQaXBlLFxuICAgICAgICBEcm9wZG93bkNvdW50UGlwZSxcbiAgICAgICAgSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q2xhc3NQaXBlLFxuICAgICAgICBEcm9wZG93bk9wdGlvbnNQaXBlLFxuICAgICAgICBJbnB1dERyb3Bkb3duR2V0SWNvbnNQaXBlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIENhSW5wdXREcm9wZG93bkNvbXBvbmVudFxuICAgIGltcGxlbWVudHNcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBBZnRlclZpZXdJbml0XG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFJlZiE6IElucHV0VGVzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCd0MicpIHB1YmxpYyBwb3BvdmVyUmVmITogTmdiUG9wb3ZlcjtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbXBvbmVudFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBhbnk7XG5cbiAgICAvLyBMYWJlbCBpbnB1dCAtIHZhbHVlIHRoYXQgd2lsbCBiZSBzaG93ZWQgaW5zaWRlIGlucHV0XG4gICAgQElucHV0KCkgbGFiZWwhOiBrZXlvZiBPcHRpb25Nb2RlbDtcblxuICAgIC8vIG9wdGlvblZhbHVlIGlucHV0IC0ga2V5IHZhbHVlIGZyb20gb2JqZWN0IC0gRW1pdCB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB3aG9sZSBvYmplY3RcbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZSE6IHN0cmluZztcblxuICAgIGlucHV0SG92ZXJlZEl0ZW06IG51bWJlciA9IC0xO1xuICAgIGRyb3BEb3duSXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBkaWZmZXJlbnQgdGVtcGxhdGVzIGZvciBib2R5IHJlbmRlcmluZ1xuICAgIHB1YmxpYyBfdGVtcGxhdGUhOiBzdHJpbmc7XG4gICAgX2NhbkFkZE5ldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2V0IHRlbXBsYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGVtcGxhdGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBtdWx0aXNlbGVjdFRlbXBsYXRlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgQElucHV0KCkgc2V0IGNhbkFkZE5ldyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9jYW5BZGROZXcgPSB2YWx1ZTtcbiAgICB9IC8vIEFERCBORVcgaXRlbSBpbiBvcHRpb25zXG5cbiAgICBwdWJsaWMgZ2V0IGNhbkFkZE5ldygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbkFkZE5ldztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBjYW5PcGVuTW9kYWwhOiBib29sZWFuOyAvLyBvcGVuIG1vZGFsIHdpdGggQUREIE5FVyBidXR0b25cblxuICAgIC8vIHNvcnQtdGVtcGxhdGUgZm9yIGRpZmZlcmVudCBvcHRpb25zXG4gICAgcHVibGljIF9zb3J0ITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNldCBzb3J0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc29ydCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc29ydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnQ7XG4gICAgfVxuXG4gICAgLy8gY3VycmVudGx5IGFjdGl2ZSBpdGVtXG4gICAgcHVibGljIF9hY3RpdmVJdGVtITogT3B0aW9uTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHNldCBhY3RpdmVJdGVtKHZhbHVlOiBPcHRpb25Nb2RlbCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW07XG4gICAgfVxuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbUNvbG9yITogT3B0aW9uTW9kZWwgfCBudWxsOyAvLyBjdXJyZW50bHkgYWN0aXZlIGNvbG9yIGluIGRyb3Bkb3duXG4gICAgQElucHV0KCkgbGFiZWxNb2RlITogJ0xhYmVsJyB8ICdDb2xvcic7XG5cbiAgICAvLyB3aGVuIHNlbmQgU1ZHLCBwbGVhc2UgcHJlbW1hcGVkIG9iamVjdDogYWRkICdmb2xkZXInIHwgJ3N1YmZvbGRlcidcbiAgICBwdWJsaWMgX29wdGlvbnM6IE9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyh2YWx1ZXM6IE9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcykgdGhpcy5fb3B0aW9ucyA9IFsuLi52YWx1ZXNdO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmxhc3RWYWxpZE9wdGlvbicsIHRoaXMubGFzdFZhbGlkT3B0aW9uKTtcbiAgICAgICAgaWYgKHRoaXMubGFzdFZhbGlkT3B0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5kSW5PcHRpb25zID0gdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXhcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0TWFpbkdyb3VwKClcbiAgICAgICAgICAgICAgICA6IHRoaXMuX29wdGlvbnM7XG4gICAgICAgICAgICBjb25zdCBmaW5kT3B0aW9uID0gZmluZEluT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvcHRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvblt0aGlzLm9wdGlvblZhbHVlIGFzIGtleW9mIE9wdGlvbk1vZGVsXSA9PVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RWYWxpZE9wdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGZpbmRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoZmluZE9wdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNdWx0aVNlbGVjdCBTZWxlY3RlZCBJdGVtcyBGcm9tIEJhY2tlbmRcbiAgICBASW5wdXQoKSBzZXQgcHJlbG9hZE11bHRpc2VsZWN0SXRlbXModmFsdWVzOiBPcHRpb25Nb2RlbFtdKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKHRoaXMuaW5wdXRDb25maWcubGFiZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk11bHRpc2VsZWN0U2VsZWN0KGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgaXNEZXRhaWxzUGFnZXMhOiBib29sZWFuOyAvLyBvbmx5IGZvciBkZXRhaWxzIHBhZ2VzXG4gICAgQElucHV0KCkgaXNJbmNvcnJlY3RWYWx1ZSE6IGJvb2xlYW47IC8vIGFwcGxpY2FudCByZXZpZXcgb3B0aW9uXG4gICAgQElucHV0KCkgaXNBZGRyZXNzRHJvcGRvd24hOiBib29sZWFuOyAvLyBvbmx5IGZvciBhZGRyZXNzIGRyb3Bkb3duXG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtOiBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWwgfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWwgfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zOiBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWxbXSB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbFtdIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtQ29sb3I6IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbCB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbCB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkTGFiZWxNb2RlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBjbG9zZURyb3Bkb3duOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHNhdmVJdGVtOiBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBkYXRhOiBPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRhdGE6IE9wdGlvbk1vZGVsIHwgbnVsbDsgYWN0aW9uOiBzdHJpbmcgfT4oKTtcbiAgICBAT3V0cHV0KCkgaW5jb3JyZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgcGxhY2Vob2xkZXJJY29uRXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCdwYWdpbmF0aW9uJykgcGFnaW5hdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIEBPdXRwdXQoJ2FjdGl2ZUdyb3VwJykgYWN0aXZlR3JvdXBFdmVudDogRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWw+KCk7XG4gICAgQE91dHB1dCgnY2xlYXJJbnB1dEV2ZW50JykgY2xlYXJJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KCdzZWFyY2hJbnB1dEV2ZW50Jykgc2VhcmNoSW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICAvLyBldmVudHNcbiAgICBwdWJsaWMgc2VhcmNoSW5wdXRUZXh0ID0gbmV3IEV2ZW50SW5wdXRNYW5hZ2VyPHN0cmluZz4oXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFdmVudFxuICAgICk7XG5cbiAgICAvLyBDb3B5IG9mIE9wdGlvbnNcbiAgICBwdWJsaWMgb3JpZ2luYWxPcHRpb25zOiBPcHRpb25Nb2RlbFtdID0gW107XG5cbiAgICAvLyBQYWdpbmF0aW9uXG4gICAgcHVibGljIHBhZ2luYXRpb25OdW1iZXI6IG51bWJlciA9IDA7XG5cbiAgICAvLyBNdWx0aXNlbGVjdCBkcm9wZG93biBvcHRpb25zXG4gICAgcHVibGljIG11bHRpc2VsZWN0SXRlbXM6IE9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBwdWJsaWMgaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgbXVsdGlTZWxlY3RMYWJlbCE6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgbGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSE6IE9wdGlvbk1vZGVsIHwgbnVsbDtcblxuICAgIC8vIEFkZCBtb2RlXG4gICAgcHVibGljIGlzSW5BZGRNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBEcm9wZG93biBuYXZpZ2F0aW9uIHdpdGgga2V5Ym9hcmRcbiAgICBwcml2YXRlIGRyb3Bkb3duUG9zaXRpb246IG51bWJlciA9IC0xO1xuXG4gICAgLy8gRHJvcGRvd24gQ2xlYXJ0aW1lb3V0XG4gICAgcHVibGljIGNsZWFyVGltZW91dERyb3Bkb3duOiBzdHJpbmcgfCBudW1iZXIgfCBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBob3ZlcmluZ0luZGV4ITogbnVtYmVyO1xuICAgIHB1YmxpYyBpbnB1dERyb3Bkb3duU3ZnUm91dGVzID0gSW5wdXREcm9wZG93blN2Z1JvdXRlcztcbiAgICBwdWJsaWMgZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtID0gRHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtO1xuXG4gICAgLy8gRGVzdHJveVxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgcHVibGljIHN1cGVyQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3VwZXJDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGdldCBnZXRTdXBlckNvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnB1dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcblxuICAgIHB1YmxpYyBsYXN0VmFsaWRPcHRpb24hOiBPcHRpb25Nb2RlbDtcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmluZEluT3B0aW9ucyA9IHRoaXMuaW5wdXRDb25maWcuc2VhcmNoaW5Hcm91cEluZGV4XG4gICAgICAgICAgICA/IHRoaXMuZ2V0TWFpbkdyb3VwKClcbiAgICAgICAgICAgIDogdGhpcy5fb3B0aW9ucztcbiAgICAgICAgY29uc3QgZmluZE9wdGlvbiA9IGZpbmRJbk9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvblt0aGlzLm9wdGlvblZhbHVlIGFzIGtleW9mIE9wdGlvbk1vZGVsXSA9PSB2YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChmaW5kT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoZmluZE9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4ge307XG4gICAgcHVibGljIG9uQ2hhbmdlKF86IGFueSk6IHZvaWQge31cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIE11bHRpc2VsZWN0XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RMYWJlbCA9IHRoaXMuaW5wdXRDb25maWcubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNlYXJjaFRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dChzZWFyY2hUZXh0IHx8ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgNDUwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNjcm9sbERyb3Bkb3duKGV2ZW50OiBFdmVudFRhcmdldCB8IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHRhcmdldC5zY3JvbGxUb3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0ID09PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25OdW1iZXIgKz0gMTtcblxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRXZlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb25OdW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbShvcHRpb246IE9wdGlvbk1vZGVsLCBncm91cD86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgb3B0aW9uPy5bdGhpcy5sYWJlbF0/LnRvTG93ZXJDYXNlKCkgPT09ICdhZGQgbmV3J1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXLFxuICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3RpdmVJdGVtR3JvdXAoZXZlbnQ6IHsgb3B0aW9uOiBPcHRpb25Nb2RlbDsgZ3JvdXA6IGFueSB9KSB7XG4gICAgICAgIHRoaXMub25BY3RpdmVJdGVtKGV2ZW50Lm9wdGlvbiwgZXZlbnQuZ3JvdXApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gLTE7XG5cbiAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoJycpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQobnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyRHJvcGRvd25MYWJlbCgpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUNvbG9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1Db2xvci5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbW1hbmRFdmVudChldmVudDogQ29tbWFuZHNFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnRWRpdCBJbnB1dCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnQ29sb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnVG9nZ2xlIERyb3Bkb3duJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjb25maXJtJyAmJiBldmVudC5tb2RlID09PSAnbmV3Jykge1xuICAgICAgICAgICAgdGhpcy5hZGROZXdJdGVtKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY29uZmlybScgJiYgZXZlbnQubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdQbGFjZWhvbGRlciBJY29uIEV2ZW50Jykge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlckljb25FdmVudC5lbWl0KHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdjYW5jZWwnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgIGlkOiBwYXJzZUludCh1dWlkdjQoKSksXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWUsXG4gICAgICAgIH07XG4gICAgICAgIC8vdGhpcy5pbnB1dENvbmZpZy5jb21tYW5kcyEuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaXNWaXNpYmxlQ29tbWFuZHMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoeyBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLCBhY3Rpb246ICduZXcnIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNUb3VjaGVkSW5wdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbD8udmFsdWUsXG4gICAgICAgICAgICAgICAgY29sb3JJZDogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5pZFxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvbG9ySWQsXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IubmFtZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvbG9yLFxuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IuY29kZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvZGUsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7XG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgYWN0aW9uOiAnZWRpdCcsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGROZXdDb25maWcoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2NvbmZpcm0tY2FuY2VsJyxcbiAgICAgICAgICAgICAgICBmaXJzdENvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9wdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDb25maXJtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMzMDc0ZDMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uZmlybScsXG4gICAgICAgICAgICAgICAgICAgIHN2ZzogSW5wdXREcm9wZG93blN2Z1JvdXRlcy5zcGVjQ29uZmlybVN2ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlY29uZENvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9wdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDYW5jZWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzJmMmYyZicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjYW5jZWwnLFxuICAgICAgICAgICAgICAgICAgICBzdmc6IElucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcblxuICAgICAgICB0aGlzLmlzSW5BZGRNb2RlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0luQWRkTW9kZSA9IGZhbHNlO1xuICAgICAgICB9LCAyMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkluY29ycmVjdElucHV0KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaW5jb3JyZWN0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIsIGl0ZW06IE9wdGlvbk1vZGVsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU5lc3RlZExpc3Qob3B0aW9uOiBPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIG9wdGlvbi5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IChpdGVtLm9wZW4gPSBmYWxzZSkpO1xuXG4gICAgICAgIG9wdGlvbi5vcGVuID0gIW9wdGlvbi5vcGVuO1xuXG4gICAgICAgIGlmIChvcHRpb24ub3Blbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHcm91cEV2ZW50LmVtaXQob3B0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkJsdXJJbnB1dChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJJbnB1dEV2ZW50KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEV2ZW50LmVtaXQoZXZlbnQpO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICAgICAgLy8gbGFiZWwgZHJvcGRvd25cblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJEcm9wZG93bkxhYmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBub3JtYWwgZHJvcGRvd25cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub25DbGVhclNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUhpZGRlbkRyb3Bkb3duKCkge1xuICAgICAgICB0aGlzLmRyb3BEb3duSXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMuZHJvcGRvd25WYWx1ZSB8fCAnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcGVuRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuZHJvcERvd25Jc09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93SGlkZURyb3Bkb3duKGFjdGlvbjogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGFiZWxNb2RlICE9PSAnQ29sb3InKSB7XG4gICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUobnVsbCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERldGFpbHMgcGFnZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5jdXN0b21DbGFzcz8uaW5jbHVkZXMoJ2RldGFpbHMtcGFnZXMnKSAmJlxuICAgICAgICAgICAgIWFjdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQodGhpcy5fYWN0aXZlSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWFpbkdyb3VwKCkge1xuICAgICAgICBsZXQgbWFpbkdyb3VwOiBPcHRpb25Nb2RlbFtdID0gW107XG4gICAgICAgIHRoaXMuX29wdGlvbnMubWFwKChncm91cHMpID0+IHtcbiAgICAgICAgICAgIG1haW5Hcm91cC5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLmdyb3Vwc1tcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXggYXMga2V5b2YgT3B0aW9uTW9kZWxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWFpbkdyb3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBkcm9wRG93bktleU5hdmlnYXRpb24oe1xuICAgICAgICBrZXlDb2RlLFxuICAgICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgICAga2V5Q29kZTogbnVtYmVyO1xuICAgICAgICBkYXRhOiBhbnk7XG4gICAgfSkge1xuICAgICAgICAvLyBOYXZpZ2F0ZSBkb3duXG4gICAgICAgIGlmIChrZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTmF2aWdhdGUgdXBcbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duTmF2aWdhdGlvbigtMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmVzcyAnZW50ZXInXG4gICAgICAgIGlmIChrZXlDb2RlID09PSAxMykge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLnNlYXJjaGluR3JvdXBJbmRleCkge1xuICAgICAgICAgICAgICAgIGxldCBtYWluR3JvdXAgPSB0aGlzLmdldE1haW5Hcm91cCgpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IG1haW5Hcm91cFt0aGlzLmlucHV0SG92ZXJlZEl0ZW1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLm9wdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7IFt0aGlzLmxhYmVsXTogJycgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FuT3Blbk1vZGFsICYmXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtPy5bdGhpcy5sYWJlbF0/LnRvTG93ZXJDYXNlKCkgPT09ICdhZGQgbmV3J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICAgICAgY2FuT3Blbk1vZGFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXlDb2RlID09PSA5KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wb3ZlclJlZi5pc09wZW4oKSkgdGhpcy5wb3BvdmVyUmVmPy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RHJvcGRvd25WYWx1ZShcbiAgICAgICAgb3B0aW9uOiBPcHRpb25Nb2RlbCxcbiAgICAgICAgb3B0aW9uVmFsdWU/OiBzdHJpbmcsXG4gICAgICAgIGxhYmVsPzogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHRoaXMubGFzdFZhbGlkT3B0aW9uID0gb3B0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG9wdGlvbik7XG4gICAgICAgIGNvbnN0IG9wdFZhbHVlID0gb3B0aW9uVmFsdWUgPyBvcHRpb25WYWx1ZSA6IHRoaXMub3B0aW9uVmFsdWU7XG4gICAgICAgIGNvbnN0IGxiZWwgPSBsYWJlbCA/IGxhYmVsIDogdGhpcy5sYWJlbDtcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gb3B0VmFsdWVcbiAgICAgICAgICAgID8gb3B0aW9uW29wdFZhbHVlIGFzIGtleW9mIE9wdGlvbk1vZGVsXVxuICAgICAgICAgICAgOiBvcHRpb247XG5cbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IG9wdGlvbltsYmVsIGFzIGtleW9mIE9wdGlvbk1vZGVsXSB8fCBjb250cm9sVmFsdWU7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbjtcbiAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoY29udHJvbFZhbHVlLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIE11bHRpc2VsZWN0IERyb3Bkb3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgb25NdWx0aXNlbGVjdFNlbGVjdChvcHRpb246IE9wdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgLy90aGlzLmlucHV0Q29uZmlnLmxhYmVsID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0SXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3B0aW9uLmlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gb3B0aW9uLmlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbS5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zID0gdGhpcy5fb3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdCh0aGlzLm11bHRpc2VsZWN0SXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLnNvcnQoXG4gICAgICAgICAgICAoeCwgeSkgPT4gTnVtYmVyKHkuYWN0aXZlKSAtIE51bWJlcih4LmFjdGl2ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBbLi4udGhpcy5fb3B0aW9uc107XG5cbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAuc2xpY2UoLTEpWzBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTXVsdGlTZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHRoaXMubXVsdGlzZWxlY3RJdGVtc1tpbmRleF0uaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm11bHRpc2VsZWN0SXRlbXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc29ydChcbiAgICAgICAgICAgICh4LCB5KSA9PiBOdW1iZXIoeS5hY3RpdmUpIC0gTnVtYmVyKHguYWN0aXZlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5fb3B0aW9ucztcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgIC5zbGljZSgtMSlbMF07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChcbiAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKGN1cnJlbnRMYWJlbD86IHN0cmluZykge1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KG51bGwpO1xuXG4gICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gIXRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgRW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBkcm9wZG93blZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgICBwdWJsaWMgc2V0Q29udHJvbFZhbHVlKHZhbHVlPzogc3RyaW5nLCBkcm9wZG93bklucHV0VmFsdWU/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7IC8vIE5vdGlmeSBBbmd1bGFyIGZvcm0gYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICBpZiAodmFsdWUpIHRoaXMub25Ub3VjaGVkKCk7IC8vIE1hcmsgYXMgdG91Y2hlZFxuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWUgPSBkcm9wZG93bklucHV0VmFsdWUgfHwgdmFsdWU7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKGRyb3Bkb3duSW5wdXRWYWx1ZSB8fCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdGhyb3VnaCBkcm9wZG93biB3aXRoIGtleWJvYXJkIGFycm93c1xuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25OYXZpZ2F0aW9uKHN0ZXA6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXh0U3RlcCA9IHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSArIHN0ZXA7XG5cbiAgICAgICAgaWYgKG5leHRTdGVwID4gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kcm9wZG93bk9wdGlvbi5sZW5ndGggLSAxKVxuICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gMDtcbiAgICAgICAgZWxzZSBpZiAobmV4dFN0ZXAgPCAwKVxuICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID1cbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRyb3Bkb3duT3B0aW9uLmxlbmd0aCAtIDE7XG4gICAgICAgIGVsc2UgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gbmV4dFN0ZXA7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJhcHBsaWNhdGlvbi1kcm9wZG93blwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGlucHV0Q29uZmlnXG4gICAgICAgICAgICB8IGlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzXG4gICAgICAgICAgICAgICAgOiBtdWx0aXNlbGVjdEl0ZW1zXG4gICAgICAgICAgICAgICAgOiBpc011bHRpU2VsZWN0SW5wdXRGb2N1c1xuICAgIFwiXG4+XG4gICAgQGlmIChtdWx0aXNlbGVjdEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICA8cCBjbGFzcz1cIm11bHRpc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBtdWx0aVNlbGVjdExhYmVsIH19XG4gICAgICAgIDwvcD5cbiAgICB9XG5cbiAgICBAaWYgKGlucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmUpIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBhcnJvdyAtLT5cbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWFycm93XCJcbiAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy5pbnB1dERyb3Bkb3duQXJyb3dTdmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKVwiXG4gICAgICAgID48L3N2Zy1pY29uPlxuICAgIH1cblxuICAgIEBpZiAobXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiYgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBjbGVhciBhbGwgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY2xlYXIgbXVsdGlzZWxlY3QtY2xlYXJcIlxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhciBBbGxcIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMmYyZjJmXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24gJiZcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgX3RlbXBsYXRlID09PSAnbXVsdGlzZWxlY3QnXG4gICAgKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgaXRlbXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcyB7eyBtdWx0aXNlbGVjdFRlbXBsYXRlIH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0IG9mIG11bHRpc2VsZWN0SXRlbXM7XG4gICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4O1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSAkaW5kZXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSAtIFRvdGFsIENvdW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19IG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm11bHRpU2VsZWN0SXRlbVJhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJmMmYyZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gc2VhcmNoIC0tPlxuXG4gICAgQGlmICghaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgQGlmICghc2VhcmNoSW5wdXRUZXh0LnZhbHVlKSB7XG4gICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJkcm9wRG93bklzT3BlblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmxlZnRJY29uXT1cImlucHV0Q29uZmlnLnBsYWNlaG9sZGVySWNvblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdncm91cHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25fdmFsdWUgZHJvcGRvd24tb3B0aW9ucyAge3tcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKF90ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vcHRpb24gZHJvcGRvd24tZG91YmxlLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOb1Jlc3Vsc3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlci1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZC1icm9rZXItY29udGFjdC1ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93bldpdGhJbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNwZWNpYWwgRHJvcGRvd24gU2VsZWN0ZWQgU1ZHIHdpdGggb3IgV2l0aG91dCBUZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQgJiYgYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5wdXREcm9wZG93bkdldEljb25zOiBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2Uge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5zZXQtY29sb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtPy5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnI2ZmZmZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ud2l0aFRleHQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkcm9wZG93blZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxjYS1pbnB1dC10ZXN0XG4gICAgICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImNhSW5wdXREcm9wZG93blBvcG92ZXJcIlxuICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICAgICAgW3BsYWNlbWVudF09XCJcbiAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXG4gICAgICAgICAgICAgICAgICAgID8gWydib3R0b20tbGVmdCcsICd0b3AtbGVmdCddXG4gICAgICAgICAgICAgICAgICAgIDogWydib3R0b20tbGVmdCddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRGb3JtQ29udHJvbCB8IGZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtwYXJlbnRDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICBbaW5jb3JyZWN0VmFsdWVdPVwiaXNJbmNvcnJlY3RWYWx1ZVwiXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJfdGVtcGxhdGVcIlxuICAgICAgICAgICAgKGJsdXJJbnB1dCk9XCJvbkJsdXJJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGVhcik9XCJvbkNsZWFySW5wdXRFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjb21tYW5kRXZlbnQpPVwiY29tbWFuZEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKHNob3dIaWRlRHJvcGRvd24pPVwic2hvd0hpZGVEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChkcm9wRG93bktleU5hdmlnYXRpb24pPVwiZHJvcERvd25LZXlOYXZpZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgKGluY29ycmVjdEV2ZW50KT1cIm9uSW5jb3JyZWN0SW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoaGlkZGVuKT1cImhhbmRsZUhpZGRlbkRyb3Bkb3duKClcIlxuICAgICAgICAgICAgKHNob3duKT1cImhhbmRsZU9wZW5Ecm9wZG93bigpXCJcbiAgICAgICAgPjwvY2EtaW5wdXQtdGVzdD5cbiAgICB9XG5cbiAgICA8IS0tIERyb3Bkb3duIGljb24gaW5zdGVhZCBvZiBpbnB1dCAtLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnLmlzSWNvbklucHV0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGlucHV0LWljb24tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICB2YWxpZDpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaXNWYWxpZEljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlucHV0SWNvbj8uaW5jbHVkZXMoJ2N1c3RvbScpLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogcG9wb3ZlclJlZj8uaXNPcGVuKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJbJ2JvdHRvbS1sZWZ0J11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtaWNvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXREcm9wZG93blN2Z1JvdXRlcy5yZXBhaXJQbVN2Z1JvdXRlICtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaW5wdXRJY29uXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjY2FJbnB1dERyb3Bkb3duUG9wb3Zlcj5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEcm9wZG93biBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnPy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCAmJiBfb3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucy1kaXZpZGVyIHt7XG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzcGF0Y2hfZHJvcGRvd25dPVwiX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgICAoaW5wdXRDb25maWc/Lm5hbWUgIT0gJ0FkZHJlc3MnICYmXG4gICAgICAgICAgICBpbnB1dENvbmZpZz8ubmFtZSAhPSAnUm91dGluZ0FkZHJlc3MnICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCkgfHxcbiAgICAgICAgKChpbnB1dENvbmZpZz8ubmFtZSA9PSAnQWRkcmVzcycgfHxcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgX29wdGlvbnM/Lmxlbmd0aClcbiAgICApIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbERyb3Bkb3duKCRldmVudC50YXJnZXQpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZ3JvdXBzJyB8fFxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyxcbiAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgJ25vLXJlc3VsdC1jb250YWluZXInOiBfb3B0aW9uc1swXT8ubmFtZSA9PT0gJ05vIFJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zICB7eyBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3MgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICBAc3dpdGNoIChfdGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTVkcgVGVtcGxhdGUgKFJlbmRlciBzdmdzIG9yIHRleHQgaWYgc3ZncyBkb2Vzbid0IGV4aXN0ICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5TVkdfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duV2l0aEltYWdlXT1cImlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyIFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93blN2Z1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdmcgVGV4dCBUZW1wbGF0ZSAoZGlzcGxheSBmbGV4KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN2Z1RleHRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGlzcGF0Y2ggZHJvcGRvd24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9ESVNQQVRDSF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGF0Y2hUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGV0YWlscyB0ZW1wbGF0ZSAodHJ1Y2ssIHRyYWlsZXIuLi4gZGV0YWlscy1wYWdlcykgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uREVUQUlMU19URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRdPVwiX3NvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXRhaWxzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdyb3VwaW5nIHRlbXBsYXRlIChjYW4gc2VlIG9uIGNvbnRhY3QgbW9kYWwpICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkdST1VQUykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNdWx0aXNlbGVjdCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLk1VTFRJU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1dPVwibGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uTXVsdGlzZWxlY3RTZWxlY3QpPVwib25NdWx0aXNlbGVjdFNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMYWJlbHMgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MQUJFTFMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sYWJlbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbE1vZGVdPVwibGFiZWxNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5BZGROZXddPVwiX2NhbkFkZE5ld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxhYmVscz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEaXNwYXRjaCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRJU1BBVENIKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIERpc3BhdGNoZXIgVGVtcGxhdGUgKHVzZXIgYXZhdGFyICsgdXNlciBuYW1lKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBDb21iaW5lIFRydWNrLVRyYWlsZXItRHJpdmVyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVTX1RURCkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIENvbnRhY3QgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3Q+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBTaGlwcGVyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9TSElQUEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRlbXBsYXRlIFRleHQgLSBDb3VudGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uVEVYVF9DT1VOVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1ZWwgRnJhbmNoaXNlIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRlVFTF9GUkFOQ0hJU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b2dnbGVOZXN0ZWRMaXN0KT1cInRvZ2dsZU5lc3RlZExpc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtR3JvdXApPVwib25BY3RpdmVJdGVtR3JvdXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIERvdWJsZSBUZXh0IFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ET1VCTEVfVEVYVF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBEb3VibGUgQ29sdW1uIFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ET1VCTEVfQ09MVU1OX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRyaXBsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRSSVBMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gUEFZUk9MTCBUUlVDS1MgVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlBBWVJPTExfVFJVQ0tTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3NcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWZhdWx0IFRlbXBsYXRlIC0gUmVuZGVyIE9ubHkgVGV4dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -11832,6 +11832,7 @@ class CaInputDropdownComponent {
11832
11832
  set options(values) {
11833
11833
  if (values)
11834
11834
  this._options = [...values];
11835
+ console.log('this.lastValidOption', this.lastValidOption);
11835
11836
  if (this.lastValidOption) {
11836
11837
  const findInOptions = this.inputConfig.searchinGroupIndex
11837
11838
  ? this.getMainGroup()
@@ -11910,7 +11911,6 @@ class CaInputDropdownComponent {
11910
11911
  : this._options;
11911
11912
  const findOption = findInOptions.find((option) => option[this.optionValue] == value);
11912
11913
  if (findOption) {
11913
- this.lastValidOption = findOption;
11914
11914
  this.setDropdownValue(findOption);
11915
11915
  }
11916
11916
  }
@@ -12186,6 +12186,7 @@ class CaInputDropdownComponent {
12186
12186
  }
12187
12187
  }
12188
12188
  setDropdownValue(option, optionValue, label) {
12189
+ this.lastValidOption = option;
12189
12190
  this.selectedItem.emit(option);
12190
12191
  const optValue = optionValue ? optionValue : this.optionValue;
12191
12192
  const lbel = label ? label : this.label;