{
  "version": 3,
  "sources": ["../../../../node_modules/d3-array/dist/d3-array.js", "../../../../node_modules/d3-time/dist/d3-time.js", "../../../../node_modules/d3-time-format/dist/d3-time-format.js", "../../../../node_modules/d3-format/dist/d3-format.js", "../../src/index.node.ts", "../../src/pem/trustwave.ts", "../../src/__package__.ts", "../../src/espConnection.ts", "../../src/connection.ts", "../../src/services/wsdl/FileSpray/v1.27/FileSpray.ts", "../../src/services/fileSpray.ts", "../../src/services/wsdl/ws_access/v1.17/ws_access.ts", "../../src/services/wsAccess.ts", "../../src/services/wsdl/ws_account/v1.07/ws_account.ts", "../../src/services/wsAccount.ts", "../../src/services/wsCloud.ts", "../../src/services/wsdl/WsCloud/v1.02/WsCloud.ts", "../../src/services/wsdl/ws_codesign/v1.1/ws_codesign.ts", "../../src/services/wsCodesign.ts", "../../src/services/wsdl/WsDali/v1.07/WsDali.ts", "../../src/services/wsDali.ts", "../../src/services/wsdl/WsDfu/v1.67/WsDfu.ts", "../../src/services/wsDFU.ts", "../../src/services/wsdl/WsDFUXRef/v1.04/WsDFUXRef.ts", "../../src/services/wsDFUXRef.ts", "../../src/services/wsEcl.ts", "../../src/services/wsdl/ws_elk/v1/ws_elk.ts", "../../src/services/wsElk.ts", "../../src/services/wsLogaccess.ts", "../../src/services/wsdl/ws_logaccess/v1.08/ws_logaccess.ts", "../../src/services/wsMachine.ts", "../../src/services/wsdl/ws_machine/v1.19/ws_machine.ts", "../../src/services/wsdl/WsPackageProcess/v1.07/WsPackageProcess.ts", "../../src/services/wsPackageProcess.ts", "../../src/services/wsdl/WsResources/v1.01/WsResources.ts", "../../src/services/wsResources.ts", "../../src/services/wsdl/WsSasha/v1.01/WsSasha.ts", "../../src/services/wsSasha.ts", "../../src/services/wsSMC.ts", "../../src/services/wsdl/WsSMC/v1.29/WsSMC.ts", "../../src/services/wsdl/wsstore/v1.02/wsstore.ts", "../../src/services/wsStore.ts", "../../src/services/wsdl/WsTopology/v1.33/WsTopology.ts", "../../src/services/wsTopology.ts", "../../src/services/wsWorkunits.ts", "../../src/services/wsdl/WsWorkunits/v2.04/WsWorkunits.ts", "../../src/ecl/activity.ts", "../../src/ecl/workunit.ts", "../../src/ecl/graph.ts", "../../src/ecl/resource.ts", "../../src/ecl/result.ts", "../../src/ecl/xsdParser.ts", "../../src/ecl/scope.ts", "../../src/ecl/sourceFile.ts", "../../src/ecl/timer.ts", "../../src/ecl/logicalFile.ts", "../../src/ecl/machine.ts", "../../src/ecl/query.ts", "../../src/ecl/topology.ts", "../../src/ecl/targetCluster.ts", "../../src/ecl/queryGraph.ts", "../../src/ecl/store.ts", "../../src/ecl/dfuWorkunit.ts", "../../src/clienttools/eclcc.ts", "../../src/clienttools/eclMeta.ts"],
  "sourcesContent": ["// https://d3js.org/d3-array/ v1.2.4 Copyright 2018 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\ntypeof define === 'function' && define.amd ? define(['exports'], factory) :\n(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\nfunction bisector(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n\nvar ascendingBisect = bisector(ascending);\nvar bisectRight = ascendingBisect.right;\nvar bisectLeft = ascendingBisect.left;\n\nfunction pairs(array, f) {\n  if (f == null) f = pair;\n  var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n  while (i < n) pairs[i] = f(p, p = array[++i]);\n  return pairs;\n}\n\nfunction pair(a, b) {\n  return [a, b];\n}\n\nfunction cross(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n\nfunction descending(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n\nfunction number(x) {\n  return x === null ? NaN : +x;\n}\n\nfunction variance(values, valueof) {\n  var n = values.length,\n      m = 0,\n      i = -1,\n      mean = 0,\n      value,\n      delta,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  if (m > 1) return sum / (m - 1);\n}\n\nfunction deviation(array, f) {\n  var v = variance(array, f);\n  return v ? Math.sqrt(v) : v;\n}\n\nfunction extent(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\nvar array = Array.prototype;\n\nvar slice = array.slice;\nvar map = array.map;\n\nfunction constant(x) {\n  return function() {\n    return x;\n  };\n}\n\nfunction identity(x) {\n  return x;\n}\n\nfunction range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n\nvar e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction ticks(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nfunction tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nfunction tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n\nfunction sturges(values) {\n  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n\nfunction histogram() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    var i,\n        n = data.length,\n        x,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = tickStep(x0, x1, tz);\n      tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n    }\n\n    // Remove any thresholds outside the domain.\n    var m = tz.length;\n    while (tz[0] <= x0) tz.shift(), --m;\n    while (tz[m - 1] > x1) tz.pop(), --m;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    for (i = 0; i < n; ++i) {\n      x = values[i];\n      if (x0 <= x && x <= x1) {\n        bins[bisectRight(tz, x, 0, m)].push(data[i]);\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n  };\n\n  return histogram;\n}\n\nfunction quantile(values, p, valueof) {\n  if (valueof == null) valueof = number;\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nfunction freedmanDiaconis(values, min, max) {\n  values = map.call(values, number).sort(ascending);\n  return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n\nfunction scott(values, min, max) {\n  return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n\nfunction max(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return max;\n}\n\nfunction mean(values, valueof) {\n  var n = values.length,\n      m = n,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) sum += value;\n      else --m;\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n      else --m;\n    }\n  }\n\n  if (m) return sum / m;\n}\n\nfunction median(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      numbers = [];\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  return quantile(numbers.sort(ascending), 0.5);\n}\n\nfunction merge(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n\nfunction min(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  return min;\n}\n\nfunction permute(array, indexes) {\n  var i = indexes.length, permutes = new Array(i);\n  while (i--) permutes[i] = array[indexes[i]];\n  return permutes;\n}\n\nfunction scan(values, compare) {\n  if (!(n = values.length)) return;\n  var n,\n      i = 0,\n      j = 0,\n      xi,\n      xj = values[j];\n\n  if (compare == null) compare = ascending;\n\n  while (++i < n) {\n    if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n      xj = xi, j = i;\n    }\n  }\n\n  if (compare(xj, xj) === 0) return j;\n}\n\nfunction shuffle(array, i0, i1) {\n  var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m + i0];\n    array[m + i0] = array[i + i0];\n    array[i + i0] = t;\n  }\n\n  return array;\n}\n\nfunction sum(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (value = +valueof(values[i], i, values)) sum += value;\n    }\n  }\n\n  return sum;\n}\n\nfunction transpose(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n\nfunction zip() {\n  return transpose(arguments);\n}\n\nexports.bisect = bisectRight;\nexports.bisectRight = bisectRight;\nexports.bisectLeft = bisectLeft;\nexports.ascending = ascending;\nexports.bisector = bisector;\nexports.cross = cross;\nexports.descending = descending;\nexports.deviation = deviation;\nexports.extent = extent;\nexports.histogram = histogram;\nexports.thresholdFreedmanDiaconis = freedmanDiaconis;\nexports.thresholdScott = scott;\nexports.thresholdSturges = sturges;\nexports.max = max;\nexports.mean = mean;\nexports.median = median;\nexports.merge = merge;\nexports.min = min;\nexports.pairs = pairs;\nexports.permute = permute;\nexports.quantile = quantile;\nexports.range = range;\nexports.scan = scan;\nexports.shuffle = shuffle;\nexports.sum = sum;\nexports.ticks = ticks;\nexports.tickIncrement = tickIncrement;\nexports.tickStep = tickStep;\nexports.transpose = transpose;\nexports.variance = variance;\nexports.zip = zip;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "// https://d3js.org/d3-time/ v1.1.0 Copyright 2019 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\ntypeof define === 'function' && define.amd ? define(['exports'], factory) :\n(global = global || self, factory(global.d3 = global.d3 || {}));\n}(this, function (exports) { 'use strict';\n\nvar t0 = new Date,\n    t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n\nvar millisecond = newInterval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return newInterval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\nvar milliseconds = millisecond.range;\n\nvar durationSecond = 1e3;\nvar durationMinute = 6e4;\nvar durationHour = 36e5;\nvar durationDay = 864e5;\nvar durationWeek = 6048e5;\n\nvar second = newInterval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\nvar seconds = second.range;\n\nvar minute = newInterval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getMinutes();\n});\nvar minutes = minute.range;\n\nvar hour = newInterval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getHours();\n});\nvar hours = hour.range;\n\nvar day = newInterval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n  return date.getDate() - 1;\n});\nvar days = day.range;\n\nfunction weekday(i) {\n  return newInterval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n\nvar month = newInterval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\nvar months = month.range;\n\nvar year = newInterval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\nvar years = year.range;\n\nvar utcMinute = newInterval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getUTCMinutes();\n});\nvar utcMinutes = utcMinute.range;\n\nvar utcHour = newInterval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getUTCHours();\n});\nvar utcHours = utcHour.range;\n\nvar utcDay = newInterval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\nvar utcDays = utcDay.range;\n\nfunction utcWeekday(i) {\n  return newInterval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n\nvar utcMonth = newInterval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\nvar utcMonths = utcMonth.range;\n\nvar utcYear = newInterval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\nvar utcYears = utcYear.range;\n\nexports.timeDay = day;\nexports.timeDays = days;\nexports.timeFriday = friday;\nexports.timeFridays = fridays;\nexports.timeHour = hour;\nexports.timeHours = hours;\nexports.timeInterval = newInterval;\nexports.timeMillisecond = millisecond;\nexports.timeMilliseconds = milliseconds;\nexports.timeMinute = minute;\nexports.timeMinutes = minutes;\nexports.timeMonday = monday;\nexports.timeMondays = mondays;\nexports.timeMonth = month;\nexports.timeMonths = months;\nexports.timeSaturday = saturday;\nexports.timeSaturdays = saturdays;\nexports.timeSecond = second;\nexports.timeSeconds = seconds;\nexports.timeSunday = sunday;\nexports.timeSundays = sundays;\nexports.timeThursday = thursday;\nexports.timeThursdays = thursdays;\nexports.timeTuesday = tuesday;\nexports.timeTuesdays = tuesdays;\nexports.timeWednesday = wednesday;\nexports.timeWednesdays = wednesdays;\nexports.timeWeek = sunday;\nexports.timeWeeks = sundays;\nexports.timeYear = year;\nexports.timeYears = years;\nexports.utcDay = utcDay;\nexports.utcDays = utcDays;\nexports.utcFriday = utcFriday;\nexports.utcFridays = utcFridays;\nexports.utcHour = utcHour;\nexports.utcHours = utcHours;\nexports.utcMillisecond = millisecond;\nexports.utcMilliseconds = milliseconds;\nexports.utcMinute = utcMinute;\nexports.utcMinutes = utcMinutes;\nexports.utcMonday = utcMonday;\nexports.utcMondays = utcMondays;\nexports.utcMonth = utcMonth;\nexports.utcMonths = utcMonths;\nexports.utcSaturday = utcSaturday;\nexports.utcSaturdays = utcSaturdays;\nexports.utcSecond = second;\nexports.utcSeconds = seconds;\nexports.utcSunday = utcSunday;\nexports.utcSundays = utcSundays;\nexports.utcThursday = utcThursday;\nexports.utcThursdays = utcThursdays;\nexports.utcTuesday = utcTuesday;\nexports.utcTuesdays = utcTuesdays;\nexports.utcWednesday = utcWednesday;\nexports.utcWednesdays = utcWednesdays;\nexports.utcWeek = utcSunday;\nexports.utcWeeks = utcSundays;\nexports.utcYear = utcYear;\nexports.utcYears = utcYears;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n}));\n", "// https://d3js.org/d3-time-format/ v2.3.0 Copyright 2020 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :\ntypeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :\n(global = global || self, factory(global.d3 = global.d3 || {}, global.d3));\n}(this, function (exports, d3Time) { 'use strict';\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week);\n          week = d3Time.utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week);\n          week = d3Time.timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(d3Time.timeSunday.count(d3Time.timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(d3Time.timeMonday.count(d3Time.timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(d3Time.utcSunday.count(d3Time.utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(d3Time.utcMonday.count(d3Time.utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n\nvar locale;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n  locale = formatLocale(definition);\n  exports.timeFormat = locale.format;\n  exports.timeParse = locale.parse;\n  exports.utcFormat = locale.utcFormat;\n  exports.utcParse = locale.utcParse;\n  return locale;\n}\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : exports.utcFormat(isoSpecifier);\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : exports.utcParse(isoSpecifier);\n\nexports.isoFormat = formatIso;\nexports.isoParse = parseIso;\nexports.timeFormatDefaultLocale = defaultLocale;\nexports.timeFormatLocale = formatLocale;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n}));\n", "// https://d3js.org/d3-format/ v1.4.5 Copyright 2020 Mike Bostock\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\ntypeof define === 'function' && define.amd ? define(['exports'], factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.d3 = global.d3 || {}));\n}(this, (function (exports) { 'use strict';\n\nfunction formatDecimal(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n\nfunction exponent(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n\nfunction formatGroup(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n\nfunction formatNumerals(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nfunction formatTrim(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n\nvar prefixExponent;\n\nfunction formatPrefixAuto(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n\nfunction formatRounded(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n\nvar formatTypes = {\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": formatDecimal,\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n\nfunction identity(x) {\n  return x;\n}\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nfunction formatLocale(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n        // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n\nvar locale;\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"],\n  minus: \"-\"\n});\n\nfunction defaultLocale(definition) {\n  locale = formatLocale(definition);\n  exports.format = locale.format;\n  exports.formatPrefix = locale.formatPrefix;\n  return locale;\n}\n\nfunction precisionFixed(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n\nfunction precisionPrefix(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n\nfunction precisionRound(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n\nexports.FormatSpecifier = FormatSpecifier;\nexports.formatDefaultLocale = defaultLocale;\nexports.formatLocale = formatLocale;\nexports.formatSpecifier = formatSpecifier;\nexports.precisionFixed = precisionFixed;\nexports.precisionPrefix = precisionPrefix;\nexports.precisionRound = precisionRound;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "// DOM Parser polyfill  ---\r\nimport { root } from \"@hpcc-js/util\";\r\nimport { DOMParser } from \"@xmldom/xmldom\";\r\nroot.DOMParser = DOMParser;\r\n\r\n//  fetch setup for Node.js ---\r\nimport * as https from \"node:https\";\r\nimport { Buffer } from \"node:buffer\";\r\nimport { fetch, Agent } from \"undici\";\r\n\r\n//  NodeJS >= v18 has native fetch  ---\r\nif (root.fetch === undefined) {\r\n    throw new Error(\"@hpcc-js/comms requires Node.js >= 18.0.0 for native fetch support\");\r\n}\r\nroot.__hpcc_undiciFetch = fetch;\r\nroot.__hpcc_rejectUnauthorizedAgent = new Agent({\r\n    connect: {\r\n        rejectUnauthorized: false\r\n    }\r\n});\r\n\r\nimport { trustwave } from \"./pem/trustwave.ts\";\r\n\r\nlet globalCA = \"\";\r\nif (https.globalAgent.options.ca !== undefined) {\r\n    if (Array.isArray(https.globalAgent.options.ca) && https.globalAgent.options.ca.length) {\r\n        if (typeof https.globalAgent.options.ca[0] === \"string\") {\r\n            globalCA = https.globalAgent.options.ca.join(\"\\n\");\r\n        } else if (https.globalAgent.options.ca[0] instanceof Buffer) {\r\n            globalCA = https.globalAgent.options.ca.map(row => row.toString()).join(\"\\n\");\r\n        }\r\n    } else if (typeof https.globalAgent.options.ca === \"string\") {\r\n        globalCA = https.globalAgent.options.ca;\r\n    } else if (https.globalAgent.options.ca instanceof Buffer) {\r\n        globalCA = https.globalAgent.options.ca.toString();\r\n    }\r\n    globalCA += \"\\n\";\r\n}\r\n\r\nroot.__hpcc_trustwaveAgent = new https.Agent({\r\n    ca: globalCA + trustwave\r\n});\r\n\r\nexport * from \"./index.common.ts\";\r\n\r\n//  Client Tools  ---\r\nexport * from \"./clienttools/eclcc.ts\";\r\nexport * from \"./clienttools/eclMeta.ts\";\r\n", "export const trustwave = `\r\nTrustwave Secure Global Extended Validation CA, Level 1\r\nSecureTrust Corporation\r\n00F6F61CE4A3635BB0CA8AACEEFCB2D0F0\r\n-----BEGIN CERTIFICATE-----\r\nMIIE+DCCA+CgAwIBAgIRAPb2HOSjY1uwyoqs7vyy0PAwDQYJKoZIhvcNAQELBQAw\r\nSjELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\r\nMRkwFwYDVQQDExBTZWN1cmUgR2xvYmFsIENBMB4XDTE1MDgxMjIwMTcyOVoXDTI1\r\nMDgwOTIwMTcyOVowgbgxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQ\r\nMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\r\nbmMuMUAwPgYDVQQDEzdUcnVzdHdhdmUgU2VjdXJlIEdsb2JhbCBFeHRlbmRlZCBW\r\nYWxpZGF0aW9uIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdh\r\ndmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6D45slgLGq8\r\n2G/NPFnuFscv7UM1eRoQyx3h0DdSTfoRvHkkNv4Gf6OudZDOXqwV86v/SjcNEP87\r\nnjMOEqQ7dKQPtiYzEkK0MOrjbRySFC5dvCTI9T8tnBgFpYA9YXwbpUqXxEi0Ayoq\r\nhA7UQhS7Q+YGrVwZaJ6LiWrQw+x8ACPLqEvPmMZhrxagKwrsKbylMsAQ1ljk8X74\r\nJ76TSxi/AZpxos7tHD0XbO8elXFZexfsgPLDRpMs6jREVeQj1jVCWLtg9twiXzcI\r\naUCchBsTSc92WGkKwBnH70dlL2N8kT/BNe3tAsXuBpZRILANY59jLrLnHEJNfado\r\nt6ZpougolQIDAQABo4IBaDCCAWQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E\r\nFgQUx33qXRmrVNT6P+ZKc956sjwdbC4wDgYDVR0PAQH/BAQDAgGGMD0GA1UdIAQ2\r\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\r\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\r\nbS9TR0NBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\r\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\r\nYXZlLmNvbS9pc3N1ZXJzL1NHQ0EuY3J0MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr\r\nBgEFBQcDATAfBgNVHSMEGDAWgBSvRATCQX5Ig9tOOQLs7IR65s7JpDANBgkqhkiG\r\n9w0BAQsFAAOCAQEAkn/4wKQRLo41fDRkZtfF+3o8JtUmfQXf2zoo9Ll29hhCiz8k\r\nBOpIek9MrFd/cdNgUw1nckIi+J3udyFrbO5p64JBvtc0K4kAOPFSKpHssFcnRLPx\r\nFXgGxXq6ohD4Py+xaEApslYFfMy89N6DKs/v/10/+/xD831RFEUMUoQxBimsmmNf\r\n+cLoMwF5bpoSz9JcWqCmSlK0Nla1dPphaoA/MObLN2iQPpeM3yF5dTUm1tPxe39W\r\nOlr6nLU1xO+yRDrlGLXrVDP1l1/qGVuwi+xufIAcdFycLLBjSSNX7LOIK3tbva7A\r\nWctLUs+qhIlUrbPyFERm7YOY4SttWdozeYFNfg==\r\n-----END CERTIFICATE-----\r\n\r\nSecureTrust Domain Validation CA, Level 1\r\nSecureTrust Corporation\r\n06F1EC00E80B1BAF9870A7C4B6CBE401A32D68\r\n-----BEGIN CERTIFICATE-----\r\nMIIEfzCCA2egAwIBAgITBvHsAOgLG6+YcKfEtsvkAaMtaDANBgkqhkiG9w0BAQsF\r\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\r\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\r\nMDEyOTEyNTk1OVowfDEyMDAGA1UEAxMpU2VjdXJlVHJ1c3QgRG9tYWluIFZhbGlk\r\nYXRpb24gQ0EsIExldmVsIDExFDASBgNVBAoTC1NlY3VyZVRydXN0MRAwDgYDVQQH\r\nEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggEiMA0G\r\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjRHBw8iIivBBrfE6HqexQK0oMt2Y/\r\nx8jO3fN96KEazZwEoGidwloRBk2Q7VfVvZ0ZDk+qwJZGLZJLS1ntGaZLH4/Iel+r\r\nPnp36IVF7J5MNDB+K81a/y9svEMfDu0p3FdlBUyhHvizZ/zFNP3tolmQfZ7T0mGL\r\n7lutlNAzFYoVTUlVeF5cSC8Yca906TEKyizYXuXcY8Diee+t+fQRHmSI5Hk5kyXD\r\nYFWcf2tXEfdkuFlDjJ7HPdFyfJzrNjD+cbqt8R5rZKnK1GNVP1dXm0cIYS+BMlMa\r\nCC1yF18oygbnOZLw5fDv9bxs4MOgF8E/Iypw0hLQHVkuD8wAvxVgPsqvAgMBAAGj\r\nggEsMIIBKDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNV\r\nHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUYt6tehfefLfDfCMXo7Em5UbXOvQw\r\nHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYDVR0gBDowODA2BgRV\r\nHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2VjdXJldHJ1c3QuY29t\r\nL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9T\r\nVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGGGmh0dHA6Ly9vY3Nw\r\nLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQAHXPYhl+++o//di2Qm\r\naWGmC1ijxbGbKA4jOSDRvQfxlWOVkqPF11Dpxz+V8Rxw7QFFVoJ5mHpfoXtQOijV\r\ntsCFknxTKgzQeArNkZrkXBNpYOJAcuc5v0eX0OllBWgVdIvZRl2TM5L/u1WFrlPr\r\nqwWdEYTkinQwgAHXVV/7WZi6c4StcqNnlw93mlvN6Vspzaf/mWtcYp+aqT9vrqHt\r\nyNR1k8Ri5eIRPIU0B8woiXTj3bifLg6/O217SY5cWwQKCMFsa6nGWoRVCJ0JJXa0\r\nZ+m3mPQD2OcW5YMrynhL2VWohyfZAjB8l/NZaeRT7M+vki56fxbx3Bk2lqy8Z1Zz\r\nWd5m\r\n-----END CERTIFICATE-----\r\n\r\nSecureTrust Extended Validation CA, Level 1\r\nSecureTrust Corporation\r\n06F1EC00E31E46D341B2B2633CE480D915F81D\r\n-----BEGIN CERTIFICATE-----\r\nMIIEizCCA3OgAwIBAgITBvHsAOMeRtNBsrJjPOSA2RX4HTANBgkqhkiG9w0BAQsF\r\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\r\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\r\nMDEyOTEyNTk1OVowfjE0MDIGA1UEAxMrU2VjdXJlVHJ1c3QgRXh0ZW5kZWQgVmFs\r\naWRhdGlvbiBDQSwgTGV2ZWwgMTEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxEDAOBgNV\r\nBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCASIw\r\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS6vRtFpCJBJ7zJODH07Y3k54Qn\r\nVIBhnQmmWoqFqzCVMX97GAyAfzjcQrhl/TNiJiRCrVQWPI4n0R8eUd91Ab1Qzfsr\r\nnp+0NRbagVDa6+nF0KcNxbSZ6/iZQ7Ac3HyhCvJS2rH2CVYlzqdsrxDXcZk69jOO\r\ndPV8+w+7eNIn34BKpB/ZF7iXApDoAKG81kg1VtpGOxJhxTsKLuJmURT4pQjtZqF+\r\nF6rN64j5T2DOK0gOA4G7BLoTdOQuXkPS38LXKgZ43lKqEenjmiOaMF/XuLYzaHrW\r\nGYgCM2wJsykgdB9hCsTTEwsHRZzt2q9mLBDvYYWVhql1/kR4K/RN4JdESEECAwEA\r\nAaOCATYwggEyMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0G\r\nA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAdBgNVHQ4EFgQUA6uAxlUKKpWh\r\n4Nf+GubAynjMsJYwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYD\r\nVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2Vj\r\ndXJldHJ1c3QuY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1\r\nc3R3YXZlLmNvbS9TVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGG\r\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQB1\r\nfzAmGGmtbJyIvOfjq2McCpUoYkXAq6JTN51+nb9NDAihhDoTKMde+801bC1/l54h\r\nxPPm4HImM6GK6LFckDew/FGwbdRbEznUOJ7uVL5ploNBIjte23kTBUZa9fx3+aXK\r\nhUTAipSyPtNjnOwVVBVXzrMynfMhdsyRRe7gLXNFYCXIxtks3IkIpuYnc86NAuV9\r\nnBLFlZzgmbAsW+tMc5QsNvQJ9pQ539K8cqZaM+HFCScreDERxmNtHHbMw+hCa2yL\r\nOj4ntekgWLO8KQbE0lPUNLIM17QK8aktJavj+GezBztKMmJJwhVYQy9nxS388ApX\r\nxcZsEgIzOCeH0SOWg4FA\r\n-----END CERTIFICATE-----\r\n\r\nSecureTrust Organization Validation CA, Level 1\r\nSecureTrust Corporation\r\n06F1EC00E58E9ADD372C871D25843FDAB852D9\r\n-----BEGIN CERTIFICATE-----\r\nMIIEkDCCA3igAwIBAgITBvHsAOWOmt03LIcdJYQ/2rhS2TANBgkqhkiG9w0BAQsF\r\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\r\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\r\nMDEyOTEyNTk1OVowgYIxODA2BgNVBAMTL1NlY3VyZVRydXN0IE9yZ2FuaXphdGlv\r\nbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMRQwEgYDVQQKEwtTZWN1cmVUcnVzdDEQ\r\nMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4QVBCdYToXFIfzd1SQfi\r\nTEgg1bwHXM2cE2VsyxwWK8NEFH8zMYdKy2hYOAjbfpm0xE6q4TQzS8KL2vAtCNyY\r\nVrwX7d3IvKR25H5s1LUDeQXSl1JBBZCtgJf2caJcwaYa6n2pZ0EKt3wBB+QteSFn\r\n57ENB37T13y7Nn8gCt9ZZaPYqRWxHcPaIWO3CVzQZ3tXjCLqzJMCV2KqhK85DZk3\r\nwo33Zb6cyYDkerDbWyric+10dJ/wdgE49dkfyZxVxEGpHg1SCSJdHjGb4z85Zx/u\r\neBpxBS6g3dfrkDjjT3MUxyNS4EaRTZp7o/2EqVCYDWJDM1HcOZL64kyWyi0d9jqA\r\n7wIDAQABo4IBNjCCATIwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC\r\nAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBR/QuNI\r\nbljpLrlhyGp3tPcDuM1qWjAfBgNVHSMEGDAWgBRCMrYW+gT9/l1LesP990xAHVpD\r\nrzBBBgNVHSAEOjA4MDYGBFUdIAAwLjAsBggrBgEFBQcCARYgaHR0cHM6Ly9jZXJ0\r\ncy5zZWN1cmV0cnVzdC5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2Ny\r\nbC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMDYGCCsGAQUFBwEBBCowKDAmBggrBgEF\r\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wDQYJKoZIhvcNAQELBQAD\r\nggEBAIwGM/ejz4Hbjf7Vc11gS8jzf+BwtZq9N4t1Nibj4rIDsW2G2jDE0S7fCN2m\r\nMhq76xkfnwfXhBbXDEKz6rj/M0G2u1kHw4Y8ZtKSzYEyRtgpeBFm4qU6voCSREpD\r\nFJXsL+Go2/YLRSE6xkWVSocklxppx4hi5o/RVdMMQept6ooOSFzBpH5XZYUoblKi\r\n99Yj0FUe8egIa9qSts42TObTpH1YVRMDnH3k2MNX3rcgPf9v/QO9Cf8W6RQ2+X3R\r\nCaYMPdL5OIKh4RGYjxXe3LpgiTKBWik/ZWTFL5sZSjetrJFl50NONzTc8E+BJtrx\r\nVCHAI2OcWyloxrYd4zMipw0YjDw=\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Domain Validation SHA256 CA, Level 1\r\nSecureTrust Corporation\r\n00DDEDF6F64298490E694C36EFA422C88F\r\n-----BEGIN CERTIFICATE-----\r\nMIIE7jCCA9agAwIBAgIRAN3t9vZCmEkOaUw276QiyI8wDQYJKoZIhvcNAQELBQAw\r\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\r\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMDExOTIyMzJaFw0yNDA5\r\nMjgxOTIyMzJaMIGvMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\r\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\r\nLjE3MDUGA1UEAxMuVHJ1c3R3YXZlIERvbWFpbiBWYWxpZGF0aW9uIFNIQTI1NiBD\r\nQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNvbTCCASIw\r\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNr4Z91k7AKM+Pz5XXWTIuVeMts\r\nPU2W/pI4WdEHG9Zab1EOWPLbthB6fzUJLLLBBk1wy2OM9yG1HywB/CwfGHcoKS8Z\r\n/efGV+ZKTzEpIestriUWx7wUnzxKzGML48Xv7sNuY1Crru5Hgce1Ax5uOfP7OB6t\r\norbMunvKQC10WcSrqFg6LapZ0UhgGmQzdjYguOBF6WZJR3QLghQaNrSUZuA6neXR\r\ncUsBgmzrxiEVHyzt+lmnYFMFvKVwGOyIZ2RU2LAFthS6UDDrSLGsJysxc1MK1Sti\r\n/VP8e8wj9rJdmiWNfA+lz6hDAPzRbv+WVJNoHEGbIx8rai+rVMiLy2HIbPsCAwEA\r\nAaOCAWkwggFlMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPQc4jqvtqTk\r\n2emd/u8cd6VjPe+IMA4GA1UdDwEB/wQEAwIBhjBIBgNVHSAEQTA/MD0GDysGAQQB\r\nge0YAwMDAwQFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\r\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\r\nbS9TVENBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\r\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\r\nYXZlLmNvbS9pc3N1ZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8G\r\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IB\r\nAQAjoDrTysopn7t+onDZ6rZSQW8rYlWZQpSiNHrq9xAAcMExrhcN0bQC9OQ+VRci\r\noMDascvwum7hVkyh2w2Ad7lC3Ir9gIuA8HycjqQJ4t1eSF3geYyf8lp259ztZ/TO\r\nxSAwJ9W0Szc8fslOA0SWlyA3lnRVcYVu54Idc1dPXXBxwlQ1NUCYgcsXZs+6QjLL\r\nYhYL85DhuitQSddoYemGpfVJnaYH9tBiWmwtzwc4qsVqTsKEJ/1zYAy2GrEAv8sB\r\nFKSfMNMopBmmDA8/aCIW/tH6KTD2DC15QQwL6yAUbSa5mhzFSA9O8zmF881YwBVG\r\nn+z3isMPClgpNw/eWSbaSLZ+\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Domain Validation SHA256 CA, Level 1\r\nSecureTrust Corporation\r\n390A3F7EECA8FB4347DCAF701861662B\r\n-----BEGIN CERTIFICATE-----\r\nMIIE/zCCA+egAwIBAgIQOQo/fuyo+0NH3K9wGGFmKzANBgkqhkiG9w0BAQsFADBI\r\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\r\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzMloXDTI0MDky\r\nOTE0MzUzMlowga8xCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\r\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\r\nMTcwNQYDVQQDEy5UcnVzdHdhdmUgRG9tYWluIFZhbGlkYXRpb24gU0hBMjU2IENB\r\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\r\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs2vhn3WTsAoz4/PlddZMi5V4y2w9\r\nTZb+kjhZ0Qcb1lpvUQ5Y8tu2EHp/NQksssEGTXDLY4z3IbUfLAH8LB8YdygpLxn9\r\n58ZX5kpPMSkh6y2uJRbHvBSfPErMYwvjxe/uw25jUKuu7keBx7UDHm458/s4Hq2i\r\ntsy6e8pALXRZxKuoWDotqlnRSGAaZDN2NiC44EXpZklHdAuCFBo2tJRm4Dqd5dFx\r\nSwGCbOvGIRUfLO36WadgUwW8pXAY7IhnZFTYsAW2FLpQMOtIsawnKzFzUwrVK2L9\r\nU/x7zCP2sl2aJY18D6XPqEMA/NFu/5ZUk2gcQZsjHytqL6tUyIvLYchs+wIDAQAB\r\no4IBezCCAXcwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU9BziOq+2pOTZ\r\n6Z3+7xx3pWM974gwDgYDVR0PAQH/BAQDAgGGMDIGA1UdHwQrMCkwJ6AloCOGIWh0\r\ndHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9TVENBLmNybDA9BgNVHSAENjA0MDIGBFUd\r\nIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3YXZlLmNvbS9DQTBs\r\nBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnRydXN0d2F2\r\nZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1\r\nZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIy\r\nthb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRydXN0d2F2ZS5jb20w\r\nDQYJKoZIhvcNAQELBQADggEBAFcdG0/3P/CkeGb76tz/mn1viDZiftD05i9Jw70k\r\nH9ulRwdCHgzhSZVN5zHvG919oHA9WHbxH04J+iAnVl1+FjoDNN+A+2icy2WXqH9w\r\ngaNUGyUwLdo0JCfgUeGbrCF6WUYCj47pS7zAY02CdGlstZZsqouXK3RnOMKOD3Dq\r\nf5kiSh56KvhW/F0OZY7PAbdV79LVAiSTiAFdoe/jMjmj8fqXOiCIjllqH/O9/DAm\r\nRwQStFpauwR+nBbFhq4sYwlZQvJ0NvIxN5JOTECTkMM+X21kf8mrwRdxBfw0YEPa\r\nUTeZhFr48Fwvnt4jpo7gqpJzt7jjsbWPd1FHtey2Q8zmSHY=\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Extended Validation SHA256 CA, Level 1\r\nSecureTrust Corporation\r\n00C1BD27B383958D0D8BCA5E4F08D009D9\r\n-----BEGIN CERTIFICATE-----\r\nMIIFGDCCBACgAwIBAgIRAMG9J7ODlY0Ni8peTwjQCdkwDQYJKoZIhvcNAQELBQAw\r\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\r\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMTMxODE3MzlaFw0yNDEw\r\nMTAxODE3MzlaMIGxMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\r\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\r\nLjE5MDcGA1UEAxMwVHJ1c3R3YXZlIEV4dGVuZGVkIFZhbGlkYXRpb24gU0hBMjU2\r\nIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIB\r\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAre9mHLqiv689FWIk7PaeQLuW\r\nos8ldRX4rNLHeD7/X7JrTfaXuIQaLfrUODtyRaZs0LtJsEHgpr7dUonDIH69PjBP\r\nrHg+hBLu7ob4udEx3J03NQSdnR/fqPY0ZMH2NP7e9TFSKKctZ/SmzA8jGclVmdiT\r\nGg1bTx6xgWuPWq9OprIQSgkP5NRe1GeTQ7U/E1zxLqaw6PeQWjESHPGeilyw0jr6\r\nqVyHM5ack9ps60sN3CKNGushyaQe3w2bYxRJ9RRH/sILCAmmTbjc/cXrGQMGdaYt\r\naiGnXbc45r39cqfbynZ71hPPNEtFbOdqk3C7I8vrhIHiKaAtFkTMRSWmHHk4HwID\r\nAQABo4IBkTCCAY0wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU5eQkWRUy\r\nJ8kgs0ICbLDvMt6bIFowDgYDVR0PAQH/BAQDAgGGMGYGA1UdIARfMF0wDAYKKwYB\r\nBAGB7RgDADAOBgxghkgBhv1kAQECBAEwPQYPKwYBBAGB7RgDAwMDBAMDMCowKAYI\r\nKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCsw\r\nKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMGwGCCsG\r\nAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3YXZlLmNv\r\nbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMv\r\nU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQY\r\nMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IBAQCly1p1\r\nrvcOlRS+ODBLb2kYHd4q+cXDl65X+IQ7hOlXg9dpa7CzSAGNNpzhyYMbE48mB/RE\r\nBXxbZkMzEhWPFj+4jdGNsmX0zjEWatJWsnNVxpA7hDR0iZssezu86oDQ/sbVoaXj\r\n0a5jB2cZsnMS5287CNDk5i+ImruhbMAYV9sadliXoDy3y01Sv+FLMx39C5UhYhWU\r\ngvoT9igbSCoc/DPOukEDqsnKMmDqTf3JzuFI1CbJcR6M8R1hAda4mZrxIdGcbT8R\r\nXp8JQ8Vuv/+plPMcAiZ2Bzed0hPVr5A1Mz8K8w9OyORGlRwjWS65jsr26bjMCcfj\r\npvuAANrc0Alu4nJC\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Extended Validation SHA256 CA, Level 1\r\nSecureTrust Corporation\r\n35962F305C5A0BEC400D4E9877528C65\r\n-----BEGIN CERTIFICATE-----\r\nMIIFCzCCA/OgAwIBAgIQNZYvMFxaC+xADU6Yd1KMZTANBgkqhkiG9w0BAQsFADBI\r\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\r\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzNFoXDTI0MDky\r\nOTE0MzUzNFowgbExCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\r\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\r\nMTkwNwYDVQQDEzBUcnVzdHdhdmUgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTSEEyNTYg\r\nQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNhQHRydXN0d2F2ZS5jb20wggEi\r\nMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt72YcuqK/rz0VYiTs9p5Au5ai\r\nzyV1Ffis0sd4Pv9fsmtN9pe4hBot+tQ4O3JFpmzQu0mwQeCmvt1SicMgfr0+ME+s\r\neD6EEu7uhvi50THcnTc1BJ2dH9+o9jRkwfY0/t71MVIopy1n9KbMDyMZyVWZ2JMa\r\nDVtPHrGBa49ar06mshBKCQ/k1F7UZ5NDtT8TXPEuprDo95BaMRIc8Z6KXLDSOvqp\r\nXIczlpyT2mzrSw3cIo0a6yHJpB7fDZtjFEn1FEf+wgsICaZNuNz9xesZAwZ1pi1q\r\nIaddtzjmvf1yp9vKdnvWE880S0Vs52qTcLsjy+uEgeIpoC0WRMxFJaYceTgfAgMB\r\nAAGjggGFMIIBgTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTl5CRZFTIn\r\nySCzQgJssO8y3psgWjAOBgNVHQ8BAf8EBAMCAYYwMgYDVR0fBCswKTAnoCWgI4Yh\r\naHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMD0GA1UdIAQ2MDQwMgYE\r\nVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NB\r\nMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3\r\nYXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lz\r\nc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8G\r\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRy\r\ndXN0d2F2ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAGUMIDkrvlMJ0wHLuP3lkneC\r\nwGU6mZ3g17jyU2RJwhRinYctraryG7Jh20DQ9/ppTHoxTIADw2JDsC5ByplabteQ\r\nnLghrl17K1b6PO+rzWA/NFKVwo6u8Gh7Lz0iUuit7ZBD4eKcRedxRZcPQlnD9KTR\r\nIs94SRpootsuCv/Y5b+1FMPV1KrYtbco9yEVlaNEWLpmiEsqvLjxiWEmt71rzz+0\r\nS59OtA/ihnbGP9Xrnhe7wf1ybCNOO5gZQMKr/OszfLZ7oVKACGOPLlcSZRRW98gA\r\nszE+1ZvlHkdjamfTSs4yMvUorYn9NhXnjAWl28NuD9m3FPiE2O50ezEDnHTiaOQ=\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Organization Validation SHA256 CA, Level 1\r\nSecureTrust Corporation\r\n4B2C6646F434775B67DF34A04DD504E6\r\n-----BEGIN CERTIFICATE-----\r\nMIIE/TCCA+WgAwIBAgIQSyxmRvQ0d1tn3zSgTdUE5jANBgkqhkiG9w0BAQsFADBI\r\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\r\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE0MTAwMTE5MjIzNloXDTI0MDky\r\nODE5MjIzNlowgbUxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\r\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\r\nMT0wOwYDVQQDEzRUcnVzdHdhdmUgT3JnYW5pemF0aW9uIFZhbGlkYXRpb24gU0hB\r\nMjU2IENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29t\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA49OohlJHBJ/juiQTmibO\r\nS28pHvCCp1bPOc6elQ62DCYE/A14JXUtI8yaUc9nFjh6dNzR7KjFPEq/qDplQl7f\r\n1Tvh5ifBNNP2wQ6e820TWlPO4HhR/5g4+3iFmJ1N7kFrxDp1/P8e3+9lcJsXckXC\r\ntfFkQ9slogJqnaCsipgdrH4gQhicFAL5YqHw2AKfctZLSPpxhI3xISMV/lIQwZPW\r\nI2221v9ALckokh5pW6dTK8x8yNUUye1zt5msWzqunfBjVYVUj5/LXu46hS99Mfxu\r\n80ARJRyHsXIuHbMzwVXGqKVPZfKAdHBl5e3ElCjNwNy+Hgi09vS7PoAUhjCf/wbO\r\nnQIDAQABo4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUys4d\r\nGAN3HhzzfFiymnCoCIAW9K4wDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYP\r\nKwYBBAGB7RgDAwMDBAQDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0\r\nd2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdh\r\ndmUuY29tL1NUQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0\r\ncDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50\r\ncnVzdHdhdmUuY29tL2lzc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUH\r\nAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0G\r\nCSqGSIb3DQEBCwUAA4IBAQBN/Qb6x5VSQHIt/FqvXAkjfCI7jwXGzRoxThavUqv0\r\npJr1azXKv2L2ye9Sl4OCqiDHZ8ZJZ/Z19Ae1yvGTpG++0O5dWTHZ8qy/JSj17Mg1\r\nvWiefVpJKtkYflzhC9B9/eB3QuKVTRKDqm1ZC9kbm3MWOwtnEOw4WURWS1X2v4Hv\r\n2AJaXe11ZRqjx7/c6U50tYp3eVpRDCw7bOIXRffLG0oibhjHiEu8dgq7KkTSrx9m\r\nQFS6T2x9GLiJKhj2mEfPuGr73TfBPyKsRBymOpG67LThKVnwoUfH3pghA6VkZp5Z\r\n1Vm6AcDm+eelf5XPvZtNve4evLVPYueA3TmGyxXh1m2d\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Organization Validation SHA256 CA, Level 1\r\nSecureTrust Corporation\r\n0092B8744F71CED0E26C72A3D8D5D925B2\r\n-----BEGIN CERTIFICATE-----\r\nMIIFEDCCA/igAwIBAgIRAJK4dE9xztDibHKj2NXZJbIwDQYJKoZIhvcNAQELBQAw\r\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\r\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNjA5MDExNDM1MzVaFw0yNDA5\r\nMjkxNDM1MzVaMIG1MQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\r\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\r\nLjE9MDsGA1UEAxM0VHJ1c3R3YXZlIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIFNI\r\nQTI1NiBDQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNv\r\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPTqIZSRwSf47okE5om\r\nzktvKR7wgqdWzznOnpUOtgwmBPwNeCV1LSPMmlHPZxY4enTc0eyoxTxKv6g6ZUJe\r\n39U74eYnwTTT9sEOnvNtE1pTzuB4Uf+YOPt4hZidTe5Ba8Q6dfz/Ht/vZXCbF3JF\r\nwrXxZEPbJaICap2grIqYHax+IEIYnBQC+WKh8NgCn3LWS0j6cYSN8SEjFf5SEMGT\r\n1iNtttb/QC3JKJIeaVunUyvMfMjVFMntc7eZrFs6rp3wY1WFVI+fy17uOoUvfTH8\r\nbvNAESUch7FyLh2zM8FVxqilT2XygHRwZeXtxJQozcDcvh4ItPb0uz6AFIYwn/8G\r\nzp0CAwEAAaOCAYUwggGBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMrO\r\nHRgDdx4c83xYsppwqAiAFvSuMA4GA1UdDwEB/wQEAwIBhjAyBgNVHR8EKzApMCeg\r\nJaAjhiFodHRwOi8vY3JsLnRydXN0d2F2ZS5jb20vU1RDQS5jcmwwPQYDVR0gBDYw\r\nNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\r\nb20vQ0EwbAYIKwYBBQUHAQEEYDBeMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC50\r\ncnVzdHdhdmUuY29tMDUGCCsGAQUFBzAChilodHRwOi8vc3NsLnRydXN0d2F2ZS5j\r\nb20vaXNzdWVycy9TVENBLmNydDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH\r\nAwEwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wGwYDVR0RBBQwEoEQ\r\nY2FAdHJ1c3R3YXZlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAC0OvN7/UJBcRDXch\r\nA4b2qJo7mBD05+XR96N7vucMaanz26CnUxs1o8DcBckpqyEXCxdOanIr+/UJNbBL\r\nXLJCzNLJEJcgV9TjbVu33eQR23yMuXD+cZsqLMF+L5IIM47W8dlwKJvMy0xs7Jb1\r\nS3NOIhcoVu+XPzRsgKv8Yi2B6l278RfzegiCx4vYJv0pBjFzizEiFH9bWTYIOlIJ\r\nJSM57hoICgjCTS8BoEgndwWIyc/nEmlYaUwmCo9QynY+UmW1WPWmVITEJPMdMK6A\r\nZqvvaWmuHJ6/vURaz+Hoc5D3z0yJDDCkv52bXV04ZoF6cbcWry7JvNA+djvay/4B\r\nRR4SZQ==\r\n-----END CERTIFICATE-----\r\n\r\nSecureTrust TWG Secure Email CA, Level 2\r\nTrustwave Holdings, Inc.\r\n072F30E9C25181828DAC4F5F7DE4AFC87AD132\r\n-----BEGIN CERTIFICATE-----\r\nMIIG2zCCBMOgAwIBAgITBy8w6cJRgYKNrE9ffeSvyHrRMjANBgkqhkiG9w0BAQsF\r\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\r\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\r\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\r\nMjAxMDA4MDY0OTQwWhcNMzAxMDA4MDY0ODQwWjBWMQswCQYDVQQGEwJVUzEUMBIG\r\nA1UEChMLU2VjdXJlVHJ1c3QxMTAvBgNVBAMTKFNlY3VyZVRydXN0IFRXRyBTZWN1\r\ncmUgRW1haWwgQ0EsIExldmVsIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\r\nAoICAQCcD5Wc7H480gOv3ae6SELBls0oNOvpw1ZFjK55nLw+W6PhgqTGNEHlO/Ga\r\nWt13yS1iO1/WzRaUc2XsFRGcjv3QIfDZb+6UzhL1LL9ZE8zcs0B6fepn4smQg1yK\r\ngtAWGoD70Z9kEBtypkG23sO5xIiRACJWgRWVZ/891pQBBz+ElCxUnIyDGghHlWCD\r\nzn5dLoBIVic69Pfpi384uNoNfHV/WATUQEEnwY+5yMMUALAWrRD6Jeh5R4m9qKxG\r\nUlrO9ObDebK9mFEJvrCPtkTIWT1He4ZD58Lt0NIkaItQ7KsKF9wgwH7BTsRGwQXb\r\nP6/0LvfO8UDRKNE/4C39u9dwUw/Zpu2iNXTadVWBtaSDsrPFVb5rBu+pvn4l4Hw5\r\njtySyHAOWn4mhuxDXMuKBtaoTi/qF94d7N0CbqPdN9WSN79Cy2O0BexTGHSJVndX\r\nEbKyn96b5STPshKVpG9DmUekfnDtnHR9dmH74a05X/A8k/XeSJWXphM6NvyZap2A\r\nWiIkrS7MsfwnCdZlX+9WGY2qHxnm4Y6JdNah0qxozBbQHkqHsSN4k8O7zr2lfZhC\r\nuarm0Q1t6tjsmp7PUh26u6PCe0m+MctIrD6ZckUzZeuPduRb55K2p8MxjQSVNH1S\r\nJ2aaHp77qOYV+rvHXIL7le4OR5lDWyzYtXLc8u17/kLbUtgnmQIDAQABo4IBbTCC\r\nAWkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\r\nCgYIKwYBBQUHAwQwHQYDVR0OBBYEFKpD9MNsQCriSoEcg6nez7XhG7bOMB8GA1Ud\r\nIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMEEGA1UdIAQ6MDgwNgYEVR0gADAu\r\nMCwGCCsGAQUFBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA1\r\nBgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dD\r\nQS5jcmwwdAYIKwYBBQUHAQEEaDBmMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5z\r\nZWN1cmV0cnVzdC5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8vY2VydHMuc2VjdXJl\r\ndHJ1c3QuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBb\r\ntCXryLFewOafyNENB3NzgAQVVztwaWSyvF5FYSqav95JKcoHZzy3wG7aKlTPtGnq\r\n1QzJst03qPmZJ3j63obz2AvfEEzLEMlsPmOTy3B9oIrNzd2QhpGW1oF6pIgGB/VP\r\n5zh7U2ibUC+zRLmihwt+j2+7NBbuLbPozgxDTWh2f9O4rJb5bv98Q8RdbGrypBb9\r\nhOhDvmNCCfjSe+Q8myqsvawEG5p7s8gsIK/V3xbyqDihXjsGc7xeEWNftlU91jBL\r\nKPRbrLmXhhWnHJjYs4y5IHu735HA3aAT4TqURS9dGHOMVDRumkFpLqR2W7ptpDki\r\nOtIFZjO5smU29OD4AlcNUXqQuKEFasyTtkRlORnWhU37c36HB8dc57xWQKOf8pMq\r\n7lK+ublO9G4mO1Aqr9mioTN4oMONFJG4W5dWwG9baNg682ZACkvPaw45MqSztL3A\r\nKb4s2cDTWu/D34hV3oafkTwu8B7B2mFZnWRJ9q4akPmZF45uw4RZx2ALaYGGGs67\r\n+r5qS300As9ONg8hxfVkFQSHOc00IiBkgi3OpoCofEKTgDwZwHVqOJyyPjk6H9Sh\r\nZANmUOT2mGDLwl86Ar5bTu8ipzlsyDYQMFjho7WaVs8I5OXyVdONXDYLIOtpITGT\r\n1fRcXFzxYHhrNuFwrdj2zBVyvVD4O6xV97/9nv2Eng==\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global Domain Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D9AD30465CF22697F246B101EC92953B\r\n-----BEGIN CERTIFICATE-----\r\nMIIHCDCCBPCgAwIBAgITBs6C2a0wRlzyJpfyRrEB7JKVOzANBgkqhkiG9w0BAQsF\r\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\r\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\r\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\r\nMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBjjE3MDUGA1UEAxMuVHJ1c3R3\r\nYXZlIEdsb2JhbCBEb21haW4gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UE\r\nChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGljYWdvMREw\r\nDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3DQEBAQUA\r\nA4ICDwAwggIKAoICAQChh5brvvk/kFUZwhlUhqdsUmsMCBjzYqBBLnTyNrKPr4nd\r\nS9s2h2JvA+9TY7NnJc/Mq1eN5V6zqvbn/LN3c8W06f76xrVvFEKs5SzCefUS/V3Z\r\nC18dgwXXFrP+RgfK2kqfTHGIPrWoRSnUiLn3iUNEBtJ06oXjAqAMnAyL5AzD+eHm\r\nZzRK/yCw/gMPnVp2S7Dstka607fS4fW9Sl33mOMNwJRxEjQWHHR25PAb4muP6wjN\r\nvmoLMgiDMKseHSFVtC7SpmO89PsrUV6MahKJrZcAfquAyoO1zR2c2eGaCI/m8oSx\r\n3B7KiMZJ3NZims/siMp/5szemsutf36WJ31nmr7PqLJGJdVpoxbLckWIhZnNYSFm\r\n/pTutpNONqpyYC2gGSXdw5LuxU61913SbAPpk8DZiHi3WslHBo26ghXG++sgJUGj\r\nhtKZhiYlp8uD21WTP6/60wngpXyCtt9cpHxW1lXmqcxwe2J4/2S3xjHz1dC6BKxb\r\nr61HCPVrbTD90CZUpMI8JPdsVbz5eegv+SIyybHxZe4S0D9Kv5pgWfqdXf0BAiJC\r\nTbGwYmFr4uisKhkfMThyOgWEH+CRBzQqdZREQ5lTIlVyzi3jGPuu9Q6brAS9U9Ue\r\nQhUwX8TtY8Igfo8HlhjugDpy6WvDYQ9i+tG3AC6v8sJLdOOU83Lr+2C1LEF5ZwID\r\nAQABo4IBYTCCAV0wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYw\r\nEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYEFIaZQQzOP7aMcEnlkwfwhgcd\r\nLXqVMB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMD0GA1UdIAQ2MDQw\r\nMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29t\r\nL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9U\r\nV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzABhhpodHRwOi8vb2Nz\r\ncC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDovL3NzbC50cnVzdHdh\r\ndmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQAmn0jp\r\n+lNp188KxjKQZtpJ3mixLmuqGdH6SVpRs40BYQg/68xOPH3C6AJ17tqE6IwZMW9s\r\nlgiO4B7khR3ESA6Sct3zmkA8woR/KJVzzegjscHhtQUifQ+Eb9Gi0ORNnetGV+5g\r\n5vlrFZMptBRGUxXMo2xa+Z/NTyimpMopfXj7qCW/nQWQbzvkQGchK9IokyqV2wra\r\ntX68/P3zleG+LLwzoJd5AhHYSXWrIRJpClZHN+LQKkbI3MYW7+upo/1e9HEmFKxu\r\n5SFV3nuQm5wSOsz/ZtIL1AS8IoZYxcSe1Q/yuV9GjnxtL1jkPbzsBx4eBGxUrcIe\r\nsBat6SI8G58uHTpIPpqUxRYsg8w0FdjK3kNBB5QWDeXiDxzqIRzA0iE1kHeTXRZ3\r\n7qgGXUcce7ciW5KqeRApjQbD5BSZG2EKkQ7aaOhvxK0LiuxHZnjPW4/fdEcaCuku\r\nMT5qMDiF2U85V9BvanEy/xkYn4I2UeK4EdSXe7q6j+CIJz9WnoLQDbIS04GqIWe0\r\nVRQUlx3idUWYSJU/SG8KrEHhlJLmgSjshCwtT6qo4vHwT5WcWDLIbjMqgL1iQ6JS\r\n4gxXuOGia3d0I4/wec5x23EWwx9V8BtDJ8N7NDeRNmZ8RXOHSYJsVQYIQuFUEXE1\r\nv3WMSIxuyQMyR5FYSCG9xnKRFzNmiPngDil5IA==\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global Extended Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D99FB3B180C281020314A2D1C7640017\r\n-----BEGIN CERTIFICATE-----\r\nMIIHFDCCBPygAwIBAgITBs6C2Z+zsYDCgQIDFKLRx2QAFzANBgkqhkiG9w0BAQsF\r\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\r\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\r\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\r\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBkDE5MDcGA1UEAxMwVHJ1c3R3\r\nYXZlIEdsb2JhbCBFeHRlbmRlZCBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYD\r\nVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28x\r\nETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEB\r\nBQADggIPADCCAgoCggIBAMRO7orfWjfmz6Y6qoAmDp2lqCJcdvbRQ8w18rl1JE3j\r\nf/1CScZLrnLg4RDm8JiRcvFuvoMXn/XNUWy5ICG57tjG2nO7jvBuXfvbdkGA+foN\r\n3yJKMTX/PmmGlN4qpzFtsB0kLrP14/0TRGeJB7qDfAFH0ReFk0ftQobLBGBOpEca\r\n+bv+LhcTe40/uNUSK2yQ9GpIw200mcsD3B9c29Im4tSZFuA2o1vnEeizYW5M4sPX\r\nHu7p5ZCxjJrXVNqWUPM38rShhMUNL5uaVYWoi7TG5JXbg0Lmt2nq1k5nnig9Yp/W\r\nlAFooWXjKQzHf/z+XZ57bqPe7SzLW5pzpZdSmY2VRybAwEmzMjCXgHiP2ru3TpAD\r\n+giakPDoz3ZmbKjwYKZ5PmnOmXx0Z2GloO37MjamjPor/+fZohfyma7VAQE8znJt\r\nI9MVoRN3G3gW/tuT3jXfzYdFBlfGoO7OYyLN1LK5YBKH2qXrCHD8rG2DauBt7U+w\r\nfOvwfkp8FcdTnfQ92Xe65U3Xdu0eCgQJbChxZtWhhLnbY6xhmwAWyJ1my+Im72Kx\r\nGP/XcA8SH2sz6/k0782BjRckDuFpVVpTNYl9wqe/tuOrZhWPapOsRlfsDTuhgGu5\r\n2inM9sU3CAzmFE85zoRQFZQSof3kFN2rUZF20bmTak99cBNLli6/ja3+KntpZ08d\r\nAgMBAAGjggFrMIIBZzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB\r\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFHM4IMZH\r\nbabGL3tQ4EDe3sedR958MB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6H\r\nMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50\r\ncnVzdHdhdmUuY29tL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1\r\nc3R3YXZlLmNvbS9UV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzAB\r\nhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDov\r\nL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEB\r\nCwUAA4ICAQBwnSHECaf+hfGrm3Cg+aRr57ytoOSzI1DjlTNcM7k4uSt6kJRPHJ4c\r\nldIujMaETV52RgE6ykaMGkuIwQOIsLI6SXwjU1f5gXFUbDTS3KTWc/jwQeyLmdOe\r\nhvc+wBSFv8d10Sx/Qiti8mqsTqr0+N94Cx01+SkiWxWWoSZOAPkz8DMQGlD4yndK\r\nceTMGtQ03cLnD/36Mv6tz/Ds9l/OExrJGGxHD0tmYwYwBZpPHm7BBY2ZzycVxLcg\r\n+uuggcX1pg5MhJ1rDyod+7X+ilvTgH7ftHCmxvR7viMLwSUuytZ05zb2teRQgU+8\r\niWnPEHO/ADm5VD1Zb5Rx0579/YEENBJtGUPPJzo+JEpiZIOIlwZ69ETWWNCLZr0V\r\nvoi+SDl65cr+dgR9JreJ2I4W9FzS45ruxYEC8LGKEmV46sAk1YLbnIBmhehAKy9t\r\nP8RVz3QXYJ6rLOAuXF7R2eVV0SqfivW9bVzvBZTUTFsbdSMBAAF1BJjdRqYR63DI\r\ncQASY7CRoUiak1NTgPkzeV8VcNJmUt8c2eKJIifqBAjquH6+6UXs9Ol0aMPn6v0y\r\nB+TSuxhX2sSrpna9QcOh/QyoR5Hvcd81rZSbMc7yasKoUMXviotV1SfEqs3RU5Ts\r\nwnU4NHPn5ITRiuh5VMuvB/VnjnPC953u5uqAGtZ8BkC7X9cu5E0rMQ==\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global Organization Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D9A69703AEFE5D37D18858C74026B004\r\n-----BEGIN CERTIFICATE-----\r\nMIIHGDCCBQCgAwIBAgITBs6C2aaXA67+XTfRiFjHQCawBDANBgkqhkiG9w0BAQsF\r\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\r\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\r\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\r\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBlDE9MDsGA1UEAxM0VHJ1c3R3\r\nYXZlIEdsb2JhbCBPcmdhbml6YXRpb24gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEh\r\nMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGlj\r\nYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3\r\nDQEBAQUAA4ICDwAwggIKAoICAQC8BzZtA3eWejFOGHc2DLgex6P471dLWIIHSlrF\r\nY4a2BCtzAd/VlpQ3gslWnTgthOmK2/hCc+WSaOLPVZzZf3lGnxbb0+Y87Kx+nS1m\r\nIfJ/4OR6o8XLMLoCTAI1jsWxggiB4NBMqsW2xXQ5VAvBb66KEQYbshNlRpTbtBFq\r\nEed4YIvCdjbnCUOy1zubgVHUVyCFHzN4XPjEQCtT5vZM576Lt10Je9COnqG0CtPU\r\nQNP2tjnSmOOYdWcVRZ0UqXUl2fMBfmSDHd8902foigjpP04AYYbq6AetqEgqdvQP\r\nxz5pVbZqzy8UrE/s/raJLFyTuIAYVt18M0whSgWzGgUWkq2xRqbfn7b1hd56dwRb\r\nR7pKc51FyTbeocnKlYLC+Dlzp7iKQ3Pb7WHRwLhaJB7u4CzwqhUxHc0xplMYsq92\r\nMbZ6WN5L5mI7hxY8gLMOR7vNX9CKz9XcYRS01iCDe5Y/9muW8bzGyNXLX1YaHAy4\r\n+6ncksb3Y3RUKj3f0+T4nbiRISmGazravJKSssBLP3kPa9h5aX+Vd00eL+Q7sXrh\r\nFO7xz+oWtOL5rfVszyc87JQvjw1sDHA710nViqzUE1bJZNe61EXdCb/RV+Wsu+rO\r\ncAMSr5x2j/wW875sh+U3EJmTzdEBUBxHnBD2mDTyonT7wL47TRXTEO1IaS4mVbnv\r\no0jWvQIDAQABo4IBazCCAWcwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E\r\nBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBS3\r\n/VNzOCaKcKuTyoupCOrH07fj/TAfBgNVHSMEGDAWgBSZ4BlnDWLbdrPaPbhb6P1C\r\n0jEOhzA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9z\r\nc2wudHJ1c3R3YXZlLmNvbS9DQTAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js\r\nLnRydXN0d2F2ZS5jb20vVFdHQ0EuY3JsMG4GCCsGAQUFBwEBBGIwYDAmBggrBgEF\r\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wNgYIKwYBBQUHMAKGKmh0\r\ndHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR0NBLmNydDANBgkqhkiG\r\n9w0BAQsFAAOCAgEAFXwfmELpEGKUguzVTMix79XbUnkfLa7IXcqBOrwOWEF1V8F1\r\nxGY6jLlUTtoEXRYZwCpqOK/i4m4nmWCYE45O7URR8nqeFffceTi62t4Yvh6LkC9g\r\nUnj3aChLiO/Zdxilq6vfsXO0mKafrGtZXwjyskS250Pj9DsANs57QqvYN4hqbplJ\r\nzc95p09OUvEhPiyRyx6FyY28U+3X6+mSNMJWd4Nhr+3HtvmItLIXP2JCLxuYtu/K\r\n6nKcpFCFFKeF8K3PWpjsAb0hfXL4vc3WfyCYsQnvJeisyAh7yEuge2iDwl1/xXIo\r\nEOAyyYAxvy5UnzcAa0Z2lwjptve+jZ4gQ+A1ioYUavR3pSfBNzuJW30nZCWFadKc\r\nNXOPoAPkK8JLxgRBH3JboeBCXG6xgy/pXrTjyhW7/SS+Z+7eKkp9jgdTVQ12yUtc\r\nCiYWUuM4l240D/z+s03WOEcLTluESwFkJhzs3D9i5crTL72uSkDDmlh8HXoPAyYO\r\nl3Mn9cGWhd8M8IeQRXmb6O7gvvQZDoSXDVDbjBKcW1lFpi0wBxIBzLaOi4CX4OhI\r\nJHJ/H3duOMaltuzXLSLkc26jwHzMeq8seQRSXraXJi1t5oBKlmEWFEgq6xlH7mLW\r\n3TOqS19cuiSWl/CsnlLGaW8MH5YHmk+MJxQE1BcLBs6ciapvHlhLEd9EUpU=\r\n-----END CERTIFICATE-----\r\n\r\nSecureTrust TWG ECDSA P-256 Secure Email CA, Level 2\r\nTrustwave Holdings, Inc.\r\n072F30E9C4627001DECFEBF6BF5D3B1066D7E3\r\n-----BEGIN CERTIFICATE-----\r\nMIIDbTCCAxKgAwIBAgITBy8w6cRicAHez+v2v107EGbX4zAKBggqhkjOPQQDAjCB\r\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\r\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\r\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\r\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\r\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\r\nRyBFQ0RTQSBQLTI1NiBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwWTATBgcqhkjO\r\nPQIBBggqhkjOPQMBBwNCAAT4KazLm94aiykBGkNQVkBrjmK77RlP627D2n3EwK3s\r\n49ljRkN6wiTWXHx3jPD5BBE/7mWhGWnphzGu1Deb6yzco4IBdTCCAXEwEgYDVR0T\r\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUH\r\nAwQwHQYDVR0OBBYEFHMQ2nwjQr8tFHfBImxM7ct8lbBYMB8GA1UdIwQYMBaAFKNB\r\nBqyQbdFK63WlShCZs7Ghi0r3MEEGA1UdIAQ6MDgwNgYEVR0gADAuMCwGCCsGAQUF\r\nBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA5BgNVHR8EMjAw\r\nMC6gLKAqhihodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dQMjU2Q0EuY3Js\r\nMHgGCCsGAQUFBwEBBGwwajAoBggrBgEFBQcwAYYcaHR0cDovL29jc3Auc2VjdXJl\r\ndHJ1c3QuY29tLzA+BggrBgEFBQcwAoYyaHR0cDovL2NlcnRzLnNlY3VyZXRydXN0\r\nLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDSQAwRgIhAN8G\r\nPwKUpMgV3LZjq7fuKS96f15BrwBjmTlKhOwgX83BAiEA9WpWhzRRoKeJGAqqXrMk\r\nZ8RE9xRtOFBqYdv9H5CeTVk=\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global ECDSA P-256 Domain Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D9AF531423847B85FB677932AAF80508\r\n-----BEGIN CERTIFICATE-----\r\nMIIDmDCCAz+gAwIBAgITBs6C2a9TFCOEe4X7Z3kyqvgFCDAKBggqhkjOPQQDAjCB\r\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\r\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\r\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\r\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\r\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBEb21haW4gVmFsaWRhdGlvbiBD\r\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\r\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\r\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATWpfTIQFPkZIoXXMDN9utRU+AbLGcg\r\nBmLA06x2qqdcpCMlYFoJhuRWzYCiqz1mKrAvNlQYkgoHfemk92sf8iaro4IBaTCC\r\nAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\r\nCgYIKwYBBQUHAwEwHQYDVR0OBBYEFA/DUGGZflb1xtmcOeiDWJAHuhq0MB8GA1Ud\r\nIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2MDQwMgYEVR0gADAq\r\nMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1Ud\r\nHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMjU2Q0Eu\r\nY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1\r\nc3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNv\r\nbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDRwAwRAIgICvA5ttD\r\n0oeUcd37iYvoQ7iMIpZINp4e1j5NrlI3UnYCIEZhimm9+1dUWAfx9ZkGmIu0HiHR\r\nzEZifAHbPM3SJbRu\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global ECDSA P-256 Extended Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D9A20A3797CD878EB3DAA41D08680AF7\r\n-----BEGIN CERTIFICATE-----\r\nMIIDpjCCA0ugAwIBAgITBs6C2aIKN5fNh46z2qQdCGgK9zAKBggqhkjOPQQDAjCB\r\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\r\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\r\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\r\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\r\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBFeHRlbmRlZCBWYWxpZGF0aW9u\r\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\r\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\r\nUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKXHfFxFDVI6uYWZlWciFFKtYzuJ\r\n+IBhot3PQGikE3sjU8d9dARkZCkInqmDyP/+XiLzgrYPMy7NS8lZcRsE5p2jggFz\r\nMIIBbzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUE\r\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFAwlVqqzYgakv+7gGxtX\r\nzC8s9g1QMB8GA1UdIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2\r\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\r\nY29tL0NBMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\r\nbS9UV0dQMjU2Q0EuY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0\r\ncDovL29jc3AudHJ1c3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wu\r\ndHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwID\r\nSQAwRgIhALahroq1NScrFeCvG5uMgMKH/bo190D+Mkh2ZIojrUOfAiEAosFXFE73\r\n0WLRPjX2uOkLhXuA4cQEb1R1oeGDH4MNVOo=\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global ECDSA P-256 Organization Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D9A8B57C104843994DACD79E28633E5F\r\n-----BEGIN CERTIFICATE-----\r\nMIIDqDCCA0+gAwIBAgITBs6C2ai1fBBIQ5lNrNeeKGM+XzAKBggqhkjOPQQDAjCB\r\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\r\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\r\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\r\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\r\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBPcmdhbml6YXRpb24gVmFsaWRh\r\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\r\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\r\nBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmHWo0mogvX1J61xysTqsn\r\n6qV06wxUH68/QJ2aDIka6beTrDoTZv3mIkyPxFTPy+9idjgSAERlBsDirgO2/NiY\r\no4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYD\r\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBSv+Ju8XTSl3tA+\r\nFCldDY4lrbClhTAfBgNVHSMEGDAWgBSjQQaskG3RSut1pUoQmbOxoYtK9zA9BgNV\r\nHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3\r\nYXZlLmNvbS9DQTA3BgNVHR8EMDAuMCygKqAohiZodHRwOi8vY3JsLnRydXN0d2F2\r\nZS5jb20vVFdHUDI1NkNBLmNybDByBggrBgEFBQcBAQRmMGQwJgYIKwYBBQUHMAGG\r\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8v\r\nc3NsLnRydXN0d2F2ZS5jb20vaXNzdWVycy9UV0dQMjU2Q0EuY3J0MAoGCCqGSM49\r\nBAMCA0cAMEQCIGa3JyBYlXxRN5GIIulLaDxnANNRnY4j1Et166CCC5h+AiAVUlzJ\r\nIJTfUDBU7jnSTKSw/F+bLIPvaC6frMZv0h+RTA==\r\n-----END CERTIFICATE-----\r\n\r\nSecureTrust TWG ECDSA P-384 Secure Email CA, Level 2\r\nTrustwave Holdings, Inc.\r\n072F30E9C58D91DEF98A7F9EB2666CFE7BE1EE\r\n-----BEGIN CERTIFICATE-----\r\nMIIDqjCCAy+gAwIBAgITBy8w6cWNkd75in+esmZs/nvh7jAKBggqhkjOPQQDAzCB\r\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\r\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\r\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\r\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\r\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\r\nRyBFQ0RTQSBQLTM4NCBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwdjAQBgcqhkjO\r\nPQIBBgUrgQQAIgNiAAR4nTJ6MvtPBb7+L3tklhdDw0tr5FNY5Q1hsp6NR5OzZVeG\r\nx/X3VrCvkOsae1OEZHNqWCnnI1s/ix9qn/2+q0pPpXrT6wkN/HOQzpQaJWzCF7yX\r\nIfIB0o+x1Pr17UOX2qGjggF1MIIBcTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud\r\nDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDBDAdBgNVHQ4EFgQUJd3xyUp6\r\n6EP6L9hCmkRrWAcU2mwwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ymB07I552+gpAw\r\nQQYDVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMu\r\nc2VjdXJldHJ1c3QuY29tL0NBMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu\r\nc2VjdXJldHJ1c3QuY29tL1RXR1AzODRDQS5jcmwweAYIKwYBBQUHAQEEbDBqMCgG\r\nCCsGAQUFBzABhhxodHRwOi8vb2NzcC5zZWN1cmV0cnVzdC5jb20vMD4GCCsGAQUF\r\nBzAChjJodHRwOi8vY2VydHMuc2VjdXJldHJ1c3QuY29tL2lzc3VlcnMvVFdHUDM4\r\nNENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA8X5zwZHtdHjLIn60rwG3Z3NAa6cU\r\n6gOFxyF+ksTCXvWCUP0oFUqsRPMKMYE2mtdQAjEA2diuEHTPUgCQ0ynhLjged8BO\r\nFyzL3UlFieGGp90v58gUpfjoFq0BReAw7MPYo/Qa\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global ECDSA P-384 Domain Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D9B07A17CC5376157813389A2930A44A\r\n-----BEGIN CERTIFICATE-----\r\nMIID1TCCA1ygAwIBAgITBs6C2bB6F8xTdhV4EziaKTCkSjAKBggqhkjOPQQDAzCB\r\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\r\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\r\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\r\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\r\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBEb21haW4gVmFsaWRhdGlvbiBD\r\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\r\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\r\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAASxlBEflNumTKsypgdOscM2x6ZRpQGSyB4B\r\nhJScRQI81UhZvzYSwxPWcxNZwFQoV457HfqR51pviJnHltRS8MJhJ9Q9Rf1sSmy4\r\nW6SPsM9qnBjwfBRxghByIsEIaTW/PKyjggFpMIIBZTASBgNVHRMBAf8ECDAGAQH/\r\nAgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4E\r\nFgQUp6etGGS1u/oGGEfIwJ68Zf9pAWAwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ym\r\nB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBz\r\nOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDov\r\nL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYIKwYBBQUHAQEEZjBk\r\nMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA6BggrBgEF\r\nBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHUDM4NENB\r\nLmNydDAKBggqhkjOPQQDAwNnADBkAjA6fS1jRjt+DvnWSI58v4lX+8DCXbdEhDaB\r\nbBOS/rXwS/ntsFXqTf0B90GPv3AWlFMCMBbz6nXMwX0jKRkaFZOZx9tvwUapdq7M\r\n6jYpT/NnAzH68x1t3/7ysZ8lPuKIqAwdKQ==\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global ECDSA P-384 Extended Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D9A331594530006781829387E40DBCB6\r\n-----BEGIN CERTIFICATE-----\r\nMIID4zCCA2igAwIBAgITBs6C2aMxWUUwAGeBgpOH5A28tjAKBggqhkjOPQQDAzCB\r\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\r\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\r\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\r\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\r\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBFeHRlbmRlZCBWYWxpZGF0aW9u\r\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\r\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\r\nUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABKcVGieqBjW3BuVza9VhkBlpGLHLZqQg\r\nI0GXaTpt5CogNWz6BmlZ1yAPjRnDUVfVwl57ATRtV7u+5TPFzKZ+RheFVc0iA8vl\r\nQ2JINGRz8XLDaivvuygQtFKSzCWn4e66cKOCAXMwggFvMBIGA1UdEwEB/wQIMAYB\r\nAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF\r\nBQcDATAdBgNVHQ4EFgQUMFfit09gayJACkNfT/oNzXO8JCcwHwYDVR0jBBgwFoAU\r\nVamEidLBMr0Yy2ymB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYB\r\nBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAs\r\noCqgKIYmaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYI\r\nKwYBBQUHAQEEZjBkMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUu\r\nY29tLzA6BggrBgEFBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3Vl\r\ncnMvVFdHUDM4NENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA6pScrGT+SruK7iON\r\n7iDJZfhQsjfQIhaq9sHiEXd89B8ibWOb57no/K265dPxeuALAjEA27NTMZM344eT\r\nX3df9B22dY5ZshsUMIiRcMo1K4B/GBO8SIA0jParkHS5g4WO5K7O\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global ECDSA P-384 Organization Validation CA, Level 1\r\nTrustwave Holdings, Inc.\r\n06CE82D9A9D8E29837EF90BEAF59DC6551BED6\r\n-----BEGIN CERTIFICATE-----\r\nMIID5jCCA2ygAwIBAgITBs6C2anY4pg375C+r1ncZVG+1jAKBggqhkjOPQQDAzCB\r\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\r\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\r\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\r\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\r\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBPcmdhbml6YXRpb24gVmFsaWRh\r\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\r\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\r\nBhMCVVMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATvG09PrsO8UQZhH5Zw54rwgcUw\r\nKjC9D2V3myjD5WOa8uxdTL8PzdwPk4TCcSf6UUG1Tt74j/I+vBOi2tgMcDt68Zld\r\nvTj+jZT1BBYTQtYh6/dOUjmiapQU5XqoFMRNubGjggFzMIIBbzASBgNVHRMBAf8E\r\nCDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYI\r\nKwYBBQUHAwEwHQYDVR0OBBYEFDoXwH5iO1eguEDKzDRHzZZ+/AmIMB8GA1UdIwQY\r\nMBaAFFWphInSwTK9GMtspgdOyOedvoKQMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgG\r\nCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1UdHwQw\r\nMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMzg0Q0EuY3Js\r\nMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3\r\nYXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9p\r\nc3N1ZXJzL1RXR1AzODRDQS5jcnQwCgYIKoZIzj0EAwMDaAAwZQIwMyHlVCVMacxP\r\nO0fC+uc4M7Eq1F9woaWBmLSSNC6EWe3nShMqsR9HrNWrOHBHucNWAjEArwrzEM8g\r\nJkR4iZxbyYNIn2sNEkNZt2pxqJn4G2cDDDFfOarykKVzP1aJ9OMdYUvs\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave S/MIME SHA256 CA, Level 1\r\nXRamp Security Services Inc\r\n3A83B71EE02C3CCA1CE1A2643E9B66EA\r\n-----BEGIN CERTIFICATE-----\r\nMIIFHTCCBAWgAwIBAgIQOoO3HuAsPMoc4aJkPptm6jANBgkqhkiG9w0BAQsFADCB\r\ngjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk\r\nMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY\r\nUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQxMDAxMTky\r\nMjM4WhcNMjQwOTI4MTkyMjM4WjCBpDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCEls\r\nbGlub2lzMRAwDgYDVQQHEwdDaGljYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9s\r\nZGluZ3MsIEluYy4xLDAqBgNVBAMTI1RydXN0d2F2ZSBTL01JTUUgU0hBMjU2IENB\r\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\r\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4c5I5giD0wEh+RuoLIJkD7a6mBlm\r\n+YzTtXSefGejVVYtpjclkUl4C4hEfQMCUcrBnU3ORHVprXi/Q82dKNFPac8FI9bj\r\n8mtq0cjdSDfXJKfdf52wPXnTjASwKyhJt+CoJik+Fz72KAkjxi+OUSpWdQBeAQra\r\ndbtu4UGFTgPcuU/cwpF8J0g4CGk/saVKkkJNpq5wqpfQRYl025FyKbzmRjqhB/Ta\r\npoHlbHMQ7aeoZ+qtDC+eWnE3AqTUHx14Z5fegjLQRmPWqqdeZafthouglbEuHt4A\r\neyzefTDNwyXjUiRD/n0kaNNW+lcsLpw7ouw1OU8mwQ0C7LoPJljpXRjvOwIDAQAB\r\no4IBaTCCAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUDDOjV6rjq9ZL\r\ncBs2nqPtYVDmr3QwDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYPKwYBBAGB\r\n7RgDAwMFBAMDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\r\nb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29t\r\nL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29j\r\nc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdh\r\ndmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYD\r\nVR0jBBgwFoAUxk+iPQZjhAmczmLkBKyNXLXpthswDQYJKoZIhvcNAQELBQADggEB\r\nAIdGLHufUegzFKVBQVWs3YAIFqCcJvdak14TMRImxJsnQWLz+jIW0olC0JATY6Ng\r\nxAbjIJA4wtW/tA+rgE6WcA5y3bLN3bRMQVDSu6X26hkVjvwo4/VYykOp3e9Cqlfe\r\ngJAsrqBQKXkUpEbYEmmorXxj6/74e//xwXTz0XS0BS9cXhONlTQffyJnMeLaunzQ\r\nS1x/MvALfPCHCZCTOfLDmwylKtHHu+V2Ks0HV+ZrzCBRR5W3MhGTU7PpNEMQwyGF\r\n+MG5eZTd0jyxOSOjaXQm7iDh0tG/iKZZegn5AhNdaHE74QEHTjK+teLQlo60QGBk\r\necyzakgVYZ/Ezalz8nQwhCA=\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave XRamp Global Extended Validation CA, Level 1\r\nXRamp Security Services Inc\r\n00D3D519C2B2EB5C7040F64CBC957BBD2C\r\n-----BEGIN CERTIFICATE-----\r\nMIIFMDCCBBigAwIBAgIRANPVGcKy61xwQPZMvJV7vSwwDQYJKoZIhvcNAQELBQAw\r\ngYIxCzAJBgNVBAYTAlVTMR4wHAYDVQQLExV3d3cueHJhbXBzZWN1cml0eS5jb20x\r\nJDAiBgNVBAoTG1hSYW1wIFNlY3VyaXR5IFNlcnZpY2VzIEluYzEtMCsGA1UEAxMk\r\nWFJhbXAgR2xvYmFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE1MDgxMjIw\r\nMTczMVoXDTI1MDgwOTIwMTczMVowgbcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJ\r\nbGxpbm9pczEQMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhv\r\nbGRpbmdzLCBJbmMuMT8wPQYDVQQDEzZUcnVzdHdhdmUgWFJhbXAgR2xvYmFsIEV4\r\ndGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNh\r\nQHRydXN0d2F2ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9\r\nAAbj9SknrNJT9pDatGvlR386KRi0SkqIOGr+C5W91+8E8PqydEHwjrnrWt/MTLGO\r\n+2kfEO3TEJlWxQQqbHy8SdhjCANefLzOT1cfTfjroWBIS9yiHpBIQytAaz/td95Y\r\n+JKrRBVCnIR/wB5qMMQ982RWwqggD763XLma0c1AIndsZL+dXp1zET4KBreoxn3q\r\nRYzMIsZIL2mAJoiCOTYuOGrOMVuaQn0HSu3K7bU+CpkdLQ/j+ikcQiI10IL9oOcO\r\nU9Gnt/hRyUX66Gk91RIpYXhla2tIYrg7ezrAnFoZIZCb891JjFtbSEOvAAK9F5d6\r\nfkkjPx0432o/v1c5GRFPAgMBAAGjggFoMIIBZDASBgNVHRMBAf8ECDAGAQH/AgEA\r\nMB0GA1UdDgQWBBTFzrk7QkXAzQnlaOhIOoNdbI6rGDAOBgNVHQ8BAf8EBAMCAYYw\r\nPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRy\r\ndXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVz\r\ndHdhdmUuY29tL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZ\r\naHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3Nz\r\nbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwHQYDVR0lBBYwFAYIKwYB\r\nBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFMZPoj0GY4QJnM5i5ASsjVy16bYb\r\nMA0GCSqGSIb3DQEBCwUAA4IBAQCA2N/WVTGYRGNTuvF2qKWPrQUx0/6pKmGqELl6\r\nNXs1bwRXCci98SkeNjiaa2dHEwcGR43/M1Y0nekXP8QCEFVqGOwaY0pnTb8wL+CI\r\n/HTp1zfmoCYNvtzt1fIq/+9ynLYEjX8rsrf51HIEjJJK8K3k/Ub3cFT+yJKNN2YN\r\nJS0IvJYlbpqS6VbcInwLcW7WvJmXUuL7t0Vtt0d2q1h5UdnJQP+skiOmN/B0zPut\r\nbRC4v5pNGJJmwbk58UlOSeviH2qzDGutamOJ6dFNWqQFoZorAT7fUsr3WDA4HKtx\r\neraYdCIRJX7weW9xpdMNsVO7Wy/Ma7Fz9fzKnOH5mnInBOof\r\n-----END CERTIFICATE-----\r\n\r\nSecure Global CA\r\nSecureTrust Corporation\r\n075622A4E8D48A894DF413C8F0F8EAA5\r\n-----BEGIN CERTIFICATE-----\r\nMIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK\r\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\r\nGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx\r\nMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg\r\nQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG\r\nSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ\r\niQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa\r\n/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ\r\njnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI\r\nHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7\r\nsFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w\r\ngZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF\r\nMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw\r\nKaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG\r\nAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L\r\nURYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO\r\nH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm\r\nI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY\r\niNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc\r\nf8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW\r\n-----END CERTIFICATE-----\r\n\r\nSecureTrust CA\r\nSecureTrust Corporation\r\n0CF08E5C0816A5AD427FF0EB271859D0\r\n-----BEGIN CERTIFICATE-----\r\nMIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI\r\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\r\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz\r\nMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv\r\ncnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN\r\nAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz\r\nZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO\r\n0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao\r\nwW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj\r\n7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS\r\n8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT\r\nBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB\r\n/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg\r\nJYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC\r\nNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3\r\n6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/\r\n3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm\r\nD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS\r\nCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR\r\n3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global Certification Authority\r\nTrustwave Holdings, Inc.\r\n05F70E86DA49F346352EBAB2\r\n-----BEGIN CERTIFICATE-----\r\nMIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw\r\nCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x\r\nITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1\r\nc3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx\r\nOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI\r\nSWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI\r\nb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp\r\nY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\r\nALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn\r\nswuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu\r\n7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8\r\n1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW\r\n80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP\r\nJqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l\r\nRtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw\r\nhI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10\r\ncoos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc\r\nBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n\r\ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud\r\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud\r\nDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W\r\n0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe\r\nuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q\r\nlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB\r\naCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE\r\nsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT\r\nMaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe\r\nqu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh\r\nVicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8\r\nh6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9\r\nEEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK\r\nyeC2nOnOcXHebD8WpHk=\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global ECC P256 Certification Authority\r\nTrustwave Holdings, Inc.\r\n0D6A5F083F285C3E5195DF5D\r\n-----BEGIN CERTIFICATE-----\r\nMIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD\r\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\r\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\r\nYXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\r\nNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G\r\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\r\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\r\nQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG\r\nSM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN\r\nFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w\r\nDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw\r\nCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh\r\nDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7\r\n-----END CERTIFICATE-----\r\n\r\nTrustwave Global ECC P384 Certification Authority\r\nTrustwave Holdings, Inc.\r\n08BD85976C9927A48068473B\r\n-----BEGIN CERTIFICATE-----\r\nMIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD\r\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\r\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\r\nYXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\r\nNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G\r\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\r\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\r\nQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB\r\nBAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ\r\nj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF\r\n1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\r\nA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3\r\nAZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC\r\nMGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu\r\nSw==\r\n-----END CERTIFICATE-----\r\n`;", "export const PKG_NAME = \"__PACKAGE_NAME__\";\r\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\r\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\r\n", "import { join } from \"@hpcc-js/util\";\r\nimport { createConnection, IConnection, IOptions, ResponseType } from \"./connection.ts\";\r\n\r\nexport type ESPResponseType = ResponseType | \"json2\" | \"xsd\";\r\n\r\nexport function isArray(arg: any) {\r\n    return Object.prototype.toString.call(arg) === \"[object Array]\";\r\n}\r\n\r\nexport interface Exception {\r\n    Code: number;\r\n    Message: string;\r\n}\r\n\r\nexport interface Exceptions {\r\n    Source: string;\r\n    Exception: Exception[];\r\n}\r\n\r\nexport class ESPExceptions extends Error implements Exceptions {\r\n    isESPExceptions = true;\r\n    action: string;\r\n    request: string;\r\n    Source: string;\r\n    Exception: Exception[];\r\n\r\n    constructor(action: string, request: any, exceptions: Exceptions) {\r\n        super(\"ESPException:  \" + exceptions.Source);\r\n        this.action = action;\r\n        this.request = request;\r\n        this.Source = exceptions.Source;\r\n        this.Exception = exceptions.Exception;\r\n        if (exceptions.Exception.length) {\r\n            this.message = `${exceptions.Exception[0].Code}:  ${exceptions.Exception[0].Message}`;\r\n        } else {\r\n            this.message = \"\";\r\n        }\r\n    }\r\n}\r\n\r\nexport function isExceptions(err: any): err is Exceptions {\r\n    return err instanceof ESPExceptions || (err.isESPExceptions && Array.isArray(err.Exception));\r\n}\r\n\r\nfunction isConnection(optsConnection: IOptions | IConnection): optsConnection is IConnection {\r\n    return (optsConnection as IConnection).send !== undefined;\r\n}\r\n\r\nexport class ESPConnection implements IConnection {\r\n    private _connection: IConnection;\r\n    get baseUrl() { return this._connection.opts().baseUrl; }\r\n    private _service: string;\r\n    private _version: string;\r\n\r\n    constructor(optsConnection: IOptions | IConnection, service: string, version: string) {\r\n        this._connection = isConnection(optsConnection) ? optsConnection : createConnection(optsConnection);\r\n        this._service = service;\r\n        this._version = version;\r\n    }\r\n\r\n    service(): string;\r\n    service(_: string): ESPConnection;\r\n    service(_?: string): string | ESPConnection {\r\n        if (_ === void 0) return this._service;\r\n        this._service = _;\r\n        return this;\r\n    }\r\n\r\n    version(): string;\r\n    version(_: string): ESPConnection;\r\n    version(_?: string): string | ESPConnection {\r\n        if (_ === void 0) return this._version;\r\n        this._version = _;\r\n        return this;\r\n    }\r\n\r\n    toESPStringArray(target: any, arrayName: string): any {\r\n        if (isArray(target[arrayName])) {\r\n            for (let i = 0; i < target[arrayName].length; ++i) {\r\n                target[arrayName + \"_i\" + i] = target[arrayName][i];\r\n            }\r\n            delete target[arrayName];\r\n        }\r\n        return target;\r\n    }\r\n\r\n    //  IConnection  ---\r\n    opts(_: Partial<IOptions>): this;\r\n    opts(): IOptions;\r\n    opts(_?: Partial<IOptions>): this | IOptions {\r\n        if (_ === void 0) return this._connection.opts();\r\n        this._connection.opts(_);\r\n        return this;\r\n    }\r\n\r\n    send(action: string, _request: any = {}, espResponseType: ESPResponseType = \"json\", largeUpload: boolean = false, abortSignal?: AbortSignal, espResponseField?: string): Promise<any> {\r\n        const request = { ..._request, ...{ ver_: this._version } };\r\n        if (largeUpload) {\r\n            request[\"upload_\"] = true;\r\n        }\r\n        if (abortSignal) {\r\n            request[\"abortSignal_\"] = abortSignal;\r\n        }\r\n        let serviceAction: string;\r\n        let responseType: ResponseType = \"json\";\r\n        switch (espResponseType) {\r\n            case \"text\":\r\n                serviceAction = join(this._service, action);\r\n                responseType = \"text\";\r\n                break;\r\n            case \"xsd\":\r\n                serviceAction = join(this._service, action + \".xsd\");\r\n                responseType = \"text\";\r\n                break;\r\n            case \"json2\":\r\n                serviceAction = join(this._service, action + \"/json\");\r\n                espResponseType = \"json\";\r\n                const actionParts = action.split(\"/\");\r\n                action = actionParts.pop()!;\r\n                break;\r\n            default:\r\n                serviceAction = join(this._service, action + \".json\");\r\n        }\r\n        return this._connection.send(serviceAction, request, responseType).then((response) => {\r\n            if (espResponseType === \"json\") {\r\n                let retVal;\r\n                if (response && response.Exceptions) {\r\n                    throw new ESPExceptions(action, request, response.Exceptions);\r\n                } else if (response) {\r\n                    retVal = response[espResponseField || (action + \"Response\")];\r\n                }\r\n                if (!retVal) {\r\n                    throw new ESPExceptions(action, request, {\r\n                        Source: \"ESPConnection.send\",\r\n                        Exception: [{ Code: 0, Message: \"Missing Response\" }]\r\n                    });\r\n                }\r\n                return retVal;\r\n            }\r\n            return response;\r\n        });\r\n    }\r\n\r\n    clone() {\r\n        return new ESPConnection(this._connection.clone(), this._service, this._version);\r\n    }\r\n}\r\n\r\nexport class Service {\r\n    protected _connection: ESPConnection;\r\n    get baseUrl() { return this._connection.opts().baseUrl; }\r\n\r\n    constructor(optsConnection: IOptions | IConnection, service: string, version: string) {\r\n        this._connection = new ESPConnection(optsConnection, service, version);\r\n    }\r\n\r\n    opts() {\r\n        return this._connection.opts();\r\n    }\r\n\r\n    connection(): ESPConnection {\r\n        return this._connection.clone();\r\n    }\r\n}\r\n", "import { join, promiseTimeout, root, scopedLogger, utf8ToBase64 } from \"@hpcc-js/util\";\r\n\r\nconst logger = scopedLogger(\"comms/connection.ts\");\r\n\r\nexport type RequestType = \"post\" | \"get\" | \"jsonp\";\r\nexport type ResponseType = \"json\" | \"text\";\r\n\r\nexport type IOptionsSend = (options: IOptions, action: string, request: any, responseType: ResponseType, defaultSend: SendFunc, header?: any) => Promise<any>;\r\nexport interface IOptions {\r\n    baseUrl: string;\r\n    type?: RequestType;\r\n    userID?: string;\r\n    password?: string;\r\n    rejectUnauthorized?: boolean;\r\n    timeoutSecs?: number;\r\n    hookSend?: IOptionsSend;\r\n    encodeRequest?: boolean; // defaults to true\r\n}\r\nexport function instanceOfIOptions(object: any): object is IOptions {\r\n    return \"baseUrl\" in object;\r\n}\r\n\r\nconst DefaultOptions: IOptions = {\r\n    type: \"post\",\r\n    baseUrl: \"\",\r\n    userID: \"\",\r\n    password: \"\",\r\n    rejectUnauthorized: true,\r\n    timeoutSecs: 60\r\n};\r\n\r\nexport interface IConnection {\r\n    opts(_: Partial<IOptions>): this;\r\n    opts(): IOptions;\r\n    baseUrl: string;\r\n\r\n    send(action: string, request: any, responseType?: ResponseType): Promise<any>;\r\n    clone(): IConnection;\r\n}\r\nexport function instanceOfIConnection(object: any): object is IConnection {\r\n    return typeof object.opts === \"function\" &&\r\n        typeof object.send === \"function\" &&\r\n        typeof object.clone === \"function\";\r\n}\r\n\r\n//  comms  ---\r\n\r\nfunction encode(uriComponent: string | number | boolean, encodeRequest: boolean): string {\r\n    return (encodeRequest === undefined || encodeRequest === true) ? encodeURIComponent(uriComponent) : \"\" + uriComponent;\r\n}\r\n\r\nexport function serializeRequest(obj: any, encodeRequest: boolean = true, prefix: string = \"\"): string {\r\n    if (prefix) {\r\n        prefix += \".\";\r\n    }\r\n    if (typeof obj !== \"object\") {\r\n        return encode(obj, encodeRequest);\r\n    }\r\n\r\n    const str: string[] = [];\r\n    for (const key in obj) {\r\n        if (obj.hasOwnProperty(key)) {\r\n            if (obj[key] instanceof Array) {\r\n                //  Specific to ESP - but no REST standard exists...\r\n                let includeItemCount = false;\r\n                obj[key].forEach((row: any, i: number) => {\r\n                    if (typeof row === \"object\") {\r\n                        includeItemCount = true;\r\n                        str.push(serializeRequest(row, encodeRequest, prefix + encode(`${key}.${i}`, encodeRequest)));\r\n                    } else {\r\n                        str.push(prefix + encode(`${key}_i${i}`, encodeRequest) + \"=\" + serializeRequest(row, encodeRequest));\r\n                    }\r\n                });\r\n                if (includeItemCount) {\r\n                    str.push(prefix + encode(`${key}.itemcount`, encodeRequest) + \"=\" + obj[key].length);\r\n                }\r\n            } else if (typeof obj[key] === \"object\") {\r\n                if (obj[key] && obj[key][\"Item\"] instanceof Array) {  // Specific to ws_machine.GetTargetClusterInfo?\r\n                    str.push(serializeRequest(obj[key][\"Item\"], encodeRequest, prefix + encode(key, encodeRequest)));\r\n                    str.push(prefix + encode(`${key}.itemcount`, encodeRequest) + \"=\" + obj[key][\"Item\"].length);\r\n                } else {\r\n                    str.push(serializeRequest(obj[key], encodeRequest, prefix + encode(key, encodeRequest)));\r\n                }\r\n            } else if (obj[key] !== undefined) {\r\n                str.push(prefix + encode(key, encodeRequest) + \"=\" + encode(obj[key], encodeRequest));\r\n            } else {\r\n                str.push(prefix + encode(key, encodeRequest));\r\n            }\r\n        }\r\n    }\r\n    return str.join(\"&\");\r\n}\r\n\r\nexport function deserializeResponse(body: string) {\r\n    return JSON.parse(body);\r\n}\r\n\r\nexport function jsonp(opts: IOptions, action: string, request: any = {}, responseType: ResponseType = \"json\", header?: any): Promise<any> {\r\n    if (header) {\r\n        console.warn(\"Header attributes ignored for JSONP connections\");\r\n    }\r\n    return new Promise<any>((resolve, reject) => {\r\n        let respondedTimeout = opts.timeoutSecs! * 1000;\r\n        const respondedTick = 5000;\r\n        const callbackName = \"jsonp_callback_\" + Math.round(Math.random() * 999999);\r\n        (window as any)[callbackName] = function (response: any) {\r\n            respondedTimeout = 0;\r\n            doCallback();\r\n            resolve(responseType === \"json\" && typeof response === \"string\" ? deserializeResponse(response) : response);\r\n        };\r\n        const script = document.createElement(\"script\");\r\n        let url = join(opts.baseUrl, action);\r\n        url += url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\r\n        script.src = url + \"jsonp=\" + callbackName + \"&\" + serializeRequest(request, opts.encodeRequest);\r\n        document.body.appendChild(script);\r\n        const progress = setInterval(function () {\r\n            if (respondedTimeout <= 0) {\r\n                clearInterval(progress);\r\n            } else {\r\n                respondedTimeout -= respondedTick;\r\n                if (respondedTimeout <= 0) {\r\n                    clearInterval(progress);\r\n                    logger.error(\"Request timeout:  \" + script.src);\r\n                    doCallback();\r\n                    reject(Error(\"Request timeout:  \" + script.src));\r\n                } else {\r\n                    logger.debug(\"Request pending (\" + respondedTimeout / 1000 + \" sec):  \" + script.src);\r\n                }\r\n            }\r\n        }, respondedTick);\r\n\r\n        function doCallback() {\r\n            delete (window as any)[callbackName];\r\n            document.body.removeChild(script);\r\n        }\r\n    });\r\n}\r\n\r\nfunction authHeader(opts: IOptions): object {\r\n    return opts.userID ? { Authorization: `Basic ${utf8ToBase64(`${opts.userID}:${opts.password}`)}` } : {};\r\n}\r\n\r\n//  _omitMap is a workaround for older HPCC-Platform instances without credentials ---\r\nconst _omitMap: { [baseUrl: string]: boolean } = {};\r\nfunction doFetch(opts: IOptions, action: string, requestInit: RequestInit, headersInit: HeadersInit, responseType: string) {\r\n    headersInit = {\r\n        ...authHeader(opts),\r\n        ...headersInit\r\n    };\r\n\r\n    requestInit = {\r\n        credentials: _omitMap[opts.baseUrl] ? \"omit\" : \"include\",\r\n        ...requestInit,\r\n        headers: headersInit\r\n    };\r\n\r\n    if (opts.baseUrl.indexOf(\"https:\") === 0) {\r\n        //  NodeJS / node-fetch only  ---\r\n        if (opts.rejectUnauthorized === false && root.__hpcc_rejectUnauthorizedAgent) {\r\n            requestInit[\"dispatcher\"] = root.__hpcc_rejectUnauthorizedAgent;\r\n        } else if (root.__hpcc_trustwaveAgent) {\r\n            requestInit[\"agent\"] = root.__hpcc_trustwaveAgent;\r\n        }\r\n    }\r\n\r\n    function handleResponse(response: Response): Promise<any> {\r\n        if (response.ok) {\r\n            return responseType === \"json\" ? response.json() : response.text();\r\n        }\r\n        throw new Error(response.statusText);\r\n    }\r\n\r\n    const fetchOverride = root.__hpcc_undiciFetch ?? fetch;\r\n    return promiseTimeout(opts.timeoutSecs! * 1000, fetchOverride(join(opts.baseUrl, action), requestInit)\r\n        .then(handleResponse)\r\n        .catch(e => {\r\n            //  Try again with the opposite credentials mode  ---\r\n            requestInit.credentials = !_omitMap[opts.baseUrl] ? \"omit\" : \"include\";\r\n            return fetchOverride(join(opts.baseUrl, action), requestInit)\r\n                .then(handleResponse)\r\n                .then(responseBody => {\r\n                    _omitMap[opts.baseUrl] = !_omitMap[opts.baseUrl];  // The \"opposite\" credentials mode is known to work  ---\r\n                    return responseBody;\r\n                });\r\n        })\r\n    );\r\n}\r\n\r\nexport function post(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\r\n    if (request.upload_) {\r\n        delete request.upload_;\r\n        action += \"?upload_\";\r\n    }\r\n    let abortSignal;\r\n    if (request.abortSignal_) {\r\n        abortSignal = request.abortSignal_;\r\n        delete request.abortSignal_;\r\n    }\r\n    return doFetch(opts, action, {\r\n        method: \"post\",\r\n        body: serializeRequest(request, opts.encodeRequest),\r\n        signal: abortSignal\r\n    }, {\r\n        \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n        ...header\r\n    } as any, responseType);\r\n}\r\n\r\nexport function get(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\r\n    let abortSignal;\r\n    if (request.abortSignal_) {\r\n        abortSignal = request.abortSignal_;\r\n        delete request.abortSignal_;\r\n    }\r\n    return doFetch(opts, `${action}?${serializeRequest(request, opts.encodeRequest)}`, {\r\n        method: \"get\",\r\n        signal: abortSignal\r\n    }, {\r\n        ...header\r\n    } as any, responseType);\r\n}\r\n\r\nexport type SendFunc = (opts: IOptions, action: string, request: any, responseType: ResponseType, header?: any) => Promise<any>;\r\nexport function send(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\r\n    let retVal: Promise<any>;\r\n    switch (opts.type) {\r\n        case \"jsonp\":\r\n            retVal = jsonp(opts, action, request, responseType, header);\r\n            break;\r\n        case \"get\":\r\n            retVal = get(opts, action, request, responseType, header);\r\n            break;\r\n        case \"post\":\r\n        default:\r\n            retVal = post(opts, action, request, responseType, header);\r\n            break;\r\n    }\r\n    return retVal;\r\n}\r\n\r\nlet hookedSend: SendFunc = send;\r\nexport function hookSend(newSend?: SendFunc): SendFunc {\r\n    const retVal = hookedSend;\r\n    if (newSend) {\r\n        hookedSend = newSend;\r\n    }\r\n    return retVal;\r\n}\r\n\r\nexport class Connection implements IConnection {\r\n    protected _opts: IOptions;\r\n    get baseUrl() { return this._opts.baseUrl; }\r\n\r\n    constructor(opts: IOptions) {\r\n        this.opts(opts);\r\n    }\r\n\r\n    //  IConnection  ---\r\n    opts(_: Partial<IOptions>): this;\r\n    opts(): IOptions;\r\n    opts(_?: Partial<IOptions>): this | IOptions {\r\n        if (arguments.length === 0) return this._opts;\r\n        this._opts = { ...DefaultOptions, ..._ };\r\n        return this;\r\n    }\r\n\r\n    send(action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\r\n        if (this._opts.hookSend) {\r\n            return this._opts.hookSend(this._opts, action, request, responseType, hookedSend, header);\r\n        }\r\n        return hookedSend(this._opts, action, request, responseType, header);\r\n    }\r\n\r\n    clone() {\r\n        return new Connection(this.opts());\r\n    }\r\n}\r\n\r\nexport type IConnectionFactory = (opts: IOptions) => IConnection;\r\nexport let createConnection: IConnectionFactory = function (opts: IOptions): IConnection {\r\n    return new Connection(opts);\r\n};\r\n\r\nexport function setTransportFactory(newFunc: IConnectionFactory): IConnectionFactory {\r\n    const retVal = createConnection;\r\n    createConnection = newFunc;\r\n    return retVal;\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace FileSpray {\r\n\r\n    export type int = number;\r\n    export type double = number;\r\n    export type base64Binary = string;\r\n    export type long = number;\r\n    export type dateTime = string;\r\n\r\n    export enum DFUWUActions {\r\n        Delete = \"Delete\",\r\n        Protect = \"Protect\",\r\n        Unprotect = \"Unprotect\",\r\n        Restore = \"Restore\",\r\n        SetToFailed = \"SetToFailed\",\r\n        Archive = \"Archive\"\r\n    }\r\n\r\n    export interface AbortDFUWorkunit {\r\n        wuid: string;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface AbortDFUWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface Copy {\r\n        sourceLogicalName: string;\r\n        destGroup: string;\r\n        destGroupRoxie: string;\r\n        destLogicalName: string;\r\n        sourceDali: string;\r\n        srcusername: string;\r\n        srcpassword: string;\r\n        overwrite: boolean;\r\n        ensure: boolean;\r\n        replicate: boolean;\r\n        ReplicateOffset: int;\r\n        maxConnections: int;\r\n        throttle: int;\r\n        transferBufferSize: int;\r\n        nosplit: boolean;\r\n        norecover: boolean;\r\n        compress: boolean;\r\n        Wrap: boolean;\r\n        Multicopy: boolean;\r\n        SourceDiffKeyName: string;\r\n        DestDiffKeyName: string;\r\n        superCopy: boolean;\r\n        push: boolean;\r\n        pull: boolean;\r\n        ifnewer: boolean;\r\n        noCommon: boolean;\r\n        encrypt: string;\r\n        decrypt: string;\r\n        preserveCompression: boolean;\r\n        DFUServerQueue: string;\r\n        ExpireDays: int;\r\n        KeyCompression: string;\r\n    }\r\n\r\n    export interface CopyResponse {\r\n        Exceptions: Exceptions;\r\n        result: string;\r\n    }\r\n\r\n    export interface CreateDFUPublisherWorkunit {\r\n        DFUServerQueue: string;\r\n    }\r\n\r\n    export interface result {\r\n        ID: string;\r\n        DFUServerName: string;\r\n        ClusterName: string;\r\n        JobName: string;\r\n        Queue: string;\r\n        User: string;\r\n        isProtected: boolean;\r\n        Command: int;\r\n        CommandMessage: string;\r\n        PercentDone: int;\r\n        SecsLeft: int;\r\n        ProgressMessage: string;\r\n        SummaryMessage: string;\r\n        State: int;\r\n        SourceLogicalName: string;\r\n        SourceIP: string;\r\n        SourceFilePath: string;\r\n        SourceDali: string;\r\n        SourceRecordSize: int;\r\n        SourceFormat: int;\r\n        RowTag: string;\r\n        SourceNumParts: int;\r\n        SourceDirectory: string;\r\n        DestLogicalName: string;\r\n        DestGroupName: string;\r\n        DestDirectory: string;\r\n        DestIP: string;\r\n        DestFilePath: string;\r\n        DestFormat: int;\r\n        DestNumParts: int;\r\n        DestRecordSize: int;\r\n        Replicate: boolean;\r\n        Overwrite: boolean;\r\n        Compress: boolean;\r\n        SourceCsvSeparate: string;\r\n        SourceCsvQuote: string;\r\n        SourceCsvTerminate: string;\r\n        SourceCsvEscape: string;\r\n        TimeStarted: string;\r\n        TimeStopped: string;\r\n        StateMessage: string;\r\n        MonitorEventName: string;\r\n        MonitorSub: boolean;\r\n        MonitorShotLimit: int;\r\n        SourceDiffKeyName: string;\r\n        DestDiffKeyName: string;\r\n        Archived: boolean;\r\n        encrypt: string;\r\n        decrypt: string;\r\n        failIfNoSourceFile: boolean;\r\n        recordStructurePresent: boolean;\r\n        quotedTerminator: boolean;\r\n        preserveCompression: boolean;\r\n        expireDays: int;\r\n        PreserveFileParts: boolean;\r\n        FileAccessCost: double;\r\n        KbPerSecAve: int;\r\n        KbPerSec: int;\r\n    }\r\n\r\n    export interface CreateDFUPublisherWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n        result: result;\r\n    }\r\n\r\n    export interface CreateDFUWorkunit {\r\n        DFUServerQueue: string;\r\n    }\r\n\r\n    export interface CreateDFUWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n        result: result;\r\n    }\r\n\r\n    export interface DFUWUFileRequest {\r\n        Wuid?: string;\r\n        Type?: string;\r\n        PlainText?: string;\r\n    }\r\n\r\n    export interface DFUWUFileResponse {\r\n        Exceptions: Exceptions;\r\n        file: string;\r\n    }\r\n\r\n    export interface DFUWUSearchRequest {\r\n\r\n    }\r\n\r\n    export interface ClusterNames {\r\n        ClusterName: string[];\r\n    }\r\n\r\n    export interface DFUWUSearchResponse {\r\n        Exceptions: Exceptions;\r\n        ClusterNames: ClusterNames;\r\n    }\r\n\r\n    export interface wuids {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface DFUWorkunitsActionRequest {\r\n        wuids?: wuids;\r\n        Type?: DFUWUActions;\r\n    }\r\n\r\n    export interface DFUActionResult {\r\n        ID: string;\r\n        Action: string;\r\n        Result: string;\r\n    }\r\n\r\n    export interface DFUActionResults {\r\n        DFUActionResult: DFUActionResult[];\r\n    }\r\n\r\n    export interface DFUWorkunitsActionResponse {\r\n        Exceptions: Exceptions;\r\n        FirstColumn: string;\r\n        DFUActionResults: DFUActionResults;\r\n    }\r\n\r\n    export interface DeleteDFUWorkunit {\r\n        wuid: string;\r\n    }\r\n\r\n    export interface DeleteDFUWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n        result: boolean;\r\n    }\r\n\r\n    export interface DeleteDFUWorkunits {\r\n        wuids: wuids;\r\n    }\r\n\r\n    export interface DeleteDFUWorkunitsResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface Names {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface DeleteDropZoneFilesRequest {\r\n        DropZoneName?: string;\r\n        NetAddress?: string;\r\n        Path?: string;\r\n        OS?: string;\r\n        Names?: Names;\r\n    }\r\n\r\n    export interface Despray {\r\n        destGroup: string;\r\n        sourceLogicalName: string;\r\n        destIP: string;\r\n        destPath: string;\r\n        destPlane: string;\r\n        dstxml: base64Binary;\r\n        overwrite: boolean;\r\n        maxConnections: int;\r\n        throttle: int;\r\n        transferBufferSize: int;\r\n        splitprefix: string;\r\n        norecover: boolean;\r\n        wrap: boolean;\r\n        multiCopy: boolean;\r\n        SingleConnection: boolean;\r\n        DFUServerQueue: string;\r\n        compress: boolean;\r\n        encrypt: string;\r\n        decrypt: string;\r\n    }\r\n\r\n    export interface DesprayResponse {\r\n        Exceptions: Exceptions;\r\n        wuid: string;\r\n    }\r\n\r\n    export interface DfuMonitorRequest {\r\n        EventName?: string;\r\n        LogicalName?: string;\r\n        Ip?: string;\r\n        Filename?: string;\r\n        Sub?: boolean;\r\n        ShotLimit?: int;\r\n    }\r\n\r\n    export interface DfuMonitorResponse {\r\n        Exceptions: Exceptions;\r\n        wuid: string;\r\n    }\r\n\r\n    export interface DropZoneFileSearchRequest {\r\n        DropZoneName?: string;\r\n        Server?: string;\r\n        ECLWatchVisibleOnly?: boolean;\r\n        NameFilter?: string;\r\n    }\r\n\r\n    export interface PhysicalFileStruct {\r\n        name: string;\r\n        Server: string;\r\n        isDir: boolean;\r\n        filesize: long;\r\n        modifiedtime: string;\r\n        Path: string;\r\n        Files: Files;\r\n    }\r\n\r\n    export interface Files {\r\n        PhysicalFileStruct: PhysicalFileStruct[];\r\n    }\r\n\r\n    export interface DropZoneFileSearchResponse {\r\n        Exceptions: Exceptions;\r\n        Files: Files;\r\n        Warning: string;\r\n    }\r\n\r\n    export interface DropZoneFilesRequest {\r\n        DropZoneName?: string;\r\n        NetAddress?: string;\r\n        Path?: string;\r\n        OS?: string;\r\n        Subfolder?: string;\r\n        ECLWatchVisibleOnly?: boolean;\r\n        DirectoryOnly?: boolean;\r\n    }\r\n\r\n    export interface DropZone {\r\n        Name: string;\r\n        NetAddress: string;\r\n        Path: string;\r\n        Computer: string;\r\n        Linux: string;\r\n    }\r\n\r\n    export interface DropZones {\r\n        DropZone: DropZone[];\r\n    }\r\n\r\n    export interface DropZoneFilesResponse {\r\n        Exceptions: Exceptions;\r\n        DropZoneName: string;\r\n        NetAddress: string;\r\n        Path: string;\r\n        OS: int;\r\n        ECLWatchVisibleOnly: boolean;\r\n        DropZones: DropZones;\r\n        Files: Files;\r\n    }\r\n\r\n    export interface EchoDateTime {\r\n        dt: dateTime;\r\n    }\r\n\r\n    export interface EchoDateTimeResponse {\r\n        result: dateTime;\r\n    }\r\n\r\n    export interface FileListRequest {\r\n        DropZoneName?: string;\r\n        Netaddr?: string;\r\n        Path?: string;\r\n        Mask?: string;\r\n        OS?: string;\r\n        DirectoryOnly?: boolean;\r\n    }\r\n\r\n    export interface files {\r\n        PhysicalFileStruct: PhysicalFileStruct[];\r\n    }\r\n\r\n    export interface FileListResponse {\r\n        Exceptions: Exceptions;\r\n        Netaddr: string;\r\n        Path: string;\r\n        Mask: string;\r\n        OS: int;\r\n        DirectoryOnly: boolean;\r\n        AcceptLanguage: string;\r\n        files: files;\r\n    }\r\n\r\n    export interface GetDFUExceptions {\r\n        wuid: string;\r\n    }\r\n\r\n    export interface DFUException {\r\n        Code: int;\r\n        Message: string;\r\n    }\r\n\r\n    export interface result2 {\r\n        DFUException: DFUException[];\r\n    }\r\n\r\n    export interface GetDFUExceptionsResponse {\r\n        Exceptions: Exceptions;\r\n        result: result2;\r\n    }\r\n\r\n    export interface ProgressRequest {\r\n        wuid?: string;\r\n    }\r\n\r\n    export interface ProgressResponse {\r\n        Exceptions: Exceptions;\r\n        wuid: string;\r\n        PercentDone: int;\r\n        SecsLeft: int;\r\n        KbPerSecAve: int;\r\n        KbPerSec: int;\r\n        SlavesDone: int;\r\n        TimeTaken: string;\r\n        ProgressMessage: string;\r\n        SummaryMessage: string;\r\n        State: string;\r\n    }\r\n\r\n    export interface GetDFUServerQueuesRequest {\r\n        DFUServerName?: string;\r\n    }\r\n\r\n    export interface GetDFUServerQueuesResponse {\r\n        Exceptions: Exceptions;\r\n        Names: Names;\r\n    }\r\n\r\n    export interface GetDFUWorkunit {\r\n        wuid: string;\r\n    }\r\n\r\n    export interface GetDFUWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n        result: result;\r\n        AutoRefresh: int;\r\n    }\r\n\r\n    export interface GetDFUWorkunits {\r\n        Wuid: string;\r\n        Owner: string;\r\n        Cluster: string;\r\n        StateReq: string;\r\n        Type: string;\r\n        Jobname: string;\r\n        PageSize: long;\r\n        CurrentPage: int;\r\n        PageStartFrom: long;\r\n        Sortby: string;\r\n        Descending: boolean;\r\n        CacheHint: long;\r\n        ParentWuid: string;\r\n        PublisherWuid: string;\r\n        includeProgressMessages: boolean;\r\n        includeTimings: boolean;\r\n        includeTransferRate: boolean;\r\n    }\r\n\r\n    export interface DFUWorkunit {\r\n        ID: string;\r\n        DFUServerName: string;\r\n        ClusterName: string;\r\n        JobName: string;\r\n        Queue: string;\r\n        User: string;\r\n        isProtected: boolean;\r\n        Command: int;\r\n        CommandMessage: string;\r\n        PercentDone: int;\r\n        SecsLeft: int;\r\n        ProgressMessage: string;\r\n        SummaryMessage: string;\r\n        State: int;\r\n        SourceLogicalName: string;\r\n        SourceIP: string;\r\n        SourceFilePath: string;\r\n        SourceDali: string;\r\n        SourceRecordSize: int;\r\n        SourceFormat: int;\r\n        RowTag: string;\r\n        SourceNumParts: int;\r\n        SourceDirectory: string;\r\n        DestLogicalName: string;\r\n        DestGroupName: string;\r\n        DestDirectory: string;\r\n        DestIP: string;\r\n        DestFilePath: string;\r\n        DestFormat: int;\r\n        DestNumParts: int;\r\n        DestRecordSize: int;\r\n        Replicate: boolean;\r\n        Overwrite: boolean;\r\n        Compress: boolean;\r\n        SourceCsvSeparate: string;\r\n        SourceCsvQuote: string;\r\n        SourceCsvTerminate: string;\r\n        SourceCsvEscape: string;\r\n        TimeStarted: string;\r\n        TimeStopped: string;\r\n        StateMessage: string;\r\n        MonitorEventName: string;\r\n        MonitorSub: boolean;\r\n        MonitorShotLimit: int;\r\n        SourceDiffKeyName: string;\r\n        DestDiffKeyName: string;\r\n        Archived: boolean;\r\n        encrypt: string;\r\n        decrypt: string;\r\n        failIfNoSourceFile: boolean;\r\n        recordStructurePresent: boolean;\r\n        quotedTerminator: boolean;\r\n        preserveCompression: boolean;\r\n        expireDays: int;\r\n        PreserveFileParts: boolean;\r\n        FileAccessCost: double;\r\n        KbPerSecAve: int;\r\n        KbPerSec: int;\r\n    }\r\n\r\n    export interface results {\r\n        DFUWorkunit: DFUWorkunit[];\r\n    }\r\n\r\n    export interface GetDFUWorkunitsResponse {\r\n        Exceptions: Exceptions;\r\n        results: results;\r\n        Type: string;\r\n        Owner: string;\r\n        Cluster: string;\r\n        StateReq: string;\r\n        PageSize: long;\r\n        PrevPage: long;\r\n        NextPage: long;\r\n        LastPage: long;\r\n        NumWUs: long;\r\n        PageStartFrom: long;\r\n        PageEndAt: long;\r\n        First: boolean;\r\n        Sortby: string;\r\n        Descending: boolean;\r\n        BasicQuery: string;\r\n        Filters: string;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface GetRemoteTargetsRequest {\r\n\r\n    }\r\n\r\n    export interface TargetNames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface GetRemoteTargetsResponse {\r\n        Exceptions: Exceptions;\r\n        TargetNames: TargetNames;\r\n        AllowForeign: boolean;\r\n    }\r\n\r\n    export interface GetSprayTargetsRequest {\r\n\r\n    }\r\n\r\n    export interface GroupNode {\r\n        Name: string;\r\n        ClusterType: string;\r\n        ReplicateOutputs: boolean;\r\n    }\r\n\r\n    export interface GroupNodes {\r\n        GroupNode: GroupNode[];\r\n    }\r\n\r\n    export interface GetSprayTargetsResponse {\r\n        Exceptions: Exceptions;\r\n        GroupNodes: GroupNodes;\r\n    }\r\n\r\n    export interface OpenSaveRequest {\r\n        Location?: string;\r\n        Path?: string;\r\n        Name?: string;\r\n        Type?: string;\r\n        DateTime?: string;\r\n        BinaryFile?: boolean;\r\n    }\r\n\r\n    export interface OpenSaveResponse {\r\n        Exceptions: Exceptions;\r\n        Location: string;\r\n        Path: string;\r\n        Name: string;\r\n        Type: string;\r\n        DateTime: string;\r\n        Viewable: boolean;\r\n    }\r\n\r\n    export interface FileSprayPingRequest {\r\n\r\n    }\r\n\r\n    export interface FileSprayPingResponse {\r\n\r\n    }\r\n\r\n    export interface Rename {\r\n        srcname: string;\r\n        dstname: string;\r\n        overwrite: boolean;\r\n        DFUServerQueue: string;\r\n    }\r\n\r\n    export interface RenameResponse {\r\n        Exceptions: Exceptions;\r\n        wuid: string;\r\n    }\r\n\r\n    export interface Replicate {\r\n        sourceLogicalName: string;\r\n        replicateOffset: int;\r\n        cluster: string;\r\n        repeatLast: boolean;\r\n        onlyRepeated: boolean;\r\n        DFUServerQueue: string;\r\n    }\r\n\r\n    export interface ReplicateResponse {\r\n        Exceptions: Exceptions;\r\n        wuid: string;\r\n    }\r\n\r\n    export interface ShowResultRequest {\r\n        Result?: string;\r\n    }\r\n\r\n    export interface ShowResultResponse {\r\n        Exceptions: Exceptions;\r\n        Result: string;\r\n    }\r\n\r\n    export interface SprayFixed {\r\n        sourceIP: string;\r\n        sourcePlane: string;\r\n        sourcePath: string;\r\n        srcxml: base64Binary;\r\n        sourceFormat: string;\r\n        sourceRecordSize: int;\r\n        destGroup: string;\r\n        destLogicalName: string;\r\n        destNumParts: int;\r\n        overwrite: boolean;\r\n        replicate: boolean;\r\n        ReplicateOffset: int;\r\n        maxConnections: int;\r\n        throttle: int;\r\n        transferBufferSize: int;\r\n        prefix: string;\r\n        nosplit: boolean;\r\n        norecover: boolean;\r\n        compress: boolean;\r\n        push: boolean;\r\n        pull: boolean;\r\n        noCommon: boolean;\r\n        encrypt: string;\r\n        decrypt: string;\r\n        wrap: boolean;\r\n        failIfNoSourceFile: boolean;\r\n        recordStructurePresent: boolean;\r\n        quotedTerminator: boolean;\r\n        expireDays: int;\r\n        DFUServerQueue: string;\r\n    }\r\n\r\n    export interface SprayFixedResponse {\r\n        Exceptions: Exceptions;\r\n        wuid: string;\r\n    }\r\n\r\n    export interface SprayVariable {\r\n        sourceIP: string;\r\n        sourcePlane: string;\r\n        sourcePath: string;\r\n        srcxml: base64Binary;\r\n        sourceMaxRecordSize: int;\r\n        sourceFormat: int;\r\n        NoSourceCsvSeparator: boolean;\r\n        sourceCsvSeparate: string;\r\n        sourceCsvTerminate: string;\r\n        sourceCsvQuote: string;\r\n        sourceCsvEscape: string;\r\n        sourceRowTag: string;\r\n        destGroup: string;\r\n        destLogicalName: string;\r\n        destNumParts: int;\r\n        overwrite: boolean;\r\n        replicate: boolean;\r\n        ReplicateOffset: int;\r\n        maxConnections: int;\r\n        throttle: int;\r\n        transferBufferSize: int;\r\n        prefix: string;\r\n        nosplit: boolean;\r\n        norecover: boolean;\r\n        compress: boolean;\r\n        push: boolean;\r\n        pull: boolean;\r\n        noCommon: boolean;\r\n        encrypt: string;\r\n        decrypt: string;\r\n        failIfNoSourceFile: boolean;\r\n        recordStructurePresent: boolean;\r\n        quotedTerminator: boolean;\r\n        sourceRowPath: string;\r\n        isJSON: boolean;\r\n        expireDays: int;\r\n        DFUServerQueue: string;\r\n        srcUsername: string;\r\n        srcPassword: string;\r\n    }\r\n\r\n    export interface SprayResponse {\r\n        Exceptions: Exceptions;\r\n        wuid: string;\r\n    }\r\n\r\n    export interface SubmitDFUWorkunit {\r\n        wuid: string;\r\n    }\r\n\r\n    export interface SubmitDFUWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface wu {\r\n        ID: string;\r\n        DFUServerName: string;\r\n        ClusterName: string;\r\n        JobName: string;\r\n        Queue: string;\r\n        User: string;\r\n        isProtected: boolean;\r\n        Command: int;\r\n        CommandMessage: string;\r\n        PercentDone: int;\r\n        SecsLeft: int;\r\n        ProgressMessage: string;\r\n        SummaryMessage: string;\r\n        State: int;\r\n        SourceLogicalName: string;\r\n        SourceIP: string;\r\n        SourceFilePath: string;\r\n        SourceDali: string;\r\n        SourceRecordSize: int;\r\n        SourceFormat: int;\r\n        RowTag: string;\r\n        SourceNumParts: int;\r\n        SourceDirectory: string;\r\n        DestLogicalName: string;\r\n        DestGroupName: string;\r\n        DestDirectory: string;\r\n        DestIP: string;\r\n        DestFilePath: string;\r\n        DestFormat: int;\r\n        DestNumParts: int;\r\n        DestRecordSize: int;\r\n        Replicate: boolean;\r\n        Overwrite: boolean;\r\n        Compress: boolean;\r\n        SourceCsvSeparate: string;\r\n        SourceCsvQuote: string;\r\n        SourceCsvTerminate: string;\r\n        SourceCsvEscape: string;\r\n        TimeStarted: string;\r\n        TimeStopped: string;\r\n        StateMessage: string;\r\n        MonitorEventName: string;\r\n        MonitorSub: boolean;\r\n        MonitorShotLimit: int;\r\n        SourceDiffKeyName: string;\r\n        DestDiffKeyName: string;\r\n        Archived: boolean;\r\n        encrypt: string;\r\n        decrypt: string;\r\n        failIfNoSourceFile: boolean;\r\n        recordStructurePresent: boolean;\r\n        quotedTerminator: boolean;\r\n        preserveCompression: boolean;\r\n        expireDays: int;\r\n        PreserveFileParts: boolean;\r\n        FileAccessCost: double;\r\n        KbPerSecAve: int;\r\n        KbPerSec: int;\r\n    }\r\n\r\n    export interface UpdateDFUWorkunit {\r\n        wu: wu;\r\n        ClusterOrig: string;\r\n        JobNameOrig: string;\r\n        isProtectedOrig: boolean;\r\n        StateOrig: int;\r\n    }\r\n\r\n    export interface UpdateDFUWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n}\r\n\r\nexport class FileSprayServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"FileSpray\", \"1.27\");\r\n    }\r\n\r\n    AbortDFUWorkunit(request: Partial<FileSpray.AbortDFUWorkunit>): Promise<FileSpray.AbortDFUWorkunitResponse> {\r\n        return this._connection.send(\"AbortDFUWorkunit\", request, \"json\", false, undefined, \"AbortDFUWorkunitResponse\");\r\n    }\r\n\r\n    Copy(request: Partial<FileSpray.Copy>): Promise<FileSpray.CopyResponse> {\r\n        return this._connection.send(\"Copy\", request, \"json\", false, undefined, \"CopyResponse\");\r\n    }\r\n\r\n    CreateDFUPublisherWorkunit(request: Partial<FileSpray.CreateDFUPublisherWorkunit>): Promise<FileSpray.CreateDFUPublisherWorkunitResponse> {\r\n        return this._connection.send(\"CreateDFUPublisherWorkunit\", request, \"json\", false, undefined, \"CreateDFUPublisherWorkunitResponse\");\r\n    }\r\n\r\n    CreateDFUWorkunit(request: Partial<FileSpray.CreateDFUWorkunit>): Promise<FileSpray.CreateDFUWorkunitResponse> {\r\n        return this._connection.send(\"CreateDFUWorkunit\", request, \"json\", false, undefined, \"CreateDFUWorkunitResponse\");\r\n    }\r\n\r\n    DFUWUFile(request: Partial<FileSpray.DFUWUFileRequest>): Promise<FileSpray.DFUWUFileResponse> {\r\n        return this._connection.send(\"DFUWUFile\", request, \"json\", false, undefined, \"DFUWUFileResponse\");\r\n    }\r\n\r\n    DFUWUSearch(request: Partial<FileSpray.DFUWUSearchRequest>): Promise<FileSpray.DFUWUSearchResponse> {\r\n        return this._connection.send(\"DFUWUSearch\", request, \"json\", false, undefined, \"DFUWUSearchResponse\");\r\n    }\r\n\r\n    DFUWorkunitsAction(request: Partial<FileSpray.DFUWorkunitsActionRequest>): Promise<FileSpray.DFUWorkunitsActionResponse> {\r\n        return this._connection.send(\"DFUWorkunitsAction\", request, \"json\", false, undefined, \"DFUWorkunitsActionResponse\");\r\n    }\r\n\r\n    DeleteDFUWorkunit(request: Partial<FileSpray.DeleteDFUWorkunit>): Promise<FileSpray.DeleteDFUWorkunitResponse> {\r\n        return this._connection.send(\"DeleteDFUWorkunit\", request, \"json\", false, undefined, \"DeleteDFUWorkunitResponse\");\r\n    }\r\n\r\n    DeleteDFUWorkunits(request: Partial<FileSpray.DeleteDFUWorkunits>): Promise<FileSpray.DeleteDFUWorkunitsResponse> {\r\n        return this._connection.send(\"DeleteDFUWorkunits\", request, \"json\", false, undefined, \"DeleteDFUWorkunitsResponse\");\r\n    }\r\n\r\n    DeleteDropZoneFiles(request: Partial<FileSpray.DeleteDropZoneFilesRequest>): Promise<FileSpray.DFUWorkunitsActionResponse> {\r\n        return this._connection.send(\"DeleteDropZoneFiles\", request, \"json\", false, undefined, \"DFUWorkunitsActionResponse\");\r\n    }\r\n\r\n    Despray(request: Partial<FileSpray.Despray>): Promise<FileSpray.DesprayResponse> {\r\n        return this._connection.send(\"Despray\", request, \"json\", false, undefined, \"DesprayResponse\");\r\n    }\r\n\r\n    DfuMonitor(request: Partial<FileSpray.DfuMonitorRequest>): Promise<FileSpray.DfuMonitorResponse> {\r\n        return this._connection.send(\"DfuMonitor\", request, \"json\", false, undefined, \"DfuMonitorResponse\");\r\n    }\r\n\r\n    DropZoneFileSearch(request: Partial<FileSpray.DropZoneFileSearchRequest>): Promise<FileSpray.DropZoneFileSearchResponse> {\r\n        return this._connection.send(\"DropZoneFileSearch\", request, \"json\", false, undefined, \"DropZoneFileSearchResponse\");\r\n    }\r\n\r\n    DropZoneFiles(request: Partial<FileSpray.DropZoneFilesRequest>): Promise<FileSpray.DropZoneFilesResponse> {\r\n        return this._connection.send(\"DropZoneFiles\", request, \"json\", false, undefined, \"DropZoneFilesResponse\");\r\n    }\r\n\r\n    EchoDateTime(request: Partial<FileSpray.EchoDateTime>): Promise<FileSpray.EchoDateTimeResponse> {\r\n        return this._connection.send(\"EchoDateTime\", request, \"json\", false, undefined, \"EchoDateTimeResponse\");\r\n    }\r\n\r\n    FileList(request: Partial<FileSpray.FileListRequest>): Promise<FileSpray.FileListResponse> {\r\n        return this._connection.send(\"FileList\", request, \"json\", false, undefined, \"FileListResponse\");\r\n    }\r\n\r\n    GetDFUExceptions(request: Partial<FileSpray.GetDFUExceptions>): Promise<FileSpray.GetDFUExceptionsResponse> {\r\n        return this._connection.send(\"GetDFUExceptions\", request, \"json\", false, undefined, \"GetDFUExceptionsResponse\");\r\n    }\r\n\r\n    GetDFUProgress(request: Partial<FileSpray.ProgressRequest>): Promise<FileSpray.ProgressResponse> {\r\n        return this._connection.send(\"GetDFUProgress\", request, \"json\", false, undefined, \"ProgressResponse\");\r\n    }\r\n\r\n    GetDFUServerQueues(request: Partial<FileSpray.GetDFUServerQueuesRequest>): Promise<FileSpray.GetDFUServerQueuesResponse> {\r\n        return this._connection.send(\"GetDFUServerQueues\", request, \"json\", false, undefined, \"GetDFUServerQueuesResponse\");\r\n    }\r\n\r\n    GetDFUWorkunit(request: Partial<FileSpray.GetDFUWorkunit>): Promise<FileSpray.GetDFUWorkunitResponse> {\r\n        return this._connection.send(\"GetDFUWorkunit\", request, \"json\", false, undefined, \"GetDFUWorkunitResponse\");\r\n    }\r\n\r\n    GetDFUWorkunits(request: Partial<FileSpray.GetDFUWorkunits>): Promise<FileSpray.GetDFUWorkunitsResponse> {\r\n        return this._connection.send(\"GetDFUWorkunits\", request, \"json\", false, undefined, \"GetDFUWorkunitsResponse\");\r\n    }\r\n\r\n    GetRemoteTargets(request: Partial<FileSpray.GetRemoteTargetsRequest>): Promise<FileSpray.GetRemoteTargetsResponse> {\r\n        return this._connection.send(\"GetRemoteTargets\", request, \"json\", false, undefined, \"GetRemoteTargetsResponse\");\r\n    }\r\n\r\n    GetSprayTargets(request: Partial<FileSpray.GetSprayTargetsRequest>): Promise<FileSpray.GetSprayTargetsResponse> {\r\n        return this._connection.send(\"GetSprayTargets\", request, \"json\", false, undefined, \"GetSprayTargetsResponse\");\r\n    }\r\n\r\n    OpenSave(request: Partial<FileSpray.OpenSaveRequest>): Promise<FileSpray.OpenSaveResponse> {\r\n        return this._connection.send(\"OpenSave\", request, \"json\", false, undefined, \"OpenSaveResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<FileSpray.FileSprayPingRequest>): Promise<FileSpray.FileSprayPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"FileSprayPingResponse\");\r\n    }\r\n\r\n    Rename(request: Partial<FileSpray.Rename>): Promise<FileSpray.RenameResponse> {\r\n        return this._connection.send(\"Rename\", request, \"json\", false, undefined, \"RenameResponse\");\r\n    }\r\n\r\n    Replicate(request: Partial<FileSpray.Replicate>): Promise<FileSpray.ReplicateResponse> {\r\n        return this._connection.send(\"Replicate\", request, \"json\", false, undefined, \"ReplicateResponse\");\r\n    }\r\n\r\n    ShowResult(request: Partial<FileSpray.ShowResultRequest>): Promise<FileSpray.ShowResultResponse> {\r\n        return this._connection.send(\"ShowResult\", request, \"json\", false, undefined, \"ShowResultResponse\");\r\n    }\r\n\r\n    SprayFixed(request: Partial<FileSpray.SprayFixed>): Promise<FileSpray.SprayFixedResponse> {\r\n        return this._connection.send(\"SprayFixed\", request, \"json\", false, undefined, \"SprayFixedResponse\");\r\n    }\r\n\r\n    SprayVariable(request: Partial<FileSpray.SprayVariable>): Promise<FileSpray.SprayResponse> {\r\n        return this._connection.send(\"SprayVariable\", request, \"json\", false, undefined, \"SprayResponse\");\r\n    }\r\n\r\n    SubmitDFUWorkunit(request: Partial<FileSpray.SubmitDFUWorkunit>): Promise<FileSpray.SubmitDFUWorkunitResponse> {\r\n        return this._connection.send(\"SubmitDFUWorkunit\", request, \"json\", false, undefined, \"SubmitDFUWorkunitResponse\");\r\n    }\r\n\r\n    UpdateDFUWorkunit(request: Partial<FileSpray.UpdateDFUWorkunit>): Promise<FileSpray.UpdateDFUWorkunitResponse> {\r\n        return this._connection.send(\"UpdateDFUWorkunit\", request, \"json\", false, undefined, \"UpdateDFUWorkunitResponse\");\r\n    }\r\n\r\n}\r\n", "import { FileSprayServiceBase, FileSpray } from \"./wsdl/FileSpray/v1.27/FileSpray.ts\";\r\n\r\nexport {\r\n    FileSpray\r\n};\r\n\r\ntype UpdateDFUWorkunitMinusWU = Omit<FileSpray.UpdateDFUWorkunit, \"wu\">;\r\ntype UpdateDFUWorkunitWU = FileSpray.UpdateDFUWorkunit[\"wu\"];\r\n\r\nexport enum FileSprayStates {\r\n    unknown = 0,\r\n    scheduled,\r\n    queued,\r\n    started,\r\n    aborted,\r\n    failed,\r\n    finished,\r\n    monitoring,\r\n    aborting,\r\n    notfound = 999\r\n}\r\n\r\n// defined in https://github.com/hpcc-systems/HPCC-Platform/blob/master/dali/dfu/dfuwu.cpp#L102-L121\r\nexport enum DFUWUTypes {\r\n    Copy = \"copy\",\r\n    Remove = \"remove\",\r\n    Move = \"move\",\r\n    Rename = \"rename\",\r\n    Replicate = \"replicate\",\r\n    Import = \"import\",\r\n    Export = \"export\",\r\n    /*\r\n     * These seem to not be valid with respect to filtering DFU WUs,\r\n     * but leaving them here because they exist in the dfuwu.cpp struct\r\n     *\r\n     * Add = \"add\",\r\n     * Transfer = \"transfer\",\r\n     * Savemap = \"savemap\",\r\n     * Addgroup = \"addgroup\",\r\n     * Server = \"server\",\r\n     */\r\n    Monitor = \"monitor\",\r\n    Copymerge = \"copymerge\",\r\n    Supercopy = \"supercopy\",\r\n    Publish = \"publish\",\r\n}\r\n\r\nexport interface UpdateDFUWorkunitEx extends UpdateDFUWorkunitMinusWU {\r\n    wu?: Partial<UpdateDFUWorkunitWU>\r\n}\r\n\r\nexport class FileSprayService extends FileSprayServiceBase {\r\n\r\n    DFUWUFileEx(request: FileSpray.DFUWUFileRequest): Promise<string> {\r\n        return this._connection.send(\"DFUWUFile\", request, \"text\");\r\n    }\r\n\r\n    SprayFixedEx(request: Partial<FileSpray.SprayFixed>): Promise<FileSpray.SprayFixedResponse> {\r\n        return this._connection.send(\"SprayFixed\", request);\r\n    }\r\n\r\n    SprayVariableEx(request: Partial<FileSpray.SprayVariable>): Promise<FileSpray.SprayResponse> {\r\n        return this._connection.send(\"SprayVariable\", request, \"json\", false, null, \"SprayResponse\");\r\n    }\r\n\r\n    DesprayEx(request: Partial<FileSpray.Despray>): Promise<FileSpray.DesprayResponse> {\r\n        return this._connection.send(\"Despray\", request);\r\n    }\r\n\r\n    UpdateDFUWorkunitEx(request: Partial<UpdateDFUWorkunitEx>): Promise<FileSpray.UpdateDFUWorkunitResponse> {\r\n        return this._connection.send(\"UpdateDFUWorkunit\", request, \"json\", false, undefined, \"UpdateDFUWorkunitResponse\");\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsAccess {\r\n\r\n    export type int = number;\r\n    export type unsignedInt = number;\r\n    export type long = number;\r\n    export type base64Binary = string;\r\n\r\n    export enum ViewMemberType {\r\n        User = \"User\",\r\n        Group = \"Group\"\r\n    }\r\n\r\n    export enum UserSortBy {\r\n        username = \"username\",\r\n        fullname = \"fullname\",\r\n        passwordexpiration = \"passwordexpiration\",\r\n        employeeID = \"employeeID\",\r\n        employeeNumber = \"employeeNumber\"\r\n    }\r\n\r\n    export enum GroupSortBy {\r\n        Name = \"Name\",\r\n        ManagedBy = \"ManagedBy\"\r\n    }\r\n\r\n    export enum AccountTypeReq {\r\n        Any = \"Any\",\r\n        User = \"User\",\r\n        Group = \"Group\"\r\n    }\r\n\r\n    export enum ResourcePermissionSortBy {\r\n        Name = \"Name\",\r\n        Type = \"Type\"\r\n    }\r\n\r\n    export enum ResourceSortBy {\r\n        Name = \"Name\"\r\n    }\r\n\r\n    export interface AccountPermissionsRequest {\r\n        AccountName?: string;\r\n        IsGroup?: boolean;\r\n        IncludeGroup?: boolean;\r\n    }\r\n\r\n    export interface BasednNames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Permission {\r\n        BasednName: string;\r\n        rname: string;\r\n        prefix: string;\r\n        ResourceName: string;\r\n        PermissionName: string;\r\n        allow_access: boolean;\r\n        allow_read: boolean;\r\n        allow_write: boolean;\r\n        allow_full: boolean;\r\n        deny_access: boolean;\r\n        deny_read: boolean;\r\n        deny_write: boolean;\r\n        deny_full: boolean;\r\n    }\r\n\r\n    export interface Permissions {\r\n        Permission: Permission[];\r\n    }\r\n\r\n    export interface GroupPermission {\r\n        GroupName: string;\r\n        BasednNames: BasednNames;\r\n        Permissions: Permissions;\r\n    }\r\n\r\n    export interface GroupPermissions {\r\n        GroupPermission: GroupPermission[];\r\n    }\r\n\r\n    export interface AccountPermissionsResponse {\r\n        AccountName: string;\r\n        IsGroup: boolean;\r\n        IncludeGroup: boolean;\r\n        BasednNames: BasednNames;\r\n        Permissions: Permissions;\r\n        GroupPermissions: GroupPermissions;\r\n    }\r\n\r\n    export interface AccountPermissionsV2Request {\r\n        ResourceName?: string;\r\n        AccountName?: string;\r\n        IsGroup?: boolean;\r\n        IncludeGroup?: boolean;\r\n    }\r\n\r\n    export interface AccountPermissionsV2Response {\r\n        BasednNames: BasednNames;\r\n        Permissions: Permissions;\r\n        GroupPermissions: GroupPermissions;\r\n    }\r\n\r\n    export interface AddUserRequest {\r\n        username?: string;\r\n        firstname?: string;\r\n        lastname?: string;\r\n        password1?: string;\r\n        password2?: string;\r\n        employeeID?: string;\r\n        employeeNumber?: string;\r\n    }\r\n\r\n    export interface AddUserResponse {\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface AddViewRequest {\r\n        viewname?: string;\r\n        description?: string;\r\n    }\r\n\r\n    export interface AddViewResponse {\r\n        viewname: string;\r\n        description: string;\r\n    }\r\n\r\n    export interface AddViewColumnRequest {\r\n        viewname?: string;\r\n        filename?: string;\r\n        columnname?: string;\r\n    }\r\n\r\n    export interface AddViewColumnResponse {\r\n        viewname: string;\r\n        filename: string;\r\n        columnname: string;\r\n    }\r\n\r\n    export interface AddViewMemberRequest {\r\n        viewname?: string;\r\n        membername?: string;\r\n        membertype?: ViewMemberType;\r\n    }\r\n\r\n    export interface AddViewMemberResponse {\r\n        viewname: string;\r\n        membername: string;\r\n        membertype: ViewMemberType;\r\n    }\r\n\r\n    export interface ClearPermissionsCacheRequest {\r\n\r\n    }\r\n\r\n    export interface ClearPermissionsCacheResponse {\r\n        retcode: int;\r\n    }\r\n\r\n    export interface DeleteViewRequest {\r\n        viewname?: string;\r\n    }\r\n\r\n    export interface DeleteViewResponse {\r\n        viewname: string;\r\n    }\r\n\r\n    export interface DeleteViewColumnRequest {\r\n        viewname?: string;\r\n        filename?: string;\r\n        columnname?: string;\r\n    }\r\n\r\n    export interface DeleteViewColumnResponse {\r\n        viewname: string;\r\n        filename: string;\r\n        columnname: string;\r\n    }\r\n\r\n    export interface DeleteViewMemberRequest {\r\n        viewname?: string;\r\n        membername?: string;\r\n        membertype?: ViewMemberType;\r\n    }\r\n\r\n    export interface DeleteViewMemberResponse {\r\n        viewname: string;\r\n        membername: string;\r\n        membertype: ViewMemberType;\r\n    }\r\n\r\n    export interface DisableScopeScansRequest {\r\n\r\n    }\r\n\r\n    export interface scopeScansStatus {\r\n        isEnabled: boolean;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface DisableScopeScansResponse {\r\n        scopeScansStatus: scopeScansStatus;\r\n    }\r\n\r\n    export interface EnableScopeScansRequest {\r\n\r\n    }\r\n\r\n    export interface EnableScopeScansResponse {\r\n        scopeScansStatus: scopeScansStatus;\r\n    }\r\n\r\n    export interface FilePermissionRequest {\r\n        FileName?: string;\r\n        UserName?: string;\r\n        GroupName?: string;\r\n    }\r\n\r\n    export interface User {\r\n        username: string;\r\n        fullname: string;\r\n        passwordexpiration: string;\r\n        employeeID: string;\r\n        employeeNumber: string;\r\n    }\r\n\r\n    export interface Users {\r\n        User: User[];\r\n    }\r\n\r\n    export interface Group {\r\n        name: string;\r\n        deletable: boolean;\r\n        groupOwner: string;\r\n        groupDesc: string;\r\n    }\r\n\r\n    export interface Groups {\r\n        Group: Group[];\r\n    }\r\n\r\n    export interface FilePermissionResponse {\r\n        NoSecMngr: boolean;\r\n        FileName: string;\r\n        UserName: string;\r\n        GroupName: string;\r\n        toomany: boolean;\r\n        Users: Users;\r\n        Groups: Groups;\r\n        UserPermission: string;\r\n    }\r\n\r\n    export interface groupnames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface GroupActionRequest {\r\n        groupnames?: groupnames;\r\n        ActionType?: string;\r\n        DeletePermission?: boolean;\r\n    }\r\n\r\n    export interface GroupActionResponse {\r\n        Groupnames: string;\r\n        Permissions: Permissions;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface GroupAddRequest {\r\n        groupname?: string;\r\n        groupOwner?: string;\r\n        groupDesc?: string;\r\n    }\r\n\r\n    export interface GroupAddResponse {\r\n        groupname: string;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface GroupEditRequest {\r\n        groupname?: string;\r\n    }\r\n\r\n    export interface GroupEditResponse {\r\n        groupname: string;\r\n        Users: Users;\r\n    }\r\n\r\n    export interface usernames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface GroupMemberEditRequest {\r\n        groupname?: string;\r\n        action?: string;\r\n        usernames?: usernames;\r\n    }\r\n\r\n    export interface GroupMemberEditResponse {\r\n        groupname: string;\r\n        action: string;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface GroupMemberEditInputRequest {\r\n        searchinput?: string;\r\n        groupname?: string;\r\n    }\r\n\r\n    export interface GroupMemberEditInputResponse {\r\n        groupname: string;\r\n        toomany: boolean;\r\n        Users: Users;\r\n    }\r\n\r\n    export interface GroupMemberQueryRequest {\r\n        GroupName?: string;\r\n        PageSize?: unsignedInt;\r\n        PageStartFrom?: long;\r\n        SortBy?: UserSortBy;\r\n        Descending?: boolean;\r\n        CacheHint?: long;\r\n    }\r\n\r\n    export interface GroupMemberQueryResponse {\r\n        NoSecMngr: boolean;\r\n        Users: Users;\r\n        TotalUsers: long;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface GroupQueryRequest {\r\n        PageSize?: unsignedInt;\r\n        PageStartFrom?: long;\r\n        SortBy?: GroupSortBy;\r\n        Descending?: boolean;\r\n        CacheHint?: long;\r\n    }\r\n\r\n    export interface GroupQueryResponse {\r\n        NoSecMngr: boolean;\r\n        Groups: Groups;\r\n        TotalGroups: long;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface GroupRequest {\r\n\r\n    }\r\n\r\n    export interface GroupResponse {\r\n        NoSecMngr: boolean;\r\n        Groups: Groups;\r\n    }\r\n\r\n    export interface PermissionActionRequest {\r\n        rname?: string;\r\n        prefix?: string;\r\n        action?: string;\r\n        account_name?: string;\r\n        account_type?: int;\r\n        allow_access?: boolean;\r\n        allow_read?: boolean;\r\n        allow_write?: boolean;\r\n        allow_full?: boolean;\r\n        deny_access?: boolean;\r\n        deny_read?: boolean;\r\n        deny_write?: boolean;\r\n        deny_full?: boolean;\r\n        user?: string;\r\n        group?: string;\r\n        BasednName?: string;\r\n        ResourceName?: string;\r\n    }\r\n\r\n    export interface PermissionActionResponse {\r\n        AccountName: string;\r\n        IsGroup: boolean;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface BasednsRequest {\r\n\r\n    }\r\n\r\n    export interface Basedn {\r\n        name: string;\r\n        basedn: string;\r\n        rtype: string;\r\n        rtitle: string;\r\n        templatename: string;\r\n    }\r\n\r\n    export interface Basedns {\r\n        Basedn: Basedn[];\r\n    }\r\n\r\n    export interface BasednsResponse {\r\n        NoSecMngr: boolean;\r\n        Basedns: Basedns;\r\n    }\r\n\r\n    export interface names {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface PermissionsResetRequest {\r\n        BasednName?: string;\r\n        prefix?: string;\r\n        names?: names;\r\n        allow_access?: boolean;\r\n        allow_read?: boolean;\r\n        allow_write?: boolean;\r\n        allow_full?: boolean;\r\n        deny_access?: boolean;\r\n        deny_read?: boolean;\r\n        deny_write?: boolean;\r\n        deny_full?: boolean;\r\n        userarray?: string;\r\n        grouparray?: string;\r\n    }\r\n\r\n    export interface PermissionsResetResponse {\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface ws_accessPingRequest {\r\n\r\n    }\r\n\r\n    export interface ws_accessPingResponse {\r\n\r\n    }\r\n\r\n    export interface QueryScopeScansEnabledRequest {\r\n\r\n    }\r\n\r\n    export interface QueryScopeScansEnabledResponse {\r\n        scopeScansStatus: scopeScansStatus;\r\n    }\r\n\r\n    export interface QueryUserViewColumnsRequest {\r\n        username?: string;\r\n    }\r\n\r\n    export interface ViewColumn {\r\n        viewname: string;\r\n        filename: string;\r\n        columnname: string;\r\n    }\r\n\r\n    export interface viewcolumns {\r\n        ViewColumn: ViewColumn[];\r\n    }\r\n\r\n    export interface QueryUserViewColumnsResponse {\r\n        username: string;\r\n        viewcolumns: viewcolumns;\r\n    }\r\n\r\n    export interface QueryViewColumnsRequest {\r\n        viewname?: string;\r\n    }\r\n\r\n    export interface QueryViewColumnsResponse {\r\n        viewname: string;\r\n        viewcolumns: viewcolumns;\r\n    }\r\n\r\n    export interface QueryViewMembersRequest {\r\n        viewname?: string;\r\n    }\r\n\r\n    export interface ViewMember {\r\n        viewname: string;\r\n        name: string;\r\n        membertype: ViewMemberType;\r\n    }\r\n\r\n    export interface viewmembers {\r\n        ViewMember: ViewMember[];\r\n    }\r\n\r\n    export interface QueryViewMembersResponse {\r\n        viewname: string;\r\n        viewmembers: viewmembers;\r\n    }\r\n\r\n    export interface QueryViewsRequest {\r\n\r\n    }\r\n\r\n    export interface View {\r\n        viewname: string;\r\n        description: string;\r\n    }\r\n\r\n    export interface views {\r\n        View: View[];\r\n    }\r\n\r\n    export interface QueryViewsResponse {\r\n        views: views;\r\n    }\r\n\r\n    export interface ResourceAddRequest {\r\n        BasednName?: string;\r\n        name?: string;\r\n        description?: string;\r\n        prefix?: string;\r\n    }\r\n\r\n    export interface ResourceAddResponse {\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface ResourceDeleteRequest {\r\n        BasednName?: string;\r\n        prefix?: string;\r\n        names?: names;\r\n        DoUpdate?: int;\r\n    }\r\n\r\n    export interface ResourceDeleteResponse {\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface ResourcePermissionQueryRequest {\r\n        BasednName?: string;\r\n        prefix?: string;\r\n        Name?: string;\r\n        AccountType?: AccountTypeReq;\r\n        PageSize?: unsignedInt;\r\n        PageStartFrom?: long;\r\n        SortBy?: ResourcePermissionSortBy;\r\n        Descending?: boolean;\r\n        CacheHint?: long;\r\n    }\r\n\r\n    export interface Permission2 {\r\n        account_name: string;\r\n        escaped_account_name: string;\r\n        account_type: int;\r\n        allow_access: boolean;\r\n        allow_read: boolean;\r\n        allow_write: boolean;\r\n        allow_full: boolean;\r\n        deny_access: boolean;\r\n        deny_read: boolean;\r\n        deny_write: boolean;\r\n        deny_full: boolean;\r\n    }\r\n\r\n    export interface Permissions2 {\r\n        Permission: Permission2[];\r\n    }\r\n\r\n    export interface ResourcePermissionQueryResponse {\r\n        NoSecMngr: boolean;\r\n        Permissions: Permissions2;\r\n        TotalResourcePermissions: long;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface ResourcePermissionsRequest {\r\n        name?: string;\r\n        BasednName?: string;\r\n        prefix?: string;\r\n    }\r\n\r\n    export interface ResourcePermissionsResponse {\r\n        Permissions: Permissions2;\r\n    }\r\n\r\n    export interface ResourceQueryRequest {\r\n        BasednName?: string;\r\n        prefix?: string;\r\n        Name?: string;\r\n        PageSize?: unsignedInt;\r\n        PageStartFrom?: long;\r\n        SortBy?: ResourceSortBy;\r\n        Descending?: boolean;\r\n        CacheHint?: long;\r\n    }\r\n\r\n    export interface Resource {\r\n        name: string;\r\n        description: string;\r\n        isSpecial: boolean;\r\n    }\r\n\r\n    export interface Resources {\r\n        Resource: Resource[];\r\n    }\r\n\r\n    export interface ResourceQueryResponse {\r\n        NoSecMngr: boolean;\r\n        Resources: Resources;\r\n        TotalResources: long;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface ResourcesRequest {\r\n        templatename?: string;\r\n        BasednName?: string;\r\n        prefix?: string;\r\n        searchinput?: string;\r\n    }\r\n\r\n    export interface ResourcesResponse {\r\n        Resources: Resources;\r\n        default_basedn: string;\r\n        default_name: string;\r\n        toomany: boolean;\r\n        scopeScansStatus: scopeScansStatus;\r\n    }\r\n\r\n    export interface UserAccountExportRequest {\r\n        usernames?: usernames;\r\n        groupnames?: groupnames;\r\n    }\r\n\r\n    export interface UserAccountExportResponse {\r\n        Result: base64Binary;\r\n    }\r\n\r\n    export interface UserActionRequest {\r\n        action?: string;\r\n        ActionType?: string;\r\n        usernames?: usernames;\r\n    }\r\n\r\n    export interface UserActionResponse {\r\n        action: string;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface UserEditRequest {\r\n        username?: string;\r\n    }\r\n\r\n    export interface UserEditResponse {\r\n        username: string;\r\n        isLDAPAdmin: boolean;\r\n        Groups: Groups;\r\n    }\r\n\r\n    export interface UserGroupEditRequest {\r\n        username?: string;\r\n        action?: string;\r\n        groupnames?: groupnames;\r\n    }\r\n\r\n    export interface UserGroupEditResponse {\r\n        username: string;\r\n        action: string;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface UserGroupEditInputRequest {\r\n        username?: string;\r\n    }\r\n\r\n    export interface UserGroupEditInputResponse {\r\n        username: string;\r\n        Groups: Groups;\r\n    }\r\n\r\n    export interface UserInfoEditRequest {\r\n        username?: string;\r\n        firstname?: string;\r\n        lastname?: string;\r\n        employeeID?: string;\r\n        employeeNumber?: string;\r\n    }\r\n\r\n    export interface UserInfoEditResponse {\r\n        username: string;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface UserInfoEditInputRequest {\r\n        username?: string;\r\n    }\r\n\r\n    export interface UserInfoEditInputResponse {\r\n        username: string;\r\n        firstname: string;\r\n        lastname: string;\r\n        employeeID: string;\r\n        PasswordExpiration: string;\r\n        employeeNumber: string;\r\n    }\r\n\r\n    export interface UserPosixRequest {\r\n        username?: string;\r\n        posixenabled?: boolean;\r\n        gidnumber?: string;\r\n        uidnumber?: string;\r\n        homedirectory?: string;\r\n        loginshell?: string;\r\n    }\r\n\r\n    export interface UserPosixResponse {\r\n        username: string;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface UserPosixInputRequest {\r\n        username?: string;\r\n    }\r\n\r\n    export interface UserPosixInputResponse {\r\n        username: string;\r\n        posixenabled: boolean;\r\n        gidnumber: string;\r\n        uidnumber: string;\r\n        homedirectory: string;\r\n        loginshell: string;\r\n    }\r\n\r\n    export interface UserQueryRequest {\r\n        Name?: string;\r\n        PageSize?: unsignedInt;\r\n        PageStartFrom?: long;\r\n        SortBy?: UserSortBy;\r\n        Descending?: boolean;\r\n        CacheHint?: long;\r\n    }\r\n\r\n    export interface UserQueryResponse {\r\n        NoSecMngr: boolean;\r\n        Users: Users;\r\n        TotalUsers: long;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface UserResetPassRequest {\r\n        username?: string;\r\n        newPassword?: string;\r\n        newPasswordRetype?: string;\r\n    }\r\n\r\n    export interface UserResetPassResponse {\r\n        username: string;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface UserResetPassInputRequest {\r\n        username?: string;\r\n    }\r\n\r\n    export interface UserResetPassInputResponse {\r\n        username: string;\r\n    }\r\n\r\n    export interface UserSudoersRequest {\r\n        username?: string;\r\n        action?: string;\r\n        sudoHost?: string;\r\n        sudoCommand?: string;\r\n        sudoOption?: string;\r\n    }\r\n\r\n    export interface UserSudoersResponse {\r\n        username: string;\r\n        retcode: int;\r\n        retmsg: string;\r\n    }\r\n\r\n    export interface UserSudoersInputRequest {\r\n        username?: string;\r\n    }\r\n\r\n    export interface UserSudoersInputResponse {\r\n        username: string;\r\n        insudoers: boolean;\r\n        sudoHost: string;\r\n        sudoCommand: string;\r\n        sudoOption: string;\r\n    }\r\n\r\n    export interface UserRequest {\r\n        searchinput?: string;\r\n    }\r\n\r\n    export interface UserResponse {\r\n        NoSecMngr: boolean;\r\n        toomany: boolean;\r\n        posixok: boolean;\r\n        Users: Users;\r\n    }\r\n\r\n}\r\n\r\nexport class AccessServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"ws_access\", \"1.17\");\r\n    }\r\n\r\n    AccountPermissions(request: Partial<WsAccess.AccountPermissionsRequest>): Promise<WsAccess.AccountPermissionsResponse> {\r\n        return this._connection.send(\"AccountPermissions\", request, \"json\", false, undefined, \"AccountPermissionsResponse\");\r\n    }\r\n\r\n    AccountPermissionsV2(request: Partial<WsAccess.AccountPermissionsV2Request>): Promise<WsAccess.AccountPermissionsV2Response> {\r\n        return this._connection.send(\"AccountPermissionsV2\", request, \"json\", false, undefined, \"AccountPermissionsV2Response\");\r\n    }\r\n\r\n    AddUser(request: Partial<WsAccess.AddUserRequest>): Promise<WsAccess.AddUserResponse> {\r\n        return this._connection.send(\"AddUser\", request, \"json\", false, undefined, \"AddUserResponse\");\r\n    }\r\n\r\n    AddView(request: Partial<WsAccess.AddViewRequest>): Promise<WsAccess.AddViewResponse> {\r\n        return this._connection.send(\"AddView\", request, \"json\", false, undefined, \"AddViewResponse\");\r\n    }\r\n\r\n    AddViewColumn(request: Partial<WsAccess.AddViewColumnRequest>): Promise<WsAccess.AddViewColumnResponse> {\r\n        return this._connection.send(\"AddViewColumn\", request, \"json\", false, undefined, \"AddViewColumnResponse\");\r\n    }\r\n\r\n    AddViewMember(request: Partial<WsAccess.AddViewMemberRequest>): Promise<WsAccess.AddViewMemberResponse> {\r\n        return this._connection.send(\"AddViewMember\", request, \"json\", false, undefined, \"AddViewMemberResponse\");\r\n    }\r\n\r\n    ClearPermissionsCache(request: Partial<WsAccess.ClearPermissionsCacheRequest>): Promise<WsAccess.ClearPermissionsCacheResponse> {\r\n        return this._connection.send(\"ClearPermissionsCache\", request, \"json\", false, undefined, \"ClearPermissionsCacheResponse\");\r\n    }\r\n\r\n    DeleteView(request: Partial<WsAccess.DeleteViewRequest>): Promise<WsAccess.DeleteViewResponse> {\r\n        return this._connection.send(\"DeleteView\", request, \"json\", false, undefined, \"DeleteViewResponse\");\r\n    }\r\n\r\n    DeleteViewColumn(request: Partial<WsAccess.DeleteViewColumnRequest>): Promise<WsAccess.DeleteViewColumnResponse> {\r\n        return this._connection.send(\"DeleteViewColumn\", request, \"json\", false, undefined, \"DeleteViewColumnResponse\");\r\n    }\r\n\r\n    DeleteViewMember(request: Partial<WsAccess.DeleteViewMemberRequest>): Promise<WsAccess.DeleteViewMemberResponse> {\r\n        return this._connection.send(\"DeleteViewMember\", request, \"json\", false, undefined, \"DeleteViewMemberResponse\");\r\n    }\r\n\r\n    DisableScopeScans(request: Partial<WsAccess.DisableScopeScansRequest>): Promise<WsAccess.DisableScopeScansResponse> {\r\n        return this._connection.send(\"DisableScopeScans\", request, \"json\", false, undefined, \"DisableScopeScansResponse\");\r\n    }\r\n\r\n    EnableScopeScans(request: Partial<WsAccess.EnableScopeScansRequest>): Promise<WsAccess.EnableScopeScansResponse> {\r\n        return this._connection.send(\"EnableScopeScans\", request, \"json\", false, undefined, \"EnableScopeScansResponse\");\r\n    }\r\n\r\n    FilePermission(request: Partial<WsAccess.FilePermissionRequest>): Promise<WsAccess.FilePermissionResponse> {\r\n        return this._connection.send(\"FilePermission\", request, \"json\", false, undefined, \"FilePermissionResponse\");\r\n    }\r\n\r\n    GroupAction(request: Partial<WsAccess.GroupActionRequest>): Promise<WsAccess.GroupActionResponse> {\r\n        return this._connection.send(\"GroupAction\", request, \"json\", false, undefined, \"GroupActionResponse\");\r\n    }\r\n\r\n    GroupAdd(request: Partial<WsAccess.GroupAddRequest>): Promise<WsAccess.GroupAddResponse> {\r\n        return this._connection.send(\"GroupAdd\", request, \"json\", false, undefined, \"GroupAddResponse\");\r\n    }\r\n\r\n    GroupEdit(request: Partial<WsAccess.GroupEditRequest>): Promise<WsAccess.GroupEditResponse> {\r\n        return this._connection.send(\"GroupEdit\", request, \"json\", false, undefined, \"GroupEditResponse\");\r\n    }\r\n\r\n    GroupMemberEdit(request: Partial<WsAccess.GroupMemberEditRequest>): Promise<WsAccess.GroupMemberEditResponse> {\r\n        return this._connection.send(\"GroupMemberEdit\", request, \"json\", false, undefined, \"GroupMemberEditResponse\");\r\n    }\r\n\r\n    GroupMemberEditInput(request: Partial<WsAccess.GroupMemberEditInputRequest>): Promise<WsAccess.GroupMemberEditInputResponse> {\r\n        return this._connection.send(\"GroupMemberEditInput\", request, \"json\", false, undefined, \"GroupMemberEditInputResponse\");\r\n    }\r\n\r\n    GroupMemberQuery(request: Partial<WsAccess.GroupMemberQueryRequest>): Promise<WsAccess.GroupMemberQueryResponse> {\r\n        return this._connection.send(\"GroupMemberQuery\", request, \"json\", false, undefined, \"GroupMemberQueryResponse\");\r\n    }\r\n\r\n    GroupQuery(request: Partial<WsAccess.GroupQueryRequest>): Promise<WsAccess.GroupQueryResponse> {\r\n        return this._connection.send(\"GroupQuery\", request, \"json\", false, undefined, \"GroupQueryResponse\");\r\n    }\r\n\r\n    Groups(request: Partial<WsAccess.GroupRequest>): Promise<WsAccess.GroupResponse> {\r\n        return this._connection.send(\"Groups\", request, \"json\", false, undefined, \"GroupResponse\");\r\n    }\r\n\r\n    PermissionAction(request: Partial<WsAccess.PermissionActionRequest>): Promise<WsAccess.PermissionActionResponse> {\r\n        return this._connection.send(\"PermissionAction\", request, \"json\", false, undefined, \"PermissionActionResponse\");\r\n    }\r\n\r\n    Permissions(request: Partial<WsAccess.BasednsRequest>): Promise<WsAccess.BasednsResponse> {\r\n        return this._connection.send(\"Permissions\", request, \"json\", false, undefined, \"BasednsResponse\");\r\n    }\r\n\r\n    PermissionsReset(request: Partial<WsAccess.PermissionsResetRequest>): Promise<WsAccess.PermissionsResetResponse> {\r\n        return this._connection.send(\"PermissionsReset\", request, \"json\", false, undefined, \"PermissionsResetResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsAccess.ws_accessPingRequest>): Promise<WsAccess.ws_accessPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"ws_accessPingResponse\");\r\n    }\r\n\r\n    QueryScopeScansEnabled(request: Partial<WsAccess.QueryScopeScansEnabledRequest>): Promise<WsAccess.QueryScopeScansEnabledResponse> {\r\n        return this._connection.send(\"QueryScopeScansEnabled\", request, \"json\", false, undefined, \"QueryScopeScansEnabledResponse\");\r\n    }\r\n\r\n    QueryUserViewColumns(request: Partial<WsAccess.QueryUserViewColumnsRequest>): Promise<WsAccess.QueryUserViewColumnsResponse> {\r\n        return this._connection.send(\"QueryUserViewColumns\", request, \"json\", false, undefined, \"QueryUserViewColumnsResponse\");\r\n    }\r\n\r\n    QueryViewColumns(request: Partial<WsAccess.QueryViewColumnsRequest>): Promise<WsAccess.QueryViewColumnsResponse> {\r\n        return this._connection.send(\"QueryViewColumns\", request, \"json\", false, undefined, \"QueryViewColumnsResponse\");\r\n    }\r\n\r\n    QueryViewMembers(request: Partial<WsAccess.QueryViewMembersRequest>): Promise<WsAccess.QueryViewMembersResponse> {\r\n        return this._connection.send(\"QueryViewMembers\", request, \"json\", false, undefined, \"QueryViewMembersResponse\");\r\n    }\r\n\r\n    QueryViews(request: Partial<WsAccess.QueryViewsRequest>): Promise<WsAccess.QueryViewsResponse> {\r\n        return this._connection.send(\"QueryViews\", request, \"json\", false, undefined, \"QueryViewsResponse\");\r\n    }\r\n\r\n    ResourceAdd(request: Partial<WsAccess.ResourceAddRequest>): Promise<WsAccess.ResourceAddResponse> {\r\n        return this._connection.send(\"ResourceAdd\", request, \"json\", false, undefined, \"ResourceAddResponse\");\r\n    }\r\n\r\n    ResourceDelete(request: Partial<WsAccess.ResourceDeleteRequest>): Promise<WsAccess.ResourceDeleteResponse> {\r\n        return this._connection.send(\"ResourceDelete\", request, \"json\", false, undefined, \"ResourceDeleteResponse\");\r\n    }\r\n\r\n    ResourcePermissionQuery(request: Partial<WsAccess.ResourcePermissionQueryRequest>): Promise<WsAccess.ResourcePermissionQueryResponse> {\r\n        return this._connection.send(\"ResourcePermissionQuery\", request, \"json\", false, undefined, \"ResourcePermissionQueryResponse\");\r\n    }\r\n\r\n    ResourcePermissions(request: Partial<WsAccess.ResourcePermissionsRequest>): Promise<WsAccess.ResourcePermissionsResponse> {\r\n        return this._connection.send(\"ResourcePermissions\", request, \"json\", false, undefined, \"ResourcePermissionsResponse\");\r\n    }\r\n\r\n    ResourceQuery(request: Partial<WsAccess.ResourceQueryRequest>): Promise<WsAccess.ResourceQueryResponse> {\r\n        return this._connection.send(\"ResourceQuery\", request, \"json\", false, undefined, \"ResourceQueryResponse\");\r\n    }\r\n\r\n    Resources(request: Partial<WsAccess.ResourcesRequest>): Promise<WsAccess.ResourcesResponse> {\r\n        return this._connection.send(\"Resources\", request, \"json\", false, undefined, \"ResourcesResponse\");\r\n    }\r\n\r\n    UserAccountExport(request: Partial<WsAccess.UserAccountExportRequest>): Promise<WsAccess.UserAccountExportResponse> {\r\n        return this._connection.send(\"UserAccountExport\", request, \"json\", false, undefined, \"UserAccountExportResponse\");\r\n    }\r\n\r\n    UserAction(request: Partial<WsAccess.UserActionRequest>): Promise<WsAccess.UserActionResponse> {\r\n        return this._connection.send(\"UserAction\", request, \"json\", false, undefined, \"UserActionResponse\");\r\n    }\r\n\r\n    UserEdit(request: Partial<WsAccess.UserEditRequest>): Promise<WsAccess.UserEditResponse> {\r\n        return this._connection.send(\"UserEdit\", request, \"json\", false, undefined, \"UserEditResponse\");\r\n    }\r\n\r\n    UserGroupEdit(request: Partial<WsAccess.UserGroupEditRequest>): Promise<WsAccess.UserGroupEditResponse> {\r\n        return this._connection.send(\"UserGroupEdit\", request, \"json\", false, undefined, \"UserGroupEditResponse\");\r\n    }\r\n\r\n    UserGroupEditInput(request: Partial<WsAccess.UserGroupEditInputRequest>): Promise<WsAccess.UserGroupEditInputResponse> {\r\n        return this._connection.send(\"UserGroupEditInput\", request, \"json\", false, undefined, \"UserGroupEditInputResponse\");\r\n    }\r\n\r\n    UserInfoEdit(request: Partial<WsAccess.UserInfoEditRequest>): Promise<WsAccess.UserInfoEditResponse> {\r\n        return this._connection.send(\"UserInfoEdit\", request, \"json\", false, undefined, \"UserInfoEditResponse\");\r\n    }\r\n\r\n    UserInfoEditInput(request: Partial<WsAccess.UserInfoEditInputRequest>): Promise<WsAccess.UserInfoEditInputResponse> {\r\n        return this._connection.send(\"UserInfoEditInput\", request, \"json\", false, undefined, \"UserInfoEditInputResponse\");\r\n    }\r\n\r\n    UserPosix(request: Partial<WsAccess.UserPosixRequest>): Promise<WsAccess.UserPosixResponse> {\r\n        return this._connection.send(\"UserPosix\", request, \"json\", false, undefined, \"UserPosixResponse\");\r\n    }\r\n\r\n    UserPosixInput(request: Partial<WsAccess.UserPosixInputRequest>): Promise<WsAccess.UserPosixInputResponse> {\r\n        return this._connection.send(\"UserPosixInput\", request, \"json\", false, undefined, \"UserPosixInputResponse\");\r\n    }\r\n\r\n    UserQuery(request: Partial<WsAccess.UserQueryRequest>): Promise<WsAccess.UserQueryResponse> {\r\n        return this._connection.send(\"UserQuery\", request, \"json\", false, undefined, \"UserQueryResponse\");\r\n    }\r\n\r\n    UserResetPass(request: Partial<WsAccess.UserResetPassRequest>): Promise<WsAccess.UserResetPassResponse> {\r\n        return this._connection.send(\"UserResetPass\", request, \"json\", false, undefined, \"UserResetPassResponse\");\r\n    }\r\n\r\n    UserResetPassInput(request: Partial<WsAccess.UserResetPassInputRequest>): Promise<WsAccess.UserResetPassInputResponse> {\r\n        return this._connection.send(\"UserResetPassInput\", request, \"json\", false, undefined, \"UserResetPassInputResponse\");\r\n    }\r\n\r\n    UserSudoers(request: Partial<WsAccess.UserSudoersRequest>): Promise<WsAccess.UserSudoersResponse> {\r\n        return this._connection.send(\"UserSudoers\", request, \"json\", false, undefined, \"UserSudoersResponse\");\r\n    }\r\n\r\n    UserSudoersInput(request: Partial<WsAccess.UserSudoersInputRequest>): Promise<WsAccess.UserSudoersInputResponse> {\r\n        return this._connection.send(\"UserSudoersInput\", request, \"json\", false, undefined, \"UserSudoersInputResponse\");\r\n    }\r\n\r\n    Users(request: Partial<WsAccess.UserRequest>): Promise<WsAccess.UserResponse> {\r\n        return this._connection.send(\"Users\", request, \"json\", false, undefined, \"UserResponse\");\r\n    }\r\n\r\n}\r\n", "import { AccessServiceBase, WsAccess } from \"./wsdl/ws_access/v1.17/ws_access.ts\";\r\n\r\nexport {\r\n    WsAccess\r\n};\r\n\r\nexport class AccessService extends AccessServiceBase {\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsAccount {\r\n\r\n    export type int = number;\r\n\r\n    export interface MyAccountRequest {\r\n\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface Groups {\r\n        Group: string[];\r\n    }\r\n\r\n    export interface MyAccountResponse {\r\n        Exceptions: Exceptions;\r\n        username: string;\r\n        firstName: string;\r\n        lastName: string;\r\n        passwordExpiration: string;\r\n        passwordDaysRemaining: int;\r\n        passwordExpirationWarningDays: int;\r\n        employeeID: string;\r\n        distinguishedName: string;\r\n        accountType: string;\r\n        passwordNeverExpires: boolean;\r\n        passwordIsExpired: boolean;\r\n        CanUpdatePassword: boolean;\r\n        accountStatus: int;\r\n        Groups: Groups;\r\n    }\r\n\r\n    export interface ws_accountPingRequest {\r\n\r\n    }\r\n\r\n    export interface ws_accountPingResponse {\r\n\r\n    }\r\n\r\n    export interface UpdateUserRequest {\r\n        username?: string;\r\n        oldpass?: string;\r\n        newpass1?: string;\r\n        newpass2?: string;\r\n    }\r\n\r\n    export interface UpdateUserResponse {\r\n        Exceptions: Exceptions;\r\n        retcode: int;\r\n        message: string;\r\n    }\r\n\r\n    export interface UpdateUserInputRequest {\r\n\r\n    }\r\n\r\n    export interface UpdateUserInputResponse {\r\n        Exceptions: Exceptions;\r\n        username: string;\r\n    }\r\n\r\n    export interface VerifyUserRequest {\r\n        application?: string;\r\n        version?: string;\r\n    }\r\n\r\n    export interface VerifyUserResponse {\r\n        Exceptions: Exceptions;\r\n        retcode: int;\r\n    }\r\n\r\n}\r\n\r\nexport class AccountServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"ws_account\", \"1.07\");\r\n    }\r\n\r\n    MyAccount(request: Partial<WsAccount.MyAccountRequest>): Promise<WsAccount.MyAccountResponse> {\r\n        return this._connection.send(\"MyAccount\", request, \"json\", false, undefined, \"MyAccountResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsAccount.ws_accountPingRequest>): Promise<WsAccount.ws_accountPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"ws_accountPingResponse\");\r\n    }\r\n\r\n    UpdateUser(request: Partial<WsAccount.UpdateUserRequest>): Promise<WsAccount.UpdateUserResponse> {\r\n        return this._connection.send(\"UpdateUser\", request, \"json\", false, undefined, \"UpdateUserResponse\");\r\n    }\r\n\r\n    UpdateUserInput(request: Partial<WsAccount.UpdateUserInputRequest>): Promise<WsAccount.UpdateUserInputResponse> {\r\n        return this._connection.send(\"UpdateUserInput\", request, \"json\", false, undefined, \"UpdateUserInputResponse\");\r\n    }\r\n\r\n    VerifyUser(request: Partial<WsAccount.VerifyUserRequest>): Promise<WsAccount.VerifyUserResponse> {\r\n        return this._connection.send(\"VerifyUser\", request, \"json\", false, undefined, \"VerifyUserResponse\");\r\n    }\r\n\r\n}\r\n", "import { AccountServiceBase, WsAccount } from \"./wsdl/ws_account/v1.07/ws_account.ts\";\r\nimport { ESPExceptions } from \"../espConnection.ts\";\r\n\r\nexport {\r\n    type WsAccount\r\n};\r\n\r\nexport class AccountService extends AccountServiceBase {\r\n\r\n    VerifyUser(request: WsAccount.VerifyUserRequest): Promise<WsAccount.VerifyUserResponse> {\r\n        return this._connection.send(\"VerifyUser\", request)\r\n            .catch((e: ESPExceptions) => {\r\n                //  old client version warning  ---\r\n                if (e.isESPExceptions && e.Exception.some(exception => exception.Code === 20043)) {\r\n                    return {\r\n                        retcode: 20043,\r\n                        Exceptions: {\r\n                            Source: \"wsAccount\",\r\n                            Exception: e.Exception\r\n                        }\r\n                    };\r\n                }\r\n                throw e;\r\n            });\r\n    }\r\n\r\n}\r\n", "import { scopedLogger } from \"@hpcc-js/util\";\r\nimport type { V1Pod } from \"@kubernetes/client-node\";\r\nimport type { WsCloud as WsCloudV1 } from \"./wsdl/WsCloud/v1/WsCloud.ts\";\r\nimport { CloudServiceBase, WsCloud } from \"./wsdl/WsCloud/v1.02/WsCloud.ts\";\r\n\r\nconst logger = scopedLogger(\"@hpcc-js/comms/services/wsCloud.ts\");\r\n\r\nexport {\r\n    type WsCloud\r\n};\r\n\r\nfunction isGetPODsResponse_v1_02(response: any): response is WsCloud.GetPODsResponse {\r\n    return response?.Pods !== undefined;\r\n}\r\n\r\nfunction mapPorts(pod: V1Pod): WsCloud.Port[] {\r\n    return pod.spec?.containers?.reduce((prev, curr) => {\r\n        curr.ports?.forEach(p => {\r\n            prev.push({\r\n                ContainerPort: p.containerPort,\r\n                Name: p.name,\r\n                Protocol: p.protocol\r\n            });\r\n        });\r\n        return prev;\r\n    }, [] as WsCloud.Port[]) ?? [];\r\n}\r\n\r\nfunction mapPods(pods: V1Pod[]): WsCloud.Pod[] {\r\n    return pods\r\n        .filter(pod => {\r\n            const labels = pod?.metadata?.labels ?? {};\r\n            return labels.hasOwnProperty(\"app.kubernetes.io/part-of\") && labels[\"app.kubernetes.io/part-of\"] === \"HPCC-Platform\";\r\n        })\r\n        .map((pod: V1Pod): WsCloud.Pod => {\r\n            const started = new Date(pod.metadata?.creationTimestamp);\r\n            return {\r\n                Name: pod.metadata.name,\r\n                Status: pod.status?.phase,\r\n                CreationTimestamp: started.toISOString(),\r\n                ContainerName: pod.status?.containerStatuses?.reduce((prev, curr) => {\r\n                    if (curr.name) {\r\n                        prev.push(curr.name);\r\n                    } return prev;\r\n                }, [] as string[]).join(\", \") ?? \"\",\r\n                ContainerCount: pod.spec?.containers?.length ?? 0,\r\n                ContainerReadyCount: pod.status?.containerStatuses?.reduce((prev, curr) => prev + (curr.ready ? 1 : 0), 0),\r\n                ContainerRestartCount: pod.status?.containerStatuses?.reduce((prev, curr) => prev + curr.restartCount, 0),\r\n                Ports: {\r\n                    Port: mapPorts(pod)\r\n                },\r\n            };\r\n        })\r\n        ;\r\n}\r\n\r\nexport class CloudService extends CloudServiceBase {\r\n\r\n    getPODs(): Promise<WsCloud.Pod[]> {\r\n        return super.GetPODs({}).then((response: WsCloud.GetPODsResponse | WsCloudV1.GetPODsResponse) => {\r\n            if (isGetPODsResponse_v1_02(response)) {\r\n                return response.Pods?.Pod ?? [];\r\n            }\r\n            try {\r\n                const obj = typeof response.Result === \"string\" ? JSON.parse(response.Result) : response.Result;\r\n                return mapPods(obj?.items ?? []);\r\n            } catch (error) {\r\n                logger.error(`Error parsing V1Pods json '${(error instanceof Error ? error.message : String(error))}'`);\r\n                return [];\r\n            }\r\n        });\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsCloud {\r\n\r\n    export type int = number;\r\n\r\n    export interface GetPODsRequest {\r\n\r\n    }\r\n\r\n    export interface Port {\r\n        ContainerPort: int;\r\n        Name: string;\r\n        Protocol: string;\r\n    }\r\n\r\n    export interface Ports {\r\n        Port: Port[];\r\n    }\r\n\r\n    export interface Pod {\r\n        Name: string;\r\n        Status: string;\r\n        CreationTimestamp: string;\r\n        ContainerName: string;\r\n        ContainerCount: int;\r\n        ContainerReadyCount: int;\r\n        ContainerRestartCount: int;\r\n        Ports: Ports;\r\n    }\r\n\r\n    export interface Pods {\r\n        Pod: Pod[];\r\n    }\r\n\r\n    export interface GetPODsResponse {\r\n        Pods: Pods;\r\n    }\r\n\r\n    export interface GetServicesRequest {\r\n\r\n    }\r\n\r\n    export interface GetServicesResponse {\r\n        Result: string;\r\n    }\r\n\r\n    export interface WsCloudPingRequest {\r\n\r\n    }\r\n\r\n    export interface WsCloudPingResponse {\r\n\r\n    }\r\n\r\n}\r\n\r\nexport class CloudServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsCloud\", \"1.02\");\r\n    }\r\n\r\n    GetPODs(request: Partial<WsCloud.GetPODsRequest>): Promise<WsCloud.GetPODsResponse> {\r\n        return this._connection.send(\"GetPODs\", request, \"json\", false, undefined, \"GetPODsResponse\");\r\n    }\r\n\r\n    GetServices(request: Partial<WsCloud.GetServicesRequest>): Promise<WsCloud.GetServicesResponse> {\r\n        return this._connection.send(\"GetServices\", request, \"json\", false, undefined, \"GetServicesResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsCloud.WsCloudPingRequest>): Promise<WsCloud.WsCloudPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsCloudPingResponse\");\r\n    }\r\n\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsCodesign {\r\n\r\n    export type int = number;\r\n\r\n    export enum SigningMethodType {\r\n        gpg = \"gpg\"\r\n    }\r\n\r\n    export interface ListUserIDsRequest {\r\n\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface UserIDs {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface ListUserIDsResponse {\r\n        Exceptions: Exceptions;\r\n        UserIDs: UserIDs;\r\n    }\r\n\r\n    export interface ws_codesignPingRequest {\r\n\r\n    }\r\n\r\n    export interface ws_codesignPingResponse {\r\n\r\n    }\r\n\r\n    export interface SignRequest {\r\n        SigningMethod?: SigningMethodType;\r\n        UserID?: string;\r\n        KeyPass?: string;\r\n        Text?: string;\r\n    }\r\n\r\n    export interface SignResponse {\r\n        Exceptions: Exceptions;\r\n        RetCode: int;\r\n        ErrMsg: string;\r\n        SignedText: string;\r\n    }\r\n\r\n    export interface VerifyRequest {\r\n        Text?: string;\r\n    }\r\n\r\n    export interface VerifyResponse {\r\n        Exceptions: Exceptions;\r\n        RetCode: int;\r\n        ErrMsg: string;\r\n        IsVerified: boolean;\r\n        SignedBy: string;\r\n    }\r\n\r\n}\r\n\r\nexport class CodesignServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"ws_codesign\", \"1.1\");\r\n    }\r\n\r\n    ListUserIDs(request: Partial<WsCodesign.ListUserIDsRequest>): Promise<WsCodesign.ListUserIDsResponse> {\r\n        return this._connection.send(\"ListUserIDs\", request, \"json\", false, undefined, \"ListUserIDsResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsCodesign.ws_codesignPingRequest>): Promise<WsCodesign.ws_codesignPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"ws_codesignPingResponse\");\r\n    }\r\n\r\n    Sign(request: Partial<WsCodesign.SignRequest>): Promise<WsCodesign.SignResponse> {\r\n        return this._connection.send(\"Sign\", request, \"json\", false, undefined, \"SignResponse\");\r\n    }\r\n\r\n    Verify(request: Partial<WsCodesign.VerifyRequest>): Promise<WsCodesign.VerifyResponse> {\r\n        return this._connection.send(\"Verify\", request, \"json\", false, undefined, \"VerifyResponse\");\r\n    }\r\n\r\n}\r\n", "import { CodesignServiceBase, WsCodesign } from \"./wsdl/ws_codesign/v1.1/ws_codesign.ts\";\r\n\r\nexport { WsCodesign };\r\n\r\nexport class CodesignService extends CodesignServiceBase {\r\n\r\n    ListUserIDsEx(request: Partial<WsCodesign.ListUserIDsRequest>): Promise<string[]> {\r\n        return super.ListUserIDs(request).then((response: WsCodesign.ListUserIDsResponse) => {\r\n            return response.UserIDs.Item;\r\n        }).catch(e => {\r\n            return [];\r\n        });\r\n    }\r\n\r\n    Sign(request: Partial<WsCodesign.SignRequest>): Promise<WsCodesign.SignResponse> {\r\n        return super.Sign({ SigningMethod: WsCodesign.SigningMethodType.gpg, ...request });\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsDali {\r\n\r\n    export type unsignedInt = number;\r\n\r\n    export interface AddRequest {\r\n        Path?: string;\r\n        Value?: string;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface ResultResponse {\r\n        Exceptions: Exceptions;\r\n        Result: string;\r\n    }\r\n\r\n    export interface ClearTraceTransactionsRequest {\r\n\r\n    }\r\n\r\n    export interface CountRequest {\r\n        Path?: string;\r\n    }\r\n\r\n    export interface CountResponse {\r\n        Exceptions: Exceptions;\r\n        Result: unsignedInt;\r\n    }\r\n\r\n    export interface DFSCheckRequest {\r\n\r\n    }\r\n\r\n    export interface DFSExistsRequest {\r\n        FileName?: string;\r\n    }\r\n\r\n    export interface BooleanResponse {\r\n        Exceptions: Exceptions;\r\n        Result: boolean;\r\n    }\r\n\r\n    export interface DFSLSRequest {\r\n        Name?: string;\r\n        PathAndNameOnly?: boolean;\r\n        IncludeSubFileInfo?: boolean;\r\n        Recursively?: boolean;\r\n    }\r\n\r\n    export interface DeleteRequest {\r\n        Path?: string;\r\n    }\r\n\r\n    export interface DisconnectClientConnectionRequest {\r\n        Endpoint?: string;\r\n    }\r\n\r\n    export interface GetClientsRequest {\r\n\r\n    }\r\n\r\n    export interface GetConnectionsRequest {\r\n\r\n    }\r\n\r\n    export interface GetDFSCSVRequest {\r\n        LogicalNameMask?: string;\r\n    }\r\n\r\n    export interface GetDFSMapRequest {\r\n        FileName?: string;\r\n    }\r\n\r\n    export interface GetDFSParentsRequest {\r\n        FileName?: string;\r\n    }\r\n\r\n    export interface GetLogicalFileRequest {\r\n        FileName?: string;\r\n    }\r\n\r\n    export interface GetLogicalFilePartRequest {\r\n        FileName?: string;\r\n        PartNumber?: unsignedInt;\r\n    }\r\n\r\n    export interface GetProtectedListRequest {\r\n        FileName?: string;\r\n        CallerId?: string;\r\n    }\r\n\r\n    export interface GetSDSStatsRequest {\r\n\r\n    }\r\n\r\n    export interface GetSDSSubscribersRequest {\r\n\r\n    }\r\n\r\n    export interface GetValueRequest {\r\n        Path?: string;\r\n    }\r\n\r\n    export interface ImportRequest {\r\n        XML?: string;\r\n        Path?: string;\r\n        Add?: boolean;\r\n    }\r\n\r\n    export interface ListSDSLocksRequest {\r\n\r\n    }\r\n\r\n    export interface WSDaliPingRequest {\r\n\r\n    }\r\n\r\n    export interface WSDaliPingResponse {\r\n\r\n    }\r\n\r\n    export interface SaveSDSStoreRequest {\r\n\r\n    }\r\n\r\n    export interface SetLogicalFilePartAttrRequest {\r\n        FileName?: string;\r\n        PartNumber?: unsignedInt;\r\n        Attr?: string;\r\n        Value?: string;\r\n    }\r\n\r\n    export interface SetProtectedRequest {\r\n        FileName?: string;\r\n        CallerId?: string;\r\n    }\r\n\r\n    export interface SetTraceSlowTransactionsRequest {\r\n        SlowThresholdMS?: unsignedInt;\r\n    }\r\n\r\n    export interface SetTraceTransactionsRequest {\r\n\r\n    }\r\n\r\n    export interface SetUnprotectedRequest {\r\n        FileName?: string;\r\n        CallerId?: string;\r\n    }\r\n\r\n    export interface SetValueRequest {\r\n        Path?: string;\r\n        Value?: string;\r\n    }\r\n\r\n    export interface UnlockSDSLockRequest {\r\n        ConnectionID?: string;\r\n        Close?: boolean;\r\n    }\r\n\r\n}\r\n\r\nexport class DaliServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WSDali\", \"1.07\");\r\n    }\r\n\r\n    Add(request: Partial<WsDali.AddRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"Add\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    ClearTraceTransactions(request: Partial<WsDali.ClearTraceTransactionsRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"ClearTraceTransactions\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    Count(request: Partial<WsDali.CountRequest>): Promise<WsDali.CountResponse> {\r\n        return this._connection.send(\"Count\", request, \"json\", false, undefined, \"CountResponse\");\r\n    }\r\n\r\n    DFSCheck(request: Partial<WsDali.DFSCheckRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"DFSCheck\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    DFSExists(request: Partial<WsDali.DFSExistsRequest>): Promise<WsDali.BooleanResponse> {\r\n        return this._connection.send(\"DFSExists\", request, \"json\", false, undefined, \"BooleanResponse\");\r\n    }\r\n\r\n    DFSLS(request: Partial<WsDali.DFSLSRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"DFSLS\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    Delete(request: Partial<WsDali.DeleteRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"Delete\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    DisconnectClientConnection(request: Partial<WsDali.DisconnectClientConnectionRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"DisconnectClientConnection\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetClients(request: Partial<WsDali.GetClientsRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetClients\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetConnections(request: Partial<WsDali.GetConnectionsRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetConnections\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetDFSCSV(request: Partial<WsDali.GetDFSCSVRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetDFSCSV\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetDFSMap(request: Partial<WsDali.GetDFSMapRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetDFSMap\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetDFSParents(request: Partial<WsDali.GetDFSParentsRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetDFSParents\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetLogicalFile(request: Partial<WsDali.GetLogicalFileRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetLogicalFile\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetLogicalFilePart(request: Partial<WsDali.GetLogicalFilePartRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetLogicalFilePart\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetProtectedList(request: Partial<WsDali.GetProtectedListRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetProtectedList\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetSDSStats(request: Partial<WsDali.GetSDSStatsRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetSDSStats\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetSDSSubscribers(request: Partial<WsDali.GetSDSSubscribersRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetSDSSubscribers\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetValue(request: Partial<WsDali.GetValueRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"GetValue\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    Import(request: Partial<WsDali.ImportRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"Import\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    ListSDSLocks(request: Partial<WsDali.ListSDSLocksRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"ListSDSLocks\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsDali.WSDaliPingRequest>): Promise<WsDali.WSDaliPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WSDaliPingResponse\");\r\n    }\r\n\r\n    SaveSDSStore(request: Partial<WsDali.SaveSDSStoreRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SaveSDSStore\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    SetLogicalFilePartAttr(request: Partial<WsDali.SetLogicalFilePartAttrRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetLogicalFilePartAttr\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    SetProtected(request: Partial<WsDali.SetProtectedRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetProtected\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    SetTraceSlowTransactions(request: Partial<WsDali.SetTraceSlowTransactionsRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetTraceSlowTransactions\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    SetTraceTransactions(request: Partial<WsDali.SetTraceTransactionsRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetTraceTransactions\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    SetUnprotected(request: Partial<WsDali.SetUnprotectedRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetUnprotected\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    SetValue(request: Partial<WsDali.SetValueRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"SetValue\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    UnlockSDSLock(request: Partial<WsDali.UnlockSDSLockRequest>): Promise<WsDali.ResultResponse> {\r\n        return this._connection.send(\"UnlockSDSLock\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n}\r\n", "import { DaliServiceBase, WsDali } from \"./wsdl/WsDali/v1.07/WsDali.ts\";\r\n\r\nexport {\r\n    type WsDali\r\n};\r\n\r\nexport class DaliService extends DaliServiceBase {\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsDfu {\r\n\r\n    export type base64Binary = string;\r\n    export type long = number;\r\n    export type int = number;\r\n    export type double = number;\r\n\r\n    export enum DFUArrayActions {\r\n        Delete = \"Delete\",\r\n        AddToSuperfile = \"Add To Superfile\",\r\n        ChangeProtection = \"Change Protection\",\r\n        ChangeRestriction = \"Change Restriction\"\r\n    }\r\n\r\n    export enum DFUChangeProtection {\r\n        NoChange = 0,\r\n        Protect = 1,\r\n        Unprotect = 2,\r\n        UnprotectAll = 3\r\n    }\r\n\r\n    export enum DFUChangeRestriction {\r\n        NoChange = 0,\r\n        Restrict = 1,\r\n        Unrestricted = 2\r\n    }\r\n\r\n    export enum DFUDefFileFormat {\r\n        xml = \"xml\",\r\n        def = \"def\"\r\n    }\r\n\r\n    export enum FileAccessRole {\r\n        Token = \"Token\",\r\n        Engine = \"Engine\",\r\n        External = \"External\"\r\n    }\r\n\r\n    export enum SecAccessType {\r\n        None = \"None\",\r\n        Access = \"Access\",\r\n        Read = \"Read\",\r\n        Write = \"Write\",\r\n        Full = \"Full\"\r\n    }\r\n\r\n    export enum DFUFileType {\r\n        Flat = \"Flat\",\r\n        Index = \"Index\",\r\n        Xml = \"Xml\",\r\n        Csv = \"Csv\",\r\n        Json = \"Json\",\r\n        IndexLocal = \"IndexLocal\",\r\n        IndexPartitioned = \"IndexPartitioned\",\r\n        Unset = \"Unset\"\r\n    }\r\n\r\n    export interface AddRequest {\r\n        dstname?: string;\r\n        xmlmap?: base64Binary;\r\n        dstcluster?: string;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface AddResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface AddRemoteRequest {\r\n        dstname?: string;\r\n        srcname?: string;\r\n        srcdali?: string;\r\n        srcusername?: string;\r\n        srcpassword?: string;\r\n    }\r\n\r\n    export interface AddRemoteResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface names {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface AddtoSuperfileRequest {\r\n        Superfile?: string;\r\n        Subfiles?: string;\r\n        names?: names;\r\n        ExistingFile?: boolean;\r\n        BackToPage?: string;\r\n    }\r\n\r\n    export interface SubfileNames {\r\n        SubfileName: string[];\r\n    }\r\n\r\n    export interface AddtoSuperfileResponse {\r\n        Exceptions: Exceptions;\r\n        Subfiles: string;\r\n        BackToPage: string;\r\n        SubfileNames: SubfileNames;\r\n    }\r\n\r\n    export interface LogicalFiles {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface DFUArrayActionRequest {\r\n        Type?: DFUArrayActions;\r\n        NoDelete?: boolean;\r\n        BackToPage?: string;\r\n        LogicalFiles?: LogicalFiles;\r\n        removeFromSuperfiles?: boolean;\r\n        removeRecursively?: boolean;\r\n        Protect?: DFUChangeProtection;\r\n        Restrict?: DFUChangeRestriction;\r\n    }\r\n\r\n    export interface DFUActionInfo {\r\n        FileName: string;\r\n        NodeGroup: string;\r\n        ActionResult: string;\r\n        Failed: boolean;\r\n    }\r\n\r\n    export interface ActionResults {\r\n        DFUActionInfo: DFUActionInfo[];\r\n    }\r\n\r\n    export interface DFUArrayActionResponse {\r\n        Exceptions: Exceptions;\r\n        BackToPage: string;\r\n        RedirectTo: string;\r\n        ActionResults: ActionResults;\r\n    }\r\n\r\n    export interface DFUBrowseDataRequest {\r\n        LogicalName?: string;\r\n        FilterBy?: string;\r\n        ShowColumns?: string;\r\n        SchemaOnly?: boolean;\r\n        StartForGoback?: long;\r\n        CountForGoback?: int;\r\n        ChooseFile?: int;\r\n        Cluster?: string;\r\n        ClusterType?: string;\r\n        ParentName?: string;\r\n        Start?: long;\r\n        Count?: int;\r\n        DisableUppercaseTranslation?: boolean;\r\n    }\r\n\r\n    export interface DFUDataColumn {\r\n        ColumnID: int;\r\n        ColumnLabel: string;\r\n        ColumnType: string;\r\n        ColumnValue: string;\r\n        ColumnSize: int;\r\n        MaxSize: int;\r\n        ColumnEclType: string;\r\n        ColumnRawSize: int;\r\n        IsNaturalColumn: boolean;\r\n        IsKeyedColumn: boolean;\r\n        DataColumns: DataColumns;\r\n    }\r\n\r\n    export interface DataColumns {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface ColumnHidden {\r\n        ColumnID: int;\r\n        ColumnLabel: string;\r\n        ColumnType: string;\r\n        ColumnValue: string;\r\n        ColumnSize: int;\r\n        MaxSize: int;\r\n        ColumnEclType: string;\r\n        ColumnRawSize: int;\r\n        IsNaturalColumn: boolean;\r\n        IsKeyedColumn: boolean;\r\n        DataColumns: DataColumns;\r\n    }\r\n\r\n    export interface ColumnsHidden {\r\n        ColumnHidden: ColumnHidden[];\r\n    }\r\n\r\n    export interface DFUBrowseDataResponse {\r\n        Exceptions: Exceptions;\r\n        Name: string;\r\n        LogicalName: string;\r\n        FilterBy: string;\r\n        FilterForGoBack: string;\r\n        ColumnsHidden: ColumnsHidden;\r\n        ColumnCount: int;\r\n        StartForGoback: long;\r\n        CountForGoback: int;\r\n        ChooseFile: int;\r\n        SchemaOnly: boolean;\r\n        Cluster: string;\r\n        ClusterType: string;\r\n        ParentName: string;\r\n        Start: long;\r\n        Count: long;\r\n        PageSize: long;\r\n        Total: long;\r\n        Result: string;\r\n        MsgToDisplay: string;\r\n        DisableUppercaseTranslation: boolean;\r\n    }\r\n\r\n    export interface DFUDefFileRequest {\r\n        Name?: string;\r\n        Format?: DFUDefFileFormat;\r\n    }\r\n\r\n    export interface DFUDefFileResponse {\r\n        Exceptions: Exceptions;\r\n        defFile: base64Binary;\r\n    }\r\n\r\n    export interface RequestBase {\r\n        Name: string;\r\n        Cluster: string;\r\n        JobId: string;\r\n        ExpirySeconds: int;\r\n        AccessRole: FileAccessRole;\r\n        AccessType: SecAccessType;\r\n        ReturnJsonTypeInfo: boolean;\r\n        ReturnBinTypeInfo: boolean;\r\n    }\r\n\r\n    export interface DFUFileAccessRequest {\r\n        RequestBase?: RequestBase;\r\n    }\r\n\r\n    export interface DFUPartLocation {\r\n        LocationIndex: int;\r\n        Host: string;\r\n    }\r\n\r\n    export interface FileLocations {\r\n        DFUPartLocation: DFUPartLocation[];\r\n    }\r\n\r\n    export interface DFUFileCopy {\r\n        CopyIndex: int;\r\n        LocationIndex: int;\r\n        Path: string;\r\n    }\r\n\r\n    export interface Copies {\r\n        DFUFileCopy: DFUFileCopy[];\r\n    }\r\n\r\n    export interface DFUFilePart {\r\n        PartIndex: int;\r\n        Copies: Copies;\r\n        TopLevelKey: boolean;\r\n    }\r\n\r\n    export interface FileParts {\r\n        DFUFilePart: DFUFilePart[];\r\n    }\r\n\r\n    export interface AccessInfo {\r\n        MetaInfoBlob: string;\r\n        ExpiryTime: string;\r\n        NumParts: int;\r\n        FileLocations: FileLocations;\r\n        FileParts: FileParts;\r\n        RecordTypeInfoJson: string;\r\n        fileAccessPort: int;\r\n        fileAccessSSL: boolean;\r\n    }\r\n\r\n    export interface DFUFileAccessResponse {\r\n        Exceptions: Exceptions;\r\n        AccessInfo: AccessInfo;\r\n        Type: DFUFileType;\r\n    }\r\n\r\n    export interface DFUFileAccessV2Request {\r\n        Name?: string;\r\n        Cluster?: string;\r\n        RequestId?: string;\r\n        ExpirySeconds?: int;\r\n        ReturnTextResponse?: boolean;\r\n        SessionId?: long;\r\n        LockTimeoutMs?: int;\r\n    }\r\n\r\n    export interface PartLocations {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface DFUFileCreateRequest {\r\n        ECLRecordDefinition?: string;\r\n        PartLocations?: PartLocations;\r\n        RequestBase?: RequestBase;\r\n    }\r\n\r\n    export interface DFUFileCreateResponse {\r\n        Exceptions: Exceptions;\r\n        FileId: string;\r\n        Warning: string;\r\n        AccessInfo: AccessInfo;\r\n    }\r\n\r\n    export interface DFUFileCreateV2Request {\r\n        Name?: string;\r\n        Cluster?: string;\r\n        Type?: DFUFileType;\r\n        ECLRecordDefinition?: string;\r\n        RequestId?: string;\r\n        ExpirySeconds?: int;\r\n        ReturnTextResponse?: boolean;\r\n        Compressed?: boolean;\r\n        SessionId?: long;\r\n        LockTimeoutMs?: int;\r\n    }\r\n\r\n    export interface DFUFilePublishRequest {\r\n        FileId?: string;\r\n        Overwrite?: boolean;\r\n        FileDescriptorBlob?: base64Binary;\r\n        SessionId?: long;\r\n        LockTimeoutMs?: int;\r\n        ECLRecordDefinition?: string;\r\n        RecordCount?: long;\r\n        FileSize?: long;\r\n    }\r\n\r\n    export interface DFUFilePublishResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface DFUFileViewRequest {\r\n        Scope?: string;\r\n        IncludeSuperOwner?: boolean;\r\n    }\r\n\r\n    export interface DFULogicalFile {\r\n        Prefix: string;\r\n        NodeGroup: string;\r\n        Directory: string;\r\n        Description: string;\r\n        Parts: string;\r\n        Name: string;\r\n        Owner: string;\r\n        Totalsize: string;\r\n        RecordCount: string;\r\n        Modified: string;\r\n        LongSize: string;\r\n        LongRecordCount: string;\r\n        isSuperfile: boolean;\r\n        isDirectory: boolean;\r\n        Replicate: boolean;\r\n        IntSize: long;\r\n        IntRecordCount: long;\r\n        FromRoxieCluster: boolean;\r\n        BrowseData: boolean;\r\n        IsCompressed: boolean;\r\n        ContentType: string;\r\n        CompressedFileSize: long;\r\n        SuperOwners: string;\r\n        Persistent: boolean;\r\n        IsProtected: boolean;\r\n        KeyType: string;\r\n        NumOfSubfiles: int;\r\n        Accessed: string;\r\n        AtRestCost: double;\r\n        AccessCost: double;\r\n        MinSkew: long;\r\n        MaxSkew: long;\r\n        MinSkewPart: long;\r\n        MaxSkewPart: long;\r\n    }\r\n\r\n    export interface DFULogicalFiles {\r\n        DFULogicalFile: DFULogicalFile[];\r\n    }\r\n\r\n    export interface DFUFileViewResponse {\r\n        Exceptions: Exceptions;\r\n        Scope: string;\r\n        NumFiles: int;\r\n        DFULogicalFiles: DFULogicalFiles;\r\n    }\r\n\r\n    export interface DFUGetDataColumnsRequest {\r\n        OpenLogicalName?: string;\r\n        LogicalName?: string;\r\n        FilterBy?: string;\r\n        ShowColumns?: string;\r\n        ChooseFile?: int;\r\n        Cluster?: string;\r\n        ClusterType?: string;\r\n        StartIndex?: long;\r\n        EndIndex?: long;\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns1 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns2 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns3 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns4 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns5 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns6 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns7 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns8 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns9 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns10 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns11 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns12 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns13 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns14 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns15 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns16 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns17 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns18 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns19 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataKeyedColumns20 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns1 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns2 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns3 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns4 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns5 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns6 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns7 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns8 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns9 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns10 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns11 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns12 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns13 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns14 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns15 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns16 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns17 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns18 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns19 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUDataNonKeyedColumns20 {\r\n        DFUDataColumn: DFUDataColumn[];\r\n    }\r\n\r\n    export interface DFUGetDataColumnsResponse {\r\n        Exceptions: Exceptions;\r\n        LogicalName: string;\r\n        StartIndex: long;\r\n        EndIndex: long;\r\n        DFUDataKeyedColumns1: DFUDataKeyedColumns1;\r\n        DFUDataKeyedColumns2: DFUDataKeyedColumns2;\r\n        DFUDataKeyedColumns3: DFUDataKeyedColumns3;\r\n        DFUDataKeyedColumns4: DFUDataKeyedColumns4;\r\n        DFUDataKeyedColumns5: DFUDataKeyedColumns5;\r\n        DFUDataKeyedColumns6: DFUDataKeyedColumns6;\r\n        DFUDataKeyedColumns7: DFUDataKeyedColumns7;\r\n        DFUDataKeyedColumns8: DFUDataKeyedColumns8;\r\n        DFUDataKeyedColumns9: DFUDataKeyedColumns9;\r\n        DFUDataKeyedColumns10: DFUDataKeyedColumns10;\r\n        DFUDataKeyedColumns11: DFUDataKeyedColumns11;\r\n        DFUDataKeyedColumns12: DFUDataKeyedColumns12;\r\n        DFUDataKeyedColumns13: DFUDataKeyedColumns13;\r\n        DFUDataKeyedColumns14: DFUDataKeyedColumns14;\r\n        DFUDataKeyedColumns15: DFUDataKeyedColumns15;\r\n        DFUDataKeyedColumns16: DFUDataKeyedColumns16;\r\n        DFUDataKeyedColumns17: DFUDataKeyedColumns17;\r\n        DFUDataKeyedColumns18: DFUDataKeyedColumns18;\r\n        DFUDataKeyedColumns19: DFUDataKeyedColumns19;\r\n        DFUDataKeyedColumns20: DFUDataKeyedColumns20;\r\n        DFUDataNonKeyedColumns1: DFUDataNonKeyedColumns1;\r\n        DFUDataNonKeyedColumns2: DFUDataNonKeyedColumns2;\r\n        DFUDataNonKeyedColumns3: DFUDataNonKeyedColumns3;\r\n        DFUDataNonKeyedColumns4: DFUDataNonKeyedColumns4;\r\n        DFUDataNonKeyedColumns5: DFUDataNonKeyedColumns5;\r\n        DFUDataNonKeyedColumns6: DFUDataNonKeyedColumns6;\r\n        DFUDataNonKeyedColumns7: DFUDataNonKeyedColumns7;\r\n        DFUDataNonKeyedColumns8: DFUDataNonKeyedColumns8;\r\n        DFUDataNonKeyedColumns9: DFUDataNonKeyedColumns9;\r\n        DFUDataNonKeyedColumns10: DFUDataNonKeyedColumns10;\r\n        DFUDataNonKeyedColumns11: DFUDataNonKeyedColumns11;\r\n        DFUDataNonKeyedColumns12: DFUDataNonKeyedColumns12;\r\n        DFUDataNonKeyedColumns13: DFUDataNonKeyedColumns13;\r\n        DFUDataNonKeyedColumns14: DFUDataNonKeyedColumns14;\r\n        DFUDataNonKeyedColumns15: DFUDataNonKeyedColumns15;\r\n        DFUDataNonKeyedColumns16: DFUDataNonKeyedColumns16;\r\n        DFUDataNonKeyedColumns17: DFUDataNonKeyedColumns17;\r\n        DFUDataNonKeyedColumns18: DFUDataNonKeyedColumns18;\r\n        DFUDataNonKeyedColumns19: DFUDataNonKeyedColumns19;\r\n        DFUDataNonKeyedColumns20: DFUDataNonKeyedColumns20;\r\n        RowCount: long;\r\n        ShowColumns: string;\r\n        ChooseFile: int;\r\n        Cluster: string;\r\n        ClusterType: string;\r\n    }\r\n\r\n    export interface DFUGetFileMetaDataRequest {\r\n        LogicalFileName?: string;\r\n        ClusterName?: string;\r\n        IncludeXmlSchema?: boolean;\r\n        AddHeaderInXmlSchema?: boolean;\r\n        IncludeXmlXPathSchema?: boolean;\r\n        AddHeaderInXmlXPathSchema?: boolean;\r\n    }\r\n\r\n    export interface DFUGetFileMetaDataResponse {\r\n        Exceptions: Exceptions;\r\n        TotalColumnCount: int;\r\n        KeyedColumnCount: int;\r\n        DataColumns: DataColumns;\r\n        XmlSchema: string;\r\n        XmlXPathSchema: string;\r\n        TotalResultRows: long;\r\n    }\r\n\r\n    export interface DFUMetaInquiryRequest {\r\n\r\n    }\r\n\r\n    export interface DFUMetaFieldInfo {\r\n        Name: string;\r\n        Type: string;\r\n    }\r\n\r\n    export interface Fields {\r\n        DFUMetaFieldInfo: DFUMetaFieldInfo[];\r\n    }\r\n\r\n    export interface DFUMetaInquiryResponse {\r\n        Exceptions: Exceptions;\r\n        Fields: Fields;\r\n    }\r\n\r\n    export interface DFUInfoRequest {\r\n        Name?: string;\r\n        Cluster?: string;\r\n        UpdateDescription?: boolean;\r\n        QuerySet?: string;\r\n        Query?: string;\r\n        FileDesc?: string;\r\n        IncludeJsonTypeInfo?: boolean;\r\n        IncludeBinTypeInfo?: boolean;\r\n        Protect?: DFUChangeProtection;\r\n        Restrict?: DFUChangeRestriction;\r\n        ForceIndexInfo?: boolean;\r\n    }\r\n\r\n    export interface Stat {\r\n        MinSkew: string;\r\n        MaxSkew: string;\r\n        MinSkewInt64: long;\r\n        MaxSkewInt64: long;\r\n        MinSkewPart: long;\r\n        MaxSkewPart: long;\r\n    }\r\n\r\n    export interface DFUPart {\r\n        Id: int;\r\n        Copy: int;\r\n        Ip: string;\r\n        Partsize: string;\r\n        PartSizeInt64: long;\r\n        CompressedSize: long;\r\n    }\r\n\r\n    export interface DFUFileParts {\r\n        DFUPart: DFUPart[];\r\n    }\r\n\r\n    export interface DFUFilePartsOnCluster {\r\n        Cluster: string;\r\n        BaseDir: string;\r\n        ReplicateDir: string;\r\n        Replicate: boolean;\r\n        CanReplicate: boolean;\r\n        DFUFileParts: DFUFileParts;\r\n    }\r\n\r\n    export interface DFUFilePartsOnClusters {\r\n        DFUFilePartsOnCluster: DFUFilePartsOnCluster[];\r\n    }\r\n\r\n    export interface subfiles {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Superfiles {\r\n        DFULogicalFile: DFULogicalFile[];\r\n    }\r\n\r\n    export interface DFUFileProtect {\r\n        Owner: string;\r\n        Modified: string;\r\n    }\r\n\r\n    export interface ProtectList {\r\n        DFUFileProtect: DFUFileProtect[];\r\n    }\r\n\r\n    export interface Graphs {\r\n        ECLGraph: string[];\r\n    }\r\n\r\n    export interface FieldNames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Partition {\r\n        FieldMask: long;\r\n        FieldNames: FieldNames;\r\n    }\r\n\r\n    export interface DFUFileBloom {\r\n        FieldMask: long;\r\n        FieldNames: FieldNames;\r\n        Limit: long;\r\n        Probability: string;\r\n    }\r\n\r\n    export interface Blooms {\r\n        DFUFileBloom: DFUFileBloom[];\r\n    }\r\n\r\n    export interface ExtendedIndexInfo {\r\n        IsLeafCountEstimated: boolean;\r\n        NumLeafNodes: long;\r\n        NumBlobNodes: long;\r\n        NumBranchNodes: long;\r\n        SizeDiskLeaves: long;\r\n        SizeDiskBlobs: long;\r\n        SizeDiskBranches: long;\r\n        SizeOriginalData: long;\r\n        SizeOriginalBranches: long;\r\n        SizeMemoryLeaves: long;\r\n        SizeMemoryBranches: long;\r\n        BranchCompressionPercent: double;\r\n        DataCompressionPercent: double;\r\n    }\r\n\r\n    export interface FileDetail {\r\n        Name: string;\r\n        Filename: string;\r\n        Prefix: string;\r\n        NodeGroup: string;\r\n        NumParts: int;\r\n        Description: string;\r\n        Dir: string;\r\n        PathMask: string;\r\n        Filesize: string;\r\n        FileSizeInt64: long;\r\n        RecordSize: string;\r\n        RecordCount: string;\r\n        RecordSizeInt64: long;\r\n        RecordCountInt64: long;\r\n        Wuid: string;\r\n        Owner: string;\r\n        JobName: string;\r\n        Persistent: string;\r\n        Format: string;\r\n        MaxRecordSize: string;\r\n        CsvSeparate: string;\r\n        CsvQuote: string;\r\n        CsvTerminate: string;\r\n        CsvEscape: string;\r\n        Modified: string;\r\n        Ecl: string;\r\n        Stat: Stat;\r\n        DFUFilePartsOnClusters: DFUFilePartsOnClusters;\r\n        isSuperfile: boolean;\r\n        ShowFileContent: boolean;\r\n        subfiles: subfiles;\r\n        Superfiles: Superfiles;\r\n        ProtectList: ProtectList;\r\n        FromRoxieCluster: boolean;\r\n        Graphs: Graphs;\r\n        UserPermission: string;\r\n        ContentType: string;\r\n        CompressedFileSize: long;\r\n        PercentCompressed: string;\r\n        IsCompressed: boolean;\r\n        IsRestricted: boolean;\r\n        BrowseData: boolean;\r\n        jsonInfo: string;\r\n        binInfo: base64Binary;\r\n        PackageID: string;\r\n        Partition: Partition;\r\n        Blooms: Blooms;\r\n        ExpireDays: int;\r\n        KeyType: string;\r\n        AtRestCost: double;\r\n        AccessCost: double;\r\n        ExpirationDate: string;\r\n        ExtendedIndexInfo: ExtendedIndexInfo;\r\n        CompressionType: string;\r\n    }\r\n\r\n    export interface DFUInfoResponse {\r\n        Exceptions: Exceptions;\r\n        FileDetail: FileDetail;\r\n    }\r\n\r\n    export interface DFUQueryRequest {\r\n        Prefix?: string;\r\n        NodeGroup?: string;\r\n        ContentType?: string;\r\n        InvertContent?: boolean;\r\n        LogicalName?: string;\r\n        Owner?: string;\r\n        StartDate?: string;\r\n        EndDate?: string;\r\n        FileType?: string;\r\n        FileSizeFrom?: long;\r\n        FileSizeTo?: long;\r\n        FirstN?: int;\r\n        PageSize?: int;\r\n        PageStartFrom?: int;\r\n        Sortby?: string;\r\n        Fields?: string;\r\n        Descending?: boolean;\r\n        OneLevelDirFileReturn?: boolean;\r\n        CacheHint?: long;\r\n        MaxNumberOfFiles?: int;\r\n        IncludeSuperOwner?: boolean;\r\n        StartAccessedTime?: string;\r\n        EndAccessedTime?: string;\r\n        MaxSkewFrom?: long;\r\n        MaxSkewTo?: long;\r\n        MinSkewFrom?: long;\r\n        MinSkewTo?: long;\r\n    }\r\n\r\n    export interface DFUQueryResponse {\r\n        Exceptions: Exceptions;\r\n        DFULogicalFiles: DFULogicalFiles;\r\n        Prefix: string;\r\n        NodeGroup: string;\r\n        LogicalName: string;\r\n        Description: string;\r\n        Owner: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        FileType: string;\r\n        FileSizeFrom: long;\r\n        FileSizeTo: long;\r\n        FirstN: int;\r\n        PageSize: int;\r\n        PageStartFrom: long;\r\n        LastPageFrom: long;\r\n        PageEndAt: long;\r\n        PrevPageFrom: long;\r\n        NextPageFrom: long;\r\n        NumFiles: long;\r\n        Sortby: string;\r\n        Descending: boolean;\r\n        BasicQuery: string;\r\n        ParametersForPaging: string;\r\n        Filters: string;\r\n        CacheHint: long;\r\n        IsSubsetOfFiles: boolean;\r\n        Warning: string;\r\n    }\r\n\r\n    export interface DFURecordTypeInfoRequest {\r\n        Name?: string;\r\n        IncludeJsonTypeInfo?: boolean;\r\n        IncludeBinTypeInfo?: boolean;\r\n    }\r\n\r\n    export interface DFURecordTypeInfoResponse {\r\n        jsonInfo: string;\r\n        binInfo: base64Binary;\r\n    }\r\n\r\n    export interface DFUSearchRequest {\r\n        ShowExample?: string;\r\n    }\r\n\r\n    export interface ClusterNames {\r\n        ClusterName: string[];\r\n    }\r\n\r\n    export interface FileTypes {\r\n        FileType: string[];\r\n    }\r\n\r\n    export interface DFUSearchResponse {\r\n        Exceptions: Exceptions;\r\n        ShowExample: string;\r\n        ClusterNames: ClusterNames;\r\n        FileTypes: FileTypes;\r\n    }\r\n\r\n    export interface DFUSearchDataRequest {\r\n        Cluster?: string;\r\n        ClusterType?: string;\r\n        OpenLogicalName?: string;\r\n        FilterBy?: string;\r\n        ShowColumns?: string;\r\n        ChooseFile?: int;\r\n        StartIndex?: long;\r\n        EndIndex?: long;\r\n        LogicalName?: string;\r\n        ParentName?: string;\r\n        StartForGoback?: long;\r\n        CountForGoback?: int;\r\n        Start?: long;\r\n        Count?: int;\r\n        File?: string;\r\n        Key?: string;\r\n        SchemaOnly?: boolean;\r\n        RoxieSelections?: boolean;\r\n        DisableUppercaseTranslation?: boolean;\r\n        SelectedKey?: string;\r\n    }\r\n\r\n    export interface DFUSearchDataResponse {\r\n        Exceptions: Exceptions;\r\n        OpenLogicalName: string;\r\n        LogicalName: string;\r\n        ParentName: string;\r\n        StartIndex: long;\r\n        EndIndex: long;\r\n        DFUDataKeyedColumns1: DFUDataKeyedColumns1;\r\n        DFUDataKeyedColumns2: DFUDataKeyedColumns2;\r\n        DFUDataKeyedColumns3: DFUDataKeyedColumns3;\r\n        DFUDataKeyedColumns4: DFUDataKeyedColumns4;\r\n        DFUDataKeyedColumns5: DFUDataKeyedColumns5;\r\n        DFUDataKeyedColumns6: DFUDataKeyedColumns6;\r\n        DFUDataKeyedColumns7: DFUDataKeyedColumns7;\r\n        DFUDataKeyedColumns8: DFUDataKeyedColumns8;\r\n        DFUDataKeyedColumns9: DFUDataKeyedColumns9;\r\n        DFUDataKeyedColumns10: DFUDataKeyedColumns10;\r\n        DFUDataKeyedColumns11: DFUDataKeyedColumns11;\r\n        DFUDataKeyedColumns12: DFUDataKeyedColumns12;\r\n        DFUDataKeyedColumns13: DFUDataKeyedColumns13;\r\n        DFUDataKeyedColumns14: DFUDataKeyedColumns14;\r\n        DFUDataKeyedColumns15: DFUDataKeyedColumns15;\r\n        DFUDataKeyedColumns16: DFUDataKeyedColumns16;\r\n        DFUDataKeyedColumns17: DFUDataKeyedColumns17;\r\n        DFUDataKeyedColumns18: DFUDataKeyedColumns18;\r\n        DFUDataKeyedColumns19: DFUDataKeyedColumns19;\r\n        DFUDataKeyedColumns20: DFUDataKeyedColumns20;\r\n        DFUDataNonKeyedColumns1: DFUDataNonKeyedColumns1;\r\n        DFUDataNonKeyedColumns2: DFUDataNonKeyedColumns2;\r\n        DFUDataNonKeyedColumns3: DFUDataNonKeyedColumns3;\r\n        DFUDataNonKeyedColumns4: DFUDataNonKeyedColumns4;\r\n        DFUDataNonKeyedColumns5: DFUDataNonKeyedColumns5;\r\n        DFUDataNonKeyedColumns6: DFUDataNonKeyedColumns6;\r\n        DFUDataNonKeyedColumns7: DFUDataNonKeyedColumns7;\r\n        DFUDataNonKeyedColumns8: DFUDataNonKeyedColumns8;\r\n        DFUDataNonKeyedColumns9: DFUDataNonKeyedColumns9;\r\n        DFUDataNonKeyedColumns10: DFUDataNonKeyedColumns10;\r\n        DFUDataNonKeyedColumns11: DFUDataNonKeyedColumns11;\r\n        DFUDataNonKeyedColumns12: DFUDataNonKeyedColumns12;\r\n        DFUDataNonKeyedColumns13: DFUDataNonKeyedColumns13;\r\n        DFUDataNonKeyedColumns14: DFUDataNonKeyedColumns14;\r\n        DFUDataNonKeyedColumns15: DFUDataNonKeyedColumns15;\r\n        DFUDataNonKeyedColumns16: DFUDataNonKeyedColumns16;\r\n        DFUDataNonKeyedColumns17: DFUDataNonKeyedColumns17;\r\n        DFUDataNonKeyedColumns18: DFUDataNonKeyedColumns18;\r\n        DFUDataNonKeyedColumns19: DFUDataNonKeyedColumns19;\r\n        DFUDataNonKeyedColumns20: DFUDataNonKeyedColumns20;\r\n        RowCount: long;\r\n        ShowColumns: string;\r\n        ChooseFile: int;\r\n        Name: string;\r\n        FilterBy: string;\r\n        FilterForGoBack: string;\r\n        ColumnsHidden: ColumnsHidden;\r\n        ColumnCount: int;\r\n        StartForGoback: long;\r\n        CountForGoback: int;\r\n        Start: long;\r\n        Count: long;\r\n        PageSize: long;\r\n        Total: long;\r\n        Result: string;\r\n        MsgToDisplay: string;\r\n        Cluster: string;\r\n        ClusterType: string;\r\n        File: string;\r\n        Key: string;\r\n        SchemaOnly: boolean;\r\n        RoxieSelections: boolean;\r\n        DisableUppercaseTranslation: boolean;\r\n        AutoUppercaseTranslation: boolean;\r\n        SelectedKey: string;\r\n    }\r\n\r\n    export interface DFUSpaceRequest {\r\n        CountBy?: string;\r\n        ScopeUnder?: string;\r\n        OwnerUnder?: string;\r\n        Interval?: string;\r\n        StartDate?: string;\r\n        EndDate?: string;\r\n    }\r\n\r\n    export interface DFUSpaceItem {\r\n        Name: string;\r\n        NumOfFiles: string;\r\n        NumOfFilesUnknown: string;\r\n        TotalSize: string;\r\n        LargestFile: string;\r\n        LargestSize: string;\r\n        SmallestFile: string;\r\n        SmallestSize: string;\r\n        NumOfFilesInt64: long;\r\n        NumOfFilesUnknownInt64: long;\r\n        TotalSizeInt64: long;\r\n        LargestSizeInt64: long;\r\n        SmallestSizeInt64: long;\r\n    }\r\n\r\n    export interface DFUSpaceItems {\r\n        DFUSpaceItem: DFUSpaceItem[];\r\n    }\r\n\r\n    export interface DFUSpaceResponse {\r\n        Exceptions: Exceptions;\r\n        CountBy: string;\r\n        ScopeUnder: string;\r\n        OwnerUnder: string;\r\n        Interval: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        DFUSpaceItems: DFUSpaceItems;\r\n    }\r\n\r\n    export interface EclRecordTypeInfoRequest {\r\n        Ecl?: string;\r\n        IncludeJsonTypeInfo?: boolean;\r\n        IncludeBinTypeInfo?: boolean;\r\n    }\r\n\r\n    export interface EclRecordTypeInfoResponse {\r\n        jsonInfo: string;\r\n        binInfo: base64Binary;\r\n    }\r\n\r\n    export interface EraseHistoryRequest {\r\n        Name?: string;\r\n    }\r\n\r\n    export interface Origin {\r\n        Name: string;\r\n        Operation: string;\r\n        Timestamp: string;\r\n        IP: string;\r\n        Path: string;\r\n        Owner: string;\r\n        Workunit: string;\r\n    }\r\n\r\n    export interface History {\r\n        Origin: Origin[];\r\n    }\r\n\r\n    export interface EraseHistoryResponse {\r\n        Exceptions: Exceptions;\r\n        History: History;\r\n    }\r\n\r\n    export interface ListHistoryRequest {\r\n        Name?: string;\r\n    }\r\n\r\n    export interface ListHistoryResponse {\r\n        Exceptions: Exceptions;\r\n        History: History;\r\n    }\r\n\r\n    export interface WsDfuPingRequest {\r\n\r\n    }\r\n\r\n    export interface WsDfuPingResponse {\r\n\r\n    }\r\n\r\n    export interface SavexmlRequest {\r\n        name?: string;\r\n    }\r\n\r\n    export interface SavexmlResponse {\r\n        Exceptions: Exceptions;\r\n        xmlmap: base64Binary;\r\n    }\r\n\r\n    export interface SuperfileActionRequest {\r\n        action?: string;\r\n        superfile?: string;\r\n        subfiles?: subfiles;\r\n        before?: string;\r\n        delete?: boolean;\r\n        removeSuperfile?: boolean;\r\n    }\r\n\r\n    export interface SuperfileActionResponse {\r\n        Exceptions: Exceptions;\r\n        superfile: string;\r\n        retcode: int;\r\n    }\r\n\r\n    export interface SuperfileListRequest {\r\n        superfile?: string;\r\n    }\r\n\r\n    export interface SuperfileListResponse {\r\n        Exceptions: Exceptions;\r\n        superfile: string;\r\n        subfiles: subfiles;\r\n    }\r\n\r\n}\r\n\r\nexport class DfuServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsDfu\", \"1.67\");\r\n    }\r\n\r\n    Add(request: Partial<WsDfu.AddRequest>): Promise<WsDfu.AddResponse> {\r\n        return this._connection.send(\"Add\", request, \"json\", false, undefined, \"AddResponse\");\r\n    }\r\n\r\n    AddRemote(request: Partial<WsDfu.AddRemoteRequest>): Promise<WsDfu.AddRemoteResponse> {\r\n        return this._connection.send(\"AddRemote\", request, \"json\", false, undefined, \"AddRemoteResponse\");\r\n    }\r\n\r\n    AddtoSuperfile(request: Partial<WsDfu.AddtoSuperfileRequest>): Promise<WsDfu.AddtoSuperfileResponse> {\r\n        return this._connection.send(\"AddtoSuperfile\", request, \"json\", false, undefined, \"AddtoSuperfileResponse\");\r\n    }\r\n\r\n    DFUArrayAction(request: Partial<WsDfu.DFUArrayActionRequest>): Promise<WsDfu.DFUArrayActionResponse> {\r\n        return this._connection.send(\"DFUArrayAction\", request, \"json\", false, undefined, \"DFUArrayActionResponse\");\r\n    }\r\n\r\n    DFUBrowseData(request: Partial<WsDfu.DFUBrowseDataRequest>): Promise<WsDfu.DFUBrowseDataResponse> {\r\n        return this._connection.send(\"DFUBrowseData\", request, \"json\", false, undefined, \"DFUBrowseDataResponse\");\r\n    }\r\n\r\n    DFUDefFile(request: Partial<WsDfu.DFUDefFileRequest>): Promise<WsDfu.DFUDefFileResponse> {\r\n        return this._connection.send(\"DFUDefFile\", request, \"json\", false, undefined, \"DFUDefFileResponse\");\r\n    }\r\n\r\n    DFUFileAccess(request: Partial<WsDfu.DFUFileAccessRequest>): Promise<WsDfu.DFUFileAccessResponse> {\r\n        return this._connection.send(\"DFUFileAccess\", request, \"json\", false, undefined, \"DFUFileAccessResponse\");\r\n    }\r\n\r\n    DFUFileAccessV2(request: Partial<WsDfu.DFUFileAccessV2Request>): Promise<WsDfu.DFUFileAccessResponse> {\r\n        return this._connection.send(\"DFUFileAccessV2\", request, \"json\", false, undefined, \"DFUFileAccessResponse\");\r\n    }\r\n\r\n    DFUFileCreate(request: Partial<WsDfu.DFUFileCreateRequest>): Promise<WsDfu.DFUFileCreateResponse> {\r\n        return this._connection.send(\"DFUFileCreate\", request, \"json\", false, undefined, \"DFUFileCreateResponse\");\r\n    }\r\n\r\n    DFUFileCreateV2(request: Partial<WsDfu.DFUFileCreateV2Request>): Promise<WsDfu.DFUFileCreateResponse> {\r\n        return this._connection.send(\"DFUFileCreateV2\", request, \"json\", false, undefined, \"DFUFileCreateResponse\");\r\n    }\r\n\r\n    DFUFilePublish(request: Partial<WsDfu.DFUFilePublishRequest>): Promise<WsDfu.DFUFilePublishResponse> {\r\n        return this._connection.send(\"DFUFilePublish\", request, \"json\", false, undefined, \"DFUFilePublishResponse\");\r\n    }\r\n\r\n    DFUFileView(request: Partial<WsDfu.DFUFileViewRequest>): Promise<WsDfu.DFUFileViewResponse> {\r\n        return this._connection.send(\"DFUFileView\", request, \"json\", false, undefined, \"DFUFileViewResponse\");\r\n    }\r\n\r\n    DFUGetDataColumns(request: Partial<WsDfu.DFUGetDataColumnsRequest>): Promise<WsDfu.DFUGetDataColumnsResponse> {\r\n        return this._connection.send(\"DFUGetDataColumns\", request, \"json\", false, undefined, \"DFUGetDataColumnsResponse\");\r\n    }\r\n\r\n    DFUGetFileMetaData(request: Partial<WsDfu.DFUGetFileMetaDataRequest>): Promise<WsDfu.DFUGetFileMetaDataResponse> {\r\n        return this._connection.send(\"DFUGetFileMetaData\", request, \"json\", false, undefined, \"DFUGetFileMetaDataResponse\");\r\n    }\r\n\r\n    DFUGetMetaInquiry(request: Partial<WsDfu.DFUMetaInquiryRequest>): Promise<WsDfu.DFUMetaInquiryResponse> {\r\n        return this._connection.send(\"DFUGetMetaInquiry\", request, \"json\", false, undefined, \"DFUMetaInquiryResponse\");\r\n    }\r\n\r\n    DFUInfo(request: Partial<WsDfu.DFUInfoRequest>): Promise<WsDfu.DFUInfoResponse> {\r\n        return this._connection.send(\"DFUInfo\", request, \"json\", false, undefined, \"DFUInfoResponse\");\r\n    }\r\n\r\n    DFUQuery(request: Partial<WsDfu.DFUQueryRequest>): Promise<WsDfu.DFUQueryResponse> {\r\n        return this._connection.send(\"DFUQuery\", request, \"json\", false, undefined, \"DFUQueryResponse\");\r\n    }\r\n\r\n    DFURecordTypeInfo(request: Partial<WsDfu.DFURecordTypeInfoRequest>): Promise<WsDfu.DFURecordTypeInfoResponse> {\r\n        return this._connection.send(\"DFURecordTypeInfo\", request, \"json\", false, undefined, \"DFURecordTypeInfoResponse\");\r\n    }\r\n\r\n    DFUSearch(request: Partial<WsDfu.DFUSearchRequest>): Promise<WsDfu.DFUSearchResponse> {\r\n        return this._connection.send(\"DFUSearch\", request, \"json\", false, undefined, \"DFUSearchResponse\");\r\n    }\r\n\r\n    DFUSearchData(request: Partial<WsDfu.DFUSearchDataRequest>): Promise<WsDfu.DFUSearchDataResponse> {\r\n        return this._connection.send(\"DFUSearchData\", request, \"json\", false, undefined, \"DFUSearchDataResponse\");\r\n    }\r\n\r\n    DFUSpace(request: Partial<WsDfu.DFUSpaceRequest>): Promise<WsDfu.DFUSpaceResponse> {\r\n        return this._connection.send(\"DFUSpace\", request, \"json\", false, undefined, \"DFUSpaceResponse\");\r\n    }\r\n\r\n    EclRecordTypeInfo(request: Partial<WsDfu.EclRecordTypeInfoRequest>): Promise<WsDfu.EclRecordTypeInfoResponse> {\r\n        return this._connection.send(\"EclRecordTypeInfo\", request, \"json\", false, undefined, \"EclRecordTypeInfoResponse\");\r\n    }\r\n\r\n    EraseHistory(request: Partial<WsDfu.EraseHistoryRequest>): Promise<WsDfu.EraseHistoryResponse> {\r\n        return this._connection.send(\"EraseHistory\", request, \"json\", false, undefined, \"EraseHistoryResponse\");\r\n    }\r\n\r\n    ListHistory(request: Partial<WsDfu.ListHistoryRequest>): Promise<WsDfu.ListHistoryResponse> {\r\n        return this._connection.send(\"ListHistory\", request, \"json\", false, undefined, \"ListHistoryResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsDfu.WsDfuPingRequest>): Promise<WsDfu.WsDfuPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsDfuPingResponse\");\r\n    }\r\n\r\n    Savexml(request: Partial<WsDfu.SavexmlRequest>): Promise<WsDfu.SavexmlResponse> {\r\n        return this._connection.send(\"Savexml\", request, \"json\", false, undefined, \"SavexmlResponse\");\r\n    }\r\n\r\n    SuperfileAction(request: Partial<WsDfu.SuperfileActionRequest>): Promise<WsDfu.SuperfileActionResponse> {\r\n        return this._connection.send(\"SuperfileAction\", request, \"json\", false, undefined, \"SuperfileActionResponse\");\r\n    }\r\n\r\n    SuperfileList(request: Partial<WsDfu.SuperfileListRequest>): Promise<WsDfu.SuperfileListResponse> {\r\n        return this._connection.send(\"SuperfileList\", request, \"json\", false, undefined, \"SuperfileListResponse\");\r\n    }\r\n\r\n}\r\n", "import { DfuServiceBase, WsDfu } from \"./wsdl/WsDfu/v1.67/WsDfu.ts\";\r\n\r\nexport { WsDfu };\r\n\r\nexport const DFUArrayActions = WsDfu.DFUArrayActions;\r\nexport const DFUDefFileFormat = WsDfu.DFUDefFileFormat;\r\nexport const DFUChangeProtection = WsDfu.DFUChangeProtection;\r\nexport const DFUChangeRestriction = WsDfu.DFUChangeRestriction;\r\n\r\nexport type base64Binary = WsDfu.base64Binary;\r\n\r\nexport class DFUService extends DfuServiceBase {\r\n\r\n    DFUFile(request: WsDfu.DFUDefFileRequest): Promise<string> {\r\n        return this._connection.send(\"DFUDefFile\", request, \"text\");\r\n    }\r\n\r\n    async recursiveFetchLogicalFiles(superFiles: { NodeGroup: string, Name: string }[]): Promise<string[]> {\r\n        const childSuperFiles: WsDfu.DFULogicalFile[] = [];\r\n        const logicalFiles: string[] = [];\r\n        await Promise.all(superFiles.map(superFile => {\r\n            return this.DFUInfo({ Cluster: superFile.NodeGroup, Name: superFile.Name, IncludeJsonTypeInfo: false, IncludeBinTypeInfo: false, ForceIndexInfo: false })\r\n                .then(response => {\r\n                    for (const child of response?.FileDetail?.Superfiles?.DFULogicalFile ?? []) {\r\n                        childSuperFiles.push(child);\r\n                    }\r\n                    for (const child of response?.FileDetail?.subfiles?.Item ?? []) {\r\n                        logicalFiles.push(child);\r\n                    }\r\n                });\r\n        }));\r\n        return logicalFiles.concat(childSuperFiles.length ? await this.recursiveFetchLogicalFiles(childSuperFiles) : []);\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsDFUXRef {\r\n\r\n    export type unsignedInt = number;\r\n    export type long = number;\r\n\r\n    export interface XRefFiles {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface DFUXRefArrayActionRequest {\r\n        Type?: string;\r\n        Cluster?: string;\r\n        Action?: string;\r\n        XRefFiles?: XRefFiles;\r\n        RemoveFromSuperfiles?: boolean;\r\n    }\r\n\r\n    export interface DFUXRefArrayActionResponse {\r\n        DFUXRefArrayActionResult: string;\r\n    }\r\n\r\n    export interface DFUXRefBuildRequest {\r\n        Cluster?: string;\r\n    }\r\n\r\n    export interface DFUXRefBuildResponse {\r\n        DFUXRefActionResult: string;\r\n    }\r\n\r\n    export interface DFUXRefBuildCancelRequest {\r\n\r\n    }\r\n\r\n    export interface DFUXRefBuildCancelResponse {\r\n        DFUXRefBuildCancelResult: string;\r\n    }\r\n\r\n    export interface DFUXRefCleanDirectoriesRequest {\r\n        Cluster?: string;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface DFUXRefCleanDirectoriesResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface DFUXRefDirectoriesQueryRequest {\r\n        Cluster?: string;\r\n    }\r\n\r\n    export interface DFUXRefDirectoriesQueryResponse {\r\n        DFUXRefDirectoriesQueryResult: string;\r\n    }\r\n\r\n    export interface DFUXRefFoundFilesQueryRequest {\r\n        Cluster?: string;\r\n    }\r\n\r\n    export interface DFUXRefFoundFilesQueryResponse {\r\n        DFUXRefFoundFilesQueryResult: string;\r\n    }\r\n\r\n    export interface DFUXRefListRequest {\r\n\r\n    }\r\n\r\n    export interface DFUXRefListResponse {\r\n        DFUXRefListResult: string;\r\n    }\r\n\r\n    export interface DFUXRefLostFilesQueryRequest {\r\n        Cluster?: string;\r\n    }\r\n\r\n    export interface DFUXRefLostFilesQueryResponse {\r\n        DFUXRefLostFilesQueryResult: string;\r\n    }\r\n\r\n    export interface DFUXRefMessagesQueryRequest {\r\n        Cluster?: string;\r\n    }\r\n\r\n    export interface DFUXRefMessagesQueryResponse {\r\n        DFUXRefMessagesQueryResult: string;\r\n    }\r\n\r\n    export interface DFUXRefOrphanFilesQueryRequest {\r\n        Cluster?: string;\r\n    }\r\n\r\n    export interface DFUXRefOrphanFilesQueryResponse {\r\n        DFUXRefOrphanFilesQueryResult: string;\r\n    }\r\n\r\n    export interface ProcessClusterList {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface CheckPlanes {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface DFUXRefUnusedFilesRequest {\r\n        ProcessCluster?: string;\r\n        CheckPackageMaps?: boolean;\r\n        GetFileDetails?: boolean;\r\n        ProcessClusterList?: ProcessClusterList;\r\n        CheckPlanes?: CheckPlanes;\r\n    }\r\n\r\n    export interface UnusedFiles {\r\n        File: string[];\r\n    }\r\n\r\n    export interface DFULogicalFile {\r\n        Prefix: string;\r\n        ClusterName: string;\r\n        Directory: string;\r\n        Description: string;\r\n        Parts: string;\r\n        Name: string;\r\n        Owner: string;\r\n        Totalsize: string;\r\n        RecordCount: string;\r\n        Modified: string;\r\n        LongSize: string;\r\n        LongRecordCount: string;\r\n        isSuperfile: boolean;\r\n        isZipfile: boolean;\r\n        isDirectory: boolean;\r\n        Replicate: boolean;\r\n        IntSize: long;\r\n        IntRecordCount: long;\r\n        FromRoxieCluster: boolean;\r\n        BrowseData: boolean;\r\n    }\r\n\r\n    export interface UnusedFilesWithDetails {\r\n        DFULogicalFile: DFULogicalFile[];\r\n    }\r\n\r\n    export interface DFUXRefUnusedFilesResponse {\r\n        Exceptions: Exceptions;\r\n        UnusedFileCount: unsignedInt;\r\n        UnusedFiles: UnusedFiles;\r\n        UnusedFilesWithDetails: UnusedFilesWithDetails;\r\n    }\r\n\r\n    export interface WsDFUXRefPingRequest {\r\n\r\n    }\r\n\r\n    export interface WsDFUXRefPingResponse {\r\n\r\n    }\r\n\r\n}\r\n\r\nexport class DFUXRefServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsDFUXRef\", \"1.04\");\r\n    }\r\n\r\n    DFUXRefArrayAction(request: Partial<WsDFUXRef.DFUXRefArrayActionRequest>): Promise<WsDFUXRef.DFUXRefArrayActionResponse> {\r\n        return this._connection.send(\"DFUXRefArrayAction\", request, \"json\", false, undefined, \"DFUXRefArrayActionResponse\");\r\n    }\r\n\r\n    DFUXRefBuild(request: Partial<WsDFUXRef.DFUXRefBuildRequest>): Promise<WsDFUXRef.DFUXRefBuildResponse> {\r\n        return this._connection.send(\"DFUXRefBuild\", request, \"json\", false, undefined, \"DFUXRefBuildResponse\");\r\n    }\r\n\r\n    DFUXRefBuildCancel(request: Partial<WsDFUXRef.DFUXRefBuildCancelRequest>): Promise<WsDFUXRef.DFUXRefBuildCancelResponse> {\r\n        return this._connection.send(\"DFUXRefBuildCancel\", request, \"json\", false, undefined, \"DFUXRefBuildCancelResponse\");\r\n    }\r\n\r\n    DFUXRefCleanDirectories(request: Partial<WsDFUXRef.DFUXRefCleanDirectoriesRequest>): Promise<WsDFUXRef.DFUXRefCleanDirectoriesResponse> {\r\n        return this._connection.send(\"DFUXRefCleanDirectories\", request, \"json\", false, undefined, \"DFUXRefCleanDirectoriesResponse\");\r\n    }\r\n\r\n    DFUXRefDirectories(request: Partial<WsDFUXRef.DFUXRefDirectoriesQueryRequest>): Promise<WsDFUXRef.DFUXRefDirectoriesQueryResponse> {\r\n        return this._connection.send(\"DFUXRefDirectories\", request, \"json\", false, undefined, \"DFUXRefDirectoriesQueryResponse\");\r\n    }\r\n\r\n    DFUXRefFoundFiles(request: Partial<WsDFUXRef.DFUXRefFoundFilesQueryRequest>): Promise<WsDFUXRef.DFUXRefFoundFilesQueryResponse> {\r\n        return this._connection.send(\"DFUXRefFoundFiles\", request, \"json\", false, undefined, \"DFUXRefFoundFilesQueryResponse\");\r\n    }\r\n\r\n    DFUXRefList(request: Partial<WsDFUXRef.DFUXRefListRequest>): Promise<WsDFUXRef.DFUXRefListResponse> {\r\n        return this._connection.send(\"DFUXRefList\", request, \"json\", false, undefined, \"DFUXRefListResponse\");\r\n    }\r\n\r\n    DFUXRefLostFiles(request: Partial<WsDFUXRef.DFUXRefLostFilesQueryRequest>): Promise<WsDFUXRef.DFUXRefLostFilesQueryResponse> {\r\n        return this._connection.send(\"DFUXRefLostFiles\", request, \"json\", false, undefined, \"DFUXRefLostFilesQueryResponse\");\r\n    }\r\n\r\n    DFUXRefMessages(request: Partial<WsDFUXRef.DFUXRefMessagesQueryRequest>): Promise<WsDFUXRef.DFUXRefMessagesQueryResponse> {\r\n        return this._connection.send(\"DFUXRefMessages\", request, \"json\", false, undefined, \"DFUXRefMessagesQueryResponse\");\r\n    }\r\n\r\n    DFUXRefOrphanFiles(request: Partial<WsDFUXRef.DFUXRefOrphanFilesQueryRequest>): Promise<WsDFUXRef.DFUXRefOrphanFilesQueryResponse> {\r\n        return this._connection.send(\"DFUXRefOrphanFiles\", request, \"json\", false, undefined, \"DFUXRefOrphanFilesQueryResponse\");\r\n    }\r\n\r\n    DFUXRefUnusedFiles(request: Partial<WsDFUXRef.DFUXRefUnusedFilesRequest>): Promise<WsDFUXRef.DFUXRefUnusedFilesResponse> {\r\n        return this._connection.send(\"DFUXRefUnusedFiles\", request, \"json\", false, undefined, \"DFUXRefUnusedFilesResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsDFUXRef.WsDFUXRefPingRequest>): Promise<WsDFUXRef.WsDFUXRefPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsDFUXRefPingResponse\");\r\n    }\r\n\r\n}\r\n", "import { DFUXRefServiceBase, type WsDFUXRef } from \"./wsdl/WsDFUXRef/v1.04/WsDFUXRef.ts\";\r\n\r\nexport {\r\n    type WsDFUXRef\r\n};\r\n\r\nexport namespace WsDFUXRefEx {\r\n\r\n    export interface Request {\r\n        DFUXRefArrayActionRequest: WsDFUXRef.DFUXRefArrayActionRequest;\r\n        DFUXRefBuildRequest: WsDFUXRef.DFUXRefBuildRequest;\r\n        DFUXRefBuildCancelRequest: WsDFUXRef.DFUXRefBuildCancelRequest;\r\n        DFUXRefCleanDirectoriesRequest: WsDFUXRef.DFUXRefCleanDirectoriesRequest;\r\n        DFUXRefDirectoriesQueryRequest: WsDFUXRef.DFUXRefDirectoriesQueryRequest;\r\n        DFUXRefFoundFilesQueryRequest: WsDFUXRef.DFUXRefFoundFilesQueryRequest;\r\n        DFUXRefListRequest: WsDFUXRef.DFUXRefListRequest;\r\n        DFUXRefLostFilesQueryRequest: WsDFUXRef.DFUXRefLostFilesQueryRequest;\r\n        DFUXRefMessagesQueryRequest: WsDFUXRef.DFUXRefMessagesQueryRequest;\r\n        DFUXRefOrphanFilesQueryRequest: WsDFUXRef.DFUXRefOrphanFilesQueryRequest;\r\n        DFUXRefUnusedFilesRequest: WsDFUXRef.DFUXRefUnusedFilesRequest;\r\n        WsDFUXRefPingRequest: WsDFUXRef.WsDFUXRefPingRequest;\r\n    }\r\n\r\n    export interface Directory {\r\n        Num: string;\r\n        Name: string;\r\n        MaxSize: string;\r\n        MaxIP: string;\r\n        MinSize: string;\r\n        MinIP: string;\r\n        Size: string;\r\n        PositiveSkew: string;\r\n    }\r\n\r\n    interface DFUXRefDirectoriesQueryResult {\r\n        Directory: Directory[];\r\n        Cluster: string;\r\n    }\r\n\r\n    export interface DFUXRefDirectoriesQueryResponseEx {\r\n        DFUXRefDirectoriesQueryResult: DFUXRefDirectoriesQueryResult;\r\n    }\r\n\r\n    export interface Part {\r\n        Num: string;\r\n        Node: string;\r\n    }\r\n\r\n    export interface DFUXRefFile {\r\n        Size: string;\r\n        Partmask: string;\r\n        Modified: Date;\r\n        Numparts: string;\r\n        Part: Part[];\r\n    }\r\n\r\n    export interface DFUXRefFoundFilesQueryResult {\r\n        File: DFUXRefFile[];\r\n        Cluster: string;\r\n    }\r\n\r\n    export interface XRefNode {\r\n        Name: string;\r\n        Modified: string;\r\n        Status: string;\r\n    }\r\n\r\n    export interface DFUXRefListResult {\r\n        XRefNode: XRefNode[];\r\n    }\r\n\r\n    export interface DFUXRefListResponseEx {\r\n        DFUXRefListResult: DFUXRefListResult;\r\n    }\r\n\r\n    export interface File2 {\r\n        Partslost: string;\r\n        Name: string;\r\n        Partmask: string;\r\n        Modified: Date;\r\n        Numparts: string;\r\n        Part: Part[];\r\n        Cluster: string;\r\n        Size: string;\r\n        Primarylost: string;\r\n        Replicatedlost: string;\r\n    }\r\n\r\n    export interface DFUXRefLostFilesQueryResult {\r\n        File: File2[];\r\n        Cluster: string;\r\n    }\r\n\r\n    export interface Warning {\r\n        Text: string;\r\n        File: string;\r\n    }\r\n\r\n    export interface DFUXRefMessagesQueryResult {\r\n        Warning: Warning[];\r\n        Cluster: string;\r\n    }\r\n\r\n    export interface DFUXRefOrphanFilesQueryResult {\r\n        File: DFUXRefFile[];\r\n        Cluster: string;\r\n    }\r\n\r\n}\r\n\r\nexport class DFUXRefService extends DFUXRefServiceBase {\r\n\r\n    DFUXRefDirectoriesEx(request: Partial<WsDFUXRef.DFUXRefDirectoriesQueryRequest>): Promise<WsDFUXRefEx.DFUXRefDirectoriesQueryResponseEx> {\r\n        return this._connection.send(\"DFUXRefDirectories\", request, \"json\", false, undefined, \"DFUXRefDirectoriesQueryResponse\");\r\n    }\r\n\r\n    DFUXRefListEx(request: Partial<WsDFUXRef.DFUXRefListRequest>): Promise<WsDFUXRefEx.DFUXRefListResponseEx> {\r\n        return this._connection.send(\"DFUXRefList\", request, \"json\", false, undefined, \"DFUXRefListResponse\");\r\n    }\r\n\r\n}\r\n", "import type { DDL2 } from \"@hpcc-js/ddl-shim\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { ESPExceptions, Service } from \"../espConnection.ts\";\r\n\r\nexport type IFieldType = DDL2.IFieldType;\r\nexport type IField = DDL2.IField;\r\n\r\nexport type IWsEclRequest = IField[];\r\nexport type IWsEclResult = IField[];\r\nexport type IWsEclResponse = { [id: string]: IField[] };\r\n\r\nfunction jsonToIField(id: string, item: any): IField {\r\n    const type = typeof item;\r\n    switch (type) {\r\n        case \"boolean\":\r\n        case \"number\":\r\n        case \"string\":\r\n            return { id, type };\r\n        case \"object\":\r\n            if (item.Row instanceof Array) {\r\n                item = item.Row;\r\n            }\r\n            if (item instanceof Array) {\r\n                return {\r\n                    id,\r\n                    type: \"dataset\",\r\n                    children: jsonToIFieldArr(item[0])\r\n                };\r\n            } else if (item instanceof Object) {\r\n                if (item.Item && item.Item instanceof Array && item.Item.length === 1) {\r\n                    const fieldType = typeof item.Item[0];\r\n                    if (fieldType === \"string\" || fieldType === \"number\") {\r\n                        return {\r\n                            id,\r\n                            type: \"set\",\r\n                            fieldType\r\n                        };\r\n                    }\r\n                    throw new Error(\"Unknown field type\");\r\n                }\r\n                return {\r\n                    id,\r\n                    type: \"object\",\r\n                    fields: jsonToIFieldObj(item)\r\n                };\r\n            }\r\n        // Fall through  ---\r\n        default:\r\n            throw new Error(\"Unknown field type\");\r\n    }\r\n}\r\n\r\nfunction jsonToIFieldArr(json: any): IField[] {\r\n    if (json.Row && json.Row instanceof Array) {\r\n        json = json.Row[0];\r\n    }\r\n    const retVal: IField[] = [];\r\n    for (const key in json) {\r\n        retVal.push(jsonToIField(key, json[key]));\r\n    }\r\n    return retVal;\r\n}\r\n\r\nfunction jsonToIFieldObj(json: any): { [id: string]: IField } {\r\n    const fields = {};\r\n    for (const key in json) {\r\n        fields[key] = jsonToIField(key, json[key]);\r\n    }\r\n    return fields;\r\n}\r\n\r\nexport class EclService extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsEcl\", \"0\");\r\n    }\r\n\r\n    opts() {\r\n        return this._connection.opts();\r\n    }\r\n\r\n    requestJson(querySet: string, queryId: string): Promise<IWsEclRequest> {\r\n        // http://192.168.3.22:8002/WsEcl/example/request/query/roxie/peopleaccounts/json?display\r\n        return this._connection.send(`example/request/query/${querySet}/${queryId}/json`, {}, \"text\").then(response => {\r\n            const requestSchema = JSON.parse(response);\r\n            for (const key in requestSchema) {\r\n                return requestSchema[key];\r\n            }\r\n            return {};\r\n        }).then(jsonToIFieldArr);\r\n    }\r\n\r\n    responseJson(querySet: string, queryId: string): Promise<IWsEclResponse> {\r\n        // http://192.168.3.22:8002/WsEcl/example/response/query/roxie/peopleaccounts/json?display\r\n        return this._connection.send(`example/response/query/${querySet}/${queryId}/json`, {}, \"text\").then(response => {\r\n            const responseSchema = JSON.parse(response);\r\n            for (const key in responseSchema) {\r\n                return responseSchema[key].Results;\r\n            }\r\n            return {};\r\n        }).then(resultsJson => {\r\n            const retVal: IWsEclResponse = {};\r\n            for (const key in resultsJson) {\r\n                retVal[key] = jsonToIFieldArr(resultsJson[key]);\r\n            }\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    submit(querySet: string, queryId: string, request: object) {\r\n        // http://192.168.3.22:8002/WsEcl/submit/query/roxie/peopleaccounts.1/json\r\n        const action = `submit/query/${querySet}/${queryId}`;\r\n        return this._connection.send(action, request, \"json2\").then(response => {\r\n            if (response.Results && response.Results.Exception) {\r\n                throw new ESPExceptions(action, request, {\r\n                    Source: \"wsEcl.submit\",\r\n                    Exception: response.Results.Exception\r\n                });\r\n            }\r\n            return response.Results;\r\n        });\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsElk {\r\n\r\n    export interface GetConfigDetailsRequest {\r\n\r\n    }\r\n\r\n    export interface GetConfigDetailsResponse {\r\n        IntegrateKibana: boolean;\r\n        KibanaAddress: string;\r\n        KibanaPort: string;\r\n        KibanaEntryPointURI: string;\r\n        ReportElasticSearchHealth: boolean;\r\n        ElasticSearchAddresses: string;\r\n        ElasticSearchPort: string;\r\n        ReportLogStashHealth: boolean;\r\n        LogStashAddress: string;\r\n        LogStashPort: string;\r\n    }\r\n\r\n    export interface ws_elkPingRequest {\r\n\r\n    }\r\n\r\n    export interface ws_elkPingResponse {\r\n\r\n    }\r\n\r\n}\r\n\r\nexport class ElkServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"ws_elk\", \"1\");\r\n    }\r\n\r\n    GetConfigDetails(request: Partial<WsElk.GetConfigDetailsRequest>): Promise<WsElk.GetConfigDetailsResponse> {\r\n        return this._connection.send(\"GetConfigDetails\", request, \"json\", false, undefined, \"GetConfigDetailsResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsElk.ws_elkPingRequest>): Promise<WsElk.ws_elkPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"ws_elkPingResponse\");\r\n    }\r\n\r\n}\r\n", "import { ElkServiceBase, WsElk } from \"./wsdl/ws_elk/v1/ws_elk.ts\";\r\n\r\nexport {\r\n    type WsElk\r\n};\r\n\r\nexport class ElkService extends ElkServiceBase {\r\n}\r\n", "import { scopedLogger } from \"@hpcc-js/util\";\r\nimport { LogaccessServiceBase, WsLogaccess } from \"./wsdl/ws_logaccess/v1.08/ws_logaccess.ts\";\r\n\r\nconst logger = scopedLogger(\"@hpcc-js/comms/services/wsLogaccess.ts\");\r\n\r\nexport {\r\n    WsLogaccess\r\n};\r\n\r\nexport interface GetLogsExRequest {\r\n    audience?: string;\r\n    class?: string[];\r\n    workunits?: string;\r\n    message?: string;\r\n    processid?: string;\r\n    logid?: string;\r\n    threadid?: string;\r\n    timestamp?: string;\r\n    components?: string;\r\n    instance?: string;\r\n    StartDate?: Date;\r\n    EndDate?: Date;\r\n    LogLineStartFrom: number,\r\n    LogLineLimit: number\r\n}\r\n\r\nexport const enum LogType {\r\n    Disaster = \"DIS\",\r\n    Error = \"ERR\",\r\n    Warning = \"WRN\",\r\n    Information = \"INF\",\r\n    Progress = \"PRO\",\r\n    Metric = \"MET\"\r\n}\r\n\r\nexport const enum TargetAudience {\r\n    Operator = \"OPR\",\r\n    User = \"USR\",\r\n    Programmer = \"PRO\",\r\n    Audit = \"ADT\"\r\n}\r\n\r\n// properties here are \"LogType\" values in Ws_logaccess.GetLogAccessInfo\r\nexport interface LogLine {\r\n    audience?: string;\r\n    class?: string;\r\n    workunits?: string;\r\n    message?: string;\r\n    processid?: number;\r\n    logid?: string;\r\n    threadid?: number;\r\n    timestamp?: string;\r\n    components?: string;\r\n    instance?: string;\r\n}\r\n\r\nexport interface GetLogsExResponse {\r\n    lines: LogLine[],\r\n    total: number,\r\n}\r\n\r\nconst knownLogManagerTypes = new Set([\"azureloganalyticscurl\", \"elasticstack\", \"grafanacurl\"]);\r\nconst logColumnTypeValues = new Set(Object.values(WsLogaccess.LogColumnType));\r\n\r\nfunction getLogCategory(searchField: string): WsLogaccess.LogAccessType {\r\n    switch (searchField) {\r\n        case WsLogaccess.LogColumnType.workunits:\r\n        case \"hpcc.log.jobid\":\r\n            return WsLogaccess.LogAccessType.ByJobID;\r\n        case WsLogaccess.LogColumnType.audience:\r\n        case \"hpcc.log.audience\":\r\n            return WsLogaccess.LogAccessType.ByTargetAudience;\r\n        case WsLogaccess.LogColumnType.class:\r\n        case \"hpcc.log.class\":\r\n            return WsLogaccess.LogAccessType.ByLogType;\r\n        case WsLogaccess.LogColumnType.components:\r\n        case \"kubernetes.container.name\":\r\n            return WsLogaccess.LogAccessType.ByComponent;\r\n        default:\r\n            return WsLogaccess.LogAccessType.ByFieldName;\r\n    }\r\n}\r\n\r\n// Explicit list of filter-bearing keys on GetLogsExRequest.\r\n// Using an allowlist avoids accidentally treating control fields (StartDate, LogLineLimit, etc.)\r\n// as log filters if the server ever returns a column whose name collides with them.\r\nconst FILTER_KEYS = [\"audience\", \"class\", \"workunits\", \"message\", \"processid\", \"logid\", \"threadid\", \"timestamp\", \"components\", \"instance\"] as const;\r\n\r\nfunction buildFilters(request: GetLogsExRequest, columnMap: Record<string, string>): WsLogaccess.leftFilter[] {\r\n    const filters: WsLogaccess.leftFilter[] = [];\r\n    for (const key of FILTER_KEYS) {\r\n        const value = request[key];\r\n        if (value == null || value === \"\" || (Array.isArray(value) && value.length === 0)) {\r\n            continue;\r\n        }\r\n        if (!(key in columnMap)) continue;\r\n\r\n        const isKnownLogType = logColumnTypeValues.has(key as WsLogaccess.LogColumnType);\r\n        let searchField: string = isKnownLogType ? key : columnMap[key];\r\n        const logCategory = getLogCategory(searchField);\r\n        if (logCategory === WsLogaccess.LogAccessType.ByFieldName) {\r\n            searchField = columnMap[key];\r\n        }\r\n\r\n        const appendWildcard = logCategory === WsLogaccess.LogAccessType.ByComponent;\r\n        const rawValues: string[] = Array.isArray(value) ? value : [value as string];\r\n        for (const raw of rawValues) {\r\n            filters.push({\r\n                LogCategory: logCategory,\r\n                SearchField: searchField,\r\n                // append wildcard to end of search value to include ephemeral\r\n                // containers that aren't listed in ECL Watch's filters\r\n                SearchByValue: appendWildcard ? raw + \"*\" : raw\r\n            });\r\n        }\r\n    }\r\n    return filters;\r\n}\r\n\r\n// Builds a left-leaning OR chain from filters that share the same SearchField.\r\nfunction buildOrGroup(group: WsLogaccess.leftFilter[]): WsLogaccess.BinaryLogFilter {\r\n    const root: WsLogaccess.BinaryLogFilter = { leftFilter: group[0] } as WsLogaccess.BinaryLogFilter;\r\n    let node = root;\r\n    for (let i = 1; i < group.length; i++) {\r\n        node.Operator = WsLogaccess.LogAccessFilterOperator.OR;\r\n        if (i === group.length - 1) {\r\n            node.rightFilter = group[i] as WsLogaccess.rightFilter;\r\n        } else {\r\n            node.rightBinaryFilter = { BinaryLogFilter: [{ leftFilter: group[i] } as WsLogaccess.BinaryLogFilter] };\r\n            node = node.rightBinaryFilter.BinaryLogFilter[0];\r\n        }\r\n    }\r\n    return root;\r\n}\r\n\r\n// Recursively AND-chains two or more groups into a BinaryLogFilter (used for nesting beyond depth 1).\r\nfunction buildAndChain(groups: WsLogaccess.leftFilter[][]): WsLogaccess.BinaryLogFilter {\r\n    const [firstGroup, ...remainingGroups] = groups;\r\n    const node: WsLogaccess.BinaryLogFilter = {} as WsLogaccess.BinaryLogFilter;\r\n    if (firstGroup.length === 1) {\r\n        node.leftFilter = firstGroup[0];\r\n    } else {\r\n        node.leftBinaryFilter = { BinaryLogFilter: [buildOrGroup(firstGroup)] };\r\n    }\r\n    if (remainingGroups.length === 0) return node;\r\n    node.Operator = WsLogaccess.LogAccessFilterOperator.AND;\r\n    if (remainingGroups.length === 1) {\r\n        const [secondGroup] = remainingGroups;\r\n        if (secondGroup.length === 1) {\r\n            node.rightFilter = secondGroup[0] as WsLogaccess.rightFilter;\r\n        } else {\r\n            node.rightBinaryFilter = { BinaryLogFilter: [buildOrGroup(secondGroup)] };\r\n        }\r\n    } else {\r\n        node.rightBinaryFilter = { BinaryLogFilter: [buildAndChain(remainingGroups)] };\r\n    }\r\n    return node;\r\n}\r\n\r\n// Groups filters by SearchField, OR-chains each group, then AND-chains the groups together.\r\n// This ensures e.g. [class_INF, class_ERR, audience_USR] always produces\r\n// (class_INF OR class_ERR) AND audience_USR regardless of input order.\r\nfunction buildFilterTree(filters: WsLogaccess.leftFilter[]): WsLogaccess.Filter {\r\n    const groupMap = new Map<string, WsLogaccess.leftFilter[]>();\r\n    for (const f of filters) {\r\n        const existing = groupMap.get(f.SearchField);\r\n        if (existing) existing.push(f); else groupMap.set(f.SearchField, [f]);\r\n    }\r\n    const groups = [...groupMap.values()];\r\n\r\n    if (groups.length === 0) {\r\n        return { leftFilter: { LogCategory: WsLogaccess.LogAccessType.All } as WsLogaccess.leftFilter };\r\n    }\r\n\r\n    const [firstGroup, ...remainingGroups] = groups;\r\n    const filter: WsLogaccess.Filter = {};\r\n    if (firstGroup.length === 1) {\r\n        filter.leftFilter = firstGroup[0];\r\n    } else {\r\n        filter.leftBinaryFilter = { BinaryLogFilter: [buildOrGroup(firstGroup)] };\r\n    }\r\n\r\n    if (remainingGroups.length === 0) return filter;\r\n    filter.Operator = WsLogaccess.LogAccessFilterOperator.AND;\r\n    if (remainingGroups.length === 1) {\r\n        const [secondGroup] = remainingGroups;\r\n        if (secondGroup.length === 1) {\r\n            filter.rightFilter = secondGroup[0] as WsLogaccess.rightFilter;\r\n        } else {\r\n            filter.rightBinaryFilter = { BinaryLogFilter: [buildOrGroup(secondGroup)] };\r\n        }\r\n    } else {\r\n        filter.rightBinaryFilter = { BinaryLogFilter: [buildAndChain(remainingGroups)] };\r\n    }\r\n    return filter;\r\n}\r\n\r\nexport class LogaccessService extends LogaccessServiceBase {\r\n\r\n    protected _logAccessInfo: Promise<WsLogaccess.GetLogAccessInfoResponse>;\r\n\r\n    GetLogAccessInfo(request: WsLogaccess.GetLogAccessInfoRequest = {}): Promise<WsLogaccess.GetLogAccessInfoResponse> {\r\n        if (!this._logAccessInfo) {\r\n            this._logAccessInfo = super.GetLogAccessInfo(request);\r\n        }\r\n        return this._logAccessInfo;\r\n    }\r\n\r\n    GetLogs(request: WsLogaccess.GetLogsRequest): Promise<WsLogaccess.GetLogsResponse> {\r\n        return super.GetLogs(request);\r\n    }\r\n\r\n    private convertLogLine(columnMap: Record<string, string>, line: any): LogLine {\r\n        const retVal: LogLine = {};\r\n        const fields = line?.fields ? Object.assign({}, ...line.fields) : null;\r\n        for (const key in columnMap) {\r\n            retVal[key] = fields ? fields[columnMap[key]] ?? \"\" : \"\";\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    async GetLogsEx(request: GetLogsExRequest): Promise<GetLogsExResponse> {\r\n        const logInfo = await this.GetLogAccessInfo();\r\n        const columnMap: Record<string, string> = {};\r\n        logInfo.Columns.Column.forEach(column => columnMap[column.LogType] = column.Name);\r\n\r\n        const filters = buildFilters(request, columnMap);\r\n        const range: Record<string, string> = {\r\n            StartDate: request.StartDate instanceof Date ? request.StartDate.toISOString() : new Date(0).toISOString()\r\n        };\r\n        if (request.EndDate instanceof Date) {\r\n            range.EndDate = request.EndDate.toISOString();\r\n        }\r\n\r\n        const getLogsRequest: WsLogaccess.GetLogsRequest = {\r\n            Filter: buildFilterTree(filters),\r\n            Range: range,\r\n            LogLineStartFrom: request.LogLineStartFrom ?? 0,\r\n            LogLineLimit: request.LogLineLimit ?? 100,\r\n            SelectColumnMode: WsLogaccess.LogSelectColumnMode.DEFAULT,\r\n            Format: \"JSON\",\r\n            SortBy: {\r\n                SortCondition: [{\r\n                    BySortType: WsLogaccess.SortColumType.ByDate,\r\n                    ColumnName: \"\",\r\n                    Direction: 0\r\n                }]\r\n            }\r\n        };\r\n\r\n        return this.GetLogs(getLogsRequest).then(response => {\r\n            try {\r\n                const logLines = JSON.parse(response.LogLines);\r\n                const lines = knownLogManagerTypes.has(logInfo.RemoteLogManagerType)\r\n                    ? (logLines.lines?.map((line: any) => this.convertLogLine(columnMap, line)) ?? [])\r\n                    : (logger.warning(`Unknown RemoteLogManagerType: ${logInfo.RemoteLogManagerType}`), []);\r\n                return {\r\n                    lines,\r\n                    total: response.TotalLogLinesAvailable ?? 10000\r\n                };\r\n            } catch (e: any) {\r\n                logger.error(e.message ?? e);\r\n            }\r\n            return {\r\n                lines: [],\r\n                total: 0\r\n            };\r\n        });\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsLogaccess {\r\n\r\n    export type dateTime = string;\r\n    export type unsignedInt = number;\r\n    export type long = number;\r\n\r\n    export enum LogColumnType {\r\n        global = \"global\",\r\n        workunits = \"workunits\",\r\n        components = \"components\",\r\n        audience = \"audience\",\r\n        class = \"class\",\r\n        instance = \"instance\",\r\n        node = \"node\",\r\n        message = \"message\",\r\n        logid = \"logid\",\r\n        processid = \"processid\",\r\n        threadid = \"threadid\",\r\n        timestamp = \"timestamp\",\r\n        pod = \"pod\",\r\n        traceid = \"traceid\",\r\n        spanid = \"spanid\"\r\n    }\r\n\r\n    export enum LogColumnValueType {\r\n        string = \"string\",\r\n        numeric = \"numeric\",\r\n        datetime = \"datetime\",\r\n        enum = \"enum\",\r\n        epoch = \"epoch\"\r\n    }\r\n\r\n    export enum LogAccessType {\r\n        All = 0,\r\n        ByJobID = 1,\r\n        ByComponent = 2,\r\n        ByLogType = 3,\r\n        ByTargetAudience = 4,\r\n        BySourceInstance = 5,\r\n        BySourceNode = 6,\r\n        ByFieldName = 7,\r\n        ByPod = 8,\r\n        ByTraceID = 9,\r\n        BySpanID = 10\r\n    }\r\n\r\n    export enum LogAccessStatusCode {\r\n        Success = 0,\r\n        Warning = 1,\r\n        Fail = 2\r\n    }\r\n\r\n    export enum LogAccessFilterOperator {\r\n        NONE = 0,\r\n        AND = 1,\r\n        OR = 2\r\n    }\r\n\r\n    export enum LogSelectColumnMode {\r\n        MIN = 0,\r\n        DEFAULT = 1,\r\n        ALL = 2,\r\n        CUSTOM = 3\r\n    }\r\n\r\n    export enum SortColumType {\r\n        ByDate = 0,\r\n        ByJobID = 1,\r\n        ByComponent = 2,\r\n        ByLogType = 3,\r\n        ByTargetAudience = 4,\r\n        BySourceInstance = 5,\r\n        BySourceNode = 6,\r\n        ByFieldName = 7,\r\n        ByPod = 8,\r\n        ByTraceID = 9,\r\n        BySpanID = 10\r\n    }\r\n\r\n    export enum SortDirection {\r\n        ASC = 0,\r\n        DSC = 1\r\n    }\r\n\r\n    export interface GetHealthReportRequest {\r\n        IncludeConfiguration?: boolean;\r\n        IncludeDebugReport?: boolean;\r\n        IncludeSampleQuery?: boolean;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface MessageArray {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Status {\r\n        Code: LogAccessStatusCode;\r\n        MessageArray: MessageArray;\r\n    }\r\n\r\n    export interface DebugReport {\r\n        SampleQueryReport: string;\r\n        PluginDebugReport: string;\r\n        ServerDebugReport: string;\r\n    }\r\n\r\n    export interface GetHealthReportResponse {\r\n        Exceptions: Exceptions;\r\n        Status: Status;\r\n        DebugReport: DebugReport;\r\n        Configuration: string;\r\n    }\r\n\r\n    export interface GetLogAccessInfoRequest {\r\n\r\n    }\r\n\r\n    export interface EnumeratedValues {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Column {\r\n        Name: string;\r\n        LogType: LogColumnType;\r\n        EnumeratedValues: EnumeratedValues;\r\n        ColumnMode: LogSelectColumnMode;\r\n        ColumnType: LogColumnValueType;\r\n    }\r\n\r\n    export interface Columns {\r\n        Column: Column[];\r\n    }\r\n\r\n    export interface GetLogAccessInfoResponse {\r\n        Exceptions: Exceptions;\r\n        Columns: Columns;\r\n        RemoteLogManagerType: string;\r\n        RemoteLogManagerConnectionString: string;\r\n        SupportsResultPaging: boolean;\r\n    }\r\n\r\n    export interface leftFilter {\r\n        LogCategory: LogAccessType;\r\n        SearchByValue: string;\r\n        SearchField: string;\r\n    }\r\n\r\n    export interface rightFilter {\r\n        LogCategory: LogAccessType;\r\n        SearchByValue: string;\r\n        SearchField: string;\r\n    }\r\n\r\n    export interface rightBinaryFilter {\r\n        BinaryLogFilter: BinaryLogFilter[];\r\n    }\r\n\r\n    export interface BinaryLogFilter {\r\n        leftFilter: leftFilter;\r\n        leftBinaryFilter: leftBinaryFilter;\r\n        Operator: LogAccessFilterOperator;\r\n        rightFilter: {\r\n            LogCategory: LogAccessType;\r\n            SearchByValue: string;\r\n            SearchField: string;\r\n        };\r\n        rightBinaryFilter: {\r\n            BinaryLogFilter: BinaryLogFilter[];\r\n        };\r\n    }\r\n\r\n    export interface leftBinaryFilter {\r\n        BinaryLogFilter: BinaryLogFilter[];\r\n    }\r\n\r\n    export interface Filter {\r\n        leftFilter?: leftFilter;\r\n        leftBinaryFilter?: leftBinaryFilter;\r\n        Operator?: LogAccessFilterOperator;\r\n        rightFilter?: rightFilter;\r\n        rightBinaryFilter?: rightBinaryFilter;\r\n    }\r\n\r\n    export interface Range {\r\n        StartDate?: dateTime;\r\n        EndDate?: dateTime;\r\n    }\r\n\r\n    export interface Columns2 {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface SortCondition {\r\n        BySortType: SortColumType;\r\n        ColumnName: string;\r\n        Direction: SortDirection;\r\n    }\r\n\r\n    export interface SortBy {\r\n        SortCondition: SortCondition[];\r\n    }\r\n\r\n    export interface GetLogsRequest {\r\n        Filter?: Filter;\r\n        Range?: Range;\r\n        LogLineLimit?: unsignedInt;\r\n        LogLineStartFrom?: long;\r\n        SelectColumnMode?: LogSelectColumnMode;\r\n        Columns?: Columns2;\r\n        Format?: string;\r\n        SortBy?: SortBy;\r\n    }\r\n\r\n    export interface GetLogsResponse {\r\n        Exceptions: Exceptions;\r\n        LogLines: string;\r\n        LogLineCount: unsignedInt;\r\n        TotalLogLinesAvailable: unsignedInt;\r\n    }\r\n\r\n    export interface ws_logaccessPingRequest {\r\n\r\n    }\r\n\r\n    export interface ws_logaccessPingResponse {\r\n\r\n    }\r\n\r\n}\r\n\r\nexport class LogaccessServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"ws_logaccess\", \"1.08\");\r\n    }\r\n\r\n    GetHealthReport(request: Partial<WsLogaccess.GetHealthReportRequest>): Promise<WsLogaccess.GetHealthReportResponse> {\r\n        return this._connection.send(\"GetHealthReport\", request, \"json\", false, undefined, \"GetHealthReportResponse\");\r\n    }\r\n\r\n    GetLogAccessInfo(request: Partial<WsLogaccess.GetLogAccessInfoRequest>): Promise<WsLogaccess.GetLogAccessInfoResponse> {\r\n        return this._connection.send(\"GetLogAccessInfo\", request, \"json\", false, undefined, \"GetLogAccessInfoResponse\");\r\n    }\r\n\r\n    GetLogs(request: Partial<WsLogaccess.GetLogsRequest>): Promise<WsLogaccess.GetLogsResponse> {\r\n        return this._connection.send(\"GetLogs\", request, \"json\", false, undefined, \"GetLogsResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsLogaccess.ws_logaccessPingRequest>): Promise<WsLogaccess.ws_logaccessPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"ws_logaccessPingResponse\");\r\n    }\r\n\r\n}\r\n", "import { exists } from \"@hpcc-js/util\";\r\nimport { max as d3Max, mean as d3Mean } from \"d3-array\";\r\n\r\nimport { MachineServiceBase, WsMachine } from \"./wsdl/ws_machine/v1.19/ws_machine.ts\";\r\n\r\nexport {\r\n    type WsMachine\r\n};\r\n\r\nexport namespace WsMachineEx {\r\n\r\n    export interface DiskUsage extends WsMachine.DiskUsage {\r\n        Total: number;\r\n        PercentUsed: number;\r\n    }\r\n\r\n    export interface MachineUsage extends Omit<WsMachine.MachineUsage, \"DiskUsages\"> {\r\n        DiskUsages: DiskUsage[];\r\n        mean: number;\r\n        max: number;\r\n    }\r\n\r\n    export interface ComponentUsage extends Omit<WsMachine.ComponentUsage, \"MachineUsages\"> {\r\n        MachineUsages: MachineUsage[];\r\n        MachineUsagesDescription: string;\r\n        mean: number;\r\n        max: number;\r\n    }\r\n\r\n    export interface TargetClusterUsage extends Omit<WsMachine.TargetClusterUsage, \"ComponentUsages\"> {\r\n        ComponentUsages: ComponentUsage[];\r\n        ComponentUsagesDescription: string;\r\n        mean: number;\r\n        max: number;\r\n    }\r\n\r\n}\r\n\r\nexport class MachineService extends MachineServiceBase {\r\n\r\n    GetTargetClusterUsageEx(targetClusters?: string[], bypassCachedResult: boolean = false): Promise<WsMachineEx.TargetClusterUsage[]> {\r\n        return this._connection.send(\"GetTargetClusterUsage\", {\r\n            TargetClusters: targetClusters ? { Item: targetClusters } : {},\r\n            BypassCachedResult: bypassCachedResult\r\n        }).then(response => {\r\n            return exists(\"TargetClusterUsages.TargetClusterUsage\", response) ? response.TargetClusterUsages.TargetClusterUsage : [];\r\n        }).then(response => {\r\n            return response.filter(tcu => !!tcu.ComponentUsages).map(tcu => {\r\n                const ComponentUsages: WsMachineEx.ComponentUsage[] = tcu.ComponentUsages.ComponentUsage.map(cu => {\r\n                    const MachineUsages: WsMachineEx.MachineUsage[] = (cu.MachineUsages && cu.MachineUsages.MachineUsage ? cu.MachineUsages.MachineUsage : []).map(mu => {\r\n                        const DiskUsages: WsMachineEx.DiskUsage[] = mu.DiskUsages && mu.DiskUsages.DiskUsage ? mu.DiskUsages.DiskUsage.map(du => {\r\n                            return {\r\n                                ...du,\r\n                                InUse: du.InUse * 1024,\r\n                                Total: (du.InUse + du.Available) * 1024,\r\n                                PercentUsed: 100 - du.PercentAvailable\r\n                            };\r\n                        }) : [];\r\n                        return {\r\n                            Name: mu.Name,\r\n                            NetAddress: mu.NetAddress,\r\n                            Description: mu.Description,\r\n                            DiskUsages,\r\n                            mean: d3Mean(DiskUsages.filter(du => !isNaN(du.PercentUsed)), du => du.PercentUsed),\r\n                            max: d3Max(DiskUsages.filter(du => !isNaN(du.PercentUsed)), du => du.PercentUsed)\r\n                        };\r\n                    });\r\n                    return {\r\n                        Type: cu.Type,\r\n                        Name: cu.Name,\r\n                        Description: cu.Description,\r\n                        MachineUsages,\r\n                        MachineUsagesDescription: MachineUsages.reduce((prev, mu) => prev + (mu.Description || \"\"), \"\"),\r\n                        mean: d3Mean(MachineUsages.filter(mu => !isNaN(mu.mean)), mu => mu.mean),\r\n                        max: d3Max(MachineUsages.filter(mu => !isNaN(mu.max)), mu => mu.max)\r\n                    };\r\n                });\r\n                return {\r\n                    Name: tcu.Name,\r\n                    Description: tcu.Description,\r\n                    ComponentUsages,\r\n                    ComponentUsagesDescription: ComponentUsages.reduce((prev, cu) => prev + (cu.MachineUsagesDescription || \"\"), \"\"),\r\n                    mean: d3Mean(ComponentUsages.filter(cu => !isNaN(cu.mean)), cu => cu.mean),\r\n                    max: d3Max(ComponentUsages.filter(cu => !isNaN(cu.max)), cu => cu.max)\r\n                };\r\n            });\r\n        });\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsMachine {\r\n\r\n    export type int = number;\r\n    export type long = number;\r\n    export type unsignedInt = number;\r\n\r\n    export enum ThresholdType {\r\n        THRESHOLD_PERCENTAGE = 0,\r\n        THRESHOLD_MB = 1\r\n    }\r\n\r\n    export enum TpMachineType {\r\n        ALLNODES = \"ALLNODES\",\r\n        THORMACHINES = \"THORMACHINES\",\r\n        HOLEMACHINES = \"HOLEMACHINES\",\r\n        ROXIEMACHINES = \"ROXIEMACHINES\",\r\n        MACHINES = \"MACHINES\",\r\n        AVAILABLEMACHINES = \"AVAILABLEMACHINES\",\r\n        DROPZONE = \"DROPZONE\",\r\n        STANDBYNNODE = \"STANDBYNNODE\",\r\n        THORSPARENODES = \"THORSPARENODES\",\r\n        HOLESTANDBYNODES = \"HOLESTANDBYNODES\"\r\n    }\r\n\r\n    export interface GetComponentStatusRequest {\r\n\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface StatusReport {\r\n        StatusID: int;\r\n        Status: string;\r\n        StatusDetails: string;\r\n        Reporter: string;\r\n        TimeReported: long;\r\n        TimeReportedStr: string;\r\n        TimeCached: string;\r\n        URL: string;\r\n    }\r\n\r\n    export interface StatusReports {\r\n        StatusReport: StatusReport[];\r\n    }\r\n\r\n    export interface ComponentStatus {\r\n        ComponentTypeID: int;\r\n        ComponentType: string;\r\n        EndPoint: string;\r\n        StatusID: int;\r\n        Status: string;\r\n        TimeReported: long;\r\n        TimeReportedStr: string;\r\n        Reporter: string;\r\n        StatusReports: StatusReports;\r\n    }\r\n\r\n    export interface ComponentStatusList {\r\n        ComponentStatus: ComponentStatus[];\r\n    }\r\n\r\n    export interface GetComponentStatusResponse {\r\n        Exceptions: Exceptions;\r\n        StatusCode: int;\r\n        Status: string;\r\n        ComponentType: string;\r\n        EndPoint: string;\r\n        ComponentStatusID: int;\r\n        ComponentStatus: string;\r\n        TimeReported: long;\r\n        TimeReportedStr: string;\r\n        Reporter: string;\r\n        StatusReport: StatusReport;\r\n        ComponentStatusList: ComponentStatusList;\r\n    }\r\n\r\n    export interface Component {\r\n        Type: string;\r\n        Name: string;\r\n    }\r\n\r\n    export interface Components {\r\n        Component: Component[];\r\n    }\r\n\r\n    export interface GetComponentUsageRequest {\r\n        Components?: Components;\r\n        BypassCachedResult?: boolean;\r\n    }\r\n\r\n    export interface DiskUsage {\r\n        Name: string;\r\n        Path: string;\r\n        Description: string;\r\n        InUse: long;\r\n        Available: long;\r\n        PercentAvailable: int;\r\n        Exception: string;\r\n    }\r\n\r\n    export interface DiskUsages {\r\n        DiskUsage: DiskUsage[];\r\n    }\r\n\r\n    export interface MachineUsage {\r\n        Name: string;\r\n        NetAddress: string;\r\n        Description: string;\r\n        Exception: string;\r\n        DiskUsages: DiskUsages;\r\n    }\r\n\r\n    export interface MachineUsages {\r\n        MachineUsage: MachineUsage[];\r\n    }\r\n\r\n    export interface ComponentUsage {\r\n        Type: string;\r\n        Name: string;\r\n        Description: string;\r\n        Exception: string;\r\n        MachineUsages: MachineUsages;\r\n    }\r\n\r\n    export interface ComponentUsages {\r\n        ComponentUsage: ComponentUsage[];\r\n    }\r\n\r\n    export interface GetComponentUsageResponse {\r\n        Exceptions: Exceptions;\r\n        ComponentUsages: ComponentUsages;\r\n        UsageTime: string;\r\n    }\r\n\r\n    export interface Addresses {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface GetMachineInfoRequest {\r\n        Addresses?: Addresses;\r\n        SortBy?: string;\r\n        ClusterType?: TpMachineType;\r\n        Cluster?: string;\r\n        OldIP?: string;\r\n        Path?: string;\r\n        AddProcessesToFilter?: string;\r\n        ApplyProcessFilter?: boolean;\r\n        GetProcessorInfo?: boolean;\r\n        GetStorageInfo?: boolean;\r\n        LocalFileSystemsOnly?: boolean;\r\n        GetSoftwareInfo?: boolean;\r\n        MemThreshold?: int;\r\n        DiskThreshold?: int;\r\n        CpuThreshold?: int;\r\n        AutoRefresh?: int;\r\n        MemThresholdType?: ThresholdType;\r\n        DiskThresholdType?: ThresholdType;\r\n        UserName?: string;\r\n        Password?: string;\r\n        SecurityString?: string;\r\n    }\r\n\r\n    export interface RequestInfo {\r\n        Addresses: Addresses;\r\n        SortBy: string;\r\n        ClusterType: TpMachineType;\r\n        Cluster: string;\r\n        OldIP: string;\r\n        Path: string;\r\n        AddProcessesToFilter: string;\r\n        ApplyProcessFilter: boolean;\r\n        GetProcessorInfo: boolean;\r\n        GetStorageInfo: boolean;\r\n        LocalFileSystemsOnly: boolean;\r\n        GetSoftwareInfo: boolean;\r\n        MemThreshold: int;\r\n        DiskThreshold: int;\r\n        CpuThreshold: int;\r\n        AutoRefresh: int;\r\n        MemThresholdType: ThresholdType;\r\n        DiskThresholdType: ThresholdType;\r\n        SecurityString: string;\r\n        UserName: string;\r\n        Password: string;\r\n        EnableSNMP: boolean;\r\n    }\r\n\r\n    export interface Columns {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface ProcessorInfo {\r\n        Type: string;\r\n        Load: int;\r\n    }\r\n\r\n    export interface Processors {\r\n        ProcessorInfo: ProcessorInfo[];\r\n    }\r\n\r\n    export interface StorageInfo {\r\n        Description: string;\r\n        Type: string;\r\n        Available: long;\r\n        PercentAvail: int;\r\n        Total: long;\r\n        Failures: int;\r\n    }\r\n\r\n    export interface Storage {\r\n        StorageInfo: StorageInfo[];\r\n    }\r\n\r\n    export interface SWRunInfo {\r\n        Name: string;\r\n        Instances: int;\r\n        State: int;\r\n    }\r\n\r\n    export interface Running {\r\n        SWRunInfo: SWRunInfo[];\r\n    }\r\n\r\n    export interface PhysicalMemory {\r\n        Description: string;\r\n        Type: string;\r\n        Available: long;\r\n        PercentAvail: int;\r\n        Total: long;\r\n        Failures: int;\r\n    }\r\n\r\n    export interface VirtualMemory {\r\n        Description: string;\r\n        Type: string;\r\n        Available: long;\r\n        PercentAvail: int;\r\n        Total: long;\r\n        Failures: int;\r\n    }\r\n\r\n    export interface ComponentInfo {\r\n        Condition: int;\r\n        State: int;\r\n        UpTime: string;\r\n    }\r\n\r\n    export interface MachineInfoEx {\r\n        Address: string;\r\n        ConfigAddress: string;\r\n        Name: string;\r\n        ProcessType: string;\r\n        DisplayType: string;\r\n        Description: string;\r\n        AgentVersion: string;\r\n        Contact: string;\r\n        Location: string;\r\n        UpTime: string;\r\n        ComponentName: string;\r\n        ComponentPath: string;\r\n        RoxieState: string;\r\n        RoxieStateDetails: string;\r\n        OS: int;\r\n        ProcessNumber: int;\r\n        Channels: unsignedInt;\r\n        Processors: Processors;\r\n        Storage: Storage;\r\n        Running: Running;\r\n        PhysicalMemory: PhysicalMemory;\r\n        VirtualMemory: VirtualMemory;\r\n        ComponentInfo: ComponentInfo;\r\n        Exception: string;\r\n    }\r\n\r\n    export interface Machines {\r\n        MachineInfoEx: MachineInfoEx[];\r\n    }\r\n\r\n    export interface GetMachineInfoResponse {\r\n        Exceptions: Exceptions;\r\n        RequestInfo: RequestInfo;\r\n        Columns: Columns;\r\n        Machines: Machines;\r\n        TimeStamp: string;\r\n        UserName: string;\r\n        Password: string;\r\n        AcceptLanguage: string;\r\n    }\r\n\r\n    export interface GetMachineInfoRequestEx {\r\n        Addresses: Addresses;\r\n        ClusterType: TpMachineType;\r\n    }\r\n\r\n    export interface GetMachineInfoResponseEx {\r\n        Exceptions: Exceptions;\r\n        AcceptLanguage: string;\r\n        Machines: Machines;\r\n    }\r\n\r\n    export interface ShowColumns {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface MetricsRequest {\r\n        SecurityString?: string;\r\n        Addresses?: Addresses;\r\n        ShowColumns?: ShowColumns;\r\n        AutoRefresh?: int;\r\n        SelectAllChecked?: boolean;\r\n        Cluster?: string;\r\n        AutoUpdate?: boolean;\r\n    }\r\n\r\n    export interface MetricsResponse {\r\n        Exceptions: Exceptions;\r\n        FieldInformation: string;\r\n        Metrics: string;\r\n        AutoRefresh: int;\r\n        Cluster: string;\r\n        SelectAllChecked: boolean;\r\n        AutoUpdate: boolean;\r\n        AcceptLanguage: string;\r\n    }\r\n\r\n    export interface NodeGroups {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface GetNodeGroupUsageRequest {\r\n        NodeGroups?: NodeGroups;\r\n        BypassCachedResult?: boolean;\r\n    }\r\n\r\n    export interface NodeGroupUsage {\r\n        Name: string;\r\n        Description: string;\r\n        Exception: string;\r\n        ComponentUsages: ComponentUsages;\r\n    }\r\n\r\n    export interface NodeGroupUsages {\r\n        NodeGroupUsage: NodeGroupUsage[];\r\n    }\r\n\r\n    export interface GetNodeGroupUsageResponse {\r\n        Exceptions: Exceptions;\r\n        NodeGroupUsages: NodeGroupUsages;\r\n        UsageTime: string;\r\n    }\r\n\r\n    export interface TargetClusters {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface GetTargetClusterInfoRequest {\r\n        TargetClusters?: TargetClusters;\r\n        AddProcessesToFilter?: string;\r\n        ApplyProcessFilter?: boolean;\r\n        GetProcessorInfo?: boolean;\r\n        GetStorageInfo?: boolean;\r\n        LocalFileSystemsOnly?: boolean;\r\n        GetSoftwareInfo?: boolean;\r\n        MemThreshold?: int;\r\n        DiskThreshold?: int;\r\n        CpuThreshold?: int;\r\n        AutoRefresh?: int;\r\n        MemThresholdType?: ThresholdType;\r\n        DiskThresholdType?: ThresholdType;\r\n    }\r\n\r\n    export interface Processes {\r\n        MachineInfoEx: MachineInfoEx[];\r\n    }\r\n\r\n    export interface TargetClusterInfo {\r\n        Name: string;\r\n        Type: string;\r\n        Processes: Processes;\r\n    }\r\n\r\n    export interface TargetClusterInfoList {\r\n        TargetClusterInfo: TargetClusterInfo[];\r\n    }\r\n\r\n    export interface GetTargetClusterInfoResponse {\r\n        Exceptions: Exceptions;\r\n        Columns: Columns;\r\n        RequestInfo: RequestInfo;\r\n        TargetClusterInfoList: TargetClusterInfoList;\r\n        TimeStamp: string;\r\n        AcceptLanguage: string;\r\n    }\r\n\r\n    export interface GetTargetClusterUsageRequest {\r\n        TargetClusters?: TargetClusters;\r\n        BypassCachedResult?: boolean;\r\n    }\r\n\r\n    export interface TargetClusterUsage {\r\n        Name: string;\r\n        Description: string;\r\n        Exception: string;\r\n        ComponentUsages: ComponentUsages;\r\n    }\r\n\r\n    export interface TargetClusterUsages {\r\n        TargetClusterUsage: TargetClusterUsage[];\r\n    }\r\n\r\n    export interface GetTargetClusterUsageResponse {\r\n        Exceptions: Exceptions;\r\n        TargetClusterUsages: TargetClusterUsages;\r\n        UsageTime: string;\r\n    }\r\n\r\n    export interface ws_machinePingRequest {\r\n\r\n    }\r\n\r\n    export interface ws_machinePingResponse {\r\n\r\n    }\r\n\r\n    export interface UpdateComponentStatusRequest {\r\n        Reporter?: string;\r\n        ComponentStatusList?: ComponentStatusList;\r\n    }\r\n\r\n    export interface UpdateComponentStatusResponse {\r\n        Exceptions: Exceptions;\r\n        StatusCode: int;\r\n        Status: string;\r\n    }\r\n\r\n}\r\n\r\nexport class MachineServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"ws_machine\", \"1.19\");\r\n    }\r\n\r\n    GetComponentStatus(request: Partial<WsMachine.GetComponentStatusRequest>): Promise<WsMachine.GetComponentStatusResponse> {\r\n        return this._connection.send(\"GetComponentStatus\", request, \"json\", false, undefined, \"GetComponentStatusResponse\");\r\n    }\r\n\r\n    GetComponentUsage(request: Partial<WsMachine.GetComponentUsageRequest>): Promise<WsMachine.GetComponentUsageResponse> {\r\n        return this._connection.send(\"GetComponentUsage\", request, \"json\", false, undefined, \"GetComponentUsageResponse\");\r\n    }\r\n\r\n    GetMachineInfo(request: Partial<WsMachine.GetMachineInfoRequest>): Promise<WsMachine.GetMachineInfoResponse> {\r\n        return this._connection.send(\"GetMachineInfo\", request, \"json\", false, undefined, \"GetMachineInfoResponse\");\r\n    }\r\n\r\n    GetMachineInfoEx(request: Partial<WsMachine.GetMachineInfoRequestEx>): Promise<WsMachine.GetMachineInfoResponseEx> {\r\n        return this._connection.send(\"GetMachineInfoEx\", request, \"json\", false, undefined, \"GetMachineInfoResponseEx\");\r\n    }\r\n\r\n    GetMetrics(request: Partial<WsMachine.MetricsRequest>): Promise<WsMachine.MetricsResponse> {\r\n        return this._connection.send(\"GetMetrics\", request, \"json\", false, undefined, \"MetricsResponse\");\r\n    }\r\n\r\n    GetNodeGroupUsage(request: Partial<WsMachine.GetNodeGroupUsageRequest>): Promise<WsMachine.GetNodeGroupUsageResponse> {\r\n        return this._connection.send(\"GetNodeGroupUsage\", request, \"json\", false, undefined, \"GetNodeGroupUsageResponse\");\r\n    }\r\n\r\n    GetTargetClusterInfo(request: Partial<WsMachine.GetTargetClusterInfoRequest>): Promise<WsMachine.GetTargetClusterInfoResponse> {\r\n        return this._connection.send(\"GetTargetClusterInfo\", request, \"json\", false, undefined, \"GetTargetClusterInfoResponse\");\r\n    }\r\n\r\n    GetTargetClusterUsage(request: Partial<WsMachine.GetTargetClusterUsageRequest>): Promise<WsMachine.GetTargetClusterUsageResponse> {\r\n        return this._connection.send(\"GetTargetClusterUsage\", request, \"json\", false, undefined, \"GetTargetClusterUsageResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsMachine.ws_machinePingRequest>): Promise<WsMachine.ws_machinePingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"ws_machinePingResponse\");\r\n    }\r\n\r\n    UpdateComponentStatus(request: Partial<WsMachine.UpdateComponentStatusRequest>): Promise<WsMachine.UpdateComponentStatusResponse> {\r\n        return this._connection.send(\"UpdateComponentStatus\", request, \"json\", false, undefined, \"UpdateComponentStatusResponse\");\r\n    }\r\n\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsPackageProcess {\r\n\r\n    export type int = number;\r\n    export type nonNegativeInteger = number;\r\n\r\n    export interface ActivatePackageRequest {\r\n        Target?: string;\r\n        PackageMap?: string;\r\n        Process?: string;\r\n        GlobalScope?: boolean;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface status {\r\n        Code: int;\r\n        Description: string;\r\n    }\r\n\r\n    export interface ActivatePackageResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n    }\r\n\r\n    export interface AddPackageRequest {\r\n        Info?: string;\r\n        Activate?: boolean;\r\n        OverWrite?: boolean;\r\n        Target?: string;\r\n        PackageMap?: string;\r\n        Process?: string;\r\n        DaliIp?: string;\r\n        GlobalScope?: boolean;\r\n        SourceProcess?: string;\r\n        AllowForeignFiles?: boolean;\r\n        PreloadAllPackages?: boolean;\r\n        ReplacePackageMap?: boolean;\r\n        UpdateSuperFiles?: boolean;\r\n        UpdateCloneFrom?: boolean;\r\n        AppendCluster?: boolean;\r\n        DfuCopyFiles?: boolean;\r\n        DfuQueue?: string;\r\n        DfuWait?: nonNegativeInteger;\r\n        DfuOverwrite?: boolean;\r\n        OnlyCopyFiles?: boolean;\r\n        StopIfFilesCopied?: boolean;\r\n        DfuPublisherWuid?: string;\r\n        RemoteStorage?: string;\r\n        KeyCompression?: string;\r\n    }\r\n\r\n    export interface FilesNotFound {\r\n        File: string[];\r\n    }\r\n\r\n    export interface AddPackageResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        FilesNotFound: FilesNotFound;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface AddPartToPackageMapRequest {\r\n        Target?: string;\r\n        Process?: string;\r\n        PackageMap?: string;\r\n        GlobalScope?: boolean;\r\n        PartName?: string;\r\n        Content?: string;\r\n        DeletePrevious?: boolean;\r\n        DaliIp?: string;\r\n        SourceProcess?: string;\r\n        AllowForeignFiles?: boolean;\r\n        PreloadAllPackages?: boolean;\r\n        UpdateSuperFiles?: boolean;\r\n        UpdateCloneFrom?: boolean;\r\n        AppendCluster?: boolean;\r\n        DfuCopyFiles?: boolean;\r\n        DfuQueue?: string;\r\n        DfuWait?: nonNegativeInteger;\r\n        DfuOverwrite?: boolean;\r\n        OnlyCopyFiles?: boolean;\r\n        StopIfFilesCopied?: boolean;\r\n        DfuPublisherWuid?: string;\r\n        RemoteStorage?: string;\r\n        KeyCompression?: string;\r\n    }\r\n\r\n    export interface AddPartToPackageMapResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        FilesNotFound: FilesNotFound;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface CopyPackageMapRequest {\r\n        SourcePath?: string;\r\n        RemoteUserName?: string;\r\n        RemotePassword?: string;\r\n        Target?: string;\r\n        Process?: string;\r\n        PMID?: string;\r\n        Activate?: boolean;\r\n        DaliIp?: string;\r\n        GlobalScope?: boolean;\r\n        SourceProcess?: string;\r\n        PreloadAllPackages?: boolean;\r\n        ReplacePackageMap?: boolean;\r\n        UpdateSuperFiles?: boolean;\r\n        UpdateCloneFrom?: boolean;\r\n        AppendCluster?: boolean;\r\n        DfuCopyFiles?: boolean;\r\n        DfuQueue?: string;\r\n        DfuWait?: nonNegativeInteger;\r\n        DfuOverwrite?: boolean;\r\n        OnlyCopyFiles?: boolean;\r\n        StopIfFilesCopied?: boolean;\r\n        DfuPublisherWuid?: string;\r\n        RemoteStorage?: string;\r\n        KeyCompression?: string;\r\n    }\r\n\r\n    export interface CopyPackageMapResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        FilesNotFound: FilesNotFound;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface DeActivatePackageRequest {\r\n        Target?: string;\r\n        PackageMap?: string;\r\n        Process?: string;\r\n        GlobalScope?: boolean;\r\n    }\r\n\r\n    export interface DeActivatePackageResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n    }\r\n\r\n    export interface PackageMap {\r\n        Id: string;\r\n        Target: string;\r\n        Process: string;\r\n    }\r\n\r\n    export interface PackageMaps {\r\n        PackageMap: PackageMap[];\r\n    }\r\n\r\n    export interface DeletePackageRequest {\r\n        Target?: string;\r\n        PackageMap?: string;\r\n        Process?: string;\r\n        GlobalScope?: boolean;\r\n        PackageMaps?: PackageMaps;\r\n    }\r\n\r\n    export interface DeletePackageResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n    }\r\n\r\n    export interface EchoRequest {\r\n        Request?: string;\r\n    }\r\n\r\n    export interface EchoResponse {\r\n        Response: string;\r\n    }\r\n\r\n    export interface GetPackageRequest {\r\n        Target?: string;\r\n        Process?: string;\r\n    }\r\n\r\n    export interface GetPackageResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        Info: string;\r\n    }\r\n\r\n    export interface GetPackageMapByIdRequest {\r\n        PackageMapId?: string;\r\n    }\r\n\r\n    export interface GetPackageMapByIdResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        Info: string;\r\n    }\r\n\r\n    export interface GetPackageMapSelectOptionsRequest {\r\n        IncludeTargets?: boolean;\r\n        IncludeProcesses?: boolean;\r\n        IncludeProcessFilters?: boolean;\r\n    }\r\n\r\n    export interface Processes {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface TargetData {\r\n        Name: string;\r\n        Type: string;\r\n        Processes: Processes;\r\n    }\r\n\r\n    export interface Targets {\r\n        TargetData: TargetData[];\r\n    }\r\n\r\n    export interface ProcessFilters {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface GetPackageMapSelectOptionsResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        Targets: Targets;\r\n        ProcessFilters: ProcessFilters;\r\n    }\r\n\r\n    export interface GetPartFromPackageMapRequest {\r\n        Target?: string;\r\n        PackageMap?: string;\r\n        GlobalScope?: boolean;\r\n        PartName?: string;\r\n    }\r\n\r\n    export interface GetPartFromPackageMapResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        Content: string;\r\n    }\r\n\r\n    export interface GetQueryFileMappingRequest {\r\n        Target?: string;\r\n        PMID?: string;\r\n        QueryName?: string;\r\n        GlobalScope?: boolean;\r\n    }\r\n\r\n    export interface UnmappedFiles {\r\n        File: string[];\r\n    }\r\n\r\n    export interface SubFiles {\r\n        File: string[];\r\n    }\r\n\r\n    export interface SuperFile {\r\n        Name: string;\r\n        SubFiles: SubFiles;\r\n    }\r\n\r\n    export interface SuperFiles {\r\n        SuperFile: SuperFile[];\r\n    }\r\n\r\n    export interface GetQueryFileMappingResponse {\r\n        Exceptions: Exceptions;\r\n        UnmappedFiles: UnmappedFiles;\r\n        SuperFiles: SuperFiles;\r\n    }\r\n\r\n    export interface ListPackageRequest {\r\n        Target?: string;\r\n        Process?: string;\r\n    }\r\n\r\n    export interface PackageListData {\r\n        Id: string;\r\n        Queries: string;\r\n    }\r\n\r\n    export interface PkgListData {\r\n        PackageListData: PackageListData[];\r\n    }\r\n\r\n    export interface PackageListMapData {\r\n        Id: string;\r\n        Target: string;\r\n        Process: string;\r\n        PkgListData: PkgListData;\r\n        Active: boolean;\r\n        Description: string;\r\n    }\r\n\r\n    export interface PkgListMapData {\r\n        PackageListMapData: PackageListMapData[];\r\n    }\r\n\r\n    export interface ListPackageResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        PkgListMapData: PkgListMapData;\r\n    }\r\n\r\n    export interface ListPackagesRequest {\r\n        Target?: string;\r\n        Process?: string;\r\n        ProcessFilter?: string;\r\n    }\r\n\r\n    export interface PackageMapList {\r\n        PackageListMapData: PackageListMapData[];\r\n    }\r\n\r\n    export interface ListPackagesResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n        PackageMapList: PackageMapList;\r\n    }\r\n\r\n    export interface WsPackageProcessPingRequest {\r\n\r\n    }\r\n\r\n    export interface WsPackageProcessPingResponse {\r\n\r\n    }\r\n\r\n    export interface RemovePartFromPackageMapRequest {\r\n        Target?: string;\r\n        PackageMap?: string;\r\n        GlobalScope?: boolean;\r\n        PartName?: string;\r\n    }\r\n\r\n    export interface RemovePartFromPackageMapResponse {\r\n        Exceptions: Exceptions;\r\n        status: status;\r\n    }\r\n\r\n    export interface QueriesToVerify {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface QueriesToIgnore {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface ValidatePackageRequest {\r\n        Info?: string;\r\n        Target?: string;\r\n        Process?: string;\r\n        Active?: boolean;\r\n        PMID?: string;\r\n        QueryIdToVerify?: string;\r\n        QueriesToVerify?: QueriesToVerify;\r\n        QueriesToIgnore?: QueriesToIgnore;\r\n        CheckDFS?: boolean;\r\n        GlobalScope?: boolean;\r\n        IgnoreWarnings?: boolean;\r\n        IgnoreOptionalFiles?: boolean;\r\n    }\r\n\r\n    export interface Warnings {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Errors {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Unmatched {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface packages {\r\n        Unmatched: Unmatched;\r\n    }\r\n\r\n    export interface queries {\r\n        Unmatched: Unmatched;\r\n    }\r\n\r\n    export interface NotInDFS {\r\n        File: string[];\r\n    }\r\n\r\n    export interface files {\r\n        Unmatched: Unmatched;\r\n        NotInDFS: NotInDFS;\r\n    }\r\n\r\n    export interface Result {\r\n        Target: string;\r\n        PMID: string;\r\n        Warnings: Warnings;\r\n        Errors: Errors;\r\n        packages: packages;\r\n        queries: queries;\r\n        files: files;\r\n    }\r\n\r\n    export interface Results {\r\n        Result: Result[];\r\n    }\r\n\r\n    export interface ValidatePackageResponse {\r\n        Exceptions: Exceptions;\r\n        Results: Results;\r\n    }\r\n\r\n}\r\n\r\nexport class PackageProcessServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsPackageProcess\", \"1.07\");\r\n    }\r\n\r\n    ActivatePackage(request: Partial<WsPackageProcess.ActivatePackageRequest>): Promise<WsPackageProcess.ActivatePackageResponse> {\r\n        return this._connection.send(\"ActivatePackage\", request, \"json\", false, undefined, \"ActivatePackageResponse\");\r\n    }\r\n\r\n    AddPackage(request: Partial<WsPackageProcess.AddPackageRequest>): Promise<WsPackageProcess.AddPackageResponse> {\r\n        return this._connection.send(\"AddPackage\", request, \"json\", false, undefined, \"AddPackageResponse\");\r\n    }\r\n\r\n    AddPartToPackageMap(request: Partial<WsPackageProcess.AddPartToPackageMapRequest>): Promise<WsPackageProcess.AddPartToPackageMapResponse> {\r\n        return this._connection.send(\"AddPartToPackageMap\", request, \"json\", false, undefined, \"AddPartToPackageMapResponse\");\r\n    }\r\n\r\n    CopyPackageMap(request: Partial<WsPackageProcess.CopyPackageMapRequest>): Promise<WsPackageProcess.CopyPackageMapResponse> {\r\n        return this._connection.send(\"CopyPackageMap\", request, \"json\", false, undefined, \"CopyPackageMapResponse\");\r\n    }\r\n\r\n    DeActivatePackage(request: Partial<WsPackageProcess.DeActivatePackageRequest>): Promise<WsPackageProcess.DeActivatePackageResponse> {\r\n        return this._connection.send(\"DeActivatePackage\", request, \"json\", false, undefined, \"DeActivatePackageResponse\");\r\n    }\r\n\r\n    DeletePackage(request: Partial<WsPackageProcess.DeletePackageRequest>): Promise<WsPackageProcess.DeletePackageResponse> {\r\n        return this._connection.send(\"DeletePackage\", request, \"json\", false, undefined, \"DeletePackageResponse\");\r\n    }\r\n\r\n    Echo(request: Partial<WsPackageProcess.EchoRequest>): Promise<WsPackageProcess.EchoResponse> {\r\n        return this._connection.send(\"Echo\", request, \"json\", false, undefined, \"EchoResponse\");\r\n    }\r\n\r\n    GetPackage(request: Partial<WsPackageProcess.GetPackageRequest>): Promise<WsPackageProcess.GetPackageResponse> {\r\n        return this._connection.send(\"GetPackage\", request, \"json\", false, undefined, \"GetPackageResponse\");\r\n    }\r\n\r\n    GetPackageMapById(request: Partial<WsPackageProcess.GetPackageMapByIdRequest>): Promise<WsPackageProcess.GetPackageMapByIdResponse> {\r\n        return this._connection.send(\"GetPackageMapById\", request, \"json\", false, undefined, \"GetPackageMapByIdResponse\");\r\n    }\r\n\r\n    GetPackageMapSelectOptions(request: Partial<WsPackageProcess.GetPackageMapSelectOptionsRequest>): Promise<WsPackageProcess.GetPackageMapSelectOptionsResponse> {\r\n        return this._connection.send(\"GetPackageMapSelectOptions\", request, \"json\", false, undefined, \"GetPackageMapSelectOptionsResponse\");\r\n    }\r\n\r\n    GetPartFromPackageMap(request: Partial<WsPackageProcess.GetPartFromPackageMapRequest>): Promise<WsPackageProcess.GetPartFromPackageMapResponse> {\r\n        return this._connection.send(\"GetPartFromPackageMap\", request, \"json\", false, undefined, \"GetPartFromPackageMapResponse\");\r\n    }\r\n\r\n    GetQueryFileMapping(request: Partial<WsPackageProcess.GetQueryFileMappingRequest>): Promise<WsPackageProcess.GetQueryFileMappingResponse> {\r\n        return this._connection.send(\"GetQueryFileMapping\", request, \"json\", false, undefined, \"GetQueryFileMappingResponse\");\r\n    }\r\n\r\n    ListPackage(request: Partial<WsPackageProcess.ListPackageRequest>): Promise<WsPackageProcess.ListPackageResponse> {\r\n        return this._connection.send(\"ListPackage\", request, \"json\", false, undefined, \"ListPackageResponse\");\r\n    }\r\n\r\n    ListPackages(request: Partial<WsPackageProcess.ListPackagesRequest>): Promise<WsPackageProcess.ListPackagesResponse> {\r\n        return this._connection.send(\"ListPackages\", request, \"json\", false, undefined, \"ListPackagesResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsPackageProcess.WsPackageProcessPingRequest>): Promise<WsPackageProcess.WsPackageProcessPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsPackageProcessPingResponse\");\r\n    }\r\n\r\n    RemovePartFromPackageMap(request: Partial<WsPackageProcess.RemovePartFromPackageMapRequest>): Promise<WsPackageProcess.RemovePartFromPackageMapResponse> {\r\n        return this._connection.send(\"RemovePartFromPackageMap\", request, \"json\", false, undefined, \"RemovePartFromPackageMapResponse\");\r\n    }\r\n\r\n    ValidatePackage(request: Partial<WsPackageProcess.ValidatePackageRequest>): Promise<WsPackageProcess.ValidatePackageResponse> {\r\n        return this._connection.send(\"ValidatePackage\", request, \"json\", false, undefined, \"ValidatePackageResponse\");\r\n    }\r\n\r\n}\r\n", "import { PackageProcessServiceBase, WsPackageProcess } from \"./wsdl/WsPackageProcess/v1.07/WsPackageProcess.ts\";\r\n\r\nexport {\r\n    type WsPackageProcess\r\n};\r\n\r\nexport class PackageProcessService extends PackageProcessServiceBase {\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\ntype unsignedInt = number;\r\n\r\nexport namespace WsResources {\r\n\r\n    export interface WsResourcesPingRequest {\r\n\r\n    }\r\n\r\n    export interface WsResourcesPingResponse {\r\n\r\n    }\r\n\r\n    export interface ServiceQueryRequest {\r\n        Type?: string;\r\n        Name?: string;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface Service {\r\n        Name: string;\r\n        Type: string;\r\n        Port: unsignedInt;\r\n        TLSSecure: boolean;\r\n    }\r\n\r\n    export interface Services {\r\n        Service: Service[];\r\n    }\r\n\r\n    export interface ServiceQueryResponse {\r\n        Exceptions: {\r\n            Source: string;\r\n            Exception: Exception[];\r\n        };\r\n        Services: {\r\n            Service: Service[];\r\n        };\r\n    }\r\n\r\n    export interface WebLinksQueryRequest {\r\n\r\n    }\r\n\r\n    export interface NamedValue {\r\n        Name: string;\r\n        Value: string;\r\n    }\r\n\r\n    export interface Annotations {\r\n        NamedValue: NamedValue[];\r\n    }\r\n\r\n    export interface DiscoveredWebLink {\r\n        ServiceName: string;\r\n        NameSpace: string;\r\n        Annotations: {\r\n            NamedValue: NamedValue[];\r\n        };\r\n    }\r\n\r\n    export interface DiscoveredWebLinks {\r\n        DiscoveredWebLink: DiscoveredWebLink[];\r\n    }\r\n\r\n    export interface ConfiguredWebLink {\r\n        Name: string;\r\n        Description: string;\r\n        URL: string;\r\n    }\r\n\r\n    export interface ConfiguredWebLinks {\r\n        ConfiguredWebLink: ConfiguredWebLink[];\r\n    }\r\n\r\n    export interface WebLinksQueryResponse {\r\n        Exceptions: Exceptions;\r\n        DiscoveredWebLinks: {\r\n            DiscoveredWebLink: DiscoveredWebLink[];\r\n        };\r\n        ConfiguredWebLinks: {\r\n            ConfiguredWebLink: ConfiguredWebLink[];\r\n        };\r\n    }\r\n\r\n}\r\n\r\nexport class ResourcesServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsResources\", \"1.01\");\r\n    }\r\n\r\n    Ping(request: WsResources.WsResourcesPingRequest): Promise<WsResources.WsResourcesPingResponse> {\r\n        return this._connection.send(\"Ping\", request);\r\n    }\r\n\r\n    ServiceQuery(request: WsResources.ServiceQueryRequest): Promise<WsResources.ServiceQueryResponse> {\r\n        return this._connection.send(\"ServiceQuery\", request);\r\n    }\r\n\r\n    WebLinksQuery(request: WsResources.WebLinksQueryRequest): Promise<WsResources.WebLinksQueryResponse> {\r\n        return this._connection.send(\"WebLinksQuery\", request);\r\n    }\r\n\r\n}\r\n", "import { ResourcesServiceBase, WsResources } from \"./wsdl/WsResources/v1.01/WsResources.ts\";\r\n\r\nexport {\r\n    type WsResources\r\n};\r\n\r\nexport class ResourcesService extends ResourcesServiceBase {\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsSasha {\r\n\r\n    export type unsignedInt = number;\r\n\r\n    export enum WUTypes {\r\n        ECL = \"ECL\",\r\n        DFU = \"DFU\"\r\n    }\r\n\r\n    export interface ArchiveWURequest {\r\n        Wuid?: string;\r\n        WUType?: WUTypes;\r\n        DeleteOnSuccess?: boolean;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface ResultResponse {\r\n        Exceptions: Exceptions;\r\n        Result: string;\r\n    }\r\n\r\n    export interface GetVersionRequest {\r\n\r\n    }\r\n\r\n    export interface ListWURequest {\r\n        WUType?: WUTypes;\r\n        Wuid?: string;\r\n        Cluster?: string;\r\n        Owner?: string;\r\n        JobName?: string;\r\n        State?: string;\r\n        FromDate?: string;\r\n        ToDate?: string;\r\n        Archived?: boolean;\r\n        Online?: boolean;\r\n        IncludeDT?: boolean;\r\n        BeforeWU?: string;\r\n        AfterWU?: string;\r\n        MaxNumberWUs?: unsignedInt;\r\n        Descending?: boolean;\r\n        OutputFields?: string;\r\n    }\r\n\r\n    export interface WSSashaPingRequest {\r\n\r\n    }\r\n\r\n    export interface WSSashaPingResponse {\r\n\r\n    }\r\n\r\n    export interface RestoreWURequest {\r\n        Wuid?: string;\r\n        WUType?: WUTypes;\r\n    }\r\n\r\n}\r\n\r\nexport class SashaServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WSSasha\", \"1.01\");\r\n    }\r\n\r\n    ArchiveWU(request: Partial<WsSasha.ArchiveWURequest>): Promise<WsSasha.ResultResponse> {\r\n        return this._connection.send(\"ArchiveWU\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    GetVersion(request: Partial<WsSasha.GetVersionRequest>): Promise<WsSasha.ResultResponse> {\r\n        return this._connection.send(\"GetVersion\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    ListWU(request: Partial<WsSasha.ListWURequest>): Promise<WsSasha.ResultResponse> {\r\n        return this._connection.send(\"ListWU\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsSasha.WSSashaPingRequest>): Promise<WsSasha.WSSashaPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WSSashaPingResponse\");\r\n    }\r\n\r\n    RestoreWU(request: Partial<WsSasha.RestoreWURequest>): Promise<WsSasha.ResultResponse> {\r\n        return this._connection.send(\"RestoreWU\", request, \"json\", false, undefined, \"ResultResponse\");\r\n    }\r\n\r\n}\r\n", "import { SashaServiceBase, WsSasha } from \"./wsdl/WsSasha/v1.01/WsSasha.ts\";\r\n\r\nexport {\r\n    WsSasha\r\n};\r\n\r\nexport class SashaService extends SashaServiceBase {\r\n}", "import { timeParse } from \"d3-time-format\";\r\nimport { SMCServiceBase, WsSMC } from \"./wsdl/WsSMC/v1.29/WsSMC.ts\";\r\nimport { IOptions } from \"../connection.ts\";\r\n\r\nexport {\r\n    WsSMC\r\n};\r\n\r\nconst dateParser = timeParse(\"%Y%m%d%H\");\r\n\r\nfunction isNumeric(value: any): boolean {\r\n    return typeof value === \"number\" || (typeof value === \"string\" && value.trim() !== \"\" && !isNaN(+value));\r\n}\r\n\r\nexport interface NormalisedGlobalMetric {\r\n    Category: string;\r\n    Start: Date;\r\n    End: Date;\r\n    dimensions: { [key: string]: any };\r\n    stats: { [key: string]: any };\r\n}\r\n\r\nexport class SMCService extends SMCServiceBase {\r\n\r\n    connectionOptions(): IOptions {\r\n        return this._connection.opts();\r\n    }\r\n\r\n    Activity(request: WsSMC.Activity): Promise<WsSMC.ActivityResponse> {\r\n        return super.Activity(request).then(response => {\r\n            return {\r\n                Running: {\r\n                    ActiveWorkunit: []\r\n                },\r\n                ...response\r\n            };\r\n        });\r\n    }\r\n\r\n    protected parseGlobalMetric(name: string, value: any): any {\r\n        // Known Prefixes:  Cost, Critical, Definition, Disk, Distribute, Ecl, Enum, Id, Interface, Is, Library, Load, Match, Meta, Num, Original, Output, Patch, Per, Persist, Predicted, Record, Section, Service, Signed, Size, Source, Spill, Target, Time, Updated, When\r\n        if (name.startsWith(\"Cost\")) {\r\n            return +value / 1000000;\r\n        } else if (name.startsWith(\"Date\")) {\r\n            return dateParser(value);\r\n        } else if (name.startsWith(\"Num\")) {\r\n            return +value;\r\n        } else if (name.startsWith(\"Time\")) {\r\n            return +value / 1000000000;\r\n        } else if (name.startsWith(\"When\")) {\r\n            return new Date(+value / 1000).toISOString();\r\n        } else if (isNumeric(value)) {\r\n            return +value;\r\n        }\r\n        return value;\r\n    }\r\n\r\n    GetNormalisedGlobalMetrics(request: Partial<WsSMC.GetGlobalMetrics>): Promise<NormalisedGlobalMetric[]> {\r\n        return super.GetGlobalMetrics(request).then(response => {\r\n            const retVal: NormalisedGlobalMetric[] = [];\r\n            for (const metric of response?.GlobalMetrics?.GlobalMetric || []) {\r\n                const row: NormalisedGlobalMetric = {\r\n                    Category: metric.Category,\r\n                    Start: this.parseGlobalMetric(\"Date\", metric.DateTimeRange?.Start),\r\n                    End: this.parseGlobalMetric(\"Date\", metric.DateTimeRange?.End),\r\n                    dimensions: {},\r\n                    stats: {}\r\n                };\r\n                for (const dimension of metric.Dimensions?.Dimension || []) {\r\n                    row.dimensions[dimension.Name] = dimension.Value;\r\n                }\r\n                for (const stat of metric.Stats?.Stat || []) {\r\n                    row.stats[stat.Name] = this.parseGlobalMetric(stat.Name, stat.Value);\r\n                }\r\n                retVal.push(row);\r\n            }\r\n            return retVal;\r\n        });\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsSMC {\r\n\r\n    export type int = number;\r\n    export type dateTime = string;\r\n    export type unsignedInt = number;\r\n    export type long = number;\r\n\r\n    export enum LockModes {\r\n        ALL = \"ALL\",\r\n        READ = \"READ\",\r\n        WRITE = \"WRITE\",\r\n        HOLD = \"HOLD\",\r\n        SUB = \"SUB\"\r\n    }\r\n\r\n    export enum RoxieControlCmdType {\r\n        Attach = \"Attach\",\r\n        Detach = \"Detach\",\r\n        State = \"State\",\r\n        Reload = \"Reload\",\r\n        ReloadRetry = \"ReloadRetry\",\r\n        MemLock = \"MemLock\",\r\n        MemUnlock = \"MemUnlock\",\r\n        GetMemLocked = \"GetMemLocked\"\r\n    }\r\n\r\n    export interface Activity {\r\n        ChatURL: string;\r\n        BannerContent: string;\r\n        BannerColor: string;\r\n        BannerSize: string;\r\n        BannerScroll: string;\r\n        BannerAction: int;\r\n        EnableChatURL: boolean;\r\n        FromSubmitBtn: boolean;\r\n        SortBy: string;\r\n        Descending: boolean;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface TargetCluster {\r\n        ClusterName: string;\r\n        QueueName: string;\r\n        QueueStatus: string;\r\n        StatusDetails: string;\r\n        Warning: string;\r\n        ClusterType: int;\r\n        ClusterSize: int;\r\n        ClusterStatus: int;\r\n    }\r\n\r\n    export interface ThorClusterList {\r\n        TargetCluster: TargetCluster[];\r\n    }\r\n\r\n    export interface RoxieClusterList {\r\n        TargetCluster: TargetCluster[];\r\n    }\r\n\r\n    export interface HThorClusterList {\r\n        TargetCluster: TargetCluster[];\r\n    }\r\n\r\n    export interface DFUJob {\r\n        TimeStarted: string;\r\n        Done: int;\r\n        Total: int;\r\n        Command: string;\r\n    }\r\n\r\n    export interface DFUJobs {\r\n        DFUJob: DFUJob[];\r\n    }\r\n\r\n    export interface ActiveWorkunit {\r\n        Wuid: string;\r\n        State: string;\r\n        StateID: int;\r\n        Owner: string;\r\n        Jobname: string;\r\n        Server: string;\r\n        Instance: string;\r\n        Priority: string;\r\n        Extra: string;\r\n        GraphName: string;\r\n        Duration: string;\r\n        GID: string;\r\n        QueueName: string;\r\n        MemoryBlocked: int;\r\n        IsPausing: boolean;\r\n        Warning: string;\r\n        ClusterName: string;\r\n        ClusterType: string;\r\n        ClusterQueueName: string;\r\n        TargetClusterName: string;\r\n        NoAccess: boolean;\r\n    }\r\n\r\n    export interface Running {\r\n        ActiveWorkunit: ActiveWorkunit[];\r\n    }\r\n\r\n    export interface Queues {\r\n        ServerJobQueue: ServerJobQueue[];\r\n    }\r\n\r\n    export interface ServerJobQueue {\r\n        QueueName: string;\r\n        Queues: Queues;\r\n        ServerName: string;\r\n        ServerType: string;\r\n        QueueStatus: string;\r\n        StatusDetails: string;\r\n        NetworkAddress: string;\r\n        Port: int;\r\n    }\r\n\r\n    export interface ServerJobQueues {\r\n        ServerJobQueue: ServerJobQueue[];\r\n    }\r\n\r\n    export interface ActivityResponse {\r\n        Exceptions: Exceptions;\r\n        Build: string;\r\n        ThorClusterList: ThorClusterList;\r\n        RoxieClusterList: RoxieClusterList;\r\n        HThorClusterList: HThorClusterList;\r\n        DFUJobs: DFUJobs;\r\n        Running: Running;\r\n        BannerContent: string;\r\n        BannerColor: string;\r\n        BannerSize: string;\r\n        BannerScroll: string;\r\n        ChatURL: string;\r\n        ShowBanner: int;\r\n        ShowChatURL: int;\r\n        SortBy: string;\r\n        Descending: boolean;\r\n        SuperUser: boolean;\r\n        AccessRight: string;\r\n        ServerJobQueues: ServerJobQueues;\r\n        ActivityTime: string;\r\n        DaliDetached: boolean;\r\n    }\r\n\r\n    export interface BrowseResources {\r\n\r\n    }\r\n\r\n    export interface HPCCResource {\r\n        Name: string;\r\n        Description: string;\r\n        FileName: string;\r\n        Version: string;\r\n    }\r\n\r\n    export interface HPCCResources {\r\n        HPCCResource: HPCCResource[];\r\n    }\r\n\r\n    export interface HPCCResourceRepository {\r\n        Name: string;\r\n        Path: string;\r\n        HPCCResources: HPCCResources;\r\n    }\r\n\r\n    export interface HPCCResourceRepositories {\r\n        HPCCResourceRepository: HPCCResourceRepository[];\r\n    }\r\n\r\n    export interface BrowseResourcesResponse {\r\n        Exceptions: Exceptions;\r\n        PortalURL: string;\r\n        ESPInstance: string;\r\n        OS: int;\r\n        UseResource: boolean;\r\n        HPCCResourceRepositories: HPCCResourceRepositories;\r\n    }\r\n\r\n    export interface ClearQueue {\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Comment: string;\r\n        ServerType: string;\r\n        NetworkAddress: string;\r\n        Port: int;\r\n    }\r\n\r\n    export interface TargetClusterInfo {\r\n        ClusterName: string;\r\n        QueueName: string;\r\n        QueueStatus: string;\r\n        StatusDetails: string;\r\n        Warning: string;\r\n        ClusterType: int;\r\n        ClusterSize: int;\r\n        ClusterStatus: int;\r\n    }\r\n\r\n    export interface ServerInfo {\r\n        QueueName: string;\r\n        Queues: Queues;\r\n        ServerName: string;\r\n        ServerType: string;\r\n        QueueStatus: string;\r\n        StatusDetails: string;\r\n        NetworkAddress: string;\r\n        Port: int;\r\n    }\r\n\r\n    export interface Workunits {\r\n        ActiveWorkunit: ActiveWorkunit[];\r\n    }\r\n\r\n    export interface StatusServerInfo {\r\n        TargetClusterInfo: TargetClusterInfo;\r\n        ServerInfo: ServerInfo;\r\n        Workunits: Workunits;\r\n    }\r\n\r\n    export interface SMCQueueResponse {\r\n        Exceptions: Exceptions;\r\n        StatusServerInfo: StatusServerInfo;\r\n    }\r\n\r\n    export interface GetBuildInfo {\r\n\r\n    }\r\n\r\n    export interface NamedValue {\r\n        Name: string;\r\n        Value: string;\r\n    }\r\n\r\n    export interface BuildInfo {\r\n        NamedValue: NamedValue[];\r\n    }\r\n\r\n    export interface GetBuildInfoResponse {\r\n        Exceptions: Exceptions;\r\n        BuildInfo: BuildInfo;\r\n    }\r\n\r\n    export interface Dimension {\r\n        Name: string;\r\n        Value: string;\r\n    }\r\n\r\n    export interface Dimensions {\r\n        Dimension: Dimension[];\r\n    }\r\n\r\n    export interface DateTimeRange {\r\n        Start: dateTime;\r\n        End: dateTime;\r\n    }\r\n\r\n    export interface GetGlobalMetrics {\r\n        Category: string;\r\n        Dimensions: Dimensions;\r\n        DateTimeRange: DateTimeRange;\r\n    }\r\n\r\n    export interface Dimensions2 {\r\n        Dimension: Dimension[];\r\n    }\r\n\r\n    export interface Stat {\r\n        Name: string;\r\n        Value: string;\r\n    }\r\n\r\n    export interface Stats {\r\n        Stat: Stat[];\r\n    }\r\n\r\n    export interface GlobalMetric {\r\n        Category: string;\r\n        Dimensions: Dimensions2;\r\n        DateTimeRange: DateTimeRange;\r\n        Stats: Stats;\r\n    }\r\n\r\n    export interface GlobalMetrics {\r\n        GlobalMetric: GlobalMetric[];\r\n    }\r\n\r\n    export interface GetGlobalMetricsResponse {\r\n        Exceptions: Exceptions;\r\n        GlobalMetrics: GlobalMetrics;\r\n    }\r\n\r\n    export interface GetStatusServerInfo {\r\n        ServerName: string;\r\n        ServerType: string;\r\n        NetworkAddress: string;\r\n        Port: int;\r\n    }\r\n\r\n    export interface GetStatusServerInfoResponse {\r\n        Exceptions: Exceptions;\r\n        StatusServerInfo: StatusServerInfo;\r\n    }\r\n\r\n    export interface GetThorQueueAvailability {\r\n\r\n    }\r\n\r\n    export interface ThorCluster {\r\n        ClusterName: string;\r\n        QueueName: string;\r\n        QueueStatus: string;\r\n        QueueAvailable: int;\r\n        JobsRunning: int;\r\n        JobsInQueue: int;\r\n        QueueStatus2: int;\r\n        ThorLCR: string;\r\n        ClusterSize: int;\r\n    }\r\n\r\n    export interface ThorClusters {\r\n        ThorCluster: ThorCluster[];\r\n    }\r\n\r\n    export interface GetThorQueueAvailabilityResponse {\r\n        Exceptions: Exceptions;\r\n        ThorClusters: ThorClusters;\r\n    }\r\n\r\n    export interface Index {\r\n\r\n    }\r\n\r\n    export interface SMCIndexResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface LockQuery {\r\n        EPIP: string;\r\n        XPath: string;\r\n        DurationMSLow: unsignedInt;\r\n        DurationMSHigh: unsignedInt;\r\n        TimeLockedLow: string;\r\n        TimeLockedHigh: string;\r\n        Mode: LockModes;\r\n        AllFileLocks: boolean;\r\n    }\r\n\r\n    export interface ModeNames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Lock {\r\n        EPIP: string;\r\n        XPath: string;\r\n        LogicalFile: string;\r\n        SessionID: long;\r\n        DurationMS: unsignedInt;\r\n        TimeLocked: string;\r\n        Modes: string;\r\n        ModeNames: ModeNames;\r\n    }\r\n\r\n    export interface Locks {\r\n        Lock: Lock[];\r\n    }\r\n\r\n    export interface LockQueryResponse {\r\n        Exceptions: Exceptions;\r\n        Locks: Locks;\r\n        NumLocks: int;\r\n    }\r\n\r\n    export interface MoveJobBack {\r\n        ClusterType: int;\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Wuid: string;\r\n    }\r\n\r\n    export interface SMCJobResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface MoveJobDown {\r\n        ClusterType: int;\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Wuid: string;\r\n    }\r\n\r\n    export interface MoveJobFront {\r\n        ClusterType: int;\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Wuid: string;\r\n    }\r\n\r\n    export interface MoveJobUp {\r\n        ClusterType: int;\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Wuid: string;\r\n    }\r\n\r\n    export interface NotInCommunityEdition {\r\n        EEPortal: string;\r\n    }\r\n\r\n    export interface NotInCommunityEditionResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface PauseQueue {\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Comment: string;\r\n        ServerType: string;\r\n        NetworkAddress: string;\r\n        Port: int;\r\n    }\r\n\r\n    export interface Ping {\r\n\r\n    }\r\n\r\n    export interface WsSMCPingResponse {\r\n\r\n    }\r\n\r\n    export interface RecordGlobalMetrics {\r\n        Category: string;\r\n        Dimensions: Dimensions;\r\n        Stats: Stats;\r\n    }\r\n\r\n    export interface RecordGlobalMetricsResponse {\r\n        Exceptions: Exceptions;\r\n        Result: string;\r\n    }\r\n\r\n    export interface RemoveJob {\r\n        ClusterType: int;\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Wuid: string;\r\n    }\r\n\r\n    export interface ResumeQueue {\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Comment: string;\r\n        ServerType: string;\r\n        NetworkAddress: string;\r\n        Port: int;\r\n    }\r\n\r\n    export interface RoxieControlCmd {\r\n        ProcessCluster: string;\r\n        TargetCluster: string;\r\n        Command: RoxieControlCmdType;\r\n        Wait: int;\r\n    }\r\n\r\n    export interface Endpoint {\r\n        Address: string;\r\n        Attached: boolean;\r\n        StateHash: string;\r\n        Status: string;\r\n        MemLocked: boolean;\r\n    }\r\n\r\n    export interface Endpoints {\r\n        Endpoint: Endpoint[];\r\n    }\r\n\r\n    export interface RoxieControlCmdResponse {\r\n        Exceptions: Exceptions;\r\n        Endpoints: Endpoints;\r\n    }\r\n\r\n    export interface QueryIds {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface RoxieXrefCmd {\r\n        RoxieCluster: string;\r\n        QueryIds: QueryIds;\r\n        CheckAllNodes: boolean;\r\n        Wait: int;\r\n    }\r\n\r\n    export interface RoxieXrefCmdResponse {\r\n        Exceptions: Exceptions;\r\n        Result: string;\r\n    }\r\n\r\n    export interface SetBanner {\r\n        ChatURL: string;\r\n        BannerContent: string;\r\n        BannerColor: string;\r\n        BannerSize: string;\r\n        BannerScroll: string;\r\n        BannerAction: int;\r\n        EnableChatURL: boolean;\r\n        FromSubmitBtn: boolean;\r\n    }\r\n\r\n    export interface SetBannerResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface SMCJob {\r\n        Wuid: string;\r\n        QueueName: string;\r\n    }\r\n\r\n    export interface SMCJobs {\r\n        SMCJob: SMCJob[];\r\n    }\r\n\r\n    export interface SetJobPriority {\r\n        QueueName: string;\r\n        Wuid: string;\r\n        Priority: string;\r\n        SMCJobs: SMCJobs;\r\n    }\r\n\r\n    export interface SMCPriorityResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface StopQueue {\r\n        Cluster: string;\r\n        QueueName: string;\r\n        Comment: string;\r\n        ServerType: string;\r\n        NetworkAddress: string;\r\n        Port: int;\r\n    }\r\n\r\n}\r\n\r\nexport class SMCServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsSMC\", \"1.29\");\r\n    }\r\n\r\n    Activity(request: Partial<WsSMC.Activity>): Promise<WsSMC.ActivityResponse> {\r\n        return this._connection.send(\"Activity\", request, \"json\", false, undefined, \"ActivityResponse\");\r\n    }\r\n\r\n    BrowseResources(request: Partial<WsSMC.BrowseResources>): Promise<WsSMC.BrowseResourcesResponse> {\r\n        return this._connection.send(\"BrowseResources\", request, \"json\", false, undefined, \"BrowseResourcesResponse\");\r\n    }\r\n\r\n    ClearQueue(request: Partial<WsSMC.ClearQueue>): Promise<WsSMC.SMCQueueResponse> {\r\n        return this._connection.send(\"ClearQueue\", request, \"json\", false, undefined, \"SMCQueueResponse\");\r\n    }\r\n\r\n    GetBuildInfo(request: Partial<WsSMC.GetBuildInfo>): Promise<WsSMC.GetBuildInfoResponse> {\r\n        return this._connection.send(\"GetBuildInfo\", request, \"json\", false, undefined, \"GetBuildInfoResponse\");\r\n    }\r\n\r\n    GetGlobalMetrics(request: Partial<WsSMC.GetGlobalMetrics>): Promise<WsSMC.GetGlobalMetricsResponse> {\r\n        return this._connection.send(\"GetGlobalMetrics\", request, \"json\", false, undefined, \"GetGlobalMetricsResponse\");\r\n    }\r\n\r\n    GetStatusServerInfo(request: Partial<WsSMC.GetStatusServerInfo>): Promise<WsSMC.GetStatusServerInfoResponse> {\r\n        return this._connection.send(\"GetStatusServerInfo\", request, \"json\", false, undefined, \"GetStatusServerInfoResponse\");\r\n    }\r\n\r\n    GetThorQueueAvailability(request: Partial<WsSMC.GetThorQueueAvailability>): Promise<WsSMC.GetThorQueueAvailabilityResponse> {\r\n        return this._connection.send(\"GetThorQueueAvailability\", request, \"json\", false, undefined, \"GetThorQueueAvailabilityResponse\");\r\n    }\r\n\r\n    Index(request: Partial<WsSMC.Index>): Promise<WsSMC.SMCIndexResponse> {\r\n        return this._connection.send(\"Index\", request, \"json\", false, undefined, \"SMCIndexResponse\");\r\n    }\r\n\r\n    LockQuery(request: Partial<WsSMC.LockQuery>): Promise<WsSMC.LockQueryResponse> {\r\n        return this._connection.send(\"LockQuery\", request, \"json\", false, undefined, \"LockQueryResponse\");\r\n    }\r\n\r\n    MoveJobBack(request: Partial<WsSMC.MoveJobBack>): Promise<WsSMC.SMCJobResponse> {\r\n        return this._connection.send(\"MoveJobBack\", request, \"json\", false, undefined, \"SMCJobResponse\");\r\n    }\r\n\r\n    MoveJobDown(request: Partial<WsSMC.MoveJobDown>): Promise<WsSMC.SMCJobResponse> {\r\n        return this._connection.send(\"MoveJobDown\", request, \"json\", false, undefined, \"SMCJobResponse\");\r\n    }\r\n\r\n    MoveJobFront(request: Partial<WsSMC.MoveJobFront>): Promise<WsSMC.SMCJobResponse> {\r\n        return this._connection.send(\"MoveJobFront\", request, \"json\", false, undefined, \"SMCJobResponse\");\r\n    }\r\n\r\n    MoveJobUp(request: Partial<WsSMC.MoveJobUp>): Promise<WsSMC.SMCJobResponse> {\r\n        return this._connection.send(\"MoveJobUp\", request, \"json\", false, undefined, \"SMCJobResponse\");\r\n    }\r\n\r\n    NotInCommunityEdition(request: Partial<WsSMC.NotInCommunityEdition>): Promise<WsSMC.NotInCommunityEditionResponse> {\r\n        return this._connection.send(\"NotInCommunityEdition\", request, \"json\", false, undefined, \"NotInCommunityEditionResponse\");\r\n    }\r\n\r\n    PauseQueue(request: Partial<WsSMC.PauseQueue>): Promise<WsSMC.SMCQueueResponse> {\r\n        return this._connection.send(\"PauseQueue\", request, \"json\", false, undefined, \"SMCQueueResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsSMC.Ping>): Promise<WsSMC.WsSMCPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsSMCPingResponse\");\r\n    }\r\n\r\n    RecordGlobalMetrics(request: Partial<WsSMC.RecordGlobalMetrics>): Promise<WsSMC.RecordGlobalMetricsResponse> {\r\n        return this._connection.send(\"RecordGlobalMetrics\", request, \"json\", false, undefined, \"RecordGlobalMetricsResponse\");\r\n    }\r\n\r\n    RemoveJob(request: Partial<WsSMC.RemoveJob>): Promise<WsSMC.SMCJobResponse> {\r\n        return this._connection.send(\"RemoveJob\", request, \"json\", false, undefined, \"SMCJobResponse\");\r\n    }\r\n\r\n    ResumeQueue(request: Partial<WsSMC.ResumeQueue>): Promise<WsSMC.SMCQueueResponse> {\r\n        return this._connection.send(\"ResumeQueue\", request, \"json\", false, undefined, \"SMCQueueResponse\");\r\n    }\r\n\r\n    RoxieControlCmd(request: Partial<WsSMC.RoxieControlCmd>): Promise<WsSMC.RoxieControlCmdResponse> {\r\n        return this._connection.send(\"RoxieControlCmd\", request, \"json\", false, undefined, \"RoxieControlCmdResponse\");\r\n    }\r\n\r\n    RoxieXrefCmd(request: Partial<WsSMC.RoxieXrefCmd>): Promise<WsSMC.RoxieXrefCmdResponse> {\r\n        return this._connection.send(\"RoxieXrefCmd\", request, \"json\", false, undefined, \"RoxieXrefCmdResponse\");\r\n    }\r\n\r\n    SetBanner(request: Partial<WsSMC.SetBanner>): Promise<WsSMC.SetBannerResponse> {\r\n        return this._connection.send(\"SetBanner\", request, \"json\", false, undefined, \"SetBannerResponse\");\r\n    }\r\n\r\n    SetJobPriority(request: Partial<WsSMC.SetJobPriority>): Promise<WsSMC.SMCPriorityResponse> {\r\n        return this._connection.send(\"SetJobPriority\", request, \"json\", false, undefined, \"SMCPriorityResponse\");\r\n    }\r\n\r\n    StopQueue(request: Partial<WsSMC.StopQueue>): Promise<WsSMC.SMCQueueResponse> {\r\n        return this._connection.send(\"StopQueue\", request, \"json\", false, undefined, \"SMCQueueResponse\");\r\n    }\r\n\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace Wsstore {\r\n\r\n    export type int = number;\r\n\r\n    export interface CreateStoreRequest {\r\n        Name?: string;\r\n        Type?: string;\r\n        Description?: string;\r\n        MaxValueSize?: int;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface CreateStoreResponse {\r\n        Exceptions: Exceptions;\r\n        Name: string;\r\n        Type: string;\r\n        Description: string;\r\n        Owner: string;\r\n        Success: boolean;\r\n    }\r\n\r\n    export interface DeleteRequest {\r\n        StoreName?: string;\r\n        Namespace?: string;\r\n        Key?: string;\r\n        UserSpecific?: boolean;\r\n        TargetUser?: string;\r\n    }\r\n\r\n    export interface DeleteResponse {\r\n        Exceptions: Exceptions;\r\n        Success: boolean;\r\n    }\r\n\r\n    export interface DeleteNamespaceRequest {\r\n        StoreName?: string;\r\n        Namespace?: string;\r\n        UserSpecific?: boolean;\r\n        TargetUser?: string;\r\n    }\r\n\r\n    export interface DeleteNamespaceResponse {\r\n        Exceptions: Exceptions;\r\n        Success: boolean;\r\n    }\r\n\r\n    export interface FetchRequest {\r\n        StoreName?: string;\r\n        Namespace?: string;\r\n        Key?: string;\r\n        UserSpecific?: boolean;\r\n    }\r\n\r\n    export interface FetchResponse {\r\n        Exceptions: Exceptions;\r\n        Value: string;\r\n    }\r\n\r\n    export interface FetchAllRequest {\r\n        StoreName?: string;\r\n        Namespace?: string;\r\n        UserSpecific?: boolean;\r\n    }\r\n\r\n    export interface Pair {\r\n        Key: string;\r\n        Value: string;\r\n    }\r\n\r\n    export interface Pairs {\r\n        Pair: Pair[];\r\n    }\r\n\r\n    export interface FetchAllResponse {\r\n        Exceptions: Exceptions;\r\n        Namespace: string;\r\n        Pairs: Pairs;\r\n    }\r\n\r\n    export interface FetchKeyMDRequest {\r\n        StoreName?: string;\r\n        Namespace?: string;\r\n        Key?: string;\r\n        UserSpecific?: boolean;\r\n    }\r\n\r\n    export interface FetchKeyMDResponse {\r\n        Exceptions: Exceptions;\r\n        StoreName: string;\r\n        Namespace: string;\r\n        Key: string;\r\n        Pairs: Pairs;\r\n    }\r\n\r\n    export interface ListKeysRequest {\r\n        StoreName?: string;\r\n        Namespace?: string;\r\n        UserSpecific?: boolean;\r\n    }\r\n\r\n    export interface KeySet {\r\n        Key: string[];\r\n    }\r\n\r\n    export interface ListKeysResponse {\r\n        Exceptions: Exceptions;\r\n        StoreName: string;\r\n        Namespace: string;\r\n        KeySet: KeySet;\r\n    }\r\n\r\n    export interface ListNamespacesRequest {\r\n        StoreName?: string;\r\n        UserSpecific?: boolean;\r\n    }\r\n\r\n    export interface Namespaces {\r\n        Namespace: string[];\r\n    }\r\n\r\n    export interface ListNamespacesResponse {\r\n        Exceptions: Exceptions;\r\n        StoreName: string;\r\n        Namespaces: Namespaces;\r\n    }\r\n\r\n    export interface ListStoresRequest {\r\n        NameFilter?: string;\r\n        TypeFilter?: string;\r\n        OwnerFilter?: string;\r\n    }\r\n\r\n    export interface Store {\r\n        Name: string;\r\n        Type: string;\r\n        Description: string;\r\n        Owner: string;\r\n        CreateTime: string;\r\n        MaxValSize: string;\r\n        IsDefault: boolean;\r\n    }\r\n\r\n    export interface Stores {\r\n        Store: Store[];\r\n    }\r\n\r\n    export interface ListStoresResponse {\r\n        Exceptions: Exceptions;\r\n        Stores: Stores;\r\n    }\r\n\r\n    export interface wsstorePingRequest {\r\n\r\n    }\r\n\r\n    export interface wsstorePingResponse {\r\n\r\n    }\r\n\r\n    export interface SetRequest {\r\n        StoreName?: string;\r\n        Namespace?: string;\r\n        Key?: string;\r\n        Value?: string;\r\n        UserSpecific?: boolean;\r\n    }\r\n\r\n    export interface SetResponse {\r\n        Exceptions: Exceptions;\r\n        Success: boolean;\r\n    }\r\n\r\n}\r\n\r\nexport class storeServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"wsstore\", \"1.02\");\r\n    }\r\n\r\n    CreateStore(request: Partial<Wsstore.CreateStoreRequest>): Promise<Wsstore.CreateStoreResponse> {\r\n        return this._connection.send(\"CreateStore\", request, \"json\", false, undefined, \"CreateStoreResponse\");\r\n    }\r\n\r\n    Delete(request: Partial<Wsstore.DeleteRequest>): Promise<Wsstore.DeleteResponse> {\r\n        return this._connection.send(\"Delete\", request, \"json\", false, undefined, \"DeleteResponse\");\r\n    }\r\n\r\n    DeleteNamespace(request: Partial<Wsstore.DeleteNamespaceRequest>): Promise<Wsstore.DeleteNamespaceResponse> {\r\n        return this._connection.send(\"DeleteNamespace\", request, \"json\", false, undefined, \"DeleteNamespaceResponse\");\r\n    }\r\n\r\n    Fetch(request: Partial<Wsstore.FetchRequest>): Promise<Wsstore.FetchResponse> {\r\n        return this._connection.send(\"Fetch\", request, \"json\", false, undefined, \"FetchResponse\");\r\n    }\r\n\r\n    FetchAll(request: Partial<Wsstore.FetchAllRequest>): Promise<Wsstore.FetchAllResponse> {\r\n        return this._connection.send(\"FetchAll\", request, \"json\", false, undefined, \"FetchAllResponse\");\r\n    }\r\n\r\n    FetchKeyMetadata(request: Partial<Wsstore.FetchKeyMDRequest>): Promise<Wsstore.FetchKeyMDResponse> {\r\n        return this._connection.send(\"FetchKeyMetadata\", request, \"json\", false, undefined, \"FetchKeyMDResponse\");\r\n    }\r\n\r\n    ListKeys(request: Partial<Wsstore.ListKeysRequest>): Promise<Wsstore.ListKeysResponse> {\r\n        return this._connection.send(\"ListKeys\", request, \"json\", false, undefined, \"ListKeysResponse\");\r\n    }\r\n\r\n    ListNamespaces(request: Partial<Wsstore.ListNamespacesRequest>): Promise<Wsstore.ListNamespacesResponse> {\r\n        return this._connection.send(\"ListNamespaces\", request, \"json\", false, undefined, \"ListNamespacesResponse\");\r\n    }\r\n\r\n    ListStores(request: Partial<Wsstore.ListStoresRequest>): Promise<Wsstore.ListStoresResponse> {\r\n        return this._connection.send(\"ListStores\", request, \"json\", false, undefined, \"ListStoresResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<Wsstore.wsstorePingRequest>): Promise<Wsstore.wsstorePingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"wsstorePingResponse\");\r\n    }\r\n\r\n    Set(request: Partial<Wsstore.SetRequest>): Promise<Wsstore.SetResponse> {\r\n        return this._connection.send(\"Set\", request, \"json\", false, undefined, \"SetResponse\");\r\n    }\r\n\r\n}\r\n", "import { storeServiceBase as StoreServiceBase, Wsstore as WsStore } from \"./wsdl/wsstore/v1.02/wsstore.ts\";\r\n\r\nexport { type WsStore };\r\n\r\nexport class StoreService extends StoreServiceBase {\r\n\r\n    Delete(request: Partial<WsStore.DeleteRequest>): Promise<WsStore.DeleteResponse> {\r\n        return super.Delete(request).catch(e => {\r\n            if (e.isESPExceptions && e.Exception.some(e => e.Code === -1)) {\r\n                //  \"Delete\" item does not exist  ---\r\n                return {\r\n                    Exceptions: undefined,\r\n                    Success: true\r\n                } as WsStore.DeleteResponse;\r\n            }\r\n            throw e;\r\n        });\r\n    }\r\n\r\n    Fetch(request: Partial<WsStore.FetchRequest>): Promise<WsStore.FetchResponse> {\r\n        return super.Fetch(request).catch(e => {\r\n            if (e.isESPExceptions && e.Exception.some(e => e.Code === -1)) {\r\n                //  \"Fetch\" item does not exist  ---\r\n                return {\r\n                    Exceptions: undefined,\r\n                    Value: undefined\r\n                } as WsStore.FetchResponse;\r\n            }\r\n            throw e;\r\n        });\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsTopology {\r\n\r\n    export type int = number;\r\n    export type base64Binary = string;\r\n    export type unsignedInt = number;\r\n    export type long = number;\r\n\r\n    export enum TpConfigResponseFormat {\r\n        XML = \"XML\",\r\n        YAML = \"YAML\"\r\n    }\r\n\r\n    export enum RoxieQueueFilter {\r\n        All = \"All\",\r\n        QueriesOnly = \"QueriesOnly\",\r\n        WorkunitsOnly = \"WorkunitsOnly\"\r\n    }\r\n\r\n    export enum TpMachineType {\r\n        ALLNODES = \"ALLNODES\",\r\n        THORMACHINES = \"THORMACHINES\",\r\n        HOLEMACHINES = \"HOLEMACHINES\",\r\n        ROXIEMACHINES = \"ROXIEMACHINES\",\r\n        MACHINES = \"MACHINES\",\r\n        AVAILABLEMACHINES = \"AVAILABLEMACHINES\",\r\n        DROPZONE = \"DROPZONE\",\r\n        STANDBYNNODE = \"STANDBYNNODE\",\r\n        THORSPARENODES = \"THORSPARENODES\",\r\n        HOLESTANDBYNODES = \"HOLESTANDBYNODES\"\r\n    }\r\n\r\n    export interface WsTopologyPingRequest {\r\n\r\n    }\r\n\r\n    export interface WsTopologyPingResponse {\r\n\r\n    }\r\n\r\n    export interface SystemLogRequest {\r\n        Name?: string;\r\n        Type?: string;\r\n        Zip?: int;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface SystemLogResponse {\r\n        Exceptions: Exceptions;\r\n        thefile: base64Binary;\r\n    }\r\n\r\n    export interface TpClusterInfoRequest {\r\n        Name?: string;\r\n    }\r\n\r\n    export interface TpQueue {\r\n        Name: string;\r\n        WorkUnit: string;\r\n    }\r\n\r\n    export interface TpQueues {\r\n        TpQueue: TpQueue[];\r\n    }\r\n\r\n    export interface TpClusterInfoResponse {\r\n        Exceptions: Exceptions;\r\n        Name: string;\r\n        WorkUnit: string;\r\n        TpQueues: TpQueues;\r\n    }\r\n\r\n    export interface TpClusterQueryRequest {\r\n        Type?: string;\r\n    }\r\n\r\n    export interface TpMachine {\r\n        Name: string;\r\n        Netaddress: string;\r\n        ConfigNetaddress: string;\r\n        Domain: string;\r\n        Directory: string;\r\n        Type: string;\r\n        Available: string;\r\n        OS: int;\r\n        Path: string;\r\n        Port: int;\r\n        ProcessNumber: int;\r\n        Channels: unsignedInt;\r\n    }\r\n\r\n    export interface TpMachines {\r\n        TpMachine: TpMachine[];\r\n    }\r\n\r\n    export interface TpCluster {\r\n        Type: string;\r\n        Name: string;\r\n        QueueName: string;\r\n        Build: string;\r\n        Directory: string;\r\n        LogDirectory: string;\r\n        Desc: string;\r\n        Path: string;\r\n        DataModel: string;\r\n        OS: int;\r\n        HasThorSpareProcess: boolean;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpClusters {\r\n        TpCluster: TpCluster[];\r\n    }\r\n\r\n    export interface TpClusterQueryResponse {\r\n        Exceptions: Exceptions;\r\n        EnableSNMP: boolean;\r\n        AcceptLanguage: string;\r\n        TpClusters: TpClusters;\r\n    }\r\n\r\n    export interface ComponentNames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface TpComponentConfigurationRequest {\r\n        ComponentNames?: ComponentNames;\r\n    }\r\n\r\n    export interface Result {\r\n        ComponentName: string;\r\n        Configuration: string;\r\n    }\r\n\r\n    export interface Results {\r\n        Result: Result[];\r\n    }\r\n\r\n    export interface TpComponentConfigurationResponse {\r\n        Exceptions: Exceptions;\r\n        ConfigFormat: TpConfigResponseFormat;\r\n        Results: Results;\r\n    }\r\n\r\n    export interface TpConfiguredComponentsRequest {\r\n\r\n    }\r\n\r\n    export interface ConfiguredComponents {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface TpConfiguredComponentsResponse {\r\n        Exceptions: Exceptions;\r\n        ConfiguredComponents: ConfiguredComponents;\r\n    }\r\n\r\n    export interface TpDropZoneQueryRequest {\r\n        Name?: string;\r\n        ECLWatchVisibleOnly?: boolean;\r\n    }\r\n\r\n    export interface TpDropZone {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Path: string;\r\n        ECLWatchVisible: boolean;\r\n        UMask: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpDropZones {\r\n        TpDropZone: TpDropZone[];\r\n    }\r\n\r\n    export interface TpDropZoneQueryResponse {\r\n        Exceptions: Exceptions;\r\n        TpDropZones: TpDropZones;\r\n    }\r\n\r\n    export interface TpGetComponentFileRequest {\r\n        CompType?: string;\r\n        CompName?: string;\r\n        NetAddress?: string;\r\n        Directory?: string;\r\n        FileType?: string;\r\n        OsType?: int;\r\n        PlainText?: string;\r\n    }\r\n\r\n    export interface TpGetComponentFileResponse {\r\n        Exceptions: Exceptions;\r\n        FileContents: base64Binary;\r\n    }\r\n\r\n    export interface TpGetServicePluginsRequest {\r\n\r\n    }\r\n\r\n    export interface Plugin {\r\n        ShortName: string;\r\n        LongName: string;\r\n        FolderName: string;\r\n        WidgetName: string;\r\n    }\r\n\r\n    export interface Plugins {\r\n        Plugin: Plugin[];\r\n    }\r\n\r\n    export interface TpGetServicePluginsResponse {\r\n        Exceptions: Exceptions;\r\n        Plugins: Plugins;\r\n    }\r\n\r\n    export interface TpGroupQueryRequest {\r\n        Kind?: string;\r\n    }\r\n\r\n    export interface TpGroup {\r\n        Name: string;\r\n        Kind: string;\r\n        ReplicateOutputs: boolean;\r\n    }\r\n\r\n    export interface TpGroups {\r\n        TpGroup: TpGroup[];\r\n    }\r\n\r\n    export interface TpGroupQueryResponse {\r\n        Exceptions: Exceptions;\r\n        TpGroups: TpGroups;\r\n    }\r\n\r\n    export interface TpListLogFilesRequest {\r\n        NetworkAddress?: string;\r\n        Path?: string;\r\n    }\r\n\r\n    export interface LogFileStruct {\r\n        Name: string;\r\n        Path: string;\r\n        Host: string;\r\n        IsDir: boolean;\r\n        FileSize: long;\r\n        Modifiedtime: string;\r\n    }\r\n\r\n    export interface Files {\r\n        LogFileStruct: LogFileStruct[];\r\n    }\r\n\r\n    export interface TpListLogFilesResponse {\r\n        Exceptions: Exceptions;\r\n        Files: Files;\r\n    }\r\n\r\n    export interface TpListTargetClustersRequest {\r\n\r\n    }\r\n\r\n    export interface TpClusterNameType {\r\n        Name: string;\r\n        Type: string;\r\n        IsDefault: boolean;\r\n    }\r\n\r\n    export interface TargetClusters {\r\n        TpClusterNameType: TpClusterNameType[];\r\n    }\r\n\r\n    export interface TpListTargetClustersResponse {\r\n        Exceptions: Exceptions;\r\n        TargetClusters: TargetClusters;\r\n    }\r\n\r\n    export interface TpLogFileRequest {\r\n        Name?: string;\r\n        Type?: string;\r\n        LastHours?: int;\r\n        StartDate?: string;\r\n        EndDate?: string;\r\n        FirstRows?: int;\r\n        LastRows?: int;\r\n        FilterType?: int;\r\n        Reversely?: boolean;\r\n        Zip?: boolean;\r\n        PageNumber?: int;\r\n        LoadData?: boolean;\r\n        IncludeLogFieldNames?: boolean;\r\n    }\r\n\r\n    export interface LogFieldNames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface TpLogFileResponse {\r\n        Exceptions: Exceptions;\r\n        Name: string;\r\n        Type: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        LastHours: int;\r\n        FirstRows: int;\r\n        LastRows: int;\r\n        Reversely: boolean;\r\n        Zip: boolean;\r\n        FilterType: int;\r\n        LogData: string;\r\n        HasDate: boolean;\r\n        FileSize: long;\r\n        PageFrom: long;\r\n        PageTo: long;\r\n        PageNumber: int;\r\n        PrevPage: int;\r\n        NextPage: int;\r\n        TotalPages: int;\r\n        AcceptLanguage: string;\r\n        LogFieldNames: LogFieldNames;\r\n    }\r\n\r\n    export interface TpLogicalClusterQueryRequest {\r\n        EclServerQueue?: string;\r\n        RoxieQueueFilter?: RoxieQueueFilter;\r\n    }\r\n\r\n    export interface TpLogicalCluster {\r\n        Name: string;\r\n        Queue: string;\r\n        LanguageVersion: string;\r\n        Process: string;\r\n        Type: string;\r\n        QueriesOnly: boolean;\r\n    }\r\n\r\n    export interface TpLogicalClusters {\r\n        TpLogicalCluster: TpLogicalCluster[];\r\n    }\r\n\r\n    export interface TpLogicalClusterQueryResponse {\r\n        Exceptions: Exceptions;\r\n        TpLogicalClusters: TpLogicalClusters;\r\n    }\r\n\r\n    export interface TpMachineInfoRequest {\r\n        Name?: string;\r\n        NetAddress?: string;\r\n    }\r\n\r\n    export interface MachineInfo {\r\n        Name: string;\r\n        Netaddress: string;\r\n        ConfigNetaddress: string;\r\n        Domain: string;\r\n        Directory: string;\r\n        Type: string;\r\n        Available: string;\r\n        OS: int;\r\n        Path: string;\r\n        Port: int;\r\n        ProcessNumber: int;\r\n        Channels: unsignedInt;\r\n    }\r\n\r\n    export interface TpMachineInfoResponse {\r\n        Exceptions: Exceptions;\r\n        MachineInfo: MachineInfo;\r\n    }\r\n\r\n    export interface TpMachineQueryRequest {\r\n        Type?: TpMachineType;\r\n        Cluster?: string;\r\n        OldIP?: string;\r\n        Path?: string;\r\n        Directory?: string;\r\n        LogDirectory?: string;\r\n    }\r\n\r\n    export interface TpMachineQueryResponse {\r\n        Exceptions: Exceptions;\r\n        EnablePreflightInfo: boolean;\r\n        HasThorSpareProcess: boolean;\r\n        Type: TpMachineType;\r\n        Cluster: string;\r\n        OldIP: string;\r\n        LogDirectory: string;\r\n        Path: string;\r\n        MemThreshold: int;\r\n        DiskThreshold: int;\r\n        CpuThreshold: int;\r\n        MemThresholdType: string;\r\n        DiskThresholdType: string;\r\n        PreflightProcessFilter: string;\r\n        EnableSNMP: boolean;\r\n        AcceptLanguage: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpServiceQueryRequest {\r\n        Type?: string;\r\n    }\r\n\r\n    export interface TpDali {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        BackupComputer: string;\r\n        BackupDirectory: string;\r\n        Type: string;\r\n        Path: string;\r\n        LogDirectory: string;\r\n        AuditLogDirectory: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpDalis {\r\n        TpDali: TpDali[];\r\n    }\r\n\r\n    export interface TpDfuServer {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Queue: string;\r\n        Type: string;\r\n        Path: string;\r\n        LogDirectory: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpDfuServers {\r\n        TpDfuServer: TpDfuServer[];\r\n    }\r\n\r\n    export interface TpDkcSlave {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Path: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpDkcSlaves {\r\n        TpDkcSlave: TpDkcSlave[];\r\n    }\r\n\r\n    export interface TpEclAgent {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Type: string;\r\n        Path: string;\r\n        DaliServer: string;\r\n        LogDir: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpEclAgents {\r\n        TpEclAgent: TpEclAgent[];\r\n    }\r\n\r\n    export interface TpEclServer {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        LogDirectory: string;\r\n        Type: string;\r\n        Path: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpEclServers {\r\n        TpEclServer: TpEclServer[];\r\n    }\r\n\r\n    export interface TpEclCCServers {\r\n        TpEclServer: TpEclServer[];\r\n    }\r\n\r\n    export interface TpEclScheduler {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        LogDirectory: string;\r\n        Type: string;\r\n        Path: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpEclSchedulers {\r\n        TpEclScheduler: TpEclScheduler[];\r\n    }\r\n\r\n    export interface TpBinding {\r\n        Name: string;\r\n        Service: string;\r\n        ServiceType: string;\r\n        BindingType: string;\r\n        ServiceBuildSet: string;\r\n        Port: string;\r\n        Protocol: string;\r\n    }\r\n\r\n    export interface TpBindings {\r\n        TpBinding: TpBinding[];\r\n    }\r\n\r\n    export interface TpEspServer {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Type: string;\r\n        Path: string;\r\n        LogDirectory: string;\r\n        TpMachines: TpMachines;\r\n        TpBindings: TpBindings;\r\n    }\r\n\r\n    export interface TpEspServers {\r\n        TpEspServer: TpEspServer[];\r\n    }\r\n\r\n    export interface TpFTSlave {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Path: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpFTSlaves {\r\n        TpFTSlave: TpFTSlave[];\r\n    }\r\n\r\n    export interface TpGenesisServer {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Path: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpGenesisServers {\r\n        TpGenesisServer: TpGenesisServer[];\r\n    }\r\n\r\n    export interface TpLdapServer {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Path: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpLdapServers {\r\n        TpLdapServer: TpLdapServer[];\r\n    }\r\n\r\n    export interface TpMySqlServer {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Path: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpMySqlServers {\r\n        TpMySqlServer: TpMySqlServer[];\r\n    }\r\n\r\n    export interface TpSashaServer {\r\n        Name: string;\r\n        Description: string;\r\n        Build: string;\r\n        Path: string;\r\n        LogDirectory: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpSashaServers {\r\n        TpSashaServer: TpSashaServer[];\r\n    }\r\n\r\n    export interface TpSparkThor {\r\n        Name: string;\r\n        Build: string;\r\n        ThorClusterName: string;\r\n        ThorPath: string;\r\n        SparkExecutorCores: unsignedInt;\r\n        SparkExecutorMemory: long;\r\n        SparkMasterPort: unsignedInt;\r\n        SparkMasterWebUIPort: unsignedInt;\r\n        SparkWorkerCores: unsignedInt;\r\n        SparkWorkerMemory: long;\r\n        SparkWorkerPort: unsignedInt;\r\n        LogDirectory: string;\r\n        Path: string;\r\n        TpMachines: TpMachines;\r\n    }\r\n\r\n    export interface TpSparkThors {\r\n        TpSparkThor: TpSparkThor[];\r\n    }\r\n\r\n    export interface ServiceList {\r\n        TpDalis: TpDalis;\r\n        TpDfuServers: TpDfuServers;\r\n        TpDkcSlaves: TpDkcSlaves;\r\n        TpDropZones: TpDropZones;\r\n        TpEclAgents: TpEclAgents;\r\n        TpEclServers: TpEclServers;\r\n        TpEclCCServers: TpEclCCServers;\r\n        TpEclSchedulers: TpEclSchedulers;\r\n        TpEspServers: TpEspServers;\r\n        TpFTSlaves: TpFTSlaves;\r\n        TpGenesisServers: TpGenesisServers;\r\n        TpLdapServers: TpLdapServers;\r\n        TpMySqlServers: TpMySqlServers;\r\n        TpSashaServers: TpSashaServers;\r\n        TpSparkThors: TpSparkThors;\r\n    }\r\n\r\n    export interface TpServiceQueryResponse {\r\n        Exceptions: Exceptions;\r\n        MemThreshold: int;\r\n        DiskThreshold: int;\r\n        CpuThreshold: int;\r\n        EncapsulatedSystem: boolean;\r\n        EnableSNMP: boolean;\r\n        PreflightProcessFilter: string;\r\n        AcceptLanguage: string;\r\n        MemThresholdType: string;\r\n        DiskThresholdType: string;\r\n        ServiceList: ServiceList;\r\n    }\r\n\r\n    export interface TpSetMachineStatusRequest {\r\n        MachinePath?: string;\r\n        StatusValue?: string;\r\n    }\r\n\r\n    export interface TpSetMachineStatusResponse {\r\n        Exceptions: Exceptions;\r\n        TpSetMachineStatusResult: boolean;\r\n    }\r\n\r\n    export interface TpSwapNodeRequest {\r\n        Cluster?: string;\r\n        OldIP?: string;\r\n        NewIP?: string;\r\n    }\r\n\r\n    export interface TpSwapNodeResponse {\r\n        Exceptions: Exceptions;\r\n        TpSwapNodeResult: boolean;\r\n    }\r\n\r\n    export interface TpTargetClusterQueryRequest {\r\n        Type?: string;\r\n        Name?: string;\r\n        ShowDetails?: boolean;\r\n    }\r\n\r\n    export interface TpTargetCluster {\r\n        Name: string;\r\n        Prefix: string;\r\n        Type: string;\r\n        TpClusters: TpClusters;\r\n        TpEclCCServers: TpEclCCServers;\r\n        TpEclServers: TpEclServers;\r\n        TpEclAgents: TpEclAgents;\r\n        TpEclSchedulers: TpEclSchedulers;\r\n    }\r\n\r\n    export interface TpTargetClusters {\r\n        TpTargetCluster: TpTargetCluster[];\r\n    }\r\n\r\n    export interface TpTargetClusterQueryResponse {\r\n        Exceptions: Exceptions;\r\n        ShowDetails: boolean;\r\n        MemThreshold: int;\r\n        DiskThreshold: int;\r\n        CpuThreshold: int;\r\n        MemThresholdType: string;\r\n        DiskThresholdType: string;\r\n        PreflightProcessFilter: string;\r\n        AcceptLanguage: string;\r\n        TpTargetClusters: TpTargetClusters;\r\n    }\r\n\r\n    export interface TpThorStatusRequest {\r\n        Name?: string;\r\n    }\r\n\r\n    export interface TpThorStatusResponse {\r\n        Exceptions: Exceptions;\r\n        Name: string;\r\n        Queue: string;\r\n        Group: string;\r\n        ThorMasterIPAddress: string;\r\n        Port: int;\r\n        StartTime: string;\r\n        LogFile: string;\r\n        Wuid: string;\r\n        Graph: string;\r\n        SubGraph: int;\r\n        SubGraphDuration: int;\r\n        AutoRefresh: int;\r\n    }\r\n\r\n    export interface TpXMLFileRequest {\r\n        Name?: string;\r\n    }\r\n\r\n    export interface TpXMLFileResponse {\r\n        Exceptions: Exceptions;\r\n        thefile: base64Binary;\r\n    }\r\n\r\n}\r\n\r\nexport class TopologyServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsTopology\", \"1.33\");\r\n    }\r\n\r\n    Ping(request: Partial<WsTopology.WsTopologyPingRequest>): Promise<WsTopology.WsTopologyPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsTopologyPingResponse\");\r\n    }\r\n\r\n    SystemLog(request: Partial<WsTopology.SystemLogRequest>): Promise<WsTopology.SystemLogResponse> {\r\n        return this._connection.send(\"SystemLog\", request, \"json\", false, undefined, \"SystemLogResponse\");\r\n    }\r\n\r\n    TpClusterInfo(request: Partial<WsTopology.TpClusterInfoRequest>): Promise<WsTopology.TpClusterInfoResponse> {\r\n        return this._connection.send(\"TpClusterInfo\", request, \"json\", false, undefined, \"TpClusterInfoResponse\");\r\n    }\r\n\r\n    TpClusterQuery(request: Partial<WsTopology.TpClusterQueryRequest>): Promise<WsTopology.TpClusterQueryResponse> {\r\n        return this._connection.send(\"TpClusterQuery\", request, \"json\", false, undefined, \"TpClusterQueryResponse\");\r\n    }\r\n\r\n    TpComponentConfiguration(request: Partial<WsTopology.TpComponentConfigurationRequest>): Promise<WsTopology.TpComponentConfigurationResponse> {\r\n        return this._connection.send(\"TpComponentConfiguration\", request, \"json\", false, undefined, \"TpComponentConfigurationResponse\");\r\n    }\r\n\r\n    TpConfiguredComponents(request: Partial<WsTopology.TpConfiguredComponentsRequest>): Promise<WsTopology.TpConfiguredComponentsResponse> {\r\n        return this._connection.send(\"TpConfiguredComponents\", request, \"json\", false, undefined, \"TpConfiguredComponentsResponse\");\r\n    }\r\n\r\n    TpDropZoneQuery(request: Partial<WsTopology.TpDropZoneQueryRequest>): Promise<WsTopology.TpDropZoneQueryResponse> {\r\n        return this._connection.send(\"TpDropZoneQuery\", request, \"json\", false, undefined, \"TpDropZoneQueryResponse\");\r\n    }\r\n\r\n    TpGetComponentFile(request: Partial<WsTopology.TpGetComponentFileRequest>): Promise<WsTopology.TpGetComponentFileResponse> {\r\n        return this._connection.send(\"TpGetComponentFile\", request, \"json\", false, undefined, \"TpGetComponentFileResponse\");\r\n    }\r\n\r\n    TpGetServicePlugins(request: Partial<WsTopology.TpGetServicePluginsRequest>): Promise<WsTopology.TpGetServicePluginsResponse> {\r\n        return this._connection.send(\"TpGetServicePlugins\", request, \"json\", false, undefined, \"TpGetServicePluginsResponse\");\r\n    }\r\n\r\n    TpGroupQuery(request: Partial<WsTopology.TpGroupQueryRequest>): Promise<WsTopology.TpGroupQueryResponse> {\r\n        return this._connection.send(\"TpGroupQuery\", request, \"json\", false, undefined, \"TpGroupQueryResponse\");\r\n    }\r\n\r\n    TpListLogFiles(request: Partial<WsTopology.TpListLogFilesRequest>): Promise<WsTopology.TpListLogFilesResponse> {\r\n        return this._connection.send(\"TpListLogFiles\", request, \"json\", false, undefined, \"TpListLogFilesResponse\");\r\n    }\r\n\r\n    TpListTargetClusters(request: Partial<WsTopology.TpListTargetClustersRequest>): Promise<WsTopology.TpListTargetClustersResponse> {\r\n        return this._connection.send(\"TpListTargetClusters\", request, \"json\", false, undefined, \"TpListTargetClustersResponse\");\r\n    }\r\n\r\n    TpLogFile(request: Partial<WsTopology.TpLogFileRequest>): Promise<WsTopology.TpLogFileResponse> {\r\n        return this._connection.send(\"TpLogFile\", request, \"json\", false, undefined, \"TpLogFileResponse\");\r\n    }\r\n\r\n    TpLogFileDisplay(request: Partial<WsTopology.TpLogFileRequest>): Promise<WsTopology.TpLogFileResponse> {\r\n        return this._connection.send(\"TpLogFileDisplay\", request, \"json\", false, undefined, \"TpLogFileResponse\");\r\n    }\r\n\r\n    TpLogicalClusterQuery(request: Partial<WsTopology.TpLogicalClusterQueryRequest>): Promise<WsTopology.TpLogicalClusterQueryResponse> {\r\n        return this._connection.send(\"TpLogicalClusterQuery\", request, \"json\", false, undefined, \"TpLogicalClusterQueryResponse\");\r\n    }\r\n\r\n    TpMachineInfo(request: Partial<WsTopology.TpMachineInfoRequest>): Promise<WsTopology.TpMachineInfoResponse> {\r\n        return this._connection.send(\"TpMachineInfo\", request, \"json\", false, undefined, \"TpMachineInfoResponse\");\r\n    }\r\n\r\n    TpMachineQuery(request: Partial<WsTopology.TpMachineQueryRequest>): Promise<WsTopology.TpMachineQueryResponse> {\r\n        return this._connection.send(\"TpMachineQuery\", request, \"json\", false, undefined, \"TpMachineQueryResponse\");\r\n    }\r\n\r\n    TpServiceQuery(request: Partial<WsTopology.TpServiceQueryRequest>): Promise<WsTopology.TpServiceQueryResponse> {\r\n        return this._connection.send(\"TpServiceQuery\", request, \"json\", false, undefined, \"TpServiceQueryResponse\");\r\n    }\r\n\r\n    TpSetMachineStatus(request: Partial<WsTopology.TpSetMachineStatusRequest>): Promise<WsTopology.TpSetMachineStatusResponse> {\r\n        return this._connection.send(\"TpSetMachineStatus\", request, \"json\", false, undefined, \"TpSetMachineStatusResponse\");\r\n    }\r\n\r\n    TpSwapNode(request: Partial<WsTopology.TpSwapNodeRequest>): Promise<WsTopology.TpSwapNodeResponse> {\r\n        return this._connection.send(\"TpSwapNode\", request, \"json\", false, undefined, \"TpSwapNodeResponse\");\r\n    }\r\n\r\n    TpTargetClusterQuery(request: Partial<WsTopology.TpTargetClusterQueryRequest>): Promise<WsTopology.TpTargetClusterQueryResponse> {\r\n        return this._connection.send(\"TpTargetClusterQuery\", request, \"json\", false, undefined, \"TpTargetClusterQueryResponse\");\r\n    }\r\n\r\n    TpThorStatus(request: Partial<WsTopology.TpThorStatusRequest>): Promise<WsTopology.TpThorStatusResponse> {\r\n        return this._connection.send(\"TpThorStatus\", request, \"json\", false, undefined, \"TpThorStatusResponse\");\r\n    }\r\n\r\n    TpXMLFile(request: Partial<WsTopology.TpXMLFileRequest>): Promise<WsTopology.TpXMLFileResponse> {\r\n        return this._connection.send(\"TpXMLFile\", request, \"json\", false, undefined, \"TpXMLFileResponse\");\r\n    }\r\n\r\n}\r\n", "import { IOptions } from \"../connection.ts\";\r\nimport { TopologyServiceBase, WsTopology } from \"./wsdl/WsTopology/v1.33/WsTopology.ts\";\r\n\r\nexport {\r\n    WsTopology\r\n};\r\n\r\nexport class TopologyService extends TopologyServiceBase {\r\n\r\n    connectionOptions(): IOptions {\r\n        return this._connection.opts();\r\n    }\r\n\r\n    protocol(): string {\r\n        const parts = this._connection.opts().baseUrl.split(\"//\");\r\n        return parts[0];\r\n    }\r\n\r\n    ip(): string {\r\n        const parts = this._connection.opts().baseUrl.split(\"//\");\r\n        const parts2 = parts[1].split(\":\");\r\n        return parts2[0];\r\n    }\r\n\r\n    DefaultTpLogicalClusterQuery(request: WsTopology.TpLogicalClusterQueryRequest = {}): Promise<WsTopology.TpLogicalCluster> {\r\n        return this.TpLogicalClusterQuery(request).then((response) => {\r\n            if ((response as any).default) {\r\n                return (response as any).default;\r\n            }\r\n            let firstHThor;\r\n            let first;\r\n            response.TpLogicalClusters.TpLogicalCluster.some((item, idx) => {\r\n                if (idx === 0) {\r\n                    first = item;\r\n                }\r\n                if (item.Type === \"hthor\") {\r\n                    firstHThor = item;\r\n                    return true;\r\n                }\r\n                return false;\r\n            });\r\n            return firstHThor || first;\r\n        });\r\n    }\r\n}\r\n", "import { deepMixin, xml2json, XMLNode } from \"@hpcc-js/util\";\r\nimport { WsWorkunits, WorkunitsServiceBase } from \"./wsdl/WsWorkunits/v2.04/WsWorkunits.ts\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\n\r\nexport {\r\n    WsWorkunits\r\n};\r\n\r\nexport enum WUStateID {\r\n    Unknown = 0,\r\n    Compiled,\r\n    Running,\r\n    Completed,\r\n    Failed,\r\n    Archived,\r\n    Aborting,\r\n    Aborted,\r\n    Blocked,\r\n    Submitted,\r\n    Scheduled,\r\n    Compiling,\r\n    Wait,\r\n    UploadingFiled,\r\n    DebugPaused,\r\n    DebugRunning,\r\n    Paused,\r\n    LAST,\r\n    NotFound = 999\r\n}\r\n\r\nexport namespace WUUpdate {\r\n    export enum Action {\r\n        Unknown = 0,\r\n        Compile,\r\n        Check,\r\n        Run,\r\n        ExecuteExisting,\r\n        Pause,\r\n        PauseNow,\r\n        Resume,\r\n        Debug,\r\n        __size\r\n    }\r\n}\r\nexport function isECLResult(_: any): _ is WsWorkunits.ECLResult {\r\n    return typeof (_ as WsWorkunits.ECLResult).Name === \"string\";\r\n}\r\n\r\nexport function isWUQueryECLWorkunit(_: WsWorkunits.ECLWorkunit | WsWorkunits.Workunit): _ is WsWorkunits.ECLWorkunit {\r\n    return (_ as WsWorkunits.ECLWorkunit).TotalClusterTime !== undefined;\r\n}\r\n\r\nexport function isWUInfoWorkunit(_: WsWorkunits.ECLWorkunit | WsWorkunits.Workunit): _ is WsWorkunits.Workunit {\r\n    return (_ as WsWorkunits.Workunit).StateEx !== undefined;\r\n}\r\nexport class WorkunitsService extends WorkunitsServiceBase {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection);\r\n    }\r\n\r\n    Ping(): Promise<WsWorkunits.WsWorkunitsPingResponse> {\r\n        return this._connection.send(\"Ping\", {}, \"json\", false, undefined, \"WsWorkunitsPingResponse\").then(() => {\r\n            return { result: true };\r\n        });\r\n    }\r\n\r\n    WUQuery(request: Partial<WsWorkunits.WUQuery> = {}, abortSignal?: AbortSignal): Promise<WsWorkunits.WUQueryResponse> {\r\n        return this._connection.send(\"WUQuery\", request, \"json\", false, abortSignal).then((response) => {\r\n            return deepMixin({ Workunits: { ECLWorkunit: [] } }, response);\r\n        });\r\n    }\r\n\r\n    WUInfo(_request: Partial<WsWorkunits.WUInfo>): Promise<WsWorkunits.WUInfoResponse> {\r\n        const request: Partial<WsWorkunits.WUInfo> = {\r\n            Wuid: \"\",\r\n            TruncateEclTo64k: true,\r\n            IncludeExceptions: false,\r\n            IncludeGraphs: false,\r\n            IncludeSourceFiles: false,\r\n            IncludeResults: false,\r\n            IncludeResultsViewNames: false,\r\n            IncludeVariables: false,\r\n            IncludeTimers: false,\r\n            IncludeDebugValues: false,\r\n            IncludeApplicationValues: false,\r\n            IncludeWorkflows: false,\r\n            IncludeXmlSchemas: false,\r\n            IncludeResourceURLs: false,\r\n            IncludeECL: false,\r\n            IncludeHelpers: false,\r\n            IncludeAllowedClusters: false,\r\n            IncludeTotalClusterTime: false,\r\n            IncludeServiceNames: false,\r\n            SuppressResultSchemas: true,\r\n            ..._request\r\n        };\r\n        return super.WUInfo(request);\r\n    }\r\n\r\n    WUCreate(): Promise<WsWorkunits.WUCreateResponse> {\r\n        return super.WUCreate({});\r\n    }\r\n\r\n    WUUpdate(request: Partial<WsWorkunits.WUUpdate>): Promise<WsWorkunits.WUUpdateResponse> {\r\n        return this._connection.send(\"WUUpdate\", request, \"json\", true);\r\n    }\r\n\r\n    WUResubmit(request: WsWorkunits.WUResubmit): Promise<WsWorkunits.WUResubmitResponse> {\r\n        this._connection.toESPStringArray(request, \"Wuids\");\r\n        return super.WUResubmit(request);\r\n    }\r\n\r\n    WUAction(request: Partial<WsWorkunits.WUAction>): Promise<WsWorkunits.WUActionResponse> {\r\n        (request as any).ActionType = request.WUActionType; //  v5.x compatibility\r\n        return super.WUAction(request);\r\n    }\r\n\r\n    WUResult(request: Partial<WsWorkunits.WUResult>, abortSignal?: AbortSignal): Promise<WsWorkunits.WUResultResponse> {\r\n        return this._connection.send(\"WUResult\", request, \"json\", false, abortSignal);\r\n    }\r\n\r\n    WUFileEx(request: Partial<WsWorkunits.WUFile>): Promise<string> {\r\n        return this._connection.send(\"WUFile\", request, \"text\");\r\n    }\r\n\r\n    private _WUDetailsMetaPromise: Promise<WsWorkunits.WUDetailsMetaResponse>;\r\n    WUDetailsMeta(request: WsWorkunits.WUDetailsMeta): Promise<WsWorkunits.WUDetailsMetaResponse> {\r\n        if (!this._WUDetailsMetaPromise) {\r\n            this._WUDetailsMetaPromise = super.WUDetailsMeta(request);\r\n        }\r\n        return this._WUDetailsMetaPromise;\r\n    }\r\n\r\n    WUCDebugEx(request: WsWorkunits.WUCDebug): Promise<XMLNode | null> {\r\n        return this._connection.send(\"WUCDebug\", request, undefined, undefined, undefined, \"WUDebug\").then((response) => {\r\n            const retVal = xml2json(response.Result);\r\n            const children = retVal.children();\r\n            if (children.length) {\r\n                return children[0];\r\n            }\r\n            return null;\r\n        });\r\n    }\r\n}\r\n\r\nexport class WorkunitsServiceEx extends WorkunitsServiceBase {\r\n    WUPublishWorkunitEx(request: Partial<WsWorkunits.WUPublishWorkunit>): Promise<WsWorkunits.WUPublishWorkunitResponse> {\r\n        return this._connection.send(\"WUPublishWorkunit\", request);\r\n    }\r\n}\r\n", "import { IConnection, IOptions } from \"../../../../connection.ts\";\r\nimport { Service } from \"../../../../espConnection.ts\";\r\n\r\nexport namespace WsWorkunits {\r\n\r\n    export type int = number;\r\n    export type double = number;\r\n    export type long = number;\r\n    export type nonNegativeInteger = number;\r\n    export type uint64 = number;\r\n    export type unsignedInt = number;\r\n    export type base64Binary = string;\r\n    export type dateTime = string;\r\n    export type integer = number;\r\n\r\n    export enum ECLWUActions {\r\n        Abort = \"Abort\",\r\n        Delete = \"Delete\",\r\n        Deschedule = \"Deschedule\",\r\n        Reschedule = \"Reschedule\",\r\n        Pause = \"Pause\",\r\n        PauseNow = \"PauseNow\",\r\n        Protect = \"Protect\",\r\n        Unprotect = \"Unprotect\",\r\n        Restore = \"Restore\",\r\n        Resume = \"Resume\",\r\n        SetToFailed = \"SetToFailed\",\r\n        Archive = \"Archive\"\r\n    }\r\n\r\n    export enum LogSelectColumnMode {\r\n        MIN = 0,\r\n        DEFAULT = 1,\r\n        ALL = 2,\r\n        CUSTOM = 3\r\n    }\r\n\r\n    export enum SortDirection {\r\n        ASC = 0,\r\n        DSC = 1\r\n    }\r\n\r\n    export enum LogEventClass {\r\n        ALL = \"ALL\",\r\n        DIS = \"DIS\",\r\n        ERR = \"ERR\",\r\n        WRN = \"WRN\",\r\n        INF = \"INF\",\r\n        PRO = \"PRO\",\r\n        MET = \"MET\",\r\n        EVT = \"EVT\"\r\n    }\r\n\r\n    export enum WUDetailsAttrValueType {\r\n        Single = \"Single\",\r\n        List = \"List\",\r\n        Multi = \"Multi\"\r\n    }\r\n\r\n    export enum EclDefinitionActions {\r\n        SyntaxCheck = \"SyntaxCheck\",\r\n        Deploy = \"Deploy\",\r\n        Publish = \"Publish\"\r\n    }\r\n\r\n    export enum ErrorMessageFormat {\r\n        xml = \"xml\",\r\n        json = \"json\",\r\n        text = \"text\"\r\n    }\r\n\r\n    export enum LogAccessLogFormat {\r\n        XML = 0,\r\n        JSON = 1,\r\n        CSV = 2\r\n    }\r\n\r\n    export enum WUExceptionSeverity {\r\n        info = \"info\",\r\n        warning = \"warning\",\r\n        error = \"error\",\r\n        alert = \"alert\"\r\n    }\r\n\r\n    export enum WUQueryFilterSuspendedType {\r\n        Allqueries = \"All queries\",\r\n        Notsuspended = \"Not suspended\",\r\n        Suspended = \"Suspended\",\r\n        Suspendedbyuser = \"Suspended by user\",\r\n        Suspendedbyfirstnode = \"Suspended by first node\",\r\n        Suspendedbyanynode = \"Suspended by any node\"\r\n    }\r\n\r\n    export enum WUQuerySetFilterType {\r\n        All = \"All\",\r\n        Id = \"Id\",\r\n        Name = \"Name\",\r\n        Alias = \"Alias\",\r\n        Status = \"Status\"\r\n    }\r\n\r\n    export enum WUProtectFilter {\r\n        All = \"All\",\r\n        Protected = \"Protected\",\r\n        NotProtected = \"NotProtected\"\r\n    }\r\n\r\n    export enum QuerySetAliasActionTypes {\r\n        Deactivate = \"Deactivate\"\r\n    }\r\n\r\n    export enum QuerysetImportActivation {\r\n        None = \"None\",\r\n        ActivateImportedActive = \"ActivateImportedActive\"\r\n    }\r\n\r\n    export enum QuerySetQueryActionTypes {\r\n        Suspend = \"Suspend\",\r\n        Unsuspend = \"Unsuspend\",\r\n        ToggleSuspend = \"ToggleSuspend\",\r\n        Activate = \"Activate\",\r\n        Delete = \"Delete\",\r\n        DeleteQueriesAndWUs = \"DeleteQueriesAndWUs\",\r\n        RemoveAllAliases = \"RemoveAllAliases\",\r\n        ResetQueryStats = \"ResetQueryStats\"\r\n    }\r\n\r\n    export enum WUQueryActivationMode {\r\n        DoNotActivateQuery = 0,\r\n        ActivateQuery = 1,\r\n        ActivateQuerySuspendPrevious = 2,\r\n        ActivateQueryDeletePrevious = 3\r\n    }\r\n\r\n    export interface GVCAjaxGraph {\r\n        Name: string;\r\n        GraphName: string;\r\n        SubGraphId: int;\r\n        SubGraphOnly: boolean;\r\n    }\r\n\r\n    export interface GVCAjaxGraphResponse {\r\n        Name: string;\r\n        GraphName: string;\r\n        GraphType: string;\r\n        SubGraphId: int;\r\n        SubGraphOnly: boolean;\r\n    }\r\n\r\n    export interface Ping {\r\n\r\n    }\r\n\r\n    export interface WsWorkunitsPingResponse {\r\n\r\n    }\r\n\r\n    export interface Wuids {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface WUAbort {\r\n        Wuids: Wuids;\r\n        BlockTillFinishTimer: int;\r\n    }\r\n\r\n    export interface Exception {\r\n        Code: string;\r\n        Audience: string;\r\n        Source: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Exceptions {\r\n        Source: string;\r\n        Exception: Exception[];\r\n    }\r\n\r\n    export interface WUActionResult {\r\n        Wuid: string;\r\n        Action: string;\r\n        Result: string;\r\n    }\r\n\r\n    export interface ActionResults {\r\n        WUActionResult: WUActionResult[];\r\n    }\r\n\r\n    export interface WUAbortResponse {\r\n        Exceptions: Exceptions;\r\n        ActionResults: ActionResults;\r\n    }\r\n\r\n    export interface WUAction {\r\n        Wuids: Wuids;\r\n        WUActionType: ECLWUActions;\r\n        Cluster: string;\r\n        Owner: string;\r\n        State: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        ECL: string;\r\n        Jobname: string;\r\n        Test: string;\r\n        CurrentPage: string;\r\n        PageSize: string;\r\n        Sortby: string;\r\n        Descending: boolean;\r\n        EventServer: string;\r\n        EventName: string;\r\n        PageFrom: string;\r\n        BlockTillFinishTimer: int;\r\n    }\r\n\r\n    export interface WUActionResponse {\r\n        Exceptions: Exceptions;\r\n        ActionResults: ActionResults;\r\n    }\r\n\r\n    export interface WUAddLocalFileToWorkunit {\r\n        Wuid: string;\r\n        Name: string;\r\n        Val: string;\r\n        DefVal: string;\r\n        Type: int;\r\n        Length: int;\r\n    }\r\n\r\n    export interface WUAddLocalFileToWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        Name: string;\r\n        Result: string;\r\n    }\r\n\r\n    export interface PropertyOptions {\r\n        IncludeName: boolean;\r\n        IncludeRawValue: boolean;\r\n        IncludeFormatted: boolean;\r\n        IncludeMeasure: boolean;\r\n        IncludeCreator: boolean;\r\n        IncludeCreatorType: boolean;\r\n    }\r\n\r\n    export interface WUAnalyseHotspot {\r\n        Wuid: string;\r\n        RootScope: string;\r\n        OptOnlyActive: boolean;\r\n        OnlyCriticalPath: boolean;\r\n        IncludeProperties: boolean;\r\n        IncludeStatistics: boolean;\r\n        ThresholdPercent: double;\r\n        PropertyOptions: PropertyOptions;\r\n    }\r\n\r\n    export interface Property {\r\n        Name: string;\r\n        RawValue: string;\r\n        Formatted: string;\r\n        Measure: string;\r\n        Creator: string;\r\n        CreatorType: string;\r\n    }\r\n\r\n    export interface Properties {\r\n        Property: Property[];\r\n    }\r\n\r\n    export interface Note {\r\n        Source: string;\r\n        Message: string;\r\n        ErrorCode: nonNegativeInteger;\r\n        Severity: string;\r\n        Cost: nonNegativeInteger;\r\n        Id: uint64;\r\n    }\r\n\r\n    export interface Notes {\r\n        Note: Note[];\r\n    }\r\n\r\n    export interface Activity {\r\n        ScopeName: string;\r\n        Id: string;\r\n        ScopeType: string;\r\n        Properties: Properties;\r\n        Notes: Notes;\r\n        SinkActivity: string;\r\n    }\r\n\r\n    export interface Activities {\r\n        Activity: Activity[];\r\n    }\r\n\r\n    export interface Dependency {\r\n        ScopeName: string;\r\n        Id: string;\r\n        ScopeType: string;\r\n        Properties: Properties;\r\n        Notes: Notes;\r\n        SinkActivity: string;\r\n    }\r\n\r\n    export interface Dependencies {\r\n        Dependency: Dependency[];\r\n    }\r\n\r\n    export interface WUAnalyseHotspotResponse {\r\n        Exceptions: Exceptions;\r\n        RootScope: string;\r\n        RootTime: long;\r\n        Activities: Activities;\r\n        Dependencies: Dependencies;\r\n    }\r\n\r\n    export interface WUCDebug {\r\n        Wuid: string;\r\n        Command: string;\r\n    }\r\n\r\n    export interface WUDebugResponse {\r\n        Exceptions: Exceptions;\r\n        Result: string;\r\n    }\r\n\r\n    export interface WUCheckFeatures {\r\n        IncludeFullVersion: boolean;\r\n    }\r\n\r\n    export interface Deployment {\r\n        UseCompression: boolean;\r\n    }\r\n\r\n    export interface WUCheckFeaturesResponse {\r\n        Exceptions: Exceptions;\r\n        BuildVersionMajor: int;\r\n        BuildVersionMinor: int;\r\n        BuildVersionPoint: int;\r\n        maxRequestEntityLength: unsignedInt;\r\n        Deployment: Deployment;\r\n        BuildVersion: string;\r\n        BuildMaturity: string;\r\n        BuildTagTimestamp: string;\r\n    }\r\n\r\n    export interface WUClusterJobQueueLOG {\r\n        Cluster: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n    }\r\n\r\n    export interface WUClusterJobQueueLOGResponse {\r\n        Exceptions: Exceptions;\r\n        thefile: base64Binary;\r\n    }\r\n\r\n    export interface WUClusterJobQueueXLS {\r\n        Cluster: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        ShowType: string;\r\n    }\r\n\r\n    export interface WUClusterJobQueueXLSResponse {\r\n        Exceptions: Exceptions;\r\n        Result: base64Binary;\r\n    }\r\n\r\n    export interface WUClusterJobSummaryXLS {\r\n        Cluster: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        ShowAll: boolean;\r\n        BusinessStartTime: string;\r\n        BusinessEndTime: string;\r\n    }\r\n\r\n    export interface WUClusterJobSummaryXLSResponse {\r\n        Exceptions: Exceptions;\r\n        Result: base64Binary;\r\n    }\r\n\r\n    export interface WUClusterJobXLS {\r\n        Cluster: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        ShowAll: boolean;\r\n        BusinessStartTime: string;\r\n        BusinessEndTime: string;\r\n    }\r\n\r\n    export interface WUClusterJobXLSResponse {\r\n        Exceptions: Exceptions;\r\n        Result: base64Binary;\r\n    }\r\n\r\n    export interface WUCompileECL {\r\n        ECL: string;\r\n        ModuleName: string;\r\n        AttributeName: string;\r\n        Queue: string;\r\n        Cluster: string;\r\n        Snapshot: string;\r\n        IncludeDependencies: boolean;\r\n        IncludeComplexity: boolean;\r\n        TimeToWait: int;\r\n    }\r\n\r\n    export interface ECLException {\r\n        Severity: string;\r\n        Source: string;\r\n        Code: int;\r\n        Message: string;\r\n        Column: int;\r\n        LineNo: int;\r\n        FileName: string;\r\n        Activity: int;\r\n        Scope: string;\r\n        Priority: int;\r\n        Cost: double;\r\n    }\r\n\r\n    export interface Errors {\r\n        ECLException: ECLException[];\r\n    }\r\n\r\n    export interface ECLAttribute {\r\n        ModuleName: string;\r\n        AttributeName: string;\r\n        IsLocked: boolean;\r\n        IsCheckedOut: boolean;\r\n        IsSandbox: boolean;\r\n        IsOrphaned: boolean;\r\n    }\r\n\r\n    export interface Dependencies2 {\r\n        ECLAttribute: ECLAttribute[];\r\n    }\r\n\r\n    export interface WUCompileECLResponse {\r\n        Exceptions: Exceptions;\r\n        Complexity: string;\r\n        Errors: Errors;\r\n        Dependencies: Dependencies2;\r\n    }\r\n\r\n    export interface WUCopyLogicalFiles {\r\n        Wuid: string;\r\n        Cluster: string;\r\n        CopyLocal: boolean;\r\n    }\r\n\r\n    export interface Clusters {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface WULogicalFileCopyInfo {\r\n        IsIndex: boolean;\r\n        LogicalName: string;\r\n        DfuCopyWuid: string;\r\n        DfuCopyError: string;\r\n        Clusters: Clusters;\r\n    }\r\n\r\n    export interface OnCluster {\r\n        WULogicalFileCopyInfo: WULogicalFileCopyInfo[];\r\n    }\r\n\r\n    export interface NotOnCluster {\r\n        WULogicalFileCopyInfo: WULogicalFileCopyInfo[];\r\n    }\r\n\r\n    export interface Foreign {\r\n        WULogicalFileCopyInfo: WULogicalFileCopyInfo[];\r\n    }\r\n\r\n    export interface NotFound {\r\n        WULogicalFileCopyInfo: WULogicalFileCopyInfo[];\r\n    }\r\n\r\n    export interface Cluster {\r\n        ClusterName: string;\r\n        OnCluster: OnCluster;\r\n        NotOnCluster: NotOnCluster;\r\n        Foreign: Foreign;\r\n        NotFound: NotFound;\r\n    }\r\n\r\n    export interface ClusterFiles {\r\n        Cluster: Cluster[];\r\n    }\r\n\r\n    export interface WUCopyLogicalFilesResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        ClusterFiles: ClusterFiles;\r\n    }\r\n\r\n    export interface WUCopyQuerySet {\r\n        Source: string;\r\n        Target: string;\r\n        ActiveOnly: boolean;\r\n        CloneActiveState: boolean;\r\n        AllowForeignFiles: boolean;\r\n        DfsServer: string;\r\n        CopyFiles: boolean;\r\n        OverwriteDfs: boolean;\r\n        SourceProcess: string;\r\n        UpdateSuperFiles: boolean;\r\n        UpdateCloneFrom: boolean;\r\n        AppendCluster: boolean;\r\n        IncludeFileErrors: boolean;\r\n        SourceSSL: boolean;\r\n        DfuCopyFiles: boolean;\r\n        DfuQueue: string;\r\n        DfuWait: nonNegativeInteger;\r\n        DfuOverwrite: boolean;\r\n        OnlyCopyFiles: boolean;\r\n        StopIfFilesCopied: boolean;\r\n        DfuPublisherWuid: string;\r\n        RemoteStorage: string;\r\n        KeyCompression: string;\r\n    }\r\n\r\n    export interface CopiedQueries {\r\n        QueryId: string[];\r\n    }\r\n\r\n    export interface ExistingQueries {\r\n        QueryId: string[];\r\n    }\r\n\r\n    export interface File {\r\n        Error: string;\r\n        LogicalName: string;\r\n    }\r\n\r\n    export interface FileErrors {\r\n        File: File[];\r\n    }\r\n\r\n    export interface WUCopyQuerySetResponse {\r\n        Exceptions: Exceptions;\r\n        CopiedQueries: CopiedQueries;\r\n        ExistingQueries: ExistingQueries;\r\n        FileErrors: FileErrors;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface WUCreate {\r\n\r\n    }\r\n\r\n    export interface Query {\r\n        Text: string;\r\n        Cpp: string;\r\n        ResTxt: string;\r\n        Dll: string;\r\n        ThorLog: string;\r\n        QueryMainDefinition: string;\r\n    }\r\n\r\n    export interface ECLHelpFile {\r\n        Name: string;\r\n        Type: string;\r\n        IPAddress: string;\r\n        Description: string;\r\n        FileSize: long;\r\n        PID: unsignedInt;\r\n        minActivityId: unsignedInt;\r\n        maxActivityId: unsignedInt;\r\n        IsAvailable: boolean;\r\n    }\r\n\r\n    export interface Helpers {\r\n        ECLHelpFile: ECLHelpFile[];\r\n    }\r\n\r\n    export interface Exceptions2 {\r\n        ECLException: ECLException[];\r\n    }\r\n\r\n    export interface ECLGraph {\r\n        Name: string;\r\n        Label: string;\r\n        Type: string;\r\n        Running: boolean;\r\n        Complete: boolean;\r\n        Failed: boolean;\r\n        RunningId: long;\r\n        WhenStarted: string;\r\n        WhenFinished: string;\r\n    }\r\n\r\n    export interface Graphs {\r\n        ECLGraph: ECLGraph[];\r\n    }\r\n\r\n    export interface ECLSourceFiles {\r\n        ECLSourceFile: ECLSourceFile[];\r\n    }\r\n\r\n    export interface ECLSourceFile {\r\n        FileCluster: string;\r\n        Name: string;\r\n        IsSuperFile: boolean;\r\n        Subs: int;\r\n        Count: int;\r\n        ECLSourceFiles: ECLSourceFiles;\r\n    }\r\n\r\n    export interface SourceFiles {\r\n        ECLSourceFile: ECLSourceFile[];\r\n    }\r\n\r\n    export interface ECLSchemaItem {\r\n        ColumnName: string;\r\n        ColumnType: string;\r\n        ColumnTypeCode: int;\r\n        isConditional: boolean;\r\n    }\r\n\r\n    export interface ECLSchemas {\r\n        ECLSchemaItem: ECLSchemaItem[];\r\n    }\r\n\r\n    export interface ECLResult {\r\n        Name: string;\r\n        Sequence: int;\r\n        Value: string;\r\n        Link: string;\r\n        FileName: string;\r\n        IsSupplied: boolean;\r\n        ShowFileContent: boolean;\r\n        Total: long;\r\n        ECLSchemas: ECLSchemas;\r\n        XmlSchema: string;\r\n    }\r\n\r\n    export interface Results {\r\n        ECLResult: ECLResult[];\r\n    }\r\n\r\n    export interface Variables {\r\n        ECLResult: ECLResult[];\r\n    }\r\n\r\n    export interface ECLTimer {\r\n        Name: string;\r\n        Value: string;\r\n        count: int;\r\n        GraphName: string;\r\n        SubGraphId: int;\r\n        Timestamp: long;\r\n        When: string;\r\n    }\r\n\r\n    export interface Timers {\r\n        ECLTimer: ECLTimer[];\r\n    }\r\n\r\n    export interface DebugValue {\r\n        Name: string;\r\n        Value: string;\r\n    }\r\n\r\n    export interface DebugValues {\r\n        DebugValue: DebugValue[];\r\n    }\r\n\r\n    export interface ApplicationValue {\r\n        Application: string;\r\n        Name: string;\r\n        Value: string;\r\n    }\r\n\r\n    export interface ApplicationValues {\r\n        ApplicationValue: ApplicationValue[];\r\n    }\r\n\r\n    export interface ECLWorkflow {\r\n        WFID: string;\r\n        EventName: string;\r\n        EventText: string;\r\n        Count: int;\r\n        CountRemaining: int;\r\n    }\r\n\r\n    export interface Workflows {\r\n        ECLWorkflow: ECLWorkflow[];\r\n    }\r\n\r\n    export interface ECLTimingData {\r\n        Name: string;\r\n        GraphNum: int;\r\n        SubGraphNum: int;\r\n        GID: int;\r\n        Min: int;\r\n        MS: int;\r\n    }\r\n\r\n    export interface TimingData {\r\n        ECLTimingData: ECLTimingData[];\r\n    }\r\n\r\n    export interface AllowedClusters {\r\n        AllowedCluster: string[];\r\n    }\r\n\r\n    export interface ThorLogInfo {\r\n        ProcessName: string;\r\n        ClusterGroup: string;\r\n        LogDate: string;\r\n        NumberSlaves: int;\r\n    }\r\n\r\n    export interface ThorLogList {\r\n        ThorLogInfo: ThorLogInfo[];\r\n    }\r\n\r\n    export interface ResourceURLs {\r\n        URL: string[];\r\n    }\r\n\r\n    export interface ServiceNames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface Graphs2 {\r\n        Graph: string[];\r\n    }\r\n\r\n    export interface ECLWUProcess {\r\n        Name: string;\r\n        Type: string;\r\n        PodName: string;\r\n        ContainerName: string;\r\n        Graphs: Graphs2;\r\n        InstanceNumber: int;\r\n        Sequence: string;\r\n        Log: string;\r\n        PID: string;\r\n        Pattern: string;\r\n        Max: int;\r\n    }\r\n\r\n    export interface ECLWUProcessList {\r\n        ECLWUProcess: ECLWUProcess[];\r\n    }\r\n\r\n    export interface Workunit {\r\n        Wuid: string;\r\n        Owner: string;\r\n        Cluster: string;\r\n        RoxieCluster: string;\r\n        Jobname: string;\r\n        Queue: string;\r\n        StateID: int;\r\n        State: string;\r\n        StateEx: string;\r\n        Description: string;\r\n        Protected: boolean;\r\n        Active: boolean;\r\n        Action: int;\r\n        ActionEx: string;\r\n        DateTimeScheduled: dateTime;\r\n        PriorityClass: int;\r\n        PriorityLevel: int;\r\n        Scope: string;\r\n        Snapshot: string;\r\n        ResultLimit: int;\r\n        Archived: boolean;\r\n        IsPausing: boolean;\r\n        ThorLCR: boolean;\r\n        EventSchedule: int;\r\n        TotalClusterTime: string;\r\n        AbortBy: string;\r\n        AbortTime: string;\r\n        Query: Query;\r\n        Helpers: Helpers;\r\n        Exceptions: Exceptions2;\r\n        Graphs: Graphs;\r\n        SourceFiles: SourceFiles;\r\n        Results: Results;\r\n        Variables: Variables;\r\n        Timers: Timers;\r\n        DebugValues: DebugValues;\r\n        ApplicationValues: ApplicationValues;\r\n        Workflows: Workflows;\r\n        TimingData: TimingData;\r\n        AllowedClusters: AllowedClusters;\r\n        ErrorCount: int;\r\n        WarningCount: int;\r\n        InfoCount: int;\r\n        AlertCount: int;\r\n        GraphCount: int;\r\n        SourceFileCount: int;\r\n        ResultCount: int;\r\n        VariableCount: int;\r\n        TimerCount: int;\r\n        HasDebugValue: boolean;\r\n        ApplicationValueCount: int;\r\n        XmlParams: string;\r\n        AccessFlag: int;\r\n        ClusterFlag: int;\r\n        HelpersDesc: string;\r\n        GraphsDesc: string;\r\n        SourceFilesDesc: string;\r\n        ResultsDesc: string;\r\n        VariablesDesc: string;\r\n        TimersDesc: string;\r\n        DebugValuesDesc: string;\r\n        ApplicationValuesDesc: string;\r\n        WorkflowsDesc: string;\r\n        HasArchiveQuery: boolean;\r\n        ThorLogList: ThorLogList;\r\n        ResourceURLs: ResourceURLs;\r\n        ResultViewCount: int;\r\n        ResourceURLCount: int;\r\n        DebugValueCount: int;\r\n        WorkflowCount: int;\r\n        HelpersCount: int;\r\n        ServiceNames: ServiceNames;\r\n        ExecuteCost: double;\r\n        FileAccessCost: double;\r\n        CostSavingPotential: double;\r\n        CompileCost: double;\r\n        NoAccess: boolean;\r\n        ECLWUProcessList: ECLWUProcessList;\r\n    }\r\n\r\n    export interface WUCreateResponse {\r\n        Exceptions: Exceptions;\r\n        Workunit: Workunit;\r\n    }\r\n\r\n    export interface WUCreateAndUpdate {\r\n        Wuid: string;\r\n        State: int;\r\n        StateOrig: int;\r\n        Jobname: string;\r\n        JobnameOrig: string;\r\n        QueryText: string;\r\n        Action: int;\r\n        Description: string;\r\n        DescriptionOrig: string;\r\n        AddDrilldownFields: boolean;\r\n        ResultLimit: int;\r\n        Protected: boolean;\r\n        ProtectedOrig: boolean;\r\n        PriorityClass: int;\r\n        PriorityLevel: int;\r\n        Scope: string;\r\n        ScopeOrig: string;\r\n        ClusterSelection: string;\r\n        ClusterOrig: string;\r\n        XmlParams: string;\r\n        ThorSlaveIP: string;\r\n        QueryMainDefinition: string;\r\n        DebugValues: DebugValues;\r\n        ApplicationValues: ApplicationValues;\r\n    }\r\n\r\n    export interface WUUpdateResponse {\r\n        Exceptions: Exceptions;\r\n        Workunit: Workunit;\r\n    }\r\n\r\n    export interface AbsoluteTimeRange {\r\n        StartDate: dateTime;\r\n        EndDate: dateTime;\r\n    }\r\n\r\n    export interface CustomColumns {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface ComponentsFilter {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface LogFilter {\r\n        WildcardFilter: string;\r\n        AbsoluteTimeRange: AbsoluteTimeRange;\r\n        RelativeTimeRangeBuffer: unsignedInt;\r\n        LineLimit: unsignedInt;\r\n        LineStartFrom: long;\r\n        SelectColumnMode: LogSelectColumnMode;\r\n        CustomColumns: CustomColumns;\r\n        ComponentsFilter: ComponentsFilter;\r\n        Format: string;\r\n        sortByTimeDirection: SortDirection;\r\n        LogEventType: LogEventClass;\r\n    }\r\n\r\n    export interface WUCreateZAPInfo {\r\n        Wuid: string;\r\n        ESPApplication: string;\r\n        ThorProcesses: string;\r\n        BuildVersion: string;\r\n        ProblemDescription: string;\r\n        WhatChanged: string;\r\n        WhereSlow: string;\r\n        ZAPFileName: string;\r\n        IncludeThorSlaveLog: string;\r\n        ZAPPassword: string;\r\n        SendEmail: boolean;\r\n        AttachZAPReportToEmail: boolean;\r\n        EmailFrom: string;\r\n        EmailSubject: string;\r\n        EmailBody: string;\r\n        LogFilter: LogFilter;\r\n        IncludeRelatedLogs: boolean;\r\n        IncludePerComponentLogs: boolean;\r\n    }\r\n\r\n    export interface WUCreateZAPInfoResponse {\r\n        Exceptions: Exceptions;\r\n        thefile: base64Binary;\r\n        ZAPFileName: string;\r\n    }\r\n\r\n    export interface WUDelete {\r\n        Wuids: Wuids;\r\n        BlockTillFinishTimer: int;\r\n    }\r\n\r\n    export interface WUDeleteResponse {\r\n        Exceptions: Exceptions;\r\n        ActionResults: ActionResults;\r\n    }\r\n\r\n    export interface NamedValue {\r\n        Name: string;\r\n        Value: string;\r\n    }\r\n\r\n    export interface DebugValues2 {\r\n        NamedValue: NamedValue[];\r\n    }\r\n\r\n    export interface WUDeployWorkunit {\r\n        Cluster: string;\r\n        Name: string;\r\n        Wait: int;\r\n        ObjType: string;\r\n        FileName: string;\r\n        Object: base64Binary;\r\n        ResultLimit: int;\r\n        QueryMainDefinition: string;\r\n        Snapshot: string;\r\n        DebugValues: DebugValues2;\r\n        Protect: boolean;\r\n    }\r\n\r\n    export interface WUDeployWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n        Workunit: Workunit;\r\n    }\r\n\r\n    export interface PropertyFilter {\r\n        Name: string;\r\n        ExactValue: string;\r\n        MinValue: string;\r\n        MaxValue: string;\r\n    }\r\n\r\n    export interface PropertyFilters {\r\n        PropertyFilter: PropertyFilter[];\r\n    }\r\n\r\n    export interface ScopeFilter {\r\n        MaxDepth: integer;\r\n        Scopes: string[];\r\n        Ids: string[];\r\n        ScopeTypes: string[];\r\n        PropertyFilters: PropertyFilters;\r\n    }\r\n\r\n    export interface NestedFilter {\r\n        Depth: unsignedInt;\r\n        ScopeTypes: string[];\r\n    }\r\n\r\n    export interface Extra {\r\n        scopeType: string;\r\n        Properties: string[];\r\n    }\r\n\r\n    export interface ExtraProperties {\r\n        Extra: Extra[];\r\n    }\r\n\r\n    export interface PropertiesToReturn {\r\n        AllStatistics: boolean;\r\n        AllAttributes: boolean;\r\n        AllHints: boolean;\r\n        AllScopes: boolean;\r\n        AllProperties: boolean;\r\n        AllNotes: boolean;\r\n        MinVersion: uint64;\r\n        Measure: string;\r\n        Properties: string[];\r\n        ExtraProperties: ExtraProperties;\r\n    }\r\n\r\n    export interface ScopeOptions {\r\n        IncludeMatchedScopesInResults: boolean;\r\n        IncludeScope: boolean;\r\n        IncludeId: boolean;\r\n        IncludeScopeType: boolean;\r\n    }\r\n\r\n    export interface WUDetails {\r\n        WUID: string;\r\n        ScopeFilter: ScopeFilter;\r\n        NestedFilter: NestedFilter;\r\n        PropertiesToReturn: PropertiesToReturn;\r\n        Filter: string;\r\n        ScopeOptions: ScopeOptions;\r\n        PropertyOptions: PropertyOptions;\r\n    }\r\n\r\n    export interface Scope {\r\n        ScopeName: string;\r\n        Id: string;\r\n        ScopeType: string;\r\n        Properties: Properties;\r\n        Notes: Notes;\r\n        SinkActivity: string;\r\n    }\r\n\r\n    export interface Scopes {\r\n        Scope: Scope[];\r\n    }\r\n\r\n    export interface WUDetailsResponse {\r\n        Exceptions: Exceptions;\r\n        MaxVersion: uint64;\r\n        WUID: string;\r\n        Scopes: Scopes;\r\n    }\r\n\r\n    export interface WUDetailsMeta {\r\n\r\n    }\r\n\r\n    export interface Property2 {\r\n        Name: string;\r\n        ValueType: WUDetailsAttrValueType;\r\n        Description: string;\r\n    }\r\n\r\n    export interface Properties2 {\r\n        Property: Property2[];\r\n    }\r\n\r\n    export interface ScopeTypes {\r\n        ScopeType: string[];\r\n    }\r\n\r\n    export interface Measures {\r\n        Measure: string[];\r\n    }\r\n\r\n    export interface Activity2 {\r\n        Kind: unsignedInt;\r\n        Name: string;\r\n        IsSink: boolean;\r\n        IsSource: boolean;\r\n    }\r\n\r\n    export interface Activities2 {\r\n        Activity: Activity2[];\r\n    }\r\n\r\n    export interface WUDetailsMetaResponse {\r\n        Exceptions: Exceptions;\r\n        Properties: Properties2;\r\n        ScopeTypes: ScopeTypes;\r\n        Measures: Measures;\r\n        Activities: Activities2;\r\n    }\r\n\r\n    export interface EclDefinitions {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface WUEclDefinitionAction {\r\n        EclDefinitions: EclDefinitions;\r\n        ActionType: EclDefinitionActions;\r\n        Target: string;\r\n        RemoteDali: string;\r\n        SourceProcess: string;\r\n        Priority: string;\r\n        Comment: string;\r\n        MemoryLimit: string;\r\n        DeletePrevious: boolean;\r\n        SuspendPrevious: boolean;\r\n        NoActivate: boolean;\r\n        NoReload: boolean;\r\n        DontCopyFiles: boolean;\r\n        AllowForeign: boolean;\r\n        UpdateDfs: boolean;\r\n        UpdateSuperfiles: boolean;\r\n        UpdateCloneFrom: boolean;\r\n        DontAppendCluster: boolean;\r\n        MsToWait: int;\r\n        TimeLimit: int;\r\n        WarnTimeLimit: int;\r\n        DfuCopyFiles: boolean;\r\n        DfuOverwrite: boolean;\r\n        DfuQueue: string;\r\n        OnlyCopyFiles: boolean;\r\n        StopIfFilesCopied: boolean;\r\n        DfuPublisherWuid: string;\r\n        RemoteStorage: string;\r\n    }\r\n\r\n    export interface WUEclDefinitionActionResult {\r\n        EclDefinition: string;\r\n        Action: string;\r\n        WUID: string;\r\n        QueryID: string;\r\n        Result: string;\r\n    }\r\n\r\n    export interface ActionResults2 {\r\n        WUEclDefinitionActionResult: WUEclDefinitionActionResult[];\r\n    }\r\n\r\n    export interface WUEclDefinitionActionResponse {\r\n        Exceptions: Exceptions;\r\n        ActionResults: ActionResults2;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface WUExport {\r\n        Cluster: string;\r\n        Owner: string;\r\n        State: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        Jobname: string;\r\n    }\r\n\r\n    export interface WUExportResponse {\r\n        Exceptions: Exceptions;\r\n        ExportData: base64Binary;\r\n    }\r\n\r\n    export interface LogColumns {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface WUFile {\r\n        Name: string;\r\n        Wuid: string;\r\n        Type: string;\r\n        Option: int;\r\n        SlaveIP: string;\r\n        IPAddress: string;\r\n        Description: string;\r\n        QuerySet: string;\r\n        Query: string;\r\n        Process: string;\r\n        ClusterGroup: string;\r\n        LogDate: string;\r\n        SlaveNumber: int;\r\n        SizeLimit: long;\r\n        ErrorMessageFormat: ErrorMessageFormat;\r\n        PlainText: string;\r\n        MaxLogRecords: unsignedInt;\r\n        LogSelectColumnMode: LogSelectColumnMode;\r\n        LogFormat: LogAccessLogFormat;\r\n        LogSearchTimeBuffSecs: unsignedInt;\r\n        LogColumns: LogColumns;\r\n    }\r\n\r\n    export interface WULogFileResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        QuerySet: string;\r\n        QueryName: string;\r\n        QueryId: string;\r\n        FileName: string;\r\n        DaliServer: string;\r\n        thefile: base64Binary;\r\n    }\r\n\r\n    export interface WUFullResult {\r\n        Wuid: string;\r\n        NoRootTag: boolean;\r\n        ExceptionSeverity: WUExceptionSeverity;\r\n    }\r\n\r\n    export interface WUFullResultResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        Results: string;\r\n    }\r\n\r\n    export interface WUGVCGraphInfo {\r\n        Wuid: string;\r\n        Name: string;\r\n        GID: string;\r\n        BatchWU: int;\r\n        SubgraphId: int;\r\n    }\r\n\r\n    export interface WUGVCGraphInfoResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        Name: string;\r\n        GID: string;\r\n        Running: boolean;\r\n        TheGraph: string;\r\n        BatchWU: int;\r\n    }\r\n\r\n    export interface WUGetArchiveFile {\r\n        WUID: string;\r\n        ModuleName: string;\r\n        FileName: string;\r\n        Path: string;\r\n    }\r\n\r\n    export interface WUGetArchiveFileResponse {\r\n        Exceptions: Exceptions;\r\n        File: string;\r\n        Message: string;\r\n    }\r\n\r\n    export interface WUGetDependancyTrees {\r\n        Cluster: string;\r\n        Queue: string;\r\n        Snapshot: string;\r\n        Items: string;\r\n        TimeoutMilliSec: string;\r\n    }\r\n\r\n    export interface WUGetDependancyTreesResponse {\r\n        Exceptions: Exceptions;\r\n        Errors: Errors;\r\n        DependancyTrees: base64Binary;\r\n    }\r\n\r\n    export interface WUGetGraph {\r\n        Wuid: string;\r\n        GraphName: string;\r\n        SubGraphId: string;\r\n    }\r\n\r\n    export interface ECLGraphEx {\r\n        Name: string;\r\n        Label: string;\r\n        Type: string;\r\n        Graph: string;\r\n        Running: boolean;\r\n        RunningId: long;\r\n        Complete: boolean;\r\n        Failed: boolean;\r\n    }\r\n\r\n    export interface Graphs3 {\r\n        ECLGraphEx: ECLGraphEx[];\r\n    }\r\n\r\n    export interface WUGetGraphResponse {\r\n        Exceptions: Exceptions;\r\n        Graphs: Graphs3;\r\n    }\r\n\r\n    export interface WUGetGraphNameAndTypes {\r\n        Wuid: string;\r\n        Type: string;\r\n    }\r\n\r\n    export interface GraphNameAndType {\r\n        Name: string;\r\n        Type: string;\r\n    }\r\n\r\n    export interface GraphNameAndTypes {\r\n        GraphNameAndType: GraphNameAndType[];\r\n    }\r\n\r\n    export interface WUGetGraphNameAndTypesResponse {\r\n        Exceptions: Exceptions;\r\n        GraphNameAndTypes: GraphNameAndTypes;\r\n    }\r\n\r\n    export interface WUGetNumFileToCopy {\r\n        ClusterName: string;\r\n        TargetName: string;\r\n        PageSize: long;\r\n        PageStartFrom: long;\r\n        Sortby: string;\r\n        Descending: boolean;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface Endpoint {\r\n        URL: string;\r\n        Status: string;\r\n        NumQueryFileToCopy: int;\r\n    }\r\n\r\n    export interface Endpoints {\r\n        Endpoint: Endpoint[];\r\n    }\r\n\r\n    export interface WUGetNumFileToCopyResponse {\r\n        Exceptions: Exceptions;\r\n        Endpoints: Endpoints;\r\n        CacheHint: long;\r\n        Total: long;\r\n    }\r\n\r\n    export interface WUGetPlugins {\r\n\r\n    }\r\n\r\n    export interface Plugins {\r\n        WUEclPluginsInFolder: WUEclPluginsInFolder[];\r\n    }\r\n\r\n    export interface WUEclPluginsInFolder {\r\n        Path: string;\r\n        Plugins: Plugins;\r\n    }\r\n\r\n    export interface WUGetPluginsResponse {\r\n        Exceptions: Exceptions;\r\n        Plugins: Plugins;\r\n    }\r\n\r\n    export interface WUGetStats {\r\n        WUID: string;\r\n        CreatorType: string;\r\n        Creator: string;\r\n        ScopeType: string;\r\n        Scope: string;\r\n        Kind: string;\r\n        Measure: string;\r\n        MinScopeDepth: unsignedInt;\r\n        MaxScopeDepth: unsignedInt;\r\n        IncludeGraphs: boolean;\r\n        CreateDescriptions: boolean;\r\n        MinValue: long;\r\n        MaxValue: long;\r\n        Filter: string;\r\n    }\r\n\r\n    export interface WUStatisticItem {\r\n        Creator: string;\r\n        CreatorType: string;\r\n        Scope: string;\r\n        ScopeType: string;\r\n        Description: string;\r\n        TimeStamp: string;\r\n        Measure: string;\r\n        Kind: string;\r\n        Value: string;\r\n        RawValue: long;\r\n        Count: long;\r\n        Max: long;\r\n        Wuid: string;\r\n    }\r\n\r\n    export interface Statistics {\r\n        WUStatisticItem: WUStatisticItem[];\r\n    }\r\n\r\n    export interface WUGetStatsResponse {\r\n        Exceptions: Exceptions;\r\n        WUID: string;\r\n        Statistics: Statistics;\r\n    }\r\n\r\n    export interface WUGetThorJobList {\r\n        Cluster: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        MaxJobsToReturn: unsignedInt;\r\n    }\r\n\r\n    export interface ECLJob {\r\n        Wuid: string;\r\n        Graph: string;\r\n        State: string;\r\n        StartedDate: string;\r\n        FinishedDate: string;\r\n        Cluster: string;\r\n        GraphNum: string;\r\n        SubGraphNum: string;\r\n        NumOfRuns: string;\r\n        Duration: int;\r\n    }\r\n\r\n    export interface JobList {\r\n        ECLJob: ECLJob[];\r\n    }\r\n\r\n    export interface InProgressJobList {\r\n        ECLJob: ECLJob[];\r\n    }\r\n\r\n    export interface WUGetThorJobListResponse {\r\n        Exceptions: Exceptions;\r\n        JobList: JobList;\r\n        InProgressJobList: InProgressJobList;\r\n        Warning: string;\r\n    }\r\n\r\n    export interface WUGetThorJobQueue {\r\n        Cluster: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        MaxJobQueueItemsToReturn: unsignedInt;\r\n    }\r\n\r\n    export interface ThorQueue {\r\n        DT: string;\r\n        RunningWUs: string;\r\n        QueuedWUs: string;\r\n        WaitingThors: string;\r\n        ConnectedThors: string;\r\n        IdledThors: string;\r\n        RunningWU1: string;\r\n        RunningWU2: string;\r\n    }\r\n\r\n    export interface QueueList {\r\n        ThorQueue: ThorQueue[];\r\n    }\r\n\r\n    export interface WUGetThorJobQueueResponse {\r\n        Exceptions: Exceptions;\r\n        LongestQueue: int;\r\n        MaxThorConnected: int;\r\n        QueueList: QueueList;\r\n        Warning: string;\r\n    }\r\n\r\n    export interface WUGetZAPInfo {\r\n        WUID: string;\r\n    }\r\n\r\n    export interface WUGetZAPInfoResponse {\r\n        Exceptions: Exceptions;\r\n        WUID: string;\r\n        ESPApplication: string;\r\n        ThorProcesses: string;\r\n        BuildVersion: string;\r\n        Archive: string;\r\n        EmailTo: string;\r\n        EmailFrom: string;\r\n        Message: string;\r\n        IsContainerized: boolean;\r\n    }\r\n\r\n    export interface WUGraphInfo {\r\n        Wuid: string;\r\n        Name: string;\r\n        GID: string;\r\n        BatchWU: int;\r\n    }\r\n\r\n    export interface WUGraphInfoResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        Name: string;\r\n        GID: string;\r\n        BatchWU: int;\r\n        Running: boolean;\r\n    }\r\n\r\n    export interface WUGraphTiming {\r\n        Wuid: string;\r\n    }\r\n\r\n    export interface WUGraphTimingResponse {\r\n        Exceptions: Exceptions;\r\n        Workunit: Workunit;\r\n    }\r\n\r\n    export interface WUInfo {\r\n        Wuid: string;\r\n        TruncateEclTo64k: boolean;\r\n        Type: string;\r\n        IncludeExceptions: boolean;\r\n        IncludeGraphs: boolean;\r\n        IncludeSourceFiles: boolean;\r\n        IncludeResults: boolean;\r\n        IncludeResultsViewNames: boolean;\r\n        IncludeVariables: boolean;\r\n        IncludeTimers: boolean;\r\n        IncludeDebugValues: boolean;\r\n        IncludeApplicationValues: boolean;\r\n        IncludeWorkflows: boolean;\r\n        IncludeXmlSchemas: boolean;\r\n        IncludeResourceURLs: boolean;\r\n        IncludeECL: boolean;\r\n        IncludeHelpers: boolean;\r\n        IncludeAllowedClusters: boolean;\r\n        IncludeTotalClusterTime: boolean;\r\n        IncludeServiceNames: boolean;\r\n        IncludeProcesses: boolean;\r\n        SuppressResultSchemas: boolean;\r\n        ThorSlaveIP: string;\r\n    }\r\n\r\n    export interface ResultViews {\r\n        View: string[];\r\n    }\r\n\r\n    export interface WUInfoResponse {\r\n        Exceptions: Exceptions;\r\n        Workunit: Workunit;\r\n        AutoRefresh: int;\r\n        CanCompile: boolean;\r\n        ThorSlaveIP: string;\r\n        ResultViews: ResultViews;\r\n        SecMethod: string;\r\n    }\r\n\r\n    export interface WUInfoDetails {\r\n        Wuid: string;\r\n        TruncateEclTo64k: boolean;\r\n        Type: string;\r\n        IncludeExceptions: boolean;\r\n        IncludeGraphs: boolean;\r\n        IncludeSourceFiles: boolean;\r\n        IncludeResults: boolean;\r\n        IncludeResultsViewNames: boolean;\r\n        IncludeVariables: boolean;\r\n        IncludeTimers: boolean;\r\n        IncludeDebugValues: boolean;\r\n        IncludeApplicationValues: boolean;\r\n        IncludeWorkflows: boolean;\r\n        IncludeXmlSchemas: boolean;\r\n        IncludeResourceURLs: boolean;\r\n        IncludeECL: boolean;\r\n        IncludeHelpers: boolean;\r\n        IncludeAllowedClusters: boolean;\r\n        IncludeTotalClusterTime: boolean;\r\n        IncludeServiceNames: boolean;\r\n        IncludeProcesses: boolean;\r\n        SuppressResultSchemas: boolean;\r\n        ThorSlaveIP: string;\r\n    }\r\n\r\n    export interface WUJobList {\r\n        Cluster: string;\r\n        Process: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        ShowAll: boolean;\r\n        BusinessStartHour: int;\r\n        BusinessEndHour: int;\r\n    }\r\n\r\n    export interface Jobs {\r\n        ECLJob: ECLJob[];\r\n    }\r\n\r\n    export interface WUJobListResponse {\r\n        Exceptions: Exceptions;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        Jobs: Jobs;\r\n    }\r\n\r\n    export interface WULightWeightQuery {\r\n        Wuid: string;\r\n        Type: string;\r\n        Cluster: string;\r\n        Owner: string;\r\n        JobName: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        BeforeWU: string;\r\n        AfterWU: string;\r\n        State: string;\r\n        ApplicationValues: ApplicationValues;\r\n        PageStartFrom: long;\r\n        PageSize: unsignedInt;\r\n        SortBy: string;\r\n        Descending: boolean;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface ECLWorkunitLW {\r\n        Wuid: string;\r\n        Owner: string;\r\n        JobName: string;\r\n        WuScope: string;\r\n        ClusterName: string;\r\n        State: int;\r\n        StateDesc: string;\r\n        Action: int;\r\n        ActionDesc: string;\r\n        Priority: int;\r\n        PriorityDesc: string;\r\n        PriorityLevel: int;\r\n        IsProtected: boolean;\r\n        DateTimeScheduled: dateTime;\r\n        TotalClusterTime: unsignedInt;\r\n        ApplicationValues: ApplicationValues;\r\n        NoAccess: boolean;\r\n    }\r\n\r\n    export interface Workunits {\r\n        ECLWorkunitLW: ECLWorkunitLW[];\r\n    }\r\n\r\n    export interface WULightWeightQueryResponse {\r\n        Exceptions: Exceptions;\r\n        NumWUs: int;\r\n        CacheHint: long;\r\n        Workunits: Workunits;\r\n    }\r\n\r\n    export interface WUListArchiveFiles {\r\n        WUID: string;\r\n    }\r\n\r\n    export interface ArchiveModules {\r\n        ArchiveModule: ArchiveModule[];\r\n    }\r\n\r\n    export interface File2 {\r\n        Name: string;\r\n        Key: string;\r\n        SourcePath: string;\r\n        Path: string;\r\n    }\r\n\r\n    export interface Files {\r\n        File: File2[];\r\n    }\r\n\r\n    export interface ArchiveModule {\r\n        Name: string;\r\n        FullName: string;\r\n        Flags: unsignedInt;\r\n        Key: string;\r\n        Plugin: string;\r\n        SourcePath: string;\r\n        Version: string;\r\n        Path: string;\r\n        ArchiveModules: ArchiveModules;\r\n        Files: Files;\r\n    }\r\n\r\n    export interface WUListArchiveFilesResponse {\r\n        Exceptions: Exceptions;\r\n        ArchiveModules: ArchiveModules;\r\n        Files: Files;\r\n        Message: string;\r\n    }\r\n\r\n    export interface WUListLocalFileRequired {\r\n        Wuid: string;\r\n    }\r\n\r\n    export interface LogicalFileUpload {\r\n        Type: int;\r\n        Source: string;\r\n        Destination: string;\r\n        EventTag: string;\r\n    }\r\n\r\n    export interface LocalFileUploads {\r\n        LogicalFileUpload: LogicalFileUpload[];\r\n    }\r\n\r\n    export interface WUListLocalFileRequiredResponse {\r\n        Exceptions: Exceptions;\r\n        LocalFileUploads: LocalFileUploads;\r\n    }\r\n\r\n    export interface WUListQueries {\r\n        QuerySetName: string;\r\n        ClusterName: string;\r\n        LibraryName: string;\r\n        MemoryLimitLow: long;\r\n        MemoryLimitHigh: long;\r\n        TimeLimitLow: nonNegativeInteger;\r\n        TimeLimitHigh: nonNegativeInteger;\r\n        WarnTimeLimitLow: nonNegativeInteger;\r\n        WarnTimeLimitHigh: nonNegativeInteger;\r\n        PriorityLow: nonNegativeInteger;\r\n        PriorityHigh: nonNegativeInteger;\r\n        Activated: boolean;\r\n        SuspendedFilter: WUQueryFilterSuspendedType;\r\n        WUID: string;\r\n        QueryID: string;\r\n        QueryName: string;\r\n        PublishedBy: string;\r\n        PageSize: nonNegativeInteger;\r\n        PageStartFrom: nonNegativeInteger;\r\n        Sortby: string;\r\n        Descending: boolean;\r\n        CacheHint: long;\r\n        FileName: string;\r\n        CheckAllNodes: boolean;\r\n    }\r\n\r\n    export interface ClusterQueryState {\r\n        Cluster: string;\r\n        State: string;\r\n        Errors: string;\r\n        MixedNodeStates: boolean;\r\n    }\r\n\r\n    export interface Clusters2 {\r\n        ClusterQueryState: ClusterQueryState[];\r\n    }\r\n\r\n    export interface QuerySetQuery {\r\n        Id: string;\r\n        Name: string;\r\n        Wuid: string;\r\n        Dll: string;\r\n        Suspended: boolean;\r\n        Clusters: Clusters2;\r\n        memoryLimit: string;\r\n        timeLimit: nonNegativeInteger;\r\n        warnTimeLimit: nonNegativeInteger;\r\n        priority: string;\r\n        Comment: string;\r\n        QuerySetId: string;\r\n        IsLibrary: boolean;\r\n        Activated: boolean;\r\n        PublishedBy: string;\r\n        snapshot: string;\r\n        PriorityID: int;\r\n    }\r\n\r\n    export interface QuerysetQueries {\r\n        QuerySetQuery: QuerySetQuery[];\r\n    }\r\n\r\n    export interface WUListQueriesResponse {\r\n        Exceptions: Exceptions;\r\n        NumberOfQueries: int;\r\n        CacheHint: long;\r\n        QuerysetQueries: QuerysetQueries;\r\n    }\r\n\r\n    export interface WUListQueriesUsingFile {\r\n        Target: string;\r\n        Process: string;\r\n        FileName: string;\r\n    }\r\n\r\n    export interface QueryUsingFile {\r\n        Id: string;\r\n        Package: string;\r\n    }\r\n\r\n    export interface Queries {\r\n        QueryUsingFile: QueryUsingFile[];\r\n    }\r\n\r\n    export interface TargetQueriesUsingFile {\r\n        Target: string;\r\n        PackageMap: string;\r\n        Queries: Queries;\r\n    }\r\n\r\n    export interface Targets {\r\n        TargetQueriesUsingFile: TargetQueriesUsingFile[];\r\n    }\r\n\r\n    export interface WUListQueriesUsingFileResponse {\r\n        Exceptions: Exceptions;\r\n        Process: string;\r\n        FileName: string;\r\n        Targets: Targets;\r\n    }\r\n\r\n    export interface WUMultiQuerysetDetails {\r\n        ClusterName: string;\r\n        QuerySetName: string;\r\n        Filter: string;\r\n        FilterType: WUQuerySetFilterType;\r\n        CheckAllNodes: boolean;\r\n    }\r\n\r\n    export interface Queries2 {\r\n        QuerySetQuery: QuerySetQuery[];\r\n    }\r\n\r\n    export interface QuerySetAlias {\r\n        Id: string;\r\n        Name: string;\r\n    }\r\n\r\n    export interface Aliases {\r\n        QuerySetAlias: QuerySetAlias[];\r\n    }\r\n\r\n    export interface WUQuerySetDetail {\r\n        QuerySetName: string;\r\n        Queries: Queries2;\r\n        Aliases: Aliases;\r\n    }\r\n\r\n    export interface Querysets {\r\n        WUQuerySetDetail: WUQuerySetDetail[];\r\n    }\r\n\r\n    export interface WUMultiQuerySetDetailsResponse {\r\n        Exceptions: Exceptions;\r\n        ClusterName: string;\r\n        Querysets: Querysets;\r\n    }\r\n\r\n    export interface WUProcessGraph {\r\n        Wuid: string;\r\n        Name: string;\r\n    }\r\n\r\n    export interface WUProcessGraphResponse {\r\n        Exceptions: Exceptions;\r\n        theGraph: string;\r\n    }\r\n\r\n    export interface WUProtect {\r\n        Wuids: Wuids;\r\n        Protect: boolean;\r\n    }\r\n\r\n    export interface WUProtectResponse {\r\n        Exceptions: Exceptions;\r\n        ActionResults: ActionResults;\r\n    }\r\n\r\n    export interface WUPublishWorkunit {\r\n        Wuid: string;\r\n        Cluster: string;\r\n        QueryName: string;\r\n        WorkUnitJobName: string;\r\n        JobName: string;\r\n        Activate: int;\r\n        NotifyCluster: boolean;\r\n        Wait: int;\r\n        NoReload: boolean;\r\n        UpdateWorkUnitName: boolean;\r\n        memoryLimit: string;\r\n        TimeLimit: nonNegativeInteger;\r\n        WarnTimeLimit: nonNegativeInteger;\r\n        Priority: string;\r\n        RemoteDali: string;\r\n        Comment: string;\r\n        DontCopyFiles: boolean;\r\n        SourceProcess: string;\r\n        AllowForeignFiles: boolean;\r\n        UpdateDfs: boolean;\r\n        UpdateSuperFiles: boolean;\r\n        UpdateCloneFrom: boolean;\r\n        AppendCluster: boolean;\r\n        IncludeFileErrors: boolean;\r\n        DfuCopyFiles: boolean;\r\n        DfuQueue: string;\r\n        DfuWait: nonNegativeInteger;\r\n        DfuOverwrite: boolean;\r\n        OnlyCopyFiles: boolean;\r\n        StopIfFilesCopied: boolean;\r\n        DfuPublisherWuid: string;\r\n        RemoteStorage: string;\r\n        KeyCompression: string;\r\n    }\r\n\r\n    export interface WUPublishWorkunitResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        Result: string;\r\n        QuerySet: string;\r\n        QueryName: string;\r\n        QueryId: string;\r\n        ReloadFailed: boolean;\r\n        Suspended: boolean;\r\n        ErrorMessage: string;\r\n        ClusterFiles: ClusterFiles;\r\n        FileErrors: FileErrors;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface WUPushEvent {\r\n        EventName: string;\r\n        EventText: string;\r\n    }\r\n\r\n    export interface WUPushEventResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface WUQuery {\r\n        Wuid: string;\r\n        Type: string;\r\n        Cluster: string;\r\n        RoxieCluster: string;\r\n        Owner: string;\r\n        State: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        ECL: string;\r\n        Jobname: string;\r\n        LogicalFile: string;\r\n        LogicalFileSearchType: string;\r\n        ApplicationValues: ApplicationValues;\r\n        BeforeWU: string;\r\n        AfterWU: string;\r\n        TotalClusterTimeThresholdMilliSec: unsignedInt;\r\n        Count: int;\r\n        PageSize: long;\r\n        PageStartFrom: long;\r\n        PageEndAt: long;\r\n        Protected: WUProtectFilter;\r\n        MinimumExecuteCost: double;\r\n        MinimumFileAccessCost: double;\r\n        MinimumCompileCost: double;\r\n        Sortby: string;\r\n        Descending: boolean;\r\n        CacheHint: long;\r\n    }\r\n\r\n    export interface ECLWorkunit {\r\n        Wuid: string;\r\n        Owner: string;\r\n        Cluster: string;\r\n        RoxieCluster: string;\r\n        Jobname: string;\r\n        Queue: string;\r\n        StateID: int;\r\n        State: string;\r\n        StateEx: string;\r\n        Description: string;\r\n        Protected: boolean;\r\n        Active: boolean;\r\n        Action: int;\r\n        ActionEx: string;\r\n        DateTimeScheduled: dateTime;\r\n        PriorityClass: int;\r\n        PriorityLevel: int;\r\n        Scope: string;\r\n        Snapshot: string;\r\n        ResultLimit: int;\r\n        Archived: boolean;\r\n        IsPausing: boolean;\r\n        ThorLCR: boolean;\r\n        EventSchedule: int;\r\n        TotalClusterTime: string;\r\n        AbortBy: string;\r\n        AbortTime: string;\r\n        Query: Query;\r\n        Helpers: Helpers;\r\n        Exceptions: Exceptions2;\r\n        Graphs: Graphs;\r\n        SourceFiles: SourceFiles;\r\n        Results: Results;\r\n        Variables: Variables;\r\n        Timers: Timers;\r\n        DebugValues: DebugValues;\r\n        ApplicationValues: ApplicationValues;\r\n        Workflows: Workflows;\r\n        TimingData: TimingData;\r\n        AllowedClusters: AllowedClusters;\r\n        ErrorCount: int;\r\n        WarningCount: int;\r\n        InfoCount: int;\r\n        AlertCount: int;\r\n        GraphCount: int;\r\n        SourceFileCount: int;\r\n        ResultCount: int;\r\n        VariableCount: int;\r\n        TimerCount: int;\r\n        HasDebugValue: boolean;\r\n        ApplicationValueCount: int;\r\n        XmlParams: string;\r\n        AccessFlag: int;\r\n        ClusterFlag: int;\r\n        HelpersDesc: string;\r\n        GraphsDesc: string;\r\n        SourceFilesDesc: string;\r\n        ResultsDesc: string;\r\n        VariablesDesc: string;\r\n        TimersDesc: string;\r\n        DebugValuesDesc: string;\r\n        ApplicationValuesDesc: string;\r\n        WorkflowsDesc: string;\r\n        HasArchiveQuery: boolean;\r\n        ThorLogList: ThorLogList;\r\n        ResourceURLs: ResourceURLs;\r\n        ResultViewCount: int;\r\n        ResourceURLCount: int;\r\n        DebugValueCount: int;\r\n        WorkflowCount: int;\r\n        HelpersCount: int;\r\n        ServiceNames: ServiceNames;\r\n        ExecuteCost: double;\r\n        FileAccessCost: double;\r\n        CostSavingPotential: double;\r\n        CompileCost: double;\r\n        NoAccess: boolean;\r\n        ECLWUProcessList: ECLWUProcessList;\r\n    }\r\n\r\n    export interface Workunits2 {\r\n        ECLWorkunit: ECLWorkunit[];\r\n    }\r\n\r\n    export interface WUQueryResponse {\r\n        Exceptions: Exceptions;\r\n        Type: string;\r\n        Cluster: string;\r\n        RoxieCluster: string;\r\n        Owner: string;\r\n        State: string;\r\n        StartDate: string;\r\n        EndDate: string;\r\n        ECL: string;\r\n        Jobname: string;\r\n        LogicalFile: string;\r\n        LogicalFileSearchType: string;\r\n        Current: string;\r\n        Next: string;\r\n        Count: int;\r\n        PageSize: long;\r\n        PrevPage: long;\r\n        NextPage: long;\r\n        LastPage: long;\r\n        NumWUs: int;\r\n        First: boolean;\r\n        PageStartFrom: long;\r\n        PageEndAt: long;\r\n        Sortby: string;\r\n        Descending: boolean;\r\n        BasicQuery: string;\r\n        Filters: string;\r\n        CacheHint: long;\r\n        Workunits: Workunits2;\r\n    }\r\n\r\n    export interface WUQueryConfig {\r\n        Target: string;\r\n        QueryId: string;\r\n        Wait: int;\r\n        NoReload: boolean;\r\n        memoryLimit: string;\r\n        TimeLimit: nonNegativeInteger;\r\n        WarnTimeLimit: nonNegativeInteger;\r\n        Priority: string;\r\n        Comment: string;\r\n    }\r\n\r\n    export interface Result {\r\n        QueryId: string;\r\n    }\r\n\r\n    export interface Results2 {\r\n        Result: Result[];\r\n    }\r\n\r\n    export interface WUQueryConfigResponse {\r\n        Exceptions: Exceptions;\r\n        ReloadFailed: boolean;\r\n        Results: Results2;\r\n    }\r\n\r\n    export interface WUQueryDetails {\r\n        QueryId: string;\r\n        QuerySet: string;\r\n        IncludeStateOnClusters: boolean;\r\n        IncludeSuperFiles: boolean;\r\n        IncludeWsEclAddresses: boolean;\r\n        CheckAllNodes: boolean;\r\n        IncludeWUDetails: boolean;\r\n        IncludeWUQueryFiles: boolean;\r\n    }\r\n\r\n    export interface LogicalFiles {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface SubFiles {\r\n        File: string[];\r\n    }\r\n\r\n    export interface SuperFiles {\r\n        SuperFile: SuperFile[];\r\n    }\r\n\r\n    export interface SuperFile {\r\n        Name: string;\r\n        SubFiles: SubFiles;\r\n        SuperFiles: SuperFiles;\r\n    }\r\n\r\n    export interface LibrariesUsed {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface WsEclAddresses {\r\n        Address: string[];\r\n    }\r\n\r\n    export interface WUGraphs {\r\n        ECLGraph: ECLGraph[];\r\n    }\r\n\r\n    export interface WUTimers {\r\n        ECLTimer: ECLTimer[];\r\n    }\r\n\r\n    export interface WUQueryDetailsResponse {\r\n        Exceptions: Exceptions;\r\n        QueryId: string;\r\n        QuerySet: string;\r\n        QueryName: string;\r\n        Wuid: string;\r\n        Dll: string;\r\n        Suspended: boolean;\r\n        Activated: boolean;\r\n        SuspendedBy: string;\r\n        Clusters: Clusters2;\r\n        PublishedBy: string;\r\n        Comment: string;\r\n        LogicalFiles: LogicalFiles;\r\n        SuperFiles: SuperFiles;\r\n        IsLibrary: boolean;\r\n        Priority: string;\r\n        PriorityID: int;\r\n        WUSnapShot: string;\r\n        CompileTime: string;\r\n        LibrariesUsed: LibrariesUsed;\r\n        CountGraphs: int;\r\n        ResourceURLCount: int;\r\n        WsEclAddresses: WsEclAddresses;\r\n        WUGraphs: WUGraphs;\r\n        WUTimers: WUTimers;\r\n    }\r\n\r\n    export interface WUQueryDetailsLightWeight {\r\n        QueryId: string;\r\n        QuerySet: string;\r\n        IncludeWUDetails: boolean;\r\n        IncludeWUQueryFiles: boolean;\r\n        IncludeSuperFiles: boolean;\r\n        IncludeWsEclAddresses: boolean;\r\n        IncludeStateOnClusters: boolean;\r\n        CheckAllNodes: boolean;\r\n    }\r\n\r\n    export interface WUQueryFiles {\r\n        Target: string;\r\n        QueryId: string;\r\n    }\r\n\r\n    export interface File3 {\r\n        FileName: string;\r\n        FileSize: long;\r\n        NumberOfParts: unsignedInt;\r\n    }\r\n\r\n    export interface Files2 {\r\n        File: File3[];\r\n    }\r\n\r\n    export interface Query2 {\r\n        QueryId: string;\r\n        Files: Files2;\r\n        SuperFiles: SuperFiles;\r\n    }\r\n\r\n    export interface Queries3 {\r\n        Query: Query2[];\r\n    }\r\n\r\n    export interface WUQueryFilesResponse {\r\n        Exceptions: Exceptions;\r\n        Files: Files2;\r\n        SuperFiles: SuperFiles;\r\n        Queries: Queries3;\r\n    }\r\n\r\n    export interface WUQueryGetGraph {\r\n        Target: string;\r\n        QueryId: string;\r\n        GraphName: string;\r\n        SubGraphId: string;\r\n    }\r\n\r\n    export interface WUQueryGetGraphResponse {\r\n        Exceptions: Exceptions;\r\n        Graphs: Graphs3;\r\n    }\r\n\r\n    export interface WUQueryGetSummaryStats {\r\n        Target: string;\r\n        QueryId: string;\r\n        FromTime: string;\r\n        ToTime: string;\r\n        IncludeRawStats: boolean;\r\n    }\r\n\r\n    export interface QuerySummaryStats {\r\n        Endpoint: string;\r\n        Status: string;\r\n        StartTime: string;\r\n        EndTime: string;\r\n        CountTotal: int;\r\n        CountFailed: int;\r\n        AverageSlavesReplyLen: int;\r\n        AverageBytesOut: long;\r\n        SizeAvgPeakMemory: long;\r\n        TimeAvgTotalExecuteMinutes: long;\r\n        TimeMinTotalExecuteMinutes: long;\r\n        TimeMaxTotalExecuteMinutes: long;\r\n        Percentile97: long;\r\n        Percentile97Estimate: boolean;\r\n    }\r\n\r\n    export interface StatsList {\r\n        QuerySummaryStats: QuerySummaryStats[];\r\n    }\r\n\r\n    export interface AggregateQueryStatsList {\r\n        QuerySummaryStats: QuerySummaryStats[];\r\n    }\r\n\r\n    export interface QueryStatsRecord {\r\n        StartTime: string;\r\n        ElapsedTimeMs: long;\r\n        MemoryUsed: long;\r\n        BytesOut: long;\r\n        SlavesReplyLen: int;\r\n        Failed: boolean;\r\n    }\r\n\r\n    export interface QueryStatsRecordList {\r\n        QueryStatsRecord: QueryStatsRecord[];\r\n    }\r\n\r\n    export interface QueryStats {\r\n        ID: string;\r\n        AggregateQueryStatsList: AggregateQueryStatsList;\r\n        QueryStatsRecordList: QueryStatsRecordList;\r\n    }\r\n\r\n    export interface QueryStatsList {\r\n        EndpointQueryStats: EndpointQueryStats[];\r\n    }\r\n\r\n    export interface EndpointQueryStats {\r\n        Endpoint: string;\r\n        Status: string;\r\n        QueryStatsList: QueryStatsList;\r\n    }\r\n\r\n    export interface WUQueryGetSummaryStatsResponse {\r\n        Exceptions: Exceptions;\r\n        StatsList: StatsList;\r\n        QueryStatsList: QueryStatsList;\r\n    }\r\n\r\n    export interface Alias {\r\n        Name: string;\r\n    }\r\n\r\n    export interface Aliases2 {\r\n        Alias: Alias[];\r\n    }\r\n\r\n    export interface WUQuerysetAliasAction {\r\n        Action: QuerySetAliasActionTypes;\r\n        QuerySetName: string;\r\n        Aliases: Aliases2;\r\n    }\r\n\r\n    export interface Result2 {\r\n        Name: string;\r\n        Success: boolean;\r\n        Code: int;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Results3 {\r\n        Result: Result2[];\r\n    }\r\n\r\n    export interface WUQuerySetAliasActionResponse {\r\n        Exceptions: Exceptions;\r\n        Action: QuerySetAliasActionTypes;\r\n        QuerySetName: string;\r\n        Results: Results3;\r\n    }\r\n\r\n    export interface WUQuerysetCopyQuery {\r\n        Source: string;\r\n        Target: string;\r\n        Cluster: string;\r\n        DaliServer: string;\r\n        Activate: int;\r\n        Overwrite: boolean;\r\n        DontCopyFiles: boolean;\r\n        Wait: int;\r\n        NoReload: boolean;\r\n        memoryLimit: string;\r\n        TimeLimit: nonNegativeInteger;\r\n        WarnTimeLimit: nonNegativeInteger;\r\n        priority: string;\r\n        Comment: string;\r\n        SourceProcess: string;\r\n        DestName: string;\r\n        AllowForeignFiles: boolean;\r\n        UpdateSuperFiles: boolean;\r\n        UpdateCloneFrom: boolean;\r\n        AppendCluster: boolean;\r\n        IncludeFileErrors: boolean;\r\n        SourceSSL: boolean;\r\n        DfuCopyFiles: boolean;\r\n        DfuQueue: string;\r\n        DfuWait: nonNegativeInteger;\r\n        DfuOverwrite: boolean;\r\n        OnlyCopyFiles: boolean;\r\n        StopIfFilesCopied: boolean;\r\n        DfuPublisherWuid: string;\r\n        RemoteStorage: string;\r\n        KeyCompression: string;\r\n    }\r\n\r\n    export interface WUQuerySetCopyQueryResponse {\r\n        Exceptions: Exceptions;\r\n        QueryId: string;\r\n        FileErrors: FileErrors;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface WUQuerysetDetails {\r\n        QuerySetName: string;\r\n        Filter: string;\r\n        ClusterName: string;\r\n        FilterType: WUQuerySetFilterType;\r\n        CheckAllNodes: boolean;\r\n    }\r\n\r\n    export interface QuerysetAliases {\r\n        QuerySetAlias: QuerySetAlias[];\r\n    }\r\n\r\n    export interface ClusterNames {\r\n        Item: string[];\r\n    }\r\n\r\n    export interface WUQuerySetDetailsResponse {\r\n        Exceptions: Exceptions;\r\n        QuerySetName: string;\r\n        QuerysetQueries: QuerysetQueries;\r\n        QuerysetAliases: QuerysetAliases;\r\n        ClusterName: string;\r\n        Filter: string;\r\n        FilterType: WUQuerySetFilterType;\r\n        ClusterNames: ClusterNames;\r\n    }\r\n\r\n    export interface WUQuerysetExport {\r\n        Target: string;\r\n        Compress: boolean;\r\n        ActiveOnly: boolean;\r\n        Protect: boolean;\r\n    }\r\n\r\n    export interface WUQuerysetExportResponse {\r\n        Exceptions: Exceptions;\r\n        Target: string;\r\n        Compressed: boolean;\r\n        Data: base64Binary;\r\n    }\r\n\r\n    export interface WUQuerysetImport {\r\n        Target: string;\r\n        QueryMask: string;\r\n        Replace: boolean;\r\n        ActiveOnly: boolean;\r\n        Activation: QuerysetImportActivation;\r\n        Compressed: boolean;\r\n        Data: base64Binary;\r\n        AllowForeignFiles: boolean;\r\n        DfsServer: string;\r\n        CopyFiles: boolean;\r\n        OverwriteDfs: boolean;\r\n        SourceProcess: string;\r\n        UpdateSuperFiles: boolean;\r\n        UpdateCloneFrom: boolean;\r\n        AppendCluster: boolean;\r\n        IncludeFileErrors: boolean;\r\n        DfuCopyFiles: boolean;\r\n        DfuQueue: string;\r\n        DfuWait: nonNegativeInteger;\r\n        DfuOverwrite: boolean;\r\n        OnlyCopyFiles: boolean;\r\n        StopIfFilesCopied: boolean;\r\n        DfuPublisherWuid: string;\r\n        RemoteStorage: string;\r\n        KeyCompression: string;\r\n    }\r\n\r\n    export interface ImportedQueries {\r\n        QueryId: string[];\r\n    }\r\n\r\n    export interface MissingWuids {\r\n        QueryId: string[];\r\n    }\r\n\r\n    export interface WUQuerysetImportResponse {\r\n        Exceptions: Exceptions;\r\n        Target: string;\r\n        ClearedExisting: boolean;\r\n        Success: boolean;\r\n        ImportedQueries: ImportedQueries;\r\n        ExistingQueries: ExistingQueries;\r\n        MissingWuids: MissingWuids;\r\n        FileErrors: FileErrors;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface ClientState {\r\n        Suspended: string;\r\n    }\r\n\r\n    export interface Query3 {\r\n        QueryId: string;\r\n        Activated: boolean;\r\n        SuspendedByUser: boolean;\r\n        ClientState: ClientState;\r\n    }\r\n\r\n    export interface Queries4 {\r\n        Query: Query3[];\r\n    }\r\n\r\n    export interface WUQuerysetQueryAction {\r\n        Action: QuerySetQueryActionTypes;\r\n        QuerySetName: string;\r\n        Queries: Queries4;\r\n    }\r\n\r\n    export interface Result3 {\r\n        QueryId: string;\r\n        WUID: string;\r\n        Suspended: boolean;\r\n        Success: boolean;\r\n        Code: int;\r\n        Message: string;\r\n    }\r\n\r\n    export interface Results4 {\r\n        Result: Result3[];\r\n    }\r\n\r\n    export interface WUQuerySetQueryActionResponse {\r\n        Exceptions: Exceptions;\r\n        Action: QuerySetQueryActionTypes;\r\n        QuerySetName: string;\r\n        Results: Results4;\r\n    }\r\n\r\n    export interface WUQuerysets {\r\n        test: boolean;\r\n    }\r\n\r\n    export interface QuerySet {\r\n        QuerySetName: string;\r\n    }\r\n\r\n    export interface Querysets2 {\r\n        QuerySet: QuerySet[];\r\n    }\r\n\r\n    export interface WUQuerysetsResponse {\r\n        Exceptions: Exceptions;\r\n        Querysets: Querysets2;\r\n    }\r\n\r\n    export interface WURecreateQuery {\r\n        Target: string;\r\n        QueryId: string;\r\n        DebugValues: DebugValues2;\r\n        DestTarget: string;\r\n        Republish: boolean;\r\n        Activate: WUQueryActivationMode;\r\n        NoReload: boolean;\r\n        MemoryLimit: string;\r\n        TimeLimit: nonNegativeInteger;\r\n        WarnTimeLimit: nonNegativeInteger;\r\n        Priority: string;\r\n        Comment: string;\r\n        RemoteDali: string;\r\n        DontCopyFiles: boolean;\r\n        SourceProcess: string;\r\n        AllowForeignFiles: boolean;\r\n        UpdateDfs: boolean;\r\n        UpdateSuperFiles: boolean;\r\n        UpdateCloneFrom: boolean;\r\n        AppendCluster: boolean;\r\n        IncludeFileErrors: boolean;\r\n        Wait: int;\r\n        DfuCopyFiles: boolean;\r\n        DfuQueue: string;\r\n        DfuWait: nonNegativeInteger;\r\n        DfuOverwrite: boolean;\r\n        OnlyCopyFiles: boolean;\r\n        StopIfFilesCopied: boolean;\r\n        DfuPublisherWuid: string;\r\n        RemoteStorage: string;\r\n        KeyCompression: string;\r\n    }\r\n\r\n    export interface WURecreateQueryResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        QuerySet: string;\r\n        QueryName: string;\r\n        QueryId: string;\r\n        MemoryLimit: string;\r\n        TimeLimit: nonNegativeInteger;\r\n        WarnTimeLimit: nonNegativeInteger;\r\n        Priority: string;\r\n        Comment: string;\r\n        ReloadFailed: boolean;\r\n        Suspended: boolean;\r\n        ErrorMessage: string;\r\n        FileErrors: FileErrors;\r\n        DfuPublisherWuid: string;\r\n        DfuPublisherState: string;\r\n    }\r\n\r\n    export interface WUResubmit {\r\n        Wuids: Wuids;\r\n        BlockTillFinishTimer: int;\r\n        ResetWorkflow: boolean;\r\n        CloneWorkunit: boolean;\r\n    }\r\n\r\n    export interface WU {\r\n        WUID: string;\r\n        ParentWUID: string;\r\n    }\r\n\r\n    export interface WUs {\r\n        WU: WU[];\r\n    }\r\n\r\n    export interface WUResubmitResponse {\r\n        Exceptions: Exceptions;\r\n        WUs: WUs;\r\n    }\r\n\r\n    export interface FilterBy {\r\n        NamedValue: NamedValue[];\r\n    }\r\n\r\n    export interface WUResult {\r\n        Wuid: string;\r\n        Sequence: int;\r\n        ResultName: string;\r\n        LogicalName: string;\r\n        Cluster: string;\r\n        SuppressXmlSchema: boolean;\r\n        BypassCachedResult: boolean;\r\n        FilterBy: FilterBy;\r\n        Start: long;\r\n        Count: int;\r\n    }\r\n\r\n    export interface WUResultResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        Sequence: int;\r\n        LogicalName: string;\r\n        Cluster: string;\r\n        Name: string;\r\n        Start: long;\r\n        Requested: int;\r\n        Count: int;\r\n        Total: long;\r\n        Result: string;\r\n    }\r\n\r\n    export interface WUResultBin {\r\n        LogicalName: string;\r\n        Wuid: string;\r\n        ResultName: string;\r\n        Sequence: int;\r\n        Format: string;\r\n        Cluster: string;\r\n        FilterBy: FilterBy;\r\n        Start: long;\r\n        Count: int;\r\n    }\r\n\r\n    export interface WUResultBinResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        Sequence: int;\r\n        Name: string;\r\n        Start: long;\r\n        Count: int;\r\n        Requested: int;\r\n        Total: long;\r\n        Result: base64Binary;\r\n        Format: string;\r\n    }\r\n\r\n    export interface WUResultSummary {\r\n        Wuid: string;\r\n        Sequence: int;\r\n    }\r\n\r\n    export interface Result4 {\r\n        Name: string;\r\n        Sequence: int;\r\n        Value: string;\r\n        Link: string;\r\n        FileName: string;\r\n        IsSupplied: boolean;\r\n        ShowFileContent: boolean;\r\n        Total: long;\r\n        ECLSchemas: ECLSchemas;\r\n        XmlSchema: string;\r\n    }\r\n\r\n    export interface WUResultSummaryResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        Sequence: int;\r\n        Format: int;\r\n        Result: Result4;\r\n    }\r\n\r\n    export interface WUResultView {\r\n        Wuid: string;\r\n        ViewName: string;\r\n        Sequence: int;\r\n        ResultName: string;\r\n    }\r\n\r\n    export interface WUResultViewResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        ViewName: string;\r\n        Result: string;\r\n    }\r\n\r\n    export interface Variables2 {\r\n        NamedValue: NamedValue[];\r\n    }\r\n\r\n    export interface WURun {\r\n        QuerySet: string;\r\n        Query: string;\r\n        Wuid: string;\r\n        CloneWorkunit: boolean;\r\n        Cluster: string;\r\n        Wait: int;\r\n        Input: string;\r\n        NoRootTag: boolean;\r\n        DebugValues: DebugValues2;\r\n        Variables: Variables2;\r\n        ApplicationValues: ApplicationValues;\r\n        ExceptionSeverity: WUExceptionSeverity;\r\n    }\r\n\r\n    export interface WURunResponse {\r\n        Exceptions: Exceptions;\r\n        Wuid: string;\r\n        State: string;\r\n        Results: string;\r\n    }\r\n\r\n    export interface WUSchedule {\r\n        Wuid: string;\r\n        Cluster: string;\r\n        Queue: string;\r\n        Snapshot: string;\r\n        When: dateTime;\r\n        MaxRunTime: int;\r\n    }\r\n\r\n    export interface WUScheduleResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface WUShowScheduled {\r\n        Cluster: string;\r\n        EventName: string;\r\n        PushEventName: string;\r\n        PushEventText: string;\r\n        State: string;\r\n        JobName: string;\r\n        Owner: string;\r\n        EventText: string;\r\n    }\r\n\r\n    export interface ServerInfo {\r\n        Name: string;\r\n        NetAddress: string;\r\n    }\r\n\r\n    export interface Clusters3 {\r\n        ServerInfo: ServerInfo[];\r\n    }\r\n\r\n    export interface ScheduledWU {\r\n        Wuid: string;\r\n        Cluster: string;\r\n        EventName: string;\r\n        EventText: string;\r\n        JobName: string;\r\n        StateID: int;\r\n        State: string;\r\n        Owner: string;\r\n    }\r\n\r\n    export interface Workunits3 {\r\n        ScheduledWU: ScheduledWU[];\r\n    }\r\n\r\n    export interface WUShowScheduledResponse {\r\n        Exceptions: Exceptions;\r\n        ClusterSelected: int;\r\n        EventName: string;\r\n        PushEventName: string;\r\n        PushEventText: string;\r\n        Query: string;\r\n        Clusters: Clusters3;\r\n        Workunits: Workunits3;\r\n    }\r\n\r\n    export interface WUSubmit {\r\n        Wuid: string;\r\n        Cluster: string;\r\n        Queue: string;\r\n        Snapshot: string;\r\n        MaxRunTime: int;\r\n        MaxCost: int;\r\n        BlockTillFinishTimer: int;\r\n        SyntaxCheck: boolean;\r\n        NotifyCluster: boolean;\r\n    }\r\n\r\n    export interface WUSubmitResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface WUSyntaxCheckECL {\r\n        ECL: string;\r\n        ModuleName: string;\r\n        AttributeName: string;\r\n        Queue: string;\r\n        Cluster: string;\r\n        Snapshot: string;\r\n        TimeToWait: int;\r\n        PersistWorkunit: boolean;\r\n        DebugValues: DebugValues;\r\n    }\r\n\r\n    export interface WUSyntaxCheckResponse {\r\n        Exceptions: Exceptions;\r\n        Errors: Errors;\r\n        Message: string;\r\n    }\r\n\r\n    export interface WUUpdate {\r\n        Wuid: string;\r\n        State: int;\r\n        StateOrig: int;\r\n        Jobname: string;\r\n        JobnameOrig: string;\r\n        QueryText: string;\r\n        Action: int;\r\n        Description: string;\r\n        DescriptionOrig: string;\r\n        AddDrilldownFields: boolean;\r\n        ResultLimit: int;\r\n        Protected: boolean;\r\n        ProtectedOrig: boolean;\r\n        PriorityClass: int;\r\n        PriorityLevel: int;\r\n        Scope: string;\r\n        ScopeOrig: string;\r\n        ClusterSelection: string;\r\n        ClusterOrig: string;\r\n        XmlParams: string;\r\n        ThorSlaveIP: string;\r\n        QueryMainDefinition: string;\r\n        DebugValues: DebugValues;\r\n        ApplicationValues: ApplicationValues;\r\n    }\r\n\r\n    export interface WUUpdateQueryEntry {\r\n        QuerySet: string;\r\n        QueryId: string;\r\n        Comment: string;\r\n    }\r\n\r\n    export interface WUUpdateQueryEntryResponse {\r\n        Exceptions: Exceptions;\r\n    }\r\n\r\n    export interface WUWaitCompiled {\r\n        Wuid: string;\r\n        Wait: int;\r\n        ReturnOnWait: boolean;\r\n    }\r\n\r\n    export interface WUWaitResponse {\r\n        Exceptions: Exceptions;\r\n        StateID: int;\r\n    }\r\n\r\n    export interface WUWaitComplete {\r\n        Wuid: string;\r\n        Wait: int;\r\n        ReturnOnWait: boolean;\r\n    }\r\n\r\n}\r\n\r\nexport class WorkunitsServiceBase extends Service {\r\n\r\n    constructor(optsConnection: IOptions | IConnection) {\r\n        super(optsConnection, \"WsWorkunits\", \"2.04\");\r\n    }\r\n\r\n    GVCAjaxGraph(request: Partial<WsWorkunits.GVCAjaxGraph>): Promise<WsWorkunits.GVCAjaxGraphResponse> {\r\n        return this._connection.send(\"GVCAjaxGraph\", request, \"json\", false, undefined, \"GVCAjaxGraphResponse\");\r\n    }\r\n\r\n    Ping(request: Partial<WsWorkunits.Ping>): Promise<WsWorkunits.WsWorkunitsPingResponse> {\r\n        return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"WsWorkunitsPingResponse\");\r\n    }\r\n\r\n    WUAbort(request: Partial<WsWorkunits.WUAbort>): Promise<WsWorkunits.WUAbortResponse> {\r\n        return this._connection.send(\"WUAbort\", request, \"json\", false, undefined, \"WUAbortResponse\");\r\n    }\r\n\r\n    WUAction(request: Partial<WsWorkunits.WUAction>): Promise<WsWorkunits.WUActionResponse> {\r\n        return this._connection.send(\"WUAction\", request, \"json\", false, undefined, \"WUActionResponse\");\r\n    }\r\n\r\n    WUAddLocalFileToWorkunit(request: Partial<WsWorkunits.WUAddLocalFileToWorkunit>): Promise<WsWorkunits.WUAddLocalFileToWorkunitResponse> {\r\n        return this._connection.send(\"WUAddLocalFileToWorkunit\", request, \"json\", false, undefined, \"WUAddLocalFileToWorkunitResponse\");\r\n    }\r\n\r\n    WUAnalyseHotspot(request: Partial<WsWorkunits.WUAnalyseHotspot>): Promise<WsWorkunits.WUAnalyseHotspotResponse> {\r\n        return this._connection.send(\"WUAnalyseHotspot\", request, \"json\", false, undefined, \"WUAnalyseHotspotResponse\");\r\n    }\r\n\r\n    WUCDebug(request: Partial<WsWorkunits.WUCDebug>): Promise<WsWorkunits.WUDebugResponse> {\r\n        return this._connection.send(\"WUCDebug\", request, \"json\", false, undefined, \"WUDebugResponse\");\r\n    }\r\n\r\n    WUCheckFeatures(request: Partial<WsWorkunits.WUCheckFeatures>): Promise<WsWorkunits.WUCheckFeaturesResponse> {\r\n        return this._connection.send(\"WUCheckFeatures\", request, \"json\", false, undefined, \"WUCheckFeaturesResponse\");\r\n    }\r\n\r\n    WUClusterJobQueueLOG(request: Partial<WsWorkunits.WUClusterJobQueueLOG>): Promise<WsWorkunits.WUClusterJobQueueLOGResponse> {\r\n        return this._connection.send(\"WUClusterJobQueueLOG\", request, \"json\", false, undefined, \"WUClusterJobQueueLOGResponse\");\r\n    }\r\n\r\n    WUClusterJobQueueXLS(request: Partial<WsWorkunits.WUClusterJobQueueXLS>): Promise<WsWorkunits.WUClusterJobQueueXLSResponse> {\r\n        return this._connection.send(\"WUClusterJobQueueXLS\", request, \"json\", false, undefined, \"WUClusterJobQueueXLSResponse\");\r\n    }\r\n\r\n    WUClusterJobSummaryXLS(request: Partial<WsWorkunits.WUClusterJobSummaryXLS>): Promise<WsWorkunits.WUClusterJobSummaryXLSResponse> {\r\n        return this._connection.send(\"WUClusterJobSummaryXLS\", request, \"json\", false, undefined, \"WUClusterJobSummaryXLSResponse\");\r\n    }\r\n\r\n    WUClusterJobXLS(request: Partial<WsWorkunits.WUClusterJobXLS>): Promise<WsWorkunits.WUClusterJobXLSResponse> {\r\n        return this._connection.send(\"WUClusterJobXLS\", request, \"json\", false, undefined, \"WUClusterJobXLSResponse\");\r\n    }\r\n\r\n    WUCompileECL(request: Partial<WsWorkunits.WUCompileECL>): Promise<WsWorkunits.WUCompileECLResponse> {\r\n        return this._connection.send(\"WUCompileECL\", request, \"json\", false, undefined, \"WUCompileECLResponse\");\r\n    }\r\n\r\n    WUCopyLogicalFiles(request: Partial<WsWorkunits.WUCopyLogicalFiles>): Promise<WsWorkunits.WUCopyLogicalFilesResponse> {\r\n        return this._connection.send(\"WUCopyLogicalFiles\", request, \"json\", false, undefined, \"WUCopyLogicalFilesResponse\");\r\n    }\r\n\r\n    WUCopyQuerySet(request: Partial<WsWorkunits.WUCopyQuerySet>): Promise<WsWorkunits.WUCopyQuerySetResponse> {\r\n        return this._connection.send(\"WUCopyQuerySet\", request, \"json\", false, undefined, \"WUCopyQuerySetResponse\");\r\n    }\r\n\r\n    WUCreate(request: Partial<WsWorkunits.WUCreate>): Promise<WsWorkunits.WUCreateResponse> {\r\n        return this._connection.send(\"WUCreate\", request, \"json\", false, undefined, \"WUCreateResponse\");\r\n    }\r\n\r\n    WUCreateAndUpdate(request: Partial<WsWorkunits.WUCreateAndUpdate>): Promise<WsWorkunits.WUUpdateResponse> {\r\n        return this._connection.send(\"WUCreateAndUpdate\", request, \"json\", false, undefined, \"WUUpdateResponse\");\r\n    }\r\n\r\n    WUCreateZAPInfo(request: Partial<WsWorkunits.WUCreateZAPInfo>): Promise<WsWorkunits.WUCreateZAPInfoResponse> {\r\n        return this._connection.send(\"WUCreateZAPInfo\", request, \"json\", false, undefined, \"WUCreateZAPInfoResponse\");\r\n    }\r\n\r\n    WUDelete(request: Partial<WsWorkunits.WUDelete>): Promise<WsWorkunits.WUDeleteResponse> {\r\n        return this._connection.send(\"WUDelete\", request, \"json\", false, undefined, \"WUDeleteResponse\");\r\n    }\r\n\r\n    WUDeployWorkunit(request: Partial<WsWorkunits.WUDeployWorkunit>): Promise<WsWorkunits.WUDeployWorkunitResponse> {\r\n        return this._connection.send(\"WUDeployWorkunit\", request, \"json\", false, undefined, \"WUDeployWorkunitResponse\");\r\n    }\r\n\r\n    WUDetails(request: Partial<WsWorkunits.WUDetails>): Promise<WsWorkunits.WUDetailsResponse> {\r\n        return this._connection.send(\"WUDetails\", request, \"json\", false, undefined, \"WUDetailsResponse\");\r\n    }\r\n\r\n    WUDetailsMeta(request: Partial<WsWorkunits.WUDetailsMeta>): Promise<WsWorkunits.WUDetailsMetaResponse> {\r\n        return this._connection.send(\"WUDetailsMeta\", request, \"json\", false, undefined, \"WUDetailsMetaResponse\");\r\n    }\r\n\r\n    WUEclDefinitionAction(request: Partial<WsWorkunits.WUEclDefinitionAction>): Promise<WsWorkunits.WUEclDefinitionActionResponse> {\r\n        return this._connection.send(\"WUEclDefinitionAction\", request, \"json\", false, undefined, \"WUEclDefinitionActionResponse\");\r\n    }\r\n\r\n    WUExport(request: Partial<WsWorkunits.WUExport>): Promise<WsWorkunits.WUExportResponse> {\r\n        return this._connection.send(\"WUExport\", request, \"json\", false, undefined, \"WUExportResponse\");\r\n    }\r\n\r\n    WUFile(request: Partial<WsWorkunits.WUFile>): Promise<WsWorkunits.WULogFileResponse> {\r\n        return this._connection.send(\"WUFile\", request, \"json\", false, undefined, \"WULogFileResponse\");\r\n    }\r\n\r\n    WUFullResult(request: Partial<WsWorkunits.WUFullResult>): Promise<WsWorkunits.WUFullResultResponse> {\r\n        return this._connection.send(\"WUFullResult\", request, \"json\", false, undefined, \"WUFullResultResponse\");\r\n    }\r\n\r\n    WUGVCGraphInfo(request: Partial<WsWorkunits.WUGVCGraphInfo>): Promise<WsWorkunits.WUGVCGraphInfoResponse> {\r\n        return this._connection.send(\"WUGVCGraphInfo\", request, \"json\", false, undefined, \"WUGVCGraphInfoResponse\");\r\n    }\r\n\r\n    WUGetArchiveFile(request: Partial<WsWorkunits.WUGetArchiveFile>): Promise<WsWorkunits.WUGetArchiveFileResponse> {\r\n        return this._connection.send(\"WUGetArchiveFile\", request, \"json\", false, undefined, \"WUGetArchiveFileResponse\");\r\n    }\r\n\r\n    WUGetDependancyTrees(request: Partial<WsWorkunits.WUGetDependancyTrees>): Promise<WsWorkunits.WUGetDependancyTreesResponse> {\r\n        return this._connection.send(\"WUGetDependancyTrees\", request, \"json\", false, undefined, \"WUGetDependancyTreesResponse\");\r\n    }\r\n\r\n    WUGetGraph(request: Partial<WsWorkunits.WUGetGraph>): Promise<WsWorkunits.WUGetGraphResponse> {\r\n        return this._connection.send(\"WUGetGraph\", request, \"json\", false, undefined, \"WUGetGraphResponse\");\r\n    }\r\n\r\n    WUGetGraphNameAndTypes(request: Partial<WsWorkunits.WUGetGraphNameAndTypes>): Promise<WsWorkunits.WUGetGraphNameAndTypesResponse> {\r\n        return this._connection.send(\"WUGetGraphNameAndTypes\", request, \"json\", false, undefined, \"WUGetGraphNameAndTypesResponse\");\r\n    }\r\n\r\n    WUGetNumFileToCopy(request: Partial<WsWorkunits.WUGetNumFileToCopy>): Promise<WsWorkunits.WUGetNumFileToCopyResponse> {\r\n        return this._connection.send(\"WUGetNumFileToCopy\", request, \"json\", false, undefined, \"WUGetNumFileToCopyResponse\");\r\n    }\r\n\r\n    WUGetPlugins(request: Partial<WsWorkunits.WUGetPlugins>): Promise<WsWorkunits.WUGetPluginsResponse> {\r\n        return this._connection.send(\"WUGetPlugins\", request, \"json\", false, undefined, \"WUGetPluginsResponse\");\r\n    }\r\n\r\n    WUGetStats(request: Partial<WsWorkunits.WUGetStats>): Promise<WsWorkunits.WUGetStatsResponse> {\r\n        return this._connection.send(\"WUGetStats\", request, \"json\", false, undefined, \"WUGetStatsResponse\");\r\n    }\r\n\r\n    WUGetThorJobList(request: Partial<WsWorkunits.WUGetThorJobList>): Promise<WsWorkunits.WUGetThorJobListResponse> {\r\n        return this._connection.send(\"WUGetThorJobList\", request, \"json\", false, undefined, \"WUGetThorJobListResponse\");\r\n    }\r\n\r\n    WUGetThorJobQueue(request: Partial<WsWorkunits.WUGetThorJobQueue>): Promise<WsWorkunits.WUGetThorJobQueueResponse> {\r\n        return this._connection.send(\"WUGetThorJobQueue\", request, \"json\", false, undefined, \"WUGetThorJobQueueResponse\");\r\n    }\r\n\r\n    WUGetZAPInfo(request: Partial<WsWorkunits.WUGetZAPInfo>): Promise<WsWorkunits.WUGetZAPInfoResponse> {\r\n        return this._connection.send(\"WUGetZAPInfo\", request, \"json\", false, undefined, \"WUGetZAPInfoResponse\");\r\n    }\r\n\r\n    WUGraphInfo(request: Partial<WsWorkunits.WUGraphInfo>): Promise<WsWorkunits.WUGraphInfoResponse> {\r\n        return this._connection.send(\"WUGraphInfo\", request, \"json\", false, undefined, \"WUGraphInfoResponse\");\r\n    }\r\n\r\n    WUGraphTiming(request: Partial<WsWorkunits.WUGraphTiming>): Promise<WsWorkunits.WUGraphTimingResponse> {\r\n        return this._connection.send(\"WUGraphTiming\", request, \"json\", false, undefined, \"WUGraphTimingResponse\");\r\n    }\r\n\r\n    WUInfo(request: Partial<WsWorkunits.WUInfo>): Promise<WsWorkunits.WUInfoResponse> {\r\n        return this._connection.send(\"WUInfo\", request, \"json\", false, undefined, \"WUInfoResponse\");\r\n    }\r\n\r\n    WUInfoDetails(request: Partial<WsWorkunits.WUInfoDetails>): Promise<WsWorkunits.WUInfoResponse> {\r\n        return this._connection.send(\"WUInfoDetails\", request, \"json\", false, undefined, \"WUInfoResponse\");\r\n    }\r\n\r\n    WUJobList(request: Partial<WsWorkunits.WUJobList>): Promise<WsWorkunits.WUJobListResponse> {\r\n        return this._connection.send(\"WUJobList\", request, \"json\", false, undefined, \"WUJobListResponse\");\r\n    }\r\n\r\n    WULightWeightQuery(request: Partial<WsWorkunits.WULightWeightQuery>): Promise<WsWorkunits.WULightWeightQueryResponse> {\r\n        return this._connection.send(\"WULightWeightQuery\", request, \"json\", false, undefined, \"WULightWeightQueryResponse\");\r\n    }\r\n\r\n    WUListArchiveFiles(request: Partial<WsWorkunits.WUListArchiveFiles>): Promise<WsWorkunits.WUListArchiveFilesResponse> {\r\n        return this._connection.send(\"WUListArchiveFiles\", request, \"json\", false, undefined, \"WUListArchiveFilesResponse\");\r\n    }\r\n\r\n    WUListLocalFileRequired(request: Partial<WsWorkunits.WUListLocalFileRequired>): Promise<WsWorkunits.WUListLocalFileRequiredResponse> {\r\n        return this._connection.send(\"WUListLocalFileRequired\", request, \"json\", false, undefined, \"WUListLocalFileRequiredResponse\");\r\n    }\r\n\r\n    WUListQueries(request: Partial<WsWorkunits.WUListQueries>): Promise<WsWorkunits.WUListQueriesResponse> {\r\n        return this._connection.send(\"WUListQueries\", request, \"json\", false, undefined, \"WUListQueriesResponse\");\r\n    }\r\n\r\n    WUListQueriesUsingFile(request: Partial<WsWorkunits.WUListQueriesUsingFile>): Promise<WsWorkunits.WUListQueriesUsingFileResponse> {\r\n        return this._connection.send(\"WUListQueriesUsingFile\", request, \"json\", false, undefined, \"WUListQueriesUsingFileResponse\");\r\n    }\r\n\r\n    WUMultiQuerysetDetails(request: Partial<WsWorkunits.WUMultiQuerysetDetails>): Promise<WsWorkunits.WUMultiQuerySetDetailsResponse> {\r\n        return this._connection.send(\"WUMultiQuerysetDetails\", request, \"json\", false, undefined, \"WUMultiQuerySetDetailsResponse\");\r\n    }\r\n\r\n    WUProcessGraph(request: Partial<WsWorkunits.WUProcessGraph>): Promise<WsWorkunits.WUProcessGraphResponse> {\r\n        return this._connection.send(\"WUProcessGraph\", request, \"json\", false, undefined, \"WUProcessGraphResponse\");\r\n    }\r\n\r\n    WUProtect(request: Partial<WsWorkunits.WUProtect>): Promise<WsWorkunits.WUProtectResponse> {\r\n        return this._connection.send(\"WUProtect\", request, \"json\", false, undefined, \"WUProtectResponse\");\r\n    }\r\n\r\n    WUPublishWorkunit(request: Partial<WsWorkunits.WUPublishWorkunit>): Promise<WsWorkunits.WUPublishWorkunitResponse> {\r\n        return this._connection.send(\"WUPublishWorkunit\", request, \"json\", false, undefined, \"WUPublishWorkunitResponse\");\r\n    }\r\n\r\n    WUPushEvent(request: Partial<WsWorkunits.WUPushEvent>): Promise<WsWorkunits.WUPushEventResponse> {\r\n        return this._connection.send(\"WUPushEvent\", request, \"json\", false, undefined, \"WUPushEventResponse\");\r\n    }\r\n\r\n    WUQuery(request: Partial<WsWorkunits.WUQuery>): Promise<WsWorkunits.WUQueryResponse> {\r\n        return this._connection.send(\"WUQuery\", request, \"json\", false, undefined, \"WUQueryResponse\");\r\n    }\r\n\r\n    WUQueryConfig(request: Partial<WsWorkunits.WUQueryConfig>): Promise<WsWorkunits.WUQueryConfigResponse> {\r\n        return this._connection.send(\"WUQueryConfig\", request, \"json\", false, undefined, \"WUQueryConfigResponse\");\r\n    }\r\n\r\n    WUQueryDetails(request: Partial<WsWorkunits.WUQueryDetails>): Promise<WsWorkunits.WUQueryDetailsResponse> {\r\n        return this._connection.send(\"WUQueryDetails\", request, \"json\", false, undefined, \"WUQueryDetailsResponse\");\r\n    }\r\n\r\n    WUQueryDetailsLightWeight(request: Partial<WsWorkunits.WUQueryDetailsLightWeight>): Promise<WsWorkunits.WUQueryDetailsResponse> {\r\n        return this._connection.send(\"WUQueryDetailsLightWeight\", request, \"json\", false, undefined, \"WUQueryDetailsResponse\");\r\n    }\r\n\r\n    WUQueryFiles(request: Partial<WsWorkunits.WUQueryFiles>): Promise<WsWorkunits.WUQueryFilesResponse> {\r\n        return this._connection.send(\"WUQueryFiles\", request, \"json\", false, undefined, \"WUQueryFilesResponse\");\r\n    }\r\n\r\n    WUQueryGetGraph(request: Partial<WsWorkunits.WUQueryGetGraph>): Promise<WsWorkunits.WUQueryGetGraphResponse> {\r\n        return this._connection.send(\"WUQueryGetGraph\", request, \"json\", false, undefined, \"WUQueryGetGraphResponse\");\r\n    }\r\n\r\n    WUQueryGetSummaryStats(request: Partial<WsWorkunits.WUQueryGetSummaryStats>): Promise<WsWorkunits.WUQueryGetSummaryStatsResponse> {\r\n        return this._connection.send(\"WUQueryGetSummaryStats\", request, \"json\", false, undefined, \"WUQueryGetSummaryStatsResponse\");\r\n    }\r\n\r\n    WUQuerysetAliasAction(request: Partial<WsWorkunits.WUQuerysetAliasAction>): Promise<WsWorkunits.WUQuerySetAliasActionResponse> {\r\n        return this._connection.send(\"WUQuerysetAliasAction\", request, \"json\", false, undefined, \"WUQuerySetAliasActionResponse\");\r\n    }\r\n\r\n    WUQuerysetCopyQuery(request: Partial<WsWorkunits.WUQuerysetCopyQuery>): Promise<WsWorkunits.WUQuerySetCopyQueryResponse> {\r\n        return this._connection.send(\"WUQuerysetCopyQuery\", request, \"json\", false, undefined, \"WUQuerySetCopyQueryResponse\");\r\n    }\r\n\r\n    WUQuerysetDetails(request: Partial<WsWorkunits.WUQuerysetDetails>): Promise<WsWorkunits.WUQuerySetDetailsResponse> {\r\n        return this._connection.send(\"WUQuerysetDetails\", request, \"json\", false, undefined, \"WUQuerySetDetailsResponse\");\r\n    }\r\n\r\n    WUQuerysetExport(request: Partial<WsWorkunits.WUQuerysetExport>): Promise<WsWorkunits.WUQuerysetExportResponse> {\r\n        return this._connection.send(\"WUQuerysetExport\", request, \"json\", false, undefined, \"WUQuerysetExportResponse\");\r\n    }\r\n\r\n    WUQuerysetImport(request: Partial<WsWorkunits.WUQuerysetImport>): Promise<WsWorkunits.WUQuerysetImportResponse> {\r\n        return this._connection.send(\"WUQuerysetImport\", request, \"json\", false, undefined, \"WUQuerysetImportResponse\");\r\n    }\r\n\r\n    WUQuerysetQueryAction(request: Partial<WsWorkunits.WUQuerysetQueryAction>): Promise<WsWorkunits.WUQuerySetQueryActionResponse> {\r\n        return this._connection.send(\"WUQuerysetQueryAction\", request, \"json\", false, undefined, \"WUQuerySetQueryActionResponse\");\r\n    }\r\n\r\n    WUQuerysets(request: Partial<WsWorkunits.WUQuerysets>): Promise<WsWorkunits.WUQuerysetsResponse> {\r\n        return this._connection.send(\"WUQuerysets\", request, \"json\", false, undefined, \"WUQuerysetsResponse\");\r\n    }\r\n\r\n    WURecreateQuery(request: Partial<WsWorkunits.WURecreateQuery>): Promise<WsWorkunits.WURecreateQueryResponse> {\r\n        return this._connection.send(\"WURecreateQuery\", request, \"json\", false, undefined, \"WURecreateQueryResponse\");\r\n    }\r\n\r\n    WUResubmit(request: Partial<WsWorkunits.WUResubmit>): Promise<WsWorkunits.WUResubmitResponse> {\r\n        return this._connection.send(\"WUResubmit\", request, \"json\", false, undefined, \"WUResubmitResponse\");\r\n    }\r\n\r\n    WUResult(request: Partial<WsWorkunits.WUResult>): Promise<WsWorkunits.WUResultResponse> {\r\n        return this._connection.send(\"WUResult\", request, \"json\", false, undefined, \"WUResultResponse\");\r\n    }\r\n\r\n    WUResultBin(request: Partial<WsWorkunits.WUResultBin>): Promise<WsWorkunits.WUResultBinResponse> {\r\n        return this._connection.send(\"WUResultBin\", request, \"json\", false, undefined, \"WUResultBinResponse\");\r\n    }\r\n\r\n    WUResultSummary(request: Partial<WsWorkunits.WUResultSummary>): Promise<WsWorkunits.WUResultSummaryResponse> {\r\n        return this._connection.send(\"WUResultSummary\", request, \"json\", false, undefined, \"WUResultSummaryResponse\");\r\n    }\r\n\r\n    WUResultView(request: Partial<WsWorkunits.WUResultView>): Promise<WsWorkunits.WUResultViewResponse> {\r\n        return this._connection.send(\"WUResultView\", request, \"json\", false, undefined, \"WUResultViewResponse\");\r\n    }\r\n\r\n    WURun(request: Partial<WsWorkunits.WURun>): Promise<WsWorkunits.WURunResponse> {\r\n        return this._connection.send(\"WURun\", request, \"json\", false, undefined, \"WURunResponse\");\r\n    }\r\n\r\n    WUSchedule(request: Partial<WsWorkunits.WUSchedule>): Promise<WsWorkunits.WUScheduleResponse> {\r\n        return this._connection.send(\"WUSchedule\", request, \"json\", false, undefined, \"WUScheduleResponse\");\r\n    }\r\n\r\n    WUShowScheduled(request: Partial<WsWorkunits.WUShowScheduled>): Promise<WsWorkunits.WUShowScheduledResponse> {\r\n        return this._connection.send(\"WUShowScheduled\", request, \"json\", false, undefined, \"WUShowScheduledResponse\");\r\n    }\r\n\r\n    WUSubmit(request: Partial<WsWorkunits.WUSubmit>): Promise<WsWorkunits.WUSubmitResponse> {\r\n        return this._connection.send(\"WUSubmit\", request, \"json\", false, undefined, \"WUSubmitResponse\");\r\n    }\r\n\r\n    WUSyntaxCheckECL(request: Partial<WsWorkunits.WUSyntaxCheckECL>): Promise<WsWorkunits.WUSyntaxCheckResponse> {\r\n        return this._connection.send(\"WUSyntaxCheckECL\", request, \"json\", false, undefined, \"WUSyntaxCheckResponse\");\r\n    }\r\n\r\n    WUUpdate(request: Partial<WsWorkunits.WUUpdate>): Promise<WsWorkunits.WUUpdateResponse> {\r\n        return this._connection.send(\"WUUpdate\", request, \"json\", false, undefined, \"WUUpdateResponse\");\r\n    }\r\n\r\n    WUUpdateQueryEntry(request: Partial<WsWorkunits.WUUpdateQueryEntry>): Promise<WsWorkunits.WUUpdateQueryEntryResponse> {\r\n        return this._connection.send(\"WUUpdateQueryEntry\", request, \"json\", false, undefined, \"WUUpdateQueryEntryResponse\");\r\n    }\r\n\r\n    WUWaitCompiled(request: Partial<WsWorkunits.WUWaitCompiled>): Promise<WsWorkunits.WUWaitResponse> {\r\n        return this._connection.send(\"WUWaitCompiled\", request, \"json\", false, undefined, \"WUWaitResponse\");\r\n    }\r\n\r\n    WUWaitComplete(request: Partial<WsWorkunits.WUWaitComplete>): Promise<WsWorkunits.WUWaitResponse> {\r\n        return this._connection.send(\"WUWaitComplete\", request, \"json\", false, undefined, \"WUWaitResponse\");\r\n    }\r\n\r\n}\r\n", "import { debounce, StateObject } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { WsSMC, SMCService } from \"../services/wsSMC.ts\";\r\nimport { Workunit } from \"./workunit.ts\";\r\n\r\nlet _activity: Activity;\r\n\r\nexport interface ActivityEx {\r\n}\r\n\r\nexport type UActivityState = WsSMC.ActivityResponse & ActivityEx;\r\nexport type IActivityState = WsSMC.ActivityResponse | ActivityEx;\r\nexport class Activity extends StateObject<UActivityState, IActivityState> implements UActivityState {\r\n    protected connection: SMCService;\r\n\r\n    get properties(): UActivityState { return this.get(); }\r\n    get Exceptions(): WsSMC.Exceptions { return this.get(\"Exceptions\"); }\r\n    get Build(): string { return this.get(\"Build\"); }\r\n    get ThorClusterList(): WsSMC.ThorClusterList { return this.get(\"ThorClusterList\"); }\r\n    get RoxieClusterList(): WsSMC.RoxieClusterList { return this.get(\"RoxieClusterList\"); }\r\n    get HThorClusterList(): WsSMC.HThorClusterList { return this.get(\"HThorClusterList\"); }\r\n    get DFUJobs(): WsSMC.DFUJobs { return this.get(\"DFUJobs\"); }\r\n    get Running(): WsSMC.Running { return this.get(\"Running\", { ActiveWorkunit: [] }); }\r\n    get BannerContent(): string { return this.get(\"BannerContent\"); }\r\n    get BannerColor(): string { return this.get(\"BannerColor\"); }\r\n    get BannerSize(): string { return this.get(\"BannerSize\"); }\r\n    get BannerScroll(): string { return this.get(\"BannerScroll\"); }\r\n    get ChatURL(): string { return this.get(\"ChatURL\"); }\r\n    get ShowBanner(): number { return this.get(\"ShowBanner\"); }\r\n    get ShowChatURL(): number { return this.get(\"ShowChatURL\"); }\r\n    get SortBy(): string { return this.get(\"SortBy\"); }\r\n    get Descending(): boolean { return this.get(\"Descending\"); }\r\n    get SuperUser(): boolean { return this.get(\"SuperUser\"); }\r\n    get AccessRight(): string { return this.get(\"AccessRight\"); }\r\n    get ServerJobQueues(): WsSMC.ServerJobQueues { return this.get(\"ServerJobQueues\"); }\r\n    get ActivityTime(): string { return this.get(\"ActivityTime\"); }\r\n    get DaliDetached(): boolean { return this.get(\"DaliDetached\"); }\r\n\r\n    static attach(optsConnection: IOptions | IConnection | SMCService, state?: IActivityState): Activity {\r\n        if (!_activity) {\r\n            _activity = new Activity(optsConnection);\r\n        }\r\n        if (state) {\r\n            _activity.set(state);\r\n        }\r\n        return _activity;\r\n    }\r\n\r\n    protected constructor(optsConnection: IOptions | IConnection | SMCService) {\r\n        super();\r\n        if (optsConnection instanceof SMCService) {\r\n            this.connection = optsConnection;\r\n        } else {\r\n            this.connection = new SMCService(optsConnection);\r\n        }\r\n        this.clear({\r\n        });\r\n    }\r\n\r\n    runningWorkunits(clusterName: string = \"\"): Workunit[] {\r\n        return this.Running.ActiveWorkunit.filter(awu => clusterName === \"\" || awu.ClusterName === clusterName).map(awu => Workunit.attach(this.connection.connectionOptions(), awu.Wuid, awu));\r\n    }\r\n\r\n    setBanner(request: Partial<WsSMC.SetBanner>): Promise<Activity> {\r\n        return this.connection.SetBanner({\r\n            ...request\r\n        } as WsSMC.SetBanner).then((response) => {\r\n            this.set(response);\r\n            return this;\r\n        });\r\n    }\r\n\r\n    lazyRefresh = debounce(async (): Promise<this> => {\r\n        const response = await this.connection.Activity({} as WsSMC.Activity);\r\n        this.set(response);\r\n        return this;\r\n    });\r\n\r\n    async refresh(): Promise<this> {\r\n        return this.lazyRefresh();\r\n    }\r\n}\r\n", "import { Cache, deepMixinT, IEvent, RecursivePartial, scopedLogger, StateCallback, StateEvents, StateObject, StatePropCallback, StringAnyMap, XMLNode } from \"@hpcc-js/util\";\r\nimport { format as d3Format } from \"d3-format\";\r\nimport { utcFormat, utcParse } from \"d3-time-format\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { ESPExceptions } from \"../espConnection.ts\";\r\nimport { WsSMC } from \"../services/wsSMC.ts\";\r\nimport * as WsTopology from \"../services/wsTopology.ts\";\r\nimport { WsWorkunits, WUStateID, WorkunitsService, WorkunitsServiceEx, WUUpdate } from \"../services/wsWorkunits.ts\";\r\nimport { createGraph, createXGMMLGraph, ECLGraph, GraphCache, ScopeGraph, XGMMLGraph, XGMMLVertex } from \"./graph.ts\";\r\nimport { Resource } from \"./resource.ts\";\r\nimport { Result, ResultCache } from \"./result.ts\";\r\nimport { BaseScope, Scope } from \"./scope.ts\";\r\nimport { SourceFile } from \"./sourceFile.ts\";\r\nimport { Timer } from \"./timer.ts\";\r\n\r\nconst formatter = utcFormat(\"%Y-%m-%dT%H:%M:%S.%LZ\");\r\nconst parser = utcParse(\"%Y-%m-%dT%H:%M:%S.%LZ\");\r\nconst d3FormatNum = d3Format(\",\");\r\nfunction formatNum(num: number | string): string {\r\n    if (num && !isNaN(+num)) {\r\n        return d3FormatNum(+num);\r\n    }\r\n    return num as string;\r\n}\r\n\r\nfunction safeDelete(obj: { [id: string]: any; }, key: string, prop: string) {\r\n    if (obj[key] === undefined || obj[key][prop] === undefined) return;\r\n    if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") return;\r\n    delete obj[key][prop];\r\n}\r\n\r\nconst DEFINITION_LIST = \"DefinitionList\";\r\nconst definitionRegex = /([a-zA-Z]:)?(.*[\\\\\\/])(.*)(\\((\\d+),(\\d+)\\))/;\r\n\r\nexport const PropertyType = [\"Avg\", \"Min\", \"Max\", \"Delta\", \"StdDev\"];\r\nexport const RelatedProperty = [\"SkewMin\", \"SkewMax\", \"NodeMin\", \"NodeMax\"];\r\n\r\nexport interface IPropertyValue {\r\n    Key: string;\r\n    Value?: string;\r\n\r\n    //  Extended properties  ---\r\n    Avg?: string;\r\n    Min?: string;\r\n    Max?: string;\r\n    Delta?: string;\r\n    StdDev?: string;\r\n    StdDevs?: number;\r\n\r\n    // Related properties  ---\r\n    SkewMin?: string;\r\n    SkewMax?: string;\r\n    NodeMin?: string;\r\n    NodeMax?: string;\r\n}\r\n\r\nexport interface IScope {\r\n    __parentName?: string;\r\n    __children?: IScope[];\r\n    __formattedProps: { [key: string]: any };\r\n    __groupedProps: { [key: string]: IPropertyValue };\r\n    __StdDevs: number,\r\n    __StdDevsSource: string,\r\n    id: string;\r\n    name: string;\r\n    type: string;\r\n    Kind: string;\r\n    Label: string;\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface ISplitMetric {\r\n    measure: string;\r\n    ext: string;\r\n    label: string;\r\n}\r\n\r\nconst metricKeyRegex = /[A-Z][a-z]*/g;\r\nfunction _splitMetric(fullLabel: string): ISplitMetric {\r\n\r\n    // Related properties  ---\r\n    for (const relProp of RelatedProperty) {\r\n        const index = fullLabel.indexOf(relProp);\r\n        if (index === 0) {\r\n            const measure = \"\";\r\n            const label = fullLabel.slice(index + relProp.length);\r\n            return { measure, ext: relProp, label };\r\n        }\r\n    }\r\n\r\n    // Primary properties  ---\r\n    const labelParts = fullLabel.match(metricKeyRegex);\r\n    if (labelParts?.length) {\r\n        const measure = labelParts.shift();\r\n        let label = labelParts.join(\"\");\r\n        for (const ext of PropertyType) {\r\n            const index = label.indexOf(ext);\r\n            if (index === 0) {\r\n                label = label.slice(index + ext.length);\r\n                return { measure, ext, label };\r\n            }\r\n        }\r\n        // Not an aggregate property  ---\r\n        return { measure, ext: \"\", label };\r\n    }\r\n\r\n    // No match found  ---\r\n    return { measure: \"\", ext: \"\", label: fullLabel };\r\n}\r\n\r\nconst splitLabelCache: { [key: string]: ISplitMetric } = {};\r\nexport function splitMetric(key: string): ISplitMetric {\r\n    let retVal = splitLabelCache[key];\r\n    if (!retVal) {\r\n        retVal = _splitMetric(key);\r\n        splitLabelCache[key] = retVal;\r\n    }\r\n    return retVal;\r\n}\r\n\r\nfunction formatValue(item: IScope, key: string): string | undefined {\r\n    return item.__formattedProps?.[key] ?? item[key];\r\n}\r\n\r\ntype DedupProperties = { [key: string]: boolean };\r\n\r\nfunction safeParseFloat(val: string | undefined): number | undefined {\r\n    if (val === undefined) return undefined;\r\n    const retVal = parseFloat(val);\r\n    return isNaN(retVal) ? undefined : retVal;\r\n}\r\n\r\nfunction formatValues(item: IScope, key: string, dedup: DedupProperties): IPropertyValue | null {\r\n    const keyParts = splitMetric(key);\r\n    if (!dedup[keyParts.measure]) {\r\n        dedup[keyParts.label] = true;\r\n        const avg = safeParseFloat(item[`${keyParts.measure}Avg${keyParts.label}`]);\r\n        const min = safeParseFloat(item[`${keyParts.measure}Min${keyParts.label}`]);\r\n        const max = safeParseFloat(item[`${keyParts.measure}Max${keyParts.label}`]);\r\n        const stdDev = safeParseFloat(item[`${keyParts.measure}StdDev${keyParts.label}`]);\r\n        const StdDevs = Math.max((avg - min) / stdDev, (max - avg) / stdDev);\r\n\r\n        return {\r\n            Key: `${keyParts.measure}${keyParts.label}`,\r\n            Value: formatValue(item, `${keyParts.measure}${keyParts.label}`),\r\n\r\n            //  Extended properties  ---\r\n            Avg: formatValue(item, `${keyParts.measure}Avg${keyParts.label}`),\r\n            Min: formatValue(item, `${keyParts.measure}Min${keyParts.label}`),\r\n            Max: formatValue(item, `${keyParts.measure}Max${keyParts.label}`),\r\n            Delta: formatValue(item, `${keyParts.measure}Delta${keyParts.label}`),\r\n            StdDev: formatValue(item, `${keyParts.measure}StdDev${keyParts.label}`),\r\n            StdDevs: isNaN(StdDevs) ? undefined : StdDevs,\r\n\r\n            // Related properties  ---\r\n            SkewMin: formatValue(item, `SkewMin${keyParts.label}`),\r\n            SkewMax: formatValue(item, `SkewMax${keyParts.label}`),\r\n            NodeMin: formatValue(item, `NodeMin${keyParts.label}`),\r\n            NodeMax: formatValue(item, `NodeMax${keyParts.label}`)\r\n        };\r\n    }\r\n    return null;\r\n}\r\n\r\nconst logger = scopedLogger(\"workunit.ts\");\r\n\r\nexport class WorkunitCache extends Cache<{ BaseUrl: string, Wuid: string }, Workunit> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return `${obj.BaseUrl}-${obj.Wuid}`;\r\n        });\r\n    }\r\n}\r\nconst _workunits = new WorkunitCache();\r\n\r\nexport interface DebugState {\r\n    sequence: number;\r\n    state: string;\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface IWorkunit {\r\n    ResultViews: WsWorkunits.ResultViews;\r\n    HelpersCount: number;\r\n}\r\n\r\nexport interface IDebugWorkunit {\r\n    DebugState?: DebugState;\r\n}\r\n\r\nexport interface ITimeElapsed {\r\n    scope: string;\r\n    start: string;\r\n    elapsed: number;\r\n    finish: string;\r\n}\r\n\r\nexport type WorkunitEvents = \"completed\" | StateEvents;\r\nexport type UWorkunitState = WsWorkunits.ECLWorkunit & WsWorkunits.Workunit & WsSMC.ActiveWorkunit & IWorkunit & IDebugWorkunit;\r\nexport type IWorkunitState = WsWorkunits.ECLWorkunit | WsWorkunits.Workunit | WsSMC.ActiveWorkunit | IWorkunit | IDebugWorkunit;\r\nexport class Workunit extends StateObject<UWorkunitState, IWorkunitState> implements WsWorkunits.Workunit {\r\n    connection: WorkunitsService;\r\n    topologyConnection: WsTopology.TopologyService;\r\n    get BaseUrl() { return this.connection.baseUrl; }\r\n\r\n    private _debugMode: boolean = false;\r\n    private _debugAllGraph: any;\r\n    private _submitAction: WUUpdate.Action;\r\n\r\n    //  Accessors  ---\r\n    get properties(): WsWorkunits.ECLWorkunit & WsWorkunits.Workunit { return this.get(); }\r\n    get Wuid(): string { return this.get(\"Wuid\"); }\r\n    get Owner(): string { return this.get(\"Owner\", \"\"); }\r\n    get Cluster(): string { return this.get(\"Cluster\", \"\"); }\r\n    get Jobname(): string { return this.get(\"Jobname\", \"\"); }\r\n    get Description(): string { return this.get(\"Description\", \"\"); }\r\n    get ActionEx(): string { return this.get(\"ActionEx\", \"\"); }\r\n    get StateID(): WUStateID { return this.get(\"StateID\", WUStateID.Unknown); }\r\n    get State(): string { return this.get(\"State\") || WUStateID[this.StateID]; }\r\n    get Protected(): boolean { return this.get(\"Protected\", false); }\r\n    get Exceptions(): WsWorkunits.Exceptions2 { return this.get(\"Exceptions\", { ECLException: [] }); }\r\n    get ResultViews(): WsWorkunits.ResultViews { return this.get(\"ResultViews\", { View: [] }); }\r\n\r\n    private _resultCache = new ResultCache();\r\n    get ResultCount(): number { return this.get(\"ResultCount\", 0); }\r\n    get Results(): WsWorkunits.Results { return this.get(\"Results\", { ECLResult: [] }); }\r\n    get CResults(): Result[] {\r\n        return this.Results.ECLResult.map((eclResult) => {\r\n            return this._resultCache.get(eclResult, () => {\r\n                return Result.attach(this.connection, this.Wuid, eclResult, this.ResultViews.View);\r\n            });\r\n        });\r\n    }\r\n    get SequenceResults(): { [key: number]: Result } {\r\n        const retVal: { [key: number]: Result } = {};\r\n        this.CResults.forEach((result) => {\r\n            retVal[result.Sequence] = result;\r\n        });\r\n        return retVal;\r\n    }\r\n    get Timers(): WsWorkunits.Timers { return this.get(\"Timers\", { ECLTimer: [] }); }\r\n    get CTimers(): Timer[] {\r\n        return this.Timers.ECLTimer.map((eclTimer) => {\r\n            return new Timer(this.connection, this.Wuid, eclTimer);\r\n        });\r\n    }\r\n\r\n    private _graphCache = new GraphCache();\r\n    get GraphCount(): number { return this.get(\"GraphCount\", 0); }\r\n    get Graphs(): WsWorkunits.Graphs { return this.get(\"Graphs\", { ECLGraph: [] }); }\r\n    get CGraphs(): ECLGraph[] {\r\n        return this.Graphs.ECLGraph.map((eclGraph) => {\r\n            return this._graphCache.get(eclGraph, () => {\r\n                return new ECLGraph(this, eclGraph, this.CTimers);\r\n            });\r\n        });\r\n    }\r\n    get ThorLogList(): WsWorkunits.ThorLogList { return this.get(\"ThorLogList\"); }\r\n    get ResourceURLCount(): number { return this.get(\"ResourceURLCount\", 0); }\r\n    get ResourceURLs(): WsWorkunits.ResourceURLs { return this.get(\"ResourceURLs\", { URL: [] }); }\r\n    get CResourceURLs(): Resource[] {\r\n        return this.ResourceURLs.URL.map((url) => {\r\n            return new Resource(this, url);\r\n        });\r\n    }\r\n    get TotalClusterTime(): string { return this.get(\"TotalClusterTime\", \"\"); }\r\n    get DateTimeScheduled(): string { return this.get(\"DateTimeScheduled\"); }\r\n    get IsPausing(): boolean { return this.get(\"IsPausing\"); }\r\n    get ThorLCR(): boolean { return this.get(\"ThorLCR\"); }\r\n    get ApplicationValues(): WsWorkunits.ApplicationValues { return this.get(\"ApplicationValues\", { ApplicationValue: [] }); }\r\n    get HasArchiveQuery(): boolean { return this.get(\"HasArchiveQuery\"); }\r\n    get StateEx(): string { return this.get(\"StateEx\"); }\r\n    get PriorityClass(): number { return this.get(\"PriorityClass\"); }\r\n    get PriorityLevel(): number { return this.get(\"PriorityLevel\"); }\r\n    get Snapshot(): string { return this.get(\"Snapshot\"); }\r\n    get ResultLimit(): number { return this.get(\"ResultLimit\"); }\r\n    get EventSchedule(): number { return this.get(\"EventSchedule\"); }\r\n    get Query(): WsWorkunits.Query { return this.get(\"Query\"); }\r\n    get HelpersCount(): number { return this.get(\"HelpersCount\", 0); }\r\n    get Helpers(): WsWorkunits.Helpers { return this.get(\"Helpers\", { ECLHelpFile: [] }); }\r\n    get DebugValues(): WsWorkunits.DebugValues { return this.get(\"DebugValues\"); }\r\n    get AllowedClusters(): WsWorkunits.AllowedClusters { return this.get(\"AllowedClusters\"); }\r\n    get ErrorCount(): number { return this.get(\"ErrorCount\", 0); }\r\n    get WarningCount(): number { return this.get(\"WarningCount\", 0); }\r\n    get InfoCount(): number { return this.get(\"InfoCount\", 0); }\r\n    get AlertCount(): number { return this.get(\"AlertCount\", 0); }\r\n    get SourceFileCount(): number { return this.get(\"SourceFileCount\", 0); }\r\n    get SourceFiles(): WsWorkunits.SourceFiles { return this.get(\"SourceFiles\", { ECLSourceFile: [] }); }\r\n    get CSourceFiles(): SourceFile[] {\r\n        return this.SourceFiles.ECLSourceFile.map(eclSourceFile => new SourceFile(this.connection, this.Wuid, eclSourceFile));\r\n    }\r\n    get VariableCount(): number { return this.get(\"VariableCount\", 0); }\r\n    get Variables(): WsWorkunits.Variables { return this.get(\"Variables\", { ECLResult: [] }); }\r\n    get TimerCount(): number { return this.get(\"TimerCount\", 0); }\r\n    get HasDebugValue(): boolean { return this.get(\"HasDebugValue\"); }\r\n    get ApplicationValueCount(): number { return this.get(\"ApplicationValueCount\", 0); }\r\n    get XmlParams(): string { return this.get(\"XmlParams\"); }\r\n    get AccessFlag(): number { return this.get(\"AccessFlag\"); }\r\n    get ClusterFlag(): number { return this.get(\"ClusterFlag\"); }\r\n    get ResultViewCount(): number { return this.get(\"ResultViewCount\", 0); }\r\n    get DebugValueCount(): number { return this.get(\"DebugValueCount\", 0); }\r\n    get WorkflowCount(): number { return this.get(\"WorkflowCount\", 0); }\r\n    get Archived(): boolean { return this.get(\"Archived\"); }\r\n    get RoxieCluster(): string { return this.get(\"RoxieCluster\"); }\r\n    get DebugState(): DebugState { return this.get(\"DebugState\", {} as DebugState)!; }\r\n    get Queue(): string { return this.get(\"Queue\"); }\r\n    get Active(): boolean { return this.get(\"Active\"); }\r\n    get Action(): number { return this.get(\"Action\"); }\r\n    get Scope(): string { return this.get(\"Scope\"); }\r\n    get AbortBy(): string { return this.get(\"AbortBy\"); }\r\n    get AbortTime(): string { return this.get(\"AbortTime\"); }\r\n    get Workflows(): WsWorkunits.Workflows { return this.get(\"Workflows\"); }\r\n    get TimingData(): WsWorkunits.TimingData { return this.get(\"TimingData\"); }\r\n    get HelpersDesc(): string { return this.get(\"HelpersDesc\"); }\r\n    get GraphsDesc(): string { return this.get(\"GraphsDesc\"); }\r\n    get SourceFilesDesc(): string { return this.get(\"SourceFilesDesc\"); }\r\n    get ResultsDesc(): string { return this.get(\"ResultsDesc\"); }\r\n    get VariablesDesc(): string { return this.get(\"VariablesDesc\"); }\r\n    get TimersDesc(): string { return this.get(\"TimersDesc\"); }\r\n    get DebugValuesDesc(): string { return this.get(\"DebugValuesDesc\"); }\r\n    get ApplicationValuesDesc(): string { return this.get(\"ApplicationValuesDesc\"); }\r\n    get WorkflowsDesc(): string { return this.get(\"WorkflowsDesc\"); }\r\n    get ServiceNames(): WsWorkunits.ServiceNames { return this.get(\"ServiceNames\"); }\r\n    get CompileCost(): number { return this.get(\"CompileCost\"); }\r\n    get ExecuteCost(): number { return this.get(\"ExecuteCost\"); }\r\n    get FileAccessCost(): number { return this.get(\"FileAccessCost\"); }\r\n    get NoAccess(): boolean { return this.get(\"NoAccess\"); }\r\n    get ECLWUProcessList(): WsWorkunits.ECLWUProcessList { return this.get(\"ECLWUProcessList\"); }\r\n    get CostSavingPotential(): number { return this.get(\"CostSavingPotential\"); }\r\n\r\n    //  Factories  ---\r\n    static create(optsConnection: IOptions | IConnection): Promise<Workunit> {\r\n        const retVal: Workunit = new Workunit(optsConnection);\r\n        return retVal.connection.WUCreate().then((response) => {\r\n            _workunits.set(retVal);\r\n            retVal.set(response.Workunit);\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    static attach(optsConnection: IOptions | IConnection, wuid: string, state?: IWorkunitState): Workunit {\r\n        const retVal: Workunit = _workunits.get({ BaseUrl: optsConnection.baseUrl, Wuid: wuid }, () => {\r\n            return new Workunit(optsConnection, wuid);\r\n        });\r\n        if (state) {\r\n            retVal.set(state);\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    static existsLocal(baseUrl: string, wuid: string): boolean {\r\n        return _workunits.has({ BaseUrl: baseUrl, Wuid: wuid });\r\n    }\r\n\r\n    static submit(server: IOptions | IConnection, target: string, ecl: string, compileOnly = false): Promise<Workunit> {\r\n        return Workunit.create(server).then((wu) => {\r\n            return wu.update({ QueryText: ecl });\r\n        }).then((wu) => {\r\n            return compileOnly ? wu.submit(target, WUUpdate.Action.Compile) : wu.submit(target);\r\n        });\r\n    }\r\n\r\n    static compile(server: IOptions | IConnection, target: string, ecl: string): Promise<Workunit> {\r\n        return Workunit.submit(server, target, ecl, true);\r\n    }\r\n\r\n    static query(server: IOptions | IConnection, opts: Partial<WsWorkunits.WUQuery>): Promise<Workunit[]> {\r\n        const wsWorkunits = new WorkunitsService(server);\r\n        return wsWorkunits.WUQuery(opts).then((response) => {\r\n            return response.Workunits.ECLWorkunit.map(function (wu) {\r\n                return Workunit.attach(server, wu.Wuid, wu);\r\n            });\r\n        });\r\n    }\r\n\r\n    //  ---  ---  ---\r\n    protected constructor(optsConnection: IOptions | IConnection, wuid?: string) {\r\n        super();\r\n        this.connection = new WorkunitsService(optsConnection);\r\n        this.topologyConnection = new WsTopology.TopologyService(optsConnection);\r\n        this.clearState(wuid);\r\n    }\r\n\r\n    clearState(wuid?: string) {\r\n        this.clear({\r\n            Wuid: wuid,\r\n            StateID: WUStateID.Unknown\r\n        });\r\n    }\r\n\r\n    update(request: Partial<WsWorkunits.WUUpdate>): Promise<Workunit> {\r\n        return this.connection.WUUpdate({\r\n            ...request,\r\n            ...{\r\n                Wuid: this.Wuid,\r\n                StateOrig: this.StateID,\r\n                JobnameOrig: this.Jobname,\r\n                DescriptionOrig: this.Description,\r\n                ProtectedOrig: this.Protected,\r\n                ClusterOrig: this.Cluster\r\n            }\r\n        }).then((response) => {\r\n            this.set(response.Workunit);\r\n            return this;\r\n        });\r\n    }\r\n\r\n    submit(_cluster?: string, action: WUUpdate.Action = WUUpdate.Action.Run, resultLimit?: number): Promise<Workunit> {\r\n        let clusterPromise;\r\n        if (_cluster !== void 0) {\r\n            clusterPromise = Promise.resolve(_cluster);\r\n        } else {\r\n            clusterPromise = this.topologyConnection.DefaultTpLogicalClusterQuery().then((response) => {\r\n                return response.Name;\r\n            });\r\n        }\r\n\r\n        this._debugMode = false;\r\n        if (action === WUUpdate.Action.Debug) {\r\n            action = WUUpdate.Action.Run;\r\n            this._debugMode = true;\r\n        }\r\n\r\n        return clusterPromise.then((cluster) => {\r\n            return this.connection.WUUpdate({\r\n                Wuid: this.Wuid,\r\n                Action: action,\r\n                ResultLimit: resultLimit,\r\n                DebugValues: {\r\n                    DebugValue: [\r\n                        {\r\n                            Name: \"Debug\",\r\n                            Value: this._debugMode ? \"1\" : \"\"\r\n                        }\r\n                    ]\r\n                }\r\n            }).then((response) => {\r\n                this.set(response.Workunit);\r\n                this._submitAction = action;\r\n                return this.connection.WUSubmit({ Wuid: this.Wuid, Cluster: cluster });\r\n            });\r\n        }).then(() => {\r\n            return this;\r\n        });\r\n    }\r\n\r\n    isComplete(): boolean {\r\n        switch (this.StateID) {\r\n            case WUStateID.Compiled:\r\n                return this.ActionEx === \"compile\" || this._submitAction === WUUpdate.Action.Compile;\r\n            case WUStateID.Completed:\r\n            case WUStateID.Failed:\r\n            case WUStateID.Aborted:\r\n            case WUStateID.NotFound:\r\n                return true;\r\n            default:\r\n        }\r\n        return false;\r\n    }\r\n\r\n    isFailed() {\r\n        switch (this.StateID) {\r\n            case WUStateID.Aborted:\r\n            case WUStateID.Failed:\r\n                return true;\r\n            default:\r\n        }\r\n        return false;\r\n    }\r\n\r\n    isDeleted() {\r\n        switch (this.StateID) {\r\n            case WUStateID.NotFound:\r\n                return true;\r\n            default:\r\n        }\r\n        return false;\r\n    }\r\n\r\n    isDebugging() {\r\n        switch (this.StateID) {\r\n            case WUStateID.DebugPaused:\r\n            case WUStateID.DebugRunning:\r\n                return true;\r\n            default:\r\n        }\r\n        return this._debugMode;\r\n    }\r\n\r\n    isRunning(): boolean {\r\n        switch (this.StateID) {\r\n            case WUStateID.Compiled:\r\n            case WUStateID.Running:\r\n            case WUStateID.Aborting:\r\n            case WUStateID.Blocked:\r\n            case WUStateID.DebugPaused:\r\n            case WUStateID.DebugRunning:\r\n                return true;\r\n            default:\r\n        }\r\n        return false;\r\n    }\r\n\r\n    setToFailed() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.SetToFailed);\r\n    }\r\n\r\n    pause() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Pause);\r\n    }\r\n\r\n    pauseNow() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.PauseNow);\r\n    }\r\n\r\n    resume() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Resume);\r\n    }\r\n\r\n    abort() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Abort);\r\n    }\r\n\r\n    protect() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Protect);\r\n    }\r\n\r\n    unprotect() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Unprotect);\r\n    }\r\n\r\n    delete() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Delete);\r\n    }\r\n\r\n    restore() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Restore);\r\n    }\r\n\r\n    deschedule() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Deschedule);\r\n    }\r\n\r\n    reschedule() {\r\n        return this.WUAction(WsWorkunits.ECLWUActions.Reschedule);\r\n    }\r\n\r\n    resubmit(): Promise<Workunit> {\r\n        return this.WUResubmit({\r\n            CloneWorkunit: false,\r\n            ResetWorkflow: false\r\n        }).then(() => {\r\n            this.clearState(this.Wuid);\r\n            return this.refresh().then(() => {\r\n                this._monitor();\r\n                return this;\r\n            });\r\n        });\r\n    }\r\n\r\n    clone(): Promise<Workunit> {\r\n        return this.WUResubmit({\r\n            CloneWorkunit: true,\r\n            ResetWorkflow: false\r\n        }).then((response) => {\r\n            return Workunit.attach(this.connection.opts(), response.WUs.WU[0].WUID)\r\n                .refresh()\r\n                ;\r\n        });\r\n    }\r\n\r\n    async refreshState(): Promise<this> {\r\n        await this.WUQuery();\r\n        // Ensure \"isComplete\" is correct for WUs that are only \"Compiled\".\r\n        if (this.StateID === WUStateID.Compiled && !this.ActionEx && !this._submitAction) {\r\n            await this.refreshInfo();\r\n        }\r\n        return this;\r\n    }\r\n\r\n    async refreshInfo(request?: Partial<WsWorkunits.WUInfo>): Promise<this> {\r\n        await this.WUInfo(request);\r\n        return this;\r\n    }\r\n\r\n    async refreshDebug(): Promise<this> {\r\n        await this.debugStatus();\r\n        return this;\r\n    }\r\n\r\n    async refresh(full: boolean = false, request?: Partial<WsWorkunits.WUInfo>): Promise<this> {\r\n        if (full) {\r\n            await Promise.all([this.refreshInfo(request), this.refreshDebug()]);\r\n        } else {\r\n            await this.refreshState();\r\n        }\r\n        return this;\r\n    }\r\n\r\n    eclExceptions(): WsWorkunits.ECLException[] {\r\n        return this.Exceptions.ECLException;\r\n    }\r\n\r\n    fetchArchive(): Promise<string> {\r\n        return this.connection.WUFileEx({\r\n            Wuid: this.Wuid,\r\n            Type: \"ArchiveQuery\"\r\n        });\r\n    }\r\n\r\n    fetchECLExceptions(): Promise<WsWorkunits.ECLException[]> {\r\n        return this.WUInfo({ IncludeExceptions: true }).then(() => {\r\n            return this.eclExceptions();\r\n        });\r\n    }\r\n\r\n    fetchResults(): Promise<Result[]> {\r\n        return this.WUInfo({ IncludeResults: true }).then(() => {\r\n            return this.CResults;\r\n        });\r\n    }\r\n\r\n    fetchGraphs(): Promise<ECLGraph[]> {\r\n        return this.WUInfo({ IncludeGraphs: true }).then(() => {\r\n            return this.CGraphs;\r\n        });\r\n    }\r\n\r\n    fetchQuery(): Promise<WsWorkunits.Query> {\r\n        return this.WUInfo({ IncludeECL: true, TruncateEclTo64k: false }).then(() => {\r\n            return this.Query;\r\n        });\r\n    }\r\n\r\n    fetchHelpers(): Promise<WsWorkunits.ECLHelpFile[]> {\r\n        return this.WUInfo({ IncludeHelpers: true }).then(() => {\r\n            return this.Helpers?.ECLHelpFile || [];\r\n        });\r\n    }\r\n\r\n    fetchAllowedClusters(): Promise<string[]> {\r\n        return this.WUInfo({ IncludeAllowedClusters: true }).then(() => {\r\n            return this.AllowedClusters?.AllowedCluster || [];\r\n        });\r\n    }\r\n\r\n    fetchTotalClusterTime(): Promise<string> {\r\n        return this.WUInfo({ IncludeTotalClusterTime: true }).then(() => {\r\n            return this.TotalClusterTime;\r\n        });\r\n    }\r\n\r\n    fetchServiceNames(): Promise<string[]> {\r\n        return this.WUInfo({ IncludeServiceNames: true }).then(() => {\r\n            return this.ServiceNames?.Item;\r\n        });\r\n    }\r\n\r\n    fetchDetailsMeta(request: RecursivePartial<WsWorkunits.WUDetailsMeta> = {}): Promise<WsWorkunits.WUDetailsMetaResponse> {\r\n        return this.WUDetailsMeta(request);\r\n    }\r\n\r\n    fetchDetailsRaw(request: RecursivePartial<WsWorkunits.WUDetails> = {}): Promise<WsWorkunits.Scope[]> {\r\n        return this.WUDetails(request).then(response => response.Scopes.Scope);\r\n    }\r\n\r\n    normalizeDetails(meta: WsWorkunits.WUDetailsMetaResponse, scopes: WsWorkunits.Scope[]): { meta: WsWorkunits.WUDetailsMetaResponse, columns: { [id: string]: any }, data: IScope[] } {\r\n        const columns: { [id: string]: any } = {\r\n            id: {\r\n                Measure: \"label\"\r\n            },\r\n            name: {\r\n                Measure: \"label\"\r\n            },\r\n            type: {\r\n                Measure: \"label\"\r\n            }\r\n        };\r\n        const activityMap = new Map<number, string>();\r\n        for (const activity of meta.Activities?.Activity ?? []) {\r\n            activityMap.set(activity.Kind, activity.Name);\r\n        }\r\n        const data: IScope[] = new Array(scopes.length);\r\n        for (let i = 0; i < scopes.length; i++) {\r\n            const scope = scopes[i];\r\n            const props: { [key: string]: any } = {};\r\n            const formattedProps: { [key: string]: any } = {};\r\n            if (scope.Id && scope.Properties?.Property) {\r\n                for (const scopeProperty of scope.Properties.Property) {\r\n                    const measure = scopeProperty.Measure;\r\n                    const name = scopeProperty.Name;\r\n                    const rawValue = scopeProperty.RawValue;\r\n                    if (measure === \"ns\") {\r\n                        scopeProperty.Measure = \"s\";\r\n                    }\r\n                    if (name === \"Kind\") {\r\n                        const rawValueInt = parseInt(rawValue, 10);\r\n                        scopeProperty.Formatted = activityMap.get(rawValueInt) ?? rawValue;\r\n                    }\r\n                    columns[name] = {\r\n                        Name: scopeProperty.Name,\r\n                        Measure: scopeProperty.Measure,\r\n                        Creator: scopeProperty.Creator,\r\n                        CreatorType: scopeProperty.CreatorType\r\n                    };\r\n                    switch (scopeProperty.Measure) {\r\n                        case \"bool\":\r\n                            props[name] = !!+rawValue;\r\n                            break;\r\n                        case \"sz\":\r\n                            props[name] = +rawValue;\r\n                            break;\r\n                        case \"s\":\r\n                            props[name] = +rawValue / 1000000000;\r\n                            break;\r\n                        case \"ns\":\r\n                            props[name] = +rawValue;\r\n                            break;\r\n                        case \"ts\":\r\n                            props[name] = new Date(+rawValue / 1000).toISOString();\r\n                            break;\r\n                        case \"cnt\":\r\n                            props[name] = +rawValue;\r\n                            break;\r\n                        case \"cost\":\r\n                            props[name] = +rawValue / 1000000;\r\n                            break;\r\n                        case \"node\":\r\n                            props[name] = +rawValue;\r\n                            break;\r\n                        case \"skw\":\r\n                            props[name] = +rawValue;\r\n                            break;\r\n                        case \"cpu\":\r\n                        case \"ppm\":\r\n                        case \"ip\":\r\n                        case \"cy\":\r\n                        case \"en\":\r\n                        case \"txt\":\r\n                        case \"id\":\r\n                        case \"fname\":\r\n                        default:\r\n                            props[name] = rawValue;\r\n                    }\r\n                    formattedProps[name] = formatNum(scopeProperty.Formatted ?? props[name]);\r\n                }\r\n            }\r\n            const normalizedScope: IScope = {\r\n                id: scope.Id,\r\n                name: scope.ScopeName,\r\n                type: scope.ScopeType,\r\n                Kind: scope[\"Kind\"],\r\n                Label: scope[\"Label\"],\r\n                __formattedProps: formattedProps,\r\n                __groupedProps: {},\r\n                __groupedRawProps: {},\r\n                __StdDevs: 0,\r\n                __StdDevsSource: \"\",\r\n                ...props\r\n            };\r\n            const definitionList = normalizedScope[DEFINITION_LIST];\r\n            if (definitionList) {\r\n                try {\r\n                    const parsedList = JSON.parse(definitionList.split(\"\\\\\").join(\"\\\\\\\\\"));\r\n                    const processedDefinitions: Array<{ filePath: string, line: number, col: number }> = [];\r\n\r\n                    for (let k = 0; k < parsedList.length; k++) {\r\n                        const matches = parsedList[k].match(definitionRegex);\r\n                        if (matches) {\r\n                            processedDefinitions.push({\r\n                                filePath: (matches[1] ?? \"\") + matches[2] + matches[3],\r\n                                line: parseInt(matches[5], 10),\r\n                                col: parseInt(matches[6], 10)\r\n                            });\r\n                        }\r\n                    }\r\n                    normalizedScope[DEFINITION_LIST] = processedDefinitions;\r\n                } catch (e) {\r\n                    logger.error(`Unexpected \"DefinitionList\": ${definitionList}`);\r\n                }\r\n            }\r\n\r\n            const dedup: DedupProperties = {};\r\n            let maxStdDevs = 0;\r\n            let maxStdDevsSource = \"\";\r\n            for (const key in normalizedScope) {\r\n                if (!key.startsWith(\"__\")) {\r\n                    const row = formatValues(normalizedScope, key, dedup);\r\n                    if (row) {\r\n                        normalizedScope.__groupedProps[row.Key] = row;\r\n                        if (!isNaN(row.StdDevs) && row.StdDevs > maxStdDevs) {\r\n                            maxStdDevs = row.StdDevs;\r\n                            maxStdDevsSource = row.Key;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            normalizedScope.__StdDevs = maxStdDevs;\r\n            normalizedScope.__StdDevsSource = maxStdDevsSource;\r\n\r\n            data[i] = normalizedScope;\r\n        }\r\n        return {\r\n            meta,\r\n            columns,\r\n            data\r\n        };\r\n    }\r\n\r\n    fetchDetailsNormalized(request: RecursivePartial<WsWorkunits.WUDetails> = {}): Promise<{ meta: WsWorkunits.WUDetailsMetaResponse, columns: { [id: string]: any }, data: IScope[] }> {\r\n        return Promise.all([this.fetchDetailsMeta(), this.fetchDetailsRaw(request)]).then(promises => {\r\n            return this.normalizeDetails(promises[0], promises[1]);\r\n        });\r\n    }\r\n\r\n    fetchInfo(request: Partial<WsWorkunits.WUInfo> = {}): Promise<WsWorkunits.WUInfoResponse> {\r\n        return this.WUInfo(request);\r\n    }\r\n\r\n    fetchDetails(request: RecursivePartial<WsWorkunits.WUDetails> = {}): Promise<Scope[]> {\r\n        return this.WUDetails(request).then((response) => {\r\n            return response.Scopes.Scope.map((rawScope) => {\r\n                return new Scope(this, rawScope);\r\n            });\r\n        });\r\n    }\r\n\r\n    fetchDetailsHierarchy(request: Partial<WsWorkunits.WUDetails> = {}): Promise<Scope[]> {\r\n        return this.WUDetails(request).then((response) => {\r\n            const retVal: Scope[] = [];\r\n\r\n            //  Recreate Scope Hierarchy and dedup  ---\r\n            const scopeMap: { [key: string]: Scope } = {};\r\n            response.Scopes.Scope.forEach((rawScope) => {\r\n                if (scopeMap[rawScope.ScopeName]) {\r\n                    scopeMap[rawScope.ScopeName].update(rawScope);\r\n                    return null;\r\n                } else {\r\n                    const scope = new Scope(this, rawScope);\r\n                    scopeMap[scope.ScopeName] = scope;\r\n                    return scope;\r\n                }\r\n            });\r\n            for (const key in scopeMap) {\r\n                if (scopeMap.hasOwnProperty(key)) {\r\n                    const scope = scopeMap[key];\r\n                    const parentScopeID = scope.parentScope();\r\n                    if (parentScopeID && scopeMap[parentScopeID]) {\r\n                        scopeMap[parentScopeID].children().push(scope);\r\n                    } else {\r\n                        retVal.push(scope);\r\n                    }\r\n                }\r\n            }\r\n\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    fetchGraphDetails(graphIDs: string[] = [], rootTypes: string[]): Promise<BaseScope[]> {\r\n        return this.fetchDetails({\r\n            ScopeFilter: {\r\n                MaxDepth: 999999,\r\n                Ids: graphIDs,\r\n                ScopeTypes: rootTypes,\r\n            },\r\n            NestedFilter: {\r\n                Depth: 999999,\r\n                ScopeTypes: [\"graph\", \"subgraph\", \"activity\", \"edge\", \"function\"]\r\n            },\r\n            PropertiesToReturn: {\r\n                AllStatistics: true,\r\n                AllAttributes: true,\r\n                AllHints: true,\r\n                AllProperties: true,\r\n                AllScopes: true\r\n            },\r\n            ScopeOptions: {\r\n                IncludeId: true,\r\n                IncludeScope: true,\r\n                IncludeScopeType: true\r\n            },\r\n            PropertyOptions: {\r\n                IncludeName: true,\r\n                IncludeRawValue: true,\r\n                IncludeFormatted: true,\r\n                IncludeMeasure: true,\r\n                IncludeCreator: false,\r\n                IncludeCreatorType: false\r\n            }\r\n        });\r\n    }\r\n\r\n    fetchScopeGraphs(graphIDs: string[] = []): Promise<ScopeGraph> {\r\n        return this.fetchGraphDetails(graphIDs, [\"graph\"]).then((scopes) => {\r\n            return createGraph(scopes);\r\n        });\r\n    }\r\n\r\n    fetchTimeElapsed(): Promise<ITimeElapsed[]> {\r\n        return this.fetchDetails({\r\n            ScopeFilter: {\r\n                PropertyFilters: {\r\n                    PropertyFilter: [{ Name: \"TimeElapsed\" }]\r\n                }\r\n            }\r\n        }).then((scopes) => {\r\n            const scopeInfo: { [key: string]: ITimeElapsed } = {};\r\n            scopes.forEach((scope) => {\r\n                scopeInfo[scope.ScopeName] = scopeInfo[scope.ScopeName] || {\r\n                    scope: scope.ScopeName,\r\n                    start: null,\r\n                    elapsed: null,\r\n                    finish: null\r\n                };\r\n                scope.CAttributes.forEach((attr) => {\r\n                    if (attr.Name === \"TimeElapsed\") {\r\n                        scopeInfo[scope.ScopeName].elapsed = +attr.RawValue;\r\n                    } else if (attr.Measure === \"ts\" && attr.Name.indexOf(\"Started\") >= 0) {\r\n                        scopeInfo[scope.ScopeName].start = attr.Formatted;\r\n                    }\r\n                });\r\n            });\r\n            // Workaround duplicate scope responses\r\n            const retVal: ITimeElapsed[] = [];\r\n            for (const key in scopeInfo) {\r\n                const scope = scopeInfo[key];\r\n                if (scope.start && scope.elapsed) {\r\n                    const endTime = parser(scope.start);\r\n                    endTime!.setMilliseconds(endTime!.getMilliseconds() + scope.elapsed / 1000000);\r\n                    scope.finish = formatter(endTime!);\r\n                    retVal.push(scope);\r\n                }\r\n            }\r\n            retVal.sort((l, r) => {\r\n                if (l.start < r.start) return -1;\r\n                if (l.start > r.start) return 1;\r\n                return 0;\r\n            });\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    //  Monitoring  ---\r\n    protected _monitor(): void {\r\n        if (this.isComplete()) {\r\n            this._monitorTickCount = 0;\r\n            return;\r\n        }\r\n        super._monitor();\r\n    }\r\n\r\n    protected _monitorTimeoutDuration(): number {\r\n        const retVal = super._monitorTimeoutDuration();\r\n        if (this._monitorTickCount <= 1) {          //  Once\r\n            return 1000;\r\n        } else if (this._monitorTickCount <= 3) {   //  Twice\r\n            return 3000;\r\n        } else if (this._monitorTickCount <= 5) {   //  Twice\r\n            return 5000;\r\n        } else if (this._monitorTickCount <= 7) {   //  Twice\r\n            return 10000;\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    //  Events  ---\r\n    on(eventID: WorkunitEvents, propIDorCallback: StateCallback | keyof UWorkunitState, callback?: StatePropCallback): this {\r\n        if (this.isCallback(propIDorCallback)) {\r\n            switch (eventID) {\r\n                case \"completed\":\r\n                    super.on(\"propChanged\", \"StateID\", (changeInfo: IEvent) => {\r\n                        if (this.isComplete()) {\r\n                            propIDorCallback([changeInfo]);\r\n                        }\r\n                    });\r\n                    break;\r\n                case \"changed\":\r\n                    super.on(eventID, propIDorCallback);\r\n                    break;\r\n                default:\r\n            }\r\n        } else {\r\n            switch (eventID) {\r\n                case \"changed\":\r\n                    super.on(eventID, propIDorCallback, callback!);\r\n                    break;\r\n                default:\r\n            }\r\n        }\r\n        this._monitor();\r\n        return this;\r\n    }\r\n\r\n    watchUntilComplete(callback?: StateCallback): Promise<this> {\r\n        return new Promise((resolve, _) => {\r\n            const watchHandle = this.watch((changes) => {\r\n                if (callback) {\r\n                    callback(changes);\r\n                }\r\n                if (this.isComplete()) {\r\n                    watchHandle.release();\r\n                    resolve(this);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    watchUntilRunning(callback?: StateCallback): Promise<this> {\r\n        return new Promise((resolve, _) => {\r\n            const watchHandle = this.watch((changes) => {\r\n                if (callback) {\r\n                    callback(changes);\r\n                }\r\n                if (this.isComplete() || this.isRunning()) {\r\n                    watchHandle.release();\r\n                    resolve(this);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    //  WsWorkunits passthroughs  ---\r\n    protected WUQuery(_request: Partial<WsWorkunits.WUQuery> = {}): Promise<WsWorkunits.WUQueryResponse> {\r\n        return this.connection.WUQuery({ ..._request, Wuid: this.Wuid }).then((response) => {\r\n            if (response.Workunits.ECLWorkunit.length === 0) {\r\n                //  deleted  ---\r\n                this.clearState(this.Wuid);\r\n                this.set(\"StateID\", WUStateID.NotFound);\r\n            } else {\r\n                this.set(response.Workunits.ECLWorkunit[0]);\r\n            }\r\n            return response;\r\n        }).catch((e: ESPExceptions) => {\r\n            //  deleted  ---\r\n            const wuMissing = e.Exception.some((exception) => {\r\n                if (exception.Code === 20081) {\r\n                    this.clearState(this.Wuid);\r\n                    this.set(\"StateID\", WUStateID.NotFound);\r\n                    return true;\r\n                }\r\n                return false;\r\n            });\r\n            if (!wuMissing) {\r\n                logger.warning(`Unexpected ESP exception: ${e.message}`);\r\n                throw e;\r\n            }\r\n            return {} as WsWorkunits.WUQueryResponse;\r\n        });\r\n    }\r\n\r\n    protected WUCreate() {\r\n        return this.connection.WUCreate().then((response) => {\r\n            this.set(response.Workunit);\r\n            _workunits.set(this);\r\n            return response;\r\n        });\r\n    }\r\n\r\n    protected WUInfo(_request: Partial<WsWorkunits.WUInfo> = {}): Promise<WsWorkunits.WUInfoResponse> {\r\n        const includeResults = _request.IncludeResults || _request.IncludeResultsViewNames;\r\n        return this.connection.WUInfo({\r\n            ..._request,\r\n            Wuid: this.Wuid,\r\n            IncludeResults: includeResults,\r\n            IncludeResultsViewNames: includeResults,\r\n            SuppressResultSchemas: false\r\n        }).then((response) => {\r\n            this.set(response.Workunit);\r\n            if (includeResults) {\r\n                this.set({\r\n                    ResultViews: response.ResultViews\r\n                } as IWorkunitState);\r\n            }\r\n            return response;\r\n        }).catch((e: ESPExceptions) => {\r\n            //  deleted  ---\r\n            const wuMissing = e.Exception.some((exception) => {\r\n                if (exception.Code === 20080) {\r\n                    this.clearState(this.Wuid);\r\n                    this.set(\"StateID\", WUStateID.NotFound);\r\n                    return true;\r\n                }\r\n                return false;\r\n            });\r\n            if (!wuMissing) {\r\n                logger.warning(`Unexpected ESP exception: ${e.message}`);\r\n                throw e;\r\n            }\r\n            return {} as WsWorkunits.WUInfoResponse;\r\n        });\r\n    }\r\n\r\n    protected WUResubmit(request: Partial<WsWorkunits.WUResubmit>): Promise<WsWorkunits.WUResubmitResponse> {\r\n        return this.connection.WUResubmit(deepMixinT<WsWorkunits.WUResubmit>({}, request, {\r\n            Wuids: { Item: [this.Wuid] }\r\n        }));\r\n    }\r\n\r\n    protected WUDetailsMeta(request: Partial<WsWorkunits.WUDetailsMeta>): Promise<WsWorkunits.WUDetailsMetaResponse> {\r\n        return this.connection.WUDetailsMeta(request);\r\n    }\r\n\r\n    protected WUDetails(request: RecursivePartial<WsWorkunits.WUDetails>): Promise<WsWorkunits.WUDetailsResponse> {\r\n        return this.connection.WUDetails(deepMixinT<WsWorkunits.WUDetails>({\r\n            ScopeFilter: {\r\n                MaxDepth: 9999\r\n            },\r\n            ScopeOptions: {\r\n                IncludeMatchedScopesInResults: true,\r\n                IncludeScope: true,\r\n                IncludeId: false,\r\n                IncludeScopeType: false\r\n            },\r\n            PropertyOptions: {\r\n                IncludeName: true,\r\n                IncludeRawValue: false,\r\n                IncludeFormatted: true,\r\n                IncludeMeasure: true,\r\n                IncludeCreator: false,\r\n                IncludeCreatorType: false\r\n            }\r\n        }, request, { WUID: this.Wuid })).then((response) => {\r\n            return deepMixinT<WsWorkunits.WUDetailsResponse>({\r\n                Scopes: {\r\n                    Scope: []\r\n                }\r\n            }, response);\r\n        });\r\n    }\r\n\r\n    protected WUAction(actionType: WsWorkunits.ECLWUActions): Promise<WsWorkunits.WUActionResponse> {\r\n        return this.connection.WUAction({\r\n            Wuids: { Item: [this.Wuid] },\r\n            WUActionType: actionType\r\n        }).then((response) => {\r\n            return this.refresh().then(() => {\r\n                this._monitor();\r\n                return response;\r\n            });\r\n        });\r\n    }\r\n\r\n    publish(name?: string) {\r\n        return this.connection.WUPublishWorkunit({\r\n            Wuid: this.Wuid,\r\n            Cluster: this.Cluster,\r\n            JobName: name || this.Jobname,\r\n            AllowForeignFiles: true,\r\n            Activate: WsWorkunits.WUQueryActivationMode.ActivateQuery,\r\n            Wait: 5000\r\n        });\r\n    }\r\n\r\n    publishEx(request: Partial<WsWorkunits.WUPublishWorkunit>) {\r\n        const service = new WorkunitsServiceEx({ baseUrl: \"\" });\r\n        const publishRequest = {\r\n            Wuid: this.Wuid,\r\n            Cluster: this.Cluster,\r\n            JobName: this.Jobname,\r\n            AllowForeignFiles: true,\r\n            Activate: 1,\r\n            Wait: 5000,\r\n            ...request\r\n        };\r\n        return service.WUPublishWorkunitEx(publishRequest);\r\n    }\r\n\r\n    protected WUCDebug(command: string, opts: any = {}): Promise<XMLNode | null> {\r\n        let optsStr = \"\";\r\n        for (const key in opts) {\r\n            if (opts.hasOwnProperty(key)) {\r\n                optsStr += ` ${key}='${opts[key]}'`;\r\n            }\r\n        }\r\n        return this.connection.WUCDebugEx({\r\n            Wuid: this.Wuid,\r\n            Command: `<debug:${command} uid='${this.Wuid}'${optsStr}/>`\r\n        }).then((response) => {\r\n            return response;\r\n        });\r\n    }\r\n\r\n    debug(command: string, opts?: object): Promise<XMLNode> {\r\n        if (!this.isDebugging()) {\r\n            return Promise.resolve(new XMLNode(command));\r\n        }\r\n        return this.WUCDebug(command, opts).then((response: XMLNode) => {\r\n            const retVal: XMLNode[] = response.children(command);\r\n            if (retVal.length) {\r\n                return retVal[0];\r\n            }\r\n            return new XMLNode(command);\r\n        }).catch((_) => {\r\n            logger.error(_);\r\n            return Promise.resolve(new XMLNode(command));\r\n        });\r\n    }\r\n\r\n    debugStatus(): Promise<XMLNode> {\r\n        if (!this.isDebugging()) {\r\n            return Promise.resolve<any>({\r\n                DebugState: { state: \"unknown\" }\r\n            });\r\n        }\r\n        return this.debug(\"status\").then((response) => {\r\n            const debugState = { ...this.DebugState, ...response.$ };\r\n            this.set({\r\n                DebugState: debugState\r\n            });\r\n            return response;\r\n        });\r\n    }\r\n\r\n    debugContinue(mode = \"\"): Promise<XMLNode> {\r\n        return this.debug(\"continue\", {\r\n            mode\r\n        });\r\n    }\r\n\r\n    debugStep(mode: string): Promise<XMLNode> {\r\n        return this.debug(\"step\", {\r\n            mode\r\n        });\r\n    }\r\n\r\n    debugPause(): Promise<XMLNode> {\r\n        return this.debug(\"interrupt\");\r\n    }\r\n\r\n    debugQuit(): Promise<XMLNode> {\r\n        return this.debug(\"quit\");\r\n    }\r\n\r\n    debugDeleteAllBreakpoints(): Promise<XMLNode> {\r\n        return this.debug(\"delete\", {\r\n            idx: 0\r\n        });\r\n    }\r\n\r\n    protected debugBreakpointResponseParser(rootNode: StringAnyMap) {\r\n        return rootNode.children().map((childNode: XMLNode) => {\r\n            if (childNode.name === \"break\") {\r\n                return childNode.$;\r\n            }\r\n        });\r\n    }\r\n\r\n    debugBreakpointAdd(id: string, mode: string, action: string): Promise<XMLNode> {\r\n        return this.debug(\"breakpoint\", {\r\n            id,\r\n            mode,\r\n            action\r\n        }).then((rootNode) => {\r\n            return this.debugBreakpointResponseParser(rootNode);\r\n        });\r\n    }\r\n\r\n    debugBreakpointList(): Promise<any[]> {\r\n        return this.debug(\"list\").then((rootNode) => {\r\n            return this.debugBreakpointResponseParser(rootNode);\r\n        });\r\n    }\r\n\r\n    debugGraph(): Promise<XGMMLGraph> {\r\n        if (this._debugAllGraph && this.DebugState[\"_prevGraphSequenceNum\"] === this.DebugState[\"graphSequenceNum\"]) {\r\n            return Promise.resolve(this._debugAllGraph);\r\n        }\r\n        return this.debug(\"graph\", { name: \"all\" }).then((response) => {\r\n            this.DebugState[\"_prevGraphSequenceNum\"] = this.DebugState[\"graphSequenceNum\"];\r\n            this._debugAllGraph = createXGMMLGraph(this.Wuid, response);\r\n            return this._debugAllGraph;\r\n        });\r\n    }\r\n\r\n    debugBreakpointValid(path: string): Promise<IECLDefintion[]> {\r\n        return this.debugGraph().then((graph) => {\r\n            return breakpointLocations(graph, path);\r\n        });\r\n    }\r\n\r\n    debugPrint(edgeID: string, startRow: number = 0, numRows: number = 10): Promise<StringAnyMap[]> {\r\n        return this.debug(\"print\", {\r\n            edgeID,\r\n            startRow,\r\n            numRows\r\n        }).then((response: XMLNode) => {\r\n            return response.children().map((rowNode) => {\r\n                const retVal: StringAnyMap = {};\r\n                rowNode.children().forEach((cellNode) => {\r\n                    retVal[cellNode.name] = cellNode.content;\r\n                });\r\n                return retVal;\r\n            });\r\n        });\r\n    }\r\n}\r\n\r\nexport interface IECLDefintion {\r\n    id: string;\r\n    file: string;\r\n    line: number;\r\n    column: number;\r\n}\r\n\r\nconst ATTR_DEFINITION = \"definition\";\r\n\r\nfunction hasECLDefinition(vertex: XGMMLVertex): boolean {\r\n    return vertex._![ATTR_DEFINITION] !== undefined;\r\n}\r\n\r\nfunction getECLDefinition(vertex: XGMMLVertex): IECLDefintion {\r\n    const match = /([a-z]:\\\\(?:[-\\w\\.\\d]+\\\\)*(?:[-\\w\\.\\d]+)?|(?:\\/[\\w\\.\\-]+)+)\\((\\d*),(\\d*)\\)/.exec(vertex._![ATTR_DEFINITION]);\r\n    if (match) {\r\n        const [, _file, _row, _col] = match;\r\n        _file.replace(/\\/\\.\\//g, \"/\");\r\n        return {\r\n            id: vertex._![\"id\"],\r\n            file: _file,\r\n            line: +_row,\r\n            column: +_col\r\n        };\r\n    }\r\n    throw new Error(`Bad definition:  ${vertex._![ATTR_DEFINITION]}`);\r\n}\r\n\r\nfunction breakpointLocations(graph: XGMMLGraph, path?: string): IECLDefintion[] {\r\n    const retVal: IECLDefintion[] = [];\r\n    for (const vertex of graph.vertices) {\r\n        if (hasECLDefinition(vertex)) {\r\n            const definition = getECLDefinition(vertex);\r\n            if (definition && !path || path === definition.file) {\r\n                retVal.push(definition);\r\n            }\r\n        }\r\n    }\r\n    return retVal.sort((l, r) => {\r\n        return l.line - r.line;\r\n    });\r\n}\r\n", "import { Cache, Edge, Graph, StateObject, StringAnyMap, Subgraph, Vertex, XMLNode } from \"@hpcc-js/util\";\r\nimport { WsWorkunits } from \"../services/wsWorkunits.ts\";\r\nimport { BaseScope } from \"./scope.ts\";\r\nimport { Timer } from \"./timer.ts\";\r\nimport { Workunit } from \"./workunit.ts\";\r\n\r\nexport interface ECLGraphEx extends WsWorkunits.ECLGraph {\r\n    Time: number;\r\n}\r\n\r\nexport class ECLGraph extends StateObject<ECLGraphEx, ECLGraphEx> implements ECLGraphEx {\r\n    protected wu: Workunit;\r\n\r\n    get properties(): ECLGraphEx { return this.get(); }\r\n    get Name(): string { return this.get(\"Name\"); }\r\n    get Label(): string { return this.get(\"Label\"); }\r\n    get Type(): string { return this.get(\"Type\"); }\r\n    get Complete(): boolean { return this.get(\"Complete\"); }\r\n    get WhenStarted(): string { return this.get(\"WhenStarted\"); }\r\n    get WhenFinished(): string { return this.get(\"WhenFinished\"); }\r\n    get Time(): number { return this.get(\"Time\"); }\r\n    get Running(): boolean { return this.get(\"Running\"); }\r\n    get RunningId(): number { return this.get(\"RunningId\"); }\r\n    get Failed(): boolean { return this.get(\"Failed\"); }\r\n\r\n    constructor(wu: Workunit, eclGraph: WsWorkunits.ECLGraph, eclTimers: Timer[]) {\r\n        super();\r\n        this.wu = wu;\r\n        let duration = 0;\r\n        for (const eclTimer of eclTimers) {\r\n            if (eclTimer.GraphName === eclGraph.Name && !eclTimer.HasSubGraphId) {\r\n                duration = Math.round(eclTimer.Seconds * 1000) / 1000;\r\n                break;\r\n            }\r\n        }\r\n        this.set({ Time: duration, ...eclGraph });\r\n    }\r\n\r\n    fetchScopeGraph(subgraphID?: string): Promise<ScopeGraph> {\r\n        if (subgraphID) {\r\n            return this.wu.fetchGraphDetails([subgraphID], [\"subgraph\"]).then((scopes) => {\r\n                return createGraph(scopes);\r\n            });\r\n        }\r\n        return this.wu.fetchGraphDetails([this.Name], [\"graph\"]).then((scopes) => {\r\n            return createGraph(scopes);\r\n        });\r\n    }\r\n}\r\n\r\nexport class GraphCache extends Cache<WsWorkunits.ECLGraph, ECLGraph> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return Cache.hash([obj.Name]);\r\n        });\r\n    }\r\n}\r\n\r\ntype Callback = (tag: string, attributes: StringAnyMap, children: XMLNode[], _stack: XMLNode[]) => void;\r\nfunction walkXmlJson(node: XMLNode, callback: Callback, stack?: XMLNode[]) {\r\n    stack = stack || [];\r\n    stack.push(node);\r\n    callback(node.name, node.$, node.children(), stack);\r\n    node.children().forEach((childNode) => {\r\n        walkXmlJson(childNode, callback, stack);\r\n    });\r\n    stack.pop();\r\n}\r\n\r\nfunction flattenAtt(nodes: XMLNode[]): StringAnyMap {\r\n    const retVal: StringAnyMap = {};\r\n    nodes.forEach((node: XMLNode) => {\r\n        if (node.name === \"att\") {\r\n            retVal[node.$[\"name\"]] = node.$[\"value\"];\r\n        }\r\n    });\r\n    return retVal;\r\n}\r\n\r\nexport class XGMMLGraph extends Graph<StringAnyMap, StringAnyMap, StringAnyMap> { }\r\nexport class XGMMLSubgraph extends Subgraph<StringAnyMap, StringAnyMap, StringAnyMap> { }\r\nexport class XGMMLVertex extends Vertex<StringAnyMap, StringAnyMap, StringAnyMap> { }\r\nexport class XGMMLEdge extends Edge<StringAnyMap, StringAnyMap, StringAnyMap> { }\r\n\r\nexport function createXGMMLGraph(id: string, graphs: XMLNode): XGMMLGraph {\r\n    const subgraphs: { [id: string]: XGMMLSubgraph } = {};\r\n    const vertices: { [id: string]: XGMMLVertex } = {};\r\n    const edges: { [id: string]: XGMMLEdge } = {};\r\n\r\n    const graph = new XGMMLGraph((item) => {\r\n        return item._![\"id\"];\r\n    });\r\n\r\n    const stack: XGMMLSubgraph[] = [graph.root];\r\n    walkXmlJson(graphs, (tag: string, attributes: StringAnyMap, childNodes: XMLNode[], _stack) => {\r\n        const top = stack[stack.length - 1];\r\n        switch (tag) {\r\n            case \"graph\":\r\n                break;\r\n            case \"node\":\r\n                if (childNodes.length && childNodes[0].children().length && childNodes[0].children()[0].name === \"graph\") {\r\n                    const subgraph = top.createSubgraph(flattenAtt(childNodes));\r\n                    stack.push(subgraph);\r\n                    subgraphs[attributes[\"id\"]] = subgraph;\r\n                } else {\r\n                }\r\n                // TODO:  Is this really a node when its also a subgraph?\r\n                const vertex = top.createVertex(flattenAtt(childNodes));\r\n                vertices[attributes[\"id\"]] = vertex;\r\n                break;\r\n            case \"edge\":\r\n                const edge = top.createEdge(vertices[attributes[\"source\"]], vertices[attributes[\"target\"]], flattenAtt(childNodes));\r\n                edges[attributes[\"id\"]] = edge;\r\n                break;\r\n            default:\r\n        }\r\n    });\r\n    return graph;\r\n}\r\n\r\nexport class ScopeGraph extends Graph<BaseScope, BaseScope, BaseScope> { }\r\nexport class ScopeSubgraph extends Subgraph<BaseScope, BaseScope, BaseScope> { }\r\nexport class ScopeVertex extends Vertex<BaseScope, BaseScope, BaseScope> { }\r\nexport class ScopeEdge extends Edge<BaseScope, BaseScope, BaseScope> { }\r\n\r\nexport function createGraph(scopes: BaseScope[]): ScopeGraph {\r\n    const subgraphs: { [scopeName: string]: ScopeSubgraph } = {};\r\n    const edges: { [scopeName: string]: BaseScope } = {};\r\n    const vertices: { [scopeName: string]: ScopeVertex } = {};\r\n\r\n    let graph: ScopeGraph | undefined;\r\n    for (const scope of scopes) {\r\n        switch (scope.ScopeType) {\r\n            case \"graph\":\r\n                graph = new ScopeGraph(item => item._!.Id, scope);\r\n                subgraphs[scope.ScopeName] = graph.root;\r\n                break;\r\n            case \"subgraph\":\r\n                if (!graph) {\r\n                    graph = new ScopeGraph(item => item._!.Id, scope);\r\n                    subgraphs[scope.ScopeName] = graph.root;\r\n                }\r\n                const scopeStack = scope.parentScope().split(\":\");\r\n                let scopeParent1 = subgraphs[scope.parentScope()];\r\n                while (scopeStack.length && !scopeParent1) {\r\n                    scopeParent1 = subgraphs[scopeStack.join(\":\")];\r\n                    scopeStack.pop();\r\n                }\r\n                if (!scopeParent1) {\r\n                    console.warn(`Missing SG:Parent (${scope.Id}): ${scope.parentScope()}`);\r\n                } else {\r\n                    const parent1: ScopeSubgraph = scopeParent1;\r\n                    subgraphs[scope.ScopeName] = parent1.createSubgraph(scope);\r\n                }\r\n                break;\r\n            case \"activity\":\r\n                const scopeParent2 = subgraphs[scope.parentScope()];\r\n                if (!scopeParent2) {\r\n                    console.warn(`Missing A:Parent (${scope.Id}): ${scope.parentScope()}`);\r\n                } else {\r\n                    vertices[scope.ScopeName] = scopeParent2.createVertex(scope);\r\n                }\r\n                break;\r\n            case \"edge\":\r\n                edges[scope.ScopeName] = scope;\r\n                break;\r\n            case \"function\":\r\n                const scopeParent3 = vertices[scope.parentScope()];\r\n                if (!scopeParent3) {\r\n                    console.warn(`Missing F:Parent (${scope.Id}): ${scope.parentScope()}`);\r\n                } else {\r\n                    scopeParent3._.children().push(scope);\r\n                }\r\n                break;\r\n        }\r\n    }\r\n    for (const id in edges) {\r\n        const scope = edges[id];\r\n        const scopeParent3 = subgraphs[scope.parentScope()];\r\n        if (!scopeParent3) {\r\n            console.warn(`Missing E:Parent (${scope.Id}): ${scope.parentScope()}`);\r\n        } else {\r\n            const parent3: ScopeSubgraph = scopeParent3;\r\n            try {\r\n                const source = graph!.vertex(scope.attr(\"IdSource\").RawValue);\r\n                const target = graph!.vertex(scope.attr(\"IdTarget\").RawValue);\r\n                parent3.createEdge(source, target, scope);\r\n            } catch (e) {\r\n                // const sourceIndex = scope.attr(\"SourceIndex\").RawValue;\r\n                // const targetIndex = scope.attr(\"TargetIndex\").RawValue;\r\n                console.warn(`Invalid Edge: ${id}`);\r\n            }\r\n        }\r\n    }\r\n    return graph!;\r\n}\r\n", "import { StateObject } from \"@hpcc-js/util\";\r\nimport { Workunit } from \"./workunit.ts\";\r\n\r\nexport interface ResourceEx {\r\n    URL: string;\r\n    DisplayName: string;\r\n    DisplayPath: string;\r\n}\r\n\r\nexport class Resource extends StateObject<ResourceEx, ResourceEx> implements ResourceEx {\r\n    protected wu: Workunit;\r\n\r\n    get properties(): ResourceEx { return this.get(); }\r\n    get URL(): string { return this.get(\"URL\"); }\r\n    get DisplayName(): string { return this.get(\"DisplayName\"); }\r\n    get DisplayPath(): string { return this.get(\"DisplayPath\"); }\r\n\r\n    constructor(wu: Workunit, url: string) {\r\n        super();\r\n        this.wu = wu;\r\n\r\n        const cleanedURL = url.split(\"\\\\\").join(\"/\");\r\n        const urlParts = cleanedURL.split(\"/\");\r\n        const matchStr = \"res/\" + this.wu.Wuid + \"/\";\r\n        let displayPath = \"\";\r\n        let displayName = \"\";\r\n\r\n        if (cleanedURL.indexOf(matchStr) === 0) {\r\n            displayPath = cleanedURL.substr(matchStr.length);\r\n            displayName = urlParts[urlParts.length - 1];\r\n        }\r\n\r\n        this.set({\r\n            URL: url,\r\n            DisplayName: displayName,\r\n            DisplayPath: displayPath\r\n        });\r\n    }\r\n}\r\n", "import { Cache, exists, StateObject } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { WsDfu } from \"../services/wsDFU.ts\";\r\nimport { isECLResult, WorkunitsService, WsWorkunits } from \"../services/wsWorkunits.ts\";\r\nimport { parseXSD, XSDSchema, XSDXMLNode } from \"./xsdParser.ts\";\r\n\r\nexport class GlobalResultCache extends Cache<{ BaseUrl: string, Wuid: string, ResultName: string }, Result> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return `${obj.BaseUrl}-${obj.Wuid}-${obj.ResultName}`;\r\n        });\r\n    }\r\n}\r\nconst _results = new GlobalResultCache();\r\n\r\nexport type ResultFilter = { [key: string]: string | number };\r\n\r\nexport interface ECLResultEx extends WsWorkunits.ECLResult {\r\n    Wuid: string;\r\n    ResultName?: string;\r\n    ResultSequence?: number;\r\n    LogicalFileName?: string;\r\n    NodeGroup?: string;\r\n    ResultViews: string[];\r\n}\r\n\r\nexport interface WUResultResponseEx {\r\n\r\n    Exceptions: WsWorkunits.Exceptions;\r\n    Wuid: string;\r\n    Sequence: WsWorkunits.int;\r\n    LogicalName: string;\r\n    Cluster: string;\r\n    Name: string;\r\n    Start: WsWorkunits.long;\r\n    Requested: WsWorkunits.int;\r\n    Count: WsWorkunits.int;\r\n    Total: WsWorkunits.long;\r\n    Result: { [key: string]: any[] } & {\r\n        XmlSchema?: {\r\n            xml: string;\r\n        };\r\n    };\r\n}\r\n\r\nexport type UResulState = ECLResultEx & WsDfu.DFULogicalFile;\r\nexport type IResulState = ECLResultEx | WsDfu.DFULogicalFile;\r\nexport class Result extends StateObject<UResulState, IResulState> implements ECLResultEx {\r\n    protected connection: WorkunitsService;\r\n    protected _bypassCache: boolean = false;\r\n    get BaseUrl() { return this.connection.baseUrl; }\r\n    protected xsdSchema: XSDSchema;\r\n\r\n    get properties(): WsWorkunits.ECLResult { return this.get(); }\r\n    get Wuid(): string { return this.get(\"Wuid\"); }\r\n    get ResultName(): string | undefined { return this.get(\"ResultName\"); }\r\n    get ResultSequence(): number | undefined { return this.get(\"ResultSequence\"); }\r\n    get LogicalFileName(): string | undefined { return this.get(\"LogicalFileName\"); }\r\n    get Name(): string { return this.get(\"Name\"); }\r\n    get Sequence(): number { return this.get(\"Sequence\"); }\r\n    get Value(): string { return this.get(\"Value\"); }\r\n    get Link(): string { return this.get(\"Link\"); }\r\n    get FileName(): string { return this.get(\"FileName\"); }\r\n    get IsSupplied(): boolean { return this.get(\"IsSupplied\"); }\r\n    get ShowFileContent() { return this.get(\"ShowFileContent\"); }\r\n    get Total(): number { return this.get(\"Total\"); }\r\n    get ECLSchemas(): WsWorkunits.ECLSchemas { return this.get(\"ECLSchemas\"); }\r\n    get NodeGroup(): string { return this.get(\"NodeGroup\"); }\r\n    get ResultViews(): string[] { return this.get(\"ResultViews\"); }\r\n    get XmlSchema(): string { return this.get(\"XmlSchema\"); }\r\n\r\n    static attach(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, name: string);\r\n    static attach(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, sequence: number);\r\n    static attach(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, eclResult: WsWorkunits.ECLResult, resultViews: string[]);\r\n    static attach(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, name_sequence_eclResult?: string | number | WsWorkunits.ECLResult, resultViews?: string[]): Result {\r\n        let retVal: Result;\r\n        if (Array.isArray(resultViews)) {\r\n            retVal = _results.get({ BaseUrl: optsConnection.baseUrl, Wuid: wuid, ResultName: (name_sequence_eclResult as WsWorkunits.ECLResult).Name }, () => {\r\n                return new Result(optsConnection, wuid, name_sequence_eclResult as WsWorkunits.ECLResult, resultViews);\r\n            });\r\n            retVal.set(name_sequence_eclResult as any);\r\n        } else if (typeof resultViews === \"undefined\") {\r\n            if (typeof name_sequence_eclResult === \"number\") {\r\n                retVal = _results.get({ BaseUrl: optsConnection.baseUrl, Wuid: wuid, ResultName: \"Sequence_\" + name_sequence_eclResult }, () => {\r\n                    return new Result(optsConnection, wuid, name_sequence_eclResult);\r\n                });\r\n            } else if (typeof name_sequence_eclResult === \"string\") {\r\n                retVal = _results.get({ BaseUrl: optsConnection.baseUrl, Wuid: wuid, ResultName: name_sequence_eclResult }, () => {\r\n                    return new Result(optsConnection, wuid, name_sequence_eclResult);\r\n                });\r\n            }\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    static attachLogicalFile(optsConnection: IOptions | IConnection | WorkunitsService, nodeGroup: string, logicalFile: string) {\r\n        return _results.get({ BaseUrl: optsConnection.baseUrl, Wuid: nodeGroup, ResultName: logicalFile }, () => {\r\n            return new Result(optsConnection, nodeGroup, logicalFile, true);\r\n        });\r\n    }\r\n\r\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, name: string);\r\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, sequence: number);\r\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, eclResult: WsWorkunits.ECLResult, resultViews: string[]);\r\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, nodeGroup: string, logicalFile: string, isLogicalFiles: boolean);\r\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid_NodeGroup: string, name_sequence_eclResult_logicalFile?: string | number | WsWorkunits.ECLResult, resultViews_isLogicalFile?: any[] | boolean) {\r\n        super();\r\n        if (optsConnection instanceof WorkunitsService) {\r\n            this.connection = optsConnection;\r\n        } else {\r\n            this.connection = new WorkunitsService(optsConnection);\r\n        }\r\n\r\n        if (typeof resultViews_isLogicalFile === \"boolean\" && resultViews_isLogicalFile === true) {\r\n            this.set({\r\n                NodeGroup: wuid_NodeGroup,\r\n                LogicalFileName: name_sequence_eclResult_logicalFile\r\n            } as ECLResultEx);\r\n        } else if (isECLResult(name_sequence_eclResult_logicalFile) && Array.isArray(resultViews_isLogicalFile)) {\r\n            this.set({\r\n                ...name_sequence_eclResult_logicalFile,\r\n                Wuid: wuid_NodeGroup,\r\n                ResultName: name_sequence_eclResult_logicalFile.Name,\r\n                ResultViews: resultViews_isLogicalFile\r\n            } as ECLResultEx);\r\n        } else if (typeof resultViews_isLogicalFile === \"undefined\") {\r\n            if (typeof name_sequence_eclResult_logicalFile === \"number\") {\r\n                this.set({\r\n                    Wuid: wuid_NodeGroup,\r\n                    ResultSequence: name_sequence_eclResult_logicalFile\r\n                } as ECLResultEx);\r\n            } else if (typeof name_sequence_eclResult_logicalFile === \"string\") {\r\n                this.set({\r\n                    Wuid: wuid_NodeGroup,\r\n                    ResultName: name_sequence_eclResult_logicalFile\r\n                } as ECLResultEx);\r\n            } else {\r\n                console.warn(\"Unknown Result.attach (1)\");\r\n            }\r\n        } else {\r\n            console.warn(\"Unknown Result.attach (2)\");\r\n        }\r\n    }\r\n\r\n    isComplete() {\r\n        return this.Total !== -1;\r\n    }\r\n\r\n    bypassCache(bypass?: boolean): boolean | this {\r\n        if (bypass === undefined) return this._bypassCache;\r\n        this._bypassCache = bypass;\r\n        return this;\r\n    }\r\n\r\n    private _fetchXMLSchemaPromise: Promise<XSDSchema | null>;\r\n    fetchXMLSchema(refresh = false): Promise<XSDSchema | null> {\r\n        if (!this._fetchXMLSchemaPromise || refresh) {\r\n            this._fetchXMLSchemaPromise = this.WUResult().then(response => {\r\n                if (response.Result?.XmlSchema?.xml) {\r\n                    this.xsdSchema = parseXSD(response.Result.XmlSchema.xml);\r\n                    return this.xsdSchema;\r\n                }\r\n                return null;\r\n            });\r\n        }\r\n        return this._fetchXMLSchemaPromise;\r\n    }\r\n\r\n    async refresh(): Promise<this> {\r\n        await this.fetchRows(0, 1, true);\r\n        return this;\r\n    }\r\n\r\n    fetchRows(from: number = 0, count: number = -1, includeSchema: boolean = false, filter: ResultFilter = {}, abortSignal?: AbortSignal, bypassCache?: boolean): Promise<any[]> {\r\n        const shouldBypassCache = bypassCache ?? this._bypassCache;\r\n        return this.WUResult(from, count, !includeSchema, filter, abortSignal, shouldBypassCache).then((response) => {\r\n            const result: any = response.Result;\r\n            delete response.Result; //  Do not want it in \"set\"\r\n            this.set({\r\n                ...response\r\n            } as any);\r\n            if (exists(\"XmlSchema.xml\", result)) {\r\n                this.xsdSchema = parseXSD(result.XmlSchema.xml);\r\n            }\r\n            if (exists(\"Row\", result)) {\r\n                return result.Row;\r\n            } else if (this.ResultName && exists(this.ResultName, result)) {\r\n                return result[this.ResultName].Row;\r\n            }\r\n            return [];\r\n        });\r\n    }\r\n\r\n    rootField(): XSDXMLNode | null {\r\n        if (!this.xsdSchema) return null;\r\n        return this.xsdSchema.root;\r\n    }\r\n\r\n    fields(): XSDXMLNode[] {\r\n        if (!this.xsdSchema) return [];\r\n        return this.xsdSchema.root.children();\r\n    }\r\n\r\n    protected WUResult(start: number = 0, count: number = 1, suppressXmlSchema: boolean = false, filter: { [key: string]: string | number } = {}, abortSignal?: AbortSignal, bypassCache: boolean = false): Promise<WUResultResponseEx> {\r\n        const FilterBy = {\r\n            NamedValue: {\r\n                itemcount: 0\r\n            }\r\n        };\r\n        for (const key in filter) {\r\n            FilterBy.NamedValue[FilterBy.NamedValue.itemcount++] = {\r\n                Name: key,\r\n                Value: filter[key]\r\n            };\r\n        }\r\n        const request: Partial<WsWorkunits.WUResult> = { FilterBy } as any;\r\n        if (this.Wuid && this.ResultName !== undefined) {\r\n            request.Wuid = this.Wuid;\r\n            request.ResultName = this.ResultName;\r\n        } else if (this.Wuid && this.ResultSequence !== undefined) {\r\n            request.Wuid = this.Wuid;\r\n            request.Sequence = this.ResultSequence;\r\n        } else if (this.LogicalFileName && this.NodeGroup) {\r\n            request.LogicalName = this.LogicalFileName;\r\n            request.Cluster = this.NodeGroup;\r\n        } else if (this.LogicalFileName) {\r\n            request.LogicalName = this.LogicalFileName;\r\n        }\r\n        request.Start = start;\r\n        request.Count = count;\r\n        request.SuppressXmlSchema = suppressXmlSchema;\r\n        request.BypassCachedResult = bypassCache;\r\n        return this.connection.WUResult(request, abortSignal).then((response: unknown) => {\r\n            return response as WUResultResponseEx;\r\n        });\r\n    }\r\n}\r\n\r\nexport class ResultCache extends Cache<WsWorkunits.ECLResult, Result> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return Cache.hash([obj.Sequence, obj.Name, obj.Value, obj.FileName]);\r\n        });\r\n    }\r\n}\r\n", "import { SAXStackParser, Stack, XMLNode } from \"@hpcc-js/util\";\r\n\r\nexport class XSDNode {\r\n    protected e?: XMLNode;\r\n\r\n    constructor(e: XMLNode) {\r\n        this.e = e;\r\n    }\r\n    fix() {\r\n        delete this.e;\r\n    }\r\n}\r\n\r\nexport class XSDXMLNode extends XSDNode {\r\n    name: string;\r\n    type: string;\r\n    isSet = false;\r\n    attrs: { [key: string]: string } = {};\r\n    private _children: XSDXMLNode[] = [];\r\n\r\n    constructor(e: XMLNode) {\r\n        super(e);\r\n    }\r\n\r\n    append(child: XSDXMLNode) {\r\n        this._children.push(child);\r\n        if (!this.type) {\r\n            this.type = \"hpcc:childDataset\";\r\n        }\r\n    }\r\n\r\n    fix() {\r\n        this.name = this.e!.$[\"name\"];\r\n        this.type = this.e!.$[\"type\"];\r\n        for (let i = this._children.length - 1; i >= 0; --i) {\r\n            const row = this._children[i];\r\n            if (row.name === \"Row\" && row.type === undefined) {\r\n                this._children.push(...row._children);\r\n                this._children.splice(i, 1);\r\n            }\r\n        }\r\n        const setOfType = this.setOfType();\r\n        if (setOfType) {\r\n            this.type = setOfType;\r\n            this.isSet = true;\r\n            this._children = [];\r\n        }\r\n    }\r\n\r\n    children(): XSDXMLNode[] {\r\n        return this._children;\r\n    }\r\n\r\n    private isAll(node: XSDXMLNode) {\r\n        return node.name === \"All\" && node.type === undefined;\r\n    }\r\n\r\n    private setOfType(): string {\r\n        const children = this.children();\r\n        if (this.type === undefined && children.length === 2) {\r\n            if (this.isAll(children[0])) {\r\n                return children[1].type;\r\n            } else if (this.isAll(children[1])) {\r\n                return children[0].type;\r\n            }\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    charWidth() {\r\n        let retVal: number = -1;\r\n\r\n        switch (this.type) {\r\n            case \"xs:boolean\":\r\n                retVal = 5;\r\n                break;\r\n            case \"xs:integer\":\r\n                retVal = 8;\r\n                break;\r\n            case \"xs:nonNegativeInteger\":\r\n                retVal = 8;\r\n                break;\r\n            case \"xs:double\":\r\n                retVal = 8;\r\n                break;\r\n            case \"xs:string\":\r\n                retVal = 32;\r\n                break;\r\n            default:\r\n                const numStr: string = \"0123456789\";\r\n                const underbarPos: number = this.type.lastIndexOf(\"_\");\r\n                const length: number = underbarPos > 0 ? underbarPos : this.type.length;\r\n                let i: number = length - 1;\r\n                for (; i >= 0; --i) {\r\n                    if (numStr.indexOf(this.type.charAt(i)) === -1)\r\n                        break;\r\n                }\r\n                if (i + 1 < length) {\r\n                    retVal = parseInt(this.type.substring(i + 1, length), 10);\r\n                }\r\n                if (this.type.indexOf(\"data\") === 0) {\r\n                    retVal *= 2;\r\n                }\r\n                break;\r\n        }\r\n        if (retVal < this.name.length)\r\n            retVal = this.name.length;\r\n\r\n        return retVal;\r\n    }\r\n}\r\n\r\nexport class XSDSimpleType extends XSDNode {\r\n    name: string;\r\n    type: string;\r\n    maxLength: number | undefined;\r\n\r\n    protected _restricition?: XMLNode;\r\n    protected _maxLength?: XMLNode;\r\n\r\n    constructor(e: XMLNode) {\r\n        super(e);\r\n    }\r\n\r\n    append(e: XMLNode) {\r\n        switch (e.name) {\r\n            case \"xs:restriction\":\r\n                this._restricition = e;\r\n                break;\r\n            case \"xs:maxLength\":\r\n                this._maxLength = e;\r\n                break;\r\n            default:\r\n        }\r\n    }\r\n\r\n    fix() {\r\n        this.name = this.e!.$[\"name\"];\r\n        this.type = this._restricition!.$[\"base\"];\r\n        this.maxLength = this._maxLength ? +this._maxLength!.$[\"value\"] : undefined;\r\n        delete this._restricition;\r\n        delete this._maxLength;\r\n        super.fix();\r\n    }\r\n}\r\n\r\nexport class XSDSchema {\r\n    root: XSDXMLNode;\r\n    simpleTypes: { [name: string]: XSDSimpleType } = {};\r\n\r\n    fields(): XSDXMLNode[] {\r\n        return this.root.children();\r\n    }\r\n}\r\n\r\nclass XSDParser extends SAXStackParser {\r\n    schema: XSDSchema = new XSDSchema();\r\n    simpleType: XSDSimpleType;\r\n    simpleTypes: { [name: string]: XSDSimpleType } = {};\r\n\r\n    xsdStack: Stack<XSDXMLNode> = new Stack<XSDXMLNode>();\r\n\r\n    startXMLNode(e: XMLNode) {\r\n        super.startXMLNode(e);\r\n        switch (e.name) {\r\n            case \"xs:element\":\r\n                const xsdXMLNode = new XSDXMLNode(e);\r\n                if (!this.schema.root) {\r\n                    this.schema.root = xsdXMLNode;\r\n                } else if (this.xsdStack.depth()) {\r\n                    this.xsdStack.top()!.append(xsdXMLNode);\r\n                }\r\n                this.xsdStack.push(xsdXMLNode);\r\n                break;\r\n            case \"xs:simpleType\":\r\n                this.simpleType = new XSDSimpleType(e);\r\n                break;\r\n            default:\r\n                break;\r\n        }\r\n    }\r\n\r\n    endXMLNode(e: XMLNode) {\r\n        switch (e!.name) {\r\n            case \"xs:element\":\r\n                const xsdXMLNode = this.xsdStack.pop();\r\n                xsdXMLNode!.fix();\r\n                break;\r\n            case \"xs:simpleType\":\r\n                this.simpleType.fix();\r\n                this.simpleTypes[this.simpleType.name] = this.simpleType;\r\n                delete this.simpleType;\r\n                break;\r\n            case \"xs:appinfo\":\r\n                const xsdXMLNode2 = this.xsdStack.top();\r\n                for (const key in e.$) {\r\n                    xsdXMLNode2!.attrs[key] = e.$[key];\r\n                }\r\n                break;\r\n            default:\r\n                if (this.simpleType) {\r\n                    this.simpleType.append(e);\r\n                }\r\n        }\r\n        super.endXMLNode(e);\r\n    }\r\n}\r\n\r\nexport function parseXSD(xml: string): XSDSchema {\r\n    const saxParser = new XSDParser();\r\n    saxParser.parse(xml);\r\n    return saxParser.schema;\r\n}\r\n\r\nclass XSDParser2 extends XSDParser {\r\n    _rootName: string;\r\n    schema: XSDSchema = new XSDSchema();\r\n    simpleTypes: { [name: string]: XSDSimpleType } = {};\r\n\r\n    xsdStack: Stack<XSDXMLNode> = new Stack<XSDXMLNode>();\r\n\r\n    constructor(rootName: string) {\r\n        super();\r\n        this._rootName = rootName;\r\n    }\r\n\r\n    startXMLNode(e: XMLNode) {\r\n        super.startXMLNode(e);\r\n        switch (e.name) {\r\n            case \"xsd:element\":\r\n                const xsdXMLNode = new XSDXMLNode(e);\r\n                if (!this.schema.root && this._rootName === e.$.name) {\r\n                    this.schema.root = xsdXMLNode;\r\n                }\r\n                if (this.xsdStack.depth()) {\r\n                    this.xsdStack.top()!.append(xsdXMLNode);\r\n                }\r\n                this.xsdStack.push(xsdXMLNode);\r\n                break;\r\n            case \"xsd:simpleType\":\r\n                this.simpleType = new XSDSimpleType(e);\r\n                break;\r\n            default:\r\n                break;\r\n        }\r\n    }\r\n\r\n    endXMLNode(e: XMLNode) {\r\n        switch (e!.name) {\r\n            case \"xsd:element\":\r\n                const xsdXMLNode = this.xsdStack.pop()!;\r\n                xsdXMLNode.fix();\r\n                break;\r\n            case \"xsd:simpleType\":\r\n                break;\r\n            default:\r\n                break;\r\n        }\r\n        super.endXMLNode(e);\r\n    }\r\n}\r\n\r\nexport function parseXSD2(xml: string, rootName): XSDSchema {\r\n    const saxParser = new XSDParser2(rootName);\r\n    saxParser.parse(xml);\r\n    return saxParser.schema;\r\n}\r\n", "import { StateObject, StringAnyMap } from \"@hpcc-js/util\";\r\nimport { WsWorkunits } from \"../services/wsWorkunits.ts\";\r\nimport { Workunit } from \"./workunit.ts\";\r\n\r\nexport interface AttributeEx extends WsWorkunits.Property {\r\n    FormattedEnd?: string;\r\n}\r\n\r\nexport class Attribute extends StateObject<AttributeEx, AttributeEx> implements AttributeEx {\r\n    readonly scope: BaseScope;\r\n\r\n    get properties(): AttributeEx { return this.get(); }\r\n    get Name(): string { return this.get(\"Name\"); }\r\n    get RawValue(): string { return this.get(\"RawValue\"); }\r\n    get Formatted(): string { return this.get(\"Formatted\"); }\r\n    get FormattedEnd(): string | undefined { return this.get(\"FormattedEnd\"); }\r\n    get Measure(): string { return this.get(\"Measure\"); }\r\n    get Creator(): string { return this.get(\"Creator\"); }\r\n    get CreatorType(): string { return this.get(\"CreatorType\"); }\r\n\r\n    constructor(scope: BaseScope, attribute: WsWorkunits.Property) {\r\n        super();\r\n        this.scope = scope;\r\n        this.set(attribute);\r\n    }\r\n}\r\n\r\nexport interface ScopeEx extends WsWorkunits.Scope {\r\n}\r\n\r\nexport interface IScopeVisitor {\r\n    start(scope: BaseScope): boolean;\r\n    end(scope: BaseScope): boolean;\r\n}\r\n\r\nexport class BaseScope extends StateObject<ScopeEx, ScopeEx> implements ScopeEx {\r\n    protected _attributeMap: { [key: string]: Attribute } = {};\r\n    protected _children: BaseScope[] = [];\r\n\r\n    get properties(): ScopeEx { return this.get(); }\r\n    get ScopeName(): string { return this.get(\"ScopeName\"); }\r\n    get Id(): string { return this.get(\"Id\"); }\r\n    get ScopeType(): string { return this.get(\"ScopeType\"); }\r\n    get Properties(): WsWorkunits.Properties { return this.get(\"Properties\", { Property: [] }); }\r\n    get Notes(): WsWorkunits.Notes { return this.get(\"Notes\", { Note: [] }); }\r\n    get SinkActivity(): string { return this.get(\"SinkActivity\"); }\r\n    get CAttributes(): Attribute[] {\r\n        //  Match \"started\" and time elapsed\r\n        const retVal: Attribute[] = [];\r\n        const timeElapsed: { start: AttributeEx | null, end: AttributeEx | null } = {\r\n            start: null,\r\n            end: null\r\n        };\r\n        this.Properties.Property.forEach((scopeAttr) => {\r\n            if (scopeAttr.Measure === \"ts\" && scopeAttr.Name.indexOf(\"Started\") >= 0) {\r\n                timeElapsed.start = scopeAttr;\r\n            } else if (this.ScopeName && scopeAttr.Measure === \"ts\" && scopeAttr.Name.indexOf(\"Finished\") >= 0) {\r\n                timeElapsed.end = scopeAttr;\r\n            } else {\r\n                retVal.push(new Attribute(this, scopeAttr));\r\n            }\r\n        });\r\n        if (timeElapsed.start && timeElapsed.end) {\r\n            // const endTime = parser(timeElapsed.start.Formatted);\r\n            // endTime!.setMilliseconds(endTime!.getMilliseconds() + (+timeElapsed.elapsed.RawValue) / 1000000);\r\n            // timeElapsed.start.FormattedEnd = formatter(endTime!);\r\n            timeElapsed.start.FormattedEnd = timeElapsed.end.Formatted;\r\n            retVal.push(new Attribute(this, timeElapsed.start));\r\n        } else if (timeElapsed.start) {\r\n            retVal.push(new Attribute(this, timeElapsed.start));\r\n        } else if (timeElapsed.end) {\r\n            retVal.push(new Attribute(this, timeElapsed.end));  //  Should not happen?\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    constructor(scope: WsWorkunits.Scope) {\r\n        super();\r\n        this.update(scope);\r\n    }\r\n\r\n    update(scope: WsWorkunits.Scope) {\r\n        this.set(scope);\r\n        this.CAttributes.forEach((attr) => {\r\n            this._attributeMap[attr.Name] = attr;\r\n        });\r\n        this.Properties.Property = [];\r\n        for (const key in this._attributeMap) {\r\n            if (this._attributeMap.hasOwnProperty(key)) {\r\n                this.Properties.Property.push(this._attributeMap[key].properties);\r\n            }\r\n        }\r\n    }\r\n\r\n    parentScope(): string {\r\n        const scopeParts = this.ScopeName.split(\":\");\r\n        scopeParts.pop();\r\n        return scopeParts.join(\":\");\r\n    }\r\n\r\n    children(): BaseScope[];\r\n    children(_: BaseScope[]): BaseScope;\r\n    children(_?: BaseScope[]): BaseScope[] | BaseScope {\r\n        if (!arguments.length) return this._children;\r\n        this._children = _!;\r\n        return this;\r\n    }\r\n\r\n    walk(visitor: IScopeVisitor): boolean {\r\n        if (visitor.start(this)) return true;\r\n        for (const scope of this.children()) {\r\n            if (scope.walk(visitor)) {\r\n                return true;\r\n            }\r\n        }\r\n        return visitor.end(this);\r\n    }\r\n\r\n    formattedAttrs(): StringAnyMap {\r\n        const retVal: StringAnyMap = {};\r\n        for (const attr in this._attributeMap) {\r\n            retVal[attr] = this._attributeMap[attr].Formatted || this._attributeMap[attr].RawValue;\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    rawAttrs(): StringAnyMap {\r\n        const retVal: StringAnyMap = {};\r\n        for (const attr in this._attributeMap) {\r\n            retVal[attr] = this._attributeMap[attr].RawValue;\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    hasAttr(name: string): boolean {\r\n        return this._attributeMap[name] !== undefined;\r\n    }\r\n\r\n    attr(name: string): Attribute {\r\n        return this._attributeMap[name] || new Attribute(this, {\r\n            Creator: \"\",\r\n            CreatorType: \"\",\r\n            Formatted: \"\",\r\n            Measure: \"\",\r\n            Name: \"\",\r\n            RawValue: \"\"\r\n        });\r\n    }\r\n\r\n    attrMeasure(name: string): string {\r\n        return this._attributeMap[name].Measure;\r\n    }\r\n\r\n    calcTooltip(parentScope?: BaseScope) {\r\n        let label = \"\";\r\n        const rows: string[] = [];\r\n        label = this.Id;\r\n        rows.push(`<tr><td class=\"key\">ID:</td><td class=\"value\">${this.Id}</td></tr>`);\r\n        if (parentScope) {\r\n            rows.push(`<tr><td class=\"key\">Parent ID:</td><td class=\"value\">${parentScope.Id}</td></tr>`);\r\n        }\r\n        rows.push(`<tr><td class=\"key\">Scope:</td><td class=\"value\">${this.ScopeName}</td></tr>`);\r\n        const attrs = this.formattedAttrs();\r\n        for (const key in attrs) {\r\n            if (key === \"Label\") {\r\n                label = attrs[key];\r\n            } else {\r\n                rows.push(`<tr><td class=\"key\">${key}</td><td class=\"value\">${attrs[key]}</td></tr>`);\r\n            }\r\n        }\r\n\r\n        return `<div class=\"eclwatch_WUGraph_Tooltip\" style=\"max-width:480px\">\r\n            <h4 align=\"center\">${label}</h4>\r\n            <table>\r\n                ${rows.join(\"\")}\r\n            </table>\r\n        </div>`;\r\n    }\r\n}\r\n\r\nexport class Scope extends BaseScope {\r\n    readonly wu: Workunit;\r\n\r\n    constructor(wu: Workunit, scope: WsWorkunits.Scope) {\r\n        super(scope);\r\n        this.wu = wu;\r\n    }\r\n}\r\n", "import { StateObject } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { WorkunitsService, WsWorkunits } from \"../services/wsWorkunits.ts\";\r\n\r\nexport interface ECLSourceFileEx extends WsWorkunits.ECLSourceFile {\r\n    Wuid: string;\r\n}\r\n\r\nexport class SourceFile extends StateObject<ECLSourceFileEx, ECLSourceFileEx> implements ECLSourceFileEx {\r\n    protected connection: WorkunitsService;\r\n\r\n    get properties(): WsWorkunits.ECLSourceFile { return this.get(); }\r\n    get Wuid(): string { return this.get(\"Wuid\"); }\r\n    get FileCluster(): string { return this.get(\"FileCluster\"); }\r\n    get Name(): string { return this.get(\"Name\"); }\r\n    get IsSuperFile(): boolean { return this.get(\"IsSuperFile\"); }\r\n    get Subs(): number { return this.get(\"Subs\"); }\r\n    get Count(): number { return this.get(\"Count\"); }\r\n    get ECLSourceFiles(): WsWorkunits.ECLSourceFiles { return this.get(\"ECLSourceFiles\"); }\r\n\r\n    constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, eclSourceFile: WsWorkunits.ECLSourceFile) {\r\n        super();\r\n        if (optsConnection instanceof WorkunitsService) {\r\n            this.connection = optsConnection;\r\n        } else {\r\n            this.connection = new WorkunitsService(optsConnection);\r\n        }\r\n\r\n        this.set({\r\n            Wuid: wuid,\r\n            ...eclSourceFile\r\n        });\r\n    }\r\n}\r\n", "import { espTime2Seconds, StateObject } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { WorkunitsService, WsWorkunits } from \"../services/wsWorkunits.ts\";\r\n\r\nexport interface ECLTimerEx extends WsWorkunits.ECLTimer {\r\n    Wuid: string;\r\n    Seconds: number;\r\n    HasSubGraphId: boolean;\r\n}\r\n\r\nexport class Timer extends StateObject<ECLTimerEx, ECLTimerEx> implements ECLTimerEx {\r\n    protected connection: WorkunitsService;\r\n\r\n    get properties(): WsWorkunits.ECLTimer { return this.get(); }\r\n    get Wuid(): string { return this.get(\"Wuid\"); }\r\n    get Name(): string { return this.get(\"Name\"); }\r\n    get Value(): string { return this.get(\"Value\"); }\r\n    get Seconds(): number { return this.get(\"Seconds\"); }\r\n    get GraphName(): string { return this.get(\"GraphName\"); }\r\n    get SubGraphId(): number { return this.get(\"SubGraphId\"); }\r\n    get HasSubGraphId(): boolean { return this.get(\"HasSubGraphId\"); }\r\n    get count(): number { return this.get(\"count\"); }\r\n    get Timestamp(): number { return this.get(\"Timestamp\"); }\r\n    get When(): string { return this.get(\"When\"); }\r\n\r\n    constructor(optsConnection: IOptions | IConnection | WorkunitsService, wuid: string, eclTimer: WsWorkunits.ECLTimer) {\r\n        super();\r\n        if (optsConnection instanceof WorkunitsService) {\r\n            this.connection = optsConnection;\r\n        } else {\r\n            this.connection = new WorkunitsService(optsConnection);\r\n        }\r\n\r\n        const secs = espTime2Seconds(eclTimer.Value);\r\n        this.set({\r\n            Wuid: wuid,\r\n            Seconds: Math.round(secs * 1000) / 1000,\r\n            HasSubGraphId: eclTimer.SubGraphId !== undefined,\r\n            ...eclTimer\r\n        });\r\n    }\r\n}\r\n", "import { Cache, scopedLogger, StateObject } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { DFUService, WsDfu } from \"../services/wsDFU.ts\";\r\nimport { ESPExceptions } from \"../espConnection.ts\";\r\n\r\nconst logger = scopedLogger(\"logicalFile.ts\");\r\n\r\nexport class LogicalFileCache extends Cache<{ BaseUrl: string, Cluster: string, Name: string }, LogicalFile> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return `${obj.BaseUrl}-${obj.Cluster}-${obj.Name}`;\r\n        });\r\n    }\r\n}\r\nconst _store = new LogicalFileCache();\r\n\r\nexport interface DFUPartEx extends WsDfu.DFUPart {\r\n    //  From WsDfu.DFUFilePartsOnCluster  ---\r\n    Cluster: string;\r\n    BaseDir: string;\r\n    ReplicateDir: string;\r\n    Replicate: boolean;\r\n    CanReplicate: boolean;\r\n}\r\n\r\nexport interface FileDetailEx extends WsDfu.FileDetail {\r\n    Cluster: string;\r\n    StateID?: number;\r\n}\r\n\r\nexport class LogicalFile extends StateObject<FileDetailEx, FileDetailEx> implements FileDetailEx {\r\n    protected connection: DFUService;\r\n    get BaseUrl() { return this.connection.baseUrl; }\r\n\r\n    get Cluster(): string { return this.get(\"Cluster\"); }\r\n    get Name(): string { return this.get(\"Name\"); }\r\n\r\n    get Filename(): string { return this.get(\"Filename\"); }\r\n    get Prefix(): string { return this.get(\"Prefix\"); }\r\n    get NodeGroup(): string { return this.get(\"NodeGroup\"); }\r\n    get NumParts(): number { return this.get(\"NumParts\"); }\r\n    get Description(): string { return this.get(\"Description\"); }\r\n    get Dir(): string { return this.get(\"Dir\"); }\r\n    get PathMask(): string { return this.get(\"PathMask\"); }\r\n    get Filesize(): string { return this.get(\"Filesize\"); }\r\n    get FileSizeInt64(): number { return this.get(\"FileSizeInt64\"); }\r\n    get RecordSize(): string { return this.get(\"RecordSize\"); }\r\n    get RecordCount(): string { return this.get(\"RecordCount\"); }\r\n    get RecordSizeInt64(): number { return this.get(\"RecordSizeInt64\"); }\r\n    get RecordCountInt64(): number { return this.get(\"RecordCountInt64\"); }\r\n    get Wuid(): string { return this.get(\"Wuid\"); }\r\n    get Owner(): string { return this.get(\"Owner\"); }\r\n    get JobName(): string { return this.get(\"JobName\"); }\r\n    get Persistent(): string { return this.get(\"Persistent\"); }\r\n    get Format(): string { return this.get(\"Format\"); }\r\n    get MaxRecordSize(): string { return this.get(\"MaxRecordSize\"); }\r\n    get CsvSeparate(): string { return this.get(\"CsvSeparate\"); }\r\n    get CsvQuote(): string { return this.get(\"CsvQuote\"); }\r\n    get CsvTerminate(): string { return this.get(\"CsvTerminate\"); }\r\n    get CsvEscape(): string { return this.get(\"CsvEscape\"); }\r\n    get Modified(): string { return this.get(\"Modified\"); }\r\n    get Ecl(): string { return this.get(\"Ecl\"); }\r\n    get Stat(): WsDfu.Stat { return this.get(\"Stat\"); }\r\n    get DFUFilePartsOnClusters(): WsDfu.DFUFilePartsOnClusters { return this.get(\"DFUFilePartsOnClusters\"); }\r\n    get isSuperfile(): boolean { return this.get(\"isSuperfile\"); }\r\n    get ShowFileContent(): boolean { return this.get(\"ShowFileContent\"); }\r\n    get subfiles(): WsDfu.subfiles { return this.get(\"subfiles\"); }\r\n    get Superfiles(): WsDfu.Superfiles { return this.get(\"Superfiles\"); }\r\n    get ProtectList(): WsDfu.ProtectList { return this.get(\"ProtectList\"); }\r\n    get FromRoxieCluster(): boolean { return this.get(\"FromRoxieCluster\"); }\r\n    get Graphs(): WsDfu.Graphs { return this.get(\"Graphs\"); }\r\n    get UserPermission(): string { return this.get(\"UserPermission\"); }\r\n    get ContentType(): string { return this.get(\"ContentType\"); }\r\n    get CompressedFileSize(): number { return this.get(\"CompressedFileSize\"); }\r\n    get PercentCompressed(): string { return this.get(\"PercentCompressed\"); }\r\n    get IsCompressed(): boolean { return this.get(\"IsCompressed\"); }\r\n    get BrowseData(): boolean { return this.get(\"BrowseData\"); }\r\n    get jsonInfo(): string { return this.get(\"jsonInfo\"); }\r\n    get binInfo(): WsDfu.base64Binary { return this.get(\"binInfo\"); }\r\n    get PackageID(): string { return this.get(\"PackageID\"); }\r\n    get Partition(): WsDfu.Partition { return this.get(\"Partition\"); }\r\n    get Blooms(): WsDfu.Blooms { return this.get(\"Blooms\"); }\r\n    get ExpireDays(): number { return this.get(\"ExpireDays\"); }\r\n    get KeyType(): string { return this.get(\"KeyType\"); }\r\n    get IsRestricted(): boolean { return this.get(\"IsRestricted\"); }\r\n    get AtRestCost(): number { return this.get(\"AtRestCost\"); }\r\n    get AccessCost(): number { return this.get(\"AccessCost\"); }\r\n    get StateID(): number { return this.get(\"StateID\"); }\r\n    get ExpirationDate(): string { return this.get(\"ExpirationDate\"); }\r\n    get ExtendedIndexInfo(): WsDfu.ExtendedIndexInfo { return this.get(\"ExtendedIndexInfo\"); }\r\n    get CompressionType(): string { return this.get(\"CompressionType\"); }\r\n\r\n    get properties(): FileDetailEx { return this.get(); }\r\n\r\n    static attach(optsConnection: IOptions | IConnection | DFUService, Cluster: string, Name: string, state?: FileDetailEx): LogicalFile {\r\n        const retVal: LogicalFile = _store.get({ BaseUrl: optsConnection.baseUrl, Cluster, Name }, () => {\r\n            return new LogicalFile(optsConnection, Cluster, Name);\r\n        });\r\n        if (state) {\r\n            retVal.set(state);\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    protected constructor(optsConnection: IOptions | IConnection | DFUService, Cluster: string, Name: string) {\r\n        super();\r\n        if (optsConnection instanceof DFUService) {\r\n            this.connection = optsConnection;\r\n        } else {\r\n            this.connection = new DFUService(optsConnection);\r\n        }\r\n\r\n        this.clear({\r\n            Cluster,\r\n            Name\r\n        });\r\n    }\r\n\r\n    filePartsOnCluster() {\r\n        return [...(this.DFUFilePartsOnClusters?.DFUFilePartsOnCluster || [])];\r\n    }\r\n\r\n    fileParts() {\r\n        const retVal: DFUPartEx[] = [];\r\n        for (const poc of this.DFUFilePartsOnClusters?.DFUFilePartsOnCluster || []) {\r\n            for (const part of poc?.DFUFileParts?.DFUPart || []) {\r\n                const row = { ...poc, ...part };\r\n                delete row.DFUFileParts;\r\n                retVal.push(row);\r\n            }\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    update(request: Partial<WsDfu.DFUInfoRequest>): Promise<WsDfu.DFUInfoResponse> {\r\n        return this.connection.DFUInfo({\r\n            ...request,\r\n            ...{\r\n                Cluster: this.Cluster,\r\n                Name: this.Name\r\n            }\r\n        }).then((response) => {\r\n            this.set({\r\n                Cluster: this.Cluster,\r\n                ...response.FileDetail\r\n            });\r\n            return response;\r\n        });\r\n    }\r\n\r\n    fetchInfo(): Promise<WsDfu.FileDetail> {\r\n        return this.connection.DFUInfo({ Cluster: this.Cluster, Name: this.Name }).then(response => {\r\n            this.set({\r\n                Cluster: this.Cluster,\r\n                ...response.FileDetail,\r\n                ProtectList: response?.FileDetail?.ProtectList ?? { DFUFileProtect: [] }\r\n            });\r\n            return response.FileDetail;\r\n        }).catch((e: ESPExceptions) => {\r\n            //  deleted  ---\r\n            const fileMissing = e.Exception.some((exception) => {\r\n                if (exception.Code === 20038) {\r\n                    this.set(\"Name\", this.Name + \" (Deleted)\");\r\n                    this.set(\"StateID\", 999);\r\n                    return true;\r\n                }\r\n                return false;\r\n            });\r\n            if (!fileMissing) {\r\n                logger.warning(`Unexpected ESP exception: ${e.message}`);\r\n                throw e;\r\n            }\r\n            return {} as FileDetailEx;\r\n        });\r\n    }\r\n\r\n    fetchDefFile(format: WsDfu.DFUDefFileFormat): Promise<string> {\r\n        return this.connection.DFUFile({ Name: this.Name, Format: format });\r\n    }\r\n\r\n    fetchAllLogicalFiles(): Promise<string[]> {\r\n        return this.connection.recursiveFetchLogicalFiles([this]);\r\n    }\r\n\r\n    fetchListHistory(): Promise<WsDfu.Origin[]> {\r\n        return this.connection.ListHistory({ Name: this.Name }).then(response => {\r\n            return response?.History?.Origin || [];\r\n        });\r\n    }\r\n\r\n    eraseHistory(): Promise<WsDfu.Origin[]> {\r\n        return this.connection.EraseHistory({ Name: this.Name }).then(response => {\r\n            return response?.History?.Origin || [];\r\n        });\r\n    }\r\n}\r\n", "import { Cache, StateObject } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { WsMachine, MachineService } from \"../services/wsMachine.ts\";\r\n\r\nexport class MachineCache extends Cache<{ Address: string }, Machine> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return obj.Address;\r\n        });\r\n    }\r\n}\r\nconst _machines = new MachineCache();\r\n\r\nexport interface MachineInfoEx extends WsMachine.MachineInfoEx {\r\n}\r\n\r\nexport class Machine extends StateObject<MachineInfoEx, MachineInfoEx> implements MachineInfoEx {\r\n    protected connection: MachineService;\r\n\r\n    get Address(): string { return this.get(\"Address\"); }\r\n    get ConfigAddress(): string { return this.get(\"ConfigAddress\"); }\r\n    get Name(): string { return this.get(\"Name\"); }\r\n    get ProcessType(): string { return this.get(\"ProcessType\"); }\r\n    get DisplayType(): string { return this.get(\"DisplayType\"); }\r\n    get Description(): string { return this.get(\"Description\"); }\r\n    get AgentVersion(): string { return this.get(\"AgentVersion\"); }\r\n    get Contact(): string { return this.get(\"Contact\"); }\r\n    get Location(): string { return this.get(\"Location\"); }\r\n    get UpTime(): string { return this.get(\"UpTime\"); }\r\n    get ComponentName(): string { return this.get(\"ComponentName\"); }\r\n    get ComponentPath(): string { return this.get(\"ComponentPath\"); }\r\n    get RoxieState(): string { return this.get(\"RoxieState\"); }\r\n    get RoxieStateDetails(): string { return this.get(\"RoxieStateDetails\"); }\r\n    get OS(): number { return this.get(\"OS\"); }\r\n    get ProcessNumber(): number { return this.get(\"ProcessNumber\"); }\r\n    get Channels(): number { return this.get(\"Channels\"); }\r\n    get Processors(): WsMachine.Processors { return this.get(\"Processors\"); }\r\n    get Storage(): WsMachine.Storage { return this.get(\"Storage\"); }\r\n    get Running(): WsMachine.Running { return this.get(\"Running\"); }\r\n    get PhysicalMemory(): WsMachine.PhysicalMemory { return this.get(\"PhysicalMemory\"); }\r\n    get VirtualMemory(): WsMachine.VirtualMemory { return this.get(\"VirtualMemory\"); }\r\n    get ComponentInfo(): WsMachine.ComponentInfo { return this.get(\"ComponentInfo\"); }\r\n    get Exception(): string { return this.get(\"Exception\"); }\r\n\r\n    static attach(optsConnection: IOptions | IConnection | MachineService, address: string, state?: WsMachine.MachineInfoEx): Machine {\r\n        const retVal: Machine = _machines.get({ Address: address }, () => {\r\n            return new Machine(optsConnection);\r\n        });\r\n        if (state) {\r\n            retVal.set(state);\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    private constructor(optsConnection: IOptions | IConnection | MachineService) {\r\n        super();\r\n        if (optsConnection instanceof MachineService) {\r\n            this.connection = optsConnection;\r\n        } else {\r\n            this.connection = new MachineService(optsConnection);\r\n        }\r\n    }\r\n}\r\n", "import { Cache, StateObject, scopedLogger, RecursivePartial } from \"@hpcc-js/util\";\r\nimport { format as d3Format } from \"d3-format\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { EclService, IWsEclRequest, IWsEclResponse, IWsEclResult } from \"../services/wsEcl.ts\";\r\nimport { WorkunitsService, WsWorkunits } from \"../services/wsWorkunits.ts\";\r\nimport { Topology } from \"./topology.ts\";\r\nimport { Workunit, IScope } from \"./workunit.ts\";\r\nimport { QueryGraph } from \"./queryGraph.ts\";\r\n\r\nexport { QueryGraph };\r\n\r\nconst logger = scopedLogger(\"@hpcc-js/comms/ecl/query.ts\");\r\n\r\nconst siFormatter = d3Format(\"~s\");\r\n\r\nfunction isNumber(n) {\r\n    return !isNaN(parseFloat(n)) && !isNaN(n - 0);\r\n}\r\nexport interface QueryEx extends WsWorkunits.WUQueryDetailsResponse {\r\n    BaseUrl: string;\r\n}\r\n\r\nclass QueryCache extends Cache<QueryEx, Query> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return Cache.hash([obj.QueryId, obj.QuerySet]);\r\n        });\r\n    }\r\n}\r\nconst _queries = new QueryCache();\r\n\r\nexport class Query extends StateObject<QueryEx, QueryEx> implements QueryEx {\r\n    protected wsWorkunitsService: WorkunitsService;\r\n    get BaseUrl() { return this.wsWorkunitsService.baseUrl; }\r\n    protected topology: Topology;\r\n    protected _requestSchema: IWsEclRequest;\r\n    protected _responseSchema: IWsEclResponse;\r\n\r\n    get properties(): WsWorkunits.WUQueryDetailsResponse { return this.get(); }\r\n    get Exceptions(): WsWorkunits.Exceptions { return this.get(\"Exceptions\"); }\r\n    get QueryId(): string { return this.get(\"QueryId\"); }\r\n    get QuerySet(): string { return this.get(\"QuerySet\"); }\r\n    get QueryName(): string { return this.get(\"QueryName\"); }\r\n    get Wuid(): string { return this.get(\"Wuid\"); }\r\n    get Dll(): string { return this.get(\"Dll\"); }\r\n    get Suspended(): boolean { return this.get(\"Suspended\"); }\r\n    get Activated(): boolean { return this.get(\"Activated\"); }\r\n    get SuspendedBy(): string { return this.get(\"SuspendedBy\"); }\r\n    get Clusters(): WsWorkunits.Clusters2 { return this.get(\"Clusters\"); }\r\n    get PublishedBy(): string { return this.get(\"PublishedBy\"); }\r\n    get Comment() { return this.get(\"Comment\"); }\r\n    get LogicalFiles(): WsWorkunits.LogicalFiles { return this.get(\"LogicalFiles\"); }\r\n    get SuperFiles(): WsWorkunits.SuperFiles { return this.get(\"SuperFiles\"); }\r\n    get IsLibrary(): boolean { return this.get(\"IsLibrary\"); }\r\n    get Priority(): string { return this.get(\"Priority\"); }\r\n    get WUSnapShot(): string { return this.get(\"WUSnapShot\"); }\r\n    get CompileTime(): string { return this.get(\"CompileTime\"); }\r\n    get LibrariesUsed(): WsWorkunits.LibrariesUsed { return this.get(\"LibrariesUsed\"); }\r\n    get CountGraphs(): number { return this.get(\"CountGraphs\"); }\r\n    get ResourceURLCount(): number { return this.get(\"ResourceURLCount\"); }\r\n    get WsEclAddresses(): WsWorkunits.WsEclAddresses { return this.get(\"WsEclAddresses\"); }\r\n    get WUGraphs(): WsWorkunits.WUGraphs { return this.get(\"WUGraphs\"); }\r\n    get WUTimers(): WsWorkunits.WUTimers { return this.get(\"WUTimers\"); }\r\n    get PriorityID(): number { return this.get(\"PriorityID\"); }\r\n\r\n    private constructor(optsConnection: IOptions | IConnection | WorkunitsService, querySet: string, queryID: string, queryDetails?: WsWorkunits.WUQueryDetailsResponse) {\r\n        super();\r\n        if (optsConnection instanceof WorkunitsService) {\r\n            this.wsWorkunitsService = optsConnection;\r\n        } else {\r\n            this.wsWorkunitsService = new WorkunitsService(optsConnection);\r\n        }\r\n        this.topology = Topology.attach(this.wsWorkunitsService.opts());\r\n        this.set({\r\n            QuerySet: querySet,\r\n            QueryId: queryID,\r\n            ...queryDetails\r\n        } as QueryEx);\r\n    }\r\n\r\n    static attach(optsConnection: IOptions | IConnection, querySet: string, queryId: string, state?: QueryEx): Query {\r\n        const retVal: Query = _queries.get({ BaseUrl: optsConnection.baseUrl, QuerySet: querySet, QueryId: queryId } as QueryEx, () => {\r\n            return new Query(optsConnection, querySet, queryId);\r\n        });\r\n        if (state) {\r\n            retVal.set(state);\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    private _eclService: Promise<EclService>;\r\n    protected async wsEclService(): Promise<EclService | undefined> {\r\n        if (!this._eclService) {\r\n            this._eclService = this.topology.fetchServices({}).then(services => {\r\n                for (const espServer of services?.TpEspServers?.TpEspServer ?? []) {\r\n                    for (const binding of espServer?.TpBindings?.TpBinding ?? []) {\r\n                        if (binding?.Service === \"ws_ecl\") {\r\n                            const baseUrl = `${binding.Protocol}://${globalThis.location.hostname}:${binding.Port}`;\r\n                            return new EclService({ baseUrl });\r\n                        }\r\n                    }\r\n                }\r\n                return undefined;\r\n            });\r\n        }\r\n        return this._eclService;\r\n    }\r\n\r\n    private async fetchDetails(): Promise<void> {\r\n        const queryDetails = await this.wsWorkunitsService.WUQueryDetails({\r\n            QuerySet: this.QuerySet,\r\n            QueryId: this.QueryId,\r\n            IncludeStateOnClusters: true,\r\n            IncludeSuperFiles: true,\r\n            IncludeWsEclAddresses: true,\r\n            CheckAllNodes: false\r\n        });\r\n        this.set({ ...queryDetails } as QueryEx);\r\n    }\r\n\r\n    private async fetchRequestSchema(): Promise<void> {\r\n        const wsEclService = await this.wsEclService();\r\n        try {\r\n            this._requestSchema = await wsEclService?.requestJson(this.QuerySet, this.QueryId) ?? [];\r\n        } catch (e: any) {\r\n            //  See:  https://track.hpccsystems.com/browse/HPCC-29827\r\n            logger.debug(e.message ?? e);\r\n            this._requestSchema = [];\r\n        }\r\n    }\r\n\r\n    private async fetchResponseSchema(): Promise<void> {\r\n        const wsEclService = await this.wsEclService();\r\n        try {\r\n            this._responseSchema = await wsEclService?.responseJson(this.QuerySet, this.QueryId) ?? {};\r\n        } catch (e: any) {\r\n            //  See:  https://track.hpccsystems.com/browse/HPCC-29827\r\n            logger.debug(e.message ?? e);\r\n            this._responseSchema = {};\r\n        }\r\n    }\r\n\r\n    private async fetchSchema(): Promise<void> {\r\n        await Promise.all([this.fetchRequestSchema(), this.fetchResponseSchema()]);\r\n    }\r\n\r\n    fetchSummaryStats() {\r\n        return this.wsWorkunitsService.WUQueryGetSummaryStats({ Target: this.QuerySet, QueryId: this.QueryId });\r\n    }\r\n\r\n    fetchGraph(GraphName: string = \"\", SubGraphId: string = \"\"): Promise<QueryGraph> {\r\n        return this.wsWorkunitsService.WUQueryGetGraph({ Target: this.QuerySet, QueryId: this.QueryId, GraphName, SubGraphId }).then(response => {\r\n            const graph = new QueryGraph();\r\n            let first = true;\r\n            for (const graphItem of response?.Graphs?.ECLGraphEx || []) {\r\n                if (first) {\r\n                    graph.load(graphItem.Graph);\r\n                    first = false;\r\n                } else {\r\n                    graph.merge(graphItem.Graph);\r\n                }\r\n            }\r\n            return graph;\r\n        });\r\n    }\r\n\r\n    fetchDetailsNormalized(request: RecursivePartial<WsWorkunits.WUDetails> = {}): Promise<{ meta: WsWorkunits.WUDetailsMetaResponse | undefined, columns: { [id: string]: any } | undefined, data: IScope[] | undefined }> {\r\n        const wu = Workunit.attach(this.wsWorkunitsService, this.Wuid);\r\n        if (wu) {\r\n            return Promise.all([this.fetchGraph(), wu.fetchDetailsMeta(), wu.fetchDetailsRaw(request)]).then(promises => {\r\n                const graph = promises[0];\r\n                const meta = promises[1];\r\n                const metrics: WsWorkunits.Scope[] = promises[2];\r\n                const data = metrics.map(metric => {\r\n                    const firstChar = metric.Id[0];\r\n                    if (firstChar === \"a\" || firstChar === \"e\") {\r\n                        const item = graph.idx[metric.Id.substring(1)];\r\n                        if (!item) {\r\n                            logger.debug(`Missing graph data for metric ID: ${metric.Id}`);\r\n                            return metric;\r\n                        }\r\n                        const existingProperties = new Set(metric.Properties.Property.map(prop => prop.Name));\r\n                        const newProperties: WsWorkunits.Property[] = [];\r\n                        for (const key in item) {\r\n                            const firstCharOfKey = key.charAt(0);\r\n                            if (firstCharOfKey !== \"_\" &&\r\n                                firstCharOfKey === firstCharOfKey.toUpperCase() &&\r\n                                !existingProperties.has(key)) {\r\n                                const value = item[key];\r\n                                const valueType = typeof value;\r\n                                if (valueType === \"string\" || valueType === \"number\" || valueType === \"boolean\") {\r\n                                    const isNum = isNumber(value);\r\n                                    let rawValue = isNum ? parseFloat(value as string) : value;\r\n                                    let formatted = value;\r\n                                    if (key.indexOf(\"Time\") >= 0) {\r\n                                        rawValue = (rawValue as number) / 1000000000;\r\n                                        formatted = siFormatter(rawValue) + \"s\";\r\n                                    }\r\n                                    newProperties.push({\r\n                                        Name: key,\r\n                                        RawValue: rawValue as any,\r\n                                        Formatted: formatted\r\n                                    } as WsWorkunits.Property);\r\n                                }\r\n                            }\r\n                        }\r\n                        if (newProperties.length > 0) {\r\n                            metric.Properties.Property.push(...newProperties);\r\n                        }\r\n                    }\r\n                    return metric;\r\n                });\r\n                return wu.normalizeDetails(meta, data);\r\n            });\r\n        }\r\n        return Promise.resolve({ meta: undefined, columns: undefined, data: undefined });\r\n    }\r\n\r\n    async submit(request: object): Promise<Array<{ [key: string]: object[] }>> {\r\n        const wsEclService = await this.wsEclService();\r\n        try {\r\n            return wsEclService?.submit(this.QuerySet, this.QueryId, request).then(results => {\r\n                for (const key in results) {\r\n                    results[key] = results[key].Row;\r\n                }\r\n                return results;\r\n            }) ?? [];\r\n        } catch (e: any) {\r\n            //  See:  https://track.hpccsystems.com/browse/HPCC-29827\r\n            logger.debug(e.message ?? e);\r\n            return [];\r\n        }\r\n    }\r\n\r\n    async refresh(): Promise<this> {\r\n        await Promise.all([\r\n            this.fetchDetails(),\r\n            this.fetchSchema()\r\n        ]);\r\n        return this;\r\n    }\r\n\r\n    requestFields(): IWsEclRequest {\r\n        if (!this._requestSchema) return [];\r\n        return this._requestSchema;\r\n    }\r\n\r\n    responseFields(): IWsEclResponse {\r\n        if (!this._responseSchema) return {};\r\n        return this._responseSchema;\r\n    }\r\n\r\n    resultNames(): string[] {\r\n        const retVal: string[] = [];\r\n        for (const key in this.responseFields()) {\r\n            retVal.push(key);\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    resultFields(resultName: string): IWsEclResult {\r\n        if (!this._responseSchema[resultName]) return [];\r\n        return this._responseSchema[resultName];\r\n    }\r\n}\r\n", "import { Cache, exists, StateCallback, StateEvents, StateObject, StatePropCallback } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { TopologyService, WsTopology } from \"../services/wsTopology.ts\";\r\nimport { TargetCluster } from \"./targetCluster.ts\";\r\n\r\nexport class TopologyCache extends Cache<{ BaseUrl: string }, Topology> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return obj.BaseUrl;\r\n        });\r\n    }\r\n}\r\nconst _topology = new TopologyCache();\r\n\r\nexport interface TopologyStateEx {\r\n    TargetClusters?: WsTopology.TpTargetCluster[];\r\n    LogicalClusters?: WsTopology.TpLogicalCluster[];\r\n    Services?: WsTopology.ServiceList;\r\n}\r\nexport class Topology extends StateObject<TopologyStateEx, TopologyStateEx> implements TopologyStateEx {\r\n    protected connection: TopologyService;\r\n    get BaseUrl() { return this.connection.baseUrl; }\r\n\r\n    //  Accessors  ---\r\n    get properties(): TopologyStateEx { return this.get(); }\r\n    get TargetClusters(): WsTopology.TpTargetCluster[] { return this.get(\"TargetClusters\"); }\r\n    get CTargetClusters(): TargetCluster[] {\r\n        return this.TargetClusters.map(tc => TargetCluster.attach(this.connection, tc.Name, tc));\r\n    }\r\n    get LogicalClusters(): WsTopology.TpLogicalCluster[] { return this.get(\"LogicalClusters\"); }\r\n    get Services(): WsTopology.ServiceList { return this.get(\"Services\"); }\r\n\r\n    static attach(optsConnection: IOptions | IConnection | TopologyService, state?: TopologyStateEx): Topology {\r\n        const retVal: Topology = _topology.get({ BaseUrl: optsConnection.baseUrl }, () => {\r\n            return new Topology(optsConnection);\r\n        });\r\n        if (state) {\r\n            retVal.set(state);\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    protected constructor(optsConnection: IOptions | IConnection | TopologyService) {\r\n        super();\r\n        if (optsConnection instanceof TopologyService) {\r\n            this.connection = optsConnection;\r\n        } else {\r\n            this.connection = new TopologyService(optsConnection);\r\n        }\r\n    }\r\n\r\n    GetESPServiceBaseURL(type: string = \"\"): Promise<string> {\r\n        return this.connection.TpServiceQuery({}).then(response => {\r\n            const rootProtocol = this.connection.protocol();\r\n            const ip = this.connection.ip();\r\n            let port = rootProtocol === \"https:\" ? \"18002\" : \"8002\";\r\n            if (exists(\"ServiceList.TpEspServers.TpEspServer\", response)) {\r\n                for (const item of response.ServiceList.TpEspServers.TpEspServer) {\r\n                    if (exists(\"TpBindings.TpBinding\", item)) {\r\n                        for (const binding of item.TpBindings.TpBinding) {\r\n                            if (binding.Service === type && binding.Protocol + \":\" === rootProtocol) {\r\n                                port = binding.Port;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return `${rootProtocol}//${ip}:${port}/`;\r\n        });\r\n    }\r\n\r\n    fetchTargetClusters(): Promise<TargetCluster[]> {\r\n        return this.connection.TpTargetClusterQuery({ Type: \"ROOT\" }).then(response => {\r\n            this.set({\r\n                TargetClusters: response.TpTargetClusters?.TpTargetCluster ?? []\r\n            });\r\n            return this.CTargetClusters;\r\n        });\r\n    }\r\n\r\n    fetchLogicalClusters(request: WsTopology.TpLogicalClusterQueryRequest = {}): Promise<WsTopology.TpLogicalCluster[]> {\r\n        return this.connection.TpLogicalClusterQuery(request).then(response => {\r\n            this.set({\r\n                LogicalClusters: response.TpLogicalClusters.TpLogicalCluster\r\n            });\r\n            return this.LogicalClusters;\r\n        });\r\n    }\r\n\r\n    fetchServices(request: WsTopology.TpServiceQueryRequest = {}): Promise<WsTopology.ServiceList> {\r\n        return this.connection.TpServiceQuery(request).then(response => {\r\n            this.set({\r\n                Services: response.ServiceList\r\n            });\r\n            return this.Services;\r\n        });\r\n    }\r\n\r\n    protected _prevRefresh;\r\n    refresh(force: boolean = false): Promise<this> {\r\n        if (!this._prevRefresh || force) {\r\n            this._prevRefresh = Promise.all([this.fetchTargetClusters(), this.fetchLogicalClusters(), this.fetchServices()]).then(() => {\r\n                return this;\r\n            });\r\n        }\r\n        return this._prevRefresh;\r\n    }\r\n\r\n    //  Monitoring  ---\r\n\r\n    //  Events  ---\r\n    on(eventID: StateEvents, propIDorCallback: StateCallback | keyof TopologyStateEx, callback?: StatePropCallback): this {\r\n        if (this.isCallback(propIDorCallback)) {\r\n            switch (eventID) {\r\n                case \"changed\":\r\n                    super.on(eventID, propIDorCallback);\r\n                    break;\r\n                default:\r\n            }\r\n        } else {\r\n            switch (eventID) {\r\n                case \"changed\":\r\n                    super.on(eventID, propIDorCallback, callback!);\r\n                    break;\r\n                default:\r\n            }\r\n        }\r\n        this._monitor();\r\n        return this;\r\n    }\r\n}\r\n", "import { Cache, StateObject } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { WsMachine, WsMachineEx, MachineService } from \"../services/wsMachine.ts\";\r\nimport { TopologyService, WsTopology } from \"../services/wsTopology.ts\";\r\nimport { Machine } from \"./machine.ts\";\r\n\r\nexport class TargetClusterCache extends Cache<{ BaseUrl: string, Name: string }, TargetCluster> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return `${obj.BaseUrl}-${obj.Name}`;\r\n        });\r\n    }\r\n}\r\nconst _targetCluster = new TargetClusterCache();\r\n\r\nexport interface TpTargetClusterEx {\r\n    MachineInfoEx: WsMachine.MachineInfoEx[];\r\n}\r\n\r\nexport type UTargetClusterState = WsTopology.TpTargetCluster & WsTopology.TpClusterNameType & TpTargetClusterEx;\r\nexport type ITargetClusterState = WsTopology.TpTargetCluster | WsTopology.TpClusterNameType | TpTargetClusterEx;\r\nexport class TargetCluster extends StateObject<UTargetClusterState, ITargetClusterState> implements UTargetClusterState {\r\n    protected connection: TopologyService;\r\n    protected machineConnection: MachineService;\r\n    get BaseUrl() { return this.connection.baseUrl; }\r\n\r\n    get Name(): string { return this.get(\"Name\"); }\r\n    get Prefix(): string { return this.get(\"Prefix\"); }\r\n    get Type(): string { return this.get(\"Type\"); }\r\n    get IsDefault(): boolean { return this.get(\"IsDefault\"); }\r\n    get TpClusters(): WsTopology.TpClusters { return this.get(\"TpClusters\"); }\r\n    get TpEclCCServers(): WsTopology.TpEclCCServers { return this.get(\"TpEclCCServers\"); }\r\n    get TpEclServers(): WsTopology.TpEclServers { return this.get(\"TpEclServers\"); }\r\n    get TpEclAgents(): WsTopology.TpEclAgents { return this.get(\"TpEclAgents\"); }\r\n    get TpEclSchedulers(): WsTopology.TpEclSchedulers { return this.get(\"TpEclSchedulers\"); }\r\n    get MachineInfoEx(): WsMachine.MachineInfoEx[] { return this.get(\"MachineInfoEx\", []); }\r\n    get CMachineInfoEx(): Machine[] {\r\n        return this.MachineInfoEx.map(machineInfoEx => Machine.attach(this.machineConnection, machineInfoEx.Address, machineInfoEx));\r\n    }\r\n\r\n    static attach(optsConnection: IOptions | IConnection | TopologyService, name: string, state?: ITargetClusterState): TargetCluster {\r\n        const retVal: TargetCluster = _targetCluster.get({ BaseUrl: optsConnection.baseUrl, Name: name }, () => {\r\n            return new TargetCluster(optsConnection, name);\r\n        });\r\n        if (state) {\r\n            retVal.set(state);\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    protected constructor(optsConnection: IOptions | IConnection | TopologyService, name: string) {\r\n        super();\r\n        if (optsConnection instanceof TopologyService) {\r\n            this.connection = optsConnection;\r\n            this.machineConnection = new MachineService(optsConnection.connectionOptions());\r\n        } else {\r\n            this.connection = new TopologyService(optsConnection);\r\n            this.machineConnection = new MachineService(optsConnection);\r\n        }\r\n        this.clear({\r\n            Name: name\r\n        });\r\n    }\r\n\r\n    fetchMachines(request: WsMachine.GetTargetClusterInfoRequest = {}): Promise<Machine[]> {\r\n        return this.machineConnection.GetTargetClusterInfo({\r\n            TargetClusters: {\r\n                Item: [`${this.Type}:${this.Name}`]\r\n            },\r\n            ...request\r\n        }).then(response => {\r\n            const retVal: WsMachine.MachineInfoEx[] = [];\r\n            for (const machineInfo of response.TargetClusterInfoList.TargetClusterInfo) {\r\n                for (const machineInfoEx of machineInfo.Processes.MachineInfoEx) {\r\n                    retVal.push(machineInfoEx);\r\n                }\r\n            }\r\n            this.set(\"MachineInfoEx\", retVal);\r\n            return this.CMachineInfoEx;\r\n        });\r\n    }\r\n\r\n    machineStats(): { maxDisk: number; meanDisk: number } {\r\n        let maxDisk = 0;\r\n        let totalFree = 0;\r\n        let total = 0;\r\n        for (const machine of this.CMachineInfoEx) {\r\n            for (const storageInfo of machine.Storage.StorageInfo) {\r\n                totalFree += storageInfo.Available;\r\n                total += storageInfo.Total;\r\n                const usage = 1 - storageInfo.Available / storageInfo.Total;\r\n                if (usage > maxDisk) {\r\n                    maxDisk = usage;\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            maxDisk,\r\n            meanDisk: 1 - (total ? totalFree / total : 1)\r\n        };\r\n    }\r\n\r\n    fetchUsage(): Promise<WsMachineEx.TargetClusterUsage[]> {\r\n        return this.machineConnection.GetTargetClusterUsageEx([this.Name]);\r\n    }\r\n}\r\n\r\nexport function targetClusters(optsConnection: IOptions | IConnection | TopologyService): Promise<TargetCluster[]> {\r\n    let connection: TopologyService;\r\n    if (optsConnection instanceof TopologyService) {\r\n        connection = optsConnection;\r\n    } else {\r\n        connection = new TopologyService(optsConnection);\r\n    }\r\n    return connection.TpListTargetClusters({}).then(response => {\r\n        return response.TargetClusters.TpClusterNameType.map(item => TargetCluster.attach(optsConnection, item.Name, item));\r\n    });\r\n}\r\n\r\nconst _defaultTargetCluster: { [baseUrl: string]: Promise<TargetCluster> } = {};\r\nexport function defaultTargetCluster(optsConnection: IOptions | IConnection | TopologyService): Promise<TargetCluster> {\r\n    if (!_defaultTargetCluster[optsConnection.baseUrl]) {\r\n        let connection: TopologyService;\r\n        if (optsConnection instanceof TopologyService) {\r\n            connection = optsConnection;\r\n        } else {\r\n            connection = new TopologyService(optsConnection);\r\n        }\r\n        _defaultTargetCluster[optsConnection.baseUrl] = connection.TpListTargetClusters({}).then(response => {\r\n            let firstItem: WsTopology.TpClusterNameType;\r\n            let defaultItem: WsTopology.TpClusterNameType;\r\n            let hthorItem: WsTopology.TpClusterNameType;\r\n            response.TargetClusters.TpClusterNameType.forEach(item => {\r\n                if (!firstItem) {\r\n                    firstItem = item;\r\n                }\r\n                if (!defaultItem && item.IsDefault === true) {\r\n                    defaultItem = item;\r\n                }\r\n                if (!hthorItem && item.Type === \"hthor\") {\r\n                    hthorItem = item;\r\n                }\r\n            });\r\n            const defItem = defaultItem || hthorItem || firstItem;\r\n            return TargetCluster.attach(optsConnection, defItem.Name, defItem);\r\n        });\r\n    }\r\n    return _defaultTargetCluster[optsConnection.baseUrl];\r\n}\r\n", "//  Ported from:  https://github.com/hpcc-systems/HPCC-Platform/blob/f0ed9dbeca49c39fb55aa28fec295c89407ac663/esp/src/src/ESPGraph.ts\r\n\r\nexport function safeAssign(obj: { [id: string]: any }, key: string, value: string) {\r\n    if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") return;\r\n    obj[key] = value;\r\n}\r\n\r\nfunction xmlEncode(str: string): string {\r\n    str = \"\" + str;\r\n    return str.replace(/&/g, \"&amp;\")\r\n        .replace(/\"/g, \"&quot;\")\r\n        .replace(/'/g, \"&apos;\")\r\n        .replace(/</g, \"&lt;\")\r\n        .replace(/>/g, \"&gt;\")\r\n        .replace(/\\n/g, \"&#10;\")\r\n        .replace(/\\r/g, \"&#13;\")\r\n        ;\r\n}\r\n\r\nfunction espTime2Seconds(duration?: string): number {\r\n    if (!duration) {\r\n        return 0;\r\n    } else if (!isNaN(+duration)) {\r\n        return parseFloat(duration);\r\n    }\r\n    const re = /(?:(?:(\\d+).days.)?(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+\\.\\d+|\\d+)s))|(?:(\\d+\\.\\d+|\\d+)ms|(\\d+\\.\\d+|\\d+)us|(\\d+\\.\\d+|\\d+)ns)/;\r\n    const match = re.exec(duration);\r\n    if (!match) return 0;\r\n    const days = +match[1] || 0;\r\n    const hours = +match[2] || 0;\r\n    const mins = +match[3] || 0;\r\n    const secs = +match[4] || 0;\r\n    const ms = +match[5] || 0;\r\n    const us = +match[6] || 0;\r\n    const ns = +match[7] || 0;\r\n    return (days * 24 * 60 * 60) + (hours * 60 * 60) + (mins * 60) + secs + ms / 1000 + us / 1000000 + ns / 1000000000;\r\n}\r\n\r\nfunction unitTest(size: string, unit: string) {\r\n    const nsIndex = size.indexOf(unit);\r\n    if (nsIndex !== -1) {\r\n        return parseFloat(size.substring(0, nsIndex));\r\n    }\r\n    return -1;\r\n}\r\n\r\nfunction espSize2Bytes(size: string): number {\r\n    if (!size) {\r\n        return 0;\r\n    } else if (!isNaN(+size)) {\r\n        return parseFloat(size);\r\n    }\r\n    let retVal = unitTest(size, \"Kb\");\r\n    if (retVal >= 0) {\r\n        return retVal * 1024;\r\n    }\r\n    retVal = unitTest(size, \"Mb\");\r\n    if (retVal >= 0) {\r\n        return retVal * Math.pow(1024, 2);\r\n    }\r\n    retVal = unitTest(size, \"Gb\");\r\n    if (retVal >= 0) {\r\n        return retVal * Math.pow(1024, 3);\r\n    }\r\n    retVal = unitTest(size, \"Tb\");\r\n    if (retVal >= 0) {\r\n        return retVal * Math.pow(1024, 4);\r\n    }\r\n    retVal = unitTest(size, \"Pb\");\r\n    if (retVal >= 0) {\r\n        return retVal * Math.pow(1024, 5);\r\n    }\r\n    retVal = unitTest(size, \"Eb\");\r\n    if (retVal >= 0) {\r\n        return retVal * Math.pow(1024, 6);\r\n    }\r\n    retVal = unitTest(size, \"Zb\");\r\n    if (retVal >= 0) {\r\n        return retVal * Math.pow(1024, 7);\r\n    }\r\n    retVal = unitTest(size, \"b\");\r\n    if (retVal >= 0) {\r\n        return retVal;\r\n    }\r\n    return 0;\r\n}\r\n\r\nfunction espSkew2Number(skew: string): number {\r\n    if (!skew) {\r\n        return 0;\r\n    }\r\n    return parseFloat(skew);\r\n}\r\n\r\nenum GRAPH_TYPE {\r\n    UNKNOWN = 0,\r\n    GRAPH = 1,\r\n    SUBGRAPH = 2,\r\n    VERTEX = 3,\r\n    EDGE = 4,\r\n    LAST = 5\r\n}\r\n\r\nenum GRAPH_TYPE_STRING {\r\n    UNKNOWN = \"Unknown\",\r\n    GRAPH = \"Graph\",\r\n    SUBGRAPH = \"Cluster\",\r\n    VERTEX = \"Vertex\",\r\n    EDGE = \"Edge\",\r\n    LAST = \"Last\"\r\n}\r\n\r\nclass LocalisedXGMMLWriter {\r\n\r\n    graph: QueryGraph;\r\n    m_xgmml: string;\r\n    m_visibleSubgraphs: { [id: string]: Subgraph };\r\n    m_visibleVertices: { [id: string]: Vertex };\r\n    m_semiVisibleVertices: { [id: string]: Vertex };\r\n    m_visibleEdges: { [id: string]: Edge };\r\n    noSpills: boolean;\r\n\r\n    constructor(graph: QueryGraph) {\r\n        this.graph = graph;\r\n\r\n        this.m_xgmml = \"\";\r\n        this.m_visibleSubgraphs = {};\r\n        this.m_visibleVertices = {};\r\n        this.m_semiVisibleVertices = {};\r\n        this.m_visibleEdges = {};\r\n    }\r\n\r\n    calcVisibility(items: GraphItem[], localisationDepth: number, localisationDistance: number, noSpills: boolean): void {\r\n        this.noSpills = noSpills;\r\n        items.forEach((item) => {\r\n            if (this.graph.isVertex(item)) {\r\n                this.calcInVertexVisibility(item, localisationDistance);\r\n                this.calcOutVertexVisibility(item, localisationDistance);\r\n            } else if (this.graph.isEdge(item)) {\r\n                this.calcInVertexVisibility(item.getSource(), localisationDistance - 1);\r\n                this.calcOutVertexVisibility(item.getTarget(), localisationDistance - 1);\r\n            } else if (this.graph.isSubgraph(item)) {\r\n                this.m_visibleSubgraphs[item.__hpcc_id] = item;\r\n                this.calcSubgraphVisibility(item, localisationDepth - 1);\r\n            }\r\n        });\r\n        this.calcVisibility2();\r\n    }\r\n\r\n    calcInVertexVisibility(vertex: Vertex, localisationDistance: number) {\r\n        if (this.noSpills && vertex.isSpill()) {\r\n            localisationDistance++;\r\n        }\r\n        this.m_visibleVertices[vertex.__hpcc_id] = vertex;\r\n        if (localisationDistance > 0) {\r\n            vertex.getInEdges().forEach(edge => {\r\n                this.calcInVertexVisibility(edge.getSource(), localisationDistance - 1);\r\n            });\r\n        }\r\n    }\r\n\r\n    calcOutVertexVisibility(vertex: Vertex, localisationDistance: number): void {\r\n        if (this.noSpills && vertex.isSpill()) {\r\n            localisationDistance++;\r\n        }\r\n        this.m_visibleVertices[vertex.__hpcc_id] = vertex;\r\n        if (localisationDistance > 0) {\r\n            vertex.getOutEdges().forEach(edge => {\r\n                this.calcOutVertexVisibility(edge.getTarget(), localisationDistance - 1);\r\n            });\r\n        }\r\n    }\r\n\r\n    calcSubgraphVisibility(subgraph: Subgraph, localisationDepth: number): void {\r\n        if (localisationDepth < 0) {\r\n            return;\r\n        }\r\n\r\n        if (localisationDepth > 0) {\r\n            subgraph.__hpcc_subgraphs.forEach((subgraph, idx) => {\r\n                this.calcSubgraphVisibility(subgraph, localisationDepth - 1);\r\n            });\r\n        }\r\n\r\n        subgraph.__hpcc_subgraphs.forEach((subgraph, idx) => {\r\n            this.m_visibleSubgraphs[subgraph.__hpcc_id] = subgraph;\r\n        });\r\n        subgraph.__hpcc_vertices.forEach((vertex, idx) => {\r\n            this.m_visibleVertices[vertex.__hpcc_id] = vertex;\r\n        });\r\n\r\n        //  Calculate edges that pass through the subgraph  ---\r\n        const dedupEdges = {};\r\n        this.graph.edges.forEach((edge: Edge, idx: any) => {\r\n            if (edge.getSource().__hpcc_parent !== edge.getTarget().__hpcc_parent && subgraph === this.getCommonAncestor(edge)) {\r\n                //  Only include one unique edge between subgraphs  ---\r\n                if (!dedupEdges[edge.getSource().__hpcc_parent.__hpcc_id + \"::\" + edge.getTarget().__hpcc_parent.__hpcc_id]) {\r\n                    dedupEdges[edge.getSource().__hpcc_parent.__hpcc_id + \"::\" + edge.getTarget().__hpcc_parent.__hpcc_id] = true;\r\n                    this.m_visibleEdges[edge.__hpcc_id] = edge;\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    buildVertexString(vertex: Vertex, isPoint: boolean): string {\r\n        let attrStr = \"\";\r\n        let propsStr = \"\";\r\n        const props = vertex.getProperties();\r\n        for (const key in props) {\r\n            if (isPoint && key.indexOf(\"_kind\") >= 0) {\r\n                propsStr += \"<att name=\\\"_kind\\\" value=\\\"point\\\"/>\";\r\n            } else if (key === \"id\" || key === \"label\") {\r\n                attrStr += \" \" + key + \"=\\\"\" + xmlEncode(props[key]) + \"\\\"\";\r\n            } else {\r\n                propsStr += \"<att name=\\\"\" + key + \"\\\" value=\\\"\" + xmlEncode(props[key]) + \"\\\"/>\";\r\n            }\r\n        }\r\n        return \"<node\" + attrStr + \">\" + propsStr + \"</node>\";\r\n    }\r\n\r\n    buildEdgeString(edge: Edge): string {\r\n        let attrStr: string = \"\";\r\n        let propsStr: string = \"\";\r\n        const props = edge.getProperties();\r\n        for (const key in props) {\r\n            if (key.toLowerCase() === \"id\" ||\r\n                key.toLowerCase() === \"label\" ||\r\n                key.toLowerCase() === \"source\" ||\r\n                key.toLowerCase() === \"target\") {\r\n                attrStr += \" \" + key + \"=\\\"\" + xmlEncode(props[key]) + \"\\\"\";\r\n            } else {\r\n                propsStr += \"<att name=\\\"\" + key + \"\\\" value=\\\"\" + xmlEncode(props[key]) + \"\\\"/>\";\r\n            }\r\n        }\r\n        return \"<edge\" + attrStr + \">\" + propsStr + \"</edge>\";\r\n    }\r\n\r\n    getAncestors(v: Vertex, ancestors: Subgraph[]): void {\r\n        let parent = v.__hpcc_parent;\r\n        while (parent) {\r\n            ancestors.push(parent);\r\n            parent = parent.__hpcc_parent;\r\n        }\r\n    }\r\n\r\n    getCommonAncestorV(v1: Vertex, v2: Vertex): Subgraph | null {\r\n        const v1_ancestors = [];\r\n        const v2_ancestors = [];\r\n        this.getAncestors(v1, v1_ancestors);\r\n        this.getAncestors(v2, v2_ancestors);\r\n        let finger1 = v1_ancestors.length - 1;\r\n        let finger2 = v2_ancestors.length - 1;\r\n        let retVal = null;\r\n        while (finger1 >= 0 && finger2 >= 0 && v1_ancestors[finger1] === v2_ancestors[finger2]) {\r\n            retVal = v1_ancestors[finger1];\r\n            --finger1;\r\n            --finger2;\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    getCommonAncestor(e: Edge): Subgraph | null {\r\n        return this.getCommonAncestorV(e.getSource(), e.getTarget());\r\n    }\r\n\r\n    calcAncestorVisibility(vertex: Vertex): void {\r\n        const ancestors = [];\r\n        this.getAncestors(vertex, ancestors);\r\n        ancestors.forEach((item, idx) => {\r\n            this.m_visibleSubgraphs[item.__hpcc_id] = item;\r\n        });\r\n    }\r\n\r\n    calcVisibility2(): void {\r\n        for (const key in this.m_visibleVertices) {\r\n            const vertex = this.m_visibleVertices[key];\r\n            vertex.getInEdges().forEach((edge: Edge, idx: any) => {\r\n                this.m_visibleEdges[edge.__hpcc_id] = edge;\r\n            });\r\n            vertex.getOutEdges().forEach((edge: Edge, idx: any) => {\r\n                this.m_visibleEdges[edge.__hpcc_id] = edge;\r\n            });\r\n            this.calcAncestorVisibility(vertex);\r\n        }\r\n        this.calcSemiVisibleVertices();\r\n    }\r\n\r\n    addSemiVisibleEdge(edge: Edge): void {\r\n        if (edge && !this.m_visibleEdges[edge.__hpcc_id]) {\r\n            this.m_visibleEdges[edge.__hpcc_id] = edge;\r\n        }\r\n    }\r\n\r\n    addSemiVisibleVertex(vertex: Vertex): void {\r\n        if (!this.m_visibleVertices[vertex.__hpcc_id]) {\r\n            this.m_semiVisibleVertices[vertex.__hpcc_id] = vertex;\r\n            this.calcAncestorVisibility(vertex);\r\n        }\r\n    }\r\n\r\n    calcSemiVisibleVertices(): void {\r\n        for (const key in this.m_visibleEdges) {\r\n            const edge = this.m_visibleEdges[key];\r\n            let source = edge.getSource();\r\n            this.addSemiVisibleVertex(source);\r\n            while (this.noSpills && source.isSpill()) {\r\n                const inEdges = source.getInEdges();\r\n                if (inEdges.length) {\r\n                    this.addSemiVisibleEdge(inEdges[0]);\r\n                    source = inEdges[0].getSource();\r\n                    this.addSemiVisibleVertex(source);\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n            let target = edge.getTarget();\r\n            this.addSemiVisibleVertex(target);\r\n            while (this.noSpills && target.isSpill()) {\r\n                const outEdges = target.getOutEdges();\r\n                if (outEdges.length) {\r\n                    this.addSemiVisibleEdge(outEdges[0]);\r\n                    target = outEdges[0].getTarget();\r\n                    this.addSemiVisibleVertex(target);\r\n                } else {\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    writeXgmml(): void {\r\n        this.subgraphVisited(this.graph.subgraphs[0], true);\r\n        this.graph.edges.forEach((edge: any, idx: any) => {\r\n            this.edgeVisited(edge);\r\n        });\r\n    }\r\n\r\n    subgraphVisited(subgraph: Subgraph, root: boolean = false): boolean {\r\n        if (this.m_visibleSubgraphs[subgraph.__hpcc_id]) {\r\n            let propsStr = \"\";\r\n            this.m_xgmml += root ? \"\" : \"<node id=\\\"\" + subgraph.__hpcc_id + \"\\\"><att><graph>\";\r\n            const xgmmlLen = this.m_xgmml.length;\r\n            subgraph.walkSubgraphs(this);\r\n            subgraph.walkVertices(this);\r\n            if (xgmmlLen === this.m_xgmml.length) {\r\n                //  Add at least one child otherwise subgraphs will render as a vertex  ---\r\n                const vertex = subgraph.__hpcc_vertices[0];\r\n                if (vertex) {\r\n                    this.m_xgmml += this.buildVertexString(vertex, true);\r\n                }\r\n            }\r\n\r\n            const props = subgraph.getProperties();\r\n            for (const key in props) {\r\n                propsStr += \"<att name=\\\"\" + key + \"\\\" value=\\\"\" + xmlEncode(props[key]) + \"\\\"/>\";\r\n            }\r\n            this.m_xgmml += root ? \"\" : \"</graph></att>\" + propsStr + \"</node>\";\r\n        }\r\n        return false;\r\n    }\r\n\r\n    vertexVisited(vertex: Vertex) {\r\n        if (this.m_visibleVertices[vertex.__hpcc_id]) {\r\n            this.m_xgmml += this.buildVertexString(vertex, false);\r\n        } else if (this.m_semiVisibleVertices[vertex.__hpcc_id]) {\r\n            this.m_xgmml += this.buildVertexString(vertex, true);\r\n        }\r\n    }\r\n\r\n    edgeVisited(edge: Edge) {\r\n        if (this.m_visibleEdges[edge.__hpcc_id]) {\r\n            this.m_xgmml += this.buildEdgeString(edge);\r\n        }\r\n    }\r\n}\r\n\r\nabstract class GraphItem {\r\n\r\n    abstract _globalType: \"Graph\" | \"Cluster\" | \"Vertex\" | \"Edge\";\r\n\r\n    __hpcc_graph: QueryGraph;\r\n    __hpcc_parent: Subgraph;\r\n    __widget: any;\r\n\r\n    __hpcc_id: string;\r\n    _globalID: string;\r\n\r\n    constructor(graph: QueryGraph, id: string) {\r\n        this.__hpcc_graph = graph;\r\n        this.__hpcc_id = id;\r\n        this._globalID = id;\r\n    }\r\n\r\n    getProperties() {\r\n        const retVal: { [id: string]: any } = {};\r\n        for (const key in this) {\r\n            if (key.indexOf(\"__\") !== 0 && this.hasOwnProperty(key)) {\r\n                retVal[key] = this[key];\r\n            }\r\n        }\r\n        return retVal;\r\n    }\r\n}\r\n\r\nclass Subgraph extends GraphItem {\r\n    _globalType: \"Graph\" | \"Cluster\" | \"Vertex\" | \"Edge\";\r\n\r\n    __hpcc_subgraphs: any[];\r\n    __hpcc_vertices: any[];\r\n    __hpcc_edges: any[];\r\n    id: string;\r\n\r\n    constructor(graph: QueryGraph, id: string) {\r\n        super(graph, id);\r\n        this._globalType = id === \"0\" ? \"Graph\" : \"Cluster\";\r\n        this.__hpcc_subgraphs = [];\r\n        this.__hpcc_vertices = [];\r\n        this.__hpcc_edges = [];\r\n        this.id = id;\r\n    }\r\n\r\n    addSubgraph(subgraph) {\r\n        subgraph.__hpcc_parent = this;\r\n        if (!this.__hpcc_subgraphs.some(subgraph2 => subgraph === subgraph2)) {\r\n            this.__hpcc_subgraphs.push(subgraph);\r\n        }\r\n    }\r\n\r\n    addVertex(vertex) {\r\n        vertex.__hpcc_parent = this;\r\n        if (!this.__hpcc_vertices.some(vertex2 => vertex === vertex2)) {\r\n            this.__hpcc_vertices.push(vertex);\r\n        }\r\n    }\r\n\r\n    removeVertex(vertex: any) {\r\n        this.__hpcc_vertices = this.__hpcc_vertices.filter(vertex2 => vertex !== vertex2);\r\n    }\r\n\r\n    addEdge(edge) {\r\n        edge.__hpcc_parent = this;\r\n        if (!this.__hpcc_edges.some(edge2 => edge === edge2)) {\r\n            this.__hpcc_edges.push(edge);\r\n        }\r\n    }\r\n\r\n    removeEdge(edge: any) {\r\n        this.__hpcc_edges = this.__hpcc_edges.filter(edge2 => edge !== edge2);\r\n    }\r\n\r\n    remove() {\r\n        this.__hpcc_subgraphs.forEach(subgraph => subgraph.__hpcc_parent = this.__hpcc_parent);\r\n        this.__hpcc_vertices.forEach(vertex => vertex.__hpcc_parent = this.__hpcc_parent);\r\n        this.__hpcc_edges.forEach(edge => edge.__hpcc_parent = this.__hpcc_parent);\r\n        delete this.__hpcc_parent;\r\n        this.__hpcc_graph.removeItem(this);\r\n    }\r\n\r\n    walkSubgraphs(visitor: { subgraphVisited: (arg0: Subgraph) => boolean; }) {\r\n        this.__hpcc_subgraphs.forEach((subgraph, idx) => {\r\n            if (visitor.subgraphVisited(subgraph)) {\r\n                subgraph.walkSubgraphs(visitor);\r\n            }\r\n        });\r\n    }\r\n\r\n    walkVertices(visitor: { vertexVisited: (arg0: Vertex) => void; }) {\r\n        this.__hpcc_vertices.forEach((vertex, idx) => {\r\n            visitor.vertexVisited(vertex);\r\n        });\r\n    }\r\n}\r\n\r\nclass Vertex extends GraphItem {\r\n    _globalType: \"Graph\" | \"Cluster\" | \"Vertex\" | \"Edge\" = \"Vertex\";\r\n    _isSpill: boolean;\r\n\r\n    constructor(graph: QueryGraph, id: string) {\r\n        super(graph, id);\r\n    }\r\n\r\n    isSpill() {\r\n        return this._isSpill;\r\n    }\r\n\r\n    remove() {\r\n        const inVertices = this.getInVertices();\r\n        if (inVertices.length <= 1) {\r\n            console.warn(this.__hpcc_id + \":  remove only supports single or zero inputs activities...\");\r\n        }\r\n        this.getInEdges().forEach((edge: Edge) => {\r\n            edge.remove();\r\n        });\r\n        this.getOutEdges().forEach((edge: Edge) => {\r\n            edge.setSource(inVertices[0]);\r\n        });\r\n        this.__hpcc_parent?.removeVertex(this);\r\n        this.__hpcc_graph.removeItem(this);\r\n    }\r\n\r\n    getInVertices(): Vertex[] {\r\n        return this.getInEdges().map((edge) => {\r\n            return edge.getSource();\r\n        });\r\n    }\r\n\r\n    getInEdges(): Edge[] {\r\n        return this.__hpcc_graph.edges.filter((edge) => {\r\n            return edge.getTarget() === this;\r\n        });\r\n    }\r\n\r\n    getOutVertices(): Vertex[] {\r\n        return this.getOutEdges().map((edge) => {\r\n            return edge.getTarget();\r\n        });\r\n    }\r\n\r\n    getOutEdges(): Edge[] {\r\n        return this.__hpcc_graph.edges.filter((edge) => {\r\n            return edge.getSource() === this;\r\n        });\r\n    }\r\n}\r\n\r\nclass Edge extends GraphItem {\r\n    _globalType: \"Graph\" | \"Cluster\" | \"Vertex\" | \"Edge\" = \"Edge\";\r\n\r\n    _sourceActivity: any;\r\n    source: any;\r\n    _targetActivity: any;\r\n    target: any;\r\n\r\n    constructor(graph: QueryGraph, id: string) {\r\n        super(graph, id);\r\n        this._globalType = \"Edge\";\r\n    }\r\n\r\n    remove() {\r\n        this.__hpcc_graph.subgraphs.forEach((subgraph) => {\r\n            subgraph.removeEdge(this);\r\n        });\r\n        this.__hpcc_graph.removeItem(this);\r\n    }\r\n\r\n    getSource(): Vertex {\r\n        return this.__hpcc_graph.idx[this._sourceActivity || this.source] as Vertex;\r\n    }\r\n\r\n    setSource(source: Vertex) {\r\n        if (this._sourceActivity) {\r\n            this._sourceActivity = source.__hpcc_id;\r\n        } else if (this.source) {\r\n            this.source = source.__hpcc_id;\r\n        }\r\n        if (this.__widget) {\r\n            this.__widget.setSource(this.getSource().__widget);\r\n        }\r\n    }\r\n\r\n    getTarget(): Vertex {\r\n        return this.__hpcc_graph.idx[this._targetActivity || this.target] as Vertex;\r\n    }\r\n}\r\n\r\nexport class QueryGraph {\r\n    idx: { [id: string]: Subgraph | Vertex | Edge } = {};\r\n    subgraphs: Subgraph[] = [];\r\n    vertices: Vertex[] = [];\r\n    edges: Edge[] = [];\r\n\r\n    xgmml: string = \"\";\r\n\r\n    constructor() {\r\n        this.clear();\r\n    }\r\n\r\n    clear() {\r\n        this.xgmml = \"\";\r\n\r\n        this.idx = {};\r\n        this.subgraphs = [];\r\n        this.vertices = [];\r\n        this.edges = [];\r\n    }\r\n\r\n    load(xgmml: string) {\r\n        this.clear();\r\n        this.merge(xgmml);\r\n    }\r\n\r\n    merge(xgmml: string) {\r\n        this.xgmml = xgmml;\r\n        const parser = new DOMParser();\r\n        const dom = parser.parseFromString(xgmml, \"text/xml\");\r\n        this.walkDocument(dom.documentElement, \"0\");\r\n    }\r\n\r\n    isSubgraph(item: GraphItem): item is Subgraph {\r\n        return item instanceof Subgraph;\r\n    }\r\n\r\n    isVertex(item: GraphItem): item is Vertex {\r\n        return item instanceof Vertex;\r\n    }\r\n\r\n    isEdge(item: GraphItem): item is Edge {\r\n        return item instanceof Edge;\r\n    }\r\n\r\n    getGlobalType(item: QueryGraph | Subgraph | Vertex | Edge): GRAPH_TYPE {\r\n        if (item instanceof Vertex) {\r\n            return GRAPH_TYPE.VERTEX;\r\n        } else if (item instanceof Edge) {\r\n            return GRAPH_TYPE.EDGE;\r\n        } else if (item instanceof Subgraph) {\r\n            return GRAPH_TYPE.SUBGRAPH;\r\n        } else if (item instanceof QueryGraph) {\r\n            return GRAPH_TYPE.GRAPH;\r\n        }\r\n        return GRAPH_TYPE.UNKNOWN;\r\n    }\r\n\r\n    getGlobalTypeString(item: QueryGraph | Subgraph | Vertex | Edge): GRAPH_TYPE_STRING {\r\n        if (item instanceof Vertex) {\r\n            return GRAPH_TYPE_STRING.VERTEX;\r\n        } else if (item instanceof Edge) {\r\n            return GRAPH_TYPE_STRING.EDGE;\r\n        } else if (item instanceof Subgraph) {\r\n            return GRAPH_TYPE_STRING.SUBGRAPH;\r\n        } else if (item instanceof QueryGraph) {\r\n            return GRAPH_TYPE_STRING.GRAPH;\r\n        }\r\n        return GRAPH_TYPE_STRING.UNKNOWN;\r\n    }\r\n\r\n    getItem(docNode: HTMLElement, id: string): Subgraph | Vertex | Edge {\r\n        if (!this.idx[id]) {\r\n            switch (docNode.tagName) {\r\n                case \"graph\":\r\n                    const subgraph = new Subgraph(this, id);\r\n                    this.subgraphs.push(subgraph);\r\n                    this.idx[id] = subgraph;\r\n                    break;\r\n                case \"node\":\r\n                    const vertex = new Vertex(this, id);\r\n                    this.vertices.push(vertex);\r\n                    this.idx[id] = vertex;\r\n                    break;\r\n                case \"edge\":\r\n                    const edge = new Edge(this, id);\r\n                    this.edges.push(edge);\r\n                    this.idx[id] = edge;\r\n                    break;\r\n                default:\r\n                    console.warn(\"Graph.getItem - Unknown Node Type!\");\r\n                    break;\r\n            }\r\n        }\r\n        const retVal = this.idx[id];\r\n        Array.from(docNode.attributes).forEach(attr => {\r\n            safeAssign(retVal, attr.name, attr.value);\r\n        });\r\n        return retVal;\r\n    }\r\n\r\n    removeItem(item: Subgraph | Vertex | Edge) {\r\n        delete this.idx[item.__hpcc_id];\r\n        if (item instanceof Subgraph) {\r\n            this.subgraphs = this.subgraphs.filter((subgraph: Subgraph) => {\r\n                return item !== subgraph;\r\n            });\r\n        } else if (item instanceof Vertex) {\r\n            this.vertices = this.vertices.filter(vertex => {\r\n                return item !== vertex;\r\n            });\r\n        } else if (item instanceof Edge) {\r\n            this.edges = this.edges.filter((edge: Edge) => {\r\n                return item !== edge;\r\n            });\r\n        }\r\n    }\r\n\r\n    getChildByTagName(docNode: HTMLElement, tagName: string): HTMLElement | null {\r\n        let retVal: HTMLElement | null = null;\r\n        Array.from(docNode.childNodes as NodeListOf<HTMLElement>).some((childNode) => {\r\n            if (childNode.tagName === tagName) {\r\n                retVal = childNode;\r\n                return true;\r\n            }\r\n        });\r\n        return retVal;\r\n    }\r\n\r\n    walkDocument(docNode: HTMLElement, id: string): Subgraph | Vertex | Edge {\r\n        const retVal: any = this.getItem(docNode, id);\r\n        (docNode.childNodes as NodeListOf<HTMLElement>).forEach((childNode) => {\r\n            switch (childNode.nodeType) {\r\n                case 1:     // \tELEMENT_NODE\r\n                    switch (childNode.tagName) {\r\n                        case \"graph\":\r\n                            break;\r\n                        case \"node\":\r\n                            let isSubgraph = false;\r\n                            const attNode = this.getChildByTagName(childNode, \"att\");\r\n                            if (attNode) {\r\n                                const graphNode = this.getChildByTagName(attNode, \"graph\");\r\n                                if (graphNode) {\r\n                                    isSubgraph = true;\r\n                                    const subgraph = this.walkDocument(graphNode, childNode.getAttribute(\"id\"));\r\n                                    retVal.addSubgraph(subgraph);\r\n                                }\r\n                            }\r\n                            if (!isSubgraph) {\r\n                                const vertex = this.walkDocument(childNode, childNode.getAttribute(\"id\"));\r\n                                retVal.addVertex(vertex);\r\n                            }\r\n                            break;\r\n                        case \"att\":\r\n                            const name = childNode.getAttribute(\"name\");\r\n                            const uname = \"_\" + name;\r\n                            const value = childNode.getAttribute(\"value\");\r\n                            if (name.indexOf(\"Time\") === 0) {\r\n                                safeAssign(retVal, uname, value);\r\n                                safeAssign(retVal, name, \"\" + espTime2Seconds(value));\r\n                            } else if (name.indexOf(\"Size\") === 0) {\r\n                                safeAssign(retVal, uname, value);\r\n                                safeAssign(retVal, name, \"\" + espSize2Bytes(value));\r\n                            } else if (name.indexOf(\"Skew\") === 0) {\r\n                                safeAssign(retVal, uname, value);\r\n                                safeAssign(retVal, name, \"\" + espSkew2Number(value));\r\n                            } else {\r\n                                safeAssign(retVal, name, value);\r\n                            }\r\n                            break;\r\n                        case \"edge\":\r\n                            const edge: any = this.walkDocument(childNode, childNode.getAttribute(\"id\"));\r\n                            if (edge.NumRowsProcessed !== undefined) {\r\n                                edge._eclwatchCount = edge.NumRowsProcessed.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n                            } else if (edge.Count !== undefined) {\r\n                                edge._eclwatchCount = edge.Count.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n                            } else if (edge.count !== undefined) {\r\n                                edge._eclwatchCount = edge.count.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n                            }\r\n                            if (edge.inputProgress) {\r\n                                edge._eclwatchInputProgress = \"[\" + edge.inputProgress.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + \"]\";\r\n                            }\r\n                            if (edge.SkewMaxRowsProcessed && edge.SkewMinRowsProcessed) {\r\n                                edge._eclwatchSkew = \"+\" + edge.SkewMaxRowsProcessed + \", \" + edge.SkewMinRowsProcessed;\r\n                            }\r\n                            if (edge._dependsOn) {\r\n                            } else if (edge._childGraph) {\r\n                            } else if (edge._sourceActivity || edge._targetActivity) {\r\n                                edge._isSpill = true;\r\n                                const source = edge.getSource();\r\n                                if (source) {\r\n                                    source._isSpill = true;\r\n                                }\r\n                                const target = edge.getTarget();\r\n                                if (target) {\r\n                                    target._isSpill = true;\r\n                                }\r\n                            }\r\n                            retVal.addEdge(edge);\r\n                            break;\r\n                        default:\r\n                            break;\r\n                    }\r\n                    break;\r\n                case 2:     // \tATTRIBUTE_NODE\r\n                case 3:     // \tTEXT_NODE\r\n                case 4:     // \tCDATA_SECTION_NODE\r\n                case 5:     // \tENTITY_REFERENCE_NODE\r\n                case 6:     // \tENTITY_NODE\r\n                case 7:     // \tPROCESSING_INSTRUCTION_NODE\r\n                case 8:     // \tCOMMENT_NODE\r\n                case 9:     // \tDOCUMENT_NODE\r\n                case 10:    // \tDOCUMENT_TYPE_NODE\r\n                case 11:    // \tDOCUMENT_FRAGMENT_NODE\r\n                case 12:    // \tNOTATION_NODE\r\n                    break;\r\n                default:\r\n                    break;\r\n            }\r\n        });\r\n        return retVal;\r\n    }\r\n\r\n    removeSubgraphs(): void {\r\n        const subgraphs = [...this.subgraphs];\r\n        subgraphs.forEach((subgraph) => {\r\n            if (subgraph.__hpcc_parent instanceof Subgraph) {\r\n                subgraph.remove();\r\n            }\r\n        });\r\n    }\r\n\r\n    removeSpillVertices(): void {\r\n        const vertices = [...this.vertices];\r\n        vertices.forEach((vertex) => {\r\n            if (vertex.isSpill()) {\r\n                vertex.remove();\r\n            }\r\n        });\r\n    }\r\n\r\n    getLocalisedXGMML(items: GraphItem[], localisationDepth: number, localisationDistance: number, noSpills: boolean): string {\r\n        const xgmmlWriter = new LocalisedXGMMLWriter(this);\r\n        xgmmlWriter.calcVisibility(items, localisationDepth, localisationDistance, noSpills);\r\n        xgmmlWriter.writeXgmml();\r\n        return \"<graph>\" + xgmmlWriter.m_xgmml + \"</graph>\";\r\n    }\r\n}\r\n", "import { Cache, Dispatch, IObserverHandle, Message } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { StoreService } from \"../services/wsStore.ts\";\r\n\r\nexport class StoreCache extends Cache<{ BaseUrl: string, Name: string, UserSpecific: boolean, Namespace: string }, Store> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return `${obj.BaseUrl}-${obj.Name}:${obj.UserSpecific}-${obj.Namespace}`;\r\n        });\r\n    }\r\n}\r\nconst _store = new StoreCache();\r\n\r\nexport class ValueChangedMessage extends Message {\r\n\r\n    constructor(readonly key: string, public value: any, public oldValue?: any) {\r\n        super();\r\n    }\r\n\r\n    get canConflate(): boolean { return true; }\r\n    conflate(other: ValueChangedMessage): boolean {\r\n        if (this.key === other.key) {\r\n            this.value = other.value;\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    void(): boolean {\r\n        return this.value === this.oldValue;\r\n    }\r\n}\r\n\r\nexport class Store {\r\n    protected connection: StoreService;\r\n    get BaseUrl() { return this.connection.baseUrl; }\r\n    readonly Name: string;\r\n    readonly UserSpecific: boolean;\r\n    readonly Namespace: string;\r\n\r\n    protected _dispatch = new Dispatch<ValueChangedMessage>();\r\n\r\n    static attach(optsConnection: IOptions | IConnection | StoreService, Name: string = \"HPCCApps\", Namespace: string, UserSpecific: boolean = true): Store {\r\n        const retVal: Store = _store.get({ BaseUrl: optsConnection.baseUrl, Name, UserSpecific, Namespace }, () => {\r\n            return new Store(optsConnection, Name, Namespace, UserSpecific);\r\n        });\r\n        return retVal;\r\n    }\r\n\r\n    protected constructor(optsConnection: IOptions | IConnection | StoreService, Name: string, Namespace: string, UserSpecific: boolean) {\r\n        if (optsConnection instanceof StoreService) {\r\n            this.connection = optsConnection;\r\n        } else {\r\n            this.connection = new StoreService(optsConnection);\r\n        }\r\n        this.Name = Name;\r\n        this.UserSpecific = UserSpecific;\r\n        this.Namespace = Namespace;\r\n    }\r\n\r\n    private _knownValues: { [key: string]: any } = {};\r\n\r\n    protected create() {\r\n        this.connection.CreateStore({ Name: this.Name, Type: \"\", Description: \"\" });\r\n    }\r\n\r\n    set(key: string, value: string, broadcast = true): Promise<void> {\r\n        return this.connection.Set({\r\n            StoreName: this.Name,\r\n            UserSpecific: this.UserSpecific,\r\n            Namespace: this.Namespace,\r\n            Key: key,\r\n            Value: value\r\n        }).then(response => {\r\n            const oldValue = this._knownValues[key];\r\n            this._knownValues[key] = value;\r\n            if (broadcast) {\r\n                this._dispatch.post(new ValueChangedMessage(key, value, oldValue));\r\n            }\r\n        }).catch(e => {\r\n            console.error(`Store.set(\"${key}\", \"${value}\") failed:`, e);\r\n        });\r\n    }\r\n\r\n    get(key: string, broadcast = true): Promise<string | undefined> {\r\n        return this.connection.Fetch({\r\n            StoreName: this.Name,\r\n            UserSpecific: this.UserSpecific,\r\n            Namespace: this.Namespace,\r\n            Key: key\r\n        }).then(response => {\r\n            const oldValue = this._knownValues[key];\r\n            this._knownValues[key] = response.Value;\r\n            if (broadcast) {\r\n                this._dispatch.post(new ValueChangedMessage(key, response.Value, oldValue));\r\n            }\r\n            return response.Value;\r\n        }).catch(e => {\r\n            console.error(`Store.get(${key}) failed:`, e);\r\n            return undefined;\r\n        });\r\n    }\r\n\r\n    getAll(broadcast = true): Promise<{ [key: string]: string }> {\r\n        return this.connection.FetchAll({\r\n            StoreName: this.Name,\r\n            UserSpecific: this.UserSpecific,\r\n            Namespace: this.Namespace\r\n        }).then(response => {\r\n            const retVal: { [key: string]: string } = {};\r\n            const deletedValues = this._knownValues;\r\n            this._knownValues = {};\r\n            response.Pairs.Pair.forEach(pair => {\r\n                const oldValue = this._knownValues[pair.Key];\r\n                this._knownValues[pair.Key] = pair.Value;\r\n                delete deletedValues[pair.Key];\r\n                retVal[pair.Key] = pair.Value;\r\n                if (broadcast) {\r\n                    this._dispatch.post(new ValueChangedMessage(pair.Key, pair.Value, oldValue));\r\n                }\r\n            });\r\n            if (broadcast) {\r\n                for (const key in deletedValues) {\r\n                    this._dispatch.post(new ValueChangedMessage(key, undefined, deletedValues[key]));\r\n                }\r\n            }\r\n            return retVal;\r\n        }).catch(e => {\r\n            console.error(\"Store.getAll failed:\", e);\r\n            return {};\r\n        });\r\n    }\r\n\r\n    delete(key: string, broadcast = true): Promise<void> {\r\n        return this.connection.Delete({\r\n            StoreName: this.Name,\r\n            UserSpecific: this.UserSpecific,\r\n            Namespace: this.Namespace,\r\n            Key: key\r\n        }).then(response => {\r\n            const oldValue = this._knownValues[key];\r\n            delete this._knownValues[key];\r\n            if (broadcast) {\r\n                this._dispatch.post(new ValueChangedMessage(key, undefined, oldValue));\r\n            }\r\n        }).catch(e => {\r\n            console.error(`Store.delete(${key}) failed:`, e);\r\n        });\r\n    }\r\n\r\n    monitor(callback: (messages: ValueChangedMessage[]) => void): IObserverHandle {\r\n        return this._dispatch.attach(callback);\r\n    }\r\n}\r\n", "import { Cache, IEvent, scopedLogger, StateCallback, StateEvents, StateObject, StatePropCallback } from \"@hpcc-js/util\";\r\nimport { IConnection, IOptions } from \"../connection.ts\";\r\nimport { ESPExceptions } from \"../espConnection.ts\";\r\nimport { WsSMC } from \"../services/wsSMC.ts\";\r\nimport { FileSpray, FileSprayService, UpdateDFUWorkunitEx } from \"../services/fileSpray.ts\";\r\nimport * as WsTopology from \"../services/wsTopology.ts\";\r\n\r\nconst logger = scopedLogger(\"@hpcc-js/comms/dfuWorkunit.ts\");\r\n\r\nenum States {\r\n    Unknown = 0,\r\n    Scheduled,\r\n    Queued,\r\n    Started,\r\n    Aborted,\r\n    Failed,\r\n    Finished,\r\n    Monitoring,\r\n    Aborting,\r\n    NotFound = 999\r\n}\r\n\r\nexport class DFUWorkunitCache extends Cache<{ BaseUrl: string, ID: string }, DFUWorkunit> {\r\n    constructor() {\r\n        super((obj) => {\r\n            return `${obj.BaseUrl}-${obj.ID}`;\r\n        });\r\n    }\r\n}\r\nconst _workunits = new DFUWorkunitCache();\r\n\r\nexport type DFUWorkunitEvents = \"finished\" | StateEvents;\r\nexport type UDFUWorkunitState = FileSpray.DFUWorkunit;\r\nexport type IDFUWorkunitState = FileSpray.DFUWorkunit | WsSMC.ActiveWorkunit;\r\nexport class DFUWorkunit extends StateObject<UDFUWorkunitState, IDFUWorkunitState> implements FileSpray.DFUWorkunit {\r\n    connection: FileSprayService;\r\n    topologyConnection: WsTopology.TopologyService;\r\n    get BaseUrl() { return this.connection.baseUrl; }\r\n\r\n    //  Accessors  ---\r\n    get properties(): FileSpray.DFUWorkunit { return this.get(); }\r\n    get ID(): string { return this.get(\"ID\"); }\r\n    get DFUServerName(): string { return this.get(\"DFUServerName\"); }\r\n    get ClusterName(): string { return this.get(\"ClusterName\"); }\r\n    get JobName(): string { return this.get(\"JobName\"); }\r\n    get Queue(): string { return this.get(\"Queue\"); }\r\n    get User(): string { return this.get(\"User\"); }\r\n    get isProtected(): boolean { return this.get(\"isProtected\"); }\r\n    get Command(): number { return this.get(\"Command\"); }\r\n    get CommandMessage(): string { return this.get(\"CommandMessage\"); }\r\n    get PercentDone(): number { return this.get(\"PercentDone\"); }\r\n    get SecsLeft(): number { return this.get(\"SecsLeft\"); }\r\n    get ProgressMessage(): string { return this.get(\"ProgressMessage\"); }\r\n    get SummaryMessage(): string { return this.get(\"SummaryMessage\"); }\r\n    get State(): number { return this.get(\"State\", States.Unknown); }\r\n    get SourceLogicalName(): string { return this.get(\"SourceLogicalName\"); }\r\n    get SourceIP(): string { return this.get(\"SourceIP\"); }\r\n    get SourceFilePath(): string { return this.get(\"SourceFilePath\"); }\r\n    get SourceDali(): string { return this.get(\"SourceDali\"); }\r\n    get SourceRecordSize(): number { return this.get(\"SourceRecordSize\"); }\r\n    get SourceFormat(): number { return this.get(\"SourceFormat\"); }\r\n    get RowTag(): string { return this.get(\"RowTag\"); }\r\n    get SourceNumParts(): number { return this.get(\"SourceNumParts\"); }\r\n    get SourceDirectory(): string { return this.get(\"SourceDirectory\"); }\r\n    get DestLogicalName(): string { return this.get(\"DestLogicalName\"); }\r\n    get DestGroupName(): string { return this.get(\"DestGroupName\"); }\r\n    get DestDirectory(): string { return this.get(\"DestDirectory\"); }\r\n    get DestIP(): string { return this.get(\"DestIP\"); }\r\n    get DestFilePath(): string { return this.get(\"DestFilePath\"); }\r\n    get DestFormat(): number { return this.get(\"DestFormat\"); }\r\n    get DestNumParts(): number { return this.get(\"DestNumParts\"); }\r\n    get DestRecordSize(): number { return this.get(\"DestRecordSize\"); }\r\n    get Replicate(): boolean { return this.get(\"Replicate\"); }\r\n    get Overwrite(): boolean { return this.get(\"Overwrite\"); }\r\n    get Compress(): boolean { return this.get(\"Compress\"); }\r\n    get SourceCsvSeparate(): string { return this.get(\"SourceCsvSeparate\"); }\r\n    get SourceCsvQuote(): string { return this.get(\"SourceCsvQuote\"); }\r\n    get SourceCsvTerminate(): string { return this.get(\"SourceCsvTerminate\"); }\r\n    get SourceCsvEscape(): string { return this.get(\"SourceCsvEscape\"); }\r\n    get TimeStarted(): string { return this.get(\"TimeStarted\"); }\r\n    get TimeStopped(): string { return this.get(\"TimeStopped\"); }\r\n    get StateMessage(): string { return this.get(\"StateMessage\"); }\r\n    get MonitorEventName(): string { return this.get(\"MonitorEventName\"); }\r\n    get MonitorSub(): boolean { return this.get(\"MonitorSub\"); }\r\n    get MonitorShotLimit(): number { return this.get(\"MonitorShotLimit\"); }\r\n    get SourceDiffKeyName(): string { return this.get(\"SourceDiffKeyName\"); }\r\n    get DestDiffKeyName(): string { return this.get(\"DestDiffKeyName\"); }\r\n    get Archived(): boolean { return this.get(\"Archived\"); }\r\n    get encrypt(): string { return this.get(\"encrypt\"); }\r\n    get decrypt(): string { return this.get(\"decrypt\"); }\r\n    get failIfNoSourceFile(): boolean { return this.get(\"failIfNoSourceFile\"); }\r\n    get recordStructurePresent(): boolean { return this.get(\"recordStructurePresent\"); }\r\n    get quotedTerminator(): boolean { return this.get(\"quotedTerminator\"); }\r\n    get preserveCompression(): boolean { return this.get(\"preserveCompression\"); }\r\n    get expireDays(): number { return this.get(\"expireDays\"); }\r\n    get PreserveFileParts(): boolean { return this.get(\"PreserveFileParts\"); }\r\n    get FileAccessCost(): number { return this.get(\"FileAccessCost\"); }\r\n    get KbPerSecAve(): number { return this.get(\"KbPerSecAve\"); }\r\n    get KbPerSec(): number { return this.get(\"KbPerSec\"); }\r\n\r\n    //  Factories  ---\r\n    static create(optsConnection: IOptions | IConnection, dfuServerQueue: string): Promise<DFUWorkunit> {\r\n        const retVal: DFUWorkunit = new DFUWorkunit(optsConnection);\r\n        return retVal.connection.CreateDFUWorkunit({ DFUServerQueue: dfuServerQueue }).then((response) => {\r\n            _workunits.set(retVal);\r\n            retVal.set(response.result);\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    static attach(optsConnection: IOptions | IConnection, wuid: string, state?: IDFUWorkunitState): DFUWorkunit {\r\n        const retVal: DFUWorkunit = _workunits.get({ BaseUrl: optsConnection.baseUrl, ID: wuid }, () => {\r\n            return new DFUWorkunit(optsConnection, wuid);\r\n        });\r\n        if (state) {\r\n            retVal.set(state);\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    static sprayFixed(server: IOptions | IConnection, request: Partial<FileSpray.SprayFixed>): Promise<DFUWorkunit> {\r\n        const service = new FileSprayService(server);\r\n        return service.SprayFixedEx({\r\n            ...request\r\n        }).then(response => {\r\n            const wuid = response.wuid;\r\n            return service.GetDFUWorkunit({ wuid }).then(response => {\r\n                return DFUWorkunit.attach(server, wuid, response.result);\r\n            });\r\n        });\r\n    }\r\n\r\n    static sprayVariable(server: IOptions | IConnection, request: Partial<FileSpray.SprayVariable>): Promise<DFUWorkunit> {\r\n        const service = new FileSprayService(server);\r\n        return service.SprayVariableEx({\r\n            ...request\r\n        }).then(response => {\r\n            const wuid = response.wuid;\r\n            return service.GetDFUWorkunit({ wuid }).then(response => {\r\n                return DFUWorkunit.attach(server, wuid, response.result);\r\n            });\r\n        });\r\n    }\r\n\r\n    static despray(server: IOptions | IConnection, request: Partial<FileSpray.Despray>): Promise<DFUWorkunit> {\r\n        const service = new FileSprayService(server);\r\n        return service.DesprayEx({\r\n            ...request\r\n        }).then(response => {\r\n            const wuid = response.wuid;\r\n            return service.GetDFUWorkunit({ wuid }).then(response => {\r\n                return DFUWorkunit.attach(server, wuid, response.result);\r\n            });\r\n        });\r\n    }\r\n\r\n    update(request: Partial<UpdateDFUWorkunitEx>): Promise<FileSpray.UpdateDFUWorkunitResponse> {\r\n        return this.connection.UpdateDFUWorkunitEx({\r\n            wu: {\r\n                JobName: request?.wu?.JobName ?? this.JobName,\r\n                isProtected: request?.wu?.isProtected ?? this.isProtected,\r\n                ID: this.ID,\r\n                State: this.State\r\n            },\r\n            ClusterOrig: this.ClusterName,\r\n            JobNameOrig: this.JobName,\r\n            isProtectedOrig: this.isProtected,\r\n            StateOrig: this.State\r\n        });\r\n    }\r\n\r\n    isComplete(): boolean {\r\n        switch (this.State) {\r\n            case States.Finished:\r\n            case States.Failed:\r\n            case States.Aborted:\r\n            case States.NotFound:\r\n                return true;\r\n            default:\r\n        }\r\n        return false;\r\n    }\r\n\r\n    isFailed() {\r\n        if (this.isComplete() && this.State !== States.Finished) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    isDeleted() {\r\n        switch (this.State) {\r\n            case States.NotFound:\r\n                return true;\r\n            default:\r\n        }\r\n        return false;\r\n    }\r\n\r\n    isRunning(): boolean {\r\n        return !this.isComplete();\r\n    }\r\n\r\n    abort(): Promise<FileSpray.AbortDFUWorkunitResponse> {\r\n        return this.connection.AbortDFUWorkunit({ wuid: this.ID });\r\n    }\r\n\r\n    delete() {\r\n        return this.DFUWUAction(FileSpray.DFUWUActions.Delete).then(response => {\r\n            return this.refresh().then(() => {\r\n                this._monitor();\r\n                return response;\r\n            });\r\n        });\r\n    }\r\n\r\n    async refresh(full: boolean = false): Promise<this> {\r\n        await this.GetDFUWorkunit();\r\n        return this;\r\n    }\r\n\r\n    fetchXML(callback?: void): Promise<string> {\r\n        return this.DFUWUFile();\r\n    }\r\n\r\n    //  Monitoring  ---\r\n    protected _monitor(): void {\r\n        if (this.isComplete()) {\r\n            this._monitorTickCount = 0;\r\n            return;\r\n        }\r\n        super._monitor();\r\n    }\r\n\r\n    protected _monitorTimeoutDuration(): number {\r\n        const retVal = super._monitorTimeoutDuration();\r\n        if (this._monitorTickCount <= 1) {          //  Once\r\n            return 3000;\r\n        } else if (this._monitorTickCount <= 5) {   //  Twice\r\n            return 6000;\r\n        } else if (this._monitorTickCount <= 7) {   //  Twice\r\n            return 12000;\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    protected DFUWUFile(_request: Partial<FileSpray.DFUWUFileRequest> = {}): Promise<string> {\r\n        return this.connection.DFUWUFileEx({\r\n            ..._request, Wuid: this.ID\r\n        }).then(response => {\r\n            //TODO: additional processing?\r\n            return response;\r\n        }).catch((e: ESPExceptions) => {\r\n            return \"\";\r\n        });\r\n    }\r\n\r\n    protected DFUWUAction(actionType: FileSpray.DFUWUActions): Promise<FileSpray.DFUWorkunitsActionResponse> {\r\n        return this.connection.DFUWorkunitsAction({\r\n            wuids: { Item: [this.ID] },\r\n            Type: actionType\r\n        }).then((response) => {\r\n            if (actionType === FileSpray.DFUWUActions.Delete) return response;\r\n            return this.refresh().then(() => {\r\n                this._monitor();\r\n                return response;\r\n            });\r\n        });\r\n    }\r\n\r\n    //  Events  ---\r\n    on(eventID: DFUWorkunitEvents, propIDorCallback: StateCallback | keyof UDFUWorkunitState, callback?: StatePropCallback): this {\r\n        if (this.isCallback(propIDorCallback)) {\r\n            switch (eventID) {\r\n                case \"finished\":\r\n                    super.on(\"propChanged\", \"State\", (changeInfo: IEvent) => {\r\n                        if (this.isComplete()) {\r\n                            propIDorCallback([changeInfo]);\r\n                        }\r\n                    });\r\n                    break;\r\n                case \"changed\":\r\n                    super.on(eventID, propIDorCallback);\r\n                    break;\r\n                default:\r\n            }\r\n        } else {\r\n            switch (eventID) {\r\n                case \"changed\":\r\n                    super.on(eventID, propIDorCallback, callback!);\r\n                    break;\r\n                default:\r\n            }\r\n        }\r\n        this._monitor();\r\n        return this;\r\n    }\r\n\r\n    watchUntilComplete(callback?: StateCallback): Promise<this> {\r\n        return new Promise((resolve, _) => {\r\n            const watchHandle = this.watch((changes) => {\r\n                if (callback) {\r\n                    callback(changes);\r\n                }\r\n                if (this.isComplete()) {\r\n                    watchHandle.release();\r\n                    resolve(this);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    watchUntilRunning(callback?: StateCallback): Promise<this> {\r\n        return new Promise((resolve, _) => {\r\n            const watchHandle = this.watch((changes) => {\r\n                if (callback) {\r\n                    callback(changes);\r\n                }\r\n                if (this.isComplete() || this.isRunning()) {\r\n                    watchHandle.release();\r\n                    resolve(this);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    //  ---  ---  ---\r\n    protected constructor(optsConnection: IOptions | IConnection, wuid?: string) {\r\n        super();\r\n        this.connection = new FileSprayService(optsConnection);\r\n        this.topologyConnection = new WsTopology.TopologyService(optsConnection);\r\n        this.clearState(wuid);\r\n    }\r\n\r\n    clearState(wuid?: string) {\r\n        this.clear({\r\n            ID: wuid,\r\n            State: States.Unknown\r\n        });\r\n    }\r\n\r\n    //  FileSpray passthroughs  ---\r\n    protected GetDFUWorkunit(_request: Partial<FileSpray.GetDFUWorkunit> = {}): Promise<FileSpray.GetDFUWorkunitResponse> {\r\n        return this.connection.GetDFUWorkunit({ ..._request, wuid: this.ID }).then((response) => {\r\n            this.set(response.result);\r\n            return response;\r\n        }).catch((e: ESPExceptions) => {\r\n            //  deleted  ---\r\n            const wuMissing = e.Exception.some((exception) => {\r\n                if (exception.Code === 20080 || exception.Code === 20081) {\r\n                    this.clearState(this.ID);\r\n                    this.set(\"State\", States.NotFound);\r\n                    return true;\r\n                }\r\n                return false;\r\n            });\r\n            if (!wuMissing) {\r\n                logger.warning(`Unexpected ESP exception: ${e.message}`);\r\n                throw e;\r\n            }\r\n            return {} as FileSpray.GetDFUWorkunitResponse;\r\n        });\r\n    }\r\n}", "import * as cp from \"node:child_process\";\r\nimport * as crypto from \"node:crypto\";\r\nimport * as fs from \"node:fs\";\r\nimport * as os from \"node:os\";\r\nimport * as path from \"node:path\";\r\n\r\nimport { exists, scopedLogger, xml2json, XMLNode } from \"@hpcc-js/util\";\r\nimport { attachWorkspace, Workspace } from \"./eclMeta.ts\";\r\n\r\nconst logger = scopedLogger(\"clienttools/eclcc\");\r\nconst exeExt = os.type() === \"Windows_NT\" ? \".exe\" : \"\";\r\n\r\nfunction tidyCRLF(inStr: string): string {\r\n    return inStr.split(\"\\r\\n\").join(\"\\n\").split(\"\\r\").join(\"\\n\");\r\n}\r\n\r\nexport class Version {\r\n    readonly prefix: string = \"\";\r\n    readonly major: number = 0;\r\n    readonly minor: number = 0;\r\n    readonly patch: number = 0;\r\n    readonly postfix: string = \"\";\r\n\r\n    constructor(build: string) {\r\n        const parts = build.split(\" \");\r\n        if (parts.length) {\r\n            const match = /(?:(\\w+)_)?(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.*))?/.exec(parts[parts.length - 1]);\r\n            if (match) {\r\n                this.prefix = match[1] || \"\";\r\n                this.major = +match[2] || 0;\r\n                this.minor = +match[3] || 0;\r\n                this.patch = +match[4] || 0;\r\n                this.postfix = match[5] || \"\";\r\n            }\r\n        }\r\n    }\r\n\r\n    parse(build: string) {\r\n    }\r\n\r\n    exists(): boolean {\r\n        return this.major !== 0 || this.minor !== 0 || this.patch !== 0 || this.postfix !== \"\";\r\n    }\r\n\r\n    compare(other: Version): number {\r\n        if (this.major > other.major) return 1;\r\n        if (this.major < other.major) return -1;\r\n        if (this.minor > other.minor) return 1;\r\n        if (this.minor < other.minor) return -1;\r\n        if (this.patch > other.patch) return 1;\r\n        if (this.patch < other.patch) return -1;\r\n        if (this.postfix === \"\" && other.postfix !== \"\") return 1;\r\n        return this.postfix.localeCompare(other.postfix);\r\n    }\r\n\r\n    toString(): string {\r\n        return `${this.prefix}_${this.major}.${this.minor}.${this.patch}-${this.postfix}`;\r\n    }\r\n}\r\n\r\ninterface IExecFile {\r\n    code: number;\r\n    stderr: string;\r\n    stdout: string;\r\n}\r\n\r\nexport interface IECLErrorWarning {\r\n    filePath: string;\r\n    line: number;\r\n    col: number;\r\n    msg: string;\r\n    severity: string;\r\n}\r\n\r\nconst ERROR = \"error\";\r\nconst WARN = \"warning\";\r\n\r\nexport class Errors {\r\n    protected _checked: string[];\r\n    protected errWarn: IECLErrorWarning[] = [];\r\n    protected errOther: string[] = [];\r\n\r\n    constructor(checked: string[]) {\r\n        this._checked = checked;\r\n    }\r\n\r\n    checked(): string[] {\r\n        return this._checked;\r\n    }\r\n\r\n    all(): IECLErrorWarning[] {\r\n        return this.errWarn;\r\n    }\r\n\r\n    errors(): IECLErrorWarning[] {\r\n        return this.errWarn.filter(e => e.severity === ERROR);\r\n    }\r\n\r\n    hasError(): boolean {\r\n        return this.errors().length > 0;\r\n    }\r\n\r\n    warnings(): IECLErrorWarning[] {\r\n        return this.errWarn.filter(e => e.severity === WARN);\r\n    }\r\n\r\n    hasWarning(): boolean {\r\n        return this.warnings().length > 0;\r\n    }\r\n\r\n    info(): IECLErrorWarning[] {\r\n        return this.errWarn.filter(e => [ERROR, WARN].indexOf(e.severity) < 0);\r\n    }\r\n\r\n    hasOther(): boolean {\r\n        return this.info().length > 0;\r\n    }\r\n\r\n    unknown(): string[] {\r\n        return this.errOther;\r\n    }\r\n\r\n    hasUnknown(): boolean {\r\n        return this.unknown().length > 0;\r\n    }\r\n}\r\n\r\nexport class EclccErrors extends Errors {\r\n\r\n    constructor(stdErr: string, checked: string[]) {\r\n        super(checked);\r\n        if (stdErr && stdErr.length) {\r\n            for (const errLine of stdErr.split(os.EOL)) {\r\n                let match = /([a-zA-Z]:\\\\(?:[- \\w\\.\\d]+\\\\)*(?:[- \\w\\.\\d]+)?|(?:\\/[\\w\\.\\-]+)+)\\((\\d*),(\\d*)\\) ?: ?(error|warning|info) C(\\d*) ?: ?(.*)/.exec(errLine);\r\n                if (match) {\r\n                    const [, filePath, row, _col, severity, code, _msg] = match;\r\n                    const line: number = +row;\r\n                    const col: number = +_col;\r\n                    const msg = code + \":  \" + _msg;\r\n                    this.errWarn.push({ filePath, line, col, msg, severity });\r\n                    continue;\r\n                }\r\n                match = /(error|warning|info): (.*)/i.exec(errLine);\r\n                if (match) {\r\n                    const [, severity, msg] = match;\r\n                    this.errWarn.push({ filePath: \"\", line: 0, col: 0, msg, severity });\r\n                    continue;\r\n                }\r\n                match = /\\d error(s?), \\d warning(s?)/.exec(errLine);\r\n                if (match) {\r\n                    continue;\r\n                }\r\n                logger.warning(`parseECLErrors:  Unable to parse \"${errLine}\"`);\r\n                this.errOther.push(errLine);\r\n            }\r\n        }\r\n        this._checked = checked;\r\n    }\r\n}\r\n\r\nexport class EnvchkErrors extends Errors {\r\n\r\n    private _lines: string[];\r\n\r\n    constructor(filePath: string, stdErr: string, checked: string[]) {\r\n        super(checked);\r\n        let content: string = fs.readFileSync(filePath, \"utf8\");\r\n        content = content.replace(/\\r\\n/g, \"\\n\");\r\n        this._lines = content.split(\"\\n\");\r\n        if (stdErr && stdErr.length) {\r\n            for (const errLine of stdErr.split(os.EOL)) {\r\n                const match = /(Warning|Error) : Path\\=(\\S*?)(\\[\\S*\\])? Message\\=(.*)/.exec(errLine);\r\n                if (match) {\r\n                    const [, severity, _path, _attr, _msg] = match;\r\n                    const msg = `${_path} ${_attr ? _attr : \"\"}:  ${_msg}`;\r\n                    const [line, col] = this.locate(_path);\r\n                    this.errWarn.push({ filePath, line, col, msg, severity });\r\n                    continue;\r\n                }\r\n                if (match) {\r\n                    continue;\r\n                }\r\n                logger.warning(`parseECLErrors:  Unable to parse \"${errLine}\"`);\r\n                this.errOther.push(errLine);\r\n            }\r\n        }\r\n        this._checked = checked;\r\n    }\r\n\r\n    locate(path: string): [number, number] {\r\n        const pathParts = path.split(\"/\");\r\n        if (pathParts.length && pathParts[0] === \"\") {\r\n            pathParts.shift();\r\n        }\r\n        if (pathParts.length > 0) {\r\n            let lineIdx = 0;\r\n            for (const line of this._lines) {\r\n                const testStr = \"<\" + pathParts[0];\r\n                if (line.indexOf(testStr + \" \") >= 0 || line.indexOf(testStr + \">\") >= 0) {\r\n                    pathParts.shift();\r\n                    if (pathParts.length === 0) {\r\n                        return [lineIdx + 1, line.indexOf(testStr) + 1];\r\n                    }\r\n                }\r\n                ++lineIdx;\r\n            }\r\n        }\r\n        return [0, 0];\r\n    }\r\n}\r\n\r\nexport function walkXmlJson(node: any, callback: (key: string, childNode: any, stack: any[]) => void, stack?: any[]) {\r\n    stack = stack || [];\r\n    stack.push(node);\r\n    for (const key in node) {\r\n        if (node.hasOwnProperty(key)) {\r\n            const childNode = node[key];\r\n            callback(key, childNode, stack);\r\n            if (childNode instanceof Array) {\r\n                childNode.forEach(child => {\r\n                    walkXmlJson(child, callback, stack);\r\n                });\r\n            } else if (typeof childNode === \"object\") {\r\n                walkXmlJson(childNode, callback, stack);\r\n            }\r\n        }\r\n    }\r\n    stack.pop();\r\n}\r\n\r\nexport class LocalWorkunit {\r\n    jsonWU: any;\r\n\r\n    constructor(jsonWU: any) {\r\n        this.jsonWU = jsonWU;\r\n    }\r\n\r\n    bpGetValidLocations(filePath: any) {\r\n        const retVal: any[] = [];\r\n        if (exists(\"W_LOCAL.Graphs\", this.jsonWU)) {\r\n            let id = \"\";\r\n            walkXmlJson(this.jsonWU.W_LOCAL.Graphs, (key: string, item: any, _stack: any[]) => {\r\n                if (key === \"$\" && item.id) {\r\n                    id = item.id;\r\n                }\r\n                if (key === \"$\" && item.name === \"definition\") {\r\n                    const match = /([a-z,A-Z]:\\\\(?:[-\\w\\.\\d]+\\\\)*(?:[-\\w\\.\\d]+)?|(?:\\/[\\w\\.\\-]+)+)\\((\\d*),(\\d*)\\)/.exec(item.value);\r\n                    if (match) {\r\n                        const [, file, row, _col] = match;\r\n                        const line: number = +row;\r\n                        const col: number = +_col;\r\n                        if (filePath === file) {\r\n                            retVal.push({ file, line, col, id });\r\n                        }\r\n                    }\r\n                }\r\n                // console.log(`${key}:  ` + JSON.stringify(item));\r\n            });\r\n        }\r\n        return retVal;\r\n    }\r\n}\r\n\r\nexport interface IArchive {\r\n    content: string;\r\n    err: EclccErrors;\r\n}\r\n\r\nexport interface IBundle {\r\n    name: string;\r\n    description: string;\r\n    url: string;\r\n    props?: { [key: string]: string | number | boolean };\r\n}\r\n\r\nexport class ClientTools {\r\n    readonly eclccPath: string;\r\n    readonly envchkPath: string;\r\n    readonly eclBundlePath: string;\r\n    readonly binPath: string;\r\n    protected cwd: string;\r\n    protected includeFolders: string[];\r\n    protected _legacyMode: boolean;\r\n    protected _args: string[];\r\n    protected _version: Version;\r\n\r\n    constructor(eclccPath: string, cwd?: string, includeFolders: string[] = [], legacyMode: boolean = false, args: string[] = [], version?: Version) {\r\n        this.eclccPath = eclccPath;\r\n        this.binPath = path.dirname(this.eclccPath);\r\n        this.envchkPath = path.join(this.binPath, \"envchk\" + exeExt);\r\n        this.eclBundlePath = path.join(this.binPath, \"ecl-bundle\" + exeExt);\r\n        this.cwd = path.normalize(cwd || this.binPath);\r\n        this.includeFolders = includeFolders;\r\n        this._legacyMode = legacyMode;\r\n        this._args = args;\r\n        this._version = version!;\r\n    }\r\n\r\n    clone(cwd?: string, includeFolders?: string[], legacyMode: boolean = false, args: string[] = []) {\r\n        return new ClientTools(this.eclccPath, cwd, includeFolders, legacyMode, args, this._version);\r\n    }\r\n\r\n    exists(filePath: string) {\r\n        try {\r\n            fs.accessSync(filePath);\r\n            return true;\r\n        } catch (e) { }\r\n        return false;\r\n    }\r\n\r\n    args(additionalItems: string[] = []): string[] {\r\n        const retVal: string[] = [...this._args];\r\n        if (this._legacyMode) {\r\n            retVal.push(\"-legacy\");\r\n        }\r\n        return retVal.concat(this.includeFolders.map(includePath => {\r\n            return \"-I\" + path.normalize(includePath);\r\n        })).concat(additionalItems);\r\n    }\r\n\r\n    version(): Promise<Version> {\r\n        if (this._version) {\r\n            return Promise.resolve(this._version);\r\n        }\r\n        return this.execFile(this.eclccPath, this.binPath, this.args([\"--version\"]), \"eclcc\", `Cannot find ${this.eclccPath}`).then((response: IExecFile): Version => {\r\n            this._version = new Version(response.stdout);\r\n            return this._version;\r\n        });\r\n    }\r\n\r\n    versionSync(): Version {\r\n        return this._version;\r\n    }\r\n\r\n    _paths = {};\r\n    paths() {\r\n        return this.execFile(this.eclccPath, this.cwd, this.args([\"-showpaths\"]), \"eclcc\", `Cannot find ${this.eclccPath}`).then((response: IExecFile) => {\r\n            if (response && response.stdout && response.stdout.length) {\r\n                const paths = response.stdout.split(/\\r?\\n/);\r\n                for (const path of paths) {\r\n                    const parts = path.split(\"=\");\r\n                    if (parts.length === 2) {\r\n                        this._paths[parts[0]] = parts[1];\r\n                    }\r\n                }\r\n            }\r\n            return this._paths;\r\n        });\r\n    }\r\n\r\n    private loadXMLDoc(filePath: any, removeOnRead?: boolean): Promise<XMLNode> {\r\n        return new Promise((resolve, _reject) => {\r\n            const fileData = fs.readFileSync(filePath, \"ascii\");\r\n            const retVal = xml2json(fileData as any);\r\n            if (removeOnRead) {\r\n                fs.unlink(filePath, (err) => { });\r\n            }\r\n            resolve(retVal);\r\n        });\r\n    }\r\n\r\n    createWU(filename: string): Promise<LocalWorkunit> {\r\n        const tmpName = path.join(os.tmpdir(), `eclcc-wu-tmp-${crypto.randomBytes(8).toString(\"hex\")}`);\r\n        const args = [\"-o\" + tmpName, \"-wu\"].concat([filename]);\r\n        return this.execFile(this.eclccPath, this.cwd, this.args(args), \"eclcc\", `Cannot find ${this.eclccPath}`).then((_response: IExecFile) => {\r\n            const xmlPath = path.normalize(tmpName + \".xml\");\r\n            const contentPromise = this.exists(xmlPath) ? this.loadXMLDoc(xmlPath, true) : Promise.resolve({});\r\n            return contentPromise.then((content) => {\r\n                return new LocalWorkunit(content);\r\n            });\r\n        });\r\n    }\r\n\r\n    createArchive(filename: string): Promise<IArchive> {\r\n        const args = [\"-E\"].concat([filename]);\r\n        return this.execFile(this.eclccPath, this.cwd, this.args(args), \"eclcc\", `Cannot find ${this.eclccPath}`).then((response: IExecFile): IArchive => {\r\n            return {\r\n                content: response.stdout,\r\n                err: new EclccErrors(response.stderr, [])\r\n            };\r\n        });\r\n    }\r\n\r\n    attachWorkspace(): Workspace {\r\n        return attachWorkspace(this.cwd);\r\n    }\r\n\r\n    fetchMeta(filePath: string): Promise<Workspace> {\r\n        return Promise.all([\r\n            attachWorkspace(this.cwd),\r\n            this.execFile(this.eclccPath, this.cwd, this.args([\"-M\", filePath]), \"eclcc\", `Cannot find ${this.eclccPath}`)\r\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\r\n            try {\r\n                if (execFileResponse && execFileResponse.stdout && execFileResponse.stdout.length) {\r\n                    metaWorkspace.parseMetaXML(execFileResponse.stdout);\r\n                }\r\n            } catch (e: any) {\r\n                logger.error(`fetchMeta:  Error parsing XML - ${e?.message ?? \"unknown\"}`);\r\n            }\r\n            return metaWorkspace;\r\n        });\r\n    }\r\n\r\n    syntaxCheck(filePath: string, args: string[] = [\"-syntax\"]): Promise<Errors> {\r\n        return Promise.all([\r\n            attachWorkspace(this.cwd),\r\n            this.execFile(this.eclccPath, this.cwd, this.args([...args, \"-M\", filePath]), \"eclcc\", `Cannot find ${this.eclccPath}`)\r\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\r\n            let checked: string[] = [];\r\n            try {\r\n                if (execFileResponse && execFileResponse.stdout && execFileResponse.stdout.length) {\r\n                    checked = metaWorkspace.parseMetaXML(execFileResponse.stdout);\r\n                }\r\n            } catch (e: any) {\r\n                logger.error(`syntaxCheck:  Error parsing XML - ${e?.message ?? \"unknown\"}`);\r\n            }\r\n            return new EclccErrors(execFileResponse ? execFileResponse.stderr : \"\", checked);\r\n        });\r\n    }\r\n\r\n    envCheck(filePath: string, args: string[] = []): Promise<Errors> {\r\n        return Promise.all([\r\n            attachWorkspace(this.cwd),\r\n            this.execFile(this.envchkPath, this.cwd, this.args([...args, filePath]), \"envchk\", `Cannot find ${this.envchkPath}`)\r\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\r\n            return new EnvchkErrors(filePath, execFileResponse ? execFileResponse.stderr : \"\", []);\r\n        });\r\n    }\r\n\r\n    bundleList(): Promise<IBundle[]> {\r\n        const bundlesRegEx = /\\|(.*)\\|(.*)\\|(.*)\\|/g;\r\n        return Promise.all([\r\n            fetch(\"https://raw.githubusercontent.com/hpcc-systems/ecl-bundles/master/README.rst\")\r\n                .then(response => response.text())\r\n                .then(readme => {\r\n                    const retVal: IBundle[] = [];\r\n                    let m = bundlesRegEx.exec(readme);\r\n                    while (m) {\r\n                        retVal.push({\r\n                            name: m[1].trim(),\r\n                            description: m[2].trim(),\r\n                            url: m[3].trim()\r\n                        });\r\n                        m = bundlesRegEx.exec(readme);\r\n                    }\r\n                    return retVal;\r\n                }),\r\n            this.execFile(this.eclBundlePath, this.cwd, this.args([\"list\"]), \"ecl-bundle\", `Cannot find ${this.eclBundlePath}`)\r\n                .then(installedText => {\r\n                    return tidyCRLF(installedText.stdout).split(\"\\n\");\r\n                }).then(installedItems => {\r\n                    const allProps = {};\r\n                    return Promise.all(installedItems.filter(ii => !!ii).map(ii => {\r\n                        return this.execFile(this.eclBundlePath, this.cwd, this.args([\"info\", ii]), \"ecl-bundle\", `Cannot find ${this.eclBundlePath}`)\r\n                            .then(infoText => {\r\n                                return tidyCRLF(infoText.stdout).split(\"\\n\");\r\n                            }).then(info => {\r\n                                const props = {};\r\n                                info.forEach(line => {\r\n                                    const parts = line.split(\":\");\r\n                                    props[parts.shift().trim()] = parts.join(\":\").trim();\r\n                                });\r\n                                allProps[ii] = {\r\n                                    name: ii,\r\n                                    props\r\n                                };\r\n                            });\r\n                    })).then(() => allProps);\r\n                })\r\n        ]).then(([bundles, installed]) => {\r\n            bundles.forEach(b => {\r\n                if (installed[b.name]) {\r\n                    b.props = installed[b.name].props;\r\n                    delete installed[b.name];\r\n                }\r\n            });\r\n            for (const key in installed) {\r\n                bundles.push({\r\n                    name: key,\r\n                    url: \"\",\r\n                    description: \"\",\r\n                    props: installed[key].props\r\n                });\r\n            }\r\n            return bundles;\r\n        }).catch(e => {\r\n            return [];\r\n        });\r\n    }\r\n\r\n    bundleInstall(bundleUrl) {\r\n        return Promise.all([\r\n            attachWorkspace(this.cwd),\r\n            this.execFile(this.eclBundlePath, this.cwd, this.args([\"install\", bundleUrl]), \"ecl-bundle\", `Cannot find ${this.eclBundlePath}`)\r\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\r\n            return execFileResponse;\r\n        });\r\n    }\r\n\r\n    bundleUninstall(name) {\r\n        return Promise.all([\r\n            attachWorkspace(this.cwd),\r\n            this.execFile(this.eclBundlePath, this.cwd, this.args([\"uninstall\", name]), \"ecl-bundle\", `Cannot find ${this.eclBundlePath}`)\r\n        ]).then(([metaWorkspace, execFileResponse]: [Workspace, IExecFile]) => {\r\n            return execFileResponse;\r\n        });\r\n    }\r\n\r\n    private execFile(cmd: string, cwd: string, args: string[], _toolName: string, _notFoundError?: string): Promise<{ code: number, stdout: string, stderr: string }> {\r\n        return new Promise((resolve, _reject) => {\r\n            logger.debug(`${cmd} ${args.join(\" \")}`);\r\n            const child = cp.spawn(cmd, args, { cwd });\r\n            let stdOut = \"\";\r\n            let stdErr = \"\";\r\n            child.stdout.on(\"data\", (data) => {\r\n                stdOut += data.toString();\r\n            });\r\n            child.stderr.on(\"data\", (data) => {\r\n                stdErr += data.toString();\r\n            });\r\n            child.on(\"close\", (_code, _signal) => {\r\n                resolve({\r\n                    code: _code,\r\n                    stdout: stdOut.trim(),\r\n                    stderr: stdErr.trim()\r\n                });\r\n            });\r\n        });\r\n    }\r\n}\r\n\r\nfunction locateClientToolsInFolder(rootFolder: string, clientTools: ClientTools[]) {\r\n    if (rootFolder) {\r\n        const hpccSystemsFolder = path.join(rootFolder, \"HPCCSystems\");\r\n        if (fs.existsSync(hpccSystemsFolder) && fs.statSync(hpccSystemsFolder).isDirectory()) {\r\n            if (os.type() !== \"Windows_NT\") {\r\n                const eclccPath = path.join(hpccSystemsFolder, \"bin\", \"eclcc\");\r\n                if (fs.existsSync(eclccPath)) {\r\n                    clientTools.push(new ClientTools(eclccPath));\r\n                }\r\n            }\r\n            fs.readdirSync(hpccSystemsFolder).forEach((versionFolder) => {\r\n                const eclccPath = path.join(hpccSystemsFolder, versionFolder, \"clienttools\", \"bin\", \"eclcc\" + exeExt);\r\n                if (fs.existsSync(eclccPath)) {\r\n                    const name = path.basename(versionFolder);\r\n                    const version = new Version(name);\r\n                    if (version.exists()) {\r\n                        clientTools.push(new ClientTools(eclccPath));\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\nlet allClientToolsCache: Promise<ClientTools[]>;\r\nexport function clearAllClientToolsCache() {\r\n    allClientToolsCache = undefined;\r\n}\r\n\r\nexport function locateAllClientTools() {\r\n    if (allClientToolsCache) return allClientToolsCache;\r\n    const clientTools: ClientTools[] = [];\r\n    switch (os.type()) {\r\n        case \"Windows_NT\":\r\n            const rootFolder86 = process.env[\"ProgramFiles(x86)\"] || \"\";\r\n            if (rootFolder86) {\r\n                locateClientToolsInFolder(rootFolder86, clientTools);\r\n            }\r\n            const rootFolder = process.env[\"ProgramFiles\"] || \"\";\r\n            if (rootFolder) {\r\n                locateClientToolsInFolder(rootFolder, clientTools);\r\n            }\r\n            if (!rootFolder86 && !rootFolder) {\r\n                locateClientToolsInFolder(\"c:\\\\Program Files (x86)\", clientTools);\r\n            }\r\n            break;\r\n        case \"Linux\":\r\n        case \"Darwin\":\r\n            locateClientToolsInFolder(\"/opt\", clientTools);\r\n            break;\r\n        default:\r\n            break;\r\n    }\r\n\r\n    allClientToolsCache = Promise.all(clientTools.map(ct => ct.version())).then(() => {\r\n        clientTools.sort((l: ClientTools, r: ClientTools) => {\r\n            return r.versionSync().compare(l.versionSync());\r\n        });\r\n        return clientTools;\r\n    });\r\n    return allClientToolsCache;\r\n}\r\n\r\nlet eclccPathMsg = \"\";\r\nfunction logEclccPath(eclccPath: string) {\r\n    const msg = `Using eclccPath setting:  ${eclccPath}`;\r\n    if (eclccPathMsg !== msg) {\r\n        logger.info(msg);\r\n        eclccPathMsg = msg;\r\n    }\r\n}\r\n\r\nexport function locateClientTools(overridePath: string = \"\", build: string = \"\", cwd: string = \".\", includeFolders: string[] = [], legacyMode: boolean = false, args: string[] = []): Promise<ClientTools> {\r\n    if (overridePath && fs.existsSync(overridePath)) {\r\n        logEclccPath(overridePath);\r\n        return Promise.resolve(new ClientTools(overridePath, cwd, includeFolders, legacyMode, args));\r\n    }\r\n    return locateAllClientTools().then((allClientToolsCache2) => {\r\n        if (!allClientToolsCache2.length) {\r\n            throw new Error(\"Unable to locate ECL Client Tools.\");\r\n        }\r\n        const buildVersion = new Version(build);\r\n        let latest: ClientTools | undefined;\r\n        let bestMajor: ClientTools | undefined;\r\n        for (const ct of allClientToolsCache2) {\r\n            const ctVersion = ct.versionSync();\r\n            if (ctVersion.exists()) {\r\n                if (!latest) latest = ct;\r\n                if (!bestMajor && buildVersion.major === ctVersion.major) bestMajor = ct;\r\n                if (buildVersion.major === ctVersion.major && buildVersion.minor === ctVersion.minor) return ct.clone(cwd, includeFolders, legacyMode, args);\r\n            }\r\n        }\r\n        const best: ClientTools = bestMajor || latest!;\r\n        logEclccPath(best.eclccPath);\r\n        return best.clone(cwd, includeFolders, legacyMode, args);\r\n    });\r\n}\r\n", "import * as fs from \"node:fs\";\r\nimport * as path from \"node:path\";\r\n\r\nimport { Dictionary, DictionaryNoCase, find, SAXStackParser, scopedLogger, XMLNode } from \"@hpcc-js/util\";\r\nimport { ClientTools, locateClientTools } from \"./eclcc.ts\";\r\n\r\nconst logger = scopedLogger(\"clienttools/eclmeta\");\r\n\r\nexport interface IFilePath {\r\n    scope: ECLScope;\r\n}\r\n\r\nconst _inspect = false;\r\nfunction inspect(obj: any, _id: string, known: any) {\r\n    if (_inspect) {\r\n        for (const key in obj) {\r\n            const id = `${_id}.${key}`;\r\n            if (key !== \"$\" && known[key] === undefined && known[key.toLowerCase() + \"s\"] === undefined) {\r\n                logger.debug(id);\r\n            }\r\n        }\r\n        if (obj.$) {\r\n            inspect(obj.$, _id + \".$\", known);\r\n        }\r\n    }\r\n}\r\n\r\nexport class Attr {\r\n    __attrs: { [id: string]: string };\r\n    name: string;\r\n\r\n    constructor(xmlAttr: XMLNode) {\r\n        this.__attrs = xmlAttr.$;\r\n        this.name = xmlAttr.$.name;\r\n    }\r\n}\r\n\r\nexport class Field {\r\n    __attrs: { [id: string]: string };\r\n    definition: Definition;\r\n    get scope(): ECLScope {\r\n        return this.definition;\r\n    }\r\n    name: string;\r\n    type: string;\r\n\r\n    constructor(definition: Definition, xmlField: XMLNode) {\r\n        this.__attrs = xmlField.$;\r\n        this.definition = definition;\r\n        this.name = xmlField.$.name;\r\n        this.type = xmlField.$.type;\r\n    }\r\n}\r\n\r\nexport interface ECLDefinitionLocation {\r\n    filePath: string;\r\n    line: number;\r\n    charPos: number;\r\n    definition?: Definition;\r\n    source?: Source;\r\n}\r\n\r\nexport interface ISuggestion {\r\n    name: string;\r\n    type: string;\r\n}\r\n\r\nexport class ECLScope implements IFilePath {\r\n    get scope(): ECLScope {\r\n        return this;\r\n    }\r\n    name: string;\r\n    type: string;\r\n    sourcePath: string;\r\n    line: number;\r\n    start: number;\r\n    body: number;\r\n    end: number;\r\n    definitions: Definition[];\r\n\r\n    constructor(name: string, type: string, sourcePath: string, xmlDefinitions: XMLNode[], line: number = 1, start: number = 0, body: number = 0, end: number = Number.MAX_VALUE) {\r\n        this.name = name;\r\n        this.type = type;\r\n        this.sourcePath = path.normalize(sourcePath);\r\n        this.line = +line - 1;\r\n        this.start = +start;\r\n        this.body = +body;\r\n        this.end = +end;\r\n        this.definitions = this.parseDefinitions(xmlDefinitions);\r\n    }\r\n\r\n    private parseDefinitions(definitions: XMLNode[] = []): Definition[] {\r\n        return definitions.map(definition => {\r\n            const retVal = new Definition(this.sourcePath, definition);\r\n            inspect(definition, \"definition\", retVal);\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    contains(charOffset: number) {\r\n        return charOffset >= this.start && charOffset <= this.end;\r\n    }\r\n\r\n    scopeStackAt(charOffset: number): ECLScope[] {\r\n        let retVal: ECLScope[] = [];\r\n        if (this.contains(charOffset)) {\r\n            retVal.push(this);\r\n            this.definitions.forEach(def => {\r\n                retVal = def.scopeStackAt(charOffset).concat(retVal);\r\n            });\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    private _resolve(defs: Definition[] = [], qualifiedID: string): Definition | undefined {\r\n        const qualifiedIDParts = qualifiedID.split(\".\");\r\n        const base = qualifiedIDParts.shift();\r\n        const retVal = find(defs, def => {\r\n            if (typeof def.name === \"string\" && typeof base === \"string\" && def.name.toLowerCase() === base.toLowerCase()) {\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        if (retVal && retVal.definitions.length && qualifiedIDParts.length) {\r\n            return this._resolve(retVal.definitions, qualifiedIDParts.join(\".\"));\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    resolve(qualifiedID: string): Definition | undefined {\r\n        return this._resolve(this.definitions, qualifiedID);\r\n    }\r\n\r\n    suggestions(): ISuggestion[] {\r\n        return this.definitions.map(def => {\r\n            return {\r\n                name: def.name,\r\n                type: this.type\r\n            };\r\n        });\r\n    }\r\n}\r\n\r\nexport class Definition extends ECLScope {\r\n    __attrs: { [id: string]: string };\r\n    exported: boolean;\r\n    shared: boolean;\r\n    fullname: string;\r\n    inherittype: string;\r\n    attrs: Attr[];\r\n    fields: Field[];\r\n\r\n    constructor(sourcePath: string, xmlDefinition: XMLNode) {\r\n        super(xmlDefinition.$.name, xmlDefinition.$.type, sourcePath, xmlDefinition.children(\"Definition\"), xmlDefinition.$.line, xmlDefinition.$.start, xmlDefinition.$.body, xmlDefinition.$.end);\r\n        this.__attrs = xmlDefinition.$;\r\n        this.exported = !!xmlDefinition.$.exported;\r\n        this.shared = !!xmlDefinition.$.shared;\r\n        this.fullname = xmlDefinition.$.fullname;\r\n        this.inherittype = xmlDefinition.$.inherittype;\r\n        this.attrs = this.parseAttrs(xmlDefinition.children(\"Attr\"));\r\n        this.fields = this.parseFields(xmlDefinition.children(\"Field\"));\r\n    }\r\n\r\n    private parseAttrs(attrs: XMLNode[] = []): Attr[] {\r\n        return attrs.map(attr => {\r\n            const retVal = new Attr(attr);\r\n            inspect(attr, \"attr\", retVal);\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    private parseFields(fields: XMLNode[] = []): Field[] {\r\n        return fields.map(field => {\r\n            const retVal = new Field(this, field);\r\n            inspect(field, \"field\", retVal);\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    suggestions() {\r\n        return super.suggestions().concat(this.fields.map(field => {\r\n            return {\r\n                name: field.name,\r\n                type: field.type\r\n            };\r\n        }));\r\n    }\r\n}\r\n\r\nexport class Import {\r\n    __attrs: { [id: string]: string };\r\n    name: string;\r\n    ref: string;\r\n    start: number;\r\n    end: number;\r\n    line: number;\r\n\r\n    constructor(xmlImport: XMLNode) {\r\n        this.__attrs = xmlImport.$;\r\n        this.name = xmlImport.$.name;\r\n        this.ref = xmlImport.$.ref;\r\n        this.start = xmlImport.$.start;\r\n        this.end = xmlImport.$.end;\r\n        this.line = xmlImport.$.line;\r\n    }\r\n}\r\n\r\nexport class Source extends ECLScope {\r\n    imports: Import[];\r\n    __attrs: { [id: string]: string };\r\n\r\n    constructor(xmlSource: XMLNode) {\r\n        super(xmlSource.$.name, \"source\", xmlSource.$.sourcePath, xmlSource.children(\"Definition\"));\r\n        this.__attrs = xmlSource.$;\r\n        const nameParts = xmlSource.$.name.split(\".\");\r\n        nameParts.pop();\r\n        const fakeNode = new XMLNode(\"\");\r\n        fakeNode.appendAttribute(\"name\", \"$\");\r\n        fakeNode.appendAttribute(\"ref\", nameParts.join(\".\"));\r\n        this.imports = [\r\n            new Import(fakeNode),\r\n            ...this.parseImports(xmlSource.children(\"Import\"))\r\n        ];\r\n    }\r\n\r\n    private parseImports(imports: XMLNode[] = []): Import[] {\r\n        return imports.map(imp => {\r\n            const retVal = new Import(imp);\r\n            inspect(imp, \"import\", retVal);\r\n            return retVal;\r\n        });\r\n    }\r\n\r\n    resolve(qualifiedID: string, charOffset?: number): Definition | undefined {\r\n        let retVal;\r\n\r\n        //  Check Inner Scopes  ---\r\n        if (!retVal && charOffset !== undefined) {\r\n            const scopes = this.scopeStackAt(charOffset);\r\n            scopes.some(scope => {\r\n                retVal = scope.resolve(qualifiedID);\r\n                return !!retVal;\r\n            });\r\n        }\r\n\r\n        //  Check Definitions  ---\r\n        if (!retVal) {\r\n            retVal = super.resolve(qualifiedID);\r\n        }\r\n        return retVal;\r\n    }\r\n}\r\n\r\nconst isHiddenDirectory = source => path.basename(source).indexOf(\".\") === 0;\r\nconst isDirectory = source => fs.lstatSync(source).isDirectory() && !isHiddenDirectory(source);\r\nconst isEcl = source => [\".ecl\", \".ecllib\"].indexOf(path.extname(source).toLowerCase()) >= 0;\r\nconst modAttrs = source => fs.readdirSync(source).map(name => path.join(source, name)).filter(path => isDirectory(path) || isEcl(path));\r\n\r\nexport class File extends ECLScope {\r\n\r\n    constructor(name: string, sourcePath: string) {\r\n        super(name, \"file\", sourcePath, []);\r\n    }\r\n\r\n    suggestions(): ISuggestion[] {\r\n        return [];\r\n    }\r\n}\r\n\r\nexport class Folder extends ECLScope {\r\n\r\n    constructor(name: string, sourcePath: string) {\r\n        super(name, \"folder\", sourcePath, []);\r\n    }\r\n\r\n    suggestions(): ISuggestion[] {\r\n        return modAttrs(this.sourcePath).map(folder => {\r\n            return {\r\n                name: path.basename(folder, \".ecl\"),\r\n                type: \"folder\"\r\n            };\r\n        });\r\n    }\r\n}\r\n\r\nexport class Workspace {\r\n    _workspacePath: string;\r\n    _eclccPath?: string;\r\n    _clientTools: ClientTools;\r\n    _sourceByID: DictionaryNoCase<Source> = new DictionaryNoCase<Source>();\r\n    _sourceByPath: Dictionary<Source> = new Dictionary<Source>();\r\n    private _test: DictionaryNoCase<IFilePath> = new DictionaryNoCase<IFilePath>();\r\n\r\n    constructor(workspacePath: string, eclccPath?: string) {\r\n        this._workspacePath = workspacePath;\r\n        this._eclccPath = eclccPath;\r\n    }\r\n\r\n    refresh() {\r\n        this.primeWorkspace();\r\n        this.primeClientTools();\r\n    }\r\n\r\n    primeClientTools(): Promise<this> {\r\n        return locateClientTools(this._eclccPath, \"\", this._workspacePath).then(clientTools => {\r\n            this._clientTools = clientTools;\r\n            return clientTools.paths();\r\n        }).then(paths => {\r\n            for (const knownFolder of [\"ECLCC_ECLLIBRARY_PATH\", \"ECLCC_PLUGIN_PATH\"]) {\r\n                if (paths[knownFolder] && fs.existsSync(paths[knownFolder])) {\r\n                    this.walkChildFolders(paths[knownFolder], paths[knownFolder]);\r\n                }\r\n            }\r\n            return this;\r\n        });\r\n    }\r\n\r\n    primeWorkspace() {\r\n        if (fs.existsSync(this._workspacePath)) {\r\n            this.visitFolder(this._workspacePath, this._workspacePath);\r\n        }\r\n    }\r\n\r\n    walkChildFolders(folderPath: string, refPath: string, force: boolean = false) {\r\n        for (const child of modAttrs(folderPath)) {\r\n            if (!isDirectory(child)) {\r\n                this.visitFile(child, refPath, force);\r\n            } else {\r\n                this.visitFolder(child, refPath, force);\r\n            }\r\n        }\r\n    }\r\n\r\n    visitFile(filePath: string, refPath: string, force: boolean = false) {\r\n        const filePathInfo = path.parse(filePath);\r\n        const pathNoExt = path.join(filePathInfo.dir, filePathInfo.name);\r\n        const name = path.relative(refPath, pathNoExt).split(path.sep).join(\".\");\r\n        if (force || !this._test.has(name)) {\r\n            this._test.set(name, new File(\"\", filePath));\r\n        }\r\n    }\r\n\r\n    visitFolder(folderPath: string, refPath: string, force: boolean = false) {\r\n        const name = path.relative(refPath, folderPath).split(path.sep).join(\".\");\r\n        if (force || !this._test.has(name)) {\r\n            this._test.set(name, new Folder(name, folderPath));\r\n            this.walkChildFolders(folderPath, refPath, force);\r\n        }\r\n    }\r\n\r\n    buildStack(parentStack: string[], name: string, removeDupID: boolean): { stack: string[], qid: string } {\r\n        const nameStack = name.split(\".\");\r\n        if (removeDupID && parentStack[parentStack.length - 1] === nameStack[0]) {\r\n            nameStack.shift();\r\n        }\r\n        const stack = [...parentStack, ...nameStack];\r\n        const qid: string = stack.join(\".\");\r\n        return {\r\n            stack,\r\n            qid\r\n        };\r\n    }\r\n\r\n    walkECLScope(parentStack: string[], scope: ECLScope) {\r\n        const info = this.buildStack(parentStack, scope.name, true);\r\n        this._test.set(info.qid, scope);\r\n        for (const def of scope.definitions) {\r\n            this.walkDefinition(info.stack, def);\r\n        }\r\n    }\r\n\r\n    walkField(parentStack: string[], field: Field) {\r\n        const info = this.buildStack(parentStack, field.name, false);\r\n        this._test.set(info.qid, field);\r\n    }\r\n\r\n    walkDefinition(parentStack: string[], definition: Definition) {\r\n        const info = this.buildStack(parentStack, definition.name, true);\r\n        this.walkECLScope(parentStack, definition);\r\n        for (const field of definition.fields) {\r\n            this.walkField(info.stack, field);\r\n        }\r\n    }\r\n\r\n    walkSource(source: Source) {\r\n        // const dirName = path.dirname(source.sourcePath);\r\n        // const relName = path.relative(this._workspacePath, dirName).split(path.sep).join(\".\");\r\n        // const folder = new Folder(relName, dirName);\r\n        // this._test.set(folder.name, folder);\r\n        this.walkECLScope([], source);\r\n    }\r\n\r\n    parseSources(sources: XMLNode[] = []): void {\r\n        for (const _source of sources) {\r\n            if (_source.$.name) {   //  Plugins have no name...\r\n                const source = new Source(_source);\r\n                inspect(_source, \"source\", source);\r\n                this._sourceByID.set(source.name, source);\r\n                this._sourceByPath.set(source.sourcePath, source);\r\n\r\n                //  If external source like \"std.system.ThorLib\" then need to backup to \"std\" and add its folder\r\n                if (source.name) {\r\n                    const sourceNameParts = source.name.split(\".\");\r\n                    let depth = sourceNameParts.length;\r\n                    if (depth > 1) {\r\n                        let sourcePath = source.sourcePath;\r\n                        while (depth > 1) {\r\n                            sourcePath = path.dirname(sourcePath);\r\n                            --depth;\r\n                        }\r\n                        this.visitFolder(sourcePath, path.dirname(sourcePath));\r\n                    }\r\n                }\r\n                this.walkSource(source);\r\n            }\r\n        }\r\n    }\r\n\r\n    parseMetaXML(metaXML: string): string[] {\r\n        const metaParser = new MetaParser();\r\n        metaParser.parse(metaXML);\r\n        this.parseSources(metaParser.sources);\r\n        return metaParser.sources.map(source => path.normalize(source.$.sourcePath));\r\n    }\r\n\r\n    resolveQualifiedID(filePath: string, qualifiedID: string, charOffset?: number): ECLScope | undefined {\r\n        let retVal: ECLScope | undefined;\r\n        if (!retVal && this._test.has(qualifiedID)) {\r\n            retVal = this._test.get(qualifiedID).scope;\r\n        }\r\n        if (!retVal && this._sourceByPath.has(filePath)) {\r\n            const eclSource = this._sourceByPath.get(filePath);\r\n\r\n            //  Resolve Imports  ---\r\n            const qualifiedIDParts = qualifiedID.split(\".\");\r\n            for (const imp of eclSource.imports) {\r\n                if (imp.name.toLowerCase() === qualifiedIDParts[0].toLowerCase()) {\r\n                    if (imp.ref) {\r\n                        qualifiedIDParts[0] = imp.ref;\r\n                    } else {\r\n                        qualifiedIDParts.shift();\r\n                    }\r\n                    break;\r\n                }\r\n            }\r\n            let realQID = qualifiedIDParts.join(\".\");\r\n            if (!retVal && this._test.has(realQID)) {\r\n                retVal = this._test.get(realQID).scope;\r\n            }\r\n            if (!retVal) {\r\n                realQID = [...eclSource.name.split(\".\"), ...qualifiedIDParts].join(\".\");\r\n                if (this._test.has(realQID)) {\r\n                    retVal = this._test.get(realQID).scope;\r\n                }\r\n            }\r\n        }\r\n        return retVal;\r\n    }\r\n\r\n    resolvePartialID(filePath: string, partialID: string, charOffset: number): ECLScope | undefined {\r\n        partialID = partialID.toLowerCase();\r\n        const partialIDParts = partialID.split(\".\");\r\n        partialIDParts.pop();\r\n        const partialIDQualifier = partialIDParts.length === 1 ? partialIDParts[0] : partialIDParts.join(\".\");\r\n        return this.resolveQualifiedID(filePath, partialIDQualifier, charOffset);\r\n    }\r\n}\r\n\r\nconst workspaceCache = new Dictionary<Workspace>();\r\nexport function attachWorkspace(_workspacePath: string, eclccPath?: string): Workspace {\r\n    const workspacePath = path.normalize(_workspacePath);\r\n    if (!workspaceCache.has(workspacePath)) {\r\n        const workspace = new Workspace(workspacePath, eclccPath);\r\n        workspaceCache.set(workspacePath, workspace);\r\n        workspace.refresh();\r\n    }\r\n    return workspaceCache.get(workspacePath);\r\n}\r\n\r\nfunction isQualifiedIDChar(lineText: string, charPos: number, reverse: boolean) {\r\n    if (charPos < 0) return false;\r\n    const testChar = lineText.charAt(charPos);\r\n    return (reverse ? /[a-zA-Z\\d_\\.$]/ : /[a-zA-Z\\d_]/).test(testChar);\r\n}\r\n\r\nexport function qualifiedIDBoundary(lineText: string, charPos: number, reverse: boolean) {\r\n    while (isQualifiedIDChar(lineText, charPos, reverse)) {\r\n        charPos += reverse ? -1 : 1;\r\n    }\r\n    return charPos + (reverse ? 1 : -1);\r\n}\r\n\r\nclass MetaParser extends SAXStackParser {\r\n    sources: XMLNode[] = [];\r\n\r\n    endXMLNode(e: XMLNode) {\r\n        switch (e.name) {\r\n            case \"Source\":\r\n                this.sources.push(e);\r\n                break;\r\n            default:\r\n                break;\r\n        }\r\n        super.endXMLNode(e);\r\n    }\r\n}\r\n"],
  "mappings": "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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
  "names": ["require_d3_array", "__commonJSMin", "exports", "module", "global", "factory", "ascending", "a", "b", "bisector", "compare", "ascendingComparator", "x", "lo", "hi", "mid", "f", "d", "ascendingBisect", "bisectRight", "bisectLeft", "pairs", "array", "pair", "i", "n", "p", "cross", "values0", "values1", "reduce", "n0", "n1", "values", "i0", "i1", "value0", "descending", "number", "variance", "valueof", "m", "mean", "value", "delta", "sum", "deviation", "v", "extent", "min", "max", "slice", "map", "constant", "identity", "range", "start", "stop", "step", "e10", "e5", "e2", "ticks", "count", "reverse", "tickIncrement", "power", "error", "tickStep", "step0", "step1", "sturges", "histogram", "domain", "threshold", "data", "xz", "x0", "x1", "tz", "bins", "bin", "_", "quantile", "value1", "freedmanDiaconis", "scott", "median", "numbers", "merge", "arrays", "j", "merged", "permute", "indexes", "permutes", "scan", "xi", "xj", "shuffle", "t", "transpose", "matrix", "length", "row", "zip", "require_d3_time", "__commonJSMin", "exports", "module", "global", "factory", "t0", "t1", "newInterval", "floori", "offseti", "count", "field", "interval", "date", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "d", "millisecond", "k", "milliseconds", "durationSecond", "durationMinute", "durationHour", "durationDay", "durationWeek", "second", "seconds", "minute", "minutes", "hour", "hours", "day", "days", "weekday", "i", "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sundays", "mondays", "tuesdays", "wednesdays", "thursdays", "fridays", "saturdays", "month", "months", "year", "years", "utcMinute", "utcMinutes", "utcHour", "utcHours", "utcDay", "utcDays", "utcWeekday", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "utcMonth", "utcMonths", "utcYear", "utcYears", "require_d3_time_format", "__commonJSMin", "exports", "module", "global", "factory", "d3Time", "localDate", "d", "date", "utcDate", "newDate", "y", "formatLocale", "locale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatYear", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "newFormat", "specifier", "string", "i", "j", "n", "c", "pad", "format", "pads", "newParse", "Z", "parseSpecifier", "week", "day", "m", "parse", "f", "p", "numberRe", "percentRe", "requoteRe", "value", "fill", "width", "sign", "length", "requote", "s", "names", "map", "dISO", "z", "dow", "UTCdISO", "defaultLocale", "definition", "isoSpecifier", "formatIsoNative", "formatIso", "parseIsoNative", "parseIso", "require_d3_format", "__commonJSMin", "exports", "module", "global", "factory", "formatDecimal", "x", "formatDecimalParts", "p", "i", "coefficient", "exponent", "formatGroup", "grouping", "thousands", "value", "width", "t", "j", "g", "length", "formatNumerals", "numerals", "re", "formatSpecifier", "specifier", "match", "FormatSpecifier", "formatTrim", "s", "out", "n", "i0", "i1", "prefixExponent", "formatPrefixAuto", "d", "formatRounded", "formatTypes", "identity", "map", "prefixes", "formatLocale", "locale", "group", "currencyPrefix", "currencySuffix", "decimal", "percent", "minus", "nan", "newFormat", "fill", "align", "sign", "symbol", "zero", "comma", "precision", "trim", "type", "prefix", "suffix", "formatType", "maybeSuffix", "format", "valuePrefix", "valueSuffix", "c", "valueNegative", "padding", "formatPrefix", "f", "e", "k", "defaultLocale", "definition", "precisionFixed", "step", "precisionPrefix", "precisionRound", "max", "index_node_exports", "__export", "AccessService", "AccountService", "Activity", "Attr", "Attribute", "BUILD_VERSION", "BaseScope", "ClientTools", "CloudService", "CodesignService", "Connection", "DFUArrayActions", "DFUChangeProtection", "DFUChangeRestriction", "DFUDefFileFormat", "DFUService", "DFUWUTypes", "DFUWorkunit", "DFUWorkunitCache", "DFUXRefService", "DaliService", "Definition", "ECLGraph", "ECLScope", "ESPConnection", "ESPExceptions", "EclService", "EclccErrors", "ElkService", "EnvchkErrors", "Errors", "Field", "File", "FileSpray", "FileSprayService", "FileSprayStates", "Folder", "GlobalResultCache", "GraphCache", "Import", "LocalWorkunit", "LogType", "LogaccessService", "LogicalFile", "LogicalFileCache", "Machine", "MachineCache", "MachineService", "PKG_NAME", "PKG_VERSION", "PackageProcessService", "PropertyType", "Query", "QueryGraph", "RelatedProperty", "Resource", "ResourcesService", "Result", "ResultCache", "SMCService", "SashaService", "Scope", "ScopeEdge", "ScopeGraph", "ScopeSubgraph", "ScopeVertex", "Service", "Source", "SourceFile", "Store", "StoreCache", "StoreService", "TargetAudience", "TargetCluster", "TargetClusterCache", "Timer", "Topology", "TopologyCache", "TopologyService", "ValueChangedMessage", "Version", "WUStateID", "WUUpdate", "Workspace", "Workunit", "WorkunitCache", "WorkunitsService", "WorkunitsServiceEx", "WsAccess", "WsCodesign", "WsDfu", "WsLogaccess", "WsSMC", "WsSasha", "WsTopology", "WsWorkunits", "XGMMLEdge", "XGMMLGraph", "XGMMLSubgraph", "XGMMLVertex", "XSDNode", "XSDSchema", "XSDSimpleType", "XSDXMLNode", "attachWorkspace", "clearAllClientToolsCache", "createConnection", "createGraph", "createXGMMLGraph", "defaultTargetCluster", "deserializeResponse", "get", "hookSend", "instanceOfIConnection", "instanceOfIOptions", "isArray", "isECLResult", "isExceptions", "isWUInfoWorkunit", "isWUQueryECLWorkunit", "jsonp", "locateAllClientTools", "locateClientTools", "parseXSD", "parseXSD2", "post", "qualifiedIDBoundary", "send", "serializeRequest", "setTransportFactory", "splitMetric", "targetClusters", "walkXmlJson", "__toCommonJS", "import_util", "import_xmldom", "https", "import_node_buffer", "import_undici", "trustwave", "PKG_NAME", "PKG_VERSION", "BUILD_VERSION", "import_util", "import_util", "logger", "instanceOfIOptions", "object", "DefaultOptions", "instanceOfIConnection", "encode", "uriComponent", "encodeRequest", "serializeRequest", "obj", "prefix", "str", "key", "includeItemCount", "row", "i", "deserializeResponse", "body", "jsonp", "opts", "action", "request", "responseType", "header", "resolve", "reject", "respondedTimeout", "respondedTick", "callbackName", "response", "doCallback", "script", "url", "progress", "authHeader", "_omitMap", "doFetch", "requestInit", "headersInit", "handleResponse", "fetchOverride", "e", "responseBody", "post", "abortSignal", "get", "send", "retVal", "hookedSend", "hookSend", "newSend", "Connection", "_Connection", "_", "createConnection", "setTransportFactory", "newFunc", "isArray", "arg", "ESPExceptions", "action", "request", "exceptions", "isExceptions", "err", "isConnection", "optsConnection", "ESPConnection", "_ESPConnection", "service", "version", "createConnection", "_", "target", "arrayName", "i", "_request", "espResponseType", "largeUpload", "abortSignal", "espResponseField", "serviceAction", "responseType", "response", "retVal", "Service", "FileSpray", "DFUWUActions", "FileSprayServiceBase", "Service", "optsConnection", "request", "FileSprayStates", "DFUWUTypes", "FileSprayService", "FileSprayServiceBase", "request", "WsAccess", "ViewMemberType", "UserSortBy", "GroupSortBy", "AccountTypeReq", "ResourcePermissionSortBy", "ResourceSortBy", "AccessServiceBase", "Service", "optsConnection", "request", "AccessService", "AccessServiceBase", "AccountServiceBase", "Service", "optsConnection", "request", "AccountService", "AccountServiceBase", "request", "e", "exception", "import_util", "CloudServiceBase", "Service", "optsConnection", "request", "logger", "isGetPODsResponse_v1_02", "response", "mapPorts", "pod", "prev", "curr", "p", "mapPods", "pods", "labels", "started", "CloudService", "CloudServiceBase", "obj", "error", "logger", "WsCodesign", "SigningMethodType", "CodesignServiceBase", "Service", "optsConnection", "request", "CodesignService", "CodesignServiceBase", "request", "response", "e", "WsCodesign", "DaliServiceBase", "Service", "optsConnection", "request", "DaliService", "DaliServiceBase", "WsDfu", "DFUArrayActions", "DFUChangeProtection", "DFUChangeRestriction", "DFUDefFileFormat", "FileAccessRole", "SecAccessType", "DFUFileType", "DfuServiceBase", "Service", "optsConnection", "request", "DFUArrayActions", "WsDfu", "DFUDefFileFormat", "DFUChangeProtection", "DFUChangeRestriction", "DFUService", "DfuServiceBase", "request", "superFiles", "childSuperFiles", "logicalFiles", "superFile", "response", "child", "DFUXRefServiceBase", "Service", "optsConnection", "request", "DFUXRefService", "DFUXRefServiceBase", "request", "jsonToIField", "id", "item", "type", "jsonToIFieldArr", "fieldType", "jsonToIFieldObj", "json", "retVal", "key", "fields", "EclService", "Service", "optsConnection", "querySet", "queryId", "response", "requestSchema", "responseSchema", "resultsJson", "request", "action", "ESPExceptions", "ElkServiceBase", "Service", "optsConnection", "request", "ElkService", "ElkServiceBase", "import_util", "WsLogaccess", "LogColumnType", "LogColumnValueType", "LogAccessType", "LogAccessStatusCode", "LogAccessFilterOperator", "LogSelectColumnMode", "SortColumType", "SortDirection", "LogaccessServiceBase", "Service", "optsConnection", "request", "logger", "LogType", "TargetAudience", "knownLogManagerTypes", "logColumnTypeValues", "WsLogaccess", "getLogCategory", "searchField", "FILTER_KEYS", "buildFilters", "request", "columnMap", "filters", "key", "value", "logCategory", "appendWildcard", "rawValues", "raw", "buildOrGroup", "group", "root", "node", "i", "buildAndChain", "groups", "firstGroup", "remainingGroups", "secondGroup", "buildFilterTree", "groupMap", "f", "existing", "filter", "LogaccessService", "LogaccessServiceBase", "line", "retVal", "fields", "logInfo", "column", "range", "getLogsRequest", "response", "logLines", "logger", "e", "import_util", "import_d3_array", "WsMachine", "ThresholdType", "TpMachineType", "MachineServiceBase", "Service", "optsConnection", "request", "MachineService", "MachineServiceBase", "targetClusters", "bypassCachedResult", "response", "tcu", "ComponentUsages", "cu", "MachineUsages", "mu", "DiskUsages", "du", "d3Mean", "d3Max", "prev", "PackageProcessServiceBase", "Service", "optsConnection", "request", "PackageProcessService", "PackageProcessServiceBase", "ResourcesServiceBase", "Service", "optsConnection", "request", "ResourcesService", "ResourcesServiceBase", "WsSasha", "WUTypes", "SashaServiceBase", "Service", "optsConnection", "request", "SashaService", "SashaServiceBase", "import_d3_time_format", "WsSMC", "LockModes", "RoxieControlCmdType", "SMCServiceBase", "Service", "optsConnection", "request", "dateParser", "isNumeric", "value", "SMCService", "SMCServiceBase", "request", "response", "name", "retVal", "metric", "row", "dimension", "stat", "storeServiceBase", "Service", "optsConnection", "request", "StoreService", "storeServiceBase", "request", "e", "WsTopology", "TpConfigResponseFormat", "RoxieQueueFilter", "TpMachineType", "TopologyServiceBase", "Service", "optsConnection", "request", "TopologyService", "TopologyServiceBase", "request", "response", "firstHThor", "first", "item", "idx", "import_util", "WsWorkunits", "ECLWUActions", "LogSelectColumnMode", "SortDirection", "LogEventClass", "WUDetailsAttrValueType", "EclDefinitionActions", "ErrorMessageFormat", "LogAccessLogFormat", "WUExceptionSeverity", "WUQueryFilterSuspendedType", "WUQuerySetFilterType", "WUProtectFilter", "QuerySetAliasActionTypes", "QuerysetImportActivation", "QuerySetQueryActionTypes", "WUQueryActivationMode", "WorkunitsServiceBase", "Service", "optsConnection", "request", "WUStateID", "WUUpdate", "Action", "isECLResult", "_", "isWUQueryECLWorkunit", "isWUInfoWorkunit", "WorkunitsService", "WorkunitsServiceBase", "optsConnection", "request", "abortSignal", "response", "_request", "children", "WorkunitsServiceEx", "import_util", "import_util", "import_d3_format", "import_d3_time_format", "import_util", "ECLGraph", "wu", "eclGraph", "eclTimers", "duration", "eclTimer", "subgraphID", "scopes", "createGraph", "GraphCache", "obj", "walkXmlJson", "node", "callback", "stack", "childNode", "flattenAtt", "nodes", "retVal", "XGMMLGraph", "XGMMLSubgraph", "XGMMLVertex", "XGMMLEdge", "createXGMMLGraph", "id", "graphs", "subgraphs", "vertices", "edges", "graph", "item", "tag", "attributes", "childNodes", "_stack", "top", "subgraph", "vertex", "edge", "ScopeGraph", "ScopeSubgraph", "ScopeVertex", "ScopeEdge", "scope", "scopeStack", "scopeParent1", "parent1", "scopeParent2", "scopeParent3", "parent3", "source", "target", "import_util", "Resource", "wu", "url", "cleanedURL", "urlParts", "matchStr", "displayPath", "displayName", "import_util", "import_util", "XSDNode", "XSDXMLNode", "child", "i", "row", "setOfType", "node", "children", "retVal", "numStr", "underbarPos", "length", "XSDSimpleType", "XSDSchema", "XSDParser", "xsdXMLNode", "xsdXMLNode2", "key", "parseXSD", "xml", "saxParser", "XSDParser2", "rootName", "parseXSD2", "GlobalResultCache", "obj", "_results", "Result", "_Result", "optsConnection", "wuid", "name_sequence_eclResult", "resultViews", "retVal", "nodeGroup", "logicalFile", "wuid_NodeGroup", "name_sequence_eclResult_logicalFile", "resultViews_isLogicalFile", "WorkunitsService", "isECLResult", "bypass", "refresh", "response", "parseXSD", "from", "count", "includeSchema", "filter", "abortSignal", "bypassCache", "shouldBypassCache", "result", "start", "suppressXmlSchema", "FilterBy", "key", "request", "ResultCache", "import_util", "Attribute", "scope", "attribute", "BaseScope", "retVal", "timeElapsed", "scopeAttr", "attr", "key", "scopeParts", "_", "visitor", "name", "parentScope", "label", "rows", "attrs", "Scope", "wu", "import_util", "SourceFile", "optsConnection", "wuid", "eclSourceFile", "WorkunitsService", "import_util", "Timer", "optsConnection", "wuid", "eclTimer", "WorkunitsService", "secs", "formatter", "parser", "d3FormatNum", "d3Format", "formatNum", "num", "DEFINITION_LIST", "definitionRegex", "PropertyType", "RelatedProperty", "metricKeyRegex", "_splitMetric", "fullLabel", "relProp", "index", "label", "labelParts", "measure", "ext", "splitLabelCache", "splitMetric", "key", "retVal", "formatValue", "item", "safeParseFloat", "val", "formatValues", "dedup", "keyParts", "avg", "min", "max", "stdDev", "StdDevs", "logger", "WorkunitCache", "obj", "_workunits", "Workunit", "_Workunit", "WUStateID", "ResultCache", "eclResult", "Result", "result", "eclTimer", "Timer", "GraphCache", "eclGraph", "ECLGraph", "url", "Resource", "eclSourceFile", "SourceFile", "optsConnection", "response", "wuid", "state", "baseUrl", "server", "target", "ecl", "compileOnly", "wu", "WUUpdate", "opts", "WorkunitsService", "TopologyService", "request", "_cluster", "action", "resultLimit", "clusterPromise", "cluster", "WsWorkunits", "full", "meta", "scopes", "columns", "activityMap", "activity", "data", "i", "scope", "props", "formattedProps", "scopeProperty", "name", "rawValue", "rawValueInt", "formatNum", "normalizedScope", "definitionList", "parsedList", "processedDefinitions", "k", "matches", "maxStdDevs", "maxStdDevsSource", "row", "promises", "rawScope", "Scope", "scopeMap", "parentScopeID", "graphIDs", "rootTypes", "createGraph", "scopeInfo", "attr", "endTime", "parser", "formatter", "l", "r", "eventID", "propIDorCallback", "callback", "changeInfo", "resolve", "_", "watchHandle", "changes", "_request", "e", "exception", "includeResults", "actionType", "service", "WorkunitsServiceEx", "publishRequest", "command", "optsStr", "debugState", "mode", "rootNode", "childNode", "id", "createXGMMLGraph", "path", "graph", "breakpointLocations", "edgeID", "startRow", "numRows", "rowNode", "cellNode", "ATTR_DEFINITION", "hasECLDefinition", "vertex", "getECLDefinition", "match", "_file", "_row", "_col", "definition", "_activity", "Activity", "_Activity", "optsConnection", "state", "SMCService", "clusterName", "awu", "Workunit", "request", "response", "import_util", "logger", "LogicalFileCache", "obj", "_store", "LogicalFile", "_LogicalFile", "optsConnection", "Cluster", "Name", "state", "retVal", "DFUService", "poc", "part", "row", "request", "response", "exception", "format", "import_util", "MachineCache", "obj", "_machines", "Machine", "_Machine", "optsConnection", "address", "state", "retVal", "MachineService", "import_util", "import_d3_format", "import_util", "import_util", "TargetClusterCache", "obj", "_targetCluster", "TargetCluster", "_TargetCluster", "machineInfoEx", "Machine", "optsConnection", "name", "state", "retVal", "TopologyService", "MachineService", "request", "response", "machineInfo", "maxDisk", "totalFree", "total", "machine", "storageInfo", "usage", "targetClusters", "connection", "item", "_defaultTargetCluster", "defaultTargetCluster", "firstItem", "defaultItem", "hthorItem", "defItem", "TopologyCache", "obj", "_topology", "Topology", "_Topology", "tc", "TargetCluster", "optsConnection", "state", "retVal", "TopologyService", "type", "response", "rootProtocol", "ip", "port", "item", "binding", "request", "force", "eventID", "propIDorCallback", "callback", "safeAssign", "obj", "key", "value", "xmlEncode", "str", "espTime2Seconds", "duration", "match", "days", "hours", "mins", "secs", "ms", "us", "ns", "unitTest", "size", "unit", "nsIndex", "espSize2Bytes", "retVal", "espSkew2Number", "skew", "LocalisedXGMMLWriter", "graph", "items", "localisationDepth", "localisationDistance", "noSpills", "item", "vertex", "edge", "subgraph", "idx", "dedupEdges", "isPoint", "attrStr", "propsStr", "props", "key", "xmlEncode", "v", "ancestors", "parent", "v1", "v2", "v1_ancestors", "v2_ancestors", "finger1", "finger2", "retVal", "source", "inEdges", "target", "outEdges", "root", "xgmmlLen", "GraphItem", "id", "Subgraph", "subgraph2", "vertex2", "edge2", "visitor", "Vertex", "inVertices", "Edge", "QueryGraph", "_QueryGraph", "xgmml", "dom", "docNode", "attr", "safeAssign", "tagName", "childNode", "isSubgraph", "attNode", "graphNode", "name", "uname", "value", "espTime2Seconds", "espSize2Bytes", "espSkew2Number", "xgmmlWriter", "logger", "siFormatter", "d3Format", "isNumber", "QueryCache", "obj", "_queries", "Query", "_Query", "optsConnection", "querySet", "queryID", "queryDetails", "WorkunitsService", "Topology", "queryId", "state", "retVal", "services", "espServer", "binding", "baseUrl", "EclService", "wsEclService", "e", "GraphName", "SubGraphId", "response", "graph", "QueryGraph", "first", "graphItem", "request", "wu", "Workunit", "promises", "meta", "data", "metric", "firstChar", "item", "existingProperties", "prop", "newProperties", "key", "firstCharOfKey", "value", "valueType", "rawValue", "formatted", "results", "resultName", "import_util", "StoreCache", "obj", "_store", "ValueChangedMessage", "key", "value", "oldValue", "other", "Store", "_Store", "optsConnection", "Name", "Namespace", "UserSpecific", "StoreService", "broadcast", "response", "e", "retVal", "deletedValues", "pair", "callback", "import_util", "logger", "DFUWorkunitCache", "obj", "_workunits", "DFUWorkunit", "_DFUWorkunit", "optsConnection", "dfuServerQueue", "retVal", "response", "wuid", "state", "server", "request", "service", "FileSprayService", "FileSpray", "full", "callback", "_request", "e", "actionType", "eventID", "propIDorCallback", "changeInfo", "resolve", "_", "watchHandle", "changes", "TopologyService", "exception", "logger", "cp", "crypto", "fs", "os", "path", "import_util", "fs", "path", "import_util", "logger", "_inspect", "inspect", "obj", "_id", "known", "key", "id", "Attr", "xmlAttr", "Field", "definition", "xmlField", "ECLScope", "name", "type", "sourcePath", "xmlDefinitions", "line", "start", "body", "end", "definitions", "retVal", "Definition", "charOffset", "def", "defs", "qualifiedID", "qualifiedIDParts", "base", "xmlDefinition", "attrs", "attr", "fields", "field", "Import", "xmlImport", "Source", "xmlSource", "nameParts", "fakeNode", "imports", "imp", "scope", "isHiddenDirectory", "source", "isDirectory", "isEcl", "modAttrs", "path", "File", "Folder", "folder", "Workspace", "workspacePath", "eclccPath", "locateClientTools", "clientTools", "paths", "knownFolder", "folderPath", "refPath", "force", "child", "filePath", "filePathInfo", "pathNoExt", "parentStack", "removeDupID", "nameStack", "stack", "qid", "info", "sources", "_source", "depth", "metaXML", "metaParser", "MetaParser", "eclSource", "realQID", "partialID", "partialIDParts", "partialIDQualifier", "workspaceCache", "attachWorkspace", "_workspacePath", "workspace", "isQualifiedIDChar", "lineText", "charPos", "reverse", "testChar", "qualifiedIDBoundary", "logger", "exeExt", "tidyCRLF", "inStr", "Version", "build", "parts", "match", "other", "ERROR", "WARN", "Errors", "checked", "EclccErrors", "stdErr", "errLine", "filePath", "row", "_col", "severity", "code", "_msg", "line", "col", "msg", "EnvchkErrors", "content", "_path", "_attr", "path", "pathParts", "lineIdx", "testStr", "walkXmlJson", "node", "callback", "stack", "key", "childNode", "child", "LocalWorkunit", "jsonWU", "retVal", "id", "item", "_stack", "file", "ClientTools", "_ClientTools", "eclccPath", "cwd", "includeFolders", "legacyMode", "args", "version", "additionalItems", "includePath", "response", "paths", "removeOnRead", "resolve", "_reject", "fileData", "err", "filename", "tmpName", "_response", "xmlPath", "attachWorkspace", "metaWorkspace", "execFileResponse", "e", "bundlesRegEx", "readme", "m", "installedText", "installedItems", "allProps", "ii", "infoText", "info", "props", "bundles", "installed", "b", "bundleUrl", "name", "cmd", "_toolName", "_notFoundError", "stdOut", "data", "_code", "_signal", "locateClientToolsInFolder", "rootFolder", "clientTools", "hpccSystemsFolder", "versionFolder", "allClientToolsCache", "clearAllClientToolsCache", "locateAllClientTools", "rootFolder86", "ct", "l", "r", "eclccPathMsg", "logEclccPath", "locateClientTools", "overridePath", "allClientToolsCache2", "buildVersion", "latest", "bestMajor", "ctVersion", "best", "globalCA", "row", "trustwave"]
}
