ms-data-grid 0.0.153 → 0.0.155

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.
@@ -979,7 +979,7 @@ export class DataGridComponent {
979
979
  }
980
980
  cleanColumns(columns) {
981
981
  return columns.map((col) => {
982
- const { __typename, _id, column_dropdown_value, filterValue, expandedFilter, cellRenderer, filterRenderer, cellComponentRef, query, isRowGrouped, ...rest } = col;
982
+ const { __typename, _id, column_dropdown_value, filterValue, expandedFilter, cellRenderer, filterRenderer, cellComponentRef, query, isRowGrouped, index, ...rest } = col;
983
983
  // Clean dropdown values (__typename removed)
984
984
  const cleanedDropdown = Array.isArray(column_dropdown_value)
985
985
  ? column_dropdown_value.map(({ __typename, ...dRest }) => dRest)
@@ -2891,6 +2891,8 @@ export class DataGridComponent {
2891
2891
  return this.activeCell === ((row.id || row._id) + '-' + col.field);
2892
2892
  }
2893
2893
  enableEdit(row, column, clickedFromDetailsBox = false, cellContainer) {
2894
+ if ((column.type === 'dropdown' || column.type == 'array') && !column?.column_dropdown_value?.length)
2895
+ return;
2894
2896
  this.editinDropdownSearch = '';
2895
2897
  if (row?.__virtualIndex == 0)
2896
2898
  return;
@@ -3098,7 +3100,7 @@ export class DataGridComponent {
3098
3100
  }
3099
3101
  }
3100
3102
  if (this.dataSet && Array.isArray(this.dataSet)) {
3101
- const datasetRowIndex = this.dataSet.findIndex(r => r.id === obj.id || r._id === obj._id);
3103
+ const datasetRowIndex = this.dataSet.findIndex(r => (r.id && r.id === obj.id) || (r._id && r._id === obj._id));
3102
3104
  if (datasetRowIndex !== -1) {
3103
3105
  const datasetParent = keys.reduce((acc, key) => acc[key] ??= {}, this.dataSet[datasetRowIndex]);
3104
3106
  if (datasetParent && lastKey) {
@@ -5406,4 +5408,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
5406
5408
  type: ViewChild,
5407
5409
  args: ['fullscreenImageTemplate']
5408
5410
  }] } });
5409
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFVTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBSzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3JFLE9BQU8sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJuRCxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYiw4Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBMEIsQ0FBQTtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QiwwQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBc0IsQ0FBQTtJQUN0QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQUdELE1BQU0sQ0FBQyxNQUFN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bml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSG9zdExpc3RlbmVyLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBOZ1pvbmUsXG4gIFJlbmRlcmVyMixcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxuICBpbmplY3QsXG4gIEluamVjdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3BsaXRDb2x1bW5zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NwbGl0LWNvbHVtbnMuc2VydmljZSc7XG5pbXBvcnQgeyBSb3dBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcm93LWFjdGlvbi5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENka0RyYWcsXG4gIENka0RyYWdEcm9wLFxuICBDZGtEcmFnRW5kLFxuICBDZGtEcmFnRW50ZXIsXG4gIENka0RyYWdFeGl0LFxuICBDZGtEcmFnTW92ZSxcbiAgQ2RrRHJhZ1NvcnRFdmVudCxcbiAgQ2RrRHJhZ1N0YXJ0LFxuICBEcmFnRHJvcCxcbiAgbW92ZUl0ZW1JbkFycmF5LFxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIHRyaWdnZXIsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgYW5pbWF0ZSxcbiAgcXVlcnksXG4gIHN0YWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFNUQVRVU0VTX0JBREdFX01BUCB9IGZyb20gJy4vc3RhdHVzZXMnO1xuaW1wb3J0IHsgQ29weVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29weS1zZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2VsbFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jZWxsLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2VsbEhvc3REaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2NlbGxIb3N0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtYXRDdXJyZW5jeVBpcGUgfSBmcm9tICcuLi9waXBlcy9mb3JtYXQtY3VycmVuY3kucGlwZSc7XG5pbXBvcnQgJ2Jvb3RzdHJhcC9kaXN0L2pzL2Jvb3RzdHJhcC5idW5kbGUubWluLmpzJztcbmltcG9ydCB7IFZhbGlkYXRpb25zU2VydmljZSB9IGZyb20gJy4vLi4vc2VydmljZXMvdmFsaWRhdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBIdG1sQ29udGVudFNhbml0aXplclNlcnZpY2UgfSBmcm9tICcuLy4uL3NlcnZpY2VzL2h0bWwtY29udGVudC1zYW5pdGl6ZXIuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRDb25maWcge1xuICBmb250RmFpbWx5OiBzdHJpbmc7XG4gIGJvZHlUZXh0Rm9udHNTaXplOiBudW1iZXI7XG4gIGhlYWRlclRleHRGb250c1NpemU6IG51bWJlcjtcbiAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBzaG93VmVydGljYWxCb3JkZXI6IGJvb2xlYW47XG4gIHNlbGVjdGVkVGFibGVMYXlvdXQ6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XG4gIGdsb2JhbFNlYXJjaDogc3RyaW5nO1xuICBmaWx0ZXJOYW1lczogc3RyaW5nO1xuICB0b3RhbENvdW50OiBudW1iZXI7XG4gIHJvd1NoYWRpbmdFbmFibGVkOiBib29sZWFuO1xuICBhY3RpdmVGaWx0ZXJzOiBib29sZWFuO1xuICBncm91cGVkQ29sdW1ucz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZW51bSBSb3dBbmltYXRpb25UeXBlIHtcbiAgTm9uZSA9ICdub25lJyxcbiAgU3ByZWFkID0gJ3NwcmVhZEFuaW1hdGlvbicsXG4gIEJvdW5jZSA9ICdib3VuY2VBbmltYXRpb24nLFxuICBTbGlkZVVwID0gJ3NsaWRlVXBGcm9tQm90dG9tJyxcbiAgRmxpcCA9ICdmbGlwQW5pbWF0aW9uJyxcbiAgU2tldyA9ICdza2V3QW5pbWF0aW9uJyxcbiAgU2xpZGVSaWdodCA9ICdzbGlkZUZyb21SaWdodCcsXG59XG5cblxuZXhwb3J0IGNvbnN0IHNvcnRpbmdBbmltYXRpb24gPSB0cmlnZ2VyKCdsaXN0U29ydCcsIFtcbiAgdHJhbnNpdGlvbignKiA9PiAqJywgW1xuICAgIHF1ZXJ5KCc6ZW50ZXIsIDpsZWF2ZScsIHN0eWxlKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIHdpZHRoOiAnMTAwJScgfSksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgcXVlcnkoJzpsZWF2ZScsIFtcbiAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTIwcHgpJywgb3BhY2l0eTogMCB9KSlcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMjBweCknLCBvcGFjaXR5OiAwIH0pLFxuICAgICAgc3RhZ2dlcig1MCwgW1xuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6IDEgfSkpXG4gICAgICBdKVxuICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgXSlcbl0pO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2FjY29yZGlvblRvZ2dsZScsIFtcbiAgICAgIHN0YXRlKFxuICAgICAgICAnY29sbGFwc2VkJyxcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBvdmVyZmxvdzogJ3Vuc2V0JyB9KVxuICAgICAgKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG92ZXJmbG93OiAndW5zZXQnIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ3NsaWRlVG9nZ2xlJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvcGFjaXR5OiAxIH0pKVxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG9wYWNpdHk6IDEsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3BhY2l0eTogMCB9KSlcbiAgICAgIF0pXG4gICAgXSksXG4gICAgdHJpZ2dlcignc2xpZGVVcCcsIFtcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMCUpJywgb3BhY2l0eTogMCB9KSksXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6IDEgfSkpLFxuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnKSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ3Jvd0R5bmFtaWMnLCBbXG5cbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIFNQUkVBRCAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgICAgdHJhbnNpdGlvbignKiA9PiBzcHJlYWRBbmltYXRpb24nLCBbXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZVgoMC43KScgfSksXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnMzUwbXMgZWFzZS1vdXQnLFxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlWCgxKScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnMjIwbXMgZWFzZS1pbicsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxuICAgICAgXSksXG5cbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEJPVU5DRSAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgICAgdHJhbnNpdGlvbignKiA9PiBib3VuY2VBbmltYXRpb24nLCBbXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScgfSksXG4gICAgICAgICAgc3RhZ2dlcig0NSwgW1xuICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgJzUwMG1zIGN1YmljLWJlemllciguNjgsLTAuNTUsLjI3LDEuNTUpJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXG5cbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXG4gICAgICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLWluJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwcHgpJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIF0pLFxuXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMTogRkxJUCAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgICAgdHJhbnNpdGlvbignKiA9PiBmbGlwQW5pbWF0aW9uJywgW1xuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAncm90YXRlWCgtODBkZWcpJyB9KSxcbiAgICAgICAgICBzdGFnZ2VyKDcwLCBbXG4gICAgICAgICAgICBhbmltYXRlKCc0NTBtcyBlYXNlLW91dCcsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAncm90YXRlWCgwKScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXG4gICAgICAgICAgc3RhZ2dlcig1MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnMjUwbXMgZWFzZS1pbicsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAncm90YXRlWCg4MGRlZyknIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxuICAgICAgXSksXG5cbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIE5FVyAyOiBTS0VXIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHNrZXdBbmltYXRpb24nLCBbXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdza2V3WSg2ZGVnKSB0cmFuc2xhdGVZKDhweCknIH0pLFxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJzMyMG1zIGVhc2Utb3V0JyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdza2V3WSgwZGVnKSB0cmFuc2xhdGVZKDApJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXG5cbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXG4gICAgICAgICAgICBhbmltYXRlKCcyMjBtcyBlYXNlLWluJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdza2V3WSgtNmRlZykgdHJhbnNsYXRlWSgtOHB4KScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVVcEZyb21Cb3R0b20nLCBbXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMHZoKScgfSksXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnNTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSknLFxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcblxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xuICAgICAgICAgIHN0YWdnZXIoNDAsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTUwcHgpJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIF0pLFxuXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHNsaWRlRnJvbVJpZ2h0JywgW1xuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDB2dyknIH0pLFxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJzUwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXG5cbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXG4gICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIF0pLFxuXG5cblxuICAgIF0pXG5cblxuICBdLFxuXG59KVxuZXhwb3J0IGNsYXNzIERhdGFHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuICBASW5wdXQoKSByb3dBbmltYXRpb246IFJvd0FuaW1hdGlvblR5cGUgPSBSb3dBbmltYXRpb25UeXBlLk5vbmU7XG4gIEBJbnB1dCgpIHBhZ2luYXRpb25Db25maWc6IGFueSA9IG51bGw7XG4gIEBJbnB1dCgpIGRhdGFTZXQ6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHJvd0hlaWdodDogbnVtYmVyID0gNDQ7XG4gIEBJbnB1dCgpIGhlYWRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XG4gIEBJbnB1dCgpIHNob3dWZXJ0aWNhbEJvcmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBldmVuUm93c0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gIEBJbnB1dCgpIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjJmMmYyJztcbiAgQElucHV0KCkgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIGNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgc2hvd0NvbHVtbnNHcm91cGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSByb3dIb3ZlckNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAncmdiYSgwLCAxMjMsIDI1NSwgMC4xKSc7XG4gIEBJbnB1dCgpIGxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgYm9keUJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSByaWdodFBpbm5lZEJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSBzaWRlbWVudUJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSBib2R5VGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzBjMTEyYic7XG4gIEBJbnB1dCgpIGhlYWRlclRleHRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMyYTFmNzMnO1xuICBASW5wdXQoKSBjaGVja2JveGVzQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMmExZjczJztcbiAgQElucHV0KCkgaGVhZGVyVGV4dEZvbnRzU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gMTQ7XG4gIEBJbnB1dCgpIGJvZHlUZXh0Rm9udHNTaXplOiBudW1iZXIgfCB1bmRlZmluZWQgPSAxNDtcbiAgQElucHV0KCkgaGVhZGVyRm9udFdlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gNTAwO1xuICBASW5wdXQoKSBib2R5Rm9udFdlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gNDAwO1xuICBASW5wdXQoKSBjaGVja2VkUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnYWxpY2VibHVlJztcbiAgQElucHV0KCkgZHJvcGRvd25zQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmOCc7XG4gIEBJbnB1dCgpIGZvb3RlclJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gIEBJbnB1dCgpIGZvb3RlclJvd0hlaWdodDogbnVtYmVyID0gNDY7XG4gIEBJbnB1dCgpIHRvcEdyb3VwZWRCYWRnZXNCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICBASW5wdXQoKSBzaG93Um93c0dyb3VwaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJSb3c6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9udEZhaW1seTogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ3NhbnMtc2VyaWYnO1xuICBASW5wdXQoKSBzaG93U2lkZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9vdGVyUGFkZGluZzogbnVtYmVyID0gM1xuICBASW5wdXQoKSB0b3BGaWx0ZXJSb3dIZWlnaHQ6IG51bWJlciA9IDUwO1xuICBASW5wdXQoKSByb3dTaGFkaW5nRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93U2VyaWFsTnVtYmVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNpbmdsZVNwYUFzc2V0c1BhdGg6IHN0cmluZyA9ICdhc3NldHMvJztcbiAgQElucHV0KCkgZmlsdGVyc0NvbmZpZzogYW55W10gPSBbXTtcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XG4gIEBJbnB1dCgpIGhvcml6aW50YWxTY3JvbGxiYXJXaWR0aDogJ2F1dG8nIHwgJ3RoaW4nID0gJ2F1dG8nO1xuICBASW5wdXQoKSBzaG93Q2VsbERldGFpbHNCb3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGF0ZUZvcm1hdDogc3RyaW5nID0gJydcbiAgQElucHV0KCkgdGFibGVTZWFyY2g6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhY3Rpb25zOiBhbnlbXSA9IFsnZWRpdCcsICdkZWxldGUnXTtcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFiOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2hvd1Rhc2tiYXIgPSBmYWxzZVxuICBASW5wdXQoKSB0YWJsZU5hbWUgPSB0cnVlXG4gIEBJbnB1dCgpIGxpc3RpbmdUeXBlOiBzdHJpbmcgfCBib29sZWFuID0gJyc7XG4gIEBJbnB1dCgpIGNoZWNrYm94U3RhdGU6IHsgcmVzZXQ6IGJvb2xlYW4gfSA9IHsgcmVzZXQ6IHRydWUgfVxuICBASW5wdXQoKSB0YXNrYmFyQWN0aW9uczogYW55W10gPSBbXVxuICBASW5wdXQoKSBzb3J0aW5nQ29uZmlnOiB7IGZpZWxkOiBzdHJpbmcsIG9yZGVyX2J5OiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSB0YWJsZUZpbHRlclZpZXdJZDogYW55ID0gJyc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFibGVMYXlvdXQ6IGFueSA9ICdtZWRpdW0nXG4gIEBJbnB1dCgpIGNsb3NlRHJvcGRvd246IHsgcHJlc2V0OiB7IGNsb3NlZDogYm9vbGVhbiwgbG9hZGluZzogYm9vbGVhbiB9IH0gPSB7IHByZXNldDogeyBjbG9zZWQ6IGZhbHNlLCBsb2FkaW5nOiBmYWxzZSB9IH07XG4gIEBJbnB1dCgpIGdsb2JhbFNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBuZXN0ZWRUYWJsZXJvd0ZvbnRzaXplID0gMTQ7XG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlSGVhZGVyUm93SGVpZ2h0ID0gNDA7XG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlcm93SGVpZ2h0ID0gNDU7XG4gIEBJbnB1dCgpIHBhY2thZ2VEYXRhOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dVbkxpbms6IGFueTtcbiAgQElucHV0KCkgZ3JpZFR5cGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjdXJyZW5jeVN5bWJvbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGN1cnJlbmN5Rm9ybWF0OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbGVmdFBpbm5lZEJveHNoYWRvdzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHJpZ2h0UGlubmVkQm94c2hhZG93OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnIzhhYzVmZic7XG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2VhZWFlYSc7XG4gIEBJbnB1dCgpIHRhYmxlVmlldzogYW55W10gPSBbXTtcbiAgQElucHV0KCkgYnV0dG9uczogeyBuYW1lOiBzdHJpbmc7IGlzX3Nob3dJY29uOiBib29sZWFuOyBpY29uOiBzdHJpbmcsIGhhc19wZXJtaXNzaW9uOiBib29sZWFuIH1bXSA9IFtdO1xuICBASW5wdXQoKSBrZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1RvdGFsQW1vdW50Um93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZUdsb2JhbFNlYXJjaCA9IHRydWU7XG4gIEBJbnB1dCgpIHRhYmxlVHlwZSA9ICcnO1xuICBASW5wdXQoKSBlbmFibGVFeHBvcnQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0Z1bGxTY3JlZW5CdXR0b24gPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlQ3V0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRhYnM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNob3dDaGVja2JveGVzID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1RhYmxlTGF5b3V0ID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zID0gWzEwLCAyNSwgNTAsIDc1LCAxMDAsIDE1MCwgMjAwLCAyNTAsIDMwMCwgNTAwXTtcbiAgQElucHV0KCkgcmVzZXRBbGxGaWx0ZXJzID0geyByZXNldEFsbDogZmFsc2UgfTtcbiAgQElucHV0KCkgZGVmYXVsdENvbmZpZzogRGF0YUdyaWRDb25maWcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZyA9IHtcbiAgICBzaG93UGlubGVmdDogdHJ1ZSxcbiAgICBzaG93UGlucmlnaHQ6IHRydWUsXG4gICAgc2hvd0FzY2VuZGluZzogdHJ1ZSxcbiAgICBzaG93RGVzY2VuZGluZzogdHJ1ZSxcbiAgICBzaG93RmlsdGVyOiB0cnVlLFxuICAgIHNob3dSb3dzR3JvdXBpbmc6IHRoaXMuc2hvd1Jvd3NHcm91cGluZyxcbiAgICBzaG93QXV0b3NpemVBbGxDb2x1bW5zOiB0cnVlLFxuICAgIHNob3dBdXRvc2l6ZVRoaXNDb2x1bW46IGZhbHNlLFxuICAgIHNob3dDaG9zZUNvbHVtbnM6IGZhbHNlLFxuICAgIHNob3dSZXNldENvbHVtbnM6IGZhbHNlLFxuICB9O1xuICBASW5wdXQoKSB2YWxpZGF0ZUljb246IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBPdXQgUHV0IEV2ZW50c1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBAVmlld0NoaWxkcmVuKENlbGxIb3N0RGlyZWN0aXZlKSBjZWxsSG9zdHMhOiBRdWVyeUxpc3Q8Q2VsbEhvc3REaXJlY3RpdmU+O1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZUxheW91dCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIGN1c3RvbUNlbGxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIGZpbHRlck9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGdlbmVyaWNFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB0YWJsZVByZXNldENvbmZpZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzb3J0aW5nT3JkZXJPcHRpb25zOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzdG9yZVByZXNldE5hbWU6IHN0cmluZyA9ICcnO1xuICBpc0Z1bGxTY3JlZW4gPSBmYWxzZTtcbiAgYWN0aXZlVGFiOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgZ3JvdXBlZENvbHVtbnM6IGFueVtdID0gW107XG4gIGFjdGl2ZUNvbDogYW55ID0gbnVsbDtcbiAgYWN0aXZlRmlsdGVyQ2VsbDogYW55ID0gbnVsbDtcbiAgc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xuICBzaWRlTWVudVZpc2libGUgPSBmYWxzZTtcbiAgcGl2b3RNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIGNvbHVtblNlYXJjaDogc3RyaW5nID0gJyc7XG4gIGV4cGFuZEFsbEFjY29yZGlhbnMgPSB0cnVlO1xuICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlOiAnY29scycgfCAnZmlsdHJzJyB8IG51bGwgPSBudWxsO1xuICBvcmlnaW5hbENvbHVtbnM6IGFueVtdID0gW107XG4gIG9yaWdpbmFsRGF0YVNldDogYW55W10gPSBbXTtcbiAgYWN0aXZlVG9wQnV0dG9uOiBzdHJpbmcgfCBudWxsID0gJyc7XG4gIGZpbHRlckNvbHVtbnNMaXN0OiBhbnlbXSA9IFtdO1xuICBncm91cEJveFBhZGRpbmcgPSAyMDA7XG4gIHByZXNldE5hbWU6IHN0cmluZyA9ICcnO1xuICBwcmVzZXRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VhcmNoVGV4dFByZXNldFRhYmxlID0gJyc7XG4gIGFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XG4gIHNlYXJjaEluRHJvcGRvd24gPSAnJztcbiAgcHJpdmF0ZSBzZWNyZXRLZXkgPSAndGItc3VwZXItYWRtaW4nXG4gIGFkZEZpbHRlckRyb3Bkb3duU2VhcmNoID0gJydcbiAgdG9wU2hvd0hpZGVDb2x1bW5zID0gJyc7XG4gIGNob3NlQ29sdW1uc1NlYXJjaCA9ICcnXG4gIHNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2ggPSAnJ1xuICBlZGl0aW5Ecm9wZG93blNlYXJjaCA9ICcnO1xuICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgY29uZmlybURlbGV0ZSA9IGZhbHNlO1xuICBwcml2YXRlIG9yaWdpbmFsQWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgZm9udEZhbWlsaWVzOiBzdHJpbmdbXSA9IFtdO1xuICBmb250U2l6ZXM6IHN0cmluZ1tdID0gWyc4JywgJzknLCAnMTAnLCAnMTEnLCAnMTInLCAnMTQnLCAnMTYnLCAnMTgnLCAnMjAnLCAnMjQnXTtcbiAgaGFzU2Nyb2xsID0gZmFsc2U7XG4gIGxlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBjZW50ZXJDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICByaWdodFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XG4gIHByZXZpZXdMZWZ0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgcHJldmlld0NlbnRlckNvbHVtbnM6IGFueVtdID0gW107XG4gIHByZXZpZXdSaWdodFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cbiAgQFZpZXdDaGlsZCgnZGF0YUdyaWRDb250YWluZXInKVxuICBkYXRhR3JpZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0YXNrTWFuYWdlbWVudENvbnRhaW5lcicpXG4gIHRhc2tNYW5hZ2VtZW50Q29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlQ29udGFpbmVyJylcbiAgbmVzdGVkVGFibGVDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbGVmdFBpbm5lZEJvZHknKVxuICBsZWZ0UGlubmVkQm9keSE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRCb2R5JylcbiAgY2VudGVyUGlubmVkQm9keSE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdyaWdodFBpbm5lZEJvZHknKVxuICByaWdodFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbGVmdFBpbm5lZEhlYWRlcicpXG4gIGxlZnRQaW5uZWRIZWFkZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY2VudGVyUGlubmVkSGVhZGVyJylcbiAgY2VudGVyUGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3JpZ2h0UGlubmVkSGVhZGVyJylcbiAgcmlnaHRQaW5uZWRIZWFkZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZ2xvYmFsU2VhcmNoSW5wdXQnKVxuICBnbG9iYWxTZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNHcm91cGVkQm94JylcbiAgY29sdW1uc0dyb3VwZWRCb3ghOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY2VudGVyRmFrZVNjcm9sbGJhcicpXG4gIGNlbnRlckZha2VTY3JvbGxiYXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbHVtblNlcnZpY2U6IFNwbGl0Q29sdW1uc1NlcnZpY2UsXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIGNvbW1vblNldmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNvcHlTZXJ2aWNlOiBDb3B5U2VydmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgZm9ybWF0Q3VycmVuY3k6IEZvcm1hdEN1cnJlbmN5UGlwZSxcbiAgICBwcml2YXRlIGFjdGlvblZhbGlkYXRvcjogUm93QWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHZhbGlkYXRpb25zU2VydmljZTogVmFsaWRhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHRtbFNhbmF0aXplclNlcnZpY2U6IEh0bWxDb250ZW50U2FuaXRpemVyU2VydmljZSxcbiAgICBwdWJsaWMgY2VsbFNlbGVjdGlvblNlcnZpY2U6IENlbGxTZWxlY3Rpb25TZXJ2aWNlLFxuXG4gICkgeyB9XG5cbiAgQFZpZXdDaGlsZCgnY2VsbFRleHQnLCB7IHN0YXRpYzogZmFsc2UgfSkgY2VsbFRleHQhOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ25lc3RlZEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBuZXN0ZWRIZWFkZXIhOiBFbGVtZW50UmVmO1xuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpO1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gICAgICB0aGlzLmNvbXB1dGVWaWV3cG9ydFJvd3MoKTtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuXG4gICAgICBpZiAodGhpcy5jZWxsVGV4dCkge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlbGxUZXh0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnJlbmRlckN1c3RvbUNlbGxzKCk7XG4gICAgICB0aGlzLmJ1aWxkUGFnZVNpemVLZXlNYXAoKTtcbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuY29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLmdldENvbHVtbkJ5SW5kZXggPSAoaSkgPT4gdGhpcy5jb2x1bW5zLmZpbmQoYyA9PiBjLmluZGV4ID09PSBpKTtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnZlcnRpY2FsQ29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5ob3Jpem9udGFsQ29udGFpbmVyID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uucm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQ7XG4gICAgdGhpcy5mb250RmFtaWxpZXMgPSB0aGlzLmNvbW1vblNldmljZS5mb250RmFtaWxpZXM7XG5cbiAgfVxuXG4gIGNyZWF0ZUNlbGxJbmplY3Rvcihyb3c6IGFueSwgY29sOiBhbnkpOiBJbmplY3RvciB7XG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiAncm93RGF0YScsIHVzZVZhbHVlOiByb3cgfSxcbiAgICAgICAgeyBwcm92aWRlOiAnY29sRGF0YScsIHVzZVZhbHVlOiBjb2wgfVxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvclxuICAgIH0pO1xuICB9XG5cblxuICBwcml2YXRlIHJlbmRlckN1c3RvbUNlbGxzKCk6IHZvaWQge1xuICAgIGNvbnN0IGhvc3RzID0gdGhpcy5jZWxsSG9zdHMudG9BcnJheSgpO1xuICAgIGxldCBob3N0SW5kZXggPSAwO1xuXG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy52aXNpYmxlUm93cykge1xuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBob3N0c1tob3N0SW5kZXgrK107XG4gICAgICAgIGlmICghaG9zdCB8fCAhY29sLmNlbGxSZW5kZXJlcikgY29udGludWU7XG5cbiAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lciA9IGhvc3Qudmlld0NvbnRhaW5lclJlZjtcbiAgICAgICAgdmlld0NvbnRhaW5lci5jbGVhcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbXBSZWYgPSB2aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb2wuY2VsbFJlbmRlcmVyKTtcblxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgcm93LFxuICAgICAgICAgIGNvbCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCksXG4gICAgICAgICAgYXBpOiB0aGlzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICgoY29tcFJlZi5pbnN0YW5jZSBhcyBhbnkpLmdyaWRJbml0KSB7XG4gICAgICAgICAgKGNvbXBSZWYuaW5zdGFuY2UgYXMgYW55KS5ncmlkSW5pdChwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBzaG91bGRSZXN0b3JlU2Nyb2xsID0gZmFsc2U7XG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZFN0eWxlc1RvSW1hZ2VzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zaG91bGRSZXN0b3JlU2Nyb2xsICYmXG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50XG4gICAgKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0O1xuICAgICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnQ7XG4gICAgICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnQ7XG4gICAgICAgIHRoaXMuc2hvdWxkUmVzdG9yZVNjcm9sbCA9IGZhbHNlO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZGF0ZUZvcm1hdCkge1xuICAgICAgY29uc3Qgc3RvcmVkRGF0ZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRlZm9ybWF0Jyk7XG4gICAgICBpZiAoc3RvcmVkRGF0ZUZvcm1hdCkge1xuICAgICAgICB0aGlzLmRhdGVGb3JtYXQgPSBzdG9yZWREYXRlRm9ybWF0ID8gSlNPTi5wYXJzZShzdG9yZWREYXRlRm9ybWF0KSA6ICdkZC9NTS95eXl5JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVuY3lGb3JtYXQpIHtcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5Rm9ybWF0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5Rm9ybWF0Jyk7XG4gICAgICBpZiAoc3RvcmVkQ3VycmVuY3lGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeUZvcm1hdCA9IHN0b3JlZEN1cnJlbmN5Rm9ybWF0ID8gSlNPTi5wYXJzZShzdG9yZWRDdXJyZW5jeUZvcm1hdCkgOiAnMSwyMzQsNTY3Ljg5JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVuY3lTeW1ib2wpIHtcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5U3ltYm9sID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5U3ltYm9sJyk7XG4gICAgICBpZiAoc3RvcmVkQ3VycmVuY3lTeW1ib2wpIHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbCA9IHN0b3JlZEN1cnJlbmN5U3ltYm9sID8gSlNPTi5wYXJzZShzdG9yZWRDdXJyZW5jeVN5bWJvbCkgOiAnJCc7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBkYXRhU2V0TG9hZGluZyA9IGZhbHNlO1xuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSkge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuYXNzaWduVW5pcXVlQ29sdW1uSW5kZXhlcyh0aGlzLmNvbHVtbnMpO1xuICAgICAgYXdhaXQgdGhpcy5zZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpO1xuXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xuICAgICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xuICAgICAgICBjb25zdCBhbGxUYWJzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWN0aXZlVGFicycpIHx8ICd7fScpO1xuICAgICAgICBsZXQgc2F2ZWRUYWJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA/IChzYXZlZFRhYiA9IHRoaXMuc2VsZWN0ZWRUYWIpIDogKHNhdmVkVGFiID0gYWxsVGFic1t0aGlzLnRhYmxlVHlwZV0pXG4gICAgICAgIC8vIGNvbnN0IHNhdmVkVGFiID0gYWxsVGFic1t0aGlzLnRhYmxlVHlwZV07XG4gICAgICAgIGlmICh0aGlzLnRhYnMuaW5jbHVkZXMoJ0N1cnJlbnQgUG9saWN5JykpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFicz8uWzFdIHx8ICdDdXJyZW50IFBvbGljeSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSBzYXZlZFRhYiB8fCB0aGlzLnRhYnM/LlswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmICh0aGlzLnRhYmxlVHlwZSkge1xuICAgICAgICAvLyAgIHRoaXMuc2V0QWN0aXZlVGFiKHRoaXMuYWN0aXZlVGFiKTtcbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyc0NvbmZpZyddKSB7XG4gICAgICB0aGlzLmNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpO1xuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddPy5jdXJyZW50VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5hdXRvU2l6ZUNvbHVtbnNCeVJhdGlvKHRydWUpO1xuICAgICAgYXdhaXQgdGhpcy5hcHBseUZpbHRlcm9wdGlvbkxpc3QoKTtcblxuICAgICAgdGhpcy5vcmlnaW5hbENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgICAuLi5jb2wsXG4gICAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgPyBbLi4uY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZV1cbiAgICAgICAgICA6IFtdLFxuICAgICAgfSkpO1xuXG5cbiAgICAgIGlmICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCkge1xuICAgICAgICBhd2FpdCB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5zZXRTZWN0aW9uc1dpZHRoKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGFTZXQnXSkge1xuICAgICAgdGhpcy5kYXRhU2V0ID0gdGhpcy5kYXRhU2V0Py5tYXAoKHJvdywgaSkgPT4gKHtcbiAgICAgICAgLi4ucm93LFxuICAgICAgICBfX3ZpcnR1YWxJbmRleDogaSArIDEsXG4gICAgICB9KSk7XG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTZXQpO1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5kYXRhU2V0ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQ7XG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICBpZiAodGhpcy5jb21tb25TZXZpY2U/Lm1haW5Db250YWluZXJMZWZ0ID4gMjAwKVxuICAgICAgICAgIHRoaXMuc2hvdWxkUmVzdG9yZVNjcm9sbCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdm9pZCB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgIHRoaXMuZGF0YVNldExvYWRpbmcgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPVxuICAgICAgICAgICAgICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZGF0YVNldExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKTtcblxuICAgICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XG4gICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMuZm9yRWFjaChncm91cGVkQ29sID0+IHtcbiAgICAgICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQodGhpcy5jb2x1bW5zLCBncm91cGVkQ29sLmZpZWxkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjaGVja2JveFN0YXRlJ10/LmN1cnJlbnRWYWx1ZT8ucmVzZXQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uU3RhdGUodGhpcy50YWJsZVR5cGUpO1xuXG4gICAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgICAgb2JqOiBpZHMsXG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50VHlwZTogJ29uU2VsZWN0Um93JyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjbG9zZURyb3Bkb3duJ10gJiYgdGhpcy5jbG9zZURyb3Bkb3duLnByZXNldC5jbG9zZWQpIHtcbiAgICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gbnVsbDtcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnByZXNldE5hbWUgPSAnJztcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3Jlc2V0QWxsRmlsdGVycyddICYmIHRoaXMucmVzZXRBbGxGaWx0ZXJzLnJlc2V0QWxsKSB7XG4gICAgICB0aGlzLmNsZWFyQWxsRmlsdGVycygpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWyd0YWJsZVZpZXcnXSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMudGFibGVWaWV3O1xuICAgICAgICBsZXQgdGVtcHJvcnlTZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkodmlld1ZhbHVlKVxuICAgICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX3RlbXApXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIGlmICghdGVtcHJvcnlTZWxlY3RlZCkge1xuICAgICAgICAgIHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcbiAgICAgICAgICAgID8gdmlld1ZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLmlzX2RlZmF1bHQpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSA9IHRlbXByb3J5U2VsZWN0ZWQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5wcmVzZXROYW1lID0gdGVtcHJvcnlTZWxlY3RlZD8ubmFtZSB8fCAnJztcbiAgICAgICAgdGhpcy5zdG9yZVByZXNldE5hbWUgPSB0ZW1wcm9yeVNlbGVjdGVkPy5uYW1lIHx8ICcnO1xuICAgICAgICB0aGlzLnByZXNldEZpbHRlciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xuICAgICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5yb3dTaGFkaW5nRW5hYmxlZDtcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcjtcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5mb250RmFpbWx5O1xuICAgICAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmhlYWRlclRleHRGb250c1NpemU7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dDtcbiAgICAgICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuYm9keVRleHRGb250c1NpemU7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hUZXh0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuZ2xvYmFsU2VhcmNoO1xuICAgICAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQodGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0KTtcbiAgICAgICAgICB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgPSB0ZW1wcm9yeVNlbGVjdGVkPy5jb25maWc/Lm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgfHwgJyNmMWYxZjEnO1xuICAgICAgICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gdGVtcHJvcnlTZWxlY3RlZD8uY29uZmlnPy5ncm91cGVkQ29sdW1ucztcbiAgICAgICAgICBpZiAoZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucyA9IHN0cnVjdHVyZWRDbG9uZShncm91cGVkQ29sdW1ucyk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMuZGF0YVNldCwgdGhpcy5ncm91cGVkQ29sdW1ucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRDb25maWcpIHtcbiAgICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGhpcy5kZWZhdWx0Q29uZmlnLnJvd1NoYWRpbmdFbmFibGVkIHx8IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gdGhpcy5kZWZhdWx0Q29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlciB8fCBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSB0aGlzLmRlZmF1bHRDb25maWcuZm9udEZhaW1seSB8fCAnSW50ZXInO1xuICAgICAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRoaXMuZGVmYXVsdENvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDE0O1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IHRoaXMuZGVmYXVsdENvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0O1xuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0aGlzLmRlZmF1bHRDb25maWcuYm9keVRleHRGb250c1NpemUgfHwgMTQ7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hUZXh0ID0gdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbFNlYXJjaDtcbiAgICAgICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCk7XG4gICAgICAgICAgY29uc3QgZ3JvdXBlZENvbHVtbnMgPSB0aGlzLmRlZmF1bHRDb25maWc/Lmdyb3VwZWRDb2x1bW5zO1xuICAgICAgICAgIGlmIChncm91cGVkQ29sdW1ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zID0gc3RydWN0dXJlZENsb25lKGdyb3VwZWRDb2x1bW5zKTtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5kYXRhU2V0LCB0aGlzLmdyb3VwZWRDb2x1bW5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gJ0ludGVyJztcbiAgICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgfHwgJ21lZGl1bSc7XG4gICAgICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDE0O1xuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICAgIHRoaXMucHJlc2V0TmFtZSA9ICcnXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3BhZ2VTaXplT3B0aW9ucyddICYmIGNoYW5nZXNbJ3BhZ2VTaXplT3B0aW9ucyddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuYnVpbGRQYWdlU2l6ZUtleU1hcCgpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgc2V0Q29sdW1uc0NvbHVtbkRyb3Bkb3duVmFsdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbnMpIHJldHVybjtcbiAgICB0aGlzLmNvbHVtbnMgPSBhd2FpdCB0aGlzLmNvbW1vblNldmljZS5jb3B5RHJvcGRvd25EYXRhUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcbiAgfVxuXG4gIGFwcGx5Um93c1NlbGVjdGlvblN0YXRlKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzRnJvbVN0YXRlID0gdGhpcy5yZXN0b3JlU2VsZWN0aW9uKHRoaXMudGFibGVUeXBlKTtcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcbiAgICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgICAgICBvYmo6IGlkc1xuICAgICAgICB9LFxuICAgICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uU3RhdGUodGFibGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3tcInNlbGVjdGVkUm93c1wiOiB7fX0nKTtcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcbiAgICAgIGRlbGV0ZSBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV07XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgJ2RhdGF0YWJsZVNlbGVjdGlvbnMnLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoc3RvcmVkKVxuICAgICk7XG4gIH1cblxuXG5cbiAgYXN5bmMgYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCkge1xuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBbLi4udXBkYXRlZENvbHVtbnNdO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBhc3luYyB1cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoY29sdW1uczogYW55ID0gbnVsbCkge1xuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxuICAgICAgICBjb2x1bW5zID8gY29sdW1ucyA6IHRoaXMuY29sdW1ucyxcbiAgICAgICAgY29udGFpbmVyV2lkdGhcbiAgICAgICk7XG4gICAgICByZXNvbHZlKHByZXBhcmVkKTtcbiAgICB9KTtcblxuICAgIHRoaXMubGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcbiAgICB0aGlzLnJpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCAwKSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgLy8gV3JhcCBwcmVwYXJlQ29sdW1ucyBpbiBhIFByb21pc2UgdG8gbWFrZSBpdCBhd2FpdGFibGVcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCBwcmVwYXJlZCA9IHRoaXMuY29sdW1uU2VydmljZS5wcmVwYXJlQ29sdW1ucyhcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXG4gICAgICApO1xuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyA9IGxlZnQ7XG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcbiAgICB0aGlzLnByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMgPSByaWdodDtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTApKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIGFzeW5jIFNldENvbHVtbnNEZWZhdWx0V2lkdGgoKSB7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLmdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcblxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXG4gICAgICB0aGlzLmNvbHVtbnMsXG4gICAgICBjb250YWluZXJXaWR0aFxuICAgICk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDApKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XG4gICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sZWZ0LXBpbm5lZC1ib2R5JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgY2VudGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnJpZ2h0LXBpbm5lZC1ib2R5JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmxlZnRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xuICAgIH1cbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICBsZWZ0LnN0eWxlLm1pbldpZHRoID0gYCR7dGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xuICAgIH1cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLnJpZ2h0UGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9YDtcbiAgICB9XG4gIH1cblxuICBmYWtlU2Nyb2xsYmFyU2Nyb2xsTGVmdCA9IDA7XG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIW9iaiB8fCAhZmllbGQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHZhbHVlID0gZmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcbiAgICBpZiAodGhpcy5pc1N0YXR1c0ZpZWxkKGZpZWxkKSAmJiB2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlID8gdGhpcy5jYXBpdGFsaXplU3RhdHVzKHZhbHVlLnZhbHVlKSA6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgIG5hbWU6IHZhbHVlLm5hbWUgPyB0aGlzLmNhcGl0YWxpemVTdGF0dXModmFsdWUubmFtZSkgOiB2YWx1ZS5uYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcGl0YWxpemVTdGF0dXModmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBpc05lc3RlZFZhbHVlQXJyYXkob2JqOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIW9iaiB8fCAhZmllbGQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiAoYWNjICYmIGFjY1twYXJ0XSAhPT0gdW5kZWZpbmVkID8gYWNjW3BhcnRdIDogdW5kZWZpbmVkKSwgb2JqKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW47XG4gICAgaWYgKCFjaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICAvLyDwn5SlIENhY2hlIERPTSArIGluaXRpYWwgd2lkdGhzIG9uY2VcbiAgICBjb25zdCBjaGlsZE1ldGEgPSBjaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkuZnJvbShcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oYFtmaWVsZD1cIiR7Y2hpbGQuZmllbGR9XCJdYClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudHNbMF0/Lm9mZnNldFdpZHRoIHx8IDgwO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICBpbml0aWFsV2lkdGg6IHdpZHRoLFxuICAgICAgICByYXRpbzogMCwgICAgICAgLy8gZmlsbGVkIGxhdGVyXG4gICAgICAgIGZpbmFsV2lkdGg6IHdpZHRoXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgdG90YWxJbml0aWFsV2lkdGggPSBjaGlsZE1ldGEucmVkdWNlKFxuICAgICAgKHN1bTogYW55LCBjOiBhbnkpID0+IHN1bSArIGMuaW5pdGlhbFdpZHRoLFxuICAgICAgMFxuICAgICk7XG5cbiAgICAvLyDwn5SlIFByZWNvbXB1dGUgcmF0aW9zIG9uY2VcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkTWV0YSkge1xuICAgICAgY2hpbGQucmF0aW8gPSBjaGlsZC5pbml0aWFsV2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcbiAgICB9XG5cbiAgICAvLyDwn5SlIENhY2hlIGdyb3VwIGhlYWRlciBvbmNlXG4gICAgY29uc3QgZ3JvdXBIZWFkZXJFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgYFtncm91cD1cIiR7Y29sLmhlYWRlcn1cIl1gXG4gICAgKTtcblxuICAgIGxldCBsYXRlc3REZWx0YSA9IDA7XG4gICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGFwcGx5V2lkdGhzID0gKCkgPT4ge1xuICAgICAgcmFmSWQgPSBudWxsO1xuXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XG5cbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRNZXRhKSB7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5tYXgoXG4gICAgICAgICAgY2hpbGQuaW5pdGlhbFdpZHRoICsgbGF0ZXN0RGVsdGEgKiBjaGlsZC5yYXRpbyxcbiAgICAgICAgICA4MFxuICAgICAgICApO1xuXG4gICAgICAgIGNoaWxkLmZpbmFsV2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgdG90YWxOZXdXaWR0aCArPSBuZXdXaWR0aDtcblxuICAgICAgICBjb25zdCB3aWR0aFB4ID0gYCR7bmV3V2lkdGh9cHhgO1xuICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIGNoaWxkLmVsZW1lbnRzKSB7XG4gICAgICAgICAgZWwuc3R5bGUud2lkdGggPSB3aWR0aFB4O1xuICAgICAgICAgIGVsLnN0eWxlLm1pbldpZHRoID0gd2lkdGhQeDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZ3JvdXBIZWFkZXJFbCkge1xuICAgICAgICBncm91cEhlYWRlckVsLnN0eWxlLndpZHRoID0gYCR7dG90YWxOZXdXaWR0aH1weGA7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuICAgICAgaWYgKGlzUmlnaHRQaW5uZWQpIGRlbHRhWCA9IC1kZWx0YVg7XG5cbiAgICAgIC8vIPCflKUgUHJldmVudCBzaHJpbmtpbmcgYmVsb3cgbWluXG4gICAgICBpZiAodG90YWxJbml0aWFsV2lkdGggKyBkZWx0YVggPCBjaGlsZHJlbi5sZW5ndGggKiA4MCkgcmV0dXJuO1xuXG4gICAgICBsYXRlc3REZWx0YSA9IGRlbHRhWDtcblxuICAgICAgaWYgKHJhZklkID09PSBudWxsKSB7XG4gICAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFwcGx5V2lkdGhzKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xuICAgICAgLy8g8J+UpSBDb21taXQgd2lkdGhzIE9OQ0VcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRNZXRhKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoXG4gICAgICAgICAgY2hpbGQuZmllbGQsXG4gICAgICAgICAgY2hpbGQuZmluYWxXaWR0aFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xuICAgICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuXG4gICAgICBpZiAocmFmSWQgIT09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCwgeyBvbmNlOiB0cnVlIH0pO1xuICB9XG5cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGZpZWxkOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGUgPSAoY29sdW1uczogYW55W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgdXBkYXRlKGNvbC5jaGlsZHJlbik7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xuICAgICAgICAgIGNvbC53aWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHVwZGF0ZSh0aGlzLmNvbHVtbnMpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjcmVhdGVVcGRhdGVDb2x1bW5Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcbiAgICAgIHRhYmxlX2NvbmZpZzoge1xuICAgICAgICByb3dTaGFkaW5nRW5hYmxlZDogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCB8fCBmYWxzZSxcbiAgICAgICAgc2hvd1ZlcnRpY2FsQm9yZGVyOiB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciB8fCBmYWxzZSxcbiAgICAgICAgZm9udEZhaW1seTogdGhpcy5mb250RmFpbWx5IHx8ICdJbnRlcicsXG4gICAgICAgIGhlYWRlclRleHRGb250c1NpemU6IE51bWJlcih0aGlzLmhlYWRlclRleHRGb250c1NpemUpIHx8IDE0LFxuICAgICAgICBzZWxlY3RlZFRhYmxlTGF5b3V0OiB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgfHwgJ21lZGl1bScsXG4gICAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiBOdW1iZXIodGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSkgfHwgMTQsXG4gICAgICAgIGdsb2JhbFNlYXJjaDogdGhpcy5nbG9iYWxTZWFyY2hUZXh0LFxuICAgICAgICBmaWx0ZXJOYW1lczogJycsXG4gICAgICAgIHRvdGFsQ291bnQ6IDAsXG4gICAgICAgIGFjdGl2ZUZpbHRlcnM6IHRydWUsXG4gICAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6ICcjZjFmMWYxJ1xuICAgICAgfSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH1cbiAgfVxuXG4gIGNsZWFuQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gY29sdW1ucy5tYXAoKGNvbCkgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBfX3R5cGVuYW1lLFxuICAgICAgICBfaWQsXG4gICAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZSxcbiAgICAgICAgZmlsdGVyVmFsdWUsXG4gICAgICAgIGV4cGFuZGVkRmlsdGVyLFxuICAgICAgICBjZWxsUmVuZGVyZXIsXG4gICAgICAgIGZpbHRlclJlbmRlcmVyLFxuICAgICAgICBjZWxsQ29tcG9uZW50UmVmLFxuICAgICAgICBxdWVyeSxcbiAgICAgICAgaXNSb3dHcm91cGVkLFxuICAgICAgICAuLi5yZXN0XG4gICAgICB9ID0gY29sO1xuXG4gICAgICAvLyBDbGVhbiBkcm9wZG93biB2YWx1ZXMgKF9fdHlwZW5hbWUgcmVtb3ZlZClcbiAgICAgIGNvbnN0IGNsZWFuZWREcm9wZG93biA9IEFycmF5LmlzQXJyYXkoY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxuICAgICAgICA/IGNvbHVtbl9kcm9wZG93bl92YWx1ZS5tYXAoKHsgX190eXBlbmFtZSwgLi4uZFJlc3QgfSkgPT4gZFJlc3QpXG4gICAgICAgIDogY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgPyAoKHsgX190eXBlbmFtZSwgLi4uZFJlc3QgfSkgPT4gZFJlc3QpKGNvbHVtbl9kcm9wZG93bl92YWx1ZSlcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIC8vIENsZWFuIHF1ZXJ5IChfX3R5cGVuYW1lIHJlbW92ZWQpXG4gICAgICBjb25zdCBjbGVhbmVkUXVlcnkgPSBBcnJheS5pc0FycmF5KHF1ZXJ5KVxuICAgICAgICA/IHF1ZXJ5Lm1hcCgoeyBfX3R5cGVuYW1lLCAuLi5xUmVzdCB9KSA9PiBxUmVzdClcbiAgICAgICAgOiBxdWVyeVxuICAgICAgICAgID8gKCh7IF9fdHlwZW5hbWUsIF9pZHMsIC4uLnFSZXN0IH0pID0+IHFSZXN0KShxdWVyeSlcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3QsXG4gICAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogY2xlYW5lZERyb3Bkb3duLFxuICAgICAgICBxdWVyeTogY2xlYW5lZFF1ZXJ5LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIG9uUmVzaXplQ29sdW1uKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSk6IHZvaWQge1xuICAvLyAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIC8vICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgLy8gICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xuXG4gIC8vICAgY29uc3QgdGFyZ2V0RWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAvLyAgICAgYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWBcbiAgLy8gICApIGFzIEhUTUxFbGVtZW50O1xuICAvLyAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRhcmdldEVsPy5vZmZzZXRXaWR0aCB8fCAxNTA7XG5cbiAgLy8gICBjb25zdCBtYXRjaGluZ0VscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApO1xuXG4gIC8vICAgLy8g8J+RiSBBZGQgaGlnaGxpZ2h0IHdoaWxlIHJlc2l6aW5nXG4gIC8vICAgaWYgKGNvbD8ucGlubmVkID09ICdyaWdodCcpIHtcbiAgLy8gICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XG4gIC8vICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgncmVzaXppbmctaGlnaGxpZ2h0LXJpZ2h0Jyk7XG4gIC8vICAgICB9KTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgLy8gICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdyZXNpemluZy1oaWdobGlnaHQnKTtcbiAgLy8gICAgIH0pO1xuICAvLyAgIH1cblxuICAvLyAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAvLyAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuXG4gIC8vICAgICAvLyDwn5GJIFJldmVyc2UgaWYgdGhlIGNvbHVtbiBpcyBwaW5uZWQgdG8gdGhlIHJpZ2h0XG4gIC8vICAgICBpZiAoY29sLnBpbm5lZCA9PT0gJ3JpZ2h0Jykge1xuICAvLyAgICAgICBkZWx0YVggPSAtZGVsdGFYO1xuICAvLyAgICAgfVxuXG4gIC8vICAgICBsZXQgbmV3V2lkdGggPSBpbml0aWFsV2lkdGggKyBkZWx0YVg7XG4gIC8vICAgICBpZiAobmV3V2lkdGggPCA4MCkgcmV0dXJuO1xuXG4gIC8vICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAvLyAgICAgICBjb25zdCBlbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7XG4gIC8vICAgICAgIGVsZW1lbnQuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gIC8vICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gIC8vICAgICB9KTtcblxuICAvLyAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIG5ld1dpZHRoKTtcbiAgLy8gICAgIGNvbC53aWR0aCA9IG5ld1dpZHRoO1xuICAvLyAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgLy8gICB9O1xuXG4gIC8vICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xuICAvLyAgICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcbiAgLy8gICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XG4gIC8vICAgICB9XG4gIC8vICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gIC8vICAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgLy8gICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgLy8gICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gIC8vICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcbiAgLy8gICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gIC8vICAgICB9O1xuICAvLyAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gIC8vICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAvLyAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Jlc2l6aW5nLWhpZ2hsaWdodCcpO1xuICAvLyAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Jlc2l6aW5nLWhpZ2hsaWdodC1yaWdodCcpO1xuICAvLyAgICAgfSk7XG5cbiAgLy8gICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gIC8vICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gIC8vICAgfTtcblxuICAvLyAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gIC8vICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAvLyB9XG5cbiAgb25SZXNpemVDb2x1bW4oZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbDogYW55KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG5cbiAgICAvLyDwn5SlIENhY2hlIERPTSBvbmNlXG4gICAgY29uc3QgZWxlbWVudHMgPSBBcnJheS5mcm9tKFxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApXG4gICAgKTtcblxuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSBlbGVtZW50c1swXS5vZmZzZXRXaWR0aCB8fCAxNTA7XG4gICAgY29uc3QgaXNSaWdodFBpbm5lZCA9IGNvbC5waW5uZWQgPT09ICdyaWdodCc7XG4gICAgY29uc3QgaGlnaGxpZ2h0Q2xhc3MgPSBpc1JpZ2h0UGlubmVkXG4gICAgICA/ICdyZXNpemluZy1oaWdobGlnaHQtcmlnaHQnXG4gICAgICA6ICdyZXNpemluZy1oaWdobGlnaHQnO1xuXG4gICAgLy8g8J+UpSBBZGQgaGlnaGxpZ2h0IG9uY2VcbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5hZGQoaGlnaGxpZ2h0Q2xhc3MpKTtcblxuICAgIGxldCBsYXRlc3RXaWR0aCA9IGluaXRpYWxXaWR0aDtcbiAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3QgYXBwbHlXaWR0aCA9ICgpID0+IHtcbiAgICAgIHJhZklkID0gbnVsbDtcblxuICAgICAgY29uc3Qgd2lkdGhQeCA9IGAke2xhdGVzdFdpZHRofXB4YDtcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgZWwuc3R5bGUud2lkdGggPSB3aWR0aFB4O1xuICAgICAgICBlbC5zdHlsZS5taW5XaWR0aCA9IHdpZHRoUHg7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgbGV0IGRlbHRhWCA9IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuICAgICAgaWYgKGlzUmlnaHRQaW5uZWQpIGRlbHRhWCA9IC1kZWx0YVg7XG5cbiAgICAgIGNvbnN0IG5ld1dpZHRoID0gaW5pdGlhbFdpZHRoICsgZGVsdGFYO1xuICAgICAgaWYgKG5ld1dpZHRoIDwgODApIHJldHVybjtcblxuICAgICAgbGF0ZXN0V2lkdGggPSBuZXdXaWR0aDtcblxuICAgICAgaWYgKHJhZklkID09PSBudWxsKSB7XG4gICAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFwcGx5V2lkdGgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICBjb2wud2lkdGggPSBsYXRlc3RXaWR0aDtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBsYXRlc3RXaWR0aCk7XG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuICAgICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcbiAgICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG5cbiAgICAgIGVsZW1lbnRzLmZvckVhY2goZWwgPT4gZWwuY2xhc3NMaXN0LnJlbW92ZShoaWdobGlnaHRDbGFzcykpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcblxuICAgICAgaWYgKHJhZklkICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXAsIHsgb25jZTogdHJ1ZSB9KTtcbiAgfVxuXG5cblxuXG4gIG9uUmVzaXplR3JvdXBCb3goZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3Qgc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcblxuICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dyb3VwQm94SGVhZGVyRGl2Jyk7XG4gICAgY29uc3QgaW5pdGlhbFdpZHRoID0gdGFyZ2V0RWw/Lm9mZnNldFdpZHRoIHx8IDE1MDtcblxuICAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgZGVsdGFYID0gbW92ZUV2ZW50LmNsaWVudFggLSBzdGFydFg7XG5cbiAgICAgIGxldCBuZXdXaWR0aCA9IGluaXRpYWxXaWR0aCArIGRlbHRhWDtcbiAgICAgIGlmIChuZXdXaWR0aCA8IDEwMCkgbmV3V2lkdGggPSAxMDA7XG5cbiAgICAgIGlmICh0YXJnZXRFbCkge1xuICAgICAgICB0YXJnZXRFbC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcbiAgICAgICAgdGFyZ2V0RWwuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gICAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gbmV3V2lkdGg7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTW91c2VVcCA9ICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICB9XG5cbiAgb25QYXN0ZUluRmlsdGVyUm93U2VhcmNoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29sOiBhbnkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub25GaWx0ZXJDaGFuZ2UoY29sKTtcbiAgICAgIHRoaXMuYXBwbHlEcm9wZG93bkZpbHRlcigpO1xuICAgIH0pO1xuICB9XG5cbiAgb25GaWx0ZXJDaGFuZ2UoY29sOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGNvbC5maWx0ZXJWYWx1ZT8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xuICAgIGlmICghY29sPy5xdWVyeSkge1xuICAgICAgY29sLnF1ZXJ5ID0ge1xuICAgICAgICBmaXJzdF9jb25kaXRpb246IGNvbC50eXBlID09ICdkYXRlJyA/ICdlcXVhbCcgOiAnY29udGFpbicsXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxuICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBudWxsLFxuICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXG4gICAgICAgIGNvbmRpdGlvbjogbnVsbFxuICAgICAgfVxuICAgIH1cbiAgICBjb2wucXVlcnkuZmlyc3RfdmFsdWUgPSBmaWx0ZXJWYWx1ZTtcbiAgICB0aGlzLmZpcnN0VmFsdWUgPSBmaWx0ZXJWYWx1ZTtcbiAgfVxuXG4gIGdldCBib2R5V3JhcHBlckhlaWdodCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgJiYgdGhpcy5zaG93RmlsdGVyUm93ID8gMyA6ICh0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgfHwgdGhpcy5zaG93RmlsdGVyUm93ID8gMiA6IDEpO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaGVhZGVyUm93SGVpZ2h0ICogcm93cyArICh0aGlzLmhhc1Njcm9sbCA/IDE3IDogMCk7XG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke29mZnNldH1weClgO1xuICB9XG5cbiAgaG92ZXJlZFJvd0lkOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgb25Sb3dIb3Zlcihyb3c6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaG92ZXJlZFJvd0lkID0gcm93Ll9pZCB8fCByb3cuaWQ7XG4gIH1cblxuICBvblJvd0xlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuaG92ZXJlZFJvd0lkID0gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuSW5kZXggPSBudWxsO1xuICAgIGlmIChcbiAgICAgICF0aGlzLmhhc1BhcmVudFdpdGhDbGFzcyh0YXJnZXQsIFtcbiAgICAgICAgJ3RocmVlLWRvdHMnLFxuICAgICAgICAnZmlsdGVyLWljb24td3JhcHBlcicsXG4gICAgICAgICdjb2x1bW4tbWVudScsXG4gICAgICAgICdmaWx0ZXItbWVudScsXG4gICAgICBdKVxuICAgICkge1xuICAgICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLnNob3dBY3Rpb25zRHJvcERvd24gPSBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaW5zaWRlVG9wRmlsdGVyUm93ID0gdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItdGFncycpIHx8IHRhcmdldC5jbG9zZXN0KCcuYWRkLWZpbHRlci1idXR0b24tbWVudScpIHx8XG4gICAgICB0YXJnZXQuY2xvc2VzdCgnLnRhYmxlLXJpZ2h0LXRvcC1hY3Rpb25zJykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy50YWJsZS1sYXlvdXQnKSB8fCB0YXJnZXQuY2xvc2VzdCgnLmZpbHRlci1yb3ctZmlsdGVyLXdyYXBwZXInKTtcbiAgICBjb25zdCBpc0NsaWNrZWRJbnNpZGVUaHJlZURvdHNGaWx0ZXIgPSB0YXJnZXQuY2xvc2VzdCgnLnRocmVlLWRvdHMtZmlsdGVyJykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItbWVudS1jb250YWluZXInKTtcbiAgICBpZiAoIWlzQ2xpY2tlZEluc2lkZVRocmVlRG90c0ZpbHRlcikge1xuICAgICAgdGhpcy5jbG9zZVRocmVlRG90c01lbnVGaWx0ZXIoKTtcbiAgICB9XG4gICAgaWYgKCFpbnNpZGVUb3BGaWx0ZXJSb3cpIHtcbiAgICAgIHRoaXMuY2xvc2VGaWx0ZXJEcm9wZG93bnMoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuc2V0LWRlZmF1bHQtcHJlc2V0JykpIHtcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZXQtZGVmYXVsdC1wcmVzZXQnKT8uY2xhc3NMaXN0Py5yZW1vdmUoJ3Nob3cnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZnVsbC10ZXh0LWJveCcpICYmICF0YXJnZXQuY2xvc2VzdCgnLmRhdGEtZ3JpZC1oZWFkZXItd3JhcHBlcicpKSB7XG4gICAgICB0aGlzLmNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpO1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kYXRhLWdyaWQtdGFibGUtd3JhcHBlcicpKSB7XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5hY3RpdmVDZWxsID0gbnVsbDtcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uQm91bmRzID0geyB0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLWJvZHknKSkge1xuICAgICAgdGhpcy5lZGl0aW5nS2V5ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIGNsb3NlVGhyZWVEb3RzTWVudUZpbHRlcigpIHtcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICB9XG5cblxuICBjbG9zZUZpbHRlckRyb3Bkb3ducyhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGhhc1BhcmVudFdpdGhDbGFzcyhcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBjbGFzc0xpc3Q6IHN0cmluZ1tdXG4gICk6IGJvb2xlYW4ge1xuICAgIGxldCBlbDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDtcblxuICAgIHdoaWxlIChlbCAhPT0gbnVsbCkge1xuICAgICAgaWYgKFxuICAgICAgICBlbC5jbGFzc0xpc3QgJiZcbiAgICAgICAgY2xhc3NMaXN0LnNvbWUoKGNsYXNzTmFtZSkgPT4gZWwhLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzTWVudWVIaWRkZW4gPSBmYWxzZTtcbiAgb3BlblRocmVlRG90c01lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGNoaWxkOiBhbnksIGtlZXBPcmlnaW5hbFBvc2l0aW9uID0gZmFsc2UpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaXNNZW51ZUhpZGRlbiA9IHRydWU7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IGNoaWxkO1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFg7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbHVtbi1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBpZiAoeCA+IChjb250YWluZXJXaWR0aCAvIDIpKSB7XG4gICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7eCAtIDI0MH1weGA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxlbWVudCEuc3R5bGUubGVmdCA9IGAke3h9cHhgO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAwKTtcbiAgfVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gQ29sdW1uIFRocmVlIERvdHMgQWN0aW9uc1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBzb3J0QXNjKGNvbDogYW55KSB7XG4gICAgaWYgKCFjb2wuaXNfc29ydGFibGUpIHJldHVybjtcbiAgICBjb2whLm9yZGVyX2J5ID0gJ2FzYyc7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvcmRlcjogJ2FzYycsXG4gICAgICBjb2x1bW46IGNvbFxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgc29ydERlc2MoY29sOiBhbnkpIHtcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xuICAgIGNvbCEub3JkZXJfYnkgPSAnZGVzYyc7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvcmRlcjogJ2Rlc2MnLFxuICAgICAgY29sdW1uOiBjb2xcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc29ydGluZ09yZGVyT3B0aW9ucy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHJlc2V0U29ydChjb2w6IGFueSkge1xuICAgIHRoaXMuc29ydGluZ0NvbmZpZyA9IHsgZmllbGQ6ICcnLCBvcmRlcl9ieTogJycgfTtcbiAgICBjb25zdCBldmVudCA9IHsgZmllbGQ6IG51bGwsIG9yZGVyX2J5OiBudWxsIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xuICB9XG5cblxuICBhc3luYyB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXG4gICAgY29sdW1uOiBhbnksXG4gICAgcGlubmVkOiAnbGVmdCcgfCAncmlnaHQnIHwgbnVsbCxcbiAgICBpc05lc3RlZFRhYmxlOiBhbnkgPSBmYWxzZSxcbiAgICBjb2x1bW5zPzogYW55XG4gICkge1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICBpZiAoaXNOZXN0ZWRUYWJsZSkge1xuICAgICAgdGhpcy5waW5VbnBpbkNvbHVtKGNvbHVtbiwgcGlubmVkLCBjb2x1bW5zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyAx77iP4oOjIFVwZGF0ZSBwaW5uZWQgc3RhdGUgcmVjdXJzaXZlbHlcbiAgICBjb25zdCB1cGRhdGVQaW5uZWQgPSAoY29sczogYW55W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgdXBkYXRlUGlubmVkKGNvbC5jaGlsZHJlbik7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcbiAgICAgICAgICBjb2wucGlubmVkID0gcGlubmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICB1cGRhdGVQaW5uZWQodGhpcy5jb2x1bW5zKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5Db2x1bW5zID0gKGNvbHM6IGFueVtdKTogYW55W10gPT4ge1xuICAgICAgbGV0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sKTtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGZsYXR0ZW5Db2x1bW5zKGNvbC5jaGlsZHJlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBjb25zdCBhbGxDb2xzID0gZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICBjb25zdCBwaW5uZWRMZWZ0ID0gYWxsQ29scy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ2xlZnQnKTtcbiAgICBjb25zdCBjZW50ZXIgPSBhbGxDb2xzLmZpbHRlcihjID0+ICFjLnBpbm5lZCk7XG4gICAgY29uc3QgcGlubmVkUmlnaHQgPSBhbGxDb2xzLmZpbHRlcihjID0+IGMucGlubmVkID09PSAncmlnaHQnKTtcbiAgICBjb25zdCByZW9yZGVyZWRDb2x1bW5zID0gWy4uLnBpbm5lZExlZnQsIC4uLmNlbnRlciwgLi4ucGlubmVkUmlnaHRdO1xuICAgIHRoaXMuY29tbW9uU2V2aWNlLmFzc2lnblVuaXF1ZUNvbHVtbkluZGV4ZXMocmVvcmRlcmVkQ29sdW1ucyk7XG5cbiAgICB0aGlzLmNvbHVtbnMgPSByZW9yZGVyZWRDb2x1bW5zO1xuXG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxuICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gIH1cblxuXG4gIHByaXZhdGUgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBpZiAoY29sdW1uLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sdW1uLmNoaWxkcmVuKSkge1xuICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLmdldFZpc2libGVMZWFmQ29sdW1ucyhjb2x1bW4uY2hpbGRyZW4pKTtcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBhdXRvc2l6ZUNvbHVtbihjb2xzOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcblxuICAgIGNvbnN0IGNvbHVtbnNUb1Jlc2l6ZSA9IEFycmF5LmlzQXJyYXkoY29scykgPyBjb2xzIDogW2NvbHNdO1xuXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLmdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcblxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3hlcykgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgY29udGFpbmVyV2lkdGggLT0gNTtcbiAgICBjb25zdCBlcXVhbFdpZHRoID0gTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIHZpc2libGVDb3VudCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zVG9SZXNpemUpIHtcbiAgICAgIGlmIChjb2wgJiYgY29sLmZpZWxkKSB7XG4gICAgICAgIGNvbC53aWR0aCA9IGVxdWFsV2lkdGg7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBlcXVhbFdpZHRoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgICB9O1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIH0sIDEwMDApO1xuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gIH1cblxuICBnZXRHcm91cFdpZHRoKGdyb3VwOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICBncm91cD8uY2hpbGRyZW5cbiAgICAgICAgPy5maWx0ZXIoKGNvbDogYW55KSA9PiBjb2w/LmlzX3Zpc2libGUpXG4gICAgICAgID8ucmVkdWNlKChhY2M6IG51bWJlciwgY29sOiBhbnkpID0+IGFjYyArIChjb2w/LndpZHRoIHx8IDApLCAwKSB8fCAwXG4gICAgKTtcbiAgfVxuXG4gIGF1dG9zaXplQWxsQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG5cbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbHVtbi5jaGlsZHJlbikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcblxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3hlcykgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgY29udGFpbmVyV2lkdGggLT0gNTtcbiAgICBjb25zdCBlcXVhbFdpZHRoID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIHZpc2libGVDb3VudCksIDE1MCk7XG5cbiAgICAvLyBVcGRhdGUgd2lkdGhzIGZvciBhbGwgdmlzaWJsZSBjb2x1bW5zXG4gICAgdmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICBjb2wud2lkdGggPSBlcXVhbFdpZHRoO1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIGVxdWFsV2lkdGgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgfTtcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbHVtbkFzR3JvdXBlZChjb2x1bW5zOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcbiAgICAgIGlmIChjb2wuZmllbGQgPT09IGZpZWxkKSB7XG4gICAgICAgIGNvbC5pc1Jvd0dyb3VwZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5tYXJrQ29sdW1uQXNHcm91cGVkKGNvbC5jaGlsZHJlbiwgZmllbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdyb3VwQnkoY29sOiBhbnkpIHtcbiAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIHRoaXMudHJhbnNsYXRlWSA9IDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcbiAgICBpZiAoIWNvbCkgcmV0dXJuO1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGlmIChjb2w/LmlzX2dyb3VwYWJsZSkge1xuICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGNvbCk7XG4gICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQodGhpcy5jb2x1bW5zLCBjb2wuZmllbGQpO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XG4gICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMTAwKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSB0aGlzLmNvbHVtbnNHcm91cGVkQm94Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfSwgMTApO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgYXN5bmMgZ3JvdXBEYXRhQXN5bmMoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55W10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5ncm91cERhdGEoZGF0YSwgZ3JvdXBGaWVsZHMpO1xuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9LCAwKTtcbiAgICB9KTtcbiAgfVxuXG5cblxuXG4gIGNob29zZUNvbHVtbnMoKSB7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuICAgIHRoaXMuc2hvd0NvbHVtblBhbmVsID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZXNldENvbHVtbnMoKSB7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuXG4gICAgLy8gdGhpcy5jb2x1bW5zID0gc3RydWN0dXJlZENsb25lKHRoaXMub3JpZ2luYWxDb2x1bW5zKTtcbiAgICAvLyBEZWVwIGNvcHkgbmVzdGVkIG9iamVjdHMgYnV0IGtlZXAgY2xhc3MgcmVmcyBzYWZlXG4gICAgdGhpcy5vcmlnaW5hbENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgLi4uY29sLFxuICAgICAgLy8gRGVlcCBjb3B5IG5lc3RlZCBvYmplY3RzIGJ1dCBrZWVwIGNsYXNzIHJlZnMgc2FmZVxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxuICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXG4gICAgICAgIDogW10sXG4gICAgfSkpO1xuXG4gICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIoY29sOiBhbnkpIHtcbiAgICBjb2wuZmlyc3RWYWx1ZSA9ICcnO1xuICAgIGNvbC5zZWNvbmRWYWx1ZSA9ICcnO1xuICAgIGNvbC5maXJzdENvbmRpdGlvbiA9ICdjb250YWluJztcbiAgICBjb2wuc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcbiAgICBjb2wubG9naWMgPSAnQU5EJztcbiAgICBjb2wuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgY29sLnNlbGVjdGVkT3B0aW9ucyA9IHt9O1xuICAgIGNvbC5zZWFyY2hWYWx1ZSA9ICcnO1xuXG4gIH1cblxuXG4gIGFwcGx5RmlsdGVyKGNvbDogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJDb2x1bW5zTGlzdC5wdXNoKGNvbCk7XG4gIH1cblxuICAvLyBSb3dzIFNlbGVjdGlvbiBMb2dpYyBHb2VzIEhlcmVcblxuICBzZWxlY3RlZFJvd3M6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIC8qKlxuICAgKiBHZXQgbm9ybWFsaXplZCBJRCBmcm9tIHJvdy5cbiAgICovXG4gIHByaXZhdGUgZ2V0Um93SWQocm93OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiByb3cuaWQgPz8gcm93Ll9pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgYSBzaW5nbGUgcm93IHNlbGVjdGlvbi5cbiAgICovXG4gIHRvZ2dsZVJvd1NlbGVjdGlvbihyb3c6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRSb3dJZChyb3cpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG5cbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XG5cbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgIG9iajogaWRzXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXG4gICAgfTtcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG5cblxuICB0b2dnbGVTZWxlY3RBbGwoZGF0YTogYW55W10pOiB2b2lkIHtcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZ2V0QWxsTGVhZlJvd3MoZGF0YSk7XG4gICAgY29uc3QgYWxsSWRzID0gbGVhZlJvd3MubWFwKHIgPT4gdGhpcy5nZXRSb3dJZChyKSk7XG5cbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IGFsbElkcy5ldmVyeShpZCA9PiB0aGlzLnNlbGVjdGVkUm93cy5oYXMoaWQpKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgYWxsSWRzLmZvckVhY2goaWQgPT4gdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsbElkcy5mb3JFYWNoKGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgICBvYmo6IGlkc1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oaWRzLCB0aGlzLnRhYmxlVHlwZSk7XG4gIH1cblxuICBpc1Jvd1NlbGVjdGVkKHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpO1xuICB9XG5cbiAgaXNBbGxTZWxlY3RlZChkYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcbiAgICByZXR1cm4gbGVhZlJvd3MubGVuZ3RoID4gMCAmJiBsZWFmUm93cy5ldmVyeShyID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHIpKSk7XG4gIH1cblxuXG4gIGlzSW5kZXRlcm1pbmF0ZVN0YXRlKGRhdGE6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmdldEFsbExlYWZSb3dzKGRhdGEpO1xuICAgIGNvbnN0IHNlbGVjdGVkQ291bnQgPSBsZWFmUm93cy5maWx0ZXIociA9PiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5nZXRSb3dJZChyKSkpLmxlbmd0aDtcblxuICAgIHJldHVybiBzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50IDwgbGVhZlJvd3MubGVuZ3RoO1xuICB9XG5cblxuICBnZXRBbGxMZWFmUm93cyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCBsZWFmOiBhbnlbXSA9IFtdO1xuXG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XG4gICAgICBpZiAoIW5vZGUpIHJldHVybjtcblxuICAgICAgaWYgKG5vZGUuaXNHcm91cCkge1xuICAgICAgICBub2RlLmNoaWxkcmVuPy5mb3JFYWNoKHRyYXZlcnNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlYWYucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZGF0YS5mb3JFYWNoKHRyYXZlcnNlKTtcbiAgICByZXR1cm4gbGVhZjtcbiAgfVxuXG4gIHRvZ2dsZVNpZGVNZW51KGNsaWNrZWRPbjogJ2NvbHMnIHwgJ2ZpbHRycycpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID09IGNsaWNrZWRPbikge1xuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgPSAhdGhpcy5zaWRlTWVudVZpc2libGU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlICYmXG4gICAgICBjbGlja2VkT24gIT0gdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlXG4gICAgKSB7XG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlID0gIXRoaXMuc2lkZU1lbnVWaXNpYmxlO1xuICAgIH1cbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZUdyb3VwVmlzaWJpbGl0eShjb2w6IGFueSkge1xuICAgIGNvbnN0IGFsbFZpc2libGUgPSBjb2wuY2hpbGRyZW4uZXZlcnkoKGNoaWxkOiBhbnkpID0+IGNoaWxkLmlzX3Zpc2libGUpO1xuICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiAoY2hpbGQuaXNfdmlzaWJsZSA9ICFhbGxWaXNpYmxlKSk7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlKGNvbHVtbnM6IGFueSkge1xuICAgIGlmIChjb2x1bW5zPy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGNvbHVtbnMuY2hpbGRyZW4uZXZlcnkoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5pc192aXNpYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29sdW1ucz8uaXNfdmlzaWJsZTtcbiAgfVxuXG4gIGFsbENvbHVtbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IG5vbkFsd2F5c1Zpc2libGUgPSBmbGF0dGVuLmZpbHRlcihjb2wgPT4gIWNvbC5pc19hbHdheXNfdmlzaWJsZSk7XG4gICAgcmV0dXJuIG5vbkFsd2F5c1Zpc2libGUubGVuZ3RoID4gMCAmJiBub25BbHdheXNWaXNpYmxlLmV2ZXJ5KGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDb2x1bW5CeUZpZWxkKGZpZWxkOiBzdHJpbmcsIGNvbHM6IGFueVtdKTogYW55IHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGNvbDtcbiAgICAgIH1cbiAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChmaWVsZCwgY29sLmNoaWxkcmVuKTtcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2x1bW46IGFueSwgaXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgaWYgKHRoaXMudmlzaWJsZUNvbHVtbnMoKT8ubGVuZ3RoIDw9IDIgJiYgY29sdW1uLmlzX3Zpc2libGUgfHwgKGNvbHVtbj8uaXNfYWx3YXlzX3Zpc2libGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLmlzX3Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcihjb2wgPT4gY29sLmlzX3Zpc2libGUpO1xuICAgICAgY29uc3Qgbm9uQWx3YXlzVmlzaWJsZSA9IGZsYXR0ZW4uZmlsdGVyKGNvbCA9PiAhY29sLmlzX2Fsd2F5c192aXNpYmxlKTtcbiAgICAgIGNvbnN0IGFsbE5vbkFsd2F5c1Zpc2libGVBcmVWaXNpYmxlID0gbm9uQWx3YXlzVmlzaWJsZS5ldmVyeShjb2wgPT4gY29sLmlzX3Zpc2libGUpO1xuICAgICAgaWYgKGFsbE5vbkFsd2F5c1Zpc2libGVBcmVWaXNpYmxlKSB7XG4gICAgICAgIG5vbkFsd2F5c1Zpc2libGUuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgIGNvbC5pc192aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGFsd2F5c1Zpc2libGVDb3VudCA9IGZsYXR0ZW4uZmlsdGVyKGNvbCA9PiBjb2wuaXNfYWx3YXlzX3Zpc2libGUpLmxlbmd0aDtcbiAgICAgICAgY29uc3QgY29sdW1uc05lZWRlZCA9IE1hdGgubWF4KDAsIDIgLSBhbHdheXNWaXNpYmxlQ291bnQpO1xuXG4gICAgICAgIGlmIChjb2x1bW5zTmVlZGVkID4gMCkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4oY29sdW1uc05lZWRlZCwgbm9uQWx3YXlzVmlzaWJsZS5sZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIG5vbkFsd2F5c1Zpc2libGVbaV0uaXNfdmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmbGF0dGVuLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICBjb2wuaXNfdmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcblxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgfTtcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcblxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdhaXQobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuXG5cblxuICB2aXNpYmxlQ29sdW1ucygpIHtcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZmxhdHRlbi5maWx0ZXIoKGM6IGFueSkgPT4gYy5pc192aXNpYmxlKTtcbiAgICByZXR1cm4gdmlzaWJsZUNvbHVtbnM7XG4gIH1cblxuICBmbGF0dGVuQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gY29scy5yZWR1Y2UoKGFjYzogYW55W10sIGNvbDogYW55KSA9PiB7XG4gICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KHRoaXMuZmxhdHRlbkNvbHVtbnMoY29sLmNoaWxkcmVuKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYWNjLmNvbmNhdChjb2wpO1xuICAgICAgfVxuICAgIH0sIFtdKTtcbiAgfVxuXG5cbiAgZmlsdGVyZWRDb2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuY29sdW1uU2VhcmNoLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGNvbHNcbiAgICAgIC5tYXAoKGNvbCkgPT4ge1xuICAgICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyZWRDb2x1bW5zKGNvbC5jaGlsZHJlbik7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29sLmhlYWRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHxcbiAgICAgICAgICAgIGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5jb2wsIGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjb2wuaGVhZGVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSA/IGNvbCA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0IGFjY29yZGlvblN0YXRlKCk6ICdhbGwnIHwgJ25vbmUnIHwgJ3NvbWUnIHtcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZCkubGVuZ3RoO1xuXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IDApIHJldHVybiAnbm9uZSc7XG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcbiAgICByZXR1cm4gJ3NvbWUnO1xuICB9XG5cbiAgZ2V0IGZpbHRlckFjY29yZGlvblN0YXRlKCk6ICdhbGwnIHwgJ25vbmUnIHwgJ3NvbWUnIHtcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLmdldEFsbEdyb3VwQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZEZpbHRlcikubGVuZ3RoO1xuXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IDApIHJldHVybiAnbm9uZSc7XG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcbiAgICByZXR1cm4gJ3NvbWUnO1xuICB9XG5cbiAgLy8gUmVjdXJzaXZlbHkgY29sbGVjdCBhbGwgZ3JvdXAgY29sdW1uc1xuICBwcml2YXRlIGdldEFsbEdyb3VwQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBsZXQgZ3JvdXBzOiBhbnlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBncm91cHMucHVzaChjb2wpO1xuICAgICAgICBncm91cHMgPSBncm91cHMuY29uY2F0KHRoaXMuZ2V0QWxsR3JvdXBDb2x1bW5zKGNvbC5jaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBzO1xuICB9XG5cbiAgLy8gVG9nZ2xlIGJhc2VkIG9uIGN1cnJlbnQgc3RhdGVcbiAgdG9nZ2xlQWxsQWNjb3JkaW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICB0aGlzLnNldEFjY29yZGlvblN0YXRlKHRoaXMuY29sdW1ucywgbmV4dFN0YXRlKTtcbiAgfVxuXG4gIHRvZ2dsZUFsbEZpbHRlckFjY29yZGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5maWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ2FsbCcgPyBmYWxzZSA6IHRydWU7XG4gICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZSh0aGlzLmNvbHVtbnMsIG5leHRTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjY29yZGlvblN0YXRlKGNvbHM6IGFueVtdLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGZvciAobGV0IGNvbCBvZiBjb2xzKSB7XG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgY29sLmV4cGFuZGVkID0gc3RhdGU7XG4gICAgICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUoY29sLmNoaWxkcmVuLCBzdGF0ZSk7IC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWRcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIHByaXZhdGUgc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBjb2wuZXhwYW5kZWRGaWx0ZXIgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xuXG4gIGNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpIHtcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgb25Fc2NhcGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5jbG9zZU1vZGFsQ29sdW1uUGFuZWwoKTtcbiAgfVxuXG4gIGdldCBoYXNSaWdodFBpbm5lZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc1JpZ2h0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGhhc0xlZnRQaW5uZWRDb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGRhdGFTZXRMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldEV4cGFuZGVkUm93Q291bnQodGhpcy5kYXRhU2V0KTtcbiAgfVxuXG5cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoZXZlbnQ6IFVJRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKSB0aGlzLmF1dG9TaXplQ29sdW1uc0J5UmF0aW8oKTtcbiAgICBjb25zdCBoID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB0aGlzLnZpZXdwb3J0Um93cyA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChoIC8gdGhpcy5yb3dIZWlnaHQpKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgfSwgMTAwKTtcbiAgfVxuXG4gIGF1dG9TaXplQ29sdW1uc0J5UmF0aW8oc2hvdWxkQ2hlY2tDb250YWluZXJXaWR0aCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuXG4gICAgY29uc3QgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoY29sdW1uLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sdW1uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBnZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICBpZiAoIXZpc2libGVDb2x1bW5zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XG5cbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3hlcykgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgY29udGFpbmVyV2lkdGggLT0gNTtcblxuICAgIGNvbnN0IHRvdGFsT2xkV2lkdGggPSB2aXNpYmxlQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAoc3VtLCBjb2wpID0+IHN1bSArIChjb2wud2lkdGggfHwgMCksXG4gICAgICAwXG4gICAgKTtcblxuICAgIGlmICh0b3RhbE9sZFdpZHRoID09PSAwKSByZXR1cm47XG5cbiAgICBpZiAoc2hvdWxkQ2hlY2tDb250YWluZXJXaWR0aCAmJiAoY29udGFpbmVyV2lkdGggPD0gdG90YWxPbGRXaWR0aCkpIHJldHVybjtcblxuICAgIHZpc2libGVDb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgY29uc3QgcmF0aW8gPSBjb2wud2lkdGggLyB0b3RhbE9sZFdpZHRoO1xuICAgICAgY29uc3QgbmV3V2lkdGggPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoICogcmF0aW8pLCAxMDApO1xuXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBuZXdXaWR0aCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgcmVmcmVzaEhlYWRlcnMoKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDApKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBoYXNBbnlWaXNpYmxlQ29sdW1uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNWaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGhhc0FueUluVmlzaWJsZUNvbHVtbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzSW5WaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnNDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0VG90YWxDb2x1bW5zTGVuZ3RoKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICB0YWJsZUhlYWRlckFuZEJvZHlIZWlnaHQoKSB7XG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMuZm9vdGVyUm93SGVpZ2h0fSlgO1xuICB9XG5cbiAgZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbCcpIGNlbnRlclNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICB2aXNpYmxlUm93Q291bnQgPSAyNTtcbiAgc3RhcnRJbmRleCA9IDA7XG4gIHZpc2libGVSb3dzOiBhbnlbXSA9IFtdO1xuXG4gIHByaXZhdGUgZmxhdHRlbkdyb3VwZWRSb3dzKFxuICAgIHJvd3M6IGFueVtdID0gW10sXG4gICAgbGV2ZWwgPSAwLFxuICAgIHJlc3VsdDogYW55W10gPSBbXVxuICApOiBhbnlbXSB7XG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgcmVzdWx0LnB1c2goeyAuLi5yb3csIF9fZGVwdGg6IGxldmVsIH0pO1xuICAgICAgaWYgKHJvdy5pc0dyb3VwICYmIHJvdy5pc0V4cGFuZCAmJiByb3cuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyhyb3cuY2hpbGRyZW4sIGxldmVsICsgMSwgW10pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3NpZ25WaXJ0dWFsSW5kZXhlcyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBsZXQgY3VycmVudEluZGV4ID0gMTtcbiAgICBjb25zdCB3YWxrID0gKGl0ZW1zOiBhbnlbXSk6IHZvaWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGl0ZW0uX192aXJ0dWFsSW5kZXggPSBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgaWYgKGl0ZW0/LmlzR3JvdXApIHtcbiAgICAgICAgICBjb25zdCBncm91cCA9IGl0ZW07XG4gICAgICAgICAgaWYgKGdyb3VwLmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICB3YWxrKGdyb3VwLmNoaWxkcmVuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHdhbGsoZGF0YSk7XG4gICAgLy8gY29uc29sZS5sb2coJ1RoaXMgZGF0YXNldDogJywgdGhpcy52aXNpYmxlUm93cylcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG5cbiAgdXBkYXRlVmlzaWJsZVJvd3Moc2Nyb2xsVG9wOiBudW1iZXIpIHtcblxuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcblxuICAgIGlmICh0aGlzLmRhdGFTZXQ/Lmxlbmd0aCA8PSAxNSkge1xuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhO1xuICAgICAgdGhpcy5maXJzdEluZGV4ID0gMDtcbiAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XG4gICAgICB0aGlzLnJlbmRlclN0YXJ0ID0gMDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdG90YWwgPSBmbGF0RGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCB0b3RhbCAtIHRoaXMudmlld3BvcnRSb3dzKTtcbiAgICBjb25zdCBmaXJzdCA9IE1hdGgubWluKE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpLCBtYXhGaXJzdCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBmaXJzdCk7XG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4odG90YWwsIGZpcnN0ICsgdGhpcy52aWV3cG9ydFJvd3MpO1xuXG4gICAgdGhpcy5maXJzdEluZGV4ID0gZmlyc3Q7XG4gICAgdGhpcy5zdGFydEluZGV4ID0gZmlyc3Q7XG4gICAgdGhpcy5yZW5kZXJTdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMudmlzaWJsZVJvd3MgPSBmbGF0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgdHJhY2tCeVJlbmRlcmVkSW5kZXggPSAoaTogbnVtYmVyLCBfcm93OiBhbnkpID0+IHRoaXMucmVuZGVyU3RhcnQgKyBpO1xuXG4gIHByaXZhdGUgaXNTeW5jaW5nRnJvbU1haW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1N5bmNpbmdGcm9tRmFrZSA9IGZhbHNlO1xuICBwcml2YXRlIG1haW5TY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbS5pZCB8fCBpdGVtLl9pZDtcbiAgfVxuXG4gIGZsYXR0ZW5lZERhdGE6IGFueVtdID0gW107XG5cbiAgdXBkYXRlRmxhdHRlbmVkRGF0YSgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZmxhdHRlbmVkRGF0YSA9IHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHRoaXMuZGF0YVNldCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgdHJhbnNsYXRlWSA9IDA7XG4gIGxhc3RTY3JvbGxUb3AgPSAwO1xuICBwZW5kaW5nQW5pbWF0aW9uRnJhbWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIG9uTWFpblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3A7XG4gICAgaWYgKE1hdGguYWJzKHNjcm9sbFRvcCAtIHRoaXMubGFzdFNjcm9sbFRvcCkgPCAoMTApKSByZXR1cm47XG4gICAgaWYgKHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lKSBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSk7XG4gICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGNvbnN0IHNjcm9sbGluZ0Rvd24gPSBzY3JvbGxUb3AgPiB0aGlzLmxhc3RTY3JvbGxUb3A7XG4gICAgICB0aGlzLmxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG5cbiAgICAgIGNvbnN0IG92ZXJzY2FuID0gNDtcbiAgICAgIGNvbnN0IG5ld1N0YXJ0SW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KTtcbiAgICAgIC8vIGNvbnN0IGR5bmFtaWNPdmVyc2NhbiA9IHNjcm9sbGluZ0Rvd24gPyBvdmVyc2NhbiA6IG92ZXJzY2FuO1xuXG4gICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIG5ld1N0YXJ0SW5kZXggLSBvdmVyc2Nhbik7XG4gICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihcbiAgICAgICAgdGhpcy5mbGF0dGVuZWREYXRhLmxlbmd0aCxcbiAgICAgICAgbmV3U3RhcnRJbmRleCArIHRoaXMudmlld3BvcnRSb3dzICsgb3ZlcnNjYW5cbiAgICAgICk7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVkgPSBzdGFydCAqIHRoaXMucm93SGVpZ2h0O1xuICAgICAgaWYgKHRoaXMuc3RhcnRJbmRleCAhPT0gc3RhcnQgfHwgdGhpcy52aXNpYmxlUm93cy5sZW5ndGggIT09IGVuZCAtIHN0YXJ0KSB7XG4gICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5kYXRhU2V0LnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzU2Nyb2xsYmFyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMubWFpblNjcm9sbCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGVsID0gdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuIGVsLnNjcm9sbEhlaWdodCA+IGVsLmNsaWVudEhlaWdodDtcbiAgfVxuXG4gIHRvZ2dsZUV4cGFuZChyb3c6IGFueSkge1xuICAgIGlmIChyb3cuZGV0YWlscykge1xuICAgICAgcm93LmlzRGV0YWlsc0V4cGFuZCA9ICFyb3cuaXNEZXRhaWxzRXhwYW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICByb3cuaXNFeHBhbmQgPSAhcm93LmlzRXhwYW5kO1xuICAgIH1cbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xuICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICB9XG5cbiAgdmlld3BvcnRSb3dzID0gMDtcbiAgZmlyc3RJbmRleCA9IDA7XG4gIHJlbmRlclN0YXJ0ID0gMDtcblxuICBwcml2YXRlIHNjcm9sbFJhZjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcGVuZGluZ1Njcm9sbFRvcCA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnbWFpblNjcm9sbCcpIG1haW5TY3JvbGwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZmFrZVNjcm9sbCcpIGZha2VTY3JvbGwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaG9yaXppbnRhbEZha2VTY3JvbGwnKVxuICBob3JpemludGFsRmFrZVNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjZW50ZXJTY3JvbGxhYmxlQm9keScpXG4gIGNlbnRlclNjcm9sbGFibGVCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIHByaXZhdGUgb3ZlcnNjYW4gPSA0OyAvLyBidWZmZXIgcm93cyBhYm92ZSBhbmQgYmVsb3dcblxuICBjb21wdXRlVmlld3BvcnRSb3dzKCkge1xuICAgIGlmICh0aGlzLmZha2VTY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgIGNvbnN0IGggPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPz8gMDtcblxuICAgICAgLy8gcm93cyB2aXNpYmxlIGluIHZpZXdwb3J0XG4gICAgICBjb25zdCByb3dzSW5WaWV3cG9ydCA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChoIC8gdGhpcy5yb3dIZWlnaHQpKTtcblxuICAgICAgLy8gYWRkIGJ1ZmZlciByb3dzIChvdmVyc2NhbilcbiAgICAgIHRoaXMudmlld3BvcnRSb3dzID0gcm93c0luVmlld3BvcnQgKyB0aGlzLm92ZXJzY2FuO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cblxuICBvbkhvcml6b250YWxGYWtlU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxMZWZ0O1xuICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICB9XG4gIH1cblxuICBvbkNlbnRlckJvZHlTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBpZiAodGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIpIHtcbiAgICAgIHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBpZiAodGhpcy5ob3JpemludGFsRmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5ob3JpemludGFsRmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIG9uQ2VudGVySGVhZGVyU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGhpcy5ob3JpemludGFsRmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5ob3JpemludGFsRmFrZVNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgfVxuICB9XG5cbiAgZHJhZ2dpbmdDb2x1bW46IGFueTtcbiAgZHJhZ1N0YXJ0SW5kZXg6IGFueSA9IDA7XG4gIGNhbkVudGVyVG9Sb3dzR3JvdXBpbmcgPSAoZHJhZzogQ2RrRHJhZzxhbnk+LCBkcm9wOiBDZGtEcm9wTGlzdDxhbnk+KSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IGRyYWcuZGF0YTtcbiAgICBpZiAoZGF0YT8uY2hpbGRyZW4gJiYgZGF0YT8uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZGF0YS5jaGlsZHJlbi5zb21lKFxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5pc192aXNpYmxlICYmIGNvbC5pc19ncm91cGFibGVcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhLmlzX3Zpc2libGUgJiYgZGF0YS5pc19ncm91cGFibGU7XG4gIH07XG5cbiAgZW50ZXJUb1RvcFJvd0dyb3VwaW5nKGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55Pikge1xuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcbiAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRyYWdnaW5nRGF0YT8uY2hpbGRyZW4pKSB7XG4gICAgICBjb25zdCB0YXJnZXRHcm91cCA9IHRoaXMuY29sdW1ucy5maW5kKFxuICAgICAgICAoY29sKSA9PiBjb2wuaGVhZGVyID09PSBkcmFnZ2luZ0RhdGEuaGVhZGVyXG4gICAgICApO1xuICAgICAgaWYgKHRhcmdldEdyb3VwKSB7XG4gICAgICAgIGRyYWdnaW5nRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChkcmFnZ2VkQ2hpbGQ6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRHcm91cC5jaGlsZHJlbi5maW5kKFxuICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XG4gICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9ICEhbWF0Y2hpbmdDaGlsZC5pc19ncm91cGFibGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBUcnkgZmluZGluZyBpdCBpbiB0b3AtbGV2ZWwgY29sdW1ucyBmaXJzdFxuICAgICAgbGV0IHRhcmdldENvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKFxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXG4gICAgICApO1xuXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uKSB7XG4gICAgICAgIHRhcmdldENvbHVtbi5pc1Jvd0dyb3VwZWQgPSAhIXRhcmdldENvbHVtbi5pc19ncm91cGFibGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBncm91cCBvZiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSBncm91cC5jaGlsZHJlbi5maW5kKFxuICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XG4gICAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gISFtYXRjaGluZ0NoaWxkLmlzX2dyb3VwYWJsZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g4pyFIFJlZnJlc2ggVUlcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRHJvcExpc3RFbnRlcihcbiAgICBkcm9wTGlzdDogQ2RrRHJhZ0VudGVyPGFueT4sXG4gICAgc2VjdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnXG4gICkge1xuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcblxuICAgIGNvbnN0IHRhcmdldENvbHVtbjogYW55ID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAoY29sKSA9PiBjb2wuaGVhZGVyID09IGRyYWdnaW5nRGF0YS5oZWFkZXJcbiAgICApO1xuXG4gICAgaWYgKCF0YXJnZXRDb2x1bW4pIHJldHVybjtcblxuICAgIGlmIChcbiAgICAgIEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkodGFyZ2V0Q29sdW1uPy5jaGlsZHJlbilcbiAgICApIHtcbiAgICAgIGRyYWdnaW5nRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChkcmFnZ2VkQ2hpbGQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0Q29sdW1uLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2VkQ2hpbGQuZmllbGRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkLnBpbm5lZCA9IHNlY3Rpb24gPT09ICdjZW50ZXInID8gbnVsbCA6IHNlY3Rpb247XG4gICAgICAgICAgbWF0Y2hpbmdDaGlsZFsnaXNSb3dHcm91cGVkJ10gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldENvbHVtbi5waW5uZWQgPSBzZWN0aW9uID09PSAnY2VudGVyJyA/IG51bGwgOiBzZWN0aW9uO1xuICAgICAgdGFyZ2V0Q29sdW1uWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZXhpdGVkRnJvbVRoZVRvcFJvdyhkcm9wTGlzdDogQ2RrRHJhZ0V4aXQ8YW55Pikge1xuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IGZhbHNlO1xuICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnNob3VsZERpc2FibGVEcm9wbGlzdFNvcnRpbmcgPSBmYWxzZTtcbiAgICBjb25zdCBkcmFnZ2luZ0RhdGEgPSBkcm9wTGlzdC5pdGVtLmRhdGE7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGRyYWdnaW5nRGF0YS5oZWFkZXJcbiAgICAgICk7XG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcbiAgICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldEdyb3VwLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHRhcmdldENvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKFxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXG4gICAgICApO1xuXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uKSB7XG4gICAgICAgIHRhcmdldENvbHVtbi5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGdyb3VwIG9mIHRoaXMuY29sdW1ucykge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IGdyb3VwLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcbiAgICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IGZhbHNlO1xuICBpc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGZhbHNlO1xuICBjaGVja0NvbHVtbkdyb3VwaW5nU3RhdHVzKGNvbDogYW55KSB7XG4gICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XG4gICAgICBjb25zdCBhbGxDaGlsZHJlbkRpc2FibGVkID0gY29sLmNoaWxkcmVuLmV2ZXJ5KFxuICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfZ3JvdXBhYmxlID09PSBmYWxzZVxuICAgICAgKTtcbiAgICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBhbGxDaGlsZHJlbkRpc2FibGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gY29sLmlzX2dyb3VwYWJsZSA9PT0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGN1cnJlbnREcmFnZ2luZ0NvbHVtbjogYW55ID0gbnVsbDtcbiAgZHJhZ1N0YXJ0T25Hcm91cChjb2w6IGFueSkge1xuICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gY29sO1xuICB9XG5cbiAgb25Tb3J0R3JvdXAgPSAoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55Piwgc2VjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl07XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoY29sOiBhbnkpID0+XG4gICAgICBjb2w/LmNoaWxkcmVuPy5zb21lPy4oKGNoaWxkOiBhbnkpID0+IGNoaWxkLmlzX3Zpc2libGUpID8/IGNvbC5pc192aXNpYmxlXG4gICAgKTtcblxuICAgIGNvbnN0IHByZXZDb2wgPSB2aXNpYmxlQ29sdW1uc1tldmVudC5wcmV2aW91c0luZGV4XTtcbiAgICBjb25zdCBjdXJyQ29sID0gdmlzaWJsZUNvbHVtbnNbZXZlbnQuY3VycmVudEluZGV4XTtcblxuICAgIGNvbnN0IGdldEZpZWxkcyA9IChjb2w6IGFueSkgPT4gY29sPy5jaGlsZHJlbj8ubWFwKChjOiBhbnkpID0+IGMuZmllbGQpID8/IFtjb2wuZmllbGRdO1xuICAgIGNvbnN0IGFsbEZpZWxkcyA9IFsuLi5nZXRGaWVsZHMocHJldkNvbCksIC4uLmdldEZpZWxkcyhjdXJyQ29sKV07XG5cbiAgICBjb25zdCBjZWxsc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBIVE1MRWxlbWVudFtdPigpO1xuICAgIGFsbEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGNlbGxzTWFwLnNldChmaWVsZCwgQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xuICAgIGNlbGxzTWFwLmZvckVhY2goY2VsbHMgPT4ge1xuICAgICAgY2VsbHMuZm9yRWFjaChlbCA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcbiAgICB9KTtcblxuICAgIC8vIE1vdmUgY29sdW1ucyBpbiBhcnJheXNcbiAgICBtb3ZlSXRlbUluQXJyYXkoKHRoaXMgYXMgYW55KVtzZWN0aW9uXSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICBjb25zdCBwcmV2SW5kZXggPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KGMgPT4gYy5oZWFkZXIgPT09IHByZXZDb2wuaGVhZGVyKTtcbiAgICBjb25zdCBjdXJySW5kZXggPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KGMgPT4gYy5oZWFkZXIgPT09IGN1cnJDb2wuaGVhZGVyKTtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jb2x1bW5zLCBwcmV2SW5kZXgsIGN1cnJJbmRleCk7XG5cbiAgICAvLyBTaW5nbGUgZGV0ZWN0Q2hhbmdlcyBjYWxsIGJlZm9yZSBhbmltYXRpb25cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgLy8gQmF0Y2ggYW5pbWF0aW9uXG4gICAgICBjZWxsc01hcC5mb3JFYWNoKGNlbGxzID0+IHtcbiAgICAgICAgY2VsbHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgY29uc3QgZGVsdGFYID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKSEgLSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgICAgIGlmICghZGVsdGFYKSByZXR1cm47XG5cbiAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICB2b2lkIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7XG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGNlbGxzTWFwLmZvckVhY2goY2VsbHMgPT4ge1xuICAgICAgICAgIGNlbGxzLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMjUwbXMgZWFzZSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XG5cbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xuICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBvbkRyb3BHcm91cCgpIHtcbiAgICBjb25zdCBhbGxDb2xzID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHBpbm5lZExlZnQgPSBhbGxDb2xzLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpO1xuICAgIGNvbnN0IGNlbnRlciA9IGFsbENvbHMuZmlsdGVyKGMgPT4gIWMucGlubmVkKTtcbiAgICBjb25zdCBwaW5uZWRSaWdodCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xuICAgIGNvbnN0IHJlb3JkZXJlZENvbHVtbnMgPSBbLi4ucGlubmVkTGVmdCwgLi4uY2VudGVyLCAuLi5waW5uZWRSaWdodF07XG4gICAgdGhpcy5jb21tb25TZXZpY2UuYXNzaWduVW5pcXVlQ29sdW1uSW5kZXhlcyhyZW9yZGVyZWRDb2x1bW5zKTtcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy5sZWZ0UGlubmVkQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyk7XG4gICAgdGhpcy5jZW50ZXJDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld0NlbnRlckNvbHVtbnMpO1xuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyk7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVlcENsb25lQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29sdW1ucykpIHJldHVybiBbXTtcblxuICAgIHJldHVybiBjb2x1bW5zLm1hcChjb2wgPT4gKHtcbiAgICAgIC4uLmNvbCxcbiAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcbiAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogQXJyYXkuaXNBcnJheShjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxuICAgICAgICA/IFsuLi5jb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXVxuICAgICAgICA6IFtdLFxuICAgICAgLy8gUmVjdXJzaXZlbHkgZGVlcCBjbG9uZSBjaGlsZHJlbiBpZiBwcmVzZW50XG4gICAgICBjaGlsZHJlbjogQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pXG4gICAgICAgID8gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKGNvbC5jaGlsZHJlbilcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSkpO1xuICB9XG5cblxuICBhc3luYyBvbkRyb3BUb3BHcm91cChldmVudDogQ2RrRHJhZ0Ryb3A8YW55Pikge1xuICAgIGlmICh0aGlzLmlzT3V0c2lkZUNvbnRhaW5lcikgcmV0dXJuO1xuICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnRyYW5zbGF0ZVkgPSAwO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBkcmFnZ2VkRGF0YSA9IGV2ZW50Lml0ZW0uZGF0YTtcbiAgICBpZiAoZHJhZ2dlZERhdGE/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZHJhZ2dlZERhdGEuY2hpbGRyZW4pKSB7XG4gICAgICBkcmFnZ2VkRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY29sLmlzX3Zpc2libGUgJiYgY29sLmlzX2dyb3VwYWJsZSkge1xuICAgICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChjb2wpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRyYWdnZWREYXRhLmlzX3Zpc2libGUgJiYgZHJhZ2dlZERhdGEuaXNfZ3JvdXBhYmxlKSB7XG4gICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChkcmFnZ2VkRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IGZhbHNlO1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xuICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMgPSBbXTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMTAwMCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgYXN5bmMgb25Hcm91cFJlb3JkZXIoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmdyb3VwZWRDb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMDApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcbiAgICB9LCAxMCk7XG4gIH1cblxuICBhc3luYyB1bmdyb3VwQ29sdW1uKGNvbHVtbjogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ3JvdXBlZENvbHVtbnMuZmluZEluZGV4KFxuICAgICAgICAoY29sKSA9PiBjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcbiAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgZ3JvdXAuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcbiAgICAgICAgICAgICAgY2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXAuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xuICAgICAgICAgIGdyb3VwLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sIDEwMDApO1xuXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgaW4gdW5ncm91cENvbHVtbjpcIiwgZXJyKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIHNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhncm91cDogYW55KSB7XG4gICAgaWYgKGdyb3VwPy5jaGlsZHJlbiAmJiBncm91cC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBncm91cC5jaGlsZHJlbi5zb21lKFxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5pc192aXNpYmxlICYmICFjb2w/LmlzUm93R3JvdXBlZFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGdyb3VwPy5pc192aXNpYmxlICYmICFncm91cD8uaXNSb3dHcm91cGVkO1xuICB9XG5cbiAgb25DaGlsZERyb3BsaXN0U29ydGVkID0gYXN5bmMgKGV2ZW50OiBDZGtEcmFnU29ydEV2ZW50PGFueT4sIHNlY3Rpb246IHN0cmluZykgPT4ge1xuICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09PSBldmVudC5jdXJyZW50SW5kZXgpIHJldHVybjtcblxuICAgIGNvbnN0IHBpbm5lZCA9XG4gICAgICBzZWN0aW9uID09ICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnXG4gICAgICAgID8gJ2xlZnQnXG4gICAgICAgIDogc2VjdGlvbiA9PSAncHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucydcbiAgICAgICAgICA/ICdyaWdodCdcbiAgICAgICAgICA6IFwiXCI7XG5cbiAgICBjb25zdCBjb2x1bW4gPSBldmVudC5pdGVtLmRhdGE7XG4gICAgbGV0IGdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAoY29sOiBhbnkpID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxuICAgICAgICBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQ/LmZpZWxkID09PSBjb2x1bW4/LmZpZWxkKVxuICAgICk7XG4gICAgY29uc3QgZ3JvdXBJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAoY29sKSA9PiBjb2wuaGVhZGVyID09PSBncm91cC5oZWFkZXJcbiAgICApO1xuICAgIGNvbnN0IGZpbHRlcmVkR3JvdXAgPSBncm91cD8uY2hpbGRyZW4uZmlsdGVyKChjb2w6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaXNQaW5uZWRNYXRjaCA9XG4gICAgICAgIChwaW5uZWQgPT09IFwiXCIgJiYgKCFjb2w/LnBpbm5lZCB8fCBjb2w/LnBpbm5lZCA9PT0gXCJcIikpIHx8IGNvbD8ucGlubmVkID09PSBwaW5uZWQ7XG4gICAgICByZXR1cm4gaXNQaW5uZWRNYXRjaCAmJiBjb2w/LmlzX3Zpc2libGU7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwcmV2aW91c0ZpZWxkID0gZmlsdGVyZWRHcm91cFtldmVudC5wcmV2aW91c0luZGV4XS5maWVsZDtcbiAgICBjb25zdCBjdXJyZW50RmllbGQgPSBmaWx0ZXJlZEdyb3VwW2V2ZW50LmN1cnJlbnRJbmRleF0uZmllbGQ7XG4gICAgY29uc3QgdmlzaWJsZVByZXZJbmRleCA9IGdyb3VwLmNoaWxkcmVuLmZpbmRJbmRleChcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IHByZXZpb3VzRmllbGRcbiAgICApO1xuICAgIGNvbnN0IHZpc2libGVDdXJySW5kZXggPSBncm91cC5jaGlsZHJlbi5maW5kSW5kZXgoXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PSBjdXJyZW50RmllbGRcbiAgICApO1xuICAgIGNvbnN0IGFsbEZpZWxkcyA9IFtwcmV2aW91c0ZpZWxkLCBjdXJyZW50RmllbGRdO1xuICAgIGNvbnN0IGNlbGxzID0gYWxsRmllbGRzLmxlbmd0aFxuICAgICAgPyAoW10gYXMgSFRNTEVsZW1lbnRbXSkuY29uY2F0KFxuICAgICAgICAuLi5hbGxGaWVsZHMubWFwKChmaWVsZCkgPT5cbiAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W11cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgOiBbXTtcblxuICAgIGNvbnN0IGdyb3VwSW5TZWN0aW9uID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXS5maW5kKFxuICAgICAgKGNvbDogYW55KSA9PlxuICAgICAgICBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikgJiZcbiAgICAgICAgY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkPy5maWVsZCA9PT0gY29sdW1uPy5maWVsZClcbiAgICApO1xuXG4gICAgY29uc3QgZmlsdGVyR3JvdXBJblNlY3Rpb24gPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmQoXG4gICAgICAoY29sOiBhbnkpID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxuICAgICAgICBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQ/LmZpZWxkID09PSBjb2x1bW4/LmZpZWxkKVxuICAgICk7XG5cbiAgICBjb25zdCBncm91cEluU2VjdGlvbkluZGV4ID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXS5maW5kSW5kZXgoXG4gICAgICAoY29sOiBhbnkpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwSW5TZWN0aW9uLmhlYWRlclxuICAgICk7XG5cbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcbiAgICBjZWxscy5mb3JFYWNoKChlbCkgPT4gZmlyc3RQb3NpdGlvbnMuc2V0KGVsLCBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSk7XG4gICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgdGhpcy5jb2x1bW5zW2dyb3VwSW5kZXhdPy5jaGlsZHJlbixcbiAgICAgIHZpc2libGVQcmV2SW5kZXgsXG4gICAgICB2aXNpYmxlQ3VyckluZGV4XG4gICAgKTtcblxuICAgIG1vdmVJdGVtSW5BcnJheShcbiAgICAgICh0aGlzIGFzIGFueSlbc2VjdGlvbl0/Lltncm91cEluU2VjdGlvbkluZGV4XS5jaGlsZHJlbixcbiAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICApO1xuXG4gICAgLy8gYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm5nWm9uZS5vblN0YWJsZSk7XG4gICAgYWxsRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApXG4gICAgICApIGFzIEhUTUxFbGVtZW50W107XG4gICAgICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpITtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gb2xkTGVmdCAtIG5ld0xlZnQ7XG4gICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcbiAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xuICAgICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcblxuICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBhbGxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2ZpZWxkfVwiXWApXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcblxuICAgICAgICB1cGRhdGVkQ2VsbHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKTtcbiAgICAgICAgICBpZiAob2xkTGVmdCA9PSBudWxsKSByZXR1cm47IC8vIHNhZmV0eSBjaGVja1xuXG4gICAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgY29uc3QgZGVsdGFYID0gb2xkTGVmdCAtIG5ld0xlZnQ7XG5cbiAgICAgICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XG4gICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcblxuICAgICAgICAgICAgLy8gRm9yY2UgcmVmbG93XG4gICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcblxuICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIGNvbnNvbGUuZ3JvdXAoJ0dyb3VwOiAnLCBncm91cCk7XG4gIH1cblxuXG4gIG9uQ2hpbGREcm9wbGlzdERyb3BlZChjZGtEcmFnRHJvcGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XG4gICAgY29uc3QgYWxsQ29scyA9IHRoaXMuZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICBjb25zdCBwaW5uZWRMZWZ0ID0gYWxsQ29scy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ2xlZnQnKTtcbiAgICBjb25zdCBjZW50ZXIgPSBhbGxDb2xzLmZpbHRlcihjID0+ICFjLnBpbm5lZCk7XG4gICAgY29uc3QgcGlubmVkUmlnaHQgPSBhbGxDb2xzLmZpbHRlcihjID0+IGMucGlubmVkID09PSAncmlnaHQnKTtcbiAgICBjb25zdCByZW9yZGVyZWRDb2x1bW5zID0gWy4uLnBpbm5lZExlZnQsIC4uLmNlbnRlciwgLi4ucGlubmVkUmlnaHRdO1xuICAgIHRoaXMuY29tbW9uU2V2aWNlLmFzc2lnblVuaXF1ZUNvbHVtbkluZGV4ZXMocmVvcmRlcmVkQ29sdW1ucyk7XG4gICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDIpO1xuICB9XG5cbiAgLy8gUm93cyBHcm91cGluZyBMb2dpYyBHb2VzIEhlcmVcblxuICBncm91cERhdGEoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcbiAgICBsZXQgZGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZShkYXRhKTtcbiAgICBpZiAoIWdyb3VwRmllbGRzLmxlbmd0aCkgcmV0dXJuIGRhdGE7XG4gICAgY29uc3QgW2N1cnJlbnRGaWVsZCwgLi4ucmVzdEZpZWxkc10gPSBncm91cEZpZWxkcztcbiAgICBjb25zdCBncm91cGVkTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhU2V0KSB7XG4gICAgICBsZXQga2V5VmFsdWUgPSBjdXJyZW50RmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwgaykgPT4gb2JqPy5ba10sIGl0ZW0pO1xuICAgICAgbGV0IGdyb3VwS2V5OiBzdHJpbmc7XG4gICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBpc19kZWxldGVkIGZpZWxkXG4gICAgICBpZiAoY3VycmVudEZpZWxkID09PSAnaXNfZGVsZXRlZCcgfHwgY3VycmVudEZpZWxkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2lzX2RlbGV0ZWQnKSkge1xuICAgICAgICBpZiAoa2V5VmFsdWUgPT09IHRydWUgfHwga2V5VmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgICAgIGdyb3VwS2V5ID0gJ0FyY2hpdmVkJztcbiAgICAgICAgfSBlbHNlIGlmIChrZXlWYWx1ZSA9PT0gZmFsc2UgfHwga2V5VmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICBncm91cEtleSA9ICdVbmFyY2hpdmVkJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IFwiX0JsYW5rXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XG4gICAgICAgIGlmIChrZXlWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBncm91cEtleSA9IFwiX0JsYW5rXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleVZhbHVlWzBdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZVxuICAgICAgICAgICAgLm1hcChvYmogPT4gKG9iaj8uZGVwYXJ0bWVudF9uYW1lIHx8IG9iai5yb2xlTmFtZSB8fCBvYmo/LmZ1bGxfbmFtZSB8fCBvYmo/LnZhbHVlIHx8IG9iaj8ubmFtZSkgPz8gXCJfQmxhbmtcIilcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXG4gICAgICAgICAgICAubWFwKHZhbCA9PiB2YWwgPz8gXCJfQmxhbmtcIilcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoa2V5VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8ICh0eXBlb2Yga2V5VmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihEYXRlLnBhcnNlKGtleVZhbHVlKSkpKSB7XG4gICAgICAgIGNvbnN0IGRhdGVPYmogPSBrZXlWYWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBrZXlWYWx1ZSA6IG5ldyBEYXRlKGtleVZhbHVlKTtcbiAgICAgICAgZ3JvdXBLZXkgPSB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUoZGF0ZU9iaiwgdGhpcy5kYXRlRm9ybWF0IHx8ICdkZC9NTS95eXl5Jyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0eXBlb2Yga2V5VmFsdWUgPT09ICdvYmplY3QnICYmIGtleVZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KGtleVZhbHVlKSkge1xuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlLnZhbHVlID8/XG4gICAgICAgICAga2V5VmFsdWUubmFtZSA/P1xuICAgICAgICAgIGtleVZhbHVlLmlkID8/XG4gICAgICAgICAga2V5VmFsdWUubGFiZWwgPz9cbiAgICAgICAgICBrZXlWYWx1ZVtPYmplY3Qua2V5cyhrZXlWYWx1ZSlbMF1dID8/XG4gICAgICAgICAgXCJfQmxhbmtcIjtcblxuICAgICAgICBpZiAodHlwZW9mIGdyb3VwS2V5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGdyb3VwS2V5ID0gXCJfQmxhbmtcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cEtleSA9IHRoaXMudG9UaXRsZUNhc2UoU3RyaW5nKGdyb3VwS2V5KS50cmltKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZSA/IHRoaXMudG9UaXRsZUNhc2UoU3RyaW5nKGtleVZhbHVlKS50cmltKCkpIDogXCJfQmxhbmtcIjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFncm91cGVkTWFwLmhhcyhncm91cEtleSkpIGdyb3VwZWRNYXAuc2V0KGdyb3VwS2V5LCBbXSk7XG4gICAgICBncm91cGVkTWFwLmdldChncm91cEtleSkhLnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKGdyb3VwZWRNYXAuZW50cmllcygpKS5tYXAoKFtncm91cFZhbHVlLCBncm91cEl0ZW1zXSkgPT4gKHtcbiAgICAgIGlzR3JvdXA6IHRydWUsXG4gICAgICBncm91cEZpZWxkOiBjdXJyZW50RmllbGQsXG4gICAgICBncm91cFZhbHVlLFxuICAgICAgY2hpbGRyZW46IHRoaXMuZ3JvdXBEYXRhKGdyb3VwSXRlbXMsIHJlc3RGaWVsZHMpLFxuICAgICAgaXNFeHBhbmQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIHRvVGl0bGVDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyXG4gICAgICA/LnRvTG93ZXJDYXNlKClcbiAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgPy5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgID8uam9pbignICcpO1xuICB9XG5cblxuICBjb3VudExlYWZSb3dzKGdyb3VwOiBhbnkpOiBudW1iZXIge1xuICAgIGlmICghZ3JvdXAuY2hpbGRyZW4gfHwgIWdyb3VwLmNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuIDA7XG5cbiAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4ucmVkdWNlKChjb3VudDogbnVtYmVyLCBjaGlsZDogYW55KSA9PiB7XG4gICAgICByZXR1cm4gY291bnQgKyAoY2hpbGQuaXNHcm91cCA/IHRoaXMuY291bnRMZWFmUm93cyhjaGlsZCkgOiAxKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xuICB0b2dnbGVBY3RpdmVGaWx0ZXIoKSB7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSAhdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW47XG4gIH1cblxuICB0b2dnbGVBY3Rpb25zKHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlID09PSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbikgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xuICAgIGVsc2UgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSB0eXBlO1xuICAgIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhY3RpdmVTdWJCdXR0b24gPSAnJztcbiAgdG9nZ2xlU3ViQWN0aW9ucyh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gKHRoaXMucHJlc2V0TmFtZSA9ICcnKSA6ICh0aGlzLnByZXNldE5hbWUgPSB0aGlzLnN0b3JlUHJlc2V0TmFtZSlcbiAgICBpZiAodHlwZSA9PT0gdGhpcy5hY3RpdmVTdWJCdXR0b24pIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XG4gICAgZWxzZSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbiA9IHR5cGU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlQWN0aW9uc0Ryb3Bkb3duKCkge1xuICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9ICF0aGlzLnNob3dBY3Rpb25zRHJvcERvd247XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuXG4gIGFzeW5jIGNoYW5nZVRhYmxlTGF5b3V0KGV2ZW50OiBFdmVudCwgbGF5b3V0VHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKHRhcmdldC5jaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBsYXlvdXRUeXBlO1xuICAgICAgdGhpcy5zZXRUYWJsZUxheW91dChsYXlvdXRUeXBlKVxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cyh0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvcCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICB9XG4gICAgdGhpcy5vbkZvbnRDaGFuZ2UoKVxuICB9XG5cbiAgc2V0VGFibGVMYXlvdXQobGF5b3V0VHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKCFsYXlvdXRUeXBlKSByZXR1cm47XG4gICAgaWYgKGxheW91dFR5cGUgPT09ICdzbWFsbCcpIHtcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gMzY7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDQwO1xuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTA7XG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTA7XG5cbiAgICB9IGVsc2UgaWYgKGxheW91dFR5cGUgPT09ICdtZWRpdW0nKSB7XG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDQ0O1xuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA0NDtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplIHx8IDE0O1xuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplIHx8IDE0O1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gNjA7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDUyO1xuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTY7XG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTY7XG4gICAgfVxuICAgIC8vIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBzdGFydEluZGV4RGF0YSgpIHtcbiAgICByZXR1cm4gKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSkgKiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQ7XG4gIH1cblxuICBnZXQgZW5kSW5kZXgoKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMuc3RhcnRJbmRleCArIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyk7XG4gIH1cblxuICBnZXQgdmlzaWJsZVBhZ2VzKCk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xuICAgIGNvbnN0IHBhZ2VzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW107XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgPD0gNykge1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXM7IGkrKykge1xuICAgICAgICBwYWdlcy5wdXNoKGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWdlcy5wdXNoKDEpO1xuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID4gMykge1xuICAgICAgICBwYWdlcy5wdXNoKCcuLi4nKTtcbiAgICAgIH1cbiAgICAgIGxldCBzdGFydCA9IE1hdGgubWF4KDIsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSk7XG4gICAgICBsZXQgZW5kID0gTWF0aC5taW4odGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgLSAxLCB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSArIDEpO1xuXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgICAgcGFnZXMucHVzaChpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIDwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgLSAyKSB7XG4gICAgICAgIHBhZ2VzLnB1c2goJy4uLicpO1xuICAgICAgfVxuICAgICAgcGFnZXMucHVzaCh0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2VzO1xuICB9XG5cblxuICBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gPSAnJztcbiAgdG9nZ2xlQ29sdW1uSW5GaWx0ZXJEcm9wZG93bihjb2w6IGFueSkge1xuXG4gIH1cblxuICByZW1vdmVDb2x1bW5Gcm9tRmlsdGVyKG9wdGlvbjogYW55KSB7XG5cbiAgfVxuXG4gIGhhbmRsZUJhY2tzcGFjZShldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duICYmIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgbGFzdCA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zW3RoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgdGhpcy50b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihsYXN0KTtcbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVNlYXJjaElucHV0JykgZmlsdGVyTWVudWVTZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCcpIGZpbHRlck1lbnVlVGV4dGNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XG5cbiAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sOiBhbnkpIHtcbiAgICBpZiAoY29sLnR5cGUgPT0gJ2ltYWdlJyB8fCAhY29sPy50eXBlIHx8ICFjb2wuaXNfc2VhcmNoX2FibGUpIHJldHVybjtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XG4gICAgaWYgKGNvbC50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xuICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBjb2w/LnF1ZXJ5Py5faWRzIHx8IFtdO1xuICAgICAgc2F2ZWRJZHMuZm9yRWFjaCgoaWQ6IHN0cmluZykgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5maWx0ZXIoXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxuICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0KSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJywgJ3RpbWUnXS5pbmNsdWRlcyhjb2wudHlwZSkpIHtcbiAgICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID8gY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA6ICgoY29sLnR5cGUgPT0gJ2RhdGUnIHx8IGNvbC50eXBlID09ICd0aW1lJyB8fCBjb2wudHlwZSA9PSAnbnVtYmVyJykgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcbiAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlIHx8ICcnO1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gfHwgJ25vbmUnO1xuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uID8gY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbiA6ICgoY29sLnR5cGUgPT0gJ2RhdGUnIHx8IGNvbC50eXBlID09ICd0aW1lJyB8fCBjb2wudHlwZSA9PSAnbnVtYmVyJykgPyAnZXF1YWwnIDogJ2NvbnRhaW4nKTtcbiAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUgfHwgJyc7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyTWVudWVUZXh0Y2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzRmlsdGVyT3BlbiA9IGZhbHNlXG4gIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyOiBhbnk7XG4gIHNob3dGaWx0ZXJzID0gdGhpcy5zaG93U2lkZU1lbnUgPyBmYWxzZSA6IGZhbHNlO1xuICBvcGVuRmlsdGVyRnJvbURpc2FibGVkU2VhcmNoZWRJbnB1dChjb2w6IGFueSkge1xuICAgIGlmIChjb2wudHlwZSAhPT0gJ2Ryb3Bkb3duJyAmJiBjb2wudHlwZSAhPT0gJ2FycmF5JyB8fCAhY29sLmlzX3NlYXJjaF9hYmxlKSByZXR1cm47XG4gICAgdGhpcy5vcGVuRmlsdGVyKGNvbCk7XG4gIH1cblxuICBvcGVuRmlsdGVyKGNvbDogYW55KSB7XG4gICAgaWYgKCFjb2wuaXNfc2VhcmNoX2FibGUpIHJldHVybjtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSB0cnVlO1xuICAgIHRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duID0gJyc7XG4gICAgdGhpcy5hZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XG4gICAgaWYgKGNvbC50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbC50eXBlID09ICdhcnJheScpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XG4gICAgICBjb25zdCBzYXZlZElkcyA9IGNvbD8ucXVlcnk/Ll9pZHMgfHwgW107XG4gICAgICBzYXZlZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpKTtcblxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/LmZpbHRlcihcbiAgICAgICAgKG9wdGlvbjogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnLCAndGltZSddLmluY2x1ZGVzKGNvbC50eXBlKSkge1xuICAgICAgdGhpcy5maXJzdENvbmRpdGlvbiA9XG4gICAgICAgIGNvbD8ucXVlcnk/LmZpcnN0X2NvbmRpdGlvbiA/P1xuICAgICAgICAoKGNvbC50eXBlID09PSAnbnVtYmVyJyB8fCBjb2wudHlwZSA9PT0gJ3RpbWUnIHx8IGNvbC50eXBlID09PSAnZGF0ZScpXG4gICAgICAgICAgPyAnZXF1YWwnXG4gICAgICAgICAgOiAnY29udGFpbicpO1xuXG4gICAgICB0aGlzLmZpcnN0VmFsdWUgPSBjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSB8fCAnJztcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29sPy5xdWVyeT8uY29uZGl0aW9uIHx8ICdub25lJztcbiAgICAgIHRoaXMuc2Vjb25kQ29uZGl0aW9uID1cbiAgICAgICAgY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbiA/P1xuICAgICAgICAoKGNvbC50eXBlID09PSAnbnVtYmVyJyB8fCBjb2wudHlwZSA9PT0gJ3RpbWUnIHx8IGNvbC50eXBlID09PSAnZGF0ZScpXG4gICAgICAgICAgPyAnZXF1YWwnXG4gICAgICAgICAgOiAnY29udGFpbicpO1xuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9IGNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSB8fCAnJztcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBmaXJzdFZhbHVlOiBhbnkgPSAnJztcbiAgZmlyc3RDb25kaXRpb24gPSAnJztcbiAgc2Vjb25kVmFsdWU6IGFueSA9ICcnO1xuICBzZWNvbmRDb25kaXRpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBjb25kaXRpb246IHN0cmluZyB8IG51bGwgPSAnJztcblxuICByZXNldFRleHRGaWx0ZXJDaGFuZ2VzKCkge1xuICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSAnY29udGFpbic7XG4gICAgdGhpcy5maXJzdFZhbHVlID0gJyc7XG4gICAgdGhpcy5jb25kaXRpb24gPSAnbm9uZSc7XG4gICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xuICAgIHRoaXMuc2Vjb25kVmFsdWUgPSAnJztcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgfVxuXG4gIHRvZ2dsZUFsbFZhbHVzU2VsZWN0aW9uSW5Ecm9wZG93bkZpbHRlcihjb2x1bW46IGFueSkge1xuXG4gIH1cblxuXG4gIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogYW55W10gPSBbXVxuICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgdG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uOiBhbnkpIHtcbiAgICBkZWJ1Z2dlclxuICAgIGNvbnN0IGlkID0gb3B0aW9uLmlkIHx8IG9wdGlvbi5faWQgfHwgb3B0aW9uO1xuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5kZWxldGUoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZS5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uLmlkIHx8IG9wdGlvbi5faWQgfHwgb3B0aW9uKSlcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZXNldEZpbHRlckNoYW5nZXMoKSB7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zIS5sZW5ndGggPSAwO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgfVxuXG4gIGFwcGx5RHJvcGRvd25GaWx0ZXIoKSB7XG4gICAgY29uc3QgY29sdW1uc3MgPSB0aGlzLmZpbmRDb2x1bW4odGhpcy5jb2x1bW5zLCB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLmZpZWxkKTtcbiAgICBpZiAoIWNvbHVtbnNzKSByZXR1cm47XG5cbiAgICBpZiAoY29sdW1uc3MudHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2x1bW5zcy50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICBpZiAoIXRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzIHx8IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLnNpemUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZScsICd0aW1lJ10uaW5jbHVkZXMoY29sdW1uc3MudHlwZSkpIHtcbiAgICAgIGNvbnN0IGlzRW1wdHkgPVxuICAgICAgICB0aGlzLmZpcnN0VmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgdGhpcy5maXJzdFZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdGhpcy5maXJzdFZhbHVlID09PSAnJztcblxuICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNsb3NlQWxsRmlsdGVyTWVudXMoKTtcbiAgICB0aGlzLmNsb3NlQWxsRXhwYW5kZWRSb3dzKCk7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5maW5kQ29sdW1uKHRoaXMuY29sdW1ucywgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlci5maWVsZCk7XG4gICAgaWYgKGNvbHVtbikge1xuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpIHtcbiAgICAgICAgY29sdW1uLnF1ZXJ5ID0gY29sdW1uLnF1ZXJ5IHx8IHt9O1xuICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcyA9IGNvbHVtbi5xdWVyeS5faWRzIHx8IFtdO1xuXG4gICAgICAgIC8vIFJlbW92ZSBzdGFsZSBJRHMgKG5vdCBwcmVzZW50IGluIFNldClcbiAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBjb2x1bW4ucXVlcnkuX2lkcy5maWx0ZXIoXG4gICAgICAgICAgKGlkOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhpZCkgICAvLyA8LS0gdXNlIC5oYXMoKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEFkZCBuZXcgb25lcyBpZiBtaXNzaW5nXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgIGlmICghY29sdW1uLnF1ZXJ5Ll9pZHMuaW5jbHVkZXMoaWQpKSB7XG4gICAgICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcy5wdXNoKGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2UgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJywgJ3RpbWUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcbiAgICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogdGhpcy5maXJzdENvbmRpdGlvbiB8fCAnY29udGFpbicsXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IHRoaXMuZmlyc3RWYWx1ZSB8fCBudWxsLFxuICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWNvbmRWYWx1ZSA/IHRoaXMuY29uZGl0aW9uIDogJ25vbmUnLFxuICAgICAgICAgIHNlY29uZF9jb25kaXRpb246IHRoaXMuc2Vjb25kVmFsdWUgPyB0aGlzLnNlY29uZENvbmRpdGlvbiA6IG51bGwsXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiB0aGlzLnNlY29uZFZhbHVlIHx8IG51bGwsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyID0ge1xuICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcbiAgICAgIHNlYXJjaDogY29sdW1uLnNlYXJjaCxcbiAgICAgIHF1ZXJ5OiBjb2x1bW4ucXVlcnksXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZSxcbiAgICAgIF9pZHM6IGNvbHVtbi5faWRzXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcblxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xuICAgIH1cblxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xuICAgIH0sIDIwMCk7XG4gIH1cbiAgcHJpdmF0ZSBmaW5kQ29sdW1uKGNvbHVtbnM6IGFueVtdLCBmaWVsZDogc3RyaW5nKTogYW55IHtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkgcmV0dXJuIGNvbDtcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZENvbHVtbihjb2wuY2hpbGRyZW4sIGZpZWxkKTtcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzQ29uZmlnPy5zb21lKGNvbCA9PiBjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGxTaWRlRmlsdGVycyhjb2w6IGFueSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy5jaGVja2VkO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lm1hcChcbiAgICAgICAgKG9wdDogYW55KSA9PiBvcHQuaWQgfHwgb3B0Ll9pZCB8fCBvcHRcbiAgICAgICk7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyA9IG5ldyBTZXQ8c3RyaW5nPihjb2wucXVlcnkuX2lkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG5cbiAgaXNBbGxTaWRlRmlsdGVyT3B0aW9uc1NlbGVjdGVkKGNvbDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCFjb2w/LnF1ZXJ5Py5faWRzIHx8ICFBcnJheS5pc0FycmF5KGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGNvbC5xdWVyeS5faWRzLmxlbmd0aCA9PT0gY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZS5sZW5ndGg7XG4gIH1cblxuICBvbk9wdGlvblRvZ2dsZShjb2w6IGFueSwgb3B0aW9uOiBhbnkpIHtcbiAgICBjb25zdCBvcHRpb25JZCA9IG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbjtcbiAgICBpZiAoIWNvbC5xdWVyeS5faWRzKSB7XG4gICAgICBjb2wucXVlcnkuX2lkcyA9IFtdO1xuICAgIH1cbiAgICBjb25zdCBpZHggPSBjb2wucXVlcnkuX2lkcy5pbmRleE9mKG9wdGlvbklkKTtcbiAgICBpZiAoaWR4ID4gLTEpIHtcbiAgICAgIGNvbC5xdWVyeS5faWRzLnNwbGljZShpZHgsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2wucXVlcnkuX2lkcy5wdXNoKG9wdGlvbklkKTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICByZXNldFNpZGVGaWx0ZXIoY29sOiBhbnkpIHtcbiAgICBjb25zdCByZXNldENvbHVtblJlY3Vyc2l2ZWx5ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmIChjb2x1bW4uZmllbGQgPT09IGNvbC5maWVsZCkge1xuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcbiAgICAgICAgICAgIF9pZHM6IFtdLFxuICAgICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiAnY29udGFpbicsXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4/LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAocmVzZXRDb2x1bW5SZWN1cnNpdmVseShjb2x1bW4uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoKGY6IGFueSkgPT4gZi5maWVsZCA9PT0gY29sLmZpZWxkKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuXG4gIGNsZWFyQWxsRmlsdGVycyhzaG91bGRVcGRhdGVDb25maWdMaXN0aW5nID0gZmFsc2UpIHtcbiAgICB0aGlzLmdyb3VwZWRDb2x1bW5zID0gW107XG4gICAgdGhpcy50YWJsZVZpZXc/LmZvckVhY2goKGVsZSkgPT4geyBlbGUuaXNfdGVtcCA9IGZhbHNlIH0pO1xuICAgIGNvbnN0IHJlc2V0QWxsUmVjdXJzaXZlbHkgPSAoY29sdW1uczogYW55W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5xdWVyeSkge1xuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcbiAgICAgICAgICAgIF9pZHM6IFtdLFxuICAgICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiAnY29udGFpbicsXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgcmVzZXRBbGxSZWN1cnNpdmVseShjb2x1bW4uY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICByZXNldEFsbFJlY3Vyc2l2ZWx5KHRoaXMuY29sdW1ucyk7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcbiAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBbXTtcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBldmVudCA9IHsgZXZlbnRUeXBlOiAncmVzZXQnLCBkYXRhOiB7IHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUgfSB9O1xuICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgbm9fb2ZfcmVjb3JkczogTnVtYmVyKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCksXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9O1xuICAgIGlmICghc2hvdWxkVXBkYXRlQ29uZmlnTGlzdGluZykge1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIH1cblxuICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgICAgIGlmICghc2hvdWxkVXBkYXRlQ29uZmlnTGlzdGluZykge1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xuICAgICAgfVxuICAgIH0sIDMwMCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBhcHBseVNpZGVGaWx0ZXIoY29sdW1uOiBhbnkpIHtcbiAgICBpZiAoIWNvbHVtbi5xdWVyeS5maXJzdF92YWx1ZSAmJiAhY29sdW1uPy5xdWVyeT8uX2lkcy5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLmNsb3NlQWxsRXhwYW5kZWRSb3dzKCk7XG5cbiAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxuICAgICAgcXVlcnk6IGNvbHVtbi5xdWVyeSxcbiAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxuICAgICAgX2lkczogY29sdW1uLl9pZHMgfHwgW11cbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xuICAgIH1cbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XG4gICAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG5cbiAgcmVtb3ZlU2lkZUZpbHRlcihjb2x1bW46IGFueSkge1xuICAgIGlmICghY29sdW1uLnF1ZXJ5LmZpcnN0X3ZhbHVlICYmICFjb2x1bW4/LnF1ZXJ5Py5faWRzLmxlbmd0aCkgcmV0dXJuO1xuICAgIHRoaXMuY2xvc2VBbGxFeHBhbmRlZFJvd3MoKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KGYgPT4gZi5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoZXhpc3RpbmdJbmRleCwgMSk7XG4gICAgfVxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBjb2xsYXBzZUFsbEV4cGFuZGVkQ2VsbHMoKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWRDZWxscz8uc2l6ZSA+IDApIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG5cblxuICB0cmFja0J5RmllbGQoaW5kZXg6IG51bWJlciwgY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2w/LmZpZWxkO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZUZpbHRlcmVkQ29sdW1ucygpOiBhbnlbXSB7XG4gICAgY29uc3QgY29sbGVjdEZpbHRlcmVkID0gKGNvbHVtbnM6IGFueVtdKTogYW55W10gPT4ge1xuICAgICAgbGV0IHJlc3VsdDogYW55W10gPSBbXTtcblxuICAgICAgY29sdW1ucz8uZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNvbGxlY3RGaWx0ZXJlZChjb2wuY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzSW5GaWx0ZXJzQ29uZmlnID0gdGhpcy5maWx0ZXJzQ29uZmlnLnNvbWUoZiA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xuICAgICAgICBpZiAoaXNJbkZpbHRlcnNDb25maWcpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbGxlY3RGaWx0ZXJlZCh0aGlzLmNvbHVtbnMpO1xuICB9XG5cblxuXG5cbiAgdG9nZ2xlT3BlbkZpbHRlcigpIHtcbiAgICB0aGlzLnNob3dGaWx0ZXJzID0gIXRoaXMuc2hvd0ZpbHRlcnM7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuXG5cbiAgLy8gQ2VsbCBFZGl0aW5nIFdvcmsgc3RhcnQgaGVyZVxuXG4gIGVkaXRpbmdLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBhY3RpdmVDZWxsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBzZXRBY3RpdmVDZWxsKHJvdzogYW55LCBjb2x1bW46IGFueSkge1xuICAgIGNvbnNvbGUubG9nKFwiQ2VsbCBMb2NhdGlvbjogXCIsIHJvdy5fX3ZpcnR1YWxJbmRleCArICcnICsgY29sdW1uPy5pbmRleCk7XG4gICAgdGhpcy5hY3RpdmVDZWxsID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXNBY3RpdmVDZWxsKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUNlbGwgPT09ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sLmZpZWxkKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RleHRBcmVhZElucHV0JykgdGV4dEFyZWFkSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xuICBtZW51UmVhZHkgPSBmYWxzZTtcbiAgZW5hYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNsaWNrZWRGcm9tRGV0YWlsc0JveCA9IGZhbHNlLCBjZWxsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLmVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XG4gICAgaWYgKHJvdz8uX192aXJ0dWFsSW5kZXggPT0gMCkgcmV0dXJuO1xuICAgIGlmICghY29sdW1uPy5pc19lZGl0YWJsZSkgcmV0dXJuO1xuICAgIHRoaXMubWVudVJlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy5lZGl0aW5nS2V5ID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBkcm9wZG93bk1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKGRyb3Bkb3duTWVudSkge1xuICAgICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBkcm9wZG93bk1lbnUub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9XG4gICAgICAgICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3QgbWVudVJlY3QgPSBkcm9wZG93bk1lbnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3Qgc3BhY2VCZWxvdyA9IGNvbnRhaW5lclJlY3QuYm90dG9tIC0gbWVudVJlY3QudG9wO1xuICAgICAgICAgIGNvbnN0IHNwYWNlQWJvdmUgPSBtZW51UmVjdC50b3AgLSBjb250YWluZXJSZWN0LnRvcCAtICh0aGlzLnNob3dGaWx0ZXJSb3cgJiYgdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nID8gdGhpcy5oZWFkZXJSb3dIZWlnaHQgKiAzIDogKHRoaXMuc2hvd0ZpbHRlclJvdyB8fCB0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgPyB0aGlzLmhlYWRlclJvd0hlaWdodCAqIDIgOiB0aGlzLmhlYWRlclJvd0hlaWdodCkpIC0gKHRoaXMuc2hvd1Jvd3NHcm91cGluZyA/IHRoaXMudG9wRmlsdGVyUm93SGVpZ2h0IDogMCk7XG5cbiAgICAgICAgICBpZiAoc3BhY2VCZWxvdyA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gJzEwMCUnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gYC0ke21lbnVIZWlnaHR9cHhgO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gJzEwMCUnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lbnVSZWFkeSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghY2xpY2tlZEZyb21EZXRhaWxzQm94ICYmIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4uZmllbGQpPy5sZW5ndGggPiA1MCkge1xuICAgICAgdGhpcy50b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChyb3csIGNvbHVtbiwgdGhpcy5jb2x1bW5zLCBmYWxzZSlcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWNlbGxDb250YWluZXIpIHJldHVybjtcblxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duQnV0dG9uID0gY2VsbENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICcuZHJvcGRvd24tZWRpdC1idXR0b24nXG4gICAgICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgIGlmIChkcm9wZG93bkJ1dHRvbikge1xuICAgICAgICAgIGRyb3Bkb3duQnV0dG9uLmZvY3VzKCk7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gdGhpcy5nZXREcm9wZG93bkNlbGxUZXh0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRUZXh0KSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZHJvcGRvd25CdXR0b24pO1xuICAgICAgICAgICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgc2VsPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgICAgIHNlbD8uYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IGNlbGxDb250YWluZXIucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJ2lucHV0Om5vdChbdHlwZT1cImZpbGVcIl0pLCB0ZXh0YXJlYSwgc2VsZWN0LCBbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXSdcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgIGZvY3VzYWJsZS5zdHlsZS5mb250U2l6ZSA9ICcxNnB4JztcbiAgICAgICAgZm9jdXNhYmxlLmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZvY3VzYWJsZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHxcbiAgICAgICAgICBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50XG4gICAgICAgICkge1xuICAgICAgICAgIGZvY3VzYWJsZS5zZWxlY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmXG4gICAgICAgICAgKGZvY3VzYWJsZS50eXBlID09PSAnZGF0ZScgfHwgZm9jdXNhYmxlLnR5cGUgPT09ICd0aW1lJykgJiZcbiAgICAgICAgICB0eXBlb2YgKGZvY3VzYWJsZSBhcyBhbnkpLnNob3dQaWNrZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgKGZvY3VzYWJsZSBhcyBhbnkpLnNob3dQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXNWYWx1ZVZhbGlkKHJvdzogYW55LCBjb2x1bW46IGFueSwgY29udHJvbDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChyb3csIGNvbHVtbiwgY29udHJvbD8uY29udHJvbD8udmFsdWUpXG4gIH1cblxuICBkaXNhYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNvbnRyb2w/OiBhbnkpIHtcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xuICAgIGlmICghdGhpcy5lZGl0aW5nS2V5KSByZXR1cm5cbiAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLnByaXN0aW5lKSB7XG4gICAgICB0aGlzLmVkaXRpbmdLZXkgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLnR5cGUgIT09ICdkcm9wZG93bicgJiYgY29sdW1uLnR5cGUgIT09ICdhcnJheScgJiYgY29udHJvbD8uaW52YWxpZCkge1xuICAgICAgdGhpcy5yb2xsQmFja0NlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbD8uY29udHJvbD8udmFsdWU7XG4gICAgY29uc3QgdmlzaWJsZVJvdyA9IHRoaXMudmlzaWJsZVJvd3MuZmluZChyID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKSk7XG4gICAgaWYgKHZpc2libGVSb3cpIHtcbiAgICAgIHRoaXMuc2V0TmVzdGVkRmxhdFZhbHVlKHZpc2libGVSb3csIGNvbHVtbj8uZmllbGQsIHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChyb3csIGNvbHVtbiwgdmFsdWUpO1xuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgdGhpcy5yb2xsQmFja0NlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKHJvdywgY29sdW1uLCB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uPy5maWVsZCkpO1xuICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uPy5maWVsZCk7XG4gICAgaWYgKChjb2x1bW4udHlwZSA9PSAnZW1haWwnICYmICF0aGlzLnZhbGlkYXRlRW1haWwoY3VycmVudCkpKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFJvdyA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LmZpbmQoaXRlbSA9PiAoKGl0ZW0uaWQgJiYgaXRlbS5pZCA9PSByb3cuaWQpIHx8IChpdGVtLmlkICYmIGl0ZW0uaWQgPT0gcm93Ll9pZCkpKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uPy5maWVsZCk7XG4gICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLCBvcmlnaW5hbCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgb25JbWFnZUNoYW5nZShldmVudDogRXZlbnQsIHJvdzogYW55LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKCFpbnB1dC5maWxlcyB8fCAhaW5wdXQuZmlsZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG5cbiAgICBpZiAoIWZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICB0aGlzLnNldE5lc3RlZEZsYXRWYWx1ZShyb3csIGNvbC5maWVsZCwgcmVhZGVyLnJlc3VsdCk7XG4gICAgICB0aGlzLmNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3csIGNvbCwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIH1cblxuICBzZXROZXN0ZWRGbGF0VmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm47XG5cbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpITtcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGlmICghYWNjW2tleV0pIGFjY1trZXldID0ge307XG4gICAgICByZXR1cm4gYWNjW2tleV07XG4gICAgfSwgb2JqKTtcblxuICAgIHBhcmVudFtsYXN0S2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcbiAgdmFsaWRhdGVFbWFpbCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW1haWxSZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCA/IGV2ZW50LndoaWNoIDogZXZlbnQua2V5Q29kZTtcbiAgICBpZiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3c6IGFueSwgY29sdW1uOiBhbnksIHZhbHVlPzogYW55KSB7XG4gICAgY29uc3Qgb3JpZ2luYWxSb3cgPSB0aGlzLm9yaWdpbmFsRGF0YVNldD8uZmluZChcbiAgICAgIChyOiBhbnkpID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKVxuICAgICk7XG4gICAgaWYgKCFvcmlnaW5hbFJvdykgcmV0dXJuO1xuICAgIGNvbnN0IG9yaWdpblZhbHVlID0gdGhpcy5kYXRhU2V0Py5maW5kKChyOiBhbnkpID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKSk7XG4gICAgY29uc3QgY2hhbmdlZFZhbHVlID0gb3JpZ2luVmFsdWUudmVyaWZpZWQgPT0gdmFsdWU7XG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcbiAgICAgIGRhdGE6IHsgLi4ub3JpZ2luVmFsdWUgfSxcbiAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxuICAgICAgdmFsdWU6IGNvbHVtbi50eXBlICE9PSAnYXJyYXknID8gdmFsdWUgOiB1bmRlZmluZWQsXG4gICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgdmFsdWVzOiBjb2x1bW4udHlwZSA9PSAnYXJyYXknID8gdmFsdWUgOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopXG4gIH1cblxuXG4gIGlzRWRpdGluZyhyb3c6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nS2V5ID09PSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbC5maWVsZCk7XG4gIH1cblxuICBmb2N1c0FmdGVyVmFsdWVTZWxlY3Qocm93SW5kZXg6IGFueSwgY29sSW5kZXg6IGFueSwgc3ViY29sSW5kZXg6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViY29sSW5kZXgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHNldE5lc3RlZFZhbHVlKG9iajogYW55LCBjb2x1bW46IGFueSwgb3B0aW9uOiBhbnksIGNhbGxlZEZyb21JbnB1dCA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChvYmosIGNvbHVtbiwgb3B0aW9uKTtcbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFZhbGlkYXRpb24gRXJyb3Igb24gZmllbGQgJHtjb2x1bW59YClcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IGNvbHVtbi5maWVsZDtcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpO1xuICAgIGNvbnN0IHBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgb2JqKTtcblxuICAgIGlmIChwYXJlbnQgJiYgbGFzdEtleSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9uKSkge1xuICAgICAgICBjb25zdCBsb29rdXAgPSBjb2x1bW4uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdO1xuICAgICAgICBwYXJlbnRbbGFzdEtleV0gPSBvcHRpb24ubWFwKHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IHR5cGVvZiBzZWxlY3RlZEl0ZW0gPT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IHNlbGVjdGVkSXRlbS5pZCA/PyBzZWxlY3RlZEl0ZW0uX2lkID8/IHNlbGVjdGVkSXRlbS52YWx1ZSA/PyBzZWxlY3RlZEl0ZW0ubmFtZSA/PyBzZWxlY3RlZEl0ZW1cbiAgICAgICAgICAgIDogc2VsZWN0ZWRJdGVtO1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSBsb29rdXAuZmluZCgob3B0OiBhbnkpID0+XG4gICAgICAgICAgICAob3B0Ll9pZCAmJiBvcHQuX2lkID09PSBzZWxlY3RlZElkKSB8fCAob3B0LmlkICYmIG9wdC5pZCA9PT0gc2VsZWN0ZWRJZClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoID8geyAuLi5tYXRjaCB9IDogeyBpZDogc2VsZWN0ZWRJZCwgdmFsdWU6IHNlbGVjdGVkSWQgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBsb29rdXAgPSBjb2x1bW4uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gb3B0aW9uLmlkID8/IG9wdGlvbi5faWQgPz8gb3B0aW9uLnZhbHVlID8/IG9wdGlvbi5uYW1lID8/IG9wdGlvbjtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBsb29rdXAuZmluZCgob3B0OiBhbnkpID0+IChvcHQuX2lkICYmIG9wdC5faWQgPT09IHNlbGVjdGVkSWQpIHx8IChvcHQuaWQgJiYgb3B0LmlkID09PSBzZWxlY3RlZElkKSk7XG5cbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gbWF0Y2ggPyB7IC4uLm1hdGNoIH0gOiB7IGlkOiBzZWxlY3RlZElkLCB2YWx1ZTogc2VsZWN0ZWRJZCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0geyBpZDogb3B0aW9uLCB2YWx1ZTogb3B0aW9uIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3JpZ2luYWxEYXRhU2V0ICYmIEFycmF5LmlzQXJyYXkodGhpcy5vcmlnaW5hbERhdGFTZXQpKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFJvd0luZGV4ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQuZmluZEluZGV4KHIgPT5cbiAgICAgICAgKHI/LmlkICYmIHI/LmlkID09PSBvYmo/LmlkKSB8fCAocj8uX2lkICYmIHIuX2lkID09PSBvYmouX2lkKVxuICAgICAgKTtcbiAgICAgIGlmIChvcmlnaW5hbFJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgdGhpcy5vcmlnaW5hbERhdGFTZXRbb3JpZ2luYWxSb3dJbmRleF0pO1xuICAgICAgICBpZiAob3JpZ2luYWxQYXJlbnQgJiYgbGFzdEtleSkge1xuICAgICAgICAgIG9yaWdpbmFsUGFyZW50W2xhc3RLZXldID0gcGFyZW50W2xhc3RLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YVNldCAmJiBBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNldCkpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXRSb3dJbmRleCA9IHRoaXMuZGF0YVNldC5maW5kSW5kZXgociA9PlxuICAgICAgICByLmlkID09PSBvYmouaWQgfHwgci5faWQgPT09IG9iai5faWRcbiAgICAgICk7XG4gICAgICBpZiAoZGF0YXNldFJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBkYXRhc2V0UGFyZW50ID0ga2V5cy5yZWR1Y2UoKGFjYzogYW55LCBrZXk6IHN0cmluZyB8IG51bWJlcikgPT4gYWNjW2tleV0gPz89IHt9LCB0aGlzLmRhdGFTZXRbZGF0YXNldFJvd0luZGV4XSk7XG4gICAgICAgIGlmIChkYXRhc2V0UGFyZW50ICYmIGxhc3RLZXkpIHtcbiAgICAgICAgICBkYXRhc2V0UGFyZW50W2xhc3RLZXldID0gcGFyZW50W2xhc3RLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNhbGxlZEZyb21JbnB1dCkge1xuICAgICAgdGhpcy5jaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUob2JqLCBjb2x1bW4sIG9wdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcm9sbEJhY2tDZWxsVmFsdWUocm93OiBhbnksIGNvbHVtbjogYW55KTogdm9pZCB7XG4gICAgaWYgKCFyb3cgfHwgIWNvbHVtbikgcmV0dXJuO1xuICAgIGNvbnN0IG9yaWdpbmFsUm93ID0gdGhpcy52YWxpZGF0aW9uc1NlcnZpY2UuZmluZE9yaWdpbmFsUm93KHRoaXMub3JpZ2luYWxEYXRhU2V0LCByb3cuaWQgPz8gcm93Ll9pZCk7XG4gICAgaWYgKCFvcmlnaW5hbFJvdykgcmV0dXJuO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbi5maWVsZCk7XG5cbiAgICBjb25zdCB2aXNpYmxlUm93ID0gdGhpcy52YWxpZGF0aW9uc1NlcnZpY2UuZmluZE9yaWdpbmFsUm93KHRoaXMudmlzaWJsZVJvd3MsIHJvdy5pZCA/PyByb3cuX2lkKTtcbiAgICBpZiAodmlzaWJsZVJvdykgdmlzaWJsZVJvd1tjb2x1bW4uZmllbGRdID0gb3JpZ2luYWxWYWx1ZTtcblxuICAgIGNvbnN0IGRhdGFSb3cgPSB0aGlzLnZhbGlkYXRpb25zU2VydmljZS5maW5kT3JpZ2luYWxSb3codGhpcy5kYXRhU2V0LCByb3cuaWQgPz8gcm93Ll9pZCk7XG4gICAgaWYgKGRhdGFSb3cpIGRhdGFSb3dbY29sdW1uLmZpZWxkXSA9IG9yaWdpbmFsVmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBhcnJheVRlbXBNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgcHJpdmF0ZSBhcnJheUtleShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyb3cuaWQgfHwgcm93Ll9pZH1fJHtjb2wuZmllbGR9YDtcbiAgfVxuXG4gIGdldEFycmF5T3B0aW9uSWQob3B0aW9uOiBhbnkpOiBhbnkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBvcHRpb24uaWQgPz8gb3B0aW9uLl9pZDtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfVxuXG4gIGdldEFycmF5T3B0aW9uTGFiZWwob3B0aW9uOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWUgPz8gb3B0aW9uLm5hbWUgPz8gJyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcob3B0aW9uKTtcbiAgfVxuXG4gIGdldEFycmF5VGVtcChyb3c6IGFueSwgY29sOiBhbnkpOiBhbnlbXSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5hcnJheUtleShyb3csIGNvbCk7XG5cbiAgICBpZiAoIXRoaXMuYXJyYXlUZW1wTWFwLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBBcnJheS5pc0FycmF5KGN1cnJlbnQpXG4gICAgICAgID8gY3VycmVudC5tYXAodiA9PiB0aGlzLmdldEFycmF5T3B0aW9uSWQodikpXG4gICAgICAgIDogW107XG5cbiAgICAgIHRoaXMuYXJyYXlUZW1wTWFwLnNldChrZXksIG5vcm1hbGl6ZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFycmF5VGVtcE1hcC5nZXQoa2V5KSE7XG4gIH1cblxuXG4gIGlzQXJyYXlTZWxlY3RlZChyb3c6IGFueSwgY29sOiBhbnksIG9wdGlvbjogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0aW9uKTtcbiAgICByZXR1cm4gdGhpcy5nZXRBcnJheVRlbXAocm93LCBjb2wpLmluY2x1ZGVzKGlkKTtcbiAgfVxuXG4gIHRvZ2dsZUFycmF5VGVtcChyb3c6IGFueSwgY29sOiBhbnksIG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0aW9uKTtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5nZXRBcnJheVRlbXAocm93LCBjb2wpO1xuXG4gICAgdGhpcy5hcnJheVRlbXBNYXAuc2V0KFxuICAgICAgdGhpcy5hcnJheUtleShyb3csIGNvbCksXG4gICAgICBsaXN0LmluY2x1ZGVzKGlkKSA/IGxpc3QuZmlsdGVyKHYgPT4gdiAhPT0gaWQpIDogWy4uLmxpc3QsIGlkXVxuICAgICk7XG4gIH1cblxuICBjb21taXRBcnJheShyb3c6IGFueSwgY29sOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSB0aGlzLmdldEFycmF5VGVtcChyb3csIGNvbCk7XG4gICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIGNvbCwgaWRzLCB0cnVlKTtcbiAgfVxuXG5cbiAgb25BcnJheUJsdXIocm93OiBhbnksIGNvbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb21taXRBcnJheShyb3csIGNvbCk7XG4gIH1cblxuXG4gIGNsZWFudXBBcnJheShyb3c6IGFueSwgY29sOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmFycmF5VGVtcE1hcC5kZWxldGUodGhpcy5hcnJheUtleShyb3csIGNvbCkpO1xuICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XG4gIH1cblxuXG4gIGRpc3BsYXlBcnJheVZhbHVlcyhpZHM6IGFueVtdLCBjb2w/OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghY29sKSByZXR1cm4gaWRzLmpvaW4oJywgJyk7XG5cbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPGFueSwgYW55PigpO1xuICAgIChjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdKS5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xuICAgICAgbWFwLnNldCh0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0KSwgb3B0KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpZHNcbiAgICAgIC5tYXAoaWQgPT4gbWFwLmdldChpZCk/LnZhbHVlID8/IG1hcC5nZXQoaWQpPy5uYW1lID8/IGlkKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cblxuICBkaXNwbGF5QXJyYXlMYWJlbHMocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBpZHMgPSB0aGlzLmdldEFycmF5VGVtcChyb3csIGNvbCk7XG5cbiAgICBpZiAoIWlkcy5sZW5ndGgpIHJldHVybiAnJztcblxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8YW55LCBhbnk+KCk7XG4gICAgKGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgfHwgW10pLmZvckVhY2goKG9wdDogYW55KSA9PiB7XG4gICAgICBtYXAuc2V0KHRoaXMuZ2V0QXJyYXlPcHRpb25JZChvcHQpLCBvcHQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkc1xuICAgICAgLm1hcChpZCA9PiBtYXAuZ2V0KGlkKT8udmFsdWUgPz8gbWFwLmdldChpZCk/Lm5hbWUgPz8gaWQpXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG5cblxuXG5cbiAgZ29Ub1BhZ2UocGFnZTogYW55KSB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZz8ucGFnZSA9PSBwYWdlKSByZXR1cm47XG4gICAgaWYgKHBhZ2UgPCAxIHx8IHBhZ2UgPiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcykgcmV0dXJuO1xuICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID0gcGFnZTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LFxuICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ3BhZ2VDaGFuZ2UnLFxuICAgIH07XG4gICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UoKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPSAxO1xuICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IHtcbiAgICAgICAgb2JqOiB7XG4gICAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcbiAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnRUeXBlOiAncGFnZUNoYW5nZScsXG4gICAgICB9O1xuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgICB9LCA3MDApO1xuICB9XG5cbiAgYWN0aW9uUHJlc2V0KGRhdGE6IGFueSwgdHlwZTogYW55KSB7XG4gICAgZGF0YS5jb2x1bW5zID0gZGF0YT8uY29sdW1ucz8ubWFwKCh7IF9pZCwgZmlsdGVyVmFsdWUsIHNlYXJjaCwgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLCBxdWVyeSwgX190eXBlbmFtZSwgLi4ucmVzdCB9OiBhbnkpID0+IHJlc3QpO1xuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcblxuICAgIHtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcbiAgICAgICAgZGF0YT8uZmlsdGVycz8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuX190eXBlbmFtZTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmhlYWRlclRleHRGb250c1NpemUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGRhdGEuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQsXG4gICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZGF0YS5jb25maWcuc2hvd1ZlcnRpY2FsQm9yZGVyLFxuICAgICAgICB0aGlzLmN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9IGRhdGEuaWQ7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBkYXRhLmZpbHRlcnM7XG4gICAgfVxuICAgIGRlbGV0ZSBkYXRhPy5fX3R5cGVuYW1lO1xuICAgIGRlbGV0ZSBkYXRhPy5pc190ZW1wO1xuICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiB0eXBlXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXG4gIH1cblxuICBjdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSAnJztcbiAgY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlOiBhbnk7XG4gIHRlbXBfc3RhdGUgPSB7XG4gICAgaWQ6ICcnLFxuICAgIGlzX3RlbXA6IGZhbHNlXG4gIH1cbiAgYXN5bmMgc2VsZWN0RmlsdGVyKGRhdGE6IGFueSkge1xuICAgIHRoaXMudGVtcF9zdGF0ZSA9IHtcbiAgICAgIGlkOiBkYXRhLmlkLFxuICAgICAgaXNfdGVtcDogdHJ1ZVxuICAgIH1cbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XG4gICAgdGhpcy50YWJsZVZpZXcgPSB0aGlzLnRhYmxlVmlldy5tYXAoaXRlbSA9PiAoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIGlzX3RlbXA6IGl0ZW0uaWQgPT0gZGF0YT8uaWRcbiAgICB9KSk7XG4gICAgdGhpcy5jb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xuICAgIHtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcbiAgICAgICAgZGF0YS5maWx0ZXJzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9fdHlwZW5hbWU7XG5cbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gZGF0YS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCxcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSBkYXRhLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIsXG4gICAgICAgIHRoaXMuY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gZGF0YS5pZDtcbiAgICAgIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuICAgICAgdGhpcy5wcmVzZXROYW1lID0gZGF0YT8ubmFtZTtcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZGF0YT8uYWN0aXZlRmlsdGVycyB8fCBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IGRhdGEuZmlsdGVycztcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XG4gICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBkYXRhLmNvbHVtbnMgPSB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgICAgZGVsZXRlIGRhdGE/Ll9fdHlwZW5hbWU7XG4gICAgICBkZWxldGUgZGF0YT8uaXNfdGVtcDtcbiAgICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcbiAgICB9XG4gICAgaWYgKGRhdGE/LmlzX2RlYWZ1bHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGlvblByZXNldChkYXRhLCAnc2V0UHJlc2V0JylcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ3NlbGVjdCdcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgfVxuXG4gIHNhdmVQcmVzZXQoY29udHJvbD86IGFueSkge1xuICAgIGlmIChjb250cm9sPy5pbnZhbGlkKSB7XG4gICAgICBjb250cm9sPy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRGaWx0ZXJIZWFkZXJzKHRoaXMuZmlsdGVyc0NvbmZpZywgdGhpcy5jb2x1bW5zKTtcbiAgICB0aGlzLnByZXNldEZpbHRlciA9IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgPyB0cnVlIDogdGhpcy5wcmVzZXRGaWx0ZXI7XG4gICAgbGV0IHNlbGVjdGVkRGF0YTogYW55ID0gdGhpcy50YWJsZVZpZXcuZmluZCgoZWxlKSA9PiBlbGUuaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XG4gICAgbGV0IGNvbmZpZyA9IHtcbiAgICAgIGZvbnRGYWltbHk6IHRoaXMuZm9udEZhaW1seSxcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiArKHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTQpLFxuICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogKyh0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTQpLFxuICAgICAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXG4gICAgICBzZWxlY3RlZFRhYmxlTGF5b3V0OiB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQsXG4gICAgICBnbG9iYWxTZWFyY2g6IHRoaXMudGFibGVTZWFyY2gsXG4gICAgICBmaWx0ZXJOYW1lczogbmFtZXMsXG4gICAgICB0b3RhbENvdW50OiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzLFxuICAgICAgcm93U2hhZGluZ0VuYWJsZWQ6IHRoaXMucm93U2hhZGluZ0VuYWJsZWRcblxuICAgIH1cbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBuYW1lOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkID8gc2VsZWN0ZWREYXRhPy5uYW1lIDogdGhpcy5wcmVzZXROYW1lLFxuICAgICAgICBhY3RpdmVGaWx0ZXJzOiB0aGlzLnByZXNldEZpbHRlcixcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgICAgZmlsdGVyczogdGhpcy5wcmVzZXRGaWx0ZXJcbiAgICAgICAgICA/IHRoaXMuZmlsdGVyc0NvbmZpZz8ubWFwKCh7IF9fdHlwZW5hbWUsIHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgX190eXBlbmFtZTogX19pbm5lciwgLi4uY2xlYW5RdWVyeSB9ID0gcXVlcnkgfHwge307XG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZXN0LCBxdWVyeTogY2xlYW5RdWVyeSB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgOiBbXSxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIGlkOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkIHx8IHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlPy5pZCxcbiAgICAgICAgbG9hZGluZ0NhbGw6IGNvbnRyb2wgPT0gJ21vdXNlVXAnID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogdGhpcy50YWJsZUZpbHRlclZpZXdJZCB8fCAhdGhpcy5pc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/ICd1cGRhdGVQcmVzZXQnIDogJ2NyZWF0ZVByZXNldCdcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgIGZpbHRlcnM6IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMsXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgICB9LCA1MDApO1xuICB9XG5cblxuICBnZXRGaWx0ZXJIZWFkZXJzKGZpbHRlcnM6IGFueVtdLCBjb2x1bW5zOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2hlZEhlYWRlcnMgPSBmaWx0ZXJzXG4gICAgICAubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmZpZWxkID09PSBmLmZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbiA/IGNvbHVtbi5oZWFkZXIgOiBudWxsO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoaGVhZGVyID0+ICEhaGVhZGVyKTtcblxuICAgIHJldHVybiBtYXRjaGVkSGVhZGVycy5qb2luKCcsICcpO1xuICB9XG5cblxuICB0b2dnbGVSb3dTaGFkaW5nKCkge1xuICAgIHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA9IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyAnI2YxZjFmMScgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcbiAgfVxuXG4gIHRyYWNrQnlUYWJsZShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbiAgYWN0aXZlUm93OiBhbnlcbiAgYWN0aXZlUm93Q29sOiBhbnk7XG4gIGdldENlbGxLZXkocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5nZXRSb3dJZChyb3cpfV8ke2NvbD8uZmllbGR9YDtcbiAgfVxuXG4gIGV4cGFuZGVkQ2VsbHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHpDb3VudGVyID0gMjE7XG5cbiAgc2hvd0RldGFpbHNCb3ggPSBmYWxzZTtcblxuICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChcbiAgICByb3c6IGFueSxcbiAgICBjb2w6IGFueSxcbiAgICBjb2x1bW5zOiBhbnlbXSxcbiAgICBleHBhbmRXaG9sZVJvdyA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGV4cGFuZENlbGxzID0gKHRhcmdldFJvdzogYW55KSA9PiB7XG4gICAgICBjb2x1bW5zLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcblxuICAgICAgICBpZiAoKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwKSB8fCAoQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Py5sZW5ndGggPiAxKSkge1xuICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQodGFyZ2V0Um93KSArICctJyArIGMuZmllbGQ7XG4gICAgICAgICAgdGhpcy56Q291bnRlcisrO1xuICAgICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5zZXQoa2V5LCB0aGlzLnpDb3VudGVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuXG4gICAgY29uc3QgY29sbGVjdEtleXNGb3JSb3cgPSAodGFyZ2V0Um93OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb2x1bW5zLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcblxuICAgICAgICBjb25zdCB0ZXh0ID0gdGFyZ2V0Um93W2MuZmllbGRdO1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQubGVuZ3RoID4gNTAgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcbiAgICAgICAgICBrZXlzLnB1c2godGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGtleXM7XG4gICAgfTtcblxuICAgIGlmIChleHBhbmRXaG9sZVJvdykge1xuICAgICAgbGV0IHJvd0tleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb25zdCB0ZXh0ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbD8uZmllbGQpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJvd0tleXMgPSBjb2xsZWN0S2V5c0ZvclJvdyhyb3cpO1xuICAgICAgICByb3c/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgcm93S2V5cy5wdXNoKC4uLmNvbGxlY3RLZXlzRm9yUm93KGNoaWxkKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhbGxFeHBhbmRlZCA9IHJvd0tleXMuZXZlcnkoayA9PiB0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGspKTtcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xuICAgICAgaWYgKCFhbGxFeHBhbmRlZCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3cuY2hpbGRyZW4pICYmIHJvdy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcbiAgICAgICAgICByb3c/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiBleHBhbmRDZWxscyhjaGlsZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV4cGFuZENlbGxzKHJvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkO1xuICAgICAgaWYgKGNvbC50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XG5cbiAgICAgIGlmICghdGhpcy5leHBhbmRlZENlbGxzLmhhcyhrZXkpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xuICAgICAgICB0aGlzLnpDb3VudGVyKys7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5zZXQoa2V5LCB0aGlzLnpDb3VudGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNob3dEZXRhaWxzQm94ID0gZmFsc2U7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzT3BlblRvVG9wKHJvdylcbiAgICB9LCAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpc09wZW5Ub1RvcChyb3c6IGFueSkge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHknKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgaWYgKCF3cmFwcGVyKSByZXR1cm4gZmFsc2U7XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpZCA9IChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyAoY29sLmlkIHx8IGNvbC5faWQpO1xuICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgaWYgKCFib3gpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGJveFJlY3QgPSBib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID0gYm94UmVjdC5ib3R0b20gPiB3cmFwcGVyUmVjdC5ib3R0b207XG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nVG9wID0gYm94UmVjdC50b3AgPCB3cmFwcGVyUmVjdC50b3A7XG4gICAgICBpZiAoaXNPdmVyZmxvd2luZ0JvdHRvbSAmJiAhaXNPdmVyZmxvd2luZ1RvcCkge1xuICAgICAgICBjb25zdCBib3hIZWlnaHQgPSBib3gub2Zmc2V0SGVpZ2h0IHx8IDA7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGJveEhlaWdodCArIDQ7XG4gICAgICAgIGJveC5zdHlsZS50b3AgPSBgJHstb2Zmc2V0fXB4YDtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYm94LnN0eWxlLmJvdHRvbSA9IGBhdXRvYDtcbiAgICAgICAgYm94LnN0eWxlLnRvcCA9IGAxMDAlYDtcbiAgICAgICAgYm94LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKDApYDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KVxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cblxuXG5cblxuICBpc0V4cGFuZGVkKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKHRoaXMuZ2V0Um93SWQocm93KSArICctJyArIGNvbC5maWVsZCk7XG4gIH1cblxuICBnZXRaSW5kZXgocm93OiBhbnksIGNvbDogYW55KTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZENlbGxzLmdldCh0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQpID8/IDIxO1xuICB9XG5cbiAgaXNPdmVyZmxvd2luZyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZWxlbWVudC5zY3JvbGxXaWR0aCA+IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuXG4gIC8vIFBpY3R1cmUgY2VsbCBMb2dpY1xuICBjb2xvckNvbWJpbmF0aW9uID0gWydwaWMtY29tYjEnLCAncGljLWNvbWIyJywgJ3BpYy1jb21iNCddO1xuICBnZXREeW5hbWljQ2xhc3MobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25bMF07XG4gICAgY29uc3QgaGFzaCA9IEFycmF5LmZyb20obmFtZSkucmVkdWNlKChhY2MsIGNoYXIpID0+IGFjYyArIGNoYXIuY2hhckNvZGVBdCgwKSwgMCk7XG4gICAgY29uc3QgaW5kZXggPSBoYXNoICUgdGhpcy5jb2xvckNvbWJpbmF0aW9uPy5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMuY29sb3JDb21iaW5hdGlvbltpbmRleF07XG4gIH1cblxuICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkgcmV0dXJuICdOQSc7XG4gICAgY29uc3QgcGFydHMgPSBuYW1lLnRyaW0oKS5zcGxpdCgnICcpO1xuICAgIHJldHVybiAocGFydHNbMF1bMF0gKyAocGFydHNbMV0/LlswXSB8fCAnJykpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuXG4gIGFjdGlvbkhpZGU6IGJvb2xlYW4gPSB0cnVlO1xuICB4UG9zID0gMDtcbiAgeVBvcyA9IDA7XG4gIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBkZWF0aWxzTGlzdDogYW55O1xuICBvcGVuRXhwZW5kSW5kZXg6IGFueTtcbiAgcG9zaXRpb25lZFlldCA9IGZhbHNlO1xuXG4gIG9uUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBhbnksIGRlYXRpbHNMaXN0OiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEFjdGlvbnM/Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLnZhbGlkYXRlSWNvbikge1xuICAgICAgdGhpcy5vcmlnaW5hbEFjdGlvbnMgPSBbLi4udGhpcy5hY3Rpb25zXTsgLy8gRGVlcCBjb3B5IHRvIHByZXNlcnZlIG9yaWdpbmFsXG4gICAgfVxuICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMudmFsaWRhdGVJY29uXG4gICAgICA/IHRoaXMuZ2V0VmFsaWRBY3Rpb25zKGRlYXRpbHNMaXN0KVxuICAgICAgOiAoZGVhdGlsc0xpc3Q/LmFjdGlvbnM/Lmxlbmd0aCA/IGRlYXRpbHNMaXN0LmFjdGlvbnMgOiB0aGlzLmFjdGlvbnMpO1xuXG4gICAgaWYgKCEoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGRlYXRpbHNMaXN0Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybiBmYWxzZTtcblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgY2xpY2tYID0gKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyBldmVudC5jbGllbnRYIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgIGNvbnN0IGNsaWNrWSA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcblxuICAgIHRoaXMueFBvcyA9IGNsaWNrWDtcbiAgICB0aGlzLnlQb3MgPSBjbGlja1k7XG4gICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xuICAgIHRoaXMuZGVhdGlsc0xpc3QgPSBkZWF0aWxzTGlzdDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgbWVudUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGV4dC1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoIW1lbnVFbGVtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBtZW51V2lkdGggPSBtZW51RWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51RWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICBjb25zdCB0YWJsZVJlY3QgPSB0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB0YWJsZVRvcCA9IHRhYmxlUmVjdC50b3A7XG4gICAgICBjb25zdCB0YWJsZUJvdHRvbSA9IHRhYmxlUmVjdC5ib3R0b207XG4gICAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRhYmxlUmVjdC5oZWlnaHQ7XG5cbiAgICAgIGxldCB4ID0gY2xpY2tYO1xuICAgICAgbGV0IHkgPSBjbGlja1k7XG4gICAgICBpZiAoeCArIG1lbnVXaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcbiAgICAgICAgeCA9IHZpZXdwb3J0V2lkdGggLSBtZW51V2lkdGggLSAxMDtcbiAgICAgIH1cbiAgICAgIGlmICh5ICsgbWVudUhlaWdodCA+IHRhYmxlQm90dG9tKSB7XG4gICAgICAgIHkgPSBjbGlja1kgLSBtZW51SGVpZ2h0O1xuICAgICAgICBpZiAoeSA8IHRhYmxlVG9wKSB7XG4gICAgICAgICAgeSA9IHRhYmxlQm90dG9tIC0gbWVudUhlaWdodCAtIDEwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh5IDwgdGFibGVUb3ApIHtcbiAgICAgICAgeSA9IHRhYmxlVG9wICsgMTA7XG4gICAgICB9XG4gICAgICB0aGlzLnhQb3MgPSB4O1xuICAgICAgdGhpcy55UG9zID0geTtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucG9zaXRpb25lZFlldCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IHN0cmluZykge1xuICAgIGNvbnN0IHNlbmRPYmogPSB7XG4gICAgICBvYmo6IHRoaXMuZGVhdGlsc0xpc3QsXG4gICAgICBldmVudFR5cGU6IGFjdGlvbixcbiAgICB9O1xuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopO1xuICB9XG5cblxuICBvblZlcmlmeUNsaWNrKHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHRleHQgPSB0eXBlPy50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGlkc0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgY29uc3QgYXJyYXlPZk9iamVjdHNXaXRoVGFibGVUeXBlOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xuICAgICAgYXJyYXlPZk9iamVjdHNXaXRoVGFibGVUeXBlLnB1c2goe1xuICAgICAgICBpZDogaWQsXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgb2JqOiBpZHNBcnJheSxcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxuICAgIH07XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKVxuICB9XG5cbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRDZWxsQ2xhc3Nlcyhjb2x1bW4sIHZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbkZpbHRlckZyb21Db2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICBpZiAoIWNvbHVtbikgcmV0dXJuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpIHtcbiAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gW107XG4gICAgfSBlbHNlIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZSddLmluY2x1ZGVzKGNvbHVtbi50eXBlKSkge1xuICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcbiAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBudWxsLFxuICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogY2xlYW5lZEZpbHRlcmVkQ29sdW1ucyxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zO1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgb25TaWRlTWVudUNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlKCkge1xuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XG4gICAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG4gIGNsZWFuRmlsdGVyZENvbHVtbnMoKSB7XG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XG4gICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcbiAgfVxuXG4gIGRvd25sb2FkQ3N2KHR5cGU6ICdjc3YnIHwgJ3hsc3gnKSB7XG4gICAgY29uc3QgY29uZmlnOiBhbnkgPSB7XG4gICAgICBoZWFkZXJCZ0NvbG9yOiB0aGlzLmhlYWRlckJhY2tncm91bmRDb2xvcixcbiAgICAgIGhlYWRlclRleHRDb2xvcjogdGhpcy5oZWFkZXJUZXh0Q29sb3IsXG4gICAgICBib2R5VGV4dENvbG9yOiAnIzAwMDAwMCcsXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYWltbHksXG4gICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgIHpvb21TY2FsZTogMTI1LFxuICAgICAgaGVhZGVyUm93SGVpZ2h0OiAzMFxuICAgIH1cbiAgICBpZiAodGhpcy5lbmFibGVFeHBvcnQpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBkZCA9IFN0cmluZyhub3cuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgbW0gPSBTdHJpbmcobm93LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgeXl5eSA9IG5vdy5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgSEggPSBTdHJpbmcobm93LmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICBjb25zdCBNTSA9IFN0cmluZyhub3cuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgZm9ybWF0dGVkID1cbiAgICAgICAgYCR7dGhpcy50YWJsZVR5cGV9XyR7ZGR9LSR7bW19LSR7eXl5eX1fJHtISH0tJHtNTX1gO1xuXG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWQpO1xuXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0RGF0YSh0aGlzLmNvbHVtbnMsIHRoaXMuZGF0YVNldCwgZm9ybWF0dGVkLCB0eXBlLCB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcywgY29uZmlnKTtcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxuICAgICAgICBmaWx0ZXJzOiBbXVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ2Rvd25sb2FkQ3N2J1xuICAgIH1cbiAgICBpZiAodHlwZSA9PSAneGxzeCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuXG4gIH1cblxuICBvbkZvbnRDaGFuZ2UoKSB7XG4gICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZTtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXG4gICAgICBib2R5VGV4dEZvbnRzU2l6ZTogdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgIGhlYWRlclRleHRGb250c1NpemU6IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXG4gICAgICBzaG93VmVydGljYWxCb3JkZXI6IHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyLFxuICAgICAgc2VsZWN0ZWRUYWJsZUxheW91dDogdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXG4gICAgfVxuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb2JqOiB7XG4gICAgICAgIGRhdGE6IGNvbmZpZ1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ2NvbmZpZydcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcblxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG4gIG9uR2xvYmFsU2VhcmNoKCkge1xuICAgIHRoaXMuY2xvc2VBbGxFeHBhbmRlZFJvd3MoKTtcblxuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHRhYmxlU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnc2VhcmNoJ1xuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICB9XG5cbiAgb25TZWFyY2hJbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG5cbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnRhYmxlU2VhcmNoID0gJyc7XG4gICAgICB0aGlzLm9uR2xvYmFsU2VhcmNoKCk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gdHJ1ZVxuICAgIGNvbnN0IGZpbmREZWZhdWx0RmlsdGVyID0gdGhpcy50YWJsZVZpZXc/LmZpbmQoKGVsZTogYW55KSA9PiBlbGU/LmlkID09IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZUZpbHRlcnMgPSAoZmlsdGVyczogYW55W10gfCB1bmRlZmluZWQpOiBhbnlbXSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IGNsb25lZCA9IGZpbHRlcnMubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmID8/IHt9KSk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLl9pZHMpKSBpdGVtLl9pZHMgPSBbXTtcbiAgICAgICAgaXRlbS5faWRzID0gaXRlbS5faWRzLnNsaWNlKCkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykgcmV0dXJuIGEgLSBiO1xuICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpdGVtLnF1ZXJ5ID09PSBudWxsKSB7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0ucXVlcnkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW0ucXVlcnkuX2lkcykpIGl0ZW0ucXVlcnkuX2lkcyA9IFtdO1xuICAgICAgICAgIGl0ZW0ucXVlcnkuX2lkcyA9IGl0ZW0ucXVlcnkuX2lkcy5zbGljZSgpLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykgcmV0dXJuIGEgLSBiO1xuICAgICAgICAgICAgcmV0dXJuICgnJyArIGEpLmxvY2FsZUNvbXBhcmUoJycgKyBiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgICBjbG9uZWQuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZmEgPSAoYS5maWVsZCB8fCAnJykgKyAnfCcgKyAoYS50eXBlIHx8ICcnKTtcbiAgICAgICAgY29uc3QgZmIgPSAoYi5maWVsZCB8fCAnJykgKyAnfCcgKyAoYi50eXBlIHx8ICcnKTtcbiAgICAgICAgcmV0dXJuIGZhLmxvY2FsZUNvbXBhcmUoZmIpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjbG9uZWQ7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlZXBFcXVhbCA9IChhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGEgIT09ICdvYmplY3QnIHx8IGEgPT09IG51bGwgfHwgdHlwZW9mIGIgIT09ICdvYmplY3QnIHx8IGIgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICE9PSBBcnJheS5pc0FycmF5KGIpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICAgICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFba2V5XSwgYltrZXldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBjb25zdCBub3JtYWxpemVkQSA9IG5vcm1hbGl6ZUZpbHRlcnMoZmluZERlZmF1bHRGaWx0ZXI/LmZpbHRlcnMpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRCID0gbm9ybWFsaXplRmlsdGVycyh0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGlzU2FtZSA9IGRlZXBFcXVhbChub3JtYWxpemVkQSwgbm9ybWFsaXplZEIpO1xuICAgIHJldHVybiBpc1NhbWU7XG4gIH1cblxuXG5cblxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vIFJvdyBTZWxlY3Rpb24gZnJvbSB0aGUgSW5kZXhpbmcgSW1wbGVtZW50ZWQgSGVyZVxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgcm93U2VsZWN0ZWRJbmRleGVzOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQoKTtcbiAgcm93U2VsZWN0aW5nID0gZmFsc2U7XG4gIHJvd1NlbGVjdGlvblN0YXJ0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBhdXRvU2Nyb2xsSW50ZXJ2YWw6IGFueSA9IG51bGw7XG5cbiAgZ2V0IGZpcnN0U2VsZWN0ZWRSb3coKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XG4gIH1cblxuICBnZXQgbGFzdFNlbGVjdGVkUm93KCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4udGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMpO1xuICB9XG5cblxuICBvblJvd01vdXNlRG93bihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5hY3RpdmVDZWxsID0gbnVsbDtcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBpbmRleDtcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpbmRleCk7XG4gICAgdGhpcy5hY3RpdmVDZWxsID0gJyc7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgY29uc3QgbW91c2VNb3ZlSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLmhhbmRsZUF1dG9TY3JvbGwoZSk7XG4gICAgY29uc3QgbW91c2VVcEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLm9uUm93TW91c2VVcCgpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICAgICAgaWYgKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcbiAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICB9XG5cbiAgb25Sb3dNb3VzZU92ZXIoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMucm93U2VsZWN0aW5nIHx8IHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbih0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1heCh0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpKTtcbiAgICB9XG4gIH1cblxuICBvblJvd01vdXNlVXAoKSB7XG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBudWxsO1xuICB9XG4gIGhhbmRsZUF1dG9TY3JvbGwoZTogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlZGdlU2l6ZSA9IDQwXG4gICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XG5cbiAgICBpZiAoZS5jbGllbnRZIDwgcmVjdC50b3AgKyBlZGdlU2l6ZSkge1xuICAgICAgc2Nyb2xsQW1vdW50ID0gLTE1MDtcbiAgICB9IGVsc2UgaWYgKGUuY2xpZW50WSA+IHJlY3QuYm90dG9tIC0gZWRnZVNpemUpIHtcbiAgICAgIHNjcm9sbEFtb3VudCA9IDE1MDtcbiAgICB9XG5cbiAgICBpZiAoc2Nyb2xsQW1vdW50ICE9PSAwKSB7XG4gICAgICBpZiAoIXRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSAoKSA9PiB7XG4gICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCArPSBzY3JvbGxBbW91bnQ7XG4gICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVuZG9TdGFjazogYW55W11bXSA9IFtdO1xuICByZWRvU3RhY2s6IGFueVtdW10gPSBbXTtcblxuICBwcml2YXRlIGNsb25lRGF0YShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH1cblxuICBwZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YTogYW55W11bXSkge1xuICAgIHRoaXMudW5kb1N0YWNrLnB1c2godGhpcy5jbG9uZURhdGEodGhpcy52aXNpYmxlUm93cykpO1xuICAgIHRoaXMucmVkb1N0YWNrID0gW107XG4gICAgdGhpcy5jb3B5U2VydmljZS5jdXRXaXRoQW5pbWF0aW9uKHNlbGVjdGVkRGF0YSk7XG4gICAgY29uc3QgeyB1cGRhdGVkUm93cyB9ID0gdGhpcy5jb3B5U2VydmljZS5jdXRTZWxlY3RlZFNlbGVjdGVkRGF0YShcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscyxcbiAgICAgIHRoaXMuY29sdW1ucyxcbiAgICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUuYmluZCh0aGlzKVxuICAgICk7XG5cbiAgfVxuXG4gIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XG4gICAgcmV0dXJuIHRoaXMuY29weVNlcnZpY2UuZ2V0U2VsZWN0ZWREYXRhRm9yQ29weShcbiAgICAgIHRoaXMuZGF0YVNldCxcbiAgICAgIHRoaXMuY29sdW1ucyxcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLFxuICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIHBhZ2VTaXplS2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG4gIHByaXZhdGUgYnVpbGRQYWdlU2l6ZUtleU1hcCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTaXplS2V5TWFwID0ge307XG5cbiAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucy5mb3JFYWNoKChzaXplLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qga2V5ID1cbiAgICAgICAgaW5kZXggPCA5XG4gICAgICAgICAgPyBTdHJpbmcoaW5kZXggKyAxKVxuICAgICAgICAgIDogaW5kZXggPT09IDlcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZUtleU1hcFtrZXldID0gc2l6ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZpZXdwb3J0OiBhbnk7XG4gIHNjcm9sbFZpZXdwb3J0KGFtb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy52aWV3cG9ydCA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGhpcy52aWV3cG9ydCkge1xuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb3AgKz0gYW1vdW50O1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFZpZXdwb3J0VG9Ub3AoKSB7XG4gICAgdGhpcy52aWV3cG9ydCA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGhpcy52aWV3cG9ydCkgdGhpcy52aWV3cG9ydC5zY3JvbGxUb3AgPSAwO1xuICB9XG5cbiAgc2Nyb2xsVmlld3BvcnRUb0JvdHRvbSgpIHtcbiAgICB0aGlzLnZpZXdwb3J0ID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICh0aGlzLnZpZXdwb3J0KSB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvcCA9IHRoaXMudmlld3BvcnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgc2Nyb2xsVG9DZWxsKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4ID0gMCkge1xuICAgIC8vIDHvuI/ig6MgVmVydGljYWwgc2Nyb2xsXG4gICAgaWYgKHRoaXMubWFpblNjcm9sbCkge1xuICAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gcm93SW5kZXggKiB0aGlzLnJvd0hlaWdodDtcbiAgICB9XG5cbiAgICAvLyAy77iP4oOjIEhvcml6b250YWwgc2Nyb2xsXG4gICAgY29uc3QgbGVmdENvbHNXaWR0aCA9IHRoaXMuZ2V0TGVmdE9mZnNldEZvckNvbHVtbihjb2xJbmRleCwgc3ViQ29sSW5kZXgpO1xuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnRDb2xzV2lkdGg7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGVmdE9mZnNldEZvckNvbHVtbihjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleCA9IDApOiBudW1iZXIge1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sSW5kZXg7IGkrKykge1xuICAgICAgY29uc3QgY29sID0gdGhpcy5jb2x1bW5zW2ldO1xuICAgICAgb2Zmc2V0ICs9IGNvbC53aWR0aCA/PyAwO1xuICAgIH1cblxuICAgIC8vIEFkZCBzdWItY29sdW1uIHdpZHRoIGlmIGFueVxuICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tjb2xJbmRleF07XG4gICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCAmJiBzdWJDb2xJbmRleCA+IDApIHtcbiAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgc3ViQ29sSW5kZXg7IHMrKykge1xuICAgICAgICBvZmZzZXQgKz0gY29sLmNoaWxkcmVuW3NdLndpZHRoID8/IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG5cblxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgaXNGb3JtRmllbGQgPVxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcbiAgICAgIHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICB0YXJnZXQuaXNDb250ZW50RWRpdGFibGU7XG4gICAgaWYgKGlzRm9ybUZpZWxkIHx8IHRoaXMubG9hZGluZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc2hpZnQgPSBldmVudC5zaGlmdEtleTtcbiAgICBjb25zdCBzY3JvbGxBbW91bnQgPSB0aGlzLnZpZXdwb3J0Um93cyAqIHRoaXMucm93SGVpZ2h0O1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuY3RybEtleVByZXNzZWQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGwoJ3VwJywgc2hpZnQsIHRoaXMuZGF0YVNldCwgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGwoJ2Rvd24nLCBzaGlmdCwgdGhpcy5kYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbCgnbGVmdCcsIHNoaWZ0LCB0aGlzLmRhdGFTZXQsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbCgncmlnaHQnLCBzaGlmdCwgdGhpcy5kYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLm1vdmVBY3RpdmVDZWxsQnlSb3dzKHNjcm9sbEFtb3VudCAvIHRoaXMucm93SGVpZ2h0LCAnZG93bicsIHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3cG9ydChzY3JvbGxBbW91bnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbEJ5Um93cyhzY3JvbGxBbW91bnQgLyB0aGlzLnJvd0hlaWdodCwgJ3VwJywgc2hpZnQpO1xuICAgICAgICB0aGlzLnNjcm9sbFZpZXdwb3J0KC1zY3JvbGxBbW91bnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGxUb1N0YXJ0KHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0NlbGwoMCwgMCk7IC8vIGZpcnN0IHJvdywgZmlyc3QgY29sdW1uXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5kYXRhU2V0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGxhc3RDb2wgPSB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbFRvRW5kKHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0NlbGwobGFzdFJvdywgbGFzdENvbCk7IC8vIGxhc3Qgcm93LCBsYXN0IGNvbHVtblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmdvVG9MYXN0UGFnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZ29Ub0ZpcnN0UGFnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgoZXZlbnQuYWx0S2V5KSAmJiBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZ29Ub05leHRQYWdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmdvVG9QcmV2aW91c1BhZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBNSU5fSEVJR0hUID0gMjg7XG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgKz0gMTtcbiAgICAgIHRoaXMucm93SGVpZ2h0ICs9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IE1hdGgubWF4KE1JTl9IRUlHSFQsIHRoaXMuaGVhZGVyUm93SGVpZ2h0IC0gMSk7XG4gICAgICB0aGlzLnJvd0hlaWdodCA9IE1hdGgubWF4KE1JTl9IRUlHSFQsIHRoaXMucm93SGVpZ2h0IC0gMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cblxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkgPT09ICcvJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmICh0aGlzLmdsb2JhbFNlYXJjaElucHV0KSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdsb2JhbFNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlucHV0RWwuZm9jdXMoKTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxPdXRsaW5lID0gaW5wdXRFbC5zdHlsZS5vdXRsaW5lO1xuICAgICAgICBjb25zdCBvcmlnaW5hbEJveFNoYWRvdyA9IGlucHV0RWwuc3R5bGUuYm94U2hhZG93O1xuICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdvdXRsaW5lJywgJzJweCBzb2xpZCAjNGY5Y2ZmJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdib3gtc2hhZG93JywgJzAgMCA4cHggMnB4ICM0ZjljZmYnLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlucHV0RWwuc3R5bGUuc2V0UHJvcGVydHkoJ291dGxpbmUnLCBvcmlnaW5hbE91dGxpbmUgfHwgJycsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdib3gtc2hhZG93Jywgb3JpZ2luYWxCb3hTaGFkb3cgfHwgJycsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgfSwgMTAwMCk7XG5cblxuXG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAncicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5rZXk/LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09ICdyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuYXV0b1NpemVDb2x1bW5zQnlSYXRpbygpXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYycpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmRvd25sb2FkQ3N2KCdjc3YnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdlJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZG93bmxvYWRDc3YoJ3hsc3gnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9ICF0aGlzLnNob3dWZXJ0aWNhbEJvcmRlcjtcbiAgICAgIHRoaXMub25Gb250Q2hhbmdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2gnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9ICF0aGlzLnJvd1NoYWRpbmdFbmFibGVkO1xuICAgICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdzJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQoJ3NtYWxsJylcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnbScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KCdtZWRpdW0nKVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdsJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQoJ2xhcmdlJylcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuXG5cbiAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICBjb25zdCBuZXdMaW1pdCA9IHRoaXMucGFnZVNpemVLZXlNYXBbZXZlbnQua2V5XTtcbiAgICAgIGlmIChuZXdMaW1pdCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0ICE9PSBuZXdMaW1pdCkge1xuICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCA9IG5ld0xpbWl0O1xuICAgICAgICAgIHRoaXMub25QYWdlU2l6ZUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiZcbiAgICAgIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYydcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggJiZcbiAgICAgICAgIXRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemVcbiAgICAgICkgcmV0dXJuO1xuXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XG4gICAgICB0aGlzLmNvcHlTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChzZWxlY3RlZERhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd4Jykge1xuICAgICAgaWYgKCF0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCB8fCAhdGhpcy5lbmFibGVDdXQpIHJldHVyblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCAmJlxuICAgICAgICAhdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZVxuICAgICAgKSByZXR1cm47XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSB0aGlzLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTtcbiAgICAgIHRoaXMucGVyZm9ybUN1dChzZWxlY3RlZERhdGEpO1xuXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3onKSB7XG4gICAgICBpZiAoIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cbiAgICAgIHRoaXMudW5kbygpO1xuXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XG4gICAgICBpZiAoIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cbiAgICAgIHRoaXMucmVkbygpO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnYScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdEFsbENlbGxzKHRoaXMub3JpZ2luYWxEYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9OZXh0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlO1xuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcztcbiAgICBpZiAoY3VycmVudFBhZ2UgPj0gdG90YWxQYWdlcykgcmV0dXJuO1xuICAgIHRoaXMuZ29Ub1BhZ2UoY3VycmVudFBhZ2UgKyAxKTtcbiAgfVxuXG4gIGdvVG9QcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZTtcbiAgICBpZiAoY3VycmVudFBhZ2UgPD0gMSkgcmV0dXJuO1xuICAgIHRoaXMuZ29Ub1BhZ2UoY3VycmVudFBhZ2UgLSAxKTtcbiAgfVxuXG4gIGdvVG9GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSAxKSByZXR1cm47XG4gICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgfVxuXG4gIGdvVG9MYXN0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0UGFnZSA9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzO1xuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA9PT0gbGFzdFBhZ2UpIHJldHVybjtcbiAgICB0aGlzLmdvVG9QYWdlKGxhc3RQYWdlKTtcbiAgfVxuXG4gIHVuZG8oKSB7XG4gICAgaWYgKHRoaXMudW5kb1N0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMudW5kb1N0YWNrLnBvcCgpITtcbiAgICAgIHRoaXMucmVkb1N0YWNrLnB1c2godGhpcy5jbG9uZURhdGEodGhpcy52aXNpYmxlUm93cykpO1xuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKHByZXZTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVkbygpIHtcbiAgICBpZiAodGhpcy5yZWRvU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5yZWRvU3RhY2sucG9wKCkhO1xuICAgICAgdGhpcy51bmRvU3RhY2sucHVzaCh0aGlzLmNsb25lRGF0YSh0aGlzLnZpc2libGVSb3dzKSk7XG4gICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5jbG9uZURhdGEobmV4dFN0YXRlKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6cGFzdGUnLCBbJyRldmVudCddKVxuICBhc3luYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xuICAgIGlmICghdGhpcy5lbmFibGVDdXQpIHJldHVybjtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgdGFnID0gdGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnIHx8IHRhcmdldD8uZ2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSA9PT0gJ3RydWUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCB8fCAhdGhpcy5hY3RpdmVDZWxsKSByZXR1cm47XG5cbiAgICBjb25zdCB0ZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xuICAgIGlmICghdGV4dCkgcmV0dXJuO1xuICAgIGNvbnN0IHVzZXJDb25maXJtZWQgPSBhd2FpdCB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbChcbiAgICAgICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcGFzdGUgdGhlIGNvcGllZCBkYXRhPydcbiAgICApO1xuXG4gICAgaWYgKCF1c2VyQ29uZmlybWVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8uWzBdO1xuICAgIGlmICghc3RhcnRDZWxsKSByZXR1cm47XG5cbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IGF3YWl0IHRoaXMuY29weVNlcnZpY2UucGFzdGVGcm9tQ2xpcGJvYXJkVGV4dChcbiAgICAgIHRleHQsXG4gICAgICB0aGlzLnZpc2libGVSb3dzLFxuICAgICAgdGhpcy5jb2x1bW5zLFxuICAgICAgc3RhcnRDZWxsLnJvd0luZGV4LFxuICAgICAgc3RhcnRDZWxsLmNvbEluZGV4LFxuICAgICAgc3RhcnRDZWxsLnN1YkNvbEluZGV4XG4gICAgKTtcblxuICAgIGlmICh1cGRhdGVkUm93cz8udXBkYXRlUm93cz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHtcbiAgICAgICAgZGF0YTogdXBkYXRlZFJvd3M/LnVwZGF0ZVJvd3MsXG4gICAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICAgICAgY29sdW1uOiB1cGRhdGVkUm93cz8uY3VycmVudENvbHVtc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnY3VzdG9tLW92ZXJsYXktd3JhcHBlcicpO1xuICAgICAgb3ZlcmxheS5pbm5lckhUTUwgPSBgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLW92ZXJsYXlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tbW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtb2RhbC1tZXNzYWdlXCI+JHttZXNzYWdlfTwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY29uZmlybVwiPkNvbmZpcm08L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XG4gICAgICBjb25zdCBjb25maXJtQnRuID0gb3ZlcmxheS5xdWVyeVNlbGVjdG9yKCcuYnRuLWNvbmZpcm0nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGNhbmNlbEJ0biA9IG92ZXJsYXkucXVlcnlTZWxlY3RvcignLmJ0bi1jYW5jZWwnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQob3ZlcmxheSk7XG4gICAgICB9O1xuICAgICAgY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGNhbmNlbEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNEYXRlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKT8uZ2V0VGltZSgpKTtcbiAgfVxuXG4gIGV4cGFuZGVkZWREZXRhaWxSb3dzOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgc3RyaW5nIHwgbnVtYmVyID0gJyc7XG5cbiAgdG9nZ2xlRGV0YWlsUm93RXhwYW5kKHJvdzogYW55KSB7XG4gICAgY29uc3QgaWQgPSByb3c/LmlkIHx8IHJvdz8uX2lkO1xuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyAmJiByb3c/LmRldGFpbD8uY29sdW1ucykge1xuICAgICAgcm93LmRldGFpbC5jb2x1bW5zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBpdGVtLndpZHRoID0gaXRlbT8ud2lkdGggfHwgKHRoaXMuZGF0YUdyaWRDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAvIHJvdy5kZXRhaWwuY29sdW1ucz8ubGVuZ3RoKVxuICAgICAgfSk7XG4gICAgICB0aGlzLnByZXZpZXdOZXN0ZWRDb2xzID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHJvdy5kZXRhaWwuY29sdW1ucyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyBhcyAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICAgICAgY29uc3QgaW5kZXggPSBleHBhbmRlZC5pbmRleE9mKGlkKTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZXhwYW5kZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4cGFuZGVkLnB1c2goaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9PT0gaWQpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IGlkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdm9pZCB0aGlzLnJpZ2h0UGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5yaWdodFBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMzAwKVxuICB9XG5cbiAgaXNEZXRhaWxzRXhwYW5kZWQocm93OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBpZCA9IHJvdz8uaWQgfHwgcm93Py5faWQ7XG5cbiAgICBpZiAodGhpcy5rZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMpIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MpICYmXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MuaW5jbHVkZXMoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9PT0gaWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmlsdGVyVmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBvcHRpb24/LnZhbHVlID8/IG9wdGlvbjtcbiAgfVxuXG5cbiAgb3BlbkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgdG9nZ2xlTWVudShpOiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIGlmIChldmVudCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgfVxuICAgIHRoaXMub3BlbkluZGV4ID0gdGhpcy5vcGVuSW5kZXggPT09IGkgPyBudWxsIDogaTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlJylcbiAgbmVzdGVkVGFibGUhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgZ2V0IGhhc1ZlcnRpY2FsU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5uZXN0ZWRUYWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgfVxuXG4gIGdldCBoYXNIb3Jpem9udGFsU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5uZXN0ZWRUYWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGVsID0gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50O1xuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xuICB9XG5cblxuICBnZXRUb3RhbEFtb3VudChjb2x1bW46IGFueSkge1xuICAgIGlmICghY29sdW1uPy5pc19hbW91bnQpIHJldHVybjtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LnJlZHVjZSgoc3VtLCByb3cpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcm93W2NvbHVtbi5maWVsZF0gfHwgMDtcbiAgICAgIHJldHVybiBzdW0gKyB2YWx1ZTtcbiAgICB9LCAwKTtcbiAgICBpZiAoIXRvdGFsKSByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gMC4wMGBcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gJHt0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh0b3RhbCwgdGhpcy5jdXJyZW5jeUZvcm1hdCl9YDtcbiAgfVxuXG4gIGRyb3BDb2x1bW4oZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPiwgcm93OiBhbnkpIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkocm93LmRldGFpbC5jb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICB9XG4gIGN1cnJlbnRTdWJTb3J0Q29sdW1uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgY3VycmVudFNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7XG5cbiAgc29ydE5lc3RlZENvbChjb2w6IGFueSwgcm93OiBhbnkpIHtcbiAgICBjb25zdCBkYXRhU2V0ID0gcm93Py5kZXRhaWw/LnJlc3VsdDtcbiAgICBpZiAodGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9PT0gY29sLmZpZWxkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9IGNvbC5maWVsZDtcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSAnYXNjJztcbiAgICB9XG4gICAgY29sLm9yZGVyX2J5ID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbjtcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uZGF0YVNldF0uc29ydCgoYSwgYikgPT4ge1xuICAgICAgbGV0IGFWYWwgPSBhW2NvbC5maWVsZF07XG4gICAgICBsZXQgYlZhbCA9IGJbY29sLmZpZWxkXTtcbiAgICAgIGFWYWwgPSBhVmFsID09IG51bGwgPyAnJyA6IGFWYWw7XG4gICAgICBiVmFsID0gYlZhbCA9PSBudWxsID8gJycgOiBiVmFsO1xuXG4gICAgICBpZiAoY29sLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICBhVmFsID0gbmV3IERhdGUoYVZhbCkuZ2V0VGltZSgpO1xuICAgICAgICBiVmFsID0gbmV3IERhdGUoYlZhbCkuZ2V0VGltZSgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhTnVtID0gcGFyc2VGbG9hdChhVmFsKTtcbiAgICAgIGNvbnN0IGJOdW0gPSBwYXJzZUZsb2F0KGJWYWwpO1xuICAgICAgY29uc3QgYm90aE51bWJlcnMgPSAhaXNOYU4oYU51bSkgJiYgIWlzTmFOKGJOdW0pO1xuXG4gICAgICBpZiAoYm90aE51bWJlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gYU51bSAtIGJOdW0gOiBiTnVtIC0gYU51bTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbXAgPSBTdHJpbmcoYVZhbCkubG9jYWxlQ29tcGFyZShTdHJpbmcoYlZhbCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBjb21wIDogLWNvbXA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByb3cuZGV0YWlsLnJlc3VsdCA9IHNvcnRlZDtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgZ2V0Q29sdW1uV2lkdGhQeChyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb2wud2lkdGgpIHJldHVybiBjb2wud2lkdGggKyAncHgnO1xuICAgIGNvbnN0IHBpeGVscyA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbD8uY29sdW1ucy5sZW5ndGg7XG4gICAgcmV0dXJuIHBpeGVscyArICdweCc7XG4gIH1cblxuICBmdWxsc2NyZWVuSW1hZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHBpblVucGluQ29sdW0oY29sOiBhbnksIHZhbHVlOiAnbGVmdCcgfCAncmlnaHQnIHwgbnVsbCwgY29sdW1uczogYW55W10pIHtcbiAgICBjb2wucGlubmVkID0gdmFsdWU7XG4gICAgY29uc3QgbGVmdCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgbWlkZGxlID0gY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5waW5uZWQgfHwgYy5waW5uZWQgPT09IG51bGwpO1xuICAgIGNvbnN0IHJpZ2h0ID0gY29sdW1ucy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29sdW1ucy5sZW5ndGggPSAwO1xuICAgIGNvbHVtbnMucHVzaCguLi5sZWZ0LCAuLi5taWRkbGUsIC4uLnJpZ2h0KTtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gIH1cblxuICBnZXRMZWZ0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpLmxlbmd0aDtcbiAgfVxuXG4gIGdldFJpZ2h0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAncmlnaHQnKS5sZW5ndGg7XG4gIH1cblxuICBnZXRTdGlja3lMZWZ0KGNvbHVtbnM6IGFueVtdLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgbGVmdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7XG4gICAgICBjb25zdCBwcmV2Q29sID0gY29sdW1uc1tpXTtcbiAgICAgIGlmIChwcmV2Q29sLnBpbm5lZCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGxlZnQgKz0gcHJldkNvbC53aWR0aCB8fCAxMDA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtsZWZ0fXB4YDtcbiAgfVxuXG4gIHByZXZpZXdOZXN0ZWRDb2xzOiBhbnlbXSA9IFtdO1xuICBvbk5lc3RlZENvbFNvcnQoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55W10+LCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICghZXZlbnQgfHwgIWNvbHVtbnMpIHJldHVybjtcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgY29uc3QgY29sQ2VsbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgY29sQ2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xuICAgIH0pO1xuICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkgPz8gbmV3TGVmdDtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcblxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xuICAgICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIHZvaWQgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGVhc2UnO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuICAgICAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjbGVhbnVwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlU2VsZWN0aW9uKHNlbGVjdGVkSWRzOiBzdHJpbmdbXSwgdGFibGVUeXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRhYmxlVHlwZSkgcmV0dXJuO1xuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne1wic2VsZWN0ZWRSb3dzXCI6IHt9fScpO1xuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gc3RvcmVkLnNlbGVjdGVkUm93cyB8fCB7fTtcbiAgICBhbGxTZWxlY3RlZFt0YWJsZVR5cGVdID0gc2VsZWN0ZWRJZHM7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHNlbGVjdGVkUm93czogYWxsU2VsZWN0ZWQsXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0YWJsZVR5cGVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlc3RvcmVTZWxlY3Rpb24odGFibGVUeXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3t9Jyk7XG4gICAgY29uc3QgaWRzID0gc3RvcmVkLnNlbGVjdGVkUm93cz8uW3RhYmxlVHlwZV0gfHwgW107XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0KGlkcyk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzO1xuICB9XG5cbiAgaXNPdXRzaWRlQ29udGFpbmVyID0gZmFsc2U7XG4gIHByaXZhdGUgY29udGFpbmVyUmVjdDogRE9NUmVjdCB8IG51bGwgPSBudWxsO1xuXG4gIG9uRHJhZ1N0YXJ0ZWQoY29sOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiA9IGNvbDtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YS1ncmlkLW1haW4tY29udGFpbmVyJyk7XG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gY29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB8fCBudWxsO1xuICB9XG5cbiAgb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lclJlY3QpIHJldHVybjtcblxuICAgIGNvbnN0IHsgeCwgeSB9ID0gZXZlbnQucG9pbnRlclBvc2l0aW9uO1xuICAgIGNvbnN0IGlzT3V0c2lkZSA9XG4gICAgICB4IDwgdGhpcy5jb250YWluZXJSZWN0LmxlZnQgfHxcbiAgICAgIHggPiB0aGlzLmNvbnRhaW5lclJlY3QucmlnaHQgfHxcbiAgICAgIHkgPCB0aGlzLmNvbnRhaW5lclJlY3QudG9wIHx8XG4gICAgICB5ID4gdGhpcy5jb250YWluZXJSZWN0LmJvdHRvbTtcbiAgfVxuXG4gIG9uRHJhZ0VuZGVkKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBudWxsO1xuICAgICAgdGhpcy5pc091dHNpZGVDb250YWluZXIgPSBmYWxzZTtcbiAgICB9LCAxMDApO1xuICAgIHRoaXMuY29udGFpbmVyUmVjdCA9IG51bGw7XG4gIH1cblxuICBnZXRTdGFydEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgPT09IDBcbiAgICAgID8gMFxuICAgICAgOiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfHwgMDtcbiAgfVxuXG4gIGhhc0FueURlZmF1bHRWaWV3KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlVmlldz8uc29tZSgoeCkgPT4geC5pc19kZWZhdWx0IHx8IHguaXNfdGVtcCk7XG4gIH1cblxuICBnZXQgaXNUYWJsZVByZXNldE5vdENoYW5nZWQoKSB7XG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBjdXJyUHJlc2V0ID0gdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU7XG5cbiAgICBjb25zdCBjdXJyZW50UHJlc2V0Q29sdW1ucyA9IGN1cnJQcmVzZXQ/LmNvbHVtbnM/Lm1hcCgoY29sOiB7IGZpZWxkOiBhbnk7IHdpZHRoOiBhbnk7IHBpbm5lZDogYW55OyB9KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxuICAgICAgICB3aWR0aDogY29sLndpZHRoLFxuICAgICAgICBwaW5uZWQ6IGNvbC5waW5uZWRcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5tYXAoY29sID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXG4gICAgICAgIHBpbm5lZDogY29sLnBpbm5lZFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPSBKU09OLnN0cmluZ2lmeShjdXJyZW50UHJlc2V0Q29sdW1ucyk7XG4gICAgY29uc3Qgc3RyaW5nQ29sdW1ucyA9IEpTT04uc3RyaW5naWZ5KGNvbHVtbnMpO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnNDb25maWcubWFwKChmaWx0ZXIpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5jb25kaXRpb24sXG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24sXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IGZpbHRlcj8ucXVlcnk/LmZpcnN0X3ZhbHVlLFxuICAgICAgICAgIHNlY29uZF9jb25kaXRpb246IGZpbHRlcj8ucXVlcnk/LnNlY29uZF9jb25kaXRpb24sXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBjdXJyZW50UHJlc2V0RmlsdGVycyA9IGN1cnJQcmVzZXQ/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXG4gICAgICAgIHF1ZXJ5OiBmaWx0ZXIucXVlcnksXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKCFjdXJyZW50UHJlc2V0Q29sdW1ucykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIChjdXJyZW50UHJlc2V0Q29sdW1ucyAmJiAoc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucykgJiYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpID09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRGaWx0ZXJzKSkgJiYgKHRoaXMuZm9udEZhaW1seSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5mb250RmFpbWx5KVxuICAgICAgJiYgKHRoaXMuYm9keVRleHRGb250c1NpemUgPT0gY3VyclByZXNldC5jb25maWcuYm9keVRleHRGb250c1NpemUpICYmXG4gICAgICAodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID09IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSlcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIgPT0gdGhpcy5zaG93VmVydGljYWxCb3JkZXJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5mb250RmFpbWx5ID09IHRoaXMuZm9udEZhaW1seVxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQgPT0gdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0XG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcuYm9keVRleHRGb250c1NpemUgPT0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZVxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnJvd1NoYWRpbmdFbmFibGVkID09IHRoaXMucm93U2hhZGluZ0VuYWJsZWQpO1xuICB9XG5cbiAgb25BY3Rpb25CdXR0b25DbGljayhidXR0b246IHN0cmluZykge1xuICAgIGNvbnN0IHRleHQgPSBidXR0b24/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgaWYgKHRleHQgPT0gJ2FjdGl2ZSBkYXRhJyB8fCB0ZXh0ID09ICdhY3RpdmUnIHx8IHRleHQgPT0gJ2RhdGEgYWN0aXZlJyB8fCB0ZXh0ID09ICd1bmFyY2hpdmVkIGRhdGEnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZSBkYXRhJykgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgIG9iajogYnV0dG9uXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiBcIm9uQWN0aW9uQnV0dG9uQ2xpY2tcIixcbiAgICB9O1xuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cblxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcbiAgICBhbGxUYWJzW3RoaXMudGFibGVUeXBlXSA9IHRhYjtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWN0aXZlVGFicycsIEpTT04uc3RyaW5naWZ5KGFsbFRhYnMpKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgICAgIG9iajogdGFiXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnb25UYWJDaGFuZ2UnLFxuICAgIH07XG5cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGdldEJhY2tncm91bmRDb2xvcihyb3c6IGFueSwgaXNFdmVuOiBib29sZWFuLCBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMucm93SG92ZXJDb2xvcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGVja2VkUm93QmFja2dyb3VuZENvbG9yO1xuICAgIH1cbiAgICBsZXQgYmFzZUNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5yb3dTaGFkaW5nRW5hYmxlZCkge1xuICAgICAgYmFzZUNvbG9yID0gaXNFdmVuID8gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvciA6IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZUNvbG9yID0gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvcjtcbiAgICB9XG4gICAgaWYgKCFiYXNlQ29sb3IpIHtcbiAgICAgIGlmIChzZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5sZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yO1xuICAgICAgfSBlbHNlIGlmIChzZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMucmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLmJvZHlCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiYXNlQ29sb3I7XG4gIH1cblxuICBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBlbCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuIGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGg7XG4gIH1cblxuXG4gIGdldFNhZmVDb21tZW50KGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuY2xlYW5FZGl0b3JDb250ZW50KGRlc2NyaXB0aW9uKTtcbiAgfVxuICBjbGVhbkVkaXRvckNvbnRlbnQoY29udGVudDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIHJldHVybiB0aGlzLmh0bWxTYW5hdGl6ZXJTZXJ2aWNlLmNsZWFuRWRpdG9yQ29udGVudChjb250ZW50KTtcbiAgfVxuXG4gIGdldEV4dGVudGlvbih1cmw6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh1cmwgIT09ICctJykge1xuICAgICAgaWYgKHR5cGVvZiAodXJsKSA9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdXJsLnNwbGl0KCcuJykucG9wKClcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1cmwpKSB7XG4gICAgICAgIHJldHVybiB1cmxbMF0uc3BsaXQoJy4nKS5wb3AoKVxuICAgICAgfSBlbHNlIHJldHVybiAnLSdcbiAgICB9XG4gICAgZWxzZSByZXR1cm4gJy0nXG4gIH1cblxuICBkb3dubG9hZEF0dGNobWVudCh1cmw6IGFueSwgZmlsZT86IGFueSkge1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuZG93bmxvYWQgPSAnJztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuXG4gIH1cbiAgZnVsbEltYWdlU3JjOiBzdHJpbmcgfCBudWxsID0gJyc7XG4gIG9wZW5GdWxsSW1hZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcbiAgICAgIHRoaXMuZnVsbEltYWdlU3JjID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3R5bGVzVG9JbWFnZXMoKTogdm9pZCB7XG4gICAgY29uc3QgaW1hZ2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbW1lbnQtY29udGVudCBpbWcnKTtcbiAgICBpbWFnZXMuZm9yRWFjaCgoaW1nKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ3dpZHRoJywgJzcwcHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnYm9yZGVyLXJhZGl1cycsICcxNnB4Jyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ21hcmdpbicsICc4cHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGltZywgJ2NsaWNrJywgKCkgPT4gdGhpcy5vbkltYWdlQ2xpY2soKGltZyBhcyBIVE1MSW1hZ2VFbGVtZW50KS5zcmMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uSW1hZ2VDbGljayhzcmM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZnVsbHNjcmVlbkltYWdlID0gc3JjO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnZnVsbHNjcmVlbkltYWdlVGVtcGxhdGUnKSBmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgZnVsbHNjcmVlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgaWNvbk1hcDogUmVjb3JkPHN0cmluZywgKHJvdzogYW55LCBjb2w6IGFueSkgPT4gc3RyaW5nPiA9IHtcbiAgICBhdHRhY2htZW50c19jb3VudDogKCkgPT4gdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hdHRhY2htZW50cy5zdmcnLFxuICAgIGNvbW1lbnRfY291bnQ6ICgpID0+IHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY29tbWVudHMuc3ZnJyxcbiAgICBwcmlvcml0eTogKHJvdywgY29sKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPVxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICdkYXRhLWdyaWQvaWNvbnMvJyArXG4gICAgICAgICh2YWwgPz8gJ2RlZmF1bHQnKSArXG4gICAgICAgICcuc3ZnJ1xuICAgICAgKTtcbiAgICB9LFxuICB9O1xuXG4gIHRvZ2dsZUZ1bGxzY3JlZW4oKSB7XG4gICAgdGhpcy5pc0Z1bGxTY3JlZW4gPSAhdGhpcy5pc0Z1bGxTY3JlZW47XG4gICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCBhcyBhbnk7XG4gICAgaWYgKCFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCkge1xuICAgICAgaWYgKGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XG4gICAgICAgIGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLm1vekNhbmNlbEZ1bGxTY3JlZW4pIHtcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbikge1xuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS5tc0V4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1zRXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNlbGxFdmVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXN0b21DZWxsRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIGZsYXR0ZW5Hcm91cChyb3c6IGFueSk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XG4gICAgICBpZiAoIW5vZGUpIHJldHVybjtcbiAgICAgIGlmIChub2RlLmlzR3JvdXApIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gdHJhdmVyc2UoY2hpbGQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgdHJhdmVyc2Uocm93KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2VsZWN0R3JvdXBSb3coZTogRXZlbnQsIHJvdzogYW55KSB7XG4gICAgY29uc3QgY2hlY2tib3ggPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGNoZWNrYm94LmNoZWNrZWQ7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmZsYXR0ZW5Hcm91cChyb3cpO1xuICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgICAgb2JqOiBpZHNcbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93OiBhbnkpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXJvdy5pc0dyb3VwKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmZsYXR0ZW5Hcm91cChyb3cpO1xuICAgIGxldCBjaGVja2VkQ291bnQgPSAwO1xuICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICBjb25zdCBpZCA9IHIuX2lkIHx8IHIuaWQ7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSkgY2hlY2tlZENvdW50Kys7XG4gICAgfSk7XG4gICAgaWYgKGNoZWNrZWRDb3VudCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjaGVja2VkQ291bnQgPT09IGxlYWZSb3dzLmxlbmd0aCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldENlbGxUaXRsZShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcgfCBib29sZWFuIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG4gICAgaWYgKCF0aGlzLmlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkpIHtcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUodmFsLCB0aGlzLmRhdGVGb3JtYXQpO1xuICAgICAgfSBlbHNlIGlmIChjb2w/LmlzX2Ftb3VudCkge1xuICAgICAgICBpZiAoIXZhbCkgcmV0dXJuIGAwLjAwYFxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDdXJyZW5jeS50cmFuc2Zvcm0odmFsLCB0aGlzLmN1cnJlbmN5Rm9ybWF0KTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWw/LnZhbHVlID09PSBudWxsIHx8IHZhbD8udmFsdWUgPT09ICcnKSByZXR1cm4gJy0nO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICB2YWw/LnZhbHVlID8/XG4gICAgICAgIHZhbD8ubmFtZSA/P1xuICAgICAgICB2YWwgPz9cbiAgICAgICAgKGNvbC5pc19hbW91bnQgPyAnMCcgOiAnLScpXG4gICAgICApICsgJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3QgPSB2YWw/LlswXTtcblxuICAgIHJldHVybiAoXG4gICAgICBmaXJzdD8uZGVwYXJ0bWVudF9uYW1lID8/XG4gICAgICBmaXJzdD8ucm9sZU5hbWUgPz9cbiAgICAgIGZpcnN0Py5mdWxsX25hbWUgPz9cbiAgICAgIGZpcnN0Py52YWx1ZSA/P1xuICAgICAgZmlyc3Q/Lm5hbWUgPz9cbiAgICAgICctJ1xuICAgICk7XG4gIH1cblxuXG4gIGZpbmlzaEVkaXQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdjZWxsIGVkaXRlZGRkZGRkZGRkZGRkZGRkOiAnLCBldmVudClcbiAgfVxuXG5cbiAgZ2V0RHluYW1pY1JpZ2h0KGNvbDogYW55LCBzZWN0aW9uOiBzdHJpbmcsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoc2VjdGlvbiA9PSAncmlnaHQnICYmIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucz8ubGVuZ3RoID09IDEgJiYgY29sLndpZHRoIDwgMjAwKSB7XG4gICAgICByZXR1cm4gMTAwO1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbiA9PSAncmlnaHQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2VjdGlvbiA9PSAncHJldmlld0NlbnRlckNvbHVtbnMnICYmIGNvbEluZGV4ID09ICh0aGlzLnByZXZpZXdDZW50ZXJDb2x1bW5zPy5sZW5ndGggLSAxKSAmJiBjb2wud2lkdGggPCAyMDApIHtcbiAgICAgIHJldHVybiAyMDBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbC53aWR0aCAtIDQ1O1xuICAgIH1cbiAgfVxuXG4gIGJsdXJJbnB1dChldmVudDogRXZlbnQsIHJvdzogYW55LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlucHV0Py5ibHVyKCk7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvdywgY29sKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZWRpdGluZ0tleSA9ICcnO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0VmFsaWRBY3Rpb25zKGVsZW1lbnQ6IGFueSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25WYWxpZGF0b3IuZ2V0VmFsaWRBY3Rpb25zKFxuICAgICAgdGhpcy5vcmlnaW5hbEFjdGlvbnMsXG4gICAgICBlbGVtZW50LFxuICAgICAge1xuICAgICAgICB0YWJsZVR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgICBzaG93VW5MaW5rOiB0aGlzLnNob3dVbkxpbmssXG4gICAgICAgIHBhY2thZ2VEYXRhOiB0aGlzLnBhY2thZ2VEYXRhXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICBwcml2YXRlIGlzU3RhdHVzRmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWZpZWxkTmFtZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGxvd2VyRmllbGQgPSBmaWVsZE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbG93ZXJGaWVsZCA9PT0gJ3N0YXR1cycgfHxcbiAgICAgIGxvd2VyRmllbGQuaW5jbHVkZXMoJ3N0YXR1cycpIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnYXZhaWxzdGF0dXMnIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnYWNjb3VudF9zdGF0dXMnIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnaXNfY3VzdG9tX2dyYWRlJztcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZVN0YXR1cyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuY2FwaXRhbGl6ZVN0YXR1cyh2YWx1ZSk7XG4gIH1cblxuXG4gIGdyaWRDb250ZXh0ID0ge1xuICAgIGFwcGx5RmlsdGVyOiAoY29sOiBhbnkpID0+IHRoaXMuYXBwbHlGaWx0ZXJPbkNvbHVtbihjb2wpLFxuICAgIGNsZWFyRmlsdGVyOiAoY29sOiBhbnkpID0+IHRoaXMucmVtb3ZlRmlsdGVyRnJvbUNvbHVtbihjb2wpXG4gIH07XG5cbiAgcHJpdmF0ZSBjbG9zZUFsbEZpbHRlck1lbnVzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEZpbHRlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdCA9XG4gICAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuXG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJzKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJPbkNvbHVtbihjb2w6IGFueSkge1xuICAgIHRoaXMuY2xvc2VBbGxGaWx0ZXJNZW51cygpO1xuICAgIGNvbnN0IGZpbHRlciA9IHtcbiAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICBzZWFyY2g6IGNvbC5zZWFyY2gsXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5LFxuICAgICAgdHlwZTogY29sLnR5cGUsXG4gICAgICBfaWRzOiBjb2wuX2lkc1xuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XG5cbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZ1tleGlzdGluZ0luZGV4XSA9IGZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnB1c2goZmlsdGVyKTtcbiAgICB9XG4gICAgdGhpcy5jb21tb25TZXZpY2UucmVwbGFjZUNvbHVtblF1ZXJ5KHRoaXMuY29sdW1ucywgY29sLCBjb2wucXVlcnkpO1xuICAgIHRoaXMuZW1pdEZpbHRlcnMoKTtcblxuICB9XG5cbiAgcmVtb3ZlRmlsdGVyRnJvbUNvbHVtbihjb2w6IGFueSkge1xuICAgIHRoaXMuY2xvc2VBbGxGaWx0ZXJNZW51cygpO1xuICAgIGNvbnN0IGVtcHR5UXVlcnkgPSB7XG4gICAgICBmaXJzdF9jb25kaXRpb246IG51bGwsXG4gICAgICBmaXJzdF92YWx1ZTogbnVsbCxcbiAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcbiAgICAgIHNlY29uZF92YWx1ZTogbnVsbFxuICAgIH07XG5cbiAgICB0aGlzLmNvbW1vblNldmljZS5yZXBsYWNlQ29sdW1uUXVlcnkodGhpcy5jb2x1bW5zLCBjb2wsIGVtcHR5UXVlcnkpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmVtaXRGaWx0ZXJzKCk7XG4gIH1cblxuICBnZXRGb3JtYXRlZERhdGUodmFsOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZm9ybWF0RGF0ZVZhbHVlKHZhbCwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgfVxuXG4gIGNsb3NlQWxsRXhwYW5kZWRSb3dzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xuICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25LZXlEb3duKFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgIHJvdzogYW55LFxuICAgIGNvbDogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgIT09ICdCYWNrc3BhY2UnKSByZXR1cm47XG5cbiAgICBpZiAoY29sPy5pc19yZXF1aXJlZCA9PT0gdHJ1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG5cbiAgICBpZiAoY3VycmVudFZhbHVlID09IG51bGwgfHwgY3VycmVudFZhbHVlID09PSAnJykgcmV0dXJuO1xuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUocm93LCBjb2wsIG51bGwsIHRydWUpO1xuXG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKFxuICAgICAgcm93Ll9fdmlydHVhbEluZGV4LFxuICAgICAgY29sLmluZGV4LFxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICBnZXREcm9wZG93bkNlbGxUZXh0KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG4gICAgaWYgKHZhbHVlPy52YWx1ZSAhPSBudWxsKSByZXR1cm4gU3RyaW5nKHZhbHVlLnZhbHVlKTtcbiAgICBpZiAodmFsdWU/Lm5hbWUgIT0gbnVsbCkgcmV0dXJuIFN0cmluZyh2YWx1ZS5uYW1lKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICByZXR1cm4gbnVsbDsgLy8gbnVsbCA9IG5vIHNlbGVjdGlvblxuICB9XG5cblxuXG59IiwiPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGgtMTAwXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgKm5nSWY9XCJ0YWJzPy5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIGlkPVwibmF2LXRhYlwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlVGFiKHRhYilcIlxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSB0YWJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRhYiB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtc2VhcmNoXCIgW3N0eWxlLndpZHRoLnB4XT1cIjM1MFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiZW5hYmxlR2xvYmFsU2VhcmNoXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjZ2xvYmFsU2VhcmNoSW5wdXRcbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM2cHhcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoLCB0aGVuIHByZXNzIEVudGVyXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlU2VhcmNoXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkdsb2JhbFNlYXJjaCgpXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXJpZ2h0LXRvcC1hY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9ucz8ubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGFjdGlvbi1idXR0b25zLXJvdyBtcy0yXCJcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvbj8uaGFzX3Blcm1pc3Npb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uLm5hbWUpXCJcbiAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cImkgPT0gYnV0dG9ucy5sZW5ndGggLTFcIlxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBib3JkZXIgYm9yZGVyLXByaW1hcnkgYnRuLWFjdGl2ZS1wcmltYXJ5ICBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICpuZ0lmPVwiYnV0dG9uLmlzX3Nob3dJY29uXCJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYnV0dG9uLmljb24gKyAnLnN2ZydcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICBbY2xhc3MubXMtMF09XCJidXR0b24uaXNfc2hvd0ljb25cIlxuICAgICAgICAgICAgICA+e3sgYnV0dG9uPy5uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBvc2l0aW9uLXJlbGF0aXZlIGFjdGlvbi1idXR0b25zLXJvd1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKClcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGaWx0ZXJzXCJcbiAgICAgID5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgbWUtMiBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPkZpbHRlcnM8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlcmVkQ29sdW1ucz8ubGVuZ3RoXCJcbiAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgd2lkdGg6IDdweDtcbiAgICAgICAgICAgIGhlaWdodDogN3B4O1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzAwMjJmZjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCA2MCwgMjU1KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtbm9uZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdhZHZhbmNlLWZpbHRlcicpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUb3BCdXR0b24gPT09ICdhZHZhbmNlLWZpbHRlcidcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvem9vbS1jaGFyZ2Uuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBhY3Rpb24tYnV0dG9ucy1yb3dcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJyB8fFxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCcgfHxcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJyB8fFxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3Nob3ctaGlkZS1jb2x1bW5zJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8IS0tIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIHRvcC1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuPiAtLT5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NldHRpbmdzLTIuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPlNldHRpbmc8L3NwYW4+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJ1wiXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTEgYWN0aW9ucy1kcm9wZG93bi1zZXR0aW5nXCJcbiAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudVwiPlxuICAgICAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLWxheW91dCcpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3RhYmxlLTIuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgVGFibGUgTGF5b3V0PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2xpc3QtZGV0YWlscy5zdmcnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICBUYWJsZSBQcmVzZXRzPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bW5zIC0tPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1NpZGVNZW51XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlQWN0aW9ucygnc2hvdy1oaWRlLWNvbHVtbnMnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxpZ24taXRlbXMtY2VudGVyIGQtZmxleFwiXG4gICAgICAgICAgICAgICAgPjxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgQ29sdW1uczwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHRcIj57eyBjb2x1bW5zQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEZpbHRlciAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKCk7IGFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICBGaWx0ZXJcbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPCEtLSBEb3dubG9hZCAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENzdignY3N2JylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kb3dubG9hZC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgQ1NWIEV4cG9ydFxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVFeHBvcnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ3hsc3gnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rvd25sb2FkLnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICBFeGNlbCBFeHBvcnRcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgJiBGb250IFNpemUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwYi0yIHB0LTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgLS0+XG4gICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvbnRGYWltbHlcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZm9udCBvZiBmb250RmFtaWxpZXNcIiBbdmFsdWVdPVwiZm9udFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmb250IH19XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cblxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBTaXplIC0tPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIGZvbnRTaXplc1wiIFt2YWx1ZV09XCJzaXplXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNpemUgfX1cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRhYmxlIExheW91dCAtLT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAndGFibGUtbGF5b3V0J1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVMYXlvdXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUYWJsZSBQcmVzZXRzIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAndGFibGUtcHJlc2V0cydcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlUHJlc2V0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3Nob3ctaGlkZS1jb2x1bW5zJ1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd0hpZGVDb2x1bW5zXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucy1yb3dcIiAqbmdJZj1cInNob3dGdWxsU2NyZWVuQnV0dG9uXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCIhaXNGdWxsU2NyZWVuXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgZXhwZW5kIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiXG4gICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcbiAgICAgICAgICBkYXRhLWJzLXBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgdGl0bGU9XCJNaW5pbWlzZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBtaW5BcnJvdzogIWlzRnVsbFNjcmVlbiwgbWF4QXJyb3c6IGlzRnVsbFNjcmVlbiB9XCJcbiAgICAgICAgICBzdHlsZT1cInRyYW5zaXRpb246IGNvbG9yIDAuMnNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXhwZW5kLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAqbmdJZj1cImlzRnVsbFNjcmVlblwiXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IGV4cGVuZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxuICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXG4gICAgICAgICAgZGF0YS1icy1wbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgIHRpdGxlPVwiTWF4aW1pc2VcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgbWluQXJyb3c6ICFpc0Z1bGxTY3JlZW4sIG1heEFycm93OiBpc0Z1bGxTY3JlZW4gfVwiXG4gICAgICAgICAgc3R5bGU9XCJ0cmFuc2l0aW9uOiBjb2xvciAwLjJzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL21pbmltaXplLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPCEtLSBFeGFtcGxlIHNpbmdsZSBkYW5nZXIgYnV0dG9uIC0tPlxuXG4gICAgICAgIDwhLS0gPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkLWZsZXggZ2FwLTIgYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2FjdGlvbnMnKVwiXG4gICAgICAgID5cbiAgICAgICAgICBBY3Rpb25cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9WZWN0b3Iuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2FjdGlvbnMnXCJcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCI+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPkFjdGlvbjwvYT5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+QW5vdGhlciBhY3Rpb248L2E+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPlNvbWV0aGluZyBlbHNlIGhlcmU8L2E+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5TZXBhcmF0ZWQgbGluazwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJzICYmICFzaG93RmlsdGVyUm93XCJcbiAgICBjbGFzcz1cInRvcC1maWx0ZXItcm93IGJvcmRlci10b3AgcHktMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInRvcEZpbHRlclJvd0hlaWdodFwiXG4gID5cbiAgICA8IS0tIExFRlQgU0lERSAoRmlsdGVyIHRhZ3MgKyBGaWx0ZXIgYnV0dG9uKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgYWN0aXZlRmlsdGVyZWRDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIlxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXRhZ3NcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPSAnZmlsdGVyLWNvbHVtbnMnO1xuICAgICAgICAgICAgICBvcGVuRmlsdGVyKGNvbClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdXRlZC10ZXh0IGFkZC1maWx0ZXItYnV0dG9uIGFjdGl2ZS1maWx0ZXJzXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcFwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICAgICAgICBjb2w/LmZpZWxkID09IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5maWVsZCAmJlxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW4gJiZcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09ICdmaWx0ZXItY29sdW1ucydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGFnIG10LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi5zdmcnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlQ29sdW1uRmlsdGVyRnJvbUNvbHVtbihjb2wpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY3Jvc3MtcHJpbWFyeS5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBjcm9zcy1zZWNvbmRhcnkgbXMtMiBtYi0xXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2ZpbHRlci1jb2x1bW5zJyAmJlxuICAgICAgICAgICAgICBjb2w/LmZpZWxkID09IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5maWVsZCAmJlxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW5cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckNvbHVtbnM7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2wgfVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBGaWx0ZXIgQnV0dG9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWx0ZXItYnV0dG9uLW1lbnVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXV0ZWQtdGV4dCBhZGQtZmlsdGVyLWJ1dHRvbiBidXR0b24tZmlsdGVyXCJcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiA3MHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3BsdXMuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTIgZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIEZpbHRlclxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdmaWx0ZXItY29sdW1ucycgJiYgIWlzQWN0aXZlRmlsdGVyT3BlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckNvbHVtbnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUklHSFQgU0lERSAoVXBkYXRlICsgUmVzZXQpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KClcIlxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlciBhbGwtZmlsdGVycy1yZXNldC1idXR0b25cIlxuICAgICAgICAqbmdJZj1cIiFjaGVja0ZpbHRlckNoYW5nZXNFZmZlY3QoKVwiXG4gICAgICA+XG4gICAgICAgIFVwZGF0ZSBWaWV3XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlciBhbGwtZmlsdGVycy1yZXNldC1idXR0b25cIlxuICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXG4gICAgICAgIChjbGljayk9XCJjbGVhckFsbEZpbHRlcnMoKVwiXG4gICAgICA+XG4gICAgICAgIFJlc2V0XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiXG4gICAgICBzaG93RmlsdGVycyA/ICdjYWxjKDEwMCUgLSAnICsgdG9wRmlsdGVyUm93SGVpZ2h0ICsgJ3B4KScgOiAnMTAwJSdcbiAgICBcIlxuICAgIGNka0Ryb3BMaXN0R3JvdXBcbiAgICBjbGFzcz1cImRhdGEtZ3JpZC10YWJsZS13cmFwcGVyIG92ZXJmbG93LWhpZGRlblwiXG4gICAgI2RhdGFHcmlkQ29udGFpbmVyXG4gICAgW3N0eWxlLmZvbnRGYW1pbHldPVwiZm9udEZhaW1seVwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICBpZD1cImRhdGEtZ3JpZC1tYWluLWNvbnRhaW5lclwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInNob3dSb3dzR3JvdXBpbmdcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2x1bW5zXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiXG4gICAgICAgIHRvcEdyb3VwZWRCYWRnZXNCYWNrZ3JvdW5kQ29sb3IgfHwgaGVhZGVyQmFja2dyb3VuZENvbG9yXG4gICAgICBcIlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiZW50ZXJUb1RvcFJvd0dyb3VwaW5nKCRldmVudClcIlxuICAgICAgKGNka0Ryb3BMaXN0RXhpdGVkKT1cImV4aXRlZEZyb21UaGVUb3BSb3coJGV2ZW50KVwiXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcFRvcEdyb3VwKCRldmVudClcIlxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiY2FuRW50ZXJUb1Jvd3NHcm91cGluZ1wiXG4gICAgICBpZD1cInJvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lclwiXG4gICAgICBjbGFzcz1cImJvcmRlci1iZWxvdyBkLWZsZXggcHgtNCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiPlxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IGdyb3Vwc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Hcm91cFJlb3JkZXIoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgW2Nka0RyYWdMb2NrQXhpc109XCIneCdcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBncm91cGVkQ29sdW1ucztcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwZWRDb2x1bW5zLmxlbmd0aCA+IDEgJiYgaSAhPSBncm91cGVkQ29sdW1ucy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XG4gICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIFtzdHlsZS5oZWlnaHRdPVwiXG4gICAgICAgICdjYWxjKDEwMCUgLSAnICtcbiAgICAgICAgKHNob3dSb3dzR3JvdXBpbmdcbiAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCArIGZvb3RlclJvd0hlaWdodFxuICAgICAgICAgIDogZm9vdGVyUm93SGVpZ2h0KSArXG4gICAgICAgICdweCknXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJoLTEwMFwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJcbiAgICAgICAgICAhc2hvd1NpZGVNZW51XG4gICAgICAgICAgICA/ICcxMDAlJ1xuICAgICAgICAgICAgOiBzaWRlTWVudVZpc2libGVcbiAgICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDI4MHB4KSdcbiAgICAgICAgICAgIDogJ2NhbGMoMTAwJSAtIDMwcHgpJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgdHJhbnNpdGlvbiBwb3NpdGlvbi1yZWxhdGl2ZSB3LTEwMFwiPlxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSBEYXRhIEdyaWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXItd3JhcHBlciB3LTEwMFwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJoZWFkZXJUZXh0Rm9udHNTaXplXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwiIWhhc0FueVZpc2libGVDb2x1bW5cIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXG4gICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcbiAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgTGVmdCBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIGxlZnQtcGlubmVkXCJcbiAgICAgICAgICAgICAgI2xlZnRQaW5uZWRIZWFkZXJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGwgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXG4gICAgICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTLk5vXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveGVzXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXG4gICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlU3RhdGUoZGF0YVNldClcIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZChkYXRhU2V0KVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbChkYXRhU2V0KVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgaWQ9XCJsZWZ0LXBpbm5lZC1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImxlZnRQaW5uZWRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdsZWZ0JylcIlxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJcbiAgICAgICAgICAgICAgICAgIG9uU29ydEdyb3VwKCRldmVudCwgJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucycpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAxcHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiBsZWZ0UGlubmVkQ29sdW1ucztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncHJldmlld0xlZnRQaW5uZWRDb2x1bW5zJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xuICAgICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tIERhdGEgR3JpZCBDZW50ZXIgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlciBjZW50ZXItc2Nyb2xsYWJsZVwiXG4gICAgICAgICAgICAgICNjZW50ZXJQaW5uZWRIZWFkZXJcbiAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGlkPVwiY2VudGVyLXBpbm5lZC1oZWFkZXJcIlxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcbiAgICAgICAgICAgICAgICBzaG93Um93c0dyb3VwaW5nID8gWydyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXSA6IFtdXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY2VudGVyQ29sdW1uc1wiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nICYmIGRyYWdnaW5nSW5Hcm91cEFyZWFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAnY2VudGVyJylcIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwib25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld0NlbnRlckNvbHVtbnMnKVwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aF09XCJcbiAgICAgICAgICAgICAgICAnY2FsYygxMDAlIC0gJyArXG4gICAgICAgICAgICAgICAgKHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoICsgbGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCkgK1xuICAgICAgICAgICAgICAgICdweCknXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwZWRDb2x1bW5zPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICNjb2x1bW5zR3JvdXBlZEJveFxuICAgICAgICAgICAgICAgIGlkPVwiZ3JvdXBCb3hIZWFkZXJEaXZcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggdy0xMDAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICBzaG93RmlsdGVyUm93ID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHMtM1wiPkdyb3VwPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgJ2dyb3VwJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplR3JvdXBCb3goJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogLTJweFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItYmVsb3dcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzBweDsgaGVpZ2h0OiAxMDAlXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyaWRUeXBlID09PSAnQXNzZXRzJyB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJ1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sKTtcbiAgICAgICAgICAgICAgICAgIGRyYWdTdGFydE9uR3JvdXAoY29sKTtcbiAgICAgICAgICAgICAgICAgIG9uRHJhZ1N0YXJ0ZWQoY29sKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJvbkRyYWdNb3ZlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZGVkKClcIlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgY2VudGVyQ29sdW1ucztcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdwcmV2aWV3Q2VudGVyQ29sdW1ucydcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzT3V0c2lkZUNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdnaW5nSW5Hcm91cEFyZWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZycpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3V0c2lkZUNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUtY3Jvc3Muc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyQ29sdW1ucydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmICFpc091dHNpZGVDb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkPy5pc19ncm91cGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVDb2w+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uaXNfZ3JvdXBhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIFJpZ2h0IFBpbm5lZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgIGlkPVwicmlnaHQtcGlubmVkLWhlYWRlclwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxuICAgICAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgcmlnaHQtcGlubmVkXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIlxuICAgICAgICAgICAgICAgIG9uU29ydEdyb3VwKCRldmVudCwgJ3ByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdyaWdodCcpXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cCgpXCJcbiAgICAgICAgICAgICAgI3JpZ2h0UGlubmVkSGVhZGVyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtcGlubmVkLWhlYWRlciBkLWZsZXhcIlxuICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMC4ycHhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgcmlnaHRQaW5uZWRDb2x1bW5zO1xuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgcGlubmVkUmlnaHQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVDb2w+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBCb2R5IHN0YXJ0cyBoZXJlIC0tPlxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAqbmdJZj1cIiFkYXRhU2V0Py5sZW5ndGggJiYgIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3JlY29yZC1ub3QtZm91bmQuc3ZnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgPjwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxkaXY+Tm8gUmVjb3JkIEZvdW5kPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBsb2FkaW5nLW92ZXJsYXlcIlxuICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nIHx8IGRhdGFTZXRMb2FkaW5nXCJcbiAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgIHotaW5kZXg6IDk5OTtcbiAgICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDFweCk7XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibG9hZGVyXCI+PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+IC0tPlxuICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keS13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImJvZHlXcmFwcGVySGVpZ2h0XCJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogYXV0bzsgb3ZlcmZsb3cteDogaGlkZGVuXCJcbiAgICAgICAgICAgICNtYWluU2Nyb2xsXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpblNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJ2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIExFRlQgUElOTkVEIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICAgICFncm91cGVkQ29sdW1ucy5sZW5ndGggPyBvcmlnaW5hbERhdGFTZXQubGVuZ3RoICogcm93SGVpZ2h0IDogMFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8PSA0XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGxlZnQtcGlubmVkLWJvZHkgdy0xMDBcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cImhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudHJhbnNwYXJlbnQtYm9yZGVyLXJpZ2h0XT1cIiFoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDw9IDRcIlxuICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIlxuXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdyBvZiB2aXNpYmxlUm93cztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBfX3ZpcnR1YWxJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQ0VOVEVSIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImgtMTAwXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5jbGllbnRXaWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGNlbnRlci1zY3JvbGxhYmxlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8PSA0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlbjsgb3ZlcmZsb3cteDogYXV0b1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICNjZW50ZXJTY3JvbGxhYmxlQm9keVxuICAgICAgICAgICAgICAgIChzY3JvbGwpPVwib25DZW50ZXJCb2R5U2Nyb2xsKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwiaGFzTGVmdFBpbm5lZENvbHVtbnMgPyBsZWZ0UGlubmVkQm94c2hhZG93OiAnbm9uZSdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdDZW50ZXJDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3RhbEFtb3VudFJvdyAmJiBvcmlnaW5hbERhdGFTZXQ/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3Q2VudGVyQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gUklHSFQgUElOTkVEIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInJpZ2h0LXBpbm5lZC1ib2R5LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1JpZ2h0UGlubmVkQ29sdW1uc1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDw9IDRcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiXG4gICAgICAgICAgICAgICAgaXNTY3JvbGxiYXJWaXNpYmxlXG4gICAgICAgICAgICAgICAgICA/IHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTVcbiAgICAgICAgICAgICAgICAgIDogcmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyaWdodFBpbm5lZEJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IHJpZ2h0LXBpbm5lZC1ib2R5IHctMTAwIGgtMTAwXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm94U2hhZG93XT1cImhhc1JpZ2h0UGlubmVkQ29sdW1ucyA/IHJpZ2h0UGlubmVkQm94c2hhZG93OiAnbm9uZSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICBbQHJvd0R5bmFtaWNdPVwicm93QW5pbWF0aW9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IGF1dG87IGxlZnQ6IGF1dG9cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5JbWFnZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICAgIGRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIChmb290ZXJSb3dIZWlnaHQgKyAxMDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2UtbW9kYWwgZnVsbC1pbWFnZS1tb2RhbFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZnVsbHNjcmVlbkltYWdlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZnVsbHNjcmVlbkltYWdlXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJGdWxsc2NyZWVuIEltYWdlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkUm93cy5zaXplID4gMCAmJiBzaG93VGFza2JhclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGFza2JhciB3LTEwMFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1yb3dzLWFjdGlvbi1iYXJcIiBbQHNsaWRlVXBdPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtY291bnRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkUm93cy5zaXplIH19IHNlbGVjdGVkIG9mXG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz8ucGFnaW5hdGlvblBhcmFtcz8udG90YWxJdGVtc1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIFRvdGFsXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFza2JhckFjdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uPy5oYXNfcGVybWlzc2lvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idG4gdmVyaWZpZWQgYnRuIHt7IGFjdGlvbiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25WZXJpZnlDbGljayhhY3Rpb24/LmFjdGlvbk5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBhY3Rpb24/LmFjdGlvbk5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tiYXJBY3Rpb25zLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPT0gdGFza2JhckFjdGlvbnMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9uc1tpICsgMV0/Lmhhc19wZXJtaXNzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPnw8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhclNlbGVjdGlvblN0YXRlKHRhYmxlVHlwZSk7c2VsZWN0ZWRSb3dzLmNsZWFyKCk7XCIgY2xhc3M9XCJjbGVhci1idG4gbXMtMiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmkteC1jaXJjbGVcIj48L2k+IENsZWFyIFNlbGVjdGlvblxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBWZXJ0aWNhbCBGYWtlIHNjcm9sbCBCYXIgLS0+XG4gICAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpbkZha2VTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2Utc2Nyb2xsYmFyIGZha2Utc2Nyb2xsYmFyLXZlcnRpY2FsIGQtbm9uZVwiXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcbiAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxuICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICAgICAgICB3aWR0aDogMTdweDtcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZjFmMmYzO1xuICAgICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAqIGRhdGFTZXRMZW5ndGhcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gSG9yaXppbnRhbCBGYWtlIFNjcm9sbGJhcnMgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgKm5nSWY9XCJoYXNTY3JvbGwgJiYgIXNob3VsZFJlc3RvcmVTY3JvbGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteDogc2Nyb2xsXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1ob3JpemludGFsLXNjcm9sbGJhclwiXG4gICAgICAgICAgICAjaG9yaXppbnRhbEZha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxXaWR0aCAtIDEwXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNpZGUgTWVudSBJbXBsZW1lbnRlZCBIZXJlIC0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNob3dTaWRlTWVudVwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaWRlTWVudVZpc2libGUgPyAyODAgOiAzMFwiXG4gICAgICAgIGNsYXNzPVwicmlnaHQtbWVudSBoLTEwMFwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwic2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgZC1mbGV4IGZsZXgtcm93LXJldmVyc2VcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAzMHB4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXN0YXJ0XT1cInNpZGVNZW51VmlzaWJsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2NvbHMnKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1mZmZdPVwiXG4gICAgICAgICAgICAgICAgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5zLWJ1dHRvbiBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdWktY2hlY2tzLWdyaWQuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnVlLXRleHRcIj5Db2x1bW5zPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2ZpbHRycycpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWZmZl09XCJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnICYmIHNpZGVNZW51VmlzaWJsZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cIlxuICAgICAgICAgICAgICAgIHNpZGVNZW51VmlzaWJsZSAmJiBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51ZS10ZXh0XCI+RmlsdGVyPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImgtMTAwXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IHNpZGVNZW51VmlzaWJsZSA/ICcyNTBweCcgOiAnJyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8IS0tIENvbHVtbiBJdGVtcyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWJvZHkgcHgtM1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGhyIC8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51LXJvdy1ncm91cHNcIiBzdHlsZT1cImhlaWdodDogMzAlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU1lbnVSb3dHcm91cHNcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJyAmJiBzaWRlTWVudVZpc2libGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVGaWx0ZXJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJmb290ZXJSb3dIZWlnaHRcIlxuICAgICAgY2xhc3M9XCJib3JkZXItdG9wXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZm9vdGVyUm93QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICpuZ0lmPVwicGFnaW5hdGlvbkNvbmZpZ1wiXG4gICAgPlxuICAgICAgPCEtLSBSb3dzOiA8c3BhbiBjbGFzcz1cImZ3LTUwMCBtcy0xXCI+e3sgZGF0YVNldC5sZW5ndGggfX08L3NwYW4+IC0tPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImZvb3RlclJvd0hlaWdodFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLnB4XT1cImZvb3RlclBhZGRpbmdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zaXplXCI+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uc1wiIFt2YWx1ZV09XCJzaXplXCI+XG4gICAgICAgICAgICAgIHt7IHNpemUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+IHBlciBwYWdlIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtaW5mb1wiPlxuICAgICAgICAgIFJlc3VsdHM6XG4gICAgICAgICAge3sgKHBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfX0te3tcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcucGFnZSAqIHBhZ2luYXRpb25Db25maWcubGltaXQgPFxuICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcbiAgICAgICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XG4gICAgICAgICAgICAgIDogcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9mXG4gICAgICAgICAge3sgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtYnV0dG9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSAxXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDigLlcbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdmlzaWJsZVBhZ2VzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwicGFnZSAhPT0gJy4uLidcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInBhZ2UgPT09IHBhZ2luYXRpb25Db25maWcucGFnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHBhZ2UgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWdlID09PSAnLi4uJ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAg4oC6XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG48IS0tIEhlYWRlciBDZWxsIFRlbXBsYXRlIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cblxuPG5nLXRlbXBsYXRlXG4gICNoZWFkZXJDZWxsXG4gIGxldC1jb2xcbiAgbGV0LXBpbm5lZFJpZ2h0PVwicGlubmVkUmlnaHRcIlxuICBsZXQtaT1cImluZGV4XCJcbiAgbGV0LWNvbHVtbkluZGV4PVwiaW5kZXhcIlxuICBsZXQtc2VjdGlvbnM9XCJzZWN0aW9uXCJcbiAgbGV0LWNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcj1cImNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlclwiXG4+XG4gIDxkaXY+XG4gICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoID4gMDsgZWxzZSBmbGF0SGVhZGVyXCI+XG4gICAgICA8ZGl2IGNka0Ryb3BsaXN0R3JvdXAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiPlxuICAgICAgICA8IS0tIFBhcmVudCBIZWFkZXIgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhjb2wpXCJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGdyb3VwLWhlYWRlclwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgW3N0eWxlLmdyaWRDb2x1bW5dPVwiJ3NwYW4gJyArIGNvbC5jaGlsZHJlbi5sZW5ndGhcIlxuICAgICAgICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWVuZF09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMVwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZS1oZWFkZXJdPVwiY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDb2x1bW5JbmRpY2VzLmluY2x1ZGVzKGNvbD8uaW5kZXgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaGVhZGVyLWNvbnRlbnRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgICAgW2NsYXNzLm1zLTJdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGNvbC5jaGlsZHJlbilcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUdyb3VwKCRldmVudCwgY29sLCBwaW5uZWRSaWdodClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ2hpbGQgSGVhZGVycyBhbmQgRmlsdGVycyAtLT5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sLmNoaWxkcmVuXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwib25DaGlsZERyb3BsaXN0U29ydGVkKCRldmVudCwgc2VjdGlvbnMpXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uQ2hpbGREcm9wbGlzdERyb3BlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxuICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY2hpbGRcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBDaGlsZCBIZWFkZXIgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNfdmlzaWJsZSAmJiAhY2hpbGRbJ2lzUm93R3JvdXBlZCddXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxscyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNoaWxkLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWQtb24tdGV4dF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjaGlsZClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmUtaGVhZGVyXT1cImNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ29sdW1uSW5kaWNlcy5pbmNsdWRlcyhjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVkaXRhYmxlLWhlYWRlcl09XCJjaGlsZD8uaXNfZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY2hpbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLmhlYWRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLnBpbm5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gT25seSBzaG93IG1lbnUgaWYgdGhpcyBjb2x1bW4gaXMgYWN0aXZlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVDb2wgPT09IGNoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSghY2hpbGQ/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmVzdGVkVGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZENvbEluZGV4OiBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNoaWxkKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNoaWxkLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hpbGQuZmlsdGVyVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZShjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICAocGFzdGUpPVwib25GaWx0ZXJDaGFuZ2UoY2hpbGQpOyBhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjaGlsZD8udHlwZSA9PSAnaW1hZ2UnIHx8IGNoaWxkPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZScgfHwgY2hpbGQ/LnR5cGUgPT0gJ2FycmF5J1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNoaWxkKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJ1wiXG4gICAgICAgICAgICAgICAgICAgID48c3BhblxuICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDdweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogN3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwIDE2MyAyMzMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW5cbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmaWx0ZXItcm93LWZpbHRlci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsPy5maWVsZCA9PSBjaGlsZD8uZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnBpbm5lZCA/IDAgOiAtY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnRcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgIWRyYWdnaW5nSW5Hcm91cEFyZWEgfHxcbiAgICAgICAgICAgICAgICAgICAgKGNoaWxkLmlzX2dyb3VwYWJsZSAmJiBkcmFnZ2luZ0luR3JvdXBBcmVhKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWNoaWxkLmlzX2dyb3VwYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9iYW4uc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGNoaWxkSGVhZGVyUGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgY2hpbGQ/LmlzX2dyb3VwYWJsZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFJpZ2h0OiBwaW5uZWRSaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmxhdCBIZWFkZXIgfHwgU2luZ2xlIEhlYWRlciBDZWxsLS0+XG4gICAgPG5nLXRlbXBsYXRlICNmbGF0SGVhZGVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImdyb3VwLWNvbHVtbi13cmFwcGVyXCJcbiAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZSAmJiAhY29sWydpc1Jvd0dyb3VwZWQnXVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gRnVsbC1oZWlnaHQgSGVhZGVyIENlbGwgKHNwYW5zIDIgcm93cyB2aXN1YWxseSkgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzXCJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxIC8gc3BhbiAyXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlLWhlYWRlcl09XCJjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENvbHVtbkluZGljZXMuaW5jbHVkZXMoY29sLmluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdGFibGUtaGVhZGVyXT1cImNvbD8uaXNfZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkLW9uLXRleHRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKTtcbiAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJjb2wub3JkZXJfYnlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8uZmllbGQgPT0gY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8IS0tIEFzY2VuZGluZyBTb3J0IEljb24gLS0+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREZXNjKGNvbClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIERlc2NlbmRpbmcgU29ydCBJY29uIC0tPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYydcIlxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtZGVzYy5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRBc2MoY29sKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbCk7XG4gICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICAtKCFjb2w/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cbiAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb2xJbmRleDogMFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cImNvbC5waW5uZWQgPT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY29sKVwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxuICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplQ29sdW1uKCRldmVudCwgY29sKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBGaWx0ZXIgQ2VsbCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuZmlsdGVyVmFsdWVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoY29sKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcbiAgICAgICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZUluRmlsdGVyUm93U2VhcmNoKCRldmVudCwgY29sKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5GaWx0ZXIoY29sKVwiXG4gICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXG4gICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxuICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgIHdpZHRoOiA3cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCAxNjMgMjMzKTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICAgICAgICB0b3A6IDEycHg7XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICA+PC9zcGFuXG4gICAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlckNlbGwgPT09IGNvbFwiXG4gICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbD8ucGlubmVkID8gMCA6IC1jZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gQm9keSBDZWxsIFRlbXBsYXRlIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG5cbjxuZy10ZW1wbGF0ZVxuICAjcm93Q2VsbFxuICBsZXQtcm93XG4gIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXG4gIGxldC1pc0V2ZW49XCJpc0V2ZW5cIlxuICBsZXQtaXNPZGQ9XCJpc09kZFwiXG4gIGxldC1pc0xlZnRTZWN0aW9uPVwiaXNMZWZ0XCJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxuPlxuICA8IS0tIENoZWNrIGlmIHJvdyBpcyBhIGdyb3VwIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFJvd1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBkZXB0aDogMCB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2dyb3VwUm93VGVtcGxhdGUgbGV0LXJvdyBsZXQtZGVwdGg9XCJkZXB0aFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuaXNHcm91cDsgZWxzZSByZWd1bGFyUm93XCI+XG4gICAgICA8IS0tIEdyb3VwIEhlYWRlciAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJncm91cC1oZWFkZXItcm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2VjdGlvbiAhPT0gJ2NlbnRlcidcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PT0gJ2NlbnRlcidcbiAgICAgICAgICAgID8gKGNlbnRlclNjcm9sbGFibGVCb2R5Py5zY3JvbGxXaWR0aCA/PyAwKSArICdweCdcbiAgICAgICAgICAgIDogJzEwMCUnXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ2xlZnQnXCJcbiAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxXCJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTBweFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0IGp1c3RpZnktY29udGVudC1lbmQgcGUtMiBzLW5vXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxuICAgICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcbiAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSwgYXV0bydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cIm9uUm93TW91c2VPdmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY2hlY2tib3hlc0NvbG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBnZXRTdGFydEluZGV4KCkgKyAocm93Ll9fdmlydHVhbEluZGV4IC0gMSkgfHwgXCJcIiB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveGVzXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDUwcHhcIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxuICAgICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldEdyb3VwQ2hlY2tlZFN0YXRlKHJvdykgPT09IHRydWVcIlxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJnZXRHcm91cENoZWNrZWRTdGF0ZShyb3cpID09PSB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEdyb3VwUm93KCRldmVudCwgcm93KVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ2NlbnRlcidcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwcy0yIGgtMTAwIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCJkZXB0aCA+IDAgPyBkZXB0aCAqIDMwIDogMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGZpbHRlci1pY29uLXdyYXBwZXJcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKHJvdylcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBhbGlnbi1pdGVtcy1jZW50ZXIgZC1mbGV4XCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgcm93LmlzRXhwYW5kXG4gICAgICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKHJvdylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgIHt7IHJvdy5ncm91cFZhbHVlIH19ICh7eyBjb3VudExlYWZSb3dzKHJvdykgfX0pXG4gICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAncmlnaHQnXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gUmVjdXJzaXZlIENoaWxkcmVuIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWNoaWxkcmVuXCIgKm5nSWY9XCJyb3cuaXNFeHBhbmRcIiBbQHNsaWRlVG9nZ2xlXT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiByb3cuY2hpbGRyZW47IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNHcm91cDsgZWxzZSBkYXRhUm93XCI+XG4gICAgICAgICAgICA8IS0tIFJlY3Vyc2l2ZSBjYWxsIGZvciBuZXN0ZWQgZ3JvdXAgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgZ3JvdXBSb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGRlcHRoOiBkZXB0aCArIDEgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRhUm93PlxuICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRhdGEgcm93IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICBpc0V2ZW46IGkgJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgaXNPZGQ6IGkgJSAyICE9PSAwLFxuICAgICAgICAgICAgICAgICAgaXNMZWZ0OiBpc0xlZnRTZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIFJlZ3VsYXIgcm93IChub3QgYSBncm91cCkgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjcmVndWxhclJvdz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDMwcHg7IGhlaWdodDogMTAwJVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiAoZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnKVxuICAgICAgICBcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbFJvd0V4cGFuZChyb3cpXCJcbiAgICAgICAgICAqbmdJZj1cInJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZmlsdGVyLWljb24td3JhcHBlclwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiBncm91cGVkQ29sdW1ucz8ubGVuZ3RoID8gZ3JvdXBCb3hQYWRkaW5nIDogMFxuICAgICAgICBcIlxuICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXJvdyBoLTEwMFwiXG4gICAgICAgIFtjbGFzcy5ldmVuLXJvd109XCJpc0V2ZW5cIlxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXG4gICAgICAgIFtjbGFzcy5ob3ZlcmVkLXJvd109XCJob3ZlcmVkUm93SWQgPT09IChyb3cuX2lkIHx8IHJvdy5pZClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd0hvdmVyKHJvdylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcbiAgICAgID48L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXJvd1wiXG4gICAgICAgIFtjbGFzcy5ldmVuLXJvd109XCJpc0V2ZW5cIlxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXG4gICAgICAgIFtjbGFzcy5ob3ZlcmVkLXJvd109XCJob3ZlcmVkUm93SWQgPT09IChyb3cuX2lkIHx8IHJvdy5pZClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd0hvdmVyKHJvdylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBlLTIgcy1ub1wiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd1NlcmlhbE51bWJlclwiXG4gICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcbiAgICAgICAgICAgICd1cmwoJyArXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSwgYXV0bydcbiAgICAgICAgICBcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24ocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgICAobW91c2VvdmVyKT1cIm9uUm93TW91c2VPdmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRTdGFydEluZGV4KCkgKyAocm93Ll9fdmlydHVhbEluZGV4IC0gMSkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxuICAgICAgICAgICAgcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWRSb3dzQmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICAgIDogY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclxuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGxcIlxuICAgICAgICAgICpuZ0lmPVwiaXNMZWZ0U2VjdGlvbiAmJiBzaG93Q2hlY2tib3hlc1wiXG4gICAgICAgICAgW2NsYXNzLmxlZnQtc2VsZWN0aW9uLWJvcmRlcl09XCJcbiAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxXCJcbiAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiXG4gICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4XCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTZWxlY3Rpb24ocm93KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBSZW5kZXIgYWxsIGNvbHVtbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucztcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcbiAgICAgICAgICAgIGxldCBjb2xJbmRleCA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aCA+IDA7IGVsc2UgZmxhdENvbHVtblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcbiAgICAgICAgICAgICAgICBsZXQgc3ViQ29sSW5kZXggPSBpbmRleFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQ/LmlzX3Zpc2libGUgJiYgIWNoaWxkPy5pc1Jvd0dyb3VwZWRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBjZWxsVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc3ViQ29sSW5kZXg6IHN1YkNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdENvbHVtbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgY29sSW5kZXg6IGNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbQHNsaWRlVG9nZ2xlXVxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAnbGVmdCcgJiYgaXNEZXRhaWxzRXhwYW5kZWQocm93KVwiXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcbiAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzUwcHg7IG92ZXJmbG93OiBoaWRkZW5cIlxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJoYXNIb3Jpem9udGFsU2Nyb2xsID8gMzM5IDogMzQxXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XG4gICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIFtAc2xpZGVUb2dnbGVdXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdjZW50ZXInICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlscyBjZW50ZXItc2VjdGlvblwiXG4gICAgICBzdHlsZT1cIlxuICAgICAgICBtYXgtaGVpZ2h0OiAzNTBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICBcIlxuICAgICAgI25lc3RlZFRhYmxlXG4gICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgIGhhc1JpZ2h0UGlubmVkQ29sdW1uc1xuICAgICAgICAgID8gJzEwMCUnXG4gICAgICAgICAgOiBoYXNWZXJ0aWNhbFNjcm9sbFxuICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDEycHgpJ1xuICAgICAgICAgIDogJzEwMCUnXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuZXN0ZWRUYWJsZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkVHlwZSA9PSAnVGFza3MnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgdGFza01hbmFnZW1lbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFza0RldGFpbHM6IHJvdyB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbQHNsaWRlVG9nZ2xlXVxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAncmlnaHQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlsc1wiXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGxlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyO1xuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEFjdHVhbCBDZWxsIGlzIEhlcmUgLS0+XG48bmctdGVtcGxhdGVcbiAgI2NlbGxUZW1wbGF0ZVxuICBsZXQtY29sPVwiY29sXCJcbiAgbGV0LXJvdz1cInJvd1wiXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXG4gIGxldC1zdWJDb2xJbmRleD1cInN1YkNvbEluZGV4XCJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICBsZXQtY29sSW5kZXg9XCJjb2xJbmRleFwiXG4gIGxldC1pc1RvdGFsUm93PVwiaXNUb3RhbFJvd1wiXG4+XG4gIDxkaXZcbiAgICAjY2VsbENvbnRhaW5lclxuICAgIChjbGljayk9XCJyb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTsgZWRpdGluZ0tleSA9ICcnOyBjZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleCk7IGNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpXCJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJib2R5Rm9udFdlaWdodFwiXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgIGNsYXNzPVwiY2VsbCBvdmVyZmxvdy12aXNpYmxlIHBvc2l0aW9uLXJlbGF0aXZlIGRhdGEtZ3JpZC1jZWxsXCJcbiAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgIFthdHRyLmxvY2F0aW9uXT1cInJvdy5fX3ZpcnR1YWxJbmRleCArICctJyArIGNvbC5pbmRleFwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXG4gICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcbiAgICBbY2xhc3MuYWN0aXZlLWNlbGxdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPD0gMSAmJiAgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNBY3RpdmVDZWxsKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleCkgJiYgIWlzRWRpdGluZyhyb3csIGNvbClcIlxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBlbmFibGVFZGl0KHJvdywgY29sLCBmYWxzZSwgY2VsbENvbnRhaW5lcilcIlxuICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZW5hYmxlRWRpdChyb3csIGNvbClcIlxuICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1NlbGVjdGVkKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy50b3AtYm9yZGVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1RvcEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICBbY2xhc3MuYm90dG9tLWJvcmRlcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNCb3R0b21Cb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLmxlZnQtYm9yZGVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc0xlZnRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLnJpZ2h0LWJvcmRlcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNSaWdodEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICBbY2xhc3MudG9wLWxlZnQtY29ybmVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1RvcExlZnRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLnRvcC1yaWdodC1jb3JuZXJdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPiAxICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLmlzVG9wUmlnaHRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLmJvdHRvbS1sZWZ0LWNvcm5lcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNCb3R0b21MZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy5ib3R0b20tcmlnaHQtY29ybmVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc0JvdHRvbVJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIChtb3VzZWRvd24pPVwiY2VsbFNlbGVjdGlvblNlcnZpY2Uuc3RhcnRTZWxlY3Rpb24ocm93LCBjb2wsIHN1YkNvbEluZGV4LCAkZXZlbnQpOyBjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAobW91c2VlbnRlcik9XCJjZWxsU2VsZWN0aW9uU2VydmljZS5leHRlbmRTZWxlY3Rpb24ocm93LCBjb2wsIHN1YkNvbEluZGV4LCAkZXZlbnQpOyBjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAobW91c2V1cCk9XCJjZWxsU2VsZWN0aW9uU2VydmljZS5lbmRTZWxlY3Rpb24oKTsgY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgXG4+XG5cbiAgICA8IS0tICAobW91c2Vkb3duKT1cInN0YXJ0U2VsZWN0aW9uKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZCwgJGV2ZW50KVwiXG4gIChtb3VzZWVudGVyKT1cImV4dGVuZFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxuICAobW91c2V1cCk9XCJlbmRTZWxlY3Rpb24oKVwiXG4gIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cImlzU2VsZWN0ZWQocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZClcIiAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRhYmxlLWNlbGxcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1mb3ItZWRpdGluZ109XCJcbiAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxuICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwIHx8IGNvbC50eXBlID09ICdpbWFnZScpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxuICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHwgY29sLnR5cGUgPT0gJ2ltYWdlJyB8fFxuICAgICAgICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPD0gNTAgJiZcbiAgICAgICAgICAgICAgICAhZXhwYW5kZWRDZWxscy5zaXplKSk7XG4gICAgICAgICAgZWxzZSB2aWV3TW9kZVxuICAgICAgICBcIlxuICAgICAgPlxuXG4gICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jZWxsRWRpdG9yOyBlbHNlIGJ1aWx0SW5FZGl0b3JzXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbY2VsbEVkaXRvcl09XCJjb2wuY2VsbEVkaXRvclwiXG4gICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93XCJcbiAgICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgICAgICAoZWRpdG9yRXZlbnQpPVwiZmluaXNoRWRpdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNidWlsdEluRWRpdG9ycz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sPy50eXBlXCI+XG4gICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0J1wiXG4gICAgICAgICAgICAjZGF0ZUlucHV0PVwibmdNb2RlbFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgZGF0ZUlucHV0KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBkYXRlSW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBkYXRlSW5wdXQpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPCEtLSBOdW1iZXIgSW5wdXQgLS0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICNudW1iZXJJbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgI251bWJlclJlZlxuICAgICAgICAgICAgKGtleXByZXNzKT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBudW1iZXJJbnB1dClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBudW1iZXJJbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIG51bWJlcklucHV0KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz4gIFxuXG4gICAgICAgICAgPCEtLSBEYXRlIElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIlxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGRhdGVJbnB1dClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGRhdGVJbnB1dClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgI2RhdGVJbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYmx1cklucHV0KCRldmVudCwgcm93LCBjb2wpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBkYXRlSW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBkYXRlSW5wdXQpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8IS0tIERhdGUgSW5wdXQgLS0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiXG4gICAgICAgICAgICB0eXBlPVwidGltZVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGltZUlucHV0KVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAjdGltZUlucHV0PVwibmdNb2RlbFwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHRpbWVJbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIHRpbWVJbnB1dClcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCIgY2xhc3M9XCJ3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gOFwiIFtzdHlsZS50ZXh0LWFsaWduXT1cIidsZWZ0J1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIlxuICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiMjBcIlxuICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjIwXCJcbiAgICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCIyMFwiXG4gICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT09IHRydWUgfHwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09PSAndHJ1ZSdcIlxuICAgICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGJvb2xlYW5JbnB1dClcIlxuICAgICAgICAgICAgICAgI2Jvb2xlYW5JbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGJvb2xlYW5JbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIGJvb2xlYW5JbnB1dClcbiAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgIDwhLS0gSW1hZ2UgVXBsb2FkIC0tPlxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZSdcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGFuZ2UoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAqbmdJZj1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAgIFtzcmNdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgICAgYWx0PVwicHJldmlld1wiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMzJcIlxuICAgICAgICAgICAgICBoZWlnaHQ9XCIzMlwiXG4gICAgICAgICAgICAgIHN0eWxlPVwib2JqZWN0LWZpdDogY292ZXI7IGJvcmRlci1yYWRpdXM6IDRweFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cbiAgICAgICAgICA8IS0tIG5nLXNlbGVjdCBsaWtlIGRyb3Bkb3duIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gdy0xMDBcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFRyaWdnZXIgLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gdGV4dC1zdGFydCB3LTEwMCB0ZXh0LWVsbGlwc2lzIGRyb3Bkb3duLWVkaXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgICAgZGF0YS1icy1kaXNwbGF5PVwic3RhdGljXCJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkRyb3Bkb3duS2V5RG93bigkZXZlbnQsIHJvdywgY29sKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXREcm9wZG93bkNlbGxUZXh0KHJvdywgY29sKTsgZWxzZSBwbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIHt7IGdldERyb3Bkb3duQ2VsbFRleHQocm93LCBjb2wpIH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1wbGFjZWhvbGRlclwiPlNlbGVjdCBhbiBvcHRpb24uLi48L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSB3LTEwMCBwLTAgY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUgcm91bmRlZC0zXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0gU2VhcmNoIC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0xIGVkaXRpbmctZHJvcGRvd24tc2VhcmNoLWlucHV0XCIgKm5nSWY9XCJjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID4gNVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluRHJvcGRvd25TZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFxuICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzVcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHwgZmlsdGVyOiBlZGl0aW5Ecm9wZG93blNlYXJjaCA6ICd2YWx1ZScpIGFzIGZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPCEtLSBEcm9wZG93biBJdGVtcyAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uPy52YWx1ZSB8fCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0yIHB5LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBkcm9wZG93bi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE5lc3RlZFZhbHVlKHJvdywgY29sLCBvcHRpb24sIHRydWUpOyBlZGl0aW5nS2V5ID0gbnVsbDsgZm9jdXNBZnRlclZhbHVlU2VsZWN0KHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNvbC5maWVsZCArICctJyArIChvcHRpb24udmFsdWUgfHwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IHdoZW4gbm8gZmlsdGVyZWQgcmVzdWx0cyAtLT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnM/Lmxlbmd0aFwiIGNsYXNzPVwicHgtMiBweS0xIGQtYmxvY2sgdGV4dC1jZW50ZXJcIj5ObyBSZWNvcmQgRm91bmQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvciBBcnJheSB0eXBlIHZhbHVlcyAtLT5cblxuICAgICAgICAgIDwhLS0gTVVMVEkgU0VMRUNUIChBUlJBWSkgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidhcnJheSdcIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biB3LTEwMFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25BcnJheUJsdXIocm93LCBjb2wpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNvbW1pdEFycmF5KHJvdywgY29sKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBUcmlnZ2VyIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSB0ZXh0LXN0YXJ0IHctMTAwIHRleHQtZWxsaXBzaXNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgIGRhdGEtYnMtZGlzcGxheT1cInN0YXRpY1wiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRBcnJheVRlbXAocm93LCBjb2wpLmxlbmd0aDsgZWxzZSBhcnJheVBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkaXNwbGF5QXJyYXlMYWJlbHMocm93LCBjb2wpIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FycmF5UGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgU2VsZWN0IG9wdGlvbnMuLi5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSB3LTEwMCBwLTAgY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUgcm91bmRlZC0zXCIgW2NsYXNzLmludmlzaWJsZV09XCIhbWVudVJlYWR5XCIgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxuICAgICAgICAgICAgICA8IS0tIFNlYXJjaCAtLT5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGggPiA1XCIgY2xhc3M9XCJweC0yIHB5LTEgYXJyYXktc2VhcmNoLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5Ecm9wZG93blNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBPcHRpb25zIC0tPlxuICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMzVcIiBzdHlsZT1cImhlaWdodDogMTIwcHhcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgfCBmaWx0ZXI6IGVkaXRpbkRyb3Bkb3duU2VhcmNoIDogJ3ZhbHVlJykgYXMgZmlsdGVyZWRPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcHgtMiBweS0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbS0wIG1lLTJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQXJyYXlTZWxlY3RlZChyb3csIGNvbCwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBcnJheVRlbXAocm93LCBjb2wsIG9wdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgY29tbWl0QXJyYXkocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IG1heC13aWR0aDogMTZweDsgbWF4LWhlaWdodDogMTZweFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbj8udmFsdWUgfHwgb3B0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IHdoZW4gZmlsdGVyZWQgbGlzdCBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnM/Lmxlbmd0aFwiIGNsYXNzPVwicHgtMiBweS0xIGQtYmxvY2sgdGV4dC1jZW50ZXJcIj5ObyBSZWNvcmQgRm91bmQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidlbWFpbCdcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgICNlbWFpbE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAjZW1haWxJbnB1dFxuICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgcGF0dGVybj1cIl5bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSRcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGVtYWlsTW9kZWwpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImJsdXJJbnB1dCgkZXZlbnQsIHJvdywgY29sKVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZW1haWxNb2RlbC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIGVtYWlsTW9kZWwpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDwhLS0gRGVmYXVsdCBmYWxsYmFjayAtLT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ1N3aXRjaERlZmF1bHRcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAjdGV4dElucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgbmFtZT1cInt7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGV4dE1vZGVsKVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWQgfHwgIWlzVmFsdWVWYWxpZChyb3csIGNvbCwgdGV4dE1vZGVsKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEaXNwbGF5IG1vZGUgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI3ZpZXdNb2RlPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzZXMoY29sLCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gRmllbGQgaWNvbiAoZm9yIFRhc2tzIGdyaWQpIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdUYXNrcycgJiYgaWNvbk1hcFtjb2wuZmllbGRdICYmICFpc1RvdGFsUm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1lLTJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiaWNvbk1hcFtjb2wuZmllbGRdKHJvdywgY29sKVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSDinIUgQ3VzdG9tIGNlbGwgcmVuZGVyZXIgc3VwcG9ydCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNlbGxSZW5kZXJlciAmJiAhaXNUb3RhbFJvdzsgZWxzZSBkZWZhdWx0Q2VsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICBbY2VsbFJlbmRlckluaXRdPVwiY29sLmNlbGxSZW5kZXJlclwiXG4gICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKVwiXG4gICAgICAgICAgICAgIChjZWxsRXZlbnQpPVwib25DZWxsRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0g8J+nviBEZWZhdWx0IHRleHQtYmFzZWQgY2VsbCByZW5kZXJpbmcgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgI2NlbGxUZXh0XG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBmbGV4LWdyb3ctMVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJnZXRDZWxsVGl0bGUocm93LCBjb2wpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSBOb3JtYWwgY2VsbCAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb2w/LnR5cGUgIT09ICdpbWFnZScgJiZcbiAgICAgICAgICAgICAgICAgIGNvbD8uZmllbGQgIT0gJ2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgY29sPy5maWVsZCAhPSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgIWlzVG90YWxSb3dcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc19hbW91bnRcIj57e1xuICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2xcbiAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIHt7Z2V0Q2VsbFRpdGxlKHJvdywgY29sKX19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gVG90YWwgcm93IC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUb3RhbFJvd1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldFRvdGFsQW1vdW50KGNvbCkgfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBJbnZvaWNlIEltYWdlIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmZpZWxkID09ICdpbnZvaWNlLmludm9pY2VfaW1hZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHpvb206IDAuN1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgfHwgJ0F0dGFjaG1lbnQnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSlcIlxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvZG9jdW1lbnQtaWNvbnMvJyArXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICcuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBJbWFnZSBjZWxsIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdpbWFnZScgJiYgIWlzVG90YWxSb3dcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyByb3c6IHJvdywgY29sOiBjb2wgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKCFjb2w/LmNlbGxSZW5kZXJlciAmJiBzaG93Q2VsbERldGFpbHNCb3ggJiZcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDUwICYmIGNvbD8udHlwZSAhPT0gJ2ltYWdlJykgfHxcbiAgICAgICAgICAgICAgKGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkgJiZcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDEpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbXMtMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICBpc0V4cGFuZGVkKHJvdywgY29sKVxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChyb3csIGNvbCwgY29sdW1ucywgZmFsc2UpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8IS0tIEV4cGFuZCAvIENvbGxhcHNlIGljb24gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRXhwYW5kZWQgdGV4dCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgZXhwYW5kZWQtYm94XCJcbiAgICAgICAgICAqbmdJZj1cImlzRXhwYW5kZWQocm93LCBjb2wpXCJcbiAgICAgICAgICBbc3R5bGUuekluZGV4XT1cImdldFpJbmRleChyb3csIGNvbClcIlxuICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyBsZWZ0OiAwXCJcbiAgICAgICAgICBbYXR0ci5pZF09XCIocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgKGNvbC5pZCB8fCBjb2wuX2lkKVwiXG4gICAgICAgICAgW2NsYXNzLmludmlzaWJsZV09XCIhc2hvd0RldGFpbHNCb3hcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgZnVsbFRleHRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgIGNvbDogY29sLFxuICAgICAgICAgICAgICAgIGlzQXJyYXk6IGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEhlYWRlcnMgQWN0aW9uIExpc3QgT24gY2xpY2tpbmcgdGhyZWUgZG90cyAtLT5cblxuPG5nLXRlbXBsYXRlXG4gICNjb2x1bW5NZW51XG4gIGxldC1jb2w9XCJjb2xcIlxuICBsZXQtaXNOZXN0ZWRUYWJsZT1cImlzTmVzdGVkVGFibGVcIlxuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxuICBsZXQtY29sdW1uSW5kZXg9XCJjb2x1bW5JbmRleFwiXG4gIGxldC1jaGlsZENvbEluZGV4PVwiY2hpbGRDb2xJbmRleFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbHVtbi1tZW51IHRocmVlLWRvdHMtY29sLW1lbnVcIlxuICAgIFtjbGFzcy52aXN1YWxseS1oaWRkZW5dPVwiaXNNZW51ZUhpZGRlblwiXG4gICAgKm5nSWY9XCJhY3RpdmVDb2wgJiYgIWlzVGhyZWVEb3RzRmlsdGVyT3BlblwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxuICA+XG4gICAgPCEtLSBTb3J0IEFzY2VuZGluZyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWJlbG93IHBiLTJcIiBbY2xhc3MuZGlzYWJsZS1zb3J0aW5nXT1cIiFjb2wuaXNfc29ydGFibGVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dCBmcy03XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTJweFwiPlNvcnQ8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0FzY2VuZGluZyAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdkZXNjJylcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cInNvcnRBc2MoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy11cC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgU29ydCBBc2NlbmRpbmdcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNvcnQgRGVzY2VuZGluZyAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93RGVzY2VuZGluZyAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwic29ydERlc2MoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1kb3duLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICBTb3J0IERlc2NlbmRpbmdcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc29ydGluZ0NvbmZpZz8uZmllbGQgPT09IGNvbC5maWVsZCAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYycgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnZGVzYycpXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAgIChjbGljayk9XCJyZXNldFNvcnQoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIFJlc2V0IFNvcnRcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvdyB0aHJlZS1kb3RzLWZpbHRlclwiIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiY29sPy50eXBlID09ICdpbWFnZScgfHwgIWNvbC5pc19zZWFyY2hfYWJsZVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dGaWx0ZXJcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW0gdGhyZWUtZG90cy1maWx0ZXJcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgRmlsdGVyXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvd1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0IGZzLTdcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMnB4XCI+UGluPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5sZWZ0ICYmIGNvbD8ucGlubmVkICE9PSAnbGVmdCdcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXG4gICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWxlZnQuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW5cbiAgICAgICAgPlBpbiBMZWZ0XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5yaWdodCAmJiBjb2w/LnBpbm5lZCAhPT0gJ3JpZ2h0J1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICBpc05lc3RlZFRhYmxlLFxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1yaWdodC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW5cbiAgICAgICAgPlBpbiBSaWdodFxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxuICAgICAgICAgICAgYWN0aXZlQ29sLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXG4gICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9sYXlvdXQtdGhyZWUtY29sdW1ucy5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3BhblxuICAgICAgICA+VW5waW5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93QXV0b3NpemVUaGlzQ29sdW1uXCJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAoY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oYWN0aXZlQ29sKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtZXhwYW5kLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICBBdXRvc2l6ZSBUaGlzIENvbHVtblxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBdXRvc2l6ZSBBbGwgQ29sdW1ucyAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBdXRvc2l6ZUFsbENvbHVtbnNcIlxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUFsbENvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtYW5nbGUtZXhwYW5kLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuXG4gICAgICA+QXV0b3NpemUgQWxsIENvbHVtbnNcbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gR3JvdXAgQnkgLS0+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaG93Um93c0dyb3VwaW5nXCJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAoY2xpY2spPVwiZ3JvdXBCeShhY3RpdmVDb2wpXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiIWNvbC5pc19ncm91cGFibGVcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGlhZ3JhbS0zLnN2ZydcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICBHcm91cCBieSB7eyBjb2wuaGVhZGVyIH19XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENob29zZSBDb2x1bW5zIC0tPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Nob3NlQ29sdW1uc1wiXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgKGNsaWNrKT1cImNob29zZUNvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy91aS1jaGVja3MtZ3JpZC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgQ2hvb3NlIENvbHVtbnNcbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmVzZXQgQ29sdW1ucyAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dSZXNldENvbHVtbnNcIlxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1jb3VudGVyY2xvY2t3aXNlLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuXG4gICAgICA+UmVzZXQgQ29sdW1uc1xuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIEBzbGlkZVRvZ2dsZVxuICAgICpuZ0lmPVwiaXNUaHJlZURvdHNGaWx0ZXJPcGVuICYmIGNvbD8uaXNfc2VhcmNoX2FibGVcIlxuICAgIGNsYXNzPVwidGhyZWUtZG90cy1jb2wtbWVudSBwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgW3N0eWxlLnJpZ2h0LnB4XT1cImdldER5bmFtaWNSaWdodChjb2wsIHNlY3Rpb24sIGNvbHVtbkluZGV4LCBjaGlsZENvbEluZGV4KVwiXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcbiAgPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5maWx0ZXJSZW5kZXJlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItbWVudS1jb250YWluZXIgZmlsdGVyLW1lbnUgcC0wXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW2NlbGxSZW5kZXJJbml0XT1cImNvbC5maWx0ZXJSZW5kZXJlclwiXG4gICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgIChjZWxsRXZlbnQpPVwib25DZWxsRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb250ZXh0XT1cImdyaWRDb250ZXh0XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbD8uZmlsdGVyUmVuZGVyZXJcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRmlsdGVyIE1lbnVlIC0tPlxuPG5nLXRlbXBsYXRlICNmaWx0ZXJNZW51IGxldC1jb2w9XCJjb2xcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmlsdGVyLW1lbnUtY29udGFpbmVyIGZpbHRlci1tZW51XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXG4gICAgKm5nSWY9XCIhY29sPy5maWx0ZXJSZW5kZXJlclwiXG4gID5cbiAgICA8IS0tIERyb3Bkb3duIFR5cGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT09ICdhcnJheSc7IGVsc2UgdGV4dEZpbHRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1zZWN0aW9uIHAtMVwiPlxuXG4gICAgPCEtLSBTZWFyY2ggaW5wdXQgLS0+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAvPlxuXG4gICAgPCEtLSBGaWx0ZXIgKyBSZXN1bHQgSGFuZGxpbmcgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcbiAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJykgYXMgZmlsdGVyZWRPcHRpb25zXG4gICAgICBcIlxuICAgID5cbiA8IS0tIENoZWNrIGlmIGNvbHVtbl9kcm9wZG93bl92YWx1ZSBleGlzdHMgYW5kIGhhcyBkYXRhIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoOyBlbHNlIG5vRHJvcGRvd25EYXRhXCI+XG4gICAgICA8IS0tIERBVEEgRk9VTkQgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgZWxzZSBub0RhdGFGb3VuZFwiPlxuXG4gICAgICAgIDwhLS0gU2VsZWN0IEFsbCAob25seSB3aGVuIGRhdGEgZXhpc3RzKSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtdC0yIG1zLTEgc2VsZWN0LWFsbC1maWx0ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID8/IDApID09PVxuICAgICAgICAgICAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGggPz8gMClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcz8uc2l6ZSA/PyAwKSA+IDAgJiZcbiAgICAgICAgICAgICAgICAoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID8/IDApIDxcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID8/IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiPlxuICAgICAgICAgICAgU2VsZWN0IEFsbFxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVmlydHVhbCBTY3JvbGwgLS0+XG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgICBpdGVtU2l6ZT1cIjMyXCJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci12aWV3cG9ydFwiXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxuICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2lkXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvbilcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihvcHRpb24pXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIlxuICAgICAgICAgICAgICBbZm9yXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uPy5uYW1lID8/IG9wdGlvbikgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBOTyBEQVRBIEZPVU5EIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGFGb3VuZD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0yXCJcbiAgICAgICAgICAqbmdJZj1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAgICAgPlxuICAgICAgICAgIE5vIFJlY29yZCBGb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBOTyBEUk9QRE9XTiBEQVRBIEFWQUlMQUJMRSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub0Ryb3Bkb3duRGF0YT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0zIG1iLTNcIj5cbiAgICAgICAgICAgICBObyBSZWNvcmQgRm91bmRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGN1c3RvbS1zZWxlY3RcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdENvbmRpdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkYXRlJyB8fCBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAndGltZSdcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkdyZWF0ZXIgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxlc3NfdGhlbl9lcXVhbFwiPmxlc3MgdGhlbiBFcXVhbCB0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFt0eXBlXT1cImNvbD8udHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbD8udHlwZVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmFsdWVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RWYWx1ZVwiXG4gICAgICAgICAgI2ZpbHRlck1lbnVlVGV4dGNoSW5wdXRcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXG4gICAgICAgICAgICAgIGlkPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgPkFORDwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JcIlxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgPk5vbmU8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IEBzbGlkZVRvZ2dsZSAqbmdJZj1cImZpcnN0VmFsdWUgJiYgY29uZGl0aW9uICE9ICdub25lJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZGF0ZScgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkxlc3MgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxlc3NfdGhlbl9lcXVhbFwiPmxlc3MgdGhlbiBFcXVhbCB0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJncmVhdGVyX3RoZW5fZXF1YWxcIj5HcmVhdGVyIHRoZW4gRXF1YWwgdG8gPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbdHlwZV09XCJjb2w/LnR5cGUgPT0gJ3N0cmluZycgPyAndGV4dCcgOiBjb2w/LnR5cGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWNvbmQgVmFsdWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBBY3Rpb25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgID5cbiAgICAgICAgQXBwbHlcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzBweFwiXG4gICAgICAgIChjbGljayk9XCJyZXNldFNpZGVGaWx0ZXIoY29sKVwiXG4gICAgICA+XG4gICAgICAgIFJlc2V0XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNpZGUgTWVudWUgLS0+XG5cbjwhLS0gQ29sdW1uIFBhbm5lbCAvIFBpdm90IE1vZGUgLyBTZWFyY2hpbmcgLS0+XG5cbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFubmVsPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxuICAgIDwhLS0gUGl2b3QgVG9nZ2xlIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcGl2b3QtbW9kZSBweC01IG1zLTIgZC1ub25lXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBpZD1cInBpdm90VG9nZ2xlXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwaXZvdE1vZGVcIlxuICAgICAgLz5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJwaXZvdFRvZ2dsZVwiPlBpdm90IE1vZGU8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWxlY3QgQWxsICYgU2VhcmNoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcHgtMyBtdC0zXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgYWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgOiBhY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsQWNjb3JkaW9ucygpXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjb2x1bW5zLi4uXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VwYXJhdG9yIC0tPlxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUmlnaHQgQ29sdW1ucyBNZW51ZSAtLT5cblxuPCEtLSBDb2x1bW4gUGFuZWwgSXRlbSBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFuZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cbiAgPCEtLSBHcm91cCBDb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZCA9ICFjb2wuZXhwYW5kZWRcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgW2lkXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXG4gICAgICAgIFtjaGVja2VkXT1cImlzQ29sdW1uVmlzaWJsZShjb2wpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVHcm91cFZpc2liaWxpdHkoY29sKVwiXG4gICAgICAvPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxuICAgICAgICBbZm9yXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZFwiIGNsYXNzPVwicHMtNFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCIgc3R5bGU9XCJ3aWR0aDogMS41cmVtXCI+PC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuaXNfdmlzaWJsZVwiXG4gICAgICAgIFtpZF09XCInY29sXycgKyBjb2wuZmllbGRcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2lkZU1lbnVDb2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgpXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1lLTJcIlxuICAgICAgPjwvc3Bhbj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXG4gICAgICAgIFtmb3JdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIENvbHVtbnMgU2lkZSBGaWx0ZXIgLS0+XG48bmctdGVtcGxhdGUgI3NpZGVGaWx0ZXJzPlxuICA8ZGl2IGNsYXNzPVwicHktMyBweC0yIHBlLTMgaC0xMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgOiBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gc2lkZS1maWx0ZXItY29sdW1ucy13cmFwcGVyXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMCUgLSA3MHB4KTsgc2Nyb2xsYmFyLXdpZHRoOiB0aGluXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNvbHVtblNlYXJjaCA6ICdoZWFkZXInO1xuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJQYW5uZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZpbHRlclBhbm5lbEl0ZW0gbGV0LWNvbD1cImNvbFwiPlxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCJcbiAgICAgICpuZ0lmPVwiY29sPy50eXBlICE9PSAnaW1hZ2UnXCJcbiAgICA+XG4gICAgICA8IS0tIENoZXZyb24gdG9nZ2xlIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBHcm91cCBsYWJlbCB0b2dnbGUgLS0+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgID57eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IG1zLTFcIlxuICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGggfHwgY29sPy5xdWVyeT8uX2ZpcnN0X3ZhbHVlXCJcbiAgICAgICAgICAgID4qPC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGlsZHJlbiBjb2x1bW5zIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIiBjbGFzcz1cInBzLTRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclBhbm5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjaGlsZCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTGVhZiBDb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCIgKm5nSWY9XCJjb2w/LnR5cGUgIT09ICdpbWFnZSdcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibWUtMiBmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIlxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZSBmdy1ib2xkXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNob3cgZmlsdGVyIHdoZW4gZXhwYW5kZWQgLS0+XG4gICAgPGRpdiBbQHNsaWRlVG9nZ2xlXSAqbmdJZj1cImNvbC5leHBhbmRlZEZpbHRlclwiIGNsYXNzPVwicHMtNCBwZS0zXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU5lc3RlZEZpbHRlcjsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNpZGUgTmVzdGVkIEZpbHRlcnMgLS0+XG48bmctdGVtcGxhdGUgI3NpZGVOZXN0ZWRGaWx0ZXIgbGV0LWNvbD1cImNvbFwiPlxuICA8ZGl2IGNsYXNzPVwiXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnYXJyYXknOyBlbHNlIHRleHRGaWx0ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTJcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2hcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZScpIGFzIGZpbHRlcmVkT3B0aW9uc1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgZWxzZSBub0RhdGFGb3VuZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xIHNlbGVjdC1hbGwtZmlsdGVyXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8ubGVuZ3RoID09IGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIihjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aCAhPT0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aCAmJiBjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aClcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCI+XG4gICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzJcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8uaW5jbHVkZXMob3B0aW9uPy5faWQgfHwgb3B0aW9uPy5pZCB8fCBvcHRpb24pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvblRvZ2dsZShjb2wsIG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJvcHRpb25fe3sgY29sLmZpZWxkIH19X3t7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXG4gICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JdPVwiXG4gICAgICAgICAgICAgICAgICAgICdvcHRpb25fJyArXG4gICAgICAgICAgICAgICAgICAgIGNvbC5maWVsZCArXG4gICAgICAgICAgICAgICAgICAgICdfJyArXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgKG9wdGlvbi52YWx1ZSB8fCBvcHRpb24pIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhRm91bmQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaWRlTmVzdGVkRmlsdGVyU2VhcmNoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTm8gUmVjb3JkIEZvdW5kXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdkYXRlJyB8fCBjb2w/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+RlZcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+TGVzcyBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyZWF0ZXJfdGhlbl9lcXVhbFwiPkdyZWF0ZXIgdGhlbiBFcXVhbCB0byA8L29wdGlvbj5GVlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFt0eXBlXT1cImNvbD8udHlwZSA9PSAnZGF0ZScgPyAnZGF0ZScgOiAoY29sPy50eXBlID09ICdudW1iZXInID8gJ251bWJlcic6ICd0ZXh0JylcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkhLmZpcnN0X3ZhbHVlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93IG11dGVkXCJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JcIlxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXG4gICAgICAgICAgICAgIGlkPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cIm5ub25lbS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIlxuICAgICAgICAgICAgICBmb3I9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgY29sPy5xdWVyeT8uY29uZGl0aW9uICE9PSAnbm9uZSdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LnNlY29uZF9jb25kaXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdkYXRlJyB8fCBjb2w/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+R3JlYXRlciBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiY29sPy50eXBlID09ICdkYXRlJyA/ICdkYXRlJyA6ICd0ZXh0J1wiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuc2Vjb25kX3ZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCIgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiPmFwcGx5PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogMjJweDtcIiAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCI+cmVzZXQ8L2Rpdj5cblxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgYm9yZGVyLXRvcFwiXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlU2lkZUZpbHRlcihjb2wpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+Q2xlYXI8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzBweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5U2lkZUZpbHRlcihjb2wpXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIihjb2w/LnF1ZXJ5LmNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUpXCJcbiAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiKGNvbCE/LnF1ZXJ5LmNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tdG9wOiAtMXB4XCI+QXBwbHk8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIENlbnRyIE92ZXJsYXkgZm9yIHNob3dpbmcgdGhlIGNob3NlIGNvbHVtbnMgLS0+XG5cbjxkaXYgKm5nSWY9XCJzaG93Q29sdW1uUGFuZWxcIiBjbGFzcz1cImN1c3RvbS1tb2RhbC1vdmVybGF5XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImN1c3RvbS1tb2RhbC1jb250ZW50XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kYWxDb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBUaGUgZXhpc3RpbmcgbmctdGVtcGxhdGUgeW91IHByb3ZpZGVkIC0tPlxuPG5nLXRlbXBsYXRlICNtb2RhbENvbHVtblBhbm5lbD5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1oZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiBwcy0zIHJvdW5kZWQtdG9wLTIgbW9kYS1oZWFkZXJcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCI0OFwiXG4gICAgPlxuICAgICAgQ2hvb3NlIENvbHVtbnNcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKVwiXG4gICAgICAgID48c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+PC9zcGFuXG4gICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxociBjbGFzcz1cIm15LTBcIiAvPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHBlLTNcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCIgKm5nSWY9XCJzaG93Q29sdW1uc0dyb3VwaW5nXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICA6IGFjY29yZGlvblN0YXRlID09PSAnc29tZSdcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjaG9zZUNvbHVtbnNTZWFyY2hcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxociBjbGFzcz1cIm10LTAgbWItMVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwicHgtMiBvdmVybGF5LXNjcm9sbGFibGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogY2hvc2VDb2x1bW5zU2VhcmNoIDogJ2hlYWRlcic7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2lkZU1lbnVSb3dHcm91cHM+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gaC0xMDAgZC1ub25lXCI+XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3Bhbj5Sb3cgR3JvdXBzPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC01MFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IEdyb3Vwc1xuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGhyIGNsYXNzPVwibXQtNFwiIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBoLTEwMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuPlZhbHVlczwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImgtNTAgZC1mbGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxuICAgICAgICA+XG4gICAgICAgICAgRHJhZyBoZXJlIGFnZ3JlZ2F0ZVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbjwhLS0gRHJhZyBQcmV2aWV3IFRlbXBsYXRlIC0tPlxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbjxuZy10ZW1wbGF0ZSAjZHJhZ1ByZXZpZXcgbGV0LWNvbD5cbiAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgPGRpdj5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRHJhZyBQbGFjZWhvbGRlciBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjZHJhZ1BsYWNlaG9sZGVyXG4gIGxldC1jb2xcbiAgbGV0LWk9XCJpbmRleFwiXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXG4gIGxldC1kcmFnZ2luZ0luR3JvdXBBcmVhPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4+XG4gIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxuICAgIDxkaXZcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2wsIGluZGV4OiBpLCBzZWN0aW9uOiBzZWN0aW9uIH1cbiAgICAgIFwiXG4gICAgPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIj5OZXcgUGxhY2Vob2xkZXI8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVG9wIEdyb3VwIFJvdyBQbGFjZWhvbGRlciAtLT5cbjxuZy10ZW1wbGF0ZSAjdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlciBsZXQtY29sIGxldC1zaG93Q2hldnJvbj1cInNob3dDaGV2cm9uXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiB0b3Atcm93LWdyb3VwaW5nLXBsYWNlaG9sZGVyXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwidG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvclwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8c3Bhbj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKGNsaWNrKT1cInVuZ3JvdXBDb2x1bW4oY29sKVwiXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgID48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0NoZXZyb25cIiBzdHlsZT1cIm9wYWNpdHk6IDAuNjsgZm9udC1zaXplOiAxNHB4XCI+XG4gICAgPHNwYW5cbiAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXCJcbiAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgPjwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI2NoaWxkSGVhZGVyUGxhY2Vob2xkZXJcbiAgbGV0LWNvbFxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXG4gIGxldC1pPVwiaW5kZXhcIlxuICBsZXQtc2VjdGlvbnM9XCJzZWN0aW9uc1wiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzXCJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICBbY2xhc3MuYWN0aXZlLWhlYWRlcl09XCJjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENvbHVtbkluZGljZXMuaW5jbHVkZXMoY29sLmluZGV4KVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXG4gICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxuICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgc3R5bGU9XCJncmlkLXJvdzogM1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJjb2w/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2ltYWdlJyB8fCBjb2w/LnR5cGUgPT0gJ2FycmF5J1wiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXG4gICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIlxuICAgICAgICAoY2xpY2spPVwiYWN0aXZlRmlsdGVyQ2VsbCA9IGNvbDsgYWN0aXZlQ29sID0gbnVsbFwiXG4gICAgICAgID48c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPjwvc3BhblxuICAgICAgPjwvc3Bhbj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsID09PSBjb2xcIlxuICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDEwOyBsZWZ0OiAwXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlTGF5b3V0PlxuICA8ZGl2XG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXG4gICAgc3R5bGU9XCJ3aWR0aDogMzIwcHhcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+VGFibGUgTGF5b3V0PC9oNj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RhYmxlTGF5b3V0XCI+IFxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtYi0zIGQtZmxleFwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxuICAgICAgICBuYW1lPVwibGF5b3V0U2l6ZVwiXG4gICAgICAgIGlkPVwic21hbGxcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVRhYmxlTGF5b3V0KCRldmVudCwgJ3NtYWxsJylcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdzbWFsbCdcIlxuICAgICAgLz5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxuICAgICAgICBmb3I9XCJzbWFsbFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnID8gJyMwMDAnIDogJyM3MjcyNzInXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogOHB4XCI+PC9kaXY+XG4gICAgICAgIFNtYWxsXG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcbiAgICAgICAgaWQ9XCJtZWRpdW1cIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nXCJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdtZWRpdW0nKVwiXG4gICAgICAvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYm9yZGVyIG14LTMgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcbiAgICAgICAgZm9yPVwibWVkaXVtXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIGNvbG9yOiBzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nID8gJyMwMDAnIDogJyM3MjcyNzInXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogMTJweFwiPjwvZGl2PlxuICAgICAgICBNZWRpdW1cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBjbGFzcz1cImJ0bi1jaGVjayBsYXlvdXQtYnV0dG9uLWNoZWNrXCJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxuICAgICAgICBpZD1cImxhcmdlXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdsYXJnZScpXCJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcbiAgICAgICAgZm9yPVwibGFyZ2VcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ2xhcmdlJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDE2cHhcIj48L2Rpdj5cbiAgICAgICAgTGFyZ2VcbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgIDxzcGFuPlNob3cgc2VwYXJhdG9yczwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9XCJzZXBhcmF0b3JzXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHNwYW4+Um93IHNoYWRpbmc8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1NoYWRpbmdFbmFibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVJvd1NoYWRpbmcoKVwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBpZD1cInJvd1NoYWRpbmdcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3Bhbj5TaG93IFNpZGUgTWVudTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd1NpZGVNZW51XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3Bhbj5TaG93IEZpbHRlciBSb3c8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dGaWx0ZXJSb3dcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlUHJlc2V0PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJhY3RpdmVTdWJCdXR0b24gIT09ICdzYXZlLXByZXNldCdcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4XCJcbiAgPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xMHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIFByZXNldHM8L2g2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFNhdmUgUHJlc2V0IEJ1dHRvbiB3aXRoIERyb3Bkb3duIC0tPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgaWQ9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZVN1YkFjdGlvbnMoJ3NhdmUtcHJlc2V0JylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyBcIlNhdmUgcHJlc2V0XCIgOiBcIlVwZGF0ZSBQcmVzZXRcIiB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VhcmNoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRQcmVzZXRUYWJsZVwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUHJlc2V0IExpc3QgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgdGFibGVWaWV3IHwgZmlsdGVyIDogc2VhcmNoVGV4dFByZXNldFRhYmxlIDogJ25hbWUnIGFzIGZpbHRlcmVkTGlzdFxuICAgICAgXCJcbiAgICA+XG4gICAgICA8IS0tIElmIGZpbHRlcmVkTGlzdCBleGlzdHMgYW5kIG5vbmUgaXMgZGVmYXVsdCAtPiBzaG93IGZhbGxiYWNrIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIiBwYi01IG92ZXJmbG93LWF1dG9cIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDI1MFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBjbGVhckFsbEZpbHRlcnModHJ1ZSk7XG4gICAgICAgICAgICBvcGVuSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9ICcnO1xuICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID0gJyc7XG4gICAgICAgICAgICBjdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSBudWxsXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPkRlZmF1bHQgVmlldzwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiPkNyZWF0ZWQgYnkgc3lzdGVtPC9zbWFsbD5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXG4gICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiAhaGFzQW55RGVmYXVsdFZpZXcoKVwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgID48L3NwYW4+IC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUZpbHRlclZpZXdJZFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRoZSBsaXN0OiByZW5kZXIgZWFjaCB0YWJsZSBmcm9tIGZpbHRlcmVkTGlzdCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCB0YWJsZSBvZiBmaWx0ZXJlZExpc3Q7XG4gICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVRhYmxlXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gSXRlbSAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkluZGV4ID0gbnVsbDsgYWN0aXZlVG9wQnV0dG9uID0gJydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdEZpbHRlcih0YWJsZSk7IG9wZW5JbmRleCA9IG51bGxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICB7eyB0YWJsZT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwhLS0ge3t0YWJsZT8uaXNfdGVtcH19IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICh0YWJsZT8uaXNfdGVtcCAmJiAhdGVtcF9zdGF0ZS5pZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9PSB0YWJsZS5pZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGU/LmlzX2RlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXG4gICAgICAgICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIiBbdGl0bGVdPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXM/Lmxlbmd0aCA+IDI1XG4gICAgICAgICAgICAgID8gKHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzIHwgc2xpY2U6MDoyNSkgKyAnLi4uJ1xuICAgICAgICAgICAgICA6IHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICh7eyB0YWJsZT8uY29uZmlnPy50b3RhbENvdW50IH19KVxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cIiF0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1wiPnt7IHRhYmxlPy5jcmVhdGVkQXQgfCBkYXRlIDogXCJNTU0gZCwgeVwiIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKHRhYmxlPy5pc190ZW1wICYmICF0ZW1wX3N0YXRlLmlkKSB8fCB0ZW1wX3N0YXRlLmlkID09IHRhYmxlLmlkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiIXRhYmxlPy5pc19kZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWljb24gbXV0ZWQtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbkluZGV4ID09PSBpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2hvcml6b250YWwtZG90cy5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gbWVudSAtLT5cbiAgICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3BlbkluZGV4ID09PSBpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tZHJvcGRvd24tbWVudSBwb3NpdGlvbi1maXhlZCB0b3AtYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cIid1bnNldCdcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRXaWR0aCAtIDIwMFwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiB1bnNldDsgcmlnaHQ6IHVuc2V0XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblByZXNldCh0YWJsZSwgJ3NldFByZXNldCcpOyB0ZW1wX3N0YXRlLmlkID0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zdGFyLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibm9uZVwiICpuZ0lmPVwiIXRhYmxlLmNvbmZpcm1EZWxldGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0YWJsZS5jb25maXJtRGVsZXRlID0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAtNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RyYXNoLXJlZC5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGUuY29uZmlybURlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb25maXJtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgPGJyIC8+PGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4oCce3sgdGFibGU/Lm5hbWUgfX3igJ08L2JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPj9cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodCBtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUHJlc2V0KHRhYmxlLCAnZGVsZXRlUHJlc2V0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICpuZ0lmPVwiYWN0aXZlU3ViQnV0dG9uID09ICdzYXZlLXByZXNldCdcIlxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBwLTMgYmFkZ2UgbXQtNCBzYXZlLXByZXNldC1kcm9wZG93biBtdC0xXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxuICAgIHN0eWxlPVwibWluLXdpZHRoOiAyNTBweFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy0xNHB4IG1iLTJcIj5cbiAgICAgIHt7IGlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gXCJTYXZlIHByZXNldFwiIDogXCJVcGRhdGUgUHJlc2V0XCIgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtMTRweCBtYi0yXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogMjBweFwiPlxuICAgICAgVGhpcyB3aWxsIHNhdmUgdGhlIGN1cnJlbnQgdGFibGUgYWRqdXN0bWVudHMgYXMgYSBwcmVzZXQuXG4gICAgPC9kaXY+XG4gICAgPCEtLSBJbnB1dCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgPGxhYmVsIGZvcj1cInByZXNldE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnMtMTJweCBmdy1ib2xkXCJcbiAgICAgICAgPlByZXNldCBOYW1lPC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNwcmVzZXROYW1lQ3RybD1cIm5nTW9kZWxcIlxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXROYW1lXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnaXMtaW52YWxpZCc6XG4gICAgICAgICAgICAgIHByZXNldE5hbWVDdHJsLmludmFsaWQgJiZcbiAgICAgICAgICAgICAgKHByZXNldE5hbWVDdHJsLmRpcnR5IHx8IHByZXNldE5hbWVDdHJsLnRvdWNoZWQpXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBzLTJcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJlc2V0IG5hbWVcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXRGaWx0ZXJcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBpZD1cInNhdmVGaWx0ZXJzXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG10LTFcIiBmb3I9XCJzYXZlRmlsdGVyc1wiPlxuICAgICAgICBTYXZlIGFjdGl2ZSBmaWx0ZXJzXG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTYXZlIEJ1dHRvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIiBzdHlsZT1cImhlaWdodDogMzJweFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGJ0bi1saWdodFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KHByZXNldE5hbWVDdHJsKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiICpuZ0lmPVwiaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNsb3NlRHJvcGRvd24ucHJlc2V0LmxvYWRpbmdcIlxuICAgICAgICAgICAgPlNhdmU8L25nLWNvbnRhaW5lclxuICAgICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXG4gICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiPjwvc3BhblxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXBcIiAqbmdJZj1cIiFpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZFwiXG4gICAgICAgICAgPlVwZGF0ZSBQcmVzZXQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93SGlkZUNvbHVtbnM+XG4gIDxkaXZcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBjbGFzcz1cInAtMyBzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIGRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0XCJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweFwiXG4gID5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5Db2x1bW5zPC9oNj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0Q29sdW1ucygpXCJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtZGVjb3JhdGlvbi1ub25lIGQtbm9uZVwiXG4gICAgICAgID5SZXNldDwvYVxuICAgICAgPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwibXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1uXCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRvcFNob3dIaWRlQ29sdW1uc1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IHNjcm9sbGJhci13aWR0aDogdGhpblwiXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDIyMFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiPlxuICAgICAgICBTaG93IGluIHRhYmxlXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGlkPVwiaGlkZV9hbGxcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cImhpZGVfYWxsXCI+XG4gICAgICAgICAgICAgIFNob3cvSGlkZSBBbGwgXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEl0ZW0gLS0+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IHRvcFNob3dIaWRlQ29sdW1ucyA6ICdoZWFkZXInO1xuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItZ3JhcCBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgIWNvbD8ucXVlcnk/Ll9pZHM/Lmxlbmd0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sLCBmYWxzZSlcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInZpc2libGVDb2x1bW5zKCkubGVuZ3RoIDw9IDIgfHwgY29sPy5pc19hbHdheXNfdmlzaWJsZVwiXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxuICAgICAgICAgICAgW2NsYXNzLm9wYWNpdHktNTBdPVwidmlzaWJsZUNvbHVtbnMoKS5sZW5ndGggPD0gMiB8fCBjb2w/LmlzX2Fsd2F5c192aXNpYmxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS5zdmcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiXG4gICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtbiAmJiBoYXNBbnlJblZpc2libGVDb2x1bW5cIlxuICAgICAgPjwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibXV0ZWQtdGV4dCBzaG93LWhpZGUtdGFibGUtbGFiZWwgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlJblZpc2libGVDb2x1bW5cIlxuICAgICAgPlxuICAgICAgICBIaWRlIGluIHRhYmxlXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgaWQ9XCJzaG93X2FsbFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwic2hvd19hbGxcIj5cbiAgICAgICAgICAgICAgU2hvdy9IaWRlIEFsbCBcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiB0b3BTaG93SGlkZUNvbHVtbnMgOiAnaGVhZGVyJzsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmlzX3Zpc2libGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbCwgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUtY3Jvc3Muc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyQ29sdW1ucyBsZXQtY29sPVwiY29sdW1uXCI+XG4gIDxkaXZcbiAgICBAc2xpZGVUb2dnbGVcbiAgICAqbmdJZj1cIiFpc0ZpbHRlck9wZW4gJiYgYWN0aXZlVG9wQnV0dG9uID09ICdmaWx0ZXItY29sdW1ucydcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnNcIlxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibWItMiBweC0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5XCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTsgb3ZlcmZsb3c6IGF1dG9cIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAnaGVhZGVyJztcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRmlsdGVyKGNvbClcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjb2wuaXNfdmlzaWJsZSAmJlxuICAgICAgICAgICAgIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmXG4gICAgICAgICAgICAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoICYmIGNvbD8udHlwZSAhPT0gJ2ltYWdlJyAmJiBjb2wuaXNfc2VhcmNoX2FibGVcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJvcmRlci0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAtM3B4XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1jYXBpdGFsaXplXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIj5cbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciAgfCB0aXRsZWNhc2UgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEcm9wZG93biAtLT5cbiAgPGRpdlxuICAgIEBzbGlkZVRvZ2dsZVxuICAgICpuZ0lmPVwiaXNGaWx0ZXJPcGVuICYmIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkcm9wZG93bicgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2FycmF5J1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweDsgcmlnaHQ6IHVuc2V0OyBtYXgtd2lkdGg6IDIzMHB4XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgbXktMiBib3JkZXItYmVsb3cgcHktMSBwYi0yIG1iLTMgZC1mbGV4IHBzLTFcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlciB0ZXh0LWNhcGl0YWxpemVcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiXG4gICAgICA+PC9zcGFuXG4gICAgICA+PGI+e3sgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmhlYWRlciB8IHRpdGxlY2FzZSAgfX08L2I+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTIgcHgtM1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlciByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIHB4LTIgZmlsdGVyLXNlcmFjaC1pbnB0XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXCJcbiAgICAgICAgICBjbGFzcz1cImJhZGdlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgbWUtMSBtYi0xIHRvcC1yb3ctZmlsdGVyLWRyb3Bkb3duIHRleHQtY2FwaXRhbGl6ZVwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHNlbGVjdGVkPy52YWx1ZSA/IHNlbGVjdGVkLnZhbHVlIDogc2VsZWN0ZWQgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKHNlbGVjdGVkKVwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jcm9zcy1wcmltYXJ5LnN2ZydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGJvcmRlci0wIGZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZEZpbHRlck9wdGlvbnM/Lmxlbmd0aCA/ICcnIDogJ0ZpbHRlciBieSdcIlxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duXCJcbiAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiaGFuZGxlQmFja3NwYWNlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjAwcHgpOyBvdmVyZmxvdzogYXV0b1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICBsZXQgY29sIG9mIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLmNvbHVtbl9kcm9wZG93bl92YWx1ZVxuICAgICAgICAgICAgfCBmaWx0ZXIgOiBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gOiAndmFsdWUnO1xuICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJvcmRlci0wIHB4LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2lkXT1cImlcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKGNvbC5pZCB8fCBjb2wuX2lkIHx8IGNvbClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGNvbClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGQgdGV4dC1jYXBpdGFsaXplXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIiBbZm9yXT1cImlcIj5cbiAgICAgICAgICAgICAge3sgY29sPy52YWx1ZSB8fCBjb2w/Lm5hbWUgfHwgY29sIHwgdGl0bGVjYXNlICB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWxpZ2h0IGJvcmRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMSBidG4tbGlnaHRcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldEZpbHRlckNoYW5nZXMoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMVwiXG4gICAgICAgIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0ycHhcIj5TYXZlPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRm9yIFRleHQgZmllbGRzIGFuZCBudW1iZXIgZmllbGRzLS0+XG5cbiAgPGRpdlxuICAgIEBzbGlkZVRvZ2dsZVxuICAgICpuZ0lmPVwiXG4gICAgICBpc0ZpbHRlck9wZW4gJiZcbiAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnc3RyaW5nJyB8fFxuICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAndGltZScgfHxcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2RhdGUnKVxuICAgIFwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcbiAgICBzdHlsZT1cIndpZHRoOiAyMTBweDsgcmlnaHQ6IHVuc2V0OyBtYXgtd2lkdGg6IDIzMHB4XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgYm9yZGVyLWJlbG93IHB5LTEgcGItMiBkLWZsZXggcHMtMVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnZmlsdGVyLWNvbHVtbnMnKTsgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2VcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcbiAgICAgID48L3NwYW5cbiAgICAgID48Yj57eyBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uaGVhZGVyIH19PC9iPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcG9zaXRpb24tcmVsYXRpdmUgcC0yIHRleHQtZmlsdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0IGJvcmRlclwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdENvbmRpdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cbiAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZGF0ZScgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkxlc3MgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+R3JlYXRlciBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGVzc190aGVuX2VxdWFsXCI+bGVzcyB0aGVuIEVxdWFsIHRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJncmVhdGVyX3RoZW5fZXF1YWxcIj5HcmVhdGVyIHRoZW4gRXF1YWwgdG8gPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBmaXJzdCB2YWx1ZVwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgW3R5cGVdPVwiXG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICA/ICd0ZXh0J1xuICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXktMyBkLWZsZXggZmxleC1yb3dcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbEFuZFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxBbmRcIlxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgaWQ9XCJsb2dpY2FsT3JcIlxuICAgICAgICAgICAgICBuYW1lPVwibG9naWNhbE9wZXJhdG9yXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxPclwiPk9SPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE5vbmVcIlxuICAgICAgICAgICAgICBuYW1lPVwibG9naWNhbE9wZXJhdG9yXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibG9naWNhbE5vbmVcIlxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmRpdGlvbiAhPT0gJ25vbmUnICYmIGZpcnN0VmFsdWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0zXCI+XG4gICAgICAgICAgICA8IS0tIFNlY29uZCBjb25kaXRpb24gc2VsZWN0IC0tPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGJvcmRlclwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kQ29uZGl0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2RhdGUnIHx8IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+TGVzcyBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkdyZWF0ZXIgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGVzc190aGVuX2VxdWFsXCI+bGVzcyB0aGVuIEVxdWFsIHRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyZWF0ZXJfdGhlbl9lcXVhbFwiPkdyZWF0ZXIgdGhlbiBFcXVhbCB0byA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgPCEtLSBTZWNvbmQgdmFsdWUgaW5wdXQgLS0+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW3R5cGVdPVwiXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gJ3RleHQnXG4gICAgICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgc2Vjb25kIHZhbHVlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kVmFsdWVcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgcHgtMiBib3JkZXItdG9wXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplICYmICFmaXJzdFZhbHVlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVzZXRUZXh0RmlsdGVyQ2hhbmdlcygpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+Q2FuY2VsPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCIoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID09PSAwICYmICFmaXJzdFZhbHVlKSB8fCAoY29uZGl0aW9uICE9PSAnbm9uZScgJiYgIXNlY29uZFZhbHVlKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPkFwcGx5PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBFZGl0IGRyb3Bkb3duIGhlcmUgLS0+XG48bmctdGVtcGxhdGUgbGV0LWNvbD5cbiAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1lZGl0XCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI2Z1bGxUZXh0VGVtcGxhdGVcbiAgbGV0LXJvdz1cInJvd1wiXG4gIGxldC1jb2w9XCJjb2xcIlxuICBsZXQtaXNBcnJheT1cImlzQXJyYXlcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmdWxsLXRleHQtYm94XCJcbiAgICAoZGJsY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gMlwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZyhyb3csIGNvbClcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhaXNBcnJheVwiXG4gICAgICAgIGNsYXNzPVwiZnVsbC10ZXh0LWNvbnRlbnRcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxuICAgICAgICAoZGJsY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXG4gICAgICAgIFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcbiAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVxuICAgICAgICB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNBcnJheVwiPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJpICE9PSAwXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIGl0ZW0/LmRlcGFydG1lbnRfbmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5yb2xlTmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5mdWxsX25hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8udmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ubmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBcIi1cIlxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmcocm93LCBjb2wpXCI+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgKGRibGNsaWNrKT1cIlxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlbmFibGVFZGl0KHJvdywgY29sLCB0cnVlKVxuICAgICAgICBcIlxuICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgIHJvd3M9XCI0XCJcbiAgICAgICAgI3RleHRBcmVhZElucHV0XG4gICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxuICAgICAgICBuYW1lPVwie3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0ZXh0QXJlYWRJbnB1dC5ibHVyKClcIlxuICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2lzLWludmFsaWQnOiB0ZXh0TW9kZWwuaW52YWxpZFxuICAgICAgICB9XCJcbiAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgPjwvdGV4dGFyZWE+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlciBsZXQtcm93PVwicm93XCIgbGV0LWNvbD1cImNvbFwiPlxuICA8c3BhblxuICAgIGNsYXNzPVwicHgtMiBkLWZsZXggdy0xMDAgY2VsbC1jb250ZW50IGltYWdlLXBsYWNlaG9sZGVyXCJcbiAgICBbdGl0bGVdPVwicm93Py5mdWxsX25hbWUgfHwgcm93Py5uYW1lIHx8ICdOL0EnXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIHJvdz8ubG9nbyB8fFxuICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxuICAgICAgICAgIHJvdz8uaW52b2ljZT8uaW52b2ljZV9pbWFnZSB8fFxuICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZTtcbiAgICAgICAgZWxzZSBwbGFjZWhvbGRlclxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gcm93Py5sb2dvIHx8IHJvdz8ucHJvZmlsZV9waWN0dXJlcz8uWzRdPy5wYXRoIHx8XG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxuICAgICAgICAgICAgcm93Py5pbnZvaWNlX2ltYWdlXCJcbiAgICAgICAgY2xhc3M9XCJwaWNcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW3dpZHRoXT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICBbaGVpZ2h0XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcbiAgICAgICAgICAgIHJvdz8ucHJvZmlsZV9waWN0dXJlcz8uWzRdPy5wYXRoIHx8XG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxuICAgICAgICAgICAgcm93Py5pbnZvaWNlX2ltYWdlXG4gICAgICAgICAgXCJcbiAgICAgICAgICBhbHQ9XCJpY29uXCJcbiAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1pY29uXCJcbiAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSA8ZGl2XG4gICAgICBjbGFzcz1cImZ1bGxzY3JlZW4tb3ZlcmxheVwiXG4gICAgICAqbmdJZj1cImZ1bGxzY3JlZW5JbWFnZVwiXG4gICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gbnVsbFwiXG4gICAgPlxuICAgICAgPGltZyBbc3JjXT1cImZ1bGxzY3JlZW5JbWFnZVwiIGNsYXNzPVwiZnVsbHNjcmVlbi1pbWdcIiAvPlxuICAgIDwvZGl2PiAtLT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJnZXREeW5hbWljQ2xhc3Mocm93Py5mdWxsX25hbWUgfHwgcm93Py5uYW1lKVwiXG4gICAgICAgIGNsYXNzPVwicGljIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cInJvd0hlaWdodCAvIDNcIlxuICAgICAgICBbY2xhc3MuYXNzZXRzLXBpY109XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiXG4gICAgICA+XG4gICAgICAgIHt7IGdldEluaXRpYWxzKHJvdz8uZnVsbF9uYW1lKSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUmlnaHQgQ2xpY2sgTWVudWUgLS0+XG48ZGl2XG4gIFtjbGFzcy5pbnZpc2libGVdPVwiIXBvc2l0aW9uZWRZZXRcIlxuICBjbGFzcz1cImNvbnRleHQtbWVudSBwLTJcIlxuICAqbmdJZj1cImFjdGlvbkhpZGUgJiYgYWN0aW9ucz8ubGVuZ3RoXCJcbiAgW25nU3R5bGVdPVwieyAndG9wLnB4JzogeVBvcywgJ2xlZnQucHgnOiB4UG9zIH1cIlxuICBbY2xhc3Muc2hvd109XCJpc1Zpc2libGVcIlxuICBhcHBlbmRUbz1cImJvZHlcIlxuPlxuICA8dWw+XG4gICAgPGxpXG4gICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIlxuICAgICAgY2xhc3M9XCJyb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYWN0aW9uICsgJy5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gcmlnaHQtY2xpY2stbWVudS1pY29ucyBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBmdy01MDBcIj57eyBhY3Rpb24gfX08L3NwYW4+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48IS0tIERldGFpbHMgVG9nZ2xlIGZyb20gYm90dG9tIC0tPlxuXG48bmctdGVtcGxhdGUgI25lc3RlZFRhYmxlVGVtcGxhdGUgbGV0LXJvdz5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTAgY2VudGVyLW5lc3RlZC10YWJsZSB3LTEwMFwiXG4gICAgc3R5bGU9XCJ0YWJsZS1sYXlvdXQ6IGZpeGVkICFpbXBvcnRhbnRcIlxuICAgICNuZXN0ZWRUYWJsZUNvbnRhaW5lclxuICA+XG4gICAgPHRoZWFkXG4gICAgICAjbmVzdGVkSGVhZGVyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwicm93Py5kZXRhaWwuY29sdW1uc1wiXG4gICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1uKCRldmVudCwgcm93KVwiXG4gICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvbk5lc3RlZENvbFNvcnQoJGV2ZW50LCBwcmV2aWV3TmVzdGVkQ29scylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlSGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggdHIgYm9yZGVyLWJlbG93XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93LmRldGFpbC5jb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcbiAgICAgICAgICBjbGFzcz1cInB4LTQgdGhcIlxuICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNvbC5maWVsZFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgY2RrRHJhZ1xuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggaC0xMDAganVzdGlmeS1jb250ZW50LWJldHdlZW4gcG9zaXRpb24tcmVsYXRpdmUgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbGxpcHNpc1wiIChjbGljayk9XCJzb3J0TmVzdGVkQ29sKGNvbCwgcm93KVwiPlxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRTdWJTb3J0Q29sdW1uID09IGNvbC5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgKGNvbD8ub3JkZXJfYnkgPT0gJ2Rlc2MnXG4gICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xuICAgICAgICAgICAgICAgICAgICA6ICdkYXRhLWdyaWQvaWNvbnMvc29ydC1hc2Muc3ZnJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtcy0yIHN0YXJ0LTUwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbClcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMTsgbGVmdDogMFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiByb3c/LmRldGFpbC5jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpO1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC90aGVhZD5cbiAgICA8ZGl2XG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxuICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICA+XG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgIFtpdGVtU2l6ZV09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwidmlld3BvcnRcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgIChyb3c/LmRldGFpbD8ucmVzdWx0Py5sZW5ndGggPCA1XG4gICAgICAgICAgICA/IG5lc3RlZFRhYmxlcm93SGVpZ2h0ICogcm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoICsgNDBcbiAgICAgICAgICAgIDogMzAwKSArIChoYXNIb3Jpem9udGFsU2Nyb2xsID8gLTEyIDogMSlcbiAgICAgICAgXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93IGQtZmxleCB0clwiXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgZCBvZiByb3c/LmRldGFpbD8ucmVzdWx0OyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyPy5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgZClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTAgdGRcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBwcmV2aWV3TmVzdGVkQ29sczsgbGV0IGogPSBpbmRleFwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwibmVzdGVkVGFibGVyb3dGb250c2l6ZVwiXG4gICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodCAtIDFcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImNvbD8ud2lkdGhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8IS0tIHt7IGRbY29sLmZpZWxkXSB8fCAoY29sLmlzX2Ftb3VudCA/IDAgOiBcIi1cIikgfX0gLS0+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAjY2VsbFRleHRcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgZmxleC1ncm93LTFcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgIGNvbD8udHlwZSA9PT0gJ2RhdGUnXG4gICAgICAgICAgICAgICAgICAgID8gKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkgfCBkYXRlIDogZGF0ZUZvcm1hdClcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHx8ICctJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlICE9PSAnaW1hZ2UnXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2xcbiAgICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgY29sLmhlYWRlciA9PT0gJ0FyY2hpdmVkIFN0YXR1cydcbiAgICAgICAgICAgICAgICAgICAgICA/IChnZXRDZWxsVGl0bGUoZCwgY29sKSA9PT0gdHJ1ZSB8fCBnZXRDZWxsVGl0bGUoZCwgY29sKSA9PT0gJ3RydWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0FyY2hpdmVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdVbmFyY2hpdmVkJylcbiAgICAgICAgICAgICAgICAgICAgICA6IGdldENlbGxUaXRsZShkLCBjb2wpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0VG90YWxBbW91bnQoY29sKSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbWFnZVBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyIGxldC1yb3c+XG4gIDx0YWJsZVxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTBcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgIGdyaWRUeXBlID09ICdBc3NldHMnXG4gICAgICAgID8gKG5lc3RlZFRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMCkgKyAxMlxuICAgICAgICA6ICh0YXNrTWFuYWdlbWVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApXG4gICAgXCJcbiAgPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRoZWFkXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidHIgZC1mbGV4IGJvcmRlci1iZWxvd1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiICpuZ0Zvcj1cImxldCBfIG9mIFsxLCAyLCAzLCA0LCA1XVwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRib2R5XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidHIgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBfIG9mIHJvdz8uZGV0YWlsPy5yZXN1bHRcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiICpuZ0Zvcj1cImxldCBfXyBvZiBbMSwgMiwgMywgNCwgNV1cIiBjbGFzcz1cInB5LTBcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFza01hbmFnZW1lbnRUZW1wbGF0ZSBsZXQtdGFza0RldGFpbHM9XCJ0YXNrRGV0YWlsc1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwLTRcIlxuICAgICN0YXNrTWFuYWdlbWVudENvbnRhaW5lclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwibmVzdGVkVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIFtzdHlsZS5mb250RmFpbWx5XT1cImZvbnRGYWltbHlcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+RGVzY3JpcHRpb248L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50IGZpcnN0RGl2XCI+XG4gICAgICAgIHt7IHRhc2tEZXRhaWxzLmRlc2NyaXB0aW9uIH19XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDxwXG4gICAgICAgICAgW3N0eWxlLmZvbnRTaXplXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdiB0YXNrRGVzY3JpcHRpb24gcGUtNFwiXG4gICAgICAgICAgW2lubmVySFRNTF09XCJnZXRTYWZlQ29tbWVudCh0YXNrRGV0YWlscz8uZWRpdG9yX2Rlc2NyaXB0aW9uKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5GdWxsSW1hZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPkF0dGFjaG1lbnRzPC9kaXY+XG4gICAgICAgIDxoNSAqbmdJZj1cInRhc2tEZXRhaWxzPy5hdHRhY2htZW50cz8ubGVuZ3RoID09IDBcIj5cbiAgICAgICAgICBObyBBdHRhY2htZW50cyBmb3VuZFxuICAgICAgICA8L2g1PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aFwiXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZC1mbGV4IGZsZXgtd3JhcFwiXG4gICAgICAgICAgc3R5bGU9XCJnYXA6IDEwcHhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdHRhY2hlbWVudCBvZiB0YXNrRGV0YWlscz8uYXR0YWNobWVudHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJzeW1ib2wtbGFiZWwgZnMtMiBmdy1zZW1pYm9sZCB0ZXh0LXN1Y2Nlc3MgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzX25hbWVbaV0gfHwgJ0F0dGFjaG1lbnQnIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGF0dGFjaGVtZW50KVwiXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9kb2N1bWVudC1pY29ucy8nICtcbiAgICAgICAgICAgICAgICBnZXRFeHRlbnRpb24oYXR0YWNoZW1lbnQpICtcbiAgICAgICAgICAgICAgICAnLnN2ZydcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5cbiAgICAgICAgICBDb21tZW50cyAoe3sgdGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggfX0pXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aDUgKm5nSWY9XCJ0YXNrRGV0YWlscz8uY29tbWVudHM/Lmxlbmd0aCA9PSAwXCI+Tm8gQ29tbWVudHMgZm91bmQ8L2g1PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGhcIiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgdGFza0RldGFpbHMuY29tbWVudHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBlLTNcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGltYWdlLWlucHV0LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxuICAgICAgICAgICAgICAgIHNyYz1cInt7IGNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nbyB9fVwiXG4gICAgICAgICAgICAgICAgYWx0PVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwhLS0gPGFwcC1kZWZhdWx0LWltYWdlLXBsYWNlaG9sZGVyICpuZ0lmPVwiIWNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiIHRpdGxlPVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiIFtuYW1lXT1cImNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWVcIj48L2FwcC1kZWZhdWx0LWltYWdlLXBsYWNlaG9sZGVyPiAtLT5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByb3VuZGVkLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwicm93SGVpZ2h0IC8gM1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYXV0aG9yIGZzLTE0cHhcIj5cbiAgICAgICAgICAgICAgICB7eyBjb21tZW50Py5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudC1jb250ZW50IGZvckNvbW1lbnRJbWdcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQoY29tbWVudC5jb21tZW50KVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtdGltZXN0YW1wXCI+XG4gICAgICAgICAgICAgICAge3sgY29tbWVudC5jb21tZW50X2RhdGUgfCBkYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC10aW1lc3RhbXBcIj5cbiAgICAgICAgICAgICAgICBSZXBsaWVzOiAoe3sgY29tbWVudC5yZXBsaWVzLmxlbmd0aCB9fSlcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
5411
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFVTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBSzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3JFLE9BQU8sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJuRCxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYiw4Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBMEIsQ0FBQTtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QiwwQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBc0IsQ0FBQTtJQUN0QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQUdELE1BQU0sQ0FBQyxNQUFN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QUMsUUFBUSxDQUFDO2dCQTBRdEMsT0FBTztzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW1KMUMsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBZ1hjLHVCQUF1QjtzQkFBNUQsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgTmdab25lLFxuICBSZW5kZXJlcjIsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgVGVtcGxhdGVSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbiAgaW5qZWN0LFxuICBJbmplY3RvclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwbGl0Q29sdW1uc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zcGxpdC1jb2x1bW5zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm93QWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Jvdy1hY3Rpb24uc2VydmljZSdcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBDZGtEcmFnLFxuICBDZGtEcmFnRHJvcCxcbiAgQ2RrRHJhZ0VuZCxcbiAgQ2RrRHJhZ0VudGVyLFxuICBDZGtEcmFnRXhpdCxcbiAgQ2RrRHJhZ01vdmUsXG4gIENka0RyYWdTb3J0RXZlbnQsXG4gIENka0RyYWdTdGFydCxcbiAgRHJhZ0Ryb3AsXG4gIG1vdmVJdGVtSW5BcnJheSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICB0cmlnZ2VyLFxuICBzdGF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIGFuaW1hdGUsXG4gIHF1ZXJ5LFxuICBzdGFnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTVEFUVVNFU19CQURHRV9NQVAgfSBmcm9tICcuL3N0YXR1c2VzJztcbmltcG9ydCB7IENvcHlTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcHktc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IENlbGxTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2VsbC1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IENlbGxIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jZWxsSG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybWF0Q3VycmVuY3lQaXBlIH0gZnJvbSAnLi4vcGlwZXMvZm9ybWF0LWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0ICdib290c3RyYXAvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHRtbENvbnRlbnRTYW5pdGl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi8uLi9zZXJ2aWNlcy9odG1sLWNvbnRlbnQtc2FuaXRpemVyLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkQ29uZmlnIHtcbiAgZm9udEZhaW1seTogc3RyaW5nO1xuICBib2R5VGV4dEZvbnRzU2l6ZTogbnVtYmVyO1xuICBoZWFkZXJUZXh0Rm9udHNTaXplOiBudW1iZXI7XG4gIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgc2hvd1ZlcnRpY2FsQm9yZGVyOiBib29sZWFuO1xuICBzZWxlY3RlZFRhYmxlTGF5b3V0OiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuICBnbG9iYWxTZWFyY2g6IHN0cmluZztcbiAgZmlsdGVyTmFtZXM6IHN0cmluZztcbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICByb3dTaGFkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgYWN0aXZlRmlsdGVyczogYm9vbGVhbjtcbiAgZ3JvdXBlZENvbHVtbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGVudW0gUm93QW5pbWF0aW9uVHlwZSB7XG4gIE5vbmUgPSAnbm9uZScsXG4gIFNwcmVhZCA9ICdzcHJlYWRBbmltYXRpb24nLFxuICBCb3VuY2UgPSAnYm91bmNlQW5pbWF0aW9uJyxcbiAgU2xpZGVVcCA9ICdzbGlkZVVwRnJvbUJvdHRvbScsXG4gIEZsaXAgPSAnZmxpcEFuaW1hdGlvbicsXG4gIFNrZXcgPSAnc2tld0FuaW1hdGlvbicsXG4gIFNsaWRlUmlnaHQgPSAnc2xpZGVGcm9tUmlnaHQnLFxufVxuXG5cbmV4cG9ydCBjb25zdCBzb3J0aW5nQW5pbWF0aW9uID0gdHJpZ2dlcignbGlzdFNvcnQnLCBbXG4gIHRyYW5zaXRpb24oJyogPT4gKicsIFtcbiAgICBxdWVyeSgnOmVudGVyLCA6bGVhdmUnLCBzdHlsZSh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCB3aWR0aDogJzEwMCUnIH0pLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXG4gICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0yMHB4KScsIG9wYWNpdHk6IDAgfSkpXG4gICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICBxdWVyeSgnOmVudGVyJywgW1xuICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDIwcHgpJywgb3BhY2l0eTogMCB9KSxcbiAgICAgIHN0YWdnZXIoNTAsIFtcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAxIH0pKVxuICAgICAgXSlcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gIF0pXG5dKTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdhY2NvcmRpb25Ub2dnbGUnLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2NvbGxhcHNlZCcsXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3ZlcmZsb3c6ICd1bnNldCcgfSlcbiAgICAgICksXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvdmVyZmxvdzogJ3Vuc2V0JyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdjb2xsYXBzZWQgPD0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicpKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdzbGlkZVRvZ2dsZScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBvcGFjaXR5OiAwLCBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IGhlaWdodDogJyonLCBvcGFjaXR5OiAxLCBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ3NsaWRlVXAnLCBbXG4gICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDAlKScsIG9wYWNpdHk6IDAgfSkpLFxuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAxIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0JykpLFxuICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicpKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdyb3dEeW5hbWljJywgW1xuXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBTUFJFQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc3ByZWFkQW5pbWF0aW9uJywgW1xuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pLFxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJzM1MG1zIGVhc2Utb3V0JyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdzY2FsZVgoMSknIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcblxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xuICAgICAgICAgIHN0YWdnZXIoNDAsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJzIyMG1zIGVhc2UtaW4nLFxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWCgwLjcpJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIF0pLFxuXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBCT1VOQ0UgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICAgIHRyYW5zaXRpb24oJyogPT4gYm91bmNlQW5pbWF0aW9uJywgW1xuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTBweCknIH0pLFxuICAgICAgICAgIHN0YWdnZXIoNDUsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICAgICc1MDBtcyBjdWJpYy1iZXppZXIoLjY4LC0wLjU1LC4yNywxLjU1KScsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMHB4KScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgICBdKSxcblxuICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0gTkVXIDE6IEZMSVAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICAgIHRyYW5zaXRpb24oJyogPT4gZmxpcEFuaW1hdGlvbicsIFtcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3JvdGF0ZVgoLTgwZGVnKScgfSksXG4gICAgICAgICAgc3RhZ2dlcig3MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnNDUwbXMgZWFzZS1vdXQnLFxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3JvdGF0ZVgoMCknIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcblxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xuICAgICAgICAgIHN0YWdnZXIoNTAsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJzI1MG1zIGVhc2UtaW4nLFxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3JvdGF0ZVgoODBkZWcpJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIF0pLFxuXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMjogU0tFVyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgICAgdHJhbnNpdGlvbignKiA9PiBza2V3QW5pbWF0aW9uJywgW1xuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2tld1koNmRlZykgdHJhbnNsYXRlWSg4cHgpJyB9KSxcbiAgICAgICAgICBzdGFnZ2VyKDYwLCBbXG4gICAgICAgICAgICBhbmltYXRlKCczMjBtcyBlYXNlLW91dCcsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2tld1koMGRlZykgdHJhbnNsYXRlWSgwKScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnMjIwbXMgZWFzZS1pbicsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2tld1koLTZkZWcpIHRyYW5zbGF0ZVkoLThweCknIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHNsaWRlVXBGcm9tQm90dG9tJywgW1xuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDB2aCknIH0pLFxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJzUwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXG5cbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXG4gICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC01MHB4KScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgICBdKSxcblxuICAgICAgdHJhbnNpdGlvbignKiA9PiBzbGlkZUZyb21SaWdodCcsIFtcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwdncpJyB9KSxcbiAgICAgICAgICBzdGFnZ2VyKDYwLCBbXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCg1MHB4KScgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgICBdKSxcblxuXG5cbiAgICBdKVxuXG5cbiAgXSxcblxufSlcbmV4cG9ydCBjbGFzcyBEYXRhR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgQElucHV0KCkgcm93QW5pbWF0aW9uOiBSb3dBbmltYXRpb25UeXBlID0gUm93QW5pbWF0aW9uVHlwZS5Ob25lO1xuICBASW5wdXQoKSBwYWdpbmF0aW9uQ29uZmlnOiBhbnkgPSBudWxsO1xuICBASW5wdXQoKSBkYXRhU2V0OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSByb3dIZWlnaHQ6IG51bWJlciA9IDQ0O1xuICBASW5wdXQoKSBoZWFkZXJSb3dIZWlnaHQ6IG51bWJlciA9IDUwO1xuICBASW5wdXQoKSBzaG93VmVydGljYWxCb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICBASW5wdXQoKSBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2YyZjJmMic7XG4gIEBJbnB1dCgpIGhlYWRlckJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSBjaGVja2JveGVzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIHNob3dDb2x1bW5zR3JvdXBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcm93SG92ZXJDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ3JnYmEoMCwgMTIzLCAyNTUsIDAuMSknO1xuICBASW5wdXQoKSBsZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2Y2ZjhmZic7XG4gIEBJbnB1dCgpIGJvZHlCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgc2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcbiAgQElucHV0KCkgYm9keVRleHRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMwYzExMmInO1xuICBASW5wdXQoKSBoZWFkZXJUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMmExZjczJztcbiAgQElucHV0KCkgY2hlY2tib3hlc0NvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XG4gIEBJbnB1dCgpIGhlYWRlclRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xuICBASW5wdXQoKSBib2R5VGV4dEZvbnRzU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gMTQ7XG4gIEBJbnB1dCgpIGhlYWRlckZvbnRXZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDUwMDtcbiAgQElucHV0KCkgYm9keUZvbnRXZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDQwMDtcbiAgQElucHV0KCkgY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2FsaWNlYmx1ZSc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZjgnO1xuICBASW5wdXQoKSBmb290ZXJSb3dCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICBASW5wdXQoKSBmb290ZXJSb3dIZWlnaHQ6IG51bWJlciA9IDQ2O1xuICBASW5wdXQoKSB0b3BHcm91cGVkQmFkZ2VzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgQElucHV0KCkgc2hvd1Jvd3NHcm91cGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyUm93OiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvbnRGYWltbHk6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdzYW5zLXNlcmlmJztcbiAgQElucHV0KCkgc2hvd1NpZGVNZW51OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvb3RlclBhZGRpbmc6IG51bWJlciA9IDNcbiAgQElucHV0KCkgdG9wRmlsdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA1MDtcbiAgQElucHV0KCkgcm93U2hhZGluZ0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1NlcmlhbE51bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaW5nbGVTcGFBc3NldHNQYXRoOiBzdHJpbmcgPSAnYXNzZXRzLyc7XG4gIEBJbnB1dCgpIGZpbHRlcnNDb25maWc6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdmVydGljYWxTY3JvbGxiYXJXaWR0aDogJ2F1dG8nIHwgJ3RoaW4nID0gJ2F1dG8nO1xuICBASW5wdXQoKSBob3JpemludGFsU2Nyb2xsYmFyV2lkdGg6ICdhdXRvJyB8ICd0aGluJyA9ICdhdXRvJztcbiAgQElucHV0KCkgc2hvd0NlbGxEZXRhaWxzQm94OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIHRhYmxlU2VhcmNoOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYWN0aW9uczogYW55W10gPSBbJ2VkaXQnLCAnZGVsZXRlJ107XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICBASW5wdXQoKSBzZWxlY3RlZFRhYjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNob3dUYXNrYmFyID0gZmFsc2VcbiAgQElucHV0KCkgdGFibGVOYW1lID0gdHJ1ZVxuICBASW5wdXQoKSBsaXN0aW5nVHlwZTogc3RyaW5nIHwgYm9vbGVhbiA9ICcnO1xuICBASW5wdXQoKSBjaGVja2JveFN0YXRlOiB7IHJlc2V0OiBib29sZWFuIH0gPSB7IHJlc2V0OiB0cnVlIH1cbiAgQElucHV0KCkgdGFza2JhckFjdGlvbnM6IGFueVtdID0gW11cbiAgQElucHV0KCkgc29ydGluZ0NvbmZpZzogeyBmaWVsZDogc3RyaW5nLCBvcmRlcl9ieTogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgdGFibGVGaWx0ZXJWaWV3SWQ6IGFueSA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RlZFRhYmxlTGF5b3V0OiBhbnkgPSAnbWVkaXVtJ1xuICBASW5wdXQoKSBjbG9zZURyb3Bkb3duOiB7IHByZXNldDogeyBjbG9zZWQ6IGJvb2xlYW4sIGxvYWRpbmc6IGJvb2xlYW4gfSB9ID0geyBwcmVzZXQ6IHsgY2xvc2VkOiBmYWxzZSwgbG9hZGluZzogZmFsc2UgfSB9O1xuICBASW5wdXQoKSBnbG9iYWxTZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbmVzdGVkVGFibGVyb3dGb250c2l6ZSA9IDE0O1xuICBASW5wdXQoKSBuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodCA9IDQwO1xuICBASW5wdXQoKSBuZXN0ZWRUYWJsZXJvd0hlaWdodCA9IDQ1O1xuICBASW5wdXQoKSBwYWNrYWdlRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93VW5MaW5rOiBhbnk7XG4gIEBJbnB1dCgpIGdyaWRUeXBlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3VycmVuY3lTeW1ib2w6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjdXJyZW5jeUZvcm1hdDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxlZnRQaW5uZWRCb3hzaGFkb3c6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByaWdodFBpbm5lZEJveHNoYWRvdzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93c0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyM4YWM1ZmYnO1xuICBASW5wdXQoKSBuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xuICBASW5wdXQoKSBuZXN0ZWRUYWJsZVJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNlYWVhZWEnO1xuICBASW5wdXQoKSB0YWJsZVZpZXc6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGJ1dHRvbnM6IHsgbmFtZTogc3RyaW5nOyBpc19zaG93SWNvbjogYm9vbGVhbjsgaWNvbjogc3RyaW5nLCBoYXNfcGVybWlzc2lvbjogYm9vbGVhbiB9W10gPSBbXTtcbiAgQElucHV0KCkga2VlcE11bHRpcGxlRXhwYW5kZWREZXRhaWxzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dUb3RhbEFtb3VudFJvdyA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVHbG9iYWxTZWFyY2ggPSB0cnVlO1xuICBASW5wdXQoKSB0YWJsZVR5cGUgPSAnJztcbiAgQElucHV0KCkgZW5hYmxlRXhwb3J0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dGdWxsU2NyZWVuQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZUN1dCA9IGZhbHNlO1xuICBASW5wdXQoKSB0YWJzOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBzaG93Q2hlY2tib3hlcyA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dUYWJsZUxheW91dCA9IHRydWU7XG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFsxMCwgMjUsIDUwLCA3NSwgMTAwLCAxNTAsIDIwMCwgMjUwLCAzMDAsIDUwMF07XG4gIEBJbnB1dCgpIHJlc2V0QWxsRmlsdGVycyA9IHsgcmVzZXRBbGw6IGZhbHNlIH07XG4gIEBJbnB1dCgpIGRlZmF1bHRDb25maWc6IERhdGFHcmlkQ29uZmlnIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGNvbHVtblRocmVlZG90c011bnVDb25maWcgPSB7XG4gICAgc2hvd1BpbmxlZnQ6IHRydWUsXG4gICAgc2hvd1BpbnJpZ2h0OiB0cnVlLFxuICAgIHNob3dBc2NlbmRpbmc6IHRydWUsXG4gICAgc2hvd0Rlc2NlbmRpbmc6IHRydWUsXG4gICAgc2hvd0ZpbHRlcjogdHJ1ZSxcbiAgICBzaG93Um93c0dyb3VwaW5nOiB0aGlzLnNob3dSb3dzR3JvdXBpbmcsXG4gICAgc2hvd0F1dG9zaXplQWxsQ29sdW1uczogdHJ1ZSxcbiAgICBzaG93QXV0b3NpemVUaGlzQ29sdW1uOiBmYWxzZSxcbiAgICBzaG93Q2hvc2VDb2x1bW5zOiBmYWxzZSxcbiAgICBzaG93UmVzZXRDb2x1bW5zOiBmYWxzZSxcbiAgfTtcbiAgQElucHV0KCkgdmFsaWRhdGVJY29uOiBib29sZWFuID0gZmFsc2U7XG5cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgT3V0IFB1dCBFdmVudHNcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgQFZpZXdDaGlsZHJlbihDZWxsSG9zdERpcmVjdGl2ZSkgY2VsbEhvc3RzITogUXVlcnlMaXN0PENlbGxIb3N0RGlyZWN0aXZlPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VMYXlvdXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjdXN0b21DZWxsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBnZW5lcmljRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdGFibGVQcmVzZXRDb25maWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc29ydGluZ09yZGVyT3B0aW9uczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3Rpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgc3RvcmVQcmVzZXROYW1lOiBzdHJpbmcgPSAnJztcbiAgaXNGdWxsU2NyZWVuID0gZmFsc2U7XG4gIGFjdGl2ZVRhYjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGdyb3VwZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBhY3RpdmVDb2w6IGFueSA9IG51bGw7XG4gIGFjdGl2ZUZpbHRlckNlbGw6IGFueSA9IG51bGw7XG4gIHNob3dBY3Rpb25zRHJvcERvd24gPSBmYWxzZTtcbiAgc2lkZU1lbnVWaXNpYmxlID0gZmFsc2U7XG4gIHBpdm90TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICBjb2x1bW5TZWFyY2g6IHN0cmluZyA9ICcnO1xuICBleHBhbmRBbGxBY2NvcmRpYW5zID0gdHJ1ZTtcbiAgY3VycmVudE9wZW5lZFNpZGVNZW51ZTogJ2NvbHMnIHwgJ2ZpbHRycycgfCBudWxsID0gbnVsbDtcbiAgb3JpZ2luYWxDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBvcmlnaW5hbERhdGFTZXQ6IGFueVtdID0gW107XG4gIGFjdGl2ZVRvcEJ1dHRvbjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuICBmaWx0ZXJDb2x1bW5zTGlzdDogYW55W10gPSBbXTtcbiAgZ3JvdXBCb3hQYWRkaW5nID0gMjAwO1xuICBwcmVzZXROYW1lOiBzdHJpbmcgPSAnJztcbiAgcHJlc2V0RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHNlYXJjaFRleHRQcmVzZXRUYWJsZSA9ICcnO1xuICBhZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xuICBzZWFyY2hJbkRyb3Bkb3duID0gJyc7XG4gIHByaXZhdGUgc2VjcmV0S2V5ID0gJ3RiLXN1cGVyLWFkbWluJ1xuICBhZGRGaWx0ZXJEcm9wZG93blNlYXJjaCA9ICcnXG4gIHRvcFNob3dIaWRlQ29sdW1ucyA9ICcnO1xuICBjaG9zZUNvbHVtbnNTZWFyY2ggPSAnJ1xuICBzaWRlTmVzdGVkRmlsdGVyU2VhcmNoID0gJydcbiAgZWRpdGluRHJvcGRvd25TZWFyY2ggPSAnJztcbiAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvcmlnaW5hbEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIGZvbnRGYW1pbGllczogc3RyaW5nW10gPSBbXTtcbiAgZm9udFNpemVzOiBzdHJpbmdbXSA9IFsnOCcsICc5JywgJzEwJywgJzExJywgJzEyJywgJzE0JywgJzE2JywgJzE4JywgJzIwJywgJzI0J107XG4gIGhhc1Njcm9sbCA9IGZhbHNlO1xuICBsZWZ0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgY2VudGVyQ29sdW1uczogYW55W10gPSBbXTtcbiAgcmlnaHRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XG4gIHByZXZpZXdDZW50ZXJDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkQ29udGFpbmVyJylcbiAgZGF0YUdyaWRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndGFza01hbmFnZW1lbnRDb250YWluZXInKVxuICB0YXNrTWFuYWdlbWVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCduZXN0ZWRUYWJsZUNvbnRhaW5lcicpXG4gIG5lc3RlZFRhYmxlQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2xlZnRQaW5uZWRCb2R5JylcbiAgbGVmdFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY2VudGVyUGlubmVkQm9keScpXG4gIGNlbnRlclBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRCb2R5JylcbiAgcmlnaHRQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2xlZnRQaW5uZWRIZWFkZXInKVxuICBsZWZ0UGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEhlYWRlcicpXG4gIGNlbnRlclBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdyaWdodFBpbm5lZEhlYWRlcicpXG4gIHJpZ2h0UGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2dsb2JhbFNlYXJjaElucHV0JylcbiAgZ2xvYmFsU2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjb2x1bW5zR3JvdXBlZEJveCcpXG4gIGNvbHVtbnNHcm91cGVkQm94ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NlbnRlckZha2VTY3JvbGxiYXInKVxuICBjZW50ZXJGYWtlU2Nyb2xsYmFyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb2x1bW5TZXJ2aWNlOiBTcGxpdENvbHVtbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBjb21tb25TZXZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjb3B5U2VydmljZTogQ29weVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGZvcm1hdEN1cnJlbmN5OiBGb3JtYXRDdXJyZW5jeVBpcGUsXG4gICAgcHJpdmF0ZSBhY3Rpb25WYWxpZGF0b3I6IFJvd0FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uc1NlcnZpY2U6IFZhbGlkYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGh0bWxTYW5hdGl6ZXJTZXJ2aWNlOiBIdG1sQ29udGVudFNhbml0aXplclNlcnZpY2UsXG4gICAgcHVibGljIGNlbGxTZWxlY3Rpb25TZXJ2aWNlOiBDZWxsU2VsZWN0aW9uU2VydmljZSxcblxuICApIHsgfVxuXG4gIEBWaWV3Q2hpbGQoJ2NlbGxUZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGNlbGxUZXh0ITogYW55O1xuICBAVmlld0NoaWxkKCduZXN0ZWRIZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgbmVzdGVkSGVhZGVyITogRWxlbWVudFJlZjtcblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgICAgdGhpcy5jb21wdXRlVmlld3BvcnRSb3dzKCk7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcblxuICAgICAgaWYgKHRoaXMuY2VsbFRleHQpIHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5jZWxsVGV4dC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5yZW5kZXJDdXN0b21DZWxscygpO1xuICAgICAgdGhpcy5idWlsZFBhZ2VTaXplS2V5TWFwKCk7XG4gICAgfSwgMTAwMCk7XG5cbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5nZXRDb2x1bW5CeUluZGV4ID0gKGkpID0+IHRoaXMuY29sdW1ucy5maW5kKGMgPT4gYy5pbmRleCA9PT0gaSk7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS52ZXJ0aWNhbENvbnRhaW5lciA9IHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuaG9yaXpvbnRhbENvbnRhaW5lciA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnJvd0hlaWdodCA9IHRoaXMucm93SGVpZ2h0O1xuICAgIHRoaXMuZm9udEZhbWlsaWVzID0gdGhpcy5jb21tb25TZXZpY2UuZm9udEZhbWlsaWVzO1xuXG4gIH1cblxuICBjcmVhdGVDZWxsSW5qZWN0b3Iocm93OiBhbnksIGNvbDogYW55KTogSW5qZWN0b3Ige1xuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogJ3Jvd0RhdGEnLCB1c2VWYWx1ZTogcm93IH0sXG4gICAgICAgIHsgcHJvdmlkZTogJ2NvbERhdGEnLCB1c2VWYWx1ZTogY29sIH1cbiAgICAgIF0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcbiAgICB9KTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSByZW5kZXJDdXN0b21DZWxscygpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0cyA9IHRoaXMuY2VsbEhvc3RzLnRvQXJyYXkoKTtcbiAgICBsZXQgaG9zdEluZGV4ID0gMDtcblxuICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudmlzaWJsZVJvd3MpIHtcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIHRoaXMuY29sdW1ucykge1xuICAgICAgICBjb25zdCBob3N0ID0gaG9zdHNbaG9zdEluZGV4KytdO1xuICAgICAgICBpZiAoIWhvc3QgfHwgIWNvbC5jZWxsUmVuZGVyZXIpIGNvbnRpbnVlO1xuXG4gICAgICAgIGNvbnN0IHZpZXdDb250YWluZXIgPSBob3N0LnZpZXdDb250YWluZXJSZWY7XG4gICAgICAgIHZpZXdDb250YWluZXIuY2xlYXIoKTtcblxuICAgICAgICBjb25zdCBjb21wUmVmID0gdmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29sLmNlbGxSZW5kZXJlcik7XG5cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIHJvdyxcbiAgICAgICAgICBjb2wsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpLFxuICAgICAgICAgIGFwaTogdGhpcyxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoKGNvbXBSZWYuaW5zdGFuY2UgYXMgYW55KS5ncmlkSW5pdCkge1xuICAgICAgICAgIChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQocGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgc2hvdWxkUmVzdG9yZVNjcm9sbCA9IGZhbHNlO1xuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRTdHlsZXNUb0ltYWdlcygpO1xuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2hvdWxkUmVzdG9yZVNjcm9sbCAmJlxuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudFxuICAgICkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdDtcbiAgICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBsZWZ0O1xuICAgICAgICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBsZWZ0O1xuICAgICAgICB0aGlzLnNob3VsZFJlc3RvcmVTY3JvbGwgPSBmYWxzZTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUpIHtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRhdGVGb3JtYXQpIHtcbiAgICAgIGNvbnN0IHN0b3JlZERhdGVGb3JtYXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0ZWZvcm1hdCcpO1xuICAgICAgaWYgKHN0b3JlZERhdGVGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0ID0gc3RvcmVkRGF0ZUZvcm1hdCA/IEpTT04ucGFyc2Uoc3RvcmVkRGF0ZUZvcm1hdCkgOiAnZGQvTU0veXl5eSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmN1cnJlbmN5Rm9ybWF0KSB7XG4gICAgICBjb25zdCBzdG9yZWRDdXJyZW5jeUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW5jeUZvcm1hdCcpO1xuICAgICAgaWYgKHN0b3JlZEN1cnJlbmN5Rm9ybWF0KSB7XG4gICAgICAgIHRoaXMuY3VycmVuY3lGb3JtYXQgPSBzdG9yZWRDdXJyZW5jeUZvcm1hdCA/IEpTT04ucGFyc2Uoc3RvcmVkQ3VycmVuY3lGb3JtYXQpIDogJzEsMjM0LDU2Ny44OSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmN1cnJlbmN5U3ltYm9sKSB7XG4gICAgICBjb25zdCBzdG9yZWRDdXJyZW5jeVN5bWJvbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW5jeVN5bWJvbCcpO1xuICAgICAgaWYgKHN0b3JlZEN1cnJlbmN5U3ltYm9sKSB7XG4gICAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSBzdG9yZWRDdXJyZW5jeVN5bWJvbCA/IEpTT04ucGFyc2Uoc3RvcmVkQ3VycmVuY3lTeW1ib2wpIDogJyQnO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgZGF0YVNldExvYWRpbmcgPSBmYWxzZTtcbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmFzc2lnblVuaXF1ZUNvbHVtbkluZGV4ZXModGhpcy5jb2x1bW5zKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q29sdW1uc0NvbHVtbkRyb3Bkb3duVmFsdXMoKTtcblxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWyd0YWJzJ10pIHtcbiAgICAgIGlmIChjaGFuZ2VzWyd0YWJzJ10pIHtcbiAgICAgICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcbiAgICAgICAgbGV0IHNhdmVkVGFiXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPyAoc2F2ZWRUYWIgPSB0aGlzLnNlbGVjdGVkVGFiKSA6IChzYXZlZFRhYiA9IGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdKVxuICAgICAgICAvLyBjb25zdCBzYXZlZFRhYiA9IGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdO1xuICAgICAgICBpZiAodGhpcy50YWJzLmluY2x1ZGVzKCdDdXJyZW50IFBvbGljeScpKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnM/LlsxXSB8fCAnQ3VycmVudCBQb2xpY3knO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gc2F2ZWRUYWIgfHwgdGhpcy50YWJzPy5bMF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiAodGhpcy50YWJsZVR5cGUpIHtcbiAgICAgICAgLy8gICB0aGlzLnNldEFjdGl2ZVRhYih0aGlzLmFjdGl2ZVRhYik7XG4gICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnNDb25maWcnXSkge1xuICAgICAgdGhpcy5jaGVja0ZpbHRlckNoYW5nZXNFZmZlY3QoKTtcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXT8uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYXV0b1NpemVDb2x1bW5zQnlSYXRpbyh0cnVlKTtcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XG5cbiAgICAgIHRoaXMub3JpZ2luYWxDb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjb2wgPT4gKHtcbiAgICAgICAgLi4uY29sLFxuICAgICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXG4gICAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZVxuICAgICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXG4gICAgICAgICAgOiBbXSxcbiAgICAgIH0pKTtcblxuXG4gICAgICBpZiAodGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuc2V0U2VjdGlvbnNXaWR0aCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydkYXRhU2V0J10pIHtcbiAgICAgIHRoaXMuZGF0YVNldCA9IHRoaXMuZGF0YVNldD8ubWFwKChyb3csIGkpID0+ICh7XG4gICAgICAgIC4uLnJvdyxcbiAgICAgICAgX192aXJ0dWFsSW5kZXg6IGkgKyAxLFxuICAgICAgfSkpO1xuICAgICAgdGhpcy5vcmlnaW5hbERhdGFTZXQgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5kYXRhU2V0KTtcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuZGF0YVNldCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0O1xuICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcblxuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbXB1dGVWaWV3cG9ydFJvd3MoKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2V2aWNlPy5tYWluQ29udGFpbmVyTGVmdCA+IDIwMClcbiAgICAgICAgICB0aGlzLnNob3VsZFJlc3RvcmVTY3JvbGwgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuY2VudGVyUGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHZvaWQgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgICAgICB0aGlzLmRhdGFTZXRMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID1cbiAgICAgICAgICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmRhdGFTZXRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFwcGx5Um93c1NlbGVjdGlvblN0YXRlKCk7XG5cbiAgICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLmZvckVhY2goZ3JvdXBlZENvbCA9PiB7XG4gICAgICAgICAgdGhpcy5tYXJrQ29sdW1uQXNHcm91cGVkKHRoaXMuY29sdW1ucywgZ3JvdXBlZENvbC5maWVsZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xuXG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY2hlY2tib3hTdGF0ZSddPy5jdXJyZW50VmFsdWU/LnJlc2V0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcblxuICAgICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgICBjb25zdCBldmVudCA9IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgICAgIG9iajogaWRzLFxuICAgICAgICB9LFxuICAgICAgICBldmVudFR5cGU6ICdvblNlbGVjdFJvdycsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcblxuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY2xvc2VEcm9wZG93biddICYmIHRoaXMuY2xvc2VEcm9wZG93bi5wcmVzZXQuY2xvc2VkKSB7XG4gICAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IG51bGw7XG4gICAgICB0aGlzLnByZXNldEZpbHRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5wcmVzZXROYW1lID0gJyc7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydyZXNldEFsbEZpbHRlcnMnXSAmJiB0aGlzLnJlc2V0QWxsRmlsdGVycy5yZXNldEFsbCkge1xuICAgICAgdGhpcy5jbGVhckFsbEZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sndGFibGVWaWV3J10pIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWV3VmFsdWUgPSB0aGlzLnRhYmxlVmlldztcbiAgICAgICAgbGV0IHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcbiAgICAgICAgICA/IHZpZXdWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5pc190ZW1wKVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICBpZiAoIXRlbXByb3J5U2VsZWN0ZWQpIHtcbiAgICAgICAgICB0ZW1wcm9yeVNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2aWV3VmFsdWUpXG4gICAgICAgICAgICA/IHZpZXdWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5pc19kZWZhdWx0KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSB0ZW1wcm9yeVNlbGVjdGVkIHx8IG51bGw7XG4gICAgICAgIHRoaXMucHJlc2V0TmFtZSA9IHRlbXByb3J5U2VsZWN0ZWQ/Lm5hbWUgfHwgJyc7XG4gICAgICAgIHRoaXMuc3RvcmVQcmVzZXROYW1lID0gdGVtcHJvcnlTZWxlY3RlZD8ubmFtZSB8fCAnJztcbiAgICAgICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSB0ZW1wcm9yeVNlbGVjdGVkPy5hY3RpdmVGaWx0ZXJzIHx8IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUpIHtcbiAgICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcucm93U2hhZGluZ0VuYWJsZWQ7XG4gICAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXI7XG4gICAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuZm9udEZhaW1seTtcbiAgICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQ7XG4gICAgICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplO1xuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmdsb2JhbFNlYXJjaDtcbiAgICAgICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCk7XG4gICAgICAgICAgdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yID0gdGVtcHJvcnlTZWxlY3RlZD8uY29uZmlnPy5vZGRSb3dzQmFja2dyb3VuZENvbG9yIHx8ICcjZjFmMWYxJztcbiAgICAgICAgICBjb25zdCBncm91cGVkQ29sdW1ucyA9IHRlbXByb3J5U2VsZWN0ZWQ/LmNvbmZpZz8uZ3JvdXBlZENvbHVtbnM7XG4gICAgICAgICAgaWYgKGdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMgPSBzdHJ1Y3R1cmVkQ2xvbmUoZ3JvdXBlZENvbHVtbnMpO1xuICAgICAgICAgICAgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLmRhdGFTZXQsIHRoaXMuZ3JvdXBlZENvbHVtbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0Q29uZmlnKSB7XG4gICAgICAgICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9IHRoaXMuZGVmYXVsdENvbmZpZy5yb3dTaGFkaW5nRW5hYmxlZCB8fCBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IHRoaXMuZGVmYXVsdENvbmZpZy5zaG93VmVydGljYWxCb3JkZXIgfHwgZmFsc2U7XG4gICAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gdGhpcy5kZWZhdWx0Q29uZmlnLmZvbnRGYWltbHkgfHwgJ0ludGVyJztcbiAgICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmRlZmF1bHRDb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSB8fCAxNDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSB0aGlzLmRlZmF1bHRDb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dDtcbiAgICAgICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gdGhpcy5kZWZhdWx0Q29uZmlnLmJvZHlUZXh0Rm9udHNTaXplIHx8IDE0O1xuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9IHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWxTZWFyY2g7XG4gICAgICAgICAgdGhpcy5zZXRUYWJsZUxheW91dCh0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQpO1xuICAgICAgICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gdGhpcy5kZWZhdWx0Q29uZmlnPy5ncm91cGVkQ29sdW1ucztcbiAgICAgICAgICBpZiAoZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucyA9IHN0cnVjdHVyZWRDbG9uZShncm91cGVkQ29sdW1ucyk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMuZGF0YVNldCwgdGhpcy5ncm91cGVkQ29sdW1ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZm9udEZhaW1seSA9ICdJbnRlcic7XG4gICAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0IHx8ICdtZWRpdW0nO1xuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcbiAgICAgICAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgICB0aGlzLnByZXNldE5hbWUgPSAnJ1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydwYWdlU2l6ZU9wdGlvbnMnXSAmJiBjaGFuZ2VzWydwYWdlU2l6ZU9wdGlvbnMnXT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmJ1aWxkUGFnZVNpemVLZXlNYXAoKTtcbiAgICB9XG5cbiAgfVxuXG4gIGFzeW5jIHNldENvbHVtbnNDb2x1bW5Ecm9wZG93blZhbHVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jb2x1bW5zKSByZXR1cm47XG4gICAgdGhpcy5jb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuY29weURyb3Bkb3duRGF0YVJlY3Vyc2l2ZWx5KHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBhcHBseVJvd3NTZWxlY3Rpb25TdGF0ZSgpIHtcbiAgICBjb25zdCBzZWxlY3RlZElkc0Zyb21TdGF0ZSA9IHRoaXMucmVzdG9yZVNlbGVjdGlvbih0aGlzLnRhYmxlVHlwZSk7XG4gICAgaWYgKHNlbGVjdGVkSWRzRnJvbVN0YXRlLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgICAgb2JqOiBpZHNcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXG4gICAgICB9XG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBjbGVhclNlbGVjdGlvblN0YXRlKHRhYmxlVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XG4gICAgaWYgKHN0b3JlZC5zZWxlY3RlZFJvd3MgJiYgc3RvcmVkLnNlbGVjdGVkUm93c1t0YWJsZVR5cGVdKSB7XG4gICAgICBkZWxldGUgc3RvcmVkLnNlbGVjdGVkUm93c1t0YWJsZVR5cGVdO1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICdkYXRhdGFibGVTZWxlY3Rpb25zJyxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHN0b3JlZClcbiAgICApO1xuICB9XG5cblxuXG4gIGFzeW5jIGFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpIHtcbiAgICBjb25zdCB1cGRhdGVkQ29sdW1ucyA9IGF3YWl0IHRoaXMuY29tbW9uU2V2aWNlLmFwcGx5RmlsdGVyc1RvQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XG4gICAgdGhpcy5jb2x1bW5zID0gWy4uLnVwZGF0ZWRDb2x1bW5zXTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgYXN5bmMgdXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCBwcmVwYXJlZCA9IHRoaXMuY29sdW1uU2VydmljZS5wcmVwYXJlQ29sdW1ucyhcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXG4gICAgICApO1xuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gbGVmdDtcbiAgICB0aGlzLmNlbnRlckNvbHVtbnMgPSBjZW50ZXI7XG4gICAgdGhpcy5yaWdodFBpbm5lZENvbHVtbnMgPSByaWdodDtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hQcmV2aWV3Q29sdW1ucyhjb2x1bW5zOiBhbnkgPSBudWxsKSB7XG4gICAgaWYgKCF0aGlzLmRhdGFHcmlkQ29udGFpbmVyKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZGF0YUdyaWRDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgIC8vIFdyYXAgcHJlcGFyZUNvbHVtbnMgaW4gYSBQcm9taXNlIHRvIG1ha2UgaXQgYXdhaXRhYmxlXG4gICAgY29uc3QgeyBsZWZ0LCBjZW50ZXIsIHJpZ2h0IH06IGFueSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLmNvbHVtblNlcnZpY2UucHJlcGFyZUNvbHVtbnMoXG4gICAgICAgIGNvbHVtbnMgPyBjb2x1bW5zIDogdGhpcy5jb2x1bW5zLFxuICAgICAgICBjb250YWluZXJXaWR0aFxuICAgICAgKTtcbiAgICAgIHJlc29sdmUocHJlcGFyZWQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xuICAgIHRoaXMucHJldmlld0NlbnRlckNvbHVtbnMgPSBjZW50ZXI7XG4gICAgdGhpcy5wcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zID0gcmlnaHQ7XG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBhc3luYyBTZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCkge1xuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XG5cbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1uU2VydmljZS5hc3NpZ25EZWZhdWx0V2lkdGhzKFxuICAgICAgdGhpcy5jb2x1bW5zLFxuICAgICAgY29udGFpbmVyV2lkdGhcbiAgICApO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAwKSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBzZXRTZWN0aW9uc1dpZHRoKCkge1xuICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubGVmdC1waW5uZWQtYm9keScpIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnLmNlbnRlci1zY3JvbGxhYmxlLWJvZHknXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yaWdodC1waW5uZWQtYm9keScpIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChsZWZ0KSB7XG4gICAgICBsZWZ0LnN0eWxlLm1pbldpZHRoID0gYCR7dGhpcy5sZWZ0UGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9YDtcbiAgICB9XG4gICAgaWYgKGNlbnRlcikge1xuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9YDtcbiAgICB9XG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICBsZWZ0LnN0eWxlLm1pbldpZHRoID0gYCR7dGhpcy5yaWdodFBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XG4gICAgfVxuICB9XG5cbiAgZmFrZVNjcm9sbGJhclNjcm9sbExlZnQgPSAwO1xuICBnZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKCFvYmogfHwgIWZpZWxkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkLnNwbGl0KCcuJykucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYyAmJiBhY2NbcGFydF0sIG9iaik7XG4gICAgaWYgKHRoaXMuaXNTdGF0dXNGaWVsZChmaWVsZCkgJiYgdmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSA/IHRoaXMuY2FwaXRhbGl6ZVN0YXR1cyh2YWx1ZS52YWx1ZSkgOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICBuYW1lOiB2YWx1ZS5uYW1lID8gdGhpcy5jYXBpdGFsaXplU3RhdHVzKHZhbHVlLm5hbWUpIDogdmFsdWUubmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXBpdGFsaXplU3RhdHVzKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgaXNOZXN0ZWRWYWx1ZUFycmF5KG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFvYmogfHwgIWZpZWxkKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgdmFsdWUgPSBmaWVsZFxuICAgICAgLnNwbGl0KCcuJylcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gKGFjYyAmJiBhY2NbcGFydF0gIT09IHVuZGVmaW5lZCA/IGFjY1twYXJ0XSA6IHVuZGVmaW5lZCksIG9iaik7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9XG5cbiAgb25SZXNpemVHcm91cChldmVudDogTW91c2VFdmVudCwgY29sOiBhbnksIGlzUmlnaHRQaW5uZWQgPSBmYWxzZSk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gY29sLmNoaWxkcmVuO1xuICAgIGlmICghY2hpbGRyZW4/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgLy8g8J+UpSBDYWNoZSBET00gKyBpbml0aWFsIHdpZHRocyBvbmNlXG4gICAgY29uc3QgY2hpbGRNZXRhID0gY2hpbGRyZW4ubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50cyA9IEFycmF5LmZyb20oXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KGBbZmllbGQ9XCIke2NoaWxkLmZpZWxkfVwiXWApXG4gICAgICApO1xuXG4gICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnRzWzBdPy5vZmZzZXRXaWR0aCB8fCA4MDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmllbGQ6IGNoaWxkLmZpZWxkLFxuICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgaW5pdGlhbFdpZHRoOiB3aWR0aCxcbiAgICAgICAgcmF0aW86IDAsICAgICAgIC8vIGZpbGxlZCBsYXRlclxuICAgICAgICBmaW5hbFdpZHRoOiB3aWR0aFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRvdGFsSW5pdGlhbFdpZHRoID0gY2hpbGRNZXRhLnJlZHVjZShcbiAgICAgIChzdW06IGFueSwgYzogYW55KSA9PiBzdW0gKyBjLmluaXRpYWxXaWR0aCxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgLy8g8J+UpSBQcmVjb21wdXRlIHJhdGlvcyBvbmNlXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZE1ldGEpIHtcbiAgICAgIGNoaWxkLnJhdGlvID0gY2hpbGQuaW5pdGlhbFdpZHRoIC8gdG90YWxJbml0aWFsV2lkdGg7XG4gICAgfVxuXG4gICAgLy8g8J+UpSBDYWNoZSBncm91cCBoZWFkZXIgb25jZVxuICAgIGNvbnN0IGdyb3VwSGVhZGVyRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcbiAgICAgIGBbZ3JvdXA9XCIke2NvbC5oZWFkZXJ9XCJdYFxuICAgICk7XG5cbiAgICBsZXQgbGF0ZXN0RGVsdGEgPSAwO1xuICAgIGxldCByYWZJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCBhcHBseVdpZHRocyA9ICgpID0+IHtcbiAgICAgIHJhZklkID0gbnVsbDtcblxuICAgICAgbGV0IHRvdGFsTmV3V2lkdGggPSAwO1xuXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkTWV0YSkge1xuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KFxuICAgICAgICAgIGNoaWxkLmluaXRpYWxXaWR0aCArIGxhdGVzdERlbHRhICogY2hpbGQucmF0aW8sXG4gICAgICAgICAgODBcbiAgICAgICAgKTtcblxuICAgICAgICBjaGlsZC5maW5hbFdpZHRoID0gbmV3V2lkdGg7XG4gICAgICAgIHRvdGFsTmV3V2lkdGggKz0gbmV3V2lkdGg7XG5cbiAgICAgICAgY29uc3Qgd2lkdGhQeCA9IGAke25ld1dpZHRofXB4YDtcbiAgICAgICAgZm9yIChjb25zdCBlbCBvZiBjaGlsZC5lbGVtZW50cykge1xuICAgICAgICAgIGVsLnN0eWxlLndpZHRoID0gd2lkdGhQeDtcbiAgICAgICAgICBlbC5zdHlsZS5taW5XaWR0aCA9IHdpZHRoUHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGdyb3VwSGVhZGVyRWwpIHtcbiAgICAgICAgZ3JvdXBIZWFkZXJFbC5zdHlsZS53aWR0aCA9IGAke3RvdGFsTmV3V2lkdGh9cHhgO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSBkZWx0YVggPSAtZGVsdGFYO1xuXG4gICAgICAvLyDwn5SlIFByZXZlbnQgc2hyaW5raW5nIGJlbG93IG1pblxuICAgICAgaWYgKHRvdGFsSW5pdGlhbFdpZHRoICsgZGVsdGFYIDwgY2hpbGRyZW4ubGVuZ3RoICogODApIHJldHVybjtcblxuICAgICAgbGF0ZXN0RGVsdGEgPSBkZWx0YVg7XG5cbiAgICAgIGlmIChyYWZJZCA9PT0gbnVsbCkge1xuICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShhcHBseVdpZHRocyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTW91c2VVcCA9ICgpID0+IHtcbiAgICAgIC8vIPCflKUgQ29tbWl0IHdpZHRocyBPTkNFXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkTWV0YSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKFxuICAgICAgICAgIGNoaWxkLmZpZWxkLFxuICAgICAgICAgIGNoaWxkLmZpbmFsV2lkdGhcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcbiAgICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcblxuICAgICAgaWYgKHJhZklkICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXAsIHsgb25jZTogdHJ1ZSB9KTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChmaWVsZDogc3RyaW5nLCB3aWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlID0gKGNvbHVtbnM6IGFueVtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIHVwZGF0ZShjb2wuY2hpbGRyZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgICBjb2wud2lkdGggPSB3aWR0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB1cGRhdGUodGhpcy5jb2x1bW5zKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQsXG4gICAgICB0YWJsZV9jb25maWc6IHtcbiAgICAgICAgcm93U2hhZGluZ0VuYWJsZWQ6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgfHwgZmFsc2UsXG4gICAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIgfHwgZmFsc2UsXG4gICAgICAgIGZvbnRGYWltbHk6IHRoaXMuZm9udEZhaW1seSB8fCAnSW50ZXInLFxuICAgICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiBOdW1iZXIodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplKSB8fCAxNCxcbiAgICAgICAgc2VsZWN0ZWRUYWJsZUxheW91dDogdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0IHx8ICdtZWRpdW0nLFxuICAgICAgICBib2R5VGV4dEZvbnRzU2l6ZTogTnVtYmVyKHRoaXMuYm9keVRleHRGb250c1NpemUpIHx8IDE0LFxuICAgICAgICBnbG9iYWxTZWFyY2g6IHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCxcbiAgICAgICAgZmlsdGVyTmFtZXM6ICcnLFxuICAgICAgICB0b3RhbENvdW50OiAwLFxuICAgICAgICBhY3RpdmVGaWx0ZXJzOiB0cnVlLFxuICAgICAgICBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiAnI2YxZjFmMSdcbiAgICAgIH0sXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9XG4gIH1cblxuICBjbGVhbkNvbHVtbnMoY29sdW1uczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGNvbHVtbnMubWFwKChjb2wpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgX190eXBlbmFtZSxcbiAgICAgICAgX2lkLFxuICAgICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWUsXG4gICAgICAgIGZpbHRlclZhbHVlLFxuICAgICAgICBleHBhbmRlZEZpbHRlcixcbiAgICAgICAgY2VsbFJlbmRlcmVyLFxuICAgICAgICBmaWx0ZXJSZW5kZXJlcixcbiAgICAgICAgY2VsbENvbXBvbmVudFJlZixcbiAgICAgICAgcXVlcnksXG4gICAgICAgIGlzUm93R3JvdXBlZCxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIC4uLnJlc3RcbiAgICAgIH0gPSBjb2w7XG5cbiAgICAgIC8vIENsZWFuIGRyb3Bkb3duIHZhbHVlcyAoX190eXBlbmFtZSByZW1vdmVkKVxuICAgICAgY29uc3QgY2xlYW5lZERyb3Bkb3duID0gQXJyYXkuaXNBcnJheShjb2x1bW5fZHJvcGRvd25fdmFsdWUpXG4gICAgICAgID8gY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLm1hcCgoeyBfX3R5cGVuYW1lLCAuLi5kUmVzdCB9KSA9PiBkUmVzdClcbiAgICAgICAgOiBjb2x1bW5fZHJvcGRvd25fdmFsdWVcbiAgICAgICAgICA/ICgoeyBfX3R5cGVuYW1lLCAuLi5kUmVzdCB9KSA9PiBkUmVzdCkoY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgLy8gQ2xlYW4gcXVlcnkgKF9fdHlwZW5hbWUgcmVtb3ZlZClcbiAgICAgIGNvbnN0IGNsZWFuZWRRdWVyeSA9IEFycmF5LmlzQXJyYXkocXVlcnkpXG4gICAgICAgID8gcXVlcnkubWFwKCh7IF9fdHlwZW5hbWUsIC4uLnFSZXN0IH0pID0+IHFSZXN0KVxuICAgICAgICA6IHF1ZXJ5XG4gICAgICAgICAgPyAoKHsgX190eXBlbmFtZSwgX2lkcywgLi4ucVJlc3QgfSkgPT4gcVJlc3QpKHF1ZXJ5KVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjbGVhbmVkRHJvcGRvd24sXG4gICAgICAgIHF1ZXJ5OiBjbGVhbmVkUXVlcnksXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLy8gb25SZXNpemVDb2x1bW4oZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbDogYW55KTogdm9pZCB7XG4gIC8vICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgLy8gICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAvLyAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG5cbiAgLy8gICBjb25zdCB0YXJnZXRFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gIC8vICAgICBgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYFxuICAvLyAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gIC8vICAgY29uc3QgaW5pdGlhbFdpZHRoID0gdGFyZ2V0RWw/Lm9mZnNldFdpZHRoIHx8IDE1MDtcblxuICAvLyAgIGNvbnN0IG1hdGNoaW5nRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCk7XG5cbiAgLy8gICAvLyDwn5GJIEFkZCBoaWdobGlnaHQgd2hpbGUgcmVzaXppbmdcbiAgLy8gICBpZiAoY29sPy5waW5uZWQgPT0gJ3JpZ2h0Jykge1xuICAvLyAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgLy8gICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdyZXNpemluZy1oaWdobGlnaHQtcmlnaHQnKTtcbiAgLy8gICAgIH0pO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xuICAvLyAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5hZGQoJ3Jlc2l6aW5nLWhpZ2hsaWdodCcpO1xuICAvLyAgICAgfSk7XG4gIC8vICAgfVxuXG4gIC8vICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gIC8vICAgICBsZXQgZGVsdGFYID0gbW92ZUV2ZW50LmNsaWVudFggLSBzdGFydFg7XG5cbiAgLy8gICAgIC8vIPCfkYkgUmV2ZXJzZSBpZiB0aGUgY29sdW1uIGlzIHBpbm5lZCB0byB0aGUgcmlnaHRcbiAgLy8gICAgIGlmIChjb2wucGlubmVkID09PSAncmlnaHQnKSB7XG4gIC8vICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7XG4gIC8vICAgICB9XG5cbiAgLy8gICAgIGxldCBuZXdXaWR0aCA9IGluaXRpYWxXaWR0aCArIGRlbHRhWDtcbiAgLy8gICAgIGlmIChuZXdXaWR0aCA8IDgwKSByZXR1cm47XG5cbiAgLy8gICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XG4gIC8vICAgICAgIGNvbnN0IGVsZW1lbnQgPSBlbCBhcyBIVE1MRWxlbWVudDtcbiAgLy8gICAgICAgZWxlbWVudC5zdHlsZS5taW5XaWR0aCA9IGAke25ld1dpZHRofXB4YDtcbiAgLy8gICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcbiAgLy8gICAgIH0pO1xuXG4gIC8vICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgbmV3V2lkdGgpO1xuICAvLyAgICAgY29sLndpZHRoID0gbmV3V2lkdGg7XG4gIC8vICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuICAvLyAgIH07XG5cbiAgLy8gICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gIC8vICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xuICAvLyAgICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgLy8gICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAvLyAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAvLyAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgLy8gICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxuICAvLyAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgLy8gICAgIH07XG4gIC8vICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG5cbiAgLy8gICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XG4gIC8vICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LnJlbW92ZSgncmVzaXppbmctaGlnaGxpZ2h0Jyk7XG4gIC8vICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LnJlbW92ZSgncmVzaXppbmctaGlnaGxpZ2h0LXJpZ2h0Jyk7XG4gIC8vICAgICB9KTtcblxuICAvLyAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgLy8gICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgLy8gICB9O1xuXG4gIC8vICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgLy8gICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gIC8vIH1cblxuICBvblJlc2l6ZUNvbHVtbihldmVudDogTW91c2VFdmVudCwgY29sOiBhbnkpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3Qgc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcblxuICAgIC8vIPCflKUgQ2FjaGUgRE9NIG9uY2VcbiAgICBjb25zdCBlbGVtZW50cyA9IEFycmF5LmZyb20oXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihgW2ZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYClcbiAgICApO1xuXG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IGVsZW1lbnRzWzBdLm9mZnNldFdpZHRoIHx8IDE1MDtcbiAgICBjb25zdCBpc1JpZ2h0UGlubmVkID0gY29sLnBpbm5lZCA9PT0gJ3JpZ2h0JztcbiAgICBjb25zdCBoaWdobGlnaHRDbGFzcyA9IGlzUmlnaHRQaW5uZWRcbiAgICAgID8gJ3Jlc2l6aW5nLWhpZ2hsaWdodC1yaWdodCdcbiAgICAgIDogJ3Jlc2l6aW5nLWhpZ2hsaWdodCc7XG5cbiAgICAvLyDwn5SlIEFkZCBoaWdobGlnaHQgb25jZVxuICAgIGVsZW1lbnRzLmZvckVhY2goZWwgPT4gZWwuY2xhc3NMaXN0LmFkZChoaWdobGlnaHRDbGFzcykpO1xuXG4gICAgbGV0IGxhdGVzdFdpZHRoID0gaW5pdGlhbFdpZHRoO1xuICAgIGxldCByYWZJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCBhcHBseVdpZHRoID0gKCkgPT4ge1xuICAgICAgcmFmSWQgPSBudWxsO1xuXG4gICAgICBjb25zdCB3aWR0aFB4ID0gYCR7bGF0ZXN0V2lkdGh9cHhgO1xuICAgICAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50cykge1xuICAgICAgICBlbC5zdHlsZS53aWR0aCA9IHdpZHRoUHg7XG4gICAgICAgIGVsLnN0eWxlLm1pbldpZHRoID0gd2lkdGhQeDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBsZXQgZGVsdGFYID0gbW92ZUV2ZW50LmNsaWVudFggLSBzdGFydFg7XG4gICAgICBpZiAoaXNSaWdodFBpbm5lZCkgZGVsdGFYID0gLWRlbHRhWDtcblxuICAgICAgY29uc3QgbmV3V2lkdGggPSBpbml0aWFsV2lkdGggKyBkZWx0YVg7XG4gICAgICBpZiAobmV3V2lkdGggPCA4MCkgcmV0dXJuO1xuXG4gICAgICBsYXRlc3RXaWR0aCA9IG5ld1dpZHRoO1xuXG4gICAgICBpZiAocmFmSWQgPT09IG51bGwpIHtcbiAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYXBwbHlXaWR0aCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTW91c2VVcCA9ICgpID0+IHtcbiAgICAgIGNvbC53aWR0aCA9IGxhdGVzdFdpZHRoO1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIGxhdGVzdFdpZHRoKTtcbiAgICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XG4gICAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkge1xuICAgICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcblxuICAgICAgZWxlbWVudHMuZm9yRWFjaChlbCA9PiBlbC5jbGFzc0xpc3QucmVtb3ZlKGhpZ2hsaWdodENsYXNzKSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuXG4gICAgICBpZiAocmFmSWQgIT09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCwgeyBvbmNlOiB0cnVlIH0pO1xuICB9XG5cblxuXG5cbiAgb25SZXNpemVHcm91cEJveChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xuXG4gICAgY29uc3QgdGFyZ2V0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JvdXBCb3hIZWFkZXJEaXYnKTtcbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSB0YXJnZXRFbD8ub2Zmc2V0V2lkdGggfHwgMTUwO1xuXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcblxuICAgICAgbGV0IG5ld1dpZHRoID0gaW5pdGlhbFdpZHRoICsgZGVsdGFYO1xuICAgICAgaWYgKG5ld1dpZHRoIDwgMTAwKSBuZXdXaWR0aCA9IDEwMDtcblxuICAgICAgaWYgKHRhcmdldEVsKSB7XG4gICAgICAgIHRhcmdldEVsLnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xuICAgICAgICB0YXJnZXRFbC5zdHlsZS5taW5XaWR0aCA9IGAke25ld1dpZHRofXB4YDtcbiAgICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSBuZXdXaWR0aDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25Nb3VzZVVwID0gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gIH1cblxuICBvblBhc3RlSW5GaWx0ZXJSb3dTZWFyY2goZXZlbnQ6IENsaXBib2FyZEV2ZW50LCBjb2w6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vbkZpbHRlckNoYW5nZShjb2wpO1xuICAgICAgdGhpcy5hcHBseURyb3Bkb3duRmlsdGVyKCk7XG4gICAgfSk7XG4gIH1cblxuICBvbkZpbHRlckNoYW5nZShjb2w6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gY29sLmZpbHRlclZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XG4gICAgaWYgKCFjb2w/LnF1ZXJ5KSB7XG4gICAgICBjb2wucXVlcnkgPSB7XG4gICAgICAgIGZpcnN0X2NvbmRpdGlvbjogY29sLnR5cGUgPT0gJ2RhdGUnID8gJ2VxdWFsJyA6ICdjb250YWluJyxcbiAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXG4gICAgICAgIHNlY29uZF92YWx1ZTogbnVsbCxcbiAgICAgICAgY29uZGl0aW9uOiBudWxsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbC5xdWVyeS5maXJzdF92YWx1ZSA9IGZpbHRlclZhbHVlO1xuICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGZpbHRlclZhbHVlO1xuICB9XG5cbiAgZ2V0IGJvZHlXcmFwcGVySGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuc2hvd0NvbHVtbnNHcm91cGluZyAmJiB0aGlzLnNob3dGaWx0ZXJSb3cgPyAzIDogKHRoaXMuc2hvd0NvbHVtbnNHcm91cGluZyB8fCB0aGlzLnNob3dGaWx0ZXJSb3cgPyAyIDogMSk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5oZWFkZXJSb3dIZWlnaHQgKiByb3dzICsgKHRoaXMuaGFzU2Nyb2xsID8gMTcgOiAwKTtcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7b2Zmc2V0fXB4KWA7XG4gIH1cblxuICBob3ZlcmVkUm93SWQ6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBvblJvd0hvdmVyKHJvdzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5ob3ZlcmVkUm93SWQgPSByb3cuX2lkIHx8IHJvdy5pZDtcbiAgfVxuXG4gIG9uUm93TGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5ob3ZlcmVkUm93SWQgPSBudWxsO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLm9wZW5JbmRleCA9IG51bGw7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuaGFzUGFyZW50V2l0aENsYXNzKHRhcmdldCwgW1xuICAgICAgICAndGhyZWUtZG90cycsXG4gICAgICAgICdmaWx0ZXItaWNvbi13cmFwcGVyJyxcbiAgICAgICAgJ2NvbHVtbi1tZW51JyxcbiAgICAgICAgJ2ZpbHRlci1tZW51JyxcbiAgICAgIF0pXG4gICAgKSB7XG4gICAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBpbnNpZGVUb3BGaWx0ZXJSb3cgPSB0YXJnZXQuY2xvc2VzdCgnLmZpbHRlci10YWdzJykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5hZGQtZmlsdGVyLWJ1dHRvbi1tZW51JykgfHxcbiAgICAgIHRhcmdldC5jbG9zZXN0KCcudGFibGUtcmlnaHQtdG9wLWFjdGlvbnMnKSB8fCB0YXJnZXQuY2xvc2VzdCgnLnRhYmxlLWxheW91dCcpIHx8IHRhcmdldC5jbG9zZXN0KCcuZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlcicpO1xuICAgIGNvbnN0IGlzQ2xpY2tlZEluc2lkZVRocmVlRG90c0ZpbHRlciA9IHRhcmdldC5jbG9zZXN0KCcudGhyZWUtZG90cy1maWx0ZXInKSB8fCB0YXJnZXQuY2xvc2VzdCgnLmZpbHRlci1tZW51LWNvbnRhaW5lcicpO1xuICAgIGlmICghaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyKSB7XG4gICAgICB0aGlzLmNsb3NlVGhyZWVEb3RzTWVudUZpbHRlcigpO1xuICAgIH1cbiAgICBpZiAoIWluc2lkZVRvcEZpbHRlclJvdykge1xuICAgICAgdGhpcy5jbG9zZUZpbHRlckRyb3Bkb3ducyhldmVudCk7XG4gICAgfVxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5zZXQtZGVmYXVsdC1wcmVzZXQnKSkge1xuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNldC1kZWZhdWx0LXByZXNldCcpPy5jbGFzc0xpc3Q/LnJlbW92ZSgnc2hvdycpO1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5mdWxsLXRleHQtYm94JykgJiYgIXRhcmdldC5jbG9zZXN0KCcuZGF0YS1ncmlkLWhlYWRlci13cmFwcGVyJykpIHtcbiAgICAgIHRoaXMuY29sbGFwc2VBbGxFeHBhbmRlZENlbGxzKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmRhdGEtZ3JpZC10YWJsZS13cmFwcGVyJykpIHtcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLmFjdGl2ZUNlbGwgPSBudWxsO1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Cb3VuZHMgPSB7IHRvcDogMCwgYm90dG9tOiAwLCBsZWZ0OiBudWxsLCByaWdodDogbnVsbCB9O1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kYXRhLWdyaWQtYm9keScpKSB7XG4gICAgICB0aGlzLmVkaXRpbmdLZXkgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgY2xvc2VUaHJlZURvdHNNZW51RmlsdGVyKCkge1xuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gIH1cblxuXG4gIGNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzUGFyZW50V2l0aENsYXNzKFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIGNsYXNzTGlzdDogc3RyaW5nW11cbiAgKTogYm9vbGVhbiB7XG4gICAgbGV0IGVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50O1xuXG4gICAgd2hpbGUgKGVsICE9PSBudWxsKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGVsLmNsYXNzTGlzdCAmJlxuICAgICAgICBjbGFzc0xpc3Quc29tZSgoY2xhc3NOYW1lKSA9PiBlbCEuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNNZW51ZUhpZGRlbiA9IGZhbHNlO1xuICBvcGVuVGhyZWVEb3RzTWVudShldmVudDogTW91c2VFdmVudCwgY2hpbGQ6IGFueSwga2VlcE9yaWdpbmFsUG9zaXRpb24gPSBmYWxzZSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc01lbnVlSGlkZGVuID0gdHJ1ZTtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xuICAgIHRoaXMuYWN0aXZlQ29sID0gY2hpbGQ7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcbiAgICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29sdW1uLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGlmICh4ID4gKGNvbnRhaW5lcldpZHRoIC8gMikpIHtcbiAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgJHt4IC0gMjQwfXB4YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50IS5zdHlsZS5sZWZ0ID0gYCR7eH1weGA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuaXNNZW51ZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDApO1xuICB9XG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBDb2x1bW4gVGhyZWUgRG90cyBBY3Rpb25zXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIHNvcnRBc2MoY29sOiBhbnkpIHtcbiAgICBpZiAoIWNvbC5pc19zb3J0YWJsZSkgcmV0dXJuO1xuICAgIGNvbCEub3JkZXJfYnkgPSAnYXNjJztcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9yZGVyOiAnYXNjJyxcbiAgICAgIGNvbHVtbjogY29sXG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNvcnRpbmdPcmRlck9wdGlvbnMuZW1pdChldmVudCk7XG4gIH1cblxuICBzb3J0RGVzYyhjb2w6IGFueSkge1xuICAgIGlmICghY29sLmlzX3NvcnRhYmxlKSByZXR1cm47XG4gICAgY29sIS5vcmRlcl9ieSA9ICdkZXNjJztcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9yZGVyOiAnZGVzYycsXG4gICAgICBjb2x1bW46IGNvbFxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcmVzZXRTb3J0KGNvbDogYW55KSB7XG4gICAgdGhpcy5zb3J0aW5nQ29uZmlnID0geyBmaWVsZDogJycsIG9yZGVyX2J5OiAnJyB9O1xuICAgIGNvbnN0IGV2ZW50ID0geyBmaWVsZDogbnVsbCwgb3JkZXJfYnk6IG51bGwgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNvcnRpbmdPcmRlck9wdGlvbnMuZW1pdChldmVudCk7XG4gIH1cblxuXG4gIGFzeW5jIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcbiAgICBjb2x1bW46IGFueSxcbiAgICBwaW5uZWQ6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsLFxuICAgIGlzTmVzdGVkVGFibGU6IGFueSA9IGZhbHNlLFxuICAgIGNvbHVtbnM/OiBhbnlcbiAgKSB7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuICAgIGlmIChpc05lc3RlZFRhYmxlKSB7XG4gICAgICB0aGlzLnBpblVucGluQ29sdW0oY29sdW1uLCBwaW5uZWQsIGNvbHVtbnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIDHvuI/ig6MgVXBkYXRlIHBpbm5lZCBzdGF0ZSByZWN1cnNpdmVseVxuICAgIGNvbnN0IHVwZGF0ZVBpbm5lZCA9IChjb2xzOiBhbnlbXSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICB1cGRhdGVQaW5uZWQoY29sLmNoaWxkcmVuKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xuICAgICAgICAgIGNvbC5waW5uZWQgPSBwaW5uZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHVwZGF0ZVBpbm5lZCh0aGlzLmNvbHVtbnMpO1xuXG4gICAgY29uc3QgZmxhdHRlbkNvbHVtbnMgPSAoY29sczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoZmxhdHRlbkNvbHVtbnMoY29sLmNoaWxkcmVuKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIGNvbnN0IGFsbENvbHMgPSBmbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHBpbm5lZExlZnQgPSBhbGxDb2xzLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpO1xuICAgIGNvbnN0IGNlbnRlciA9IGFsbENvbHMuZmlsdGVyKGMgPT4gIWMucGlubmVkKTtcbiAgICBjb25zdCBwaW5uZWRSaWdodCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xuICAgIGNvbnN0IHJlb3JkZXJlZENvbHVtbnMgPSBbLi4ucGlubmVkTGVmdCwgLi4uY2VudGVyLCAuLi5waW5uZWRSaWdodF07XG4gICAgdGhpcy5jb21tb25TZXZpY2UuYXNzaWduVW5pcXVlQ29sdW1uSW5kZXhlcyhyZW9yZGVyZWRDb2x1bW5zKTtcblxuICAgIHRoaXMuY29sdW1ucyA9IHJlb3JkZXJlZENvbHVtbnM7XG5cbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKGNvbHVtbi5jaGlsZHJlbikpO1xuICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSkge1xuICAgICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGF1dG9zaXplQ29sdW1uKGNvbHM6IGFueSB8IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuXG4gICAgY29uc3QgY29sdW1uc1RvUmVzaXplID0gQXJyYXkuaXNBcnJheShjb2xzKSA/IGNvbHMgOiBbY29sc107XG5cbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IHRoaXMuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgdmlzaWJsZUNvdW50ID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoO1xuXG4gICAgaWYgKHZpc2libGVDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XG4gICAgaWYgKHRoaXMuc2hvd1NlcmlhbE51bWJlcikgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09ICdUYXNrcycpIGNvbnRhaW5lcldpZHRoIC09IDMwO1xuICAgIGlmICh0aGlzLnNob3dDaGVja2JveGVzKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBjb250YWluZXJXaWR0aCAtPSA1O1xuICAgIGNvbnN0IGVxdWFsV2lkdGggPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gdmlzaWJsZUNvdW50KTtcblxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnNUb1Jlc2l6ZSkge1xuICAgICAgaWYgKGNvbCAmJiBjb2wuZmllbGQpIHtcbiAgICAgICAgY29sLndpZHRoID0gZXF1YWxXaWR0aDtcbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIGVxdWFsV2lkdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICAgIH07XG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgfSwgMTAwMCk7XG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgfVxuXG4gIGdldEdyb3VwV2lkdGgoZ3JvdXA6IGFueSk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdyb3VwPy5jaGlsZHJlblxuICAgICAgICA/LmZpbHRlcigoY29sOiBhbnkpID0+IGNvbD8uaXNfdmlzaWJsZSlcbiAgICAgICAgPy5yZWR1Y2UoKGFjYzogbnVtYmVyLCBjb2w6IGFueSkgPT4gYWNjICsgKGNvbD8ud2lkdGggfHwgMCksIDApIHx8IDBcbiAgICApO1xuICB9XG5cbiAgYXV0b3NpemVBbGxDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcblxuICAgIGNvbnN0IGdldFZpc2libGVMZWFmQ29sdW1ucyA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoY29sdW1uLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sdW1uLmNoaWxkcmVuKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmdldFZpc2libGVMZWFmQ29sdW1ucyhjb2x1bW4uY2hpbGRyZW4pKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgdmlzaWJsZUNvdW50ID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoO1xuXG4gICAgaWYgKHZpc2libGVDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XG4gICAgaWYgKHRoaXMuc2hvd1NlcmlhbE51bWJlcikgY29udGFpbmVyV2lkdGggLT0gNTU7XG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09ICdUYXNrcycpIGNvbnRhaW5lcldpZHRoIC09IDMwO1xuICAgIGlmICh0aGlzLnNob3dDaGVja2JveGVzKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBjb250YWluZXJXaWR0aCAtPSA1O1xuICAgIGNvbnN0IGVxdWFsV2lkdGggPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gdmlzaWJsZUNvdW50KSwgMTUwKTtcblxuICAgIC8vIFVwZGF0ZSB3aWR0aHMgZm9yIGFsbCB2aXNpYmxlIGNvbHVtbnNcbiAgICB2aXNpYmxlQ29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgIGNvbC53aWR0aCA9IGVxdWFsV2lkdGg7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgICB9O1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQ29sdW1uQXNHcm91cGVkKGNvbHVtbnM6IGFueVtdLCBmaWVsZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgY29sLmlzUm93R3JvdXBlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQoY29sLmNoaWxkcmVuLCBmaWVsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ3JvdXBCeShjb2w6IGFueSkge1xuICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgdGhpcy50cmFuc2xhdGVZID0gMDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xuICAgIGlmICghY29sKSByZXR1cm47XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgaWYgKGNvbD8uaXNfZ3JvdXBhYmxlKSB7XG4gICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goY29sKTtcbiAgICAgIHRoaXMubWFya0NvbHVtbkFzR3JvdXBlZCh0aGlzLmNvbHVtbnMsIGNvbC5maWVsZCk7XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMDApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcbiAgICB9LCAxMCk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhc3luYyBncm91cERhdGFBc3luYyhkYXRhOiBhbnlbXSwgZ3JvdXBGaWVsZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdyb3VwRGF0YShkYXRhLCBncm91cEZpZWxkcyk7XG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0sIDApO1xuICAgIH0pO1xuICB9XG5cblxuXG5cbiAgY2hvb3NlQ29sdW1ucygpIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gICAgdGhpcy5zaG93Q29sdW1uUGFuZWwgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHJlc2V0Q29sdW1ucygpIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG5cbiAgICAvLyB0aGlzLmNvbHVtbnMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5vcmlnaW5hbENvbHVtbnMpO1xuICAgIC8vIERlZXAgY29weSBuZXN0ZWQgb2JqZWN0cyBidXQga2VlcCBjbGFzcyByZWZzIHNhZmVcbiAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XG4gICAgICAuLi5jb2wsXG4gICAgICAvLyBEZWVwIGNvcHkgbmVzdGVkIG9iamVjdHMgYnV0IGtlZXAgY2xhc3MgcmVmcyBzYWZlXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXG4gICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcbiAgICAgICAgPyBbLi4uY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZV1cbiAgICAgICAgOiBbXSxcbiAgICB9KSk7XG5cbiAgICB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBjbGVhckZpbHRlcihjb2w6IGFueSkge1xuICAgIGNvbC5maXJzdFZhbHVlID0gJyc7XG4gICAgY29sLnNlY29uZFZhbHVlID0gJyc7XG4gICAgY29sLmZpcnN0Q29uZGl0aW9uID0gJ2NvbnRhaW4nO1xuICAgIGNvbC5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xuICAgIGNvbC5sb2dpYyA9ICdBTkQnO1xuICAgIGNvbC5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICBjb2wuc2VsZWN0ZWRPcHRpb25zID0ge307XG4gICAgY29sLnNlYXJjaFZhbHVlID0gJyc7XG5cbiAgfVxuXG5cbiAgYXBwbHlGaWx0ZXIoY29sOiBhbnkpIHtcbiAgICB0aGlzLmZpbHRlckNvbHVtbnNMaXN0LnB1c2goY29sKTtcbiAgfVxuXG4gIC8vIFJvd3MgU2VsZWN0aW9uIExvZ2ljIEdvZXMgSGVyZVxuXG4gIHNlbGVjdGVkUm93czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgLyoqXG4gICAqIEdldCBub3JtYWxpemVkIElEIGZyb20gcm93LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRSb3dJZChyb3c6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJvdy5pZCA/PyByb3cuX2lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBhIHNpbmdsZSByb3cgc2VsZWN0aW9uLlxuICAgKi9cbiAgdG9nZ2xlUm93U2VsZWN0aW9uKHJvdzogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldFJvd0lkKHJvdyk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuYWRkKGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcblxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbihpZHMsIHRoaXMudGFibGVUeXBlKTtcblxuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgICAgb2JqOiBpZHNcbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcbiAgICB9O1xuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cblxuXG4gIHRvZ2dsZVNlbGVjdEFsbChkYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcbiAgICBjb25zdCBhbGxJZHMgPSBsZWFmUm93cy5tYXAociA9PiB0aGlzLmdldFJvd0lkKHIpKTtcblxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gYWxsSWRzLmV2ZXJ5KGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZCkpO1xuXG4gICAgaWYgKGFsbFNlbGVjdGVkKSB7XG4gICAgICBhbGxJZHMuZm9yRWFjaChpZCA9PiB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWxsSWRzLmZvckVhY2goaWQgPT4gdGhpcy5zZWxlY3RlZFJvd3MuYWRkKGlkKSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgIG9iajogaWRzXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbihpZHMsIHRoaXMudGFibGVUeXBlKTtcbiAgfVxuXG4gIGlzUm93U2VsZWN0ZWQocm93OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocm93KSk7XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKGRhdGE6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmdldEFsbExlYWZSb3dzKGRhdGEpO1xuICAgIHJldHVybiBsZWFmUm93cy5sZW5ndGggPiAwICYmIGxlYWZSb3dzLmV2ZXJ5KHIgPT4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocikpKTtcbiAgfVxuXG5cbiAgaXNJbmRldGVybWluYXRlU3RhdGUoZGF0YTogYW55W10pOiBib29sZWFuIHtcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZ2V0QWxsTGVhZlJvd3MoZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IGxlYWZSb3dzLmZpbHRlcihyID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHIpKSkubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHNlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgPCBsZWFmUm93cy5sZW5ndGg7XG4gIH1cblxuXG4gIGdldEFsbExlYWZSb3dzKGRhdGE6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IGxlYWY6IGFueVtdID0gW107XG5cbiAgICBjb25zdCB0cmF2ZXJzZSA9IChub2RlOiBhbnkpID0+IHtcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xuXG4gICAgICBpZiAobm9kZS5pc0dyb3VwKSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW4/LmZvckVhY2godHJhdmVyc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVhZi5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkYXRhLmZvckVhY2godHJhdmVyc2UpO1xuICAgIHJldHVybiBsZWFmO1xuICB9XG5cbiAgdG9nZ2xlU2lkZU1lbnUoY2xpY2tlZE9uOiAnY29scycgfCAnZmlsdHJzJykge1xuICAgIGlmICh0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gY2xpY2tlZE9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSA9ICF0aGlzLnNpZGVNZW51VmlzaWJsZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgJiZcbiAgICAgIGNsaWNrZWRPbiAhPSB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWVcbiAgICApIHtcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgPSAhdGhpcy5zaWRlTWVudVZpc2libGU7XG4gICAgfVxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlR3JvdXBWaXNpYmlsaXR5KGNvbDogYW55KSB7XG4gICAgY29uc3QgYWxsVmlzaWJsZSA9IGNvbC5jaGlsZHJlbi5ldmVyeSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSk7XG4gICAgY29sLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBhbnkpID0+IChjaGlsZC5pc192aXNpYmxlID0gIWFsbFZpc2libGUpKTtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgICB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMCk7XG4gIH1cblxuICBpc0NvbHVtblZpc2libGUoY29sdW1uczogYW55KSB7XG4gICAgaWYgKGNvbHVtbnM/LmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gY29sdW1ucy5jaGlsZHJlbi5ldmVyeSgoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LmlzX3Zpc2libGUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5zPy5pc192aXNpYmxlO1xuICB9XG5cbiAgYWxsQ29sdW1uc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3Qgbm9uQWx3YXlzVmlzaWJsZSA9IGZsYXR0ZW4uZmlsdGVyKGNvbCA9PiAhY29sLmlzX2Fsd2F5c192aXNpYmxlKTtcbiAgICByZXR1cm4gbm9uQWx3YXlzVmlzaWJsZS5sZW5ndGggPiAwICYmIG5vbkFsd2F5c1Zpc2libGUuZXZlcnkoY29sID0+IGNvbC5pc192aXNpYmxlKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZENvbHVtbkJ5RmllbGQoZmllbGQ6IHN0cmluZywgY29sczogYW55W10pOiBhbnkgfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2xzKSB7XG4gICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xuICAgICAgICByZXR1cm4gY29sO1xuICAgICAgfVxuICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikpIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmZpbmRDb2x1bW5CeUZpZWxkKGZpZWxkLCBjb2wuY2hpbGRyZW4pO1xuICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyB0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbjogYW55LCBpc1Zpc2libGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICBpZiAodGhpcy52aXNpYmxlQ29sdW1ucygpPy5sZW5ndGggPD0gMiAmJiBjb2x1bW4uaXNfdmlzaWJsZSB8fCAoY29sdW1uPy5pc19hbHdheXNfdmlzaWJsZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb2wgPSB0aGlzLmZpbmRDb2x1bW5CeUZpZWxkKGNvbHVtbi5maWVsZCwgdGhpcy5jb2x1bW5zKTtcbiAgICBpZiAoY29sKSB7XG4gICAgICBjb2wuaXNfdmlzaWJsZSA9IGlzVmlzaWJsZTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGZsYXR0ZW4uZmlsdGVyKGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gICAgICBjb25zdCBub25BbHdheXNWaXNpYmxlID0gZmxhdHRlbi5maWx0ZXIoY29sID0+ICFjb2wuaXNfYWx3YXlzX3Zpc2libGUpO1xuICAgICAgY29uc3QgYWxsTm9uQWx3YXlzVmlzaWJsZUFyZVZpc2libGUgPSBub25BbHdheXNWaXNpYmxlLmV2ZXJ5KGNvbCA9PiBjb2wuaXNfdmlzaWJsZSk7XG4gICAgICBpZiAoYWxsTm9uQWx3YXlzVmlzaWJsZUFyZVZpc2libGUpIHtcbiAgICAgICAgbm9uQWx3YXlzVmlzaWJsZS5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgY29sLmlzX3Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYWx3YXlzVmlzaWJsZUNvdW50ID0gZmxhdHRlbi5maWx0ZXIoY29sID0+IGNvbC5pc19hbHdheXNfdmlzaWJsZSkubGVuZ3RoO1xuICAgICAgICBjb25zdCBjb2x1bW5zTmVlZGVkID0gTWF0aC5tYXgoMCwgMiAtIGFsd2F5c1Zpc2libGVDb3VudCk7XG5cbiAgICAgICAgaWYgKGNvbHVtbnNOZWVkZWQgPiAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbihjb2x1bW5zTmVlZGVkLCBub25BbHdheXNWaXNpYmxlLmxlbmd0aCk7IGkrKykge1xuICAgICAgICAgICAgbm9uQWx3YXlzVmlzaWJsZVtpXS5pc192aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsYXR0ZW4uZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgIGNvbC5pc192aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuXG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgICB9O1xuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd2FpdChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICB9XG5cblxuXG4gIHZpc2libGVDb2x1bW5zKCkge1xuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcigoYzogYW55KSA9PiBjLmlzX3Zpc2libGUpO1xuICAgIHJldHVybiB2aXNpYmxlQ29sdW1ucztcbiAgfVxuXG4gIGZsYXR0ZW5Db2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBjb2xzLnJlZHVjZSgoYWNjOiBhbnlbXSwgY29sOiBhbnkpID0+IHtcbiAgICAgIGlmIChjb2w/LmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQodGhpcy5mbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KGNvbCk7XG4gICAgICB9XG4gICAgfSwgW10pO1xuICB9XG5cblxuICBmaWx0ZXJlZENvbHVtbnMoY29sczogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5jb2x1bW5TZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gY29sc1xuICAgICAgLm1hcCgoY29sKSA9PiB7XG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXJlZENvbHVtbnMoY29sLmNoaWxkcmVuKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb2wuaGVhZGVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSB8fFxuICAgICAgICAgICAgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmNvbCwgY2hpbGRyZW46IGZpbHRlcmVkQ2hpbGRyZW4gfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGNvbC5oZWFkZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpID8gY29sIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICBnZXQgYWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xuICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZ2V0QWxsR3JvdXBDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgZXhwYW5kZWRDb3VudCA9IGdyb3Vwcy5maWx0ZXIoKGNvbCkgPT4gY29sLmV4cGFuZGVkKS5sZW5ndGg7XG5cbiAgICBpZiAoZXhwYW5kZWRDb3VudCA9PT0gMCkgcmV0dXJuICdub25lJztcbiAgICBpZiAoZXhwYW5kZWRDb3VudCA9PT0gZ3JvdXBzLmxlbmd0aCkgcmV0dXJuICdhbGwnO1xuICAgIHJldHVybiAnc29tZSc7XG4gIH1cblxuICBnZXQgZmlsdGVyQWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xuICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZ2V0QWxsR3JvdXBDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgZXhwYW5kZWRDb3VudCA9IGdyb3Vwcy5maWx0ZXIoKGNvbCkgPT4gY29sLmV4cGFuZGVkRmlsdGVyKS5sZW5ndGg7XG5cbiAgICBpZiAoZXhwYW5kZWRDb3VudCA9PT0gMCkgcmV0dXJuICdub25lJztcbiAgICBpZiAoZXhwYW5kZWRDb3VudCA9PT0gZ3JvdXBzLmxlbmd0aCkgcmV0dXJuICdhbGwnO1xuICAgIHJldHVybiAnc29tZSc7XG4gIH1cblxuICAvLyBSZWN1cnNpdmVseSBjb2xsZWN0IGFsbCBncm91cCBjb2x1bW5zXG4gIHByaXZhdGUgZ2V0QWxsR3JvdXBDb2x1bW5zKGNvbHM6IGFueVtdKTogYW55W10ge1xuICAgIGxldCBncm91cHM6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGdyb3Vwcy5wdXNoKGNvbCk7XG4gICAgICAgIGdyb3VwcyA9IGdyb3Vwcy5jb25jYXQodGhpcy5nZXRBbGxHcm91cENvbHVtbnMoY29sLmNoaWxkcmVuKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBncm91cHM7XG4gIH1cblxuICAvLyBUb2dnbGUgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxuICB0b2dnbGVBbGxBY2NvcmRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMuYWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnID8gZmFsc2UgOiB0cnVlO1xuICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUodGhpcy5jb2x1bW5zLCBuZXh0U3RhdGUpO1xuICB9XG5cbiAgdG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmZpbHRlckFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICB0aGlzLnNldEZpbHRlckFjY29yZGlvblN0YXRlKHRoaXMuY29sdW1ucywgbmV4dFN0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBjb2wuZXhwYW5kZWQgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5zZXRBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgcHJpdmF0ZSBzZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZShjb2xzOiBhbnlbXSwgc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBmb3IgKGxldCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbC5leHBhbmRlZEZpbHRlciA9IHN0YXRlO1xuICAgICAgICB0aGlzLnNldEZpbHRlckFjY29yZGlvblN0YXRlKGNvbC5jaGlsZHJlbiwgc3RhdGUpOyAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd0NvbHVtblBhbmVsID0gZmFsc2U7XG5cbiAgY2xvc2VNb2RhbENvbHVtblBhbmVsKCkge1xuICAgIHRoaXMuc2hvd0NvbHVtblBhbmVsID0gZmFsc2U7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBvbkVzY2FwZShldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpO1xuICB9XG5cbiAgZ2V0IGhhc1JpZ2h0UGlubmVkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzUmlnaHRQaW5uZWRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBnZXQgaGFzTGVmdFBpbm5lZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc0xlZnRQaW5uZWRDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBnZXQgZGF0YVNldExlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0RXhwYW5kZWRSb3dDb3VudCh0aGlzLmRhdGFTZXQpO1xuICB9XG5cblxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZShldmVudDogVUlFdmVudCkge1xuICAgIGlmICghdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUpIHRoaXMuYXV0b1NpemVDb2x1bW5zQnlSYXRpbygpO1xuICAgIGNvbnN0IGggPSB0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWVudEhlaWdodCA/PyAwO1xuICAgIHRoaXMudmlld3BvcnRSb3dzID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGggLyB0aGlzLnJvd0hlaWdodCkpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3ModGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxUb3ApO1xuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4geyB9LCAxMDApO1xuICB9XG5cbiAgYXV0b1NpemVDb2x1bW5zQnlSYXRpbyhzaG91bGRDaGVja0NvbnRhaW5lcldpZHRoID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG5cbiAgICBjb25zdCBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmdldFZpc2libGVMZWFmQ29sdW1ucyhjb2x1bW4uY2hpbGRyZW4pKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGlmICghdmlzaWJsZUNvbHVtbnMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcblxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT09ICdUYXNrcycpIGNvbnRhaW5lcldpZHRoIC09IDMwO1xuICAgIGlmICh0aGlzLnNob3dDaGVja2JveGVzKSBjb250YWluZXJXaWR0aCAtPSA1NTtcbiAgICBjb250YWluZXJXaWR0aCAtPSA1O1xuXG4gICAgY29uc3QgdG90YWxPbGRXaWR0aCA9IHZpc2libGVDb2x1bW5zLnJlZHVjZShcbiAgICAgIChzdW0sIGNvbCkgPT4gc3VtICsgKGNvbC53aWR0aCB8fCAwKSxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgaWYgKHRvdGFsT2xkV2lkdGggPT09IDApIHJldHVybjtcblxuICAgIGlmIChzaG91bGRDaGVja0NvbnRhaW5lcldpZHRoICYmIChjb250YWluZXJXaWR0aCA8PSB0b3RhbE9sZFdpZHRoKSkgcmV0dXJuO1xuXG4gICAgdmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICBjb25zdCByYXRpbyA9IGNvbC53aWR0aCAvIHRvdGFsT2xkV2lkdGg7XG4gICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggKiByYXRpbyksIDEwMCk7XG5cbiAgICAgIGNvbC53aWR0aCA9IG5ld1dpZHRoO1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIG5ld1dpZHRoKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cblxuICBhc3luYyByZWZyZXNoSGVhZGVycygpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGhhc0FueVZpc2libGVDb2x1bW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2V2aWNlLmdldGhhc1Zpc2libGVDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBnZXQgaGFzQW55SW5WaXNpYmxlQ29sdW1uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNJblZpc2libGVDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBnZXQgY29sdW1uc0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRUb3RhbENvbHVtbnNMZW5ndGgodGhpcy5jb2x1bW5zKTtcbiAgfVxuXG4gIHRhYmxlSGVhZGVyQW5kQm9keUhlaWdodCgpIHtcbiAgICByZXR1cm4gYGNhbGMoMTAwJSAtICR7dGhpcy5mb290ZXJSb3dIZWlnaHR9KWA7XG4gIH1cblxuICBkcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnY2VudGVyU2Nyb2xsJykgY2VudGVyU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIHZpc2libGVSb3dDb3VudCA9IDI1O1xuICBzdGFydEluZGV4ID0gMDtcbiAgdmlzaWJsZVJvd3M6IGFueVtdID0gW107XG5cbiAgcHJpdmF0ZSBmbGF0dGVuR3JvdXBlZFJvd3MoXG4gICAgcm93czogYW55W10gPSBbXSxcbiAgICBsZXZlbCA9IDAsXG4gICAgcmVzdWx0OiBhbnlbXSA9IFtdXG4gICk6IGFueVtdIHtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICByZXN1bHQucHVzaCh7IC4uLnJvdywgX19kZXB0aDogbGV2ZWwgfSk7XG4gICAgICBpZiAocm93LmlzR3JvdXAgJiYgcm93LmlzRXhwYW5kICYmIHJvdy5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZmxhdHRlbkdyb3VwZWRSb3dzKHJvdy5jaGlsZHJlbiwgbGV2ZWwgKyAxLCBbXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYXNzaWduVmlydHVhbEluZGV4ZXModGhpcy52aXNpYmxlUm93cyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFzc2lnblZpcnR1YWxJbmRleGVzKGRhdGE6IGFueVtdKTogYW55W10ge1xuICAgIGxldCBjdXJyZW50SW5kZXggPSAxO1xuICAgIGNvbnN0IHdhbGsgPSAoaXRlbXM6IGFueVtdKTogdm9pZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgaXRlbS5fX3ZpcnR1YWxJbmRleCA9IGN1cnJlbnRJbmRleCsrO1xuICAgICAgICBpZiAoaXRlbT8uaXNHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGdyb3VwID0gaXRlbTtcbiAgICAgICAgICBpZiAoZ3JvdXAuaXNFeHBhbmQgJiYgQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIHdhbGsoZ3JvdXAuY2hpbGRyZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgd2FsayhkYXRhKTtcbiAgICAvLyBjb25zb2xlLmxvZygnVGhpcyBkYXRhc2V0OiAnLCB0aGlzLnZpc2libGVSb3dzKVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cblxuICB1cGRhdGVWaXNpYmxlUm93cyhzY3JvbGxUb3A6IG51bWJlcikge1xuXG4gICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZGF0YVNldDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmxhdERhdGEgPSB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyh0aGlzLmRhdGFTZXQpO1xuXG4gICAgaWYgKHRoaXMuZGF0YVNldD8ubGVuZ3RoIDw9IDE1KSB7XG4gICAgICB0aGlzLnZpc2libGVSb3dzID0gZmxhdERhdGE7XG4gICAgICB0aGlzLmZpcnN0SW5kZXggPSAwO1xuICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcbiAgICAgIHRoaXMucmVuZGVyU3RhcnQgPSAwO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0b3RhbCA9IGZsYXREYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXhGaXJzdCA9IE1hdGgubWF4KDAsIHRvdGFsIC0gdGhpcy52aWV3cG9ydFJvd3MpO1xuICAgIGNvbnN0IGZpcnN0ID0gTWF0aC5taW4oTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCksIG1heEZpcnN0KTtcbiAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIGZpcnN0KTtcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1pbih0b3RhbCwgZmlyc3QgKyB0aGlzLnZpZXdwb3J0Um93cyk7XG5cbiAgICB0aGlzLmZpcnN0SW5kZXggPSBmaXJzdDtcbiAgICB0aGlzLnN0YXJ0SW5kZXggPSBmaXJzdDtcbiAgICB0aGlzLnJlbmRlclN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy52aXNpYmxlUm93cyA9IGZsYXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIHRoaXMuYXNzaWduVmlydHVhbEluZGV4ZXModGhpcy52aXNpYmxlUm93cyk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICB0cmFja0J5UmVuZGVyZWRJbmRleCA9IChpOiBudW1iZXIsIF9yb3c6IGFueSkgPT4gdGhpcy5yZW5kZXJTdGFydCArIGk7XG5cbiAgcHJpdmF0ZSBpc1N5bmNpbmdGcm9tTWFpbiA9IGZhbHNlO1xuICBwcml2YXRlIGlzU3luY2luZ0Zyb21GYWtlID0gZmFsc2U7XG4gIHByaXZhdGUgbWFpblNjcm9sbFJhZjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtLmlkIHx8IGl0ZW0uX2lkO1xuICB9XG5cbiAgZmxhdHRlbmVkRGF0YTogYW55W10gPSBbXTtcblxuICB1cGRhdGVGbGF0dGVuZWREYXRhKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mbGF0dGVuZWREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMCk7XG4gIH1cblxuICB0cmFuc2xhdGVZID0gMDtcbiAgbGFzdFNjcm9sbFRvcCA9IDA7XG4gIHBlbmRpbmdBbmltYXRpb25GcmFtZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcbiAgICBpZiAoTWF0aC5hYnMoc2Nyb2xsVG9wIC0gdGhpcy5sYXN0U2Nyb2xsVG9wKSA8ICgxMCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lKTtcbiAgICBpZiAodGhpcy5ncm91cGVkQ29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29uc3Qgc2Nyb2xsaW5nRG93biA9IHNjcm9sbFRvcCA+IHRoaXMubGFzdFNjcm9sbFRvcDtcbiAgICAgIHRoaXMubGFzdFNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcblxuICAgICAgY29uc3Qgb3ZlcnNjYW4gPSA0O1xuICAgICAgY29uc3QgbmV3U3RhcnRJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gdGhpcy5yb3dIZWlnaHQpO1xuICAgICAgLy8gY29uc3QgZHluYW1pY092ZXJzY2FuID0gc2Nyb2xsaW5nRG93biA/IG92ZXJzY2FuIDogb3ZlcnNjYW47XG5cbiAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgbmV3U3RhcnRJbmRleCAtIG92ZXJzY2FuKTtcbiAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKFxuICAgICAgICB0aGlzLmZsYXR0ZW5lZERhdGEubGVuZ3RoLFxuICAgICAgICBuZXdTdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBvdmVyc2NhblxuICAgICAgKTtcbiAgICAgIHRoaXMudHJhbnNsYXRlWSA9IHN0YXJ0ICogdGhpcy5yb3dIZWlnaHQ7XG4gICAgICBpZiAodGhpcy5zdGFydEluZGV4ICE9PSBzdGFydCB8fCB0aGlzLnZpc2libGVSb3dzLmxlbmd0aCAhPT0gZW5kIC0gc3RhcnQpIHtcbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMudmlzaWJsZVJvd3MgPSB0aGlzLmRhdGFTZXQuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNTY3JvbGxiYXJWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5tYWluU2Nyb2xsKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZWwgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gZWwuc2Nyb2xsSGVpZ2h0ID4gZWwuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgdG9nZ2xlRXhwYW5kKHJvdzogYW55KSB7XG4gICAgaWYgKHJvdy5kZXRhaWxzKSB7XG4gICAgICByb3cuaXNEZXRhaWxzRXhwYW5kID0gIXJvdy5pc0RldGFpbHNFeHBhbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdy5pc0V4cGFuZCA9ICFyb3cuaXNFeHBhbmQ7XG4gICAgfVxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gIH1cblxuICB2aWV3cG9ydFJvd3MgPSAwO1xuICBmaXJzdEluZGV4ID0gMDtcbiAgcmVuZGVyU3RhcnQgPSAwO1xuXG4gIHByaXZhdGUgc2Nyb2xsUmFmOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwZW5kaW5nU2Nyb2xsVG9wID0gMDtcblxuICBAVmlld0NoaWxkKCdtYWluU2Nyb2xsJykgbWFpblNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdmYWtlU2Nyb2xsJykgZmFrZVNjcm9sbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdob3JpemludGFsRmFrZVNjcm9sbCcpXG4gIGhvcml6aW50YWxGYWtlU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclNjcm9sbGFibGVCb2R5JylcbiAgY2VudGVyU2Nyb2xsYWJsZUJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgcHJpdmF0ZSBvdmVyc2NhbiA9IDQ7IC8vIGJ1ZmZlciByb3dzIGFib3ZlIGFuZCBiZWxvd1xuXG4gIGNvbXB1dGVWaWV3cG9ydFJvd3MoKSB7XG4gICAgaWYgKHRoaXMuZmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5mYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgY29uc3QgaCA9IHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCA/PyAwO1xuXG4gICAgICAvLyByb3dzIHZpc2libGUgaW4gdmlld3BvcnRcbiAgICAgIGNvbnN0IHJvd3NJblZpZXdwb3J0ID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGggLyB0aGlzLnJvd0hlaWdodCkpO1xuXG4gICAgICAvLyBhZGQgYnVmZmVyIHJvd3MgKG92ZXJzY2FuKVxuICAgICAgdGhpcy52aWV3cG9ydFJvd3MgPSByb3dzSW5WaWV3cG9ydCArIHRoaXMub3ZlcnNjYW47XG5cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuXG4gIG9uSG9yaXpvbnRhbEZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbExlZnQ7XG4gICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgIH1cbiAgfVxuXG4gIG9uQ2VudGVyQm9keVNjcm9sbChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmNlbnRlclBpbm5lZEhlYWRlcikge1xuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgb25DZW50ZXJIZWFkZXJTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICB9XG4gIH1cblxuICBkcmFnZ2luZ0NvbHVtbjogYW55O1xuICBkcmFnU3RhcnRJbmRleDogYW55ID0gMDtcbiAgY2FuRW50ZXJUb1Jvd3NHcm91cGluZyA9IChkcmFnOiBDZGtEcmFnPGFueT4sIGRyb3A6IENka0Ryb3BMaXN0PGFueT4pID0+IHtcbiAgICBjb25zdCBkYXRhID0gZHJhZy5kYXRhO1xuICAgIGlmIChkYXRhPy5jaGlsZHJlbiAmJiBkYXRhPy5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBkYXRhLmNoaWxkcmVuLnNvbWUoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmlzX3Zpc2libGUgJiYgY29sLmlzX2dyb3VwYWJsZVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEuaXNfdmlzaWJsZSAmJiBkYXRhLmlzX2dyb3VwYWJsZTtcbiAgfTtcblxuICBlbnRlclRvVG9wUm93R3JvdXBpbmcoZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+KSB7XG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xuICAgIHRoaXMuZHJhZ2dpbmdJbkdyb3VwQXJlYSA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGRyYWdnaW5nRGF0YS5oZWFkZXJcbiAgICAgICk7XG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcbiAgICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldEdyb3VwLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gISFtYXRjaGluZ0NoaWxkLmlzX2dyb3VwYWJsZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIFRyeSBmaW5kaW5nIGl0IGluIHRvcC1sZXZlbCBjb2x1bW5zIGZpcnN0XG4gICAgICBsZXQgdGFyZ2V0Q29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICk7XG5cbiAgICAgIGlmICh0YXJnZXRDb2x1bW4pIHtcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9ICEhdGFyZ2V0Q29sdW1uLmlzX2dyb3VwYWJsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGdyb3VwIG9mIHRoaXMuY29sdW1ucykge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IGdyb3VwLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcbiAgICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSAhIW1hdGNoaW5nQ2hpbGQuaXNfZ3JvdXBhYmxlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDinIUgUmVmcmVzaCBVSVxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25Ecm9wTGlzdEVudGVyKFxuICAgIGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55PixcbiAgICBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCdcbiAgKSB7XG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xuXG4gICAgY29uc3QgdGFyZ2V0Q29sdW1uOiBhbnkgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxuICAgICk7XG5cbiAgICBpZiAoIXRhcmdldENvbHVtbikgcmV0dXJuO1xuXG4gICAgaWYgKFxuICAgICAgQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSAmJlxuICAgICAgQXJyYXkuaXNBcnJheSh0YXJnZXRDb2x1bW4/LmNoaWxkcmVuKVxuICAgICkge1xuICAgICAgZHJhZ2dpbmdEYXRhLmNoaWxkcmVuLmZvckVhY2goKGRyYWdnZWRDaGlsZDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRDb2x1bW4uY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxuICAgICAgICApO1xuICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgIG1hdGNoaW5nQ2hpbGQucGlubmVkID0gc2VjdGlvbiA9PT0gJ2NlbnRlcicgPyBudWxsIDogc2VjdGlvbjtcbiAgICAgICAgICBtYXRjaGluZ0NoaWxkWydpc1Jvd0dyb3VwZWQnXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0Q29sdW1uLnBpbm5lZCA9IHNlY3Rpb24gPT09ICdjZW50ZXInID8gbnVsbCA6IHNlY3Rpb247XG4gICAgICB0YXJnZXRDb2x1bW5bJ2lzUm93R3JvdXBlZCddID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBleGl0ZWRGcm9tVGhlVG9wUm93KGRyb3BMaXN0OiBDZGtEcmFnRXhpdDxhbnk+KSB7XG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XG4gICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IGZhbHNlO1xuICAgIGNvbnN0IGRyYWdnaW5nRGF0YSA9IGRyb3BMaXN0Lml0ZW0uZGF0YTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkcmFnZ2luZ0RhdGE/LmNoaWxkcmVuKSkge1xuICAgICAgY29uc3QgdGFyZ2V0R3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxuICAgICAgKTtcbiAgICAgIGlmICh0YXJnZXRHcm91cCkge1xuICAgICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0R3JvdXAuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dlZENoaWxkLmZpZWxkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGFyZ2V0Q29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICk7XG5cbiAgICAgIGlmICh0YXJnZXRDb2x1bW4pIHtcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gZ3JvdXAuY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBzaG91bGREaXNhYmxlRHJvcGxpc3RTb3J0aW5nID0gZmFsc2U7XG4gIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gZmFsc2U7XG4gIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sOiBhbnkpIHtcbiAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikpIHtcbiAgICAgIGNvbnN0IGFsbENoaWxkcmVuRGlzYWJsZWQgPSBjb2wuY2hpbGRyZW4uZXZlcnkoXG4gICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5pc19ncm91cGFibGUgPT09IGZhbHNlXG4gICAgICApO1xuICAgICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGFsbENoaWxkcmVuRGlzYWJsZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBjb2wuaXNfZ3JvdXBhYmxlID09PSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY3VycmVudERyYWdnaW5nQ29sdW1uOiBhbnkgPSBudWxsO1xuICBkcmFnU3RhcnRPbkdyb3VwKGNvbDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBjb2w7XG4gIH1cblxuICBvblNvcnRHcm91cCA9IChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnk+LCBzZWN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBjb2x1bW5zID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uXTtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNJbmRleCA9PT0gZXZlbnQuY3VycmVudEluZGV4KSByZXR1cm47XG5cbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2w6IGFueSkgPT5cbiAgICAgIGNvbD8uY2hpbGRyZW4/LnNvbWU/LigoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSkgPz8gY29sLmlzX3Zpc2libGVcbiAgICApO1xuXG4gICAgY29uc3QgcHJldkNvbCA9IHZpc2libGVDb2x1bW5zW2V2ZW50LnByZXZpb3VzSW5kZXhdO1xuICAgIGNvbnN0IGN1cnJDb2wgPSB2aXNpYmxlQ29sdW1uc1tldmVudC5jdXJyZW50SW5kZXhdO1xuXG4gICAgY29uc3QgZ2V0RmllbGRzID0gKGNvbDogYW55KSA9PiBjb2w/LmNoaWxkcmVuPy5tYXAoKGM6IGFueSkgPT4gYy5maWVsZCkgPz8gW2NvbC5maWVsZF07XG4gICAgY29uc3QgYWxsRmllbGRzID0gWy4uLmdldEZpZWxkcyhwcmV2Q29sKSwgLi4uZ2V0RmllbGRzKGN1cnJDb2wpXTtcblxuICAgIGNvbnN0IGNlbGxzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxFbGVtZW50W10+KCk7XG4gICAgYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgY2VsbHNNYXAuc2V0KGZpZWxkLCBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W10pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZmlyc3RQb3NpdGlvbnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBudW1iZXI+KCk7XG4gICAgY2VsbHNNYXAuZm9yRWFjaChjZWxscyA9PiB7XG4gICAgICBjZWxscy5mb3JFYWNoKGVsID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xuICAgIH0pO1xuXG4gICAgLy8gTW92ZSBjb2x1bW5zIGluIGFycmF5c1xuICAgIG1vdmVJdGVtSW5BcnJheSgodGhpcyBhcyBhbnkpW3NlY3Rpb25dLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIGNvbnN0IHByZXZJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLmhlYWRlciA9PT0gcHJldkNvbC5oZWFkZXIpO1xuICAgIGNvbnN0IGN1cnJJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLmhlYWRlciA9PT0gY3VyckNvbC5oZWFkZXIpO1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmNvbHVtbnMsIHByZXZJbmRleCwgY3VyckluZGV4KTtcblxuICAgIC8vIFNpbmdsZSBkZXRlY3RDaGFuZ2VzIGNhbGwgYmVmb3JlIGFuaW1hdGlvblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAvLyBCYXRjaCBhbmltYXRpb25cbiAgICAgIGNlbGxzTWFwLmZvckVhY2goY2VsbHMgPT4ge1xuICAgICAgICBjZWxscy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpISAtIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgaWYgKCFkZWx0YVgpIHJldHVybjtcblxuICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHZvaWQgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2VsbHNNYXAuZm9yRWFjaChjZWxscyA9PiB7XG4gICAgICAgICAgY2VsbHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAyNTBtcyBlYXNlJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcblxuICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIG9uRHJvcEdyb3VwKCkge1xuICAgIGNvbnN0IGFsbENvbHMgPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgY29uc3QgcGlubmVkTGVmdCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgY2VudGVyID0gYWxsQ29scy5maWx0ZXIoYyA9PiAhYy5waW5uZWQpO1xuICAgIGNvbnN0IHBpbm5lZFJpZ2h0ID0gYWxsQ29scy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29uc3QgcmVvcmRlcmVkQ29sdW1ucyA9IFsuLi5waW5uZWRMZWZ0LCAuLi5jZW50ZXIsIC4uLnBpbm5lZFJpZ2h0XTtcbiAgICB0aGlzLmNvbW1vblNldmljZS5hc3NpZ25VbmlxdWVDb2x1bW5JbmRleGVzKHJlb3JkZXJlZENvbHVtbnMpO1xuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld0xlZnRQaW5uZWRDb2x1bW5zKTtcbiAgICB0aGlzLmNlbnRlckNvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyk7XG4gICAgdGhpcy5yaWdodFBpbm5lZENvbHVtbnMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnModGhpcy5wcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zKTtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWVwQ2xvbmVDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIGNvbHVtbnMubWFwKGNvbCA9PiAoe1xuICAgICAgLi4uY29sLFxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxuICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBBcnJheS5pc0FycmF5KGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUpXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXG4gICAgICAgIDogW10sXG4gICAgICAvLyBSZWN1cnNpdmVseSBkZWVwIGNsb25lIGNoaWxkcmVuIGlmIHByZXNlbnRcbiAgICAgIGNoaWxkcmVuOiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbilcbiAgICAgICAgPyB0aGlzLmRlZXBDbG9uZUNvbHVtbnMoY29sLmNoaWxkcmVuKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KSk7XG4gIH1cblxuXG4gIGFzeW5jIG9uRHJvcFRvcEdyb3VwKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XG4gICAgaWYgKHRoaXMuaXNPdXRzaWRlQ29udGFpbmVyKSByZXR1cm47XG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMudHJhbnNsYXRlWSA9IDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGRyYWdnZWREYXRhID0gZXZlbnQuaXRlbS5kYXRhO1xuICAgIGlmIChkcmFnZ2VkRGF0YT8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShkcmFnZ2VkRGF0YS5jaGlsZHJlbikpIHtcbiAgICAgIGRyYWdnZWREYXRhLmNoaWxkcmVuLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICAgIGlmIChjb2wuaXNfdmlzaWJsZSAmJiBjb2wuaXNfZ3JvdXBhYmxlKSB7XG4gICAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZHJhZ2dlZERhdGEuaXNfdmlzaWJsZSAmJiBkcmFnZ2VkRGF0YS5pc19ncm91cGFibGUpIHtcbiAgICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGRyYWdnZWREYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gZmFsc2U7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscyA9IFtdO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAxMDAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhc3luYyBvbkdyb3VwUmVvcmRlcihldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZ3JvdXBlZENvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwMCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH0sIDEwKTtcbiAgfVxuXG4gIGFzeW5jIHVuZ3JvdXBDb2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cGVkQ29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAgIChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XG4gICAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIGlmIChncm91cD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcbiAgICAgICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hpbGQuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xuICAgICAgICAgICAgICBjaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XG4gICAgICAgICAgZ3JvdXAuaXNSb3dHcm91cGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xuICAgICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSwgMTAwMCk7XG5cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbiB1bmdyb3VwQ29sdW1uOlwiLCBlcnIpO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgc2hvdWxkVGhlR3JvdXBIZWFkZXJTaG93KGdyb3VwOiBhbnkpIHtcbiAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIGdyb3VwLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuLnNvbWUoXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXA/LmlzX3Zpc2libGUgJiYgIWdyb3VwPy5pc1Jvd0dyb3VwZWQ7XG4gIH1cblxuICBvbkNoaWxkRHJvcGxpc3RTb3J0ZWQgPSBhc3luYyAoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55Piwgc2VjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGlubmVkID1cbiAgICAgIHNlY3Rpb24gPT0gJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcbiAgICAgICAgPyAnbGVmdCdcbiAgICAgICAgOiBzZWN0aW9uID09ICdwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zJ1xuICAgICAgICAgID8gJ3JpZ2h0J1xuICAgICAgICAgIDogXCJcIjtcblxuICAgIGNvbnN0IGNvbHVtbiA9IGV2ZW50Lml0ZW0uZGF0YTtcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcbiAgICAgIChjb2w6IGFueSkgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXG4gICAgKTtcbiAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChcbiAgICAgIChjb2wpID0+IGNvbC5oZWFkZXIgPT09IGdyb3VwLmhlYWRlclxuICAgICk7XG4gICAgY29uc3QgZmlsdGVyZWRHcm91cCA9IGdyb3VwPy5jaGlsZHJlbi5maWx0ZXIoKGNvbDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpc1Bpbm5lZE1hdGNoID1cbiAgICAgICAgKHBpbm5lZCA9PT0gXCJcIiAmJiAoIWNvbD8ucGlubmVkIHx8IGNvbD8ucGlubmVkID09PSBcIlwiKSkgfHwgY29sPy5waW5uZWQgPT09IHBpbm5lZDtcbiAgICAgIHJldHVybiBpc1Bpbm5lZE1hdGNoICYmIGNvbD8uaXNfdmlzaWJsZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHByZXZpb3VzRmllbGQgPSBmaWx0ZXJlZEdyb3VwW2V2ZW50LnByZXZpb3VzSW5kZXhdLmZpZWxkO1xuICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpbHRlcmVkR3JvdXBbZXZlbnQuY3VycmVudEluZGV4XS5maWVsZDtcbiAgICBjb25zdCB2aXNpYmxlUHJldkluZGV4ID0gZ3JvdXAuY2hpbGRyZW4uZmluZEluZGV4KFxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT0gcHJldmlvdXNGaWVsZFxuICAgICk7XG4gICAgY29uc3QgdmlzaWJsZUN1cnJJbmRleCA9IGdyb3VwLmNoaWxkcmVuLmZpbmRJbmRleChcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IGN1cnJlbnRGaWVsZFxuICAgICk7XG4gICAgY29uc3QgYWxsRmllbGRzID0gW3ByZXZpb3VzRmllbGQsIGN1cnJlbnRGaWVsZF07XG4gICAgY29uc3QgY2VsbHMgPSBhbGxGaWVsZHMubGVuZ3RoXG4gICAgICA/IChbXSBhcyBIVE1MRWxlbWVudFtdKS5jb25jYXQoXG4gICAgICAgIC4uLmFsbEZpZWxkcy5tYXAoKGZpZWxkKSA9PlxuICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2ZpZWxkPVwiJHtmaWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXVxuICAgICAgICApXG4gICAgICApXG4gICAgICA6IFtdO1xuXG4gICAgY29uc3QgZ3JvdXBJblNlY3Rpb24gPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmQoXG4gICAgICAoY29sOiBhbnkpID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxuICAgICAgICBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQ/LmZpZWxkID09PSBjb2x1bW4/LmZpZWxkKVxuICAgICk7XG5cbiAgICBjb25zdCBmaWx0ZXJHcm91cEluU2VjdGlvbiA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZChcbiAgICAgIChjb2w6IGFueSkgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXG4gICAgKTtcblxuICAgIGNvbnN0IGdyb3VwSW5TZWN0aW9uSW5kZXggPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmRJbmRleChcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gZ3JvdXBJblNlY3Rpb24uaGVhZGVyXG4gICAgKTtcblxuICAgIGNvbnN0IGZpcnN0UG9zaXRpb25zID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcbiAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICB0aGlzLmNvbHVtbnNbZ3JvdXBJbmRleF0/LmNoaWxkcmVuLFxuICAgICAgdmlzaWJsZVByZXZJbmRleCxcbiAgICAgIHZpc2libGVDdXJySW5kZXhcbiAgICApO1xuXG4gICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgKHRoaXMgYXMgYW55KVtzZWN0aW9uXT8uW2dyb3VwSW5TZWN0aW9uSW5kZXhdLmNoaWxkcmVuLFxuICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICk7XG5cbiAgICAvLyBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmdab25lLm9uU3RhYmxlKTtcbiAgICBhbGxGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRDZWxscyA9IEFycmF5LmZyb20oXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYClcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkhO1xuICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcbiAgICAgICAgaWYgKGRlbHRhWCAhPT0gMCkge1xuICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XG4gICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XG4gICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuXG4gICAgICAgICAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7ZmllbGR9XCJdYClcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgICAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpO1xuICAgICAgICAgIGlmIChvbGRMZWZ0ID09IG51bGwpIHJldHVybjsgLy8gc2FmZXR5IGNoZWNrXG5cbiAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcblxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xuXG4gICAgICAgICAgICAvLyBGb3JjZSByZWZsb3dcbiAgICAgICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuXG4gICAgICAgICAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gY29uc29sZS5ncm91cCgnR3JvdXA6ICcsIGdyb3VwKTtcbiAgfVxuXG5cbiAgb25DaGlsZERyb3BsaXN0RHJvcGVkKGNka0RyYWdEcm9wZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pIHtcbiAgICBjb25zdCBhbGxDb2xzID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IHBpbm5lZExlZnQgPSBhbGxDb2xzLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpO1xuICAgIGNvbnN0IGNlbnRlciA9IGFsbENvbHMuZmlsdGVyKGMgPT4gIWMucGlubmVkKTtcbiAgICBjb25zdCBwaW5uZWRSaWdodCA9IGFsbENvbHMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xuICAgIGNvbnN0IHJlb3JkZXJlZENvbHVtbnMgPSBbLi4ucGlubmVkTGVmdCwgLi4uY2VudGVyLCAuLi5waW5uZWRSaWdodF07XG4gICAgdGhpcy5jb21tb25TZXZpY2UuYXNzaWduVW5pcXVlQ29sdW1uSW5kZXhlcyhyZW9yZGVyZWRDb2x1bW5zKTtcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMik7XG4gIH1cblxuICAvLyBSb3dzIEdyb3VwaW5nIExvZ2ljIEdvZXMgSGVyZVxuXG4gIGdyb3VwRGF0YShkYXRhOiBhbnlbXSwgZ3JvdXBGaWVsZHM6IHN0cmluZ1tdKTogYW55W10ge1xuICAgIGxldCBkYXRhU2V0ID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuICAgIGlmICghZ3JvdXBGaWVsZHMubGVuZ3RoKSByZXR1cm4gZGF0YTtcbiAgICBjb25zdCBbY3VycmVudEZpZWxkLCAuLi5yZXN0RmllbGRzXSA9IGdyb3VwRmllbGRzO1xuICAgIGNvbnN0IGdyb3VwZWRNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGFTZXQpIHtcbiAgICAgIGxldCBrZXlWYWx1ZSA9IGN1cnJlbnRGaWVsZC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCBrKSA9PiBvYmo/LltrXSwgaXRlbSk7XG4gICAgICBsZXQgZ3JvdXBLZXk6IHN0cmluZztcbiAgICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGlzX2RlbGV0ZWQgZmllbGRcbiAgICAgIGlmIChjdXJyZW50RmllbGQgPT09ICdpc19kZWxldGVkJyB8fCBjdXJyZW50RmllbGQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnaXNfZGVsZXRlZCcpKSB7XG4gICAgICAgIGlmIChrZXlWYWx1ZSA9PT0gdHJ1ZSB8fCBrZXlWYWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgZ3JvdXBLZXkgPSAnQXJjaGl2ZWQnO1xuICAgICAgICB9IGVsc2UgaWYgKGtleVZhbHVlID09PSBmYWxzZSB8fCBrZXlWYWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgIGdyb3VwS2V5ID0gJ1VuYXJjaGl2ZWQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwS2V5ID0gXCJfQmxhbmtcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShrZXlWYWx1ZSkpIHtcbiAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGdyb3VwS2V5ID0gXCJfQmxhbmtcIjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Yga2V5VmFsdWVbMF0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXG4gICAgICAgICAgICAubWFwKG9iaiA9PiAob2JqPy5kZXBhcnRtZW50X25hbWUgfHwgb2JqLnJvbGVOYW1lIHx8IG9iaj8uZnVsbF9uYW1lIHx8IG9iaj8udmFsdWUgfHwgb2JqPy5uYW1lKSA/PyBcIl9CbGFua1wiKVxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwS2V5ID0ga2V5VmFsdWVcbiAgICAgICAgICAgIC5tYXAodmFsID0+IHZhbCA/PyBcIl9CbGFua1wiKVxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChrZXlWYWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgKHR5cGVvZiBrZXlWYWx1ZSA9PT0gJ3N0cmluZycgJiYgIWlzTmFOKERhdGUucGFyc2Uoa2V5VmFsdWUpKSkpIHtcbiAgICAgICAgY29uc3QgZGF0ZU9iaiA9IGtleVZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGtleVZhbHVlIDogbmV3IERhdGUoa2V5VmFsdWUpO1xuICAgICAgICBncm91cEtleSA9IHRoaXMuY29tbW9uU2V2aWNlLmZvcm1hdERhdGVWYWx1ZShkYXRlT2JqLCB0aGlzLmRhdGVGb3JtYXQgfHwgJ2RkL01NL3l5eXknKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHR5cGVvZiBrZXlWYWx1ZSA9PT0gJ29iamVjdCcgJiYga2V5VmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XG4gICAgICAgIGdyb3VwS2V5ID0ga2V5VmFsdWUudmFsdWUgPz9cbiAgICAgICAgICBrZXlWYWx1ZS5uYW1lID8/XG4gICAgICAgICAga2V5VmFsdWUuaWQgPz9cbiAgICAgICAgICBrZXlWYWx1ZS5sYWJlbCA/P1xuICAgICAgICAgIGtleVZhbHVlW09iamVjdC5rZXlzKGtleVZhbHVlKVswXV0gPz9cbiAgICAgICAgICBcIl9CbGFua1wiO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZ3JvdXBLZXkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgZ3JvdXBLZXkgPSBcIl9CbGFua1wiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwS2V5ID0gdGhpcy50b1RpdGxlQ2FzZShTdHJpbmcoZ3JvdXBLZXkpLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlID8gdGhpcy50b1RpdGxlQ2FzZShTdHJpbmcoa2V5VmFsdWUpLnRyaW0oKSkgOiBcIl9CbGFua1wiO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWdyb3VwZWRNYXAuaGFzKGdyb3VwS2V5KSkgZ3JvdXBlZE1hcC5zZXQoZ3JvdXBLZXksIFtdKTtcbiAgICAgIGdyb3VwZWRNYXAuZ2V0KGdyb3VwS2V5KSEucHVzaChpdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBlZE1hcC5lbnRyaWVzKCkpLm1hcCgoW2dyb3VwVmFsdWUsIGdyb3VwSXRlbXNdKSA9PiAoe1xuICAgICAgaXNHcm91cDogdHJ1ZSxcbiAgICAgIGdyb3VwRmllbGQ6IGN1cnJlbnRGaWVsZCxcbiAgICAgIGdyb3VwVmFsdWUsXG4gICAgICBjaGlsZHJlbjogdGhpcy5ncm91cERhdGEoZ3JvdXBJdGVtcywgcmVzdEZpZWxkcyksXG4gICAgICBpc0V4cGFuZDogZmFsc2UsXG4gICAgfSkpO1xuICB9XG5cbiAgdG9UaXRsZUNhc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHJcbiAgICAgID8udG9Mb3dlckNhc2UoKVxuICAgICAgPy5zcGxpdCgnICcpXG4gICAgICA/Lm1hcCh3b3JkID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgPy5qb2luKCcgJyk7XG4gIH1cblxuXG4gIGNvdW50TGVhZlJvd3MoZ3JvdXA6IGFueSk6IG51bWJlciB7XG4gICAgaWYgKCFncm91cC5jaGlsZHJlbiB8fCAhZ3JvdXAuY2hpbGRyZW4ubGVuZ3RoKSByZXR1cm4gMDtcblxuICAgIHJldHVybiBncm91cC5jaGlsZHJlbi5yZWR1Y2UoKGNvdW50OiBudW1iZXIsIGNoaWxkOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBjb3VudCArIChjaGlsZC5pc0dyb3VwID8gdGhpcy5jb3VudExlYWZSb3dzKGNoaWxkKSA6IDEpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XG4gIHRvZ2dsZUFjdGl2ZUZpbHRlcigpIHtcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9ICF0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbjtcbiAgfVxuXG4gIHRvZ2dsZUFjdGlvbnModHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09IHRoaXMuYWN0aXZlVG9wQnV0dG9uKSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IHR5cGU7XG4gICAgZWxzZSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IHR5cGU7XG4gICAgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSAnJztcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFjdGl2ZVN1YkJ1dHRvbiA9ICcnO1xuICB0b2dnbGVTdWJBY3Rpb25zKHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyAodGhpcy5wcmVzZXROYW1lID0gJycpIDogKHRoaXMucHJlc2V0TmFtZSA9IHRoaXMuc3RvcmVQcmVzZXROYW1lKVxuICAgIGlmICh0eXBlID09PSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbikgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSAnJztcbiAgICBlbHNlIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gdHlwZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b2dnbGVBY3Rpb25zRHJvcGRvd24oKSB7XG4gICAgdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duID0gIXRoaXMuc2hvd0FjdGlvbnNEcm9wRG93bjtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgY2hhbmdlVGFibGVMYXlvdXQoZXZlbnQ6IEV2ZW50LCBsYXlvdXRUeXBlOiBzdHJpbmcpIHtcbiAgICBsZXQgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAodGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGxheW91dFR5cGU7XG4gICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KGxheW91dFR5cGUpXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xuICAgIH1cbiAgICB0aGlzLm9uRm9udENoYW5nZSgpXG4gIH1cblxuICBzZXRUYWJsZUxheW91dChsYXlvdXRUeXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoIWxheW91dFR5cGUpIHJldHVybjtcbiAgICBpZiAobGF5b3V0VHlwZSA9PT0gJ3NtYWxsJykge1xuICAgICAgdGhpcy5yb3dIZWlnaHQgPSAzNjtcbiAgICAgIHRoaXMuaGVhZGVyUm93SGVpZ2h0ID0gNDA7XG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSB8fCAxMDtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSB8fCAxMDtcblxuICAgIH0gZWxzZSBpZiAobGF5b3V0VHlwZSA9PT0gJ21lZGl1bScpIHtcbiAgICAgIHRoaXMucm93SGVpZ2h0ID0gNDQ7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDQ0O1xuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTQ7XG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTQ7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3dIZWlnaHQgPSA2MDtcbiAgICAgIHRoaXMuaGVhZGVyUm93SGVpZ2h0ID0gNTI7XG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSB8fCAxNjtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSB8fCAxNjtcbiAgICB9XG4gICAgLy8gdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHN0YXJ0SW5kZXhEYXRhKCkge1xuICAgIHJldHVybiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdDtcbiAgfVxuXG4gIGdldCBlbmRJbmRleCgpIHtcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5zdGFydEluZGV4ICsgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LCB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlUGFnZXMoKTogKG51bWJlciB8IHN0cmluZylbXSB7XG4gICAgY29uc3QgcGFnZXM6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXTtcblxuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyA8PSA3KSB7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlczsgaSsrKSB7XG4gICAgICAgIHBhZ2VzLnB1c2goaSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhZ2VzLnB1c2goMSk7XG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPiAzKSB7XG4gICAgICAgIHBhZ2VzLnB1c2goJy4uLicpO1xuICAgICAgfVxuICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMiwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKTtcbiAgICAgIGxldCBlbmQgPSBNYXRoLm1pbih0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyAtIDEsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlICsgMSk7XG5cbiAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgICBwYWdlcy5wdXNoKGkpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPCB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyAtIDIpIHtcbiAgICAgICAgcGFnZXMucHVzaCgnLi4uJyk7XG4gICAgICB9XG4gICAgICBwYWdlcy5wdXNoKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFnZXM7XG4gIH1cblxuXG4gIHNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biA9ICcnO1xuICB0b2dnbGVDb2x1bW5JbkZpbHRlckRyb3Bkb3duKGNvbDogYW55KSB7XG5cbiAgfVxuXG4gIHJlbW92ZUNvbHVtbkZyb21GaWx0ZXIob3B0aW9uOiBhbnkpIHtcblxuICB9XG5cbiAgaGFuZGxlQmFja3NwYWNlKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5zZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gJiYgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBsYXN0ID0gdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnNbdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGxhc3QpO1xuICAgIH1cbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlck1lbnVlU2VhcmNoSW5wdXQnKSBmaWx0ZXJNZW51ZVNlYXJjaElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuICBAVmlld0NoaWxkKCdmaWx0ZXJNZW51ZVRleHRjaElucHV0JykgZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cblxuICBvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjb2w6IGFueSkge1xuICAgIGlmIChjb2wudHlwZSA9PSAnaW1hZ2UnIHx8ICFjb2w/LnR5cGUgfHwgIWNvbC5pc19zZWFyY2hfYWJsZSkgcmV0dXJuO1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIgPSBjb2w7XG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSB0cnVlO1xuICAgIHRoaXMuYWRkRmlsdGVyQ29sdW1uSW5wdXQgPSAnJztcbiAgICBpZiAoY29sLnR5cGUgPT09ICdkcm9wZG93bicgfHwgY29sLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XG4gICAgICBjb25zdCBzYXZlZElkcyA9IGNvbD8ucXVlcnk/Ll9pZHMgfHwgW107XG4gICAgICBzYXZlZElkcy5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpKTtcblxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/LmZpbHRlcihcbiAgICAgICAgKG9wdGlvbjogYW55KSA9PiB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlck1lbnVlU2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmZpbHRlck1lbnVlU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnLCAndGltZSddLmluY2x1ZGVzKGNvbC50eXBlKSkge1xuICAgICAgdGhpcy5maXJzdENvbmRpdGlvbiA9IGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gPyBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uIDogKChjb2wudHlwZSA9PSAnZGF0ZScgfHwgY29sLnR5cGUgPT0gJ3RpbWUnIHx8IGNvbC50eXBlID09ICdudW1iZXInKSA/ICdlcXVhbCcgOiAnY29udGFpbicpO1xuICAgICAgdGhpcy5maXJzdFZhbHVlID0gY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgJyc7XG4gICAgICB0aGlzLmNvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LmNvbmRpdGlvbiB8fCAnbm9uZSc7XG4gICAgICB0aGlzLnNlY29uZENvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LnNlY29uZF9jb25kaXRpb24gPyBjb2w/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uIDogKChjb2wudHlwZSA9PSAnZGF0ZScgfHwgY29sLnR5cGUgPT0gJ3RpbWUnIHx8IGNvbC50eXBlID09ICdudW1iZXInKSA/ICdlcXVhbCcgOiAnY29udGFpbicpO1xuICAgICAgdGhpcy5zZWNvbmRWYWx1ZSA9IGNvbD8ucXVlcnk/LnNlY29uZF92YWx1ZSB8fCAnJztcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJNZW51ZVRleHRjaElucHV0KSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJNZW51ZVRleHRjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXNGaWx0ZXJPcGVuID0gZmFsc2VcbiAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI6IGFueTtcbiAgc2hvd0ZpbHRlcnMgPSB0aGlzLnNob3dTaWRlTWVudSA/IGZhbHNlIDogZmFsc2U7XG4gIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNvbDogYW55KSB7XG4gICAgaWYgKGNvbC50eXBlICE9PSAnZHJvcGRvd24nICYmIGNvbC50eXBlICE9PSAnYXJyYXknIHx8ICFjb2wuaXNfc2VhcmNoX2FibGUpIHJldHVybjtcbiAgICB0aGlzLm9wZW5GaWx0ZXIoY29sKTtcbiAgfVxuXG4gIG9wZW5GaWx0ZXIoY29sOiBhbnkpIHtcbiAgICBpZiAoIWNvbC5pc19zZWFyY2hfYWJsZSkgcmV0dXJuO1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IGNvbDtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGxcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IHRydWU7XG4gICAgdGhpcy5zZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gPSAnJztcbiAgICB0aGlzLmFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlciA9IGNvbDtcbiAgICBpZiAoY29sLnR5cGUgPT09ICdkcm9wZG93bicgfHwgY29sLnR5cGUgPT0gJ2FycmF5Jykge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcbiAgICAgIGNvbnN0IHNhdmVkSWRzID0gY29sPy5xdWVyeT8uX2lkcyB8fCBbXTtcbiAgICAgIHNhdmVkSWRzLmZvckVhY2goKGlkOiBzdHJpbmcpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmFkZChpZCkpO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8uZmlsdGVyKFxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZScsICd0aW1lJ10uaW5jbHVkZXMoY29sLnR5cGUpKSB7XG4gICAgICB0aGlzLmZpcnN0Q29uZGl0aW9uID1cbiAgICAgICAgY29sPy5xdWVyeT8uZmlyc3RfY29uZGl0aW9uID8/XG4gICAgICAgICgoY29sLnR5cGUgPT09ICdudW1iZXInIHx8IGNvbC50eXBlID09PSAndGltZScgfHwgY29sLnR5cGUgPT09ICdkYXRlJylcbiAgICAgICAgICA/ICdlcXVhbCdcbiAgICAgICAgICA6ICdjb250YWluJyk7XG5cbiAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlIHx8ICcnO1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gfHwgJ25vbmUnO1xuICAgICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPVxuICAgICAgICBjb2w/LnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uID8/XG4gICAgICAgICgoY29sLnR5cGUgPT09ICdudW1iZXInIHx8IGNvbC50eXBlID09PSAndGltZScgfHwgY29sLnR5cGUgPT09ICdkYXRlJylcbiAgICAgICAgICA/ICdlcXVhbCdcbiAgICAgICAgICA6ICdjb250YWluJyk7XG4gICAgICB0aGlzLnNlY29uZFZhbHVlID0gY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlIHx8ICcnO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIGZpcnN0VmFsdWU6IGFueSA9ICcnO1xuICBmaXJzdENvbmRpdGlvbiA9ICcnO1xuICBzZWNvbmRWYWx1ZTogYW55ID0gJyc7XG4gIHNlY29uZENvbmRpdGlvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGNvbmRpdGlvbjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIHJlc2V0VGV4dEZpbHRlckNoYW5nZXMoKSB7XG4gICAgdGhpcy5maXJzdENvbmRpdGlvbiA9ICdjb250YWluJztcbiAgICB0aGlzLmZpcnN0VmFsdWUgPSAnJztcbiAgICB0aGlzLmNvbmRpdGlvbiA9ICdub25lJztcbiAgICB0aGlzLnNlY29uZENvbmRpdGlvbiA9IG51bGw7XG4gICAgdGhpcy5zZWNvbmRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xuICB9XG5cbiAgdG9nZ2xlQWxsVmFsdXNTZWxlY3Rpb25JbkRyb3Bkb3duRmlsdGVyKGNvbHVtbjogYW55KSB7XG5cbiAgfVxuXG5cbiAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOiBhbnlbXSA9IFtdXG4gIGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICB0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihvcHRpb246IGFueSkge1xuICAgIGRlYnVnZ2VyXG4gICAgY29uc3QgaWQgPSBvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb247XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhpZCkpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmRlbGV0ZShpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmFkZChpZCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gdGhpcy5zZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb24pKVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVyQ2hhbmdlcygpIHtcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMhLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xuICB9XG5cbiAgYXBwbHlEcm9wZG93bkZpbHRlcigpIHtcbiAgICBjb25zdCBjb2x1bW5zcyA9IHRoaXMuZmluZENvbHVtbih0aGlzLmNvbHVtbnMsIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuZmllbGQpO1xuICAgIGlmICghY29sdW1uc3MpIHJldHVybjtcblxuICAgIGlmIChjb2x1bW5zcy50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbnNzLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgIGlmICghdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgfHwgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuc2l6ZSA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFsnc3RyaW5nJywgJ251bWJlcicsICdkYXRlJywgJ3RpbWUnXS5pbmNsdWRlcyhjb2x1bW5zcy50eXBlKSkge1xuICAgICAgY29uc3QgaXNFbXB0eSA9XG4gICAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICB0aGlzLmZpcnN0VmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB0aGlzLmZpcnN0VmFsdWUgPT09ICcnO1xuXG4gICAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2xvc2VBbGxGaWx0ZXJNZW51cygpO1xuICAgIHRoaXMuY2xvc2VBbGxFeHBhbmRlZFJvd3MoKTtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmZpbmRDb2x1bW4odGhpcy5jb2x1bW5zLCB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLmZpZWxkKTtcbiAgICBpZiAoY29sdW1uKSB7XG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicgfHwgY29sdW1uLnR5cGUgPT0gJ2FycmF5Jykge1xuICAgICAgICBjb2x1bW4ucXVlcnkgPSBjb2x1bW4ucXVlcnkgfHwge307XG4gICAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gY29sdW1uLnF1ZXJ5Ll9pZHMgfHwgW107XG5cbiAgICAgICAgLy8gUmVtb3ZlIHN0YWxlIElEcyAobm90IHByZXNlbnQgaW4gU2V0KVxuICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcyA9IGNvbHVtbi5xdWVyeS5faWRzLmZpbHRlcihcbiAgICAgICAgICAoaWQ6IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKGlkKSAgIC8vIDwtLSB1c2UgLmhhcygpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIG5ldyBvbmVzIGlmIG1pc3NpbmdcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICAgICAgaWYgKCFjb2x1bW4ucXVlcnkuX2lkcy5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgIGNvbHVtbi5xdWVyeS5faWRzLnB1c2goaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnLCAndGltZSddLmluY2x1ZGVzKGNvbHVtbi50eXBlKSkge1xuICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiB0aGlzLmZpcnN0Q29uZGl0aW9uIHx8ICdjb250YWluJyxcbiAgICAgICAgICBmaXJzdF92YWx1ZTogdGhpcy5maXJzdFZhbHVlIHx8IG51bGwsXG4gICAgICAgICAgY29uZGl0aW9uOiB0aGlzLnNlY29uZFZhbHVlID8gdGhpcy5jb25kaXRpb24gOiAnbm9uZScsXG4gICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogdGhpcy5zZWNvbmRWYWx1ZSA/IHRoaXMuc2Vjb25kQ29uZGl0aW9uIDogbnVsbCxcbiAgICAgICAgICBzZWNvbmRfdmFsdWU6IHRoaXMuc2Vjb25kVmFsdWUgfHwgbnVsbCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxuICAgICAgcXVlcnk6IGNvbHVtbi5xdWVyeSxcbiAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxuICAgICAgX2lkczogY29sdW1uLl9pZHNcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XG4gICAgfVxuXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG5cbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKClcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuICBwcml2YXRlIGZpbmRDb2x1bW4oY29sdW1uczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBhbnkge1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcbiAgICAgIGlmIChjb2wuZmllbGQgPT09IGZpZWxkKSByZXR1cm4gY29sO1xuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kQ29sdW1uKGNvbC5jaGlsZHJlbiwgZmllbGQpO1xuICAgICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjb2x1bW46IGFueSkge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnNDb25maWc/LnNvbWUoY29sID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbDogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBjaGVja2VkID0gKGV2ZW50Py50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LmNoZWNrZWQ7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubWFwKFxuICAgICAgICAob3B0OiBhbnkpID0+IG9wdC5pZCB8fCBvcHQuX2lkIHx8IG9wdFxuICAgICAgKTtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzID0gbmV3IFNldDxzdHJpbmc+KGNvbC5xdWVyeS5faWRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sLnF1ZXJ5Ll9pZHMgPSBbXTtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cblxuICBpc0FsbFNpZGVGaWx0ZXJPcHRpb25zU2VsZWN0ZWQoY29sOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbD8ucXVlcnk/Ll9pZHMgfHwgIUFycmF5LmlzQXJyYXkoY29sLmNvbHVtbl9kcm9wZG93bl92YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID09PSBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmxlbmd0aDtcbiAgfVxuXG4gIG9uT3B0aW9uVG9nZ2xlKGNvbDogYW55LCBvcHRpb246IGFueSkge1xuICAgIGNvbnN0IG9wdGlvbklkID0gb3B0aW9uLmlkIHx8IG9wdGlvbi5faWQgfHwgb3B0aW9uO1xuICAgIGlmICghY29sLnF1ZXJ5Ll9pZHMpIHtcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XG4gICAgfVxuICAgIGNvbnN0IGlkeCA9IGNvbC5xdWVyeS5faWRzLmluZGV4T2Yob3B0aW9uSWQpO1xuICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgY29sLnF1ZXJ5Ll9pZHMuc3BsaWNlKGlkeCwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbC5xdWVyeS5faWRzLnB1c2gob3B0aW9uSWQpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIHJlc2V0U2lkZUZpbHRlcihjb2w6IGFueSkge1xuICAgIGNvbnN0IHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbi5maWVsZCA9PT0gY29sLmZpZWxkKSB7XG4gICAgICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICAgICAgX2lkczogW10sXG4gICAgICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcbiAgICAgICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXG4gICAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAnY29udGFpbicsXG4gICAgICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbj8uY2hpbGRyZW4pICYmIGNvbHVtbj8uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGlmIChyZXNldENvbHVtblJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgcmVzZXRDb2x1bW5SZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG5cbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKClcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29tbW9uU2V2aWNlLm1haW5Db250YWluZXJMZWZ0ID0gdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG5cbiAgY2xlYXJBbGxGaWx0ZXJzKHNob3VsZFVwZGF0ZUNvbmZpZ0xpc3RpbmcgPSBmYWxzZSkge1xuICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMgPSBbXTtcbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XG4gICAgY29uc3QgcmVzZXRBbGxSZWN1cnNpdmVseSA9IChjb2x1bW5zOiBhbnlbXSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoY29sdW1uLnF1ZXJ5KSB7XG4gICAgICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICAgICAgX2lkczogW10sXG4gICAgICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcbiAgICAgICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXG4gICAgICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiAnY29udGFpbicsXG4gICAgICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbj8uY2hpbGRyZW4pICYmIGNvbHVtbi5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICByZXNldEFsbFJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHJlc2V0QWxsUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IFtdO1xuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGV2ZW50ID0geyBldmVudFR5cGU6ICdyZXNldCcsIGRhdGE6IHsgdGFibGVUeXBlOiB0aGlzLnRhYmxlVHlwZSB9IH07XG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogW10sXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgaWYgKCFzaG91bGRVcGRhdGVDb25maWdMaXN0aW5nKSB7XG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgaWYgKCFzaG91bGRVcGRhdGVDb25maWdMaXN0aW5nKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XG4gICAgICB9XG4gICAgfSwgMzAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIGFwcGx5U2lkZUZpbHRlcihjb2x1bW46IGFueSkge1xuICAgIGlmICghY29sdW1uLnF1ZXJ5LmZpcnN0X3ZhbHVlICYmICFjb2x1bW4/LnF1ZXJ5Py5faWRzLmxlbmd0aCkgcmV0dXJuO1xuICAgIHRoaXMuY2xvc2VBbGxFeHBhbmRlZFJvd3MoKTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHtcbiAgICAgIGZpZWxkOiBjb2x1bW4uZmllbGQsXG4gICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxuICAgICAgdHlwZTogY29sdW1uLnR5cGUsXG4gICAgICBfaWRzOiBjb2x1bW4uX2lkcyB8fCBbXVxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XG4gICAgfVxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG5cbiAgICB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcbiAgICB9LCAyMDApO1xuICB9XG5cblxuICByZW1vdmVTaWRlRmlsdGVyKGNvbHVtbjogYW55KSB7XG4gICAgaWYgKCFjb2x1bW4ucXVlcnkuZmlyc3RfdmFsdWUgJiYgIWNvbHVtbj8ucXVlcnk/Ll9pZHMubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5jbG9zZUFsbEV4cGFuZGVkUm93cygpO1xuXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnNwbGljZShleGlzdGluZ0luZGV4LCAxKTtcbiAgICB9XG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xuICAgICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgIC4uLnJlc3QsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIGNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpIHtcbiAgICBpZiAodGhpcy5leHBhbmRlZENlbGxzPy5zaXplID4gMCkge1xuICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cblxuXG4gIHRyYWNrQnlGaWVsZChpbmRleDogbnVtYmVyLCBjb2w6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbD8uZmllbGQ7XG4gIH1cblxuICBnZXQgYWN0aXZlRmlsdGVyZWRDb2x1bW5zKCk6IGFueVtdIHtcbiAgICBjb25zdCBjb2xsZWN0RmlsdGVyZWQgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XG4gICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xuXG4gICAgICBjb2x1bW5zPy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoY29sbGVjdEZpbHRlcmVkKGNvbC5jaGlsZHJlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNJbkZpbHRlcnNDb25maWcgPSB0aGlzLmZpbHRlcnNDb25maWcuc29tZShmID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XG4gICAgICAgIGlmIChpc0luRmlsdGVyc0NvbmZpZykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICByZXR1cm4gY29sbGVjdEZpbHRlcmVkKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuXG5cblxuICB0b2dnbGVPcGVuRmlsdGVyKCkge1xuICAgIHRoaXMuc2hvd0ZpbHRlcnMgPSAhdGhpcy5zaG93RmlsdGVycztcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG5cblxuICAvLyBDZWxsIEVkaXRpbmcgV29yayBzdGFydCBoZXJlXG5cbiAgZWRpdGluZ0tleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGFjdGl2ZUNlbGw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHNldEFjdGl2ZUNlbGwocm93OiBhbnksIGNvbHVtbjogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJDZWxsIExvY2F0aW9uOiBcIiwgcm93Ll9fdmlydHVhbEluZGV4ICsgJycgKyBjb2x1bW4/LmluZGV4KTtcbiAgICB0aGlzLmFjdGl2ZUNlbGwgPSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbHVtbi5maWVsZCk7XG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpc0FjdGl2ZUNlbGwocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQ2VsbCA9PT0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2wuZmllbGQpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndGV4dEFyZWFkSW5wdXQnKSB0ZXh0QXJlYWRJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG4gIG1lbnVSZWFkeSA9IGZhbHNlO1xuICBlbmFibGVFZGl0KHJvdzogYW55LCBjb2x1bW46IGFueSwgY2xpY2tlZEZyb21EZXRhaWxzQm94ID0gZmFsc2UsIGNlbGxDb250YWluZXI/OiBIVE1MRWxlbWVudCkge1xuICBpZigoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicgfHwgY29sdW1uLnR5cGUgPT0gJ2FycmF5JykgJiYgIWNvbHVtbj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLmVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XG4gICAgaWYgKHJvdz8uX192aXJ0dWFsSW5kZXggPT0gMCkgcmV0dXJuO1xuICAgIGlmICghY29sdW1uPy5pc19lZGl0YWJsZSkgcmV0dXJuO1xuICAgIHRoaXMubWVudVJlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy5lZGl0aW5nS2V5ID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBkcm9wZG93bk1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKGRyb3Bkb3duTWVudSkge1xuICAgICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBkcm9wZG93bk1lbnUub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9XG4gICAgICAgICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3QgbWVudVJlY3QgPSBkcm9wZG93bk1lbnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3Qgc3BhY2VCZWxvdyA9IGNvbnRhaW5lclJlY3QuYm90dG9tIC0gbWVudVJlY3QudG9wO1xuICAgICAgICAgIGNvbnN0IHNwYWNlQWJvdmUgPSBtZW51UmVjdC50b3AgLSBjb250YWluZXJSZWN0LnRvcCAtICh0aGlzLnNob3dGaWx0ZXJSb3cgJiYgdGhpcy5zaG93Q29sdW1uc0dyb3VwaW5nID8gdGhpcy5oZWFkZXJSb3dIZWlnaHQgKiAzIDogKHRoaXMuc2hvd0ZpbHRlclJvdyB8fCB0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgPyB0aGlzLmhlYWRlclJvd0hlaWdodCAqIDIgOiB0aGlzLmhlYWRlclJvd0hlaWdodCkpIC0gKHRoaXMuc2hvd1Jvd3NHcm91cGluZyA/IHRoaXMudG9wRmlsdGVyUm93SGVpZ2h0IDogMCk7XG5cbiAgICAgICAgICBpZiAoc3BhY2VCZWxvdyA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gJzEwMCUnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gYC0ke21lbnVIZWlnaHR9cHhgO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkcm9wZG93bk1lbnUuc3R5bGUudG9wID0gJzEwMCUnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lbnVSZWFkeSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghY2xpY2tlZEZyb21EZXRhaWxzQm94ICYmIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4uZmllbGQpPy5sZW5ndGggPiA1MCkge1xuICAgICAgdGhpcy50b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChyb3csIGNvbHVtbiwgdGhpcy5jb2x1bW5zLCBmYWxzZSlcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWNlbGxDb250YWluZXIpIHJldHVybjtcblxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duQnV0dG9uID0gY2VsbENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICcuZHJvcGRvd24tZWRpdC1idXR0b24nXG4gICAgICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgIGlmIChkcm9wZG93bkJ1dHRvbikge1xuICAgICAgICAgIGRyb3Bkb3duQnV0dG9uLmZvY3VzKCk7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gdGhpcy5nZXREcm9wZG93bkNlbGxUZXh0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRUZXh0KSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZHJvcGRvd25CdXR0b24pO1xuICAgICAgICAgICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgc2VsPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgICAgIHNlbD8uYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IGNlbGxDb250YWluZXIucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJ2lucHV0Om5vdChbdHlwZT1cImZpbGVcIl0pLCB0ZXh0YXJlYSwgc2VsZWN0LCBbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXSdcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgIGZvY3VzYWJsZS5zdHlsZS5mb250U2l6ZSA9ICcxNnB4JztcbiAgICAgICAgZm9jdXNhYmxlLmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZvY3VzYWJsZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHxcbiAgICAgICAgICBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50XG4gICAgICAgICkge1xuICAgICAgICAgIGZvY3VzYWJsZS5zZWxlY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmXG4gICAgICAgICAgKGZvY3VzYWJsZS50eXBlID09PSAnZGF0ZScgfHwgZm9jdXNhYmxlLnR5cGUgPT09ICd0aW1lJykgJiZcbiAgICAgICAgICB0eXBlb2YgKGZvY3VzYWJsZSBhcyBhbnkpLnNob3dQaWNrZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgKGZvY3VzYWJsZSBhcyBhbnkpLnNob3dQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaXNWYWx1ZVZhbGlkKHJvdzogYW55LCBjb2x1bW46IGFueSwgY29udHJvbDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChyb3csIGNvbHVtbiwgY29udHJvbD8uY29udHJvbD8udmFsdWUpXG4gIH1cblxuICBkaXNhYmxlRWRpdChyb3c6IGFueSwgY29sdW1uOiBhbnksIGNvbnRyb2w/OiBhbnkpIHtcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xuICAgIGlmICghdGhpcy5lZGl0aW5nS2V5KSByZXR1cm5cbiAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLnByaXN0aW5lKSB7XG4gICAgICB0aGlzLmVkaXRpbmdLZXkgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLnR5cGUgIT09ICdkcm9wZG93bicgJiYgY29sdW1uLnR5cGUgIT09ICdhcnJheScgJiYgY29udHJvbD8uaW52YWxpZCkge1xuICAgICAgdGhpcy5yb2xsQmFja0NlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbD8uY29udHJvbD8udmFsdWU7XG4gICAgY29uc3QgdmlzaWJsZVJvdyA9IHRoaXMudmlzaWJsZVJvd3MuZmluZChyID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKSk7XG4gICAgaWYgKHZpc2libGVSb3cpIHtcbiAgICAgIHRoaXMuc2V0TmVzdGVkRmxhdFZhbHVlKHZpc2libGVSb3csIGNvbHVtbj8uZmllbGQsIHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChyb3csIGNvbHVtbiwgdmFsdWUpO1xuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgdGhpcy5yb2xsQmFja0NlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2hlY2tSb3dFZGl0QW5kRW1pdFZhbHVlKHJvdywgY29sdW1uLCB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uPy5maWVsZCkpO1xuICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uPy5maWVsZCk7XG4gICAgaWYgKChjb2x1bW4udHlwZSA9PSAnZW1haWwnICYmICF0aGlzLnZhbGlkYXRlRW1haWwoY3VycmVudCkpKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFJvdyA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LmZpbmQoaXRlbSA9PiAoKGl0ZW0uaWQgJiYgaXRlbS5pZCA9PSByb3cuaWQpIHx8IChpdGVtLmlkICYmIGl0ZW0uaWQgPT0gcm93Ll9pZCkpKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uPy5maWVsZCk7XG4gICAgICB0aGlzLnNldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uLCBvcmlnaW5hbCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgb25JbWFnZUNoYW5nZShldmVudDogRXZlbnQsIHJvdzogYW55LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKCFpbnB1dC5maWxlcyB8fCAhaW5wdXQuZmlsZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG5cbiAgICBpZiAoIWZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICB0aGlzLnNldE5lc3RlZEZsYXRWYWx1ZShyb3csIGNvbC5maWVsZCwgcmVhZGVyLnJlc3VsdCk7XG4gICAgICB0aGlzLmNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3csIGNvbCwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIH1cblxuICBzZXROZXN0ZWRGbGF0VmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm47XG5cbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpITtcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGlmICghYWNjW2tleV0pIGFjY1trZXldID0ge307XG4gICAgICByZXR1cm4gYWNjW2tleV07XG4gICAgfSwgb2JqKTtcblxuICAgIHBhcmVudFtsYXN0S2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcbiAgdmFsaWRhdGVFbWFpbCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW1haWxSZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCA/IGV2ZW50LndoaWNoIDogZXZlbnQua2V5Q29kZTtcbiAgICBpZiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3c6IGFueSwgY29sdW1uOiBhbnksIHZhbHVlPzogYW55KSB7XG4gICAgY29uc3Qgb3JpZ2luYWxSb3cgPSB0aGlzLm9yaWdpbmFsRGF0YVNldD8uZmluZChcbiAgICAgIChyOiBhbnkpID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKVxuICAgICk7XG4gICAgaWYgKCFvcmlnaW5hbFJvdykgcmV0dXJuO1xuICAgIGNvbnN0IG9yaWdpblZhbHVlID0gdGhpcy5kYXRhU2V0Py5maW5kKChyOiBhbnkpID0+IChyLmlkICYmIHIuaWQgPT09IHJvdy5pZCkgfHwgKHIuX2lkICYmIHIuX2lkID09PSByb3cuX2lkKSk7XG4gICAgY29uc3QgY2hhbmdlZFZhbHVlID0gb3JpZ2luVmFsdWUudmVyaWZpZWQgPT0gdmFsdWU7XG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcbiAgICAgIGRhdGE6IHsgLi4ub3JpZ2luVmFsdWUgfSxcbiAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxuICAgICAgdmFsdWU6IGNvbHVtbi50eXBlICE9PSAnYXJyYXknID8gdmFsdWUgOiB1bmRlZmluZWQsXG4gICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgdmFsdWVzOiBjb2x1bW4udHlwZSA9PSAnYXJyYXknID8gdmFsdWUgOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopXG4gIH1cblxuXG4gIGlzRWRpdGluZyhyb3c6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nS2V5ID09PSAoKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIGNvbC5maWVsZCk7XG4gIH1cblxuICBmb2N1c0FmdGVyVmFsdWVTZWxlY3Qocm93SW5kZXg6IGFueSwgY29sSW5kZXg6IGFueSwgc3ViY29sSW5kZXg6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViY29sSW5kZXgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHNldE5lc3RlZFZhbHVlKG9iajogYW55LCBjb2x1bW46IGFueSwgb3B0aW9uOiBhbnksIGNhbGxlZEZyb21JbnB1dCA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGlvbnNTZXJ2aWNlLmlzVmFsdWVWYWxpZChvYmosIGNvbHVtbiwgb3B0aW9uKTtcbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFZhbGlkYXRpb24gRXJyb3Igb24gZmllbGQgJHtjb2x1bW59YClcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IGNvbHVtbi5maWVsZDtcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpO1xuICAgIGNvbnN0IHBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgb2JqKTtcblxuICAgIGlmIChwYXJlbnQgJiYgbGFzdEtleSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9uKSkge1xuICAgICAgICBjb25zdCBsb29rdXAgPSBjb2x1bW4uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdO1xuICAgICAgICBwYXJlbnRbbGFzdEtleV0gPSBvcHRpb24ubWFwKHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IHR5cGVvZiBzZWxlY3RlZEl0ZW0gPT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IHNlbGVjdGVkSXRlbS5pZCA/PyBzZWxlY3RlZEl0ZW0uX2lkID8/IHNlbGVjdGVkSXRlbS52YWx1ZSA/PyBzZWxlY3RlZEl0ZW0ubmFtZSA/PyBzZWxlY3RlZEl0ZW1cbiAgICAgICAgICAgIDogc2VsZWN0ZWRJdGVtO1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSBsb29rdXAuZmluZCgob3B0OiBhbnkpID0+XG4gICAgICAgICAgICAob3B0Ll9pZCAmJiBvcHQuX2lkID09PSBzZWxlY3RlZElkKSB8fCAob3B0LmlkICYmIG9wdC5pZCA9PT0gc2VsZWN0ZWRJZClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoID8geyAuLi5tYXRjaCB9IDogeyBpZDogc2VsZWN0ZWRJZCwgdmFsdWU6IHNlbGVjdGVkSWQgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBsb29rdXAgPSBjb2x1bW4uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gb3B0aW9uLmlkID8/IG9wdGlvbi5faWQgPz8gb3B0aW9uLnZhbHVlID8/IG9wdGlvbi5uYW1lID8/IG9wdGlvbjtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBsb29rdXAuZmluZCgob3B0OiBhbnkpID0+IChvcHQuX2lkICYmIG9wdC5faWQgPT09IHNlbGVjdGVkSWQpIHx8IChvcHQuaWQgJiYgb3B0LmlkID09PSBzZWxlY3RlZElkKSk7XG5cbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gbWF0Y2ggPyB7IC4uLm1hdGNoIH0gOiB7IGlkOiBzZWxlY3RlZElkLCB2YWx1ZTogc2VsZWN0ZWRJZCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0geyBpZDogb3B0aW9uLCB2YWx1ZTogb3B0aW9uIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3JpZ2luYWxEYXRhU2V0ICYmIEFycmF5LmlzQXJyYXkodGhpcy5vcmlnaW5hbERhdGFTZXQpKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFJvd0luZGV4ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQuZmluZEluZGV4KHIgPT5cbiAgICAgICAgKHI/LmlkICYmIHI/LmlkID09PSBvYmo/LmlkKSB8fCAocj8uX2lkICYmIHIuX2lkID09PSBvYmouX2lkKVxuICAgICAgKTtcbiAgICAgIGlmIChvcmlnaW5hbFJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFBhcmVudCA9IGtleXMucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IGFjY1trZXldID8/PSB7fSwgdGhpcy5vcmlnaW5hbERhdGFTZXRbb3JpZ2luYWxSb3dJbmRleF0pO1xuICAgICAgICBpZiAob3JpZ2luYWxQYXJlbnQgJiYgbGFzdEtleSkge1xuICAgICAgICAgIG9yaWdpbmFsUGFyZW50W2xhc3RLZXldID0gcGFyZW50W2xhc3RLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YVNldCAmJiBBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNldCkpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXRSb3dJbmRleCA9IHRoaXMuZGF0YVNldC5maW5kSW5kZXgociA9PlxuICAgICAgICAoci5pZCAmJiByLmlkID09PSBvYmouaWQpIHx8IChyLl9pZCAmJiByLl9pZCA9PT0gb2JqLl9pZClcbiAgICAgICk7XG4gICAgICBpZiAoZGF0YXNldFJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBkYXRhc2V0UGFyZW50ID0ga2V5cy5yZWR1Y2UoKGFjYzogYW55LCBrZXk6IHN0cmluZyB8IG51bWJlcikgPT4gYWNjW2tleV0gPz89IHt9LCB0aGlzLmRhdGFTZXRbZGF0YXNldFJvd0luZGV4XSk7XG4gICAgICAgIGlmIChkYXRhc2V0UGFyZW50ICYmIGxhc3RLZXkpIHtcbiAgICAgICAgICBkYXRhc2V0UGFyZW50W2xhc3RLZXldID0gcGFyZW50W2xhc3RLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNhbGxlZEZyb21JbnB1dCkge1xuICAgICAgdGhpcy5jaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUob2JqLCBjb2x1bW4sIG9wdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcm9sbEJhY2tDZWxsVmFsdWUocm93OiBhbnksIGNvbHVtbjogYW55KTogdm9pZCB7XG4gICAgaWYgKCFyb3cgfHwgIWNvbHVtbikgcmV0dXJuO1xuICAgIGNvbnN0IG9yaWdpbmFsUm93ID0gdGhpcy52YWxpZGF0aW9uc1NlcnZpY2UuZmluZE9yaWdpbmFsUm93KHRoaXMub3JpZ2luYWxEYXRhU2V0LCByb3cuaWQgPz8gcm93Ll9pZCk7XG4gICAgaWYgKCFvcmlnaW5hbFJvdykgcmV0dXJuO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZ2V0TmVzdGVkVmFsdWUob3JpZ2luYWxSb3csIGNvbHVtbi5maWVsZCk7XG5cbiAgICBjb25zdCB2aXNpYmxlUm93ID0gdGhpcy52YWxpZGF0aW9uc1NlcnZpY2UuZmluZE9yaWdpbmFsUm93KHRoaXMudmlzaWJsZVJvd3MsIHJvdy5pZCA/PyByb3cuX2lkKTtcbiAgICBpZiAodmlzaWJsZVJvdykgdmlzaWJsZVJvd1tjb2x1bW4uZmllbGRdID0gb3JpZ2luYWxWYWx1ZTtcblxuICAgIGNvbnN0IGRhdGFSb3cgPSB0aGlzLnZhbGlkYXRpb25zU2VydmljZS5maW5kT3JpZ2luYWxSb3codGhpcy5kYXRhU2V0LCByb3cuaWQgPz8gcm93Ll9pZCk7XG4gICAgaWYgKGRhdGFSb3cpIGRhdGFSb3dbY29sdW1uLmZpZWxkXSA9IG9yaWdpbmFsVmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBhcnJheVRlbXBNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgcHJpdmF0ZSBhcnJheUtleShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyb3cuaWQgfHwgcm93Ll9pZH1fJHtjb2wuZmllbGR9YDtcbiAgfVxuXG4gIGdldEFycmF5T3B0aW9uSWQob3B0aW9uOiBhbnkpOiBhbnkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBvcHRpb24uaWQgPz8gb3B0aW9uLl9pZDtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfVxuXG4gIGdldEFycmF5T3B0aW9uTGFiZWwob3B0aW9uOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWUgPz8gb3B0aW9uLm5hbWUgPz8gJyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcob3B0aW9uKTtcbiAgfVxuXG4gIGdldEFycmF5VGVtcChyb3c6IGFueSwgY29sOiBhbnkpOiBhbnlbXSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5hcnJheUtleShyb3csIGNvbCk7XG5cbiAgICBpZiAoIXRoaXMuYXJyYXlUZW1wTWFwLmhhcyhrZXkpKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBBcnJheS5pc0FycmF5KGN1cnJlbnQpXG4gICAgICAgID8gY3VycmVudC5tYXAodiA9PiB0aGlzLmdldEFycmF5T3B0aW9uSWQodikpXG4gICAgICAgIDogW107XG5cbiAgICAgIHRoaXMuYXJyYXlUZW1wTWFwLnNldChrZXksIG5vcm1hbGl6ZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFycmF5VGVtcE1hcC5nZXQoa2V5KSE7XG4gIH1cblxuXG4gIGlzQXJyYXlTZWxlY3RlZChyb3c6IGFueSwgY29sOiBhbnksIG9wdGlvbjogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0aW9uKTtcbiAgICByZXR1cm4gdGhpcy5nZXRBcnJheVRlbXAocm93LCBjb2wpLmluY2x1ZGVzKGlkKTtcbiAgfVxuXG4gIHRvZ2dsZUFycmF5VGVtcChyb3c6IGFueSwgY29sOiBhbnksIG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0aW9uKTtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5nZXRBcnJheVRlbXAocm93LCBjb2wpO1xuXG4gICAgdGhpcy5hcnJheVRlbXBNYXAuc2V0KFxuICAgICAgdGhpcy5hcnJheUtleShyb3csIGNvbCksXG4gICAgICBsaXN0LmluY2x1ZGVzKGlkKSA/IGxpc3QuZmlsdGVyKHYgPT4gdiAhPT0gaWQpIDogWy4uLmxpc3QsIGlkXVxuICAgICk7XG4gIH1cblxuICBjb21taXRBcnJheShyb3c6IGFueSwgY29sOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSB0aGlzLmdldEFycmF5VGVtcChyb3csIGNvbCk7XG4gICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIGNvbCwgaWRzLCB0cnVlKTtcbiAgfVxuXG5cbiAgb25BcnJheUJsdXIocm93OiBhbnksIGNvbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb21taXRBcnJheShyb3csIGNvbCk7XG4gIH1cblxuXG4gIGNsZWFudXBBcnJheShyb3c6IGFueSwgY29sOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmFycmF5VGVtcE1hcC5kZWxldGUodGhpcy5hcnJheUtleShyb3csIGNvbCkpO1xuICAgIHRoaXMuZWRpdGluZ0tleSA9IG51bGw7XG4gIH1cblxuXG4gIGRpc3BsYXlBcnJheVZhbHVlcyhpZHM6IGFueVtdLCBjb2w/OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghY29sKSByZXR1cm4gaWRzLmpvaW4oJywgJyk7XG5cbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPGFueSwgYW55PigpO1xuICAgIChjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHx8IFtdKS5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xuICAgICAgbWFwLnNldCh0aGlzLmdldEFycmF5T3B0aW9uSWQob3B0KSwgb3B0KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBpZHNcbiAgICAgIC5tYXAoaWQgPT4gbWFwLmdldChpZCk/LnZhbHVlID8/IG1hcC5nZXQoaWQpPy5uYW1lID8/IGlkKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cblxuICBkaXNwbGF5QXJyYXlMYWJlbHMocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBpZHMgPSB0aGlzLmdldEFycmF5VGVtcChyb3csIGNvbCk7XG5cbiAgICBpZiAoIWlkcy5sZW5ndGgpIHJldHVybiAnJztcblxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8YW55LCBhbnk+KCk7XG4gICAgKGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgfHwgW10pLmZvckVhY2goKG9wdDogYW55KSA9PiB7XG4gICAgICBtYXAuc2V0KHRoaXMuZ2V0QXJyYXlPcHRpb25JZChvcHQpLCBvcHQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkc1xuICAgICAgLm1hcChpZCA9PiBtYXAuZ2V0KGlkKT8udmFsdWUgPz8gbWFwLmdldChpZCk/Lm5hbWUgPz8gaWQpXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG5cblxuXG5cbiAgZ29Ub1BhZ2UocGFnZTogYW55KSB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZz8ucGFnZSA9PSBwYWdlKSByZXR1cm47XG4gICAgaWYgKHBhZ2UgPCAxIHx8IHBhZ2UgPiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcykgcmV0dXJuO1xuICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID0gcGFnZTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LFxuICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ3BhZ2VDaGFuZ2UnLFxuICAgIH07XG4gICAgdGhpcy5jb21tb25TZXZpY2UubWFpbkNvbnRhaW5lckxlZnQgPSB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UoKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPSAxO1xuICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IHtcbiAgICAgICAgb2JqOiB7XG4gICAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCxcbiAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnRUeXBlOiAncGFnZUNoYW5nZScsXG4gICAgICB9O1xuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgICB9LCA3MDApO1xuICB9XG5cbiAgYWN0aW9uUHJlc2V0KGRhdGE6IGFueSwgdHlwZTogYW55KSB7XG4gICAgZGF0YS5jb2x1bW5zID0gZGF0YT8uY29sdW1ucz8ubWFwKCh7IF9pZCwgZmlsdGVyVmFsdWUsIHNlYXJjaCwgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLCBxdWVyeSwgX190eXBlbmFtZSwgLi4ucmVzdCB9OiBhbnkpID0+IHJlc3QpO1xuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcblxuICAgIHtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcbiAgICAgICAgZGF0YT8uZmlsdGVycz8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuX190eXBlbmFtZTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmhlYWRlclRleHRGb250c1NpemUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCA9IGRhdGEuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQsXG4gICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZGF0YS5jb25maWcuc2hvd1ZlcnRpY2FsQm9yZGVyLFxuICAgICAgICB0aGlzLmN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9IGRhdGEuaWQ7XG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcgPSBkYXRhLmZpbHRlcnM7XG4gICAgfVxuICAgIGRlbGV0ZSBkYXRhPy5fX3R5cGVuYW1lO1xuICAgIGRlbGV0ZSBkYXRhPy5pc190ZW1wO1xuICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiB0eXBlXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXG4gIH1cblxuICBjdXJyZW50SWRGb3JVcGRhdGVQcmVzZXQgPSAnJztcbiAgY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlOiBhbnk7XG4gIHRlbXBfc3RhdGUgPSB7XG4gICAgaWQ6ICcnLFxuICAgIGlzX3RlbXA6IGZhbHNlXG4gIH1cbiAgYXN5bmMgc2VsZWN0RmlsdGVyKGRhdGE6IGFueSkge1xuICAgIHRoaXMudGVtcF9zdGF0ZSA9IHtcbiAgICAgIGlkOiBkYXRhLmlkLFxuICAgICAgaXNfdGVtcDogdHJ1ZVxuICAgIH1cbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XG4gICAgdGhpcy50YWJsZVZpZXcgPSB0aGlzLnRhYmxlVmlldy5tYXAoaXRlbSA9PiAoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIGlzX3RlbXA6IGl0ZW0uaWQgPT0gZGF0YT8uaWRcbiAgICB9KSk7XG4gICAgdGhpcy5jb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xuICAgIHtcbiAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcbiAgICAgICAgZGF0YS5maWx0ZXJzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9fdHlwZW5hbWU7XG5cbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5xdWVyeSkubGVuZ3RoID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gZGF0YS5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dCxcbiAgICAgICAgdGhpcy5zaG93VmVydGljYWxCb3JkZXIgPSBkYXRhLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIsXG4gICAgICAgIHRoaXMuY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gZGF0YS5pZDtcbiAgICAgIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuICAgICAgdGhpcy5wcmVzZXROYW1lID0gZGF0YT8ubmFtZTtcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZGF0YT8uYWN0aXZlRmlsdGVycyB8fCBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IGRhdGEuZmlsdGVycztcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XG4gICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBkYXRhLmNvbHVtbnMgPSB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgICAgZGVsZXRlIGRhdGE/Ll9fdHlwZW5hbWU7XG4gICAgICBkZWxldGUgZGF0YT8uaXNfdGVtcDtcbiAgICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcbiAgICB9XG4gICAgaWYgKGRhdGE/LmlzX2RlYWZ1bHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGlvblByZXNldChkYXRhLCAnc2V0UHJlc2V0JylcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ3NlbGVjdCdcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgfVxuXG4gIHNhdmVQcmVzZXQoY29udHJvbD86IGFueSkge1xuICAgIGlmIChjb250cm9sPy5pbnZhbGlkKSB7XG4gICAgICBjb250cm9sPy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRGaWx0ZXJIZWFkZXJzKHRoaXMuZmlsdGVyc0NvbmZpZywgdGhpcy5jb2x1bW5zKTtcbiAgICB0aGlzLnByZXNldEZpbHRlciA9IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgPyB0cnVlIDogdGhpcy5wcmVzZXRGaWx0ZXI7XG4gICAgbGV0IHNlbGVjdGVkRGF0YTogYW55ID0gdGhpcy50YWJsZVZpZXcuZmluZCgoZWxlKSA9PiBlbGUuaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XG4gICAgbGV0IGNvbmZpZyA9IHtcbiAgICAgIGZvbnRGYWltbHk6IHRoaXMuZm9udEZhaW1seSxcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiArKHRoaXMuYm9keVRleHRGb250c1NpemUgfHwgMTQpLFxuICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogKyh0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTQpLFxuICAgICAgb2RkUm93c0JhY2tncm91bmRDb2xvcjogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA/IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXG4gICAgICBzZWxlY3RlZFRhYmxlTGF5b3V0OiB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQsXG4gICAgICBnbG9iYWxTZWFyY2g6IHRoaXMudGFibGVTZWFyY2gsXG4gICAgICBmaWx0ZXJOYW1lczogbmFtZXMsXG4gICAgICB0b3RhbENvdW50OiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzLFxuICAgICAgcm93U2hhZGluZ0VuYWJsZWQ6IHRoaXMucm93U2hhZGluZ0VuYWJsZWRcblxuICAgIH1cbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIG9iajoge1xuICAgICAgICBuYW1lOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkID8gc2VsZWN0ZWREYXRhPy5uYW1lIDogdGhpcy5wcmVzZXROYW1lLFxuICAgICAgICBhY3RpdmVGaWx0ZXJzOiB0aGlzLnByZXNldEZpbHRlcixcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgICAgZmlsdGVyczogdGhpcy5wcmVzZXRGaWx0ZXJcbiAgICAgICAgICA/IHRoaXMuZmlsdGVyc0NvbmZpZz8ubWFwKCh7IF9fdHlwZW5hbWUsIHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgX190eXBlbmFtZTogX19pbm5lciwgLi4uY2xlYW5RdWVyeSB9ID0gcXVlcnkgfHwge307XG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZXN0LCBxdWVyeTogY2xlYW5RdWVyeSB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgOiBbXSxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIGlkOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkIHx8IHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlPy5pZCxcbiAgICAgICAgbG9hZGluZ0NhbGw6IGNvbnRyb2wgPT0gJ21vdXNlVXAnID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogdGhpcy50YWJsZUZpbHRlclZpZXdJZCB8fCAhdGhpcy5pc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/ICd1cGRhdGVQcmVzZXQnIDogJ2NyZWF0ZVByZXNldCdcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNlbmREYXRhID0ge1xuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcbiAgICAgIGZpbHRlcnM6IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMsXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcbiAgICB9LCA1MDApO1xuICB9XG5cblxuICBnZXRGaWx0ZXJIZWFkZXJzKGZpbHRlcnM6IGFueVtdLCBjb2x1bW5zOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2hlZEhlYWRlcnMgPSBmaWx0ZXJzXG4gICAgICAubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoYyA9PiBjLmZpZWxkID09PSBmLmZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbiA/IGNvbHVtbi5oZWFkZXIgOiBudWxsO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoaGVhZGVyID0+ICEhaGVhZGVyKTtcblxuICAgIHJldHVybiBtYXRjaGVkSGVhZGVycy5qb2luKCcsICcpO1xuICB9XG5cblxuICB0b2dnbGVSb3dTaGFkaW5nKCkge1xuICAgIHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA9IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyAnI2YxZjFmMScgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcbiAgfVxuXG4gIHRyYWNrQnlUYWJsZShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbiAgYWN0aXZlUm93OiBhbnlcbiAgYWN0aXZlUm93Q29sOiBhbnk7XG4gIGdldENlbGxLZXkocm93OiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5nZXRSb3dJZChyb3cpfV8ke2NvbD8uZmllbGR9YDtcbiAgfVxuXG4gIGV4cGFuZGVkQ2VsbHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHpDb3VudGVyID0gMjE7XG5cbiAgc2hvd0RldGFpbHNCb3ggPSBmYWxzZTtcblxuICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChcbiAgICByb3c6IGFueSxcbiAgICBjb2w6IGFueSxcbiAgICBjb2x1bW5zOiBhbnlbXSxcbiAgICBleHBhbmRXaG9sZVJvdyA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGV4cGFuZENlbGxzID0gKHRhcmdldFJvdzogYW55KSA9PiB7XG4gICAgICBjb2x1bW5zLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcblxuICAgICAgICBpZiAoKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwKSB8fCAoQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Py5sZW5ndGggPiAxKSkge1xuICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQodGFyZ2V0Um93KSArICctJyArIGMuZmllbGQ7XG4gICAgICAgICAgdGhpcy56Q291bnRlcisrO1xuICAgICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5zZXQoa2V5LCB0aGlzLnpDb3VudGVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuXG4gICAgY29uc3QgY29sbGVjdEtleXNGb3JSb3cgPSAodGFyZ2V0Um93OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb2x1bW5zLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcblxuICAgICAgICBjb25zdCB0ZXh0ID0gdGFyZ2V0Um93W2MuZmllbGRdO1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQubGVuZ3RoID4gNTAgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcbiAgICAgICAgICBrZXlzLnB1c2godGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGtleXM7XG4gICAgfTtcblxuICAgIGlmIChleHBhbmRXaG9sZVJvdykge1xuICAgICAgbGV0IHJvd0tleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb25zdCB0ZXh0ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbD8uZmllbGQpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJvd0tleXMgPSBjb2xsZWN0S2V5c0ZvclJvdyhyb3cpO1xuICAgICAgICByb3c/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgcm93S2V5cy5wdXNoKC4uLmNvbGxlY3RLZXlzRm9yUm93KGNoaWxkKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm93S2V5cyA9IGNvbGxlY3RLZXlzRm9yUm93KHJvdyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhbGxFeHBhbmRlZCA9IHJvd0tleXMuZXZlcnkoayA9PiB0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGspKTtcbiAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xuICAgICAgaWYgKCFhbGxFeHBhbmRlZCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3cuY2hpbGRyZW4pICYmIHJvdy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcbiAgICAgICAgICByb3c/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiBleHBhbmRDZWxscyhjaGlsZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV4cGFuZENlbGxzKHJvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRSb3dJZChyb3cpICsgJy0nICsgY29sLmZpZWxkO1xuICAgICAgaWYgKGNvbC50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XG5cbiAgICAgIGlmICghdGhpcy5leHBhbmRlZENlbGxzLmhhcyhrZXkpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xuICAgICAgICB0aGlzLnpDb3VudGVyKys7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5zZXQoa2V5LCB0aGlzLnpDb3VudGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNob3dEZXRhaWxzQm94ID0gZmFsc2U7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzT3BlblRvVG9wKHJvdylcbiAgICB9LCAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpc09wZW5Ub1RvcChyb3c6IGFueSkge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHknKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgaWYgKCF3cmFwcGVyKSByZXR1cm4gZmFsc2U7XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpZCA9IChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyAoY29sLmlkIHx8IGNvbC5faWQpO1xuICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgaWYgKCFib3gpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGJveFJlY3QgPSBib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID0gYm94UmVjdC5ib3R0b20gPiB3cmFwcGVyUmVjdC5ib3R0b207XG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nVG9wID0gYm94UmVjdC50b3AgPCB3cmFwcGVyUmVjdC50b3A7XG4gICAgICBpZiAoaXNPdmVyZmxvd2luZ0JvdHRvbSAmJiAhaXNPdmVyZmxvd2luZ1RvcCkge1xuICAgICAgICBjb25zdCBib3hIZWlnaHQgPSBib3gub2Zmc2V0SGVpZ2h0IHx8IDA7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGJveEhlaWdodCArIDQ7XG4gICAgICAgIGJveC5zdHlsZS50b3AgPSBgJHstb2Zmc2V0fXB4YDtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYm94LnN0eWxlLmJvdHRvbSA9IGBhdXRvYDtcbiAgICAgICAgYm94LnN0eWxlLnRvcCA9IGAxMDAlYDtcbiAgICAgICAgYm94LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKDApYDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KVxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cblxuXG5cblxuICBpc0V4cGFuZGVkKHJvdzogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKHRoaXMuZ2V0Um93SWQocm93KSArICctJyArIGNvbC5maWVsZCk7XG4gIH1cblxuICBnZXRaSW5kZXgocm93OiBhbnksIGNvbDogYW55KTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZENlbGxzLmdldCh0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQpID8/IDIxO1xuICB9XG5cbiAgaXNPdmVyZmxvd2luZyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZWxlbWVudC5zY3JvbGxXaWR0aCA+IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cblxuXG4gIC8vIFBpY3R1cmUgY2VsbCBMb2dpY1xuICBjb2xvckNvbWJpbmF0aW9uID0gWydwaWMtY29tYjEnLCAncGljLWNvbWIyJywgJ3BpYy1jb21iNCddO1xuICBnZXREeW5hbWljQ2xhc3MobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25bMF07XG4gICAgY29uc3QgaGFzaCA9IEFycmF5LmZyb20obmFtZSkucmVkdWNlKChhY2MsIGNoYXIpID0+IGFjYyArIGNoYXIuY2hhckNvZGVBdCgwKSwgMCk7XG4gICAgY29uc3QgaW5kZXggPSBoYXNoICUgdGhpcy5jb2xvckNvbWJpbmF0aW9uPy5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMuY29sb3JDb21iaW5hdGlvbltpbmRleF07XG4gIH1cblxuICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkgcmV0dXJuICdOQSc7XG4gICAgY29uc3QgcGFydHMgPSBuYW1lLnRyaW0oKS5zcGxpdCgnICcpO1xuICAgIHJldHVybiAocGFydHNbMF1bMF0gKyAocGFydHNbMV0/LlswXSB8fCAnJykpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuXG4gIGFjdGlvbkhpZGU6IGJvb2xlYW4gPSB0cnVlO1xuICB4UG9zID0gMDtcbiAgeVBvcyA9IDA7XG4gIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBkZWF0aWxzTGlzdDogYW55O1xuICBvcGVuRXhwZW5kSW5kZXg6IGFueTtcbiAgcG9zaXRpb25lZFlldCA9IGZhbHNlO1xuXG4gIG9uUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBhbnksIGRlYXRpbHNMaXN0OiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vcmlnaW5hbEFjdGlvbnM/Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLnZhbGlkYXRlSWNvbikge1xuICAgICAgdGhpcy5vcmlnaW5hbEFjdGlvbnMgPSBbLi4udGhpcy5hY3Rpb25zXTsgLy8gRGVlcCBjb3B5IHRvIHByZXNlcnZlIG9yaWdpbmFsXG4gICAgfVxuICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMudmFsaWRhdGVJY29uXG4gICAgICA/IHRoaXMuZ2V0VmFsaWRBY3Rpb25zKGRlYXRpbHNMaXN0KVxuICAgICAgOiAoZGVhdGlsc0xpc3Q/LmFjdGlvbnM/Lmxlbmd0aCA/IGRlYXRpbHNMaXN0LmFjdGlvbnMgOiB0aGlzLmFjdGlvbnMpO1xuXG4gICAgaWYgKCEoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGRlYXRpbHNMaXN0Ll9fdmlydHVhbEluZGV4ID09IDApIHJldHVybiBmYWxzZTtcblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgY2xpY2tYID0gKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyBldmVudC5jbGllbnRYIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgIGNvbnN0IGNsaWNrWSA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcblxuICAgIHRoaXMueFBvcyA9IGNsaWNrWDtcbiAgICB0aGlzLnlQb3MgPSBjbGlja1k7XG4gICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xuICAgIHRoaXMuZGVhdGlsc0xpc3QgPSBkZWF0aWxzTGlzdDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgbWVudUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGV4dC1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoIW1lbnVFbGVtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBtZW51V2lkdGggPSBtZW51RWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51RWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICBjb25zdCB0YWJsZVJlY3QgPSB0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB0YWJsZVRvcCA9IHRhYmxlUmVjdC50b3A7XG4gICAgICBjb25zdCB0YWJsZUJvdHRvbSA9IHRhYmxlUmVjdC5ib3R0b207XG4gICAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRhYmxlUmVjdC5oZWlnaHQ7XG5cbiAgICAgIGxldCB4ID0gY2xpY2tYO1xuICAgICAgbGV0IHkgPSBjbGlja1k7XG4gICAgICBpZiAoeCArIG1lbnVXaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcbiAgICAgICAgeCA9IHZpZXdwb3J0V2lkdGggLSBtZW51V2lkdGggLSAxMDtcbiAgICAgIH1cbiAgICAgIGlmICh5ICsgbWVudUhlaWdodCA+IHRhYmxlQm90dG9tKSB7XG4gICAgICAgIHkgPSBjbGlja1kgLSBtZW51SGVpZ2h0O1xuICAgICAgICBpZiAoeSA8IHRhYmxlVG9wKSB7XG4gICAgICAgICAgeSA9IHRhYmxlQm90dG9tIC0gbWVudUhlaWdodCAtIDEwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh5IDwgdGFibGVUb3ApIHtcbiAgICAgICAgeSA9IHRhYmxlVG9wICsgMTA7XG4gICAgICB9XG4gICAgICB0aGlzLnhQb3MgPSB4O1xuICAgICAgdGhpcy55UG9zID0geTtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucG9zaXRpb25lZFlldCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IHN0cmluZykge1xuICAgIGNvbnN0IHNlbmRPYmogPSB7XG4gICAgICBvYmo6IHRoaXMuZGVhdGlsc0xpc3QsXG4gICAgICBldmVudFR5cGU6IGFjdGlvbixcbiAgICB9O1xuICAgIHRoaXMucG9zaXRpb25lZFlldCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopO1xuICB9XG5cblxuICBvblZlcmlmeUNsaWNrKHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHRleHQgPSB0eXBlPy50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGlkc0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgY29uc3QgYXJyYXlPZk9iamVjdHNXaXRoVGFibGVUeXBlOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xuICAgICAgYXJyYXlPZk9iamVjdHNXaXRoVGFibGVUeXBlLnB1c2goe1xuICAgICAgICBpZDogaWQsXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgb2JqOiBpZHNBcnJheSxcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxuICAgIH07XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChzZW5kT2JqKVxuICB9XG5cbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRDZWxsQ2xhc3Nlcyhjb2x1bW4sIHZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbkZpbHRlckZyb21Db2x1bW4oY29sdW1uOiBhbnkpIHtcbiAgICBpZiAoIWNvbHVtbikgcmV0dXJuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbHVtbi50eXBlID09ICdhcnJheScpIHtcbiAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gW107XG4gICAgfSBlbHNlIGlmIChbJ3N0cmluZycsICdudW1iZXInLCAnZGF0ZSddLmluY2x1ZGVzKGNvbHVtbi50eXBlKSkge1xuICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xuICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcbiAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBudWxsLFxuICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcbiAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxuICAgICAgZmlsdGVyczogY2xlYW5lZEZpbHRlcmVkQ29sdW1ucyxcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdCh0aGlzLmNyZWF0ZVVwZGF0ZUNvbHVtbkNvbmZpZyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zO1xuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgb25TaWRlTWVudUNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlKCkge1xuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XG4gICAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG4gIGNsZWFuRmlsdGVyZENvbHVtbnMoKSB7XG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XG4gICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcbiAgfVxuXG4gIGRvd25sb2FkQ3N2KHR5cGU6ICdjc3YnIHwgJ3hsc3gnKSB7XG4gICAgY29uc3QgY29uZmlnOiBhbnkgPSB7XG4gICAgICBoZWFkZXJCZ0NvbG9yOiB0aGlzLmhlYWRlckJhY2tncm91bmRDb2xvcixcbiAgICAgIGhlYWRlclRleHRDb2xvcjogdGhpcy5oZWFkZXJUZXh0Q29sb3IsXG4gICAgICBib2R5VGV4dENvbG9yOiAnIzAwMDAwMCcsXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYWltbHksXG4gICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgIHpvb21TY2FsZTogMTI1LFxuICAgICAgaGVhZGVyUm93SGVpZ2h0OiAzMFxuICAgIH1cbiAgICBpZiAodGhpcy5lbmFibGVFeHBvcnQpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBkZCA9IFN0cmluZyhub3cuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgbW0gPSBTdHJpbmcobm93LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgeXl5eSA9IG5vdy5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgSEggPSBTdHJpbmcobm93LmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICBjb25zdCBNTSA9IFN0cmluZyhub3cuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgY29uc3QgZm9ybWF0dGVkID1cbiAgICAgICAgYCR7dGhpcy50YWJsZVR5cGV9XyR7ZGR9LSR7bW19LSR7eXl5eX1fJHtISH0tJHtNTX1gO1xuXG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWQpO1xuXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0RGF0YSh0aGlzLmNvbHVtbnMsIHRoaXMuZGF0YVNldCwgZm9ybWF0dGVkLCB0eXBlLCB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcywgY29uZmlnKTtcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxuICAgICAgICBmaWx0ZXJzOiBbXVxuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ2Rvd25sb2FkQ3N2J1xuICAgIH1cbiAgICBpZiAodHlwZSA9PSAneGxzeCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuXG4gIH1cblxuICBvbkZvbnRDaGFuZ2UoKSB7XG4gICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZTtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXG4gICAgICBib2R5VGV4dEZvbnRzU2l6ZTogdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSxcbiAgICAgIGhlYWRlclRleHRGb250c1NpemU6IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXG4gICAgICBzaG93VmVydGljYWxCb3JkZXI6IHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyLFxuICAgICAgc2VsZWN0ZWRUYWJsZUxheW91dDogdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXG4gICAgfVxuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb2JqOiB7XG4gICAgICAgIGRhdGE6IGNvbmZpZ1xuICAgICAgfSxcbiAgICAgIGV2ZW50VHlwZTogJ2NvbmZpZydcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcblxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHRoaXMuY3JlYXRlVXBkYXRlQ29sdW1uQ29uZmlnKTtcbiAgfVxuXG4gIG9uR2xvYmFsU2VhcmNoKCkge1xuICAgIHRoaXMuY2xvc2VBbGxFeHBhbmRlZFJvd3MoKTtcblxuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHRhYmxlU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnc2VhcmNoJ1xuICAgIH1cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XG4gICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQodGhpcy5jcmVhdGVVcGRhdGVDb2x1bW5Db25maWcpO1xuICB9XG5cbiAgb25TZWFyY2hJbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG5cbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnRhYmxlU2VhcmNoID0gJyc7XG4gICAgICB0aGlzLm9uR2xvYmFsU2VhcmNoKCk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gdHJ1ZVxuICAgIGNvbnN0IGZpbmREZWZhdWx0RmlsdGVyID0gdGhpcy50YWJsZVZpZXc/LmZpbmQoKGVsZTogYW55KSA9PiBlbGU/LmlkID09IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZUZpbHRlcnMgPSAoZmlsdGVyczogYW55W10gfCB1bmRlZmluZWQpOiBhbnlbXSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IGNsb25lZCA9IGZpbHRlcnMubWFwKGYgPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmID8/IHt9KSk7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLl9pZHMpKSBpdGVtLl9pZHMgPSBbXTtcbiAgICAgICAgaXRlbS5faWRzID0gaXRlbS5faWRzLnNsaWNlKCkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykgcmV0dXJuIGEgLSBiO1xuICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpdGVtLnF1ZXJ5ID09PSBudWxsKSB7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0ucXVlcnkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW0ucXVlcnkuX2lkcykpIGl0ZW0ucXVlcnkuX2lkcyA9IFtdO1xuICAgICAgICAgIGl0ZW0ucXVlcnkuX2lkcyA9IGl0ZW0ucXVlcnkuX2lkcy5zbGljZSgpLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykgcmV0dXJuIGEgLSBiO1xuICAgICAgICAgICAgcmV0dXJuICgnJyArIGEpLmxvY2FsZUNvbXBhcmUoJycgKyBiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgICBjbG9uZWQuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZmEgPSAoYS5maWVsZCB8fCAnJykgKyAnfCcgKyAoYS50eXBlIHx8ICcnKTtcbiAgICAgICAgY29uc3QgZmIgPSAoYi5maWVsZCB8fCAnJykgKyAnfCcgKyAoYi50eXBlIHx8ICcnKTtcbiAgICAgICAgcmV0dXJuIGZhLmxvY2FsZUNvbXBhcmUoZmIpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjbG9uZWQ7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlZXBFcXVhbCA9IChhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGEgIT09ICdvYmplY3QnIHx8IGEgPT09IG51bGwgfHwgdHlwZW9mIGIgIT09ICdvYmplY3QnIHx8IGIgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICE9PSBBcnJheS5pc0FycmF5KGIpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICAgICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFba2V5XSwgYltrZXldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBjb25zdCBub3JtYWxpemVkQSA9IG5vcm1hbGl6ZUZpbHRlcnMoZmluZERlZmF1bHRGaWx0ZXI/LmZpbHRlcnMpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRCID0gbm9ybWFsaXplRmlsdGVycyh0aGlzLmZpbHRlcnNDb25maWcpO1xuICAgIGNvbnN0IGlzU2FtZSA9IGRlZXBFcXVhbChub3JtYWxpemVkQSwgbm9ybWFsaXplZEIpO1xuICAgIHJldHVybiBpc1NhbWU7XG4gIH1cblxuXG5cblxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vIFJvdyBTZWxlY3Rpb24gZnJvbSB0aGUgSW5kZXhpbmcgSW1wbGVtZW50ZWQgSGVyZVxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgcm93U2VsZWN0ZWRJbmRleGVzOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQoKTtcbiAgcm93U2VsZWN0aW5nID0gZmFsc2U7XG4gIHJvd1NlbGVjdGlvblN0YXJ0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBhdXRvU2Nyb2xsSW50ZXJ2YWw6IGFueSA9IG51bGw7XG5cbiAgZ2V0IGZpcnN0U2VsZWN0ZWRSb3coKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XG4gIH1cblxuICBnZXQgbGFzdFNlbGVjdGVkUm93KCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4udGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMpO1xuICB9XG5cblxuICBvblJvd01vdXNlRG93bihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5hY3RpdmVDZWxsID0gbnVsbDtcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBpbmRleDtcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpbmRleCk7XG4gICAgdGhpcy5hY3RpdmVDZWxsID0gJyc7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgY29uc3QgbW91c2VNb3ZlSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLmhhbmRsZUF1dG9TY3JvbGwoZSk7XG4gICAgY29uc3QgbW91c2VVcEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLm9uUm93TW91c2VVcCgpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICAgICAgaWYgKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcbiAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICB9XG5cbiAgb25Sb3dNb3VzZU92ZXIoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMucm93U2VsZWN0aW5nIHx8IHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbih0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1heCh0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpKTtcbiAgICB9XG4gIH1cblxuICBvblJvd01vdXNlVXAoKSB7XG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBudWxsO1xuICB9XG4gIGhhbmRsZUF1dG9TY3JvbGwoZTogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlZGdlU2l6ZSA9IDQwXG4gICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XG5cbiAgICBpZiAoZS5jbGllbnRZIDwgcmVjdC50b3AgKyBlZGdlU2l6ZSkge1xuICAgICAgc2Nyb2xsQW1vdW50ID0gLTE1MDtcbiAgICB9IGVsc2UgaWYgKGUuY2xpZW50WSA+IHJlY3QuYm90dG9tIC0gZWRnZVNpemUpIHtcbiAgICAgIHNjcm9sbEFtb3VudCA9IDE1MDtcbiAgICB9XG5cbiAgICBpZiAoc2Nyb2xsQW1vdW50ICE9PSAwKSB7XG4gICAgICBpZiAoIXRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSAoKSA9PiB7XG4gICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCArPSBzY3JvbGxBbW91bnQ7XG4gICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVuZG9TdGFjazogYW55W11bXSA9IFtdO1xuICByZWRvU3RhY2s6IGFueVtdW10gPSBbXTtcblxuICBwcml2YXRlIGNsb25lRGF0YShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH1cblxuICBwZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YTogYW55W11bXSkge1xuICAgIHRoaXMudW5kb1N0YWNrLnB1c2godGhpcy5jbG9uZURhdGEodGhpcy52aXNpYmxlUm93cykpO1xuICAgIHRoaXMucmVkb1N0YWNrID0gW107XG4gICAgdGhpcy5jb3B5U2VydmljZS5jdXRXaXRoQW5pbWF0aW9uKHNlbGVjdGVkRGF0YSk7XG4gICAgY29uc3QgeyB1cGRhdGVkUm93cyB9ID0gdGhpcy5jb3B5U2VydmljZS5jdXRTZWxlY3RlZFNlbGVjdGVkRGF0YShcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscyxcbiAgICAgIHRoaXMuY29sdW1ucyxcbiAgICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUuYmluZCh0aGlzKVxuICAgICk7XG5cbiAgfVxuXG4gIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XG4gICAgcmV0dXJuIHRoaXMuY29weVNlcnZpY2UuZ2V0U2VsZWN0ZWREYXRhRm9yQ29weShcbiAgICAgIHRoaXMuZGF0YVNldCxcbiAgICAgIHRoaXMuY29sdW1ucyxcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLFxuICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIHBhZ2VTaXplS2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG4gIHByaXZhdGUgYnVpbGRQYWdlU2l6ZUtleU1hcCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTaXplS2V5TWFwID0ge307XG5cbiAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucy5mb3JFYWNoKChzaXplLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qga2V5ID1cbiAgICAgICAgaW5kZXggPCA5XG4gICAgICAgICAgPyBTdHJpbmcoaW5kZXggKyAxKVxuICAgICAgICAgIDogaW5kZXggPT09IDlcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZUtleU1hcFtrZXldID0gc2l6ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZpZXdwb3J0OiBhbnk7XG4gIHNjcm9sbFZpZXdwb3J0KGFtb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy52aWV3cG9ydCA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGhpcy52aWV3cG9ydCkge1xuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb3AgKz0gYW1vdW50O1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFZpZXdwb3J0VG9Ub3AoKSB7XG4gICAgdGhpcy52aWV3cG9ydCA9IHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGhpcy52aWV3cG9ydCkgdGhpcy52aWV3cG9ydC5zY3JvbGxUb3AgPSAwO1xuICB9XG5cbiAgc2Nyb2xsVmlld3BvcnRUb0JvdHRvbSgpIHtcbiAgICB0aGlzLnZpZXdwb3J0ID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICh0aGlzLnZpZXdwb3J0KSB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvcCA9IHRoaXMudmlld3BvcnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgc2Nyb2xsVG9DZWxsKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4ID0gMCkge1xuICAgIC8vIDHvuI/ig6MgVmVydGljYWwgc2Nyb2xsXG4gICAgaWYgKHRoaXMubWFpblNjcm9sbCkge1xuICAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gcm93SW5kZXggKiB0aGlzLnJvd0hlaWdodDtcbiAgICB9XG5cbiAgICAvLyAy77iP4oOjIEhvcml6b250YWwgc2Nyb2xsXG4gICAgY29uc3QgbGVmdENvbHNXaWR0aCA9IHRoaXMuZ2V0TGVmdE9mZnNldEZvckNvbHVtbihjb2xJbmRleCwgc3ViQ29sSW5kZXgpO1xuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IGxlZnRDb2xzV2lkdGg7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGVmdE9mZnNldEZvckNvbHVtbihjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleCA9IDApOiBudW1iZXIge1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sSW5kZXg7IGkrKykge1xuICAgICAgY29uc3QgY29sID0gdGhpcy5jb2x1bW5zW2ldO1xuICAgICAgb2Zmc2V0ICs9IGNvbC53aWR0aCA/PyAwO1xuICAgIH1cblxuICAgIC8vIEFkZCBzdWItY29sdW1uIHdpZHRoIGlmIGFueVxuICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tjb2xJbmRleF07XG4gICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCAmJiBzdWJDb2xJbmRleCA+IDApIHtcbiAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgc3ViQ29sSW5kZXg7IHMrKykge1xuICAgICAgICBvZmZzZXQgKz0gY29sLmNoaWxkcmVuW3NdLndpZHRoID8/IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG5cblxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgaXNGb3JtRmllbGQgPVxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcbiAgICAgIHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICB0YXJnZXQuaXNDb250ZW50RWRpdGFibGU7XG4gICAgaWYgKGlzRm9ybUZpZWxkIHx8IHRoaXMubG9hZGluZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc2hpZnQgPSBldmVudC5zaGlmdEtleTtcbiAgICBjb25zdCBzY3JvbGxBbW91bnQgPSB0aGlzLnZpZXdwb3J0Um93cyAqIHRoaXMucm93SGVpZ2h0O1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UuY3RybEtleVByZXNzZWQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGwoJ3VwJywgc2hpZnQsIHRoaXMuZGF0YVNldCwgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGwoJ2Rvd24nLCBzaGlmdCwgdGhpcy5kYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbCgnbGVmdCcsIHNoaWZ0LCB0aGlzLmRhdGFTZXQsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbCgncmlnaHQnLCBzaGlmdCwgdGhpcy5kYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLm1vdmVBY3RpdmVDZWxsQnlSb3dzKHNjcm9sbEFtb3VudCAvIHRoaXMucm93SGVpZ2h0LCAnZG93bicsIHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3cG9ydChzY3JvbGxBbW91bnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbEJ5Um93cyhzY3JvbGxBbW91bnQgLyB0aGlzLnJvd0hlaWdodCwgJ3VwJywgc2hpZnQpO1xuICAgICAgICB0aGlzLnNjcm9sbFZpZXdwb3J0KC1zY3JvbGxBbW91bnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2UubW92ZUFjdGl2ZUNlbGxUb1N0YXJ0KHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0NlbGwoMCwgMCk7IC8vIGZpcnN0IHJvdywgZmlyc3QgY29sdW1uXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5kYXRhU2V0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGxhc3RDb2wgPSB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5tb3ZlQWN0aXZlQ2VsbFRvRW5kKHNoaWZ0KTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0NlbGwobGFzdFJvdywgbGFzdENvbCk7IC8vIGxhc3Qgcm93LCBsYXN0IGNvbHVtblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmdvVG9MYXN0UGFnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmFsdEtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZ29Ub0ZpcnN0UGFnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgoZXZlbnQuYWx0S2V5KSAmJiBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZ29Ub05leHRQYWdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmdvVG9QcmV2aW91c1BhZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBNSU5fSEVJR0hUID0gMjg7XG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgKz0gMTtcbiAgICAgIHRoaXMucm93SGVpZ2h0ICs9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5hbHRLZXkpICYmIGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IE1hdGgubWF4KE1JTl9IRUlHSFQsIHRoaXMuaGVhZGVyUm93SGVpZ2h0IC0gMSk7XG4gICAgICB0aGlzLnJvd0hlaWdodCA9IE1hdGgubWF4KE1JTl9IRUlHSFQsIHRoaXMucm93SGVpZ2h0IC0gMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cblxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkgPT09ICcvJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmICh0aGlzLmdsb2JhbFNlYXJjaElucHV0KSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmdsb2JhbFNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlucHV0RWwuZm9jdXMoKTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxPdXRsaW5lID0gaW5wdXRFbC5zdHlsZS5vdXRsaW5lO1xuICAgICAgICBjb25zdCBvcmlnaW5hbEJveFNoYWRvdyA9IGlucHV0RWwuc3R5bGUuYm94U2hhZG93O1xuICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdvdXRsaW5lJywgJzJweCBzb2xpZCAjNGY5Y2ZmJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdib3gtc2hhZG93JywgJzAgMCA4cHggMnB4ICM0ZjljZmYnLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlucHV0RWwuc3R5bGUuc2V0UHJvcGVydHkoJ291dGxpbmUnLCBvcmlnaW5hbE91dGxpbmUgfHwgJycsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICBpbnB1dEVsLnN0eWxlLnNldFByb3BlcnR5KCdib3gtc2hhZG93Jywgb3JpZ2luYWxCb3hTaGFkb3cgfHwgJycsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgfSwgMTAwMCk7XG5cblxuXG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAncicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5rZXk/LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09ICdyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuYXV0b1NpemVDb2x1bW5zQnlSYXRpbygpXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYycpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmRvd25sb2FkQ3N2KCdjc3YnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdlJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZG93bmxvYWRDc3YoJ3hsc3gnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9ICF0aGlzLnNob3dWZXJ0aWNhbEJvcmRlcjtcbiAgICAgIHRoaXMub25Gb250Q2hhbmdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5zaGlmdEtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2gnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCA9ICF0aGlzLnJvd1NoYWRpbmdFbmFibGVkO1xuICAgICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdzJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQoJ3NtYWxsJylcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnbScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNldFRhYmxlTGF5b3V0KCdtZWRpdW0nKVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdsJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQoJ2xhcmdlJylcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuXG5cbiAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICBjb25zdCBuZXdMaW1pdCA9IHRoaXMucGFnZVNpemVLZXlNYXBbZXZlbnQua2V5XTtcbiAgICAgIGlmIChuZXdMaW1pdCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0ICE9PSBuZXdMaW1pdCkge1xuICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCA9IG5ld0xpbWl0O1xuICAgICAgICAgIHRoaXMub25QYWdlU2l6ZUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiZcbiAgICAgIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYydcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggJiZcbiAgICAgICAgIXRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemVcbiAgICAgICkgcmV0dXJuO1xuXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XG4gICAgICB0aGlzLmNvcHlTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChzZWxlY3RlZERhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd4Jykge1xuICAgICAgaWYgKCF0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCB8fCAhdGhpcy5lbmFibGVDdXQpIHJldHVyblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCAmJlxuICAgICAgICAhdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZVxuICAgICAgKSByZXR1cm47XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSB0aGlzLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTtcbiAgICAgIHRoaXMucGVyZm9ybUN1dChzZWxlY3RlZERhdGEpO1xuXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3onKSB7XG4gICAgICBpZiAoIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cbiAgICAgIHRoaXMudW5kbygpO1xuXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XG4gICAgICBpZiAoIXRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cbiAgICAgIHRoaXMucmVkbygpO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnYScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdEFsbENlbGxzKHRoaXMub3JpZ2luYWxEYXRhU2V0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9OZXh0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlO1xuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcztcbiAgICBpZiAoY3VycmVudFBhZ2UgPj0gdG90YWxQYWdlcykgcmV0dXJuO1xuICAgIHRoaXMuZ29Ub1BhZ2UoY3VycmVudFBhZ2UgKyAxKTtcbiAgfVxuXG4gIGdvVG9QcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZTtcbiAgICBpZiAoY3VycmVudFBhZ2UgPD0gMSkgcmV0dXJuO1xuICAgIHRoaXMuZ29Ub1BhZ2UoY3VycmVudFBhZ2UgLSAxKTtcbiAgfVxuXG4gIGdvVG9GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSAxKSByZXR1cm47XG4gICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgfVxuXG4gIGdvVG9MYXN0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0UGFnZSA9IHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzO1xuICAgIGlmICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSA9PT0gbGFzdFBhZ2UpIHJldHVybjtcbiAgICB0aGlzLmdvVG9QYWdlKGxhc3RQYWdlKTtcbiAgfVxuXG4gIHVuZG8oKSB7XG4gICAgaWYgKHRoaXMudW5kb1N0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMudW5kb1N0YWNrLnBvcCgpITtcbiAgICAgIHRoaXMucmVkb1N0YWNrLnB1c2godGhpcy5jbG9uZURhdGEodGhpcy52aXNpYmxlUm93cykpO1xuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKHByZXZTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVkbygpIHtcbiAgICBpZiAodGhpcy5yZWRvU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5yZWRvU3RhY2sucG9wKCkhO1xuICAgICAgdGhpcy51bmRvU3RhY2sucHVzaCh0aGlzLmNsb25lRGF0YSh0aGlzLnZpc2libGVSb3dzKSk7XG4gICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5jbG9uZURhdGEobmV4dFN0YXRlKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6cGFzdGUnLCBbJyRldmVudCddKVxuICBhc3luYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xuICAgIGlmICghdGhpcy5lbmFibGVDdXQpIHJldHVybjtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgdGFnID0gdGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnIHx8IHRhcmdldD8uZ2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnKSA9PT0gJ3RydWUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCB8fCAhdGhpcy5hY3RpdmVDZWxsKSByZXR1cm47XG5cbiAgICBjb25zdCB0ZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xuICAgIGlmICghdGV4dCkgcmV0dXJuO1xuICAgIGNvbnN0IHVzZXJDb25maXJtZWQgPSBhd2FpdCB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbChcbiAgICAgICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcGFzdGUgdGhlIGNvcGllZCBkYXRhPydcbiAgICApO1xuXG4gICAgaWYgKCF1c2VyQ29uZmlybWVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscz8uWzBdO1xuICAgIGlmICghc3RhcnRDZWxsKSByZXR1cm47XG5cbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IGF3YWl0IHRoaXMuY29weVNlcnZpY2UucGFzdGVGcm9tQ2xpcGJvYXJkVGV4dChcbiAgICAgIHRleHQsXG4gICAgICB0aGlzLnZpc2libGVSb3dzLFxuICAgICAgdGhpcy5jb2x1bW5zLFxuICAgICAgc3RhcnRDZWxsLnJvd0luZGV4LFxuICAgICAgc3RhcnRDZWxsLmNvbEluZGV4LFxuICAgICAgc3RhcnRDZWxsLnN1YkNvbEluZGV4XG4gICAgKTtcblxuICAgIGlmICh1cGRhdGVkUm93cz8udXBkYXRlUm93cz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHtcbiAgICAgICAgZGF0YTogdXBkYXRlZFJvd3M/LnVwZGF0ZVJvd3MsXG4gICAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcbiAgICAgICAgY29sdW1uOiB1cGRhdGVkUm93cz8uY3VycmVudENvbHVtc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnY3VzdG9tLW92ZXJsYXktd3JhcHBlcicpO1xuICAgICAgb3ZlcmxheS5pbm5lckhUTUwgPSBgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLW92ZXJsYXlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tbW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtb2RhbC1tZXNzYWdlXCI+JHttZXNzYWdlfTwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY29uZmlybVwiPkNvbmZpcm08L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XG4gICAgICBjb25zdCBjb25maXJtQnRuID0gb3ZlcmxheS5xdWVyeVNlbGVjdG9yKCcuYnRuLWNvbmZpcm0nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGNhbmNlbEJ0biA9IG92ZXJsYXkucXVlcnlTZWxlY3RvcignLmJ0bi1jYW5jZWwnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQob3ZlcmxheSk7XG4gICAgICB9O1xuICAgICAgY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGNhbmNlbEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNEYXRlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKT8uZ2V0VGltZSgpKTtcbiAgfVxuXG4gIGV4cGFuZGVkZWREZXRhaWxSb3dzOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHwgc3RyaW5nIHwgbnVtYmVyID0gJyc7XG5cbiAgdG9nZ2xlRGV0YWlsUm93RXhwYW5kKHJvdzogYW55KSB7XG4gICAgY29uc3QgaWQgPSByb3c/LmlkIHx8IHJvdz8uX2lkO1xuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyAmJiByb3c/LmRldGFpbD8uY29sdW1ucykge1xuICAgICAgcm93LmRldGFpbC5jb2x1bW5zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBpdGVtLndpZHRoID0gaXRlbT8ud2lkdGggfHwgKHRoaXMuZGF0YUdyaWRDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAvIHJvdy5kZXRhaWwuY29sdW1ucz8ubGVuZ3RoKVxuICAgICAgfSk7XG4gICAgICB0aGlzLnByZXZpZXdOZXN0ZWRDb2xzID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHJvdy5kZXRhaWwuY29sdW1ucyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MpKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyBhcyAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICAgICAgY29uc3QgaW5kZXggPSBleHBhbmRlZC5pbmRleE9mKGlkKTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZXhwYW5kZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4cGFuZGVkLnB1c2goaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9PT0gaWQpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IGlkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdm9pZCB0aGlzLnJpZ2h0UGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5yaWdodFBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMzAwKVxuICB9XG5cbiAgaXNEZXRhaWxzRXhwYW5kZWQocm93OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBpZCA9IHJvdz8uaWQgfHwgcm93Py5faWQ7XG5cbiAgICBpZiAodGhpcy5rZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMpIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MpICYmXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MuaW5jbHVkZXMoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9PT0gaWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmlsdGVyVmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBvcHRpb24/LnZhbHVlID8/IG9wdGlvbjtcbiAgfVxuXG5cbiAgb3BlbkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgdG9nZ2xlTWVudShpOiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIGlmIChldmVudCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgfVxuICAgIHRoaXMub3BlbkluZGV4ID0gdGhpcy5vcGVuSW5kZXggPT09IGkgPyBudWxsIDogaTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlJylcbiAgbmVzdGVkVGFibGUhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgZ2V0IGhhc1ZlcnRpY2FsU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5uZXN0ZWRUYWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgfVxuXG4gIGdldCBoYXNIb3Jpem9udGFsU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5uZXN0ZWRUYWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGVsID0gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50O1xuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xuICB9XG5cblxuICBnZXRUb3RhbEFtb3VudChjb2x1bW46IGFueSkge1xuICAgIGlmICghY29sdW1uPy5pc19hbW91bnQpIHJldHVybjtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LnJlZHVjZSgoc3VtLCByb3cpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcm93W2NvbHVtbi5maWVsZF0gfHwgMDtcbiAgICAgIHJldHVybiBzdW0gKyB2YWx1ZTtcbiAgICB9LCAwKTtcbiAgICBpZiAoIXRvdGFsKSByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gMC4wMGBcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gJHt0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh0b3RhbCwgdGhpcy5jdXJyZW5jeUZvcm1hdCl9YDtcbiAgfVxuXG4gIGRyb3BDb2x1bW4oZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPiwgcm93OiBhbnkpIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkocm93LmRldGFpbC5jb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICB9XG4gIGN1cnJlbnRTdWJTb3J0Q29sdW1uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgY3VycmVudFNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7XG5cbiAgc29ydE5lc3RlZENvbChjb2w6IGFueSwgcm93OiBhbnkpIHtcbiAgICBjb25zdCBkYXRhU2V0ID0gcm93Py5kZXRhaWw/LnJlc3VsdDtcbiAgICBpZiAodGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9PT0gY29sLmZpZWxkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9IGNvbC5maWVsZDtcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSAnYXNjJztcbiAgICB9XG4gICAgY29sLm9yZGVyX2J5ID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbjtcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uZGF0YVNldF0uc29ydCgoYSwgYikgPT4ge1xuICAgICAgbGV0IGFWYWwgPSBhW2NvbC5maWVsZF07XG4gICAgICBsZXQgYlZhbCA9IGJbY29sLmZpZWxkXTtcbiAgICAgIGFWYWwgPSBhVmFsID09IG51bGwgPyAnJyA6IGFWYWw7XG4gICAgICBiVmFsID0gYlZhbCA9PSBudWxsID8gJycgOiBiVmFsO1xuXG4gICAgICBpZiAoY29sLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICBhVmFsID0gbmV3IERhdGUoYVZhbCkuZ2V0VGltZSgpO1xuICAgICAgICBiVmFsID0gbmV3IERhdGUoYlZhbCkuZ2V0VGltZSgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhTnVtID0gcGFyc2VGbG9hdChhVmFsKTtcbiAgICAgIGNvbnN0IGJOdW0gPSBwYXJzZUZsb2F0KGJWYWwpO1xuICAgICAgY29uc3QgYm90aE51bWJlcnMgPSAhaXNOYU4oYU51bSkgJiYgIWlzTmFOKGJOdW0pO1xuXG4gICAgICBpZiAoYm90aE51bWJlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gYU51bSAtIGJOdW0gOiBiTnVtIC0gYU51bTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbXAgPSBTdHJpbmcoYVZhbCkubG9jYWxlQ29tcGFyZShTdHJpbmcoYlZhbCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBjb21wIDogLWNvbXA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByb3cuZGV0YWlsLnJlc3VsdCA9IHNvcnRlZDtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG5cbiAgZ2V0Q29sdW1uV2lkdGhQeChyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb2wud2lkdGgpIHJldHVybiBjb2wud2lkdGggKyAncHgnO1xuICAgIGNvbnN0IHBpeGVscyA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbD8uY29sdW1ucy5sZW5ndGg7XG4gICAgcmV0dXJuIHBpeGVscyArICdweCc7XG4gIH1cblxuICBmdWxsc2NyZWVuSW1hZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHBpblVucGluQ29sdW0oY29sOiBhbnksIHZhbHVlOiAnbGVmdCcgfCAncmlnaHQnIHwgbnVsbCwgY29sdW1uczogYW55W10pIHtcbiAgICBjb2wucGlubmVkID0gdmFsdWU7XG4gICAgY29uc3QgbGVmdCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgY29uc3QgbWlkZGxlID0gY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5waW5uZWQgfHwgYy5waW5uZWQgPT09IG51bGwpO1xuICAgIGNvbnN0IHJpZ2h0ID0gY29sdW1ucy5maWx0ZXIoYyA9PiBjLnBpbm5lZCA9PT0gJ3JpZ2h0Jyk7XG4gICAgY29sdW1ucy5sZW5ndGggPSAwO1xuICAgIGNvbHVtbnMucHVzaCguLi5sZWZ0LCAuLi5taWRkbGUsIC4uLnJpZ2h0KTtcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XG4gIH1cblxuICBnZXRMZWZ0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpLmxlbmd0aDtcbiAgfVxuXG4gIGdldFJpZ2h0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAncmlnaHQnKS5sZW5ndGg7XG4gIH1cblxuICBnZXRTdGlja3lMZWZ0KGNvbHVtbnM6IGFueVtdLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgbGVmdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7XG4gICAgICBjb25zdCBwcmV2Q29sID0gY29sdW1uc1tpXTtcbiAgICAgIGlmIChwcmV2Q29sLnBpbm5lZCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGxlZnQgKz0gcHJldkNvbC53aWR0aCB8fCAxMDA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtsZWZ0fXB4YDtcbiAgfVxuXG4gIHByZXZpZXdOZXN0ZWRDb2xzOiBhbnlbXSA9IFtdO1xuICBvbk5lc3RlZENvbFNvcnQoZXZlbnQ6IENka0RyYWdTb3J0RXZlbnQ8YW55W10+LCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICghZXZlbnQgfHwgIWNvbHVtbnMpIHJldHVybjtcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgY29uc3QgY29sQ2VsbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgY29sQ2VsbHMuZm9yRWFjaCgoZWwpID0+IGZpcnN0UG9zaXRpb25zLnNldChlbCwgZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkpO1xuICAgIH0pO1xuICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgY29uc3Qgb2xkTGVmdCA9IGZpcnN0UG9zaXRpb25zLmdldChlbCkgPz8gbmV3TGVmdDtcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcblxuICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xuICAgICAgICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIHZvaWQgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGVhc2UnO1xuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoMCknO1xuICAgICAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjbGVhbnVwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlU2VsZWN0aW9uKHNlbGVjdGVkSWRzOiBzdHJpbmdbXSwgdGFibGVUeXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRhYmxlVHlwZSkgcmV0dXJuO1xuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne1wic2VsZWN0ZWRSb3dzXCI6IHt9fScpO1xuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gc3RvcmVkLnNlbGVjdGVkUm93cyB8fCB7fTtcbiAgICBhbGxTZWxlY3RlZFt0YWJsZVR5cGVdID0gc2VsZWN0ZWRJZHM7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHNlbGVjdGVkUm93czogYWxsU2VsZWN0ZWQsXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0YWJsZVR5cGVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlc3RvcmVTZWxlY3Rpb24odGFibGVUeXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3t9Jyk7XG4gICAgY29uc3QgaWRzID0gc3RvcmVkLnNlbGVjdGVkUm93cz8uW3RhYmxlVHlwZV0gfHwgW107XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0KGlkcyk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzO1xuICB9XG5cbiAgaXNPdXRzaWRlQ29udGFpbmVyID0gZmFsc2U7XG4gIHByaXZhdGUgY29udGFpbmVyUmVjdDogRE9NUmVjdCB8IG51bGwgPSBudWxsO1xuXG4gIG9uRHJhZ1N0YXJ0ZWQoY29sOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiA9IGNvbDtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0YS1ncmlkLW1haW4tY29udGFpbmVyJyk7XG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gY29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB8fCBudWxsO1xuICB9XG5cbiAgb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lclJlY3QpIHJldHVybjtcblxuICAgIGNvbnN0IHsgeCwgeSB9ID0gZXZlbnQucG9pbnRlclBvc2l0aW9uO1xuICAgIGNvbnN0IGlzT3V0c2lkZSA9XG4gICAgICB4IDwgdGhpcy5jb250YWluZXJSZWN0LmxlZnQgfHxcbiAgICAgIHggPiB0aGlzLmNvbnRhaW5lclJlY3QucmlnaHQgfHxcbiAgICAgIHkgPCB0aGlzLmNvbnRhaW5lclJlY3QudG9wIHx8XG4gICAgICB5ID4gdGhpcy5jb250YWluZXJSZWN0LmJvdHRvbTtcbiAgfVxuXG4gIG9uRHJhZ0VuZGVkKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBudWxsO1xuICAgICAgdGhpcy5pc091dHNpZGVDb250YWluZXIgPSBmYWxzZTtcbiAgICB9LCAxMDApO1xuICAgIHRoaXMuY29udGFpbmVyUmVjdCA9IG51bGw7XG4gIH1cblxuICBnZXRTdGFydEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgPT09IDBcbiAgICAgID8gMFxuICAgICAgOiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfHwgMDtcbiAgfVxuXG4gIGhhc0FueURlZmF1bHRWaWV3KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlVmlldz8uc29tZSgoeCkgPT4geC5pc19kZWZhdWx0IHx8IHguaXNfdGVtcCk7XG4gIH1cblxuICBnZXQgaXNUYWJsZVByZXNldE5vdENoYW5nZWQoKSB7XG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBjdXJyUHJlc2V0ID0gdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU7XG5cbiAgICBjb25zdCBjdXJyZW50UHJlc2V0Q29sdW1ucyA9IGN1cnJQcmVzZXQ/LmNvbHVtbnM/Lm1hcCgoY29sOiB7IGZpZWxkOiBhbnk7IHdpZHRoOiBhbnk7IHBpbm5lZDogYW55OyB9KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxuICAgICAgICB3aWR0aDogY29sLndpZHRoLFxuICAgICAgICBwaW5uZWQ6IGNvbC5waW5uZWRcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5tYXAoY29sID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXG4gICAgICAgIHBpbm5lZDogY29sLnBpbm5lZFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPSBKU09OLnN0cmluZ2lmeShjdXJyZW50UHJlc2V0Q29sdW1ucyk7XG4gICAgY29uc3Qgc3RyaW5nQ29sdW1ucyA9IEpTT04uc3RyaW5naWZ5KGNvbHVtbnMpO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnNDb25maWcubWFwKChmaWx0ZXIpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5jb25kaXRpb24sXG4gICAgICAgICAgZmlyc3RfY29uZGl0aW9uOiBmaWx0ZXI/LnF1ZXJ5Py5maXJzdF9jb25kaXRpb24sXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IGZpbHRlcj8ucXVlcnk/LmZpcnN0X3ZhbHVlLFxuICAgICAgICAgIHNlY29uZF9jb25kaXRpb246IGZpbHRlcj8ucXVlcnk/LnNlY29uZF9jb25kaXRpb24sXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiBmaWx0ZXI/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBjdXJyZW50UHJlc2V0RmlsdGVycyA9IGN1cnJQcmVzZXQ/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVkOiBmaWx0ZXIuZmllbGQsXG4gICAgICAgIHF1ZXJ5OiBmaWx0ZXIucXVlcnksXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKCFjdXJyZW50UHJlc2V0Q29sdW1ucykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIChjdXJyZW50UHJlc2V0Q29sdW1ucyAmJiAoc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucykgJiYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpID09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRGaWx0ZXJzKSkgJiYgKHRoaXMuZm9udEZhaW1seSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5mb250RmFpbWx5KVxuICAgICAgJiYgKHRoaXMuYm9keVRleHRGb250c1NpemUgPT0gY3VyclByZXNldC5jb25maWcuYm9keVRleHRGb250c1NpemUpICYmXG4gICAgICAodGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID09IHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSlcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIgPT0gdGhpcy5zaG93VmVydGljYWxCb3JkZXJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5mb250RmFpbWx5ID09IHRoaXMuZm9udEZhaW1seVxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnNlbGVjdGVkVGFibGVMYXlvdXQgPT0gdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0XG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcuYm9keVRleHRGb250c1NpemUgPT0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZVxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLnJvd1NoYWRpbmdFbmFibGVkID09IHRoaXMucm93U2hhZGluZ0VuYWJsZWQpO1xuICB9XG5cbiAgb25BY3Rpb25CdXR0b25DbGljayhidXR0b246IHN0cmluZykge1xuICAgIGNvbnN0IHRleHQgPSBidXR0b24/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgaWYgKHRleHQgPT0gJ2FjdGl2ZSBkYXRhJyB8fCB0ZXh0ID09ICdhY3RpdmUnIHx8IHRleHQgPT0gJ2RhdGEgYWN0aXZlJyB8fCB0ZXh0ID09ICd1bmFyY2hpdmVkIGRhdGEnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZSBkYXRhJykgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXG4gICAgICAgIG9iajogYnV0dG9uXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiBcIm9uQWN0aW9uQnV0dG9uQ2xpY2tcIixcbiAgICB9O1xuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cblxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcbiAgICBhbGxUYWJzW3RoaXMudGFibGVUeXBlXSA9IHRhYjtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWN0aXZlVGFicycsIEpTT04uc3RyaW5naWZ5KGFsbFRhYnMpKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRhYmxlVHlwZTogdGhpcy50YWJsZVR5cGUsXG4gICAgICAgIG9iajogdGFiXG4gICAgICB9LFxuICAgICAgZXZlbnRUeXBlOiAnb25UYWJDaGFuZ2UnLFxuICAgIH07XG5cbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGdldEJhY2tncm91bmRDb2xvcihyb3c6IGFueSwgaXNFdmVuOiBib29sZWFuLCBzZWN0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMucm93SG92ZXJDb2xvcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGVja2VkUm93QmFja2dyb3VuZENvbG9yO1xuICAgIH1cbiAgICBsZXQgYmFzZUNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5yb3dTaGFkaW5nRW5hYmxlZCkge1xuICAgICAgYmFzZUNvbG9yID0gaXNFdmVuID8gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvciA6IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZUNvbG9yID0gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvcjtcbiAgICB9XG4gICAgaWYgKCFiYXNlQ29sb3IpIHtcbiAgICAgIGlmIChzZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5sZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yO1xuICAgICAgfSBlbHNlIGlmIChzZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMucmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLmJvZHlCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiYXNlQ29sb3I7XG4gIH1cblxuICBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBlbCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuIGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGg7XG4gIH1cblxuXG4gIGdldFNhZmVDb21tZW50KGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuY2xlYW5FZGl0b3JDb250ZW50KGRlc2NyaXB0aW9uKTtcbiAgfVxuICBjbGVhbkVkaXRvckNvbnRlbnQoY29udGVudDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIHJldHVybiB0aGlzLmh0bWxTYW5hdGl6ZXJTZXJ2aWNlLmNsZWFuRWRpdG9yQ29udGVudChjb250ZW50KTtcbiAgfVxuXG4gIGdldEV4dGVudGlvbih1cmw6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh1cmwgIT09ICctJykge1xuICAgICAgaWYgKHR5cGVvZiAodXJsKSA9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdXJsLnNwbGl0KCcuJykucG9wKClcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1cmwpKSB7XG4gICAgICAgIHJldHVybiB1cmxbMF0uc3BsaXQoJy4nKS5wb3AoKVxuICAgICAgfSBlbHNlIHJldHVybiAnLSdcbiAgICB9XG4gICAgZWxzZSByZXR1cm4gJy0nXG4gIH1cblxuICBkb3dubG9hZEF0dGNobWVudCh1cmw6IGFueSwgZmlsZT86IGFueSkge1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuZG93bmxvYWQgPSAnJztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuXG4gIH1cbiAgZnVsbEltYWdlU3JjOiBzdHJpbmcgfCBudWxsID0gJyc7XG4gIG9wZW5GdWxsSW1hZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcbiAgICAgIHRoaXMuZnVsbEltYWdlU3JjID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3R5bGVzVG9JbWFnZXMoKTogdm9pZCB7XG4gICAgY29uc3QgaW1hZ2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbW1lbnQtY29udGVudCBpbWcnKTtcbiAgICBpbWFnZXMuZm9yRWFjaCgoaW1nKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ3dpZHRoJywgJzcwcHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnYm9yZGVyLXJhZGl1cycsICcxNnB4Jyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ21hcmdpbicsICc4cHgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGltZywgJ2NsaWNrJywgKCkgPT4gdGhpcy5vbkltYWdlQ2xpY2soKGltZyBhcyBIVE1MSW1hZ2VFbGVtZW50KS5zcmMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uSW1hZ2VDbGljayhzcmM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZnVsbHNjcmVlbkltYWdlID0gc3JjO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnZnVsbHNjcmVlbkltYWdlVGVtcGxhdGUnKSBmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgZnVsbHNjcmVlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgaWNvbk1hcDogUmVjb3JkPHN0cmluZywgKHJvdzogYW55LCBjb2w6IGFueSkgPT4gc3RyaW5nPiA9IHtcbiAgICBhdHRhY2htZW50c19jb3VudDogKCkgPT4gdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hdHRhY2htZW50cy5zdmcnLFxuICAgIGNvbW1lbnRfY291bnQ6ICgpID0+IHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY29tbWVudHMuc3ZnJyxcbiAgICBwcmlvcml0eTogKHJvdywgY29sKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPVxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICdkYXRhLWdyaWQvaWNvbnMvJyArXG4gICAgICAgICh2YWwgPz8gJ2RlZmF1bHQnKSArXG4gICAgICAgICcuc3ZnJ1xuICAgICAgKTtcbiAgICB9LFxuICB9O1xuXG4gIHRvZ2dsZUZ1bGxzY3JlZW4oKSB7XG4gICAgdGhpcy5pc0Z1bGxTY3JlZW4gPSAhdGhpcy5pc0Z1bGxTY3JlZW47XG4gICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCBhcyBhbnk7XG4gICAgaWYgKCFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCkge1xuICAgICAgaWYgKGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XG4gICAgICAgIGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICBlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKChkb2N1bWVudCBhcyBhbnkpLm1vekNhbmNlbEZ1bGxTY3JlZW4pIHtcbiAgICAgICAgKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbikge1xuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS5tc0V4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1zRXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNlbGxFdmVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXN0b21DZWxsRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIGZsYXR0ZW5Hcm91cChyb3c6IGFueSk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZTogYW55KSA9PiB7XG4gICAgICBpZiAoIW5vZGUpIHJldHVybjtcbiAgICAgIGlmIChub2RlLmlzR3JvdXApIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gdHJhdmVyc2UoY2hpbGQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgdHJhdmVyc2Uocm93KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2VsZWN0R3JvdXBSb3coZTogRXZlbnQsIHJvdzogYW55KSB7XG4gICAgY29uc3QgY2hlY2tib3ggPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGNoZWNrYm94LmNoZWNrZWQ7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmZsYXR0ZW5Hcm91cChyb3cpO1xuICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUoaWQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcbiAgICAgICAgb2JqOiBpZHNcbiAgICAgIH0sXG4gICAgICBldmVudFR5cGU6IFwib25TZWxlY3RSb3dcIixcbiAgICB9XG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93OiBhbnkpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXJvdy5pc0dyb3VwKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmZsYXR0ZW5Hcm91cChyb3cpO1xuICAgIGxldCBjaGVja2VkQ291bnQgPSAwO1xuICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XG4gICAgICBjb25zdCBpZCA9IHIuX2lkIHx8IHIuaWQ7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSkgY2hlY2tlZENvdW50Kys7XG4gICAgfSk7XG4gICAgaWYgKGNoZWNrZWRDb3VudCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjaGVja2VkQ291bnQgPT09IGxlYWZSb3dzLmxlbmd0aCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldENlbGxUaXRsZShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcgfCBib29sZWFuIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHwgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG4gICAgaWYgKCF0aGlzLmlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkpIHtcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUodmFsLCB0aGlzLmRhdGVGb3JtYXQpO1xuICAgICAgfSBlbHNlIGlmIChjb2w/LmlzX2Ftb3VudCkge1xuICAgICAgICBpZiAoIXZhbCkgcmV0dXJuIGAwLjAwYFxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDdXJyZW5jeS50cmFuc2Zvcm0odmFsLCB0aGlzLmN1cnJlbmN5Rm9ybWF0KTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWw/LnZhbHVlID09PSBudWxsIHx8IHZhbD8udmFsdWUgPT09ICcnKSByZXR1cm4gJy0nO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICB2YWw/LnZhbHVlID8/XG4gICAgICAgIHZhbD8ubmFtZSA/P1xuICAgICAgICB2YWwgPz9cbiAgICAgICAgKGNvbC5pc19hbW91bnQgPyAnMCcgOiAnLScpXG4gICAgICApICsgJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3QgPSB2YWw/LlswXTtcblxuICAgIHJldHVybiAoXG4gICAgICBmaXJzdD8uZGVwYXJ0bWVudF9uYW1lID8/XG4gICAgICBmaXJzdD8ucm9sZU5hbWUgPz9cbiAgICAgIGZpcnN0Py5mdWxsX25hbWUgPz9cbiAgICAgIGZpcnN0Py52YWx1ZSA/P1xuICAgICAgZmlyc3Q/Lm5hbWUgPz9cbiAgICAgICctJ1xuICAgICk7XG4gIH1cblxuXG4gIGZpbmlzaEVkaXQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdjZWxsIGVkaXRlZGRkZGRkZGRkZGRkZGRkOiAnLCBldmVudClcbiAgfVxuXG5cbiAgZ2V0RHluYW1pY1JpZ2h0KGNvbDogYW55LCBzZWN0aW9uOiBzdHJpbmcsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoc2VjdGlvbiA9PSAncmlnaHQnICYmIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucz8ubGVuZ3RoID09IDEgJiYgY29sLndpZHRoIDwgMjAwKSB7XG4gICAgICByZXR1cm4gMTAwO1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbiA9PSAncmlnaHQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2VjdGlvbiA9PSAncHJldmlld0NlbnRlckNvbHVtbnMnICYmIGNvbEluZGV4ID09ICh0aGlzLnByZXZpZXdDZW50ZXJDb2x1bW5zPy5sZW5ndGggLSAxKSAmJiBjb2wud2lkdGggPCAyMDApIHtcbiAgICAgIHJldHVybiAyMDBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbC53aWR0aCAtIDQ1O1xuICAgIH1cbiAgfVxuXG4gIGJsdXJJbnB1dChldmVudDogRXZlbnQsIHJvdzogYW55LCBjb2w6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlucHV0Py5ibHVyKCk7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvdywgY29sKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZWRpdGluZ0tleSA9ICcnO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0VmFsaWRBY3Rpb25zKGVsZW1lbnQ6IGFueSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25WYWxpZGF0b3IuZ2V0VmFsaWRBY3Rpb25zKFxuICAgICAgdGhpcy5vcmlnaW5hbEFjdGlvbnMsXG4gICAgICBlbGVtZW50LFxuICAgICAge1xuICAgICAgICB0YWJsZVR5cGU6IHRoaXMudGFibGVUeXBlLFxuICAgICAgICBzaG93VW5MaW5rOiB0aGlzLnNob3dVbkxpbmssXG4gICAgICAgIHBhY2thZ2VEYXRhOiB0aGlzLnBhY2thZ2VEYXRhXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICBwcml2YXRlIGlzU3RhdHVzRmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWZpZWxkTmFtZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGxvd2VyRmllbGQgPSBmaWVsZE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbG93ZXJGaWVsZCA9PT0gJ3N0YXR1cycgfHxcbiAgICAgIGxvd2VyRmllbGQuaW5jbHVkZXMoJ3N0YXR1cycpIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnYXZhaWxzdGF0dXMnIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnYWNjb3VudF9zdGF0dXMnIHx8XG4gICAgICBsb3dlckZpZWxkID09PSAnaXNfY3VzdG9tX2dyYWRlJztcbiAgfVxuXG4gIHByaXZhdGUgY2FwaXRhbGl6ZVN0YXR1cyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuY2FwaXRhbGl6ZVN0YXR1cyh2YWx1ZSk7XG4gIH1cblxuXG4gIGdyaWRDb250ZXh0ID0ge1xuICAgIGFwcGx5RmlsdGVyOiAoY29sOiBhbnkpID0+IHRoaXMuYXBwbHlGaWx0ZXJPbkNvbHVtbihjb2wpLFxuICAgIGNsZWFyRmlsdGVyOiAoY29sOiBhbnkpID0+IHRoaXMucmVtb3ZlRmlsdGVyRnJvbUNvbHVtbihjb2wpXG4gIH07XG5cbiAgcHJpdmF0ZSBjbG9zZUFsbEZpbHRlck1lbnVzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEZpbHRlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbW1vblNldmljZS5tYWluQ29udGFpbmVyTGVmdCA9XG4gICAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuXG4gICAgICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJzKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJPbkNvbHVtbihjb2w6IGFueSkge1xuICAgIHRoaXMuY2xvc2VBbGxGaWx0ZXJNZW51cygpO1xuICAgIGNvbnN0IGZpbHRlciA9IHtcbiAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICBzZWFyY2g6IGNvbC5zZWFyY2gsXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5LFxuICAgICAgdHlwZTogY29sLnR5cGUsXG4gICAgICBfaWRzOiBjb2wuX2lkc1xuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleChmID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XG5cbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZ1tleGlzdGluZ0luZGV4XSA9IGZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnB1c2goZmlsdGVyKTtcbiAgICB9XG4gICAgdGhpcy5jb21tb25TZXZpY2UucmVwbGFjZUNvbHVtblF1ZXJ5KHRoaXMuY29sdW1ucywgY29sLCBjb2wucXVlcnkpO1xuICAgIHRoaXMuZW1pdEZpbHRlcnMoKTtcblxuICB9XG5cbiAgcmVtb3ZlRmlsdGVyRnJvbUNvbHVtbihjb2w6IGFueSkge1xuICAgIHRoaXMuY2xvc2VBbGxGaWx0ZXJNZW51cygpO1xuICAgIGNvbnN0IGVtcHR5UXVlcnkgPSB7XG4gICAgICBmaXJzdF9jb25kaXRpb246IG51bGwsXG4gICAgICBmaXJzdF92YWx1ZTogbnVsbCxcbiAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxuICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcbiAgICAgIHNlY29uZF92YWx1ZTogbnVsbFxuICAgIH07XG5cbiAgICB0aGlzLmNvbW1vblNldmljZS5yZXBsYWNlQ29sdW1uUXVlcnkodGhpcy5jb2x1bW5zLCBjb2wsIGVtcHR5UXVlcnkpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmVtaXRGaWx0ZXJzKCk7XG4gIH1cblxuICBnZXRGb3JtYXRlZERhdGUodmFsOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZm9ybWF0RGF0ZVZhbHVlKHZhbCwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgfVxuXG4gIGNsb3NlQWxsRXhwYW5kZWRSb3dzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xuICAgICAgdGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25LZXlEb3duKFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgIHJvdzogYW55LFxuICAgIGNvbDogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgIT09ICdCYWNrc3BhY2UnKSByZXR1cm47XG5cbiAgICBpZiAoY29sPy5pc19yZXF1aXJlZCA9PT0gdHJ1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG5cbiAgICBpZiAoY3VycmVudFZhbHVlID09IG51bGwgfHwgY3VycmVudFZhbHVlID09PSAnJykgcmV0dXJuO1xuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuc2V0TmVzdGVkVmFsdWUocm93LCBjb2wsIG51bGwsIHRydWUpO1xuXG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKFxuICAgICAgcm93Ll9fdmlydHVhbEluZGV4LFxuICAgICAgY29sLmluZGV4LFxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICBnZXREcm9wZG93bkNlbGxUZXh0KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XG4gICAgaWYgKHZhbHVlPy52YWx1ZSAhPSBudWxsKSByZXR1cm4gU3RyaW5nKHZhbHVlLnZhbHVlKTtcbiAgICBpZiAodmFsdWU/Lm5hbWUgIT0gbnVsbCkgcmV0dXJuIFN0cmluZyh2YWx1ZS5uYW1lKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICByZXR1cm4gbnVsbDsgLy8gbnVsbCA9IG5vIHNlbGVjdGlvblxuICB9XG5cblxuXG59IiwiPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGgtMTAwXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgKm5nSWY9XCJ0YWJzPy5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIGlkPVwibmF2LXRhYlwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlVGFiKHRhYilcIlxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSB0YWJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRhYiB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtc2VhcmNoXCIgW3N0eWxlLndpZHRoLnB4XT1cIjM1MFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiZW5hYmxlR2xvYmFsU2VhcmNoXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjZ2xvYmFsU2VhcmNoSW5wdXRcbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM2cHhcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoLCB0aGVuIHByZXNzIEVudGVyXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlU2VhcmNoXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkdsb2JhbFNlYXJjaCgpXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXJpZ2h0LXRvcC1hY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnV0dG9ucz8ubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGFjdGlvbi1idXR0b25zLXJvdyBtcy0yXCJcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvbj8uaGFzX3Blcm1pc3Npb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQnV0dG9uQ2xpY2soYnV0dG9uLm5hbWUpXCJcbiAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cImkgPT0gYnV0dG9ucy5sZW5ndGggLTFcIlxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBib3JkZXIgYm9yZGVyLXByaW1hcnkgYnRuLWFjdGl2ZS1wcmltYXJ5ICBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICpuZ0lmPVwiYnV0dG9uLmlzX3Nob3dJY29uXCJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYnV0dG9uLmljb24gKyAnLnN2ZydcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICBbY2xhc3MubXMtMF09XCJidXR0b24uaXNfc2hvd0ljb25cIlxuICAgICAgICAgICAgICA+e3sgYnV0dG9uPy5uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHBvc2l0aW9uLXJlbGF0aXZlIGFjdGlvbi1idXR0b25zLXJvd1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKClcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dGaWx0ZXJzXCJcbiAgICAgID5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgbWUtMiBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPkZpbHRlcnM8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlcmVkQ29sdW1ucz8ubGVuZ3RoXCJcbiAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgd2lkdGg6IDdweDtcbiAgICAgICAgICAgIGhlaWdodDogN3B4O1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzAwMjJmZjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCA2MCwgMjU1KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtbm9uZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdhZHZhbmNlLWZpbHRlcicpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUb3BCdXR0b24gPT09ICdhZHZhbmNlLWZpbHRlcidcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvem9vbS1jaGFyZ2Uuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBhY3Rpb24tYnV0dG9ucy1yb3dcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJyB8fFxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCcgfHxcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICd0YWJsZS1wcmVzZXRzJyB8fFxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3Nob3ctaGlkZS1jb2x1bW5zJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8IS0tIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIHRvcC1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuPiAtLT5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiSmF2YVNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NldHRpbmdzLTIuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPlNldHRpbmc8L3NwYW4+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzZXR0aW5nJ1wiXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTEgYWN0aW9ucy1kcm9wZG93bi1zZXR0aW5nXCJcbiAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudVwiPlxuICAgICAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLWxheW91dCcpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3RhYmxlLTIuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgVGFibGUgTGF5b3V0PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2xpc3QtZGV0YWlscy5zdmcnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICBUYWJsZSBQcmVzZXRzPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bW5zIC0tPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1NpZGVNZW51XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlQWN0aW9ucygnc2hvdy1oaWRlLWNvbHVtbnMnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxpZ24taXRlbXMtY2VudGVyIGQtZmxleFwiXG4gICAgICAgICAgICAgICAgPjxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgQ29sdW1uczwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHRcIj57eyBjb2x1bW5zQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEZpbHRlciAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKCk7IGFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICBGaWx0ZXJcbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPCEtLSBEb3dubG9hZCAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENzdignY3N2JylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kb3dubG9hZC5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgQ1NWIEV4cG9ydFxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVFeHBvcnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ3hsc3gnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rvd25sb2FkLnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICBFeGNlbCBFeHBvcnRcbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgJiBGb250IFNpemUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwYi0yIHB0LTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBGYW1pbHkgLS0+XG4gICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvbnRGYWltbHlcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZm9udCBvZiBmb250RmFtaWxpZXNcIiBbdmFsdWVdPVwiZm9udFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmb250IH19XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cblxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBTaXplIC0tPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIGZvbnRTaXplc1wiIFt2YWx1ZV09XCJzaXplXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNpemUgfX1cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRhYmxlIExheW91dCAtLT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAndGFibGUtbGF5b3V0J1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVMYXlvdXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUYWJsZSBQcmVzZXRzIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAndGFibGUtcHJlc2V0cydcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlUHJlc2V0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3Nob3ctaGlkZS1jb2x1bW5zJ1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd0hpZGVDb2x1bW5zXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucy1yb3dcIiAqbmdJZj1cInNob3dGdWxsU2NyZWVuQnV0dG9uXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCIhaXNGdWxsU2NyZWVuXCJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJ0bi1hY3RpdmUtcHJpbWFyeSBib3JkZXIgYm9yZGVyLXByaW1hcnkgZXhwZW5kIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiXG4gICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcbiAgICAgICAgICBkYXRhLWJzLXBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgdGl0bGU9XCJNaW5pbWlzZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBtaW5BcnJvdzogIWlzRnVsbFNjcmVlbiwgbWF4QXJyb3c6IGlzRnVsbFNjcmVlbiB9XCJcbiAgICAgICAgICBzdHlsZT1cInRyYW5zaXRpb246IGNvbG9yIDAuMnNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXhwZW5kLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAqbmdJZj1cImlzRnVsbFNjcmVlblwiXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IGV4cGVuZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxuICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXG4gICAgICAgICAgZGF0YS1icy1wbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgIHRpdGxlPVwiTWF4aW1pc2VcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgbWluQXJyb3c6ICFpc0Z1bGxTY3JlZW4sIG1heEFycm93OiBpc0Z1bGxTY3JlZW4gfVwiXG4gICAgICAgICAgc3R5bGU9XCJ0cmFuc2l0aW9uOiBjb2xvciAwLjJzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL21pbmltaXplLnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPCEtLSBFeGFtcGxlIHNpbmdsZSBkYW5nZXIgYnV0dG9uIC0tPlxuXG4gICAgICAgIDwhLS0gPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkLWZsZXggZ2FwLTIgYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ2FjdGlvbnMnKVwiXG4gICAgICAgID5cbiAgICAgICAgICBBY3Rpb25cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9WZWN0b3Iuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2FjdGlvbnMnXCJcbiAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzaG93XCI+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPkFjdGlvbjwvYT5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+QW5vdGhlciBhY3Rpb248L2E+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiI1wiPlNvbWV0aGluZyBlbHNlIGhlcmU8L2E+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5TZXBhcmF0ZWQgbGluazwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJzICYmICFzaG93RmlsdGVyUm93XCJcbiAgICBjbGFzcz1cInRvcC1maWx0ZXItcm93IGJvcmRlci10b3AgcHktMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInRvcEZpbHRlclJvd0hlaWdodFwiXG4gID5cbiAgICA8IS0tIExFRlQgU0lERSAoRmlsdGVyIHRhZ3MgKyBGaWx0ZXIgYnV0dG9uKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgYWN0aXZlRmlsdGVyZWRDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIlxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXRhZ3NcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPSAnZmlsdGVyLWNvbHVtbnMnO1xuICAgICAgICAgICAgICBvcGVuRmlsdGVyKGNvbClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdXRlZC10ZXh0IGFkZC1maWx0ZXItYnV0dG9uIGFjdGl2ZS1maWx0ZXJzXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcFwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICAgICAgICBjb2w/LmZpZWxkID09IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5maWVsZCAmJlxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW4gJiZcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09ICdmaWx0ZXItY29sdW1ucydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGFnIG10LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi5zdmcnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlQ29sdW1uRmlsdGVyRnJvbUNvbHVtbihjb2wpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY3Jvc3MtcHJpbWFyeS5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBjcm9zcy1zZWNvbmRhcnkgbXMtMiBtYi0xXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ2ZpbHRlci1jb2x1bW5zJyAmJlxuICAgICAgICAgICAgICBjb2w/LmZpZWxkID09IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5maWVsZCAmJlxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW5cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckNvbHVtbnM7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2wgfVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBGaWx0ZXIgQnV0dG9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWx0ZXItYnV0dG9uLW1lbnVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXV0ZWQtdGV4dCBhZGQtZmlsdGVyLWJ1dHRvbiBidXR0b24tZmlsdGVyXCJcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiA3MHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3BsdXMuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTIgZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIEZpbHRlclxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdmaWx0ZXItY29sdW1ucycgJiYgIWlzQWN0aXZlRmlsdGVyT3BlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckNvbHVtbnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUklHSFQgU0lERSAoVXBkYXRlICsgUmVzZXQpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KClcIlxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlciBhbGwtZmlsdGVycy1yZXNldC1idXR0b25cIlxuICAgICAgICAqbmdJZj1cIiFjaGVja0ZpbHRlckNoYW5nZXNFZmZlY3QoKVwiXG4gICAgICA+XG4gICAgICAgIFVwZGF0ZSBWaWV3XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlciBhbGwtZmlsdGVycy1yZXNldC1idXR0b25cIlxuICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXG4gICAgICAgIChjbGljayk9XCJjbGVhckFsbEZpbHRlcnMoKVwiXG4gICAgICA+XG4gICAgICAgIFJlc2V0XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiXG4gICAgICBzaG93RmlsdGVycyA/ICdjYWxjKDEwMCUgLSAnICsgdG9wRmlsdGVyUm93SGVpZ2h0ICsgJ3B4KScgOiAnMTAwJSdcbiAgICBcIlxuICAgIGNka0Ryb3BMaXN0R3JvdXBcbiAgICBjbGFzcz1cImRhdGEtZ3JpZC10YWJsZS13cmFwcGVyIG92ZXJmbG93LWhpZGRlblwiXG4gICAgI2RhdGFHcmlkQ29udGFpbmVyXG4gICAgW3N0eWxlLmZvbnRGYW1pbHldPVwiZm9udEZhaW1seVwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICBpZD1cImRhdGEtZ3JpZC1tYWluLWNvbnRhaW5lclwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInNob3dSb3dzR3JvdXBpbmdcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2x1bW5zXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiXG4gICAgICAgIHRvcEdyb3VwZWRCYWRnZXNCYWNrZ3JvdW5kQ29sb3IgfHwgaGVhZGVyQmFja2dyb3VuZENvbG9yXG4gICAgICBcIlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiZW50ZXJUb1RvcFJvd0dyb3VwaW5nKCRldmVudClcIlxuICAgICAgKGNka0Ryb3BMaXN0RXhpdGVkKT1cImV4aXRlZEZyb21UaGVUb3BSb3coJGV2ZW50KVwiXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcFRvcEdyb3VwKCRldmVudClcIlxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiY2FuRW50ZXJUb1Jvd3NHcm91cGluZ1wiXG4gICAgICBpZD1cInJvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lclwiXG4gICAgICBjbGFzcz1cImJvcmRlci1iZWxvdyBkLWZsZXggcHgtNCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiPlxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IGdyb3Vwc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Hcm91cFJlb3JkZXIoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgW2Nka0RyYWdMb2NrQXhpc109XCIneCdcIlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBncm91cGVkQ29sdW1ucztcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwZWRDb2x1bW5zLmxlbmd0aCA+IDEgJiYgaSAhPSBncm91cGVkQ29sdW1ucy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XG4gICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIFtzdHlsZS5oZWlnaHRdPVwiXG4gICAgICAgICdjYWxjKDEwMCUgLSAnICtcbiAgICAgICAgKHNob3dSb3dzR3JvdXBpbmdcbiAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCArIGZvb3RlclJvd0hlaWdodFxuICAgICAgICAgIDogZm9vdGVyUm93SGVpZ2h0KSArXG4gICAgICAgICdweCknXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJoLTEwMFwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJcbiAgICAgICAgICAhc2hvd1NpZGVNZW51XG4gICAgICAgICAgICA/ICcxMDAlJ1xuICAgICAgICAgICAgOiBzaWRlTWVudVZpc2libGVcbiAgICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDI4MHB4KSdcbiAgICAgICAgICAgIDogJ2NhbGMoMTAwJSAtIDMwcHgpJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgdHJhbnNpdGlvbiBwb3NpdGlvbi1yZWxhdGl2ZSB3LTEwMFwiPlxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSBEYXRhIEdyaWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxuICAgICAgICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXItd3JhcHBlciB3LTEwMFwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJoZWFkZXJUZXh0Rm9udHNTaXplXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwiIWhhc0FueVZpc2libGVDb2x1bW5cIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXG4gICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcbiAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgTGVmdCBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtaGVhZGVyIGxlZnQtcGlubmVkXCJcbiAgICAgICAgICAgICAgI2xlZnRQaW5uZWRIZWFkZXJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGwgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXG4gICAgICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XG4gICAgICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTLk5vXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveGVzXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgJiYgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyXG4gICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlU3RhdGUoZGF0YVNldClcIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZChkYXRhU2V0KVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbChkYXRhU2V0KVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgaWQ9XCJsZWZ0LXBpbm5lZC1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImxlZnRQaW5uZWRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdsZWZ0JylcIlxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJcbiAgICAgICAgICAgICAgICAgIG9uU29ydEdyb3VwKCRldmVudCwgJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucycpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAxcHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiBsZWZ0UGlubmVkQ29sdW1ucztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncHJldmlld0xlZnRQaW5uZWRDb2x1bW5zJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xuICAgICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2w/LmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugc2luZ2xlQ29sXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZCBvZiBjb2wuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tIERhdGEgR3JpZCBDZW50ZXIgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWhlYWRlciBjZW50ZXItc2Nyb2xsYWJsZVwiXG4gICAgICAgICAgICAgICNjZW50ZXJQaW5uZWRIZWFkZXJcbiAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvbkNlbnRlckJvZHlTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGlkPVwiY2VudGVyLXBpbm5lZC1oZWFkZXJcIlxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcbiAgICAgICAgICAgICAgICBzaG93Um93c0dyb3VwaW5nID8gWydyb3dzLWdyb3VwaW5nLXRvcC1jb250YWluZXInXSA6IFtdXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY2VudGVyQ29sdW1uc1wiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nICYmIGRyYWdnaW5nSW5Hcm91cEFyZWFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAnY2VudGVyJylcIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwib25Tb3J0R3JvdXAoJGV2ZW50LCAncHJldmlld0NlbnRlckNvbHVtbnMnKVwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aF09XCJcbiAgICAgICAgICAgICAgICAnY2FsYygxMDAlIC0gJyArXG4gICAgICAgICAgICAgICAgKHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoICsgbGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCkgK1xuICAgICAgICAgICAgICAgICdweCknXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwZWRDb2x1bW5zPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICNjb2x1bW5zR3JvdXBlZEJveFxuICAgICAgICAgICAgICAgIGlkPVwiZ3JvdXBCb3hIZWFkZXJEaXZcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggdy0xMDAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICBzaG93RmlsdGVyUm93ID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHMtM1wiPkdyb3VwPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgJ2dyb3VwJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplR3JvdXBCb3goJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogLTJweFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItYmVsb3dcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzBweDsgaGVpZ2h0OiAxMDAlXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdyaWRUeXBlID09PSAnQXNzZXRzJyB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJ1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrQ29sdW1uR3JvdXBpbmdTdGF0dXMoY29sKTtcbiAgICAgICAgICAgICAgICAgIGRyYWdTdGFydE9uR3JvdXAoY29sKTtcbiAgICAgICAgICAgICAgICAgIG9uRHJhZ1N0YXJ0ZWQoY29sKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJvbkRyYWdNb3ZlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZGVkKClcIlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgY2VudGVyQ29sdW1ucztcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdwcmV2aWV3Q2VudGVyQ29sdW1ucydcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzT3V0c2lkZUNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdnaW5nSW5Hcm91cEFyZWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZycpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3V0c2lkZUNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUtY3Jvc3Muc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyQ29sdW1ucydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhICYmICFpc091dHNpZGVDb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkPy5pc19ncm91cGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVDb2w+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uaXNfZ3JvdXBhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIFJpZ2h0IFBpbm5lZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgIGlkPVwicmlnaHQtcGlubmVkLWhlYWRlclwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxuICAgICAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgcmlnaHQtcGlubmVkXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIlxuICAgICAgICAgICAgICAgIG9uU29ydEdyb3VwKCRldmVudCwgJ3ByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdyaWdodCcpXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cCgpXCJcbiAgICAgICAgICAgICAgI3JpZ2h0UGlubmVkSGVhZGVyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtcGlubmVkLWhlYWRlciBkLWZsZXhcIlxuICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMC4ycHhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgcmlnaHRQaW5uZWRDb2x1bW5zO1xuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgcGlubmVkUmlnaHQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1ByZXZpZXdcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBjb2wuaGVhZGVyIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBjb2wuY2hpbGRyZW4ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVDb2w+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBCb2R5IHN0YXJ0cyBoZXJlIC0tPlxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAqbmdJZj1cIiFkYXRhU2V0Py5sZW5ndGggJiYgIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3JlY29yZC1ub3QtZm91bmQuc3ZnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgPjwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxkaXY+Tm8gUmVjb3JkIEZvdW5kPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBsb2FkaW5nLW92ZXJsYXlcIlxuICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nIHx8IGRhdGFTZXRMb2FkaW5nXCJcbiAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgIHotaW5kZXg6IDk5OTtcbiAgICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDFweCk7XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibG9hZGVyXCI+PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+IC0tPlxuICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keS13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImJvZHlXcmFwcGVySGVpZ2h0XCJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogYXV0bzsgb3ZlcmZsb3cteDogaGlkZGVuXCJcbiAgICAgICAgICAgICNtYWluU2Nyb2xsXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpblNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJ2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIExFRlQgUElOTkVEIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICAgICFncm91cGVkQ29sdW1ucy5sZW5ndGggPyBvcmlnaW5hbERhdGFTZXQubGVuZ3RoICogcm93SGVpZ2h0IDogMFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8PSA0XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGxlZnQtcGlubmVkLWJvZHkgdy0xMDBcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cImhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudHJhbnNwYXJlbnQtYm9yZGVyLXJpZ2h0XT1cIiFoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDw9IDRcIlxuICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtAcm93RHluYW1pY109XCJyb3dBbmltYXRpb25cIlxuXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdyBvZiB2aXNpYmxlUm93cztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBfX3ZpcnR1YWxJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQ0VOVEVSIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImgtMTAwXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5jbGllbnRXaWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IGNlbnRlci1zY3JvbGxhYmxlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwib3JpZ2luYWxEYXRhU2V0Lmxlbmd0aCA8PSA0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlbjsgb3ZlcmZsb3cteDogYXV0b1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICNjZW50ZXJTY3JvbGxhYmxlQm9keVxuICAgICAgICAgICAgICAgIChzY3JvbGwpPVwib25DZW50ZXJCb2R5U2Nyb2xsKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwiaGFzTGVmdFBpbm5lZENvbHVtbnMgPyBsZWZ0UGlubmVkQm94c2hhZG93OiAnbm9uZSdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdDZW50ZXJDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3RhbEFtb3VudFJvdyAmJiBvcmlnaW5hbERhdGFTZXQ/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IF9fdmlydHVhbEluZGV4OiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3Q2VudGVyQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gUklHSFQgUElOTkVEIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInJpZ2h0LXBpbm5lZC1ib2R5LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1JpZ2h0UGlubmVkQ29sdW1uc1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDw9IDRcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiXG4gICAgICAgICAgICAgICAgaXNTY3JvbGxiYXJWaXNpYmxlXG4gICAgICAgICAgICAgICAgICA/IHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTVcbiAgICAgICAgICAgICAgICAgIDogcmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyaWdodFBpbm5lZEJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1ib2R5IHJpZ2h0LXBpbm5lZC1ib2R5IHctMTAwIGgtMTAwXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm94U2hhZG93XT1cImhhc1JpZ2h0UGlubmVkQ29sdW1ucyA/IHJpZ2h0UGlubmVkQm94c2hhZG93OiAnbm9uZSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICBbQHJvd0R5bmFtaWNdPVwicm93QW5pbWF0aW9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvdGFsQW1vdW50Um93ICYmIG9yaWdpbmFsRGF0YVNldD8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdSaWdodFBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IGF1dG87IGxlZnQ6IGF1dG9cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5JbWFnZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgICAgICAgIGRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIChmb290ZXJSb3dIZWlnaHQgKyAxMDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1hZ2UtbW9kYWwgZnVsbC1pbWFnZS1tb2RhbFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZnVsbHNjcmVlbkltYWdlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZnVsbHNjcmVlbkltYWdlXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJGdWxsc2NyZWVuIEltYWdlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkUm93cy5zaXplID4gMCAmJiBzaG93VGFza2JhclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGFza2JhciB3LTEwMFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1yb3dzLWFjdGlvbi1iYXJcIiBbQHNsaWRlVXBdPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtY291bnRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkUm93cy5zaXplIH19IHNlbGVjdGVkIG9mXG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz8ucGFnaW5hdGlvblBhcmFtcz8udG90YWxJdGVtc1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIFRvdGFsXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFza2JhckFjdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uPy5oYXNfcGVybWlzc2lvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idG4gdmVyaWZpZWQgYnRuIHt7IGFjdGlvbiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25WZXJpZnlDbGljayhhY3Rpb24/LmFjdGlvbk5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID57eyBhY3Rpb24/LmFjdGlvbk5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tiYXJBY3Rpb25zLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPT0gdGFza2JhckFjdGlvbnMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9uc1tpICsgMV0/Lmhhc19wZXJtaXNzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPnw8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhclNlbGVjdGlvblN0YXRlKHRhYmxlVHlwZSk7c2VsZWN0ZWRSb3dzLmNsZWFyKCk7XCIgY2xhc3M9XCJjbGVhci1idG4gbXMtMiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmkteC1jaXJjbGVcIj48L2k+IENsZWFyIFNlbGVjdGlvblxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBWZXJ0aWNhbCBGYWtlIHNjcm9sbCBCYXIgLS0+XG4gICAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uTWFpbkZha2VTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2Utc2Nyb2xsYmFyIGZha2Utc2Nyb2xsYmFyLXZlcnRpY2FsIGQtbm9uZVwiXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcbiAgICAgICAgICAgICAgICA6IHNob3dDb2x1bW5zR3JvdXBpbmcgfHwgc2hvd0ZpbHRlclJvd1xuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxuICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICAgICAgICB3aWR0aDogMTdweDtcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZjFmMmYzO1xuICAgICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAqIGRhdGFTZXRMZW5ndGhcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gSG9yaXppbnRhbCBGYWtlIFNjcm9sbGJhcnMgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgKm5nSWY9XCJoYXNTY3JvbGwgJiYgIXNob3VsZFJlc3RvcmVTY3JvbGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJsZWZ0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteDogc2Nyb2xsXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmFrZS1ob3JpemludGFsLXNjcm9sbGJhclwiXG4gICAgICAgICAgICAjaG9yaXppbnRhbEZha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxXaWR0aCAtIDEwXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW3N0eWxlLnNjcm9sbGJhcldpZHRoXT1cImhvcml6aW50YWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNpZGUgTWVudSBJbXBsZW1lbnRlZCBIZXJlIC0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNob3dTaWRlTWVudVwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaWRlTWVudVZpc2libGUgPyAyODAgOiAzMFwiXG4gICAgICAgIGNsYXNzPVwicmlnaHQtbWVudSBoLTEwMFwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwic2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgZC1mbGV4IGZsZXgtcm93LXJldmVyc2VcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAzMHB4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXN0YXJ0XT1cInNpZGVNZW51VmlzaWJsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2NvbHMnKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5iZy1mZmZdPVwiXG4gICAgICAgICAgICAgICAgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5zLWJ1dHRvbiBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdWktY2hlY2tzLWdyaWQuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnVlLXRleHRcIj5Db2x1bW5zPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoJ2ZpbHRycycpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWZmZl09XCJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnICYmIHNpZGVNZW51VmlzaWJsZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cIlxuICAgICAgICAgICAgICAgIHNpZGVNZW51VmlzaWJsZSAmJiBjdXJyZW50T3BlbmVkU2lkZU1lbnVlID09ICdmaWx0cnMnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51ZS10ZXh0XCI+RmlsdGVyPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImgtMTAwXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IHNpZGVNZW51VmlzaWJsZSA/ICcyNTBweCcgOiAnJyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8IS0tIENvbHVtbiBJdGVtcyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWJvZHkgcHgtM1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGhyIC8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51LXJvdy1ncm91cHNcIiBzdHlsZT1cImhlaWdodDogMzAlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU1lbnVSb3dHcm91cHNcIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJyAmJiBzaWRlTWVudVZpc2libGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVGaWx0ZXJzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJmb290ZXJSb3dIZWlnaHRcIlxuICAgICAgY2xhc3M9XCJib3JkZXItdG9wXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZm9vdGVyUm93QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICpuZ0lmPVwicGFnaW5hdGlvbkNvbmZpZ1wiXG4gICAgPlxuICAgICAgPCEtLSBSb3dzOiA8c3BhbiBjbGFzcz1cImZ3LTUwMCBtcy0xXCI+e3sgZGF0YVNldC5sZW5ndGggfX08L3NwYW4+IC0tPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImZvb3RlclJvd0hlaWdodFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLnB4XT1cImZvb3RlclBhZGRpbmdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zaXplXCI+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uc1wiIFt2YWx1ZV09XCJzaXplXCI+XG4gICAgICAgICAgICAgIHt7IHNpemUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+IHBlciBwYWdlIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtaW5mb1wiPlxuICAgICAgICAgIFJlc3VsdHM6XG4gICAgICAgICAge3sgKHBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfX0te3tcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcucGFnZSAqIHBhZ2luYXRpb25Db25maWcubGltaXQgPFxuICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcbiAgICAgICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XG4gICAgICAgICAgICAgIDogcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHNcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9mXG4gICAgICAgICAge3sgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJlc3VsdHMgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtYnV0dG9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSAxXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDigLlcbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdmlzaWJsZVBhZ2VzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwicGFnZSAhPT0gJy4uLidcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInBhZ2UgPT09IHBhZ2luYXRpb25Db25maWcucGFnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHBhZ2UgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWdlID09PSAnLi4uJ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlID09PSBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAg4oC6XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG48IS0tIEhlYWRlciBDZWxsIFRlbXBsYXRlIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cblxuPG5nLXRlbXBsYXRlXG4gICNoZWFkZXJDZWxsXG4gIGxldC1jb2xcbiAgbGV0LXBpbm5lZFJpZ2h0PVwicGlubmVkUmlnaHRcIlxuICBsZXQtaT1cImluZGV4XCJcbiAgbGV0LWNvbHVtbkluZGV4PVwiaW5kZXhcIlxuICBsZXQtc2VjdGlvbnM9XCJzZWN0aW9uXCJcbiAgbGV0LWNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcj1cImNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlclwiXG4+XG4gIDxkaXY+XG4gICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoID4gMDsgZWxzZSBmbGF0SGVhZGVyXCI+XG4gICAgICA8ZGl2IGNka0Ryb3BsaXN0R3JvdXAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiPlxuICAgICAgICA8IS0tIFBhcmVudCBIZWFkZXIgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhjb2wpXCJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGdyb3VwLWhlYWRlclwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgW3N0eWxlLmdyaWRDb2x1bW5dPVwiJ3NwYW4gJyArIGNvbC5jaGlsZHJlbi5sZW5ndGhcIlxuICAgICAgICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWVuZF09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMVwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZS1oZWFkZXJdPVwiY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDb2x1bW5JbmRpY2VzLmluY2x1ZGVzKGNvbD8uaW5kZXgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaGVhZGVyLWNvbnRlbnRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgICAgW2NsYXNzLm1zLTJdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGNvbC5jaGlsZHJlbilcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUdyb3VwKCRldmVudCwgY29sLCBwaW5uZWRSaWdodClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ2hpbGQgSGVhZGVycyBhbmQgRmlsdGVycyAtLT5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sLmNoaWxkcmVuXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwib25DaGlsZERyb3BsaXN0U29ydGVkKCRldmVudCwgc2VjdGlvbnMpXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uQ2hpbGREcm9wbGlzdERyb3BlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxuICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY2hpbGRcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBDaGlsZCBIZWFkZXIgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNfdmlzaWJsZSAmJiAhY2hpbGRbJ2lzUm93R3JvdXBlZCddXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxscyBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNoaWxkLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWQtb24tdGV4dF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjaGlsZClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmUtaGVhZGVyXT1cImNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ29sdW1uSW5kaWNlcy5pbmNsdWRlcyhjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVkaXRhYmxlLWhlYWRlcl09XCJjaGlsZD8uaXNfZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY2hpbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLmhlYWRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLnBpbm5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RocmVlLWRvdHMtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gT25seSBzaG93IG1lbnUgaWYgdGhpcyBjb2x1bW4gaXMgYWN0aXZlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVDb2wgPT09IGNoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSghY2hpbGQ/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmVzdGVkVGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZENvbEluZGV4OiBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNoaWxkKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmlsdGVyUm93XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNoaWxkLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZ3JpZC1yb3c6IDNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hpbGQuZmlsdGVyVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZShjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICAocGFzdGUpPVwib25GaWx0ZXJDaGFuZ2UoY2hpbGQpOyBhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjaGlsZD8udHlwZSA9PSAnaW1hZ2UnIHx8IGNoaWxkPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZScgfHwgY2hpbGQ/LnR5cGUgPT0gJ2FycmF5J1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNoaWxkKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJ1wiXG4gICAgICAgICAgICAgICAgICAgID48c3BhblxuICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDdweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogN3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwIDE2MyAyMzMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW5cbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmaWx0ZXItcm93LWZpbHRlci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsPy5maWVsZCA9PSBjaGlsZD8uZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnBpbm5lZCA/IDAgOiAtY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnRcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyTWVudTsgY29udGV4dDogeyBjb2w6IGNoaWxkIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xuICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgIWRyYWdnaW5nSW5Hcm91cEFyZWEgfHxcbiAgICAgICAgICAgICAgICAgICAgKGNoaWxkLmlzX2dyb3VwYWJsZSAmJiBkcmFnZ2luZ0luR3JvdXBBcmVhKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWNoaWxkLmlzX2dyb3VwYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9iYW4uc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGNoaWxkSGVhZGVyUGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgY2hpbGQ/LmlzX2dyb3VwYWJsZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFJpZ2h0OiBwaW5uZWRSaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmxhdCBIZWFkZXIgfHwgU2luZ2xlIEhlYWRlciBDZWxsLS0+XG4gICAgPG5nLXRlbXBsYXRlICNmbGF0SGVhZGVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImdyb3VwLWNvbHVtbi13cmFwcGVyXCJcbiAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZSAmJiAhY29sWydpc1Jvd0dyb3VwZWQnXVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gRnVsbC1oZWlnaHQgSGVhZGVyIENlbGwgKHNwYW5zIDIgcm93cyB2aXN1YWxseSkgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzXCJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgICAgICAgIHNob3dDb2x1bW5zR3JvdXBpbmcgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxIC8gc3BhbiAyXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlLWhlYWRlcl09XCJjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENvbHVtbkluZGljZXMuaW5jbHVkZXMoY29sLmluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2wuaGVhZGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBoLTEwMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdGFibGUtaGVhZGVyXT1cImNvbD8uaXNfZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkLW9uLXRleHRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKTtcbiAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJjb2wub3JkZXJfYnlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8uZmllbGQgPT0gY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8IS0tIEFzY2VuZGluZyBTb3J0IEljb24gLS0+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREZXNjKGNvbClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIERlc2NlbmRpbmcgU29ydCBJY29uIC0tPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYydcIlxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtZGVzYy5zdmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRBc2MoY29sKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbCk7XG4gICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICAtKCFjb2w/LnBpbm5lZCA/IGNlbnRlclBpbm5lZEhlYWRlci5zY3JvbGxMZWZ0IDogMClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1RocmVlRG90c0ZpbHRlck9wZW5cbiAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0IC0gMTBcbiAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1lbnU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc05lc3RlZFRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXg6IGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb2xJbmRleDogMFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cImNvbC5waW5uZWQgPT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY29sKVwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxuICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplQ29sdW1uKCRldmVudCwgY29sKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBGaWx0ZXIgQ2VsbCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuZmlsdGVyVmFsdWVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoY29sKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkLXNlYXJjaC1pbnB1dF09XCJcbiAgICAgICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZUluRmlsdGVyUm93U2VhcmNoKCRldmVudCwgY29sKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5GaWx0ZXIoY29sKVwiXG4gICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWRdPVwiaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sKVwiXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXG4gICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxuICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgIHdpZHRoOiA3cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCAxNjMgMjMzKTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICAgICAgICB0b3A6IDEycHg7XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICA+PC9zcGFuXG4gICAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlckNlbGwgPT09IGNvbFwiXG4gICAgICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDk5XCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbD8ucGlubmVkID8gMCA6IC1jZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gQm9keSBDZWxsIFRlbXBsYXRlIC0tPlxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG5cbjxuZy10ZW1wbGF0ZVxuICAjcm93Q2VsbFxuICBsZXQtcm93XG4gIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXG4gIGxldC1pc0V2ZW49XCJpc0V2ZW5cIlxuICBsZXQtaXNPZGQ9XCJpc09kZFwiXG4gIGxldC1pc0xlZnRTZWN0aW9uPVwiaXNMZWZ0XCJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxuPlxuICA8IS0tIENoZWNrIGlmIHJvdyBpcyBhIGdyb3VwIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFJvd1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBkZXB0aDogMCB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2dyb3VwUm93VGVtcGxhdGUgbGV0LXJvdyBsZXQtZGVwdGg9XCJkZXB0aFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuaXNHcm91cDsgZWxzZSByZWd1bGFyUm93XCI+XG4gICAgICA8IS0tIEdyb3VwIEhlYWRlciAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJncm91cC1oZWFkZXItcm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2VjdGlvbiAhPT0gJ2NlbnRlcidcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PT0gJ2NlbnRlcidcbiAgICAgICAgICAgID8gKGNlbnRlclNjcm9sbGFibGVCb2R5Py5zY3JvbGxXaWR0aCA/PyAwKSArICdweCdcbiAgICAgICAgICAgIDogJzEwMCUnXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ2xlZnQnXCJcbiAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxXCJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTBweFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0IGp1c3RpZnktY29udGVudC1lbmQgcGUtMiBzLW5vXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxuICAgICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcbiAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSwgYXV0bydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cIm9uUm93TW91c2VPdmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY2hlY2tib3hlc0NvbG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBnZXRTdGFydEluZGV4KCkgKyAocm93Ll9fdmlydHVhbEluZGV4IC0gMSkgfHwgXCJcIiB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveGVzXCJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDUwcHhcIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxuICAgICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldEdyb3VwQ2hlY2tlZFN0YXRlKHJvdykgPT09IHRydWVcIlxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJnZXRHcm91cENoZWNrZWRTdGF0ZShyb3cpID09PSB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEdyb3VwUm93KCRldmVudCwgcm93KVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNlY3Rpb24gPT0gJ2NlbnRlcidcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwcy0yIGgtMTAwIGJvcmRlci1iZWxvd1wiXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCJkZXB0aCA+IDAgPyBkZXB0aCAqIDMwIDogMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGZpbHRlci1pY29uLXdyYXBwZXJcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKHJvdylcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBhbGlnbi1pdGVtcy1jZW50ZXIgZC1mbGV4XCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgcm93LmlzRXhwYW5kXG4gICAgICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKHJvdylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgIHt7IHJvdy5ncm91cFZhbHVlIH19ICh7eyBjb3VudExlYWZSb3dzKHJvdykgfX0pXG4gICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAncmlnaHQnXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gUmVjdXJzaXZlIENoaWxkcmVuIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWNoaWxkcmVuXCIgKm5nSWY9XCJyb3cuaXNFeHBhbmRcIiBbQHNsaWRlVG9nZ2xlXT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiByb3cuY2hpbGRyZW47IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNHcm91cDsgZWxzZSBkYXRhUm93XCI+XG4gICAgICAgICAgICA8IS0tIFJlY3Vyc2l2ZSBjYWxsIGZvciBuZXN0ZWQgZ3JvdXAgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgZ3JvdXBSb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGRlcHRoOiBkZXB0aCArIDEgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRhUm93PlxuICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRhdGEgcm93IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHJvd0NlbGw7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICBpc0V2ZW46IGkgJSAyID09PSAwLFxuICAgICAgICAgICAgICAgICAgaXNPZGQ6IGkgJSAyICE9PSAwLFxuICAgICAgICAgICAgICAgICAgaXNMZWZ0OiBpc0xlZnRTZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIFJlZ3VsYXIgcm93IChub3QgYSBncm91cCkgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjcmVndWxhclJvdz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDMwcHg7IGhlaWdodDogMTAwJVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiAoZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnKVxuICAgICAgICBcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgICBbY2xhc3Muc2VsZWN0ZWQtY2VsbF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxuICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbFJvd0V4cGFuZChyb3cpXCJcbiAgICAgICAgICAqbmdJZj1cInJvdz8uZGV0YWlsPy5yZXN1bHQ/Lmxlbmd0aCB8fCBncmlkVHlwZSA9PT0gJ1Rhc2tzJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZmlsdGVyLWljb24td3JhcHBlclwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiBncm91cGVkQ29sdW1ucz8ubGVuZ3RoID8gZ3JvdXBCb3hQYWRkaW5nIDogMFxuICAgICAgICBcIlxuICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXG4gICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgW2NsYXNzLmxhc3Qtcm93LXNlbGVjdGVkXT1cImxhc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXJvdyBoLTEwMFwiXG4gICAgICAgIFtjbGFzcy5ldmVuLXJvd109XCJpc0V2ZW5cIlxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXG4gICAgICAgIFtjbGFzcy5ob3ZlcmVkLXJvd109XCJob3ZlcmVkUm93SWQgPT09IChyb3cuX2lkIHx8IHJvdy5pZClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd0hvdmVyKHJvdylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcbiAgICAgID48L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXJvd1wiXG4gICAgICAgIFtjbGFzcy5ldmVuLXJvd109XCJpc0V2ZW5cIlxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXG4gICAgICAgIFtjbGFzcy5ob3ZlcmVkLXJvd109XCJob3ZlcmVkUm93SWQgPT09IChyb3cuX2lkIHx8IHJvdy5pZClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvblJvd0hvdmVyKHJvdylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93LCBpc0V2ZW4sIHNlY3Rpb24pXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBlLTIgcy1ub1wiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjU1XCJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd1NlcmlhbE51bWJlclwiXG4gICAgICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXG4gICAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJcbiAgICAgICAgICAgICd1cmwoJyArXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSwgYXV0bydcbiAgICAgICAgICBcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24ocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgICAobW91c2VvdmVyKT1cIm9uUm93TW91c2VPdmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRTdGFydEluZGV4KCkgKyAocm93Ll9fdmlydHVhbEluZGV4IC0gMSkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxuICAgICAgICAgICAgcm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWRSb3dzQmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICAgIDogY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclxuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94LWNlbGxcIlxuICAgICAgICAgICpuZ0lmPVwiaXNMZWZ0U2VjdGlvbiAmJiBzaG93Q2hlY2tib3hlc1wiXG4gICAgICAgICAgW2NsYXNzLmxlZnQtc2VsZWN0aW9uLWJvcmRlcl09XCJcbiAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxXCJcbiAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiXG4gICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4XCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTZWxlY3Rpb24ocm93KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBSZW5kZXIgYWxsIGNvbHVtbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucztcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcbiAgICAgICAgICAgIGxldCBjb2xJbmRleCA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aCA+IDA7IGVsc2UgZmxhdENvbHVtblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcbiAgICAgICAgICAgICAgICBsZXQgc3ViQ29sSW5kZXggPSBpbmRleFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQ/LmlzX3Zpc2libGUgJiYgIWNoaWxkPy5pc1Jvd0dyb3VwZWRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBjZWxsVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc3ViQ29sSW5kZXg6IHN1YkNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdENvbHVtbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgY29sSW5kZXg6IGNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbQHNsaWRlVG9nZ2xlXVxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAnbGVmdCcgJiYgaXNEZXRhaWxzRXhwYW5kZWQocm93KVwiXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcbiAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzUwcHg7IG92ZXJmbG93OiBoaWRkZW5cIlxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJoYXNIb3Jpem9udGFsU2Nyb2xsID8gMzM5IDogMzQxXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XG4gICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIFtAc2xpZGVUb2dnbGVdXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdjZW50ZXInICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlscyBjZW50ZXItc2VjdGlvblwiXG4gICAgICBzdHlsZT1cIlxuICAgICAgICBtYXgtaGVpZ2h0OiAzNTBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICBcIlxuICAgICAgI25lc3RlZFRhYmxlXG4gICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgIGhhc1JpZ2h0UGlubmVkQ29sdW1uc1xuICAgICAgICAgID8gJzEwMCUnXG4gICAgICAgICAgOiBoYXNWZXJ0aWNhbFNjcm9sbFxuICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDEycHgpJ1xuICAgICAgICAgIDogJzEwMCUnXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuZXN0ZWRUYWJsZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkVHlwZSA9PSAnVGFza3MnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgdGFza01hbmFnZW1lbnRUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFza0RldGFpbHM6IHJvdyB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBbQHNsaWRlVG9nZ2xlXVxuICAgICAgKm5nSWY9XCJzZWN0aW9uID09PSAncmlnaHQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxuICAgICAgY2xhc3M9XCJhY2NvcmRpb24tZGV0YWlsc1wiXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGxlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyO1xuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEFjdHVhbCBDZWxsIGlzIEhlcmUgLS0+XG48bmctdGVtcGxhdGVcbiAgI2NlbGxUZW1wbGF0ZVxuICBsZXQtY29sPVwiY29sXCJcbiAgbGV0LXJvdz1cInJvd1wiXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXG4gIGxldC1zdWJDb2xJbmRleD1cInN1YkNvbEluZGV4XCJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICBsZXQtY29sSW5kZXg9XCJjb2xJbmRleFwiXG4gIGxldC1pc1RvdGFsUm93PVwiaXNUb3RhbFJvd1wiXG4+XG4gIDxkaXZcbiAgICAjY2VsbENvbnRhaW5lclxuICAgIChjbGljayk9XCJyb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTsgZWRpdGluZ0tleSA9ICcnOyBjZWxsU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleCk7IGNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpXCJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJib2R5Rm9udFdlaWdodFwiXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxuICAgIGNsYXNzPVwiY2VsbCBvdmVyZmxvdy12aXNpYmxlIHBvc2l0aW9uLXJlbGF0aXZlIGRhdGEtZ3JpZC1jZWxsXCJcbiAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgIFthdHRyLmxvY2F0aW9uXT1cInJvdy5fX3ZpcnR1YWxJbmRleCArICctJyArIGNvbC5pbmRleFwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXG4gICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcbiAgICBbY2xhc3MuYWN0aXZlLWNlbGxdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPD0gMSAmJiAgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNBY3RpdmVDZWxsKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleCkgJiYgIWlzRWRpdGluZyhyb3csIGNvbClcIlxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBlbmFibGVFZGl0KHJvdywgY29sLCBmYWxzZSwgY2VsbENvbnRhaW5lcilcIlxuICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZW5hYmxlRWRpdChyb3csIGNvbClcIlxuICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1NlbGVjdGVkKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy50b3AtYm9yZGVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1RvcEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICBbY2xhc3MuYm90dG9tLWJvcmRlcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNCb3R0b21Cb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLmxlZnQtYm9yZGVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc0xlZnRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLnJpZ2h0LWJvcmRlcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNSaWdodEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbC5pbmRleCwgc3ViQ29sSW5kZXgpXCJcbiAgICBbY2xhc3MudG9wLWxlZnQtY29ybmVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc1RvcExlZnRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLnRvcC1yaWdodC1jb3JuZXJdPVwiIWlzVG90YWxSb3cgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRDZWxscy5sZW5ndGggPiAxICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLmlzVG9wUmlnaHRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2wuaW5kZXgsIHN1YkNvbEluZGV4KVwiXG4gICAgW2NsYXNzLmJvdHRvbS1sZWZ0LWNvcm5lcl09XCIhaXNUb3RhbFJvdyAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDEgJiYgY2VsbFNlbGVjdGlvblNlcnZpY2UuaXNCb3R0b21MZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIFtjbGFzcy5ib3R0b20tcmlnaHQtY29ybmVyXT1cIiFpc1RvdGFsUm93ICYmIGNlbGxTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID4gMSAmJiBjZWxsU2VsZWN0aW9uU2VydmljZS5pc0JvdHRvbVJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgIChtb3VzZWRvd24pPVwiY2VsbFNlbGVjdGlvblNlcnZpY2Uuc3RhcnRTZWxlY3Rpb24ocm93LCBjb2wsIHN1YkNvbEluZGV4LCAkZXZlbnQpOyBjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAobW91c2VlbnRlcik9XCJjZWxsU2VsZWN0aW9uU2VydmljZS5leHRlbmRTZWxlY3Rpb24ocm93LCBjb2wsIHN1YkNvbEluZGV4LCAkZXZlbnQpOyBjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAobW91c2V1cCk9XCJjZWxsU2VsZWN0aW9uU2VydmljZS5lbmRTZWxlY3Rpb24oKTsgY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxuICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXG4gICAgXG4+XG5cbiAgICA8IS0tICAobW91c2Vkb3duKT1cInN0YXJ0U2VsZWN0aW9uKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZCwgJGV2ZW50KVwiXG4gIChtb3VzZWVudGVyKT1cImV4dGVuZFNlbGVjdGlvbihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCA/PyAwLCBjb2wuZmllbGQsICRldmVudClcIlxuICAobW91c2V1cCk9XCJlbmRTZWxlY3Rpb24oKVwiXG4gIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cImlzU2VsZWN0ZWQocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZClcIiAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRhYmxlLWNlbGxcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1mb3ItZWRpdGluZ109XCJcbiAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxuICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwIHx8IGNvbC50eXBlID09ICdpbWFnZScpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgaXNFZGl0aW5nKHJvdywgY29sKSAmJlxuICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHwgY29sLnR5cGUgPT0gJ2ltYWdlJyB8fFxuICAgICAgICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPD0gNTAgJiZcbiAgICAgICAgICAgICAgICAhZXhwYW5kZWRDZWxscy5zaXplKSk7XG4gICAgICAgICAgZWxzZSB2aWV3TW9kZVxuICAgICAgICBcIlxuICAgICAgPlxuXG4gICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jZWxsRWRpdG9yOyBlbHNlIGJ1aWx0SW5FZGl0b3JzXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbY2VsbEVkaXRvcl09XCJjb2wuY2VsbEVkaXRvclwiXG4gICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93XCJcbiAgICAgICAgICAgICAgICBbY29sRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgICAgICAoZWRpdG9yRXZlbnQpPVwiZmluaXNoRWRpdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNidWlsdEluRWRpdG9ycz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sPy50eXBlXCI+XG4gICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2lucHV0J1wiXG4gICAgICAgICAgICAjZGF0ZUlucHV0PVwibmdNb2RlbFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgZGF0ZUlucHV0KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBkYXRlSW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBkYXRlSW5wdXQpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPCEtLSBOdW1iZXIgSW5wdXQgLS0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICNudW1iZXJJbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgI251bWJlclJlZlxuICAgICAgICAgICAgKGtleXByZXNzKT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sLCBudW1iZXJJbnB1dClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBudW1iZXJJbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIG51bWJlcklucHV0KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz4gIFxuXG4gICAgICAgICAgPCEtLSBEYXRlIElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIlxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGRhdGVJbnB1dClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGRhdGVJbnB1dClcIlxuICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgI2RhdGVJbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYmx1cklucHV0KCRldmVudCwgcm93LCBjb2wpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBkYXRlSW5wdXQuaW52YWxpZCB8fCAhaXNWYWx1ZVZhbGlkKHJvdywgY29sLCBkYXRlSW5wdXQpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8IS0tIERhdGUgSW5wdXQgLS0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiXG4gICAgICAgICAgICB0eXBlPVwidGltZVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGltZUlucHV0KVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAjdGltZUlucHV0PVwibmdNb2RlbFwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IHRpbWVJbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIHRpbWVJbnB1dClcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCIgY2xhc3M9XCJ3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gOFwiIFtzdHlsZS50ZXh0LWFsaWduXT1cIidsZWZ0J1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIlxuICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiMjBcIlxuICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjIwXCJcbiAgICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCIyMFwiXG4gICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT09IHRydWUgfHwgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID09PSAndHJ1ZSdcIlxuICAgICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGJvb2xlYW5JbnB1dClcIlxuICAgICAgICAgICAgICAgI2Jvb2xlYW5JbnB1dD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGJvb2xlYW5JbnB1dC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIGJvb2xlYW5JbnB1dClcbiAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgIDwhLS0gSW1hZ2UgVXBsb2FkIC0tPlxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZSdcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGFuZ2UoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAqbmdJZj1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICAgIFtzcmNdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgICAgYWx0PVwicHJldmlld1wiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMzJcIlxuICAgICAgICAgICAgICBoZWlnaHQ9XCIzMlwiXG4gICAgICAgICAgICAgIHN0eWxlPVwib2JqZWN0LWZpdDogY292ZXI7IGJvcmRlci1yYWRpdXM6IDRweFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cbiAgICAgICAgICA8IS0tIG5nLXNlbGVjdCBsaWtlIGRyb3Bkb3duIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gdy0xMDBcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFRyaWdnZXIgLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gdGV4dC1zdGFydCB3LTEwMCB0ZXh0LWVsbGlwc2lzIGRyb3Bkb3duLWVkaXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgICAgZGF0YS1icy1kaXNwbGF5PVwic3RhdGljXCJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkRyb3Bkb3duS2V5RG93bigkZXZlbnQsIHJvdywgY29sKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXREcm9wZG93bkNlbGxUZXh0KHJvdywgY29sKTsgZWxzZSBwbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIHt7IGdldERyb3Bkb3duQ2VsbFRleHQocm93LCBjb2wpIH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1wbGFjZWhvbGRlclwiPlNlbGVjdCBhbiBvcHRpb24uLi48L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSB3LTEwMCBwLTAgY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUgcm91bmRlZC0zXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0gU2VhcmNoIC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0xIGVkaXRpbmctZHJvcGRvd24tc2VhcmNoLWlucHV0XCIgKm5nSWY9XCJjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID4gNVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluRHJvcGRvd25TZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFxuICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzVcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlIHwgZmlsdGVyOiBlZGl0aW5Ecm9wZG93blNlYXJjaCA6ICd2YWx1ZScpIGFzIGZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPCEtLSBEcm9wZG93biBJdGVtcyAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uPy52YWx1ZSB8fCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0yIHB5LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBkcm9wZG93bi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldE5lc3RlZFZhbHVlKHJvdywgY29sLCBvcHRpb24sIHRydWUpOyBlZGl0aW5nS2V5ID0gbnVsbDsgZm9jdXNBZnRlclZhbHVlU2VsZWN0KHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sLmluZGV4LCBzdWJDb2xJbmRleClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNvbC5maWVsZCArICctJyArIChvcHRpb24udmFsdWUgfHwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfHwgb3B0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IHdoZW4gbm8gZmlsdGVyZWQgcmVzdWx0cyAtLT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnM/Lmxlbmd0aFwiIGNsYXNzPVwicHgtMiBweS0xIGQtYmxvY2sgdGV4dC1jZW50ZXJcIj5ObyBSZWNvcmQgRm91bmQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvciBBcnJheSB0eXBlIHZhbHVlcyAtLT5cblxuICAgICAgICAgIDwhLS0gTVVMVEkgU0VMRUNUIChBUlJBWSkgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidhcnJheSdcIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biB3LTEwMFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25BcnJheUJsdXIocm93LCBjb2wpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNvbW1pdEFycmF5KHJvdywgY29sKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBUcmlnZ2VyIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSB0ZXh0LXN0YXJ0IHctMTAwIHRleHQtZWxsaXBzaXNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgIGRhdGEtYnMtZGlzcGxheT1cInN0YXRpY1wiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRBcnJheVRlbXAocm93LCBjb2wpLmxlbmd0aDsgZWxzZSBhcnJheVBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkaXNwbGF5QXJyYXlMYWJlbHMocm93LCBjb2wpIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FycmF5UGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgU2VsZWN0IG9wdGlvbnMuLi5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSB3LTEwMCBwLTAgY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUgcm91bmRlZC0zXCIgW2NsYXNzLmludmlzaWJsZV09XCIhbWVudVJlYWR5XCIgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxuICAgICAgICAgICAgICA8IS0tIFNlYXJjaCAtLT5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGggPiA1XCIgY2xhc3M9XCJweC0yIHB5LTEgYXJyYXktc2VhcmNoLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5Ecm9wZG93blNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBPcHRpb25zIC0tPlxuICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMzVcIiBzdHlsZT1cImhlaWdodDogMTIwcHhcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgfCBmaWx0ZXI6IGVkaXRpbkRyb3Bkb3duU2VhcmNoIDogJ3ZhbHVlJykgYXMgZmlsdGVyZWRPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcHgtMiBweS0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbS0wIG1lLTJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQXJyYXlTZWxlY3RlZChyb3csIGNvbCwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBcnJheVRlbXAocm93LCBjb2wsIG9wdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgY29tbWl0QXJyYXkocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7IG1heC13aWR0aDogMTZweDsgbWF4LWhlaWdodDogMTZweFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbj8udmFsdWUgfHwgb3B0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPCEtLSBTaG93IHdoZW4gZmlsdGVyZWQgbGlzdCBpcyBlbXB0eSAtLT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnM/Lmxlbmd0aFwiIGNsYXNzPVwicHgtMiBweS0xIGQtYmxvY2sgdGV4dC1jZW50ZXJcIj5ObyBSZWNvcmQgRm91bmQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidlbWFpbCdcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgICAgICNlbWFpbE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAjZW1haWxJbnB1dFxuICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgcGF0dGVybj1cIl5bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSRcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGVtYWlsTW9kZWwpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImJsdXJJbnB1dCgkZXZlbnQsIHJvdywgY29sKVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZW1haWxNb2RlbC5pbnZhbGlkIHx8ICFpc1ZhbHVlVmFsaWQocm93LCBjb2wsIGVtYWlsTW9kZWwpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb2w/LmlzX3JlcXVpcmVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDwhLS0gRGVmYXVsdCBmYWxsYmFjayAtLT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICpuZ1N3aXRjaERlZmF1bHRcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXG4gICAgICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAjdGV4dElucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJibHVySW5wdXQoJGV2ZW50LCByb3csIGNvbClcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcIlxuICAgICAgICAgICAgbmFtZT1cInt7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGV4dE1vZGVsKVwiXG4gICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWQgfHwgIWlzVmFsdWVWYWxpZChyb3csIGNvbCwgdGV4dE1vZGVsKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sPy5pc19yZXF1aXJlZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEaXNwbGF5IG1vZGUgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI3ZpZXdNb2RlPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzZXMoY29sLCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gRmllbGQgaWNvbiAoZm9yIFRhc2tzIGdyaWQpIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT09ICdUYXNrcycgJiYgaWNvbk1hcFtjb2wuZmllbGRdICYmICFpc1RvdGFsUm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1lLTJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiaWNvbk1hcFtjb2wuZmllbGRdKHJvdywgY29sKVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSDinIUgQ3VzdG9tIGNlbGwgcmVuZGVyZXIgc3VwcG9ydCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNlbGxSZW5kZXJlciAmJiAhaXNUb3RhbFJvdzsgZWxzZSBkZWZhdWx0Q2VsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICBbY2VsbFJlbmRlckluaXRdPVwiY29sLmNlbGxSZW5kZXJlclwiXG4gICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgIFtjZWxsVmFsdWVdPVwiZ2V0TmVzdGVkVmFsdWUocm93LCBjb2w/LmZpZWxkKVwiXG4gICAgICAgICAgICAgIChjZWxsRXZlbnQpPVwib25DZWxsRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0g8J+nviBEZWZhdWx0IHRleHQtYmFzZWQgY2VsbCByZW5kZXJpbmcgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgI2NlbGxUZXh0XG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1lbGxpcHNpcyBmbGV4LWdyb3ctMVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJnZXRDZWxsVGl0bGUocm93LCBjb2wpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSBOb3JtYWwgY2VsbCAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb2w/LnR5cGUgIT09ICdpbWFnZScgJiZcbiAgICAgICAgICAgICAgICAgIGNvbD8uZmllbGQgIT0gJ2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgY29sPy5maWVsZCAhPSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgIWlzVG90YWxSb3dcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5pc19hbW91bnRcIj57e1xuICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2xcbiAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIHt7Z2V0Q2VsbFRpdGxlKHJvdywgY29sKX19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gVG90YWwgcm93IC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUb3RhbFJvd1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldFRvdGFsQW1vdW50KGNvbCkgfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBJbnZvaWNlIEltYWdlIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmZpZWxkID09ICdpbnZvaWNlLmludm9pY2VfaW1hZ2UnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHpvb206IDAuN1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgfHwgJ0F0dGFjaG1lbnQnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSlcIlxuICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvZG9jdW1lbnQtaWNvbnMvJyArXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RXh0ZW50aW9uKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICcuc3ZnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBJbWFnZSBjZWxsIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdpbWFnZScgJiYgIWlzVG90YWxSb3dcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyByb3c6IHJvdywgY29sOiBjb2wgfVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKCFjb2w/LmNlbGxSZW5kZXJlciAmJiBzaG93Q2VsbERldGFpbHNCb3ggJiZcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDUwICYmIGNvbD8udHlwZSAhPT0gJ2ltYWdlJykgfHxcbiAgICAgICAgICAgICAgKGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkgJiZcbiAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lmxlbmd0aCA+IDEpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbXMtMiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICBpc0V4cGFuZGVkKHJvdywgY29sKVxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICB0b2dnbGVFeHBhbmRPZkxvbmdDZWxsVGV4dChyb3csIGNvbCwgY29sdW1ucywgZmFsc2UpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8IS0tIEV4cGFuZCAvIENvbGxhcHNlIGljb24gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRXhwYW5kZWQgdGV4dCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgZXhwYW5kZWQtYm94XCJcbiAgICAgICAgICAqbmdJZj1cImlzRXhwYW5kZWQocm93LCBjb2wpXCJcbiAgICAgICAgICBbc3R5bGUuekluZGV4XT1cImdldFpJbmRleChyb3csIGNvbClcIlxuICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyBsZWZ0OiAwXCJcbiAgICAgICAgICBbYXR0ci5pZF09XCIocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgKGNvbC5pZCB8fCBjb2wuX2lkKVwiXG4gICAgICAgICAgW2NsYXNzLmludmlzaWJsZV09XCIhc2hvd0RldGFpbHNCb3hcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgZnVsbFRleHRUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgIGNvbDogY29sLFxuICAgICAgICAgICAgICAgIGlzQXJyYXk6IGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEhlYWRlcnMgQWN0aW9uIExpc3QgT24gY2xpY2tpbmcgdGhyZWUgZG90cyAtLT5cblxuPG5nLXRlbXBsYXRlXG4gICNjb2x1bW5NZW51XG4gIGxldC1jb2w9XCJjb2xcIlxuICBsZXQtaXNOZXN0ZWRUYWJsZT1cImlzTmVzdGVkVGFibGVcIlxuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxuICBsZXQtY29sdW1uSW5kZXg9XCJjb2x1bW5JbmRleFwiXG4gIGxldC1jaGlsZENvbEluZGV4PVwiY2hpbGRDb2xJbmRleFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbHVtbi1tZW51IHRocmVlLWRvdHMtY29sLW1lbnVcIlxuICAgIFtjbGFzcy52aXN1YWxseS1oaWRkZW5dPVwiaXNNZW51ZUhpZGRlblwiXG4gICAgKm5nSWY9XCJhY3RpdmVDb2wgJiYgIWlzVGhyZWVEb3RzRmlsdGVyT3BlblwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxuICA+XG4gICAgPCEtLSBTb3J0IEFzY2VuZGluZyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWJlbG93IHBiLTJcIiBbY2xhc3MuZGlzYWJsZS1zb3J0aW5nXT1cIiFjb2wuaXNfc29ydGFibGVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dCBmcy03XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTJweFwiPlNvcnQ8L3NwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0FzY2VuZGluZyAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdkZXNjJylcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cInNvcnRBc2MoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy11cC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgU29ydCBBc2NlbmRpbmdcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNvcnQgRGVzY2VuZGluZyAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93RGVzY2VuZGluZyAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09ICdhc2MnKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwic29ydERlc2MoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1kb3duLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICBTb3J0IERlc2NlbmRpbmdcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc29ydGluZ0NvbmZpZz8uZmllbGQgPT09IGNvbC5maWVsZCAmJlxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2FzYycgfHxcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnZGVzYycpXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAgIChjbGljayk9XCJyZXNldFNvcnQoYWN0aXZlQ29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIFJlc2V0IFNvcnRcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvdyB0aHJlZS1kb3RzLWZpbHRlclwiIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiY29sPy50eXBlID09ICdpbWFnZScgfHwgIWNvbC5pc19zZWFyY2hfYWJsZVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dGaWx0ZXJcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW0gdGhyZWUtZG90cy1maWx0ZXJcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY29sKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgRmlsdGVyXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvd1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0IGZzLTdcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMnB4XCI+UGluPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5sZWZ0ICYmIGNvbD8ucGlubmVkICE9PSAnbGVmdCdcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXG4gICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWxlZnQuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW5cbiAgICAgICAgPlBpbiBMZWZ0XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5yaWdodCAmJiBjb2w/LnBpbm5lZCAhPT0gJ3JpZ2h0J1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICBpc05lc3RlZFRhYmxlLFxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Bpbi1yaWdodC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgID48L3NwYW5cbiAgICAgICAgPlBpbiBSaWdodFxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxuICAgICAgICAgICAgYWN0aXZlQ29sLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGlzTmVzdGVkVGFibGUsXG4gICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9sYXlvdXQtdGhyZWUtY29sdW1ucy5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3BhblxuICAgICAgICA+VW5waW5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93QXV0b3NpemVUaGlzQ29sdW1uXCJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAoY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oYWN0aXZlQ29sKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtZXhwYW5kLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICBBdXRvc2l6ZSBUaGlzIENvbHVtblxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBdXRvc2l6ZSBBbGwgQ29sdW1ucyAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dBdXRvc2l6ZUFsbENvbHVtbnNcIlxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUFsbENvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtYW5nbGUtZXhwYW5kLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuXG4gICAgICA+QXV0b3NpemUgQWxsIENvbHVtbnNcbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gR3JvdXAgQnkgLS0+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaG93Um93c0dyb3VwaW5nXCJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXG4gICAgICAoY2xpY2spPVwiZ3JvdXBCeShhY3RpdmVDb2wpXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlLXNvcnRpbmddPVwiIWNvbC5pc19ncm91cGFibGVcIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGlhZ3JhbS0zLnN2ZydcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICBHcm91cCBieSB7eyBjb2wuaGVhZGVyIH19XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENob29zZSBDb2x1bW5zIC0tPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Nob3NlQ29sdW1uc1wiXG4gICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxuICAgICAgKGNsaWNrKT1cImNob29zZUNvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy91aS1jaGVja3MtZ3JpZC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuPlxuICAgICAgQ2hvb3NlIENvbHVtbnNcbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmVzZXQgQ29sdW1ucyAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dSZXNldENvbHVtbnNcIlxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcbiAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1jb3VudGVyY2xvY2t3aXNlLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICA+PC9zcGFuXG4gICAgICA+UmVzZXQgQ29sdW1uc1xuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIEBzbGlkZVRvZ2dsZVxuICAgICpuZ0lmPVwiaXNUaHJlZURvdHNGaWx0ZXJPcGVuICYmIGNvbD8uaXNfc2VhcmNoX2FibGVcIlxuICAgIGNsYXNzPVwidGhyZWUtZG90cy1jb2wtbWVudSBwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgW3N0eWxlLnJpZ2h0LnB4XT1cImdldER5bmFtaWNSaWdodChjb2wsIHNlY3Rpb24sIGNvbHVtbkluZGV4LCBjaGlsZENvbEluZGV4KVwiXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcbiAgPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5maWx0ZXJSZW5kZXJlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItbWVudS1jb250YWluZXIgZmlsdGVyLW1lbnUgcC0wXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW2NlbGxSZW5kZXJJbml0XT1cImNvbC5maWx0ZXJSZW5kZXJlclwiXG4gICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgIChjZWxsRXZlbnQpPVwib25DZWxsRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb250ZXh0XT1cImdyaWRDb250ZXh0XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbD8uZmlsdGVyUmVuZGVyZXJcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRmlsdGVyIE1lbnVlIC0tPlxuPG5nLXRlbXBsYXRlICNmaWx0ZXJNZW51IGxldC1jb2w9XCJjb2xcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmlsdGVyLW1lbnUtY29udGFpbmVyIGZpbHRlci1tZW51XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXG4gICAgKm5nSWY9XCIhY29sPy5maWx0ZXJSZW5kZXJlclwiXG4gID5cbiAgICA8IS0tIERyb3Bkb3duIFR5cGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT09ICdhcnJheSc7IGVsc2UgdGV4dEZpbHRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1zZWN0aW9uIHAtMVwiPlxuXG4gICAgPCEtLSBTZWFyY2ggaW5wdXQgLS0+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAvPlxuXG4gICAgPCEtLSBGaWx0ZXIgKyBSZXN1bHQgSGFuZGxpbmcgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcbiAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJykgYXMgZmlsdGVyZWRPcHRpb25zXG4gICAgICBcIlxuICAgID5cbiA8IS0tIENoZWNrIGlmIGNvbHVtbl9kcm9wZG93bl92YWx1ZSBleGlzdHMgYW5kIGhhcyBkYXRhIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoOyBlbHNlIG5vRHJvcGRvd25EYXRhXCI+XG4gICAgICA8IS0tIERBVEEgRk9VTkQgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgZWxzZSBub0RhdGFGb3VuZFwiPlxuXG4gICAgICAgIDwhLS0gU2VsZWN0IEFsbCAob25seSB3aGVuIGRhdGEgZXhpc3RzKSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtdC0yIG1zLTEgc2VsZWN0LWFsbC1maWx0ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID8/IDApID09PVxuICAgICAgICAgICAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGggPz8gMClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcz8uc2l6ZSA/PyAwKSA+IDAgJiZcbiAgICAgICAgICAgICAgICAoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID8/IDApIDxcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID8/IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiPlxuICAgICAgICAgICAgU2VsZWN0IEFsbFxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVmlydHVhbCBTY3JvbGwgLS0+XG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgICBpdGVtU2l6ZT1cIjMyXCJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci12aWV3cG9ydFwiXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxuICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2lkXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvbilcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihvcHRpb24pXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIlxuICAgICAgICAgICAgICBbZm9yXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uPy5uYW1lID8/IG9wdGlvbikgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBOTyBEQVRBIEZPVU5EIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGFGb3VuZD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0yXCJcbiAgICAgICAgICAqbmdJZj1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAgICAgPlxuICAgICAgICAgIE5vIFJlY29yZCBGb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBOTyBEUk9QRE9XTiBEQVRBIEFWQUlMQUJMRSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub0Ryb3Bkb3duRGF0YT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0zIG1iLTNcIj5cbiAgICAgICAgICAgICBObyBSZWNvcmQgRm91bmRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGN1c3RvbS1zZWxlY3RcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdENvbmRpdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkYXRlJyB8fCBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAndGltZSdcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkdyZWF0ZXIgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxlc3NfdGhlbl9lcXVhbFwiPmxlc3MgdGhlbiBFcXVhbCB0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFt0eXBlXT1cImNvbD8udHlwZSA9PSAnc3RyaW5nJyA/ICd0ZXh0JyA6IGNvbD8udHlwZVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmFsdWVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlyc3RWYWx1ZVwiXG4gICAgICAgICAgI2ZpbHRlck1lbnVlVGV4dGNoSW5wdXRcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXG4gICAgICAgICAgICAgIGlkPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJhbmRfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgPkFORDwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JcIlxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBpZD1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgICAgICAgPk5vbmU8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IEBzbGlkZVRvZ2dsZSAqbmdJZj1cImZpcnN0VmFsdWUgJiYgY29uZGl0aW9uICE9ICdub25lJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZGF0ZScgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkxlc3MgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxlc3NfdGhlbl9lcXVhbFwiPmxlc3MgdGhlbiBFcXVhbCB0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJncmVhdGVyX3RoZW5fZXF1YWxcIj5HcmVhdGVyIHRoZW4gRXF1YWwgdG8gPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbdHlwZV09XCJjb2w/LnR5cGUgPT0gJ3N0cmluZycgPyAndGV4dCcgOiBjb2w/LnR5cGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWNvbmQgVmFsdWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBBY3Rpb25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcbiAgICAgID5cbiAgICAgICAgQXBwbHlcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzBweFwiXG4gICAgICAgIChjbGljayk9XCJyZXNldFNpZGVGaWx0ZXIoY29sKVwiXG4gICAgICA+XG4gICAgICAgIFJlc2V0XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNpZGUgTWVudWUgLS0+XG5cbjwhLS0gQ29sdW1uIFBhbm5lbCAvIFBpdm90IE1vZGUgLyBTZWFyY2hpbmcgLS0+XG5cbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFubmVsPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxuICAgIDwhLS0gUGl2b3QgVG9nZ2xlIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcGl2b3QtbW9kZSBweC01IG1zLTIgZC1ub25lXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBpZD1cInBpdm90VG9nZ2xlXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwaXZvdE1vZGVcIlxuICAgICAgLz5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJwaXZvdFRvZ2dsZVwiPlBpdm90IE1vZGU8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWxlY3QgQWxsICYgU2VhcmNoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTIgcHgtMyBtdC0zXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgYWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgOiBhY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsQWNjb3JkaW9ucygpXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjb2x1bW5zLi4uXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VwYXJhdG9yIC0tPlxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUmlnaHQgQ29sdW1ucyBNZW51ZSAtLT5cblxuPCEtLSBDb2x1bW4gUGFuZWwgSXRlbSBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFuZWxJdGVtIGxldC1jb2w9XCJjb2xcIj5cbiAgPCEtLSBHcm91cCBDb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3Mucm90YXRlXT1cImNvbC5leHBhbmRlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZCA9ICFjb2wuZXhwYW5kZWRcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgW2lkXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXG4gICAgICAgIFtjaGVja2VkXT1cImlzQ29sdW1uVmlzaWJsZShjb2wpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVHcm91cFZpc2liaWxpdHkoY29sKVwiXG4gICAgICAvPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxuICAgICAgICBbZm9yXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImNvbC5leHBhbmRlZFwiIGNsYXNzPVwicHMtNFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCIgc3R5bGU9XCJ3aWR0aDogMS41cmVtXCI+PC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuaXNfdmlzaWJsZVwiXG4gICAgICAgIFtpZF09XCInY29sXycgKyBjb2wuZmllbGRcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2lkZU1lbnVDb2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgpXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1lLTJcIlxuICAgICAgPjwvc3Bhbj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXG4gICAgICAgIFtmb3JdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIENvbHVtbnMgU2lkZSBGaWx0ZXIgLS0+XG48bmctdGVtcGxhdGUgI3NpZGVGaWx0ZXJzPlxuICA8ZGl2IGNsYXNzPVwicHktMyBweC0yIHBlLTMgaC0xMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgOiBmaWx0ZXJBY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gc2lkZS1maWx0ZXItY29sdW1ucy13cmFwcGVyXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMCUgLSA3MHB4KTsgc2Nyb2xsYmFyLXdpZHRoOiB0aGluXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNvbHVtblNlYXJjaCA6ICdoZWFkZXInO1xuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJQYW5uZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZpbHRlclBhbm5lbEl0ZW0gbGV0LWNvbD1cImNvbFwiPlxuICA8IS0tIEdyb3VwIENvbHVtbiAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jaGlsZHJlbj8ubGVuZ3RoXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2x1bW4tZ3JvdXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCJcbiAgICAgICpuZ0lmPVwiY29sPy50eXBlICE9PSAnaW1hZ2UnXCJcbiAgICA+XG4gICAgICA8IS0tIENoZXZyb24gdG9nZ2xlIC0tPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBHcm91cCBsYWJlbCB0b2dnbGUgLS0+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgID57eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IG1zLTFcIlxuICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGggfHwgY29sPy5xdWVyeT8uX2ZpcnN0X3ZhbHVlXCJcbiAgICAgICAgICAgID4qPC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGlsZHJlbiBjb2x1bW5zIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIiBjbGFzcz1cInBzLTRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlclBhbm5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjaGlsZCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTGVhZiBDb2x1bW4gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCIgKm5nSWY9XCJjb2w/LnR5cGUgIT09ICdpbWFnZSdcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwibWUtMiBmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIlxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wIHctMTAwXCJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwiY29sLmV4cGFuZGVkRmlsdGVyID0gIWNvbC5leHBhbmRlZEZpbHRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZSBmdy1ib2xkXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNob3cgZmlsdGVyIHdoZW4gZXhwYW5kZWQgLS0+XG4gICAgPGRpdiBbQHNsaWRlVG9nZ2xlXSAqbmdJZj1cImNvbC5leHBhbmRlZEZpbHRlclwiIGNsYXNzPVwicHMtNCBwZS0zXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU5lc3RlZEZpbHRlcjsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNpZGUgTmVzdGVkIEZpbHRlcnMgLS0+XG48bmctdGVtcGxhdGUgI3NpZGVOZXN0ZWRGaWx0ZXIgbGV0LWNvbD1cImNvbFwiPlxuICA8ZGl2IGNsYXNzPVwiXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnYXJyYXknOyBlbHNlIHRleHRGaWx0ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTFcIj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTJcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2hcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXG4gICAgICAgICAgICAgIHwgZmlsdGVyIDogc2lkZU5lc3RlZEZpbHRlclNlYXJjaCA6ICd2YWx1ZScpIGFzIGZpbHRlcmVkT3B0aW9uc1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgZWxzZSBub0RhdGFGb3VuZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xIHNlbGVjdC1hbGwtZmlsdGVyXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8ubGVuZ3RoID09IGNvbD8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIihjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aCAhPT0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lmxlbmd0aCAmJiBjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aClcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCI+XG4gICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzJcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTFcIlxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbC5xdWVyeT8uX2lkcz8uaW5jbHVkZXMob3B0aW9uPy5faWQgfHwgb3B0aW9uPy5pZCB8fCBvcHRpb24pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvblRvZ2dsZShjb2wsIG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJvcHRpb25fe3sgY29sLmZpZWxkIH19X3t7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uXG4gICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JdPVwiXG4gICAgICAgICAgICAgICAgICAgICdvcHRpb25fJyArXG4gICAgICAgICAgICAgICAgICAgIGNvbC5maWVsZCArXG4gICAgICAgICAgICAgICAgICAgICdfJyArXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgKG9wdGlvbi52YWx1ZSB8fCBvcHRpb24pIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhRm91bmQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBtdC0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaWRlTmVzdGVkRmlsdGVyU2VhcmNoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTm8gUmVjb3JkIEZvdW5kXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGV4dC1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnc3RyaW5nJ1wiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XG4gICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdkYXRlJyB8fCBjb2w/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+RlZcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+TGVzcyBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5HcmVhdGVyIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyZWF0ZXJfdGhlbl9lcXVhbFwiPkdyZWF0ZXIgdGhlbiBFcXVhbCB0byA8L29wdGlvbj5GVlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFt0eXBlXT1cImNvbD8udHlwZSA9PSAnZGF0ZScgPyAnZGF0ZScgOiAoY29sPy50eXBlID09ICdudW1iZXInID8gJ251bWJlcic6ICd0ZXh0JylcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkhLmZpcnN0X3ZhbHVlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93IG11dGVkXCJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JcIlxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXG4gICAgICAgICAgICAgIGlkPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cIm5ub25lbS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIlxuICAgICAgICAgICAgICBmb3I9XCJub25lX3t7IGNvbC5maWVsZCB9fVwiXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgY29sPy5xdWVyeT8uY29uZGl0aW9uICE9PSAnbm9uZSdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LnNlY29uZF9jb25kaXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlID09ICdkYXRlJyB8fCBjb2w/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8udHlwZSA9PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5MZXNzIFRoZW4gPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+R3JlYXRlciBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJsZXNzX3RoZW5fZXF1YWxcIj5sZXNzIHRoZW4gRXF1YWwgdG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZ3JlYXRlcl90aGVuX2VxdWFsXCI+R3JlYXRlciB0aGVuIEVxdWFsIHRvIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiY29sPy50eXBlID09ICdkYXRlJyA/ICdkYXRlJyA6ICd0ZXh0J1wiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlY29uZCBWYWx1ZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuc2Vjb25kX3ZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCIgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiPmFwcGx5PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogMjJweDtcIiAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCI+cmVzZXQ8L2Rpdj5cblxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgYm9yZGVyLXRvcFwiXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVtb3ZlU2lkZUZpbHRlcihjb2wpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+Q2xlYXI8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogMzBweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5U2lkZUZpbHRlcihjb2wpXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIihjb2w/LnF1ZXJ5LmNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUpXCJcbiAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiKGNvbCE/LnF1ZXJ5LmNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tdG9wOiAtMXB4XCI+QXBwbHk8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIENlbnRyIE92ZXJsYXkgZm9yIHNob3dpbmcgdGhlIGNob3NlIGNvbHVtbnMgLS0+XG5cbjxkaXYgKm5nSWY9XCJzaG93Q29sdW1uUGFuZWxcIiBjbGFzcz1cImN1c3RvbS1tb2RhbC1vdmVybGF5XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImN1c3RvbS1tb2RhbC1jb250ZW50XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRyb3Bkb3duc0JhY2tncm91bmRDb2xvclwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9kYWxDb2x1bW5QYW5uZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBUaGUgZXhpc3RpbmcgbmctdGVtcGxhdGUgeW91IHByb3ZpZGVkIC0tPlxuPG5nLXRlbXBsYXRlICNtb2RhbENvbHVtblBhbm5lbD5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1wYW5lbC1oZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiBwcy0zIHJvdW5kZWQtdG9wLTIgbW9kYS1oZWFkZXJcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCI0OFwiXG4gICAgPlxuICAgICAgQ2hvb3NlIENvbHVtbnNcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKVwiXG4gICAgICAgID48c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+PC9zcGFuXG4gICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxociBjbGFzcz1cIm15LTBcIiAvPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHBlLTNcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCIgKm5nSWY9XCJzaG93Q29sdW1uc0dyb3VwaW5nXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcbiAgICAgICAgICAgICAgICA6IGFjY29yZGlvblN0YXRlID09PSAnc29tZSdcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjaG9zZUNvbHVtbnNTZWFyY2hcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxociBjbGFzcz1cIm10LTAgbWItMVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwicHgtMiBvdmVybGF5LXNjcm9sbGFibGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogY2hvc2VDb2x1bW5zU2VhcmNoIDogJ2hlYWRlcic7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2lkZU1lbnVSb3dHcm91cHM+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gaC0xMDAgZC1ub25lXCI+XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbWItNFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3Bhbj5Sb3cgR3JvdXBzPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC01MFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJweC0zIHB5LTIgYm9yZGVyLWRhc2hlZCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIERyYWcgaGVyZSB0byBzZXQgcm93IEdyb3Vwc1xuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGhyIGNsYXNzPVwibXQtNFwiIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBoLTEwMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuPlZhbHVlczwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImgtNTAgZC1mbGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIlxuICAgICAgICA+XG4gICAgICAgICAgRHJhZyBoZXJlIGFnZ3JlZ2F0ZVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbjwhLS0gRHJhZyBQcmV2aWV3IFRlbXBsYXRlIC0tPlxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cbjxuZy10ZW1wbGF0ZSAjZHJhZ1ByZXZpZXcgbGV0LWNvbD5cbiAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgPGRpdj5cbiAgICAgIDxzcGFuXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRHJhZyBQbGFjZWhvbGRlciBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjZHJhZ1BsYWNlaG9sZGVyXG4gIGxldC1jb2xcbiAgbGV0LWk9XCJpbmRleFwiXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXG4gIGxldC1kcmFnZ2luZ0luR3JvdXBBcmVhPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXG4+XG4gIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxuICAgIDxkaXZcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIGhlYWRlckNlbGw7XG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2wsIGluZGV4OiBpLCBzZWN0aW9uOiBzZWN0aW9uIH1cbiAgICAgIFwiXG4gICAgPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIj5OZXcgUGxhY2Vob2xkZXI8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVG9wIEdyb3VwIFJvdyBQbGFjZWhvbGRlciAtLT5cbjxuZy10ZW1wbGF0ZSAjdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlciBsZXQtY29sIGxldC1zaG93Q2hldnJvbj1cInNob3dDaGV2cm9uXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiB0b3Atcm93LWdyb3VwaW5nLXBsYWNlaG9sZGVyXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwidG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvclwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaWQtM3gyLWdhcC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8c3Bhbj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKGNsaWNrKT1cInVuZ3JvdXBDb2x1bW4oY29sKVwiXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgID48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0NoZXZyb25cIiBzdHlsZT1cIm9wYWNpdHk6IDAuNjsgZm9udC1zaXplOiAxNHB4XCI+XG4gICAgPHNwYW5cbiAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXCJcbiAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgPjwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI2NoaWxkSGVhZGVyUGxhY2Vob2xkZXJcbiAgbGV0LWNvbFxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXG4gIGxldC1pPVwiaW5kZXhcIlxuICBsZXQtc2VjdGlvbnM9XCJzZWN0aW9uc1wiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImhlYWRlci1jZWxsIG9uZS1yb3ctaGVhZGVyLWNlbGxzXCJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJoZWFkZXJGb250V2VpZ2h0XCJcbiAgICBbY2xhc3MuYWN0aXZlLWhlYWRlcl09XCJjZWxsU2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZENvbHVtbkluZGljZXMuaW5jbHVkZXMoY29sLmluZGV4KVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxuICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgIFtjbGFzcy53LTEwMF09XCJwaW5uZWRSaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXG4gICAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcmVzaXplLWhhbmRsZS5zdmcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxuICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgc3R5bGU9XCJncmlkLXJvdzogM1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJjb2w/LnR5cGUgPT0gJ2Ryb3Bkb3duJyB8fCBjb2w/LnR5cGUgPT0gJ2ltYWdlJyB8fCBjb2w/LnR5cGUgPT0gJ2FycmF5J1wiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXG4gICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZScgfHwgY29sPy50eXBlID09ICdhcnJheSdcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXJcIlxuICAgICAgICAoY2xpY2spPVwiYWN0aXZlRmlsdGVyQ2VsbCA9IGNvbDsgYWN0aXZlQ29sID0gbnVsbFwiXG4gICAgICAgID48c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPjwvc3BhblxuICAgICAgPjwvc3Bhbj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsID09PSBjb2xcIlxuICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDEwOyBsZWZ0OiAwXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlTGF5b3V0PlxuICA8ZGl2XG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXG4gICAgc3R5bGU9XCJ3aWR0aDogMzIwcHhcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdzZXR0aW5nJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+VGFibGUgTGF5b3V0PC9oNj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RhYmxlTGF5b3V0XCI+IFxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtYi0zIGQtZmxleFwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrIGxheW91dC1idXR0b24tY2hlY2tcIlxuICAgICAgICBuYW1lPVwibGF5b3V0U2l6ZVwiXG4gICAgICAgIGlkPVwic21hbGxcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVRhYmxlTGF5b3V0KCRldmVudCwgJ3NtYWxsJylcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdzbWFsbCdcIlxuICAgICAgLz5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxuICAgICAgICBmb3I9XCJzbWFsbFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnID8gJyMwMDAnIDogJyM3MjcyNzInXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogOHB4XCI+PC9kaXY+XG4gICAgICAgIFNtYWxsXG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXG4gICAgICAgIG5hbWU9XCJsYXlvdXRTaXplXCJcbiAgICAgICAgaWQ9XCJtZWRpdW1cIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nXCJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdtZWRpdW0nKVwiXG4gICAgICAvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYm9yZGVyIG14LTMgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcbiAgICAgICAgZm9yPVwibWVkaXVtXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIGNvbG9yOiBzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdtZWRpdW0nID8gJyMwMDAnIDogJyM3MjcyNzInXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogMTJweFwiPjwvZGl2PlxuICAgICAgICBNZWRpdW1cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBjbGFzcz1cImJ0bi1jaGVjayBsYXlvdXQtYnV0dG9uLWNoZWNrXCJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxuICAgICAgICBpZD1cImxhcmdlXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdsYXJnZScpXCJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBsYXlvdXQtYnV0dG9uXCJcbiAgICAgICAgZm9yPVwibGFyZ2VcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ2xhcmdlJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDE2cHhcIj48L2Rpdj5cbiAgICAgICAgTGFyZ2VcbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgIDxzcGFuPlNob3cgc2VwYXJhdG9yczwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9XCJzZXBhcmF0b3JzXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHNwYW4+Um93IHNoYWRpbmc8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1NoYWRpbmdFbmFibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVJvd1NoYWRpbmcoKVwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBpZD1cInJvd1NoYWRpbmdcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3Bhbj5TaG93IFNpZGUgTWVudTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd1NpZGVNZW51XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGlkPVwicm93U2hhZGluZ1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICA8c3Bhbj5TaG93IEZpbHRlciBSb3c8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dGaWx0ZXJSb3dcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlUHJlc2V0PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJhY3RpdmVTdWJCdXR0b24gIT09ICdzYXZlLXByZXNldCdcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4XCJcbiAgPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xMHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIFByZXNldHM8L2g2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFNhdmUgUHJlc2V0IEJ1dHRvbiB3aXRoIERyb3Bkb3duIC0tPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgaWQ9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZVN1YkFjdGlvbnMoJ3NhdmUtcHJlc2V0JylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyBcIlNhdmUgcHJlc2V0XCIgOiBcIlVwZGF0ZSBQcmVzZXRcIiB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VhcmNoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRQcmVzZXRUYWJsZVwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUHJlc2V0IExpc3QgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgdGFibGVWaWV3IHwgZmlsdGVyIDogc2VhcmNoVGV4dFByZXNldFRhYmxlIDogJ25hbWUnIGFzIGZpbHRlcmVkTGlzdFxuICAgICAgXCJcbiAgICA+XG4gICAgICA8IS0tIElmIGZpbHRlcmVkTGlzdCBleGlzdHMgYW5kIG5vbmUgaXMgZGVmYXVsdCAtPiBzaG93IGZhbGxiYWNrIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIiBwYi01IG92ZXJmbG93LWF1dG9cIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDI1MFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBjbGVhckFsbEZpbHRlcnModHJ1ZSk7XG4gICAgICAgICAgICBvcGVuSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9ICcnO1xuICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID0gJyc7XG4gICAgICAgICAgICBjdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSBudWxsXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPkRlZmF1bHQgVmlldzwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiPkNyZWF0ZWQgYnkgc3lzdGVtPC9zbWFsbD5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXG4gICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8IS0tIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiAhaGFzQW55RGVmYXVsdFZpZXcoKVwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1wiXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgID48L3NwYW4+IC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUZpbHRlclZpZXdJZFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRoZSBsaXN0OiByZW5kZXIgZWFjaCB0YWJsZSBmcm9tIGZpbHRlcmVkTGlzdCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCB0YWJsZSBvZiBmaWx0ZXJlZExpc3Q7XG4gICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVRhYmxlXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gSXRlbSAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkluZGV4ID0gbnVsbDsgYWN0aXZlVG9wQnV0dG9uID0gJydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdEZpbHRlcih0YWJsZSk7IG9wZW5JbmRleCA9IG51bGxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICB7eyB0YWJsZT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwhLS0ge3t0YWJsZT8uaXNfdGVtcH19IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICh0YWJsZT8uaXNfdGVtcCAmJiAhdGVtcF9zdGF0ZS5pZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9PSB0YWJsZS5pZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGU/LmlzX2RlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXG4gICAgICAgICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIiBbdGl0bGVdPVwidGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXM/Lmxlbmd0aCA+IDI1XG4gICAgICAgICAgICAgID8gKHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzIHwgc2xpY2U6MDoyNSkgKyAnLi4uJ1xuICAgICAgICAgICAgICA6IHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICh7eyB0YWJsZT8uY29uZmlnPy50b3RhbENvdW50IH19KVxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIiAqbmdJZj1cIiF0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1wiPnt7IHRhYmxlPy5jcmVhdGVkQXQgfCBkYXRlIDogXCJNTU0gZCwgeVwiIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKHRhYmxlPy5pc190ZW1wICYmICF0ZW1wX3N0YXRlLmlkKSB8fCB0ZW1wX3N0YXRlLmlkID09IHRhYmxlLmlkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hlY2stYmx1ZS5zdmcnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiIXRhYmxlPy5pc19kZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWljb24gbXV0ZWQtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbkluZGV4ID09PSBpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2hvcml6b250YWwtZG90cy5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gbWVudSAtLT5cbiAgICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3BlbkluZGV4ID09PSBpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tZHJvcGRvd24tbWVudSBwb3NpdGlvbi1maXhlZCB0b3AtYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cIid1bnNldCdcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRXaWR0aCAtIDIwMFwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiB1bnNldDsgcmlnaHQ6IHVuc2V0XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblByZXNldCh0YWJsZSwgJ3NldFByZXNldCcpOyB0ZW1wX3N0YXRlLmlkID0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zdGFyLnN2ZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibm9uZVwiICpuZ0lmPVwiIXRhYmxlLmNvbmZpcm1EZWxldGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0YWJsZS5jb25maXJtRGVsZXRlID0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAtNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3RyYXNoLXJlZC5zdmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGUuY29uZmlybURlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb25maXJtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgPGJyIC8+PGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4oCce3sgdGFibGU/Lm5hbWUgfX3igJ08L2JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPj9cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodCBtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUHJlc2V0KHRhYmxlLCAnZGVsZXRlUHJlc2V0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICpuZ0lmPVwiYWN0aXZlU3ViQnV0dG9uID09ICdzYXZlLXByZXNldCdcIlxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBwLTMgYmFkZ2UgbXQtNCBzYXZlLXByZXNldC1kcm9wZG93biBtdC0xXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJzYXZlUHJlc2V0RHJvcGRvd25cIlxuICAgIHN0eWxlPVwibWluLXdpZHRoOiAyNTBweFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy0xNHB4IG1iLTJcIj5cbiAgICAgIHt7IGlzVGFibGVQcmVzZXROb3RDaGFuZ2VkID8gXCJTYXZlIHByZXNldFwiIDogXCJVcGRhdGUgUHJlc2V0XCIgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtMTRweCBtYi0yXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogMjBweFwiPlxuICAgICAgVGhpcyB3aWxsIHNhdmUgdGhlIGN1cnJlbnQgdGFibGUgYWRqdXN0bWVudHMgYXMgYSBwcmVzZXQuXG4gICAgPC9kaXY+XG4gICAgPCEtLSBJbnB1dCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgPGxhYmVsIGZvcj1cInByZXNldE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnMtMTJweCBmdy1ib2xkXCJcbiAgICAgICAgPlByZXNldCBOYW1lPC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNwcmVzZXROYW1lQ3RybD1cIm5nTW9kZWxcIlxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXROYW1lXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnaXMtaW52YWxpZCc6XG4gICAgICAgICAgICAgIHByZXNldE5hbWVDdHJsLmludmFsaWQgJiZcbiAgICAgICAgICAgICAgKHByZXNldE5hbWVDdHJsLmRpcnR5IHx8IHByZXNldE5hbWVDdHJsLnRvdWNoZWQpXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBzLTJcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJlc2V0IG5hbWVcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXRGaWx0ZXJcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBpZD1cInNhdmVGaWx0ZXJzXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG10LTFcIiBmb3I9XCJzYXZlRmlsdGVyc1wiPlxuICAgICAgICBTYXZlIGFjdGl2ZSBmaWx0ZXJzXG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTYXZlIEJ1dHRvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIiBzdHlsZT1cImhlaWdodDogMzJweFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGJ0bi1saWdodFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KHByZXNldE5hbWVDdHJsKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiICpuZ0lmPVwiaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNsb3NlRHJvcGRvd24ucHJlc2V0LmxvYWRpbmdcIlxuICAgICAgICAgICAgPlNhdmU8L25nLWNvbnRhaW5lclxuICAgICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXG4gICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiPjwvc3BhblxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXBcIiAqbmdJZj1cIiFpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZFwiXG4gICAgICAgICAgPlVwZGF0ZSBQcmVzZXQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93SGlkZUNvbHVtbnM+XG4gIDxkaXZcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBjbGFzcz1cInAtMyBzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIGRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0XCJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweFwiXG4gID5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIG1zLTJcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDBcIj5Db2x1bW5zPC9oNj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0Q29sdW1ucygpXCJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtZGVjb3JhdGlvbi1ub25lIGQtbm9uZVwiXG4gICAgICAgID5SZXNldDwvYVxuICAgICAgPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZ2xvYmFsLXNlYXJjaFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxuICAgICAgICAgIGNsYXNzPVwibXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uIGRhdGEtZ3JpZC1zdmctaWNvblwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1uXCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRvcFNob3dIaWRlQ29sdW1uc1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IHNjcm9sbGJhci13aWR0aDogdGhpblwiXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAtIDIyMFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiPlxuICAgICAgICBTaG93IGluIHRhYmxlXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGlkPVwiaGlkZV9hbGxcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHkoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cImhpZGVfYWxsXCI+XG4gICAgICAgICAgICAgIFNob3cvSGlkZSBBbGwgXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEl0ZW0gLS0+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IHRvcFNob3dIaWRlQ29sdW1ucyA6ICdoZWFkZXInO1xuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItZ3JhcCBkYXRhLWdyaWQtc3ZnLWljb25cIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgJiYgIWNvbD8ucXVlcnk/Ll9pZHM/Lmxlbmd0aFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sLCBmYWxzZSlcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInZpc2libGVDb2x1bW5zKCkubGVuZ3RoIDw9IDIgfHwgY29sPy5pc19hbHdheXNfdmlzaWJsZVwiXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxuICAgICAgICAgICAgW2NsYXNzLm9wYWNpdHktNTBdPVwidmlzaWJsZUNvbHVtbnMoKS5sZW5ndGggPD0gMiB8fCBjb2w/LmlzX2Fsd2F5c192aXNpYmxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V5ZS5zdmcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiXG4gICAgICAgICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtbiAmJiBoYXNBbnlJblZpc2libGVDb2x1bW5cIlxuICAgICAgPjwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibXV0ZWQtdGV4dCBzaG93LWhpZGUtdGFibGUtbGFiZWwgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlJblZpc2libGVDb2x1bW5cIlxuICAgICAgPlxuICAgICAgICBIaWRlIGluIHRhYmxlXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgaWQ9XCJzaG93X2FsbFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwic2hvd19hbGxcIj5cbiAgICAgICAgICAgICAgU2hvdy9IaWRlIEFsbCBcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnMgfCBmaWx0ZXIgOiB0b3BTaG93SGlkZUNvbHVtbnMgOiAnaGVhZGVyJzsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmlzX3Zpc2libGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbCwgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUtY3Jvc3Muc3ZnJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXG4gICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyQ29sdW1ucyBsZXQtY29sPVwiY29sdW1uXCI+XG4gIDxkaXZcbiAgICBAc2xpZGVUb2dnbGVcbiAgICAqbmdJZj1cIiFpc0ZpbHRlck9wZW4gJiYgYWN0aXZlVG9wQnV0dG9uID09ICdmaWx0ZXItY29sdW1ucydcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnNcIlxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibWItMiBweC0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBteC0yIHBvc2l0aW9uLWFic29sdXRlIGljb25cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5XCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImFkZEZpbHRlckNvbHVtbklucHV0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcbiAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTsgb3ZlcmZsb3c6IGF1dG9cIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAnaGVhZGVyJztcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RmllbGRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRmlsdGVyKGNvbClcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjb2wuaXNfdmlzaWJsZSAmJlxuICAgICAgICAgICAgIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmXG4gICAgICAgICAgICAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoICYmIGNvbD8udHlwZSAhPT0gJ2ltYWdlJyAmJiBjb2wuaXNfc2VhcmNoX2FibGVcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJvcmRlci0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAtM3B4XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1jYXBpdGFsaXplXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIj5cbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciAgfCB0aXRsZWNhc2UgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEcm9wZG93biAtLT5cbiAgPGRpdlxuICAgIEBzbGlkZVRvZ2dsZVxuICAgICpuZ0lmPVwiaXNGaWx0ZXJPcGVuICYmIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdkcm9wZG93bicgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2FycmF5J1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcbiAgICBzdHlsZT1cIndpZHRoOiAyODBweDsgcmlnaHQ6IHVuc2V0OyBtYXgtd2lkdGg6IDIzMHB4XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgbXktMiBib3JkZXItYmVsb3cgcHktMSBwYi0yIG1iLTMgZC1mbGV4IHBzLTFcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctbGVmdC5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlciB0ZXh0LWNhcGl0YWxpemVcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiXG4gICAgICA+PC9zcGFuXG4gICAgICA+PGI+e3sgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmhlYWRlciB8IHRpdGxlY2FzZSAgfX08L2I+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTIgcHgtM1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlciByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIHB4LTIgZmlsdGVyLXNlcmFjaC1pbnB0XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXCJcbiAgICAgICAgICBjbGFzcz1cImJhZGdlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgbWUtMSBtYi0xIHRvcC1yb3ctZmlsdGVyLWRyb3Bkb3duIHRleHQtY2FwaXRhbGl6ZVwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHNlbGVjdGVkPy52YWx1ZSA/IHNlbGVjdGVkLnZhbHVlIDogc2VsZWN0ZWQgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKHNlbGVjdGVkKVwiXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jcm9zcy1wcmltYXJ5LnN2ZydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGJvcmRlci0wIGZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZEZpbHRlck9wdGlvbnM/Lmxlbmd0aCA/ICcnIDogJ0ZpbHRlciBieSdcIlxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duXCJcbiAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiaGFuZGxlQmFja3NwYWNlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjAwcHgpOyBvdmVyZmxvdzogYXV0b1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICBsZXQgY29sIG9mIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLmNvbHVtbl9kcm9wZG93bl92YWx1ZVxuICAgICAgICAgICAgfCBmaWx0ZXIgOiBzZWFyY2hUZXh0Rm9yRmlsdGVyRHJvcERvd24gOiAndmFsdWUnO1xuICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJvcmRlci0wIHB4LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2lkXT1cImlcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKGNvbC5pZCB8fCBjb2wuX2lkIHx8IGNvbClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGNvbClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGQgdGV4dC1jYXBpdGFsaXplXCIgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcIiBbZm9yXT1cImlcIj5cbiAgICAgICAgICAgICAge3sgY29sPy52YWx1ZSB8fCBjb2w/Lm5hbWUgfHwgY29sIHwgdGl0bGVjYXNlICB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWxpZ2h0IGJvcmRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMSBidG4tbGlnaHRcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldEZpbHRlckNoYW5nZXMoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMVwiXG4gICAgICAgIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi10b3A6IC0ycHhcIj5TYXZlPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRm9yIFRleHQgZmllbGRzIGFuZCBudW1iZXIgZmllbGRzLS0+XG5cbiAgPGRpdlxuICAgIEBzbGlkZVRvZ2dsZVxuICAgICpuZ0lmPVwiXG4gICAgICBpc0ZpbHRlck9wZW4gJiZcbiAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnc3RyaW5nJyB8fFxuICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAndGltZScgfHxcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2RhdGUnKVxuICAgIFwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcbiAgICBzdHlsZT1cIndpZHRoOiAyMTBweDsgcmlnaHQ6IHVuc2V0OyBtYXgtd2lkdGg6IDIzMHB4XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInB4LTMgYm9yZGVyLWJlbG93IHB5LTEgcGItMiBkLWZsZXggcHMtMVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnZmlsdGVyLWNvbHVtbnMnKTsgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2VcIlxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIGN1cnNvci1wb2ludGVyXCJcbiAgICAgID48L3NwYW5cbiAgICAgID48Yj57eyBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uaGVhZGVyIH19PC9iPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcG9zaXRpb24tcmVsYXRpdmUgcC0yIHRleHQtZmlsdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0IGJvcmRlclwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdENvbmRpdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cbiAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnZGF0ZScgfHwgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3RpbWUnXCI+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkxlc3MgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+R3JlYXRlciBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGVzc190aGVuX2VxdWFsXCI+bGVzcyB0aGVuIEVxdWFsIHRvPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJncmVhdGVyX3RoZW5fZXF1YWxcIj5HcmVhdGVyIHRoZW4gRXF1YWwgdG8gPC9vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBmaXJzdCB2YWx1ZVwiXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgW3R5cGVdPVwiXG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8udHlwZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICA/ICd0ZXh0J1xuICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXktMyBkLWZsZXggZmxleC1yb3dcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbEFuZFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxuICAgICAgICAgICAgICB2YWx1ZT1cImFuZFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxBbmRcIlxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgaWQ9XCJsb2dpY2FsT3JcIlxuICAgICAgICAgICAgICBuYW1lPVwibG9naWNhbE9wZXJhdG9yXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxPclwiPk9SPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE5vbmVcIlxuICAgICAgICAgICAgICBuYW1lPVwibG9naWNhbE9wZXJhdG9yXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJub25lXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibG9naWNhbE5vbmVcIlxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmRpdGlvbiAhPT0gJ25vbmUnICYmIGZpcnN0VmFsdWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0zXCI+XG4gICAgICAgICAgICA8IS0tIFNlY29uZCBjb25kaXRpb24gc2VsZWN0IC0tPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGJvcmRlclwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kQ29uZGl0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICdzdHJpbmcnXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ2RhdGUnIHx8IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlID09ICd0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5CZWZvcmU8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+TGVzcyBUaGVuIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkdyZWF0ZXIgVGhlbiA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGVzc190aGVuX2VxdWFsXCI+bGVzcyB0aGVuIEVxdWFsIHRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImdyZWF0ZXJfdGhlbl9lcXVhbFwiPkdyZWF0ZXIgdGhlbiBFcXVhbCB0byA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgPCEtLSBTZWNvbmQgdmFsdWUgaW5wdXQgLS0+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW3R5cGVdPVwiXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LnR5cGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gJ3RleHQnXG4gICAgICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy50eXBlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgc2Vjb25kIHZhbHVlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2Vjb25kVmFsdWVcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTIgcHgtMiBib3JkZXItdG9wXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplICYmICFmaXJzdFZhbHVlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcmVzZXRUZXh0RmlsdGVyQ2hhbmdlcygpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+Q2FuY2VsPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCIoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID09PSAwICYmICFmaXJzdFZhbHVlKSB8fCAoY29uZGl0aW9uICE9PSAnbm9uZScgJiYgIXNlY29uZFZhbHVlKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPkFwcGx5PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBFZGl0IGRyb3Bkb3duIGhlcmUgLS0+XG48bmctdGVtcGxhdGUgbGV0LWNvbD5cbiAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1lZGl0XCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI2Z1bGxUZXh0VGVtcGxhdGVcbiAgbGV0LXJvdz1cInJvd1wiXG4gIGxldC1jb2w9XCJjb2xcIlxuICBsZXQtaXNBcnJheT1cImlzQXJyYXlcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmdWxsLXRleHQtYm94XCJcbiAgICAoZGJsY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gMlwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZyhyb3csIGNvbClcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhaXNBcnJheVwiXG4gICAgICAgIGNsYXNzPVwiZnVsbC10ZXh0LWNvbnRlbnRcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxuICAgICAgICAoZGJsY2xpY2spPVwiXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXG4gICAgICAgIFwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcbiAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVxuICAgICAgICB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNBcnJheVwiPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJpICE9PSAwXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIGl0ZW0/LmRlcGFydG1lbnRfbmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5yb2xlTmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5mdWxsX25hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8udmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ubmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICBcIi1cIlxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmcocm93LCBjb2wpXCI+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgKGRibGNsaWNrKT1cIlxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlbmFibGVFZGl0KHJvdywgY29sLCB0cnVlKVxuICAgICAgICBcIlxuICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgIHJvd3M9XCI0XCJcbiAgICAgICAgI3RleHRBcmVhZElucHV0XG4gICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxuICAgICAgICBuYW1lPVwie3sgY29sLmZpZWxkIH19XCJcbiAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0ZXh0QXJlYWRJbnB1dC5ibHVyKClcIlxuICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2lzLWludmFsaWQnOiB0ZXh0TW9kZWwuaW52YWxpZFxuICAgICAgICB9XCJcbiAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgPjwvdGV4dGFyZWE+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SW1hZ2VQbGFjZWhvbGRlciBsZXQtcm93PVwicm93XCIgbGV0LWNvbD1cImNvbFwiPlxuICA8c3BhblxuICAgIGNsYXNzPVwicHgtMiBkLWZsZXggdy0xMDAgY2VsbC1jb250ZW50IGltYWdlLXBsYWNlaG9sZGVyXCJcbiAgICBbdGl0bGVdPVwicm93Py5mdWxsX25hbWUgfHwgcm93Py5uYW1lIHx8ICdOL0EnXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIHJvdz8ubG9nbyB8fFxuICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxuICAgICAgICAgIHJvdz8uaW52b2ljZT8uaW52b2ljZV9pbWFnZSB8fFxuICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZTtcbiAgICAgICAgZWxzZSBwbGFjZWhvbGRlclxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gcm93Py5sb2dvIHx8IHJvdz8ucHJvZmlsZV9waWN0dXJlcz8uWzRdPy5wYXRoIHx8XG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxuICAgICAgICAgICAgcm93Py5pbnZvaWNlX2ltYWdlXCJcbiAgICAgICAgY2xhc3M9XCJwaWNcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW3dpZHRoXT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICBbaGVpZ2h0XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxuICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcbiAgICAgICAgICAgIHJvdz8ucHJvZmlsZV9waWN0dXJlcz8uWzRdPy5wYXRoIHx8XG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxuICAgICAgICAgICAgcm93Py5pbnZvaWNlX2ltYWdlXG4gICAgICAgICAgXCJcbiAgICAgICAgICBhbHQ9XCJpY29uXCJcbiAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1pY29uXCJcbiAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSA8ZGl2XG4gICAgICBjbGFzcz1cImZ1bGxzY3JlZW4tb3ZlcmxheVwiXG4gICAgICAqbmdJZj1cImZ1bGxzY3JlZW5JbWFnZVwiXG4gICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gbnVsbFwiXG4gICAgPlxuICAgICAgPGltZyBbc3JjXT1cImZ1bGxzY3JlZW5JbWFnZVwiIGNsYXNzPVwiZnVsbHNjcmVlbi1pbWdcIiAvPlxuICAgIDwvZGl2PiAtLT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJnZXREeW5hbWljQ2xhc3Mocm93Py5mdWxsX25hbWUgfHwgcm93Py5uYW1lKVwiXG4gICAgICAgIGNsYXNzPVwicGljIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cInJvd0hlaWdodCAvIDNcIlxuICAgICAgICBbY2xhc3MuYXNzZXRzLXBpY109XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiXG4gICAgICA+XG4gICAgICAgIHt7IGdldEluaXRpYWxzKHJvdz8uZnVsbF9uYW1lKSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUmlnaHQgQ2xpY2sgTWVudWUgLS0+XG48ZGl2XG4gIFtjbGFzcy5pbnZpc2libGVdPVwiIXBvc2l0aW9uZWRZZXRcIlxuICBjbGFzcz1cImNvbnRleHQtbWVudSBwLTJcIlxuICAqbmdJZj1cImFjdGlvbkhpZGUgJiYgYWN0aW9ucz8ubGVuZ3RoXCJcbiAgW25nU3R5bGVdPVwieyAndG9wLnB4JzogeVBvcywgJ2xlZnQucHgnOiB4UG9zIH1cIlxuICBbY2xhc3Muc2hvd109XCJpc1Zpc2libGVcIlxuICBhcHBlbmRUbz1cImJvZHlcIlxuPlxuICA8dWw+XG4gICAgPGxpXG4gICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIlxuICAgICAgY2xhc3M9XCJyb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYWN0aW9uICsgJy5zdmcnXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gcmlnaHQtY2xpY2stbWVudS1pY29ucyBtZS0yXCJcbiAgICAgID48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBmdy01MDBcIj57eyBhY3Rpb24gfX08L3NwYW4+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48IS0tIERldGFpbHMgVG9nZ2xlIGZyb20gYm90dG9tIC0tPlxuXG48bmctdGVtcGxhdGUgI25lc3RlZFRhYmxlVGVtcGxhdGUgbGV0LXJvdz5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTAgY2VudGVyLW5lc3RlZC10YWJsZSB3LTEwMFwiXG4gICAgc3R5bGU9XCJ0YWJsZS1sYXlvdXQ6IGZpeGVkICFpbXBvcnRhbnRcIlxuICAgICNuZXN0ZWRUYWJsZUNvbnRhaW5lclxuICA+XG4gICAgPHRoZWFkXG4gICAgICAjbmVzdGVkSGVhZGVyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwicm93Py5kZXRhaWwuY29sdW1uc1wiXG4gICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1uKCRldmVudCwgcm93KVwiXG4gICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvbk5lc3RlZENvbFNvcnQoJGV2ZW50LCBwcmV2aWV3TmVzdGVkQ29scylcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm5lc3RlZFRhYmxlSGVhZGVyUm93SGVpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggdHIgYm9yZGVyLWJlbG93XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93LmRldGFpbC5jb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcbiAgICAgICAgICBjbGFzcz1cInB4LTQgdGhcIlxuICAgICAgICAgIFthdHRyLmZpZWxkXT1cImNvbC5maWVsZFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgY2RrRHJhZ1xuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggaC0xMDAganVzdGlmeS1jb250ZW50LWJldHdlZW4gcG9zaXRpb24tcmVsYXRpdmUgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbGxpcHNpc1wiIChjbGljayk9XCJzb3J0TmVzdGVkQ29sKGNvbCwgcm93KVwiPlxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRTdWJTb3J0Q29sdW1uID09IGNvbC5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xuICAgICAgICAgICAgICAgICAgKGNvbD8ub3JkZXJfYnkgPT0gJ2Rlc2MnXG4gICAgICAgICAgICAgICAgICAgID8gJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xuICAgICAgICAgICAgICAgICAgICA6ICdkYXRhLWdyaWQvaWNvbnMvc29ydC1hc2Muc3ZnJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtcy0yIHN0YXJ0LTUwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbClcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAtNTAlOyB6LWluZGV4OiAyMTsgbGVmdDogMFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXG4gICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiByb3c/LmRldGFpbC5jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpO1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC90aGVhZD5cbiAgICA8ZGl2XG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxuICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICA+XG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgIFtpdGVtU2l6ZV09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgIGNsYXNzPVwidmlld3BvcnRcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxuICAgICAgICAgIChyb3c/LmRldGFpbD8ucmVzdWx0Py5sZW5ndGggPCA1XG4gICAgICAgICAgICA/IG5lc3RlZFRhYmxlcm93SGVpZ2h0ICogcm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoICsgNDBcbiAgICAgICAgICAgIDogMzAwKSArIChoYXNIb3Jpem9udGFsU2Nyb2xsID8gLTEyIDogMSlcbiAgICAgICAgXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93IGQtZmxleCB0clwiXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgZCBvZiByb3c/LmRldGFpbD8ucmVzdWx0OyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXI/Lm9mZnNldFdpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyPy5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgZClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTAgdGRcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBwcmV2aWV3TmVzdGVkQ29sczsgbGV0IGogPSBpbmRleFwiXG4gICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwibmVzdGVkVGFibGVyb3dGb250c2l6ZVwiXG4gICAgICAgICAgICBbYXR0ci5maWVsZF09XCJjb2wuZmllbGRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodCAtIDFcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImNvbD8ud2lkdGhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8IS0tIHt7IGRbY29sLmZpZWxkXSB8fCAoY29sLmlzX2Ftb3VudCA/IDAgOiBcIi1cIikgfX0gLS0+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAjY2VsbFRleHRcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgZmxleC1ncm93LTFcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgIGNvbD8udHlwZSA9PT0gJ2RhdGUnXG4gICAgICAgICAgICAgICAgICAgID8gKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkgfCBkYXRlIDogZGF0ZUZvcm1hdClcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpIHx8ICctJ1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy50eXBlICE9PSAnaW1hZ2UnXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2xcbiAgICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgY29sLmhlYWRlciA9PT0gJ0FyY2hpdmVkIFN0YXR1cydcbiAgICAgICAgICAgICAgICAgICAgICA/IChnZXRDZWxsVGl0bGUoZCwgY29sKSA9PT0gdHJ1ZSB8fCBnZXRDZWxsVGl0bGUoZCwgY29sKSA9PT0gJ3RydWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0FyY2hpdmVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdVbmFyY2hpdmVkJylcbiAgICAgICAgICAgICAgICAgICAgICA6IGdldENlbGxUaXRsZShkLCBjb2wpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0VG90YWxBbW91bnQoY29sKSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbWFnZVBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xlZnRSaWdodE5lc3RlZFBsYWNlaG9sZGVyIGxldC1yb3c+XG4gIDx0YWJsZVxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTBcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJcbiAgICAgIGdyaWRUeXBlID09ICdBc3NldHMnXG4gICAgICAgID8gKG5lc3RlZFRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgPz8gMCkgKyAxMlxuICAgICAgICA6ICh0YXNrTWFuYWdlbWVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApXG4gICAgXCJcbiAgPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRoZWFkXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidHIgZC1mbGV4IGJvcmRlci1iZWxvd1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHRcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiICpuZ0Zvcj1cImxldCBfIG9mIFsxLCAyLCAzLCA0LCA1XVwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRib2R5XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidHIgYm9yZGVyLWJlbG93XCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBfIG9mIHJvdz8uZGV0YWlsPy5yZXN1bHRcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiICpuZ0Zvcj1cImxldCBfXyBvZiBbMSwgMiwgMywgNCwgNV1cIiBjbGFzcz1cInB5LTBcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cIm5lc3RlZFRhYmxlcm93SGVpZ2h0XCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFza01hbmFnZW1lbnRUZW1wbGF0ZSBsZXQtdGFza0RldGFpbHM9XCJ0YXNrRGV0YWlsc1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwLTRcIlxuICAgICN0YXNrTWFuYWdlbWVudENvbnRhaW5lclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwibmVzdGVkVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxuICAgIFtzdHlsZS5mb250RmFpbWx5XT1cImZvbnRGYWltbHlcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+RGVzY3JpcHRpb248L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50IGZpcnN0RGl2XCI+XG4gICAgICAgIHt7IHRhc2tEZXRhaWxzLmRlc2NyaXB0aW9uIH19XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDxwXG4gICAgICAgICAgW3N0eWxlLmZvbnRTaXplXT1cImJvZHlUZXh0Rm9udHNTaXplXCJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdiB0YXNrRGVzY3JpcHRpb24gcGUtNFwiXG4gICAgICAgICAgW2lubmVySFRNTF09XCJnZXRTYWZlQ29tbWVudCh0YXNrRGV0YWlscz8uZWRpdG9yX2Rlc2NyaXB0aW9uKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5GdWxsSW1hZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPkF0dGFjaG1lbnRzPC9kaXY+XG4gICAgICAgIDxoNSAqbmdJZj1cInRhc2tEZXRhaWxzPy5hdHRhY2htZW50cz8ubGVuZ3RoID09IDBcIj5cbiAgICAgICAgICBObyBBdHRhY2htZW50cyBmb3VuZFxuICAgICAgICA8L2g1PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJ0YXNrRGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aFwiXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZC1mbGV4IGZsZXgtd3JhcFwiXG4gICAgICAgICAgc3R5bGU9XCJnYXA6IDEwcHhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdHRhY2hlbWVudCBvZiB0YXNrRGV0YWlscz8uYXR0YWNobWVudHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJzeW1ib2wtbGFiZWwgZnMtMiBmdy1zZW1pYm9sZCB0ZXh0LXN1Y2Nlc3MgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgdGFza0RldGFpbHM/LmF0dGFjaG1lbnRzX25hbWVbaV0gfHwgJ0F0dGFjaG1lbnQnIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGF0dGFjaGVtZW50KVwiXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXG4gICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9kb2N1bWVudC1pY29ucy8nICtcbiAgICAgICAgICAgICAgICBnZXRFeHRlbnRpb24oYXR0YWNoZW1lbnQpICtcbiAgICAgICAgICAgICAgICAnLnN2ZydcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5cbiAgICAgICAgICBDb21tZW50cyAoe3sgdGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGggfX0pXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aDUgKm5nSWY9XCJ0YXNrRGV0YWlscz8uY29tbWVudHM/Lmxlbmd0aCA9PSAwXCI+Tm8gQ29tbWVudHMgZm91bmQ8L2g1PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGFza0RldGFpbHM/LmNvbW1lbnRzPy5sZW5ndGhcIiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgdGFza0RldGFpbHMuY29tbWVudHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBlLTNcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGltYWdlLWlucHV0LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxuICAgICAgICAgICAgICAgIHNyYz1cInt7IGNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nbyB9fVwiXG4gICAgICAgICAgICAgICAgYWx0PVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwhLS0gPGFwcC1kZWZhdWx0LWltYWdlLXBsYWNlaG9sZGVyICpuZ0lmPVwiIWNvbW1lbnQ/LmNvbW1lbnRfYnkubG9nb1wiIHRpdGxlPVwie3sgY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVwiIFtuYW1lXT1cImNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWVcIj48L2FwcC1kZWZhdWx0LWltYWdlLXBsYWNlaG9sZGVyPiAtLT5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaWMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByb3VuZGVkLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwicm93SGVpZ2h0IC8gM1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYXV0aG9yIGZzLTE0cHhcIj5cbiAgICAgICAgICAgICAgICB7eyBjb21tZW50Py5jb21tZW50X2J5LmZ1bGxfbmFtZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWVudC1jb250ZW50IGZvckNvbW1lbnRJbWdcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0U2FmZUNvbW1lbnQoY29tbWVudC5jb21tZW50KVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtdGltZXN0YW1wXCI+XG4gICAgICAgICAgICAgICAge3sgY29tbWVudC5jb21tZW50X2RhdGUgfCBkYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC10aW1lc3RhbXBcIj5cbiAgICAgICAgICAgICAgICBSZXBsaWVzOiAoe3sgY29tbWVudC5yZXBsaWVzLmxlbmd0aCB9fSlcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19