@kepler.gl/reducers 3.3.0-alpha.18 → 3.3.0-alpha.19

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.
@@ -10,10 +10,121 @@ import { ALL_FIELD_TYPES, ANIMATION_WINDOW, FILTER_TYPES, PLOT_TYPES, SORT_ORDER
10
10
  import { VisStateActions } from '@kepler.gl/actions';
11
11
  import { KeplerTable } from '@kepler.gl/table';
12
12
  import SchemaManager from '@kepler.gl/schemas';
13
+ import { processArrowBatches } from '@kepler.gl/processors';
14
+ import { exportMapToHTML, exportToJsonString, getMapJSON } from '@kepler.gl/utils';
15
+ import * as arrow from 'apache-arrow';
13
16
  import { drainTasksForTesting, errorTaskInTest, succeedTaskInTest } from '@kepler.gl/tasks';
14
17
  import visStateReducer from './vis-state';
15
18
  import { INITIAL_VIS_STATE } from './vis-state-updaters';
16
19
  var reduceVisState = visStateReducer;
20
+ function arrowCities() {
21
+ var source = new arrow.Table({
22
+ lat: arrow.vectorFromArray([37, null], new arrow.Float64()),
23
+ lng: arrow.vectorFromArray([-122, -123], new arrow.Float64()),
24
+ population: arrow.vectorFromArray([1000, null], new arrow.Int32())
25
+ });
26
+ var data = processArrowBatches(source.batches);
27
+ if (!data) throw new Error('Expected Arrow data');
28
+ return reduceVisState(withTables(makeTable('cities', data)), VisStateActions.addLayer({
29
+ id: 'cities-layer',
30
+ type: 'point',
31
+ config: {
32
+ dataId: 'cities',
33
+ columns: {
34
+ lat: 'lat',
35
+ lng: 'lng'
36
+ },
37
+ colorField: {
38
+ name: 'population',
39
+ type: ALL_FIELD_TYPES.integer
40
+ }
41
+ }
42
+ }));
43
+ }
44
+ describe('Arrow column order through edits and saved maps', function () {
45
+ test.each(['0', '2020', '4294967294', '00', '02020', '-1', '1.0', '1e3', '4294967295'])('rename to %s preserves descriptor/vector order', function (name) {
46
+ var _layer$config$colorFi;
47
+ var initial = arrowCities();
48
+ var original = initial.datasets.cities.dataContainer;
49
+ var next = reduceVisState(initial, VisStateActions.renameTableColumn('cities', 'population', name));
50
+ var table = next.datasets.cities;
51
+ var dc = table.dataContainer;
52
+ expect(table.fields.map(function (f) {
53
+ return f.name;
54
+ })).toEqual(['lat', 'lng', name]);
55
+ expect(dc.getTable().schema.fields.map(function (f) {
56
+ return f.name;
57
+ })).toEqual(['lat', 'lng', name]);
58
+ expect(dc.flattenData()).toEqual([[37, -122, 1000], [null, -123, null]]);
59
+ expect(table.fields.map(function (f) {
60
+ return f.valueAccessor({
61
+ index: 0
62
+ });
63
+ })).toEqual([37, -122, 1000]);
64
+ table.fields.forEach(function (_, i) {
65
+ expect(dc.getColumn(i).data[0].values.buffer).toBe(original.getColumn(i).data[0].values.buffer);
66
+ });
67
+ expect(initial.datasets.cities.fields[2].name).toBe('population');
68
+ expect(original.getTable().schema.fields[2].name).toBe('population');
69
+ expect(original.rowAsArray(0)).toEqual([37, -122, 1000]);
70
+ var layer = next.layers[0];
71
+ expect(layer.getPositionAccessor(dc)({
72
+ index: 0
73
+ })).toEqual([-122, 37, 0]);
74
+ layer.formatLayerData(next.datasets);
75
+ expect(Array.from(layer.geoArrowVector.get(0))).toEqual([-122, 37, 0]);
76
+ expect((_layer$config$colorFi = layer.config.colorField) === null || _layer$config$colorFi === void 0 ? void 0 : _layer$config$colorFi.name).toBe(name);
77
+ });
78
+ test('JSON, HTML and native IPC reload retain the renamed values and positions', function () {
79
+ var _ipc$getChild;
80
+ var next = reduceVisState(arrowCities(), VisStateActions.renameTableColumn('cities', 'population', '2020'));
81
+ var saved = getMapJSON({
82
+ visState: next,
83
+ mapState: {},
84
+ mapStyle: {},
85
+ uiState: {}
86
+ }, {
87
+ hasData: true
88
+ });
89
+ var json = JSON.parse(exportToJsonString(saved));
90
+ var html = exportMapToHTML(_objectSpread(_objectSpread({}, saved), {}, {
91
+ mode: 'READ'
92
+ }));
93
+ var datasetsMatch = html.match(/const datasets = (.+);/);
94
+ var configMatch = html.match(/const config = (.+);/);
95
+ if (!datasetsMatch || !configMatch) throw new Error('Expected embedded map data');
96
+ var htmlData = JSON.parse(datasetsMatch[1]);
97
+ var htmlConfig = JSON.parse(configMatch[1]);
98
+ for (var _i = 0, _arr = [json, {
99
+ datasets: htmlData,
100
+ config: htmlConfig
101
+ }]; _i < _arr.length; _i++) {
102
+ var _loaded$datasets;
103
+ var document = _arr[_i];
104
+ var loaded = SchemaManager.load(document);
105
+ var dataset = (_loaded$datasets = loaded.datasets) === null || _loaded$datasets === void 0 ? void 0 : _loaded$datasets[0];
106
+ if (!dataset) throw new Error('Expected reloaded dataset');
107
+ var table = makeTable('cities', dataset.data);
108
+ expect(table.fields.map(function (f) {
109
+ return f.name;
110
+ })).toEqual(['lat', 'lng', '2020']);
111
+ expect(table.dataContainer.rowAsArray(0)).toEqual([37, -122, 1000]);
112
+ expect(next.layers[0].getPositionAccessor(table.dataContainer)({
113
+ index: 0
114
+ })).toEqual([-122, 37, 0]);
115
+ }
116
+ var dc = next.datasets.cities.dataContainer;
117
+ var ipc = arrow.tableFromIPC(arrow.tableToIPC(dc.getTable()));
118
+ var processed = processArrowBatches(ipc.batches);
119
+ if (!processed) throw new Error('Expected IPC data');
120
+ var restored = makeTable('cities', processed);
121
+ expect(restored.dataContainer.rowAsArray(0)).toEqual([37, -122, 1000]);
122
+ expect(ipc.schema.fields.map(function (f) {
123
+ return f.name;
124
+ })).toEqual(['lat', 'lng', '2020']);
125
+ expect((_ipc$getChild = ipc.getChild('2020')) === null || _ipc$getChild === void 0 ? void 0 : _ipc$getChild.get(0)).toBe(1000);
126
+ });
127
+ });
17
128
  function makeTable(id, data) {
18
129
  var table = new KeplerTable({
19
130
  info: {
@@ -154,7 +265,7 @@ describe('column edits', function () {
154
265
  drainTasksForTesting();
155
266
  });
156
267
  test('rename changes the field identity stored in layers, filters, and saved maps', function () {
157
- var _layer$config$colorFi, _layer$config$textLab, _state$charts$0$xAxis, _state$charts$0$yAxis, _state$charts$0$cross, _savedVisState$layers, _savedVisState$layers2, _savedVisState$layers3, _savedVisState$charts;
268
+ var _layer$config$colorFi2, _layer$config$textLab, _state$charts$0$xAxis, _state$charts$0$yAxis, _state$charts$0$cross, _savedVisState$layers, _savedVisState$layers2, _savedVisState$layers3, _savedVisState$charts;
158
269
  var state = withCities();
159
270
  state.datasets.cities.hiddenColumns = ['region', 'pop'];
160
271
  expect(state.layers).toHaveLength(1);
@@ -173,7 +284,7 @@ describe('column edits', function () {
173
284
  var layer = state.layers[0];
174
285
  expect(layer.config.columns.lat.value).toBe('lat');
175
286
  expect(layer.config.columns.lng.value).toBe('lng');
176
- expect((_layer$config$colorFi = layer.config.colorField) === null || _layer$config$colorFi === void 0 ? void 0 : _layer$config$colorFi.name).toBe('area');
287
+ expect((_layer$config$colorFi2 = layer.config.colorField) === null || _layer$config$colorFi2 === void 0 ? void 0 : _layer$config$colorFi2.name).toBe('area');
177
288
  expect((_layer$config$textLab = layer.config.textLabel[0].field) === null || _layer$config$textLab === void 0 ? void 0 : _layer$config$textLab.name).toBe('area');
178
289
  expect(state.filters[0].name).toEqual(['area']);
179
290
  expect((_state$charts$0$xAxis = state.charts[0].xAxis) === null || _state$charts$0$xAxis === void 0 || (_state$charts$0$xAxis = _state$charts$0$xAxis.field) === null || _state$charts$0$xAxis === void 0 ? void 0 : _state$charts$0$xAxis.name).toBe('area');
@@ -836,4 +947,4 @@ describe('column edits', function () {
836
947
  expect(state.datasets.remote.fields[0].displayName).toBe('Region');
837
948
  });
838
949
  });
839
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBTExfRklFTERfVFlQRVMiLCJBTklNQVRJT05fV0lORE9XIiwiRklMVEVSX1RZUEVTIiwiUExPVF9UWVBFUyIsIlNPUlRfT1JERVIiLCJWaXNTdGF0ZUFjdGlvbnMiLCJLZXBsZXJUYWJsZSIsIlNjaGVtYU1hbmFnZXIiLCJkcmFpblRhc2tzRm9yVGVzdGluZyIsImVycm9yVGFza0luVGVzdCIsInN1Y2NlZWRUYXNrSW5UZXN0IiwidmlzU3RhdGVSZWR1Y2VyIiwiSU5JVElBTF9WSVNfU1RBVEUiLCJyZWR1Y2VWaXNTdGF0ZSIsIm1ha2VUYWJsZSIsImlkIiwiZGF0YSIsInRhYmxlIiwiaW5mbyIsImxhYmVsIiwidHlwZSIsImNvbG9yIiwidXBkYXRlU2NoZW1hIiwid2l0aFRhYmxlcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0YWJsZXMiLCJBcnJheSIsIl9rZXkiLCJfb2JqZWN0U3ByZWFkIiwiZGF0YXNldHMiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsIm1hcCIsIndpdGhGaWx0ZXIiLCJzdGF0ZSIsImRhdGFJZCIsImNvbHVtbiIsImNyZWF0ZU9yVXBkYXRlRmlsdGVyIiwidW5kZWZpbmVkIiwid2l0aFN5bmNlZEZpbHRlciIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJzZXRGaWx0ZXIiLCJjaGFuZ2VUeXBlIiwiY2hhbmdlVGFibGVDb2x1bW5UeXBlIiwibWFrZUNpdGllcyIsImZpZWxkcyIsIm5hbWUiLCJyZWFsIiwic3RyaW5nIiwiaW50ZWdlciIsInJvd3MiLCJ3aXRoQ2l0aWVzIiwiY2l0aWVzIiwiaW50ZXJhY3Rpb25Db25maWciLCJ0b29sdGlwIiwiY29uZmlnIiwiZmllbGRzVG9TaG93IiwiZm9ybWF0IiwiYWRkTGF5ZXIiLCJjb2x1bW5zIiwibGF0IiwibG5nIiwiY29sb3JGaWVsZCIsInRleHRMYWJlbCIsImZpZWxkIiwiYWRkQ2hhcnQiLCJ0aXRsZSIsImFwcGx5RmlsdGVycyIsImRpc3BsYXkiLCJjaGFydERpc3BsYXkiLCJ4QXhpcyIsImFnZ3JlZ2F0aW9uIiwieUF4aXMiLCJjcm9zc0ZpbHRlciIsImVuYWJsZWQiLCJmaWx0ZXJJZCIsImZpZWxkTmFtZXMiLCJ2YWx1ZSIsImRlc2NyaWJlIiwiYmVmb3JlRWFjaCIsInRlc3QiLCJfbGF5ZXIkY29uZmlnJGNvbG9yRmkiLCJfbGF5ZXIkY29uZmlnJHRleHRMYWIiLCJfc3RhdGUkY2hhcnRzJDAkeEF4aXMiLCJfc3RhdGUkY2hhcnRzJDAkeUF4aXMiLCJfc3RhdGUkY2hhcnRzJDAkY3Jvc3MiLCJfc2F2ZWRWaXNTdGF0ZSRsYXllcnMiLCJfc2F2ZWRWaXNTdGF0ZSRsYXllcnMyIiwiX3NhdmVkVmlzU3RhdGUkbGF5ZXJzMyIsIl9zYXZlZFZpc1N0YXRlJGNoYXJ0cyIsImhpZGRlbkNvbHVtbnMiLCJleHBlY3QiLCJsYXllcnMiLCJ0b0hhdmVMZW5ndGgiLCJmaWx0ZXJzIiwidG9FcXVhbCIsInJlbmFtZVRhYmxlQ29sdW1uIiwicmVnaW9uIiwiZmluZCIsInRvQmUiLCJkaXNwbGF5TmFtZSIsImRhdGFDb250YWluZXIiLCJyb3dBc0FycmF5IiwibGF5ZXIiLCJjaGFydHMiLCJzYXZlZCIsInNhdmUiLCJ2aXNTdGF0ZSIsIm1hcFN0YXRlIiwibWFwU3R5bGUiLCJ1aVN0YXRlIiwic2F2ZWRWaXNTdGF0ZSIsInZpc3VhbENoYW5uZWxzIiwiSlNPTiIsInN0cmluZ2lmeSIsInRvQ29udGFpbiIsIm5vdCIsIl9zdGF0ZSRjaGFydHMkMCR5QXhpczIiLCJkZWxldGVUYWJsZUNvbHVtbiIsInRvQmVOdWxsIiwib25seSIsInNpbmdsZSIsImtlcHQiLCJoaXN0b2dyYW1Db3VudCIsIl9iaW5zIiwiYmlucyIsInJlZHVjZSIsInN1bSIsImJpbiIsImNvdW50IiwiZmlsdGVyZWRJbmRleCIsIl9zdGF0ZSRsYXllcnMkZmluZCIsIl9zdGF0ZSRsYXllcnMkZmluZDIiLCJfc3RhdGUkY2hhcnRzJDAkeUF4aXMzIiwid2VpZ2h0RmllbGQiLCJwb3AiLCJ0b01hdGNoT2JqZWN0IiwiYW5hbHl6ZXJUeXBlIiwiX3N0YXRlJGRhdGFzZXRzJGNpdGllIiwiX3N0YXRlJGRhdGFzZXRzJGNpdGllMiIsInBvbHlnb25GaWx0ZXIiLCJmaXhlZERvbWFpbiIsInZpZXciLCJpc0FuaW1hdGluZyIsInNwZWVkIiwicG9seWdvbiIsImZpZWxkSWR4IiwiZG9tYWluIiwicHJvcGVydGllcyIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJwbG90VHlwZSIsImhpc3RvZ3JhbSIsImxheWVySWQiLCJncHUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJmaWx0ZXIiLCJ0b0JlVW5kZWZpbmVkIiwiZmlsdGVyUmVjb3JkIiwidG9Db250YWluRXF1YWwiLCJvYmplY3RDb250YWluaW5nIiwiY3B1Iiwic29ydFRhYmxlQ29sdW1uIiwiQVNDRU5ESU5HIiwic29ydENvbHVtbiIsInNvcnRPcmRlciIsImV2ZW50cyIsInRpbWVzdGFtcCIsInN5bmNlZFdpdGhMYXllclRpbWVsaW5lIiwic3luY1RpbWVsaW5lTW9kZSIsImFuaW1hdGlvbldpbmRvdyIsImludGVydmFsIiwidGltZUJpbnMiLCJkYXkiLCJsaW5lQ2hhcnQiLCJzZXJpZXMiLCJ5RG9tYWluIiwieERvbWFpbiIsInRpbWV6b25lIiwiaW52ZXJ0VHJlbmRDb2xvciIsInNob3dUaW1lRGlzcGxheSIsInRvSGF2ZVByb3BlcnR5IiwiZnJlZSIsIl9zdGF0ZSRkYXRhc2V0cyRzZWNvbiIsImR5bmFtaWNEb21haW4iLCJtYWtlRXZlbnRzIiwic2V0RmlsdGVyUGxvdCIsInRvQmVEZWZpbmVkIiwiX3N0YXRlJGZpbHRlcnMkMCRsaW5lIiwiX3N0YXRlJGZpbHRlcnMkMCRsaW5lMiIsIl9zdGF0ZSRmaWx0ZXJzJDAkbGluZTMiLCJncm91cEJ5IiwiZmllbGROYW1lIiwibnVtR3JvdXBzIiwiZ3JvdXBPdGhlcnMiLCJzZXJpZXNCZWZvcmUiLCJTZXQiLCJuYW1lcyIsIm5hbWVzQWZ0ZXIiLCJfc3RhdGUkZmlsdGVycyQwJHlBeGkiLCJfdGltZUZpbHRlciR0aW1lQmlucyIsIl90aW1lRmlsdGVyJHRpbWVCaW5zMiIsIl9zdGF0ZSRjaGFydHMkMCR4QXhpczIiLCJlbmROYW1lIiwidGltZUZpbHRlciIsImludGVydmFsQmlucyIsInRvQmVHcmVhdGVyVGhhbiIsImVuZEZpZWxkSWR4IiwiX25leHQkZGF0YXNldHMkY2l0aWVzIiwibmV4dCIsInRhc2tzIiwibm90aWZpY2F0aW9uIiwicGF5bG9hZCIsIm1lc3NhZ2UiLCJfc3RhdGUkZGF0YXNldHMkY2l0aWUzIiwibG9hZENvbHVtblN0YXRzIiwicmVxdWVzdFJldmlzaW9uIiwiZGF0YVJldmlzaW9uIiwiX2RyYWluVGFza3NGb3JUZXN0aW5nIiwiX2RyYWluVGFza3NGb3JUZXN0aW5nMiIsIl9zbGljZWRUb0FycmF5IiwidGFzayIsInJlc3VsdCIsIm1lYW4iLCJzdGFsZVN1Y2Nlc3MiLCJmaWx0ZXJQcm9wcyIsInJhbmdlIiwiZmllbGRUeXBlIiwiY2hhbmdlZFN0YXRlIiwiY2hhbmdlZEZpZWxkIiwiY29sdW1uU3RhdHMiLCJlYWNoIiwidXBkYXRlIiwidHlwZXMiLCJfZHJhaW5UYXNrc0ZvclRlc3RpbmczIiwiX2RyYWluVGFza3NGb3JUZXN0aW5nNCIsInBpblRhYmxlQ29sdW1uIiwicm93IiwicmVmcmVzaERhdGFzZXRTdWNjZXNzIiwibm90TW9kaWZpZWQiLCJhZGRUb0RhdGFzZXQiLCJzdWNjZXNzU3RhdGUiLCJsb2dFcnJvciIsImplc3QiLCJzcHlPbiIsImNvbnNvbGUiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJlcnJvclN0YXRlIiwiRXJyb3IiLCJtb2NrUmVzdG9yZSIsImlzTG9hZGluZ1N0YXRzIiwiZHVwbGljYXRlIiwidGlsZXMiLCJ0aWxlZCIsInVuY2hhbmdlZCIsInJlbW90ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2x1bW4tZWRpdC11cGRhdGVycy5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7XG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgQU5JTUFUSU9OX1dJTkRPVyxcbiAgRklMVEVSX1RZUEVTLFxuICBQTE9UX1RZUEVTLFxuICBTT1JUX09SREVSXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7VmlzU3RhdGVBY3Rpb25zfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQgU2NoZW1hTWFuYWdlciwge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtkcmFpblRhc2tzRm9yVGVzdGluZywgZXJyb3JUYXNrSW5UZXN0LCBzdWNjZWVkVGFza0luVGVzdH0gZnJvbSAnQGtlcGxlci5nbC90YXNrcyc7XG5pbXBvcnQgdHlwZSB7UG9seWdvbkZpbHRlciwgUmFuZ2VGaWx0ZXIsIFRpbWVSYW5nZUZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB2aXNTdGF0ZVJlZHVjZXIgZnJvbSAnLi92aXMtc3RhdGUnO1xuaW1wb3J0IHtJTklUSUFMX1ZJU19TVEFURX0gZnJvbSAnLi92aXMtc3RhdGUtdXBkYXRlcnMnO1xuXG5jb25zdCByZWR1Y2VWaXNTdGF0ZSA9IHZpc1N0YXRlUmVkdWNlciBhcyAoc3RhdGU6IFZpc1N0YXRlLCBhY3Rpb246IHVua25vd24pID0+IFZpc1N0YXRlO1xuXG5mdW5jdGlvbiBtYWtlVGFibGUoaWQ6IHN0cmluZywgZGF0YTogUGFyYW1ldGVyczxLZXBsZXJUYWJsZVsndXBkYXRlU2NoZW1hJ10+WzBdKSB7XG4gIGNvbnN0IHRhYmxlID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICBpbmZvOiB7aWQsIGxhYmVsOiBpZCwgdHlwZTogJ2xvY2FsJ30sXG4gICAgY29sb3I6IFswLCAwLCAwXVxuICB9KTtcbiAgcmV0dXJuIHRhYmxlLnVwZGF0ZVNjaGVtYShkYXRhKTtcbn1cblxuZnVuY3Rpb24gd2l0aFRhYmxlcyguLi50YWJsZXM6IEtlcGxlclRhYmxlW10pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgZGF0YXNldHM6IE9iamVjdC5mcm9tRW50cmllcyh0YWJsZXMubWFwKHRhYmxlID0+IFt0YWJsZS5pZCwgdGFibGVdKSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2l0aEZpbHRlcihzdGF0ZTogVmlzU3RhdGUsIGRhdGFJZDogc3RyaW5nLCBjb2x1bW46IHN0cmluZyk6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuY3JlYXRlT3JVcGRhdGVGaWx0ZXIodW5kZWZpbmVkLCBkYXRhSWQsIGNvbHVtbikpO1xufVxuXG5mdW5jdGlvbiB3aXRoU3luY2VkRmlsdGVyKHByaW1hcnk6IEtlcGxlclRhYmxlLCBzZWNvbmRhcnk6IEtlcGxlclRhYmxlLCBjb2x1bW46IHN0cmluZyk6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKFxuICAgIHdpdGhGaWx0ZXIod2l0aFRhYmxlcyhwcmltYXJ5LCBzZWNvbmRhcnkpLCBwcmltYXJ5LmlkLCBjb2x1bW4pLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXIoMCwgWydkYXRhSWQnLCAnbmFtZSddLCBbc2Vjb25kYXJ5LmlkLCBjb2x1bW5dLCAxKVxuICApO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VUeXBlKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkOiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBWaXNTdGF0ZSB7XG4gIHJldHVybiByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmNoYW5nZVRhYmxlQ29sdW1uVHlwZShkYXRhSWQsIGNvbHVtbiwgdHlwZSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlQ2l0aWVzKCkge1xuICBjb25zdCB0YWJsZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgaW5mbzoge2lkOiAnY2l0aWVzJywgbGFiZWw6ICdjaXRpZXMnLCB0eXBlOiAnbG9jYWwnfSxcbiAgICBjb2xvcjogWzAsIDAsIDBdXG4gIH0pO1xuICB0YWJsZS51cGRhdGVTY2hlbWEoe1xuICAgIGZpZWxkczogW1xuICAgICAge25hbWU6ICdsYXQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbH0sXG4gICAgICB7bmFtZTogJ2xuZycsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5yZWFsfSxcbiAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30sXG4gICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgIF0sXG4gICAgcm93czogW1xuICAgICAgWzM3LjcsIC0xMjIuNCwgJ3dlc3QnLCAxMF0sXG4gICAgICBbNDAuNywgLTc0LjAsICdlYXN0JywgNDBdXG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHRhYmxlO1xufVxuXG5mdW5jdGlvbiB3aXRoQ2l0aWVzKCk6IFZpc1N0YXRlIHtcbiAgY29uc3QgY2l0aWVzID0gbWFrZUNpdGllcygpO1xuICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLFxuICAgIGRhdGFzZXRzOiB7Y2l0aWVzfSxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZzoge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUuaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICB0b29sdGlwOiB7XG4gICAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLFxuICAgICAgICAgIGZpZWxkc1RvU2hvdzoge1xuICAgICAgICAgICAgY2l0aWVzOiBbe25hbWU6ICdyZWdpb24nLCBmb3JtYXQ6IG51bGx9XVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgIHN0YXRlLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5hZGRMYXllcih7XG4gICAgICBpZDogJ2NpdGllcy1sYXllcicsXG4gICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGRhdGFJZDogJ2NpdGllcycsXG4gICAgICAgIGxhYmVsOiAnY2l0aWVzJyxcbiAgICAgICAgY29sb3I6IFsyNTUsIDAsIDBdLFxuICAgICAgICBjb2x1bW5zOiB7bGF0OiAnbGF0JywgbG5nOiAnbG5nJ30sXG4gICAgICAgIGNvbG9yRmllbGQ6IHtuYW1lOiAncmVnaW9uJywgdHlwZTogJ3N0cmluZyd9LFxuICAgICAgICB0ZXh0TGFiZWw6IFt7ZmllbGQ6IHtuYW1lOiAncmVnaW9uJywgdHlwZTogJ3N0cmluZyd9fV1cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgIHN0YXRlLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5jcmVhdGVPclVwZGF0ZUZpbHRlcih1bmRlZmluZWQsICdjaXRpZXMnLCAncmVnaW9uJylcbiAgKTtcbiAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICBzdGF0ZSxcbiAgICBWaXNTdGF0ZUFjdGlvbnMuYWRkQ2hhcnQoe1xuICAgICAgaWQ6ICdyZWdpb24tY2hhcnQnLFxuICAgICAgdGl0bGU6ICdSZWdpb25zJyxcbiAgICAgIHR5cGU6ICdiYXJDaGFydCcsXG4gICAgICBkYXRhSWQ6ICdjaXRpZXMnLFxuICAgICAgYXBwbHlGaWx0ZXJzOiB0cnVlLFxuICAgICAgZGlzcGxheToge30sXG4gICAgICBjaGFydERpc3BsYXk6IHt9LFxuICAgICAgeEF4aXM6IHtmaWVsZDoge25hbWU6ICdyZWdpb24nLCB0eXBlOiAnc3RyaW5nJ30sIGFnZ3JlZ2F0aW9uOiBudWxsLCB0aXRsZTogJ3JlZ2lvbid9LFxuICAgICAgeUF4aXM6IHtmaWVsZDoge25hbWU6ICdwb3AnLCB0eXBlOiAnaW50ZWdlcid9LCBhZ2dyZWdhdGlvbjogJ3N1bScsIHRpdGxlOiAnUG9wdWxhdGlvbid9LFxuICAgICAgY3Jvc3NGaWx0ZXI6IHtcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGZpbHRlcklkOiAncmVnaW9uLWNoYXJ0LWZpbHRlcicsXG4gICAgICAgIGZpZWxkTmFtZXM6IHt4QXhpczogJ3JlZ2lvbid9LFxuICAgICAgICB2YWx1ZToge31cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmRlc2NyaWJlKCdjb2x1bW4gZWRpdHMnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3JlbmFtZSBjaGFuZ2VzIHRoZSBmaWVsZCBpZGVudGl0eSBzdG9yZWQgaW4gbGF5ZXJzLCBmaWx0ZXJzLCBhbmQgc2F2ZWQgbWFwcycsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMgPSBbJ3JlZ2lvbicsICdwb3AnXTtcbiAgICBleHBlY3Qoc3RhdGUubGF5ZXJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubmFtZSkudG9FcXVhbChbJ3JlZ2lvbiddKTtcblxuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbignY2l0aWVzJywgJ3JlZ2lvbicsICdhcmVhJykpO1xuXG4gICAgY29uc3QgcmVnaW9uID0gc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09ICdhcmVhJyk7XG4gICAgZXhwZWN0KHJlZ2lvbj8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChyZWdpb24/LmlkKS50b0JlKCdhcmVhJyk7XG4gICAgZXhwZWN0KHJlZ2lvbj8uZGlzcGxheU5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvRXF1YWwoW1xuICAgICAgJ2xhdCcsXG4gICAgICAnbG5nJyxcbiAgICAgICdhcmVhJyxcbiAgICAgICdwb3AnXG4gICAgXSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMClbMl0pLnRvQmUoJ3dlc3QnKTtcblxuICAgIGNvbnN0IGxheWVyID0gc3RhdGUubGF5ZXJzWzBdO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sdW1ucy5sYXQudmFsdWUpLnRvQmUoJ2xhdCcpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sdW1ucy5sbmcudmFsdWUpLnRvQmUoJ2xuZycpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sb3JGaWVsZD8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcudGV4dExhYmVsWzBdLmZpZWxkPy5uYW1lKS50b0JlKCdhcmVhJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubmFtZSkudG9FcXVhbChbJ2FyZWEnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS54QXhpcz8uZmllbGQ/Lm5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnlBeGlzPy5maWVsZD8ubmFtZSkudG9CZSgncG9wJyk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS5jcm9zc0ZpbHRlcj8uZmllbGROYW1lcykudG9FcXVhbCh7eEF4aXM6ICdhcmVhJ30pO1xuICAgIGV4cGVjdChzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5maWVsZHNUb1Nob3cuY2l0aWVzWzBdLm5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMpLnRvRXF1YWwoWydhcmVhJywgJ3BvcCddKTtcblxuICAgIGNvbnN0IHNhdmVkID0gU2NoZW1hTWFuYWdlci5zYXZlKHtcbiAgICAgIHZpc1N0YXRlOiBzdGF0ZSxcbiAgICAgIG1hcFN0YXRlOiB7fSxcbiAgICAgIG1hcFN0eWxlOiB7fSxcbiAgICAgIHVpU3RhdGU6IHt9XG4gICAgfSk7XG4gICAgY29uc3Qgc2F2ZWRWaXNTdGF0ZSA9IHNhdmVkLmNvbmZpZy5jb25maWcudmlzU3RhdGU7XG4gICAgZXhwZWN0KHNhdmVkVmlzU3RhdGUubGF5ZXJzPy5bMF0udmlzdWFsQ2hhbm5lbHM/LmNvbG9yRmllbGQpLnRvRXF1YWwoe1xuICAgICAgbmFtZTogJ2FyZWEnLFxuICAgICAgdHlwZTogJ3N0cmluZydcbiAgICB9KTtcbiAgICBleHBlY3Qoc2F2ZWRWaXNTdGF0ZS5sYXllcnM/LlswXS5jb25maWcuY29sdW1ucy5sYXQpLnRvQmUoJ2xhdCcpO1xuICAgIGV4cGVjdChzYXZlZFZpc1N0YXRlLmxheWVycz8uWzBdLmNvbmZpZy50ZXh0TGFiZWw/LlswXS5maWVsZD8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChKU09OLnN0cmluZ2lmeShzYXZlZFZpc1N0YXRlLmZpbHRlcnMpKS50b0NvbnRhaW4oJ2FyZWEnKTtcbiAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkoc2F2ZWRWaXNTdGF0ZS5maWx0ZXJzKSkubm90LnRvQ29udGFpbigncmVnaW9uJyk7XG4gICAgZXhwZWN0KHNhdmVkVmlzU3RhdGUuY2hhcnRzPy5bMF0ueEF4aXM/LmZpZWxkPy5uYW1lKS50b0JlKCdhcmVhJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RlbGV0ZSBkcm9wcyByZWZlcmVuY2VzIGFuZCByZWZ1c2VzIHRoZSBsYXN0IGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMgPSBbJ3JlZ2lvbicsICdwb3AnXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2NpdGllcycsICdwb3AnKSk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvRXF1YWwoWydsYXQnLCAnbG5nJywgJ3JlZ2lvbiddKTtcbiAgICBleHBlY3Qoc3RhdGUubGF5ZXJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnlBeGlzPy5maWVsZCkudG9CZU51bGwoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMpLnRvRXF1YWwoWydyZWdpb24nXSk7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2NpdGllcycsICdsYXQnKSk7XG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSkudG9FcXVhbChbJ2xuZycsICdyZWdpb24nXSk7XG5cbiAgICBjb25zdCBvbmx5ID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICAgIGluZm86IHtpZDogJ29ubHknLCBsYWJlbDogJ29ubHknLCB0eXBlOiAnbG9jYWwnfSxcbiAgICAgIGNvbG9yOiBbMCwgMCwgMF1cbiAgICB9KTtcbiAgICBvbmx5LnVwZGF0ZVNjaGVtYSh7XG4gICAgICBmaWVsZHM6IFt7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XSxcbiAgICAgIHJvd3M6IFtbJ3dlc3QnXV1cbiAgICB9KTtcbiAgICBjb25zdCBzaW5nbGU6IFZpc1N0YXRlID0gey4uLklOSVRJQUxfVklTX1NUQVRFLCBkYXRhc2V0czoge29ubHl9fTtcbiAgICBjb25zdCBrZXB0ID0gcmVkdWNlVmlzU3RhdGUoc2luZ2xlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ29ubHknLCAncmVnaW9uJykpO1xuICAgIGV4cGVjdChrZXB0LmRhdGFzZXRzLm9ubHkuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSkudG9FcXVhbChbJ3JlZ2lvbiddKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVsZXRpbmcgYW4gdW5yZWxhdGVkIGNvbHVtbiBwcmVzZXJ2ZXMgYW4gaW52ZXJ0ZWQgbnVtZXJpYyBoaXN0b2dyYW0nLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBtYWtlVGFibGUoJ2RhdGEnLCB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge25hbWU6ICd1bnVzZWQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICd2YWx1ZScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfSxcbiAgICAgICAge25hbWU6ICdjYXRlZ29yeScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XG4gICAgICBdLFxuICAgICAgcm93czogW1xuICAgICAgICBbJ3gnLCAxLCAnQSddLFxuICAgICAgICBbJ3gnLCAyLCAnQiddLFxuICAgICAgICBbJ3gnLCAzLCAnQSddXG4gICAgICBdXG4gICAgfSk7XG4gICAgbGV0IHN0YXRlID0gd2l0aEZpbHRlcih3aXRoVGFibGVzKHRhYmxlKSwgJ2RhdGEnLCAnY2F0ZWdvcnknKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyKDAsICd2YWx1ZScsIFsnQSddKSk7XG4gICAgc3RhdGUgPSB3aXRoRmlsdGVyKHN0YXRlLCAnZGF0YScsICd2YWx1ZScpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXIoMSwgJ3ZhbHVlJywgWzIsIDJdKSk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlcigxLCAnaW52ZXJ0ZWQnLCB0cnVlKSk7XG4gICAgY29uc3QgaGlzdG9ncmFtQ291bnQgPSAoKSA9PlxuICAgICAgKHN0YXRlLmZpbHRlcnNbMV0gYXMgUmFuZ2VGaWx0ZXIpLmJpbnM/LmRhdGE/LnJlZHVjZSgoc3VtLCBiaW4pID0+IHN1bSArIGJpbi5jb3VudCwgMCk7XG4gICAgZXhwZWN0KGhpc3RvZ3JhbUNvdW50KCkpLnRvQmUoMik7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2RhdGEnLCAndW51c2VkJykpO1xuXG4gICAgZXhwZWN0KGhpc3RvZ3JhbUNvdW50KCkpLnRvQmUoMik7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmRhdGEuZmlsdGVyZWRJbmRleCkudG9FcXVhbChbMCwgMl0pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5kYXRhLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQudHlwZSkpLnRvRXF1YWwoW1xuICAgICAgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIsXG4gICAgICBBTExfRklFTERfVFlQRVMuc3RyaW5nXG4gICAgXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGNvbnZlcnRzIHZhbHVlcyBhbmQgcmVjb25jaWxlcyBpbmNvbXBhdGlibGUgcmVmZXJlbmNlcycsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLmFkZExheWVyKHtcbiAgICAgICAgaWQ6ICdjaXRpZXMtaGVhdG1hcCcsXG4gICAgICAgIHR5cGU6ICdoZWF0bWFwJyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgZGF0YUlkOiAnY2l0aWVzJyxcbiAgICAgICAgICBsYWJlbDogJ2NpdGllcyBoZWF0bWFwJyxcbiAgICAgICAgICBjb2xvcjogWzI1NSwgMCwgMF0sXG4gICAgICAgICAgY29sdW1uczoge2xhdDogJ2xhdCcsIGxuZzogJ2xuZyd9LFxuICAgICAgICAgIHdlaWdodEZpZWxkOiB7bmFtZTogJ3BvcCcsIHR5cGU6ICdpbnRlZ2VyJ30sXG4gICAgICAgICAgdGV4dExhYmVsOiBbe2ZpZWxkOiB7bmFtZTogJ3BvcCcsIHR5cGU6ICdpbnRlZ2VyJ319XVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnY2l0aWVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgY29uc3QgcG9wID0gc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09ICdwb3AnKTtcbiAgICBleHBlY3QocG9wKS50b01hdGNoT2JqZWN0KHt0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nLCBhbmFseXplclR5cGU6ICdTVFJJTkcnLCBmb3JtYXQ6ICcnfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMClbM10pLnRvQmUoJzEwJyk7XG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIGV4cGVjdChcbiAgICAgIChzdGF0ZS5sYXllcnMuZmluZChsYXllciA9PiBsYXllci5pZCA9PT0gJ2NpdGllcy1oZWF0bWFwJyk/LmNvbmZpZyBhcyB7d2VpZ2h0RmllbGQ/OiB1bmtub3dufSlcbiAgICAgICAgLndlaWdodEZpZWxkXG4gICAgKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChcbiAgICAgIHN0YXRlLmxheWVycy5maW5kKGxheWVyID0+IGxheWVyLmlkID09PSAnY2l0aWVzLWhlYXRtYXAnKT8uY29uZmlnLnRleHRMYWJlbFswXS5maWVsZFxuICAgICkudG9NYXRjaE9iamVjdCh7bmFtZTogJ3BvcCcsIHR5cGU6ICdzdHJpbmcnfSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS55QXhpcz8uZmllbGQpLnRvRXF1YWwoe25hbWU6ICdwb3AnLCB0eXBlOiAnc3RyaW5nJ30pO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBwcmVzZXJ2ZXMgcG9seWdvbiBmaWx0ZXJzIHRhcmdldGluZyB0aGUgZGF0YXNldCcsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgY29uc3QgcG9seWdvbkZpbHRlcjogUG9seWdvbkZpbHRlciA9IHtcbiAgICAgIGlkOiAncG9seWdvbi1maWx0ZXInLFxuICAgICAgZGF0YUlkOiBbJ2NpdGllcyddLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGZpeGVkRG9tYWluOiB0cnVlLFxuICAgICAgdmlldzogJ3NpZGUnLFxuICAgICAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICAgICAgc3BlZWQ6IDEsXG4gICAgICBuYW1lOiBbXSxcbiAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5wb2x5Z29uLFxuICAgICAgZmllbGRJZHg6IFtdLFxuICAgICAgZG9tYWluOiBudWxsLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBpZDogJ3BvbHlnb24tc2VsZWN0aW9uJyxcbiAgICAgICAgcHJvcGVydGllczoge2ZpbHRlcklkOiAncG9seWdvbi1maWx0ZXInfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgWy0xMjMsIDM3XSxcbiAgICAgICAgICAgICAgWy0xMjIsIDM3XSxcbiAgICAgICAgICAgICAgWy0xMjIsIDM4XSxcbiAgICAgICAgICAgICAgWy0xMjMsIDM3XVxuICAgICAgICAgICAgXVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5oaXN0b2dyYW19LFxuICAgICAgeUF4aXM6IG51bGwsXG4gICAgICBsYXllcklkOiBbJ2NpdGllcy1sYXllciddLFxuICAgICAgZ3B1OiBmYWxzZVxuICAgIH07XG5cbiAgICBzdGF0ZSA9IHsuLi5zdGF0ZSwgZmlsdGVyczogWy4uLnN0YXRlLmZpbHRlcnMsIHBvbHlnb25GaWx0ZXJdfTtcbiAgICBzdGF0ZSA9IGNoYW5nZVR5cGUoc3RhdGUsICdjaXRpZXMnLCAncG9wJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIuaWQgPT09IHBvbHlnb25GaWx0ZXIuaWQpKS50b0JlKHBvbHlnb25GaWx0ZXIpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmRlbGV0ZVRhYmxlQ29sdW1uKCdjaXRpZXMnLCAnbGF0JykpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gcG9seWdvbkZpbHRlci5pZCkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpbHRlclJlY29yZD8uZ3B1KS5ub3QudG9Db250YWluRXF1YWwoXG4gICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7aWQ6IHBvbHlnb25GaWx0ZXIuaWR9KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWx0ZXJSZWNvcmQ/LmNwdSkubm90LnRvQ29udGFpbkVxdWFsKFxuICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe2lkOiBwb2x5Z29uRmlsdGVyLmlkfSlcbiAgICApO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBwcmVzZXJ2ZXMgYW4gZXhpc3Rpbmcgc29ydCBvbiBhbm90aGVyIGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNvcnRUYWJsZUNvbHVtbignY2l0aWVzJywgJ3JlZ2lvbicsIFNPUlRfT1JERVIuQVNDRU5ESU5HKVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5zb3J0Q29sdW1uKS50b0VxdWFsKHtyZWdpb246IFNPUlRfT1JERVIuQVNDRU5ESU5HfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5zb3J0T3JkZXIpLnRvRXF1YWwoWzEsIDBdKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2NpdGllcycsICdwb3AnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuc29ydENvbHVtbikudG9FcXVhbCh7cmVnaW9uOiBTT1JUX09SREVSLkFTQ0VORElOR30pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuc29ydE9yZGVyKS50b0VxdWFsKFsxLCAwXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGNsZWFycyB0aW1lbGluZSBzdGF0ZSB3aGVuIGEgdGltZSBmaWx0ZXIgYmVjb21lcyBub24tdGltZScsICgpID0+IHtcbiAgICBjb25zdCBldmVudHMgPSBtYWtlVGFibGUoJ2V2ZW50cycsIHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7bmFtZTogJ3N0YXJ0JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCwgYW5hbHl6ZXJUeXBlOiAnREFURVRJTUUnfSxcbiAgICAgICAge25hbWU6ICdhbW91bnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsnMjAyNC0wMS0wMVQwMDowMDowMFonLCAxMF0sXG4gICAgICAgIFsnMjAyNC0wMS0wMlQwMDowMDowMFonLCAyMF1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoRmlsdGVyKHdpdGhUYWJsZXMoZXZlbnRzKSwgJ2V2ZW50cycsICdzdGFydCcpO1xuICAgIHN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi4oc3RhdGUuZmlsdGVyc1swXSBhcyBUaW1lUmFuZ2VGaWx0ZXIpLFxuICAgICAgICAgIHN5bmNlZFdpdGhMYXllclRpbWVsaW5lOiB0cnVlLFxuICAgICAgICAgIHN5bmNUaW1lbGluZU1vZGU6IDEgYXMgY29uc3QsXG4gICAgICAgICAgaXNBbmltYXRpbmc6IHRydWUsXG4gICAgICAgICAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmludGVydmFsLFxuICAgICAgICAgIHRpbWVCaW5zOiB7ZXZlbnRzOiB7ZGF5OiBbXX19LFxuICAgICAgICAgIGxpbmVDaGFydDoge1xuICAgICAgICAgICAgc2VyaWVzOiBbXSxcbiAgICAgICAgICAgIHlEb21haW46IFswLCAxXSxcbiAgICAgICAgICAgIHhEb21haW46IFswLCAxXSxcbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgICAgICAgICAgIGludGVydmFsOiAnZGF5JyxcbiAgICAgICAgICAgIHlBeGlzOiAnYW1vdW50J1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZXpvbmU6ICdVVEMnLFxuICAgICAgICAgIGludmVydFRyZW5kQ29sb3I6IHRydWUsXG4gICAgICAgICAgc2hvd1RpbWVEaXNwbGF5OiB0cnVlLFxuICAgICAgICAgIHlBeGlzOiBzdGF0ZS5kYXRhc2V0cy5ldmVudHMuZmllbGRzWzFdLFxuICAgICAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5saW5lQ2hhcnQsIGludGVydmFsOiAnZGF5JywgYWdncmVnYXRpb246ICdzdW0nfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2V2ZW50cycsICdzdGFydCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgY29uc3QgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1swXTtcbiAgICBleHBlY3QoZmlsdGVyLnR5cGUpLnRvQmUoJ211bHRpU2VsZWN0Jyk7XG4gICAgZXhwZWN0KGZpbHRlcikubm90LnRvSGF2ZVByb3BlcnR5KCdzeW5jZWRXaXRoTGF5ZXJUaW1lbGluZScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgnc3luY1RpbWVsaW5lTW9kZScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgndGltZUJpbnMnKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ2xpbmVDaGFydCcpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgndGltZXpvbmUnKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ2ludmVydFRyZW5kQ29sb3InKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ3Nob3dUaW1lRGlzcGxheScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZml4ZWREb21haW46IGZhbHNlLFxuICAgICAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICAgICAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmZyZWUsXG4gICAgICB5QXhpczogbnVsbCxcbiAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5oaXN0b2dyYW19XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGRldGFjaGVzIGFuIGluY29tcGF0aWJsZSBzeW5jZWQgZmlsdGVyIG1lbWJlciBhbmQgcmVmaWx0ZXJzIGl0cyBkYXRhc2V0JywgKCkgPT4ge1xuICAgIGNvbnN0IHByaW1hcnkgPSBtYWtlVGFibGUoJ3ByaW1hcnknLCB7XG4gICAgICBmaWVsZHM6IFt7bmFtZTogJ3ZhbHVlJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XSxcbiAgICAgIHJvd3M6IFtbMV0sIFsyXV1cbiAgICB9KTtcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBtYWtlVGFibGUoJ3NlY29uZGFyeScsIHtcbiAgICAgIGZpZWxkczogW3tuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1dLFxuICAgICAgcm93czogW1sxXSwgWzNdXVxuICAgIH0pO1xuXG4gICAgbGV0IHN0YXRlID0gd2l0aFN5bmNlZEZpbHRlcihwcmltYXJ5LCBzZWNvbmRhcnksICd2YWx1ZScpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5zZWNvbmRhcnkuZmlsdGVyUmVjb3JkPy5ncHUpLnRvSGF2ZUxlbmd0aCgxKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3NlY29uZGFyeScsICd2YWx1ZScsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZGF0YUlkKS50b0VxdWFsKFsncHJpbWFyeSddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5uYW1lKS50b0VxdWFsKFsndmFsdWUnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgncmFuZ2UnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuc2Vjb25kYXJ5LmZpbHRlclJlY29yZCkudG9NYXRjaE9iamVjdCh7XG4gICAgICBkeW5hbWljRG9tYWluOiBbXSxcbiAgICAgIGZpeGVkRG9tYWluOiBbXSxcbiAgICAgIGNwdTogW10sXG4gICAgICBncHU6IFtdXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NoYW5naW5nIGEgc3luY2VkIHNlY29uZGFyeSBkYXRhc2V0IGRvZXMgbm90IHJlY29uY2lsZSB0aGUgcHJpbWFyeSBwbG90IGF4aXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbWFrZUV2ZW50cyA9IChpZDogc3RyaW5nKSA9PlxuICAgICAgbWFrZVRhYmxlKGlkLCB7XG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICAgIHtuYW1lOiAnYW1vdW50JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XG4gICAgICAgIF0sXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICBbMV83MDBfMDAwXzAwMCwgMTBdLFxuICAgICAgICAgIFsxXzcwMF8wMDBfMDIwLCAyMF1cbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgY29uc3QgcHJpbWFyeSA9IG1ha2VFdmVudHMoJ3ByaW1hcnknKTtcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBtYWtlRXZlbnRzKCdzZWNvbmRhcnknKTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoU3luY2VkRmlsdGVyKHByaW1hcnksIHNlY29uZGFyeSwgJ3N0YXJ0Jyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlclBsb3QoMCwge3lBeGlzOiBzdGF0ZS5kYXRhc2V0cy5wcmltYXJ5LmZpZWxkc1sxXX0pXG4gICAgKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3NlY29uZGFyeScsICdhbW91bnQnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnlBeGlzKS50b01hdGNoT2JqZWN0KHtuYW1lOiAnYW1vdW50JywgdHlwZTogJ2ludGVnZXInfSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ucGxvdFR5cGUudHlwZSkudG9CZSgnbGluZUNoYXJ0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RldGFjaGluZyBhIHN5bmNlZCBwcmltYXJ5IGRhdGFzZXQgcmVidWlsZHMgdGhlIHBsb3QgZm9yIHRoZSBuZXcgcHJpbWFyeScsICgpID0+IHtcbiAgICBjb25zdCBwcmltYXJ5ID0gbWFrZVRhYmxlKCdwcmltYXJ5Jywge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICB7bmFtZTogJ2Ftb3VudCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIHJvd3M6IFtcbiAgICAgICAgWzFfNzAwXzAwMF8wMDAsIDEwXSxcbiAgICAgICAgWzFfNzAwXzAwMF8wMjAsIDIwXVxuICAgICAgXVxuICAgIH0pO1xuICAgIGNvbnN0IHNlY29uZGFyeSA9IG1ha2VUYWJsZSgnc2Vjb25kYXJ5Jywge1xuICAgICAgZmllbGRzOiBbe25hbWU6ICdzdGFydCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J31dLFxuICAgICAgcm93czogW1sxXzcwMF8wMDBfMDQwXSwgWzFfNzAwXzAwMF8wNjBdXVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHdpdGhTeW5jZWRGaWx0ZXIocHJpbWFyeSwgc2Vjb25kYXJ5LCAnc3RhcnQnKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyUGxvdCgwLCB7eUF4aXM6IHN0YXRlLmRhdGFzZXRzLnByaW1hcnkuZmllbGRzWzFdfSlcbiAgICApO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmxpbmVDaGFydCkudG9CZURlZmluZWQoKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3ByaW1hcnknLCAnc3RhcnQnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3NlY29uZGFyeSddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5uYW1lKS50b0VxdWFsKFsnc3RhcnQnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgndGltZVJhbmdlJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ueUF4aXMpLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ucGxvdFR5cGUudHlwZSkudG9CZSgnaGlzdG9ncmFtJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0KS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2dyb3VwZWQgdGltZWxpbmUgc2VyaWVzIHN1cnZpdmUgYSByZW5hbWUgYW5kIHJlYnVpbGQgd2hlbiBncm91cCB2YWx1ZXMgY29sbGFwc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRzID0gbWFrZVRhYmxlKCdldmVudHMnLCB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge25hbWU6ICdzdGFydCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J30sXG4gICAgICAgIHtuYW1lOiAnZ3JvdXAnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICdhbW91bnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsxXzcwMF8wMDBfMDAwLCAnMDEnLCAxMF0sXG4gICAgICAgIFsxXzcwMF8wMDBfMDIwLCAnMScsIDIwXVxuICAgICAgXVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHdpdGhGaWx0ZXIod2l0aFRhYmxlcyhldmVudHMpLCAnZXZlbnRzJywgJ3N0YXJ0Jyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlclBsb3QoMCwge3lBeGlzOiBzdGF0ZS5kYXRhc2V0cy5ldmVudHMuZmllbGRzWzJdfSlcbiAgICApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoXG4gICAgICBzdGF0ZSxcbiAgICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJQbG90KDAsIHtcbiAgICAgICAgcGxvdFR5cGU6IHtncm91cEJ5OiB7ZmllbGROYW1lOiAnZ3JvdXAnLCBudW1Hcm91cHM6ICdBTEwnLCBncm91cE90aGVyczogZmFsc2V9fVxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IHNlcmllc0JlZm9yZSA9IHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0Py5zZXJpZXMgYXMge25hbWVzPzogc3RyaW5nW119O1xuICAgIGV4cGVjdChuZXcgU2V0KHNlcmllc0JlZm9yZS5uYW1lcykpLnRvRXF1YWwobmV3IFNldChbJzAxJywgJzEnXSkpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJlbmFtZVRhYmxlQ29sdW1uKCdldmVudHMnLCAnZ3JvdXAnLCAnY2F0ZWdvcnknKSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0Py5zZXJpZXMpLnRvRXF1YWwoc2VyaWVzQmVmb3JlKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5wbG90VHlwZS5ncm91cEJ5LmZpZWxkTmFtZSkudG9CZSgnY2F0ZWdvcnknKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuZXZlbnRzLmZpZWxkc1sxXS50eXBlKS50b0JlKEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnZXZlbnRzJywgJ2NhdGVnb3J5JywgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIpO1xuXG4gICAgY29uc3QgbmFtZXNBZnRlciA9IChzdGF0ZS5maWx0ZXJzWzBdLmxpbmVDaGFydD8uc2VyaWVzIGFzIHtuYW1lcz86IHN0cmluZ1tdfSkubmFtZXM7XG4gICAgZXhwZWN0KG5ldyBTZXQobmFtZXNBZnRlcikpLnRvRXF1YWwobmV3IFNldChbJzEnXSkpO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBjbGVhcnMgYW4gaW50ZXJ2YWwgZW5kIGZpZWxkIHRoYXQgaXMgbm8gbG9uZ2VyIGEgdGltZXN0YW1wJywgKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50cyA9IG1ha2VUYWJsZSgnZXZlbnRzJywge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICB7bmFtZTogJ2VuZCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J30sXG4gICAgICAgIHtuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsxXzcwMF8wMDBfMDAwLCAxXzcwMF8wODZfNDAwLCAxMF0sXG4gICAgICAgIFsxXzcwMF8wMDBfMDIwLCAxXzcwMF8xNzJfODAwLCAyMF1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoVGFibGVzKGV2ZW50cyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLmFkZENoYXJ0KHtcbiAgICAgICAgaWQ6ICdldmVudHMtY2hhcnQnLFxuICAgICAgICB0aXRsZTogJ0V2ZW50cycsXG4gICAgICAgIHR5cGU6ICdiYXJDaGFydCcsXG4gICAgICAgIGRhdGFJZDogJ2V2ZW50cycsXG4gICAgICAgIGFwcGx5RmlsdGVyczogdHJ1ZSxcbiAgICAgICAgZGlzcGxheToge30sXG4gICAgICAgIGNoYXJ0RGlzcGxheToge30sXG4gICAgICAgIHhBeGlzOiB7XG4gICAgICAgICAgZmllbGQ6IHtuYW1lOiAnZW5kJywgdHlwZTogJ3RpbWVzdGFtcCd9LFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uOiAndGltZUJpbicsXG4gICAgICAgICAgaW50ZXJ2YWw6ICdkYXknLFxuICAgICAgICAgIHRpdGxlOiAnZW5kJ1xuICAgICAgICB9LFxuICAgICAgICB5QXhpczoge2ZpZWxkOiB7bmFtZTogJ3ZhbHVlJywgdHlwZTogJ2ludGVnZXInfSwgYWdncmVnYXRpb246ICdzdW0nLCB0aXRsZTogJ3ZhbHVlJ31cbiAgICAgIH0pXG4gICAgKTtcbiAgICBzdGF0ZSA9IHdpdGhGaWx0ZXIoc3RhdGUsICdldmVudHMnLCAnc3RhcnQnKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyKDAsICdlbmROYW1lJywgJ2VuZCcsIDApKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyUGxvdCgwLCB7eUF4aXM6IHN0YXRlLmRhdGFzZXRzLmV2ZW50cy5maWVsZHNbMl19KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZW5kTmFtZSkudG9FcXVhbChbJ2VuZCddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS55QXhpcz8ubmFtZSkudG9CZSgndmFsdWUnKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2V2ZW50cycsICd2YWx1ZScsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnlBeGlzKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnBsb3RUeXBlLnR5cGUpLnRvQmUoJ2hpc3RvZ3JhbScpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmVuZE5hbWUpLnRvRXF1YWwoWydlbmQnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS55QXhpcykudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWVsZDoge25hbWU6ICd2YWx1ZScsIHR5cGU6ICdzdHJpbmcnfSxcbiAgICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJ1xuICAgIH0pO1xuICAgIGxldCB0aW1lRmlsdGVyID0gc3RhdGUuZmlsdGVyc1swXSBhcyBUaW1lUmFuZ2VGaWx0ZXI7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aW1lRmlsdGVyLnBsb3RUeXBlLmludGVydmFsO1xuICAgIGNvbnN0IGludGVydmFsQmlucyA9IHRpbWVGaWx0ZXIudGltZUJpbnM/LmV2ZW50cz8uW2ludGVydmFsXTtcbiAgICBleHBlY3QoaW50ZXJ2YWxCaW5zPy5yZWR1Y2UoKHN1bSwgYmluKSA9PiBzdW0gKyBiaW4uY291bnQsIDApKS50b0JlR3JlYXRlclRoYW4oMik7XG5cbiAgICBzdGF0ZSA9IGNoYW5nZVR5cGUoc3RhdGUsICdldmVudHMnLCAnZW5kJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgndGltZVJhbmdlJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZW5kTmFtZSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmVuZEZpZWxkSWR4KS50b0JlVW5kZWZpbmVkKCk7XG4gICAgdGltZUZpbHRlciA9IHN0YXRlLmZpbHRlcnNbMF0gYXMgVGltZVJhbmdlRmlsdGVyO1xuICAgIGNvbnN0IGJpbnMgPSB0aW1lRmlsdGVyLnRpbWVCaW5zPy5ldmVudHM/LltpbnRlcnZhbF07XG4gICAgZXhwZWN0KGJpbnM/LnJlZHVjZSgoc3VtLCBiaW4pID0+IHN1bSArIGJpbi5jb3VudCwgMCkpLnRvQmUoMik7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS54QXhpcykudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWVsZDoge25hbWU6ICdlbmQnLCB0eXBlOiAnc3RyaW5nJ30sXG4gICAgICBhZ2dyZWdhdGlvbjogJ3VuaXF1ZUJpbidcbiAgICB9KTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnhBeGlzPy5pbnRlcnZhbCkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICB0ZXN0KCdpbnZhbGlkIHR5cGUgY2hhbmdlIGlzIGF0b21pYyBhbmQgc2NoZWR1bGVzIGEgcHJlY2lzZSBlcnJvcicsICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHdpdGhDaXRpZXMoKTtcbiAgICBjb25zdCBuZXh0ID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2NpdGllcycsICdyZWdpb24nLCBBTExfRklFTERfVFlQRVMuaW50ZWdlcik7XG5cbiAgICBleHBlY3QobmV4dC5kYXRhc2V0cy5jaXRpZXMpLnRvQmUoc3RhdGUuZGF0YXNldHMuY2l0aWVzKTtcbiAgICBleHBlY3QobmV4dC5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gJ3JlZ2lvbicpPy50eXBlKS50b0JlKFxuICAgICAgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ1xuICAgICk7XG4gICAgZXhwZWN0KG5leHQuZGF0YXNldHMuY2l0aWVzLmRhdGFDb250YWluZXIucm93QXNBcnJheSgwKVsyXSkudG9CZSgnd2VzdCcpO1xuXG4gICAgY29uc3QgdGFza3MgPSBkcmFpblRhc2tzRm9yVGVzdGluZygpO1xuICAgIGV4cGVjdCh0YXNrcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHN1Y2NlZWRUYXNrSW5UZXN0KHRhc2tzWzBdLCB1bmRlZmluZWQpO1xuICAgIGV4cGVjdChub3RpZmljYXRpb24ucGF5bG9hZC5tZXNzYWdlKS50b0NvbnRhaW4oXG4gICAgICAnQ2Fubm90IGNoYW5nZSDigJxyZWdpb27igJ0gdG8gaW50ZWdlcjogcm93IDEgdmFsdWUg4oCcd2VzdOKAnSBpcyBub3QgYSBzYWZlIGludGVnZXInXG4gICAgKTtcbiAgICBleHBlY3Qobm90aWZpY2F0aW9uLnBheWxvYWQubWVzc2FnZSkudG9Db250YWluKCdObyB2YWx1ZXMgd2VyZSBjaGFuZ2VkLicpO1xuICB9KTtcblxuICB0ZXN0KCdsYXRlIGNvbHVtbiBzdGF0aXN0aWNzIGNhbm5vdCBvdmVyd3JpdGUgYSBjaGFuZ2VkIGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmxvYWRDb2x1bW5TdGF0cygnY2l0aWVzJywgJ3BvcCcpKTtcbiAgICBjb25zdCByZXF1ZXN0UmV2aXNpb24gPSBzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZGF0YVJldmlzaW9uO1xuICAgIGNvbnN0IFt0YXNrXSA9IGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gICAgY29uc3QgcmVzdWx0ID0ge3R5cGU6ICdudW1lcmljJywgbWVhbjogMjV9O1xuICAgIGNvbnN0IHN0YWxlU3VjY2VzcyA9IHN1Y2NlZWRUYXNrSW5UZXN0KHRhc2ssIHtcbiAgICAgIHJlc3VsdCxcbiAgICAgIGZpbHRlclByb3BzOiB7dHlwZTogRklMVEVSX1RZUEVTLnJhbmdlfVxuICAgIH0pO1xuICAgIGV4cGVjdChzdGFsZVN1Y2Nlc3MpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZmllbGRUeXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlclxuICAgIH0pO1xuXG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnY2l0aWVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZGF0YVJldmlzaW9uKS50b0JlKHJlcXVlc3RSZXZpc2lvbiArIDEpO1xuICAgIGNvbnN0IGNoYW5nZWRTdGF0ZSA9IHN0YXRlO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgc3RhbGVTdWNjZXNzKTtcblxuICAgIGV4cGVjdChzdGF0ZSkudG9CZShjaGFuZ2VkU3RhdGUpO1xuICAgIGNvbnN0IGNoYW5nZWRGaWVsZCA9IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSAncG9wJyk7XG4gICAgZXhwZWN0KGNoYW5nZWRGaWVsZCkudG9NYXRjaE9iamVjdCh7dHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30pO1xuICAgIGV4cGVjdChjaGFuZ2VkRmllbGQpLm5vdC50b0hhdmVQcm9wZXJ0eSgnaXNMb2FkaW5nU3RhdHMnKTtcbiAgICBleHBlY3QoXG4gICAgICBzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gJ3BvcCcpPy5maWx0ZXJQcm9wcz8uY29sdW1uU3RhdHNcbiAgICApLm5vdC50b0JlKHJlc3VsdCk7XG4gIH0pO1xuXG4gIHRlc3QuZWFjaChbJ3JlZnJlc2gnLCAnYXBwZW5kJ10pKCdwZW5kaW5nIHN0YXRpc3RpY3MgY29tcGxldGUgYWZ0ZXIgYSBub3JtYWwgJXMnLCB1cGRhdGUgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHdpdGhDaXRpZXMoKTtcbiAgICBjb25zdCB0eXBlcyA9IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLnR5cGUpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5sb2FkQ29sdW1uU3RhdHMoJ2NpdGllcycsICdwb3AnKSk7XG4gICAgY29uc3QgW3Rhc2tdID0gZHJhaW5UYXNrc0ZvclRlc3RpbmcoKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucGluVGFibGVDb2x1bW4oJ2NpdGllcycsICdyZWdpb24nKSk7XG4gICAgY29uc3Qgcm93ID0gWzQxLCAtNzUsICdub3J0aCcsIDUwXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICB1cGRhdGUgPT09ICdyZWZyZXNoJ1xuICAgICAgICA/IFZpc1N0YXRlQWN0aW9ucy5yZWZyZXNoRGF0YXNldFN1Y2Nlc3MoJ2NpdGllcycsIHtcbiAgICAgICAgICAgIG5vdE1vZGlmaWVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IHtmaWVsZHM6IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMsIHJvd3M6IFtyb3ddfVxuICAgICAgICAgIH0pXG4gICAgICAgIDogVmlzU3RhdGVBY3Rpb25zLmFkZFRvRGF0YXNldCgnY2l0aWVzJywgW3Jvd10pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHt0eXBlOiAnbnVtZXJpYycsIG1lYW46IDI1fTtcbiAgICBjb25zdCBzdWNjZXNzU3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgc3VjY2VlZFRhc2tJblRlc3QodGFzaywge3Jlc3VsdCwgZmlsdGVyUHJvcHM6IHt0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2V9fSlcbiAgICApO1xuICAgIGNvbnN0IGxvZ0Vycm9yID0gamVzdC5zcHlPbihjb25zb2xlLCAnZXJyb3InKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdW5kZWZpbmVkKTtcbiAgICBjb25zdCBlcnJvclN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIGVycm9yVGFza0luVGVzdCh0YXNrLCBuZXcgRXJyb3IoJ3N0YXRzIGZhaWxlZCcpKSk7XG4gICAgbG9nRXJyb3IubW9ja1Jlc3RvcmUoKTtcblxuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC50eXBlKSkudG9FcXVhbCh0eXBlcyk7XG4gICAgZXhwZWN0KHN1Y2Nlc3NTdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzWzNdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGlzTG9hZGluZ1N0YXRzOiBmYWxzZSxcbiAgICAgIGZpbHRlclByb3BzOiB7Y29sdW1uU3RhdHM6IHJlc3VsdH1cbiAgICB9KTtcbiAgICBleHBlY3QoZXJyb3JTdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzWzNdLmlzTG9hZGluZ1N0YXRzKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmRhdGFDb250YWluZXIucm93QXNBcnJheSh1cGRhdGUgPT09ICdyZWZyZXNoJyA/IDAgOiAyKSkudG9FcXVhbChcbiAgICAgIHJvd1xuICAgICk7XG4gIH0pO1xuXG4gIHRlc3QoJ2R1cGxpY2F0ZSByZW5hbWUgYW5kIG5vbi10YWJ1bGFyIGRhdGFzZXRzIGFyZSBpZ25vcmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gd2l0aENpdGllcygpO1xuICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMucmVuYW1lVGFibGVDb2x1bW4oJ2NpdGllcycsICdyZWdpb24nLCAncG9wJylcbiAgICApO1xuICAgIGV4cGVjdChkdXBsaWNhdGUpLnRvQmUoc3RhdGUpO1xuXG4gICAgY29uc3QgdGlsZXMgPSBuZXcgS2VwbGVyVGFibGUoe1xuICAgICAgaW5mbzoge2lkOiAndGlsZXMnLCBsYWJlbDogJ3RpbGVzJywgdHlwZTogJ3ZlY3Rvci10aWxlJ30sXG4gICAgICBjb2xvcjogWzAsIDAsIDBdXG4gICAgfSk7XG4gICAgdGlsZXMudXBkYXRlU2NoZW1hKHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9LFxuICAgICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIHJvd3M6IFtbJ3dlc3QnLCAxXV1cbiAgICB9KTtcbiAgICBjb25zdCB0aWxlZDogVmlzU3RhdGUgPSB7Li4uSU5JVElBTF9WSVNfU1RBVEUsIGRhdGFzZXRzOiB7dGlsZXN9fTtcbiAgICBjb25zdCB1bmNoYW5nZWQgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHRpbGVkLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnJlbmFtZVRhYmxlQ29sdW1uKCd0aWxlcycsICdyZWdpb24nLCAnYXJlYScpXG4gICAgKTtcbiAgICBleHBlY3QodW5jaGFuZ2VkKS50b0JlKHRpbGVkKTtcbiAgICBleHBlY3QocmVkdWNlVmlzU3RhdGUodGlsZWQsIFZpc1N0YXRlQWN0aW9ucy5kZWxldGVUYWJsZUNvbHVtbigndGlsZXMnLCAncG9wJykpKS50b0JlKHRpbGVkKTtcbiAgICBleHBlY3QoY2hhbmdlVHlwZSh0aWxlZCwgJ3RpbGVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpKS50b0JlKHRpbGVkKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXh0ZXJuYWxseSBob3N0ZWQgZGF0YXNldHMgaWdub3JlIHJlbmFtZSBhbmQgZGVsZXRlJywgKCkgPT4ge1xuICAgIGNvbnN0IHJlbW90ZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgICBpbmZvOiB7aWQ6ICdyZW1vdGUnLCBsYWJlbDogJ3JlbW90ZScsIHR5cGU6ICdleHRlcm5hbGx5LWhvc3RlZCd9LFxuICAgICAgY29sb3I6IFswLCAwLCAwXVxuICAgIH0pO1xuICAgIHJlbW90ZS51cGRhdGVTY2hlbWEoe1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZywgZGlzcGxheU5hbWU6ICdSZWdpb24nfSxcbiAgICAgICAge25hbWU6ICdwb3AnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbWyd3ZXN0JywgMV1dXG4gICAgfSk7XG4gICAgY29uc3Qgc3RhdGU6IFZpc1N0YXRlID0gey4uLklOSVRJQUxfVklTX1NUQVRFLCBkYXRhc2V0czoge3JlbW90ZX19O1xuXG4gICAgZXhwZWN0KFxuICAgICAgcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbigncmVtb3RlJywgJ3JlZ2lvbicsICdhcmVhJykpXG4gICAgKS50b0JlKHN0YXRlKTtcbiAgICBleHBlY3QocmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5kZWxldGVUYWJsZUNvbHVtbigncmVtb3RlJywgJ3BvcCcpKSkudG9CZShzdGF0ZSk7XG4gICAgZXhwZWN0KGNoYW5nZVR5cGUoc3RhdGUsICdyZW1vdGUnLCAncG9wJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZykpLnRvQmUoc3RhdGUpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5yZW1vdGUuZmllbGRzWzBdLmRpc3BsYXlOYW1lKS50b0JlKCdSZWdpb24nKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQ0VBLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxZQUFZLEVBQ1pDLFVBQVUsRUFDVkMsVUFBVSxRQUNMLHNCQUFzQjtBQUM3QixTQUFRQyxlQUFlLFFBQU8sb0JBQW9CO0FBQ2xELFNBQVFDLFdBQVcsUUFBTyxrQkFBa0I7QUFDNUMsT0FBT0MsYUFBYSxNQUFrQixvQkFBb0I7QUFDMUQsU0FBUUMsb0JBQW9CLEVBQUVDLGVBQWUsRUFBRUMsaUJBQWlCLFFBQU8sa0JBQWtCO0FBR3pGLE9BQU9DLGVBQWUsTUFBTSxhQUFhO0FBQ3pDLFNBQVFDLGlCQUFpQixRQUFPLHNCQUFzQjtBQUV0RCxJQUFNQyxjQUFjLEdBQUdGLGVBQWlFO0FBRXhGLFNBQVNHLFNBQVNBLENBQUNDLEVBQVUsRUFBRUMsSUFBZ0QsRUFBRTtFQUMvRSxJQUFNQyxLQUFLLEdBQUcsSUFBSVgsV0FBVyxDQUFDO0lBQzVCWSxJQUFJLEVBQUU7TUFBQ0gsRUFBRSxFQUFGQSxFQUFFO01BQUVJLEtBQUssRUFBRUosRUFBRTtNQUFFSyxJQUFJLEVBQUU7SUFBTyxDQUFDO0lBQ3BDQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7RUFDakIsQ0FBQyxDQUFDO0VBQ0YsT0FBT0osS0FBSyxDQUFDSyxZQUFZLENBQUNOLElBQUksQ0FBQztBQUNqQztBQUVBLFNBQVNPLFVBQVVBLENBQUEsRUFBcUM7RUFBQSxTQUFBQyxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFqQ0MsTUFBTSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtJQUFORixNQUFNLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO0VBQUE7RUFDM0IsT0FBQUMsYUFBQSxDQUFBQSxhQUFBLEtBQ0tsQixpQkFBaUI7SUFDcEJtQixRQUFRLEVBQUVDLE1BQU0sQ0FBQ0MsV0FBVyxDQUFDTixNQUFNLENBQUNPLEdBQUcsQ0FBQyxVQUFBakIsS0FBSztNQUFBLE9BQUksQ0FBQ0EsS0FBSyxDQUFDRixFQUFFLEVBQUVFLEtBQUssQ0FBQztJQUFBLEVBQUM7RUFBQztBQUV4RTtBQUVBLFNBQVNrQixVQUFVQSxDQUFDQyxLQUFlLEVBQUVDLE1BQWMsRUFBRUMsTUFBYyxFQUFZO0VBQzdFLE9BQU96QixjQUFjLENBQUN1QixLQUFLLEVBQUUvQixlQUFlLENBQUNrQyxvQkFBb0IsQ0FBQ0MsU0FBUyxFQUFFSCxNQUFNLEVBQUVDLE1BQU0sQ0FBQyxDQUFDO0FBQy9GO0FBRUEsU0FBU0csZ0JBQWdCQSxDQUFDQyxPQUFvQixFQUFFQyxTQUFzQixFQUFFTCxNQUFjLEVBQVk7RUFDaEcsT0FBT3pCLGNBQWMsQ0FDbkJzQixVQUFVLENBQUNaLFVBQVUsQ0FBQ21CLE9BQU8sRUFBRUMsU0FBUyxDQUFDLEVBQUVELE9BQU8sQ0FBQzNCLEVBQUUsRUFBRXVCLE1BQU0sQ0FBQyxFQUM5RGpDLGVBQWUsQ0FBQ3VDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQ0QsU0FBUyxDQUFDNUIsRUFBRSxFQUFFdUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUM1RSxDQUFDO0FBQ0g7QUFFQSxTQUFTTyxVQUFVQSxDQUFDVCxLQUFlLEVBQUVDLE1BQWMsRUFBRUMsTUFBYyxFQUFFbEIsSUFBWSxFQUFZO0VBQzNGLE9BQU9QLGNBQWMsQ0FBQ3VCLEtBQUssRUFBRS9CLGVBQWUsQ0FBQ3lDLHFCQUFxQixDQUFDVCxNQUFNLEVBQUVDLE1BQU0sRUFBRWxCLElBQUksQ0FBQyxDQUFDO0FBQzNGO0FBRUEsU0FBUzJCLFVBQVVBLENBQUEsRUFBRztFQUNwQixJQUFNOUIsS0FBSyxHQUFHLElBQUlYLFdBQVcsQ0FBQztJQUM1QlksSUFBSSxFQUFFO01BQUNILEVBQUUsRUFBRSxRQUFRO01BQUVJLEtBQUssRUFBRSxRQUFRO01BQUVDLElBQUksRUFBRTtJQUFPLENBQUM7SUFDcERDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztFQUNqQixDQUFDLENBQUM7RUFDRkosS0FBSyxDQUFDSyxZQUFZLENBQUM7SUFDakIwQixNQUFNLEVBQUUsQ0FDTjtNQUFDQyxJQUFJLEVBQUUsS0FBSztNQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDa0Q7SUFBSSxDQUFDLEVBQ3pDO01BQUNELElBQUksRUFBRSxLQUFLO01BQUU3QixJQUFJLEVBQUVwQixlQUFlLENBQUNrRDtJQUFJLENBQUMsRUFDekM7TUFBQ0QsSUFBSSxFQUFFLFFBQVE7TUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQ21EO0lBQU0sQ0FBQyxFQUM5QztNQUFDRixJQUFJLEVBQUUsS0FBSztNQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDb0Q7SUFBTyxDQUFDLENBQzdDO0lBQ0RDLElBQUksRUFBRSxDQUNKLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFDMUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztFQUU3QixDQUFDLENBQUM7RUFDRixPQUFPcEMsS0FBSztBQUNkO0FBRUEsU0FBU3FDLFVBQVVBLENBQUEsRUFBYTtFQUM5QixJQUFNQyxNQUFNLEdBQUdSLFVBQVUsQ0FBQyxDQUFDO0VBQzNCLElBQUlYLEtBQWUsR0FBQU4sYUFBQSxDQUFBQSxhQUFBLEtBQ2RsQixpQkFBaUI7SUFDcEJtQixRQUFRLEVBQUU7TUFBQ3dCLE1BQU0sRUFBTkE7SUFBTSxDQUFDO0lBQ2xCQyxpQkFBaUIsRUFBQTFCLGFBQUEsQ0FBQUEsYUFBQSxLQUNabEIsaUJBQWlCLENBQUM0QyxpQkFBaUI7TUFDdENDLE9BQU8sRUFBQTNCLGFBQUEsQ0FBQUEsYUFBQSxLQUNGbEIsaUJBQWlCLENBQUM0QyxpQkFBaUIsQ0FBQ0MsT0FBTztRQUM5Q0MsTUFBTSxFQUFBNUIsYUFBQSxDQUFBQSxhQUFBLEtBQ0RsQixpQkFBaUIsQ0FBQzRDLGlCQUFpQixDQUFDQyxPQUFPLENBQUNDLE1BQU07VUFDckRDLFlBQVksRUFBRTtZQUNaSixNQUFNLEVBQUUsQ0FBQztjQUFDTixJQUFJLEVBQUUsUUFBUTtjQUFFVyxNQUFNLEVBQUU7WUFBSSxDQUFDO1VBQ3pDO1FBQUM7TUFDRjtJQUNGO0VBQ0YsRUFDRjtFQUVEeEIsS0FBSyxHQUFHdkIsY0FBYyxDQUNwQnVCLEtBQUssRUFDTC9CLGVBQWUsQ0FBQ3dELFFBQVEsQ0FBQztJQUN2QjlDLEVBQUUsRUFBRSxjQUFjO0lBQ2xCSyxJQUFJLEVBQUUsT0FBTztJQUNic0MsTUFBTSxFQUFFO01BQ05yQixNQUFNLEVBQUUsUUFBUTtNQUNoQmxCLEtBQUssRUFBRSxRQUFRO01BQ2ZFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQ2xCeUMsT0FBTyxFQUFFO1FBQUNDLEdBQUcsRUFBRSxLQUFLO1FBQUVDLEdBQUcsRUFBRTtNQUFLLENBQUM7TUFDakNDLFVBQVUsRUFBRTtRQUFDaEIsSUFBSSxFQUFFLFFBQVE7UUFBRTdCLElBQUksRUFBRTtNQUFRLENBQUM7TUFDNUM4QyxTQUFTLEVBQUUsQ0FBQztRQUFDQyxLQUFLLEVBQUU7VUFBQ2xCLElBQUksRUFBRSxRQUFRO1VBQUU3QixJQUFJLEVBQUU7UUFBUTtNQUFDLENBQUM7SUFDdkQ7RUFDRixDQUFDLENBQ0gsQ0FBQztFQUNEZ0IsS0FBSyxHQUFHdkIsY0FBYyxDQUNwQnVCLEtBQUssRUFDTC9CLGVBQWUsQ0FBQ2tDLG9CQUFvQixDQUFDQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FDcEUsQ0FBQztFQUNESixLQUFLLEdBQUd2QixjQUFjLENBQ3BCdUIsS0FBSyxFQUNML0IsZUFBZSxDQUFDK0QsUUFBUSxDQUFDO0lBQ3ZCckQsRUFBRSxFQUFFLGNBQWM7SUFDbEJzRCxLQUFLLEVBQUUsU0FBUztJQUNoQmpELElBQUksRUFBRSxVQUFVO0lBQ2hCaUIsTUFBTSxFQUFFLFFBQVE7SUFDaEJpQyxZQUFZLEVBQUUsSUFBSTtJQUNsQkMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNYQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCQyxLQUFLLEVBQUU7TUFBQ04sS0FBSyxFQUFFO1FBQUNsQixJQUFJLEVBQUUsUUFBUTtRQUFFN0IsSUFBSSxFQUFFO01BQVEsQ0FBQztNQUFFc0QsV0FBVyxFQUFFLElBQUk7TUFBRUwsS0FBSyxFQUFFO0lBQVEsQ0FBQztJQUNwRk0sS0FBSyxFQUFFO01BQUNSLEtBQUssRUFBRTtRQUFDbEIsSUFBSSxFQUFFLEtBQUs7UUFBRTdCLElBQUksRUFBRTtNQUFTLENBQUM7TUFBRXNELFdBQVcsRUFBRSxLQUFLO01BQUVMLEtBQUssRUFBRTtJQUFZLENBQUM7SUFDdkZPLFdBQVcsRUFBRTtNQUNYQyxPQUFPLEVBQUUsS0FBSztNQUNkQyxRQUFRLEVBQUUscUJBQXFCO01BQy9CQyxVQUFVLEVBQUU7UUFBQ04sS0FBSyxFQUFFO01BQVEsQ0FBQztNQUM3Qk8sS0FBSyxFQUFFLENBQUM7SUFDVjtFQUNGLENBQUMsQ0FDSCxDQUFDO0VBQ0QsT0FBTzVDLEtBQUs7QUFDZDtBQUVBNkMsUUFBUSxDQUFDLGNBQWMsRUFBRSxZQUFNO0VBQzdCQyxVQUFVLENBQUMsWUFBTTtJQUNmMUUsb0JBQW9CLENBQUMsQ0FBQztFQUN4QixDQUFDLENBQUM7RUFFRjJFLElBQUksQ0FBQyw2RUFBNkUsRUFBRSxZQUFNO0lBQUEsSUFBQUMscUJBQUEsRUFBQUMscUJBQUEsRUFBQUMscUJBQUEsRUFBQUMscUJBQUEsRUFBQUMscUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMscUJBQUE7SUFDeEYsSUFBSXhELEtBQUssR0FBR2tCLFVBQVUsQ0FBQyxDQUFDO0lBQ3hCbEIsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNzQyxhQUFhLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0lBQ3ZEQyxNQUFNLENBQUMxRCxLQUFLLENBQUMyRCxNQUFNLENBQUMsQ0FBQ0MsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNwQ0YsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDaEQsSUFBSSxDQUFDLENBQUNpRCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVqRDlELEtBQUssR0FBR3ZCLGNBQWMsQ0FBQ3VCLEtBQUssRUFBRS9CLGVBQWUsQ0FBQzhGLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFNUYsSUFBTUMsTUFBTSxHQUFHaEUsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNQLE1BQU0sQ0FBQ3FELElBQUksQ0FBQyxVQUFBbEMsS0FBSztNQUFBLE9BQUlBLEtBQUssQ0FBQ2xCLElBQUksS0FBSyxNQUFNO0lBQUEsRUFBQztJQUNoRjZDLE1BQU0sQ0FBQ00sTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVuRCxJQUFJLENBQUMsQ0FBQ3FELElBQUksQ0FBQyxNQUFNLENBQUM7SUFDakNSLE1BQU0sQ0FBQ00sTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVyRixFQUFFLENBQUMsQ0FBQ3VGLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDL0JSLE1BQU0sQ0FBQ00sTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVHLFdBQVcsQ0FBQyxDQUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3hDUixNQUFNLENBQUMxRCxLQUFLLENBQUNMLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQ1AsTUFBTSxDQUFDZCxHQUFHLENBQUMsVUFBQWlDLEtBQUs7TUFBQSxPQUFJQSxLQUFLLENBQUNsQixJQUFJO0lBQUEsRUFBQyxDQUFDLENBQUNpRCxPQUFPLENBQUMsQ0FDcEUsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sS0FBSyxDQUNOLENBQUM7SUFDRkosTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNpRCxhQUFhLENBQUNDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRXpFLElBQU1JLEtBQUssR0FBR3RFLEtBQUssQ0FBQzJELE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0JELE1BQU0sQ0FBQ1ksS0FBSyxDQUFDaEQsTUFBTSxDQUFDSSxPQUFPLENBQUNDLEdBQUcsQ0FBQ2lCLEtBQUssQ0FBQyxDQUFDc0IsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNsRFIsTUFBTSxDQUFDWSxLQUFLLENBQUNoRCxNQUFNLENBQUNJLE9BQU8sQ0FBQ0UsR0FBRyxDQUFDZ0IsS0FBSyxDQUFDLENBQUNzQixJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ2xEUixNQUFNLEVBQUFWLHFCQUFBLEdBQUNzQixLQUFLLENBQUNoRCxNQUFNLENBQUNPLFVBQVUsY0FBQW1CLHFCQUFBLHVCQUF2QkEscUJBQUEsQ0FBeUJuQyxJQUFJLENBQUMsQ0FBQ3FELElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbERSLE1BQU0sRUFBQVQscUJBQUEsR0FBQ3FCLEtBQUssQ0FBQ2hELE1BQU0sQ0FBQ1EsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxLQUFLLGNBQUFrQixxQkFBQSx1QkFBL0JBLHFCQUFBLENBQWlDcEMsSUFBSSxDQUFDLENBQUNxRCxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFEUixNQUFNLENBQUMxRCxLQUFLLENBQUM2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNoRCxJQUFJLENBQUMsQ0FBQ2lELE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DSixNQUFNLEVBQUFSLHFCQUFBLEdBQUNsRCxLQUFLLENBQUN1RSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNsQyxLQUFLLGNBQUFhLHFCQUFBLGdCQUFBQSxxQkFBQSxHQUFyQkEscUJBQUEsQ0FBdUJuQixLQUFLLGNBQUFtQixxQkFBQSx1QkFBNUJBLHFCQUFBLENBQThCckMsSUFBSSxDQUFDLENBQUNxRCxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZEUixNQUFNLEVBQUFQLHFCQUFBLEdBQUNuRCxLQUFLLENBQUN1RSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNoQyxLQUFLLGNBQUFZLHFCQUFBLGdCQUFBQSxxQkFBQSxHQUFyQkEscUJBQUEsQ0FBdUJwQixLQUFLLGNBQUFvQixxQkFBQSx1QkFBNUJBLHFCQUFBLENBQThCdEMsSUFBSSxDQUFDLENBQUNxRCxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3REUixNQUFNLEVBQUFOLHFCQUFBLEdBQUNwRCxLQUFLLENBQUN1RSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMvQixXQUFXLGNBQUFZLHFCQUFBLHVCQUEzQkEscUJBQUEsQ0FBNkJULFVBQVUsQ0FBQyxDQUFDbUIsT0FBTyxDQUFDO01BQUN6QixLQUFLLEVBQUU7SUFBTSxDQUFDLENBQUM7SUFDeEVxQixNQUFNLENBQUMxRCxLQUFLLENBQUNvQixpQkFBaUIsQ0FBQ0MsT0FBTyxDQUFDQyxNQUFNLENBQUNDLFlBQVksQ0FBQ0osTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDTixJQUFJLENBQUMsQ0FBQ3FELElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkZSLE1BQU0sQ0FBQzFELEtBQUssQ0FBQ0wsUUFBUSxDQUFDd0IsTUFBTSxDQUFDc0MsYUFBYSxDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVwRSxJQUFNVSxLQUFLLEdBQUdyRyxhQUFhLENBQUNzRyxJQUFJLENBQUM7TUFDL0JDLFFBQVEsRUFBRTFFLEtBQUs7TUFDZjJFLFFBQVEsRUFBRSxDQUFDLENBQUM7TUFDWkMsUUFBUSxFQUFFLENBQUMsQ0FBQztNQUNaQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUMsQ0FBQztJQUNGLElBQU1DLGFBQWEsR0FBR04sS0FBSyxDQUFDbEQsTUFBTSxDQUFDQSxNQUFNLENBQUNvRCxRQUFRO0lBQ2xEaEIsTUFBTSxFQUFBTCxxQkFBQSxHQUFDeUIsYUFBYSxDQUFDbkIsTUFBTSxjQUFBTixxQkFBQSxnQkFBQUEscUJBQUEsR0FBcEJBLHFCQUFBLENBQXVCLENBQUMsQ0FBQyxDQUFDMEIsY0FBYyxjQUFBMUIscUJBQUEsdUJBQXhDQSxxQkFBQSxDQUEwQ3hCLFVBQVUsQ0FBQyxDQUFDaUMsT0FBTyxDQUFDO01BQ25FakQsSUFBSSxFQUFFLE1BQU07TUFDWjdCLElBQUksRUFBRTtJQUNSLENBQUMsQ0FBQztJQUNGMEUsTUFBTSxFQUFBSixzQkFBQSxHQUFDd0IsYUFBYSxDQUFDbkIsTUFBTSxjQUFBTCxzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXVCLENBQUMsQ0FBQyxDQUFDaEMsTUFBTSxDQUFDSSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxDQUFDdUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNoRVIsTUFBTSxFQUFBSCxzQkFBQSxHQUFDdUIsYUFBYSxDQUFDbkIsTUFBTSxjQUFBSixzQkFBQSxnQkFBQUEsc0JBQUEsR0FBcEJBLHNCQUFBLENBQXVCLENBQUMsQ0FBQyxDQUFDakMsTUFBTSxDQUFDUSxTQUFTLGNBQUF5QixzQkFBQSxnQkFBQUEsc0JBQUEsR0FBMUNBLHNCQUFBLENBQTZDLENBQUMsQ0FBQyxDQUFDeEIsS0FBSyxjQUFBd0Isc0JBQUEsdUJBQXJEQSxzQkFBQSxDQUF1RDFDLElBQUksQ0FBQyxDQUFDcUQsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNoRlIsTUFBTSxDQUFDc0IsSUFBSSxDQUFDQyxTQUFTLENBQUNILGFBQWEsQ0FBQ2pCLE9BQU8sQ0FBQyxDQUFDLENBQUNxQixTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9EeEIsTUFBTSxDQUFDc0IsSUFBSSxDQUFDQyxTQUFTLENBQUNILGFBQWEsQ0FBQ2pCLE9BQU8sQ0FBQyxDQUFDLENBQUNzQixHQUFHLENBQUNELFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDckV4QixNQUFNLEVBQUFGLHFCQUFBLEdBQUNzQixhQUFhLENBQUNQLE1BQU0sY0FBQWYscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQXBCQSxxQkFBQSxDQUF1QixDQUFDLENBQUMsQ0FBQ25CLEtBQUssY0FBQW1CLHFCQUFBLGdCQUFBQSxxQkFBQSxHQUEvQkEscUJBQUEsQ0FBaUN6QixLQUFLLGNBQUF5QixxQkFBQSx1QkFBdENBLHFCQUFBLENBQXdDM0MsSUFBSSxDQUFDLENBQUNxRCxJQUFJLENBQUMsTUFBTSxDQUFDO0VBQ25FLENBQUMsQ0FBQztFQUVGbkIsSUFBSSxDQUFDLHFEQUFxRCxFQUFFLFlBQU07SUFBQSxJQUFBcUMsc0JBQUE7SUFDaEUsSUFBSXBGLEtBQUssR0FBR2tCLFVBQVUsQ0FBQyxDQUFDO0lBQ3hCbEIsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNzQyxhQUFhLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0lBQ3ZEekQsS0FBSyxHQUFHdkIsY0FBYyxDQUFDdUIsS0FBSyxFQUFFL0IsZUFBZSxDQUFDb0gsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRWpGM0IsTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNQLE1BQU0sQ0FBQ2QsR0FBRyxDQUFDLFVBQUFpQyxLQUFLO01BQUEsT0FBSUEsS0FBSyxDQUFDbEIsSUFBSTtJQUFBLEVBQUMsQ0FBQyxDQUFDaUQsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvRkosTUFBTSxDQUFDMUQsS0FBSyxDQUFDMkQsTUFBTSxDQUFDLENBQUNDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDcENGLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDRCxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3JDRixNQUFNLEVBQUEwQixzQkFBQSxHQUFDcEYsS0FBSyxDQUFDdUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDaEMsS0FBSyxjQUFBNkMsc0JBQUEsdUJBQXJCQSxzQkFBQSxDQUF1QnJELEtBQUssQ0FBQyxDQUFDdUQsUUFBUSxDQUFDLENBQUM7SUFDL0M1QixNQUFNLENBQUMxRCxLQUFLLENBQUNMLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQ3NDLGFBQWEsQ0FBQyxDQUFDSyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUvRDlELEtBQUssR0FBR3ZCLGNBQWMsQ0FBQ3VCLEtBQUssRUFBRS9CLGVBQWUsQ0FBQ29ILGlCQUFpQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRjNCLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzJELE1BQU0sQ0FBQyxDQUFDQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3BDRixNQUFNLENBQUMxRCxLQUFLLENBQUNMLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQ1AsTUFBTSxDQUFDZCxHQUFHLENBQUMsVUFBQWlDLEtBQUs7TUFBQSxPQUFJQSxLQUFLLENBQUNsQixJQUFJO0lBQUEsRUFBQyxDQUFDLENBQUNpRCxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFeEYsSUFBTXlCLElBQUksR0FBRyxJQUFJckgsV0FBVyxDQUFDO01BQzNCWSxJQUFJLEVBQUU7UUFBQ0gsRUFBRSxFQUFFLE1BQU07UUFBRUksS0FBSyxFQUFFLE1BQU07UUFBRUMsSUFBSSxFQUFFO01BQU8sQ0FBQztNQUNoREMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUNGc0csSUFBSSxDQUFDckcsWUFBWSxDQUFDO01BQ2hCMEIsTUFBTSxFQUFFLENBQUM7UUFBQ0MsSUFBSSxFQUFFLFFBQVE7UUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQ21EO01BQU0sQ0FBQyxDQUFDO01BQ3hERSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFDRixJQUFNdUUsTUFBZ0IsR0FBQTlGLGFBQUEsQ0FBQUEsYUFBQSxLQUFPbEIsaUJBQWlCO01BQUVtQixRQUFRLEVBQUU7UUFBQzRGLElBQUksRUFBSkE7TUFBSTtJQUFDLEVBQUM7SUFDakUsSUFBTUUsSUFBSSxHQUFHaEgsY0FBYyxDQUFDK0csTUFBTSxFQUFFdkgsZUFBZSxDQUFDb0gsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hGM0IsTUFBTSxDQUFDK0IsSUFBSSxDQUFDOUYsUUFBUSxDQUFDNEYsSUFBSSxDQUFDM0UsTUFBTSxDQUFDZCxHQUFHLENBQUMsVUFBQWlDLEtBQUs7TUFBQSxPQUFJQSxLQUFLLENBQUNsQixJQUFJO0lBQUEsRUFBQyxDQUFDLENBQUNpRCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNoRixDQUFDLENBQUM7RUFFRmYsSUFBSSxDQUFDLHNFQUFzRSxFQUFFLFlBQU07SUFDakYsSUFBTWxFLEtBQUssR0FBR0gsU0FBUyxDQUFDLE1BQU0sRUFBRTtNQUM5QmtDLE1BQU0sRUFBRSxDQUNOO1FBQUNDLElBQUksRUFBRSxRQUFRO1FBQUU3QixJQUFJLEVBQUVwQixlQUFlLENBQUNtRDtNQUFNLENBQUMsRUFDOUM7UUFBQ0YsSUFBSSxFQUFFLE9BQU87UUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQ29EO01BQU8sQ0FBQyxFQUM5QztRQUFDSCxJQUFJLEVBQUUsVUFBVTtRQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDbUQ7TUFBTSxDQUFDLENBQ2pEO01BQ0RFLElBQUksRUFBRSxDQUNKLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFDYixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQ2IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUVqQixDQUFDLENBQUM7SUFDRixJQUFJakIsS0FBSyxHQUFHRCxVQUFVLENBQUNaLFVBQVUsQ0FBQ04sS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUM3RG1CLEtBQUssR0FBR3ZCLGNBQWMsQ0FBQ3VCLEtBQUssRUFBRS9CLGVBQWUsQ0FBQ3VDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzRVIsS0FBSyxHQUFHRCxVQUFVLENBQUNDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO0lBQzFDQSxLQUFLLEdBQUd2QixjQUFjLENBQUN1QixLQUFLLEVBQUUvQixlQUFlLENBQUN1QyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFUixLQUFLLEdBQUd2QixjQUFjLENBQUN1QixLQUFLLEVBQUUvQixlQUFlLENBQUN1QyxTQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxJQUFNa0YsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBO01BQUEsSUFBQUMsS0FBQTtNQUFBLFFBQUFBLEtBQUEsR0FDakIzRixLQUFLLENBQUM2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQWlCK0IsSUFBSSxjQUFBRCxLQUFBLGdCQUFBQSxLQUFBLEdBQXRDQSxLQUFBLENBQXdDL0csSUFBSSxjQUFBK0csS0FBQSx1QkFBNUNBLEtBQUEsQ0FBOENFLE1BQU0sQ0FBQyxVQUFDQyxHQUFHLEVBQUVDLEdBQUc7UUFBQSxPQUFLRCxHQUFHLEdBQUdDLEdBQUcsQ0FBQ0MsS0FBSztNQUFBLEdBQUUsQ0FBQyxDQUFDO0lBQUE7SUFDeEZ0QyxNQUFNLENBQUNnQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUN4QixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRWhDbEUsS0FBSyxHQUFHdkIsY0FBYyxDQUFDdUIsS0FBSyxFQUFFL0IsZUFBZSxDQUFDb0gsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRWxGM0IsTUFBTSxDQUFDZ0MsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDeEIsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoQ1IsTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUNmLElBQUksQ0FBQ3FILGFBQWEsQ0FBQyxDQUFDbkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pESixNQUFNLENBQUMxRCxLQUFLLENBQUNMLFFBQVEsQ0FBQ2YsSUFBSSxDQUFDZ0MsTUFBTSxDQUFDZCxHQUFHLENBQUMsVUFBQWlDLEtBQUs7TUFBQSxPQUFJQSxLQUFLLENBQUMvQyxJQUFJO0lBQUEsRUFBQyxDQUFDLENBQUM4RSxPQUFPLENBQUMsQ0FDbEVsRyxlQUFlLENBQUNvRCxPQUFPLEVBQ3ZCcEQsZUFBZSxDQUFDbUQsTUFBTSxDQUN2QixDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZnQyxJQUFJLENBQUMsb0VBQW9FLEVBQUUsWUFBTTtJQUFBLElBQUFtRCxrQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxzQkFBQTtJQUMvRSxJQUFJcEcsS0FBSyxHQUFHa0IsVUFBVSxDQUFDLENBQUM7SUFDeEJsQixLQUFLLEdBQUd2QixjQUFjLENBQ3BCdUIsS0FBSyxFQUNML0IsZUFBZSxDQUFDd0QsUUFBUSxDQUFDO01BQ3ZCOUMsRUFBRSxFQUFFLGdCQUFnQjtNQUNwQkssSUFBSSxFQUFFLFNBQVM7TUFDZnNDLE1BQU0sRUFBRTtRQUNOckIsTUFBTSxFQUFFLFFBQVE7UUFDaEJsQixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQnlDLE9BQU8sRUFBRTtVQUFDQyxHQUFHLEVBQUUsS0FBSztVQUFFQyxHQUFHLEVBQUU7UUFBSyxDQUFDO1FBQ2pDeUUsV0FBVyxFQUFFO1VBQUN4RixJQUFJLEVBQUUsS0FBSztVQUFFN0IsSUFBSSxFQUFFO1FBQVMsQ0FBQztRQUMzQzhDLFNBQVMsRUFBRSxDQUFDO1VBQUNDLEtBQUssRUFBRTtZQUFDbEIsSUFBSSxFQUFFLEtBQUs7WUFBRTdCLElBQUksRUFBRTtVQUFTO1FBQUMsQ0FBQztNQUNyRDtJQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0RnQixLQUFLLEdBQUdTLFVBQVUsQ0FBQ1QsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUVwQyxlQUFlLENBQUNtRCxNQUFNLENBQUM7SUFFbEUsSUFBTXVGLEdBQUcsR0FBR3RHLEtBQUssQ0FBQ0wsUUFBUSxDQUFDd0IsTUFBTSxDQUFDUCxNQUFNLENBQUNxRCxJQUFJLENBQUMsVUFBQWxDLEtBQUs7TUFBQSxPQUFJQSxLQUFLLENBQUNsQixJQUFJLEtBQUssS0FBSztJQUFBLEVBQUM7SUFDNUU2QyxNQUFNLENBQUM0QyxHQUFHLENBQUMsQ0FBQ0MsYUFBYSxDQUFDO01BQUN2SCxJQUFJLEVBQUVwQixlQUFlLENBQUNtRCxNQUFNO01BQUV5RixZQUFZLEVBQUUsUUFBUTtNQUFFaEYsTUFBTSxFQUFFO0lBQUUsQ0FBQyxDQUFDO0lBQzdGa0MsTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNpRCxhQUFhLENBQUNDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZFUixNQUFNLENBQUMxRCxLQUFLLENBQUMyRCxNQUFNLENBQUMsQ0FBQ0MsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNwQ0YsTUFBTSxDQUNKLEVBQUF3QyxrQkFBQSxHQUFDbEcsS0FBSyxDQUFDMkQsTUFBTSxDQUFDTSxJQUFJLENBQUMsVUFBQUssS0FBSztNQUFBLE9BQUlBLEtBQUssQ0FBQzNGLEVBQUUsS0FBSyxnQkFBZ0I7SUFBQSxFQUFDLGNBQUF1SCxrQkFBQSx1QkFBekRBLGtCQUFBLENBQTJENUUsTUFBTSxFQUMvRCtFLFdBQ0wsQ0FBQyxDQUFDZixRQUFRLENBQUMsQ0FBQztJQUNaNUIsTUFBTSxFQUFBeUMsbUJBQUEsR0FDSm5HLEtBQUssQ0FBQzJELE1BQU0sQ0FBQ00sSUFBSSxDQUFDLFVBQUFLLEtBQUs7TUFBQSxPQUFJQSxLQUFLLENBQUMzRixFQUFFLEtBQUssZ0JBQWdCO0lBQUEsRUFBQyxjQUFBd0gsbUJBQUEsdUJBQXpEQSxtQkFBQSxDQUEyRDdFLE1BQU0sQ0FBQ1EsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxLQUNqRixDQUFDLENBQUN3RSxhQUFhLENBQUM7TUFBQzFGLElBQUksRUFBRSxLQUFLO01BQUU3QixJQUFJLEVBQUU7SUFBUSxDQUFDLENBQUM7SUFDOUMwRSxNQUFNLEVBQUEwQyxzQkFBQSxHQUFDcEcsS0FBSyxDQUFDdUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDaEMsS0FBSyxjQUFBNkQsc0JBQUEsdUJBQXJCQSxzQkFBQSxDQUF1QnJFLEtBQUssQ0FBQyxDQUFDK0IsT0FBTyxDQUFDO01BQUNqRCxJQUFJLEVBQUUsS0FBSztNQUFFN0IsSUFBSSxFQUFFO0lBQVEsQ0FBQyxDQUFDO0VBQzdFLENBQUMsQ0FBQztFQUVGK0QsSUFBSSxDQUFDLDZEQUE2RCxFQUFFLFlBQU07SUFBQSxJQUFBMEQscUJBQUEsRUFBQUMsc0JBQUE7SUFDeEUsSUFBSTFHLEtBQUssR0FBR2tCLFVBQVUsQ0FBQyxDQUFDO0lBQ3hCLElBQU15RixhQUE0QixHQUFHO01BQ25DaEksRUFBRSxFQUFFLGdCQUFnQjtNQUNwQnNCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztNQUNsQndDLE9BQU8sRUFBRSxJQUFJO01BQ2JtRSxXQUFXLEVBQUUsSUFBSTtNQUNqQkMsSUFBSSxFQUFFLE1BQU07TUFDWkMsV0FBVyxFQUFFLEtBQUs7TUFDbEJDLEtBQUssRUFBRSxDQUFDO01BQ1JsRyxJQUFJLEVBQUUsRUFBRTtNQUNSN0IsSUFBSSxFQUFFbEIsWUFBWSxDQUFDa0osT0FBTztNQUMxQkMsUUFBUSxFQUFFLEVBQUU7TUFDWkMsTUFBTSxFQUFFLElBQUk7TUFDWnRFLEtBQUssRUFBRTtRQUNMNUQsSUFBSSxFQUFFLFNBQVM7UUFDZkwsRUFBRSxFQUFFLG1CQUFtQjtRQUN2QndJLFVBQVUsRUFBRTtVQUFDekUsUUFBUSxFQUFFO1FBQWdCLENBQUM7UUFDeEMwRSxRQUFRLEVBQUU7VUFDUnBJLElBQUksRUFBRSxTQUFTO1VBQ2ZxSSxXQUFXLEVBQUUsQ0FDWCxDQUNFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQ1YsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDVixDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUNWLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ1g7UUFFTDtNQUNGLENBQUM7TUFDREMsUUFBUSxFQUFFO1FBQUN0SSxJQUFJLEVBQUVqQixVQUFVLENBQUN3SjtNQUFTLENBQUM7TUFDdENoRixLQUFLLEVBQUUsSUFBSTtNQUNYaUYsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO01BQ3pCQyxHQUFHLEVBQUU7SUFDUCxDQUFDO0lBRUR6SCxLQUFLLEdBQUFOLGFBQUEsQ0FBQUEsYUFBQSxLQUFPTSxLQUFLO01BQUU2RCxPQUFPLEtBQUE2RCxNQUFBLENBQUFDLGtCQUFBLENBQU0zSCxLQUFLLENBQUM2RCxPQUFPLElBQUU4QyxhQUFhO0lBQUMsRUFBQztJQUM5RDNHLEtBQUssR0FBR1MsVUFBVSxDQUFDVCxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRXBDLGVBQWUsQ0FBQ21ELE1BQU0sQ0FBQztJQUVsRTJDLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQ0ksSUFBSSxDQUFDLFVBQUEyRCxNQUFNO01BQUEsT0FBSUEsTUFBTSxDQUFDakosRUFBRSxLQUFLZ0ksYUFBYSxDQUFDaEksRUFBRTtJQUFBLEVBQUMsQ0FBQyxDQUFDdUYsSUFBSSxDQUFDeUMsYUFBYSxDQUFDO0lBRXhGM0csS0FBSyxHQUFHdkIsY0FBYyxDQUFDdUIsS0FBSyxFQUFFL0IsZUFBZSxDQUFDb0gsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRWpGM0IsTUFBTSxDQUFDMUQsS0FBSyxDQUFDMkQsTUFBTSxDQUFDLENBQUNDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDcENGLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQ0ksSUFBSSxDQUFDLFVBQUEyRCxNQUFNO01BQUEsT0FBSUEsTUFBTSxDQUFDakosRUFBRSxLQUFLZ0ksYUFBYSxDQUFDaEksRUFBRTtJQUFBLEVBQUMsQ0FBQyxDQUFDa0osYUFBYSxDQUFDLENBQUM7SUFDcEZuRSxNQUFNLEVBQUErQyxxQkFBQSxHQUFDekcsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUMyRyxZQUFZLGNBQUFyQixxQkFBQSx1QkFBbENBLHFCQUFBLENBQW9DZ0IsR0FBRyxDQUFDLENBQUN0QyxHQUFHLENBQUM0QyxjQUFjLENBQ2hFckUsTUFBTSxDQUFDc0UsZ0JBQWdCLENBQUM7TUFBQ3JKLEVBQUUsRUFBRWdJLGFBQWEsQ0FBQ2hJO0lBQUUsQ0FBQyxDQUNoRCxDQUFDO0lBQ0QrRSxNQUFNLEVBQUFnRCxzQkFBQSxHQUFDMUcsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUMyRyxZQUFZLGNBQUFwQixzQkFBQSx1QkFBbENBLHNCQUFBLENBQW9DdUIsR0FBRyxDQUFDLENBQUM5QyxHQUFHLENBQUM0QyxjQUFjLENBQ2hFckUsTUFBTSxDQUFDc0UsZ0JBQWdCLENBQUM7TUFBQ3JKLEVBQUUsRUFBRWdJLGFBQWEsQ0FBQ2hJO0lBQUUsQ0FBQyxDQUNoRCxDQUFDO0VBQ0gsQ0FBQyxDQUFDO0VBRUZvRSxJQUFJLENBQUMsMERBQTBELEVBQUUsWUFBTTtJQUNyRSxJQUFJL0MsS0FBSyxHQUFHa0IsVUFBVSxDQUFDLENBQUM7SUFDeEJsQixLQUFLLEdBQUd2QixjQUFjLENBQ3BCdUIsS0FBSyxFQUNML0IsZUFBZSxDQUFDaUssZUFBZSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUVsSyxVQUFVLENBQUNtSyxTQUFTLENBQzFFLENBQUM7SUFDRHpFLE1BQU0sQ0FBQzFELEtBQUssQ0FBQ0wsUUFBUSxDQUFDd0IsTUFBTSxDQUFDaUgsVUFBVSxDQUFDLENBQUN0RSxPQUFPLENBQUM7TUFBQ0UsTUFBTSxFQUFFaEcsVUFBVSxDQUFDbUs7SUFBUyxDQUFDLENBQUM7SUFDaEZ6RSxNQUFNLENBQUMxRCxLQUFLLENBQUNMLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQ2tILFNBQVMsQ0FBQyxDQUFDdkUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZEOUQsS0FBSyxHQUFHUyxVQUFVLENBQUNULEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFcEMsZUFBZSxDQUFDbUQsTUFBTSxDQUFDO0lBRWxFMkMsTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNpSCxVQUFVLENBQUMsQ0FBQ3RFLE9BQU8sQ0FBQztNQUFDRSxNQUFNLEVBQUVoRyxVQUFVLENBQUNtSztJQUFTLENBQUMsQ0FBQztJQUNoRnpFLE1BQU0sQ0FBQzFELEtBQUssQ0FBQ0wsUUFBUSxDQUFDd0IsTUFBTSxDQUFDa0gsU0FBUyxDQUFDLENBQUN2RSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDekQsQ0FBQyxDQUFDO0VBRUZmLElBQUksQ0FBQyx1RUFBdUUsRUFBRSxZQUFNO0lBQ2xGLElBQU11RixNQUFNLEdBQUc1SixTQUFTLENBQUMsUUFBUSxFQUFFO01BQ2pDa0MsTUFBTSxFQUFFLENBQ047UUFBQ0MsSUFBSSxFQUFFLE9BQU87UUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQzJLLFNBQVM7UUFBRS9CLFlBQVksRUFBRTtNQUFVLENBQUMsRUFDMUU7UUFBQzNGLElBQUksRUFBRSxRQUFRO1FBQUU3QixJQUFJLEVBQUVwQixlQUFlLENBQUNvRDtNQUFPLENBQUMsQ0FDaEQ7TUFDREMsSUFBSSxFQUFFLENBQ0osQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUMsRUFDNUIsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUM7SUFFaEMsQ0FBQyxDQUFDO0lBQ0YsSUFBSWpCLEtBQUssR0FBR0QsVUFBVSxDQUFDWixVQUFVLENBQUNtSixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQzdEdEksS0FBSyxHQUFBTixhQUFBLENBQUFBLGFBQUEsS0FDQU0sS0FBSztNQUNSNkQsT0FBTyxFQUFFLENBQUFuRSxhQUFBLENBQUFBLGFBQUEsS0FFRE0sS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwQjJFLHVCQUF1QixFQUFFLElBQUk7UUFDN0JDLGdCQUFnQixFQUFFLENBQVU7UUFDNUIzQixXQUFXLEVBQUUsSUFBSTtRQUNqQjRCLGVBQWUsRUFBRTdLLGdCQUFnQixDQUFDOEssUUFBUTtRQUMxQ0MsUUFBUSxFQUFFO1VBQUNOLE1BQU0sRUFBRTtZQUFDTyxHQUFHLEVBQUU7VUFBRTtRQUFDLENBQUM7UUFDN0JDLFNBQVMsRUFBRTtVQUNUQyxNQUFNLEVBQUUsRUFBRTtVQUNWQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1VBQ2ZDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7VUFDZjNHLFdBQVcsRUFBRSxLQUFLO1VBQ2xCcUcsUUFBUSxFQUFFLEtBQUs7VUFDZnBHLEtBQUssRUFBRTtRQUNULENBQUM7UUFDRDJHLFFBQVEsRUFBRSxLQUFLO1FBQ2ZDLGdCQUFnQixFQUFFLElBQUk7UUFDdEJDLGVBQWUsRUFBRSxJQUFJO1FBQ3JCN0csS0FBSyxFQUFFdkMsS0FBSyxDQUFDTCxRQUFRLENBQUMySSxNQUFNLENBQUMxSCxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RDMEcsUUFBUSxFQUFFO1VBQUN0SSxJQUFJLEVBQUVqQixVQUFVLENBQUMrSyxTQUFTO1VBQUVILFFBQVEsRUFBRSxLQUFLO1VBQUVyRyxXQUFXLEVBQUU7UUFBSztNQUFDO0lBRTlFLEVBQ0Y7SUFFRHRDLEtBQUssR0FBR1MsVUFBVSxDQUFDVCxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRXBDLGVBQWUsQ0FBQ21ELE1BQU0sQ0FBQztJQUVwRSxJQUFNNkcsTUFBTSxHQUFHNUgsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvQkgsTUFBTSxDQUFDa0UsTUFBTSxDQUFDNUksSUFBSSxDQUFDLENBQUNrRixJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3ZDUixNQUFNLENBQUNrRSxNQUFNLENBQUMsQ0FBQ3pDLEdBQUcsQ0FBQ2tFLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQztJQUM1RDNGLE1BQU0sQ0FBQ2tFLE1BQU0sQ0FBQyxDQUFDekMsR0FBRyxDQUFDa0UsY0FBYyxDQUFDLGtCQUFrQixDQUFDO0lBQ3JEM0YsTUFBTSxDQUFDa0UsTUFBTSxDQUFDLENBQUN6QyxHQUFHLENBQUNrRSxjQUFjLENBQUMsVUFBVSxDQUFDO0lBQzdDM0YsTUFBTSxDQUFDa0UsTUFBTSxDQUFDLENBQUN6QyxHQUFHLENBQUNrRSxjQUFjLENBQUMsV0FBVyxDQUFDO0lBQzlDM0YsTUFBTSxDQUFDa0UsTUFBTSxDQUFDLENBQUN6QyxHQUFHLENBQUNrRSxjQUFjLENBQUMsVUFBVSxDQUFDO0lBQzdDM0YsTUFBTSxDQUFDa0UsTUFBTSxDQUFDLENBQUN6QyxHQUFHLENBQUNrRSxjQUFjLENBQUMsa0JBQWtCLENBQUM7SUFDckQzRixNQUFNLENBQUNrRSxNQUFNLENBQUMsQ0FBQ3pDLEdBQUcsQ0FBQ2tFLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztJQUNwRDNGLE1BQU0sQ0FBQ2tFLE1BQU0sQ0FBQyxDQUFDckIsYUFBYSxDQUFDO01BQzNCSyxXQUFXLEVBQUUsS0FBSztNQUNsQkUsV0FBVyxFQUFFLEtBQUs7TUFDbEI0QixlQUFlLEVBQUU3SyxnQkFBZ0IsQ0FBQ3lMLElBQUk7TUFDdEMvRyxLQUFLLEVBQUUsSUFBSTtNQUNYK0UsUUFBUSxFQUFFO1FBQUN0SSxJQUFJLEVBQUVqQixVQUFVLENBQUN3SjtNQUFTO0lBQ3ZDLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGeEUsSUFBSSxDQUFDLHFGQUFxRixFQUFFLFlBQU07SUFBQSxJQUFBd0cscUJBQUE7SUFDaEcsSUFBTWpKLE9BQU8sR0FBRzVCLFNBQVMsQ0FBQyxTQUFTLEVBQUU7TUFDbkNrQyxNQUFNLEVBQUUsQ0FBQztRQUFDQyxJQUFJLEVBQUUsT0FBTztRQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDb0Q7TUFBTyxDQUFDLENBQUM7TUFDeERDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBQ0YsSUFBTVYsU0FBUyxHQUFHN0IsU0FBUyxDQUFDLFdBQVcsRUFBRTtNQUN2Q2tDLE1BQU0sRUFBRSxDQUFDO1FBQUNDLElBQUksRUFBRSxPQUFPO1FBQUU3QixJQUFJLEVBQUVwQixlQUFlLENBQUNvRDtNQUFPLENBQUMsQ0FBQztNQUN4REMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixJQUFJakIsS0FBSyxHQUFHSyxnQkFBZ0IsQ0FBQ0MsT0FBTyxFQUFFQyxTQUFTLEVBQUUsT0FBTyxDQUFDO0lBQ3pEbUQsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDNUQsTUFBTSxDQUFDLENBQUM2RCxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakVKLE1BQU0sRUFBQTZGLHFCQUFBLEdBQUN2SixLQUFLLENBQUNMLFFBQVEsQ0FBQ1ksU0FBUyxDQUFDdUgsWUFBWSxjQUFBeUIscUJBQUEsdUJBQXJDQSxxQkFBQSxDQUF1QzlCLEdBQUcsQ0FBQyxDQUFDN0QsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUVsRTVELEtBQUssR0FBR1MsVUFBVSxDQUFDVCxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRXBDLGVBQWUsQ0FBQ21ELE1BQU0sQ0FBQztJQUV2RTJDLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzVELE1BQU0sQ0FBQyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcERKLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ2hELElBQUksQ0FBQyxDQUFDaUQsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaERKLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzdFLElBQUksQ0FBQyxDQUFDa0YsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMzQ1IsTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUNZLFNBQVMsQ0FBQ3VILFlBQVksQ0FBQyxDQUFDdkIsYUFBYSxDQUFDO01BQzFEaUQsYUFBYSxFQUFFLEVBQUU7TUFDakI1QyxXQUFXLEVBQUUsRUFBRTtNQUNmcUIsR0FBRyxFQUFFLEVBQUU7TUFDUFIsR0FBRyxFQUFFO0lBQ1AsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUYxRSxJQUFJLENBQUMsOEVBQThFLEVBQUUsWUFBTTtJQUN6RixJQUFNMEcsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUk5SyxFQUFVO01BQUEsT0FDNUJELFNBQVMsQ0FBQ0MsRUFBRSxFQUFFO1FBQ1ppQyxNQUFNLEVBQUUsQ0FDTjtVQUFDQyxJQUFJLEVBQUUsT0FBTztVQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDMkssU0FBUztVQUFFL0IsWUFBWSxFQUFFLE1BQU07VUFBRWhGLE1BQU0sRUFBRTtRQUFHLENBQUMsRUFDbkY7VUFBQ1gsSUFBSSxFQUFFLFFBQVE7VUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQ29EO1FBQU8sQ0FBQyxDQUNoRDtRQUNEQyxJQUFJLEVBQUUsQ0FDSixDQUFDLFVBQWEsRUFBRSxFQUFFLENBQUMsRUFDbkIsQ0FBQyxVQUFhLEVBQUUsRUFBRSxDQUFDO01BRXZCLENBQUMsQ0FBQztJQUFBO0lBQ0osSUFBTVgsT0FBTyxHQUFHbUosVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUNyQyxJQUFNbEosU0FBUyxHQUFHa0osVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUN6QyxJQUFJekosS0FBSyxHQUFHSyxnQkFBZ0IsQ0FBQ0MsT0FBTyxFQUFFQyxTQUFTLEVBQUUsT0FBTyxDQUFDO0lBQ3pEUCxLQUFLLEdBQUd2QixjQUFjLENBQ3BCdUIsS0FBSyxFQUNML0IsZUFBZSxDQUFDeUwsYUFBYSxDQUFDLENBQUMsRUFBRTtNQUFDbkgsS0FBSyxFQUFFdkMsS0FBSyxDQUFDTCxRQUFRLENBQUNXLE9BQU8sQ0FBQ00sTUFBTSxDQUFDLENBQUM7SUFBQyxDQUFDLENBQzVFLENBQUM7SUFFRFosS0FBSyxHQUFHUyxVQUFVLENBQUNULEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFcEMsZUFBZSxDQUFDbUQsTUFBTSxDQUFDO0lBRXhFMkMsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDNUQsTUFBTSxDQUFDLENBQUM2RCxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakVKLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ3RCLEtBQUssQ0FBQyxDQUFDZ0UsYUFBYSxDQUFDO01BQUMxRixJQUFJLEVBQUUsUUFBUTtNQUFFN0IsSUFBSSxFQUFFO0lBQVMsQ0FBQyxDQUFDO0lBQy9FMEUsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDeUQsUUFBUSxDQUFDdEksSUFBSSxDQUFDLENBQUNrRixJQUFJLENBQUMsV0FBVyxDQUFDO0VBQzFELENBQUMsQ0FBQztFQUVGbkIsSUFBSSxDQUFDLDBFQUEwRSxFQUFFLFlBQU07SUFDckYsSUFBTXpDLE9BQU8sR0FBRzVCLFNBQVMsQ0FBQyxTQUFTLEVBQUU7TUFDbkNrQyxNQUFNLEVBQUUsQ0FDTjtRQUFDQyxJQUFJLEVBQUUsT0FBTztRQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDMkssU0FBUztRQUFFL0IsWUFBWSxFQUFFLE1BQU07UUFBRWhGLE1BQU0sRUFBRTtNQUFHLENBQUMsRUFDbkY7UUFBQ1gsSUFBSSxFQUFFLFFBQVE7UUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQ29EO01BQU8sQ0FBQyxDQUNoRDtNQUNEQyxJQUFJLEVBQUUsQ0FDSixDQUFDLFVBQWEsRUFBRSxFQUFFLENBQUMsRUFDbkIsQ0FBQyxVQUFhLEVBQUUsRUFBRSxDQUFDO0lBRXZCLENBQUMsQ0FBQztJQUNGLElBQU1WLFNBQVMsR0FBRzdCLFNBQVMsQ0FBQyxXQUFXLEVBQUU7TUFDdkNrQyxNQUFNLEVBQUUsQ0FBQztRQUFDQyxJQUFJLEVBQUUsT0FBTztRQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDMkssU0FBUztRQUFFL0IsWUFBWSxFQUFFLE1BQU07UUFBRWhGLE1BQU0sRUFBRTtNQUFHLENBQUMsQ0FBQztNQUM3RlAsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFhLENBQUMsRUFBRSxDQUFDLFVBQWEsQ0FBQztJQUN6QyxDQUFDLENBQUM7SUFDRixJQUFJakIsS0FBSyxHQUFHSyxnQkFBZ0IsQ0FBQ0MsT0FBTyxFQUFFQyxTQUFTLEVBQUUsT0FBTyxDQUFDO0lBQ3pEUCxLQUFLLEdBQUd2QixjQUFjLENBQ3BCdUIsS0FBSyxFQUNML0IsZUFBZSxDQUFDeUwsYUFBYSxDQUFDLENBQUMsRUFBRTtNQUFDbkgsS0FBSyxFQUFFdkMsS0FBSyxDQUFDTCxRQUFRLENBQUNXLE9BQU8sQ0FBQ00sTUFBTSxDQUFDLENBQUM7SUFBQyxDQUFDLENBQzVFLENBQUM7SUFDRDhDLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ2lGLFNBQVMsQ0FBQyxDQUFDYSxXQUFXLENBQUMsQ0FBQztJQUVoRDNKLEtBQUssR0FBR1MsVUFBVSxDQUFDVCxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRXBDLGVBQWUsQ0FBQ21ELE1BQU0sQ0FBQztJQUVyRTJDLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzVELE1BQU0sQ0FBQyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdERKLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ2hELElBQUksQ0FBQyxDQUFDaUQsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaERKLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzdFLElBQUksQ0FBQyxDQUFDa0YsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMvQ1IsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDdEIsS0FBSyxDQUFDLENBQUMrQyxRQUFRLENBQUMsQ0FBQztJQUN6QzVCLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ3lELFFBQVEsQ0FBQ3RJLElBQUksQ0FBQyxDQUFDa0YsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN4RFIsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDaUYsU0FBUyxDQUFDLENBQUNqQixhQUFhLENBQUMsQ0FBQztFQUNwRCxDQUFDLENBQUM7RUFFRjlFLElBQUksQ0FBQyxpRkFBaUYsRUFBRSxZQUFNO0lBQUEsSUFBQTZHLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO0lBQzVGLElBQU14QixNQUFNLEdBQUc1SixTQUFTLENBQUMsUUFBUSxFQUFFO01BQ2pDa0MsTUFBTSxFQUFFLENBQ047UUFBQ0MsSUFBSSxFQUFFLE9BQU87UUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQzJLLFNBQVM7UUFBRS9CLFlBQVksRUFBRSxNQUFNO1FBQUVoRixNQUFNLEVBQUU7TUFBRyxDQUFDLEVBQ25GO1FBQUNYLElBQUksRUFBRSxPQUFPO1FBQUU3QixJQUFJLEVBQUVwQixlQUFlLENBQUNtRDtNQUFNLENBQUMsRUFDN0M7UUFBQ0YsSUFBSSxFQUFFLFFBQVE7UUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQ29EO01BQU8sQ0FBQyxDQUNoRDtNQUNEQyxJQUFJLEVBQUUsQ0FDSixDQUFDLFVBQWEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQ3pCLENBQUMsVUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFFNUIsQ0FBQyxDQUFDO0lBQ0YsSUFBSWpCLEtBQUssR0FBR0QsVUFBVSxDQUFDWixVQUFVLENBQUNtSixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQzdEdEksS0FBSyxHQUFHdkIsY0FBYyxDQUNwQnVCLEtBQUssRUFDTC9CLGVBQWUsQ0FBQ3lMLGFBQWEsQ0FBQyxDQUFDLEVBQUU7TUFBQ25ILEtBQUssRUFBRXZDLEtBQUssQ0FBQ0wsUUFBUSxDQUFDMkksTUFBTSxDQUFDMUgsTUFBTSxDQUFDLENBQUM7SUFBQyxDQUFDLENBQzNFLENBQUM7SUFDRFosS0FBSyxHQUFHdkIsY0FBYyxDQUNwQnVCLEtBQUssRUFDTC9CLGVBQWUsQ0FBQ3lMLGFBQWEsQ0FBQyxDQUFDLEVBQUU7TUFDL0JwQyxRQUFRLEVBQUU7UUFBQ3lDLE9BQU8sRUFBRTtVQUFDQyxTQUFTLEVBQUUsT0FBTztVQUFFQyxTQUFTLEVBQUUsS0FBSztVQUFFQyxXQUFXLEVBQUU7UUFBSztNQUFDO0lBQ2hGLENBQUMsQ0FDSCxDQUFDO0lBQ0QsSUFBTUMsWUFBWSxJQUFBUCxxQkFBQSxHQUFHNUosS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDaUYsU0FBUyxjQUFBYyxxQkFBQSx1QkFBMUJBLHFCQUFBLENBQTRCYixNQUE0QjtJQUM3RXJGLE1BQU0sQ0FBQyxJQUFJMEcsR0FBRyxDQUFDRCxZQUFZLENBQUNFLEtBQUssQ0FBQyxDQUFDLENBQUN2RyxPQUFPLENBQUMsSUFBSXNHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWpFcEssS0FBSyxHQUFHdkIsY0FBYyxDQUFDdUIsS0FBSyxFQUFFL0IsZUFBZSxDQUFDOEYsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvRkwsTUFBTSxFQUFBbUcsc0JBQUEsR0FBQzdKLEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ2lGLFNBQVMsY0FBQWUsc0JBQUEsdUJBQTFCQSxzQkFBQSxDQUE0QmQsTUFBTSxDQUFDLENBQUNqRixPQUFPLENBQUNxRyxZQUFZLENBQUM7SUFDaEV6RyxNQUFNLENBQUMxRCxLQUFLLENBQUM2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUN5RCxRQUFRLENBQUN5QyxPQUFPLENBQUNDLFNBQVMsQ0FBQyxDQUFDOUYsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNwRVIsTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUMySSxNQUFNLENBQUMxSCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM1QixJQUFJLENBQUMsQ0FBQ2tGLElBQUksQ0FBQ3RHLGVBQWUsQ0FBQ21ELE1BQU0sQ0FBQztJQUV6RWYsS0FBSyxHQUFHUyxVQUFVLENBQUNULEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFcEMsZUFBZSxDQUFDb0QsT0FBTyxDQUFDO0lBRXhFLElBQU1zSixVQUFVLEdBQUcsRUFBQVIsc0JBQUEsR0FBQzlKLEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ2lGLFNBQVMsY0FBQWdCLHNCQUFBLHVCQUExQkEsc0JBQUEsQ0FBNEJmLE1BQU0sRUFBd0JzQixLQUFLO0lBQ25GM0csTUFBTSxDQUFDLElBQUkwRyxHQUFHLENBQUNFLFVBQVUsQ0FBQyxDQUFDLENBQUN4RyxPQUFPLENBQUMsSUFBSXNHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDckQsQ0FBQyxDQUFDO0VBRUZySCxJQUFJLENBQUMsd0VBQXdFLEVBQUUsWUFBTTtJQUFBLElBQUF3SCxxQkFBQSxFQUFBQyxvQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxzQkFBQTtJQUNuRixJQUFNcEMsTUFBTSxHQUFHNUosU0FBUyxDQUFDLFFBQVEsRUFBRTtNQUNqQ2tDLE1BQU0sRUFBRSxDQUNOO1FBQUNDLElBQUksRUFBRSxPQUFPO1FBQUU3QixJQUFJLEVBQUVwQixlQUFlLENBQUMySyxTQUFTO1FBQUUvQixZQUFZLEVBQUUsTUFBTTtRQUFFaEYsTUFBTSxFQUFFO01BQUcsQ0FBQyxFQUNuRjtRQUFDWCxJQUFJLEVBQUUsS0FBSztRQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDMkssU0FBUztRQUFFL0IsWUFBWSxFQUFFLE1BQU07UUFBRWhGLE1BQU0sRUFBRTtNQUFHLENBQUMsRUFDakY7UUFBQ1gsSUFBSSxFQUFFLE9BQU87UUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQ29EO01BQU8sQ0FBQyxDQUMvQztNQUNEQyxJQUFJLEVBQUUsQ0FDSixDQUFDLFVBQWEsRUFBRSxVQUFhLEVBQUUsRUFBRSxDQUFDLEVBQ2xDLENBQUMsVUFBYSxFQUFFLFVBQWEsRUFBRSxFQUFFLENBQUM7SUFFdEMsQ0FBQyxDQUFDO0lBQ0YsSUFBSWpCLEtBQUssR0FBR2IsVUFBVSxDQUFDbUosTUFBTSxDQUFDO0lBQzlCdEksS0FBSyxHQUFHdkIsY0FBYyxDQUNwQnVCLEtBQUssRUFDTC9CLGVBQWUsQ0FBQytELFFBQVEsQ0FBQztNQUN2QnJELEVBQUUsRUFBRSxjQUFjO01BQ2xCc0QsS0FBSyxFQUFFLFFBQVE7TUFDZmpELElBQUksRUFBRSxVQUFVO01BQ2hCaUIsTUFBTSxFQUFFLFFBQVE7TUFDaEJpQyxZQUFZLEVBQUUsSUFBSTtNQUNsQkMsT0FBTyxFQUFFLENBQUMsQ0FBQztNQUNYQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO01BQ2hCQyxLQUFLLEVBQUU7UUFDTE4sS0FBSyxFQUFFO1VBQUNsQixJQUFJLEVBQUUsS0FBSztVQUFFN0IsSUFBSSxFQUFFO1FBQVcsQ0FBQztRQUN2Q3NELFdBQVcsRUFBRSxTQUFTO1FBQ3RCcUcsUUFBUSxFQUFFLEtBQUs7UUFDZjFHLEtBQUssRUFBRTtNQUNULENBQUM7TUFDRE0sS0FBSyxFQUFFO1FBQUNSLEtBQUssRUFBRTtVQUFDbEIsSUFBSSxFQUFFLE9BQU87VUFBRTdCLElBQUksRUFBRTtRQUFTLENBQUM7UUFBRXNELFdBQVcsRUFBRSxLQUFLO1FBQUVMLEtBQUssRUFBRTtNQUFPO0lBQ3JGLENBQUMsQ0FDSCxDQUFDO0lBQ0RqQyxLQUFLLEdBQUdELFVBQVUsQ0FBQ0MsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7SUFDNUNBLEtBQUssR0FBR3ZCLGNBQWMsQ0FBQ3VCLEtBQUssRUFBRS9CLGVBQWUsQ0FBQ3VDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRlIsS0FBSyxHQUFHdkIsY0FBYyxDQUNwQnVCLEtBQUssRUFDTC9CLGVBQWUsQ0FBQ3lMLGFBQWEsQ0FBQyxDQUFDLEVBQUU7TUFBQ25ILEtBQUssRUFBRXZDLEtBQUssQ0FBQ0wsUUFBUSxDQUFDMkksTUFBTSxDQUFDMUgsTUFBTSxDQUFDLENBQUM7SUFBQyxDQUFDLENBQzNFLENBQUM7SUFDRDhDLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzhHLE9BQU8sQ0FBQyxDQUFDN0csT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakRKLE1BQU0sRUFBQTZHLHFCQUFBLEdBQUN2SyxLQUFLLENBQUM2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUN0QixLQUFLLGNBQUFnSSxxQkFBQSx1QkFBdEJBLHFCQUFBLENBQXdCMUosSUFBSSxDQUFDLENBQUNxRCxJQUFJLENBQUMsT0FBTyxDQUFDO0lBRWxEbEUsS0FBSyxHQUFHUyxVQUFVLENBQUNULEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFcEMsZUFBZSxDQUFDbUQsTUFBTSxDQUFDO0lBQ3BFMkMsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDdEIsS0FBSyxDQUFDLENBQUMrQyxRQUFRLENBQUMsQ0FBQztJQUN6QzVCLE1BQU0sQ0FBQzFELEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ3lELFFBQVEsQ0FBQ3RJLElBQUksQ0FBQyxDQUFDa0YsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN4RFIsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDOEcsT0FBTyxDQUFDLENBQUM3RyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqREosTUFBTSxDQUFDMUQsS0FBSyxDQUFDdUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDaEMsS0FBSyxDQUFDLENBQUNnRSxhQUFhLENBQUM7TUFDMUN4RSxLQUFLLEVBQUU7UUFBQ2xCLElBQUksRUFBRSxPQUFPO1FBQUU3QixJQUFJLEVBQUU7TUFBUSxDQUFDO01BQ3RDc0QsV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0lBQ0YsSUFBSXNJLFVBQVUsR0FBRzVLLEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQW9CO0lBQ3BELElBQU04RSxRQUFRLEdBQUdpQyxVQUFVLENBQUN0RCxRQUFRLENBQUNxQixRQUFRO0lBQzdDLElBQU1rQyxZQUFZLElBQUFMLG9CQUFBLEdBQUdJLFVBQVUsQ0FBQ2hDLFFBQVEsY0FBQTRCLG9CQUFBLGdCQUFBQSxvQkFBQSxHQUFuQkEsb0JBQUEsQ0FBcUJsQyxNQUFNLGNBQUFrQyxvQkFBQSx1QkFBM0JBLG9CQUFBLENBQThCN0IsUUFBUSxDQUFDO0lBQzVEakYsTUFBTSxDQUFDbUgsWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUVoRixNQUFNLENBQUMsVUFBQ0MsR0FBRyxFQUFFQyxHQUFHO01BQUEsT0FBS0QsR0FBRyxHQUFHQyxHQUFHLENBQUNDLEtBQUs7SUFBQSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM4RSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRWpGOUssS0FBSyxHQUFHUyxVQUFVLENBQUNULEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFcEMsZUFBZSxDQUFDbUQsTUFBTSxDQUFDO0lBQ2xFMkMsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDN0UsSUFBSSxDQUFDLENBQUNrRixJQUFJLENBQUMsV0FBVyxDQUFDO0lBQy9DUixNQUFNLENBQUMxRCxLQUFLLENBQUM2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM4RyxPQUFPLENBQUMsQ0FBQzlDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hEbkUsTUFBTSxDQUFDMUQsS0FBSyxDQUFDNkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDa0gsV0FBVyxDQUFDLENBQUNsRCxhQUFhLENBQUMsQ0FBQztJQUNwRCtDLFVBQVUsR0FBRzVLLEtBQUssQ0FBQzZELE9BQU8sQ0FBQyxDQUFDLENBQW9CO0lBQ2hELElBQU0rQixJQUFJLElBQUE2RSxxQkFBQSxHQUFHRyxVQUFVLENBQUNoQyxRQUFRLGNBQUE2QixxQkFBQSxnQkFBQUEscUJBQUEsR0FBbkJBLHFCQUFBLENBQXFCbkMsTUFBTSxjQUFBbUMscUJBQUEsdUJBQTNCQSxxQkFBQSxDQUE4QjlCLFFBQVEsQ0FBQztJQUNwRGpGLE1BQU0sQ0FBQ2tDLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFQyxNQUFNLENBQUMsVUFBQ0MsR0FBRyxFQUFFQyxHQUFHO01BQUEsT0FBS0QsR0FBRyxHQUFHQyxHQUFHLENBQUNDLEtBQUs7SUFBQSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM5QixJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlEUixNQUFNLENBQUMxRCxLQUFLLENBQUN1RSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNsQyxLQUFLLENBQUMsQ0FBQ2tFLGFBQWEsQ0FBQztNQUMxQ3hFLEtBQUssRUFBRTtRQUFDbEIsSUFBSSxFQUFFLEtBQUs7UUFBRTdCLElBQUksRUFBRTtNQUFRLENBQUM7TUFDcENzRCxXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFDRm9CLE1BQU0sRUFBQWdILHNCQUFBLEdBQUMxSyxLQUFLLENBQUN1RSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNsQyxLQUFLLGNBQUFxSSxzQkFBQSx1QkFBckJBLHNCQUFBLENBQXVCL0IsUUFBUSxDQUFDLENBQUNkLGFBQWEsQ0FBQyxDQUFDO0VBQ3pELENBQUMsQ0FBQztFQUVGOUUsSUFBSSxDQUFDLDZEQUE2RCxFQUFFLFlBQU07SUFBQSxJQUFBaUkscUJBQUE7SUFDeEUsSUFBTWhMLEtBQUssR0FBR2tCLFVBQVUsQ0FBQyxDQUFDO0lBQzFCLElBQU0rSixJQUFJLEdBQUd4SyxVQUFVLENBQUNULEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFcEMsZUFBZSxDQUFDb0QsT0FBTyxDQUFDO0lBRTNFMEMsTUFBTSxDQUFDdUgsSUFBSSxDQUFDdEwsUUFBUSxDQUFDd0IsTUFBTSxDQUFDLENBQUMrQyxJQUFJLENBQUNsRSxLQUFLLENBQUNMLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQztJQUN4RHVDLE1BQU0sRUFBQXNILHFCQUFBLEdBQUNDLElBQUksQ0FBQ3RMLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQ1AsTUFBTSxDQUFDcUQsSUFBSSxDQUFDLFVBQUFsQyxLQUFLO01BQUEsT0FBSUEsS0FBSyxDQUFDbEIsSUFBSSxLQUFLLFFBQVE7SUFBQSxFQUFDLGNBQUFtSyxxQkFBQSx1QkFBbEVBLHFCQUFBLENBQW9FaE0sSUFBSSxDQUFDLENBQUNrRixJQUFJLENBQ25GdEcsZUFBZSxDQUFDbUQsTUFDbEIsQ0FBQztJQUNEMkMsTUFBTSxDQUFDdUgsSUFBSSxDQUFDdEwsUUFBUSxDQUFDd0IsTUFBTSxDQUFDaUQsYUFBYSxDQUFDQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV4RSxJQUFNZ0gsS0FBSyxHQUFHOU0sb0JBQW9CLENBQUMsQ0FBQztJQUNwQ3NGLE1BQU0sQ0FBQ3dILEtBQUssQ0FBQyxDQUFDdEgsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFNdUgsWUFBWSxHQUFHN00saUJBQWlCLENBQUM0TSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU5SyxTQUFTLENBQUM7SUFDM0RzRCxNQUFNLENBQUN5SCxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUNuRyxTQUFTLENBQzVDLDZFQUNGLENBQUM7SUFDRHhCLE1BQU0sQ0FBQ3lILFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQ25HLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQztFQUMzRSxDQUFDLENBQUM7RUFFRm5DLElBQUksQ0FBQywwREFBMEQsRUFBRSxZQUFNO0lBQUEsSUFBQXVJLHNCQUFBO0lBQ3JFLElBQUl0TCxLQUFLLEdBQUdrQixVQUFVLENBQUMsQ0FBQztJQUN4QmxCLEtBQUssR0FBR3ZCLGNBQWMsQ0FBQ3VCLEtBQUssRUFBRS9CLGVBQWUsQ0FBQ3NOLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0UsSUFBTUMsZUFBZSxHQUFHeEwsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNzSyxZQUFZO0lBQzFELElBQUFDLHFCQUFBLEdBQWV0TixvQkFBb0IsQ0FBQyxDQUFDO01BQUF1TixzQkFBQSxHQUFBQyxjQUFBLENBQUFGLHFCQUFBO01BQTlCRyxJQUFJLEdBQUFGLHNCQUFBO0lBQ1gsSUFBTUcsTUFBTSxHQUFHO01BQUM5TSxJQUFJLEVBQUUsU0FBUztNQUFFK00sSUFBSSxFQUFFO0lBQUUsQ0FBQztJQUMxQyxJQUFNQyxZQUFZLEdBQUcxTixpQkFBaUIsQ0FBQ3VOLElBQUksRUFBRTtNQUMzQ0MsTUFBTSxFQUFOQSxNQUFNO01BQ05HLFdBQVcsRUFBRTtRQUFDak4sSUFBSSxFQUFFbEIsWUFBWSxDQUFDb087TUFBSztJQUN4QyxDQUFDLENBQUM7SUFDRnhJLE1BQU0sQ0FBQ3NJLFlBQVksQ0FBQyxDQUFDekYsYUFBYSxDQUFDO01BQ2pDNEYsU0FBUyxFQUFFdk8sZUFBZSxDQUFDb0Q7SUFDN0IsQ0FBQyxDQUFDO0lBRUZoQixLQUFLLEdBQUdTLFVBQVUsQ0FBQ1QsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUVwQyxlQUFlLENBQUNtRCxNQUFNLENBQUM7SUFDbEUyQyxNQUFNLENBQUMxRCxLQUFLLENBQUNMLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQ3NLLFlBQVksQ0FBQyxDQUFDdkgsSUFBSSxDQUFDc0gsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUNwRSxJQUFNWSxZQUFZLEdBQUdwTSxLQUFLO0lBRTFCQSxLQUFLLEdBQUd2QixjQUFjLENBQUN1QixLQUFLLEVBQUVnTSxZQUFZLENBQUM7SUFFM0N0SSxNQUFNLENBQUMxRCxLQUFLLENBQUMsQ0FBQ2tFLElBQUksQ0FBQ2tJLFlBQVksQ0FBQztJQUNoQyxJQUFNQyxZQUFZLEdBQUdyTSxLQUFLLENBQUNMLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQ1AsTUFBTSxDQUFDcUQsSUFBSSxDQUFDLFVBQUFsQyxLQUFLO01BQUEsT0FBSUEsS0FBSyxDQUFDbEIsSUFBSSxLQUFLLEtBQUs7SUFBQSxFQUFDO0lBQ3JGNkMsTUFBTSxDQUFDMkksWUFBWSxDQUFDLENBQUM5RixhQUFhLENBQUM7TUFBQ3ZILElBQUksRUFBRXBCLGVBQWUsQ0FBQ21EO0lBQU0sQ0FBQyxDQUFDO0lBQ2xFMkMsTUFBTSxDQUFDMkksWUFBWSxDQUFDLENBQUNsSCxHQUFHLENBQUNrRSxjQUFjLENBQUMsZ0JBQWdCLENBQUM7SUFDekQzRixNQUFNLEVBQUE0SCxzQkFBQSxHQUNKdEwsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNQLE1BQU0sQ0FBQ3FELElBQUksQ0FBQyxVQUFBbEMsS0FBSztNQUFBLE9BQUlBLEtBQUssQ0FBQ2xCLElBQUksS0FBSyxLQUFLO0lBQUEsRUFBQyxjQUFBeUssc0JBQUEsZ0JBQUFBLHNCQUFBLEdBQWhFQSxzQkFBQSxDQUFrRVcsV0FBVyxjQUFBWCxzQkFBQSx1QkFBN0VBLHNCQUFBLENBQStFZ0IsV0FDakYsQ0FBQyxDQUFDbkgsR0FBRyxDQUFDakIsSUFBSSxDQUFDNEgsTUFBTSxDQUFDO0VBQ3BCLENBQUMsQ0FBQztFQUVGL0ksSUFBSSxDQUFDd0osSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsK0NBQStDLEVBQUUsVUFBQUMsTUFBTSxFQUFJO0lBQzFGLElBQUl4TSxLQUFLLEdBQUdrQixVQUFVLENBQUMsQ0FBQztJQUN4QixJQUFNdUwsS0FBSyxHQUFHek0sS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNQLE1BQU0sQ0FBQ2QsR0FBRyxDQUFDLFVBQUFpQyxLQUFLO01BQUEsT0FBSUEsS0FBSyxDQUFDL0MsSUFBSTtJQUFBLEVBQUM7SUFDbkVnQixLQUFLLEdBQUd2QixjQUFjLENBQUN1QixLQUFLLEVBQUUvQixlQUFlLENBQUNzTixlQUFlLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9FLElBQUFtQixzQkFBQSxHQUFldE8sb0JBQW9CLENBQUMsQ0FBQztNQUFBdU8sc0JBQUEsR0FBQWYsY0FBQSxDQUFBYyxzQkFBQTtNQUE5QmIsSUFBSSxHQUFBYyxzQkFBQTtJQUNYM00sS0FBSyxHQUFHdkIsY0FBYyxDQUFDdUIsS0FBSyxFQUFFL0IsZUFBZSxDQUFDMk8sY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRixJQUFNQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNsQzdNLEtBQUssR0FBR3ZCLGNBQWMsQ0FDcEJ1QixLQUFLLEVBQ0x3TSxNQUFNLEtBQUssU0FBUyxHQUNoQnZPLGVBQWUsQ0FBQzZPLHFCQUFxQixDQUFDLFFBQVEsRUFBRTtNQUM5Q0MsV0FBVyxFQUFFLEtBQUs7TUFDbEJuTyxJQUFJLEVBQUU7UUFBQ2dDLE1BQU0sRUFBRVosS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNQLE1BQU07UUFBRUssSUFBSSxFQUFFLENBQUM0TCxHQUFHO01BQUM7SUFDMUQsQ0FBQyxDQUFDLEdBQ0Y1TyxlQUFlLENBQUMrTyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUNILEdBQUcsQ0FBQyxDQUNsRCxDQUFDO0lBRUQsSUFBTWYsTUFBTSxHQUFHO01BQUM5TSxJQUFJLEVBQUUsU0FBUztNQUFFK00sSUFBSSxFQUFFO0lBQUUsQ0FBQztJQUMxQyxJQUFNa0IsWUFBWSxHQUFHeE8sY0FBYyxDQUNqQ3VCLEtBQUssRUFDTDFCLGlCQUFpQixDQUFDdU4sSUFBSSxFQUFFO01BQUNDLE1BQU0sRUFBTkEsTUFBTTtNQUFFRyxXQUFXLEVBQUU7UUFBQ2pOLElBQUksRUFBRWxCLFlBQVksQ0FBQ29PO01BQUs7SUFBQyxDQUFDLENBQzNFLENBQUM7SUFDRCxJQUFNZ0IsUUFBUSxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDQyxrQkFBa0IsQ0FBQztNQUFBLE9BQU1sTixTQUFTO0lBQUEsRUFBQztJQUNqRixJQUFNbU4sVUFBVSxHQUFHOU8sY0FBYyxDQUFDdUIsS0FBSyxFQUFFM0IsZUFBZSxDQUFDd04sSUFBSSxFQUFFLElBQUkyQixLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMxRk4sUUFBUSxDQUFDTyxXQUFXLENBQUMsQ0FBQztJQUV0Qi9KLE1BQU0sQ0FBQzFELEtBQUssQ0FBQ0wsUUFBUSxDQUFDd0IsTUFBTSxDQUFDUCxNQUFNLENBQUNkLEdBQUcsQ0FBQyxVQUFBaUMsS0FBSztNQUFBLE9BQUlBLEtBQUssQ0FBQy9DLElBQUk7SUFBQSxFQUFDLENBQUMsQ0FBQzhFLE9BQU8sQ0FBQzJJLEtBQUssQ0FBQztJQUM1RS9JLE1BQU0sQ0FBQ3VKLFlBQVksQ0FBQ3ROLFFBQVEsQ0FBQ3dCLE1BQU0sQ0FBQ1AsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMyRixhQUFhLENBQUM7TUFDM0RtSCxjQUFjLEVBQUUsS0FBSztNQUNyQnpCLFdBQVcsRUFBRTtRQUFDSyxXQUFXLEVBQUVSO01BQU07SUFDbkMsQ0FBQyxDQUFDO0lBQ0ZwSSxNQUFNLENBQUM2SixVQUFVLENBQUM1TixRQUFRLENBQUN3QixNQUFNLENBQUNQLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzhNLGNBQWMsQ0FBQyxDQUFDeEosSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN2RVIsTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUN3QixNQUFNLENBQUNpRCxhQUFhLENBQUNDLFVBQVUsQ0FBQ21JLE1BQU0sS0FBSyxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMxSSxPQUFPLENBQzFGK0ksR0FDRixDQUFDO0VBQ0gsQ0FBQyxDQUFDO0VBRUY5SixJQUFJLENBQUMsdURBQXVELEVBQUUsWUFBTTtJQUNsRSxJQUFNL0MsS0FBSyxHQUFHa0IsVUFBVSxDQUFDLENBQUM7SUFDMUIsSUFBTXlNLFNBQVMsR0FBR2xQLGNBQWMsQ0FDOUJ1QixLQUFLLEVBQ0wvQixlQUFlLENBQUM4RixpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FDN0QsQ0FBQztJQUNETCxNQUFNLENBQUNpSyxTQUFTLENBQUMsQ0FBQ3pKLElBQUksQ0FBQ2xFLEtBQUssQ0FBQztJQUU3QixJQUFNNE4sS0FBSyxHQUFHLElBQUkxUCxXQUFXLENBQUM7TUFDNUJZLElBQUksRUFBRTtRQUFDSCxFQUFFLEVBQUUsT0FBTztRQUFFSSxLQUFLLEVBQUUsT0FBTztRQUFFQyxJQUFJLEVBQUU7TUFBYSxDQUFDO01BQ3hEQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBQ0YyTyxLQUFLLENBQUMxTyxZQUFZLENBQUM7TUFDakIwQixNQUFNLEVBQUUsQ0FDTjtRQUFDQyxJQUFJLEVBQUUsUUFBUTtRQUFFN0IsSUFBSSxFQUFFcEIsZUFBZSxDQUFDbUQ7TUFBTSxDQUFDLEVBQzlDO1FBQUNGLElBQUksRUFBRSxLQUFLO1FBQUU3QixJQUFJLEVBQUVwQixlQUFlLENBQUNvRDtNQUFPLENBQUMsQ0FDN0M7TUFDREMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNGLElBQU00TSxLQUFlLEdBQUFuTyxhQUFBLENBQUFBLGFBQUEsS0FBT2xCLGlCQUFpQjtNQUFFbUIsUUFBUSxFQUFFO1FBQUNpTyxLQUFLLEVBQUxBO01BQUs7SUFBQyxFQUFDO0lBQ2pFLElBQU1FLFNBQVMsR0FBR3JQLGNBQWMsQ0FDOUJvUCxLQUFLLEVBQ0w1UCxlQUFlLENBQUM4RixpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FDN0QsQ0FBQztJQUNETCxNQUFNLENBQUNvSyxTQUFTLENBQUMsQ0FBQzVKLElBQUksQ0FBQzJKLEtBQUssQ0FBQztJQUM3Qm5LLE1BQU0sQ0FBQ2pGLGNBQWMsQ0FBQ29QLEtBQUssRUFBRTVQLGVBQWUsQ0FBQ29ILGlCQUFpQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUNuQixJQUFJLENBQUMySixLQUFLLENBQUM7SUFDNUZuSyxNQUFNLENBQUNqRCxVQUFVLENBQUNvTixLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRWpRLGVBQWUsQ0FBQ21ELE1BQU0sQ0FBQyxDQUFDLENBQUNtRCxJQUFJLENBQUMySixLQUFLLENBQUM7RUFDL0UsQ0FBQyxDQUFDO0VBRUY5SyxJQUFJLENBQUMscURBQXFELEVBQUUsWUFBTTtJQUNoRSxJQUFNZ0wsTUFBTSxHQUFHLElBQUk3UCxXQUFXLENBQUM7TUFDN0JZLElBQUksRUFBRTtRQUFDSCxFQUFFLEVBQUUsUUFBUTtRQUFFSSxLQUFLLEVBQUUsUUFBUTtRQUFFQyxJQUFJLEVBQUU7TUFBbUIsQ0FBQztNQUNoRUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUNGOE8sTUFBTSxDQUFDN08sWUFBWSxDQUFDO01BQ2xCMEIsTUFBTSxFQUFFLENBQ047UUFBQ0MsSUFBSSxFQUFFLFFBQVE7UUFBRTdCLElBQUksRUFBRXBCLGVBQWUsQ0FBQ21ELE1BQU07UUFBRW9ELFdBQVcsRUFBRTtNQUFRLENBQUMsRUFDckU7UUFBQ3RELElBQUksRUFBRSxLQUFLO1FBQUU3QixJQUFJLEVBQUVwQixlQUFlLENBQUNvRDtNQUFPLENBQUMsQ0FDN0M7TUFDREMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNGLElBQU1qQixLQUFlLEdBQUFOLGFBQUEsQ0FBQUEsYUFBQSxLQUFPbEIsaUJBQWlCO01BQUVtQixRQUFRLEVBQUU7UUFBQ29PLE1BQU0sRUFBTkE7TUFBTTtJQUFDLEVBQUM7SUFFbEVySyxNQUFNLENBQ0pqRixjQUFjLENBQUN1QixLQUFLLEVBQUUvQixlQUFlLENBQUM4RixpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUNyRixDQUFDLENBQUNHLElBQUksQ0FBQ2xFLEtBQUssQ0FBQztJQUNiMEQsTUFBTSxDQUFDakYsY0FBYyxDQUFDdUIsS0FBSyxFQUFFL0IsZUFBZSxDQUFDb0gsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ25CLElBQUksQ0FBQ2xFLEtBQUssQ0FBQztJQUM3RjBELE1BQU0sQ0FBQ2pELFVBQVUsQ0FBQ1QsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUVwQyxlQUFlLENBQUNtRCxNQUFNLENBQUMsQ0FBQyxDQUFDbUQsSUFBSSxDQUFDbEUsS0FBSyxDQUFDO0lBQzlFMEQsTUFBTSxDQUFDMUQsS0FBSyxDQUFDTCxRQUFRLENBQUNvTyxNQUFNLENBQUNuTixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUN1RCxXQUFXLENBQUMsQ0FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQztFQUNwRSxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
950
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBTExfRklFTERfVFlQRVMiLCJBTklNQVRJT05fV0lORE9XIiwiRklMVEVSX1RZUEVTIiwiUExPVF9UWVBFUyIsIlNPUlRfT1JERVIiLCJWaXNTdGF0ZUFjdGlvbnMiLCJLZXBsZXJUYWJsZSIsIlNjaGVtYU1hbmFnZXIiLCJwcm9jZXNzQXJyb3dCYXRjaGVzIiwiZXhwb3J0TWFwVG9IVE1MIiwiZXhwb3J0VG9Kc29uU3RyaW5nIiwiZ2V0TWFwSlNPTiIsImFycm93IiwiZHJhaW5UYXNrc0ZvclRlc3RpbmciLCJlcnJvclRhc2tJblRlc3QiLCJzdWNjZWVkVGFza0luVGVzdCIsInZpc1N0YXRlUmVkdWNlciIsIklOSVRJQUxfVklTX1NUQVRFIiwicmVkdWNlVmlzU3RhdGUiLCJhcnJvd0NpdGllcyIsInNvdXJjZSIsIlRhYmxlIiwibGF0IiwidmVjdG9yRnJvbUFycmF5IiwiRmxvYXQ2NCIsImxuZyIsInBvcHVsYXRpb24iLCJJbnQzMiIsImRhdGEiLCJiYXRjaGVzIiwiRXJyb3IiLCJ3aXRoVGFibGVzIiwibWFrZVRhYmxlIiwiYWRkTGF5ZXIiLCJpZCIsInR5cGUiLCJjb25maWciLCJkYXRhSWQiLCJjb2x1bW5zIiwiY29sb3JGaWVsZCIsIm5hbWUiLCJpbnRlZ2VyIiwiZGVzY3JpYmUiLCJ0ZXN0IiwiZWFjaCIsIl9sYXllciRjb25maWckY29sb3JGaSIsImluaXRpYWwiLCJvcmlnaW5hbCIsImRhdGFzZXRzIiwiY2l0aWVzIiwiZGF0YUNvbnRhaW5lciIsIm5leHQiLCJyZW5hbWVUYWJsZUNvbHVtbiIsInRhYmxlIiwiZGMiLCJleHBlY3QiLCJmaWVsZHMiLCJtYXAiLCJmIiwidG9FcXVhbCIsImdldFRhYmxlIiwic2NoZW1hIiwiZmxhdHRlbkRhdGEiLCJ2YWx1ZUFjY2Vzc29yIiwiaW5kZXgiLCJmb3JFYWNoIiwiXyIsImkiLCJnZXRDb2x1bW4iLCJ2YWx1ZXMiLCJidWZmZXIiLCJ0b0JlIiwicm93QXNBcnJheSIsImxheWVyIiwibGF5ZXJzIiwiZ2V0UG9zaXRpb25BY2Nlc3NvciIsImZvcm1hdExheWVyRGF0YSIsIkFycmF5IiwiZnJvbSIsImdlb0Fycm93VmVjdG9yIiwiZ2V0IiwiX2lwYyRnZXRDaGlsZCIsInNhdmVkIiwidmlzU3RhdGUiLCJtYXBTdGF0ZSIsIm1hcFN0eWxlIiwidWlTdGF0ZSIsImhhc0RhdGEiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiaHRtbCIsIl9vYmplY3RTcHJlYWQiLCJtb2RlIiwiZGF0YXNldHNNYXRjaCIsIm1hdGNoIiwiY29uZmlnTWF0Y2giLCJodG1sRGF0YSIsImh0bWxDb25maWciLCJfaSIsIl9hcnIiLCJsZW5ndGgiLCJfbG9hZGVkJGRhdGFzZXRzIiwiZG9jdW1lbnQiLCJsb2FkZWQiLCJsb2FkIiwiZGF0YXNldCIsImlwYyIsInRhYmxlRnJvbUlQQyIsInRhYmxlVG9JUEMiLCJwcm9jZXNzZWQiLCJyZXN0b3JlZCIsImdldENoaWxkIiwiaW5mbyIsImxhYmVsIiwiY29sb3IiLCJ1cGRhdGVTY2hlbWEiLCJfbGVuIiwiYXJndW1lbnRzIiwidGFibGVzIiwiX2tleSIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwid2l0aEZpbHRlciIsInN0YXRlIiwiY29sdW1uIiwiY3JlYXRlT3JVcGRhdGVGaWx0ZXIiLCJ1bmRlZmluZWQiLCJ3aXRoU3luY2VkRmlsdGVyIiwicHJpbWFyeSIsInNlY29uZGFyeSIsInNldEZpbHRlciIsImNoYW5nZVR5cGUiLCJjaGFuZ2VUYWJsZUNvbHVtblR5cGUiLCJtYWtlQ2l0aWVzIiwicmVhbCIsInN0cmluZyIsInJvd3MiLCJ3aXRoQ2l0aWVzIiwiaW50ZXJhY3Rpb25Db25maWciLCJ0b29sdGlwIiwiZmllbGRzVG9TaG93IiwiZm9ybWF0IiwidGV4dExhYmVsIiwiZmllbGQiLCJhZGRDaGFydCIsInRpdGxlIiwiYXBwbHlGaWx0ZXJzIiwiZGlzcGxheSIsImNoYXJ0RGlzcGxheSIsInhBeGlzIiwiYWdncmVnYXRpb24iLCJ5QXhpcyIsImNyb3NzRmlsdGVyIiwiZW5hYmxlZCIsImZpbHRlcklkIiwiZmllbGROYW1lcyIsInZhbHVlIiwiYmVmb3JlRWFjaCIsIl9sYXllciRjb25maWckY29sb3JGaTIiLCJfbGF5ZXIkY29uZmlnJHRleHRMYWIiLCJfc3RhdGUkY2hhcnRzJDAkeEF4aXMiLCJfc3RhdGUkY2hhcnRzJDAkeUF4aXMiLCJfc3RhdGUkY2hhcnRzJDAkY3Jvc3MiLCJfc2F2ZWRWaXNTdGF0ZSRsYXllcnMiLCJfc2F2ZWRWaXNTdGF0ZSRsYXllcnMyIiwiX3NhdmVkVmlzU3RhdGUkbGF5ZXJzMyIsIl9zYXZlZFZpc1N0YXRlJGNoYXJ0cyIsImhpZGRlbkNvbHVtbnMiLCJ0b0hhdmVMZW5ndGgiLCJmaWx0ZXJzIiwicmVnaW9uIiwiZmluZCIsImRpc3BsYXlOYW1lIiwiY2hhcnRzIiwic2F2ZSIsInNhdmVkVmlzU3RhdGUiLCJ2aXN1YWxDaGFubmVscyIsInN0cmluZ2lmeSIsInRvQ29udGFpbiIsIm5vdCIsIl9zdGF0ZSRjaGFydHMkMCR5QXhpczIiLCJkZWxldGVUYWJsZUNvbHVtbiIsInRvQmVOdWxsIiwib25seSIsInNpbmdsZSIsImtlcHQiLCJoaXN0b2dyYW1Db3VudCIsIl9iaW5zIiwiYmlucyIsInJlZHVjZSIsInN1bSIsImJpbiIsImNvdW50IiwiZmlsdGVyZWRJbmRleCIsIl9zdGF0ZSRsYXllcnMkZmluZCIsIl9zdGF0ZSRsYXllcnMkZmluZDIiLCJfc3RhdGUkY2hhcnRzJDAkeUF4aXMzIiwid2VpZ2h0RmllbGQiLCJwb3AiLCJ0b01hdGNoT2JqZWN0IiwiYW5hbHl6ZXJUeXBlIiwiX3N0YXRlJGRhdGFzZXRzJGNpdGllIiwiX3N0YXRlJGRhdGFzZXRzJGNpdGllMiIsInBvbHlnb25GaWx0ZXIiLCJmaXhlZERvbWFpbiIsInZpZXciLCJpc0FuaW1hdGluZyIsInNwZWVkIiwicG9seWdvbiIsImZpZWxkSWR4IiwiZG9tYWluIiwicHJvcGVydGllcyIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJwbG90VHlwZSIsImhpc3RvZ3JhbSIsImxheWVySWQiLCJncHUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJmaWx0ZXIiLCJ0b0JlVW5kZWZpbmVkIiwiZmlsdGVyUmVjb3JkIiwidG9Db250YWluRXF1YWwiLCJvYmplY3RDb250YWluaW5nIiwiY3B1Iiwic29ydFRhYmxlQ29sdW1uIiwiQVNDRU5ESU5HIiwic29ydENvbHVtbiIsInNvcnRPcmRlciIsImV2ZW50cyIsInRpbWVzdGFtcCIsInN5bmNlZFdpdGhMYXllclRpbWVsaW5lIiwic3luY1RpbWVsaW5lTW9kZSIsImFuaW1hdGlvbldpbmRvdyIsImludGVydmFsIiwidGltZUJpbnMiLCJkYXkiLCJsaW5lQ2hhcnQiLCJzZXJpZXMiLCJ5RG9tYWluIiwieERvbWFpbiIsInRpbWV6b25lIiwiaW52ZXJ0VHJlbmRDb2xvciIsInNob3dUaW1lRGlzcGxheSIsInRvSGF2ZVByb3BlcnR5IiwiZnJlZSIsIl9zdGF0ZSRkYXRhc2V0cyRzZWNvbiIsImR5bmFtaWNEb21haW4iLCJtYWtlRXZlbnRzIiwic2V0RmlsdGVyUGxvdCIsInRvQmVEZWZpbmVkIiwiX3N0YXRlJGZpbHRlcnMkMCRsaW5lIiwiX3N0YXRlJGZpbHRlcnMkMCRsaW5lMiIsIl9zdGF0ZSRmaWx0ZXJzJDAkbGluZTMiLCJncm91cEJ5IiwiZmllbGROYW1lIiwibnVtR3JvdXBzIiwiZ3JvdXBPdGhlcnMiLCJzZXJpZXNCZWZvcmUiLCJTZXQiLCJuYW1lcyIsIm5hbWVzQWZ0ZXIiLCJfc3RhdGUkZmlsdGVycyQwJHlBeGkiLCJfdGltZUZpbHRlciR0aW1lQmlucyIsIl90aW1lRmlsdGVyJHRpbWVCaW5zMiIsIl9zdGF0ZSRjaGFydHMkMCR4QXhpczIiLCJlbmROYW1lIiwidGltZUZpbHRlciIsImludGVydmFsQmlucyIsInRvQmVHcmVhdGVyVGhhbiIsImVuZEZpZWxkSWR4IiwiX25leHQkZGF0YXNldHMkY2l0aWVzIiwidGFza3MiLCJub3RpZmljYXRpb24iLCJwYXlsb2FkIiwibWVzc2FnZSIsIl9zdGF0ZSRkYXRhc2V0cyRjaXRpZTMiLCJsb2FkQ29sdW1uU3RhdHMiLCJyZXF1ZXN0UmV2aXNpb24iLCJkYXRhUmV2aXNpb24iLCJfZHJhaW5UYXNrc0ZvclRlc3RpbmciLCJfZHJhaW5UYXNrc0ZvclRlc3RpbmcyIiwiX3NsaWNlZFRvQXJyYXkiLCJ0YXNrIiwicmVzdWx0IiwibWVhbiIsInN0YWxlU3VjY2VzcyIsImZpbHRlclByb3BzIiwicmFuZ2UiLCJmaWVsZFR5cGUiLCJjaGFuZ2VkU3RhdGUiLCJjaGFuZ2VkRmllbGQiLCJjb2x1bW5TdGF0cyIsInVwZGF0ZSIsInR5cGVzIiwiX2RyYWluVGFza3NGb3JUZXN0aW5nMyIsIl9kcmFpblRhc2tzRm9yVGVzdGluZzQiLCJwaW5UYWJsZUNvbHVtbiIsInJvdyIsInJlZnJlc2hEYXRhc2V0U3VjY2VzcyIsIm5vdE1vZGlmaWVkIiwiYWRkVG9EYXRhc2V0Iiwic3VjY2Vzc1N0YXRlIiwibG9nRXJyb3IiLCJqZXN0Iiwic3B5T24iLCJjb25zb2xlIiwibW9ja0ltcGxlbWVudGF0aW9uIiwiZXJyb3JTdGF0ZSIsIm1vY2tSZXN0b3JlIiwiaXNMb2FkaW5nU3RhdHMiLCJkdXBsaWNhdGUiLCJ0aWxlcyIsInRpbGVkIiwidW5jaGFuZ2VkIiwicmVtb3RlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbHVtbi1lZGl0LXVwZGF0ZXJzLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQUxMX0ZJRUxEX1RZUEVTLFxuICBBTklNQVRJT05fV0lORE9XLFxuICBGSUxURVJfVFlQRVMsXG4gIFBMT1RfVFlQRVMsXG4gIFNPUlRfT1JERVJcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtWaXNTdGF0ZUFjdGlvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCBTY2hlbWFNYW5hZ2VyLCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge3Byb2Nlc3NBcnJvd0JhdGNoZXN9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge1xuICBleHBvcnRNYXBUb0hUTUwsXG4gIGV4cG9ydFRvSnNvblN0cmluZyxcbiAgZ2V0TWFwSlNPTixcbiAgQXJyb3dEYXRhQ29udGFpbmVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7ZHJhaW5UYXNrc0ZvclRlc3RpbmcsIGVycm9yVGFza0luVGVzdCwgc3VjY2VlZFRhc2tJblRlc3R9IGZyb20gJ0BrZXBsZXIuZ2wvdGFza3MnO1xuaW1wb3J0IHR5cGUge1BvbHlnb25GaWx0ZXIsIFJhbmdlRmlsdGVyLCBUaW1lUmFuZ2VGaWx0ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQgdmlzU3RhdGVSZWR1Y2VyIGZyb20gJy4vdmlzLXN0YXRlJztcbmltcG9ydCB7SU5JVElBTF9WSVNfU1RBVEV9IGZyb20gJy4vdmlzLXN0YXRlLXVwZGF0ZXJzJztcblxuY29uc3QgcmVkdWNlVmlzU3RhdGUgPSB2aXNTdGF0ZVJlZHVjZXIgYXMgKHN0YXRlOiBWaXNTdGF0ZSwgYWN0aW9uOiB1bmtub3duKSA9PiBWaXNTdGF0ZTtcblxuZnVuY3Rpb24gYXJyb3dDaXRpZXMoKSB7XG4gIGNvbnN0IHNvdXJjZSA9IG5ldyBhcnJvdy5UYWJsZSh7XG4gICAgbGF0OiBhcnJvdy52ZWN0b3JGcm9tQXJyYXkoWzM3LCBudWxsXSwgbmV3IGFycm93LkZsb2F0NjQoKSksXG4gICAgbG5nOiBhcnJvdy52ZWN0b3JGcm9tQXJyYXkoWy0xMjIsIC0xMjNdLCBuZXcgYXJyb3cuRmxvYXQ2NCgpKSxcbiAgICBwb3B1bGF0aW9uOiBhcnJvdy52ZWN0b3JGcm9tQXJyYXkoWzEwMDAsIG51bGxdLCBuZXcgYXJyb3cuSW50MzIoKSlcbiAgfSk7XG4gIGNvbnN0IGRhdGEgPSBwcm9jZXNzQXJyb3dCYXRjaGVzKHNvdXJjZS5iYXRjaGVzKTtcbiAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIEFycm93IGRhdGEnKTtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKFxuICAgIHdpdGhUYWJsZXMobWFrZVRhYmxlKCdjaXRpZXMnLCBkYXRhKSksXG4gICAgVmlzU3RhdGVBY3Rpb25zLmFkZExheWVyKHtcbiAgICAgIGlkOiAnY2l0aWVzLWxheWVyJyxcbiAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgZGF0YUlkOiAnY2l0aWVzJyxcbiAgICAgICAgY29sdW1uczoge2xhdDogJ2xhdCcsIGxuZzogJ2xuZyd9LFxuICAgICAgICBjb2xvckZpZWxkOiB7bmFtZTogJ3BvcHVsYXRpb24nLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIH1cbiAgICB9KVxuICApO1xufVxuXG5kZXNjcmliZSgnQXJyb3cgY29sdW1uIG9yZGVyIHRocm91Z2ggZWRpdHMgYW5kIHNhdmVkIG1hcHMnLCAoKSA9PiB7XG4gIHRlc3QuZWFjaChbJzAnLCAnMjAyMCcsICc0Mjk0OTY3Mjk0JywgJzAwJywgJzAyMDIwJywgJy0xJywgJzEuMCcsICcxZTMnLCAnNDI5NDk2NzI5NSddKShcbiAgICAncmVuYW1lIHRvICVzIHByZXNlcnZlcyBkZXNjcmlwdG9yL3ZlY3RvciBvcmRlcicsXG4gICAgbmFtZSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsID0gYXJyb3dDaXRpZXMoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gaW5pdGlhbC5kYXRhc2V0cy5jaXRpZXMuZGF0YUNvbnRhaW5lciBhcyBBcnJvd0RhdGFDb250YWluZXI7XG4gICAgICBjb25zdCBuZXh0ID0gcmVkdWNlVmlzU3RhdGUoXG4gICAgICAgIGluaXRpYWwsXG4gICAgICAgIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbignY2l0aWVzJywgJ3BvcHVsYXRpb24nLCBuYW1lKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRhYmxlID0gbmV4dC5kYXRhc2V0cy5jaXRpZXM7XG4gICAgICBjb25zdCBkYyA9IHRhYmxlLmRhdGFDb250YWluZXIgYXMgQXJyb3dEYXRhQ29udGFpbmVyO1xuICAgICAgZXhwZWN0KHRhYmxlLmZpZWxkcy5tYXAoZiA9PiBmLm5hbWUpKS50b0VxdWFsKFsnbGF0JywgJ2xuZycsIG5hbWVdKTtcbiAgICAgIGV4cGVjdChkYy5nZXRUYWJsZSgpLnNjaGVtYS5maWVsZHMubWFwKGYgPT4gZi5uYW1lKSkudG9FcXVhbChbJ2xhdCcsICdsbmcnLCBuYW1lXSk7XG4gICAgICBleHBlY3QoZGMuZmxhdHRlbkRhdGEoKSkudG9FcXVhbChbXG4gICAgICAgIFszNywgLTEyMiwgMTAwMF0sXG4gICAgICAgIFtudWxsLCAtMTIzLCBudWxsXVxuICAgICAgXSk7XG4gICAgICBleHBlY3QodGFibGUuZmllbGRzLm1hcChmID0+IGYudmFsdWVBY2Nlc3Nvcih7aW5kZXg6IDB9KSkpLnRvRXF1YWwoWzM3LCAtMTIyLCAxMDAwXSk7XG4gICAgICB0YWJsZS5maWVsZHMuZm9yRWFjaCgoXywgaSkgPT4ge1xuICAgICAgICBleHBlY3QoZGMuZ2V0Q29sdW1uKGkpLmRhdGFbMF0udmFsdWVzLmJ1ZmZlcikudG9CZShcbiAgICAgICAgICBvcmlnaW5hbC5nZXRDb2x1bW4oaSkuZGF0YVswXS52YWx1ZXMuYnVmZmVyXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChpbml0aWFsLmRhdGFzZXRzLmNpdGllcy5maWVsZHNbMl0ubmFtZSkudG9CZSgncG9wdWxhdGlvbicpO1xuICAgICAgZXhwZWN0KG9yaWdpbmFsLmdldFRhYmxlKCkuc2NoZW1hLmZpZWxkc1syXS5uYW1lKS50b0JlKCdwb3B1bGF0aW9uJyk7XG4gICAgICBleHBlY3Qob3JpZ2luYWwucm93QXNBcnJheSgwKSkudG9FcXVhbChbMzcsIC0xMjIsIDEwMDBdKTtcbiAgICAgIGNvbnN0IGxheWVyID0gbmV4dC5sYXllcnNbMF07XG4gICAgICBleHBlY3QobGF5ZXIuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYykoe2luZGV4OiAwfSkpLnRvRXF1YWwoWy0xMjIsIDM3LCAwXSk7XG4gICAgICBsYXllci5mb3JtYXRMYXllckRhdGEobmV4dC5kYXRhc2V0cyk7XG4gICAgICBleHBlY3QoQXJyYXkuZnJvbSgobGF5ZXIgYXMgYW55KS5nZW9BcnJvd1ZlY3Rvci5nZXQoMCkpKS50b0VxdWFsKFstMTIyLCAzNywgMF0pO1xuICAgICAgZXhwZWN0KGxheWVyLmNvbmZpZy5jb2xvckZpZWxkPy5uYW1lKS50b0JlKG5hbWUpO1xuICAgIH1cbiAgKTtcblxuICB0ZXN0KCdKU09OLCBIVE1MIGFuZCBuYXRpdmUgSVBDIHJlbG9hZCByZXRhaW4gdGhlIHJlbmFtZWQgdmFsdWVzIGFuZCBwb3NpdGlvbnMnLCAoKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgYXJyb3dDaXRpZXMoKSxcbiAgICAgIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbignY2l0aWVzJywgJ3BvcHVsYXRpb24nLCAnMjAyMCcpXG4gICAgKTtcbiAgICBjb25zdCBzYXZlZCA9IGdldE1hcEpTT04oXG4gICAgICB7dmlzU3RhdGU6IG5leHQsIG1hcFN0YXRlOiB7fSwgbWFwU3R5bGU6IHt9LCB1aVN0YXRlOiB7fX0sXG4gICAgICB7aGFzRGF0YTogdHJ1ZX1cbiAgICApO1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKGV4cG9ydFRvSnNvblN0cmluZyhzYXZlZCkpO1xuICAgIGNvbnN0IGh0bWwgPSBleHBvcnRNYXBUb0hUTUwoey4uLnNhdmVkLCBtb2RlOiAnUkVBRCd9KTtcbiAgICBjb25zdCBkYXRhc2V0c01hdGNoID0gaHRtbC5tYXRjaCgvY29uc3QgZGF0YXNldHMgPSAoLispOy8pO1xuICAgIGNvbnN0IGNvbmZpZ01hdGNoID0gaHRtbC5tYXRjaCgvY29uc3QgY29uZmlnID0gKC4rKTsvKTtcbiAgICBpZiAoIWRhdGFzZXRzTWF0Y2ggfHwgIWNvbmZpZ01hdGNoKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGVtYmVkZGVkIG1hcCBkYXRhJyk7XG4gICAgY29uc3QgaHRtbERhdGEgPSBKU09OLnBhcnNlKGRhdGFzZXRzTWF0Y2hbMV0pO1xuICAgIGNvbnN0IGh0bWxDb25maWcgPSBKU09OLnBhcnNlKGNvbmZpZ01hdGNoWzFdKTtcbiAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIFtqc29uLCB7ZGF0YXNldHM6IGh0bWxEYXRhLCBjb25maWc6IGh0bWxDb25maWd9XSkge1xuICAgICAgY29uc3QgbG9hZGVkID0gU2NoZW1hTWFuYWdlci5sb2FkKGRvY3VtZW50KTtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBsb2FkZWQuZGF0YXNldHM/LlswXTtcbiAgICAgIGlmICghZGF0YXNldCkgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCByZWxvYWRlZCBkYXRhc2V0Jyk7XG4gICAgICBjb25zdCB0YWJsZSA9IG1ha2VUYWJsZSgnY2l0aWVzJywgZGF0YXNldC5kYXRhKTtcbiAgICAgIGV4cGVjdCh0YWJsZS5maWVsZHMubWFwKGYgPT4gZi5uYW1lKSkudG9FcXVhbChbJ2xhdCcsICdsbmcnLCAnMjAyMCddKTtcbiAgICAgIGV4cGVjdCh0YWJsZS5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMCkpLnRvRXF1YWwoWzM3LCAtMTIyLCAxMDAwXSk7XG4gICAgICBleHBlY3QobmV4dC5sYXllcnNbMF0uZ2V0UG9zaXRpb25BY2Nlc3Nvcih0YWJsZS5kYXRhQ29udGFpbmVyKSh7aW5kZXg6IDB9KSkudG9FcXVhbChbXG4gICAgICAgIC0xMjIsIDM3LCAwXG4gICAgICBdKTtcbiAgICB9XG4gICAgY29uc3QgZGMgPSBuZXh0LmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyIGFzIEFycm93RGF0YUNvbnRhaW5lcjtcbiAgICBjb25zdCBpcGMgPSBhcnJvdy50YWJsZUZyb21JUEMoYXJyb3cudGFibGVUb0lQQyhkYy5nZXRUYWJsZSgpKSk7XG4gICAgY29uc3QgcHJvY2Vzc2VkID0gcHJvY2Vzc0Fycm93QmF0Y2hlcyhpcGMuYmF0Y2hlcyk7XG4gICAgaWYgKCFwcm9jZXNzZWQpIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgSVBDIGRhdGEnKTtcbiAgICBjb25zdCByZXN0b3JlZCA9IG1ha2VUYWJsZSgnY2l0aWVzJywgcHJvY2Vzc2VkKTtcbiAgICBleHBlY3QocmVzdG9yZWQuZGF0YUNvbnRhaW5lci5yb3dBc0FycmF5KDApKS50b0VxdWFsKFszNywgLTEyMiwgMTAwMF0pO1xuICAgIGV4cGVjdChpcGMuc2NoZW1hLmZpZWxkcy5tYXAoZiA9PiBmLm5hbWUpKS50b0VxdWFsKFsnbGF0JywgJ2xuZycsICcyMDIwJ10pO1xuICAgIGV4cGVjdChpcGMuZ2V0Q2hpbGQoJzIwMjAnKT8uZ2V0KDApKS50b0JlKDEwMDApO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBtYWtlVGFibGUoaWQ6IHN0cmluZywgZGF0YTogUGFyYW1ldGVyczxLZXBsZXJUYWJsZVsndXBkYXRlU2NoZW1hJ10+WzBdKSB7XG4gIGNvbnN0IHRhYmxlID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICBpbmZvOiB7aWQsIGxhYmVsOiBpZCwgdHlwZTogJ2xvY2FsJ30sXG4gICAgY29sb3I6IFswLCAwLCAwXVxuICB9KTtcbiAgcmV0dXJuIHRhYmxlLnVwZGF0ZVNjaGVtYShkYXRhKTtcbn1cblxuZnVuY3Rpb24gd2l0aFRhYmxlcyguLi50YWJsZXM6IEtlcGxlclRhYmxlW10pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgZGF0YXNldHM6IE9iamVjdC5mcm9tRW50cmllcyh0YWJsZXMubWFwKHRhYmxlID0+IFt0YWJsZS5pZCwgdGFibGVdKSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2l0aEZpbHRlcihzdGF0ZTogVmlzU3RhdGUsIGRhdGFJZDogc3RyaW5nLCBjb2x1bW46IHN0cmluZyk6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuY3JlYXRlT3JVcGRhdGVGaWx0ZXIodW5kZWZpbmVkLCBkYXRhSWQsIGNvbHVtbikpO1xufVxuXG5mdW5jdGlvbiB3aXRoU3luY2VkRmlsdGVyKHByaW1hcnk6IEtlcGxlclRhYmxlLCBzZWNvbmRhcnk6IEtlcGxlclRhYmxlLCBjb2x1bW46IHN0cmluZyk6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKFxuICAgIHdpdGhGaWx0ZXIod2l0aFRhYmxlcyhwcmltYXJ5LCBzZWNvbmRhcnkpLCBwcmltYXJ5LmlkLCBjb2x1bW4pLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXIoMCwgWydkYXRhSWQnLCAnbmFtZSddLCBbc2Vjb25kYXJ5LmlkLCBjb2x1bW5dLCAxKVxuICApO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VUeXBlKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkOiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBWaXNTdGF0ZSB7XG4gIHJldHVybiByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmNoYW5nZVRhYmxlQ29sdW1uVHlwZShkYXRhSWQsIGNvbHVtbiwgdHlwZSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlQ2l0aWVzKCkge1xuICBjb25zdCB0YWJsZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgaW5mbzoge2lkOiAnY2l0aWVzJywgbGFiZWw6ICdjaXRpZXMnLCB0eXBlOiAnbG9jYWwnfSxcbiAgICBjb2xvcjogWzAsIDAsIDBdXG4gIH0pO1xuICB0YWJsZS51cGRhdGVTY2hlbWEoe1xuICAgIGZpZWxkczogW1xuICAgICAge25hbWU6ICdsYXQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbH0sXG4gICAgICB7bmFtZTogJ2xuZycsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5yZWFsfSxcbiAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30sXG4gICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgIF0sXG4gICAgcm93czogW1xuICAgICAgWzM3LjcsIC0xMjIuNCwgJ3dlc3QnLCAxMF0sXG4gICAgICBbNDAuNywgLTc0LjAsICdlYXN0JywgNDBdXG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHRhYmxlO1xufVxuXG5mdW5jdGlvbiB3aXRoQ2l0aWVzKCk6IFZpc1N0YXRlIHtcbiAgY29uc3QgY2l0aWVzID0gbWFrZUNpdGllcygpO1xuICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLFxuICAgIGRhdGFzZXRzOiB7Y2l0aWVzfSxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZzoge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUuaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICB0b29sdGlwOiB7XG4gICAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLFxuICAgICAgICAgIGZpZWxkc1RvU2hvdzoge1xuICAgICAgICAgICAgY2l0aWVzOiBbe25hbWU6ICdyZWdpb24nLCBmb3JtYXQ6IG51bGx9XVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgIHN0YXRlLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5hZGRMYXllcih7XG4gICAgICBpZDogJ2NpdGllcy1sYXllcicsXG4gICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGRhdGFJZDogJ2NpdGllcycsXG4gICAgICAgIGxhYmVsOiAnY2l0aWVzJyxcbiAgICAgICAgY29sb3I6IFsyNTUsIDAsIDBdLFxuICAgICAgICBjb2x1bW5zOiB7bGF0OiAnbGF0JywgbG5nOiAnbG5nJ30sXG4gICAgICAgIGNvbG9yRmllbGQ6IHtuYW1lOiAncmVnaW9uJywgdHlwZTogJ3N0cmluZyd9LFxuICAgICAgICB0ZXh0TGFiZWw6IFt7ZmllbGQ6IHtuYW1lOiAncmVnaW9uJywgdHlwZTogJ3N0cmluZyd9fV1cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgIHN0YXRlLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5jcmVhdGVPclVwZGF0ZUZpbHRlcih1bmRlZmluZWQsICdjaXRpZXMnLCAncmVnaW9uJylcbiAgKTtcbiAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICBzdGF0ZSxcbiAgICBWaXNTdGF0ZUFjdGlvbnMuYWRkQ2hhcnQoe1xuICAgICAgaWQ6ICdyZWdpb24tY2hhcnQnLFxuICAgICAgdGl0bGU6ICdSZWdpb25zJyxcbiAgICAgIHR5cGU6ICdiYXJDaGFydCcsXG4gICAgICBkYXRhSWQ6ICdjaXRpZXMnLFxuICAgICAgYXBwbHlGaWx0ZXJzOiB0cnVlLFxuICAgICAgZGlzcGxheToge30sXG4gICAgICBjaGFydERpc3BsYXk6IHt9LFxuICAgICAgeEF4aXM6IHtmaWVsZDoge25hbWU6ICdyZWdpb24nLCB0eXBlOiAnc3RyaW5nJ30sIGFnZ3JlZ2F0aW9uOiBudWxsLCB0aXRsZTogJ3JlZ2lvbid9LFxuICAgICAgeUF4aXM6IHtmaWVsZDoge25hbWU6ICdwb3AnLCB0eXBlOiAnaW50ZWdlcid9LCBhZ2dyZWdhdGlvbjogJ3N1bScsIHRpdGxlOiAnUG9wdWxhdGlvbid9LFxuICAgICAgY3Jvc3NGaWx0ZXI6IHtcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGZpbHRlcklkOiAncmVnaW9uLWNoYXJ0LWZpbHRlcicsXG4gICAgICAgIGZpZWxkTmFtZXM6IHt4QXhpczogJ3JlZ2lvbid9LFxuICAgICAgICB2YWx1ZToge31cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmRlc2NyaWJlKCdjb2x1bW4gZWRpdHMnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3JlbmFtZSBjaGFuZ2VzIHRoZSBmaWVsZCBpZGVudGl0eSBzdG9yZWQgaW4gbGF5ZXJzLCBmaWx0ZXJzLCBhbmQgc2F2ZWQgbWFwcycsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMgPSBbJ3JlZ2lvbicsICdwb3AnXTtcbiAgICBleHBlY3Qoc3RhdGUubGF5ZXJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubmFtZSkudG9FcXVhbChbJ3JlZ2lvbiddKTtcblxuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbignY2l0aWVzJywgJ3JlZ2lvbicsICdhcmVhJykpO1xuXG4gICAgY29uc3QgcmVnaW9uID0gc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09ICdhcmVhJyk7XG4gICAgZXhwZWN0KHJlZ2lvbj8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChyZWdpb24/LmlkKS50b0JlKCdhcmVhJyk7XG4gICAgZXhwZWN0KHJlZ2lvbj8uZGlzcGxheU5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvRXF1YWwoW1xuICAgICAgJ2xhdCcsXG4gICAgICAnbG5nJyxcbiAgICAgICdhcmVhJyxcbiAgICAgICdwb3AnXG4gICAgXSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMClbMl0pLnRvQmUoJ3dlc3QnKTtcblxuICAgIGNvbnN0IGxheWVyID0gc3RhdGUubGF5ZXJzWzBdO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sdW1ucy5sYXQudmFsdWUpLnRvQmUoJ2xhdCcpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sdW1ucy5sbmcudmFsdWUpLnRvQmUoJ2xuZycpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sb3JGaWVsZD8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcudGV4dExhYmVsWzBdLmZpZWxkPy5uYW1lKS50b0JlKCdhcmVhJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubmFtZSkudG9FcXVhbChbJ2FyZWEnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS54QXhpcz8uZmllbGQ/Lm5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnlBeGlzPy5maWVsZD8ubmFtZSkudG9CZSgncG9wJyk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS5jcm9zc0ZpbHRlcj8uZmllbGROYW1lcykudG9FcXVhbCh7eEF4aXM6ICdhcmVhJ30pO1xuICAgIGV4cGVjdChzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5maWVsZHNUb1Nob3cuY2l0aWVzWzBdLm5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMpLnRvRXF1YWwoWydhcmVhJywgJ3BvcCddKTtcblxuICAgIGNvbnN0IHNhdmVkID0gU2NoZW1hTWFuYWdlci5zYXZlKHtcbiAgICAgIHZpc1N0YXRlOiBzdGF0ZSxcbiAgICAgIG1hcFN0YXRlOiB7fSxcbiAgICAgIG1hcFN0eWxlOiB7fSxcbiAgICAgIHVpU3RhdGU6IHt9XG4gICAgfSk7XG4gICAgY29uc3Qgc2F2ZWRWaXNTdGF0ZSA9IHNhdmVkLmNvbmZpZy5jb25maWcudmlzU3RhdGU7XG4gICAgZXhwZWN0KHNhdmVkVmlzU3RhdGUubGF5ZXJzPy5bMF0udmlzdWFsQ2hhbm5lbHM/LmNvbG9yRmllbGQpLnRvRXF1YWwoe1xuICAgICAgbmFtZTogJ2FyZWEnLFxuICAgICAgdHlwZTogJ3N0cmluZydcbiAgICB9KTtcbiAgICBleHBlY3Qoc2F2ZWRWaXNTdGF0ZS5sYXllcnM/LlswXS5jb25maWcuY29sdW1ucy5sYXQpLnRvQmUoJ2xhdCcpO1xuICAgIGV4cGVjdChzYXZlZFZpc1N0YXRlLmxheWVycz8uWzBdLmNvbmZpZy50ZXh0TGFiZWw/LlswXS5maWVsZD8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChKU09OLnN0cmluZ2lmeShzYXZlZFZpc1N0YXRlLmZpbHRlcnMpKS50b0NvbnRhaW4oJ2FyZWEnKTtcbiAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkoc2F2ZWRWaXNTdGF0ZS5maWx0ZXJzKSkubm90LnRvQ29udGFpbigncmVnaW9uJyk7XG4gICAgZXhwZWN0KHNhdmVkVmlzU3RhdGUuY2hhcnRzPy5bMF0ueEF4aXM/LmZpZWxkPy5uYW1lKS50b0JlKCdhcmVhJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RlbGV0ZSBkcm9wcyByZWZlcmVuY2VzIGFuZCByZWZ1c2VzIHRoZSBsYXN0IGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMgPSBbJ3JlZ2lvbicsICdwb3AnXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2NpdGllcycsICdwb3AnKSk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvRXF1YWwoWydsYXQnLCAnbG5nJywgJ3JlZ2lvbiddKTtcbiAgICBleHBlY3Qoc3RhdGUubGF5ZXJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnlBeGlzPy5maWVsZCkudG9CZU51bGwoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMpLnRvRXF1YWwoWydyZWdpb24nXSk7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2NpdGllcycsICdsYXQnKSk7XG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSkudG9FcXVhbChbJ2xuZycsICdyZWdpb24nXSk7XG5cbiAgICBjb25zdCBvbmx5ID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICAgIGluZm86IHtpZDogJ29ubHknLCBsYWJlbDogJ29ubHknLCB0eXBlOiAnbG9jYWwnfSxcbiAgICAgIGNvbG9yOiBbMCwgMCwgMF1cbiAgICB9KTtcbiAgICBvbmx5LnVwZGF0ZVNjaGVtYSh7XG4gICAgICBmaWVsZHM6IFt7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XSxcbiAgICAgIHJvd3M6IFtbJ3dlc3QnXV1cbiAgICB9KTtcbiAgICBjb25zdCBzaW5nbGU6IFZpc1N0YXRlID0gey4uLklOSVRJQUxfVklTX1NUQVRFLCBkYXRhc2V0czoge29ubHl9fTtcbiAgICBjb25zdCBrZXB0ID0gcmVkdWNlVmlzU3RhdGUoc2luZ2xlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ29ubHknLCAncmVnaW9uJykpO1xuICAgIGV4cGVjdChrZXB0LmRhdGFzZXRzLm9ubHkuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSkudG9FcXVhbChbJ3JlZ2lvbiddKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVsZXRpbmcgYW4gdW5yZWxhdGVkIGNvbHVtbiBwcmVzZXJ2ZXMgYW4gaW52ZXJ0ZWQgbnVtZXJpYyBoaXN0b2dyYW0nLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBtYWtlVGFibGUoJ2RhdGEnLCB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge25hbWU6ICd1bnVzZWQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICd2YWx1ZScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfSxcbiAgICAgICAge25hbWU6ICdjYXRlZ29yeScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XG4gICAgICBdLFxuICAgICAgcm93czogW1xuICAgICAgICBbJ3gnLCAxLCAnQSddLFxuICAgICAgICBbJ3gnLCAyLCAnQiddLFxuICAgICAgICBbJ3gnLCAzLCAnQSddXG4gICAgICBdXG4gICAgfSk7XG4gICAgbGV0IHN0YXRlID0gd2l0aEZpbHRlcih3aXRoVGFibGVzKHRhYmxlKSwgJ2RhdGEnLCAnY2F0ZWdvcnknKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyKDAsICd2YWx1ZScsIFsnQSddKSk7XG4gICAgc3RhdGUgPSB3aXRoRmlsdGVyKHN0YXRlLCAnZGF0YScsICd2YWx1ZScpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXIoMSwgJ3ZhbHVlJywgWzIsIDJdKSk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlcigxLCAnaW52ZXJ0ZWQnLCB0cnVlKSk7XG4gICAgY29uc3QgaGlzdG9ncmFtQ291bnQgPSAoKSA9PlxuICAgICAgKHN0YXRlLmZpbHRlcnNbMV0gYXMgUmFuZ2VGaWx0ZXIpLmJpbnM/LmRhdGE/LnJlZHVjZSgoc3VtLCBiaW4pID0+IHN1bSArIGJpbi5jb3VudCwgMCk7XG4gICAgZXhwZWN0KGhpc3RvZ3JhbUNvdW50KCkpLnRvQmUoMik7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2RhdGEnLCAndW51c2VkJykpO1xuXG4gICAgZXhwZWN0KGhpc3RvZ3JhbUNvdW50KCkpLnRvQmUoMik7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmRhdGEuZmlsdGVyZWRJbmRleCkudG9FcXVhbChbMCwgMl0pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5kYXRhLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQudHlwZSkpLnRvRXF1YWwoW1xuICAgICAgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIsXG4gICAgICBBTExfRklFTERfVFlQRVMuc3RyaW5nXG4gICAgXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGNvbnZlcnRzIHZhbHVlcyBhbmQgcmVjb25jaWxlcyBpbmNvbXBhdGlibGUgcmVmZXJlbmNlcycsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLmFkZExheWVyKHtcbiAgICAgICAgaWQ6ICdjaXRpZXMtaGVhdG1hcCcsXG4gICAgICAgIHR5cGU6ICdoZWF0bWFwJyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgZGF0YUlkOiAnY2l0aWVzJyxcbiAgICAgICAgICBsYWJlbDogJ2NpdGllcyBoZWF0bWFwJyxcbiAgICAgICAgICBjb2xvcjogWzI1NSwgMCwgMF0sXG4gICAgICAgICAgY29sdW1uczoge2xhdDogJ2xhdCcsIGxuZzogJ2xuZyd9LFxuICAgICAgICAgIHdlaWdodEZpZWxkOiB7bmFtZTogJ3BvcCcsIHR5cGU6ICdpbnRlZ2VyJ30sXG4gICAgICAgICAgdGV4dExhYmVsOiBbe2ZpZWxkOiB7bmFtZTogJ3BvcCcsIHR5cGU6ICdpbnRlZ2VyJ319XVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnY2l0aWVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgY29uc3QgcG9wID0gc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09ICdwb3AnKTtcbiAgICBleHBlY3QocG9wKS50b01hdGNoT2JqZWN0KHt0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nLCBhbmFseXplclR5cGU6ICdTVFJJTkcnLCBmb3JtYXQ6ICcnfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMClbM10pLnRvQmUoJzEwJyk7XG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIGV4cGVjdChcbiAgICAgIChzdGF0ZS5sYXllcnMuZmluZChsYXllciA9PiBsYXllci5pZCA9PT0gJ2NpdGllcy1oZWF0bWFwJyk/LmNvbmZpZyBhcyB7d2VpZ2h0RmllbGQ/OiB1bmtub3dufSlcbiAgICAgICAgLndlaWdodEZpZWxkXG4gICAgKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChcbiAgICAgIHN0YXRlLmxheWVycy5maW5kKGxheWVyID0+IGxheWVyLmlkID09PSAnY2l0aWVzLWhlYXRtYXAnKT8uY29uZmlnLnRleHRMYWJlbFswXS5maWVsZFxuICAgICkudG9NYXRjaE9iamVjdCh7bmFtZTogJ3BvcCcsIHR5cGU6ICdzdHJpbmcnfSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS55QXhpcz8uZmllbGQpLnRvRXF1YWwoe25hbWU6ICdwb3AnLCB0eXBlOiAnc3RyaW5nJ30pO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBwcmVzZXJ2ZXMgcG9seWdvbiBmaWx0ZXJzIHRhcmdldGluZyB0aGUgZGF0YXNldCcsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgY29uc3QgcG9seWdvbkZpbHRlcjogUG9seWdvbkZpbHRlciA9IHtcbiAgICAgIGlkOiAncG9seWdvbi1maWx0ZXInLFxuICAgICAgZGF0YUlkOiBbJ2NpdGllcyddLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGZpeGVkRG9tYWluOiB0cnVlLFxuICAgICAgdmlldzogJ3NpZGUnLFxuICAgICAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICAgICAgc3BlZWQ6IDEsXG4gICAgICBuYW1lOiBbXSxcbiAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5wb2x5Z29uLFxuICAgICAgZmllbGRJZHg6IFtdLFxuICAgICAgZG9tYWluOiBudWxsLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBpZDogJ3BvbHlnb24tc2VsZWN0aW9uJyxcbiAgICAgICAgcHJvcGVydGllczoge2ZpbHRlcklkOiAncG9seWdvbi1maWx0ZXInfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgWy0xMjMsIDM3XSxcbiAgICAgICAgICAgICAgWy0xMjIsIDM3XSxcbiAgICAgICAgICAgICAgWy0xMjIsIDM4XSxcbiAgICAgICAgICAgICAgWy0xMjMsIDM3XVxuICAgICAgICAgICAgXVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5oaXN0b2dyYW19LFxuICAgICAgeUF4aXM6IG51bGwsXG4gICAgICBsYXllcklkOiBbJ2NpdGllcy1sYXllciddLFxuICAgICAgZ3B1OiBmYWxzZVxuICAgIH07XG5cbiAgICBzdGF0ZSA9IHsuLi5zdGF0ZSwgZmlsdGVyczogWy4uLnN0YXRlLmZpbHRlcnMsIHBvbHlnb25GaWx0ZXJdfTtcbiAgICBzdGF0ZSA9IGNoYW5nZVR5cGUoc3RhdGUsICdjaXRpZXMnLCAncG9wJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIuaWQgPT09IHBvbHlnb25GaWx0ZXIuaWQpKS50b0JlKHBvbHlnb25GaWx0ZXIpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmRlbGV0ZVRhYmxlQ29sdW1uKCdjaXRpZXMnLCAnbGF0JykpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gcG9seWdvbkZpbHRlci5pZCkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpbHRlclJlY29yZD8uZ3B1KS5ub3QudG9Db250YWluRXF1YWwoXG4gICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7aWQ6IHBvbHlnb25GaWx0ZXIuaWR9KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWx0ZXJSZWNvcmQ/LmNwdSkubm90LnRvQ29udGFpbkVxdWFsKFxuICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe2lkOiBwb2x5Z29uRmlsdGVyLmlkfSlcbiAgICApO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBwcmVzZXJ2ZXMgYW4gZXhpc3Rpbmcgc29ydCBvbiBhbm90aGVyIGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNvcnRUYWJsZUNvbHVtbignY2l0aWVzJywgJ3JlZ2lvbicsIFNPUlRfT1JERVIuQVNDRU5ESU5HKVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5zb3J0Q29sdW1uKS50b0VxdWFsKHtyZWdpb246IFNPUlRfT1JERVIuQVNDRU5ESU5HfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5zb3J0T3JkZXIpLnRvRXF1YWwoWzEsIDBdKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2NpdGllcycsICdwb3AnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuc29ydENvbHVtbikudG9FcXVhbCh7cmVnaW9uOiBTT1JUX09SREVSLkFTQ0VORElOR30pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuc29ydE9yZGVyKS50b0VxdWFsKFsxLCAwXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGNsZWFycyB0aW1lbGluZSBzdGF0ZSB3aGVuIGEgdGltZSBmaWx0ZXIgYmVjb21lcyBub24tdGltZScsICgpID0+IHtcbiAgICBjb25zdCBldmVudHMgPSBtYWtlVGFibGUoJ2V2ZW50cycsIHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7bmFtZTogJ3N0YXJ0JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCwgYW5hbHl6ZXJUeXBlOiAnREFURVRJTUUnfSxcbiAgICAgICAge25hbWU6ICdhbW91bnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsnMjAyNC0wMS0wMVQwMDowMDowMFonLCAxMF0sXG4gICAgICAgIFsnMjAyNC0wMS0wMlQwMDowMDowMFonLCAyMF1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoRmlsdGVyKHdpdGhUYWJsZXMoZXZlbnRzKSwgJ2V2ZW50cycsICdzdGFydCcpO1xuICAgIHN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi4oc3RhdGUuZmlsdGVyc1swXSBhcyBUaW1lUmFuZ2VGaWx0ZXIpLFxuICAgICAgICAgIHN5bmNlZFdpdGhMYXllclRpbWVsaW5lOiB0cnVlLFxuICAgICAgICAgIHN5bmNUaW1lbGluZU1vZGU6IDEgYXMgY29uc3QsXG4gICAgICAgICAgaXNBbmltYXRpbmc6IHRydWUsXG4gICAgICAgICAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmludGVydmFsLFxuICAgICAgICAgIHRpbWVCaW5zOiB7ZXZlbnRzOiB7ZGF5OiBbXX19LFxuICAgICAgICAgIGxpbmVDaGFydDoge1xuICAgICAgICAgICAgc2VyaWVzOiBbXSxcbiAgICAgICAgICAgIHlEb21haW46IFswLCAxXSxcbiAgICAgICAgICAgIHhEb21haW46IFswLCAxXSxcbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgICAgICAgICAgIGludGVydmFsOiAnZGF5JyxcbiAgICAgICAgICAgIHlBeGlzOiAnYW1vdW50J1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZXpvbmU6ICdVVEMnLFxuICAgICAgICAgIGludmVydFRyZW5kQ29sb3I6IHRydWUsXG4gICAgICAgICAgc2hvd1RpbWVEaXNwbGF5OiB0cnVlLFxuICAgICAgICAgIHlBeGlzOiBzdGF0ZS5kYXRhc2V0cy5ldmVudHMuZmllbGRzWzFdLFxuICAgICAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5saW5lQ2hhcnQsIGludGVydmFsOiAnZGF5JywgYWdncmVnYXRpb246ICdzdW0nfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2V2ZW50cycsICdzdGFydCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgY29uc3QgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1swXTtcbiAgICBleHBlY3QoZmlsdGVyLnR5cGUpLnRvQmUoJ211bHRpU2VsZWN0Jyk7XG4gICAgZXhwZWN0KGZpbHRlcikubm90LnRvSGF2ZVByb3BlcnR5KCdzeW5jZWRXaXRoTGF5ZXJUaW1lbGluZScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgnc3luY1RpbWVsaW5lTW9kZScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgndGltZUJpbnMnKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ2xpbmVDaGFydCcpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgndGltZXpvbmUnKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ2ludmVydFRyZW5kQ29sb3InKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ3Nob3dUaW1lRGlzcGxheScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZml4ZWREb21haW46IGZhbHNlLFxuICAgICAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICAgICAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmZyZWUsXG4gICAgICB5QXhpczogbnVsbCxcbiAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5oaXN0b2dyYW19XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGRldGFjaGVzIGFuIGluY29tcGF0aWJsZSBzeW5jZWQgZmlsdGVyIG1lbWJlciBhbmQgcmVmaWx0ZXJzIGl0cyBkYXRhc2V0JywgKCkgPT4ge1xuICAgIGNvbnN0IHByaW1hcnkgPSBtYWtlVGFibGUoJ3ByaW1hcnknLCB7XG4gICAgICBmaWVsZHM6IFt7bmFtZTogJ3ZhbHVlJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XSxcbiAgICAgIHJvd3M6IFtbMV0sIFsyXV1cbiAgICB9KTtcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBtYWtlVGFibGUoJ3NlY29uZGFyeScsIHtcbiAgICAgIGZpZWxkczogW3tuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1dLFxuICAgICAgcm93czogW1sxXSwgWzNdXVxuICAgIH0pO1xuXG4gICAgbGV0IHN0YXRlID0gd2l0aFN5bmNlZEZpbHRlcihwcmltYXJ5LCBzZWNvbmRhcnksICd2YWx1ZScpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5zZWNvbmRhcnkuZmlsdGVyUmVjb3JkPy5ncHUpLnRvSGF2ZUxlbmd0aCgxKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3NlY29uZGFyeScsICd2YWx1ZScsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZGF0YUlkKS50b0VxdWFsKFsncHJpbWFyeSddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5uYW1lKS50b0VxdWFsKFsndmFsdWUnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgncmFuZ2UnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuc2Vjb25kYXJ5LmZpbHRlclJlY29yZCkudG9NYXRjaE9iamVjdCh7XG4gICAgICBkeW5hbWljRG9tYWluOiBbXSxcbiAgICAgIGZpeGVkRG9tYWluOiBbXSxcbiAgICAgIGNwdTogW10sXG4gICAgICBncHU6IFtdXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NoYW5naW5nIGEgc3luY2VkIHNlY29uZGFyeSBkYXRhc2V0IGRvZXMgbm90IHJlY29uY2lsZSB0aGUgcHJpbWFyeSBwbG90IGF4aXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbWFrZUV2ZW50cyA9IChpZDogc3RyaW5nKSA9PlxuICAgICAgbWFrZVRhYmxlKGlkLCB7XG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICAgIHtuYW1lOiAnYW1vdW50JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XG4gICAgICAgIF0sXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICBbMV83MDBfMDAwXzAwMCwgMTBdLFxuICAgICAgICAgIFsxXzcwMF8wMDBfMDIwLCAyMF1cbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgY29uc3QgcHJpbWFyeSA9IG1ha2VFdmVudHMoJ3ByaW1hcnknKTtcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBtYWtlRXZlbnRzKCdzZWNvbmRhcnknKTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoU3luY2VkRmlsdGVyKHByaW1hcnksIHNlY29uZGFyeSwgJ3N0YXJ0Jyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlclBsb3QoMCwge3lBeGlzOiBzdGF0ZS5kYXRhc2V0cy5wcmltYXJ5LmZpZWxkc1sxXX0pXG4gICAgKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3NlY29uZGFyeScsICdhbW91bnQnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnlBeGlzKS50b01hdGNoT2JqZWN0KHtuYW1lOiAnYW1vdW50JywgdHlwZTogJ2ludGVnZXInfSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ucGxvdFR5cGUudHlwZSkudG9CZSgnbGluZUNoYXJ0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RldGFjaGluZyBhIHN5bmNlZCBwcmltYXJ5IGRhdGFzZXQgcmVidWlsZHMgdGhlIHBsb3QgZm9yIHRoZSBuZXcgcHJpbWFyeScsICgpID0+IHtcbiAgICBjb25zdCBwcmltYXJ5ID0gbWFrZVRhYmxlKCdwcmltYXJ5Jywge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICB7bmFtZTogJ2Ftb3VudCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIHJvd3M6IFtcbiAgICAgICAgWzFfNzAwXzAwMF8wMDAsIDEwXSxcbiAgICAgICAgWzFfNzAwXzAwMF8wMjAsIDIwXVxuICAgICAgXVxuICAgIH0pO1xuICAgIGNvbnN0IHNlY29uZGFyeSA9IG1ha2VUYWJsZSgnc2Vjb25kYXJ5Jywge1xuICAgICAgZmllbGRzOiBbe25hbWU6ICdzdGFydCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J31dLFxuICAgICAgcm93czogW1sxXzcwMF8wMDBfMDQwXSwgWzFfNzAwXzAwMF8wNjBdXVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHdpdGhTeW5jZWRGaWx0ZXIocHJpbWFyeSwgc2Vjb25kYXJ5LCAnc3RhcnQnKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyUGxvdCgwLCB7eUF4aXM6IHN0YXRlLmRhdGFzZXRzLnByaW1hcnkuZmllbGRzWzFdfSlcbiAgICApO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmxpbmVDaGFydCkudG9CZURlZmluZWQoKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3ByaW1hcnknLCAnc3RhcnQnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3NlY29uZGFyeSddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5uYW1lKS50b0VxdWFsKFsnc3RhcnQnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgndGltZVJhbmdlJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ueUF4aXMpLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ucGxvdFR5cGUudHlwZSkudG9CZSgnaGlzdG9ncmFtJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0KS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2dyb3VwZWQgdGltZWxpbmUgc2VyaWVzIHN1cnZpdmUgYSByZW5hbWUgYW5kIHJlYnVpbGQgd2hlbiBncm91cCB2YWx1ZXMgY29sbGFwc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRzID0gbWFrZVRhYmxlKCdldmVudHMnLCB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge25hbWU6ICdzdGFydCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J30sXG4gICAgICAgIHtuYW1lOiAnZ3JvdXAnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICdhbW91bnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsxXzcwMF8wMDBfMDAwLCAnMDEnLCAxMF0sXG4gICAgICAgIFsxXzcwMF8wMDBfMDIwLCAnMScsIDIwXVxuICAgICAgXVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHdpdGhGaWx0ZXIod2l0aFRhYmxlcyhldmVudHMpLCAnZXZlbnRzJywgJ3N0YXJ0Jyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlclBsb3QoMCwge3lBeGlzOiBzdGF0ZS5kYXRhc2V0cy5ldmVudHMuZmllbGRzWzJdfSlcbiAgICApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoXG4gICAgICBzdGF0ZSxcbiAgICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJQbG90KDAsIHtcbiAgICAgICAgcGxvdFR5cGU6IHtncm91cEJ5OiB7ZmllbGROYW1lOiAnZ3JvdXAnLCBudW1Hcm91cHM6ICdBTEwnLCBncm91cE90aGVyczogZmFsc2V9fVxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IHNlcmllc0JlZm9yZSA9IHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0Py5zZXJpZXMgYXMge25hbWVzPzogc3RyaW5nW119O1xuICAgIGV4cGVjdChuZXcgU2V0KHNlcmllc0JlZm9yZS5uYW1lcykpLnRvRXF1YWwobmV3IFNldChbJzAxJywgJzEnXSkpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJlbmFtZVRhYmxlQ29sdW1uKCdldmVudHMnLCAnZ3JvdXAnLCAnY2F0ZWdvcnknKSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0Py5zZXJpZXMpLnRvRXF1YWwoc2VyaWVzQmVmb3JlKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5wbG90VHlwZS5ncm91cEJ5LmZpZWxkTmFtZSkudG9CZSgnY2F0ZWdvcnknKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuZXZlbnRzLmZpZWxkc1sxXS50eXBlKS50b0JlKEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnZXZlbnRzJywgJ2NhdGVnb3J5JywgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIpO1xuXG4gICAgY29uc3QgbmFtZXNBZnRlciA9IChzdGF0ZS5maWx0ZXJzWzBdLmxpbmVDaGFydD8uc2VyaWVzIGFzIHtuYW1lcz86IHN0cmluZ1tdfSkubmFtZXM7XG4gICAgZXhwZWN0KG5ldyBTZXQobmFtZXNBZnRlcikpLnRvRXF1YWwobmV3IFNldChbJzEnXSkpO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBjbGVhcnMgYW4gaW50ZXJ2YWwgZW5kIGZpZWxkIHRoYXQgaXMgbm8gbG9uZ2VyIGEgdGltZXN0YW1wJywgKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50cyA9IG1ha2VUYWJsZSgnZXZlbnRzJywge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICB7bmFtZTogJ2VuZCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J30sXG4gICAgICAgIHtuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsxXzcwMF8wMDBfMDAwLCAxXzcwMF8wODZfNDAwLCAxMF0sXG4gICAgICAgIFsxXzcwMF8wMDBfMDIwLCAxXzcwMF8xNzJfODAwLCAyMF1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoVGFibGVzKGV2ZW50cyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLmFkZENoYXJ0KHtcbiAgICAgICAgaWQ6ICdldmVudHMtY2hhcnQnLFxuICAgICAgICB0aXRsZTogJ0V2ZW50cycsXG4gICAgICAgIHR5cGU6ICdiYXJDaGFydCcsXG4gICAgICAgIGRhdGFJZDogJ2V2ZW50cycsXG4gICAgICAgIGFwcGx5RmlsdGVyczogdHJ1ZSxcbiAgICAgICAgZGlzcGxheToge30sXG4gICAgICAgIGNoYXJ0RGlzcGxheToge30sXG4gICAgICAgIHhBeGlzOiB7XG4gICAgICAgICAgZmllbGQ6IHtuYW1lOiAnZW5kJywgdHlwZTogJ3RpbWVzdGFtcCd9LFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uOiAndGltZUJpbicsXG4gICAgICAgICAgaW50ZXJ2YWw6ICdkYXknLFxuICAgICAgICAgIHRpdGxlOiAnZW5kJ1xuICAgICAgICB9LFxuICAgICAgICB5QXhpczoge2ZpZWxkOiB7bmFtZTogJ3ZhbHVlJywgdHlwZTogJ2ludGVnZXInfSwgYWdncmVnYXRpb246ICdzdW0nLCB0aXRsZTogJ3ZhbHVlJ31cbiAgICAgIH0pXG4gICAgKTtcbiAgICBzdGF0ZSA9IHdpdGhGaWx0ZXIoc3RhdGUsICdldmVudHMnLCAnc3RhcnQnKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyKDAsICdlbmROYW1lJywgJ2VuZCcsIDApKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyUGxvdCgwLCB7eUF4aXM6IHN0YXRlLmRhdGFzZXRzLmV2ZW50cy5maWVsZHNbMl19KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZW5kTmFtZSkudG9FcXVhbChbJ2VuZCddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS55QXhpcz8ubmFtZSkudG9CZSgndmFsdWUnKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2V2ZW50cycsICd2YWx1ZScsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnlBeGlzKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnBsb3RUeXBlLnR5cGUpLnRvQmUoJ2hpc3RvZ3JhbScpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmVuZE5hbWUpLnRvRXF1YWwoWydlbmQnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS55QXhpcykudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWVsZDoge25hbWU6ICd2YWx1ZScsIHR5cGU6ICdzdHJpbmcnfSxcbiAgICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJ1xuICAgIH0pO1xuICAgIGxldCB0aW1lRmlsdGVyID0gc3RhdGUuZmlsdGVyc1swXSBhcyBUaW1lUmFuZ2VGaWx0ZXI7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aW1lRmlsdGVyLnBsb3RUeXBlLmludGVydmFsO1xuICAgIGNvbnN0IGludGVydmFsQmlucyA9IHRpbWVGaWx0ZXIudGltZUJpbnM/LmV2ZW50cz8uW2ludGVydmFsXTtcbiAgICBleHBlY3QoaW50ZXJ2YWxCaW5zPy5yZWR1Y2UoKHN1bSwgYmluKSA9PiBzdW0gKyBiaW4uY291bnQsIDApKS50b0JlR3JlYXRlclRoYW4oMik7XG5cbiAgICBzdGF0ZSA9IGNoYW5nZVR5cGUoc3RhdGUsICdldmVudHMnLCAnZW5kJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgndGltZVJhbmdlJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZW5kTmFtZSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmVuZEZpZWxkSWR4KS50b0JlVW5kZWZpbmVkKCk7XG4gICAgdGltZUZpbHRlciA9IHN0YXRlLmZpbHRlcnNbMF0gYXMgVGltZVJhbmdlRmlsdGVyO1xuICAgIGNvbnN0IGJpbnMgPSB0aW1lRmlsdGVyLnRpbWVCaW5zPy5ldmVudHM/LltpbnRlcnZhbF07XG4gICAgZXhwZWN0KGJpbnM/LnJlZHVjZSgoc3VtLCBiaW4pID0+IHN1bSArIGJpbi5jb3VudCwgMCkpLnRvQmUoMik7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS54QXhpcykudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWVsZDoge25hbWU6ICdlbmQnLCB0eXBlOiAnc3RyaW5nJ30sXG4gICAgICBhZ2dyZWdhdGlvbjogJ3VuaXF1ZUJpbidcbiAgICB9KTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnhBeGlzPy5pbnRlcnZhbCkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICB0ZXN0KCdpbnZhbGlkIHR5cGUgY2hhbmdlIGlzIGF0b21pYyBhbmQgc2NoZWR1bGVzIGEgcHJlY2lzZSBlcnJvcicsICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHdpdGhDaXRpZXMoKTtcbiAgICBjb25zdCBuZXh0ID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2NpdGllcycsICdyZWdpb24nLCBBTExfRklFTERfVFlQRVMuaW50ZWdlcik7XG5cbiAgICBleHBlY3QobmV4dC5kYXRhc2V0cy5jaXRpZXMpLnRvQmUoc3RhdGUuZGF0YXNldHMuY2l0aWVzKTtcbiAgICBleHBlY3QobmV4dC5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gJ3JlZ2lvbicpPy50eXBlKS50b0JlKFxuICAgICAgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ1xuICAgICk7XG4gICAgZXhwZWN0KG5leHQuZGF0YXNldHMuY2l0aWVzLmRhdGFDb250YWluZXIucm93QXNBcnJheSgwKVsyXSkudG9CZSgnd2VzdCcpO1xuXG4gICAgY29uc3QgdGFza3MgPSBkcmFpblRhc2tzRm9yVGVzdGluZygpO1xuICAgIGV4cGVjdCh0YXNrcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHN1Y2NlZWRUYXNrSW5UZXN0KHRhc2tzWzBdLCB1bmRlZmluZWQpO1xuICAgIGV4cGVjdChub3RpZmljYXRpb24ucGF5bG9hZC5tZXNzYWdlKS50b0NvbnRhaW4oXG4gICAgICAnQ2Fubm90IGNoYW5nZSDigJxyZWdpb27igJ0gdG8gaW50ZWdlcjogcm93IDEgdmFsdWUg4oCcd2VzdOKAnSBpcyBub3QgYSBzYWZlIGludGVnZXInXG4gICAgKTtcbiAgICBleHBlY3Qobm90aWZpY2F0aW9uLnBheWxvYWQubWVzc2FnZSkudG9Db250YWluKCdObyB2YWx1ZXMgd2VyZSBjaGFuZ2VkLicpO1xuICB9KTtcblxuICB0ZXN0KCdsYXRlIGNvbHVtbiBzdGF0aXN0aWNzIGNhbm5vdCBvdmVyd3JpdGUgYSBjaGFuZ2VkIGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmxvYWRDb2x1bW5TdGF0cygnY2l0aWVzJywgJ3BvcCcpKTtcbiAgICBjb25zdCByZXF1ZXN0UmV2aXNpb24gPSBzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZGF0YVJldmlzaW9uO1xuICAgIGNvbnN0IFt0YXNrXSA9IGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gICAgY29uc3QgcmVzdWx0ID0ge3R5cGU6ICdudW1lcmljJywgbWVhbjogMjV9O1xuICAgIGNvbnN0IHN0YWxlU3VjY2VzcyA9IHN1Y2NlZWRUYXNrSW5UZXN0KHRhc2ssIHtcbiAgICAgIHJlc3VsdCxcbiAgICAgIGZpbHRlclByb3BzOiB7dHlwZTogRklMVEVSX1RZUEVTLnJhbmdlfVxuICAgIH0pO1xuICAgIGV4cGVjdChzdGFsZVN1Y2Nlc3MpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZmllbGRUeXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlclxuICAgIH0pO1xuXG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnY2l0aWVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZGF0YVJldmlzaW9uKS50b0JlKHJlcXVlc3RSZXZpc2lvbiArIDEpO1xuICAgIGNvbnN0IGNoYW5nZWRTdGF0ZSA9IHN0YXRlO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgc3RhbGVTdWNjZXNzKTtcblxuICAgIGV4cGVjdChzdGF0ZSkudG9CZShjaGFuZ2VkU3RhdGUpO1xuICAgIGNvbnN0IGNoYW5nZWRGaWVsZCA9IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSAncG9wJyk7XG4gICAgZXhwZWN0KGNoYW5nZWRGaWVsZCkudG9NYXRjaE9iamVjdCh7dHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30pO1xuICAgIGV4cGVjdChjaGFuZ2VkRmllbGQpLm5vdC50b0hhdmVQcm9wZXJ0eSgnaXNMb2FkaW5nU3RhdHMnKTtcbiAgICBleHBlY3QoXG4gICAgICBzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gJ3BvcCcpPy5maWx0ZXJQcm9wcz8uY29sdW1uU3RhdHNcbiAgICApLm5vdC50b0JlKHJlc3VsdCk7XG4gIH0pO1xuXG4gIHRlc3QuZWFjaChbJ3JlZnJlc2gnLCAnYXBwZW5kJ10pKCdwZW5kaW5nIHN0YXRpc3RpY3MgY29tcGxldGUgYWZ0ZXIgYSBub3JtYWwgJXMnLCB1cGRhdGUgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHdpdGhDaXRpZXMoKTtcbiAgICBjb25zdCB0eXBlcyA9IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLnR5cGUpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5sb2FkQ29sdW1uU3RhdHMoJ2NpdGllcycsICdwb3AnKSk7XG4gICAgY29uc3QgW3Rhc2tdID0gZHJhaW5UYXNrc0ZvclRlc3RpbmcoKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucGluVGFibGVDb2x1bW4oJ2NpdGllcycsICdyZWdpb24nKSk7XG4gICAgY29uc3Qgcm93ID0gWzQxLCAtNzUsICdub3J0aCcsIDUwXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICB1cGRhdGUgPT09ICdyZWZyZXNoJ1xuICAgICAgICA/IFZpc1N0YXRlQWN0aW9ucy5yZWZyZXNoRGF0YXNldFN1Y2Nlc3MoJ2NpdGllcycsIHtcbiAgICAgICAgICAgIG5vdE1vZGlmaWVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IHtmaWVsZHM6IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMsIHJvd3M6IFtyb3ddfVxuICAgICAgICAgIH0pXG4gICAgICAgIDogVmlzU3RhdGVBY3Rpb25zLmFkZFRvRGF0YXNldCgnY2l0aWVzJywgW3Jvd10pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHt0eXBlOiAnbnVtZXJpYycsIG1lYW46IDI1fTtcbiAgICBjb25zdCBzdWNjZXNzU3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgc3VjY2VlZFRhc2tJblRlc3QodGFzaywge3Jlc3VsdCwgZmlsdGVyUHJvcHM6IHt0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2V9fSlcbiAgICApO1xuICAgIGNvbnN0IGxvZ0Vycm9yID0gamVzdC5zcHlPbihjb25zb2xlLCAnZXJyb3InKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdW5kZWZpbmVkKTtcbiAgICBjb25zdCBlcnJvclN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIGVycm9yVGFza0luVGVzdCh0YXNrLCBuZXcgRXJyb3IoJ3N0YXRzIGZhaWxlZCcpKSk7XG4gICAgbG9nRXJyb3IubW9ja1Jlc3RvcmUoKTtcblxuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC50eXBlKSkudG9FcXVhbCh0eXBlcyk7XG4gICAgZXhwZWN0KHN1Y2Nlc3NTdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzWzNdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGlzTG9hZGluZ1N0YXRzOiBmYWxzZSxcbiAgICAgIGZpbHRlclByb3BzOiB7Y29sdW1uU3RhdHM6IHJlc3VsdH1cbiAgICB9KTtcbiAgICBleHBlY3QoZXJyb3JTdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzWzNdLmlzTG9hZGluZ1N0YXRzKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmRhdGFDb250YWluZXIucm93QXNBcnJheSh1cGRhdGUgPT09ICdyZWZyZXNoJyA/IDAgOiAyKSkudG9FcXVhbChcbiAgICAgIHJvd1xuICAgICk7XG4gIH0pO1xuXG4gIHRlc3QoJ2R1cGxpY2F0ZSByZW5hbWUgYW5kIG5vbi10YWJ1bGFyIGRhdGFzZXRzIGFyZSBpZ25vcmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gd2l0aENpdGllcygpO1xuICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMucmVuYW1lVGFibGVDb2x1bW4oJ2NpdGllcycsICdyZWdpb24nLCAncG9wJylcbiAgICApO1xuICAgIGV4cGVjdChkdXBsaWNhdGUpLnRvQmUoc3RhdGUpO1xuXG4gICAgY29uc3QgdGlsZXMgPSBuZXcgS2VwbGVyVGFibGUoe1xuICAgICAgaW5mbzoge2lkOiAndGlsZXMnLCBsYWJlbDogJ3RpbGVzJywgdHlwZTogJ3ZlY3Rvci10aWxlJ30sXG4gICAgICBjb2xvcjogWzAsIDAsIDBdXG4gICAgfSk7XG4gICAgdGlsZXMudXBkYXRlU2NoZW1hKHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9LFxuICAgICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIHJvd3M6IFtbJ3dlc3QnLCAxXV1cbiAgICB9KTtcbiAgICBjb25zdCB0aWxlZDogVmlzU3RhdGUgPSB7Li4uSU5JVElBTF9WSVNfU1RBVEUsIGRhdGFzZXRzOiB7dGlsZXN9fTtcbiAgICBjb25zdCB1bmNoYW5nZWQgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHRpbGVkLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnJlbmFtZVRhYmxlQ29sdW1uKCd0aWxlcycsICdyZWdpb24nLCAnYXJlYScpXG4gICAgKTtcbiAgICBleHBlY3QodW5jaGFuZ2VkKS50b0JlKHRpbGVkKTtcbiAgICBleHBlY3QocmVkdWNlVmlzU3RhdGUodGlsZWQsIFZpc1N0YXRlQWN0aW9ucy5kZWxldGVUYWJsZUNvbHVtbigndGlsZXMnLCAncG9wJykpKS50b0JlKHRpbGVkKTtcbiAgICBleHBlY3QoY2hhbmdlVHlwZSh0aWxlZCwgJ3RpbGVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpKS50b0JlKHRpbGVkKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXh0ZXJuYWxseSBob3N0ZWQgZGF0YXNldHMgaWdub3JlIHJlbmFtZSBhbmQgZGVsZXRlJywgKCkgPT4ge1xuICAgIGNvbnN0IHJlbW90ZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgICBpbmZvOiB7aWQ6ICdyZW1vdGUnLCBsYWJlbDogJ3JlbW90ZScsIHR5cGU6ICdleHRlcm5hbGx5LWhvc3RlZCd9LFxuICAgICAgY29sb3I6IFswLCAwLCAwXVxuICAgIH0pO1xuICAgIHJlbW90ZS51cGRhdGVTY2hlbWEoe1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZywgZGlzcGxheU5hbWU6ICdSZWdpb24nfSxcbiAgICAgICAge25hbWU6ICdwb3AnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbWyd3ZXN0JywgMV1dXG4gICAgfSk7XG4gICAgY29uc3Qgc3RhdGU6IFZpc1N0YXRlID0gey4uLklOSVRJQUxfVklTX1NUQVRFLCBkYXRhc2V0czoge3JlbW90ZX19O1xuXG4gICAgZXhwZWN0KFxuICAgICAgcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbigncmVtb3RlJywgJ3JlZ2lvbicsICdhcmVhJykpXG4gICAgKS50b0JlKHN0YXRlKTtcbiAgICBleHBlY3QocmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5kZWxldGVUYWJsZUNvbHVtbigncmVtb3RlJywgJ3BvcCcpKSkudG9CZShzdGF0ZSk7XG4gICAgZXhwZWN0KGNoYW5nZVR5cGUoc3RhdGUsICdyZW1vdGUnLCAncG9wJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZykpLnRvQmUoc3RhdGUpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5yZW1vdGUuZmllbGRzWzBdLmRpc3BsYXlOYW1lKS50b0JlKCdSZWdpb24nKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQ0VBLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxZQUFZLEVBQ1pDLFVBQVUsRUFDVkMsVUFBVSxRQUNMLHNCQUFzQjtBQUM3QixTQUFRQyxlQUFlLFFB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