@datagrok/helm 2.1.5 → 2.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.js CHANGED
@@ -1299,17 +1299,16 @@ class NotationConverter extends _units_handler__WEBPACK_IMPORTED_MODULE_1__.Unit
1299
1299
  return newColumn;
1300
1300
  }
1301
1301
  /**
1302
- * Convert HELM column to FASTA/SEPARATOR
1302
+ * Convert HELM string to FASTA/SEPARATOR
1303
1303
  *
1304
+ * @param {string} helmPolymer A string to be converted
1304
1305
  * @param {string} tgtNotation Target notation: FASTA or SEPARATOR
1305
1306
  * @param {string} tgtSeparator Optional target separator (for HELM ->
1306
1307
  * @param {string | null} tgtGapSymbol Optional target gap symbol
1307
1308
  * SEPARATOR)
1308
- * @return {DG.Column} Converted column
1309
+ * @return {string} Converted string
1309
1310
  */
1310
- convertHelm(tgtNotation, tgtSeparator, tgtGapSymbol) {
1311
- // This function must not contain calls of isDna() and isRna(), for
1312
- // source helm columns may contain RNA, DNA and PT across different rows
1311
+ convertHelmToFastaSeparator(helmPolymer, tgtNotation, tgtSeparator, tgtGapSymbol) {
1313
1312
  if (!tgtGapSymbol) {
1314
1313
  tgtGapSymbol = (this.toFasta(tgtNotation)) ?
1315
1314
  _units_handler__WEBPACK_IMPORTED_MODULE_1__.UnitsHandler._defaultGapSymbolsDict.FASTA :
@@ -1319,34 +1318,48 @@ class NotationConverter extends _units_handler__WEBPACK_IMPORTED_MODULE_1__.Unit
1319
1318
  tgtSeparator = (this.toFasta(tgtNotation)) ? '' : this.separator;
1320
1319
  }
1321
1320
  const helmWrappersRe = /(R\(|D\(|\)|P)/g;
1321
+ const isNucleotide = helmPolymer.startsWith('DNA') || helmPolymer.startsWith('RNA');
1322
+ // items can be monomers or helms
1323
+ const helmItemsArray = this.splitter(helmPolymer);
1324
+ const tgtMonomersArray = [];
1325
+ for (let i = 0; i < helmItemsArray.length; i++) {
1326
+ let item = helmItemsArray[i];
1327
+ if (isNucleotide)
1328
+ item = item.replace(helmWrappersRe, '');
1329
+ if (item === _units_handler__WEBPACK_IMPORTED_MODULE_1__.UnitsHandler._defaultGapSymbolsDict.HELM) {
1330
+ tgtMonomersArray.push(tgtGapSymbol);
1331
+ }
1332
+ else if (this.toFasta(tgtNotation) && item.length > 1) {
1333
+ // the case of a multi-character monomer converted to FASTA
1334
+ const monomer = '[' + item + ']';
1335
+ tgtMonomersArray.push(monomer);
1336
+ }
1337
+ else {
1338
+ tgtMonomersArray.push(item);
1339
+ }
1340
+ }
1341
+ return tgtMonomersArray.join(tgtSeparator);
1342
+ }
1343
+ /**
1344
+ * Convert HELM column to FASTA/SEPARATOR
1345
+ *
1346
+ * @param {string} tgtNotation Target notation: FASTA or SEPARATOR
1347
+ * @param {string} tgtSeparator Optional target separator (for HELM ->
1348
+ * @param {string | null} tgtGapSymbol Optional target gap symbol
1349
+ * SEPARATOR)
1350
+ * @return {DG.Column} Converted column
1351
+ */
1352
+ convertHelm(tgtNotation, tgtSeparator, tgtGapSymbol) {
1353
+ // This function must not contain calls of isDna() and isRna(), for
1354
+ // source helm columns may contain RNA, DNA and PT across different rows
1322
1355
  const newColumn = this.getNewColumn(tgtNotation);
1323
1356
  // assign the values to the empty column
1324
1357
  newColumn.init((idx) => {
1325
1358
  const helmPolymer = this.column.get(idx);
1359
+ return this.convertHelmToFastaSeparator(helmPolymer, tgtNotation, tgtSeparator, tgtGapSymbol);
1326
1360
  // we cannot use isDna() or isRna() because source helm columns can
1327
1361
  // contain DNA, RNA and PT in different cells, so the corresponding
1328
1362
  // tags cannot be set for the whole column
1329
- const isNucleotide = helmPolymer.startsWith('DNA') || helmPolymer.startsWith('RNA');
1330
- // items can be monomers or helms
1331
- const helmItemsArray = this.splitter(helmPolymer);
1332
- const tgtMonomersArray = [];
1333
- for (let i = 0; i < helmItemsArray.length; i++) {
1334
- let item = helmItemsArray[i];
1335
- if (isNucleotide)
1336
- item = item.replace(helmWrappersRe, '');
1337
- if (item === _units_handler__WEBPACK_IMPORTED_MODULE_1__.UnitsHandler._defaultGapSymbolsDict.HELM) {
1338
- tgtMonomersArray.push(tgtGapSymbol);
1339
- }
1340
- else if (this.toFasta(tgtNotation) && item.length > 1) {
1341
- // the case of a multi-character monomer converted to FASTA
1342
- const monomer = '[' + item + ']';
1343
- tgtMonomersArray.push(monomer);
1344
- }
1345
- else {
1346
- tgtMonomersArray.push(item);
1347
- }
1348
- }
1349
- return tgtMonomersArray.join(tgtSeparator);
1350
1363
  });
1351
1364
  // TAGS.aligned is mandatory for columns of NOTATION.FASTA and NOTATION.SEPARATOR
1352
1365
  const splitter = (0,_macromolecule__WEBPACK_IMPORTED_MODULE_2__.getSplitterForColumn)(newColumn);
@@ -1390,7 +1403,7 @@ class NotationConverter extends _units_handler__WEBPACK_IMPORTED_MODULE_1__.Unit
1390
1403
  this._splitter = null;
1391
1404
  }
1392
1405
  }
1393
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90YXRpb24tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm90YXRpb24tY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQTRDLE1BQU0saUJBQWlCLENBQUM7QUFFMUcsaUZBQWlGO0FBQ2pGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBR2pELElBQWMsUUFBUTtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxjQUF3QixJQUFhLE9BQU8sY0FBYyxpQ0FBbUIsQ0FBQyxDQUFDLENBQUM7SUFFeEYsV0FBVyxDQUFDLGNBQXdCLElBQWEsT0FBTyxjQUFjLHlDQUF1QixDQUFDLENBQUMsQ0FBQztJQUVoRyxNQUFNLENBQUMsY0FBd0IsSUFBYSxPQUFPLGNBQWMsK0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRTdGOzs7Ozs7T0FNRztJQUNLLHVCQUF1QixDQUFDLFNBQWlCLEVBQUUsaUJBQWdDLElBQUk7UUFDckYsSUFBSSxjQUFjLEtBQUssSUFBSTtZQUN6QixjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRXpDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLHNDQUFvQixDQUFDO1FBQ3hELHNEQUFzRDtRQUN0RCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FB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TUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkI7Z0JBQ3pDLHlCQUF5QixJQUFJLENBQUMsUUFBUSx5QkFBeUIsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsWUFBbUIsR0FBYztRQUMvQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUE3UEwsY0FBUyxHQUF3QixJQUFJLENBQUM7SUE4UDlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIERvIG5vdCBjaGFuZ2UgdGhlc2UgaW1wb3J0IGxpbmVzIHRvIG1hdGNoIGV4dGVybmFsIG1vZHVsZXMgaW4gd2VicGFjayBjb25maWd1cmF0aW9uICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi91bml0cy1oYW5kbGVyJztcbmltcG9ydCB7Z2V0U3BsaXR0ZXJGb3JDb2x1bW4sIGdldFN0YXRzLCBOT1RBVElPTiwgU2VxQ29sU3RhdHMsIFNwbGl0dGVyRnVuYywgVEFHU30gZnJvbSAnLi9tYWNyb21vbGVjdWxlJztcblxuLyoqIENsYXNzIGZvciBoYW5kbGluZyBjb252ZXJzaW9uIG9mIG5vdGF0aW9uIHN5c3RlbXMgaW4gTWFjcm9tb2xlY3VsZSBjb2x1bW5zICovXG5leHBvcnQgY2xhc3MgTm90YXRpb25Db252ZXJ0ZXIgZXh0ZW5kcyBVbml0c0hhbmRsZXIge1xuICBwcml2YXRlIF9zcGxpdHRlcjogU3BsaXR0ZXJGdW5jIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGdldCBzcGxpdHRlcigpOiBTcGxpdHRlckZ1bmMge1xuICAgIGlmICh0aGlzLl9zcGxpdHRlciA9PT0gbnVsbClcbiAgICAgIHRoaXMuX3NwbGl0dGVyID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIHJldHVybiB0aGlzLl9zcGxpdHRlcjtcbiAgfVxuXG4gIHB1YmxpYyB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uOiBOT1RBVElPTik6IGJvb2xlYW4geyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IE5PVEFUSU9OLkZBU1RBOyB9XG5cbiAgcHVibGljIHRvU2VwYXJhdG9yKHRhcmdldE5vdGF0aW9uOiBOT1RBVElPTik6IGJvb2xlYW4geyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IE5PVEFUSU9OLlNFUEFSQVRPUjsgfVxuXG4gIHB1YmxpYyB0b0hlbG0odGFyZ2V0Tm90YXRpb246IE5PVEFUSU9OKTogYm9vbGVhbiB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gTk9UQVRJT04uSEVMTTsgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgTWFjcm9tb2xlY3VsZSBjb2x1bW4gZnJvbSBGQVNUQSB0byBTRVBBUkFUT1Igbm90YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvciAgQSBzcGVjaWZpYyBzZXBhcmF0b3IgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFzdGFHYXBTeW1ib2wgIEdhcCBzeW1ib2wgaW4gRkFTVEEsICctJyBieSBkZWZhdWx0XG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgIEEgbmV3IGNvbHVtbiBpbiBTRVBBUkFUT1Igbm90YXRpb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydEZhc3RhVG9TZXBhcmF0b3Ioc2VwYXJhdG9yOiBzdHJpbmcsIGZhc3RhR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgaWYgKGZhc3RhR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgZmFzdGFHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG5cbiAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihOT1RBVElPTi5TRVBBUkFUT1IpO1xuICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgZmFzdGFQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXkgPSB0aGlzLnNwbGl0dGVyKGZhc3RhUG9seW1lcik7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZhc3RhTW9ub21lcnNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZmFzdGFNb25vbWVyc0FycmF5W2ldID09PSBmYXN0YUdhcFN5bWJvbClcbiAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oc2VwYXJhdG9yKTtcbiAgICB9KTtcbiAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuVU5JVFMsIE5PVEFUSU9OLlNFUEFSQVRPUik7XG4gICAgbmV3Q29sdW1uLnNldFRhZyhUQUdTLnNlcGFyYXRvciwgc2VwYXJhdG9yKTtcbiAgICByZXR1cm4gbmV3Q29sdW1uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd3JhcHBlciBzdHJpbmdzIGZvciBIRUxNLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlXG4gICAqIG1hY3JvbW9sZWN1bGUgKHBlcHRpZGUsIEROQSwgUk5BKVxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQXJyYXkgb2Ygd3JhcHBlcnNcbiAgICovXG4gIHByaXZhdGUgZ2V0SGVsbVdyYXBwZXJzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwcmVmaXggPSAodGhpcy5pc0RuYSgpKSA/ICdETkExeycgOlxuICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUk5BMXsnIDpcbiAgICAgICAgKHRoaXMuaXNQZXB0aWRlKCkpID8gJ1BFUFRJREUxeycgOlxuICAgICAgICAgICdVbmtub3duJzsgLy8gdGhpcyBjYXNlIHNob3VsZCBiZSBoYW5kbGVkIGFzIGV4Y2VwdGlvbmFsXG5cbiAgICBpZiAocHJlZml4ID09PSAnVW5rbm93bicpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgcGVwdGlkZSwgbm9yIG51Y2xlb3RpZGUnKTtcblxuICAgIGNvbnN0IHBvc3RmaXggPSAnfSQkJCc7XG4gICAgY29uc3QgbGVmdFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpKSA/ICdEKCcgOlxuICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUignIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgY29uc3QgcmlnaHRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSB8fCB0aGlzLmlzUm5hKCkpID8gJylQJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgIHJldHVybiBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XTtcbiAgfVxuXG4gIC8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb252ZXJ0aW5nIHN0cmluZ3MgdG8gSEVMTVxuICBwcml2YXRlIGNvbnZlcnRUb0hlbG1IZWxwZXIoXG4gICAgc291cmNlUG9seW1lcjogc3RyaW5nLFxuICAgIHNvdXJjZUdhcFN5bWJvbDogc3RyaW5nLFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGxlZnRXcmFwcGVyOiBzdHJpbmcsXG4gICAgcmlnaHRXcmFwcGVyOiBzdHJpbmcsXG4gICAgcG9zdGZpeDogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9ub21lckFycmF5ID0gdGhpcy5zcGxpdHRlcihzb3VyY2VQb2x5bWVyKTtcbiAgICBjb25zdCBtb25vbWVySGVsbUFycmF5OiBzdHJpbmdbXSA9IG1vbm9tZXJBcnJheS5tYXAoKG1tOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChtbSA9PT0gc291cmNlR2FwU3ltYm9sKVxuICAgICAgICByZXR1cm4gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGAke2xlZnRXcmFwcGVyfSR7bW19JHtyaWdodFdyYXBwZXJ9YDtcbiAgICB9KTtcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7bW9ub21lckhlbG1BcnJheS5qb2luKCcuJyl9JHtwb3N0Zml4fWA7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHN0cmluZyB3aXRoIFNFUEFSQVRPUi9GQVNUQSBub3RhdGlvbiB0byBIRUxNXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VQb2x5bWVyICBBIHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2wgIEFuIG9wdGlvbmFsIGdhcCBzeW1ib2wsIHNldCB0b1xuICAgKiBkZWZhdWx0IHZhbHVlcyAoJy0nIGZvciBGQVNUQSBhbmQgJycgZm9yIFNFUEFSQVRPUikgdW5sZXNzIHNwZWNpZmllZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgdGFyZ2V0IEhFTE0gc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgY29udmVydFN0cmluZ1RvSGVsbShcbiAgICBzb3VyY2VQb2x5bWVyOiBzdHJpbmcsXG4gICAgc291cmNlR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBzdHJpbmcge1xuICAgIGlmIChzb3VyY2VHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICBzb3VyY2VHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG4gICAgY29uc3QgW3ByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeF0gPSB0aGlzLmdldEhlbG1XcmFwcGVycygpO1xuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBjb2x1bW4gdG8gSEVMTVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHNvdXJjZUdhcFN5bWJvbFxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59XG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRUb0hlbG0oc291cmNlR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgaWYgKHNvdXJjZUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIHNvdXJjZUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcblxuICAgIGNvbnN0IFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdID0gdGhpcy5nZXRIZWxtV3JhcHBlcnMoKTtcblxuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLkhFTE0pO1xuICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBlbXB0eSBjb2x1bW5cbiAgICBuZXdDb2x1bW4uaW5pdCgoaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sISwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KTtcbiAgICB9KTtcbiAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuVU5JVFMsIE5PVEFUSU9OLkhFTE0pO1xuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBTRVBBUkFUT1IgY29sdW1uIHRvIEZBU1RBIG5vdGF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gZmFzdGFHYXBTeW1ib2wgT3B0aW9uYWwgZ2FwIHN5bWJvbCBmb3IgRkFTVEFcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSAgQ29udmVydGVkIGNvbHVtblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0U2VwYXJhdG9yVG9GYXN0YShmYXN0YUdhcFN5bWJvbDogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIGZhc3RhR2FwU3ltYm9sID0gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuRkFTVEE7XG5cbiAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihOT1RBVElPTi5GQVNUQSk7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3Qgc2VwYXJhdG9yUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgLy8gaXRlbXMgY2FuIGJlIG1vbm9tZXJzIG9yIHNlcGFyYXRvcnNcbiAgICAgIGNvbnN0IHNlcGFyYXRvckl0ZW1zQXJyYXkgPSB0aGlzLnNwbGl0dGVyKHNlcGFyYXRvclBvbHltZXIpO1xuICAgICAgY29uc3QgZmFzdGFNb25vbWVyc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXBhcmF0b3JJdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZXBhcmF0b3JJdGVtc0FycmF5W2ldO1xuICAgICAgICBpZiAoaXRlbS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChmYXN0YUdhcFN5bWJvbCEpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXJcbiAgICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICB9KTtcbiAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuVU5JVFMsIE5PVEFUSU9OLkZBU1RBKTtcbiAgICByZXR1cm4gbmV3Q29sdW1uO1xuICB9XG5cbiAgLyoqXG4gICAqICBDb252ZXJ0IEhFTE0gY29sdW1uIHRvIEZBU1RBL1NFUEFSQVRPUlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGd0Tm90YXRpb24gICAgVGFyZ2V0IG5vdGF0aW9uOiBGQVNUQSBvciBTRVBBUkFUT1JcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gdGd0R2FwU3ltYm9sICAgT3B0aW9uYWwgdGFyZ2V0IGdhcCBzeW1ib2xcbiAgICogU0VQQVJBVE9SKVxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IENvbnZlcnRlZCBjb2x1bW5cbiAgICovXG4gIHByaXZhdGUgY29udmVydEhlbG0odGd0Tm90YXRpb246IHN0cmluZywgdGd0U2VwYXJhdG9yPzogc3RyaW5nLCB0Z3RHYXBTeW1ib2w/OiBzdHJpbmcpOiBERy5Db2x1bW4ge1xuICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgY29udGFpbiBjYWxscyBvZiBpc0RuYSgpIGFuZCBpc1JuYSgpLCBmb3JcbiAgICAvLyBzb3VyY2UgaGVsbSBjb2x1bW5zIG1heSBjb250YWluIFJOQSwgRE5BIGFuZCBQVCBhY3Jvc3MgZGlmZmVyZW50IHJvd3NcbiAgICBpZiAoIXRndEdhcFN5bWJvbCkge1xuICAgICAgdGd0R2FwU3ltYm9sID0gKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTikpID9cbiAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuRkFTVEEgOlxuICAgICAgICBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgfVxuXG4gICAgaWYgKCF0Z3RTZXBhcmF0b3IpIHtcbiAgICAgIHRndFNlcGFyYXRvciA9ICh0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24gYXMgTk9UQVRJT04pKSA/ICcnIDogdGhpcy5zZXBhcmF0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgaGVsbVdyYXBwZXJzUmUgPSAvKFJcXCh8RFxcKHxcXCl8UCkvZztcbiAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbih0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTik7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgaGVsbVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcblxuICAgICAgLy8gd2UgY2Fubm90IHVzZSBpc0RuYSgpIG9yIGlzUm5hKCkgYmVjYXVzZSBzb3VyY2UgaGVsbSBjb2x1bW5zIGNhblxuICAgICAgLy8gY29udGFpbiBETkEsIFJOQSBhbmQgUFQgaW4gZGlmZmVyZW50IGNlbGxzLCBzbyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAgLy8gdGFncyBjYW5ub3QgYmUgc2V0IGZvciB0aGUgd2hvbGUgY29sdW1uXG4gICAgICBjb25zdCBpc051Y2xlb3RpZGUgPSBoZWxtUG9seW1lci5zdGFydHNXaXRoKCdETkEnKSB8fCBoZWxtUG9seW1lci5zdGFydHNXaXRoKCdSTkEnKTtcblxuICAgICAgLy8gaXRlbXMgY2FuIGJlIG1vbm9tZXJzIG9yIGhlbG1zXG4gICAgICBjb25zdCBoZWxtSXRlbXNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoaGVsbVBvbHltZXIpO1xuICAgICAgY29uc3QgdGd0TW9ub21lcnNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVsbUl0ZW1zQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGl0ZW0gPSBoZWxtSXRlbXNBcnJheVtpXTtcbiAgICAgICAgaWYgKGlzTnVjbGVvdGlkZSlcbiAgICAgICAgICBpdGVtID0gaXRlbS5yZXBsYWNlKGhlbG1XcmFwcGVyc1JlLCAnJyk7XG4gICAgICAgIGlmIChpdGVtID09PSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5IRUxNKSB7XG4gICAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKHRndEdhcFN5bWJvbCEpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTikgJiYgaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lciBjb252ZXJ0ZWQgdG8gRkFTVEFcbiAgICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2gobW9ub21lcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvLyBUQUdTLmFsaWduZWQgaXMgbWFuZGF0b3J5IGZvciBjb2x1bW5zIG9mIE5PVEFUSU9OLkZBU1RBIGFuZCBOT1RBVElPTi5TRVBBUkFUT1JcbiAgICBjb25zdCBzcGxpdHRlcjogU3BsaXR0ZXJGdW5jID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4obmV3Q29sdW1uKTtcbiAgICBjb25zdCBzdGF0czogU2VxQ29sU3RhdHMgPSBnZXRTdGF0cyhuZXdDb2x1bW4sIDUsIHNwbGl0dGVyKTtcbiAgICBjb25zdCBhbGlnbmVkID0gc3RhdHMuc2FtZUxlbmd0aCA/ICdTRVEuTVNBJyA6ICdTRVEnO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoVEFHUy5hbGlnbmVkLCBhbGlnbmVkKTtcblxuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKTogREcuQ29sdW1uIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLlNFUEFSQVRPUik7XG4gIH1cblxuICAvKiogRGlzcGF0Y2hlciBtZXRob2QgZm9yIG5vdGF0aW9uIGNvbnZlcnNpb25cbiAgICpcbiAgICogQHBhcmFtIHtOT1RBVElPTn0gdGd0Tm90YXRpb24gICBOb3RhdGlvbiB3ZSB3YW50IHRvIGNvbnZlcnQgdG9cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RTZXBhcmF0b3IgICBQb3NzaWJsZSBzZXBhcmF0b3JcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgICAgICAgICBDb252ZXJ0ZWQgY29sdW1uXG4gICAqL1xuICBwdWJsaWMgY29udmVydCh0Z3ROb3RhdGlvbjogTk9UQVRJT04sIHRndFNlcGFyYXRvcjogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIC8vIHBvc3NpYmxlIGV4Y2VwdGlvbnNcbiAgICBpZiAodGhpcy5ub3RhdGlvbiA9PT0gdGd0Tm90YXRpb24pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBub3RhdGlvbiBpcyBpbnZhbGlkJyk7XG4gICAgaWYgKHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciA9PT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGd0IHNlcGFyYXRvciBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IodGd0U2VwYXJhdG9yKTtcbiAgICBlbHNlIGlmICgodGhpcy5pc0Zhc3RhKCkgfHwgdGhpcy5pc1NlcGFyYXRvcigpKSAmJiB0aGlzLnRvSGVsbSh0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtKCk7XG4gICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSgpO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgLy8gdGhlIGNhc2Ugb2YgSEVMTVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG0odGd0Tm90YXRpb24pO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yISk7XG4gICAgZWxzZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIGNvbnZlcnNpb24gJyArXG4gICAgICAgIGBmcm9tIHNvdXJjZSBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgdG8gdGFyZ2V0IG5vdGF0aW9uICcke3RndE5vdGF0aW9ufScuYCk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29sOiBERy5Db2x1bW4pIHtcbiAgICBzdXBlcihjb2wpO1xuICB9XG59XG4iXX0=
1406
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90YXRpb24tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm90YXRpb24tY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQTRDLE1BQU0saUJBQWlCLENBQUM7QUFFMUcsaUZBQWlGO0FBQ2pGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBR2pELElBQWMsUUFBUTtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxjQUF3QixJQUFhLE9BQU8sY0FBYyxpQ0FBbUIsQ0FBQyxDQUFDLENBQUM7SUFFeEYsV0FBVyxDQUFDLGNBQXdCLElBQWEsT0FBTyxjQUFjLHlDQUF1QixDQUFDLENBQUMsQ0FBQztJQUVoRyxNQUFNLENBQUMsY0FBd0IsSUFBYSxPQUFPLGNBQWMsK0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRTdGOzs7Ozs7T0FNRztJQUNLLHVCQUF1QixDQUFDLFNBQWlCLEVBQUUsaUJBQWdDLElBQUk7UUFDckYsSUFBSSxjQUFjLEtBQUssSUFBSTtZQUN6QixjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRXpDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLHNDQUFvQixDQUFDO1FBQ3hELHNEQUFzRDtRQUN0RCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FB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SSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFlBQWEsQ0FBQyxDQUFDOztZQUVwRCxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQjtnQkFDekMseUJBQXlCLElBQUksQ0FBQyxRQUFRLHlCQUF5QixXQUFXLElBQUksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxZQUFtQixHQUFjO1FBQy9CLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQTdRTCxjQUFTLEdBQXdCLElBQUksQ0FBQztJQThROUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmltcG9ydCB7VW5pdHNIYW5kbGVyfSBmcm9tICcuL3VuaXRzLWhhbmRsZXInO1xuaW1wb3J0IHtnZXRTcGxpdHRlckZvckNvbHVtbiwgZ2V0U3RhdHMsIE5PVEFUSU9OLCBTZXFDb2xTdGF0cywgU3BsaXR0ZXJGdW5jLCBUQUdTfSBmcm9tICcuL21hY3JvbW9sZWN1bGUnO1xuXG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciBleHRlbmRzIFVuaXRzSGFuZGxlciB7XG4gIHByaXZhdGUgX3NwbGl0dGVyOiBTcGxpdHRlckZ1bmMgfCBudWxsID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgZ2V0IHNwbGl0dGVyKCk6IFNwbGl0dGVyRnVuYyB7XG4gICAgaWYgKHRoaXMuX3NwbGl0dGVyID09PSBudWxsKVxuICAgICAgdGhpcy5fc3BsaXR0ZXIgPSBnZXRTcGxpdHRlckZvckNvbHVtbih0aGlzLmNvbHVtbik7XG4gICAgcmV0dXJuIHRoaXMuX3NwbGl0dGVyO1xuICB9XG5cbiAgcHVibGljIHRvRmFzdGEodGFyZ2V0Tm90YXRpb246IE5PVEFUSU9OKTogYm9vbGVhbiB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gTk9UQVRJT04uRkFTVEE7IH1cblxuICBwdWJsaWMgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb246IE5PVEFUSU9OKTogYm9vbGVhbiB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gTk9UQVRJT04uU0VQQVJBVE9SOyB9XG5cbiAgcHVibGljIHRvSGVsbSh0YXJnZXROb3RhdGlvbjogTk9UQVRJT04pOiBib29sZWFuIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBOT1RBVElPTi5IRUxNOyB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBNYWNyb21vbGVjdWxlIGNvbHVtbiBmcm9tIEZBU1RBIHRvIFNFUEFSQVRPUiBub3RhdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yICBBIHNwZWNpZmljIHNlcGFyYXRvciB0byBiZSB1c2VkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYXN0YUdhcFN5bWJvbCAgR2FwIHN5bWJvbCBpbiBGQVNUQSwgJy0nIGJ5IGRlZmF1bHRcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgQSBuZXcgY29sdW1uIGluIFNFUEFSQVRPUiBub3RhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RmFzdGFUb1NlcGFyYXRvcihzZXBhcmF0b3I6IHN0cmluZywgZmFzdGFHYXBTeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsKTogREcuQ29sdW1uIHtcbiAgICBpZiAoZmFzdGFHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICBmYXN0YUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcblxuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLlNFUEFSQVRPUik7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBmYXN0YVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoZmFzdGFQb2x5bWVyKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFzdGFNb25vbWVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPT09IGZhc3RhR2FwU3ltYm9sKVxuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheVtpXSA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYXN0YU1vbm9tZXJzQXJyYXkuam9pbihzZXBhcmF0b3IpO1xuICAgIH0pO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgTk9UQVRJT04uU0VQQVJBVE9SKTtcbiAgICBuZXdDb2x1bW4uc2V0VGFnKFRBR1Muc2VwYXJhdG9yLCBzZXBhcmF0b3IpO1xuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3cmFwcGVyIHN0cmluZ3MgZm9yIEhFTE0sIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGVcbiAgICogbWFjcm9tb2xlY3VsZSAocGVwdGlkZSwgRE5BLCBSTkEpXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiB3cmFwcGVyc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRIZWxtV3JhcHBlcnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHByZWZpeCA9ICh0aGlzLmlzRG5hKCkpID8gJ0ROQTF7JyA6XG4gICAgICAodGhpcy5pc1JuYSgpKSA/ICdSTkExeycgOlxuICAgICAgICAodGhpcy5pc1BlcHRpZGUoKSkgPyAnUEVQVElERTF7JyA6XG4gICAgICAgICAgJ1Vua25vd24nOyAvLyB0aGlzIGNhc2Ugc2hvdWxkIGJlIGhhbmRsZWQgYXMgZXhjZXB0aW9uYWxcblxuICAgIGlmIChwcmVmaXggPT09ICdVbmtub3duJylcbiAgICAgIHRocm93IG5ldyBFcnJvcignTmVpdGhlciBwZXB0aWRlLCBub3IgbnVjbGVvdGlkZScpO1xuXG4gICAgY29uc3QgcG9zdGZpeCA9ICd9JCQkJztcbiAgICBjb25zdCBsZWZ0V3JhcHBlciA9ICh0aGlzLmlzRG5hKCkpID8gJ0QoJyA6XG4gICAgICAodGhpcy5pc1JuYSgpKSA/ICdSKCcgOiAnJzsgLy8gbm8gd3JhcHBlciBmb3IgcGVwdGlkZXNcbiAgICBjb25zdCByaWdodFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpIHx8IHRoaXMuaXNSbmEoKSkgPyAnKVAnIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgcmV0dXJuIFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdO1xuICB9XG5cbiAgLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbnZlcnRpbmcgc3RyaW5ncyB0byBIRUxNXG4gIHByaXZhdGUgY29udmVydFRvSGVsbUhlbHBlcihcbiAgICBzb3VyY2VQb2x5bWVyOiBzdHJpbmcsXG4gICAgc291cmNlR2FwU3ltYm9sOiBzdHJpbmcsXG4gICAgcHJlZml4OiBzdHJpbmcsXG4gICAgbGVmdFdyYXBwZXI6IHN0cmluZyxcbiAgICByaWdodFdyYXBwZXI6IHN0cmluZyxcbiAgICBwb3N0Zml4OiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb25vbWVyQXJyYXkgPSB0aGlzLnNwbGl0dGVyKHNvdXJjZVBvbHltZXIpO1xuICAgIGNvbnN0IG1vbm9tZXJIZWxtQXJyYXk6IHN0cmluZ1tdID0gbW9ub21lckFycmF5Lm1hcCgobW06IHN0cmluZykgPT4ge1xuICAgICAgaWYgKG1tID09PSBzb3VyY2VHYXBTeW1ib2wpXG4gICAgICAgIHJldHVybiBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5IRUxNO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gYCR7bGVmdFdyYXBwZXJ9JHttbX0ke3JpZ2h0V3JhcHBlcn1gO1xuICAgIH0pO1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHttb25vbWVySGVsbUFycmF5LmpvaW4oJy4nKX0ke3Bvc3RmaXh9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgc3RyaW5nIHdpdGggU0VQQVJBVE9SL0ZBU1RBIG5vdGF0aW9uIHRvIEhFTE1cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVBvbHltZXIgIEEgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHNvdXJjZUdhcFN5bWJvbCAgQW4gb3B0aW9uYWwgZ2FwIHN5bWJvbCwgc2V0IHRvXG4gICAqIGRlZmF1bHQgdmFsdWVzICgnLScgZm9yIEZBU1RBIGFuZCAnJyBmb3IgU0VQQVJBVE9SKSB1bmxlc3Mgc3BlY2lmaWVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIFRoZSB0YXJnZXQgSEVMTSBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBjb252ZXJ0U3RyaW5nVG9IZWxtKFxuICAgIHNvdXJjZVBvbHltZXI6IHN0cmluZyxcbiAgICBzb3VyY2VHYXBTeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHNvdXJjZUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIHNvdXJjZUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcbiAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIGNvbHVtbiB0byBIRUxNXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gc291cmNlR2FwU3ltYm9sXG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn1cbiAgICovXG4gIHByaXZhdGUgY29udmVydFRvSGVsbShzb3VyY2VHYXBTeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsKTogREcuQ29sdW1uIHtcbiAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuXG4gICAgY29uc3QgW3ByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeF0gPSB0aGlzLmdldEhlbG1XcmFwcGVycygpO1xuXG4gICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oTk9UQVRJT04uSEVMTSk7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3Qgc291cmNlUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2whLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICAgIH0pO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgTk9UQVRJT04uSEVMTSk7XG4gICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IFNFUEFSQVRPUiBjb2x1bW4gdG8gRkFTVEEgbm90YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBmYXN0YUdhcFN5bWJvbCBPcHRpb25hbCBnYXAgc3ltYm9sIGZvciBGQVNUQVxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICBDb252ZXJ0ZWQgY29sdW1uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKGZhc3RhR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgaWYgKGZhc3RhR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgZmFzdGFHYXBTeW1ib2wgPSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQTtcblxuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLkZBU1RBKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBzZXBhcmF0b3JQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3Igc2VwYXJhdG9yc1xuICAgICAgY29uc3Qgc2VwYXJhdG9ySXRlbXNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoc2VwYXJhdG9yUG9seW1lcik7XG4gICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcGFyYXRvckl0ZW1zQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHNlcGFyYXRvckl0ZW1zQXJyYXlbaV07XG4gICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGZhc3RhR2FwU3ltYm9sISk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lclxuICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oJycpO1xuICAgIH0pO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgTk9UQVRJT04uRkFTVEEpO1xuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICAvKipcbiAgICogIENvbnZlcnQgSEVMTSBzdHJpbmcgdG8gRkFTVEEvU0VQQVJBVE9SXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoZWxtUG9seW1lciAgICBBIHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0Z3RTZXBhcmF0b3IgICBPcHRpb25hbCB0YXJnZXQgc2VwYXJhdG9yIChmb3IgSEVMTSAtPlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndEdhcFN5bWJvbCAgIE9wdGlvbmFsIHRhcmdldCBnYXAgc3ltYm9sXG4gICAqIFNFUEFSQVRPUilcbiAgICogQHJldHVybiB7c3RyaW5nfSBDb252ZXJ0ZWQgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgY29udmVydEhlbG1Ub0Zhc3RhU2VwYXJhdG9yKFxuICAgIGhlbG1Qb2x5bWVyOiBzdHJpbmcsIFxuICAgIHRndE5vdGF0aW9uOiBzdHJpbmcsIFxuICAgIHRndFNlcGFyYXRvcj86IHN0cmluZywgXG4gICAgdGd0R2FwU3ltYm9sPzogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0Z3RHYXBTeW1ib2wpIHtcbiAgICAgIHRndEdhcFN5bWJvbCA9ICh0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24gYXMgTk9UQVRJT04pKSA/XG4gICAgICAgIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBIDpcbiAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuU0VQQVJBVE9SO1xuICAgIH1cblxuICAgIGlmICghdGd0U2VwYXJhdG9yKSB7XG4gICAgICB0Z3RTZXBhcmF0b3IgPSAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uIGFzIE5PVEFUSU9OKSkgPyAnJyA6IHRoaXMuc2VwYXJhdG9yO1xuICAgIH1cbiAgICBjb25zdCBoZWxtV3JhcHBlcnNSZSA9IC8oUlxcKHxEXFwofFxcKXxQKS9nO1xuICAgIGNvbnN0IGlzTnVjbGVvdGlkZSA9IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ0ROQScpIHx8IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ1JOQScpO1xuICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBoZWxtc1xuICAgIGNvbnN0IGhlbG1JdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihoZWxtUG9seW1lcik7XG4gICAgY29uc3QgdGd0TW9ub21lcnNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlbG1JdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgaXRlbSA9IGhlbG1JdGVtc0FycmF5W2ldO1xuICAgICAgaWYgKGlzTnVjbGVvdGlkZSlcbiAgICAgICAgaXRlbSA9IGl0ZW0ucmVwbGFjZShoZWxtV3JhcHBlcnNSZSwgJycpO1xuICAgICAgaWYgKGl0ZW0gPT09IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE0pIHtcbiAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKHRndEdhcFN5bWJvbCEpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24gYXMgTk9UQVRJT04pICYmIGl0ZW0ubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyB0aGUgY2FzZSBvZiBhIG11bHRpLWNoYXJhY3RlciBtb25vbWVyIGNvbnZlcnRlZCB0byBGQVNUQVxuICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gIH1cblxuICAvKipcbiAgICogIENvbnZlcnQgSEVMTSBjb2x1bW4gdG8gRkFTVEEvU0VQQVJBVE9SXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0Z3ROb3RhdGlvbiAgICBUYXJnZXQgbm90YXRpb246IEZBU1RBIG9yIFNFUEFSQVRPUlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGd0U2VwYXJhdG9yICAgT3B0aW9uYWwgdGFyZ2V0IHNlcGFyYXRvciAoZm9yIEhFTE0gLT5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgKiBTRVBBUkFUT1IpXG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gQ29udmVydGVkIGNvbHVtblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbjogc3RyaW5nLCB0Z3RTZXBhcmF0b3I/OiBzdHJpbmcsIHRndEdhcFN5bWJvbD86IHN0cmluZyk6IERHLkNvbHVtbiB7XG4gICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBjb250YWluIGNhbGxzIG9mIGlzRG5hKCkgYW5kIGlzUm5hKCksIGZvclxuICAgIC8vIHNvdXJjZSBoZWxtIGNvbHVtbnMgbWF5IGNvbnRhaW4gUk5BLCBETkEgYW5kIFBUIGFjcm9zcyBkaWZmZXJlbnQgcm93c1xuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKHRndE5vdGF0aW9uIGFzIE5PVEFUSU9OKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBoZWxtUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG1Ub0Zhc3RhU2VwYXJhdG9yKGhlbG1Qb2x5bWVyLCB0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yLCB0Z3RHYXBTeW1ib2wpO1xuICAgICAgLy8gd2UgY2Fubm90IHVzZSBpc0RuYSgpIG9yIGlzUm5hKCkgYmVjYXVzZSBzb3VyY2UgaGVsbSBjb2x1bW5zIGNhblxuICAgICAgLy8gY29udGFpbiBETkEsIFJOQSBhbmQgUFQgaW4gZGlmZmVyZW50IGNlbGxzLCBzbyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAgLy8gdGFncyBjYW5ub3QgYmUgc2V0IGZvciB0aGUgd2hvbGUgY29sdW1uXG4gICAgfSk7XG5cbiAgICAvLyBUQUdTLmFsaWduZWQgaXMgbWFuZGF0b3J5IGZvciBjb2x1bW5zIG9mIE5PVEFUSU9OLkZBU1RBIGFuZCBOT1RBVElPTi5TRVBBUkFUT1JcbiAgICBjb25zdCBzcGxpdHRlcjogU3BsaXR0ZXJGdW5jID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4obmV3Q29sdW1uKTtcbiAgICBjb25zdCBzdGF0czogU2VxQ29sU3RhdHMgPSBnZXRTdGF0cyhuZXdDb2x1bW4sIDUsIHNwbGl0dGVyKTtcbiAgICBjb25zdCBhbGlnbmVkID0gc3RhdHMuc2FtZUxlbmd0aCA/ICdTRVEuTVNBJyA6ICdTRVEnO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoVEFHUy5hbGlnbmVkLCBhbGlnbmVkKTtcblxuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKTogREcuQ29sdW1uIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLlNFUEFSQVRPUik7XG4gIH1cblxuICAvKiogRGlzcGF0Y2hlciBtZXRob2QgZm9yIG5vdGF0aW9uIGNvbnZlcnNpb25cbiAgICpcbiAgICogQHBhcmFtIHtOT1RBVElPTn0gdGd0Tm90YXRpb24gICBOb3RhdGlvbiB3ZSB3YW50IHRvIGNvbnZlcnQgdG9cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RTZXBhcmF0b3IgICBQb3NzaWJsZSBzZXBhcmF0b3JcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgICAgICAgICBDb252ZXJ0ZWQgY29sdW1uXG4gICAqL1xuICBwdWJsaWMgY29udmVydCh0Z3ROb3RhdGlvbjogTk9UQVRJT04sIHRndFNlcGFyYXRvcjogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIC8vIHBvc3NpYmxlIGV4Y2VwdGlvbnNcbiAgICBpZiAodGhpcy5ub3RhdGlvbiA9PT0gdGd0Tm90YXRpb24pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBub3RhdGlvbiBpcyBpbnZhbGlkJyk7XG4gICAgaWYgKHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciA9PT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGd0IHNlcGFyYXRvciBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IodGd0U2VwYXJhdG9yKTtcbiAgICBlbHNlIGlmICgodGhpcy5pc0Zhc3RhKCkgfHwgdGhpcy5pc1NlcGFyYXRvcigpKSAmJiB0aGlzLnRvSGVsbSh0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtKCk7XG4gICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSgpO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgLy8gdGhlIGNhc2Ugb2YgSEVMTVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG0odGd0Tm90YXRpb24pO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yISk7XG4gICAgZWxzZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIGNvbnZlcnNpb24gJyArXG4gICAgICAgIGBmcm9tIHNvdXJjZSBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgdG8gdGFyZ2V0IG5vdGF0aW9uICcke3RndE5vdGF0aW9ufScuYCk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29sOiBERy5Db2x1bW4pIHtcbiAgICBzdXBlcihjb2wpO1xuICB9XG59XG4iXX0=
1394
1407
 
1395
1408
  /***/ }),
1396
1409
 
@@ -2181,10 +2194,6 @@ __webpack_require__.r(__webpack_exports__);
2181
2194
  /* harmony export */ "editMoleculeCell": () => (/* binding */ editMoleculeCell),
2182
2195
  /* harmony export */ "getMolfiles": () => (/* binding */ getMolfiles),
2183
2196
  /* harmony export */ "helmCellRenderer": () => (/* binding */ helmCellRenderer),
2184
- /* harmony export */ "helmToFasta": () => (/* binding */ helmToFasta),
2185
- /* harmony export */ "helmToPeptide": () => (/* binding */ helmToPeptide),
2186
- /* harmony export */ "helmToRNA": () => (/* binding */ helmToRNA),
2187
- /* harmony export */ "helmToSmiles": () => (/* binding */ helmToSmiles),
2188
2197
  /* harmony export */ "helmWebEditor": () => (/* binding */ helmWebEditor),
2189
2198
  /* harmony export */ "initHelm": () => (/* binding */ initHelm),
2190
2199
  /* harmony export */ "openEditor": () => (/* binding */ openEditor),
@@ -2299,16 +2308,22 @@ function rewriteLibraries() {
2299
2308
  function helmCellRenderer() {
2300
2309
  return new _cell_renderer__WEBPACK_IMPORTED_MODULE_5__.HelmCellRenderer();
2301
2310
  }
2311
+ function checkMonomersAndOpenWebEditor(cell, value, units) {
2312
+ const cellValue = typeof units === 'undefined' ? cell.value : value;
2313
+ const monomers = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.findMonomers)(cellValue);
2314
+ if (monomers.size == 0)
2315
+ webEditor(cell, value, units);
2316
+ else
2317
+ datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.warning(`Monomers ${Array.from(monomers).join(', ')} are absent! <br/>` +
2318
+ `Please, upload the monomer library! <br/>` +
2319
+ `<a href="https://datagrok.ai/help/domains/bio/macromolecules" target="_blank">Learn more</a>`);
2320
+ }
2302
2321
  //tags: cellEditor
2303
2322
  //description: Macromolecule
2304
2323
  //input: grid_cell cell
2324
+ //meta.columnTags: quality=Macromolecule, units=helm
2305
2325
  function editMoleculeCell(cell) {
2306
- const monomers = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.findMonomers)(cell.cell.value);
2307
- if (cell.gridColumn.column.tags[datagrok_api_dg__WEBPACK_IMPORTED_MODULE_2__.TAGS.UNITS] === 'helm')
2308
- if (monomers.size == 0)
2309
- webEditor(cell);
2310
- else
2311
- datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.warning(`Monomers ${Array.from(monomers).join(', ')} are absent!`);
2326
+ checkMonomersAndOpenWebEditor(cell.cell, undefined, undefined);
2312
2327
  }
2313
2328
  //name: Open Helm Web Editor
2314
2329
  //description: Adds editor
@@ -2316,13 +2331,10 @@ function editMoleculeCell(cell) {
2316
2331
  //input: string mol { semType: Macromolecule }
2317
2332
  function openEditor(mol) {
2318
2333
  let df = datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.tv.grid.dataFrame;
2319
- let converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_6__.NotationConverter(df.columns.bySemType('Macromolecule'));
2334
+ let col = df.columns.bySemType('Macromolecule');
2335
+ let converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_6__.NotationConverter(col);
2320
2336
  const resStr = converter.convertStringToHelm(mol, '/');
2321
- const monomers = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.findMonomers)(resStr);
2322
- if (monomers.size == 0)
2323
- webEditor(undefined, resStr);
2324
- else
2325
- datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.warning(`Monomers ${Array.from(monomers).join(', ')} are absent!`);
2337
+ checkMonomersAndOpenWebEditor(df.currentCell, resStr, col.getTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_2__.TAGS.UNITS));
2326
2338
  }
2327
2339
  //name: Properties
2328
2340
  //tags: panel, widgets
@@ -2349,8 +2361,10 @@ function propertiesPanel(helmString) {
2349
2361
  }));
2350
2362
  });
2351
2363
  }
2352
- function webEditor(cell, value) {
2364
+ function webEditor(cell, value, units) {
2353
2365
  let view = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_1__.div();
2366
+ let df = datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.tv.grid.dataFrame;
2367
+ let converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_6__.NotationConverter(df.columns.bySemType('Macromolecule'));
2354
2368
  org.helm.webeditor.MolViewer.molscale = 0.8;
2355
2369
  let app = new scil.helm.App(view, {
2356
2370
  showabout: false,
@@ -2375,8 +2389,8 @@ function webEditor(cell, value) {
2375
2389
  app.structureview.resize(sizes.rightwidth, sizes.bottomheight + app.toolbarheight);
2376
2390
  app.mex.resize(sizes.topheight - 80);
2377
2391
  setTimeout(function () {
2378
- if (typeof cell !== 'undefined') {
2379
- app.canvas.helm.setSequence(cell.cell.value, 'HELM');
2392
+ if (typeof units === 'undefined') {
2393
+ app.canvas.helm.setSequence(cell.value, 'HELM');
2380
2394
  }
2381
2395
  else {
2382
2396
  app.canvas.helm.setSequence(value, 'HELM');
@@ -2386,63 +2400,16 @@ function webEditor(cell, value) {
2386
2400
  datagrok_api_ui__WEBPACK_IMPORTED_MODULE_1__.dialog({ showHeader: false, showFooter: true })
2387
2401
  .add(view)
2388
2402
  .onOK(() => {
2389
- if (typeof cell !== 'undefined') {
2390
- cell.cell.value = app.canvas.getHelm(true).replace(/<\/span>/g, '').replace(/<span style='background:#bbf;'>/g, '');
2403
+ let helmValue = app.canvas.getHelm(true).replace(/<\/span>/g, '').replace(/<span style='background:#bbf;'>/g, '');
2404
+ if (typeof units === 'undefined') {
2405
+ cell.value = helmValue;
2406
+ }
2407
+ else {
2408
+ let convertedRes = converter.convertHelmToFastaSeparator(helmValue, units);
2409
+ cell.value = convertedRes;
2391
2410
  }
2392
2411
  }).show({ modal: true, fullScreen: true });
2393
2412
  }
2394
- function accessServer(url, key) {
2395
- return __awaiter(this, void 0, void 0, function* () {
2396
- const params = {
2397
- method: 'GET',
2398
- headers: {
2399
- 'Accept': 'application/json',
2400
- }
2401
- };
2402
- const response = yield fetch(url, params);
2403
- const json = yield response.json();
2404
- return json[key];
2405
- });
2406
- }
2407
- //name: helmToFasta
2408
- //input: string helmString {semType: Macromolecule}
2409
- //output: string res
2410
- function helmToFasta(helmString) {
2411
- return __awaiter(this, void 0, void 0, function* () {
2412
- const url = `http://localhost:8081/WebService/service/Fasta/Produce/${helmString}`;
2413
- return yield accessServer(url, 'FastaFile');
2414
- });
2415
- }
2416
- //name: helmToRNA
2417
- //description: converts to rna analogue sequence
2418
- //input: string helmString {semType: Macromolecule}
2419
- //output: string res
2420
- function helmToRNA(helmString) {
2421
- return __awaiter(this, void 0, void 0, function* () {
2422
- const url = `http://localhost:8081/WebService/service/Fasta/Convert/RNA/${helmString}`;
2423
- return yield accessServer(url, 'Sequence');
2424
- });
2425
- }
2426
- //name: helmToPeptide
2427
- //description: converts to peptide analogue sequence
2428
- //input: string helmString {semType: Macromolecule}
2429
- //output: string res
2430
- function helmToPeptide(helmString) {
2431
- return __awaiter(this, void 0, void 0, function* () {
2432
- const url = `http://localhost:8081/WebService/service/Fasta/Convert/PEPTIDE/${helmString}`;
2433
- return yield accessServer(url, 'Sequence');
2434
- });
2435
- }
2436
- //name: helmToSmiles
2437
- //description: converts to smiles
2438
- //input: string helmString {semType: Macromolecule}
2439
- //output: string smiles {semType: Molecule}
2440
- function helmToSmiles(helmString) {
2441
- return __awaiter(this, void 0, void 0, function* () {
2442
- const url = `http://localhost:8081/WebService/service/SMILES/${helmString}`;
2443
- return yield accessServer(url, 'SMILES');
2444
- });
2445
- }
2446
2413
  function getRS(smiles) {
2447
2414
  const newS = smiles.match(/(?<=\[)[^\][]*(?=])/gm);
2448
2415
  const res = {};
@@ -2495,4 +2462,4 @@ function helmWebEditor() {
2495
2462
  helm = __webpack_exports__;
2496
2463
  /******/ })()
2497
2464
  ;
2498
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFXO0FBQzdGO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNPO0FBQ1A7QUFDQSxzRkFBc0YsV0FBVztBQUNqRztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUIseUJBQXlCO0FBQ2xCO0FBQ1A7QUFDQSx1RUFBdUUsV0FBVztBQUNsRjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLG9CQUFvQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ087QUFDUCxlQUFlLDREQUFrQjtBQUNqQztBQUNBLGNBQWMsMERBQWdCO0FBQzlCLGlCQUFpQixnREFBTTtBQUN2QjtBQUNBLDRDQUE0QyxnQkFBZ0I7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGVBQWUsMkRBQWE7QUFDNUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20uanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvYW1pbm9hY2lkcy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9udWNsZW90aWRlcy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXEtcGFsZXR0ZXMuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdW5rbm93bi5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9jZWxsLXJlbmRlcmVyLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3V0aWxzL21hY3JvbW9sZWN1bGUuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvbm90YXRpb24tY29udmVydGVyLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3V0aWxzL3VuaXRzLWhhbmRsZXIuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90by1jb25zb2xlLmpzIiwid2VicGFjazovL2hlbG0vLi9zcmMvY2VsbC1yZW5kZXJlci50cyIsIndlYnBhY2s6Ly9oZWxtLy4vc3JjL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9oZWxtLy4vc3JjL2hlbG0td2ViLWVkaXRvci50cyIsIndlYnBhY2s6Ly9oZWxtLy4vc3JjL3V0aWxzLnRzIiwid2VicGFjazovL2hlbG0vZXh0ZXJuYWwgdmFyIFwiREdcIiIsIndlYnBhY2s6Ly9oZWxtL2V4dGVybmFsIHZhciBcImdyb2tcIiIsIndlYnBhY2s6Ly9oZWxtL2V4dGVybmFsIHZhciBcInVpXCIiLCJ3ZWJwYWNrOi8vaGVsbS9leHRlcm5hbCB2YXIgXCJ3dVwiIiwid2VicGFjazovL2hlbG0vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vaGVsbS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9oZWxtL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9oZWxtL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vaGVsbS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2hlbG0vLi9zcmMvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCIvKipcbiAqIERlbm90ZXMgYSB2ZWN0b3Igb2YgZmxvYXRpbmcgcG9pdCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFZlY3RvclxuICogQGV4dGVuZHMge0Zsb2F0MzJBcnJheX1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvciBleHRlbmRzIEZsb2F0MzJBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgYSB0d28tZGltZW5zaW9uYWwgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBNYXRyaXhcbiAqIEBleHRlbmRzIHtBcnJheTxWZWN0b3I+fVxuICovXG5leHBvcnQgY2xhc3MgTWF0cml4IGV4dGVuZHMgQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGNhcnRlc2lhbiBjb29yZGluYXRlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQ29vcmRpbmF0ZXNcbiAqIEBleHRlbmRzIHtNYXRyaXh9XG4gKi9cbmV4cG9ydCBjbGFzcyBDb29yZGluYXRlcyBleHRlbmRzIE1hdHJpeCB7XG59XG4vKipcbiAqIERlbm90ZXMgYW4gYXJyYXkgb2YgYXJiaXRyYXJ5LXR5cGVkIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFZlY3RvcnNcbiAqIEBleHRlbmRzIHtBcnJheTxhbnk+fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9ycyBleHRlbmRzIEFycmF5IHtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaUzFrWldOc1lYSmhkR2x2Ym5NdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUowZVhCbExXUmxZMnhoY21GMGFXOXVjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxGbEJRVms3UTBGQlJ6dEJRVVV6UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEV0QlFXRTdRMEZCUnp0QlFVVTFRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNWMEZCV1N4VFFVRlJMRTFCUVUwN1EwRkJSenRCUVVVeFF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1QwRkJVU3hUUVVGUkxFdEJRVlU3UTBGQlJ5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJSFpsWTNSdmNpQnZaaUJtYkc5aGRHbHVaeUJ3YjJsMElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1ZtVmpkRzl5WEc0Z0tpQkFaWGgwWlc1a2N5QjdSbXh2WVhRek1rRnljbUY1ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZtVmpkRzl5SUdWNGRHVnVaSE1nUm14dllYUXpNa0Z5Y21GNUlIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0J0WVhSeWFYZ3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRTFoZEhKcGVGeHVJQ29nUUdWNGRHVnVaSE1nZTBGeWNtRjVQRlpsWTNSdmNqNTlYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJOWVhSeWFYZ2daWGgwWlc1a2N5QkJjbkpoZVR4V1pXTjBiM0krSUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmpZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaWE11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUVOdmIzSmthVzVoZEdWelhHNGdLaUJBWlhoMFpXNWtjeUI3VFdGMGNtbDRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUTI5dmNtUnBibUYwWlhNZ1pYaDBaVzVrY3lCTllYUnlhWGdnZTMxY2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRnVJR0Z5Y21GNUlHOW1JR0Z5WW1sMGNtRnllUzEwZVhCbFpDQjJaV04wYjNKekxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJqYkdGemN5QldaV04wYjNKelhHNGdLaUJBWlhoMFpXNWtjeUI3UVhKeVlYazhZVzU1UG4xY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGWmxZM1J2Y25NZ1pYaDBaVzVrY3lCQmNuSmhlVHhoYm5rK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUdScFkzUnBiMjVoY25rZ1kyOXVkR0ZwYm1sdVp5Qm1kVzVqZEdsdmJpQnZjSFJwYjI1ekxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUIwZVhCbElFOXdkR2x2Ym5OY2JpQXFMMXh1Wlhod2IzSjBJSFI1Y0dVZ1QzQjBhVzl1Y3lBOUlIdGJibUZ0WlRvZ2MzUnlhVzVuWFRvZ1lXNTVmVHRjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdOMWMzUnZiU0JrYVhOMFlXNWpaU0J0WlhSeWFXTWdZbVYwZDJWbGJpQjBhR1VnZEhkdklHZHBkbVZ1SUhabFkzUnZjbk11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIUjVjR1VnUkdsemRHRnVZMlZOWlhSeWFXTmNiaUFxSUVCd1lYSmhiU0I3WVc1NWZTQjJNU0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0aGJubDlJSFl5SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkVhWE4wWVc1alpTQmlaWFIzWldWdUlIUm9aWE5sSUhSM2J5QjJaV04wYjNKekxseHVJQ292WEc1bGVIQnZjblFnZEhsd1pTQkVhWE4wWVc1alpVMWxkSEpwWXlBOUlDaDJNVG9nWVc1NUxDQjJNam9nWVc1NUtTQTlQaUFvYm5WdFltVnlLVHRjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdFZ2MybHRjR3hsSUhOMGNtbHVaeUIwYnlCemRISnBibWNnWkdsamRHbHZibUZ5ZVM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFkSGx3WlNCVGRISnBibWRFYVdOMGFXOXVZWEo1WEc0Z0tpOWNibVY0Y0c5eWRDQjBlWEJsSUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCN1cydGxlVG9nYzNSeWFXNW5YVG9nYzNSeWFXNW5mVHRjYmlKZGZRPT0iLCJpbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUZsb2F0LCByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24gPSBmYWxzZSwgbWVzc2FnZSA9ICdBc3NlcnRpb24gZXJyb3IuJykge1xuICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4vKipcbiAqIENyZWF0ZXMgbmV3IHR3by1kaW1lbnNpb25hbCBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiByb3dzKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIGNvbHVtbnMpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmaWxsPTBdIEEgdmFsdWUgdG8gZmlsbCB0aGUgY29vcmRpbmF0ZXMgd2l0aC5cbiAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBBIHR3by1kaW1lbnNpb25hbCBmaWxsZWQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZnVuY3Rpb24gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIGZpbGwgPSAwKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShkaW1lbnNpb24xKS5maWxsKGZpbGwpLm1hcCgoKSA9PiAobmV3IFZlY3RvcihkaW1lbnNpb24yKS5maWxsKGZpbGwpKSk7XG59XG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4KSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXhbMF0ubGVuZ3RoKS5maWxsKDApXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IChuZXcgVmVjdG9yKG1hdHJpeC5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBqKSA9PiAobWF0cml4W2pdW2ldKSkpKTtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocCwgcSwgbXVsdGlwbGllciA9IDEpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcbiAgICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSBwW2ldICsgbXVsdGlwbGllciAqIHFbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdW1zIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIGJlIHN1bW1lZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlY3RvcidzIGl0ZW1zIHN1bS5cbiAqL1xuZnVuY3Rpb24gaXRlbXNTdW0odikge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbCArPSB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VxYXJlcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBzcXVhcmUuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IEEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCdzIGl0ZW1zIHNxdWFyZWQuXG4gKi9cbmZ1bmN0aW9uIHZlY3RvclNxdWFyZSh2KSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JMZW5ndGgodikge1xuICAgIGxldCBzcXJTdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICAgICAgc3FyU3VtICs9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JEb3RQcm9kdWN0KHYxLCB2Mikge1xuICAgIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuICogUmV0dXJucyBvcmRlciBvZiB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgc29ydGVkLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlcyBJbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldmVyc2U9ZmFsc2VdIFdoZXRoZXIgdG8gcmV0dXJuIHJldmVyc2VkIG9yZGVyLlxuICogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyZ1NvcnQodmFsdWVzLCByZXZlcnNlID0gZmFsc2UpIHtcbiAgICBjb25zdCBzb3J0Zm4gPSByZXZlcnNlID8gKGEsIGIpID0+IChiWzBdIC0gYVswXSkgOiAoYSwgYikgPT4gKGFbMF0gLSBiWzBdKTtcbiAgICBjb25zdCBkZWNvciA9ICh2LCBpKSA9PiBbdiwgaV07IC8vIHNldCBpbmRleCB0byB2YWx1ZVxuICAgIGNvbnN0IHVuZGVjb3IgPSAoYSkgPT4gYVsxXTsgLy8gbGVhdmUgb25seSBpbmRleFxuICAgIGNvbnN0IF9hcmdzb3J0ID0gKGFycikgPT4gYXJyLm1hcChkZWNvcikuc29ydChzb3J0Zm4pLm1hcCh1bmRlY29yKTtcbiAgICByZXR1cm4gX2FyZ3NvcnQodmFsdWVzKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHMgYWNjb3JkaW5nIHRvIHRoZSBkaXN0IGZ1bmN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIHRvdGFsIG51bWJlciBvZiBvYmplY3RzXG4gKiBAcGFyYW0ge251bWJlcn0gbiBudW1iZXIgb2YgZGl2ZXJzZSBlbGVtZW50cyB0byBmaW5kXG4gKiBAcGFyYW0geyhpMTogbnVtYmVyLCBpMjogbnVtYmVyKSA9PiBudW1iZXJ9IGRpc3QgYSBmdW5jdGlvbiB3aGljaCBjYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gb2JqZWN0cyB1c2luZyB0aGVpciBpbmRleGVzXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIG5vcm1hbGl6ZWQgdmVjdG9yXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gZGF0YSBudW1lcmljYWwgYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShkYXRhKSB7XG4gICAgbGV0IG1lYW4gPSAwO1xuICAgIGxldCBzdGQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgbWVhbiArPSBkYXRhW2ldO1xuICAgIG1lYW4gLz0gZGF0YS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBzdGQgKz0gKGRhdGFbaV0gLSBtZWFuKSAqIChkYXRhW2ldIC0gbWVhbik7XG4gICAgc3RkID0gTWF0aC5zcXJ0KHN0ZCAvIGRhdGEubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIGRhdGFbaV0gPSAoZGF0YVtpXSAtIG1lYW4pIC8gc3RkO1xuICAgIHJldHVybiBkYXRhO1xufVxuLyoqXG4gKiBGaW5kcyBzZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBsaXN0cy5cbiAqIEBwYXJhbSB7YW55W119IGEgVGhlIGZpcnN0IGxpc3QuXG4gKiBAcGFyYW0ge2FueVtdfSBiIFRoZSBzZWNvbmQgbGlzdC5cbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGlmZmVyZW5jZShhLCBiKSB7XG4gICAgY29uc3QgYlNldCA9IG5ldyBTZXQoYik7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhLmZpbHRlcigoeCkgPT4gIWJTZXQuaGFzKHgpKSkudmFsdWVzKCkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1WamRHOXlMVzl3WlhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjJaV04wYjNJdGIzQmxjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVZNc1RVRkJUU3hGUVVGMVF5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJRM3BHTEU5QlFVOHNSVUZCUXl4WFFVRlhMRVZCUVVVc1UwRkJVeXhGUVVGRExFMUJRVTBzVlVGQlZTeERRVUZETzBGQlJXaEVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNUVUZCVFN4RFFVRkRMRmxCUVhGQ0xFdEJRVXNzUlVGQlJTeFZRVUZyUWl4clFrRkJhMEk3U1VGRGNrWXNTVUZCU1N4RFFVRkRMRk5CUVZNN1VVRkRXaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUXpkQ0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxGTkJRVk1zWlVGQlpTeERRVUZETEZWQlFXdENMRVZCUVVVc1ZVRkJhMElzUlVGQlJTeFBRVUZsTEVOQlFVTTdTVUZETDBVc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU42Uml4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4bFFVRmxMRU5CUVVNc1RVRkJZenRKUVVNMVF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRM1pETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzUkdMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hUUVVGVExFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTXNSVUZCUlN4aFFVRnhRaXhEUVVGRE8wbEJRM0JGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmVFSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTERoQ1FVRTRRaXhEUVVGRExFTkJRVU03U1VGRk0wUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYWtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBReXhQUVVGUExFdEJRVXNzUTBGQlF6dEJRVU5tTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRk5CUVZNc1VVRkJVU3hEUVVGRExFTkJRVk03U1VGRGVrSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSV1FzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZhRUlzVDBGQlR5eExRVUZMTEVOQlFVTTdRVUZEWml4RFFVRkRPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hUUVVGVExGbEJRVmtzUTBGQlF5eERRVUZUTzBsQlF6ZENMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEZUVJc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlhwQ0xFOUJRVThzUzBGQlN5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3haUVVGWkxFTkJRVU1zUTBGQlV6dEpRVU53UXl4SlFVRkpMRTFCUVUwc1IwRkJWeXhEUVVGRExFTkJRVU03U1VGRGRrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJWeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM1pETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRlZPMGxCUTNKRUxFbEJRVWtzUlVGQlJTeERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUVHRSUVVONFFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRGhEUVVFNFF5eERRVUZETEVOQlFVTTdTVUZEYkVVc1NVRkJTU3hKUVVGSkxFZEJRVmNzUTBGQlF5eERRVUZETzBsQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU40UXl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmtMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4VlFVRnJRaXhGUVVGRkxGVkJRV3RDTEVWQlFVVXNVVUZCWjBJc1JVRkJSVHRKUVVONlJpeE5RVUZOTEUxQlFVMHNSMEZCUnl4bFFVRmxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzBsQlJYWkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGJrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNN1dVRkRha01zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTnlRenRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMREJDUVVFd1FpeERRVUZETEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUXpkRUxFMUJRVTBzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYWtNc1RVRkJUU3hOUVVGTkxFZEJRVWNzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUTJ4RExFMUJRVTBzVlVGQlZTeEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOd1F5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zU1VGQllTeEZRVUZGTEZGQlFYZENPMGxCUTNoRkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYkVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU12UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU51UXl4TlFVRk5MRU5CUVVNc1IwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRekZHTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEycERPMHRCUTBZN1NVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRc2EwWkJRV3RHTzBGQlEyeEdMRTFCUVUwc1ZVRkJWU3hSUVVGUkxFTkJRVU1zUzBGQllTeEZRVUZGTEVkQlFWY3NSVUZCUlN4WlFVRlpMRWRCUVVjc1MwRkJTenRKUVVOMlJTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzQkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUlhSRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF6ZENMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUlhoQ0xFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRTlCUVU4c1EwRkJReXhOUVVGaExFVkJRVVVzVDBGQlR5eEhRVUZITEV0QlFVczdTVUZEY0VRc1RVRkJUU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVZFc1JVRkJSU3hEUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pITEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJUU3hGUVVGRkxFTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHhRa0ZCY1VJN1NVRkRiRVVzVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRzFDUVVGdFFqdEpRVU4yUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhEUVVGRExFZEJRVlVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlF6RkZMRTlCUVU4c1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlF6RkNMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEUxQlFXTXNSVUZCUlN4RFFVRlRMRVZCUVVVc1NVRkJkME03U1VGRGJFY3NVMEZCVXl4TFFVRkxMRU5CUVVNc1RVRkJaME1zUlVGQlJTeFBRVUU0UWp0UlFVTTNSU3hKUVVGSkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEY0VJc1NVRkJTU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlJYUkNMRXRCUVVzc1RVRkJUU3hQUVVGUExFbEJRVWtzVFVGQlRTeEZRVUZGTzFsQlF6VkNMRTFCUVUwc1kwRkJZeXhIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVTjRReXhKUVVGSkxGVkJRVlVzU1VGQlNTeEpRVUZKTEVsQlFVa3NZMEZCWXl4SFFVRkhMRlZCUVZVc1JVRkJSVHRuUWtGRGNrUXNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJRenRuUWtGRGJrSXNWVUZCVlN4SFFVRkhMR05CUVdNc1EwRkJRenRoUVVNM1FqdFRRVU5HTzFGQlEwUXNUMEZCVHl4UlFVRlJMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVVZFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNaRExFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkZOMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja0lzVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOeVFqdEpRVVZFTEU5QlFVOHNUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3VVVGRGVFSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVObUxGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFUaENMRVZCUXk5RExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVExFZEJRVWNzUlVGQlJTeExRVUZMTzFsQlEzaEVMRTlCUVU4c1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEVUN4SlFVRkpMRWRCUVVjc1JVRkJSVHRaUVVOUUxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRha0lzVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVONFFqdExRVU5HTzBsQlEwUXNUMEZCVHl4TlFVRk5MRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFT3pzN1IwRkhSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTVUZCV1R0SlFVTndReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEWWl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRldpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRiRU1zU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWc1FpeEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVWd1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRiRU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlJUZERMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmJrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03U1VGRmJrTXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNZVUZCWVN4RFFVRkRMRU5CUVZFc1JVRkJSU3hEUVVGUk8wbEJRemxETEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzaENMRTlCUVU4c1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGNrVXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1RXRjBjbWw0TENCV1pXTjBiM0lzSUVOdmIzSmthVzVoZEdWekxDQldaV04wYjNKekxDQkVhWE4wWVc1alpVMWxkSEpwWTMwZ1puSnZiU0FuTGk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2UzSmhibVJ2YlVac2IyRjBMQ0J5WVc1a2IyMUpiblI5SUdaeWIyMGdKeTR2Y21GdVpHOXRKenRjYmx4dUx5b3FYRzRnS2lCQmMzTmxjblJ6SUdFZ1kyOXVaR2wwYVc5dUlHSjVJSFJvY205M2FXNW5JR0Z1SUVWeWNtOXlMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzJOdmJtUnBkR2x2YmoxbVlXeHpaVjBnUTI5dVpHbDBhVzl1SUhSdklHRnpjMlZ5ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJiV1Z6YzJGblpUMG5RWE56WlhKMGFXOXVJR1Z5Y205eUxpZGRJRTFsYzNOaFoyVWdkRzhnYjNWMGNIVjBMbHh1SUNvZ1FIUm9jbTkzY3lCN1JYSnliM0o5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmhjM05sY25Rb1kyOXVaR2wwYVc5dU9pQmliMjlzWldGdUlEMGdabUZzYzJVc0lHMWxjM05oWjJVNklITjBjbWx1WnlBOUlDZEJjM05sY25ScGIyNGdaWEp5YjNJdUp5a2dlMXh1SUNCcFppQW9JV052Ym1ScGRHbHZiaWxjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb2JXVnpjMkZuWlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJ1WlhjZ2RIZHZMV1JwYldWdWMybHZibUZzSUdGeWNtRjVJR0Z1WkNCbWFXeHNjeUJwZENCM2FYUm9JSFJvWlNCMllXeDFaU0JuYVhabGJpNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUFvYm5WdFltVnlJRzltSUhKdmQzTXBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdScGJXVnVjMmx2YmpJZ1ZHaGxJSE5sWTI5dVpDQmthVzFsYm5OcGIyNGdiMllnZEdobElHTnZiM0prYVc1aGRHVnpJQ2h1ZFcxaVpYSWdiMllnWTI5c2RXMXVjeWt1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1cyWnBiR3c5TUYwZ1FTQjJZV3gxWlNCMGJ5Qm1hV3hzSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUIzYVhSb0xseHVJQ29nUUhKbGRIVnliaUI3UTI5dmNtUnBibUYwWlhOOUlFRWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lHWnBiR3hsWkNCM2FYUm9JSFJvWlNCMllXeDFaU0JuYVhabGJpNWNiaUFxSUVCMGIyUnZJRTFwWjJoMElHSmxJSE5zYjNjZ2MybHVZMlVnZFhObFpDQkJjbkpoZVM1dFlYQXVJRkJ5YjJKaFlteDVJRzVsWldSeklIQmxjbVp2Y20xaGJtTmxJSEpsZG1semFXOXVMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnBibWwwUTI5dmNtUnBibUYwWlhNb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJR1pwYkd3NklHNTFiV0psY2lBOUlEQXBPaUJEYjI5eVpHbHVZWFJsY3lCN1hHNGdJSEpsZEhWeWJpQnVaWGNnUVhKeVlYa29aR2x0Wlc1emFXOXVNU2t1Wm1sc2JDaG1hV3hzS1M1dFlYQW9LQ2tnUFQ0Z0tHNWxkeUJXWldOMGIzSW9aR2x0Wlc1emFXOXVNaWt1Wm1sc2JDaG1hV3hzS1NrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZSeVlXNXpjRzl6WlNCdFlYUnlhWGd1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0TllYUnlhWGg5SUcxaGRISnBlQ0JVYUdVZ2JXRjBjbWw0SUhSdklHSmxJSFJ5WVc1emNHOXpaV1F1WEc0Z0tpQkFjbVYwZFhKdUlIdE5ZWFJ5YVhoOUlGUnlZVzV6Y0c5elpXUWdiV0YwY21sNExseHVJQ29nUUhSdlpHOGdUV2xuYUhRZ1ltVWdjMnh2ZHlCemFXNWpaU0IxYzJWa0lFRnljbUY1TG0xaGNDNGdVSEp2WW1GaWJIa2dibVZsWkhNZ2NHVnlabTl5YldGdVkyVWdjbVYyYVhOcGIyNHVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMGNtRnVjM0J2YzJWTllYUnlhWGdvYldGMGNtbDRPaUJOWVhSeWFYZ3BPaUJOWVhSeWFYZ2dlMXh1SUNCeVpYUjFjbTRnYm1WM0lFRnljbUY1S0cxaGRISnBlRnN3WFM1c1pXNW5kR2dwTG1acGJHd29NQ2xjYmlBZ0lDQXViV0Z3S0NoZkxDQnBLU0E5UGlBb2JtVjNJRlpsWTNSdmNpaHRZWFJ5YVhndWJHVnVaM1JvS1M1bWFXeHNLREFwTG0xaGNDZ29YeXdnYWlrZ1BUNGdLRzFoZEhKcGVGdHFYVnRwWFNrcEtTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FXUmtjeUIwZDI4Z2RtVmpkRzl5Y3lCM2FYUm9JSFJvWlNCelpXTnZibVFnYjI1bElIUnZJR0psSUcxMWJIUnBjR3hwWldRZ1lua2dkR2hsSUdkcGRtVnVJSEpoZEdsdkxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQndJRlJvWlNCbWFYSnpkQ0IyWldOMGIzSWdkRzhnWVdSa0xseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSEVnVkdobElITmxZMjl1WkNCMlpXTjBiM0lnZEc4Z1lXUmtMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0dGRXeDBhWEJzYVdWeVBURmRJRUVnYlhWc2RHbHdiR2xsY2lCMGJ5QmlaU0IxYzJWa0lHSmxabTl5WlNCMGFHVWdjMlZqYjI1a0lIWmxZM1J2Y2lCcGN5QmhaR1JsWkM1Y2JpQXFJRUJ5WlhSMWNtNGdlMVpsWTNSdmNuMGdUbVYzSUhabFkzUnZjaUJqYjI1MFlXbHVaV1FnZEdobElISmxjM1ZzZENCdlppQnZjR1Z5WVhScGIyNGdjQ3R0ZFd4MGFYQnNhV1Z5S25FdVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSkJaR1FvY0RvZ1ZtVmpkRzl5TENCeE9pQldaV04wYjNJc0lHMTFiSFJwY0d4cFpYSTZJRzUxYldKbGNpQTlJREVwT2lCV1pXTjBiM0lnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCd0xteGxibWQwYUR0Y2JseHVJQ0JoYzNObGNuUW9ia2wwWlcxeklEMDlJSEV1YkdWdVozUm9MQ0FuVm1WamRHOXlJR3hsYm1kMGFITWdaRzhnYm05MElHMWhkR05vTGljcE8xeHVYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdibVYzSUZabFkzUnZjaWh1U1hSbGJYTXBPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2djQzVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0IwYjNSaGJGdHBYU0E5SUhCYmFWMGdLeUJ0ZFd4MGFYQnNhV1Z5SUNvZ2NWdHBYVHRjYmx4dUlDQnlaWFIxY200Z2RHOTBZV3c3WEc1OVhHNWNiaThxS2x4dUlDb2dVM1Z0Y3lCMGFHVWdkbVZqZEc5eUozTWdhWFJsYlhNdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhZZ1ZHaGxJSFpsWTNSdmNpQjBieUJpWlNCemRXMXRaV1F1WEc0Z0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlGUm9aU0IyWldOMGIzSW5jeUJwZEdWdGN5QnpkVzB1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2wwWlcxelUzVnRLSFk2SUZabFkzUnZjaWs2SUc1MWJXSmxjaUI3WEc0Z0lHeGxkQ0IwYjNSaGJDQTlJREE3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IyTG14bGJtZDBhRHNnS3l0cEtWeHVJQ0FnSUhSdmRHRnNJQ3M5SUhaYmFWMDdYRzVjYmlBZ2NtVjBkWEp1SUhSdmRHRnNPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTjFjV0Z5WlhNZ2RHaGxJSFpsWTNSdmNpZHpJR2wwWlcxekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCMklGUm9aU0IyWldOMGIzSWdkRzhnYzNGMVlYSmxMbHh1SUNvZ1FISmxkSFZ5YmlCN1ZtVmpkRzl5ZlNCQklHNWxkeUIyWldOMGIzSWdZMjl1ZEdGcGJtbHVaeUIwYUdVZ2IzSnBaMmx1WVd3bmN5QnBkR1Z0Y3lCemNYVmhjbVZrTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUIyWldOMGIzSlRjWFZoY21Vb2Rqb2dWbVZqZEc5eUtUb2dWbVZqZEc5eUlIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdkaTVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdibVYzSUZabFkzUnZjaWh1U1hSbGJYTXBPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkaTVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0IwYjNSaGJGdHBYU0E5SUhaYmFWMGdLaUIyVzJsZE8xeHVYRzRnSUhKbGRIVnliaUIwYjNSaGJEdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhabFkzUnZja3hsYm1kMGFDaDJPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCc1pYUWdjM0Z5VTNWdE9pQnVkVzFpWlhJZ1BTQXdPMXh1SUNCbWIzSWdLR3hsZENCcE9pQnVkVzFpWlhJZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lHa3JLeWxjYmlBZ0lDQnpjWEpUZFcwZ0t6MGdkbHRwWFNBcUlIWmJhVjA3WEc0Z0lISmxkSFZ5YmlCTllYUm9Mbk54Y25Rb2MzRnlVM1Z0S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFpsWTNSdmNrUnZkRkJ5YjJSMVkzUW9kakU2SUZabFkzUnZjaXdnZGpJNklGWmxZM1J2Y2lrNklHNTFiV0psY2lCN1hHNGdJR2xtSUNoMk1TNXNaVzVuZEdnZ0lUMGdkakl1YkdWdVozUm9LVnh1SUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblZHaGxJR1JwYldWdWMybHZibUZzYVhSNUlHOW1JSFJvWlNCMlpXTjBiM0p6SUcxMWMzUWdiV0YwWTJnbktUdGNiaUFnYkdWMElIQnliMlE2SUc1MWJXSmxjaUE5SURBN1hHNGdJR1p2Y2lBb2JHVjBJR2s2SUc1MWJXSmxjaUE5SURBN0lHa2dQQ0IyTVM1c1pXNW5kR2c3SUdrckt5bGNiaUFnSUNCd2NtOWtJQ3M5SUhZeFcybGRJQ29nZGpKYmFWMDdYRzRnSUhKbGRIVnliaUJ3Y205a08xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nWVNCdFlYUnlhWGdnWm1sc2JHVmtJSGRwZEdnZ2NtRnVaRzl0SUdac2IyRjBhVzVuSUhCdmFXNTBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNU0JVYUdVZ1ptbHljM1FnWkdsdFpXNXphVzl1SUc5bUlIUm9aU0J0WVhSeWFYZ3VYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TWlCVWFHVWdjMlZqYjI1a0lHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ2JXRjBjbWw0TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHpZMkZzWlQweExsMGdUV0Y0SUhaaGJIVmxJR2RwZG1WdUlHSjVJSEpoYm1SdmJTQm5aVzVsY21GMGIzSXVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUVFZ2JtVjNJRzFoZEhKcGVDQm1hV3hzWldRZ2QybDBhQ0J5WVc1a2IyMGdabXh2WVhScGJtY2djRzlwYm5RZ0lIWmhiSFZsY3k1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1pwYkd4U1lXNWtiMjFOWVhSeWFYZ29aR2x0Wlc1emFXOXVNVG9nYm5WdFltVnlMQ0JrYVcxbGJuTnBiMjR5T2lCdWRXMWlaWElzSUhOallXeGxPaUJ1ZFcxaVpYSWdQU0F4TGlrNklFMWhkSEpwZUNCN1hHNGdJR052Ym5OMElHMWhkSEpwZUNBOUlHbHVhWFJEYjI5eVpHbHVZWFJsY3loa2FXMWxibk5wYjI0eExDQmthVzFsYm5OcGIyNHlLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JwYldWdWMybHZiakU3SUNzcmFTa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2daR2x0Wlc1emFXOXVNanNnS3l0cUtWeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnY21GdVpHOXRSbXh2WVhRb2MyTmhiR1VwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ0WVhSeWFYZzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyRnNZM1ZzWVhSbGN5QkZkV05zYVdSbFlXNGdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQjBkMjhnZG1WamRHOXljeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnY0NCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIRWdWR2hsSUhObFkyOXVaQ0IyWldOMGIzSXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUVWMVkyeHBaR1ZoYmlCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1SUhSb1pTQm5hWFpsYmlCMlpXTjBiM0p6TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jRG9nVm1WamRHOXlMQ0J4T2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCa2FXWm1JRDBnZG1WamRHOXlRV1JrS0hBc0lIRXNJQzB4S1R0Y2JpQWdZMjl1YzNRZ2MzRmthV1ptSUQwZ2RtVmpkRzl5VTNGMVlYSmxLR1JwWm1ZcE8xeHVJQ0JqYjI1emRDQnpjV1JwWm1aVGRXMXRJRDBnYVhSbGJYTlRkVzBvYzNGa2FXWm1LVHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VjM0Z5ZENoemNXUnBabVpUZFcxdEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhWemFXNW5JR0VnWTNWemRHOXRJR1JwYzNSaGJtTmxJR1oxYm1OMGFXOXVMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnWkdGMFlTQkpibkIxZENCMlpXTjBiM0p6SUhSdklHTmhiR04xYkdGMFpTQmthWE4wWVc1alpYTXVYRzRnS2lCQWNHRnlZVzBnZTBScGMzUmhibU5sVFdWMGNtbGpmU0JrYVhOMFlXNWpaU0JEZFhOMGIyMGdaR2x6ZEdGdVkyVWdablZ1WTNScGIyNHVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUVOaGJHTjFiR0YwWldRZ1kzVnpkRzl0SUdScGMzUmhibU5sSUcxaGRISnBlQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTmhiR05FYVhOMFlXNWpaVTFoZEhKcGVDaGtZWFJoT2lCV1pXTjBiM0p6TENCa2FYTjBZVzVqWlRvZ1JHbHpkR0Z1WTJWTlpYUnlhV01wT2lCTllYUnlhWGdnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCa1lYUmhMbXhsYm1kMGFEdGNiaUFnWTI5dWMzUWdiV0YwY21sNElEMGdhVzVwZEVOdmIzSmthVzVoZEdWektHNUpkR1Z0Y3l3Z2JrbDBaVzF6TENBd0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNUpkR1Z0Y3pzZ0t5dHBLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SUdrZ0t5QXhPeUJxSUR3Z2JrbDBaVzF6T3lBcksyb3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHUTZJRzUxYldKbGNpQTlJQ2hrWVhSaFcybGRJRDA5SUc1MWJHd3BJSHg4SUNoa1lYUmhXMnBkSUQwOUlHNTFiR3dwSUQ4Z01DQTZJR1JwYzNSaGJtTmxLR1JoZEdGYmFWMHNJR1JoZEdGYmFsMHBPMXh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2JXRjBjbWw0VzJwZFcybGRJRDBnWkR0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzFoZEhKcGVEdGNibjFjYmx4dUx5b3FJRWRsYm1WeVlYUmxjeUJoY25KaGVTQm1jbTl0SUdFZ2NtRnVaMlVnVzJKbFoybHVPeUJsYm1SZElHOXlJRnRpWldkcGJqc2daVzVrS1NCcFppQmxibVJGZUdOc2RYTnBkbVV1SUNvcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxibEpoYm1kbEtHSmxaMmx1T2lCdWRXMWlaWElzSUdWdVpEb2diblZ0WW1WeUxDQmxibVJGZUdOc2RYTnBkbVVnUFNCbVlXeHpaU2s2SUVsdWRETXlRWEp5WVhrZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmxibVFnTFNCaVpXZHBiaUFySUNobGJtUkZlR05zZFhOcGRtVWdQeUF3SURvZ01TazdYRzRnSUdOdmJuTjBJSE5sY21sbGN5QTlJRzVsZHlCSmJuUXpNa0Z5Y21GNUtHNUpkR1Z0Y3lrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVNYUmxiWE03SUNzcmFTbGNiaUFnSUNCelpYSnBaWE5iYVYwZ1BTQmlaV2RwYmlBcklHazdYRzVjYmlBZ2NtVjBkWEp1SUhObGNtbGxjenRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHOXlaR1Z5SUc5bUlIWmhiSFZsY3lCaGN5QnBaaUIwYUdWNUlHRnlaU0J6YjNKMFpXUXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdkbUZzZFdWeklFbHVjSFYwSUdGeWNtRjVMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmNtVjJaWEp6WlQxbVlXeHpaVjBnVjJobGRHaGxjaUIwYnlCeVpYUjFjbTRnY21WMlpYSnpaV1FnYjNKa1pYSXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEpiWFgwZ1ZHaGxJRzl5WkdWeUlHTnZiWEIxZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhKblUyOXlkQ2gyWVd4MVpYTTZJR0Z1ZVZ0ZExDQnlaWFpsY25ObElEMGdabUZzYzJVcE9pQnVkVzFpWlhKYlhTQjdYRzRnSUdOdmJuTjBJSE52Y25SbWJpQTlJSEpsZG1WeWMyVWdQeUFvWVRvZ1lXNTVXMTBzSUdJNklHRnVlVnRkS1NBOVBpQW9ZbHN3WFNBdElHRmJNRjBwSURvZ0tHRTZJR0Z1ZVZ0ZExDQmlPaUJoYm5sYlhTa2dQVDRnS0dGYk1GMGdMU0JpV3pCZEtUdGNiaUFnWTI5dWMzUWdaR1ZqYjNJZ1BTQW9kam9nWVc1NUxDQnBPaUJ1ZFcxaVpYSXBJRDArSUZ0MkxDQnBYVHNnTHk4Z2MyVjBJR2x1WkdWNElIUnZJSFpoYkhWbFhHNGdJR052Ym5OMElIVnVaR1ZqYjNJZ1BTQW9ZVG9nWVc1NVcxMHBJRDArSUdGYk1WMDdJQzh2SUd4bFlYWmxJRzl1YkhrZ2FXNWtaWGhjYmlBZ1kyOXVjM1FnWDJGeVozTnZjblFnUFNBb1lYSnlPaUJoYm5sYlhTa2dQVDRnWVhKeUxtMWhjQ2hrWldOdmNpa3VjMjl5ZENoemIzSjBabTRwTG0xaGNDaDFibVJsWTI5eUtUdGNiaUFnY21WMGRYSnVJRjloY21kemIzSjBLSFpoYkhWbGN5azdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdhVzVrWlhobGN5QnZaaUIwYUdVZ2JXOXpkQ0JrYVhabGNuTmxJRzlpYW1WamRITWdZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQmthWE4wSUdaMWJtTjBhVzl1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2JHVnVaM1JvSUhSdmRHRnNJRzUxYldKbGNpQnZaaUJ2WW1wbFkzUnpYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYmlCdWRXMWlaWElnYjJZZ1pHbDJaWEp6WlNCbGJHVnRaVzUwY3lCMGJ5Qm1hVzVrWEc0Z0tpQkFjR0Z5WVcwZ2V5aHBNVG9nYm5WdFltVnlMQ0JwTWpvZ2JuVnRZbVZ5S1NBOVBpQnVkVzFpWlhKOUlHUnBjM1FnWVNCbWRXNWpkR2x2YmlCM2FHbGphQ0JqWVd4amRXeGhkR1Z6SUdScGMzUmhibU5sSUdKbGRIZGxaVzVjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwZDI4Z2IySnFaV04wY3lCMWMybHVaeUIwYUdWcGNpQnBibVJsZUdWelhHNGdLaUJBY21WMGRYSnVjeUI3Ym5WdFltVnlXMTE5SUZSb1pTQnBibVJsZUdWeklHOW1JSFJvWlNCdGIzTjBJR1JwZG1WeWMyVWdiMkpxWldOMGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFJHbDJaWEp6WlZOMVluTmxkQ2hzWlc1bmRHZzZJRzUxYldKbGNpd2diam9nYm5WdFltVnlMQ0JrYVhOME9pQW9hVEU2SUc1MWJXSmxjaXdnYVRJNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUtUb2diblZ0WW1WeVcxMGdlMXh1SUNCbWRXNWpkR2x2YmlCdFlYaENlU2gyWVd4MVpYTTZJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpd2diM0prWlhKQ2VUb2dLR2s2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJQ0FnYkdWMElHMWhlRlpoYkhWbElEMGdiblZzYkR0Y2JpQWdJQ0JzWlhRZ2JXRjRUM0prWlhKQ2VTQTlJRzUxYkd3N1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElHVnNaVzFsYm5RZ2IyWWdkbUZzZFdWektTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCbGJHVnRaVzUwVDNKa1pYSkNlU0E5SUc5eVpHVnlRbmtvWld4bGJXVnVkQ2s3WEc0Z0lDQWdJQ0JwWmlBb2JXRjRUM0prWlhKQ2VTQTlQU0J1ZFd4c0lIeDhJR1ZzWlcxbGJuUlBjbVJsY2tKNUlENGdiV0Y0VDNKa1pYSkNlU2tnZTF4dUlDQWdJQ0FnSUNCdFlYaFdZV3gxWlNBOUlHVnNaVzFsYm5RN1hHNGdJQ0FnSUNBZ0lHMWhlRTl5WkdWeVFua2dQU0JsYkdWdFpXNTBUM0prWlhKQ2VUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzFoZUZaaGJIVmxPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjM1ZpYzJWMElEMGdXM0poYm1SdmJVbHVkQ2hzWlc1bmRHZ2dMU0F4S1YwN1hHNGdJR052Ym5OMElHTnZiWEJzWlcxbGJuUWdQU0J1WlhjZ1UyVjBLQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUdsbUlDZ2hjM1ZpYzJWMExtbHVZMngxWkdWektHa3BLVnh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVoWkdRb2FTazdYRzRnSUgxY2JseHVJQ0IzYUdsc1pTQW9jM1ZpYzJWMExteGxibWQwYUNBOElHNHBJSHRjYmlBZ0lDQmpiMjV6ZENCcFpIZ2dQU0J0WVhoQ2VTaGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVkbUZzZFdWektDa2dZWE1nU1hSbGNtRmliR1ZKZEdWeVlYUnZjanh1ZFcxaVpYSStMRnh1SUNBZ0lDQWdLR2twSUQwK0lFMWhkR2d1YldsdUxtRndjR3g1S0UxaGRHZ3NJSE4xWW5ObGRDNXRZWEFvWm5WdVkzUnBiMjRvZG1Gc0xDQnBibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbHpkQ2hwTENCMllXd3BPMXh1SUNBZ0lDQWdmU2twS1R0Y2JpQWdJQ0JwWmlBb2FXUjRLU0I3WEc0Z0lDQWdJQ0J6ZFdKelpYUXVjSFZ6YUNocFpIZ3BPMXh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVrWld4bGRHVW9hV1I0S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJSE4xWW5ObGREdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc1dmNtMWhiR2w2WldRZ2RtVmpkRzl5WEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ1pHRjBZU0J1ZFcxbGNtbGpZV3dnWVhKeVlYbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUc1dmNtMWhiR2w2WlNoa1lYUmhPaUJXWldOMGIzSXBPaUJXWldOMGIzSWdlMXh1SUNCc1pYUWdiV1ZoYmlBOUlEQTdYRzRnSUd4bGRDQnpkR1FnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pHRjBZUzVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0J0WldGdUlDczlJR1JoZEdGYmFWMDdYRzVjYmlBZ2JXVmhiaUF2UFNCa1lYUmhMbXhsYm1kMGFEdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUmhkR0V1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnYzNSa0lDczlJQ2hrWVhSaFcybGRJQzBnYldWaGJpa2dLaUFvWkdGMFlWdHBYU0F0SUcxbFlXNHBPMXh1WEc0Z0lITjBaQ0E5SUUxaGRHZ3VjM0Z5ZENoemRHUWdMeUJrWVhSaExteGxibWQwYUNrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJR1JoZEdGYmFWMGdQU0FvWkdGMFlWdHBYU0F0SUcxbFlXNHBJQzhnYzNSa08xeHVYRzRnSUhKbGRIVnliaUJrWVhSaE8xeHVmVnh1WEc0dktpcGNiaUFxSUVacGJtUnpJSE5sZENCa2FXWm1aWEpsYm1ObElHSmxkSGRsWlc0Z2RIZHZJR3hwYzNSekxseHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdZU0JVYUdVZ1ptbHljM1FnYkdsemRDNWNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJR0lnVkdobElITmxZMjl1WkNCc2FYTjBMbHh1SUNvZ1FISmxkSFZ5YmlCN1lXNTVXMTE5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpaWFJFYVdabVpYSmxibU5sS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrNklHRnVlVnRkSUh0Y2JpQWdZMjl1YzNRZ1lsTmxkQ0E5SUc1bGR5QlRaWFFvWWlrN1hHNGdJSEpsZEhWeWJpQkJjbkpoZVM1bWNtOXRLRzVsZHlCVFpYUW9ZUzVtYVd4MFpYSW9LSGdwSUQwK0lDRmlVMlYwTG1oaGN5aDRLU2twTG5aaGJIVmxjeWdwS1R0Y2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IExlc2soKSB7XG4gICAgICAgIGlmICh0aGlzLmxlc2sgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5sZXNrID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgICAgICAgICAgW1snRycsICdBJywgJ1MnLCAnVCddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICAgICAgW1snQycsICdWJywgJ0knLCAnTCcsICdQJywgJ0YnLCAnWScsICdNJywgJ1cnXSwgJ2FsbF9ncmVlbiddLFxuICAgICAgICAgICAgICAgIFtbJ04nLCAnUScsICdIJ10sICdtYWdlbnRhJ10sXG4gICAgICAgICAgICAgICAgW1snRCcsICdFJ10sICdyZWQnXSxcbiAgICAgICAgICAgICAgICBbWydLJywgJ1InXSwgJ2FsbF9ibHVlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sZXNrO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IEdyb2tHcm91cHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmdyb2tHcm91cHMgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5ncm9rR3JvdXBzID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgICAgICAgICAgW1snQycsICdVJ10sICd5ZWxsb3cnXSxcbiAgICAgICAgICAgICAgICBbWydHJywgJ1AnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0EnLCAnVicsICdJJywgJ0wnLCAnTScsICdGJywgJ1knLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snUicsICdIJywgJ0snXSwgJ2xpZ2h0X2JsdWUnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ2RhcmtfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ1MnLCAnVCcsICdOJywgJ1EnXSwgJ29yYW5nZSddLFxuICAgICAgICAgICAgXSwgZmFsc2UsIEFtaW5vYWNpZHNQYWxldHRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Jva0dyb3VwcztcbiAgICB9XG4gICAgc3RhdGljIGdldCBSYXNNb2woKSB7XG4gICAgICAgIGlmICh0aGlzLnJhc01vbCA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLnJhc01vbCA9IG5ldyBBbWlub2FjaWRzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9hY2Nlcy5lbnMtbHlvbi5mci9iaW90aWMvcmFzdG9wL2hlbHAvY29sb3VyLmh0bVxuICAgICAgICAgICAgICAgICdEJzogJyNFNjBBMEEnLFxuICAgICAgICAgICAgICAgICdFJzogJyNFNjBBMEEnLFxuICAgICAgICAgICAgICAgICdDJzogJyNFNkU2MDAnLFxuICAgICAgICAgICAgICAgICdNJzogJyNFNkU2MDAnLFxuICAgICAgICAgICAgICAgICdLJzogJyMxNDVBRkYnLFxuICAgICAgICAgICAgICAgICdSJzogJyMxNDVBRkYnLFxuICAgICAgICAgICAgICAgICdTJzogJyNGQTk2MDAnLFxuICAgICAgICAgICAgICAgICdUJzogJyNGQTk2MDAnLFxuICAgICAgICAgICAgICAgICdGJzogJyMzMjMyQUEnLFxuICAgICAgICAgICAgICAgICdZJzogJyMzMjMyQUEnLFxuICAgICAgICAgICAgICAgICdOJzogJyMwMERDREMnLFxuICAgICAgICAgICAgICAgICdRJzogJyMwMERDREMnLFxuICAgICAgICAgICAgICAgICdHJzogJyNFQkVCRUInLFxuICAgICAgICAgICAgICAgICdMJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdWJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdJJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdBJzogJyNDOEM4QzgnLFxuICAgICAgICAgICAgICAgICdXJzogJyNCNDVBQjQnLFxuICAgICAgICAgICAgICAgICdIJzogJyM4MjgyRDInLFxuICAgICAgICAgICAgICAgICdQJzogJyNEQzk2ODInLFxuICAgICAgICAgICAgICAgICdvdGhlcnMnOiAnI0JFQTA2RScsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yYXNNb2w7XG4gICAgfVxuICAgIGdldChtKSB7XG4gICAgICAgIGNvbnN0IHJlc00gPSBtIGluIEFtaW5vYWNpZHNQYWxldHRlcy5hYVN5bm9ueW1zID8gQW1pbm9hY2lkc1BhbGV0dGVzLmFhU3lub255bXNbbV0gOiBtO1xuICAgICAgICBjb25zdCByZXMgPSBzdXBlci5nZXQocmVzTSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufVxuLyoqIE9ubHkgc29tZSBvZiB0aGUgc3lub255bXMuIFRoZXNlIHdlcmUgb2J0YWluZWQgZnJvbSB0aGUgY2x1c3RlcmVkIG9saWdvcGVwdGlkZSBkYXRhc2V0LiAqL1xuQW1pbm9hY2lkc1BhbGV0dGVzLmFhU3lub255bXMgPSB7XG4gICAgJ01lTmxlJzogJ0wnLFxuICAgICdNZUEnOiAnQScsXG4gICAgJ01lRyc6ICdHJyxcbiAgICAnTWVGJzogJ0YnLFxufTtcbmV4cG9ydCBjbGFzcyBBbWlub2FjaWRzIHtcbiAgICBzdGF0aWMgZ2V0UGFsZXR0ZShzY2hlbWUgPSAnZ3JvaycpIHtcbiAgICAgICAgc3dpdGNoIChzY2hlbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2dyb2snOlxuICAgICAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgICAgIGNhc2UgJ2xlc2snOlxuICAgICAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuTGVzaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaGVtUGFsZXR0ZTogc2NoZW1lIFxcYCR7c2NoZW1lfVxcYCBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGl2aWRlZCBhbWlubyBhY2lkIHdpdGggaXRzIGNvbnRlbnQgaW4gdGhlIGJyYWNrZXQsIGlmIHRoZSBjb250ZW50IGlzIG51bWJlciwgdGhlbiBpdHMgb21pdHRlZFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGMgcmF3IGFtaW5vXG4gICAgICogQHJldHVybiB7W3N0cmluZywgc3RyaW5nXX0gb3V0ZXIgYW5kIGlubmVyIGNvbnRlbnRcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0SW5uZXJPdXRlcihjKSB7XG4gICAgICAgIGxldCBpc0lubmVyID0gMDtcbiAgICAgICAgbGV0IGlubmVyID0gJyc7XG4gICAgICAgIGxldCBvdXRlciA9ICcnO1xuICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgYykge1xuICAgICAgICAgICAgaWYgKGNoYXIgPT0gJygnKVxuICAgICAgICAgICAgICAgIGlzSW5uZXIrKztcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT0gJyknKVxuICAgICAgICAgICAgICAgIGlzSW5uZXItLTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5uZXIpXG4gICAgICAgICAgICAgICAgaW5uZXIgKz0gY2hhcjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdXRlciArPSBjaGFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VJbnQoaW5uZXIpKSA/IFtvdXRlciwgJyddIDogW291dGVyLCBpbm5lcl07XG4gICAgfVxuICAgIHN0YXRpYyBnZXRDb2xvckFBUGl2b3QobW9ub21lciA9ICcnLCBzY2hlbWUgPSAnZ3JvaycpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIC8vY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IEFBUGFsZXR0ZXMuR3Jva0dyb3VwcygpO1xuICAgICAgICBjb25zdCBjaGVtUGFsZXR0ZUluc3RhbmNlID0gdGhpcy5nZXRQYWxldHRlKHNjaGVtZSk7XG4gICAgICAgIGxldCBbb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXJdID0gdGhpcy5nZXRJbm5lck91dGVyKG1vbm9tZXIpO1xuICAgICAgICBvdXRlck1vbm9tZXIgPSAob3V0ZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtvdXRlck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IG91dGVyTW9ub21lcik7XG4gICAgICAgIGlubmVyTW9ub21lciA9IChpbm5lck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke2lubmVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogaW5uZXJNb25vbWVyKTtcbiAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDEgfHwgbW9ub21lclsxXSA9PSAnKCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9hID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgMV0gOlxuICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXJbMF0gPT0gJ2QnICYmIG1vbm9tZXJbMV0gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDIgfHwgbW9ub21lclsyXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYiA9IG1vbm9tZXJbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgMl0gOlxuICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygwLCAzKSBpbiB0aGlzLkFBRnVsbE5hbWVzKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMyB8fCBtb25vbWVyWzNdID09ICcoJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gdGhpcy5BQUZ1bGxOYW1lc1ttb25vbWVyLnN1YnN0cmluZygwLCAzKV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAzXSA6XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgM107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgoX2MgPSBtb25vbWVyWzBdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudG9Mb3dlckNhc2UoKSkgPT0gbW9ub21lclswXSkge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDEsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gNCB8fCBtb25vbWVyWzRdID09ICcoJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMSwgMyldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCA0XSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAwXTtcbiAgICB9XG59XG5BbWlub2FjaWRzLlNlbVR5cGUgPSAnQW1pbm9hY2lkcyc7XG5BbWlub2FjaWRzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudCA9ICdBbWlub2FjaWRzTXVsdGlwbGVBbGlnbm1lbnQnO1xuQW1pbm9hY2lkcy51bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbkFtaW5vYWNpZHMuTmFtZXMgPSB7XG4gICAgJ0cnOiAnR2x5Y2luZScsXG4gICAgJ0wnOiAnTGV1Y2luZScsXG4gICAgJ1knOiAnVHlyb3NpbmUnLFxuICAgICdTJzogJ1NlcmluZScsXG4gICAgJ0UnOiAnR2x1dGFtaWMgYWNpZCcsXG4gICAgJ1EnOiAnR2x1dGFtaW5lJyxcbiAgICAnRCc6ICdBc3BhcnRpYyBhY2lkJyxcbiAgICAnTic6ICdBc3BhcmFnaW5lJyxcbiAgICAnRic6ICdQaGVueWxhbGFuaW5lJyxcbiAgICAnQSc6ICdBbGFuaW5lJyxcbiAgICAnSyc6ICdMeXNpbmUnLFxuICAgICdSJzogJ0FyZ2luaW5lJyxcbiAgICAnSCc6ICdIaXN0aWRpbmUnLFxuICAgICdDJzogJ0N5c3RlaW5lJyxcbiAgICAnVic6ICdWYWxpbmUnLFxuICAgICdQJzogJ1Byb2xpbmUnLFxuICAgICdXJzogJ1RyeXB0b3BoYW4nLFxuICAgICdJJzogJ0lzb2xldWNpbmUnLFxuICAgICdNJzogJ01ldGhpb25pbmUnLFxuICAgICdUJzogJ1RocmVvbmluZScsXG59O1xuQW1pbm9hY2lkcy5BQVNtaWxlcyA9IHtcbiAgICAnRyc6ICdOQ0MoPU8pTycsXG4gICAgJ0wnOiAnTltDQEhdKENDKEMpQylDKD1PKU8nLFxuICAgICdZJzogJ05DKENDMT1DQz1DKE8pQz1DMSlDKD1PKU8nLFxuICAgICdTJzogJ05DKENPKUMoPU8pTycsXG4gICAgJ0UnOiAnTltDQEBIXShDQ0MoTyk9TylDKD1PKU8nLFxuICAgICdRJzogJ05bQ0BASF0oQ0NDKE4pPU8pQyg9TylPJyxcbiAgICAnRCc6ICdOW0NAQEhdKENDKE8pPU8pQyg9TylPJyxcbiAgICAnTic6ICdOW0NAQEhdKENDKE4pPU8pQyg9TylPJyxcbiAgICAnRic6ICdOQyhDQzE9Q0M9Q0M9QzEpQyg9TylPJyxcbiAgICAnQSc6ICdOW0NASF0oQylDKD1PKU8nLFxuICAgICdLJzogJ05DKENDQ0NOKUMoPU8pTycsXG4gICAgJ1InOiAnTltDQEhdKENDQ05DKD1OKUMpQyg9TylPJyxcbiAgICAnSCc6ICdOQyhDQzE9Q049Q1tOXTEpQyg9TylPJyxcbiAgICAnQyc6ICdOW0NAQEhdKENTKUMoPU8pTycsXG4gICAgJ1YnOiAnTkMoQyhDKUMpQyg9TylPJyxcbiAgICAnUCc6ICdOKENDQzEpQzFDKD1PKU8nLFxuICAgICdXJzogJ05bQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSlDKD1PKU8nLFxuICAgICdJJzogJ05bQ0BIXShbQ0BIXShDKUNDKUMoPU8pTycsXG4gICAgJ00nOiAnTkMoQ0NTQylDKD1PKU8nLFxuICAgICdUJzogJ05DKEMoTylDKUMoPU8pTycsXG59O1xuQW1pbm9hY2lkcy5BQVNtaWxlc1RydW5jYXRlZCA9IHtcbiAgICAnRyc6ICcqQyonLFxuICAgICdMJzogJ0NDKEMpQ1tDQEhdKCopKicsXG4gICAgJ1knOiAnQzE9Q0MoPUNDPUMxQ0MoKikqKU8nLFxuICAgICdTJzogJ09DQygqKUMqJyxcbiAgICAnRSc6ICcqW0NAQEhdKENDQyhPKT1PKSonLFxuICAgICdRJzogJypOW0NAQEhdKENDQyhOKT1PKSonLFxuICAgICdEJzogJypbQ0BASF0oQ0MoTyk9TykqJyxcbiAgICAnTic6ICcqW0NAQEhdKENDKE4pPU8pKicsXG4gICAgJ0YnOiAnQzE9Q0M9QyhDPUMxKUNDKCopKicsXG4gICAgJ0EnOiAnQ1tDQEhdKCopKicsXG4gICAgJ0snOiAnQyhDQ04pQ0MoKikqJyxcbiAgICAnUic6ICcqW0NASF0oQ0NDTkMoPU4pQykqJyxcbiAgICAnSCc6ICdDMT1DKE5DPU4xKUNDKCopKicsXG4gICAgJ0MnOiAnQyhbQ0BASF0oKikqKVMnLFxuICAgICdWJzogJ0NDKEMpQygqKSonLFxuICAgICdQJzogJ0MxQ0NOKCopQzEqJyxcbiAgICAnVyc6ICcqW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpKicsXG4gICAgJ0knOiAnQ0NbQ0BIXShDKVtDQEhdKCopKicsXG4gICAgJ00nOiAnQ1NDQ0MoKikqJyxcbiAgICAnVCc6ICdDQyhPKUMoKikqJyxcbn07XG4vKiogVE9ETzogRnVsbD9cbiAqL1xuQW1pbm9hY2lkcy5BQUZ1bGxOYW1lcyA9IHtcbiAgICAnQWxhJzogJ0EnLFxuICAgICdBcmcnOiAnUicsXG4gICAgJ0Fzbic6ICdOJyxcbiAgICAnQXNwJzogJ0QnLFxuICAgICdDeXMnOiAnQycsXG4gICAgJ0dsbic6ICdRJyxcbiAgICAnR2x1JzogJ0UnLFxuICAgICdHbHknOiAnRycsXG4gICAgJ0hpcyc6ICdIJyxcbiAgICAnSWxlJzogJ0knLFxuICAgICdMZXUnOiAnTCcsXG4gICAgJ0x5cyc6ICdLJyxcbiAgICAnTWV0JzogJ00nLFxuICAgICdQaGUnOiAnRicsXG4gICAgJ1Bybyc6ICdQJyxcbiAgICAnU2VyJzogJ1MnLFxuICAgICdUaHInOiAnVCcsXG4gICAgJ1RycCc6ICdXJyxcbiAgICAnVHlyJzogJ1knLFxuICAgICdWYWwnOiAnVicsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWVcxcGJtOWhZMmxrY3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbUZ0YVc1dllXTnBaSE11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlMwRXNUMEZCVHl4RlFVRmhMR05CUVdNc1JVRkJReXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUlRGRUxFMUJRVTBzVDBGQlR5eHJRa0ZCYlVJc1UwRkJVU3hqUVVGak8wbEJSemRETEUxQlFVMHNTMEZCU3l4SlFVRkpPMUZCUTNCQ0xFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4TFFVRkxMRU5CUVVNc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03WjBKQlF6TkNMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU03WjBKQlEyaERMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZETlVRc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1UwRkJVeXhEUVVGRE8yZENRVU0xUWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXp0blFrRkRia0lzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU03WVVGRGVrSXNSVUZCUlN4TFFVRkxMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0VFFVTXZRanRSUVVORUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJTVTBzVFVGQlRTeExRVUZMTEZWQlFWVTdVVUZETVVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVlVGQlZTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMWxCUXpsQ0xFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJRenRuUWtGRGFrTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdaMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRE8yZENRVU51UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRGRrUXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNXVUZCV1N4RFFVRkRPMmRDUVVNdlFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZEZWtJc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGRkJRVkVzUTBGQlF6dGhRVU5xUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMU5CUXk5Q08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRPMGxCUTNwQ0xFTkJRVU03U1VGSlRTeE5RVUZOTEV0QlFVc3NUVUZCVFR0UlFVTjBRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEV0QlFVc3NTMEZCU3l4RFFVRkRMRVZCUVVVN1dVRkRNVUlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMR3RDUVVGclFpeERRVUZETzJkQ1FVTnVReXg1UkVGQmVVUTdaMEpCUTNwRUxFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEZGQlFWRXNSVUZCUlN4VFFVRlRPMkZCUTNCQ0xFTkJRVU1zUTBGQlF6dFRRVU5LTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRM0pDTEVOQlFVTTdTVUZGWlN4SFFVRkhMRU5CUVVNc1EwRkJVenRSUVVNelFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJSaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRelZDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1EwRkJRenM3UVVGRlJDdzRSa0ZCT0VZN1FVRkRMMFVzTmtKQlFWVXNSMEZCSzBJN1NVRkRkRVFzVDBGQlR5eEZRVUZGTEVkQlFVYzdTVUZEV2l4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1EwRkRXQ3hEUVVGRE8wRkJSMG9zVFVGQlRTeFBRVUZQTEZWQlFWVTdTVUZ4UjJRc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eFRRVUZwUWl4TlFVRk5PMUZCUXpsRExGRkJRVkVzVFVGQlRTeEZRVUZGTzFsQlEyaENMRXRCUVVzc1RVRkJUVHRuUWtGRFZDeFBRVUZQTEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUTBGQlF6dFpRVU4yUXl4TFFVRkxMRTFCUVUwN1owSkJRMVFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU03V1VGRGFrTTdaMEpCUTBVc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDVRa0ZCZVVJc1RVRkJUU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMU5CUTNKRk8wbEJRMGdzUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwa3NUVUZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGVE8xRkJRMjVETEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOb1FpeEpRVUZKTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRaaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZGWml4TFFVRkxMRTFCUVUwc1NVRkJTU3hKUVVGSkxFTkJRVU1zUlVGQlJUdFpRVU53UWl4SlFVRkpMRWxCUVVrc1NVRkJTU3hIUVVGSE8yZENRVU5pTEU5QlFVOHNSVUZCUlN4RFFVRkRPMmxDUVVOUUxFbEJRVWtzU1VGQlNTeEpRVUZKTEVkQlFVYzdaMEpCUTJ4Q0xFOUJRVThzUlVGQlJTeERRVUZETzJsQ1FVTlFMRWxCUVVrc1QwRkJUenRuUWtGRFpDeExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRPenRuUWtGRlpDeExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRPMU5CUTJwQ08xRkJSVVFzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRMmhGTEVOQlFVTTdTVUZGVFN4TlFVRk5MRU5CUVVNc1pVRkJaU3hEUVVGRExGVkJRV3RDTEVWQlFVVXNSVUZCUlN4VFFVRnBRaXhOUVVGTk96dFJRVU42UlN4elJFRkJjMFE3VVVGRGRFUXNUVUZCVFN4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRM0JFTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1dVRkJXU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVNdlJDeFpRVUZaTEVkQlFVY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFJRVU16Uml4WlFVRlpMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVVXpSaXhKUVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVTdXVUZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJ5eERRVUZETzFsQlEzcERMRTlCUVU4c1MwRkJTeXhKUVVGSkxHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN1owSkJRMjVETEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRNVVFzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEZUVRN1VVRkZSQ3hKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlJTeEpRVUZKTEcxQ1FVRnRRaXhGUVVGRk8xbEJRek5FTEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSVHRuUWtGRE5VTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1RVRkJRU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETERCRFFVRkZMRmRCUVZjc1JVRkJSeXhEUVVGRE8yZENRVU42UXl4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMjlDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEzaEVPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVTdXVUZETDBNc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTzJkQ1FVTTFReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM2hFTEU5QlFVOHNTMEZCU3l4SlFVRkpMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdiMEpCUTI1RExFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETVVRc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEZsQlFWa3NSVUZCUlN4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGVFUTdVMEZEUmp0UlFVVkVMRWxCUVVrc1EwRkJRU3hOUVVGQkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNNRU5CUVVVc1YwRkJWeXhGUVVGRkxFdEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZPMWxCUXpORExFbEJRVWtzVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlR0blFrRkRMME1zU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMjlDUVVNMVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzaEVMRTlCUVU4c1MwRkJTeXhKUVVGSkxHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN2QwSkJRMjVETEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0M1FrRkRNVVFzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdhVUpCUTNoRU8yRkJRMFk3VTBGRFJqdFJRVVZFTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRPVVFzUTBGQlF6czdRVUZ3VEdVc2EwSkJRVThzUjBGQlZ5eFpRVUZaTEVOQlFVTTdRVUZGTDBJc2JVTkJRWGRDTEVkQlFWY3NOa0pCUVRaQ0xFTkJRVU03UVVGRk1VVXNlVUpCUVdNc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXp0QlFVVTNRaXhuUWtGQlN5eEhRVUZ4UWp0SlFVTjBReXhIUVVGSExFVkJRVVVzVTBGQlV6dEpRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMGxCUTJRc1IwRkJSeXhGUVVGRkxGVkJRVlU3U1VGRFppeEhRVUZITEVWQlFVVXNVVUZCVVR0SlFVTmlMRWRCUVVjc1JVRkJSU3hsUVVGbE8wbEJRM0JDTEVkQlFVY3NSVUZCUlN4WFFVRlhPMGxCUTJoQ0xFZEJRVWNzUlVGQlJTeGxRVUZsTzBsQlEzQkNMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4bFFVRmxPMGxCUTNCQ0xFZEJRVWNzUlVGQlJTeFRRVUZUTzBsQlEyUXNSMEZCUnl4RlFVRkZMRkZCUVZFN1NVRkRZaXhIUVVGSExFVkJRVVVzVlVGQlZUdEpRVU5tTEVkQlFVY3NSVUZCUlN4WFFVRlhPMGxCUTJoQ0xFZEJRVWNzUlVGQlJTeFZRVUZWTzBsQlEyWXNSMEZCUnl4RlFVRkZMRkZCUVZFN1NVRkRZaXhIUVVGSExFVkJRVVVzVTBGQlV6dEpRVU5rTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4WFFVRlhPME5CUTJwQ0xFTkJRVU03UVVGRldTeHRRa0ZCVVN4SFFVRnhRanRKUVVONlF5eEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3h6UWtGQmMwSTdTVUZETTBJc1IwRkJSeXhGUVVGRkxESkNRVUV5UWp0SlFVTm9ReXhIUVVGSExFVkJRVVVzWTBGQll6dEpRVU51UWl4SFFVRkhMRVZCUVVVc2VVSkJRWGxDTzBsQlF6bENMRWRCUVVjc1JVRkJSU3g1UWtGQmVVSTdTVUZET1VJc1IwRkJSeXhGUVVGRkxIZENRVUYzUWp0SlFVTTNRaXhIUVVGSExFVkJRVVVzZDBKQlFYZENPMGxCUXpkQ0xFZEJRVWNzUlVGQlJTeDNRa0ZCZDBJN1NVRkROMElzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanRKUVVOMFFpeEhRVUZITEVWQlFVVXNhVUpCUVdsQ08wbEJRM1JDTEVkQlFVY3NSVUZCUlN3d1FrRkJNRUk3U1VGREwwSXNSMEZCUnl4RlFVRkZMSGRDUVVGM1FqdEpRVU0zUWl4SFFVRkhMRVZCUVVVc2JVSkJRVzFDTzBsQlEzaENMRWRCUVVjc1JVRkJSU3hwUWtGQmFVSTdTVUZEZEVJc1IwRkJSeXhGUVVGRkxHbENRVUZwUWp0SlFVTjBRaXhIUVVGSExFVkJRVVVzYjBOQlFXOURPMGxCUTNwRExFZEJRVWNzUlVGQlJTd3dRa0ZCTUVJN1NVRkRMMElzUjBGQlJ5eEZRVUZGTEdkQ1FVRm5RanRKUVVOeVFpeEhRVUZITEVWQlFVVXNhVUpCUVdsQ08wTkJRM1pDTEVOQlFVTTdRVUZGV1N3MFFrRkJhVUlzUjBGQmNVSTdTVUZEYkVRc1IwRkJSeXhGUVVGRkxFdEJRVXM3U1VGRFZpeEhRVUZITEVWQlFVVXNhVUpCUVdsQ08wbEJRM1JDTEVkQlFVY3NSVUZCUlN4elFrRkJjMEk3U1VGRE0wSXNSMEZCUnl4RlFVRkZMRlZCUVZVN1NVRkRaaXhIUVVGSExFVkJRVVVzYjBKQlFXOUNPMGxCUTNwQ0xFZEJRVWNzUlVGQlJTeHhRa0ZCY1VJN1NVRkRNVUlzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNiVUpCUVcxQ08wbEJRM2hDTEVkQlFVY3NSVUZCUlN4eFFrRkJjVUk3U1VGRE1VSXNSMEZCUnl4RlFVRkZMRmxCUVZrN1NVRkRha0lzUjBGQlJ5eEZRVUZGTEdOQlFXTTdTVUZEYmtJc1IwRkJSeXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXhRaXhIUVVGSExFVkJRVVVzYlVKQlFXMUNPMGxCUTNoQ0xFZEJRVWNzUlVGQlJTeG5Ra0ZCWjBJN1NVRkRja0lzUjBGQlJ5eEZRVUZGTEZsQlFWazdTVUZEYWtJc1IwRkJSeXhGUVVGRkxHRkJRV0U3U1VGRGJFSXNSMEZCUnl4RlFVRkZMQ3RDUVVFclFqdEpRVU53UXl4SFFVRkhMRVZCUVVVc2NVSkJRWEZDTzBsQlF6RkNMRWRCUVVjc1JVRkJSU3hYUVVGWE8wbEJRMmhDTEVkQlFVY3NSVUZCUlN4WlFVRlpPME5CUTJ4Q0xFTkJRVU03UVVGRlJqdEhRVU5ITzBGQlExY3NjMEpCUVZjc1IwRkJjVUk3U1VGRE5VTXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dERRVU5ZTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMU4wY21sdVowUnBZM1JwYjI1aGNubDlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3VTJWeFVHRnNaWFIwWlN3Z1UyVnhVR0ZzWlhSMFpVSmhjMlY5SUdaeWIyMGdKeTR2YzJWeExYQmhiR1YwZEdWekp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGN5QmxlSFJsYm1SeklGTmxjVkJoYkdWMGRHVkNZWE5sSUh0Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ2JHVnphem9nVTJWeFVHRnNaWFIwWlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkQ0JNWlhOcktDazZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbXhsYzJzZ1BUMDlJSFp2YVdRZ01Da2dlMXh1SUNBZ0lDQWdkR2hwY3k1c1pYTnJJRDBnZEdocGN5NXRZV3RsVUdGc1pYUjBaU2hiWEc0Z0lDQWdJQ0FnSUZ0YkowY25MQ0FuUVNjc0lDZFRKeXdnSjFRblhTd2dKMjl5WVc1blpTZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkREp5d2dKMVluTENBblNTY3NJQ2RNSnl3Z0oxQW5MQ0FuUmljc0lDZFpKeXdnSjAwbkxDQW5WeWRkTENBbllXeHNYMmR5WldWdUoxMHNYRzRnSUNBZ0lDQWdJRnRiSjA0bkxDQW5VU2NzSUNkSUoxMHNJQ2R0WVdkbGJuUmhKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkowUW5MQ0FuUlNkZExDQW5jbVZrSjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMHNuTENBblVpZGRMQ0FuWVd4c1gySnNkV1VuWFN4Y2JpQWdJQ0FnSUYwc0lHWmhiSE5sTENCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1c1pYTnJPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdaM0p2YTBkeWIzVndjem9nVTJWeFVHRnNaWFIwWlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkQ0JIY205clIzSnZkWEJ6S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtZHliMnRIY205MWNITWdQVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NW5jbTlyUjNKdmRYQnpJRDBnZEdocGN5NXRZV3RsVUdGc1pYUjBaU2hiWEc0Z0lDQWdJQ0FnSUZ0YkowTW5MQ0FuVlNkZExDQW5lV1ZzYkc5M0oxMHNYRzRnSUNBZ0lDQWdJRnRiSjBjbkxDQW5VQ2RkTENBbmNtVmtKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkowRW5MQ0FuVmljc0lDZEpKeXdnSjB3bkxDQW5UU2NzSUNkR0p5d2dKMWtuTENBblZ5ZGRMQ0FuWVd4c1gyZHlaV1Z1SjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMUluTENBblNDY3NJQ2RMSjEwc0lDZHNhV2RvZEY5aWJIVmxKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkowUW5MQ0FuUlNkZExDQW5aR0Z5YTE5aWJIVmxKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkoxTW5MQ0FuVkNjc0lDZE9KeXdnSjFFblhTd2dKMjl5WVc1blpTZGRMRnh1SUNBZ0lDQWdYU3dnWm1Gc2MyVXNJRUZ0YVc1dllXTnBaSE5RWVd4bGRIUmxjeWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWR5YjJ0SGNtOTFjSE03WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJ5WVhOTmIydzZJRk5sY1ZCaGJHVjBkR1U3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUWdVbUZ6VFc5c0tDazZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbkpoYzAxdmJDQTlQVDBnZG05cFpDQXdLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuSmhjMDF2YkNBOUlHNWxkeUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1vZTF4dUlDQWdJQ0FnSUNBdkx5Qm9kSFJ3T2k4dllXTmpaWE11Wlc1ekxXeDViMjR1Wm5JdlltbHZkR2xqTDNKaGMzUnZjQzlvWld4d0wyTnZiRzkxY2k1b2RHMWNiaUFnSUNBZ0lDQWdKMFFuT2lBbkkwVTJNRUV3UVNjc0lDOHZJR0Z6Y0N3Z1lYTndZWEowYVdNZ1lXTnBaQ3dnWVhOd1hHNGdJQ0FnSUNBZ0lDZEZKem9nSnlORk5qQkJNRUVuTENBdkx5Qm5iSFVzSUdkc2RYUmhiV2xqSUdGamFXUmNiaUFnSUNBZ0lDQWdKME1uT2lBbkkwVTJSVFl3TUNjc0lDOHZJR041Y3l3Z1kzbHpkR1ZwYm1WY2JpQWdJQ0FnSUNBZ0owMG5PaUFuSTBVMlJUWXdNQ2NzSUM4dklHMWxkQ3dnYldWMGFHbHZibWx1WlZ4dUlDQWdJQ0FnSUNBblN5YzZJQ2NqTVRRMVFVWkdKeXdnTHk4Z2JIbHpMQ0JzZVhOcGJtVmNiaUFnSUNBZ0lDQWdKMUluT2lBbkl6RTBOVUZHUmljc0lDOHZJR0Z5Wnl3Z1lYSm5hVzVwYm1WY2JpQWdJQ0FnSUNBZ0oxTW5PaUFuSTBaQk9UWXdNQ2NzSUM4dklITmxjaXdnYzJWeWFXNWxYRzRnSUNBZ0lDQWdJQ2RVSnpvZ0p5TkdRVGsyTURBbkxDQXZMeUIwYUhJc0lIUm9jbVZ2Ym1sdVpWeHVJQ0FnSUNBZ0lDQW5SaWM2SUNjak16SXpNa0ZCSnl3Z0x5OGdjR2hsTENCd2FHVnVlV3hoYkdGdWFXNWxYRzRnSUNBZ0lDQWdJQ2RaSnpvZ0p5TXpNak15UVVFbkxDQXZMeUIwZVhJc0lIUjVjbTl6YVc1bFhHNGdJQ0FnSUNBZ0lDZE9Kem9nSnlNd01FUkRSRU1uTENBdkx5QmhjMjRzSUdGemNHRnlZV2RwYm1WY2JpQWdJQ0FnSUNBZ0oxRW5PaUFuSXpBd1JFTkVReWNzSUM4dklHZHNiaXdnWjJ4MWRHRnRhVzVsWEc0Z0lDQWdJQ0FnSUNkSEp6b2dKeU5GUWtWQ1JVSW5MQ0F2THlCbmJIa3NJR2RzZVdOcGJtVmNiaUFnSUNBZ0lDQWdKMHduT2lBbkl6QkdPREl3Umljc0lDOHZJR3hsZFN3Z2JHVjFZMmx1WlZ4dUlDQWdJQ0FnSUNBblZpYzZJQ2NqTUVZNE1qQkdKeXdnTHk4Z2RtRnNMQ0IyWVd4cGJtVmNiaUFnSUNBZ0lDQWdKMGtuT2lBbkl6QkdPREl3Umljc0lDOHZJR2xzWlN3Z2FYTnZiR1YxWTJsdVpWeHVJQ0FnSUNBZ0lDQW5RU2M2SUNjalF6aERPRU00Snl3Z0x5OGdZV3hoTENCaGJHRnVhVzVsWEc0Z0lDQWdJQ0FnSUNkWEp6b2dKeU5DTkRWQlFqUW5MQ0F2THlCMGNuQXNJSFJ5ZVhCMGIzQm9ZVzVjYmlBZ0lDQWdJQ0FnSjBnbk9pQW5Jemd5T0RKRU1pY3NJQzh2SUdocGN5d2dhR2x6ZEdsa2FXNWxYRzRnSUNBZ0lDQWdJQ2RRSnpvZ0p5TkVRemsyT0RJbkxDQXZMeUJ3Y204c0lIQnliMnhwYm1WY2JpQWdJQ0FnSUNBZ0oyOTBhR1Z5Y3ljNklDY2pRa1ZCTURaRkp5eGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXlZWE5OYjJ3N1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2IzWmxjbkpwWkdVZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpUU0E5SUcwZ2FXNGdRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpMbUZoVTNsdWIyNTViWE1nUHlCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNdVlXRlRlVzV2Ym5sdGMxdHRYU0E2SUcwN1hHNGdJQ0FnWTI5dWMzUWdjbVZ6SUQwZ2MzVndaWEl1WjJWMEtISmxjMDBwTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNBdktpb2dUMjVzZVNCemIyMWxJRzltSUhSb1pTQnplVzV2Ym5sdGN5NGdWR2hsYzJVZ2QyVnlaU0J2WW5SaGFXNWxaQ0JtY205dElIUm9aU0JqYkhWemRHVnlaV1FnYjJ4cFoyOXdaWEIwYVdSbElHUmhkR0Z6WlhRdUlDb3ZYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR0ZoVTNsdWIyNTViWE02SUhzZ1cyNWhiV1U2SUhOMGNtbHVaMTA2SUhOMGNtbHVaeUI5SUQwZ2UxeHVJQ0FnSUNkTlpVNXNaU2M2SUNkTUp5d2dMeThnVG14bElDMGdibTl5YkdWMVkybHVaVnh1SUNBZ0lDZE5aVUVuT2lBblFTY3NYRzRnSUNBZ0owMWxSeWM2SUNkSEp5eGNiaUFnSUNBblRXVkdKem9nSjBZbkxGeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1FXMXBibTloWTJsa2N5QjdYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxPaUJ6ZEhKcGJtY2dQU0FuUVcxcGJtOWhZMmxrY3ljN1hHNWNiaUFnYzNSaGRHbGpJSEpsWVdSdmJteDVJRk5sYlZSNWNHVk5kV3gwYVhCc1pVRnNhV2R1YldWdWREb2djM1J5YVc1bklEMGdKMEZ0YVc1dllXTnBaSE5OZFd4MGFYQnNaVUZzYVdkdWJXVnVkQ2M3WEc1Y2JpQWdjM1JoZEdsaklIVnVaR1ZtYVc1bFpFTnZiRzl5SUQwZ0ozSm5ZaWd4TURBc01UQXdMREV3TUNrbk8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdUbUZ0WlhNNklGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQjdYRzRnSUNBZ0owY25PaUFuUjJ4NVkybHVaU2NzWEc0Z0lDQWdKMHduT2lBblRHVjFZMmx1WlNjc1hHNGdJQ0FnSjFrbk9pQW5WSGx5YjNOcGJtVW5MRnh1SUNBZ0lDZFRKem9nSjFObGNtbHVaU2NzWEc0Z0lDQWdKMFVuT2lBblIyeDFkR0Z0YVdNZ1lXTnBaQ2NzWEc0Z0lDQWdKMUVuT2lBblIyeDFkR0Z0YVc1bEp5eGNiaUFnSUNBblJDYzZJQ2RCYzNCaGNuUnBZeUJoWTJsa0p5eGNiaUFnSUNBblRpYzZJQ2RCYzNCaGNtRm5hVzVsSnl4Y2JpQWdJQ0FuUmljNklDZFFhR1Z1ZVd4aGJHRnVhVzVsSnl4Y2JpQWdJQ0FuUVNjNklDZEJiR0Z1YVc1bEp5eGNiaUFnSUNBblN5YzZJQ2RNZVhOcGJtVW5MRnh1SUNBZ0lDZFNKem9nSjBGeVoybHVhVzVsSnl4Y2JpQWdJQ0FuU0NjNklDZElhWE4wYVdScGJtVW5MRnh1SUNBZ0lDZERKem9nSjBONWMzUmxhVzVsSnl4Y2JpQWdJQ0FuVmljNklDZFdZV3hwYm1VbkxGeHVJQ0FnSUNkUUp6b2dKMUJ5YjJ4cGJtVW5MRnh1SUNBZ0lDZFhKem9nSjFSeWVYQjBiM0JvWVc0bkxGeHVJQ0FnSUNkSkp6b2dKMGx6YjJ4bGRXTnBibVVuTEZ4dUlDQWdJQ2ROSnpvZ0owMWxkR2hwYjI1cGJtVW5MRnh1SUNBZ0lDZFVKem9nSjFSb2NtVnZibWx1WlNjc1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCQlFWTnRhV3hsY3pvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2RPUTBNb1BVOHBUeWNzWEc0Z0lDQWdKMHduT2lBblRsdERRRWhkS0VOREtFTXBReWxES0QxUEtVOG5MRnh1SUNBZ0lDZFpKem9nSjA1REtFTkRNVDFEUXoxREtFOHBRejFETVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RUSnpvZ0owNURLRU5QS1VNb1BVOHBUeWNzWEc0Z0lDQWdKMFVuT2lBblRsdERRRUJJWFNoRFEwTW9UeWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RSSnpvZ0owNWJRMEJBU0Ywb1EwTkRLRTRwUFU4cFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuUkNjNklDZE9XME5BUUVoZEtFTkRLRThwUFU4cFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVGljNklDZE9XME5BUUVoZEtFTkRLRTRwUFU4cFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuUmljNklDZE9ReWhEUXpFOVEwTTlRME05UXpFcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuUVNjNklDZE9XME5BU0Ywb1F5bERLRDFQS1U4bkxGeHVJQ0FnSUNkTEp6b2dKMDVES0VORFEwTk9LVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxSW5PaUFuVGx0RFFFaGRLRU5EUTA1REtEMU9LVU1wUXlnOVR5bFBKeXhjYmlBZ0lDQW5TQ2M2SUNkT1F5aERRekU5UTA0OVExdE9YVEVwUXlnOVR5bFBKeXhjYmlBZ0lDQW5ReWM2SUNkT1cwTkFRRWhkS0VOVEtVTW9QVThwVHljc1hHNGdJQ0FnSjFZbk9pQW5Ua01vUXloREtVTXBReWc5VHlsUEp5eGNiaUFnSUNBblVDYzZJQ2RPS0VORFF6RXBRekZES0QxUEtVOG5MRnh1SUNBZ0lDZFhKem9nSjA1YlEwQkFTRjBvUTJNeFl6SmpZMk5qWXpKdUtGdElYU2xqTVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RKSnpvZ0owNWJRMEJJWFNoYlEwQklYU2hES1VOREtVTW9QVThwVHljc1hHNGdJQ0FnSjAwbk9pQW5Ua01vUTBOVFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkVUp6b2dKMDVES0VNb1R5bERLVU1vUFU4cFR5Y3NYRzRnSUgwN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkJRVk50YVd4bGMxUnlkVzVqWVhSbFpEb2dVM1J5YVc1blJHbGpkR2x2Ym1GeWVTQTlJSHRjYmlBZ0lDQW5SeWM2SUNjcVF5b25MRnh1SUNBZ0lDZE1Kem9nSjBOREtFTXBRMXREUUVoZEtDb3BLaWNzWEc0Z0lDQWdKMWtuT2lBblF6RTlRME1vUFVORFBVTXhRME1vS2lrcUtVOG5MRnh1SUNBZ0lDZFRKem9nSjA5RFF5Z3FLVU1xSnl4Y2JpQWdJQ0FuUlNjNklDY3FXME5BUUVoZEtFTkRReWhQS1QxUEtTb25MRnh1SUNBZ0lDZFJKem9nSnlwT1cwTkFRRWhkS0VORFF5aE9LVDFQS1NvbkxGeHVJQ0FnSUNkRUp6b2dKeXBiUTBCQVNGMG9RME1vVHlrOVR5a3FKeXhjYmlBZ0lDQW5UaWM2SUNjcVcwTkFRRWhkS0VOREtFNHBQVThwS2ljc1hHNGdJQ0FnSjBZbk9pQW5RekU5UTBNOVF5aERQVU14S1VOREtDb3BLaWNzWEc0Z0lDQWdKMEVuT2lBblExdERRRWhkS0NvcEtpY3NYRzRnSUNBZ0owc25PaUFuUXloRFEwNHBRME1vS2lrcUp5eGNiaUFnSUNBblVpYzZJQ2NxVzBOQVNGMG9RME5EVGtNb1BVNHBReWtxSnl4Y2JpQWdJQ0FuU0NjNklDZERNVDFES0U1RFBVNHhLVU5ES0NvcEtpY3NYRzRnSUNBZ0owTW5PaUFuUXloYlEwQkFTRjBvS2lrcUtWTW5MRnh1SUNBZ0lDZFdKem9nSjBOREtFTXBReWdxS1NvbkxGeHVJQ0FnSUNkUUp6b2dKME14UTBOT0tDb3BRekVxSnl4Y2JpQWdJQ0FuVnljNklDY3FXME5BUUVoZEtFTmpNV015WTJOalkyTXliaWhiU0YwcFl6RXBLaWNzWEc0Z0lDQWdKMGtuT2lBblEwTmJRMEJJWFNoREtWdERRRWhkS0NvcEtpY3NYRzRnSUNBZ0owMG5PaUFuUTFORFEwTW9LaWtxSnl4Y2JpQWdJQ0FuVkNjNklDZERReWhQS1VNb0tpa3FKeXhjYmlBZ2ZUdGNibHh1SUNBdktpb2dWRTlFVHpvZ1JuVnNiRDljYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdRVUZHZFd4c1RtRnRaWE02SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCN1hHNGdJQ0FnSjBGc1lTYzZJQ2RCSnl4Y2JpQWdJQ0FuUVhKbkp6b2dKMUluTEZ4dUlDQWdJQ2RCYzI0bk9pQW5UaWNzWEc0Z0lDQWdKMEZ6Y0NjNklDZEVKeXhjYmlBZ0lDQW5RM2x6SnpvZ0owTW5MRnh1SUNBZ0lDZEhiRzRuT2lBblVTY3NYRzRnSUNBZ0owZHNkU2M2SUNkRkp5eGNiaUFnSUNBblIyeDVKem9nSjBjbkxGeHVJQ0FnSUNkSWFYTW5PaUFuU0Njc1hHNGdJQ0FnSjBsc1pTYzZJQ2RKSnl4Y2JpQWdJQ0FuVEdWMUp6b2dKMHduTEZ4dUlDQWdJQ2RNZVhNbk9pQW5TeWNzWEc0Z0lDQWdKMDFsZENjNklDZE5KeXhjYmlBZ0lDQW5VR2hsSnpvZ0owWW5MRnh1SUNBZ0lDZFFjbThuT2lBblVDY3NYRzRnSUNBZ0oxTmxjaWM2SUNkVEp5eGNiaUFnSUNBblZHaHlKem9nSjFRbkxGeHVJQ0FnSUNkVWNuQW5PaUFuVnljc1hHNGdJQ0FnSjFSNWNpYzZJQ2RaSnl4Y2JpQWdJQ0FuVm1Gc0p6b2dKMVluTEZ4dUlDQjlPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFVHRnNaWFIwWlNoelkyaGxiV1U2SUhOMGNtbHVaeUE5SUNkbmNtOXJKeWs2SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0FnSUhOM2FYUmphQ0FvYzJOb1pXMWxLU0I3WEc0Z0lDQWdZMkZ6WlNBblozSnZheWM2WEc0Z0lDQWdJQ0J5WlhSMWNtNGdRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpMa2R5YjJ0SGNtOTFjSE03WEc0Z0lDQWdZMkZ6WlNBbmJHVnpheWM2WEc0Z0lDQWdJQ0J5WlhSMWNtNGdRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpMa3hsYzJzN1hHNGdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdRMmhsYlZCaGJHVjBkR1U2SUhOamFHVnRaU0JjWEdBa2UzTmphR1Z0WlgxY1hHQWdaRzlsY3lCdWIzUWdaWGhwYzNSZ0tUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmthWFpwWkdWa0lHRnRhVzV2SUdGamFXUWdkMmwwYUNCcGRITWdZMjl1ZEdWdWRDQnBiaUIwYUdVZ1luSmhZMnRsZEN3Z2FXWWdkR2hsSUdOdmJuUmxiblFnYVhNZ2JuVnRZbVZ5TENCMGFHVnVJR2wwY3lCdmJXbDBkR1ZrWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCaklISmhkeUJoYldsdWIxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0YmMzUnlhVzVuTENCemRISnBibWRkZlNCdmRYUmxjaUJoYm1RZ2FXNXVaWElnWTI5dWRHVnVkRnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJKYm01bGNrOTFkR1Z5S0dNNklITjBjbWx1WnlrNklGdHpkSEpwYm1jc0lITjBjbWx1WjEwZ2UxeHVJQ0FnSUd4bGRDQnBjMGx1Ym1WeUlEMGdNRHRjYmlBZ0lDQnNaWFFnYVc1dVpYSWdQU0FuSnp0Y2JpQWdJQ0JzWlhRZ2IzVjBaWElnUFNBbkp6dGNibHh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdZMmhoY2lCdlppQmpLU0I3WEc0Z0lDQWdJQ0JwWmlBb1kyaGhjaUE5UFNBbktDY3BYRzRnSUNBZ0lDQWdJR2x6U1c1dVpYSXJLenRjYmlBZ0lDQWdJR1ZzYzJVZ2FXWWdLR05vWVhJZ1BUMGdKeWtuS1Z4dUlDQWdJQ0FnSUNCcGMwbHVibVZ5TFMwN1hHNGdJQ0FnSUNCbGJITmxJR2xtSUNocGMwbHVibVZ5S1Z4dUlDQWdJQ0FnSUNCcGJtNWxjaUFyUFNCamFHRnlPMXh1SUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNCdmRYUmxjaUFyUFNCamFHRnlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlBaGFYTk9ZVTRvY0dGeWMyVkpiblFvYVc1dVpYSXBLU0EvSUZ0dmRYUmxjaXdnSnlkZElEb2dXMjkxZEdWeUxDQnBibTVsY2wwN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRFTnZiRzl5UVVGUWFYWnZkQ2h0YjI1dmJXVnlPaUJ6ZEhKcGJtY2dQU0FuSnl3Z2MyTm9aVzFsT2lBblozSnZheWNnUFNBblozSnZheWNwT2lCYmMzUnlhVzVuTENCemRISnBibWNzSUhOMGNtbHVaeXdnYm5WdFltVnlYU0I3WEc0Z0lDQWdMeTlqYjI1emRDQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDBnUVVGUVlXeGxkSFJsY3k1SGNtOXJSM0p2ZFhCektDazdYRzRnSUNBZ1kyOXVjM1FnWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlNBOUlIUm9hWE11WjJWMFVHRnNaWFIwWlNoelkyaGxiV1VwTzF4dUlDQWdJR3hsZENCYmIzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhKZElEMGdkR2hwY3k1blpYUkpibTVsY2s5MWRHVnlLRzF2Ym05dFpYSXBPMXh1SUNBZ0lHOTFkR1Z5VFc5dWIyMWxjaUE5SUNodmRYUmxjazF2Ym05dFpYSXViR1Z1WjNSb0lENGdOaUEvSUdBa2UyOTFkR1Z5VFc5dWIyMWxjaTV6YkdsalpTZ3dMQ0F6S1gwdUxpNWdJRG9nYjNWMFpYSk5iMjV2YldWeUtUdGNiaUFnSUNCcGJtNWxjazF2Ym05dFpYSWdQU0FvYVc1dVpYSk5iMjV2YldWeUxteGxibWQwYUNBK0lEWWdQeUJnSkh0cGJtNWxjazF2Ym05dFpYSXVjMnhwWTJVb01Dd2dNeWw5TGk0dVlDQTZJR2x1Ym1WeVRXOXViMjFsY2lrN1hHNWNiaUFnSUNCcFppQW9iVzl1YjIxbGNpNXNaVzVuZEdnZ1BUMGdNU0I4ZkNCdGIyNXZiV1Z5V3pGZElEMDlJQ2NvSnlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWVcxcGJtOGdQU0J0YjI1dmJXVnlXekJkUHk1MGIxVndjR1Z5UTJGelpTZ3BJVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmhiV2x1YnlCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDljYmlBZ0lDQWdJQ0FnVzJOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVdVoyVjBLR0Z0YVc1dktTd2dZVzFwYm04c0lHbHVibVZ5VFc5dWIyMWxjaXdnTVYwZ09seHVJQ0FnSUNBZ0lDQmJkR2hwY3k1MWJtUmxabWx1WldSRGIyeHZjaXdnYjNWMFpYSk5iMjV2YldWeUxDQnBibTVsY2sxdmJtOXRaWElzSURGZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHRiMjV2YldWeVd6QmRJRDA5SUNka0p5QW1KaUJ0YjI1dmJXVnlXekZkSVNCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdJQ0JwWmlBb2JXOXViMjFsY2k1c1pXNW5kR2dnUFQwZ01pQjhmQ0J0YjI1dmJXVnlXekpkSUQwOUlDY29KeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JoYldsdWJ5QTlJRzF2Ym05dFpYSmJNVjAvTG5SdlZYQndaWEpEWVhObEtDa2hPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdZVzFwYm04Z2FXNGdZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaU0EvWEc0Z0lDQWdJQ0FnSUNBZ1cyTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVXVaMlYwS0dGdGFXNXZLU3dnWVcxcGJtOHNJR2x1Ym1WeVRXOXViMjFsY2l3Z01sMGdPbHh1SUNBZ0lDQWdJQ0FnSUZ0MGFHbHpMblZ1WkdWbWFXNWxaRU52Ykc5eUxDQnZkWFJsY2sxdmJtOXRaWElzSUdsdWJtVnlUVzl1YjIxbGNpd2dNbDA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0cxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RBc0lETXBJR2x1SUhSb2FYTXVRVUZHZFd4c1RtRnRaWE1wSUh0Y2JpQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQXpJSHg4SUcxdmJtOXRaWEpiTTEwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdGdGFXNXZJRDBnZEdocGN5NUJRVVoxYkd4T1lXMWxjMXR0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd3TENBektWMDdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhiV2x1YnlCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDljYmlBZ0lDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBelhTQTZYRzRnSUNBZ0lDQWdJQ0FnVzNSb2FYTXVkVzVrWldacGJtVmtRMjlzYjNJc0lHOTFkR1Z5VFc5dWIyMWxjaXdnYVc1dVpYSk5iMjV2YldWeUxDQXpYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYlc5dWIyMWxjbHN3WFQ4dWRHOU1iM2RsY2tOaGMyVW9LU0E5UFNCdGIyNXZiV1Z5V3pCZEtTQjdYRzRnSUNBZ0lDQnBaaUFvYlc5dWIyMWxjaTV6ZFdKemRISnBibWNvTVN3Z015a2dhVzRnZEdocGN5NUJRVVoxYkd4T1lXMWxjeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9iVzl1YjIxbGNpNXNaVzVuZEdnZ1BUMGdOQ0I4ZkNCdGIyNXZiV1Z5V3pSZElEMDlJQ2NvSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHRnRhVzV2SUQwZ2RHaHBjeTVCUVVaMWJHeE9ZVzFsYzF0dGIyNXZiV1Z5TG5OMVluTjBjbWx1WnlneExDQXpLVjA3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGdGFXNXZJR2x1SUdOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVZ1AxeHVJQ0FnSUNBZ0lDQWdJQ0FnVzJOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVdVoyVjBLR0Z0YVc1dktTd2dZVzFwYm04c0lHbHVibVZ5VFc5dWIyMWxjaXdnTkYwZ09seHVJQ0FnSUNBZ0lDQWdJQ0FnVzNSb2FYTXVkVzVrWldacGJtVmtRMjlzYjNJc0lHOTFkR1Z5VFc5dWIyMWxjaXdnYVc1dVpYSk5iMjV2YldWeUxDQTBYVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQmJkR2hwY3k1MWJtUmxabWx1WldSRGIyeHZjaXdnYjNWMFpYSk5iMjV2YldWeUxDQnBibTVsY2sxdmJtOXRaWElzSURCZE8xeHVJQ0I5WEc1OVhHNGlYWDA9IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IENocm9tYXRvZ3JhbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hyb21hdG9ncmFtID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMuY2hyb21hdG9ncmFtID0gbmV3IE51Y2xlb3RpZGVzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgICdBJzogJ2dyZWVuJyxcbiAgICAgICAgICAgICAgICAnQyc6ICdibHVlJyxcbiAgICAgICAgICAgICAgICAnRyc6ICdibGFjaycsXG4gICAgICAgICAgICAgICAgJ1QnOiAncmVkJyxcbiAgICAgICAgICAgICAgICAnVSc6ICdyZWQnLFxuICAgICAgICAgICAgICAgICdvdGhlcnMnOiAnZ3JheScsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaHJvbWF0b2dyYW07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE51Y2xlb3RpZGVzIHtcbn1cbk51Y2xlb3RpZGVzLlNlbVR5cGUgPSAnTnVjbGVvdGlkZXMnO1xuTnVjbGVvdGlkZXMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50ID0gJ051Y2xlb3RpZGVzTXVsdGlwbGVBbGlnbm1lbnQnO1xuTnVjbGVvdGlkZXMuTmFtZXMgPSB7XG4gICAgJ0EnOiAnQWRlbmluZScsXG4gICAgJ0MnOiAnQ3l0b3NpbmUnLFxuICAgICdHJzogJ0d1YW5pbmUnLFxuICAgICdUJzogJ1RoeW1pbmUnLFxuICAgICdVJzogJ1VyYWNpbCcsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYm5WamJHVnZkR2xrWlhNdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp1ZFdOc1pXOTBhV1JsY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkxRU3hQUVVGUExFVkJRV0VzWTBGQll5eEZRVUZETEUxQlFVMHNaMEpCUVdkQ0xFTkJRVU03UVVGRk1VUXNUVUZCVFN4UFFVRlBMRzFDUVVGdlFpeFRRVUZSTEdOQlFXTTdTVUZIT1VNc1RVRkJUU3hMUVVGTExGbEJRVms3VVVGRE5VSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1dVRkJXU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlEyaERMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJRenRuUWtGRE1VTXNSMEZCUnl4RlFVRkZMRTlCUVU4N1owSkJRMW9zUjBGQlJ5eEZRVUZGTEUxQlFVMDdaMEpCUTFnc1IwRkJSeXhGUVVGRkxFOUJRVTg3WjBKQlExb3NSMEZCUnl4RlFVRkZMRXRCUVVzN1owSkJRMVlzUjBGQlJ5eEZRVUZGTEV0QlFVczdaMEpCUTFZc1VVRkJVU3hGUVVGRkxFMUJRVTA3WVVGRGFrSXNRMEZCUXl4RFFVRkRPMU5CUTBvN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdTVUZETTBJc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeFBRVUZQTEZkQlFWYzdPMEZCUTA0c2JVSkJRVThzUjBGQlZ5eGhRVUZoTEVOQlFVTTdRVUZGYUVNc2IwTkJRWGRDTEVkQlFWY3NPRUpCUVRoQ0xFTkJRVU03UVVGRmNFVXNhVUpCUVVzc1IwRkJjVUk3U1VGRGRFTXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzVlVGQlZUdEpRVU5tTEVkQlFVY3NSVUZCUlN4VFFVRlRPMGxCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNVVUZCVVR0RFFVTmtMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCRVJ5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaR2NuTzF4dVhHNXBiWEJ2Y25RZ2UxTjBjbWx1WjBScFkzUnBiMjVoY25sOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdVMlZ4VUdGc1pYUjBaU3dnVTJWeFVHRnNaWFIwWlVKaGMyVjlJR1p5YjIwZ0p5NHZjMlZ4TFhCaGJHVjBkR1Z6Snp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUU1MVkyeGxiM1JwWkdWelVHRnNaWFIwWlhNZ1pYaDBaVzVrY3lCVFpYRlFZV3hsZEhSbFFtRnpaU0I3WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUdOb2NtOXRZWFJ2WjNKaGJUb2dVMlZ4VUdGc1pYUjBaVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRDQkRhSEp2YldGMGIyZHlZVzBvS1RvZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0SUQwZ2JtVjNJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE1vZTF4dUlDQWdJQ0FnSUNBblFTYzZJQ2RuY21WbGJpY3NYRzRnSUNBZ0lDQWdJQ2RESnpvZ0oySnNkV1VuTEZ4dUlDQWdJQ0FnSUNBblJ5YzZJQ2RpYkdGamF5Y3NJQzh2SUc5eVlXNW5aU0EvWEc0Z0lDQWdJQ0FnSUNkVUp6b2dKM0psWkNjc1hHNGdJQ0FnSUNBZ0lDZFZKem9nSjNKbFpDY3NYRzRnSUNBZ0lDQWdJQ2R2ZEdobGNuTW5PaUFuWjNKaGVTY3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0TzF4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJPZFdOc1pXOTBhV1JsY3lCN1hHNGdJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQlRaVzFVZVhCbE9pQnpkSEpwYm1jZ1BTQW5UblZqYkdWdmRHbGtaWE1uTzF4dVhHNGdJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQlRaVzFVZVhCbFRYVnNkR2x3YkdWQmJHbG5ibTFsYm5RNklITjBjbWx1WnlBOUlDZE9kV05zWlc5MGFXUmxjMDExYkhScGNHeGxRV3hwWjI1dFpXNTBKenRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUU1aGJXVnpPaUJUZEhKcGJtZEVhV04wYVc5dVlYSjVJRDBnZTF4dUlDQWdJQ2RCSnpvZ0owRmtaVzVwYm1VbkxGeHVJQ0FnSUNkREp6b2dKME41ZEc5emFXNWxKeXhjYmlBZ0lDQW5SeWM2SUNkSGRXRnVhVzVsSnl4Y2JpQWdJQ0FuVkNjNklDZFVhSGx0YVc1bEp5eGNiaUFnSUNBblZTYzZJQ2RWY21GamFXd25MRnh1SUNCOU8xeHVmVnh1SWwxOSIsImV4cG9ydCBjbGFzcyBTZXFQYWxldHRlQmFzZSB7XG4gICAgc3RhdGljIG1ha2VQYWxldHRlKGR0LCBzaW1wbGlmaWVkID0gZmFsc2UsIFBhbGV0dGVUeXBlID0gU2VxUGFsZXR0ZUJhc2UpIHtcbiAgICAgICAgY29uc3QgcGFsZXR0ZSA9IHt9O1xuICAgICAgICBkdC5mb3JFYWNoKChjcCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb2JqTGlzdCA9IGNwWzBdO1xuICAgICAgICAgICAgY29uc3QgY29sb3VyID0gY3BbMV07XG4gICAgICAgICAgICBvYmpMaXN0LmZvckVhY2goKG9iaiwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFsZXR0ZVtvYmpdID0gdGhpcy5jb2xvdXJQYWxldHRlW2NvbG91cl1bc2ltcGxpZmllZCA/IDAgOiBpbmRdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFBhbGV0dGVUeXBlKHBhbGV0dGUpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihwYWxldHRlKSB7XG4gICAgICAgIHRoaXMuX3BhbGV0dGUgPSBwYWxldHRlO1xuICAgIH1cbiAgICBnZXQobSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFsZXR0ZVttXTtcbiAgICB9XG59XG5TZXFQYWxldHRlQmFzZS51bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbi8qKiBQYWxldHRlIHdpdGggc2hhZGVzIG9mIHByaW1hcnkgY29sb3JzICovXG5TZXFQYWxldHRlQmFzZS5jb2xvdXJQYWxldHRlID0ge1xuICAgICdvcmFuZ2UnOiBbJ3JnYigyNTUsMTg3LDEyMCknLCAncmdiKDI0NSwxNjcsMTAwKScsICdyZ2IoMjM1LDEzNyw3MCknLCAncmdiKDIwNSwgMTExLCA3MSknXSxcbiAgICAnYWxsX2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KScsICdyZ2IoMjMsMTAzLDU3KScsICdyZ2IoMzAsMTEwLDk2KScsICdyZ2IoNjAsMTMxLDk1KScsXG4gICAgICAgICdyZ2IoMjQsMTEwLDc5KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnYWxsX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDEyMiwgMTAyLCAxODkpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDE0MSwgMTI0LCAyMTcpJyxcbiAgICAgICAgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ21hZ2VudGEnOiBbJ3JnYigxNjIsMTA2LDE5MiknLCAncmdiKDE5NywxNjUsMjI0KScsICdyZ2IoMjA4LDExMywyMTgpJ10sXG4gICAgJ3JlZCc6IFsncmdiKDIxNCwzOSw0MCknLCAncmdiKDI1NSwxNTIsMTUwKSddLFxuICAgICdzdF9ibHVlJzogWydyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMzEsMTE5LDE4MCknXSxcbiAgICAnZGFya19ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDMxLCAxMjAsIDE1MCknXSxcbiAgICAnbGlnaHRfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDEwOCwgMjE4LCAyMjkpJywgJ3JnYigyMywxOTAsMjI3KSddLFxuICAgICdsaWxhY19ibHVlJzogWydyZ2IoMTI0LDEwMiwyMTEpJywgJ3JnYigxNDksMTM0LDIxNyknLCAncmdiKDk3LCA4MSwgMTUwKSddLFxuICAgICdkYXJrX2dyZWVuJzogWydyZ2IoMjMsMTAzLDU3KScsICdyZ2IoMzAsMTEwLDk2KScsICdyZ2IoNjAsMTMxLDk1KScsICdyZ2IoMjQsMTEwLDc5KSddLFxuICAgICdncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknXSxcbiAgICAnbGlnaHRfZ3JlZW4nOiBbJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDE4MiwgMjIzLCAxMzgpJywgJ3JnYigxNTIsIDE5MywgMTM4KSddLFxuICAgICdzdF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMzksIDE3NCwgOTYpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ3BpbmsnOiBbJ3JnYigyNDcsMTgyLDIxMCknXSxcbiAgICAnYnJvd24nOiBbJ3JnYigxNDAsODYsNzUpJywgJ3JnYigxMDIsIDYyLCA1NCknXSxcbiAgICAnZ3JheSc6IFsncmdiKDEyNywxMjcsMTI3KScsICdyZ2IoMTk5LDE5OSwxOTkpJywgJ3JnYigxOTYsMTU2LDE0OCknLCAncmdiKDIyMiwgMjIyLCAxODApJ10sXG4gICAgJ3llbGxvdyc6IFsncmdiKDE4OCwxODksMzQpJ10sXG4gICAgJ3doaXRlJzogWydyZ2IoMjMwLDIzMCwyMzApJ10sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWeExYQmhiR1YwZEdWekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYzJWeExYQmhiR1YwZEdWekxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRV2xDUVN4TlFVRk5MRTlCUVU4c1kwRkJZenRKUVRKQ1ppeE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVhkQ0xFVkJRMjVFTEZWQlFWVXNSMEZCUnl4TFFVRkxMRVZCUVVVc1kwRkJjVU1zWTBGQll6dFJRVVYyUlN4TlFVRk5MRTlCUVU4c1IwRkJPRUlzUlVGQlJTeERRVUZETzFGQlF6bERMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlR0WlFVTm9RaXhOUVVGTkxFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRkRUlzVFVGQlRTeE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pDTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVTdaMEpCUXpOQ0xFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnNSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5NTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1QwRkJUeXhKUVVGSkxGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTnNReXhEUVVGRE8wbEJTVVFzV1VGQldTeFBRVUZuUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJSVTBzUjBGQlJ5eERRVUZETEVOQlFWTTdVVUZEYkVJc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpGQ0xFTkJRVU03TzBGQmFFUmhMRFpDUVVGakxFZEJRVWNzYTBKQlFXdENMRU5CUVVNN1FVRkZiRVFzTkVOQlFUUkRPMEZCUXpsQ0xEUkNRVUZoTEVkQlFXZERPMGxCUTNwRUxGRkJRVkVzUlVGQlJTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEcxQ1FVRnRRaXhEUVVGRE8wbEJRekZHTEZkQlFWY3NSVUZCUlN4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RanRSUVVOd1J5eG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMElzUlVGQlJTeHZRa0ZCYjBJc1EwRkJRenRKUVVOdVJpeFZRVUZWTEVWQlFVVXNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeHBRa0ZCYVVJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJN1VVRkRMMGNzYlVKQlFXMUNMRU5CUVVNN1NVRkRkRUlzVTBGQlV5eEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZEZGtVc1MwRkJTeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETjBNc1UwRkJVeXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhVUpCUVdsQ0xFTkJRVU03U1VGRGNrVXNWMEZCVnl4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU03U1VGRGNrUXNXVUZCV1N4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc2FVSkJRV2xDTEVOQlFVTTdTVUZET1VZc1dVRkJXU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGRE1VVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZEZEVZc1QwRkJUeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZETjBNc1lVRkJZU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU03U1VGREwwVXNWVUZCVlN4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZEZUVZc1RVRkJUU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1NVRkROVUlzVDBGQlR5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRMME1zVFVGQlRTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU03U1VGRE1VWXNVVUZCVVN4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdTVUZETjBJc1QwRkJUeXhGUVVGRkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1EwRkRPVUlzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUdkeWIyc2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMmR5YjJzbk8xeHVhVzF3YjNKMElDb2dZWE1nZFdrZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwzVnBKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDOHZJRlJvWlhKbElHRnlaU0IwYjI4Z2JYVmphQ0J3Y205aWJHVnRJSGRwZEdnZ2FXNWtaWGhsY2lCd2NtOXdaWEowZVNCcGJpQjBlWEJsYzJOeWFYQjBMbHh1SUNBdkx5QXZLaXBjYmlBZ0x5OGdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzBnVFc5dWIyMWxjaUJqYUdGeVlXTjBaWEpjYmlBZ0x5OGdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JEYjJ4dmNseHVJQ0F2THlBZ0tpOWNiaUFnTHk4Z1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp6dGNiaUFnTHlvcUlFMXZibTl0WlhJZ1kyOXNiM0pjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMGdUVzl1YjIxbGNseHVJQ0FnS2k5Y2JpQWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklGTmxjVkJoYkdWMGRHVkNZWE5sSUdsdGNHeGxiV1Z1ZEhNZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdkVzVrWldacGJtVmtRMjlzYjNJZ1BTQW5jbWRpS0RFd01Dd3hNREFzTVRBd0tTYzdYRzVjYmlBZ0x5b3FJRkJoYkdWMGRHVWdkMmwwYUNCemFHRmtaWE1nYjJZZ2NISnBiV0Z5ZVNCamIyeHZjbk1nS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCamIyeHZkWEpRWVd4bGRIUmxPaUI3SUZ0clpYazZJSE4wY21sdVoxMDZJSE4wY21sdVoxdGRJSDBnUFNCN1hHNGdJQ0FnSjI5eVlXNW5aU2M2SUZzbmNtZGlLREkxTlN3eE9EY3NNVEl3S1Njc0lDZHlaMklvTWpRMUxERTJOeXd4TURBcEp5d2dKM0puWWlneU16VXNNVE0zTERjd0tTY3NJQ2R5WjJJb01qQTFMQ0F4TVRFc0lEY3hLU2RkTEZ4dUlDQWdJQ2RoYkd4ZlozSmxaVzRuT2lCYkozSm5ZaWcwTkN3eE5qQXNORFFwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSnl3Z0ozSm5ZaWd5TXl3eE1ETXNOVGNwSnl3Z0ozSm5ZaWd6TUN3eE1UQXNPVFlwSnl3Z0ozSm5ZaWcyTUN3eE16RXNPVFVwSnl4Y2JpQWdJQ0FnSUNkeVoySW9NalFzTVRFd0xEYzVLU2NzSUNkeVoySW9NVFV5TERJeU15d3hNemdwSnl3Z0ozSm5ZaWd4T0RJc0lESXlNeXdnTVRNNEtTY3NJQ2R5WjJJb01UVXlMQ0F4T1RNc0lERXpPQ2tuWFN4Y2JpQWdJQ0FuWVd4c1gySnNkV1VuT2lCYkozSm5ZaWd6TVN3eE1Ua3NNVGd3S1Njc0lDZHlaMklvTWpNc01Ua3dMREl3TnlrbkxDQW5jbWRpS0RFeU1pd2dNVEF5TENBeE9Ea3BKeXdnSjNKbllpZ3hOVGdzTWpFNExESXlPU2tuTENBbmNtZGlLREUwTVN3Z01USTBMQ0F5TVRjcEp5eGNiaUFnSUNBZ0lDZHlaMklvTXpFc0lERXlNQ3dnTVRVd0tTZGRMRnh1SUNBZ0lDZHRZV2RsYm5SaEp6b2dXeWR5WjJJb01UWXlMREV3Tml3eE9USXBKeXdnSjNKbllpZ3hPVGNzTVRZMUxESXlOQ2tuTENBbmNtZGlLREl3T0N3eE1UTXNNakU0S1NkZExGeHVJQ0FnSUNkeVpXUW5PaUJiSjNKbllpZ3lNVFFzTXprc05EQXBKeXdnSjNKbllpZ3lOVFVzTVRVeUxERTFNQ2tuWFN4Y2JpQWdJQ0FuYzNSZllteDFaU2M2SUZzbmNtZGlLREl6TERFNU1Dd3lNRGNwSnl3Z0ozSm5ZaWd4TlRnc01qRTRMREl5T1NrbkxDQW5jbWRpS0RNeExERXhPU3d4T0RBcEoxMHNYRzRnSUNBZ0oyUmhjbXRmWW14MVpTYzZJRnNuY21kaUtETXhMREV4T1N3eE9EQXBKeXdnSjNKbllpZ3pNU3dnTVRJd0xDQXhOVEFwSjEwc1hHNGdJQ0FnSjJ4cFoyaDBYMkpzZFdVbk9pQmJKM0puWWlneU15d3hPVEFzTWpBM0tTY3NJQ2R5WjJJb01UVTRMREl4T0N3eU1qa3BKeXdnSjNKbllpZ3hNRGdzSURJeE9Dd2dNakk1S1Njc0lDZHlaMklvTWpNc01Ua3dMREl5TnlrblhTeGNiaUFnSUNBbmJHbHNZV05mWW14MVpTYzZJRnNuY21kaUtERXlOQ3d4TURJc01qRXhLU2NzSUNkeVoySW9NVFE1TERFek5Dd3lNVGNwSnl3Z0ozSm5ZaWc1Tnl3Z09ERXNJREUxTUNrblhTeGNiaUFnSUNBblpHRnlhMTluY21WbGJpYzZJRnNuY21kaUtESXpMREV3TXl3MU55a25MQ0FuY21kaUtETXdMREV4TUN3NU5pa25MQ0FuY21kaUtEWXdMREV6TVN3NU5Ta25MQ0FuY21kaUtESTBMREV4TUN3M09Ta25YU3hjYmlBZ0lDQW5aM0psWlc0bk9pQmJKM0puWWlnME5Dd3hOakFzTkRRcEp5d2dKM0puWWlnM05Dd3hOakFzTnpRcEoxMHNYRzRnSUNBZ0oyeHBaMmgwWDJkeVpXVnVKem9nV3lkeVoySW9NVFV5TERJeU15d3hNemdwSnl3Z0ozSm5ZaWd4T0RJc0lESXlNeXdnTVRNNEtTY3NJQ2R5WjJJb01UVXlMQ0F4T1RNc0lERXpPQ2tuWFN4Y2JpQWdJQ0FuYzNSZlozSmxaVzRuT2lCYkozSm5ZaWcwTkN3eE5qQXNORFFwSnl3Z0ozSm5ZaWd4TlRJc01qSXpMREV6T0NrbkxDQW5jbWRpS0RNNUxDQXhOelFzSURrMktTY3NJQ2R5WjJJb056UXNNVFl3TERjMEtTZGRMRnh1SUNBZ0lDZHdhVzVySnpvZ1d5ZHlaMklvTWpRM0xERTRNaXd5TVRBcEoxMHNYRzRnSUNBZ0oySnliM2R1SnpvZ1d5ZHlaMklvTVRRd0xEZzJMRGMxS1Njc0lDZHlaMklvTVRBeUxDQTJNaXdnTlRRcEoxMHNYRzRnSUNBZ0oyZHlZWGtuT2lCYkozSm5ZaWd4TWpjc01USTNMREV5TnlrbkxDQW5jbWRpS0RFNU9Td3hPVGtzTVRrNUtTY3NJQ2R5WjJJb01UazJMREUxTml3eE5EZ3BKeXdnSjNKbllpZ3lNaklzSURJeU1pd2dNVGd3S1NkZExGeHVJQ0FnSUNkNVpXeHNiM2NuT2lCYkozSm5ZaWd4T0Rnc01UZzVMRE0wS1NkZExGeHVJQ0FnSUNkM2FHbDBaU2M2SUZzbmNtZGlLREl6TUN3eU16QXNNak13S1NkZExGeHVJQ0I5TzF4dVhHNGdJSEJ5YjNSbFkzUmxaQ0J6ZEdGMGFXTWdiV0ZyWlZCaGJHVjBkR1VvWkhRNklGdHpkSEpwYm1kYlhTd2djM1J5YVc1blhWdGRMRnh1SUNBZ0lITnBiWEJzYVdacFpXUWdQU0JtWVd4elpTd2dVR0ZzWlhSMFpWUjVjR1U2SUhSNWNHVnZaaUJUWlhGUVlXeGxkSFJsUW1GelpTQTlJRk5sY1ZCaGJHVjBkR1ZDWVhObFhHNGdJQ2tnZTF4dUlDQWdJR052Ym5OMElIQmhiR1YwZEdVNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuSUgwZ1BTQjdmVHRjYmlBZ0lDQmtkQzVtYjNKRllXTm9LQ2hqY0NrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2IySnFUR2x6ZENBOUlHTndXekJkTzF4dUlDQWdJQ0FnWTI5dWMzUWdZMjlzYjNWeUlEMGdZM0JiTVYwN1hHNGdJQ0FnSUNCdlltcE1hWE4wTG1admNrVmhZMmdvS0c5aWFpd2dhVzVrS1NBOVBpQjdYRzRnSUNBZ0lDQWdJSEJoYkdWMGRHVmJiMkpxWFNBOUlIUm9hWE11WTI5c2IzVnlVR0ZzWlhSMFpWdGpiMnh2ZFhKZFczTnBiWEJzYVdacFpXUWdQeUF3SURvZ2FXNWtYVHRjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDBwTzF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnVUdGc1pYUjBaVlI1Y0dVb2NHRnNaWFIwWlNrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlGOXdZV3hsZEhSbE9pQjdJRnR0T2lCemRISnBibWRkT2lCemRISnBibWNnZlR0Y2JseHVJQ0JqYjI1emRISjFZM1J2Y2lod1lXeGxkSFJsT2lCN0lGdHRPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmU2tnZTF4dUlDQWdJSFJvYVhNdVgzQmhiR1YwZEdVZ1BTQndZV3hsZEhSbE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ2h0T2lCemRISnBibWNwT2lCemRISnBibWNnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5d1lXeGxkSFJsVzIxZE8xeHVJQ0I5WEc1OVhHNGlYWDA9IiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8qKiBtYWtlcyB0aGUgY29sb3IgbGVzcyB3aGl0ZSwgbWFrZXMgdGhlIHRyYW5zcGFyZW5jeSBlZmZlY3QgYWx3YXlzIHBlcmNlcHRpYmxlXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgeCBjb29yZGluYXRlLlxuICogKi9cbmZ1bmN0aW9uIGNvcnJlY3RDb2xvcihjb2xvcikge1xuICAgIGlmIChjb2xvciA9PSBudWxsKVxuICAgICAgICByZXR1cm4gJ3JnYigxMDAsMTAwLDEwMCknO1xuICAgIGNvbnN0IGRnQ29sb3IgPSBERy5Db2xvci5mcm9tSHRtbChjb2xvcik7XG4gICAgY29uc3QgZyA9IERHLkNvbG9yLmcoZGdDb2xvcik7XG4gICAgY29uc3QgciA9IERHLkNvbG9yLnIoZGdDb2xvcik7XG4gICAgY29uc3QgYiA9IERHLkNvbG9yLmIoZGdDb2xvcik7XG4gICAgLy8gY2FsY3VsYXRlIGV1Y2xpZGVhbiBkaXN0YW5jZSB0byB3aGl0ZVxuICAgIGNvbnN0IGRpc3RUb0JsYWNrID0gTWF0aC5zcXJ0KE1hdGgucG93KDAgLSByLCAyKSArIE1hdGgucG93KDAgLSBnLCAyKSArIE1hdGgucG93KDAgLSBiLCAyKSk7XG4gICAgLy8gbm9ybWFsaXplIHZlY3RvciByIGcgYlxuICAgIGNvbnN0IG5vcm1SID0gciAvIGRpc3RUb0JsYWNrO1xuICAgIGNvbnN0IG5vcm1HID0gZyAvIGRpc3RUb0JsYWNrO1xuICAgIGNvbnN0IG5vcm1CID0gYiAvIGRpc3RUb0JsYWNrO1xuICAgIGlmIChkaXN0VG9CbGFjayA+IDIxMCkge1xuICAgICAgICByZXR1cm4gYHJnYigke25vcm1SICogMjEwfSwke25vcm1HICogMjEwfSwke25vcm1CICogMjEwfSlgO1xuICAgIH1cbiAgICByZXR1cm4gREcuQ29sb3IudG9SZ2IoZGdDb2xvcik7XG59XG5leHBvcnQgY2xhc3MgU3RyaW5nVXRpbHMge1xuICAgIHN0YXRpYyBoYXNoQ29kZShzKSB7XG4gICAgICAgIGxldCBoYXNoID0gMDtcbiAgICAgICAgaWYgKHMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY2hyID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaGFzaCA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpICsgY2hyO1xuICAgICAgICAgICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzaDtcbiAgICB9XG59XG5pbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBVbmtub3duU2VxUGFsZXR0ZSB7XG59XG5leHBvcnQgY2xhc3MgR3JheUFsbFBhbGV0dGUgZXh0ZW5kcyBVbmtub3duU2VxUGFsZXR0ZSB7XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgcmV0dXJuICcjNjY2NjY2JztcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVW5rbm93bkNvbG9yUGFsZXR0ZSBleHRlbmRzIFVua25vd25TZXFQYWxldHRlIHtcbiAgICBzdGF0aWMgYnVpbGRQYWxldHRlKCkge1xuICAgICAgICBjb25zdCByZXMgPSBbXS5jb25jYXQoLi4uT2JqZWN0LnZhbHVlcyhTZXFQYWxldHRlQmFzZS5jb2xvdXJQYWxldHRlKSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGdldChtKSB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSBTdHJpbmdVdGlscy5oYXNoQ29kZShtKTtcbiAgICAgICAgY29uc3QgcEkgPSBoYXNoICUgVW5rbm93bkNvbG9yUGFsZXR0ZS5wYWxldHRlLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGNvcnJlY3RDb2xvcihVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGVbcEldKTtcbiAgICB9XG59XG5Vbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGUgPSBVbmtub3duQ29sb3JQYWxldHRlLmJ1aWxkUGFsZXR0ZSgpO1xuZXhwb3J0IGNsYXNzIFVua25vd25TZXFQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IEdyYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmdyYXkgPT09IHZvaWQgMClcbiAgICAgICAgICAgIHRoaXMuZ3JheSA9IG5ldyBHcmF5QWxsUGFsZXR0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5ncmF5O1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IENvbG9yKCkge1xuICAgICAgICBpZiAodGhpcy5jb2xvciA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IG5ldyBVbmtub3duQ29sb3JQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbG9yO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRXNXJibTkzYmk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblZ1YTI1dmQyNHVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUlVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHBRa0ZCYVVJc1EwRkJRenRCUVVWMFF6czdTMEZGU3p0QlFVTk1MRk5CUVZNc1dVRkJXU3hEUVVGRExFdEJRVzlDTzBsQlEzaERMRWxCUVVrc1MwRkJTeXhKUVVGSkxFbEJRVWs3VVVGRFppeFBRVUZQTEd0Q1FVRnJRaXhEUVVGRE8wbEJSVFZDTEUxQlFVMHNUMEZCVHl4SFFVRlhMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTJwRUxFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlF6bENMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRemxDTEUxQlFVMHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpsQ0xIZERRVUYzUXp0SlFVTjRReXhOUVVGTkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETlVZc2VVSkJRWGxDTzBsQlEzcENMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTTdTVUZET1VJc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXp0SlFVTTVRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVkQlFVY3NWMEZCVnl4RFFVRkRPMGxCUXpsQ0xFbEJRVWtzVjBGQlZ5eEhRVUZITEVkQlFVY3NSVUZCUlR0UlFVTnlRaXhQUVVGUExFOUJRVThzUzBGQlN5eEhRVUZITEVkQlFVY3NTVUZCU1N4TFFVRkxMRWRCUVVjc1IwRkJSeXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0TFFVTTFSRHRKUVVORUxFOUJRVThzUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGFrTXNRMEZCUXp0QlFVVkVMRTFCUVUwc1QwRkJUeXhYUVVGWE8wbEJRMllzVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRlRPMUZCUXpsQ0xFbEJRVWtzU1VGQlNTeEhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTnlRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXp0WlFVTm9RaXhQUVVGUExFbEJRVWtzUTBGQlF6dFJRVU5rTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVZjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRM3BETEUxQlFVMHNSMEZCUnl4SFFVRlhMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY0VNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzFsQlEyeERMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5d3lRa0ZCTWtJN1UwRkRka003VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1EwRkRSanRCUVVWRUxFOUJRVThzUlVGQllTeGpRVUZqTEVWQlFVTXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVVV4UkN4TlFVRk5MRTlCUVdkQ0xHbENRVUZwUWp0RFFVVjBRenRCUVVWRUxFMUJRVTBzVDBGQlR5eGpRVUZsTEZOQlFWRXNhVUpCUVdsQ08wbEJRelZETEVkQlFVY3NRMEZCUXl4RFFVRlRPMUZCUTJ4Q0xFOUJRVThzVTBGQlV5eERRVUZETzBsQlEyNUNMRU5CUVVNN1EwRkRSanRCUVVkRUxFMUJRVTBzVDBGQlR5eHRRa0ZCYjBJc1UwRkJVU3hwUWtGQmFVSTdTVUZIYUVRc1RVRkJUU3hEUVVGRExGbEJRVms3VVVGRGVrSXNUVUZCVFN4SFFVRkhMRWRCUVVrc1JVRkJaU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VZc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVMHNSMEZCUnl4RFFVRkRMRU5CUVZNN1VVRkRiRUlzVFVGQlRTeEpRVUZKTEVkQlFWY3NWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0zUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhKUVVGSkxFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU55UkN4UFFVRlBMRmxCUVZrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUkN4RFFVRkRPenRCUVZoaExESkNRVUZQTEVkQlFXRXNiVUpCUVcxQ0xFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdRVUZqZGtVc1RVRkJUU3hQUVVGUExHdENRVUZ0UWl4VFFVRlJMR05CUVdNN1NVRkhOME1zVFVGQlRTeExRVUZMTEVsQlFVazdVVUZEY0VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeExRVUZMTEV0QlFVc3NRMEZCUXp0WlFVTjBRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NZMEZCWXl4RlFVRkZMRU5CUVVNN1VVRkRia01zVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTI1Q0xFTkJRVU03U1VGSlRTeE5RVUZOTEV0QlFVc3NTMEZCU3p0UlFVTnlRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEV0QlFVc3NTMEZCU3l4RFFVRkRPMWxCUTNaQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4dFFrRkJiVUlzUlVGQlJTeERRVUZETzFGQlEzcERMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dEpRVU53UWl4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCRVJ5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaR2NuTzF4dVhHNHZLaW9nYldGclpYTWdkR2hsSUdOdmJHOXlJR3hsYzNNZ2QyaHBkR1VzSUcxaGEyVnpJSFJvWlNCMGNtRnVjM0JoY21WdVkza2daV1ptWldOMElHRnNkMkY1Y3lCd1pYSmpaWEIwYVdKc1pWeHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR052Ykc5eUlIZ2dZMjl2Y21ScGJtRjBaUzVjYmlBcUlDb3ZYRzVtZFc1amRHbHZiaUJqYjNKeVpXTjBRMjlzYjNJb1kyOXNiM0k2SUhOMGNtbHVaeUI4SUc1MWJHd3BPaUJ6ZEhKcGJtY2dlMXh1SUNCcFppQW9ZMjlzYjNJZ1BUMGdiblZzYkNsY2JpQWdJQ0J5WlhSMWNtNGdKM0puWWlneE1EQXNNVEF3TERFd01Da25PMXh1WEc0Z0lHTnZibk4wSUdSblEyOXNiM0k2SUc1MWJXSmxjaUE5SUVSSExrTnZiRzl5TG1aeWIyMUlkRzFzS0dOdmJHOXlLVHRjYmlBZ1kyOXVjM1FnWnlBOUlFUkhMa052Ykc5eUxtY29aR2REYjJ4dmNpazdYRzRnSUdOdmJuTjBJSElnUFNCRVJ5NURiMnh2Y2k1eUtHUm5RMjlzYjNJcE8xeHVJQ0JqYjI1emRDQmlJRDBnUkVjdVEyOXNiM0l1WWloa1owTnZiRzl5S1R0Y2JpQWdMeThnWTJGc1kzVnNZWFJsSUdWMVkyeHBaR1ZoYmlCa2FYTjBZVzVqWlNCMGJ5QjNhR2wwWlZ4dUlDQmpiMjV6ZENCa2FYTjBWRzlDYkdGamF5QTlJRTFoZEdndWMzRnlkQ2hOWVhSb0xuQnZkeWd3SUMwZ2Npd2dNaWtnS3lCTllYUm9MbkJ2ZHlnd0lDMGdaeXdnTWlrZ0t5Qk5ZWFJvTG5CdmR5Z3dJQzBnWWl3Z01pa3BPMXh1SUNBdkx5QnViM0p0WVd4cGVtVWdkbVZqZEc5eUlISWdaeUJpWEc0Z0lHTnZibk4wSUc1dmNtMVNJRDBnY2lBdklHUnBjM1JVYjBKc1lXTnJPMXh1SUNCamIyNXpkQ0J1YjNKdFJ5QTlJR2NnTHlCa2FYTjBWRzlDYkdGamF6dGNiaUFnWTI5dWMzUWdibTl5YlVJZ1BTQmlJQzhnWkdsemRGUnZRbXhoWTJzN1hHNGdJR2xtSUNoa2FYTjBWRzlDYkdGamF5QStJREl4TUNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJnY21kaUtDUjdibTl5YlZJZ0tpQXlNVEI5TENSN2JtOXliVWNnS2lBeU1UQjlMQ1I3Ym05eWJVSWdLaUF5TVRCOUtXQTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlFUkhMa052Ykc5eUxuUnZVbWRpS0dSblEyOXNiM0lwTzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1UzUnlhVzVuVlhScGJITWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2hoYzJoRGIyUmxLSE02SUhOMGNtbHVaeWs2SUc1MWJXSmxjaUI3WEc0Z0lDQWdiR1YwSUdoaGMyZzZJRzUxYldKbGNpQTlJREE3WEc0Z0lDQWdhV1lnS0hNdWJHVnVaM1JvSUQwOVBTQXdLVnh1SUNBZ0lDQWdjbVYwZFhKdUlHaGhjMmc3WEc0Z0lDQWdabTl5SUNoc1pYUWdhVG9nYm5WdFltVnlJRDBnTURzZ2FTQThJSE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdOb2Nqb2diblZ0WW1WeUlEMGdjeTVqYUdGeVEyOWtaVUYwS0drcE8xeHVJQ0FnSUNBZ2FHRnphQ0E5SUNnb2FHRnphQ0E4UENBMUtTQXRJR2hoYzJncElDc2dZMmh5TzF4dUlDQWdJQ0FnYUdGemFDQjhQU0F3T3lBdkx5QkRiMjUyWlhKMElIUnZJRE15WW1sMElHbHVkR1ZuWlhKY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHaGhjMmc3WEc0Z0lIMWNibjFjYmx4dWFXMXdiM0owSUh0VFpYRlFZV3hsZEhSbExDQlRaWEZRWVd4bGRIUmxRbUZ6WlgwZ1puSnZiU0FuTGk5elpYRXRjR0ZzWlhSMFpYTW5PMXh1WEc1bGVIQnZjblFnWVdKemRISmhZM1FnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVWdhVzF3YkdWdFpXNTBjeUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdjSFZpYkdsaklHRmljM1J5WVdOMElHZGxkQ2h0T2lCemRISnBibWNwT2lCemRISnBibWM3WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCSGNtRjVRV3hzVUdGc1pYUjBaU0JsZUhSbGJtUnpJRlZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxJSHRjYmlBZ2NIVmliR2xqSUdkbGRDaHRPaUJ6ZEhKcGJtY3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lISmxkSFZ5YmlBbkl6WTJOalkyTmljN1hHNGdJSDFjYm4xY2JseHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTQmxlSFJsYm1SeklGVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbElIdGNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QndZV3hsZEhSbE9pQnpkSEpwYm1kYlhTQTlJRlZ1YTI1dmQyNURiMnh2Y2xCaGJHVjBkR1V1WW5WcGJHUlFZV3hsZEhSbEtDazdYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nWW5WcGJHUlFZV3hsZEhSbEtDazZJSE4wY21sdVoxdGRJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTWdQU0FvVzEwZ1lYTWdjM1J5YVc1blcxMHBMbU52Ym1OaGRDZ3VMaTVQWW1wbFkzUXVkbUZzZFdWektGTmxjVkJoYkdWMGRHVkNZWE5sTG1OdmJHOTFjbEJoYkdWMGRHVXBLVHRjYmlBZ0lDQnlaWFIxY200Z2NtVnpPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENodE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUdOdmJuTjBJR2hoYzJnNklHNTFiV0psY2lBOUlGTjBjbWx1WjFWMGFXeHpMbWhoYzJoRGIyUmxLRzBwTzF4dUlDQWdJR052Ym5OMElIQkpJRDBnYUdGemFDQWxJRlZ1YTI1dmQyNURiMnh2Y2xCaGJHVjBkR1V1Y0dGc1pYUjBaUzVzWlc1bmRHZzdYRzRnSUNBZ2NtVjBkWEp1SUdOdmNuSmxZM1JEYjJ4dmNpaFZibXR1YjNkdVEyOXNiM0pRWVd4bGRIUmxMbkJoYkdWMGRHVmJjRWxkS1R0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1Z6SUdWNGRHVnVaSE1nVTJWeFVHRnNaWFIwWlVKaGMyVWdlMXh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJuY21GNU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFZHlZWGtvS1RvZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVozSmhlU0E5UFQwZ2RtOXBaQ0F3S1Z4dUlDQWdJQ0FnZEdocGN5NW5jbUY1SUQwZ2JtVjNJRWR5WVhsQmJHeFFZV3hsZEhSbEtDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaM0poZVR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUdOdmJHOXlPaUJUWlhGUVlXeGxkSFJsTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBJRU52Ykc5eUtDazZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbU52Ykc5eUlEMDlQU0IyYjJsa0lEQXBYRzRnSUNBZ0lDQjBhR2x6TG1OdmJHOXlJRDBnYm1WM0lGVnVhMjV2ZDI1RGIyeHZjbEJoYkdWMGRHVW9LVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjJ4dmNqdGNiaUFnZlZ4dWZWeHVJbDE5IiwiaW1wb3J0IHsgbW9ub21lclRvU2hvcnQgfSBmcm9tICcuL21hY3JvbW9sZWN1bGUnO1xuY29uc3QgdW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG5jb25zdCBncmF5Q29sb3IgPSAnIzgwODA4MCc7XG5jb25zdCBibGFja0NvbG9yID0gJ3JnYigwLDAsMCknO1xuY29uc3QgbW9ub21lclRvU2hvcnRGdW5jdGlvbiA9IG1vbm9tZXJUb1Nob3J0O1xuZXhwb3J0IHZhciBEcmF3U3R5bGU7XG4oZnVuY3Rpb24gKERyYXdTdHlsZSkge1xuICAgIERyYXdTdHlsZVtcIk1TQVwiXSA9IFwiTVNBXCI7XG4gICAgRHJhd1N0eWxlW1wiY2xhc3NpY1wiXSA9IFwiY2xhc3NpY1wiO1xufSkoRHJhd1N0eWxlIHx8IChEcmF3U3R5bGUgPSB7fSkpO1xuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgcHJpbnRzIGEgc3RyaW5nIGFsaWduZWQgdG8gbGVmdCBvciBjZW50ZXJlZC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0geCB4IGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0ge251bWJlcn0geSB5IGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0ge251bWJlcn0gdyBXaWR0aC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBoIEhlaWdodC5cbiAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBnIENhbnZhcyByZW5kZXJpbmcgY29udGV4dC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzIFN0cmluZyB0byBwcmludC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29sb3I9dW5kZWZpbmVkQ29sb3JdIFN0cmluZyBjb2xvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcGl2b3Q9MF0gUGlydm90LlxuICogQHBhcmFtIHtib29sZWFufSBbbGVmdD1mYWxzZV0gSXMgbGVmdCBhbGlnbmVkLlxuICogQHBhcmFtIHtudW1iZXJ9IFt0cmFuc3BhcmVuY3lSYXRlPTAuMF0gVHJhbnNwYXJlbmN5IHJhdGUgd2hlcmUgMS4wIGlzIGZ1bGx5IHRyYW5zcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj0nJ10gSXMgc2VwYXJhdG9yIGZvciBzZXF1ZW5jZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xhc3Q9ZmFsc2VdIElzIGNoZWNrZXIgaWYgZWxlbWVudCBsYXN0IG9yIG5vdC5cbiAqIEBwYXJhbSBkcmF3U3R5bGUgSXMgZHJhdyBzdHlsZS4gTVNBIC0gZm9yIG11bHRpY2hhclNlcSwgY2xhc3NpYyAtIGZvciBvdGhlciBzZXEuXG4gKiBAcGFyYW0gbWF4V29yZCBJcyBhcnJheSBvZiBtYXggd29yZHMgZm9yIGVhY2ggbGluZS5cbiAqIEBwYXJhbSB3b3JkSWR4IElzIGluZGV4IG9mIHdvcmQgd2UgY3VycmVudGx5IGRyYXcuXG4gKiBAcGFyYW0gZ3JpZENlbGwgSXMgZ3JpZCBjZWxsLlxuICogQHBhcmFtIHJlZmVyZW5jZVNlcXVlbmNlIElzIHJlZmVyZW5jZSBzZXF1ZW5jZSBmb3IgZGlmZiBtb2RlLlxuICogQHBhcmFtIG1heExlbmd0aE9mTW9ub21lciBJcyBtYXggbGVuZ3RoIG9mIG1vbm9tZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHggY29vcmRpbmF0ZSB0byBzdGFydCBwcmludGluZyBhdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHByaW50TGVmdE9yQ2VudGVyZWQgPSAoeCwgeSwgdywgaCwgZywgcywgY29sb3IgPSB1bmRlZmluZWRDb2xvciwgcGl2b3QgPSAwLCBsZWZ0ID0gZmFsc2UsIHRyYW5zcGFyZW5jeVJhdGUgPSAxLjAsIHNlcGFyYXRvciA9ICcnLCBsYXN0ID0gZmFsc2UsIGRyYXdTdHlsZSA9IERyYXdTdHlsZS5jbGFzc2ljLCBtYXhXb3JkID0ge30sIHdvcmRJZHggPSAwLCBncmlkQ2VsbCA9IG51bGwsIHJlZmVyZW5jZVNlcXVlbmNlID0gW10sIG1heExlbmd0aE9mTW9ub21lciA9IG51bGwpID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBnLnRleHRBbGlnbiA9ICdzdGFydCc7XG4gICAgbGV0IGNvbG9yUGFydCA9IHMuc3Vic3RyaW5nKDApO1xuICAgIGxldCBncmF5UGFydCA9IGxhc3QgPyAnJyA6IHNlcGFyYXRvcjtcbiAgICBpZiAoZHJhd1N0eWxlID09PSBEcmF3U3R5bGUuTVNBKSB7XG4gICAgICAgIGdyYXlQYXJ0ID0gJyc7XG4gICAgfVxuICAgIGxldCBjb2xvckNvZGUgPSB0cnVlO1xuICAgIGxldCBjb21wYXJlV2l0aEN1cnJlbnQgPSB0cnVlO1xuICAgIGxldCBoaWdobGlnaHREaWZmZXJlbmNlID0gJ2RpZmZlcmVuY2UnO1xuICAgIGlmICgoZ3JpZENlbGwgIT0gbnVsbCkgJiYgKGdyaWRDZWxsLmNlbGwuY29sdW1uICE9IG51bGwpKSB7XG4gICAgICAgIGNvbG9yQ29kZSA9IChfYSA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLnRlbXBbJ2NvbG9yLWNvZGUnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdHJ1ZTtcbiAgICAgICAgY29tcGFyZVdpdGhDdXJyZW50ID0gKF9iID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnY29tcGFyZS13aXRoLWN1cnJlbnQnXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdHJ1ZTtcbiAgICAgICAgaGlnaGxpZ2h0RGlmZmVyZW5jZSA9IChfYyA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLnRlbXBbJ2hpZ2hsaWdodC1kaWZmZXJlbmNlJ10pICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdkaWZmZXJlbmNlJztcbiAgICB9XG4gICAgY29uc3QgY3VycmVudE1vbm9tZXIgPSByZWZlcmVuY2VTZXF1ZW5jZVt3b3JkSWR4XTtcbiAgICBpZiAoY29tcGFyZVdpdGhDdXJyZW50ICYmIChyZWZlcmVuY2VTZXF1ZW5jZS5sZW5ndGggPiAwKSAmJiAoaGlnaGxpZ2h0RGlmZmVyZW5jZSA9PT0gJ2RpZmZlcmVuY2UnKSkge1xuICAgICAgICB0cmFuc3BhcmVuY3lSYXRlID0gKGNvbG9yUGFydCA9PSBjdXJyZW50TW9ub21lcikgPyAwLjMgOiB0cmFuc3BhcmVuY3lSYXRlO1xuICAgIH1cbiAgICBpZiAoY29tcGFyZVdpdGhDdXJyZW50ICYmIChyZWZlcmVuY2VTZXF1ZW5jZS5sZW5ndGggPiAwKSAmJiAoaGlnaGxpZ2h0RGlmZmVyZW5jZSA9PT0gJ2VxdWFsJykpIHtcbiAgICAgICAgdHJhbnNwYXJlbmN5UmF0ZSA9IChjb2xvclBhcnQgIT0gY3VycmVudE1vbm9tZXIpID8gMC4zIDogdHJhbnNwYXJlbmN5UmF0ZTtcbiAgICB9XG4gICAgaWYgKG1heExlbmd0aE9mTW9ub21lciAhPSBudWxsKSB7XG4gICAgICAgIGNvbG9yUGFydCA9IG1vbm9tZXJUb1Nob3J0RnVuY3Rpb24oY29sb3JQYXJ0LCBtYXhMZW5ndGhPZk1vbm9tZXIpO1xuICAgIH1cbiAgICBsZXQgdGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCArIGdyYXlQYXJ0KTtcbiAgICBjb25zdCBpbmRlbnQgPSA1O1xuICAgIGxldCBtYXhDb2xvclRleHRTaXplID0gZy5tZWFzdXJlVGV4dChjb2xvclBhcnQpLndpZHRoO1xuICAgIGxldCBjb2xvclRleHRTaXplID0gZy5tZWFzdXJlVGV4dChjb2xvclBhcnQpLndpZHRoO1xuICAgIGNvbnN0IGR5ID0gaCAvIDIgLSAodGV4dFNpemUuZm9udEJvdW5kaW5nQm94QXNjZW50ICsgdGV4dFNpemUuZm9udEJvdW5kaW5nQm94RGVzY2VudCkgLyAyICsgMTtcbiAgICB0ZXh0U2l6ZSA9IHRleHRTaXplLndpZHRoO1xuICAgIGlmIChkcmF3U3R5bGUgPT09IERyYXdTdHlsZS5NU0EpIHtcbiAgICAgICAgbWF4Q29sb3JUZXh0U2l6ZSA9IG1heFdvcmRbd29yZElkeF07XG4gICAgICAgIHRleHRTaXplID0gbWF4V29yZFt3b3JkSWR4XTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZHJhdyhkeDEsIGR4Mikge1xuICAgICAgICBjb25zdCBkcmF3Q29sb3IgPSBjb2xvckNvZGUgPyBjb2xvciA6IGJsYWNrQ29sb3I7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gZHJhd0NvbG9yO1xuICAgICAgICBnLmdsb2JhbEFscGhhID0gdHJhbnNwYXJlbmN5UmF0ZTtcbiAgICAgICAgaWYgKGRyYXdTdHlsZSA9PT0gRHJhd1N0eWxlLmNsYXNzaWMpIHtcbiAgICAgICAgICAgIGcuZmlsbFRleHQoY29sb3JQYXJ0LCB4ICsgZHgxLCB5ICsgZHkpO1xuICAgICAgICAgICAgZy5maWxsU3R5bGUgPSBncmF5Q29sb3I7XG4gICAgICAgICAgICBnLmZpbGxUZXh0KGdyYXlQYXJ0LCB4ICsgZHgyLCB5ICsgZHkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkcmF3U3R5bGUgPT09IERyYXdTdHlsZS5NU0EpIHtcbiAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gZHJhd0NvbG9yO1xuICAgICAgICAgICAgZy5maWxsVGV4dChjb2xvclBhcnQsIHggKyBkeDEgKyAoKG1heFdvcmRbd29yZElkeF0gLSBjb2xvclRleHRTaXplKSAvIDIpLCB5ICsgZHkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChsZWZ0IHx8IHRleHRTaXplID4gdykge1xuICAgICAgICBkcmF3KGluZGVudCwgaW5kZW50ICsgbWF4Q29sb3JUZXh0U2l6ZSk7XG4gICAgICAgIHJldHVybiB4ICsgbWF4Q29sb3JUZXh0U2l6ZSArIGcubWVhc3VyZVRleHQoZ3JheVBhcnQpLndpZHRoO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgZHggPSAodyAtIHRleHRTaXplKSAvIDI7XG4gICAgICAgIGRyYXcoZHgsIGR4ICsgbWF4Q29sb3JUZXh0U2l6ZSk7XG4gICAgICAgIHJldHVybiB4ICsgZHggKyBtYXhDb2xvclRleHRTaXplO1xuICAgIH1cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMlZzYkMxeVpXNWtaWEpsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbU5sYkd3dGNtVnVaR1Z5WlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJSVUVzVDBGQlR5eEZRVUZETEdOQlFXTXNSVUZCUXl4TlFVRk5MR2xDUVVGcFFpeERRVUZETzBGQlJTOURMRTFCUVUwc1kwRkJZeXhIUVVGSExHdENRVUZyUWl4RFFVRkRPMEZCUXpGRExFMUJRVTBzVTBGQlV5eEhRVUZITEZOQlFWTXNRMEZCUXp0QlFVTTFRaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eFpRVUZaTEVOQlFVTTdRVUZEYUVNc1RVRkJUU3h6UWtGQmMwSXNSMEZCTUVRc1kwRkJZeXhEUVVGRE8wRkJSWEpITEUxQlFVMHNRMEZCVGl4SlFVRlpMRk5CUjFnN1FVRklSQ3hYUVVGWkxGTkJRVk03U1VGRGJrSXNkMEpCUVZjc1EwRkJRVHRKUVVOWUxHZERRVUZ0UWl4RFFVRkJPMEZCUTNKQ0xFTkJRVU1zUlVGSVZ5eFRRVUZUTEV0QlFWUXNVMEZCVXl4UlFVZHdRanRCUVVWRU96czdPenM3T3pzN096czdPenM3T3pzN096czdPMGRCYzBKSE8wRkJRMGdzVFVGQlRTeERRVUZETEUxQlFVMHNiVUpCUVcxQ0xFZEJRVWNzUTBGRGFrTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hEUVVGVExFVkJRVVVzUTBGQlV5eEZRVU14UXl4RFFVRXlRaXhGUVVGRkxFTkJRVk1zUlVGQlJTeFJRVUZuUWl4alFVRmpMRVZCUTNSRkxGRkJRV2RDTEVOQlFVTXNSVUZCUlN4SlFVRkpMRWRCUVVjc1MwRkJTeXhGUVVGRkxHMUNRVUV5UWl4SFFVRkhMRVZCUXk5RUxGbEJRVzlDTEVWQlFVVXNSVUZCUlN4UFFVRm5RaXhMUVVGTExFVkJRVVVzV1VGQmRVSXNVMEZCVXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hWUVVGMVF5eEZRVUZGTEVWQlFVVXNWVUZCYTBJc1EwRkJReXhGUVVGRkxGZEJRU3RDTEVsQlFVa3NSVUZCUlN4dlFrRkJPRUlzUlVGQlJTeEZRVUZGTEhGQ1FVRnZReXhKUVVGSkxFVkJRVlVzUlVGQlJUczdTVUZEY0ZJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdTVUZEZEVJc1NVRkJTU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNdlFpeEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRPMGxCUTNKRExFbEJRVWtzVTBGQlV5eExRVUZMTEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVN1VVRkRMMElzVVVGQlVTeEhRVUZITEVWQlFVVXNRMEZCUXp0TFFVTm1PMGxCUTBRc1NVRkJTU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETzBsQlEzSkNMRWxCUVVrc2EwSkJRV3RDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUXpsQ0xFbEJRVWtzYlVKQlFXMUNMRWRCUVVjc1dVRkJXU3hEUVVGRE8wbEJRM1pETEVsQlFVa3NRMEZCUXl4UlFVRlJMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFTkJRVU1zUlVGQlJUdFJRVU40UkN4VFFVRlRMRWRCUVVjc1RVRkJRU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExHMURRVUZKTEVsQlFVa3NRMEZCUXp0UlFVTTFSQ3hyUWtGQmEwSXNSMEZCUnl4TlFVRkJMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eHRRMEZCU1N4SlFVRkpMRU5CUVVNN1VVRkRMMFVzYlVKQlFXMUNMRWRCUVVjc1RVRkJRU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNiVU5CUVVrc1dVRkJXU3hEUVVGRE8wdEJSWHBHTzBsQlEwUXNUVUZCVFN4alFVRmpMRWRCUVZjc2FVSkJRV2xDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRNVVFzU1VGQlNTeHJRa0ZCYTBJc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhMUVVGTExGbEJRVmtzUTBGQlF5eEZRVUZGTzFGQlEyeEhMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNVMEZCVXl4SlFVRkpMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETzB0QlF6TkZPMGxCUTBRc1NVRkJTU3hyUWtGQmEwSXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4TFFVRkxMRTlCUVU4c1EwRkJReXhGUVVGRk8xRkJRemRHTEdkQ1FVRm5RaXhIUVVGSExFTkJRVU1zVTBGQlV5eEpRVUZKTEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRE8wdEJRek5GTzBsQlEwUXNTVUZCU1N4clFrRkJhMElzU1VGQlNTeEpRVUZKTEVWQlFVVTdVVUZET1VJc1UwRkJVeXhIUVVGSExITkNRVUZ6UWl4RFFVRkRMRk5CUVZNc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMHRCUTI1Rk8wbEJSMFFzU1VGQlNTeFJRVUZSTEVkQlFWRXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFZEJRVWNzVVVGQlVTeERRVUZETEVOQlFVTTdTVUZEZUVRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXcENMRWxCUVVrc1owSkJRV2RDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdTVUZEZEVRc1NVRkJTU3hoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU03U1VGRGJrUXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4eFFrRkJjVUlzUjBGQlJ5eFJRVUZSTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpsR0xGRkJRVkVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUXpGQ0xFbEJRVWtzVTBGQlV5eExRVUZMTEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVN1VVRkRMMElzWjBKQlFXZENMRWRCUVVjc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEzQkRMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTMEZETjBJN1NVRkZSQ3hUUVVGVExFbEJRVWtzUTBGQlF5eEhRVUZYTEVWQlFVVXNSMEZCVnp0UlFVTndReXhOUVVGTkxGTkJRVk1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zVlVGQlZTeERRVUZETzFGQlEycEVMRU5CUVVNc1EwRkJReXhUUVVGVExFZEJRVWNzVTBGQlV5eERRVUZETzFGQlEzaENMRU5CUVVNc1EwRkJReXhYUVVGWExFZEJRVWNzWjBKQlFXZENMRU5CUVVNN1VVRkRha01zU1VGQlNTeFRRVUZUTEV0QlFVc3NVMEZCVXl4RFFVRkRMRTlCUVU4c1JVRkJSVHRaUVVOdVF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVOMlF5eERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONFFpeERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRUUVVOMlF6dFJRVU5FTEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3V1VGREwwSXNRMEZCUXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhUUVVGVExFTkJRVU03V1VGRGVFSXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEdGQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0VFFVTnVSanRKUVVOSUxFTkJRVU03U1VGRlJDeEpRVUZKTEVsQlFVa3NTVUZCU1N4UlFVRlJMRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hIUVVGSExHZENRVUZuUWl4RFFVRkRMRU5CUVVNN1VVRkRlRU1zVDBGQlR5eERRVUZETEVkQlFVY3NaMEpCUVdkQ0xFZEJRVWNzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU03UzBGRk4wUTdVMEZCVFR0UlFVTk1MRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNNVFpeEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMUZCUTJoRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4blFrRkJaMElzUTBGQlF6dExRVU5zUXp0QlFVTklMRU5CUVVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibWx0Y0c5eWRDQjdiVzl1YjIxbGNsUnZVMmh2Y25SOUlHWnliMjBnSnk0dmJXRmpjbTl0YjJ4bFkzVnNaU2M3WEc1Y2JtTnZibk4wSUhWdVpHVm1hVzVsWkVOdmJHOXlJRDBnSjNKbllpZ3hNREFzTVRBd0xERXdNQ2tuTzF4dVkyOXVjM1FnWjNKaGVVTnZiRzl5SUQwZ0p5TTRNRGd3T0RBbk8xeHVZMjl1YzNRZ1lteGhZMnREYjJ4dmNpQTlJQ2R5WjJJb01Dd3dMREFwSnp0Y2JtTnZibk4wSUcxdmJtOXRaWEpVYjFOb2IzSjBSblZ1WTNScGIyNDZJQ2hoYldsdWJ6b2djM1J5YVc1bkxDQnRZWGhNWlc1bmRHaFBaazF2Ym05dFpYSTZJRzUxYldKbGNpa2dQVDRnYzNSeWFXNW5JRDBnYlc5dWIyMWxjbFJ2VTJodmNuUTdYRzVjYm1WNGNHOXlkQ0JsYm5WdElFUnlZWGRUZEhsc1pTQjdYRzRnSUUxVFFTQTlJQ2ROVTBFbkxGeHVJQ0JqYkdGemMybGpJRDBnSjJOc1lYTnphV01uTEZ4dWZWeHVYRzR2S2lwY2JpQXFJRUVnWm5WdVkzUnBiMjRnZEdoaGRDQndjbWx1ZEhNZ1lTQnpkSEpwYm1jZ1lXeHBaMjVsWkNCMGJ5QnNaV1owSUc5eUlHTmxiblJsY21Wa0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCNElIZ2dZMjl2Y21ScGJtRjBaUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCNUlIa2dZMjl2Y21ScGJtRjBaUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCM0lGZHBaSFJvTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHZ2dTR1ZwWjJoMExseHVJQ29nUUhCaGNtRnRJSHREWVc1MllYTlNaVzVrWlhKcGJtZERiMjUwWlhoME1rUjlJR2NnUTJGdWRtRnpJSEpsYm1SbGNtbHVaeUJqYjI1MFpYaDBMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhNZ1UzUnlhVzVuSUhSdklIQnlhVzUwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlGdGpiMnh2Y2oxMWJtUmxabWx1WldSRGIyeHZjbDBnVTNSeWFXNW5JR052Ykc5eUxseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR3YVhadmREMHdYU0JRYVhKMmIzUXVYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0c1pXWjBQV1poYkhObFhTQkpjeUJzWldaMElHRnNhV2R1WldRdVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdXM1J5WVc1emNHRnlaVzVqZVZKaGRHVTlNQzR3WFNCVWNtRnVjM0JoY21WdVkza2djbUYwWlNCM2FHVnlaU0F4TGpBZ2FYTWdablZzYkhrZ2RISmhibk53WVhKbGJuUmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JiYzJWd1lYSmhkRzl5UFNjblhTQkpjeUJ6WlhCaGNtRjBiM0lnWm05eUlITmxjWFZsYm1ObExseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYkdGemREMW1ZV3h6WlYwZ1NYTWdZMmhsWTJ0bGNpQnBaaUJsYkdWdFpXNTBJR3hoYzNRZ2IzSWdibTkwTGx4dUlDb2dRSEJoY21GdElHUnlZWGRUZEhsc1pTQkpjeUJrY21GM0lITjBlV3hsTGlCTlUwRWdMU0JtYjNJZ2JYVnNkR2xqYUdGeVUyVnhMQ0JqYkdGemMybGpJQzBnWm05eUlHOTBhR1Z5SUhObGNTNWNiaUFxSUVCd1lYSmhiU0J0WVhoWGIzSmtJRWx6SUdGeWNtRjVJRzltSUcxaGVDQjNiM0prY3lCbWIzSWdaV0ZqYUNCc2FXNWxMbHh1SUNvZ1FIQmhjbUZ0SUhkdmNtUkpaSGdnU1hNZ2FXNWtaWGdnYjJZZ2QyOXlaQ0IzWlNCamRYSnlaVzUwYkhrZ1pISmhkeTVjYmlBcUlFQndZWEpoYlNCbmNtbGtRMlZzYkNCSmN5Qm5jbWxrSUdObGJHd3VYRzRnS2lCQWNHRnlZVzBnY21WbVpYSmxibU5sVTJWeGRXVnVZMlVnU1hNZ2NtVm1aWEpsYm1ObElITmxjWFZsYm1ObElHWnZjaUJrYVdabUlHMXZaR1V1WEc0Z0tpQkFjR0Z5WVcwZ2JXRjRUR1Z1WjNSb1QyWk5iMjV2YldWeUlFbHpJRzFoZUNCc1pXNW5kR2dnYjJZZ2JXOXViMjFsY2k1Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdlQ0JqYjI5eVpHbHVZWFJsSUhSdklITjBZWEowSUhCeWFXNTBhVzVuSUdGMExseHVJQ292WEc1bGVIQnZjblFnWTI5dWMzUWdjSEpwYm5STVpXWjBUM0pEWlc1MFpYSmxaQ0E5SUNoY2JpQWdlRG9nYm5WdFltVnlMQ0I1T2lCdWRXMWlaWElzSUhjNklHNTFiV0psY2l3Z2FEb2diblZ0WW1WeUxGeHVJQ0JuT2lCRFlXNTJZWE5TWlc1a1pYSnBibWREYjI1MFpYaDBNa1FzSUhNNklITjBjbWx1Wnl3Z1kyOXNiM0k2SUhOMGNtbHVaeUE5SUhWdVpHVm1hVzVsWkVOdmJHOXlMRnh1SUNCd2FYWnZkRG9nYm5WdFltVnlJRDBnTUN3Z2JHVm1kQ0E5SUdaaGJITmxMQ0IwY21GdWMzQmhjbVZ1WTNsU1lYUmxPaUJ1ZFcxaVpYSWdQU0F4TGpBc1hHNGdJSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5JRDBnSnljc0lHeGhjM1E2SUdKdmIyeGxZVzRnUFNCbVlXeHpaU3dnWkhKaGQxTjBlV3hsT2lCRWNtRjNVM1I1YkdVZ1BTQkVjbUYzVTNSNWJHVXVZMnhoYzNOcFl5d2diV0Y0VjI5eVpEb2dleUJiYVc1a1pYZzZJSE4wY21sdVoxMDZJRzUxYldKbGNpQjlJRDBnZTMwc0lIZHZjbVJKWkhnNklHNTFiV0psY2lBOUlEQXNJR2R5YVdSRFpXeHNPaUJFUnk1SGNtbGtRMlZzYkNCOElHNTFiR3dnUFNCdWRXeHNMQ0J5WldabGNtVnVZMlZUWlhGMVpXNWpaVG9nYzNSeWFXNW5XMTBnUFNCYlhTd2diV0Y0VEdWdVozUm9UMlpOYjI1dmJXVnlPaUJ1ZFcxaVpYSWdmQ0J1ZFd4c0lEMGdiblZzYkNrNklHNTFiV0psY2lBOVBpQjdYRzRnSUdjdWRHVjRkRUZzYVdkdUlEMGdKM04wWVhKMEp6dGNiaUFnYkdWMElHTnZiRzl5VUdGeWRDQTlJSE11YzNWaWMzUnlhVzVuS0RBcE8xeHVJQ0JzWlhRZ1ozSmhlVkJoY25RZ1BTQnNZWE4wSUQ4Z0p5Y2dPaUJ6WlhCaGNtRjBiM0k3WEc0Z0lHbG1JQ2hrY21GM1UzUjViR1VnUFQwOUlFUnlZWGRUZEhsc1pTNU5VMEVwSUh0Y2JpQWdJQ0JuY21GNVVHRnlkQ0E5SUNjbk8xeHVJQ0I5WEc0Z0lHeGxkQ0JqYjJ4dmNrTnZaR1VnUFNCMGNuVmxPMXh1SUNCc1pYUWdZMjl0Y0dGeVpWZHBkR2hEZFhKeVpXNTBJRDBnZEhKMVpUdGNiaUFnYkdWMElHaHBaMmhzYVdkb2RFUnBabVpsY21WdVkyVWdQU0FuWkdsbVptVnlaVzVqWlNjN1hHNGdJR2xtSUNnb1ozSnBaRU5sYkd3Z0lUMGdiblZzYkNrZ0ppWWdLR2R5YVdSRFpXeHNMbU5sYkd3dVkyOXNkVzF1SUNFOUlHNTFiR3dwS1NCN1hHNGdJQ0FnWTI5c2IzSkRiMlJsSUQwZ1ozSnBaRU5sYkd3dVkyVnNiQzVqYjJ4MWJXNHVkR1Z0Y0ZzblkyOXNiM0l0WTI5a1pTZGRJRDgvSUhSeWRXVTdYRzRnSUNBZ1kyOXRjR0Z5WlZkcGRHaERkWEp5Wlc1MElEMGdaM0pwWkVObGJHd3VZMlZzYkM1amIyeDFiVzR1ZEdWdGNGc25ZMjl0Y0dGeVpTMTNhWFJvTFdOMWNuSmxiblFuWFNBL1B5QjBjblZsTzF4dUlDQWdJR2hwWjJoc2FXZG9kRVJwWm1abGNtVnVZMlVnUFNCbmNtbGtRMlZzYkM1alpXeHNMbU52YkhWdGJpNTBaVzF3V3lkb2FXZG9iR2xuYUhRdFpHbG1abVZ5Wlc1alpTZGRJRDgvSUNka2FXWm1aWEpsYm1ObEp6dGNibHh1SUNCOVhHNGdJR052Ym5OMElHTjFjbkpsYm5STmIyNXZiV1Z5T2lCemRISnBibWNnUFNCeVpXWmxjbVZ1WTJWVFpYRjFaVzVqWlZ0M2IzSmtTV1I0WFR0Y2JpQWdhV1lnS0dOdmJYQmhjbVZYYVhSb1EzVnljbVZ1ZENBbUppQW9jbVZtWlhKbGJtTmxVMlZ4ZFdWdVkyVXViR1Z1WjNSb0lENGdNQ2tnSmlZZ0tHaHBaMmhzYVdkb2RFUnBabVpsY21WdVkyVWdQVDA5SUNka2FXWm1aWEpsYm1ObEp5a3BJSHRjYmlBZ0lDQjBjbUZ1YzNCaGNtVnVZM2xTWVhSbElEMGdLR052Ykc5eVVHRnlkQ0E5UFNCamRYSnlaVzUwVFc5dWIyMWxjaWtnUHlBd0xqTWdPaUIwY21GdWMzQmhjbVZ1WTNsU1lYUmxPMXh1SUNCOVhHNGdJR2xtSUNoamIyMXdZWEpsVjJsMGFFTjFjbkpsYm5RZ0ppWWdLSEpsWm1WeVpXNWpaVk5sY1hWbGJtTmxMbXhsYm1kMGFDQStJREFwSUNZbUlDaG9hV2RvYkdsbmFIUkVhV1ptWlhKbGJtTmxJRDA5UFNBblpYRjFZV3duS1NrZ2UxeHVJQ0FnSUhSeVlXNXpjR0Z5Wlc1amVWSmhkR1VnUFNBb1kyOXNiM0pRWVhKMElDRTlJR04xY25KbGJuUk5iMjV2YldWeUtTQS9JREF1TXlBNklIUnlZVzV6Y0dGeVpXNWplVkpoZEdVN1hHNGdJSDFjYmlBZ2FXWWdLRzFoZUV4bGJtZDBhRTltVFc5dWIyMWxjaUFoUFNCdWRXeHNLU0I3WEc0Z0lDQWdZMjlzYjNKUVlYSjBJRDBnYlc5dWIyMWxjbFJ2VTJodmNuUkdkVzVqZEdsdmJpaGpiMnh2Y2xCaGNuUXNJRzFoZUV4bGJtZDBhRTltVFc5dWIyMWxjaWs3WEc0Z0lIMWNibHh1WEc0Z0lHeGxkQ0IwWlhoMFUybDZaVG9nWVc1NUlEMGdaeTV0WldGemRYSmxWR1Y0ZENoamIyeHZjbEJoY25RZ0t5Qm5jbUY1VUdGeWRDazdYRzRnSUdOdmJuTjBJR2x1WkdWdWRDQTlJRFU3WEc1Y2JpQWdiR1YwSUcxaGVFTnZiRzl5VkdWNGRGTnBlbVVnUFNCbkxtMWxZWE4xY21WVVpYaDBLR052Ykc5eVVHRnlkQ2t1ZDJsa2RHZzdYRzRnSUd4bGRDQmpiMnh2Y2xSbGVIUlRhWHBsSUQwZ1p5NXRaV0Z6ZFhKbFZHVjRkQ2hqYjJ4dmNsQmhjblFwTG5kcFpIUm9PMXh1SUNCamIyNXpkQ0JrZVNBOUlHZ2dMeUF5SUMwZ0tIUmxlSFJUYVhwbExtWnZiblJDYjNWdVpHbHVaMEp2ZUVGelkyVnVkQ0FySUhSbGVIUlRhWHBsTG1admJuUkNiM1Z1WkdsdVowSnZlRVJsYzJObGJuUXBJQzhnTWlBcklERTdYRzRnSUhSbGVIUlRhWHBsSUQwZ2RHVjRkRk5wZW1VdWQybGtkR2c3WEc0Z0lHbG1JQ2hrY21GM1UzUjViR1VnUFQwOUlFUnlZWGRUZEhsc1pTNU5VMEVwSUh0Y2JpQWdJQ0J0WVhoRGIyeHZjbFJsZUhSVGFYcGxJRDBnYldGNFYyOXlaRnQzYjNKa1NXUjRYVHRjYmlBZ0lDQjBaWGgwVTJsNlpTQTlJRzFoZUZkdmNtUmJkMjl5WkVsa2VGMDdYRzRnSUgxY2JseHVJQ0JtZFc1amRHbHZiaUJrY21GM0tHUjRNVG9nYm5WdFltVnlMQ0JrZURJNklHNTFiV0psY2lrNklIWnZhV1FnZTF4dUlDQWdJR052Ym5OMElHUnlZWGREYjJ4dmNpQTlJR052Ykc5eVEyOWtaU0EvSUdOdmJHOXlJRG9nWW14aFkydERiMnh2Y2p0Y2JpQWdJQ0JuTG1acGJHeFRkSGxzWlNBOUlHUnlZWGREYjJ4dmNqdGNiaUFnSUNCbkxtZHNiMkpoYkVGc2NHaGhJRDBnZEhKaGJuTndZWEpsYm1ONVVtRjBaVHRjYmlBZ0lDQnBaaUFvWkhKaGQxTjBlV3hsSUQwOVBTQkVjbUYzVTNSNWJHVXVZMnhoYzNOcFl5a2dlMXh1SUNBZ0lDQWdaeTVtYVd4c1ZHVjRkQ2hqYjJ4dmNsQmhjblFzSUhnZ0t5QmtlREVzSUhrZ0t5QmtlU2s3WEc0Z0lDQWdJQ0JuTG1acGJHeFRkSGxzWlNBOUlHZHlZWGxEYjJ4dmNqdGNiaUFnSUNBZ0lHY3VabWxzYkZSbGVIUW9aM0poZVZCaGNuUXNJSGdnS3lCa2VESXNJSGtnS3lCa2VTazdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaGtjbUYzVTNSNWJHVWdQVDA5SUVSeVlYZFRkSGxzWlM1TlUwRXBJSHRjYmlBZ0lDQWdJR2N1Wm1sc2JGTjBlV3hsSUQwZ1pISmhkME52Ykc5eU8xeHVJQ0FnSUNBZ1p5NW1hV3hzVkdWNGRDaGpiMnh2Y2xCaGNuUXNJSGdnS3lCa2VERWdLeUFvS0cxaGVGZHZjbVJiZDI5eVpFbGtlRjBnTFNCamIyeHZjbFJsZUhSVGFYcGxLU0F2SURJcExDQjVJQ3NnWkhrcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHbG1JQ2hzWldaMElIeDhJSFJsZUhSVGFYcGxJRDRnZHlrZ2UxeHVJQ0FnSUdSeVlYY29hVzVrWlc1MExDQnBibVJsYm5RZ0t5QnRZWGhEYjJ4dmNsUmxlSFJUYVhwbEtUdGNiaUFnSUNCeVpYUjFjbTRnZUNBcklHMWhlRU52Ykc5eVZHVjRkRk5wZW1VZ0t5Qm5MbTFsWVhOMWNtVlVaWGgwS0dkeVlYbFFZWEowS1M1M2FXUjBhRHRjYmx4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUdOdmJuTjBJR1I0SUQwZ0tIY2dMU0IwWlhoMFUybDZaU2tnTHlBeU8xeHVJQ0FnSUdSeVlYY29aSGdzSUdSNElDc2diV0Y0UTI5c2IzSlVaWGgwVTJsNlpTazdYRzRnSUNBZ2NtVjBkWEp1SUhnZ0t5QmtlQ0FySUcxaGVFTnZiRzl5VkdWNGRGTnBlbVU3WEc0Z0lIMWNibjA3WEc1Y2JpSmRmUT09IiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyB2ZWN0b3JMZW5ndGgsIHZlY3RvckRvdFByb2R1Y3QgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBBbWlub2FjaWRzUGFsZXR0ZXMgfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7IE51Y2xlb3RpZGVzUGFsZXR0ZXMgfSBmcm9tICcuLi9udWNsZW90aWRlcyc7XG5pbXBvcnQgeyBVbmtub3duU2VxUGFsZXR0ZXMgfSBmcm9tICcuLi91bmtub3duJztcbmltcG9ydCB7IFVuaXRzSGFuZGxlciB9IGZyb20gJy4uL3V0aWxzL3VuaXRzLWhhbmRsZXInO1xuO1xuLyoqIFN0YXRzIG9mIHNlcXVlbmNlcyB3aXRoIHNwZWNpZmllZCBzcGxpdHRlciBmdW5jLCByZXR1cm5zIHsgZnJlcSwgc2FtZUxlbmd0aCB9LlxuICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbFxuICogQHBhcmFtIHtudW1iZXJ9IG1pbkxlbmd0aFxuICogQHBhcmFtIHtTcGxpdHRlckZ1bmN9IHNwbGl0dGVyXG4gKiBAcmV0dXJuIHsgU2VxQ29sU3RhdHMgfSwgc2FtZUxlbmd0aDogYm9vbGVhbiB9IHN0YXRzIG9mIGNvbHVtbiBzZXF1ZW5jZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlcikge1xuICAgIGNvbnN0IGZyZXEgPSB7fTtcbiAgICBsZXQgc2FtZUxlbmd0aCA9IHRydWU7XG4gICAgbGV0IGZpcnN0TGVuZ3RoID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IHNlcSBvZiBzZXFDb2wuY2F0ZWdvcmllcykge1xuICAgICAgICBjb25zdCBtU2VxID0gc3BsaXR0ZXIoc2VxKTtcbiAgICAgICAgaWYgKGZpcnN0TGVuZ3RoID09IG51bGwpXG4gICAgICAgICAgICBmaXJzdExlbmd0aCA9IG1TZXEubGVuZ3RoO1xuICAgICAgICBlbHNlIGlmIChtU2VxLmxlbmd0aCAhPT0gZmlyc3RMZW5ndGgpXG4gICAgICAgICAgICBzYW1lTGVuZ3RoID0gZmFsc2U7XG4gICAgICAgIGlmIChtU2VxLmxlbmd0aCA+PSBtaW5MZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBtU2VxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEobSBpbiBmcmVxKSlcbiAgICAgICAgICAgICAgICAgICAgZnJlcVttXSA9IDA7XG4gICAgICAgICAgICAgICAgZnJlcVttXSArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGZyZXE6IGZyZXEsIHNhbWVMZW5ndGg6IHNhbWVMZW5ndGggfTtcbn1cbmV4cG9ydCBjb25zdCBtb25vbWVyUmUgPSAvXFxbKFxcdyspXFxdfChcXHcpfCgtKS9nO1xuLyoqIFNwbGl0IHNlcXVlbmNlIGZvciBzaW5nbGUgY2hhcmFjdGVyIG1vbm9tZXJzLCBzcXVhcmUgYnJhY2tldHMgbXVsdGljaGFyIG1vbm9tZXIgbmFtZXMgb3IgZ2FwIHN5bWJvbC5cbiAqIEBwYXJhbSB7YW55fSBzZXEgb2JqZWN0IHdpdGggc2VxdWVuY2VcbiAqIEByZXR1cm4ge3N0cmluZ1tdfSBhcnJheSBvZiBtb25vbWVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXR0ZXJBc0Zhc3RhKHNlcSkge1xuICAgIHJldHVybiB3dShzZXEudG9TdHJpbmcoKS5tYXRjaEFsbChtb25vbWVyUmUpKVxuICAgICAgICAubWFwKChtYSkgPT4ge1xuICAgICAgICBsZXQgbVJlcztcbiAgICAgICAgY29uc3QgbSA9IG1hWzBdO1xuICAgICAgICBpZiAobS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBtUmVzID0gbWFbMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtUmVzID0gbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbVJlcztcbiAgICB9KS50b0FycmF5KCk7XG59XG4vKiogR2V0cyBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2UgYnkgc2VwYXJhdG9yXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yXG4gKiBAcGFyYW0gbGltaXRcbiAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IsIGxpbWl0ID0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIChzZXEpID0+IHtcbiAgICAgICAgcmV0dXJuIHNlcS5zcGxpdChzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9O1xufVxuY29uc3QgaGVsbVJlID0gLyhQRVBUSURFMXxETkExfFJOQTEpXFx7KFtefV0rKX0vZztcbmNvbnN0IGhlbG1QcDFSZSA9IC9cXFsoW15cXFtcXF1dKyldL2c7XG4vKiogU3BsaXRzIEhlbG0gc3RyaW5nIHRvIG1vbm9tZXJzLCBidXQgZG9lcyBub3QgcmVwbGFjZSBtb25vbWVyIG5hbWVzIHRvIG90aGVyIG5vdGF0aW9uIChlLmcuIGZvciBSTkEpLlxuICogT25seSBmb3IgbGluZWFyIHBvbHltZXJzLCBkb2VzIG5vdCBzcGxpdCBSTkEgZm9yIHJpYm9zZSBhbmQgcGhvc3BoYXRlIG1vbm9tZXJzLlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcSBTb3VyY2Ugc3RyaW5nIG9mIEhFTE0gbm90YXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXR0ZXJBc0hlbG0oc2VxKSB7XG4gICAgaGVsbVJlLmxhc3RJbmRleCA9IDA7XG4gICAgY29uc3QgZWEgPSBoZWxtUmUuZXhlYyhzZXEudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgaW5TZXEgPSBlYSA/IGVhWzJdIDogbnVsbDtcbiAgICBjb25zdCBtbVBvc3RQcm9jZXNzID0gKG1tKSA9PiB7XG4gICAgICAgIGhlbG1QcDFSZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBwcDFNID0gaGVsbVBwMVJlLmV4ZWMobW0pO1xuICAgICAgICBpZiAocHAxTSAmJiBwcDFNLmxlbmd0aCA+PSAyKVxuICAgICAgICAgICAgcmV0dXJuIHBwMU1bMV07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBtbTtcbiAgICB9O1xuICAgIGNvbnN0IG1tTGlzdCA9IGluU2VxID8gaW5TZXEuc3BsaXQoJy4nKSA6IFtdO1xuICAgIHJldHVybiBtbUxpc3QubWFwKG1tUG9zdFByb2Nlc3MpO1xufVxuLyoqIEdldCBzcGxpdHRlciBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2VzIHRvIG1vbm9tZXJzXG4gKiBAcGFyYW0ge3N0cmluZ30gdW5pdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvciwgbGltaXQgPSB1bmRlZmluZWQpIHtcbiAgICBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwiZmFzdGFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLykpXG4gICAgICAgIHJldHVybiBzcGxpdHRlckFzRmFzdGE7XG4gICAgZWxzZSBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKSlcbiAgICAgICAgcmV0dXJuIGdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLykpXG4gICAgICAgIHJldHVybiBzcGxpdHRlckFzSGVsbTtcbiAgICBlbHNlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1bml0cyAke3VuaXRzfSAuYCk7XG4gICAgLy8gVE9ETzogU3BsaXR0ZXIgZm9yIEhFTE1cbn1cbi8qKiBHZW5lcmF0ZSBzcGxpdHRlciBmdW5jdGlvbiBmb3Igc2VxdWVuY2UgY29sdW1uXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gY29sXG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9IFNwbGl0dGVyIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlckZvckNvbHVtbihjb2wpIHtcbiAgICBpZiAoY29sLnNlbVR5cGUgIT09IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHZXQgc3BsaXR0ZXIgZm9yIHNlbVR5cGUgXCIke0RHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRX1cIiBvbmx5LmApO1xuICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICBjb25zdCBzZXBhcmF0b3IgPSBjb2wuZ2V0VGFnKFwic2VwYXJhdG9yXCIgLyogVEFHUy5zZXBhcmF0b3IgKi8pO1xuICAgIHJldHVybiBnZXRTcGxpdHRlcih1bml0cywgc2VwYXJhdG9yKTtcbn1cbmNvbnN0IGxvbmdNb25vbWVyUGFydFJlID0gLyhcXHcrKS9nO1xuLyoqIENvbnZlcnQgbG9uZyBtb25vbWVyIG5hbWVzIHRvIHNob3J0IG9uZXMgKi9cbmV4cG9ydCBmdW5jdGlvbiBtb25vbWVyVG9TaG9ydChhbWlubywgbWF4TGVuZ3RoT2ZNb25vbWVyKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCBzaG9ydEFtaW5vTWF0Y2ggPSBhbWluby5tYXRjaChsb25nTW9ub21lclBhcnRSZSk7XG4gICAgY29uc3QgbmVlZEFkZERvdHMgPSBhbWluby5sZW5ndGggPiBtYXhMZW5ndGhPZk1vbm9tZXIgfHwgKChfYSA9IHNob3J0QW1pbm9NYXRjaCA9PT0gbnVsbCB8fCBzaG9ydEFtaW5vTWF0Y2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNob3J0QW1pbm9NYXRjaC5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApID4gMTtcbiAgICBjb25zdCBzaG9ydEFtaW5vID0gKF9iID0gc2hvcnRBbWlub01hdGNoID09PSBudWxsIHx8IHNob3J0QW1pbm9NYXRjaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2hvcnRBbWlub01hdGNoWzBdKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnICc7XG4gICAgcmV0dXJuICFuZWVkQWRkRG90cyA/IHNob3J0QW1pbm8gOiBzaG9ydEFtaW5vLnN1YnN0cmluZygwLCBtYXhMZW5ndGhPZk1vbm9tZXIpICsgJ+KApic7XG59XG4vKiogKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbHBoYWJldChhbHBoYWJldCkge1xuICAgIHN3aXRjaCAoYWxwaGFiZXQpIHtcbiAgICAgICAgY2FzZSBcIkROQVwiIC8qIEFMUEhBQkVULkROQSAqLzpcbiAgICAgICAgICAgIHJldHVybiBVbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldDtcbiAgICAgICAgY2FzZSBcIlJOQVwiIC8qIEFMUEhBQkVULlJOQSAqLzpcbiAgICAgICAgICAgIHJldHVybiBVbml0c0hhbmRsZXIuUm5hRmFzdGFBbHBoYWJldDtcbiAgICAgICAgY2FzZSBcIlBUXCIgLyogQUxQSEFCRVQuUFQgKi86XG4gICAgICAgICAgICByZXR1cm4gVW5pdHNIYW5kbGVyLlBlcHRpZGVGYXN0YUFscGhhYmV0O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBhbHBoYWJldCAnJHthbHBoYWJldH0nLmApO1xuICAgIH1cbn1cbi8qKiBDYWxjdWxhdGUgc2ltaWxhcml0eSBpbiBjdXJyZW50IHNlcXVlbmNlIGFuZCBhbHBoYWJldC5cbiAqIEBwYXJhbSB7TW9ub21lckZyZXFzfSBmcmVxXG4gKiBAcGFyYW0ge1NldDxzdHJpbmc+fSBhbHBoYWJldFxuICogQHBhcmFtIHtzdHJpbmd9IGdhcFN5bWJvbFxuICogQHJldHVybiB7bnVtYmVyfSBDb3NpbmUgc2ltaWxhcml0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KGZyZXEsIGFscGhhYmV0LCBnYXBTeW1ib2wgPSAnLScpIHtcbiAgICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gICAga2V5cy5kZWxldGUoZ2FwU3ltYm9sKTtcbiAgICBjb25zdCBmcmVxQSA9IFtdO1xuICAgIGNvbnN0IGFscGhhYmV0QSA9IFtdO1xuICAgIGZvciAoY29uc3QgbSBvZiBrZXlzKSB7XG4gICAgICAgIGZyZXFBLnB1c2gobSBpbiBmcmVxID8gZnJlcVttXSA6IDApO1xuICAgICAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gICAgfVxuICAgIC8qIFRoZXJlIHdlcmUgYSBmZXcgaWRlYXM6IGNoaS1zcXVhcmVkLCBwZWFyc29uIGNvcnJlbGF0aW9uICh2YXJpYW5jZT8pLCBzY2FsYXIgcHJvZHVjdCAqL1xuICAgIGNvbnN0IGZyZXFWID0gbmV3IFZlY3RvcihmcmVxQSk7XG4gICAgY29uc3QgYWxwaGFiZXRWID0gbmV3IFZlY3RvcihhbHBoYWJldEEpO1xuICAgIHJldHVybiB2ZWN0b3JEb3RQcm9kdWN0KGZyZXFWLCBhbHBoYWJldFYpIC8gKHZlY3Rvckxlbmd0aChmcmVxVikgKiB2ZWN0b3JMZW5ndGgoYWxwaGFiZXRWKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0QWxwaGFiZXQoc3RhdHMpIHtcbiAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFtcIlBUXCIgLyogQUxQSEFCRVQuUFQgKi8sIFVuaXRzSGFuZGxlci5QZXB0aWRlRmFzdGFBbHBoYWJldF0sXG4gICAgICAgIFtcIkROQVwiIC8qIEFMUEhBQkVULkROQSAqLywgVW5pdHNIYW5kbGVyLkRuYUZhc3RhQWxwaGFiZXRdLFxuICAgICAgICBbXCJSTkFcIiAvKiBBTFBIQUJFVC5STkEgKi8sIFVuaXRzSGFuZGxlci5SbmFGYXN0YUFscGhhYmV0XSxcbiAgICBdO1xuICAgIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbSA9IGFscGhhYmV0Q2FuZGlkYXRlcy5tYXAoKGMpID0+IGdldEFscGhhYmV0U2ltaWxhcml0eShzdGF0cy5mcmVxLCBjWzFdKSk7XG4gICAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgICBjb25zdCBhbHBoYWJldCA9IG1heENvcyA+IDAuNjUgPyBhbHBoYWJldENhbmRpZGF0ZXNbYWxwaGFiZXRDYW5kaWRhdGVzU2ltLmluZGV4T2YobWF4Q29zKV1bMF0gOiAnVU4nO1xuICAgIHJldHVybiBhbHBoYWJldDtcbn1cbi8qKiBTZWxlY3RzIGEgc3VpdGFibGUgcGFsZXR0ZSBiYXNlZCBvbiBjb2x1bW4gZGF0YVxuICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbCBDb2x1bW4gdG8gbG9vayBmb3IgYSBwYWxldHRlXG4gKiBAcGFyYW0ge251bWJlcn0gIG1pbkxlbmd0aCBtaW5pbXVtIGxlbmd0aCBvZiBzZXF1ZW5jZSB0byBkZXRlY3QgcGFsZXR0ZSAoZW1wdHkgc3RyaW5ncyBhcmUgYWxsb3dlZClcbiAqIEByZXR1cm4ge1NlcVBhbGV0dGV9IFBhbGV0dGUgY29ycmVzcG9uZGluZyB0byB0aGUgYWxwaGFiZXQgb2YgdGhlIHNlcXVlbmNlcyBpbiB0aGUgY29sdW1uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVXBQYWxldHRlKHNlcUNvbCwgbWluTGVuZ3RoID0gNSkge1xuICAgIGxldCBhbHBoYWJldDtcbiAgICBpZiAoc2VxQ29sLnNlbVR5cGUgPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKSB7XG4gICAgICAgIGNvbnN0IHVoID0gbmV3IFVuaXRzSGFuZGxlcihzZXFDb2wpO1xuICAgICAgICBhbHBoYWJldCA9IHVoLmFscGhhYmV0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhdHMgPSBnZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICAgICAgYWxwaGFiZXQgPSBkZXRlY3RBbHBoYWJldChzdGF0cyk7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9IGdldFBhbGV0dGVCeVR5cGUoYWxwaGFiZXQpO1xuICAgIHJldHVybiByZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFsZXR0ZUJ5VHlwZShwYWxldHRlVHlwZSkge1xuICAgIHN3aXRjaCAocGFsZXR0ZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnUFQnOlxuICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICBjYXNlICdOVCc6XG4gICAgICAgIGNhc2UgJ0ROQSc6XG4gICAgICAgIGNhc2UgJ1JOQSc6XG4gICAgICAgICAgICByZXR1cm4gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICAgIC8vIG90aGVyXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gVW5rbm93blNlcVBhbGV0dGVzLkNvbG9yO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVXBTZXFDb2woZGYpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3Qgc2VtVHlwZUNvbExpc3QgPSBkZi5jb2x1bW5zLmJ5U2VtVHlwZUFsbChERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpO1xuICAgIGxldCByZXNDb2wgPSAoX2EgPSBzZW1UeXBlQ29sTGlzdC5maW5kKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICByZXR1cm4gdW5pdHMgPyB1bml0cy5pbmRleE9mKCdNU0EnKSAhPT0gLTEgOiBmYWxzZTtcbiAgICB9KSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbiAgICBpZiAoIXJlc0NvbCAmJiBzZW1UeXBlQ29sTGlzdC5sZW5ndGggPiAwKVxuICAgICAgICByZXNDb2wgPSBzZW1UeXBlQ29sTGlzdFswXTtcbiAgICByZXR1cm4gcmVzQ29sO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYldGamNtOXRiMnhsWTNWc1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW0xaFkzSnZiVzlzWldOMWJHVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUlVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHBRa0ZCYVVJc1EwRkJRenRCUVVOMFF5eFBRVUZQTEVWQlFVVXNUVUZCVFN4SlFVRkpMRU5CUVVNN1FVRkZjRUlzVDBGQlR5eEZRVUZETEUxQlFVMHNSVUZCUXl4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlEzWkZMRTlCUVU4c1JVRkJReXhaUVVGWkxFVkJRVVVzWjBKQlFXZENMRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVVXZSaXhQUVVGUExFVkJRV0VzYTBKQlFXdENMRVZCUVVNc1RVRkJUU3hsUVVGbExFTkJRVU03UVVGRE4wUXNUMEZCVHl4RlFVRmpMRzFDUVVGdFFpeEZRVUZETEUxQlFVMHNaMEpCUVdkQ0xFTkJRVU03UVVGRGFFVXNUMEZCVHl4RlFVRkRMR3RDUVVGclFpeEZRVUZETEUxQlFVMHNXVUZCV1N4RFFVRkRPMEZCUXpsRExFOUJRVThzUlVGQlF5eFpRVUZaTEVWQlFVTXNUVUZCVFN4M1FrRkJkMElzUTBGQlF6dEJRVFJDYmtRc1EwRkJRenRCUVUxR096czdPenRIUVV0SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEZGQlFWRXNRMEZCUXl4TlFVRnBRaXhGUVVGRkxGTkJRV2xDTEVWQlFVVXNVVUZCYzBJN1NVRkRia1lzVFVGQlRTeEpRVUZKTEVkQlFUUkNMRVZCUVVVc1EwRkJRenRKUVVONlF5eEpRVUZKTEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1NVRkRkRUlzU1VGQlNTeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUlhaQ0xFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRlZCUVZVc1JVRkJSVHRSUVVOdVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRk0wSXNTVUZCU1N4WFFVRlhMRWxCUVVrc1NVRkJTVHRaUVVOeVFpeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRoUVVOMlFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWenRaUVVOc1F5eFZRVUZWTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUlhKQ0xFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4VFFVRlRMRVZCUVVVN1dVRkROVUlzUzBGQlN5eE5RVUZOTEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1owSkJRM0JDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU03YjBKQlEyUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEWkN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEyUTdVMEZEUmp0TFFVTkdPMGxCUTBRc1QwRkJUeXhGUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNWVUZCVlN4RlFVRkZMRlZCUVZVc1JVRkJReXhEUVVGRE8wRkJRemxETEVOQlFVTTdRVUZGUkN4TlFVRk5MRU5CUVVNc1RVRkJUU3hUUVVGVExFZEJRVmNzY1VKQlFYRkNMRU5CUVVNN1FVRkZka1E3T3p0SFFVZEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHVkJRV1VzUTBGQlF5eEhRVUZSTzBsQlEzUkRMRTlCUVU4c1JVRkJSU3hEUVVGdFFpeEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFOQlF6VkVMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVzlDTEVWQlFVVXNSVUZCUlR0UlFVTTFRaXhKUVVGSkxFbEJRVmtzUTBGQlF6dFJRVU5xUWl4TlFVRk5MRU5CUVVNc1IwRkJWeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZUVJc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlR0WlFVTm9RaXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTJRN1lVRkJUVHRaUVVOTUxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEVmp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRha0lzUTBGQlF6dEJRVVZFT3pzN08wZEJTVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNkMEpCUVhkQ0xFTkJRVU1zVTBGQmFVSXNSVUZCUlN4UlFVRTBRaXhUUVVGVE8wbEJReTlHTEU5QlFVOHNRMEZCUXl4SFFVRlhMRVZCUVVVc1JVRkJSVHRSUVVOeVFpeFBRVUZQTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEzSkRMRU5CUVVNc1EwRkJRenRCUVVOS0xFTkJRVU03UVVGRlJDeE5RVUZOTEUxQlFVMHNSMEZCVnl4cFEwRkJhVU1zUTBGQlF6dEJRVU42UkN4TlFVRk5MRk5CUVZNc1IwRkJWeXhuUWtGQlowSXNRMEZCUXp0QlFVVXpRenM3T3p0SFFVbEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eEhRVUZSTzBsQlEzSkRMRTFCUVUwc1EwRkJReXhUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzSkNMRTFCUVUwc1JVRkJSU3hIUVVFeVFpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlF5OUVMRTFCUVUwc1MwRkJTeXhIUVVGclFpeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUlM5RExFMUJRVTBzWVVGQllTeEhRVUZITEVOQlFVTXNSVUZCVlN4RlFVRlZMRVZCUVVVN1VVRkRNME1zVTBGQlV5eERRVUZETEZOQlFWTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRlRUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU5vUXl4SlFVRkpMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdXVUZETVVJc1QwRkJUeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdPMWxCUldZc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRFpDeERRVUZETEVOQlFVTTdTVUZGUml4TlFVRk5MRTFCUVUwc1IwRkJZU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTjJSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1FVRkRia01zUTBGQlF6dEJRVVZFT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRmRCUVZjc1EwRkJReXhMUVVGaExFVkJRVVVzVTBGQmFVSXNSVUZCUlN4UlFVRTBRaXhUUVVGVE8wbEJRMnBITEVsQlFVa3NTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzT0VKQlFXZENPMUZCUTJoRUxFOUJRVThzWlVGQlpTeERRVUZETzFOQlEzQkNMRWxCUVVrc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEZWQlFWVXNjME5CUVc5Q08xRkJRM3BFTEU5QlFVOHNkMEpCUVhkQ0xFTkJRVU1zVTBGQlV5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUXk5RExFbEJRVWtzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRlZCUVZVc05FSkJRV1U3VVVGRGNFUXNUMEZCVHl4alFVRmpMRU5CUVVNN08xRkJSWFJDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2IwSkJRVzlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkZha1FzTUVKQlFUQkNPMEZCUXpWQ0xFTkJRVU03UVVGRlJEczdPMGRCUjBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzYjBKQlFXOUNMRU5CUVVNc1IwRkJZenRKUVVOcVJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4UFFVRlBMRXRCUVVzc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTzFGQlF6RkRMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zTmtKQlFUWkNMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeFRRVUZUTEVOQlFVTXNRMEZCUXp0SlFVVnNSaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTVUZEZUVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNhME5CUVdkQ0xFTkJRVU03U1VGRE4wTXNUMEZCVHl4WFFVRlhMRU5CUVVNc1MwRkJTeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBGQlEzWkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxHbENRVUZwUWl4SFFVRlhMRkZCUVZFc1EwRkJRenRCUVVVelF5d3JRMEZCSzBNN1FVRkRMME1zVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4TFFVRmhMRVZCUVVVc2EwSkJRVEJDT3p0SlFVTjBSU3hOUVVGTkxHVkJRV1VzUjBGQk5FSXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMGxCUTJoR0xFMUJRVTBzVjBGQlZ5eEhRVUZaTEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc2EwSkJRV3RDTEVsQlFVa3NRMEZCUXl4TlFVRkJMR1ZCUVdVc1lVRkJaaXhsUVVGbExIVkNRVUZtTEdWQlFXVXNRMEZCUlN4TlFVRk5MRzFEUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTnlSeXhOUVVGTkxGVkJRVlVzUjBGQlJ5eE5RVUZCTEdWQlFXVXNZVUZCWml4bFFVRmxMSFZDUVVGbUxHVkJRV1VzUTBGQlJ5eERRVUZETEVOQlFVTXNiVU5CUVVrc1IwRkJSeXhEUVVGRE8wbEJReTlETEU5QlFVOHNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGRrWXNRMEZCUXp0QlFVVkVMRTFCUVUwN1FVRkRUaXhOUVVGTkxGVkJRVlVzVjBGQlZ5eERRVUZETEZGQlFXdENPMGxCUXpWRExGRkJRVkVzVVVGQlVTeEZRVUZGTzFGQlEyeENPMWxCUTBVc1QwRkJUeXhaUVVGWkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1VVRkRka003V1VGRFJTeFBRVUZQTEZsQlFWa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dFJRVU4yUXp0WlFVTkZMRTlCUVU4c1dVRkJXU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRPMUZCUXpORE8xbEJRMFVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4NVFrRkJlVUlzVVVGQlVTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTjRSRHRCUVVOSUxFTkJRVU03UVVGRlJEczdPenM3UjBGTFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4eFFrRkJjVUlzUTBGQlF5eEpRVUZyUWl4RlFVRkZMRkZCUVhGQ0xFVkJRVVVzV1VGQmIwSXNSMEZCUnp0SlFVTjBSeXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCVXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTXpSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUlhaQ0xFMUJRVTBzUzBGQlN5eEhRVUZoTEVWQlFVVXNRMEZCUXp0SlFVTXpRaXhOUVVGTkxGTkJRVk1zUjBGQllTeEZRVUZGTEVOQlFVTTdTVUZETDBJc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVWQlFVVTdVVUZEY0VJc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0JETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTjZRenRKUVVORUxEQkdRVUV3Ump0SlFVTXhSaXhOUVVGTkxFdEJRVXNzUjBGQlZ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVONFF5eE5RVUZOTEZOQlFWTXNSMEZCVnl4SlFVRkpMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dEpRVU5vUkN4UFFVRlBMR2RDUVVGblFpeERRVUZETEV0QlFVc3NSVUZCUlN4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01Uml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eExRVUZyUWp0SlFVTXZReXhOUVVGTkxHdENRVUZyUWl4SFFVRTBRanRSUVVOc1JDeDVRa0ZCWXl4WlFVRlpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTTdVVUZEYUVRc01rSkJRV1VzV1VGQldTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8xRkJRemRETERKQ1FVRmxMRmxCUVZrc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0TFFVTTVReXhEUVVGRE8wbEJSVVlzWjBSQlFXZEVPMGxCUTJoRUxFMUJRVTBzY1VKQlFYRkNMRWRCUVdFc2EwSkJRV3RDTEVOQlFVTXNSMEZCUnl4RFFVTTFSQ3hEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyeEVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzBsQlEyeEVMRTFCUVUwc1VVRkJVU3hIUVVGSExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTTdTVUZEY2tjc1QwRkJUeXhSUVVGUkxFTkJRVU03UVVGRGJFSXNRMEZCUXp0QlFVVkVPenM3TzBkQlNVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1lVRkJZU3hEUVVGRExFMUJRV2xDTEVWQlFVVXNXVUZCYjBJc1EwRkJRenRKUVVOd1JTeEpRVUZKTEZGQlFXZENMRU5CUVVNN1NVRkRja0lzU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4SlFVRkpMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeEZRVUZGTzFGQlF6bERMRTFCUVUwc1JVRkJSU3hIUVVGcFFpeEpRVUZKTEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOc1JDeFJRVUZSTEVkQlFVY3NSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJRenRMUVVONFFqdFRRVUZOTzFGQlEwd3NUVUZCVFN4TFFVRkxMRWRCUVdkQ0xGRkJRVkVzUTBGQlF5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJRM2hGTEZGQlFWRXNSMEZCUnl4alFVRmpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGJFTTdTVUZGUkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhuUWtGQlowSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRKUVVOMlF5eFBRVUZQTEVkQlFVY3NRMEZCUXp0QlFVTmlMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1YwRkJiVUk3U1VGRGJFUXNVVUZCVVN4WFFVRlhMRVZCUVVVN1VVRkRja0lzUzBGQlN5eEpRVUZKTzFsQlExQXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdVVUZEZGtNc1MwRkJTeXhKUVVGSkxFTkJRVU03VVVGRFZpeExRVUZMTEV0QlFVc3NRMEZCUXp0UlFVTllMRXRCUVVzc1MwRkJTenRaUVVOU0xFOUJRVThzYlVKQlFXMUNMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRM2hETEZGQlFWRTdVVUZEVmp0WlFVTkZMRTlCUVU4c2EwSkJRV3RDTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUTJwRE8wRkJRMGdzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4WlFVRlpMRU5CUVVNc1JVRkJaMEk3TzBsQlF6TkRMRTFCUVUwc1kwRkJZeXhIUVVGSExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdTVUZEZWtVc1NVRkJTU3hOUVVGTkxFZEJRWEZDTEUxQlFVRXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlEzcEVMRTFCUVUwc1MwRkJTeXhIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU40UXl4UFFVRlBMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUTNKRUxFTkJRVU1zUTBGQlF5eHRRMEZCU1N4SlFVRkpMRU5CUVVNN1NVRkRXQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEdOQlFXTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJRenRSUVVOMFF5eE5RVUZOTEVkQlFVY3NZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemRDTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1YVcxd2IzSjBJSGQxSUdaeWIyMGdKM2QxSnp0Y2JseHVhVzF3YjNKMElIdFdaV04wYjNKOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdkbVZqZEc5eVRHVnVaM1JvTENCMlpXTjBiM0pFYjNSUWNtOWtkV04wZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVjlJR1p5YjIwZ0p5NHVMM05sY1Mxd1lXeGxkSFJsY3ljN1hHNXBiWEJ2Y25RZ2UwRnRhVzV2WVdOcFpITXNJRUZ0YVc1dllXTnBaSE5RWVd4bGRIUmxjMzBnWm5KdmJTQW5MaTR2WVcxcGJtOWhZMmxrY3ljN1hHNXBiWEJ2Y25RZ2UwNTFZMnhsYjNScFpHVnpMQ0JPZFdOc1pXOTBhV1JsYzFCaGJHVjBkR1Z6ZlNCbWNtOXRJQ2N1TGk5dWRXTnNaVzkwYVdSbGN5YzdYRzVwYlhCdmNuUWdlMVZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxjMzBnWm5KdmJTQW5MaTR2ZFc1cmJtOTNiaWM3WEc1cGJYQnZjblFnZTFWdWFYUnpTR0Z1Wkd4bGNuMGdabkp2YlNBbkxpNHZkWFJwYkhNdmRXNXBkSE10YUdGdVpHeGxjaWM3WEc1Y2JseHVMeW9xSUdWdWRXMGdkSGx3WlNCMGJ5QnphVzF3YkdsbWVTQnpaWFIwYVc1bklGd2lkWE5sY2kxbWNtbGxibVJzZVZ3aUlHNXZkR0YwYVc5dUlHbG1JRzVsWTJWemMyRnllU0FxTDF4dVpYaHdiM0owSUdOdmJuTjBJR1Z1ZFcwZ1RrOVVRVlJKVDA0Z2UxeHVJQ0JHUVZOVVFTQTlJQ2RtWVhOMFlTY3NYRzRnSUZORlVFRlNRVlJQVWlBOUlDZHpaWEJoY21GMGIzSW5MRnh1SUNCSVJVeE5JRDBnSjJobGJHMG5MRnh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWlc1MWJTQkJURWxIVGsxRlRsUWdlMXh1SUNCVFJWRmZUVk5CSUQwZ0oxTkZVUzVOVTBFbkxGeHVJQ0JUUlZFZ1BTQW5VMFZSSnl4Y2JuMWNibHh1Wlhod2IzSjBJR052Ym5OMElHVnVkVzBnUVV4UVNFRkNSVlFnZTF4dUlDQkVUa0VnUFNBblJFNUJKeXhjYmlBZ1VrNUJJRDBnSjFKT1FTY3NYRzRnSUZCVUlEMGdKMUJVSnl4Y2JpQWdWVTRnUFNBblZVNG5MRnh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWlc1MWJTQlVRVWRUSUh0Y2JpQWdZV3hwWjI1bFpDQTlJQ2RoYkdsbmJtVmtKeXhjYmlBZ1lXeHdhR0ZpWlhRZ1BTQW5ZV3h3YUdGaVpYUW5MRnh1SUNCaGJIQm9ZV0psZEZOcGVtVWdQU0FuTG1Gc2NHaGhZbVYwVTJsNlpTY3NYRzRnSUdGc2NHaGhZbVYwU1hOTmRXeDBhV05vWVhJZ1BTQW5MbUZzY0doaFltVjBTWE5OZFd4MGFXTm9ZWEluTEZ4dUlDQnpaWEJoY21GMGIzSWdQU0FuYzJWd1lYSmhkRzl5Snl4Y2JuMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGTmxjVU52YkZOMFlYUnpJRDBnZXlCbWNtVnhPaUJOYjI1dmJXVnlSbkpsY1hNc0lITmhiV1ZNWlc1bmRHZzZJR0p2YjJ4bFlXNGdmVnh1Wlhod2IzSjBJSFI1Y0dVZ1UzQnNhWFIwWlhKR2RXNWpJRDBnS0hObGNUb2djM1J5YVc1bktTQTlQaUJ6ZEhKcGJtZGJYVHRjYm1WNGNHOXlkQ0IwZVhCbElFMXZibTl0WlhKR2NtVnhjeUE5SUhzZ1cyMDZJSE4wY21sdVoxMDZJRzUxYldKbGNpQjlPMXh1WEc0dktpb2dVM1JoZEhNZ2IyWWdjMlZ4ZFdWdVkyVnpJSGRwZEdnZ2MzQmxZMmxtYVdWa0lITndiR2wwZEdWeUlHWjFibU1zSUhKbGRIVnlibk1nZXlCbWNtVnhMQ0J6WVcxbFRHVnVaM1JvSUgwdVhHNGdLaUJBY0dGeVlXMGdlMFJITGtOdmJIVnRibjBnYzJWeFEyOXNYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYldsdVRHVnVaM1JvWEc0Z0tpQkFjR0Z5WVcwZ2UxTndiR2wwZEdWeVJuVnVZMzBnYzNCc2FYUjBaWEpjYmlBcUlFQnlaWFIxY200Z2V5QlRaWEZEYjJ4VGRHRjBjeUI5TENCellXMWxUR1Z1WjNSb09pQmliMjlzWldGdUlIMGdjM1JoZEhNZ2IyWWdZMjlzZFcxdUlITmxjWFZsYm1ObGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFUzUmhkSE1vYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzSUcxcGJreGxibWQwYURvZ2JuVnRZbVZ5TENCemNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpLVG9nVTJWeFEyOXNVM1JoZEhNZ2UxeHVJQ0JqYjI1emRDQm1jbVZ4T2lCN0lGdHRPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSWdmU0E5SUh0OU8xeHVJQ0JzWlhRZ2MyRnRaVXhsYm1kMGFDQTlJSFJ5ZFdVN1hHNGdJR3hsZENCbWFYSnpkRXhsYm1kMGFDQTlJRzUxYkd3N1hHNWNiaUFnWm05eUlDaGpiMjV6ZENCelpYRWdiMllnYzJWeFEyOXNMbU5oZEdWbmIzSnBaWE1wSUh0Y2JpQWdJQ0JqYjI1emRDQnRVMlZ4SUQwZ2MzQnNhWFIwWlhJb2MyVnhLVHRjYmx4dUlDQWdJR2xtSUNobWFYSnpkRXhsYm1kMGFDQTlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ1ptbHljM1JNWlc1bmRHZ2dQU0J0VTJWeExteGxibWQwYUR0Y2JpQWdJQ0JsYkhObElHbG1JQ2h0VTJWeExteGxibWQwYUNBaFBUMGdabWx5YzNSTVpXNW5kR2dwWEc0Z0lDQWdJQ0J6WVcxbFRHVnVaM1JvSUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0JwWmlBb2JWTmxjUzVzWlc1bmRHZ2dQajBnYldsdVRHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR052Ym5OMElHMGdiMllnYlZObGNTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lTaHRJR2x1SUdaeVpYRXBLVnh1SUNBZ0lDQWdJQ0FnSUdaeVpYRmJiVjBnUFNBd08xeHVJQ0FnSUNBZ0lDQm1jbVZ4VzIxZElDczlJREU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQjdabkpsY1RvZ1puSmxjU3dnYzJGdFpVeGxibWQwYURvZ2MyRnRaVXhsYm1kMGFIMDdYRzU5WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0J0YjI1dmJXVnlVbVU2SUZKbFowVjRjQ0E5SUM5Y1hGc29YRngzS3lsY1hGMThLRnhjZHlsOEtDMHBMMmM3WEc1Y2JpOHFLaUJUY0d4cGRDQnpaWEYxWlc1alpTQm1iM0lnYzJsdVoyeGxJR05vWVhKaFkzUmxjaUJ0YjI1dmJXVnljeXdnYzNGMVlYSmxJR0p5WVdOclpYUnpJRzExYkhScFkyaGhjaUJ0YjI1dmJXVnlJRzVoYldWeklHOXlJR2RoY0NCemVXMWliMnd1WEc0Z0tpQkFjR0Z5WVcwZ2UyRnVlWDBnYzJWeElHOWlhbVZqZENCM2FYUm9JSE5sY1hWbGJtTmxYRzRnS2lCQWNtVjBkWEp1SUh0emRISnBibWRiWFgwZ1lYSnlZWGtnYjJZZ2JXOXViMjFsY25OY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE53YkdsMGRHVnlRWE5HWVhOMFlTaHpaWEU2SUdGdWVTazZJSE4wY21sdVoxdGRJSHRjYmlBZ2NtVjBkWEp1SUhkMVBGSmxaMFY0Y0UxaGRHTm9RWEp5WVhrK0tITmxjUzUwYjFOMGNtbHVaeWdwTG0xaGRHTm9RV3hzS0cxdmJtOXRaWEpTWlNrcFhHNGdJQ0FnTG0xaGNDZ29iV0U2SUZKbFowVjRjRTFoZEdOb1FYSnlZWGtwSUQwK0lIdGNiaUFnSUNBZ0lHeGxkQ0J0VW1Wek9pQnpkSEpwYm1jN1hHNGdJQ0FnSUNCamIyNXpkQ0J0T2lCemRISnBibWNnUFNCdFlWc3dYVHRjYmlBZ0lDQWdJR2xtSUNodExteGxibWQwYUNBK0lERXBJSHRjYmlBZ0lDQWdJQ0FnYlZKbGN5QTlJRzFoV3pGZE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2JWSmxjeUE5SUcwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnYlZKbGN6dGNiaUFnSUNCOUtTNTBiMEZ5Y21GNUtDazdYRzU5WEc1Y2JpOHFLaUJIWlhSeklHMWxkR2h2WkNCMGJ5QnpjR3hwZENCelpYRjFaVzVqWlNCaWVTQnpaWEJoY21GMGIzSmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6WlhCaGNtRjBiM0pjYmlBcUlFQndZWEpoYlNCc2FXMXBkRnh1SUNvZ1FISmxkSFZ5YmlCN1UzQnNhWFIwWlhKR2RXNWpmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1oyVjBVM0JzYVhSMFpYSlhhWFJvVTJWd1lYSmhkRzl5S0hObGNHRnlZWFJ2Y2pvZ2MzUnlhVzVuTENCc2FXMXBkRG9nYm5WdFltVnlJSHdnZFc1a1pXWnBibVZrSUQwZ2RXNWtaV1pwYm1Wa0tUb2dVM0JzYVhSMFpYSkdkVzVqSUh0Y2JpQWdjbVYwZFhKdUlDaHpaWEU2SUhOMGNtbHVaeWtnUFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUJ6WlhFdWMzQnNhWFFvYzJWd1lYSmhkRzl5TENCc2FXMXBkQ2s3WEc0Z0lIMDdYRzU5WEc1Y2JtTnZibk4wSUdobGJHMVNaVG9nVW1WblJYaHdJRDBnTHloUVJWQlVTVVJGTVh4RVRrRXhmRkpPUVRFcFhGeDdLRnRlZlYwcktYMHZaenRjYm1OdmJuTjBJR2hsYkcxUWNERlNaVG9nVW1WblJYaHdJRDBnTDF4Y1d5aGJYbHhjVzF4Y1hWMHJLVjB2Wnp0Y2JseHVMeW9xSUZOd2JHbDBjeUJJWld4dElITjBjbWx1WnlCMGJ5QnRiMjV2YldWeWN5d2dZblYwSUdSdlpYTWdibTkwSUhKbGNHeGhZMlVnYlc5dWIyMWxjaUJ1WVcxbGN5QjBieUJ2ZEdobGNpQnViM1JoZEdsdmJpQW9aUzVuTGlCbWIzSWdVazVCS1M1Y2JpQXFJRTl1YkhrZ1ptOXlJR3hwYm1WaGNpQndiMng1YldWeWN5d2daRzlsY3lCdWIzUWdjM0JzYVhRZ1VrNUJJR1p2Y2lCeWFXSnZjMlVnWVc1a0lIQm9iM053YUdGMFpTQnRiMjV2YldWeWN5NWNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6WlhFZ1UyOTFjbU5sSUhOMGNtbHVaeUJ2WmlCSVJVeE5JRzV2ZEdGMGFXOXVYRzRnS2lCQWNtVjBkWEp1SUh0emRISnBibWRiWFgxY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE53YkdsMGRHVnlRWE5JWld4dEtITmxjVG9nWVc1NUtUb2djM1J5YVc1blcxMGdlMXh1SUNCb1pXeHRVbVV1YkdGemRFbHVaR1Y0SUQwZ01EdGNiaUFnWTI5dWMzUWdaV0U2SUZKbFowVjRjRVY0WldOQmNuSmhlU0I4SUc1MWJHd2dQU0JvWld4dFVtVXVaWGhsWXloelpYRXVkRzlUZEhKcGJtY29LU2s3WEc0Z0lHTnZibk4wSUdsdVUyVnhPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c0lEMGdaV0VnUHlCbFlWc3lYU0E2SUc1MWJHdzdYRzVjYmlBZ1kyOXVjM1FnYlcxUWIzTjBVSEp2WTJWemN5QTlJQ2h0YlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUQwK0lIdGNiaUFnSUNCb1pXeHRVSEF4VW1VdWJHRnpkRWx1WkdWNElEMGdNRHRjYmlBZ0lDQmpiMjV6ZENCd2NERk5JRDBnYUdWc2JWQndNVkpsTG1WNFpXTW9iVzBwTzF4dUlDQWdJR2xtSUNod2NERk5JQ1ltSUhCd01VMHViR1Z1WjNSb0lENDlJRElwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdjSEF4VFZzeFhUdGNiaUFnSUNCbGJITmxYRzRnSUNBZ0lDQnlaWFIxY200Z2JXMDdYRzRnSUgwN1hHNWNiaUFnWTI5dWMzUWdiVzFNYVhOME9pQnpkSEpwYm1kYlhTQTlJR2x1VTJWeElEOGdhVzVUWlhFdWMzQnNhWFFvSnk0bktTQTZJRnRkTzF4dUlDQnlaWFIxY200Z2JXMU1hWE4wTG0xaGNDaHRiVkJ2YzNSUWNtOWpaWE56S1R0Y2JuMWNibHh1THlvcUlFZGxkQ0J6Y0d4cGRIUmxjaUJ0WlhSb2IyUWdkRzhnYzNCc2FYUWdjMlZ4ZFdWdVkyVnpJSFJ2SUcxdmJtOXRaWEp6WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RXNXBkSE5jYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYQmhjbUYwYjNKY2JpQXFJRUJ3WVhKaGJTQnNhVzFwZEZ4dUlDb2dRSEpsZEhWeWJpQjdVM0JzYVhSMFpYSkdkVzVqZlZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwVTNCc2FYUjBaWElvZFc1cGRITTZJSE4wY21sdVp5d2djMlZ3WVhKaGRHOXlPaUJ6ZEhKcGJtY3NJR3hwYldsME9pQnVkVzFpWlhJZ2ZDQjFibVJsWm1sdVpXUWdQU0IxYm1SbFptbHVaV1FwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNCcFppQW9kVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzV6ZEdGeWRITlhhWFJvS0U1UFZFRlVTVTlPTGtaQlUxUkJLU2xjYmlBZ0lDQnlaWFIxY200Z2MzQnNhWFIwWlhKQmMwWmhjM1JoTzF4dUlDQmxiSE5sSUdsbUlDaDFibWwwY3k1MGIweHZkMlZ5UTJGelpTZ3BMbk4wWVhKMGMxZHBkR2dvVGs5VVFWUkpUMDR1VTBWUVFWSkJWRTlTS1NsY2JpQWdJQ0J5WlhSMWNtNGdaMlYwVTNCc2FYUjBaWEpYYVhSb1UyVndZWEpoZEc5eUtITmxjR0Z5WVhSdmNpd2diR2x0YVhRcE8xeHVJQ0JsYkhObElHbG1JQ2gxYm1sMGN5NTBiMHh2ZDJWeVEyRnpaU2dwTG5OMFlYSjBjMWRwZEdnb1RrOVVRVlJKVDA0dVNFVk1UU2twWEc0Z0lDQWdjbVYwZFhKdUlITndiR2wwZEdWeVFYTklaV3h0TzF4dUlDQmxiSE5sWEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQlZibVY0Y0dWamRHVmtJSFZ1YVhSeklDUjdkVzVwZEhOOUlDNWdLVHRjYmx4dUlDQXZMeUJVVDBSUE9pQlRjR3hwZEhSbGNpQm1iM0lnU0VWTVRWeHVmVnh1WEc0dktpb2dSMlZ1WlhKaGRHVWdjM0JzYVhSMFpYSWdablZ1WTNScGIyNGdabTl5SUhObGNYVmxibU5sSUdOdmJIVnRibHh1SUNvZ1FIQmhjbUZ0SUh0RVJ5NURiMngxYlc1OUlHTnZiRnh1SUNvZ1FISmxkSFZ5YmlCN1UzQnNhWFIwWlhKR2RXNWpmU0JUY0d4cGRIUmxjaUJtZFc1amRHbHZibHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1oyVjBVM0JzYVhSMFpYSkdiM0pEYjJ4MWJXNG9ZMjlzT2lCRVJ5NURiMngxYlc0cE9pQlRjR3hwZEhSbGNrWjFibU1nZTF4dUlDQnBaaUFvWTI5c0xuTmxiVlI1Y0dVZ0lUMDlJRVJITGxORlRWUlpVRVV1VFVGRFVrOU5UMHhGUTFWTVJTbGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVkbGRDQnpjR3hwZEhSbGNpQm1iM0lnYzJWdFZIbHdaU0JjSWlSN1JFY3VVMFZOVkZsUVJTNU5RVU5TVDAxUFRFVkRWVXhGZlZ3aUlHOXViSGt1WUNrN1hHNWNiaUFnWTI5dWMzUWdkVzVwZEhNZ1BTQmpiMnd1WjJWMFZHRm5LRVJITGxSQlIxTXVWVTVKVkZNcE8xeHVJQ0JqYjI1emRDQnpaWEJoY21GMGIzSWdQU0JqYjJ3dVoyVjBWR0ZuS0ZSQlIxTXVjMlZ3WVhKaGRHOXlLVHRjYmlBZ2NtVjBkWEp1SUdkbGRGTndiR2wwZEdWeUtIVnVhWFJ6TENCelpYQmhjbUYwYjNJcE8xeHVmVnh1WEc1amIyNXpkQ0JzYjI1blRXOXViMjFsY2xCaGNuUlNaVG9nVW1WblJYaHdJRDBnTHloY1hIY3JLUzluTzF4dVhHNHZLaW9nUTI5dWRtVnlkQ0JzYjI1bklHMXZibTl0WlhJZ2JtRnRaWE1nZEc4Z2MyaHZjblFnYjI1bGN5QXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzF2Ym05dFpYSlViMU5vYjNKMEtHRnRhVzV2T2lCemRISnBibWNzSUcxaGVFeGxibWQwYUU5bVRXOXViMjFsY2pvZ2JuVnRZbVZ5S1RvZ2MzUnlhVzVuSUh0Y2JpQWdZMjl1YzNRZ2MyaHZjblJCYldsdWIwMWhkR05vT2lCU1pXZEZlSEJOWVhSamFFRnljbUY1SUh3Z2JuVnNiQ0E5SUdGdGFXNXZMbTFoZEdOb0tHeHZibWROYjI1dmJXVnlVR0Z5ZEZKbEtUdGNiaUFnWTI5dWMzUWdibVZsWkVGa1pFUnZkSE02SUdKdmIyeGxZVzRnUFNCaGJXbHVieTVzWlc1bmRHZ2dQaUJ0WVhoTVpXNW5kR2hQWmsxdmJtOXRaWElnZkh3Z0tITm9iM0owUVcxcGJtOU5ZWFJqYUQ4dWJHVnVaM1JvSUQ4L0lEQXBJRDRnTVR0Y2JpQWdZMjl1YzNRZ2MyaHZjblJCYldsdWJ5QTlJSE5vYjNKMFFXMXBibTlOWVhSamFEOHVXekJkSUQ4L0lDY2dKenRjYmlBZ2NtVjBkWEp1SUNGdVpXVmtRV1JrUkc5MGN5QS9JSE5vYjNKMFFXMXBibThnT2lCemFHOXlkRUZ0YVc1dkxuTjFZbk4wY21sdVp5Z3dMQ0J0WVhoTVpXNW5kR2hQWmsxdmJtOXRaWElwSUNzZ0orS0FwaWM3WEc1OVhHNWNiaThxS2lBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRUZzY0doaFltVjBLR0ZzY0doaFltVjBPaUJCVEZCSVFVSkZWQ2s2SUZObGREeHpkSEpwYm1jK0lIdGNiaUFnYzNkcGRHTm9JQ2hoYkhCb1lXSmxkQ2tnZTF4dUlDQmpZWE5sSUVGTVVFaEJRa1ZVTGtST1FUcGNiaUFnSUNCeVpYUjFjbTRnVlc1cGRITklZVzVrYkdWeUxrUnVZVVpoYzNSaFFXeHdhR0ZpWlhRN1hHNGdJR05oYzJVZ1FVeFFTRUZDUlZRdVVrNUJPbHh1SUNBZ0lISmxkSFZ5YmlCVmJtbDBjMGhoYm1Sc1pYSXVVbTVoUm1GemRHRkJiSEJvWVdKbGREdGNiaUFnWTJGelpTQkJURkJJUVVKRlZDNVFWRHBjYmlBZ0lDQnlaWFIxY200Z1ZXNXBkSE5JWVc1a2JHVnlMbEJsY0hScFpHVkdZWE4wWVVGc2NHaGhZbVYwTzF4dUlDQmtaV1poZFd4ME9seHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVlc1emRYQndiM0owWldRZ1lXeHdhR0ZpWlhRZ0p5UjdZV3h3YUdGaVpYUjlKeTVnS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaW9nUTJGc1kzVnNZWFJsSUhOcGJXbHNZWEpwZEhrZ2FXNGdZM1Z5Y21WdWRDQnpaWEYxWlc1alpTQmhibVFnWVd4d2FHRmlaWFF1WEc0Z0tpQkFjR0Z5WVcwZ2UwMXZibTl0WlhKR2NtVnhjMzBnWm5KbGNWeHVJQ29nUUhCaGNtRnRJSHRUWlhROGMzUnlhVzVuUG4wZ1lXeHdhR0ZpWlhSY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQm5ZWEJUZVcxaWIyeGNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUTI5emFXNWxJSE5wYldsc1lYSnBkSGxjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRUZzY0doaFltVjBVMmx0YVd4aGNtbDBlU2htY21WeE9pQk5iMjV2YldWeVJuSmxjWE1zSUdGc2NHaGhZbVYwT2lCVFpYUThjM1J5YVc1blBpd2daMkZ3VTNsdFltOXNPaUJ6ZEhKcGJtY2dQU0FuTFNjcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnJaWGx6SUQwZ2JtVjNJRk5sZER4emRISnBibWMrS0ZzdUxpNXVaWGNnVTJWMEtFOWlhbVZqZEM1clpYbHpLR1p5WlhFcEtTd2dMaTR1WVd4d2FHRmlaWFJkS1R0Y2JpQWdhMlY1Y3k1a1pXeGxkR1VvWjJGd1UzbHRZbTlzS1R0Y2JseHVJQ0JqYjI1emRDQm1jbVZ4UVRvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1kyOXVjM1FnWVd4d2FHRmlaWFJCT2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNCbWIzSWdLR052Ym5OMElHMGdiMllnYTJWNWN5a2dlMXh1SUNBZ0lHWnlaWEZCTG5CMWMyZ29iU0JwYmlCbWNtVnhJRDhnWm5KbGNWdHRYU0E2SURBcE8xeHVJQ0FnSUdGc2NHaGhZbVYwUVM1d2RYTm9LR0ZzY0doaFltVjBMbWhoY3lodEtTQS9JREVnT2lBd0tUdGNiaUFnZlZ4dUlDQXZLaUJVYUdWeVpTQjNaWEpsSUdFZ1ptVjNJR2xrWldGek9pQmphR2t0YzNGMVlYSmxaQ3dnY0dWaGNuTnZiaUJqYjNKeVpXeGhkR2x2YmlBb2RtRnlhV0Z1WTJVL0tTd2djMk5oYkdGeUlIQnliMlIxWTNRZ0tpOWNiaUFnWTI5dWMzUWdabkpsY1ZZNklGWmxZM1J2Y2lBOUlHNWxkeUJXWldOMGIzSW9abkpsY1VFcE8xeHVJQ0JqYjI1emRDQmhiSEJvWVdKbGRGWTZJRlpsWTNSdmNpQTlJRzVsZHlCV1pXTjBiM0lvWVd4d2FHRmlaWFJCS1R0Y2JpQWdjbVYwZFhKdUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb1puSmxjVllzSUdGc2NHaGhZbVYwVmlrZ0x5QW9kbVZqZEc5eVRHVnVaM1JvS0daeVpYRldLU0FxSUhabFkzUnZja3hsYm1kMGFDaGhiSEJvWVdKbGRGWXBLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHUmxkR1ZqZEVGc2NHaGhZbVYwS0hOMFlYUnpPaUJUWlhGRGIyeFRkR0YwY3lrNklITjBjbWx1WnlCN1hHNGdJR052Ym5OMElHRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGN6b2dXM04wY21sdVp5d2dVMlYwUEhOMGNtbHVaejVkVzEwZ1BTQmJYRzRnSUNBZ1cwRk1VRWhCUWtWVUxsQlVMQ0JWYm1sMGMwaGhibVJzWlhJdVVHVndkR2xrWlVaaGMzUmhRV3h3YUdGaVpYUmRMRnh1SUNBZ0lGdEJURkJJUVVKRlZDNUVUa0VzSUZWdWFYUnpTR0Z1Wkd4bGNpNUVibUZHWVhOMFlVRnNjR2hoWW1WMFhTeGNiaUFnSUNCYlFVeFFTRUZDUlZRdVVrNUJMQ0JWYm1sMGMwaGhibVJzWlhJdVVtNWhSbUZ6ZEdGQmJIQm9ZV0psZEYwc1hHNGdJRjA3WEc1Y2JpQWdMeThnUTJGc1kzVnNZWFJsSUd4cGEyVnNhV2h2YjJSeklHWnZjaUJoYkhCb1lXSmxkRjlqWVc1a2FXUmhkR1Z6WEc0Z0lHTnZibk4wSUdGc2NHaGhZbVYwUTJGdVpHbGtZWFJsYzFOcGJUb2diblZ0WW1WeVcxMGdQU0JoYkhCb1lXSmxkRU5oYm1ScFpHRjBaWE11YldGd0tGeHVJQ0FnSUNoaktTQTlQaUJuWlhSQmJIQm9ZV0psZEZOcGJXbHNZWEpwZEhrb2MzUmhkSE11Wm5KbGNTd2dZMXN4WFNrcE8xeHVJQ0JqYjI1emRDQnRZWGhEYjNNZ1BTQk5ZWFJvTG0xaGVDZ3VMaTVoYkhCb1lXSmxkRU5oYm1ScFpHRjBaWE5UYVcwcE8xeHVJQ0JqYjI1emRDQmhiSEJvWVdKbGRDQTlJRzFoZUVOdmN5QStJREF1TmpVZ1B5QmhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTmJZV3h3YUdGaVpYUkRZVzVrYVdSaGRHVnpVMmx0TG1sdVpHVjRUMllvYldGNFEyOXpLVjFiTUYwZ09pQW5WVTRuTzF4dUlDQnlaWFIxY200Z1lXeHdhR0ZpWlhRN1hHNTlYRzVjYmk4cUtpQlRaV3hsWTNSeklHRWdjM1ZwZEdGaWJHVWdjR0ZzWlhSMFpTQmlZWE5sWkNCdmJpQmpiMngxYlc0Z1pHRjBZVnh1SUNvZ1FIQmhjbUZ0SUh0RVJ5NURiMngxYlc1OUlITmxjVU52YkNCRGIyeDFiVzRnZEc4Z2JHOXZheUJtYjNJZ1lTQndZV3hsZEhSbFhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdJRzFwYmt4bGJtZDBhQ0J0YVc1cGJYVnRJR3hsYm1kMGFDQnZaaUJ6WlhGMVpXNWpaU0IwYnlCa1pYUmxZM1FnY0dGc1pYUjBaU0FvWlcxd2RIa2djM1J5YVc1bmN5QmhjbVVnWVd4c2IzZGxaQ2xjYmlBcUlFQnlaWFIxY200Z2UxTmxjVkJoYkdWMGRHVjlJRkJoYkdWMGRHVWdZMjl5Y21WemNHOXVaR2x1WnlCMGJ5QjBhR1VnWVd4d2FHRmlaWFFnYjJZZ2RHaGxJSE5sY1hWbGJtTmxjeUJwYmlCMGFHVWdZMjlzZFcxdVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ3YVdOclZYQlFZV3hsZEhSbEtITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxDQnRhVzVNWlc1bmRHZzZJRzUxYldKbGNpQTlJRFVwT2lCVFpYRlFZV3hsZEhSbElIdGNiaUFnYkdWMElHRnNjR2hoWW1WME9pQnpkSEpwYm1jN1hHNGdJR2xtSUNoelpYRkRiMnd1YzJWdFZIbHdaU0E5UFNCRVJ5NVRSVTFVV1ZCRkxrMUJRMUpQVFU5TVJVTlZURVVwSUh0Y2JpQWdJQ0JqYjI1emRDQjFhRG9nVlc1cGRITklZVzVrYkdWeUlEMGdibVYzSUZWdWFYUnpTR0Z1Wkd4bGNpaHpaWEZEYjJ3cE8xeHVJQ0FnSUdGc2NHaGhZbVYwSUQwZ2RXZ3VZV3h3YUdGaVpYUTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdZMjl1YzNRZ2MzUmhkSE02SUZObGNVTnZiRk4wWVhSeklEMGdaMlYwVTNSaGRITW9jMlZ4UTI5c0xDQnRhVzVNWlc1bmRHZ3NJSE53YkdsMGRHVnlRWE5HWVhOMFlTazdYRzRnSUNBZ1lXeHdhR0ZpWlhRZ1BTQmtaWFJsWTNSQmJIQm9ZV0psZENoemRHRjBjeWs3WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0J5WlhNZ1BTQm5aWFJRWVd4bGRIUmxRbmxVZVhCbEtHRnNjR2hoWW1WMEtUdGNiaUFnY21WMGRYSnVJSEpsY3p0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEZCaGJHVjBkR1ZDZVZSNWNHVW9jR0ZzWlhSMFpWUjVjR1U2SUhOMGNtbHVaeWs2SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0J6ZDJsMFkyZ2dLSEJoYkdWMGRHVlVlWEJsS1NCN1hHNGdJR05oYzJVZ0oxQlVKenBjYmlBZ0lDQnlaWFIxY200Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxrZHliMnRIY205MWNITTdYRzRnSUdOaGMyVWdKMDVVSnpwY2JpQWdZMkZ6WlNBblJFNUJKenBjYmlBZ1kyRnpaU0FuVWs1Qkp6cGNiaUFnSUNCeVpYUjFjbTRnVG5WamJHVnZkR2xrWlhOUVlXeGxkSFJsY3k1RGFISnZiV0YwYjJkeVlXMDdYRzRnSUNBZ0x5OGdiM1JvWlhKY2JpQWdaR1ZtWVhWc2REcGNiaUFnSUNCeVpYUjFjbTRnVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1Z6TGtOdmJHOXlPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ3YVdOclZYQlRaWEZEYjJ3b1pHWTZJRVJITGtSaGRHRkdjbUZ0WlNrNklFUkhMa052YkhWdGJpQjhJRzUxYkd3Z2UxeHVJQ0JqYjI1emRDQnpaVzFVZVhCbFEyOXNUR2x6ZENBOUlHUm1MbU52YkhWdGJuTXVZbmxUWlcxVWVYQmxRV3hzS0VSSExsTkZUVlJaVUVVdVRVRkRVazlOVDB4RlExVk1SU2s3WEc0Z0lHeGxkQ0J5WlhORGIydzZJRVJITGtOdmJIVnRiaUI4SUc1MWJHd2dQU0J6WlcxVWVYQmxRMjlzVEdsemRDNW1hVzVrS0NoamIyd3BJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQjFibWwwY3lBOUlHTnZiQzVuWlhSVVlXY29SRWN1VkVGSFV5NVZUa2xVVXlrN1hHNGdJQ0FnY21WMGRYSnVJSFZ1YVhSeklEOGdkVzVwZEhNdWFXNWtaWGhQWmlnblRWTkJKeWtnSVQwOUlDMHhJRG9nWm1Gc2MyVTdYRzRnSUgwcElEOC9JRzUxYkd3N1hHNGdJR2xtSUNnaGNtVnpRMjlzSUNZbUlITmxiVlI1Y0dWRGIyeE1hWE4wTG14bGJtZDBhQ0ErSURBcFhHNGdJQ0FnY21WelEyOXNJRDBnYzJWdFZIbHdaVU52YkV4cGMzUmJNRjA3WEc0Z0lISmxkSFZ5YmlCeVpYTkRiMnc3WEc1OVhHNGlYWDA9IiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFVuaXRzSGFuZGxlciB9IGZyb20gJy4vdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQgeyBnZXRTcGxpdHRlckZvckNvbHVtbiwgZ2V0U3RhdHMgfSBmcm9tICcuL21hY3JvbW9sZWN1bGUnO1xuLyoqIENsYXNzIGZvciBoYW5kbGluZyBjb252ZXJzaW9uIG9mIG5vdGF0aW9uIHN5c3RlbXMgaW4gTWFjcm9tb2xlY3VsZSBjb2x1bW5zICovXG5leHBvcnQgY2xhc3MgTm90YXRpb25Db252ZXJ0ZXIgZXh0ZW5kcyBVbml0c0hhbmRsZXIge1xuICAgIGdldCBzcGxpdHRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NwbGl0dGVyID09PSBudWxsKVxuICAgICAgICAgICAgdGhpcy5fc3BsaXR0ZXIgPSBnZXRTcGxpdHRlckZvckNvbHVtbih0aGlzLmNvbHVtbik7XG4gICAgICAgIHJldHVybiB0aGlzLl9zcGxpdHRlcjtcbiAgICB9XG4gICAgdG9GYXN0YSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiZmFzdGFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLzsgfVxuICAgIHRvU2VwYXJhdG9yKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87IH1cbiAgICB0b0hlbG0odGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovOyB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIE1hY3JvbW9sZWN1bGUgY29sdW1uIGZyb20gRkFTVEEgdG8gU0VQQVJBVE9SIG5vdGF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yICBBIHNwZWNpZmljIHNlcGFyYXRvciB0byBiZSB1c2VkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhR2FwU3ltYm9sICBHYXAgc3ltYm9sIGluIEZBU1RBLCAnLScgYnkgZGVmYXVsdFxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgIEEgbmV3IGNvbHVtbiBpbiBTRVBBUkFUT1Igbm90YXRpb25cbiAgICAgKi9cbiAgICBjb252ZXJ0RmFzdGFUb1NlcGFyYXRvcihzZXBhcmF0b3IsIGZhc3RhR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoZmFzdGFHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICAgICAgICBmYXN0YUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgbmV3bHkgY3JlYXRlZCBlbXB0eSBjb2x1bW5cbiAgICAgICAgbmV3Q29sdW1uLmluaXQoKGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmFzdGFQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXkgPSB0aGlzLnNwbGl0dGVyKGZhc3RhUG9seW1lcik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZhc3RhTW9ub21lcnNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPT09IGZhc3RhR2FwU3ltYm9sKVxuICAgICAgICAgICAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pO1xuICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwic2VwYXJhdG9yXCIgLyogVEFHUy5zZXBhcmF0b3IgKi8sIHNlcGFyYXRvcik7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgd3JhcHBlciBzdHJpbmdzIGZvciBIRUxNLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlXG4gICAgICogbWFjcm9tb2xlY3VsZSAocGVwdGlkZSwgRE5BLCBSTkEpXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQXJyYXkgb2Ygd3JhcHBlcnNcbiAgICAgKi9cbiAgICBnZXRIZWxtV3JhcHBlcnMoKSB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9ICh0aGlzLmlzRG5hKCkpID8gJ0ROQTF7JyA6XG4gICAgICAgICAgICAodGhpcy5pc1JuYSgpKSA/ICdSTkExeycgOlxuICAgICAgICAgICAgICAgICh0aGlzLmlzUGVwdGlkZSgpKSA/ICdQRVBUSURFMXsnIDpcbiAgICAgICAgICAgICAgICAgICAgJ1Vua25vd24nOyAvLyB0aGlzIGNhc2Ugc2hvdWxkIGJlIGhhbmRsZWQgYXMgZXhjZXB0aW9uYWxcbiAgICAgICAgaWYgKHByZWZpeCA9PT0gJ1Vua25vd24nKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZWl0aGVyIHBlcHRpZGUsIG5vciBudWNsZW90aWRlJyk7XG4gICAgICAgIGNvbnN0IHBvc3RmaXggPSAnfSQkJCc7XG4gICAgICAgIGNvbnN0IGxlZnRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSkgPyAnRCgnIDpcbiAgICAgICAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1IoJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgICAgICBjb25zdCByaWdodFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpIHx8IHRoaXMuaXNSbmEoKSkgPyAnKVAnIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgICAgIHJldHVybiBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XTtcbiAgICB9XG4gICAgLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbnZlcnRpbmcgc3RyaW5ncyB0byBIRUxNXG4gICAgY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCkge1xuICAgICAgICBjb25zdCBtb25vbWVyQXJyYXkgPSB0aGlzLnNwbGl0dGVyKHNvdXJjZVBvbHltZXIpO1xuICAgICAgICBjb25zdCBtb25vbWVySGVsbUFycmF5ID0gbW9ub21lckFycmF5Lm1hcCgobW0pID0+IHtcbiAgICAgICAgICAgIGlmIChtbSA9PT0gc291cmNlR2FwU3ltYm9sKVxuICAgICAgICAgICAgICAgIHJldHVybiBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5IRUxNO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsZWZ0V3JhcHBlcn0ke21tfSR7cmlnaHRXcmFwcGVyfWA7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYCR7cHJlZml4fSR7bW9ub21lckhlbG1BcnJheS5qb2luKCcuJyl9JHtwb3N0Zml4fWA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYSBzdHJpbmcgd2l0aCBTRVBBUkFUT1IvRkFTVEEgbm90YXRpb24gdG8gSEVMTVxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVBvbHltZXIgIEEgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gc291cmNlR2FwU3ltYm9sICBBbiBvcHRpb25hbCBnYXAgc3ltYm9sLCBzZXQgdG9cbiAgICAgKiBkZWZhdWx0IHZhbHVlcyAoJy0nIGZvciBGQVNUQSBhbmQgJycgZm9yIFNFUEFSQVRPUikgdW5sZXNzIHNwZWNpZmllZFxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gIFRoZSB0YXJnZXQgSEVMTSBzdHJpbmdcbiAgICAgKi9cbiAgICBjb252ZXJ0U3RyaW5nVG9IZWxtKHNvdXJjZVBvbHltZXIsIHNvdXJjZUdhcFN5bWJvbCA9IG51bGwpIHtcbiAgICAgICAgaWYgKHNvdXJjZUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIHNvdXJjZUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcbiAgICAgICAgY29uc3QgW3ByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeF0gPSB0aGlzLmdldEhlbG1XcmFwcGVycygpO1xuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtSGVscGVyKHNvdXJjZVBvbHltZXIsIHNvdXJjZUdhcFN5bWJvbCwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIGNvbHVtbiB0byBIRUxNXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHNvdXJjZUdhcFN5bWJvbFxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn1cbiAgICAgKi9cbiAgICBjb252ZXJ0VG9IZWxtKHNvdXJjZUdhcFN5bWJvbCA9IG51bGwpIHtcbiAgICAgICAgaWYgKHNvdXJjZUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIHNvdXJjZUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcbiAgICAgICAgY29uc3QgW3ByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeF0gPSB0aGlzLmdldEhlbG1XcmFwcGVycygpO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKTtcbiAgICAgICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtSGVscGVyKHNvdXJjZVBvbHltZXIsIHNvdXJjZUdhcFN5bWJvbCwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLyk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgU0VQQVJBVE9SIGNvbHVtbiB0byBGQVNUQSBub3RhdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBmYXN0YUdhcFN5bWJvbCBPcHRpb25hbCBnYXAgc3ltYm9sIGZvciBGQVNUQVxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gIENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0U2VwYXJhdG9yVG9GYXN0YShmYXN0YUdhcFN5bWJvbCA9IG51bGwpIHtcbiAgICAgICAgaWYgKGZhc3RhR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgICAgICAgZmFzdGFHYXBTeW1ib2wgPSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKTtcbiAgICAgICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3Igc2VwYXJhdG9yc1xuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9ySXRlbXNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoc2VwYXJhdG9yUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VwYXJhdG9ySXRlbXNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBzZXBhcmF0b3JJdGVtc0FycmF5W2ldO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChmYXN0YUdhcFN5bWJvbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2FzZSBvZiBhIG11bHRpLWNoYXJhY3RlciBtb25vbWVyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgICAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYXN0YU1vbm9tZXJzQXJyYXkuam9pbignJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuVU5JVFMsIFwiZmFzdGFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLyk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqICBDb252ZXJ0IEhFTE0gY29sdW1uIHRvIEZBU1RBL1NFUEFSQVRPUlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgICAqIFNFUEFSQVRPUilcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yLCB0Z3RHYXBTeW1ib2wpIHtcbiAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBjb250YWluIGNhbGxzIG9mIGlzRG5hKCkgYW5kIGlzUm5hKCksIGZvclxuICAgICAgICAvLyBzb3VyY2UgaGVsbSBjb2x1bW5zIG1heSBjb250YWluIFJOQSwgRE5BIGFuZCBQVCBhY3Jvc3MgZGlmZmVyZW50IHJvd3NcbiAgICAgICAgaWYgKCF0Z3RHYXBTeW1ib2wpIHtcbiAgICAgICAgICAgIHRndEdhcFN5bWJvbCA9ICh0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24pKSA/XG4gICAgICAgICAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuRkFTVEEgOlxuICAgICAgICAgICAgICAgIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRndFNlcGFyYXRvcikge1xuICAgICAgICAgICAgdGd0U2VwYXJhdG9yID0gKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpID8gJycgOiB0aGlzLnNlcGFyYXRvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoZWxtV3JhcHBlcnNSZSA9IC8oUlxcKHxEXFwofFxcKXxQKS9nO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbih0Z3ROb3RhdGlvbik7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBlbXB0eSBjb2x1bW5cbiAgICAgICAgbmV3Q29sdW1uLmluaXQoKGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaGVsbVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIC8vIHdlIGNhbm5vdCB1c2UgaXNEbmEoKSBvciBpc1JuYSgpIGJlY2F1c2Ugc291cmNlIGhlbG0gY29sdW1ucyBjYW5cbiAgICAgICAgICAgIC8vIGNvbnRhaW4gRE5BLCBSTkEgYW5kIFBUIGluIGRpZmZlcmVudCBjZWxscywgc28gdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgIC8vIHRhZ3MgY2Fubm90IGJlIHNldCBmb3IgdGhlIHdob2xlIGNvbHVtblxuICAgICAgICAgICAgY29uc3QgaXNOdWNsZW90aWRlID0gaGVsbVBvbHltZXIuc3RhcnRzV2l0aCgnRE5BJykgfHwgaGVsbVBvbHltZXIuc3RhcnRzV2l0aCgnUk5BJyk7XG4gICAgICAgICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3IgaGVsbXNcbiAgICAgICAgICAgIGNvbnN0IGhlbG1JdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihoZWxtUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCB0Z3RNb25vbWVyc0FycmF5ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlbG1JdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBoZWxtSXRlbXNBcnJheVtpXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOdWNsZW90aWRlKVxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS5yZXBsYWNlKGhlbG1XcmFwcGVyc1JlLCAnJyk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0gPT09IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKHRndEdhcFN5bWJvbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikgJiYgaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXIgY29udmVydGVkIHRvIEZBU1RBXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgICAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2gobW9ub21lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRndE1vbm9tZXJzQXJyYXkuam9pbih0Z3RTZXBhcmF0b3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gVEFHUy5hbGlnbmVkIGlzIG1hbmRhdG9yeSBmb3IgY29sdW1ucyBvZiBOT1RBVElPTi5GQVNUQSBhbmQgTk9UQVRJT04uU0VQQVJBVE9SXG4gICAgICAgIGNvbnN0IHNwbGl0dGVyID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4obmV3Q29sdW1uKTtcbiAgICAgICAgY29uc3Qgc3RhdHMgPSBnZXRTdGF0cyhuZXdDb2x1bW4sIDUsIHNwbGl0dGVyKTtcbiAgICAgICAgY29uc3QgYWxpZ25lZCA9IHN0YXRzLnNhbWVMZW5ndGggPyAnU0VRLk1TQScgOiAnU0VRJztcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8sIGFsaWduZWQpO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICBjb252ZXJ0SGVsbVRvU2VwYXJhdG9yKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5ld0NvbHVtbihcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgfVxuICAgIC8qKiBEaXNwYXRjaGVyIG1ldGhvZCBmb3Igbm90YXRpb24gY29udmVyc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHtOT1RBVElPTn0gdGd0Tm90YXRpb24gICBOb3RhdGlvbiB3ZSB3YW50IHRvIGNvbnZlcnQgdG9cbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndFNlcGFyYXRvciAgIFBvc3NpYmxlIHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgICAgICAgICAgQ29udmVydGVkIGNvbHVtblxuICAgICAqL1xuICAgIGNvbnZlcnQodGd0Tm90YXRpb24sIHRndFNlcGFyYXRvciA9IG51bGwpIHtcbiAgICAgICAgLy8gcG9zc2libGUgZXhjZXB0aW9uc1xuICAgICAgICBpZiAodGhpcy5ub3RhdGlvbiA9PT0gdGd0Tm90YXRpb24pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBub3RhdGlvbiBpcyBpbnZhbGlkJyk7XG4gICAgICAgIGlmICh0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uKSAmJiB0Z3RTZXBhcmF0b3IgPT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBzZXBhcmF0b3IgaXMgbm90IHNwZWNpZmllZCcpO1xuICAgICAgICBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IodGd0U2VwYXJhdG9yKTtcbiAgICAgICAgZWxzZSBpZiAoKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkgJiYgdGhpcy50b0hlbG0odGd0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzU2VwYXJhdG9yKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgLy8gdGhlIGNhc2Ugb2YgSEVMTVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG0odGd0Tm90YXRpb24pO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzSGVsbSgpICYmIHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG0odGd0Tm90YXRpb24sIHRndFNlcGFyYXRvcik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBjb252ZXJzaW9uICcgK1xuICAgICAgICAgICAgICAgIGBmcm9tIHNvdXJjZSBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgdG8gdGFyZ2V0IG5vdGF0aW9uICcke3RndE5vdGF0aW9ufScuYCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGNvbCkge1xuICAgICAgICBzdXBlcihjb2wpO1xuICAgICAgICB0aGlzLl9zcGxpdHRlciA9IG51bGw7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYm05MFlYUnBiMjR0WTI5dWRtVnlkR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2libTkwWVhScGIyNHRZMjl1ZG1WeWRHVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVkQkxFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRmRFTXNUMEZCVHl4RlFVRkRMRmxCUVZrc1JVRkJReXhOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUXpkRExFOUJRVThzUlVGQlF5eHZRa0ZCYjBJc1JVRkJSU3hSUVVGUkxFVkJRVFJETEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRk1VY3NhVVpCUVdsR08wRkJRMnBHTEUxQlFVMHNUMEZCVHl4cFFrRkJhMElzVTBGQlVTeFpRVUZaTzBsQlIycEVMRWxCUVdNc1VVRkJVVHRSUVVOd1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRXRCUVVzc1NVRkJTVHRaUVVONlFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRzlDUVVGdlFpeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOeVJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1NVRkRlRUlzUTBGQlF6dEpRVVZOTEU5QlFVOHNRMEZCUXl4alFVRjNRaXhKUVVGaExFOUJRVThzWTBGQll5eHBRMEZCYlVJc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmVFWXNWMEZCVnl4RFFVRkRMR05CUVhkQ0xFbEJRV0VzVDBGQlR5eGpRVUZqTEhsRFFVRjFRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZvUnl4TlFVRk5MRU5CUVVNc1kwRkJkMElzU1VGQllTeFBRVUZQTEdOQlFXTXNLMEpCUVd0Q0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJUZEdPenM3T3pzN1QwRk5SenRKUVVOTExIVkNRVUYxUWl4RFFVRkRMRk5CUVdsQ0xFVkJRVVVzYVVKQlFXZERMRWxCUVVrN1VVRkRja1lzU1VGQlNTeGpRVUZqTEV0QlFVc3NTVUZCU1R0WlFVTjZRaXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8xRkJSWHBETEUxQlFVMHNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxITkRRVUZ2UWl4RFFVRkRPMUZCUTNoRUxITkVRVUZ6UkR0UlFVTjBSQ3hUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCVnl4RlFVRkZMRVZCUVVVN1dVRkROMElzVFVGQlRTeFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZETVVNc1RVRkJUU3hyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzFsQlEzWkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4clFrRkJhMElzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMnhFTEVsQlFVa3NhMEpCUVd0Q0xFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NZMEZCWXp0dlFrRkRNVU1zYTBKQlFXdENMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExGTkJRVk1zUTBGQlF6dGhRVU42UlR0WlFVTkVMRTlCUVU4c2EwSkJRV3RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRelZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc2RVTkJRWEZDTEVOQlFVTTdVVUZEY0VRc1UwRkJVeXhEUVVGRExFMUJRVTBzYlVOQlFXbENMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRelZETEU5QlFVOHNVMEZCVXl4RFFVRkRPMGxCUTI1Q0xFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5MTEdWQlFXVTdVVUZEY2tJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZGtNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WjBKQlEzaENMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8yOUNRVU5vUXl4VFFVRlRMRU5CUVVNc1EwRkJReXcyUTBGQk5rTTdVVUZGT1VRc1NVRkJTU3hOUVVGTkxFdEJRVXNzVTBGQlV6dFpRVU4wUWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHbERRVUZwUXl4RFFVRkRMRU5CUVVNN1VVRkZja1FzVFVGQlRTeFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzVjBGQlZ5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTNwRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc01FSkJRVEJDTzFGQlEzaEVMRTFCUVUwc1dVRkJXU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETERCQ1FVRXdRanRSUVVNelJpeFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZMRmRCUVZjc1JVRkJSU3haUVVGWkxFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEZEVRc1EwRkJRenRKUVVWRUxHMUVRVUZ0UkR0SlFVTXpReXh0UWtGQmJVSXNRMEZEZWtJc1lVRkJjVUlzUlVGRGNrSXNaVUZCZFVJc1JVRkRka0lzVFVGQll5eEZRVU5rTEZkQlFXMUNMRVZCUTI1Q0xGbEJRVzlDTEVWQlEzQkNMRTlCUVdVN1VVRkZaaXhOUVVGTkxGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRMnhFTEUxQlFVMHNaMEpCUVdkQ0xFZEJRV0VzV1VGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGRk8xbEJRMnBGTEVsQlFVa3NSVUZCUlN4TFFVRkxMR1ZCUVdVN1owSkJRM2hDTEU5QlFVOHNXVUZCV1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVsQlFVa3NRMEZCUXpzN1owSkJSV2hFTEU5QlFVOHNSMEZCUnl4WFFVRlhMRWRCUVVjc1JVRkJSU3hIUVVGSExGbEJRVmtzUlVGQlJTeERRVUZETzFGQlEyaEVMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eEhRVUZITEUxQlFVMHNSMEZCUnl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRE5VUXNRMEZCUXp0SlFVVkVPenM3T3pzN08wOUJUMGM3U1VGRFNTeHRRa0ZCYlVJc1EwRkRlRUlzWVVGQmNVSXNSVUZEY2tJc2EwSkJRV2xETEVsQlFVazdVVUZGY2tNc1NVRkJTU3hsUVVGbExFdEJRVXNzU1VGQlNUdFpRVU14UWl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRPMUZCUXpGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNWMEZCVnl4RlFVRkZMRmxCUVZrc1JVRkJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZMRU5CUVVNN1VVRkROVVVzVDBGQlR5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zWVVGQllTeEZRVUZGTEdWQlFXVXNSVUZCUlN4TlFVRk5MRVZCUVVVc1YwRkJWeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTTVSeXhEUVVGRE8wbEJSVVE3T3pzN08wOUJTMGM3U1VGRFN5eGhRVUZoTEVOQlFVTXNhMEpCUVdsRExFbEJRVWs3VVVGRGVrUXNTVUZCU1N4bFFVRmxMRXRCUVVzc1NVRkJTVHRaUVVNeFFpeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlJURkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEZsQlFWa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTTdVVUZGTlVVc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NORUpCUVdVc1EwRkJRenRSUVVOdVJDeDNRMEZCZDBNN1VVRkRlRU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVZjc1JVRkJSU3hGUVVGRk8xbEJRemRDTEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUXpORExFOUJRVThzU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhEUVVGRExHRkJRV0VzUlVGQlJTeGxRVUZuUWl4RlFVRkZMRTFCUVUwc1JVRkJSU3hYUVVGWExFVkJRVVVzV1VGQldTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUXk5SExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NOa0pCUVdkQ0xFTkJRVU03VVVGREwwTXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwc3NkVUpCUVhWQ0xFTkJRVU1zYVVKQlFXZERMRWxCUVVrN1VVRkRiRVVzU1VGQlNTeGpRVUZqTEV0QlFVc3NTVUZCU1R0WlFVTjZRaXhqUVVGakxFZEJRVWNzV1VGQldTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFdEJRVXNzUTBGQlF6dFJRVVUzUkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTdzRRa0ZCWjBJc1EwRkJRenRSUVVOd1JDeDNRMEZCZDBNN1VVRkRlRU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVZjc1JVRkJSU3hGUVVGRk8xbEJRemRDTEUxQlFVMHNaMEpCUVdkQ0xFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRE9VTXNjME5CUVhORE8xbEJRM1JETEUxQlFVMHNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzFsQlF6VkVMRTFCUVUwc2EwSkJRV3RDTEVkQlFXRXNSVUZCUlN4RFFVRkRPMWxCUTNoRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEyNUVMRTFCUVUwc1NVRkJTU3hIUVVGSExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU53UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF5eEZRVUZGTzI5Q1FVTnlRaXhyUWtGQmEwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJaU3hEUVVGRExFTkJRVU03YVVKQlF6RkRPM0ZDUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRVZCUVVVN2IwSkJRekZDTEhkRFFVRjNRenR2UWtGRGVFTXNUVUZCVFN4UFFVRlBMRWRCUVVjc1IwRkJSeXhIUVVGSExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTTdiMEpCUTJwRExHdENRVUZyUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dHBRa0ZEYkVNN2NVSkJRVTA3YjBKQlEwd3NhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVNdlFqdGhRVU5HTzFsQlEwUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRja01zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l3clFrRkJhVUlzUTBGQlF6dFJRVU5vUkN4UFFVRlBMRk5CUVZNc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlJVUTdPenM3T3pzN08wOUJVVWM3U1VGRFN5eFhRVUZYTEVOQlFVTXNWMEZCYlVJc1JVRkJSU3haUVVGeFFpeEZRVUZGTEZsQlFYRkNPMUZCUTI1R0xHMUZRVUZ0UlR0UlFVTnVSU3gzUlVGQmQwVTdVVUZEZUVVc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJUdFpRVU5xUWl4WlFVRlpMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFYVkNMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzUkVMRmxCUVZrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRuUWtGRE0wTXNXVUZCV1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEZOQlFWTXNRMEZCUXp0VFFVTnFSRHRSUVVWRUxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdXVUZEYWtJc1dVRkJXU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4WFFVRjFRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETzFOQlF6bEZPMUZCUlVRc1RVRkJUU3hqUVVGakxFZEJRVWNzYVVKQlFXbENMRU5CUVVNN1VVRkRla01zVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhYUVVGMVFpeERRVUZETEVOQlFVTTdVVUZETjBRc2QwTkJRWGRETzFGQlEzaERMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZYTEVWQlFVVXNSVUZCUlR0WlFVTTNRaXhOUVVGTkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVVY2UXl4dFJVRkJiVVU3V1VGRGJrVXNiVVZCUVcxRk8xbEJRMjVGTERCRFFVRXdRenRaUVVNeFF5eE5RVUZOTEZsQlFWa3NSMEZCUnl4WFFVRlhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEZkQlFWY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRmNFWXNhVU5CUVdsRE8xbEJRMnBETEUxQlFVMHNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdXVUZEYkVRc1RVRkJUU3huUWtGQlowSXNSMEZCWVN4RlFVRkZMRU5CUVVNN1dVRkRkRU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExHTkJRV01zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRemxETEVsQlFVa3NTVUZCU1N4SFFVRkhMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBJc1NVRkJTU3haUVVGWk8yOUNRVU5rTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExHTkJRV01zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0blFrRkRNVU1zU1VGQlNTeEpRVUZKTEV0QlFVc3NXVUZCV1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVsQlFVa3NSVUZCUlR0dlFrRkRja1FzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRV0VzUTBGQlF5eERRVUZETzJsQ1FVTjBRenR4UWtGQlRTeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJkVUlzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yOUNRVU51UlN3eVJFRkJNa1E3YjBKQlF6TkVMRTFCUVUwc1QwRkJUeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMjlDUVVOcVF5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdhVUpCUTJoRE8zRkNRVUZOTzI5Q1FVTk1MR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRwUWtGRE4wSTdZVUZEUmp0WlFVTkVMRTlCUVU4c1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJRemRETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc2FVWkJRV2xHTzFGQlEycEdMRTFCUVUwc1VVRkJVU3hIUVVGcFFpeHZRa0ZCYjBJc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFJRVU12UkN4TlFVRk5MRXRCUVVzc1IwRkJaMElzVVVGQlVTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRE5VUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRGNrUXNVMEZCVXl4RFFVRkRMRTFCUVUwc0swSkJRV1VzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZGZUVNc1QwRkJUeXhUUVVGVExFTkJRVU03U1VGRGJrSXNRMEZCUXp0SlFVVlBMSE5DUVVGelFqdFJRVU0xUWl4cFJFRkJhVVE3VVVGRGFrUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1dVRkJXU3h6UTBGQmIwSXNRMEZCUXp0SlFVTXZReXhEUVVGRE8wbEJSVVE3T3pzN08wOUJTMGM3U1VGRFNTeFBRVUZQTEVOQlFVTXNWMEZCY1VJc1JVRkJSU3hsUVVFNFFpeEpRVUZKTzFGQlEzUkZMSE5DUVVGelFqdFJRVU4wUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFdEJRVXNzVjBGQlZ6dFpRVU12UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIbENRVUY1UWl4RFFVRkRMRU5CUVVNN1VVRkROME1zU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxGbEJRVmtzUzBGQlN5eEpRVUZKTzFsQlEzaEVMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zWjBOQlFXZERMRU5CUVVNc1EwRkJRenRSUVVWd1JDeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRmxCUVZrc1MwRkJTeXhKUVVGSk8xbEJRekZGTEU5QlFVOHNTVUZCU1N4RFFVRkRMSFZDUVVGMVFpeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMkZCUXk5RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU03V1VGRGVrVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hGUVVGRkxFTkJRVU03WVVGRGVrSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4WFFVRlhMRU5CUVVNN1dVRkRkRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNkVUpCUVhWQ0xFVkJRVVVzUTBGQlF6dGhRVU51UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRkxHMUNRVUZ0UWp0WlFVTjBSU3hQUVVGUExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1lVRkRiRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFhRVUZYTEVOQlFVTTdXVUZEY2tRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZkQlFWY3NSVUZCUlN4WlFVRmhMRU5CUVVNc1EwRkJRenM3V1VGRmNFUXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXd5UWtGQk1rSTdaMEpCUTNwRExIbENRVUY1UWl4SlFVRkpMRU5CUVVNc1VVRkJVU3g1UWtGQmVVSXNWMEZCVnl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOMFJpeERRVUZETzBsQlJVUXNXVUZCYlVJc1IwRkJZenRSUVVNdlFpeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRTNVRXdzWTBGQlV5eEhRVUYzUWl4SlFVRkpMRU5CUVVNN1NVRTRVRGxETEVOQlFVTTdRMEZEUmlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFJRVJ2SUc1dmRDQmphR0Z1WjJVZ2RHaGxjMlVnYVcxd2IzSjBJR3hwYm1WeklIUnZJRzFoZEdOb0lHVjRkR1Z5Ym1Gc0lHMXZaSFZzWlhNZ2FXNGdkMlZpY0dGamF5QmpiMjVtYVdkMWNtRjBhVzl1SUNvdlhHNXBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCRVJ5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaR2NuTzF4dVhHNXBiWEJ2Y25RZ2UxVnVhWFJ6U0dGdVpHeGxjbjBnWm5KdmJTQW5MaTkxYm1sMGN5MW9ZVzVrYkdWeUp6dGNibWx0Y0c5eWRDQjdaMlYwVTNCc2FYUjBaWEpHYjNKRGIyeDFiVzRzSUdkbGRGTjBZWFJ6TENCT1QxUkJWRWxQVGl3Z1UyVnhRMjlzVTNSaGRITXNJRk53YkdsMGRHVnlSblZ1WXl3Z1ZFRkhVMzBnWm5KdmJTQW5MaTl0WVdOeWIyMXZiR1ZqZFd4bEp6dGNibHh1THlvcUlFTnNZWE56SUdadmNpQm9ZVzVrYkdsdVp5QmpiMjUyWlhKemFXOXVJRzltSUc1dmRHRjBhVzl1SUhONWMzUmxiWE1nYVc0Z1RXRmpjbTl0YjJ4bFkzVnNaU0JqYjJ4MWJXNXpJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdUbTkwWVhScGIyNURiMjUyWlhKMFpYSWdaWGgwWlc1a2N5QlZibWwwYzBoaGJtUnNaWElnZTF4dUlDQndjbWwyWVhSbElGOXpjR3hwZEhSbGNqb2dVM0JzYVhSMFpYSkdkVzVqSUh3Z2JuVnNiQ0E5SUc1MWJHdzdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lHZGxkQ0J6Y0d4cGRIUmxjaWdwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXpjR3hwZEhSbGNpQTlQVDBnYm5Wc2JDbGNiaUFnSUNBZ0lIUm9hWE11WDNOd2JHbDBkR1Z5SUQwZ1oyVjBVM0JzYVhSMFpYSkdiM0pEYjJ4MWJXNG9kR2hwY3k1amIyeDFiVzRwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5emNHeHBkSFJsY2p0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCMGIwWmhjM1JoS0hSaGNtZGxkRTV2ZEdGMGFXOXVPaUJPVDFSQlZFbFBUaWs2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdGeVoyVjBUbTkwWVhScGIyNGdQVDA5SUU1UFZFRlVTVTlPTGtaQlUxUkJPeUI5WEc1Y2JpQWdjSFZpYkdsaklIUnZVMlZ3WVhKaGRHOXlLSFJoY21kbGRFNXZkR0YwYVc5dU9pQk9UMVJCVkVsUFRpazZJR0p2YjJ4bFlXNGdleUJ5WlhSMWNtNGdkR0Z5WjJWMFRtOTBZWFJwYjI0Z1BUMDlJRTVQVkVGVVNVOU9MbE5GVUVGU1FWUlBVanNnZlZ4dVhHNGdJSEIxWW14cFl5QjBiMGhsYkcwb2RHRnlaMlYwVG05MFlYUnBiMjQ2SUU1UFZFRlVTVTlPS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMFlYSm5aWFJPYjNSaGRHbHZiaUE5UFQwZ1RrOVVRVlJKVDA0dVNFVk1UVHNnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYjI1MlpYSjBJR0VnVFdGamNtOXRiMnhsWTNWc1pTQmpiMngxYlc0Z1puSnZiU0JHUVZOVVFTQjBieUJUUlZCQlVrRlVUMUlnYm05MFlYUnBiMjVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhObGNHRnlZWFJ2Y2lBZ1FTQnpjR1ZqYVdacFl5QnpaWEJoY21GMGIzSWdkRzhnWW1VZ2RYTmxaRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1ptRnpkR0ZIWVhCVGVXMWliMndnSUVkaGNDQnplVzFpYjJ3Z2FXNGdSa0ZUVkVFc0lDY3RKeUJpZVNCa1pXWmhkV3gwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjBnSUNBZ0lDQWdJRUVnYm1WM0lHTnZiSFZ0YmlCcGJpQlRSVkJCVWtGVVQxSWdibTkwWVhScGIyNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdZMjl1ZG1WeWRFWmhjM1JoVkc5VFpYQmhjbUYwYjNJb2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jc0lHWmhjM1JoUjJGd1UzbHRZbTlzT2lCemRISnBibWNnZkNCdWRXeHNJRDBnYm5Wc2JDazZJRVJITGtOdmJIVnRiaUI3WEc0Z0lDQWdhV1lnS0daaGMzUmhSMkZ3VTNsdFltOXNJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdabUZ6ZEdGSFlYQlRlVzFpYjJ3Z1BTQjBhR2x6TG1SbFptRjFiSFJIWVhCVGVXMWliMnc3WEc1Y2JpQWdJQ0JqYjI1emRDQnVaWGREYjJ4MWJXNGdQU0IwYUdsekxtZGxkRTVsZDBOdmJIVnRiaWhPVDFSQlZFbFBUaTVUUlZCQlVrRlVUMUlwTzF4dUlDQWdJQzh2SUdGemMybG5iaUIwYUdVZ2RtRnNkV1Z6SUhSdklIUm9aU0J1Wlhkc2VTQmpjbVZoZEdWa0lHVnRjSFI1SUdOdmJIVnRibHh1SUNBZ0lHNWxkME52YkhWdGJpNXBibWwwS0NocFpIZzZJRzUxYldKbGNpa2dQVDRnZTF4dUlDQWdJQ0FnWTI5dWMzUWdabUZ6ZEdGUWIyeDViV1Z5SUQwZ2RHaHBjeTVqYjJ4MWJXNHVaMlYwS0dsa2VDazdYRzRnSUNBZ0lDQmpiMjV6ZENCbVlYTjBZVTF2Ym05dFpYSnpRWEp5WVhrZ1BTQjBhR2x6TG5Od2JHbDBkR1Z5S0daaGMzUmhVRzlzZVcxbGNpazdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1poYzNSaFRXOXViMjFsY25OQmNuSmhlUzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWm1GemRHRk5iMjV2YldWeWMwRnljbUY1VzJsZElEMDlQU0JtWVhOMFlVZGhjRk41YldKdmJDbGNiaUFnSUNBZ0lDQWdJQ0JtWVhOMFlVMXZibTl0WlhKelFYSnlZWGxiYVYwZ1BTQlZibWwwYzBoaGJtUnNaWEl1WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNVRSVkJCVWtGVVQxSTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z1ptRnpkR0ZOYjI1dmJXVnljMEZ5Y21GNUxtcHZhVzRvYzJWd1lYSmhkRzl5S1R0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRVJITGxSQlIxTXVWVTVKVkZNc0lFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVpazdYRzRnSUNBZ2JtVjNRMjlzZFcxdUxuTmxkRlJoWnloVVFVZFRMbk5sY0dGeVlYUnZjaXdnYzJWd1lYSmhkRzl5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzUTI5c2RXMXVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQjBhR1VnZDNKaGNIQmxjaUJ6ZEhKcGJtZHpJR1p2Y2lCSVJVeE5MQ0JrWlhCbGJtUnBibWNnYjI0Z2RHaGxJSFI1Y0dVZ2IyWWdkR2hsWEc0Z0lDQXFJRzFoWTNKdmJXOXNaV04xYkdVZ0tIQmxjSFJwWkdVc0lFUk9RU3dnVWs1QktWeHVJQ0FnS2x4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnUVhKeVlYa2diMllnZDNKaGNIQmxjbk5jYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWjJWMFNHVnNiVmR5WVhCd1pYSnpLQ2s2SUhOMGNtbHVaMXRkSUh0Y2JpQWdJQ0JqYjI1emRDQndjbVZtYVhnZ1BTQW9kR2hwY3k1cGMwUnVZU2dwS1NBL0lDZEVUa0V4ZXljZ09seHVJQ0FnSUNBZ0tIUm9hWE11YVhOU2JtRW9LU2tnUHlBblVrNUJNWHNuSURwY2JpQWdJQ0FnSUNBZ0tIUm9hWE11YVhOUVpYQjBhV1JsS0NrcElEOGdKMUJGVUZSSlJFVXhleWNnT2x4dUlDQWdJQ0FnSUNBZ0lDZFZibXR1YjNkdUp6c2dMeThnZEdocGN5QmpZWE5sSUhOb2IzVnNaQ0JpWlNCb1lXNWtiR1ZrSUdGeklHVjRZMlZ3ZEdsdmJtRnNYRzVjYmlBZ0lDQnBaaUFvY0hKbFptbDRJRDA5UFNBblZXNXJibTkzYmljcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjA1bGFYUm9aWElnY0dWd2RHbGtaU3dnYm05eUlHNTFZMnhsYjNScFpHVW5LVHRjYmx4dUlDQWdJR052Ym5OMElIQnZjM1JtYVhnZ1BTQW5mU1FrSkNjN1hHNGdJQ0FnWTI5dWMzUWdiR1ZtZEZkeVlYQndaWElnUFNBb2RHaHBjeTVwYzBSdVlTZ3BLU0EvSUNkRUtDY2dPbHh1SUNBZ0lDQWdLSFJvYVhNdWFYTlNibUVvS1NrZ1B5QW5VaWduSURvZ0p5YzdJQzh2SUc1dklIZHlZWEJ3WlhJZ1ptOXlJSEJsY0hScFpHVnpYRzRnSUNBZ1kyOXVjM1FnY21sbmFIUlhjbUZ3Y0dWeUlEMGdLSFJvYVhNdWFYTkVibUVvS1NCOGZDQjBhR2x6TG1selVtNWhLQ2twSUQ4Z0p5bFFKeUE2SUNjbk95QXZMeUJ1YnlCM2NtRndjR1Z5SUdadmNpQndaWEIwYVdSbGMxeHVJQ0FnSUhKbGRIVnliaUJiY0hKbFptbDRMQ0JzWldaMFYzSmhjSEJsY2l3Z2NtbG5hSFJYY21Gd2NHVnlMQ0J3YjNOMFptbDRYVHRjYmlBZ2ZWeHVYRzRnSUM4dklFRWdhR1ZzY0dWeUlHWjFibU4wYVc5dUlHWnZjaUJqYjI1MlpYSjBhVzVuSUhOMGNtbHVaM01nZEc4Z1NFVk1UVnh1SUNCd2NtbDJZWFJsSUdOdmJuWmxjblJVYjBobGJHMUlaV3h3WlhJb1hHNGdJQ0FnYzI5MWNtTmxVRzlzZVcxbGNqb2djM1J5YVc1bkxGeHVJQ0FnSUhOdmRYSmpaVWRoY0ZONWJXSnZiRG9nYzNSeWFXNW5MRnh1SUNBZ0lIQnlaV1pwZURvZ2MzUnlhVzVuTEZ4dUlDQWdJR3hsWm5SWGNtRndjR1Z5T2lCemRISnBibWNzWEc0Z0lDQWdjbWxuYUhSWGNtRndjR1Z5T2lCemRISnBibWNzWEc0Z0lDQWdjRzl6ZEdacGVEb2djM1J5YVc1blhHNGdJQ2s2SUhOMGNtbHVaeUI3WEc0Z0lDQWdZMjl1YzNRZ2JXOXViMjFsY2tGeWNtRjVJRDBnZEdocGN5NXpjR3hwZEhSbGNpaHpiM1Z5WTJWUWIyeDViV1Z5S1R0Y2JpQWdJQ0JqYjI1emRDQnRiMjV2YldWeVNHVnNiVUZ5Y21GNU9pQnpkSEpwYm1kYlhTQTlJRzF2Ym05dFpYSkJjbkpoZVM1dFlYQW9LRzF0T2lCemRISnBibWNwSUQwK0lIdGNiaUFnSUNBZ0lHbG1JQ2h0YlNBOVBUMGdjMjkxY21ObFIyRndVM2x0WW05c0tWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ZXNXBkSE5JWVc1a2JHVnlMbDlrWldaaGRXeDBSMkZ3VTNsdFltOXNjMFJwWTNRdVNFVk1UVHRjYmlBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdBa2UyeGxablJYY21Gd2NHVnlmU1I3YlcxOUpIdHlhV2RvZEZkeVlYQndaWEo5WUR0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdZQ1I3Y0hKbFptbDRmU1I3Ylc5dWIyMWxja2hsYkcxQmNuSmhlUzVxYjJsdUtDY3VKeWw5Skh0d2IzTjBabWw0ZldBN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZG1WeWRDQmhJSE4wY21sdVp5QjNhWFJvSUZORlVFRlNRVlJQVWk5R1FWTlVRU0J1YjNSaGRHbHZiaUIwYnlCSVJVeE5YRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6YjNWeVkyVlFiMng1YldWeUlDQkJJSE4wY21sdVp5QjBieUJpWlNCamIyNTJaWEowWldSY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtY2dmQ0J1ZFd4c2ZTQnpiM1Z5WTJWSFlYQlRlVzFpYjJ3Z0lFRnVJRzl3ZEdsdmJtRnNJR2RoY0NCemVXMWliMndzSUhObGRDQjBiMXh1SUNBZ0tpQmtaV1poZFd4MElIWmhiSFZsY3lBb0p5MG5JR1p2Y2lCR1FWTlVRU0JoYm1RZ0p5Y2dabTl5SUZORlVFRlNRVlJQVWlrZ2RXNXNaWE56SUhOd1pXTnBabWxsWkZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJQ0JVYUdVZ2RHRnlaMlYwSUVoRlRFMGdjM1J5YVc1blhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1kyOXVkbVZ5ZEZOMGNtbHVaMVJ2U0dWc2JTaGNiaUFnSUNCemIzVnlZMlZRYjJ4NWJXVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2MyOTFjbU5sUjJGd1UzbHRZbTlzT2lCemRISnBibWNnZkNCdWRXeHNJRDBnYm5Wc2JGeHVJQ0FwT2lCemRISnBibWNnZTF4dUlDQWdJR2xtSUNoemIzVnlZMlZIWVhCVGVXMWliMndnUFQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0J6YjNWeVkyVkhZWEJUZVcxaWIyd2dQU0IwYUdsekxtUmxabUYxYkhSSFlYQlRlVzFpYjJ3N1hHNGdJQ0FnWTI5dWMzUWdXM0J5WldacGVDd2diR1ZtZEZkeVlYQndaWElzSUhKcFoyaDBWM0poY0hCbGNpd2djRzl6ZEdacGVGMGdQU0IwYUdsekxtZGxkRWhsYkcxWGNtRndjR1Z5Y3lncE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZiblpsY25SVWIwaGxiRzFJWld4d1pYSW9jMjkxY21ObFVHOXNlVzFsY2l3Z2MyOTFjbU5sUjJGd1UzbHRZbTlzTENCd2NtVm1hWGdzSUd4bFpuUlhjbUZ3Y0dWeUxDQnlhV2RvZEZkeVlYQndaWElzSUhCdmMzUm1hWGdwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnZiblpsY25RZ1lTQmpiMngxYlc0Z2RHOGdTRVZNVFZ4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WnlCOElHNTFiR3g5SUhOdmRYSmpaVWRoY0ZONWJXSnZiRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVSeTVEYjJ4MWJXNTlYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJR052Ym5abGNuUlViMGhsYkcwb2MyOTFjbU5sUjJGd1UzbHRZbTlzT2lCemRISnBibWNnZkNCdWRXeHNJRDBnYm5Wc2JDazZJRVJITGtOdmJIVnRiaUI3WEc0Z0lDQWdhV1lnS0hOdmRYSmpaVWRoY0ZONWJXSnZiQ0E5UFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJSE52ZFhKalpVZGhjRk41YldKdmJDQTlJSFJvYVhNdVpHVm1ZWFZzZEVkaGNGTjViV0p2YkR0Y2JseHVJQ0FnSUdOdmJuTjBJRnR3Y21WbWFYZ3NJR3hsWm5SWGNtRndjR1Z5TENCeWFXZG9kRmR5WVhCd1pYSXNJSEJ2YzNSbWFYaGRJRDBnZEdocGN5NW5aWFJJWld4dFYzSmhjSEJsY25Nb0tUdGNibHh1SUNBZ0lHTnZibk4wSUc1bGQwTnZiSFZ0YmlBOUlIUm9hWE11WjJWMFRtVjNRMjlzZFcxdUtFNVBWRUZVU1U5T0xraEZURTBwTzF4dUlDQWdJQzh2SUdGemMybG5iaUIwYUdVZ2RtRnNkV1Z6SUhSdklIUm9aU0JsYlhCMGVTQmpiMngxYlc1Y2JpQWdJQ0J1WlhkRGIyeDFiVzR1YVc1cGRDZ29hV1I0T2lCdWRXMWlaWElwSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUhOdmRYSmpaVkJ2YkhsdFpYSWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUW9hV1I0S1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZiblpsY25SVWIwaGxiRzFJWld4d1pYSW9jMjkxY21ObFVHOXNlVzFsY2l3Z2MyOTFjbU5sUjJGd1UzbHRZbTlzSVN3Z2NISmxabWw0TENCc1pXWjBWM0poY0hCbGNpd2djbWxuYUhSWGNtRndjR1Z5TENCd2IzTjBabWw0S1R0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRVJITGxSQlIxTXVWVTVKVkZNc0lFNVBWRUZVU1U5T0xraEZURTBwTzF4dUlDQWdJSEpsZEhWeWJpQnVaWGREYjJ4MWJXNDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTI5dWRtVnlkQ0JUUlZCQlVrRlVUMUlnWTI5c2RXMXVJSFJ2SUVaQlUxUkJJRzV2ZEdGMGFXOXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5JSHdnYm5Wc2JIMGdabUZ6ZEdGSFlYQlRlVzFpYjJ3Z1QzQjBhVzl1WVd3Z1oyRndJSE41YldKdmJDQm1iM0lnUmtGVFZFRmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFY3VRMjlzZFcxdWZTQWdRMjl1ZG1WeWRHVmtJR052YkhWdGJseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmpiMjUyWlhKMFUyVndZWEpoZEc5eVZHOUdZWE4wWVNobVlYTjBZVWRoY0ZONWJXSnZiRG9nYzNSeWFXNW5JSHdnYm5Wc2JDQTlJRzUxYkd3cE9pQkVSeTVEYjJ4MWJXNGdlMXh1SUNBZ0lHbG1JQ2htWVhOMFlVZGhjRk41YldKdmJDQTlQVDBnYm5Wc2JDbGNiaUFnSUNBZ0lHWmhjM1JoUjJGd1UzbHRZbTlzSUQwZ1ZXNXBkSE5JWVc1a2JHVnlMbDlrWldaaGRXeDBSMkZ3VTNsdFltOXNjMFJwWTNRdVJrRlRWRUU3WEc1Y2JpQWdJQ0JqYjI1emRDQnVaWGREYjJ4MWJXNGdQU0IwYUdsekxtZGxkRTVsZDBOdmJIVnRiaWhPVDFSQlZFbFBUaTVHUVZOVVFTazdYRzRnSUNBZ0x5OGdZWE56YVdkdUlIUm9aU0IyWVd4MVpYTWdkRzhnZEdobElHVnRjSFI1SUdOdmJIVnRibHh1SUNBZ0lHNWxkME52YkhWdGJpNXBibWwwS0NocFpIZzZJRzUxYldKbGNpa2dQVDRnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjMlZ3WVhKaGRHOXlVRzlzZVcxbGNpQTlJSFJvYVhNdVkyOXNkVzF1TG1kbGRDaHBaSGdwTzF4dUlDQWdJQ0FnTHk4Z2FYUmxiWE1nWTJGdUlHSmxJRzF2Ym05dFpYSnpJRzl5SUhObGNHRnlZWFJ2Y25OY2JpQWdJQ0FnSUdOdmJuTjBJSE5sY0dGeVlYUnZja2wwWlcxelFYSnlZWGtnUFNCMGFHbHpMbk53YkdsMGRHVnlLSE5sY0dGeVlYUnZjbEJ2YkhsdFpYSXBPMXh1SUNBZ0lDQWdZMjl1YzNRZ1ptRnpkR0ZOYjI1dmJXVnljMEZ5Y21GNU9pQnpkSEpwYm1kYlhTQTlJRnRkTzF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCelpYQmhjbUYwYjNKSmRHVnRjMEZ5Y21GNUxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR2wwWlcwZ1BTQnpaWEJoY21GMGIzSkpkR1Z0YzBGeWNtRjVXMmxkTzF4dUlDQWdJQ0FnSUNCcFppQW9hWFJsYlM1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCbVlYTjBZVTF2Ym05dFpYSnpRWEp5WVhrdWNIVnphQ2htWVhOMFlVZGhjRk41YldKdmJDRXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dsMFpXMHViR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJSFJvWlNCallYTmxJRzltSUdFZ2JYVnNkR2t0WTJoaGNtRmpkR1Z5SUcxdmJtOXRaWEpjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0YjI1dmJXVnlJRDBnSjFzbklDc2dhWFJsYlNBcklDZGRKenRjYmlBZ0lDQWdJQ0FnSUNCbVlYTjBZVTF2Ym05dFpYSnpRWEp5WVhrdWNIVnphQ2h0YjI1dmJXVnlLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCbVlYTjBZVTF2Ym05dFpYSnpRWEp5WVhrdWNIVnphQ2hwZEdWdEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTNXFiMmx1S0NjbktUdGNiaUFnSUNCOUtUdGNiaUFnSUNCdVpYZERiMngxYlc0dWMyVjBWR0ZuS0VSSExsUkJSMU11VlU1SlZGTXNJRTVQVkVGVVNVOU9Ma1pCVTFSQktUdGNiaUFnSUNCeVpYUjFjbTRnYm1WM1EyOXNkVzF1TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlDQkRiMjUyWlhKMElFaEZURTBnWTI5c2RXMXVJSFJ2SUVaQlUxUkJMMU5GVUVGU1FWUlBVbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEdkMFRtOTBZWFJwYjI0Z0lDQWdWR0Z5WjJWMElHNXZkR0YwYVc5dU9pQkdRVk5VUVNCdmNpQlRSVkJCVWtGVVQxSmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhSbmRGTmxjR0Z5WVhSdmNpQWdJRTl3ZEdsdmJtRnNJSFJoY21kbGRDQnpaWEJoY21GMGIzSWdLR1p2Y2lCSVJVeE5JQzArWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bklId2diblZzYkgwZ2RHZDBSMkZ3VTNsdFltOXNJQ0FnVDNCMGFXOXVZV3dnZEdGeVoyVjBJR2RoY0NCemVXMWliMnhjYmlBZ0lDb2dVMFZRUVZKQlZFOVNLVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVSeTVEYjJ4MWJXNTlJRU52Ym5abGNuUmxaQ0JqYjJ4MWJXNWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdZMjl1ZG1WeWRFaGxiRzBvZEdkMFRtOTBZWFJwYjI0NklITjBjbWx1Wnl3Z2RHZDBVMlZ3WVhKaGRHOXlQem9nYzNSeWFXNW5MQ0IwWjNSSFlYQlRlVzFpYjJ3L09pQnpkSEpwYm1jcE9pQkVSeTVEYjJ4MWJXNGdlMXh1SUNBZ0lDOHZJRlJvYVhNZ1puVnVZM1JwYjI0Z2JYVnpkQ0J1YjNRZ1kyOXVkR0ZwYmlCallXeHNjeUJ2WmlCcGMwUnVZU2dwSUdGdVpDQnBjMUp1WVNncExDQm1iM0pjYmlBZ0lDQXZMeUJ6YjNWeVkyVWdhR1ZzYlNCamIyeDFiVzV6SUcxaGVTQmpiMjUwWVdsdUlGSk9RU3dnUkU1QklHRnVaQ0JRVkNCaFkzSnZjM01nWkdsbVptVnlaVzUwSUhKdmQzTmNiaUFnSUNCcFppQW9JWFJuZEVkaGNGTjViV0p2YkNrZ2UxeHVJQ0FnSUNBZ2RHZDBSMkZ3VTNsdFltOXNJRDBnS0hSb2FYTXVkRzlHWVhOMFlTaDBaM1JPYjNSaGRHbHZiaUJoY3lCT1QxUkJWRWxQVGlrcElEOWNiaUFnSUNBZ0lDQWdWVzVwZEhOSVlXNWtiR1Z5TGw5a1pXWmhkV3gwUjJGd1UzbHRZbTlzYzBScFkzUXVSa0ZUVkVFZ09seHVJQ0FnSUNBZ0lDQlZibWwwYzBoaGJtUnNaWEl1WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNVRSVkJCVWtGVVQxSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0YwWjNSVFpYQmhjbUYwYjNJcElIdGNiaUFnSUNBZ0lIUm5kRk5sY0dGeVlYUnZjaUE5SUNoMGFHbHpMblJ2Um1GemRHRW9kR2QwVG05MFlYUnBiMjRnWVhNZ1RrOVVRVlJKVDA0cEtTQS9JQ2NuSURvZ2RHaHBjeTV6WlhCaGNtRjBiM0k3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2FHVnNiVmR5WVhCd1pYSnpVbVVnUFNBdktGSmNYQ2g4UkZ4Y0tIeGNYQ2w4VUNrdlp6dGNiaUFnSUNCamIyNXpkQ0J1WlhkRGIyeDFiVzRnUFNCMGFHbHpMbWRsZEU1bGQwTnZiSFZ0YmloMFozUk9iM1JoZEdsdmJpQmhjeUJPVDFSQlZFbFBUaWs3WEc0Z0lDQWdMeThnWVhOemFXZHVJSFJvWlNCMllXeDFaWE1nZEc4Z2RHaGxJR1Z0Y0hSNUlHTnZiSFZ0Ymx4dUlDQWdJRzVsZDBOdmJIVnRiaTVwYm1sMEtDaHBaSGc2SUc1MWJXSmxjaWtnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYUdWc2JWQnZiSGx0WlhJZ1BTQjBhR2x6TG1OdmJIVnRiaTVuWlhRb2FXUjRLVHRjYmx4dUlDQWdJQ0FnTHk4Z2QyVWdZMkZ1Ym05MElIVnpaU0JwYzBSdVlTZ3BJRzl5SUdselVtNWhLQ2tnWW1WallYVnpaU0J6YjNWeVkyVWdhR1ZzYlNCamIyeDFiVzV6SUdOaGJseHVJQ0FnSUNBZ0x5OGdZMjl1ZEdGcGJpQkVUa0VzSUZKT1FTQmhibVFnVUZRZ2FXNGdaR2xtWm1WeVpXNTBJR05sYkd4ekxDQnpieUIwYUdVZ1kyOXljbVZ6Y0c5dVpHbHVaMXh1SUNBZ0lDQWdMeThnZEdGbmN5QmpZVzV1YjNRZ1ltVWdjMlYwSUdadmNpQjBhR1VnZDJodmJHVWdZMjlzZFcxdVhHNGdJQ0FnSUNCamIyNXpkQ0JwYzA1MVkyeGxiM1JwWkdVZ1BTQm9aV3h0VUc5c2VXMWxjaTV6ZEdGeWRITlhhWFJvS0NkRVRrRW5LU0I4ZkNCb1pXeHRVRzlzZVcxbGNpNXpkR0Z5ZEhOWGFYUm9LQ2RTVGtFbktUdGNibHh1SUNBZ0lDQWdMeThnYVhSbGJYTWdZMkZ1SUdKbElHMXZibTl0WlhKeklHOXlJR2hsYkcxelhHNGdJQ0FnSUNCamIyNXpkQ0JvWld4dFNYUmxiWE5CY25KaGVTQTlJSFJvYVhNdWMzQnNhWFIwWlhJb2FHVnNiVkJ2YkhsdFpYSXBPMXh1SUNBZ0lDQWdZMjl1YzNRZ2RHZDBUVzl1YjIxbGNuTkJjbkpoZVRvZ2MzUnlhVzVuVzEwZ1BTQmJYVHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYUdWc2JVbDBaVzF6UVhKeVlYa3ViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJR2wwWlcwZ1BTQm9aV3h0U1hSbGJYTkJjbkpoZVZ0cFhUdGNiaUFnSUNBZ0lDQWdhV1lnS0dselRuVmpiR1Z2ZEdsa1pTbGNiaUFnSUNBZ0lDQWdJQ0JwZEdWdElEMGdhWFJsYlM1eVpYQnNZV05sS0dobGJHMVhjbUZ3Y0dWeWMxSmxMQ0FuSnlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwZEdWdElEMDlQU0JWYm1sMGMwaGhibVJzWlhJdVgyUmxabUYxYkhSSFlYQlRlVzFpYjJ4elJHbGpkQzVJUlV4TktTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdkMFRXOXViMjFsY25OQmNuSmhlUzV3ZFhOb0tIUm5kRWRoY0ZONWJXSnZiQ0VwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tIUm9hWE11ZEc5R1lYTjBZU2gwWjNST2IzUmhkR2x2YmlCaGN5Qk9UMVJCVkVsUFRpa2dKaVlnYVhSbGJTNXNaVzVuZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdkR2hsSUdOaGMyVWdiMllnWVNCdGRXeDBhUzFqYUdGeVlXTjBaWElnYlc5dWIyMWxjaUJqYjI1MlpYSjBaV1FnZEc4Z1JrRlRWRUZjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0YjI1dmJXVnlJRDBnSjFzbklDc2dhWFJsYlNBcklDZGRKenRjYmlBZ0lDQWdJQ0FnSUNCMFozUk5iMjV2YldWeWMwRnljbUY1TG5CMWMyZ29iVzl1YjIxbGNpazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdkMFRXOXViMjFsY25OQmNuSmhlUzV3ZFhOb0tHbDBaVzBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdkMFRXOXViMjFsY25OQmNuSmhlUzVxYjJsdUtIUm5kRk5sY0dGeVlYUnZjaWs3WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0F2THlCVVFVZFRMbUZzYVdkdVpXUWdhWE1nYldGdVpHRjBiM0o1SUdadmNpQmpiMngxYlc1eklHOW1JRTVQVkVGVVNVOU9Ma1pCVTFSQklHRnVaQ0JPVDFSQlZFbFBUaTVUUlZCQlVrRlVUMUpjYmlBZ0lDQmpiMjV6ZENCemNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpJRDBnWjJWMFUzQnNhWFIwWlhKR2IzSkRiMngxYlc0b2JtVjNRMjlzZFcxdUtUdGNiaUFnSUNCamIyNXpkQ0J6ZEdGMGN6b2dVMlZ4UTI5c1UzUmhkSE1nUFNCblpYUlRkR0YwY3lodVpYZERiMngxYlc0c0lEVXNJSE53YkdsMGRHVnlLVHRjYmlBZ0lDQmpiMjV6ZENCaGJHbG5ibVZrSUQwZ2MzUmhkSE11YzJGdFpVeGxibWQwYUNBL0lDZFRSVkV1VFZOQkp5QTZJQ2RUUlZFbk8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvVkVGSFV5NWhiR2xuYm1Wa0xDQmhiR2xuYm1Wa0tUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHTnZiblpsY25SSVpXeHRWRzlUWlhCaGNtRjBiM0lvS1RvZ1JFY3VRMjlzZFcxdUlIdGNiaUFnSUNBdkx5QlVUMFJQT2lCcGJYQnNaVzFsYm5SaGRHbHZjbVYwZFhKdUlIUm9hWE11WjJWMFRtVjNRMjlzZFcxdUtDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0U1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWlrN1hHNGdJSDFjYmx4dUlDQXZLaW9nUkdsemNHRjBZMmhsY2lCdFpYUm9iMlFnWm05eUlHNXZkR0YwYVc5dUlHTnZiblpsY25OcGIyNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRPVDFSQlZFbFBUbjBnZEdkMFRtOTBZWFJwYjI0Z0lDQk9iM1JoZEdsdmJpQjNaU0IzWVc1MElIUnZJR052Ym5abGNuUWdkRzljYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1jZ2ZDQnVkV3hzZlNCMFozUlRaWEJoY21GMGIzSWdJQ0JRYjNOemFXSnNaU0J6WlhCaGNtRjBiM0pjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSRWN1UTI5c2RXMXVmU0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQkRiMjUyWlhKMFpXUWdZMjlzZFcxdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1kyOXVkbVZ5ZENoMFozUk9iM1JoZEdsdmJqb2dUazlVUVZSSlQwNHNJSFJuZEZObGNHRnlZWFJ2Y2pvZ2MzUnlhVzVuSUh3Z2JuVnNiQ0E5SUc1MWJHd3BPaUJFUnk1RGIyeDFiVzRnZTF4dUlDQWdJQzh2SUhCdmMzTnBZbXhsSUdWNFkyVndkR2x2Ym5OY2JpQWdJQ0JwWmlBb2RHaHBjeTV1YjNSaGRHbHZiaUE5UFQwZ2RHZDBUbTkwWVhScGIyNHBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0ozUm5kQ0J1YjNSaGRHbHZiaUJwY3lCcGJuWmhiR2xrSnlrN1hHNGdJQ0FnYVdZZ0tIUm9hWE11ZEc5VFpYQmhjbUYwYjNJb2RHZDBUbTkwWVhScGIyNHBJQ1ltSUhSbmRGTmxjR0Z5WVhSdmNpQTlQVDBnYm5Wc2JDbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbmRHZDBJSE5sY0dGeVlYUnZjaUJwY3lCdWIzUWdjM0JsWTJsbWFXVmtKeWs3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVwYzBaaGMzUmhLQ2tnSmlZZ2RHaHBjeTUwYjFObGNHRnlZWFJ2Y2loMFozUk9iM1JoZEdsdmJpa2dKaVlnZEdkMFUyVndZWEpoZEc5eUlDRTlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl1ZG1WeWRFWmhjM1JoVkc5VFpYQmhjbUYwYjNJb2RHZDBVMlZ3WVhKaGRHOXlLVHRjYmlBZ0lDQmxiSE5sSUdsbUlDZ29kR2hwY3k1cGMwWmhjM1JoS0NrZ2ZId2dkR2hwY3k1cGMxTmxjR0Z5WVhSdmNpZ3BLU0FtSmlCMGFHbHpMblJ2U0dWc2JTaDBaM1JPYjNSaGRHbHZiaWtwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amIyNTJaWEowVkc5SVpXeHRLQ2s3WEc0Z0lDQWdaV3h6WlNCcFppQW9kR2hwY3k1cGMxTmxjR0Z5WVhSdmNpZ3BJQ1ltSUhSb2FYTXVkRzlHWVhOMFlTaDBaM1JPYjNSaGRHbHZiaWtwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amIyNTJaWEowVTJWd1lYSmhkRzl5Vkc5R1lYTjBZU2dwTzF4dUlDQWdJR1ZzYzJVZ2FXWWdLSFJvYVhNdWFYTklaV3h0S0NrZ0ppWWdkR2hwY3k1MGIwWmhjM1JoS0hSbmRFNXZkR0YwYVc5dUtTa2dMeThnZEdobElHTmhjMlVnYjJZZ1NFVk1UVnh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5dWRtVnlkRWhsYkcwb2RHZDBUbTkwWVhScGIyNHBPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIUm9hWE11YVhOSVpXeHRLQ2tnSmlZZ2RHaHBjeTUwYjFObGNHRnlZWFJ2Y2loMFozUk9iM1JoZEdsdmJpa3BYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjI1MlpYSjBTR1ZzYlNoMFozUk9iM1JoZEdsdmJpd2dkR2QwVTJWd1lYSmhkRzl5SVNrN1hHNGdJQ0FnWld4elpWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkT2IzUWdjM1Z3Y0c5eWRHVmtJR052Ym5abGNuTnBiMjRnSnlBclhHNGdJQ0FnSUNBZ0lHQm1jbTl0SUhOdmRYSmpaU0J1YjNSaGRHbHZiaUFuSkh0MGFHbHpMbTV2ZEdGMGFXOXVmU2NnZEc4Z2RHRnlaMlYwSUc1dmRHRjBhVzl1SUNja2UzUm5kRTV2ZEdGMGFXOXVmU2N1WUNrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9ZMjlzT2lCRVJ5NURiMngxYlc0cElIdGNiaUFnSUNCemRYQmxjaWhqYjJ3cE8xeHVJQ0I5WEc1OVhHNGlYWDA9IiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IGRldGVjdEFscGhhYmV0LCBnZXRTcGxpdHRlckZvckNvbHVtbiwgZ2V0U3RhdHMsIHNwbGl0dGVyQXNGYXN0YSB9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIG5vdGF0aW9uIHVuaXRzIGluIE1hY3JvbW9sZWN1bGUgY29sdW1ucyAqL1xuZXhwb3J0IGNsYXNzIFVuaXRzSGFuZGxlciB7XG4gICAgc3RhdGljIHNldFVuaXRzVG9GYXN0YUNvbHVtbihjb2wpIHtcbiAgICAgICAgaWYgKGNvbC5zZW1UeXBlICE9PSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zhc3RhIGNvbHVtbiBtdXN0IGJlIE1BQ1JPTU9MRUNVTEUnKTtcbiAgICAgICAgY29uc3Qgc3RhdHMgPSBnZXRTdGF0cyhjb2wsIDUsIHNwbGl0dGVyQXNGYXN0YSk7XG4gICAgICAgIGNvbnN0IGFsaWduZWQgPSBzdGF0cy5zYW1lTGVuZ3RoID8gJ1NFUS5NU0EnIDogJ1NFUSc7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0ID0gZGV0ZWN0QWxwaGFiZXQoc3RhdHMpO1xuICAgICAgICBjb2wuc2V0VGFnKERHLlRBR1MuVU5JVFMsIFwiZmFzdGFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLyk7XG4gICAgICAgIGNvbC5zZXRUYWcoXCJhbGlnbmVkXCIgLyogVEFHUy5hbGlnbmVkICovLCBhbGlnbmVkKTtcbiAgICAgICAgY29sLnNldFRhZyhcImFscGhhYmV0XCIgLyogVEFHUy5hbHBoYWJldCAqLywgYWxwaGFiZXQpO1xuICAgIH1cbiAgICBnZXQgdW5pdHMoKSB7IHJldHVybiB0aGlzLl91bml0czsgfVxuICAgIGdldCBjb2x1bW4oKSB7IHJldHVybiB0aGlzLl9jb2x1bW47IH1cbiAgICBnZXQgbm90YXRpb24oKSB7IHJldHVybiB0aGlzLl9ub3RhdGlvbjsgfVxuICAgIGdldCBkZWZhdWx0R2FwU3ltYm9sKCkgeyByZXR1cm4gdGhpcy5fZGVmYXVsdEdhcFN5bWJvbDsgfVxuICAgIGdldCBzZXBhcmF0b3IoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gKF9hID0gdGhpcy5jb2x1bW4uZ2V0VGFnKFwic2VwYXJhdG9yXCIgLyogVEFHUy5zZXBhcmF0b3IgKi8pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLm5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyAmJiBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VwYXJhdG9yIGlzIG1hbmRhdG9yeSAgZm9yIGNvbHVtbiAnJHt0aGlzLmNvbHVtbi5uYW1lfScgb2Ygbm90YXRpb24gJyR7dGhpcy5ub3RhdGlvbn0nLmApO1xuICAgICAgICByZXR1cm4gc2VwYXJhdG9yO1xuICAgIH1cbiAgICBnZXQgYWxpZ25lZCgpIHtcbiAgICAgICAgY29uc3QgYWxpZ25lZCA9IHRoaXMuY29sdW1uLmdldFRhZyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8pO1xuICAgICAgICAvLyBUQUdTLmFsaWduZWQgaXMgbWFuZGF0b3J5IGZvciBjb2x1bW5zIG9mIE5PVEFUSU9OLkZBU1RBIGFuZCBOT1RBVElPTi5TRVBBUkFUT1JcbiAgICAgICAgaWYgKCFhbGlnbmVkICYmICh0aGlzLmlzRmFzdGEoKSB8fCB0aGlzLmlzU2VwYXJhdG9yKCkpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYWcgYWxpZ25lZCBub3Qgc2V0Jyk7XG4gICAgICAgIHJldHVybiBhbGlnbmVkO1xuICAgIH1cbiAgICAvKiogQWxwaGFiZXQgbmFtZSAodXBwZXIgY2FzZSkgKi9cbiAgICBnZXQgYWxwaGFiZXQoKSB7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0ID0gdGhpcy5jb2x1bW4uZ2V0VGFnKFwiYWxwaGFiZXRcIiAvKiBUQUdTLmFscGhhYmV0ICovKTtcbiAgICAgICAgLy8gVEFHUy5hbHBoYWJldCBpcyBtYW5kYXRvcnkgZm9yIGNvbHVtbnMgb2YgTk9UQVRJT04uRkFTVEEgYW5kIE5PVEFUSU9OLlNFUEFSQVRPUlxuICAgICAgICBpZiAoIWFscGhhYmV0ICYmICh0aGlzLmlzRmFzdGEoKSB8fCB0aGlzLmlzU2VwYXJhdG9yKCkpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYWcgYWxwaGFiZXQgbm90IHNldCcpO1xuICAgICAgICByZXR1cm4gYWxwaGFiZXQ7XG4gICAgfVxuICAgIGdldEFscGhhYmV0U2l6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubm90YXRpb24gPT0gXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLyB8fCB0aGlzLmFscGhhYmV0ID09IFwiVU5cIiAvKiBBTFBIQUJFVC5VTiAqLykge1xuICAgICAgICAgICAgY29uc3QgYWxwaGFiZXRTaXplU3RyID0gdGhpcy5jb2x1bW4uZ2V0VGFnKFwiLmFscGhhYmV0U2l6ZVwiIC8qIFRBR1MuYWxwaGFiZXRTaXplICovKTtcbiAgICAgICAgICAgIGxldCBhbHBoYWJldFNpemU7XG4gICAgICAgICAgICBpZiAoYWxwaGFiZXRTaXplU3RyKSB7XG4gICAgICAgICAgICAgICAgYWxwaGFiZXRTaXplID0gcGFyc2VJbnQoYWxwaGFiZXRTaXplU3RyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBhbHBoYWJldFNpemUgb24gZGVtYW5kXG4gICAgICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZXIgPSBnZXRTcGxpdHRlckZvckNvbHVtbih0aGlzLmNvbHVtbik7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBnZXRTdGF0cyh0aGlzLmNvbHVtbiwgMSwgc3BsaXR0ZXIpO1xuICAgICAgICAgICAgICAgIGFscGhhYmV0U2l6ZSA9IE9iamVjdC5rZXlzKHN0YXRzLmZyZXEpLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhbHBoYWJldFNpemU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuYWxwaGFiZXQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIwO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJETkFcIiAvKiBBTFBIQUJFVC5ETkEgKi86XG4gICAgICAgICAgICAgICAgY2FzZSBcIlJOQVwiIC8qIEFMUEhBQkVULlJOQSAqLzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7XG4gICAgICAgICAgICAgICAgY2FzZSAnTlQnOlxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFVuZXhwZWN0ZWQgYWxwaGFiZXQgJ05UJy5gKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGFscGhhYmV0ICcke3RoaXMuYWxwaGFiZXR9Jy5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRBbHBoYWJldElzTXVsdGljaGFyKCkge1xuICAgICAgICBpZiAodGhpcy5ub3RhdGlvbiA9PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovIHx8IHRoaXMuYWxwaGFiZXQgPT0gXCJVTlwiIC8qIEFMUEhBQkVULlVOICovKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmdldFRhZyhcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovKSA9PSAndHJ1ZSc7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaXNGYXN0YSgpIHsgcmV0dXJuIHRoaXMubm90YXRpb24gPT09IFwiZmFzdGFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLzsgfVxuICAgIGlzU2VwYXJhdG9yKCkgeyByZXR1cm4gdGhpcy5ub3RhdGlvbiA9PT0gXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87IH1cbiAgICBpc0hlbG0oKSB7IHJldHVybiB0aGlzLm5vdGF0aW9uID09PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovOyB9XG4gICAgaXNSbmEoKSB7IHJldHVybiB0aGlzLmFscGhhYmV0ID09PSBcIlJOQVwiIC8qIEFMUEhBQkVULlJOQSAqLzsgfVxuICAgIGlzRG5hKCkgeyByZXR1cm4gdGhpcy5hbHBoYWJldCA9PT0gXCJETkFcIiAvKiBBTFBIQUJFVC5ETkEgKi87IH1cbiAgICBpc1BlcHRpZGUoKSB7IHJldHVybiB0aGlzLmFscGhhYmV0ID09PSBcIlBUXCIgLyogQUxQSEFCRVQuUFQgKi87IH1cbiAgICBpc01zYSgpIHsgcmV0dXJuIHRoaXMuYWxpZ25lZCA/IHRoaXMuYWxpZ25lZC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCdNU0EnKSA6IGZhbHNlOyB9XG4gICAgLyoqIEFzc29jaWF0ZSBub3RhdGlvbiB0eXBlcyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHVuaXRzICovXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Tk9UQVRJT059ICAgICBOb3RhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHVuaXRzIHR5cGVcbiAgICAgKi9cbiAgICBnZXROb3RhdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMudW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwiZmFzdGFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLykpXG4gICAgICAgICAgICByZXR1cm4gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLykpXG4gICAgICAgICAgICByZXR1cm4gXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi8pKVxuICAgICAgICAgICAgcmV0dXJuIFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBoYXMgdW5leHBlY3RlZCBub3RhdGlvbiAnJHt0aGlzLnVuaXRzfScuYCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBlbXB0eSBjb2x1bW4gb2YgdGhlIHNwZWNpZmllZCBub3RhdGlvbiB0eXBlIGFuZCB0aGUgc2FtZVxuICAgICAqIGxlbmd0aCBhcyBjb2x1bW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tk9UQVRJT059IHRhcmdldE5vdGF0aW9uXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIGdldE5ld0NvbHVtbih0YXJnZXROb3RhdGlvbikge1xuICAgICAgICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbjtcbiAgICAgICAgY29uc3QgbGVuID0gY29sLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRhcmdldE5vdGF0aW9uLnRvTG93ZXJDYXNlKCkgKyAnKCcgKyBjb2wubmFtZSArICcpJztcbiAgICAgICAgY29uc3QgbmV3Q29sTmFtZSA9IGNvbC5kYXRhRnJhbWUuY29sdW1ucy5nZXRVbnVzZWROYW1lKG5hbWUpO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5ld0NvbE5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJycpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEU7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgdGFyZ2V0Tm90YXRpb24pO1xuICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuQ0VMTF9SRU5ERVJFUiwgJ01hY3JvbW9sZWN1bGUnKTtcbiAgICAgICAgY29uc3Qgc3JjQWxpZ25lZCA9IGNvbC5nZXRUYWcoXCJhbGlnbmVkXCIgLyogVEFHUy5hbGlnbmVkICovKTtcbiAgICAgICAgaWYgKHNyY0FsaWduZWQpXG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiYWxpZ25lZFwiIC8qIFRBR1MuYWxpZ25lZCAqLywgc3JjQWxpZ25lZCk7XG4gICAgICAgIGNvbnN0IHNyY0FscGhhYmV0ID0gY29sLmdldFRhZyhcImFscGhhYmV0XCIgLyogVEFHUy5hbHBoYWJldCAqLyk7XG4gICAgICAgIGlmIChzcmNBbHBoYWJldClcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJhbHBoYWJldFwiIC8qIFRBR1MuYWxwaGFiZXQgKi8sIHNyY0FscGhhYmV0KTtcbiAgICAgICAgbGV0IHNyY0FscGhhYmV0U2l6ZSA9IGNvbC5nZXRUYWcoXCIuYWxwaGFiZXRTaXplXCIgLyogVEFHUy5hbHBoYWJldFNpemUgKi8pO1xuICAgICAgICBpZiAoc3JjQWxwaGFiZXRTaXplKVxuICAgICAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhcIi5hbHBoYWJldFNpemVcIiAvKiBUQUdTLmFscGhhYmV0U2l6ZSAqLywgc3JjQWxwaGFiZXRTaXplKTtcbiAgICAgICAgY29uc3Qgc3JjQWxwaGFiZXRJc011bHRpY2hhciA9IGNvbC5nZXRUYWcoXCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqLyk7XG4gICAgICAgIGlmIChzcmNBbHBoYWJldElzTXVsdGljaGFyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiLmFscGhhYmV0SXNNdWx0aWNoYXJcIiAvKiBUQUdTLmFscGhhYmV0SXNNdWx0aWNoYXIgKi8sIHNyY0FscGhhYmV0SXNNdWx0aWNoYXIpO1xuICAgICAgICBpZiAodGFyZ2V0Tm90YXRpb24gPT0gXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLykge1xuICAgICAgICAgICAgc3JjQWxwaGFiZXRTaXplID0gdGhpcy5nZXRBbHBoYWJldFNpemUoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhcIi5hbHBoYWJldFNpemVcIiAvKiBUQUdTLmFscGhhYmV0U2l6ZSAqLywgc3JjQWxwaGFiZXRTaXplKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgZW1wdHkgY29sdW1uIHVzaW5nIHRlbXBsYXRlQ29sIGFzIGEgdGVtcGxhdGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7REcuQ29sdW1ufSB0ZW1wbGF0ZUNvbCAgdGhlIHByb3BlcnRpZXMgYW5kIHVuaXRzIG9mIHRoaXMgY29sdW1uIGFyZSB1c2VkIGFzIGFcbiAgICAgKiB0ZW1wbGF0ZSB0byBidWlsZCB0aGUgbmV3IG9uZVxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn1cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TmV3Q29sdW1uKHRlbXBsYXRlQ29sKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IG5ldyBVbml0c0hhbmRsZXIodGVtcGxhdGVDb2wpO1xuICAgICAgICBjb25zdCB0YXJnZXROb3RhdGlvbiA9IGNvbC5ub3RhdGlvbjtcbiAgICAgICAgcmV0dXJuIGNvbC5nZXROZXdDb2x1bW4odGFyZ2V0Tm90YXRpb24pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIGhlbHBlciBmdW5jdGlvbiBjaGVja2luZyB0aGUgdmFsaWRpdHkgb2YgdGhlICd1bml0cycgc3RyaW5nXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdHMgIHRoZSBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBzdGF0aWMgdW5pdHNTdHJpbmdJc1ZhbGlkKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gdW5pdHMudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgcHJlZml4ZXMgPSBbXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovLCBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLywgXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqL107XG4gICAgICAgIGNvbnN0IHBvc3RmaXhlcyA9IFsncm5hJywgJ2RuYScsICdwdCddO1xuICAgICAgICBjb25zdCBwcmVmaXhDcml0ZXJpb24gPSBwcmVmaXhlcy5zb21lKChwKSA9PiB1bml0cy5zdGFydHNXaXRoKHAudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICByZXR1cm4gcHJlZml4Q3JpdGVyaW9uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgY29sdW1uIG9mIHNlbWFudGljIHR5cGUgTUFDUk9NT0xFQ1VMRSBmcm9tIHRoZSBsaXN0IG9mXG4gICAgICogc3BlY2lmaWVkIHBhcmFtZXRlcnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSAgICBsZW4gIHRoZSBsZW5ndGggb2YgdGhlIG5ldyBjb2x1bW5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gICAgbmFtZSAgdGhlIG5hbWUgb2YgdGhlIG5ldyBjb2x1bW5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gICAgdW5pdHMgIHRoZSB1bml0cyBvZiB0aGUgbmV3IGNvbHVtblxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn1cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TmV3Q29sdW1uRnJvbVBhcmFtcyhsZW4sIG5hbWUsIHVuaXRzKSB7XG4gICAgICAgIC8vIFdBUk5JTkc6IGluIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgaXMgaW1wb3NzaWJsZSB0byB2ZXJpZnkgdGhlIHVuaXF1ZW5lc3NcbiAgICAgICAgLy8gb2YgdGhlIG5ldyBjb2x1bW4ncyBuYW1lXG4gICAgICAgIC8vIFRPRE86IHZlcmlmeSB0aGUgdmFsaWRpdHkgb2YgdW5pdHMgcGFyYW1ldGVyXG4gICAgICAgIGlmICghVW5pdHNIYW5kbGVyLnVuaXRzU3RyaW5nSXNWYWxpZCh1bml0cykpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZm9ybWF0IG9mIFxcJ3VuaXRzXFwnIHBhcmFtZXRlcicpO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJycpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEU7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgdW5pdHMpO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihjb2wpIHtcbiAgICAgICAgdGhpcy5fY29sdW1uID0gY29sO1xuICAgICAgICBjb25zdCB1bml0cyA9IHRoaXMuX2NvbHVtbi50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICAgICAgICBpZiAodW5pdHMgIT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLl91bml0cyA9IHVuaXRzO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaXRzIGFyZSBub3Qgc3BlY2lmaWVkIGluIGNvbHVtbicpO1xuICAgICAgICB0aGlzLl9ub3RhdGlvbiA9IHRoaXMuZ2V0Tm90YXRpb24oKTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdEdhcFN5bWJvbCA9ICh0aGlzLmlzRmFzdGEoKSkgPyBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQSA6XG4gICAgICAgICAgICAodGhpcy5pc0hlbG0oKSkgPyBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5IRUxNIDpcbiAgICAgICAgICAgICAgICBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW4udGFncy5oYXMoXCJhbGlnbmVkXCIgLyogVEFHUy5hbGlnbmVkICovKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvciBjb2x1bW4gJyR7dGhpcy5jb2x1bW4ubmFtZX0nIG9mIG5vdGF0aW9uICcke3RoaXMubm90YXRpb259JyBgICtcbiAgICAgICAgICAgICAgICAgICAgYHRhZyAnJHtcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi99JyBpcyBtYW5kYXRvcnkuYCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKCF0aGlzLmNvbHVtbi50YWdzLmhhcyhUQUdTLmFscGhhYmV0U2l6ZSkpIHtcbiAgICAgICAgLy8gICBpZiAodGhpcy5pc0hlbG0oKSlcbiAgICAgICAgLy8gICAgIHRocm93IG5ldyBFcnJvcihgRm9yIGNvbHVtbiAnJHt0aGlzLmNvbHVtbi5uYW1lfScgb2Ygbm90YXRpb24gJyR7dGhpcy5ub3RhdGlvbn0nIGAgK1xuICAgICAgICAvLyAgICAgICBgdGFnICcke1RBR1MuYWxwaGFiZXRTaXplfScgaXMgbWFuZGF0b3J5LmApO1xuICAgICAgICAvLyAgIGVsc2UgaWYgKFsnVU4nXS5pbmNsdWRlcyh0aGlzLmFscGhhYmV0KSlcbiAgICAgICAgLy8gICAgIHRocm93IG5ldyBFcnJvcihgRm9yIGNvbHVtbiAnJHt0aGlzLmNvbHVtbi5uYW1lfScgb2YgYWxwaGFiZXQgJyR7dGhpcy5hbHBoYWJldH0nIGAgK1xuICAgICAgICAvLyAgICAgICBgdGFnICcke1RBR1MuYWxwaGFiZXRTaXplfScgaXMgbWFuZGF0b3J5LmApO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW4udGFncy5oYXMoXCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqLykpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSGVsbSgpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRm9yIGNvbHVtbiAnJHt0aGlzLmNvbHVtbi5uYW1lfScgb2Ygbm90YXRpb24gJyR7dGhpcy5ub3RhdGlvbn0nIGAgK1xuICAgICAgICAgICAgICAgICAgICBgdGFnICcke1wiLmFscGhhYmV0SXNNdWx0aWNoYXJcIiAvKiBUQUdTLmFscGhhYmV0SXNNdWx0aWNoYXIgKi99JyBpcyBtYW5kYXRvcnkuYCk7XG4gICAgICAgICAgICBlbHNlIGlmIChbJ1VOJ10uaW5jbHVkZXModGhpcy5hbHBoYWJldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBhbHBoYWJldCAnJHt0aGlzLmFscGhhYmV0fScgYCArXG4gICAgICAgICAgICAgICAgICAgIGB0YWcgJyR7XCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqL30nIGlzIG1hbmRhdG9yeS5gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0ID0ge1xuICAgIEhFTE06ICcqJyxcbiAgICBTRVBBUkFUT1I6ICcnLFxuICAgIEZBU1RBOiAnLScsXG59O1xuVW5pdHNIYW5kbGVyLlBlcHRpZGVGYXN0YUFscGhhYmV0ID0gbmV3IFNldChbXG4gICAgJ0cnLCAnTCcsICdZJywgJ1MnLCAnRScsICdRJywgJ0QnLCAnTicsICdGJywgJ0EnLFxuICAgICdLJywgJ1InLCAnSCcsICdDJywgJ1YnLCAnUCcsICdXJywgJ0knLCAnTScsICdUJyxcbl0pO1xuVW5pdHNIYW5kbGVyLkRuYUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFsnQScsICdDJywgJ0cnLCAnVCddKTtcblVuaXRzSGFuZGxlci5SbmFGYXN0YUFscGhhYmV0ID0gbmV3IFNldChbJ0EnLCAnQycsICdHJywgJ1UnXSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkVzVwZEhNdGFHRnVaR3hsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblZ1YVhSekxXaGhibVJzWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVVYwUXl4UFFVRlBMRVZCUlV3c1kwRkJZeXhGUVVOa0xHOUNRVUZ2UWl4RlFVTndRaXhSUVVGUkxFVkJSMUlzWlVGQlpTeEZRVWRvUWl4TlFVRk5MR2xDUVVGcFFpeERRVUZETzBGQlJYcENMR2xGUVVGcFJUdEJRVU5xUlN4TlFVRk5MRTlCUVU4c1dVRkJXVHRKUVd0Q2FFSXNUVUZCVFN4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVkQlFXTTdVVUZEYUVRc1NVRkJTU3hIUVVGSExFTkJRVU1zVDBGQlR5eExRVUZMTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZVHRaUVVNeFF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRzlEUVVGdlF5eERRVUZETEVOQlFVTTdVVUZGZUVRc1RVRkJUU3hMUVVGTExFZEJRV2RDTEZGQlFWRXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxHVkJRV1VzUTBGQlF5eERRVUZETzFGQlF6ZEVMRTFCUVUwc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETzFGQlEzSkVMRTFCUVUwc1VVRkJVU3hIUVVGSExHTkJRV01zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVVjJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXdyUWtGQmFVSXNRMEZCUXp0UlFVTXhReXhIUVVGSExFTkJRVU1zVFVGQlRTd3JRa0ZCWlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOc1F5eEhRVUZITEVOQlFVTXNUVUZCVFN4cFEwRkJaMElzVVVGQlVTeERRVUZETEVOQlFVTTdTVUZEZEVNc1EwRkJRenRKUVVWRUxFbEJRV01zUzBGQlN5eExRVUZoTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmNrUXNTVUZCWXl4TlFVRk5MRXRCUVdkQ0xFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZNVVFzU1VGQlZ5eFJRVUZSTEV0QlFXVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVV4UkN4SlFVRlhMR2RDUVVGblFpeExRVUZoTEU5QlFVOHNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjRSU3hKUVVGWExGTkJRVk03TzFGQlEyeENMRTFCUVUwc1UwRkJVeXhIUVVGMVFpeE5RVUZCTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hyUTBGQlowSXNiVU5CUVVrc1UwRkJVeXhEUVVGRE8xRkJRM1JHTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc2VVTkJRWFZDTEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNN1dVRkRha1VzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4MVEwRkJkVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMR3RDUVVGclFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNNVJ5eFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVFzU1VGQlZ5eFBRVUZQTzFGQlEyaENMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN3NFFrRkJZeXhEUVVGRE8xRkJSV3BFTEdsR1FVRnBSanRSUVVOcVJpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJRenRaUVVOd1JDeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdVVUZGZWtNc1QwRkJUeXhQUVVGUExFTkJRVU03U1VGRGFrSXNRMEZCUXp0SlFVVkVMR2xEUVVGcFF6dEpRVU5xUXl4SlFVRlhMRkZCUVZFN1VVRkRha0lzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxHZERRVUZsTEVOQlFVTTdVVUZGYmtRc2EwWkJRV3RHTzFGQlEyeEdMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzFsQlEzSkVMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc1EwRkJRenRSUVVVeFF5eFBRVUZQTEZGQlFWRXNRMEZCUXp0SlFVTnNRaXhEUVVGRE8wbEJSVTBzWlVGQlpUdFJRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxEaENRVUZwUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxEQkNRVUZsTEVWQlFVVTdXVUZEYkVVc1RVRkJUU3hsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MSGxEUVVGdFFpeERRVUZETzFsQlF6bEVMRWxCUVVrc1dVRkJiMElzUTBGQlF6dFpRVU42UWl4SlFVRkpMR1ZCUVdVc1JVRkJSVHRuUWtGRGJrSXNXVUZCV1N4SFFVRkhMRkZCUVZFc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF6dGhRVU14UXp0cFFrRkJUVHRuUWtGRFRDeHRRMEZCYlVNN1owSkJRMjVETEUxQlFVMHNVVUZCVVN4SFFVRnBRaXh2UWtGQmIwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03WjBKQlEycEZMRTFCUVUwc1MwRkJTeXhIUVVGSExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtRc1dVRkJXU3hIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dGhRVU12UXp0WlFVTkVMRTlCUVU4c1dVRkJXU3hEUVVGRE8xTkJRM0pDTzJGQlFVMDdXVUZEVEN4UlFVRlJMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3WjBKQlEzWkNPMjlDUVVORkxFOUJRVThzUlVGQlJTeERRVUZETzJkQ1FVTmFMRGhDUVVGclFqdG5Ra0ZEYkVJN2IwSkJRMFVzVDBGQlR5eERRVUZETEVOQlFVTTdaMEpCUTFnc1MwRkJTeXhKUVVGSk8yOUNRVU5RTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc01rSkJRVEpDTEVOQlFVTXNRMEZCUXp0dlFrRkRNVU1zVDBGQlR5eERRVUZETEVOQlFVTTdaMEpCUTFnN2IwSkJRMFVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4M1FrRkJkMElzU1VGQlNTeERRVUZETEZGQlFWRXNTVUZCU1N4RFFVRkRMRU5CUVVNN1lVRkROVVE3VTBGRFJqdEpRVU5JTEVOQlFVTTdTVUZGVFN4elFrRkJjMEk3VVVGRE0wSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3c0UWtGQmFVSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3d3UWtGQlpUdFpRVU5vUlN4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeDFSRUZCTUVJc1NVRkJTU3hOUVVGTkxFTkJRVU03TzFsQlJUbEVMRTlCUVU4c1MwRkJTeXhEUVVGRE8wbEJRMnBDTEVOQlFVTTdTVUZGVFN4UFFVRlBMRXRCUVdNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeHBRMEZCYlVJc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRkwwUXNWMEZCVnl4TFFVRmpMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzZVVOQlFYVkNMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWFpGTEUxQlFVMHNTMEZCWXl4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxDdENRVUZyUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVVM1JDeExRVUZMTEV0QlFXTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3cyUWtGQmFVSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZNMFFzUzBGQlN5eExRVUZqTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc05rSkJRV2xDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlRORUxGTkJRVk1zUzBGQll5eFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMREpDUVVGblFpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVTVSQ3hMUVVGTExFdEJRV01zVDBGQlR5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWeVJ5dzBSRUZCTkVRN1NVRkROVVE3TzA5QlJVYzdTVUZEVHl4WFFVRlhPMUZCUTI1Q0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhWUVVGVkxEaENRVUZuUWp0WlFVTnlSQ3h2UTBGQmMwSTdZVUZEYmtJc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRlZCUVZVc2MwTkJRVzlDTzFsQlF6bEVMRFJEUVVFd1FqdGhRVU4yUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNWVUZCVlN3MFFrRkJaVHRaUVVONlJDeHJRMEZCY1VJN08xbEJSWEpDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1YwRkJWeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NPRUpCUVRoQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpkR0xFTkJRVU03U1VGRlJEczdPenM3TzA5QlRVYzdTVUZEVHl4WlFVRlpMRU5CUVVNc1kwRkJkMEk3VVVGRE4wTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU40UWl4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlEzWkNMRTFCUVUwc1NVRkJTU3hIUVVGSExHTkJRV01zUTBGQlF5eFhRVUZYTEVWQlFVVXNSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZEYWtVc1RVRkJUU3hWUVVGVkxFZEJRVWNzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6ZEVMRTFCUVUwc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hWUVVGVkxFVkJRVVVzU1VGQlNTeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VZc1UwRkJVeXhEUVVGRExFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVNM1F5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEdOQlFXTXNRMEZCUXl4RFFVRkRPMUZCUTJoRUxGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFVkJRVVVzWlVGQlpTeERRVUZETEVOQlFVTTdVVUZGZWtRc1RVRkJUU3hWUVVGVkxFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNPRUpCUVdNc1EwRkJRenRSUVVNMVF5eEpRVUZKTEZWQlFWVTdXVUZEV2l4VFFVRlRMRU5CUVVNc1RVRkJUU3dyUWtGQlpTeFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVVTNReXhOUVVGTkxGZEJRVmNzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4blEwRkJaU3hEUVVGRE8xRkJRemxETEVsQlFVa3NWMEZCVnp0WlFVTmlMRk5CUVZNc1EwRkJReXhOUVVGTkxHbERRVUZuUWl4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVVVdlF5eEpRVUZKTEdWQlFXVXNSMEZCVnl4SFFVRkhMRU5CUVVNc1RVRkJUU3g1UTBGQmJVSXNRMEZCUXp0UlFVTTFSQ3hKUVVGSkxHVkJRV1U3V1VGRGFrSXNVMEZCVXl4RFFVRkRMRTFCUVUwc01FTkJRVzlDTEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUlhaRUxFMUJRVTBzYzBKQlFYTkNMRWRCUVZjc1IwRkJSeXhEUVVGRExFMUJRVTBzZFVSQlFUQkNMRU5CUVVNN1VVRkROVVVzU1VGQlNTeHpRa0ZCYzBJc1MwRkJTeXhUUVVGVE8xbEJRM1JETEZOQlFWTXNRMEZCUXl4TlFVRk5MSGRFUVVFeVFpeHpRa0ZCYzBJc1EwRkJReXhEUVVGRE8xRkJSWEpGTEVsQlFVa3NZMEZCWXl3NFFrRkJhVUlzUlVGQlJUdFpRVU51UXl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUlVGQlJTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMWxCUTNCRUxGTkJRVk1zUTBGQlF5eE5RVUZOTERCRFFVRnZRaXhsUVVGbExFTkJRVU1zUTBGQlF6dFRRVU4wUkR0UlFVVkVMRTlCUVU4c1UwRkJVeXhEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRTU3hOUVVGTkxFTkJRVU1zV1VGQldTeERRVUZETEZkQlFYTkNPMUZCUXk5RExFMUJRVTBzUjBGQlJ5eEhRVUZwUWl4SlFVRkpMRmxCUVZrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVU40UkN4TlFVRk5MR05CUVdNc1IwRkJSeXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETzFGQlEzQkRMRTlCUVU4c1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3pzN08wOUJTMGM3U1VGRFNTeE5RVUZOTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUzBGQllUdFJRVU0xUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzFGQlF6VkNMRTFCUVUwc1VVRkJVU3hIUVVGSExHZEhRVUZ0UkN4RFFVRkRPMUZCUTNKRkxFMUJRVTBzVTBGQlV5eEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVVYyUXl4TlFVRk5MR1ZCUVdVc1IwRkJSeXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFFWXNUMEZCVHl4bFFVRmxMRU5CUVVNN1NVRkRla0lzUTBGQlF6dEpRVVZFT3pzN096czdPenRQUVZGSE8wbEJRMGtzVFVGQlRTeERRVUZETEhOQ1FVRnpRaXhEUVVOc1F5eEhRVUZYTEVWQlExZ3NTVUZCV1N4RlFVTmFMRXRCUVdFN1VVRkZZaXcwUlVGQk5FVTdVVUZETlVVc01rSkJRVEpDTzFGQlF6TkNMQ3REUVVFclF6dFJRVU12UXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVONlF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMSFZEUVVGMVF5eERRVUZETEVOQlFVTTdVVUZETTBRc1RVRkJUU3hUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1VVRkJVU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTVSU3hUUVVGVExFTkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRE8xRkJRemRETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRka01zVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWRUxGbEJRVzFDTEVkQlFXTTdVVUZETDBJc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEhRVUZITEVOQlFVTTdVVUZEYmtJc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTXZReXhKUVVGSkxFdEJRVXNzUzBGQlN5eEpRVUZKTzFsQlEyaENMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZET3p0WlFVVndRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEcxRFFVRnRReXhEUVVGRExFTkJRVU03VVVGRGRrUXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdVVUZEY0VNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRmxCUVZrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVOeVJpeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUXpGRUxGbEJRVmtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhUUVVGVExFTkJRVU03VVVGRmJFUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NPRUpCUVdNc1JVRkJSVHRaUVVOMlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTzJkQ1FVTjBReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEdWQlFXVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSk8yOUNRVU5vUml4UlFVRlJMRFJDUVVGWkxHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1UwRkROVU03VVVGRlJDeHJSRUZCYTBRN1VVRkRiRVFzZFVKQlFYVkNPMUZCUTNaQ0xESkdRVUV5Ump0UlFVTXpSaXh4UkVGQmNVUTdVVUZEY2tRc05rTkJRVFpETzFGQlF6ZERMREpHUVVFeVJqdFJRVU16Uml4eFJFRkJjVVE3VVVGRGNrUXNTVUZCU1R0UlFVVktMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMSFZFUVVFd1FpeEZRVUZGTzFsQlEyNUVMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJUdG5Ra0ZEWml4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHVkJRV1VzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMR3RDUVVGclFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpPMjlDUVVOb1JpeFJRVUZSTEhGRVFVRjNRaXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMmxDUVVOc1JDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdaMEpCUTNKRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNaVUZCWlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzYTBKQlFXdENMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWs3YjBKQlEyaEdMRkZCUVZFc2NVUkJRWGRDTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03VTBGRGVFUTdTVUZEU0N4RFFVRkRPenRCUVdoUmVVSXNiVU5CUVhOQ0xFZEJRVWM3U1VGRGFrUXNTVUZCU1N4RlFVRkZMRWRCUVVjN1NVRkRWQ3hUUVVGVExFVkJRVVVzUlVGQlJUdEpRVU5pTEV0QlFVc3NSVUZCUlN4SFFVRkhPME5CUTFnc1EwRkJRenRCUVVWeFFpeHBRMEZCYjBJc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlV6dEpRVU0xUkN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhPMGxCUTJoRUxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWM3UTBGRGFrUXNRMEZCUXl4RFFVRkRPMEZCUTI5Q0xEWkNRVUZuUWl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU42UkN3MlFrRkJaMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCVXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZTF4dUlDQkJURkJJUVVKRlZDeGNiaUFnWkdWMFpXTjBRV3h3YUdGaVpYUXNYRzRnSUdkbGRGTndiR2wwZEdWeVJtOXlRMjlzZFcxdUxGeHVJQ0JuWlhSVGRHRjBjeXhjYmlBZ1RrOVVRVlJKVDA0c1hHNGdJRk5sY1VOdmJGTjBZWFJ6TEZ4dUlDQnpjR3hwZEhSbGNrRnpSbUZ6ZEdFc1hHNGdJRk53YkdsMGRHVnlSblZ1WXl4Y2JpQWdWRUZIVTF4dWZTQm1jbTl0SUNjdUwyMWhZM0p2Ylc5c1pXTjFiR1VuTzF4dVhHNHZLaW9nUTJ4aGMzTWdabTl5SUdoaGJtUnNhVzVuSUc1dmRHRjBhVzl1SUhWdWFYUnpJR2x1SUUxaFkzSnZiVzlzWldOMWJHVWdZMjlzZFcxdWN5QXFMMXh1Wlhod2IzSjBJR05zWVhOeklGVnVhWFJ6U0dGdVpHeGxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQnlaV0ZrYjI1c2VTQmZZMjlzZFcxdU9pQkVSeTVEYjJ4MWJXNDdJQzh2SUhSb1pTQmpiMngxYlc0Z2RHOGdZbVVnWTI5dWRtVnlkR1ZrWEc0Z0lIQnliM1JsWTNSbFpDQmZkVzVwZEhNNklITjBjbWx1WnpzZ0x5OGdkVzVwZEhNc0lHOW1JSFJvWlNCbWIzSnRJR1poYzNSaExDQnpaWEJoY21GMGIzSmNiaUFnY0hKdmRHVmpkR1ZrSUY5dWIzUmhkR2x2YmpvZ1RrOVVRVlJKVDA0N0lDOHZJR04xY25KbGJuUWdibTkwWVhScGIyNGdLSGRwZEdodmRYUWdPbE5GVVRwT1ZDd2daWFJqTGlsY2JpQWdjSEp2ZEdWamRHVmtJRjlrWldaaGRXeDBSMkZ3VTNsdFltOXNPaUJ6ZEhKcGJtYzdYRzRnSUhCeWIzUmxZM1JsWkNCemRHRjBhV01nY21WaFpHOXViSGtnWDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDQTlJSHRjYmlBZ0lDQklSVXhOT2lBbktpY3NYRzRnSUNBZ1UwVlFRVkpCVkU5U09pQW5KeXhjYmlBZ0lDQkdRVk5VUVRvZ0p5MG5MRnh1SUNCOU8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdjbVZoWkc5dWJIa2dVR1Z3ZEdsa1pVWmhjM1JoUVd4d2FHRmlaWFFnUFNCdVpYY2dVMlYwUEhOMGNtbHVaejRvVzF4dUlDQWdJQ2RISnl3Z0owd25MQ0FuV1Njc0lDZFRKeXdnSjBVbkxDQW5VU2NzSUNkRUp5d2dKMDRuTENBblJpY3NJQ2RCSnl4Y2JpQWdJQ0FuU3ljc0lDZFNKeXdnSjBnbkxDQW5ReWNzSUNkV0p5d2dKMUFuTENBblZ5Y3NJQ2RKSnl3Z0owMG5MQ0FuVkNjc1hHNGdJRjBwTzF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhKbFlXUnZibXg1SUVSdVlVWmhjM1JoUVd4d2FHRmlaWFFnUFNCdVpYY2dVMlYwUEhOMGNtbHVaejRvV3lkQkp5d2dKME1uTENBblJ5Y3NJQ2RVSjEwcE8xeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklISmxZV1J2Ym14NUlGSnVZVVpoYzNSaFFXeHdhR0ZpWlhRZ1BTQnVaWGNnVTJWMFBITjBjbWx1Wno0b1d5ZEJKeXdnSjBNbkxDQW5SeWNzSUNkVkoxMHBPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYzJWMFZXNXBkSE5VYjBaaGMzUmhRMjlzZFcxdUtHTnZiRG9nUkVjdVEyOXNkVzF1S1NCN1hHNGdJQ0FnYVdZZ0tHTnZiQzV6WlcxVWVYQmxJQ0U5UFNCRVJ5NVRSVTFVV1ZCRkxrMUJRMUpQVFU5TVJVTlZURVVwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMFpoYzNSaElHTnZiSFZ0YmlCdGRYTjBJR0psSUUxQlExSlBUVTlNUlVOVlRFVW5LVHRjYmx4dUlDQWdJR052Ym5OMElITjBZWFJ6T2lCVFpYRkRiMnhUZEdGMGN5QTlJR2RsZEZOMFlYUnpLR052YkN3Z05Td2djM0JzYVhSMFpYSkJjMFpoYzNSaEtUdGNiaUFnSUNCamIyNXpkQ0JoYkdsbmJtVmtJRDBnYzNSaGRITXVjMkZ0WlV4bGJtZDBhQ0EvSUNkVFJWRXVUVk5CSnlBNklDZFRSVkVuTzF4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMElEMGdaR1YwWldOMFFXeHdhR0ZpWlhRb2MzUmhkSE1wTzF4dVhHNGdJQ0FnWTI5c0xuTmxkRlJoWnloRVJ5NVVRVWRUTGxWT1NWUlRMQ0JPVDFSQlZFbFBUaTVHUVZOVVFTazdYRzRnSUNBZ1kyOXNMbk5sZEZSaFp5aFVRVWRUTG1Gc2FXZHVaV1FzSUdGc2FXZHVaV1FwTzF4dUlDQWdJR052YkM1elpYUlVZV2NvVkVGSFV5NWhiSEJvWVdKbGRDd2dZV3h3YUdGaVpYUXBPMXh1SUNCOVhHNWNiaUFnY0hKdmRHVmpkR1ZrSUdkbGRDQjFibWwwY3lncE9pQnpkSEpwYm1jZ2V5QnlaWFIxY200Z2RHaHBjeTVmZFc1cGRITTdJSDFjYmx4dUlDQndjbTkwWldOMFpXUWdaMlYwSUdOdmJIVnRiaWdwT2lCRVJ5NURiMngxYlc0Z2V5QnlaWFIxY200Z2RHaHBjeTVmWTI5c2RXMXVPeUI5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J1YjNSaGRHbHZiaWdwT2lCT1QxUkJWRWxQVGlCN0lISmxkSFZ5YmlCMGFHbHpMbDl1YjNSaGRHbHZianNnZlZ4dVhHNGdJSEIxWW14cFl5Qm5aWFFnWkdWbVlYVnNkRWRoY0ZONWJXSnZiQ2dwT2lCemRISnBibWNnZXlCeVpYUjFjbTRnZEdocGN5NWZaR1ZtWVhWc2RFZGhjRk41YldKdmJEc2dmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdjMlZ3WVhKaGRHOXlLQ2s2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkNCN1hHNGdJQ0FnWTI5dWMzUWdjMlZ3WVhKaGRHOXlPaUJ6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1FnUFNCMGFHbHpMbU52YkhWdGJpNW5aWFJVWVdjb1ZFRkhVeTV6WlhCaGNtRjBiM0lwSUQ4L0lIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCcFppQW9kR2hwY3k1dWIzUmhkR2x2YmlBOVBUMGdUazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNJQ1ltSUhObGNHRnlZWFJ2Y2lBOVBUMGdkVzVrWldacGJtVmtLVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQlRaWEJoY21GMGIzSWdhWE1nYldGdVpHRjBiM0o1SUNCbWIzSWdZMjlzZFcxdUlDY2tlM1JvYVhNdVkyOXNkVzF1TG01aGJXVjlKeUJ2WmlCdWIzUmhkR2x2YmlBbkpIdDBhR2x6TG01dmRHRjBhVzl1ZlNjdVlDazdYRzRnSUNBZ2NtVjBkWEp1SUhObGNHRnlZWFJ2Y2p0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdZV3hwWjI1bFpDZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lHTnZibk4wSUdGc2FXZHVaV1FnUFNCMGFHbHpMbU52YkhWdGJpNW5aWFJVWVdjb1ZFRkhVeTVoYkdsbmJtVmtLVHRjYmx4dUlDQWdJQzh2SUZSQlIxTXVZV3hwWjI1bFpDQnBjeUJ0WVc1a1lYUnZjbmtnWm05eUlHTnZiSFZ0Ym5NZ2IyWWdUazlVUVZSSlQwNHVSa0ZUVkVFZ1lXNWtJRTVQVkVGVVNVOU9MbE5GVUVGU1FWUlBVbHh1SUNBZ0lHbG1JQ2doWVd4cFoyNWxaQ0FtSmlBb2RHaHBjeTVwYzBaaGMzUmhLQ2tnZkh3Z2RHaHBjeTVwYzFObGNHRnlZWFJ2Y2lncEtTbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblZHRm5JR0ZzYVdkdVpXUWdibTkwSUhObGRDY3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlHRnNhV2R1WldRN1hHNGdJSDFjYmx4dUlDQXZLaW9nUVd4d2FHRmlaWFFnYm1GdFpTQW9kWEJ3WlhJZ1kyRnpaU2tnS2k5Y2JpQWdjSFZpYkdsaklHZGxkQ0JoYkhCb1lXSmxkQ2dwT2lCemRISnBibWNnZTF4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMElEMGdkR2hwY3k1amIyeDFiVzR1WjJWMFZHRm5LRlJCUjFNdVlXeHdhR0ZpWlhRcE8xeHVYRzRnSUNBZ0x5OGdWRUZIVXk1aGJIQm9ZV0psZENCcGN5QnRZVzVrWVhSdmNua2dabTl5SUdOdmJIVnRibk1nYjJZZ1RrOVVRVlJKVDA0dVJrRlRWRUVnWVc1a0lFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVseHVJQ0FnSUdsbUlDZ2hZV3h3YUdGaVpYUWdKaVlnS0hSb2FYTXVhWE5HWVhOMFlTZ3BJSHg4SUhSb2FYTXVhWE5UWlhCaGNtRjBiM0lvS1NrcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFSaFp5QmhiSEJvWVdKbGRDQnViM1FnYzJWMEp5azdYRzVjYmlBZ0lDQnlaWFIxY200Z1lXeHdhR0ZpWlhRN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBRV3h3YUdGaVpYUlRhWHBsS0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11Ym05MFlYUnBiMjRnUFQwZ1RrOVVRVlJKVDA0dVNFVk1UU0I4ZkNCMGFHbHpMbUZzY0doaFltVjBJRDA5SUVGTVVFaEJRa1ZVTGxWT0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCaGJIQm9ZV0psZEZOcGVtVlRkSElnUFNCMGFHbHpMbU52YkhWdGJpNW5aWFJVWVdjb1ZFRkhVeTVoYkhCb1lXSmxkRk5wZW1VcE8xeHVJQ0FnSUNBZ2JHVjBJR0ZzY0doaFltVjBVMmw2WlRvZ2JuVnRZbVZ5TzF4dUlDQWdJQ0FnYVdZZ0tHRnNjR2hoWW1WMFUybDZaVk4wY2lrZ2UxeHVJQ0FnSUNBZ0lDQmhiSEJvWVdKbGRGTnBlbVVnUFNCd1lYSnpaVWx1ZENoaGJIQm9ZV0psZEZOcGVtVlRkSElwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1kyRnNZM1ZzWVhSbElHRnNjR2hoWW1WMFUybDZaU0J2YmlCa1pXMWhibVJjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM0JzYVhSMFpYSTZJRk53YkdsMGRHVnlSblZ1WXlBOUlHZGxkRk53YkdsMGRHVnlSbTl5UTI5c2RXMXVLSFJvYVhNdVkyOXNkVzF1S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSaGRITWdQU0JuWlhSVGRHRjBjeWgwYUdsekxtTnZiSFZ0Yml3Z01Td2djM0JzYVhSMFpYSXBPMXh1SUNBZ0lDQWdJQ0JoYkhCb1lXSmxkRk5wZW1VZ1BTQlBZbXBsWTNRdWEyVjVjeWh6ZEdGMGN5NW1jbVZ4S1M1c1pXNW5kR2c3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZV3h3YUdGaVpYUlRhWHBsTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnpkMmwwWTJnZ0tIUm9hWE11WVd4d2FHRmlaWFFwSUh0Y2JpQWdJQ0FnSUdOaGMyVWdRVXhRU0VGQ1JWUXVVRlE2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUF5TUR0Y2JpQWdJQ0FnSUdOaGMyVWdRVXhRU0VGQ1JWUXVSRTVCT2x4dUlDQWdJQ0FnWTJGelpTQkJURkJJUVVKRlZDNVNUa0U2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUEwTzF4dUlDQWdJQ0FnWTJGelpTQW5UbFFuT2x4dUlDQWdJQ0FnSUNCamIyNXpiMnhsTG5kaGNtNG9ZRlZ1Wlhod1pXTjBaV1FnWVd4d2FHRmlaWFFnSjA1VUp5NWdLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRFE3WEc0Z0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRlZ1Wlhod1pXTjBaV1FnWVd4d2FHRmlaWFFnSnlSN2RHaHBjeTVoYkhCb1lXSmxkSDBuTG1BcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUkJiSEJvWVdKbGRFbHpUWFZzZEdsamFHRnlLQ2s2SUdKdmIyeGxZVzRnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbTV2ZEdGMGFXOXVJRDA5SUU1UFZFRlVTVTlPTGtoRlRFMGdmSHdnZEdocGN5NWhiSEJvWVdKbGRDQTlQU0JCVEZCSVFVSkZWQzVWVGlsY2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NWhiSEJvWVdKbGRFbHpUWFZzZEdsamFHRnlLU0E5UFNBbmRISjFaU2M3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHbHpSbUZ6ZEdFb0tUb2dZbTl2YkdWaGJpQjdJSEpsZEhWeWJpQjBhR2x6TG01dmRHRjBhVzl1SUQwOVBTQk9UMVJCVkVsUFRpNUdRVk5VUVRzZ2ZWeHVYRzRnSUhCMVlteHBZeUJwYzFObGNHRnlZWFJ2Y2lncE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUm9hWE11Ym05MFlYUnBiMjRnUFQwOUlFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVqc2dmVnh1WEc0Z0lIQjFZbXhwWXlCcGMwaGxiRzBvS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMGFHbHpMbTV2ZEdGMGFXOXVJRDA5UFNCT1QxUkJWRWxQVGk1SVJVeE5PeUI5WEc1Y2JpQWdjSFZpYkdsaklHbHpVbTVoS0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTVoYkhCb1lXSmxkQ0E5UFQwZ1FVeFFTRUZDUlZRdVVrNUJPeUI5WEc1Y2JpQWdjSFZpYkdsaklHbHpSRzVoS0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTVoYkhCb1lXSmxkQ0E5UFQwZ1FVeFFTRUZDUlZRdVJFNUJPeUI5WEc1Y2JpQWdjSFZpYkdsaklHbHpVR1Z3ZEdsa1pTZ3BPaUJpYjI5c1pXRnVJSHNnY21WMGRYSnVJSFJvYVhNdVlXeHdhR0ZpWlhRZ1BUMDlJRUZNVUVoQlFrVlVMbEJVT3lCOVhHNWNiaUFnY0hWaWJHbGpJR2x6VFhOaEtDazZJR0p2YjJ4bFlXNGdleUJ5WlhSMWNtNGdkR2hwY3k1aGJHbG5ibVZrSUQ4Z2RHaHBjeTVoYkdsbmJtVmtMblJ2VlhCd1pYSkRZWE5sS0NrdWFXNWpiSFZrWlhNb0owMVRRU2NwSURvZ1ptRnNjMlU3SUgxY2JseHVJQ0F2S2lvZ1FYTnpiMk5wWVhSbElHNXZkR0YwYVc5dUlIUjVjR1Z6SUhkcGRHZ2dkR2hsSUdOdmNuSmxjM0J2Ym1ScGJtY2dkVzVwZEhNZ0tpOWNiaUFnTHlvcVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTA1UFZFRlVTVTlPZlNBZ0lDQWdUbTkwWVhScGIyNGdZWE56YjJOcFlYUmxaQ0IzYVhSb0lIUm9aU0IxYm1sMGN5QjBlWEJsWEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ1oyVjBUbTkwWVhScGIyNG9LVG9nVGs5VVFWUkpUMDRnZTF4dUlDQWdJR2xtSUNoMGFHbHpMblZ1YVhSekxuUnZURzkzWlhKRFlYTmxLQ2t1YzNSaGNuUnpWMmwwYUNoT1QxUkJWRWxQVGk1R1FWTlVRU2twWEc0Z0lDQWdJQ0J5WlhSMWNtNGdUazlVUVZSSlQwNHVSa0ZUVkVFN1hHNGdJQ0FnWld4elpTQnBaaUFvZEdocGN5NTFibWwwY3k1MGIweHZkMlZ5UTJGelpTZ3BMbk4wWVhKMGMxZHBkR2dvVGs5VVFWUkpUMDR1VTBWUVFWSkJWRTlTS1NsY2JpQWdJQ0FnSUhKbGRIVnliaUJPVDFSQlZFbFBUaTVUUlZCQlVrRlVUMUk3WEc0Z0lDQWdaV3h6WlNCcFppQW9kR2hwY3k1MWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29UazlVUVZSSlQwNHVTRVZNVFNrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnVGs5VVFWUkpUMDR1U0VWTVRUdGNiaUFnSUNCbGJITmxYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFTnZiSFZ0YmlBbkpIdDBhR2x6TG1OdmJIVnRiaTV1WVcxbGZTY2dhR0Z6SUhWdVpYaHdaV04wWldRZ2JtOTBZWFJwYjI0Z0p5UjdkR2hwY3k1MWJtbDBjMzBuTG1BcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpTQmhJRzVsZHlCbGJYQjBlU0JqYjJ4MWJXNGdiMllnZEdobElITndaV05wWm1sbFpDQnViM1JoZEdsdmJpQjBlWEJsSUdGdVpDQjBhR1VnYzJGdFpWeHVJQ0FnS2lCc1pXNW5kR2dnWVhNZ1kyOXNkVzF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1RrOVVRVlJKVDA1OUlIUmhjbWRsZEU1dmRHRjBhVzl1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjFjYmlBZ0lDb3ZYRzRnSUhCeWIzUmxZM1JsWkNCblpYUk9aWGREYjJ4MWJXNG9kR0Z5WjJWMFRtOTBZWFJwYjI0NklFNVBWRUZVU1U5T0tUb2dSRWN1UTI5c2RXMXVJSHRjYmlBZ0lDQmpiMjV6ZENCamIyd2dQU0IwYUdsekxtTnZiSFZ0Ymp0Y2JpQWdJQ0JqYjI1emRDQnNaVzRnUFNCamIyd3ViR1Z1WjNSb08xeHVJQ0FnSUdOdmJuTjBJRzVoYldVZ1BTQjBZWEpuWlhST2IzUmhkR2x2Ymk1MGIweHZkMlZ5UTJGelpTZ3BJQ3NnSnlnbklDc2dZMjlzTG01aGJXVWdLeUFuS1NjN1hHNGdJQ0FnWTI5dWMzUWdibVYzUTI5c1RtRnRaU0E5SUdOdmJDNWtZWFJoUm5KaGJXVXVZMjlzZFcxdWN5NW5aWFJWYm5WelpXUk9ZVzFsS0c1aGJXVXBPMXh1SUNBZ0lHTnZibk4wSUc1bGQwTnZiSFZ0YmlBOUlFUkhMa052YkhWdGJpNW1jbTl0VEdsemRDZ25jM1J5YVc1bkp5d2dibVYzUTI5c1RtRnRaU3dnYm1WM0lFRnljbUY1S0d4bGJpa3VabWxzYkNnbkp5a3BPMXh1SUNBZ0lHNWxkME52YkhWdGJpNXpaVzFVZVhCbElEMGdSRWN1VTBWTlZGbFFSUzVOUVVOU1QwMVBURVZEVlV4Rk8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvUkVjdVZFRkhVeTVWVGtsVVV5d2dkR0Z5WjJWMFRtOTBZWFJwYjI0cE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvUkVjdVZFRkhVeTVEUlV4TVgxSkZUa1JGVWtWU0xDQW5UV0ZqY205dGIyeGxZM1ZzWlNjcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYzNKalFXeHBaMjVsWkNBOUlHTnZiQzVuWlhSVVlXY29WRUZIVXk1aGJHbG5ibVZrS1R0Y2JpQWdJQ0JwWmlBb2MzSmpRV3hwWjI1bFpDbGNiaUFnSUNBZ0lHNWxkME52YkhWdGJpNXpaWFJVWVdjb1ZFRkhVeTVoYkdsbmJtVmtMQ0J6Y21OQmJHbG5ibVZrS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSE55WTBGc2NHaGhZbVYwSUQwZ1kyOXNMbWRsZEZSaFp5aFVRVWRUTG1Gc2NHaGhZbVYwS1R0Y2JpQWdJQ0JwWmlBb2MzSmpRV3h3YUdGaVpYUXBYRzRnSUNBZ0lDQnVaWGREYjJ4MWJXNHVjMlYwVkdGbktGUkJSMU11WVd4d2FHRmlaWFFzSUhOeVkwRnNjR2hoWW1WMEtUdGNibHh1SUNBZ0lHeGxkQ0J6Y21OQmJIQm9ZV0psZEZOcGVtVTZJSE4wY21sdVp5QTlJR052YkM1blpYUlVZV2NvVkVGSFV5NWhiSEJvWVdKbGRGTnBlbVVwTzF4dUlDQWdJR2xtSUNoemNtTkJiSEJvWVdKbGRGTnBlbVVwWEc0Z0lDQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRlJCUjFNdVlXeHdhR0ZpWlhSVGFYcGxMQ0J6Y21OQmJIQm9ZV0psZEZOcGVtVXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2MzSmpRV3h3YUdGaVpYUkpjMDExYkhScFkyaGhjam9nYzNSeWFXNW5JRDBnWTI5c0xtZGxkRlJoWnloVVFVZFRMbUZzY0doaFltVjBTWE5OZFd4MGFXTm9ZWElwTzF4dUlDQWdJR2xtSUNoemNtTkJiSEJvWVdKbGRFbHpUWFZzZEdsamFHRnlJQ0U5UFNCMWJtUmxabWx1WldRcFhHNGdJQ0FnSUNCdVpYZERiMngxYlc0dWMyVjBWR0ZuS0ZSQlIxTXVZV3h3YUdGaVpYUkpjMDExYkhScFkyaGhjaXdnYzNKalFXeHdhR0ZpWlhSSmMwMTFiSFJwWTJoaGNpazdYRzVjYmlBZ0lDQnBaaUFvZEdGeVoyVjBUbTkwWVhScGIyNGdQVDBnVGs5VVFWUkpUMDR1U0VWTVRTa2dlMXh1SUNBZ0lDQWdjM0pqUVd4d2FHRmlaWFJUYVhwbElEMGdkR2hwY3k1blpYUkJiSEJvWVdKbGRGTnBlbVVvS1M1MGIxTjBjbWx1WnlncE8xeHVJQ0FnSUNBZ2JtVjNRMjlzZFcxdUxuTmxkRlJoWnloVVFVZFRMbUZzY0doaFltVjBVMmw2WlN3Z2MzSmpRV3h3YUdGaVpYUlRhWHBsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdibVYzUTI5c2RXMXVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaU0JoSUc1bGR5QmxiWEIwZVNCamIyeDFiVzRnZFhOcGJtY2dkR1Z0Y0d4aGRHVkRiMndnWVhNZ1lTQjBaVzF3YkdGMFpWeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMFJITGtOdmJIVnRibjBnZEdWdGNHeGhkR1ZEYjJ3Z0lIUm9aU0J3Y205d1pYSjBhV1Z6SUdGdVpDQjFibWwwY3lCdlppQjBhR2x6SUdOdmJIVnRiaUJoY21VZ2RYTmxaQ0JoY3lCaFhHNGdJQ0FxSUhSbGJYQnNZWFJsSUhSdklHSjFhV3hrSUhSb1pTQnVaWGNnYjI1bFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBSSExrTnZiSFZ0Ym4xY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFRtVjNRMjlzZFcxdUtIUmxiWEJzWVhSbFEyOXNPaUJFUnk1RGIyeDFiVzRwT2lCRVJ5NURiMngxYlc0Z2UxeHVJQ0FnSUdOdmJuTjBJR052YkRvZ1ZXNXBkSE5JWVc1a2JHVnlJRDBnYm1WM0lGVnVhWFJ6U0dGdVpHeGxjaWgwWlcxd2JHRjBaVU52YkNrN1hHNGdJQ0FnWTI5dWMzUWdkR0Z5WjJWMFRtOTBZWFJwYjI0Z1BTQmpiMnd1Ym05MFlYUnBiMjQ3WEc0Z0lDQWdjbVYwZFhKdUlHTnZiQzVuWlhST1pYZERiMngxYlc0b2RHRnlaMlYwVG05MFlYUnBiMjRwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFRWdhR1ZzY0dWeUlHWjFibU4wYVc5dUlHTm9aV05yYVc1bklIUm9aU0IyWVd4cFpHbDBlU0J2WmlCMGFHVWdKM1Z1YVhSekp5QnpkSEpwYm1kY2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIVnVhWFJ6SUNCMGFHVWdjM1J5YVc1bklIUnZJR0psSUhaaGJHbGtZWFJsWkZ4dUlDQWdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QjFibWwwYzFOMGNtbHVaMGx6Vm1Gc2FXUW9kVzVwZEhNNklITjBjbWx1WnlrNklHSnZiMnhsWVc0Z2UxeHVJQ0FnSUhWdWFYUnpJRDBnZFc1cGRITXVkRzlNYjNkbGNrTmhjMlVvS1R0Y2JpQWdJQ0JqYjI1emRDQndjbVZtYVhobGN5QTlJRnRPVDFSQlZFbFBUaTVHUVZOVVFTd2dUazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNMQ0JPVDFSQlZFbFBUaTVJUlV4TlhUdGNiaUFnSUNCamIyNXpkQ0J3YjNOMFptbDRaWE1nUFNCYkozSnVZU2NzSUNka2JtRW5MQ0FuY0hRblhUdGNibHh1SUNBZ0lHTnZibk4wSUhCeVpXWnBlRU55YVhSbGNtbHZiaUE5SUhCeVpXWnBlR1Z6TG5OdmJXVW9LSEFwSUQwK0lIVnVhWFJ6TG5OMFlYSjBjMWRwZEdnb2NDNTBiMHh2ZDJWeVEyRnpaU2dwS1NrN1hHNGdJQ0FnY21WMGRYSnVJSEJ5WldacGVFTnlhWFJsY21sdmJqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYjI1emRISjFZM1FnWVNCdVpYY2dZMjlzZFcxdUlHOW1JSE5sYldGdWRHbGpJSFI1Y0dVZ1RVRkRVazlOVDB4RlExVk1SU0JtY205dElIUm9aU0JzYVhOMElHOW1YRzRnSUNBcUlITndaV05wWm1sbFpDQndZWEpoYldWMFpYSnpYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0FnSUNCc1pXNGdJSFJvWlNCc1pXNW5kR2dnYjJZZ2RHaGxJRzVsZHlCamIyeDFiVzVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlDQWdJRzVoYldVZ0lIUm9aU0J1WVcxbElHOW1JSFJvWlNCdVpYY2dZMjlzZFcxdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0FnSUNCMWJtbDBjeUFnZEdobElIVnVhWFJ6SUc5bUlIUm9aU0J1WlhjZ1kyOXNkVzF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjFjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwVG1WM1EyOXNkVzF1Um5KdmJWQmhjbUZ0Y3loY2JpQWdJQ0JzWlc0NklHNTFiV0psY2l4Y2JpQWdJQ0J1WVcxbE9pQnpkSEpwYm1jc1hHNGdJQ0FnZFc1cGRITTZJSE4wY21sdVoxeHVJQ0FwT2lCRVJ5NURiMngxYlc0Z2UxeHVJQ0FnSUM4dklGZEJVazVKVGtjNklHbHVJSFJvYVhNZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnYVhNZ2FYTWdhVzF3YjNOemFXSnNaU0IwYnlCMlpYSnBabmtnZEdobElIVnVhWEYxWlc1bGMzTmNiaUFnSUNBdkx5QnZaaUIwYUdVZ2JtVjNJR052YkhWdGJpZHpJRzVoYldWY2JpQWdJQ0F2THlCVVQwUlBPaUIyWlhKcFpua2dkR2hsSUhaaGJHbGthWFI1SUc5bUlIVnVhWFJ6SUhCaGNtRnRaWFJsY2x4dUlDQWdJR2xtSUNnaFZXNXBkSE5JWVc1a2JHVnlMblZ1YVhSelUzUnlhVzVuU1hOV1lXeHBaQ2gxYm1sMGN5a3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owbHVkbUZzYVdRZ1ptOXliV0YwSUc5bUlGeGNKM1Z1YVhSelhGd25JSEJoY21GdFpYUmxjaWNwTzF4dUlDQWdJR052Ym5OMElHNWxkME52YkhWdGJpQTlJRVJITGtOdmJIVnRiaTVtY205dFRHbHpkQ2duYzNSeWFXNW5KeXdnYm1GdFpTd2dibVYzSUVGeWNtRjVLR3hsYmlrdVptbHNiQ2duSnlrcE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpXMVVlWEJsSUQwZ1JFY3VVMFZOVkZsUVJTNU5RVU5TVDAxUFRFVkRWVXhGTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29SRWN1VkVGSFV5NVZUa2xVVXl3Z2RXNXBkSE1wTzF4dUlDQWdJSEpsZEhWeWJpQnVaWGREYjJ4MWJXNDdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvWTI5c09pQkVSeTVEYjJ4MWJXNHBJSHRjYmlBZ0lDQjBhR2x6TGw5amIyeDFiVzRnUFNCamIydzdYRzRnSUNBZ1kyOXVjM1FnZFc1cGRITWdQU0IwYUdsekxsOWpiMngxYlc0dWRHRm5jMXRFUnk1VVFVZFRMbFZPU1ZSVFhUdGNiaUFnSUNCcFppQW9kVzVwZEhNZ0lUMDlJRzUxYkd3cFhHNGdJQ0FnSUNCMGFHbHpMbDkxYm1sMGN5QTlJSFZ1YVhSek8xeHVJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblZXNXBkSE1nWVhKbElHNXZkQ0J6Y0dWamFXWnBaV1FnYVc0Z1kyOXNkVzF1SnlrN1hHNGdJQ0FnZEdocGN5NWZibTkwWVhScGIyNGdQU0IwYUdsekxtZGxkRTV2ZEdGMGFXOXVLQ2s3WEc0Z0lDQWdkR2hwY3k1ZlpHVm1ZWFZzZEVkaGNGTjViV0p2YkNBOUlDaDBhR2x6TG1selJtRnpkR0VvS1NrZ1B5QlZibWwwYzBoaGJtUnNaWEl1WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNUdRVk5VUVNBNlhHNGdJQ0FnSUNBb2RHaHBjeTVwYzBobGJHMG9LU2tnUHlCVmJtbDBjMGhoYm1Sc1pYSXVYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZEM1SVJVeE5JRHBjYmlBZ0lDQWdJQ0FnVlc1cGRITklZVzVrYkdWeUxsOWtaV1poZFd4MFIyRndVM2x0WW05c2MwUnBZM1F1VTBWUVFWSkJWRTlTTzF4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1OdmJIVnRiaTUwWVdkekxtaGhjeWhVUVVkVExtRnNhV2R1WldRcEtTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXBjMFpoYzNSaEtDa2dmSHdnZEdocGN5NXBjMU5sY0dGeVlYUnZjaWdwS1Z4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVadmNpQmpiMngxYlc0Z0p5UjdkR2hwY3k1amIyeDFiVzR1Ym1GdFpYMG5JRzltSUc1dmRHRjBhVzl1SUNja2UzUm9hWE11Ym05MFlYUnBiMjU5SnlCZ0lDdGNiaUFnSUNBZ0lDQWdJQ0JnZEdGbklDY2tlMVJCUjFNdVlXeHBaMjVsWkgwbklHbHpJRzFoYm1SaGRHOXllUzVnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCcFppQW9JWFJvYVhNdVkyOXNkVzF1TG5SaFozTXVhR0Z6S0ZSQlIxTXVZV3h3YUdGaVpYUlRhWHBsS1NrZ2UxeHVJQ0FnSUM4dklDQWdhV1lnS0hSb2FYTXVhWE5JWld4dEtDa3BYRzRnSUNBZ0x5OGdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnUm05eUlHTnZiSFZ0YmlBbkpIdDBhR2x6TG1OdmJIVnRiaTV1WVcxbGZTY2diMllnYm05MFlYUnBiMjRnSnlSN2RHaHBjeTV1YjNSaGRHbHZibjBuSUdBZ0sxeHVJQ0FnSUM4dklDQWdJQ0FnSUdCMFlXY2dKeVI3VkVGSFV5NWhiSEJvWVdKbGRGTnBlbVY5SnlCcGN5QnRZVzVrWVhSdmNua3VZQ2s3WEc0Z0lDQWdMeThnSUNCbGJITmxJR2xtSUNoYkoxVk9KMTB1YVc1amJIVmtaWE1vZEdocGN5NWhiSEJvWVdKbGRDa3BYRzRnSUNBZ0x5OGdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnUm05eUlHTnZiSFZ0YmlBbkpIdDBhR2x6TG1OdmJIVnRiaTV1WVcxbGZTY2diMllnWVd4d2FHRmlaWFFnSnlSN2RHaHBjeTVoYkhCb1lXSmxkSDBuSUdBZ0sxeHVJQ0FnSUM4dklDQWdJQ0FnSUdCMFlXY2dKeVI3VkVGSFV5NWhiSEJvWVdKbGRGTnBlbVY5SnlCcGN5QnRZVzVrWVhSdmNua3VZQ2s3WEc0Z0lDQWdMeThnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1OdmJIVnRiaTUwWVdkekxtaGhjeWhVUVVkVExtRnNjR2hoWW1WMFNYTk5kV3gwYVdOb1lYSXBLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVwYzBobGJHMG9LU2xjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JHYjNJZ1kyOXNkVzF1SUNja2UzUm9hWE11WTI5c2RXMXVMbTVoYldWOUp5QnZaaUJ1YjNSaGRHbHZiaUFuSkh0MGFHbHpMbTV2ZEdGMGFXOXVmU2NnWUNBclhHNGdJQ0FnSUNBZ0lDQWdZSFJoWnlBbkpIdFVRVWRUTG1Gc2NHaGhZbVYwU1hOTmRXeDBhV05vWVhKOUp5QnBjeUJ0WVc1a1lYUnZjbmt1WUNrN1hHNGdJQ0FnSUNCbGJITmxJR2xtSUNoYkoxVk9KMTB1YVc1amJIVmtaWE1vZEdocGN5NWhiSEJvWVdKbGRDa3BYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdSbTl5SUdOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2IyWWdZV3h3YUdGaVpYUWdKeVI3ZEdocGN5NWhiSEJvWVdKbGRIMG5JR0FnSzF4dUlDQWdJQ0FnSUNBZ0lHQjBZV2NnSnlSN1ZFRkhVeTVoYkhCb1lXSmxkRWx6VFhWc2RHbGphR0Z5ZlNjZ2FYTWdiV0Z1WkdGMGIzSjVMbUFwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1SWwxOSIsImV4cG9ydCBmdW5jdGlvbiBlcnJvclRvQ29uc29sZShlcnIpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnIHx8IGVyciBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgICBlbHNlIGlmICgnJHRocm93bkpzRXJyb3InIGluIGVycikge1xuICAgICAgICByZXR1cm4gZXJyb3JUb0NvbnNvbGUoZXJyWyckdGhyb3duSnNFcnJvciddKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIChfYSA9IGVyci5zdGFjaykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZXJyLm1lc3NhZ2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZXJyLnRvU3RyaW5nKCk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHJlY3RUb0NvbnNvbGUocmVjdCkge1xuICAgIHJldHVybiBgKHg9JHtyZWN0Lnh9LCB5PSR7cmVjdC55fSwgdz0ke3JlY3Qud2lkdGh9LCBoPSR7cmVjdC5oZWlnaHR9KWA7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkRzh0WTI5dWMyOXNaUzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluUnZMV052Ym5OdmJHVXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUzBFc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eEhRVUZST3p0SlFVTnlReXhKUVVGSkxFOUJRVThzUjBGQlJ5eExRVUZMTEZGQlFWRXNTVUZCU1N4SFFVRkhMRmxCUVZrc1RVRkJUU3hGUVVGRk8xRkJRM0JFTEU5QlFVOHNSMEZCWVN4RFFVRkRPMHRCUTNSQ08xTkJRVTBzU1VGQlNTeG5Ra0ZCWjBJc1NVRkJTU3hIUVVGSExFVkJRVVU3VVVGRGJFTXNUMEZCVHl4alFVRmpMRU5CUVVNc1IwRkJSeXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVNNVF6dFRRVUZOTEVsQlFVa3NSMEZCUnl4WlFVRlpMRXRCUVVzc1JVRkJSVHRSUVVNdlFpeFBRVUZQTEUxQlFVTXNSMEZCWVN4RFFVRkRMRXRCUVVzc2JVTkJRVXNzUjBGQllTeERRVUZETEU5QlFVOHNRMEZCUXp0TFFVTjJSRHRUUVVGTk8xRkJRMHdzVDBGQlR5eEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1MwRkRka0k3UVVGRFNDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhKUVVGaE8wbEJRM3BETEU5QlFVOHNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJReXhQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTTdRVUZEZWtVc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWeWNtOXlWRzlEYjI1emIyeGxLR1Z5Y2pvZ1lXNTVLVG9nYzNSeWFXNW5JSHRjYmlBZ2FXWWdLSFI1Y0dWdlppQmxjbklnUFQwOUlDZHpkSEpwYm1jbklIeDhJR1Z5Y2lCcGJuTjBZVzVqWlc5bUlGTjBjbWx1WnlrZ2UxeHVJQ0FnSUhKbGRIVnliaUJsY25JZ1lYTWdjM1J5YVc1bk8xeHVJQ0I5SUdWc2MyVWdhV1lnS0Nja2RHaHliM2R1U25ORmNuSnZjaWNnYVc0Z1pYSnlLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHVnljbTl5Vkc5RGIyNXpiMnhsS0dWeWNsc25KSFJvY205M2JrcHpSWEp5YjNJblhTazdYRzRnSUgwZ1pXeHpaU0JwWmlBb1pYSnlJR2x1YzNSaGJtTmxiMllnUlhKeWIzSXBJSHRjYmlBZ0lDQnlaWFIxY200Z0tHVnljaUJoY3lCRmNuSnZjaWt1YzNSaFkyc2dQejhnS0dWeWNpQmhjeUJGY25KdmNpa3ViV1Z6YzJGblpUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z1pYSnlMblJ2VTNSeWFXNW5LQ2s3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKbFkzUlViME52Ym5OdmJHVW9jbVZqZERvZ1JFY3VVbVZqZENrNklITjBjbWx1WnlCN1hHNGdJSEpsZEhWeWJpQmdLSGc5Skh0eVpXTjBMbmg5TENCNVBTUjdjbVZqZEM1NWZTd2dkejBrZTNKbFkzUXVkMmxrZEdoOUxDQm9QU1I3Y21WamRDNW9aV2xuYUhSOUtXQTdYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IGZpbmRNb25vbWVycywgcGFyc2VIZWxtLCBnZXRQYXJ0cyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgcHJpbnRMZWZ0T3JDZW50ZXJlZCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9jZWxsLXJlbmRlcmVyJztcbmltcG9ydCB7IGVycm9yVG9Db25zb2xlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdG8tY29uc29sZSc7XG5leHBvcnQgY2xhc3MgSGVsbUNlbGxSZW5kZXJlciBleHRlbmRzIERHLkdyaWRDZWxsUmVuZGVyZXIge1xuICAgIGdldCBuYW1lKCkgeyByZXR1cm4gJ2hlbG0nOyB9XG4gICAgZ2V0IGNlbGxUeXBlKCkgeyByZXR1cm4gJ2hlbG0nOyB9XG4gICAgZ2V0IGRlZmF1bHRXaWR0aCgpIHsgcmV0dXJuIDQwMDsgfVxuICAgIGdldCBkZWZhdWx0SGVpZ2h0KCkgeyByZXR1cm4gMTAwOyB9XG4gICAgb25Nb3VzZU1vdmUoZ3JpZENlbGwsIGUpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBtYXhMZW5ndGhXb3Jkc1N1bSA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLnRlbXBbJ2hlbG0tc3VtLW1heExlbmd0aFdvcmRzJ107XG4gICAgICAgICAgICBjb25zdCBtYXhJbmRleCA9IE9iamVjdC52YWx1ZXMoZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnaGVsbS1tYXhMZW5ndGhXb3JkcyddKS5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3QgYXJnc1ggPSBlLm9mZnNldFggLSBncmlkQ2VsbC5ncmlkQ29sdW1uLmxlZnQgKyAoZ3JpZENlbGwuZ3JpZENvbHVtbi5sZWZ0IC0gZ3JpZENlbGwuYm91bmRzLngpO1xuICAgICAgICAgICAgbGV0IGxlZnQgPSAwO1xuICAgICAgICAgICAgbGV0IHJpZ2h0ID0gbWF4SW5kZXg7XG4gICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIG1heExlbmd0aFdvcmRzU3VtW21heEluZGV4ICsgMV0gPSBhcmdzWCArIDE7XG4gICAgICAgICAgICBsZXQgbWlkID0gMDtcbiAgICAgICAgICAgIGlmIChhcmdzWCA+IG1heExlbmd0aFdvcmRzU3VtWzBdKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICBtaWQgPSBNYXRoLmZsb29yKChyaWdodCArIGxlZnQpIC8gMik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdzWCA+PSBtYXhMZW5ndGhXb3Jkc1N1bVttaWRdICYmIGFyZ3NYIDw9IG1heExlbmd0aFdvcmRzU3VtW21pZCArIDFdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbWlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3NYIDwgbWF4TGVuZ3RoV29yZHNTdW1bbWlkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBtaWQgLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3NYID4gbWF4TGVuZ3RoV29yZHNTdW1bbWlkICsgMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZWZ0ID0gKGFyZ3NYID49IG1heExlbmd0aFdvcmRzU3VtW2xlZnRdKSA/IGxlZnQgKyAxIDogbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IG1vbm9tZXJzID0gZmluZE1vbm9tZXJzKGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICAgICAgbGV0IHMgPSAoX2EgPSBncmlkQ2VsbC5jZWxsLnZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgIGxldCBzdWJQYXJ0cyA9IHBhcnNlSGVsbShzKTtcbiAgICAgICAgICAgIGxldCBhbGxQYXJ0cyA9IGdldFBhcnRzKHN1YlBhcnRzLCBzKTtcbiAgICAgICAgICAgIGxldCB0b29sdGlwTWVzc2FnZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxQYXJ0cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVycy5oYXMoYWxsUGFydHNbaV0pKVxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwTWVzc2FnZVtpXSA9IHVpLmRpdlYoW1xuICAgICAgICAgICAgICAgICAgICAgICAgdWkuZGl2VGV4dChgTW9ub21lciAke2FsbFBhcnRzW2ldfSBub3QgZm91bmQuYCksXG4gICAgICAgICAgICAgICAgICAgICAgICB1aS5kaXZUZXh0KCdPcGVuIHRoZSBDb250ZXh0IFBhbmVsLCB0aGVuIGV4cGFuZCBNYW5hZ2UgTGlicmFyaWVzJylcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoKCgoX2MgPSAoX2IgPSB0b29sdGlwTWVzc2FnZVtsZWZ0XSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNoaWxkTm9kZXMubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwKSA+IDApKVxuICAgICAgICAgICAgICAgID8gdWkudG9vbHRpcC5zaG93KHVpLmRpdih0b29sdGlwTWVzc2FnZVtsZWZ0XSksIGUueCArIDE2LCBlLnkgKyAxNilcbiAgICAgICAgICAgICAgICA6IHVpLnRvb2x0aXAuaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnN0IGVyck1zZyA9IGVycm9yVG9Db25zb2xlKGVycik7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdIZWxtOiBIZWxtQ2VsbFJlbmRlcmVyLm9uTW91c2VNb3ZlKCkgZXJyb3I6XFxuJyArIGVyck1zZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVuZGVyKGcsIHgsIHksIHcsIGgsIGdyaWRDZWxsLCBjZWxsU3R5bGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBncmlkID0gZ3JpZENlbGwuZ3JpZFJvdyAhPT0gLTEgPyBncmlkQ2VsbC5ncmlkIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbiAgICAgICAgY29uc3QgZ3JheUNvbG9yID0gJyM4MDgwODAnO1xuICAgICAgICBjb25zdCBtb25vbWVycyA9IGZpbmRNb25vbWVycyhncmlkQ2VsbC5jZWxsLnZhbHVlKTtcbiAgICAgICAgbGV0IHMgPSAoX2EgPSBncmlkQ2VsbC5jZWxsLnZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgbGV0IHN1YlBhcnRzID0gcGFyc2VIZWxtKHMpO1xuICAgICAgICBpZiAobW9ub21lcnMuc2l6ZSA9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBob3N0ID0gdWkuZGl2KFtdLCB7IHN0eWxlOiB7IHdpZHRoOiBgJHt3fXB4YCwgaGVpZ2h0OiBgJHtofXB4YCB9IH0pO1xuICAgICAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGFmb3JtYXQnLCAnaGVsbScpO1xuICAgICAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGEnLCBncmlkQ2VsbC5jZWxsLnZhbHVlKTtcbiAgICAgICAgICAgIGdyaWRDZWxsLmVsZW1lbnQgPSBob3N0O1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSBuZXcgSlNEcmF3Mi5FZGl0b3IoaG9zdCwgeyB3aWR0aDogdywgaGVpZ2h0OiBoLCBza2luOiAndzgnLCB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lcnMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIHcgPSBncmlkID8gTWF0aC5taW4oZ3JpZC5jYW52YXMud2lkdGggLSB4LCB3KSA6IGcuY2FudmFzLndpZHRoIC0geDtcbiAgICAgICAgICAgIGcuc2F2ZSgpO1xuICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGcucmVjdCh4LCB5LCB3LCBoKTtcbiAgICAgICAgICAgIGcuY2xpcCgpO1xuICAgICAgICAgICAgZy5mb250ID0gJzEycHggbW9ub3NwYWNlJztcbiAgICAgICAgICAgIGcudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICAgICAgICBsZXQgeDEgPSB4O1xuICAgICAgICAgICAgbGV0IG1heExlbmd0aFdvcmRzID0ge307XG4gICAgICAgICAgICBsZXQgbWF4TGVuZ3RoV29yZFN1bSA9IHt9O1xuICAgICAgICAgICAgbGV0IGFsbFBhcnRzID0gZ2V0UGFydHMoc3ViUGFydHMsIHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxQYXJ0cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIG1heExlbmd0aFdvcmRzW2ldID0gYWxsUGFydHNbaV0ubGVuZ3RoICogNztcbiAgICAgICAgICAgICAgICBsZXQgY29sb3IgPSBtb25vbWVycy5oYXMoYWxsUGFydHNbaV0pID8gJ3JlZCcgOiBncmF5Q29sb3I7XG4gICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSB1bmRlZmluZWRDb2xvcjtcbiAgICAgICAgICAgICAgICB4MSA9IHByaW50TGVmdE9yQ2VudGVyZWQoeDEsIHksIHcsIGgsIGcsIGFsbFBhcnRzW2ldLCBjb2xvciwgMCwgdHJ1ZSwgMS4wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1heExlbmd0aFdvcmRTdW1bMF0gPSBtYXhMZW5ndGhXb3Jkc1swXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgYWxsUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGhXb3JkU3VtW2ldID0gbWF4TGVuZ3RoV29yZFN1bVtpIC0gMV0gKyBtYXhMZW5ndGhXb3Jkc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyaWRDZWxsLmNlbGwuY29sdW1uLnRlbXAgPSB7XG4gICAgICAgICAgICAgICAgJ2hlbG0tc3VtLW1heExlbmd0aFdvcmRzJzogbWF4TGVuZ3RoV29yZFN1bSxcbiAgICAgICAgICAgICAgICAnaGVsbS1tYXhMZW5ndGhXb3Jkcyc6IG1heExlbmd0aFdvcmRzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZy5yZXN0b3JlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QganNvblNkZk1vbm9tZXJMaWJEaWN0ID0ge1xuICAgIFwibW9ub21lclR5cGVcIjogbnVsbCxcbiAgICBcInNtaWxlc1wiOiBudWxsLFxuICAgIFwibmFtZVwiOiBcIk1vbm9tZXJOYW1lXCIsXG4gICAgXCJhdXRob3JcIjogbnVsbCxcbiAgICBcIm1vbGZpbGVcIjogXCJtb2xlY3VsZVwiLFxuICAgIFwibmF0dXJhbEFuYWxvZ1wiOiBcIk1vbm9tZXJOYXR1cmFsQW5hbG9nQ29kZVwiLFxuICAgIFwicmdyb3Vwc1wiOiBcIk1vbm9tZXJDYXBzXCIsXG4gICAgXCJjcmVhdGVEYXRlXCI6IG51bGwsXG4gICAgXCJpZFwiOiBudWxsLFxuICAgIFwicG9seW1lclR5cGVcIjogXCJNb25vbWVyVHlwZVwiLFxuICAgIFwic3ltYm9sXCI6IFwiTW9ub21lckNvZGVcIlxufTtcbmV4cG9ydCBjb25zdCBTTUlMRVMgPSAnc21pbGVzJztcbmV4cG9ydCBjb25zdCBSR1JPVVBTID0gXCJyZ3JvdXBzXCI7XG5leHBvcnQgY29uc3QgTU9OT01FUl9TWU1CT0wgPSBcInN5bWJvbFwiO1xuZXhwb3J0IGNvbnN0IFJHUk9VUF9DQVBfR1JPVVBfU01JTEVTID0gXCJjYXBHcm91cFNtaWxlc1wiO1xuZXhwb3J0IGNvbnN0IFJHUk9VUF9BTFRFUl9JRCA9IFwiYWx0ZXJuYXRlSWRcIjtcbmV4cG9ydCBjb25zdCBSR1JPVVBfQ0FQX0dST1VQX05BTUUgPSBcImNhcEdyb3VwTmFtZVwiO1xuZXhwb3J0IGNvbnN0IFJHUk9VUF9MQUJFTCA9IFwibGFiZWxcIjtcbmV4cG9ydCBjb25zdCBTREZfTU9OT01FUl9OQU1FID0gXCJNb25vbWVyTmFtZVwiO1xuIiwiaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmV4cG9ydCBjbGFzcyBIZWxtV2ViRWRpdG9yIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy53ID0gMjAwO1xuICAgICAgICB0aGlzLmggPSAxMDA7XG4gICAgICAgIHRoaXMuaG9zdCA9IHVpLmRpdihbXSwgeyBzdHlsZTogeyB3aWR0aDogYCR7dGhpcy53fXB4YCwgaGVpZ2h0OiBgJHt0aGlzLmh9cHhgIH0gfSk7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gbmV3IEpTRHJhdzIuRWRpdG9yKHRoaXMuaG9zdCwgeyB3aWR0aDogdGhpcy53LCBoZWlnaHQ6IHRoaXMuaCwgdmlld29ubHk6IHRydWUgfSk7XG4gICAgfVxuICAgIHJlc2l6ZUVkaXRvcih3LCBoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFNpemUodywgaCk7XG4gICAgfVxuICAgIGNyZWF0ZVdlYkVkaXRvcih2YWx1ZSkge1xuICAgICAgICBjb25zdCBlZGl0b3JWaWV3ID0gdWkuZGl2KCk7XG4gICAgICAgIG9yZy5oZWxtLndlYmVkaXRvci5Nb2xWaWV3ZXIubW9sc2NhbGUgPSAwLjg7XG4gICAgICAgIGNvbnN0IHdlYkVkaXRvciA9IG5ldyBzY2lsLmhlbG0uQXBwKGVkaXRvclZpZXcsIHtcbiAgICAgICAgICAgIHNob3dhYm91dDogZmFsc2UsXG4gICAgICAgICAgICBtZXhmb250c2l6ZTogJzkwJScsXG4gICAgICAgICAgICBtZXhybmFwaW5vbnRhYjogdHJ1ZSxcbiAgICAgICAgICAgIHRvcG1hcmdpbjogMjAsXG4gICAgICAgICAgICBtZXhtb25vbWVyc3RhYjogdHJ1ZSxcbiAgICAgICAgICAgIHNlcXVlbmNldmlld29ubHk6IGZhbHNlLFxuICAgICAgICAgICAgbWV4ZmF2b3JpdGVmaXJzdDogdHJ1ZSxcbiAgICAgICAgICAgIG1leGZpbHRlcjogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSB3ZWJFZGl0b3IuY2FsY3VsYXRlU2l6ZXMoKTtcbiAgICAgICAgd2ViRWRpdG9yLmNhbnZhcy5yZXNpemUoc2l6ZXMucmlnaHR3aWR0aCAtIDEwMCwgc2l6ZXMudG9waGVpZ2h0IC0gMjEwKTtcbiAgICAgICAgbGV0IHMgPSB7IHdpZHRoOiBzaXplcy5yaWdodHdpZHRoIC0gMTAwICsgJ3B4JywgaGVpZ2h0OiBzaXplcy5ib3R0b21oZWlnaHQgKyAncHgnIH07XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBzY2lsLmFwcGx5KHdlYkVkaXRvci5zZXF1ZW5jZS5zdHlsZSwgcyk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBzY2lsLmFwcGx5KHdlYkVkaXRvci5ub3RhdGlvbi5zdHlsZSwgcyk7XG4gICAgICAgIHMgPSB7IHdpZHRoOiBzaXplcy5yaWdodHdpZHRoICsgJ3B4JywgaGVpZ2h0OiAoc2l6ZXMuYm90dG9taGVpZ2h0ICsgd2ViRWRpdG9yLnRvb2xiYXJoZWlnaHQpICsgJ3B4JyB9O1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgc2NpbC5hcHBseSh3ZWJFZGl0b3IucHJvcGVydGllcy5wYXJlbnQuc3R5bGUsIHMpO1xuICAgICAgICB3ZWJFZGl0b3Iuc3RydWN0dXJldmlldy5yZXNpemUoc2l6ZXMucmlnaHR3aWR0aCwgc2l6ZXMuYm90dG9taGVpZ2h0ICsgd2ViRWRpdG9yLnRvb2xiYXJoZWlnaHQpO1xuICAgICAgICB3ZWJFZGl0b3IubWV4LnJlc2l6ZShzaXplcy50b3BoZWlnaHQgLSA4MCk7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2ViRWRpdG9yLmNhbnZhcy5oZWxtLnNldFNlcXVlbmNlKHZhbHVlLCAnSEVMTScpO1xuICAgICAgICB9LCAyMDApO1xuICAgICAgICByZXR1cm4geyBlZGl0b3JEaXY6IGVkaXRvclZpZXcsIHdlYkVkaXRvcjogd2ViRWRpdG9yIH07XG4gICAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnRzKHN1YlBhcnRzLCBzKSB7XG4gICAgbGV0IGogPSAwO1xuICAgIGxldCBhbGxQYXJ0cyA9IFtdO1xuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3ViUGFydHMubGVuZ3RoOyArK2spIHtcbiAgICAgICAgbGV0IGluZGV4T2ZNb25vbWVyID0gcy5pbmRleE9mKHN1YlBhcnRzW2tdKTtcbiAgICAgICAgbGV0IGhlbG1CZWZvcmVNb25vbWVyID0gcy5zbGljZShqLCBpbmRleE9mTW9ub21lcik7XG4gICAgICAgIGFsbFBhcnRzLnB1c2goaGVsbUJlZm9yZU1vbm9tZXIpO1xuICAgICAgICBhbGxQYXJ0cy5wdXNoKHN1YlBhcnRzW2tdKTtcbiAgICAgICAgcyA9IHMuc3Vic3RyaW5nKGluZGV4T2ZNb25vbWVyICsgc3ViUGFydHNba10ubGVuZ3RoKTtcbiAgICB9XG4gICAgYWxsUGFydHMucHVzaChzKTtcbiAgICByZXR1cm4gYWxsUGFydHM7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIZWxtKHMpIHtcbiAgICB2YXIgc2VjdGlvbnMgPSBzcGxpdChzLCAnJCcpO1xuICAgIHMgPSBzZWN0aW9uc1swXTtcbiAgICB2YXIgbW9ub21lcnMgPSBbXTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpZiAoIXNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSkge1xuICAgICAgICB2YXIgc2VxcyA9IHNwbGl0KHMsICd8Jyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Vxcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgdmFyIGUgPSBkZXRhY2hBbm5vdGF0aW9uKHNlcXNbaV0pO1xuICAgICAgICAgICAgcyA9IGUuc3RyO1xuICAgICAgICAgICAgdmFyIHAgPSBzLmluZGV4T2YoJ3snKTtcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZyhwICsgMSk7XG4gICAgICAgICAgICBwID0gcy5pbmRleE9mKCd9Jyk7XG4gICAgICAgICAgICBzID0gcy5zdWJzdHJpbmcoMCwgcCk7XG4gICAgICAgICAgICB2YXIgc3MgPSBzcGxpdChzLCAnLicpO1xuICAgICAgICAgICAgZm9yICh2YXIgbW9ub21lciBvZiBzcykge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyLmluY2x1ZGVzKCcoJykgJiYgbW9ub21lci5pbmNsdWRlcygnKScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50cyA9IG1vbm9tZXIucmVwbGFjZSgvWygpXS9nLCAnJykuc3BsaXQoJycpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlbCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9ub21lcnMucHVzaChlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW9ub21lci5pbmNsdWRlcygnWycpICYmIG1vbm9tZXIuaW5jbHVkZXMoJ10nKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IG1vbm9tZXIubWF0Y2goLyg/PD1cXFspLio/KD89XFxdKS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIG1vbm9tZXJzLnB1c2goZWxlbWVudFswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtb25vbWVycy5wdXNoKG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbW9ub21lcnM7XG59XG5leHBvcnQgZnVuY3Rpb24gZmluZE1vbm9tZXJzKGhlbG1TdHJpbmcpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBjb25zdCB0eXBlcyA9IE9iamVjdC5rZXlzKG9yZy5oZWxtLndlYmVkaXRvci5tb25vbWVyVHlwZUxpc3QoKSk7XG4gICAgY29uc3QgbW9ub21lcnMgPSBbXTtcbiAgICBjb25zdCBtb25vbWVyX25hbWVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgbW9ub21lcnMucHVzaChuZXcgc2NpbC5oZWxtLk1vbm9tZXJzLmdldE1vbm9tZXJTZXQodHlwZXNbaV0pKTtcbiAgICAgICAgT2JqZWN0LmtleXMobW9ub21lcnNbaV0pLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICBtb25vbWVyX25hbWVzLnB1c2gobW9ub21lcnNbaV1ba10uaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgc3BsaXRfc3RyaW5nID0gcGFyc2VIZWxtKGhlbG1TdHJpbmcpO1xuICAgIHJldHVybiBuZXcgU2V0KHNwbGl0X3N0cmluZy5maWx0ZXIodmFsID0+ICFtb25vbWVyX25hbWVzLmluY2x1ZGVzKHZhbCkpKTtcbn1cbmZ1bmN0aW9uIHNwbGl0KHMsIHNlcCkge1xuICAgIHZhciByZXQgPSBbXTtcbiAgICB2YXIgZnJhZyA9ICcnO1xuICAgIHZhciBwYXJlbnRoZXNlcyA9IDA7XG4gICAgdmFyIGJyYWNrZXQgPSAwO1xuICAgIHZhciBicmFjZXMgPSAwO1xuICAgIHZhciBxdW90ZSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjID0gcy5zdWJzdHJpbmcoaSwgaSArIDEpO1xuICAgICAgICBpZiAoYyA9PSBzZXAgJiYgYnJhY2tldCA9PSAwICYmIHBhcmVudGhlc2VzID09IDAgJiYgYnJhY2VzID09IDAgJiYgcXVvdGUgPT0gMCkge1xuICAgICAgICAgICAgcmV0LnB1c2goZnJhZyk7XG4gICAgICAgICAgICBmcmFnID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmcmFnICs9IGM7XG4gICAgICAgICAgICBpZiAocXVvdGUgPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xcXFwnICYmIGkgKyAxIDwgcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgKytpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzIgPSBzLnN1YnN0cmluZyhpLCBpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGZyYWcgKz0gYzI7XG4gICAgICAgICAgICAgICAgICAgIGMgKz0gYzI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPT0gJ1xcXCInKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoaSA+IDAgJiYgcy5zdWJzdHJpbmcoaSAtIDEsIGkpID09ICdcXFxcJykpXG4gICAgICAgICAgICAgICAgICAgIHF1b3RlID0gcXVvdGUgPT0gMCA/IDEgOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnWycpXG4gICAgICAgICAgICAgICAgKyticmFja2V0O1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXScpXG4gICAgICAgICAgICAgICAgLS1icmFja2V0O1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnKCcpXG4gICAgICAgICAgICAgICAgKytwYXJlbnRoZXNlcztcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJyknKVxuICAgICAgICAgICAgICAgIC0tcGFyZW50aGVzZXM7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICd7JylcbiAgICAgICAgICAgICAgICArK2JyYWNlcztcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ30nKVxuICAgICAgICAgICAgICAgIC0tYnJhY2VzO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldC5wdXNoKGZyYWcpO1xuICAgIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBkZXRhY2hBbm5vdGF0aW9uKHMpIHtcbiAgICB2YXIgcmV0ID0gX2RldGFjaEFwcGVuZGl4KHMsICdcXFwiJyk7XG4gICAgaWYgKHJldC50YWcgIT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB2YXIgciA9IF9kZXRhY2hBcHBlbmRpeChzLCAnXFwnJyk7XG4gICAgcmV0dXJuIHsgdGFnOiByZXQudGFnLCByZXBlYXQ6IHIudGFnLCBzdHI6IHIuc3RyIH07XG59XG5mdW5jdGlvbiBfZGV0YWNoQXBwZW5kaXgocywgYykge1xuICAgIHZhciB0YWcgPSBudWxsO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIGlmIChzY2lsLlV0aWxzLmVuZHN3aXRoKHMsIGMpKSB7XG4gICAgICAgIHZhciBwID0gcy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAocCA+IDApIHtcbiAgICAgICAgICAgIHAgPSBzLmxhc3RJbmRleE9mKGMsIHAgLSAxKTtcbiAgICAgICAgICAgIGlmIChwIDw9IDAgfHwgcy5zdWJzdHJpbmcocCAtIDEsIHApICE9ICdcXFxcJylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAocCA+IDAgJiYgcCA8IHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGFnID0gcy5zdWJzdHJpbmcocCArIDEsIHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICBzID0gcy5zdWJzdHJpbmcoMCwgcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRhZyAhPSBudWxsKVxuICAgICAgICB0YWcgPSB0YWcucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcJyArIGMsICdnJyksIGMpO1xuICAgIHJldHVybiB7IHRhZzogdW5lc2NhcGUodGFnKSwgc3RyOiBzIH07XG59XG5mdW5jdGlvbiB1bmVzY2FwZShzKSB7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgaWYgKHNjaWwuVXRpbHMuaXNOdWxsT3JFbXB0eShzKSlcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgcmV0dXJuIHMucmVwbGFjZSgvW1xcXFxdLi9nLCBmdW5jdGlvbiAobSkge1xuICAgICAgICBzd2l0Y2ggKG0pIHtcbiAgICAgICAgICAgIGNhc2UgJ1xcXFxyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1xccic7XG4gICAgICAgICAgICBjYXNlICdcXFxcbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdcXG4nO1xuICAgICAgICAgICAgY2FzZSAnXFxcXHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnXFx0JztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG0uc3Vic3RyaW5nKDEpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IERHOyIsIm1vZHVsZS5leHBvcnRzID0gZ3JvazsiLCJtb2R1bGUuZXhwb3J0cyA9IHVpOyIsIm1vZHVsZS5leHBvcnRzID0gd3U7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBSR1JPVVBfQ0FQX0dST1VQX05BTUUsIFJHUk9VUF9MQUJFTCwgU01JTEVTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSGVsbVdlYkVkaXRvciB9IGZyb20gJy4vaGVsbS13ZWItZWRpdG9yJztcbmltcG9ydCB7IEhlbG1DZWxsUmVuZGVyZXIgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHsgTm90YXRpb25Db252ZXJ0ZXIgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvbm90YXRpb24tY29udmVydGVyJztcbmltcG9ydCB7IGZpbmRNb25vbWVycyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZXJyb3JUb0NvbnNvbGUgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90by1jb25zb2xlJztcbmV4cG9ydCBjb25zdCBfcGFja2FnZSA9IG5ldyBERy5QYWNrYWdlKCk7XG5sZXQgbW9ub21lckxpYiA9IG51bGw7XG4vL3RhZ3M6IGluaXRcbmV4cG9ydCBmdW5jdGlvbiBpbml0SGVsbSgpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW25ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgZG9qby5yZWFkeShmdW5jdGlvbiAoKSB7IHJlc29sdmUobnVsbCk7IH0pO1xuICAgICAgICAgICAgfSksIHlpZWxkIGdyb2suZnVuY3Rpb25zLmNhbGwoJ0JpbzpnZXRCaW9MaWInKV0pLnRoZW4oKFtfLCBsaWJdKSA9PiB7XG4gICAgICAgICAgICBtb25vbWVyTGliID0gbGliO1xuICAgICAgICAgICAgcmV3cml0ZUxpYnJhcmllcygpOyAvLyBpbml0SGVsbSgpXG4gICAgICAgICAgICBtb25vbWVyTGliLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXdyaXRlTGlicmFyaWVzKCk7IC8vIGluaXRIZWxtKClcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9uVHlwZUxpc3QgPSBtb25vbWVyTGliLmdldFR5cGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZ1N0ciA9ICdNb25vbWVyIGxpYiB1cGRhdGVkOjxiciAvPicgKyAobW9uVHlwZUxpc3QubGVuZ3RoID09IDAgPyAnZW1wdHknIDogbW9uVHlwZUxpc3QubWFwKChtb25UeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7bW9uVHlwZX0gJHttb25vbWVyTGliLmdldE1vbm9tZXJOYW1lc0J5VHlwZShtb25UeXBlKS5sZW5ndGh9YDtcbiAgICAgICAgICAgICAgICAgICAgfSkuam9pbignPGJyIC8+JykpO1xuICAgICAgICAgICAgICAgICAgICBncm9rLnNoZWxsLmluZm8obXNnU3RyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJNc2cgPSBlcnJvclRvQ29uc29sZShlcnIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdIZWxtOiBpbml0SGVsbSBtb25vbWVyTGliLm9uQ2hhbmdlZCgpIGVycm9yOlxcbicgKyBlcnJNc2cpO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aHJvdyBlcnI7IC8vIFByZXZlbnQgZGlzYWJsaW5nIGV2ZW50IGhhbmRsZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiByZXdyaXRlTGlicmFyaWVzKCkge1xuICAgIG9yZy5oZWxtLndlYmVkaXRvci5Nb25vbWVycy5jbGVhcigpO1xuICAgIG1vbm9tZXJMaWIuZ2V0VHlwZXMoKS5mb3JFYWNoKCh0eXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG1tcyA9IG1vbm9tZXJMaWIuZ2V0TW9ub21lck5hbWVzQnlUeXBlKHR5cGUpO1xuICAgICAgICBtbXMuZm9yRWFjaCgoc3ltYm9sKSA9PiB7XG4gICAgICAgICAgICBsZXQgaXNCcm9rZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSBtb25vbWVyTGliLmdldE1vbm9tZXIodHlwZSwgc3ltYm9sKTtcbiAgICAgICAgICAgIGNvbnN0IHdlYkVkaXRvck1vbm9tZXIgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHN5bWJvbCxcbiAgICAgICAgICAgICAgICBtOiBtb25vbWVyLm1vbGZpbGUsXG4gICAgICAgICAgICAgICAgbjogbW9ub21lci5uYW1lLFxuICAgICAgICAgICAgICAgIG5hOiBtb25vbWVyLm5hdHVyYWxBbmFsb2csXG4gICAgICAgICAgICAgICAgcnM6IG1vbm9tZXIucmdyb3Vwcy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgdHlwZTogbW9ub21lci5wb2x5bWVyVHlwZSxcbiAgICAgICAgICAgICAgICBtdDogbW9ub21lci5tb25vbWVyVHlwZSxcbiAgICAgICAgICAgICAgICBhdDoge31cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAobW9ub21lci5yZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB3ZWJFZGl0b3JNb25vbWVyLnJzID0gbW9ub21lci5yZ3JvdXBzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBhdCA9IHt9O1xuICAgICAgICAgICAgICAgIG1vbm9tZXIucmdyb3Vwcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXRbaXRbUkdST1VQX0xBQkVMXV0gPSBpdFtSR1JPVVBfQ0FQX0dST1VQX05BTUVdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIuYXQgPSBhdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG1vbm9tZXIuZGF0YVtTTUlMRVNdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB3ZWJFZGl0b3JNb25vbWVyLnJzID0gT2JqZWN0LmtleXMoZ2V0UlMobW9ub21lci5kYXRhW1NNSUxFU10udG9TdHJpbmcoKSkpLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB3ZWJFZGl0b3JNb25vbWVyLmF0ID0gZ2V0UlMobW9ub21lci5kYXRhW1NNSUxFU10udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpc0Jyb2tlbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzQnJva2VuKVxuICAgICAgICAgICAgICAgIG9yZy5oZWxtLndlYmVkaXRvci5Nb25vbWVycy5hZGRPbmVNb25vbWVyKHdlYkVkaXRvck1vbm9tZXIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICAvLyBPYnNvbGV0ZVxuICAgIGxldCBncmlkID0gZ3Jvay5zaGVsbC50di5ncmlkO1xuICAgIGlmIChncmlkKVxuICAgICAgICBncmlkLmludmFsaWRhdGUoKTtcbn1cbi8vbmFtZTogaGVsbUNlbGxSZW5kZXJlclxuLy90YWdzOiBjZWxsUmVuZGVyZXJcbi8vbWV0YS5jZWxsVHlwZTogaGVsbVxuLy9tZXRhLmNvbHVtblRhZ3M6IHVuaXRzPWhlbG1cbi8vb3V0cHV0OiBncmlkX2NlbGxfcmVuZGVyZXIgcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gaGVsbUNlbGxSZW5kZXJlcigpIHtcbiAgICByZXR1cm4gbmV3IEhlbG1DZWxsUmVuZGVyZXIoKTtcbn1cbi8vdGFnczogY2VsbEVkaXRvclxuLy9kZXNjcmlwdGlvbjogTWFjcm9tb2xlY3VsZSAgXG4vL2lucHV0OiBncmlkX2NlbGwgY2VsbFxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRNb2xlY3VsZUNlbGwoY2VsbCkge1xuICAgIGNvbnN0IG1vbm9tZXJzID0gZmluZE1vbm9tZXJzKGNlbGwuY2VsbC52YWx1ZSk7XG4gICAgaWYgKGNlbGwuZ3JpZENvbHVtbi5jb2x1bW4udGFnc1tERy5UQUdTLlVOSVRTXSA9PT0gJ2hlbG0nKVxuICAgICAgICBpZiAobW9ub21lcnMuc2l6ZSA9PSAwKVxuICAgICAgICAgICAgd2ViRWRpdG9yKGNlbGwpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcoYE1vbm9tZXJzICR7QXJyYXkuZnJvbShtb25vbWVycykuam9pbignLCAnKX0gYXJlIGFic2VudCFgKTtcbn1cbi8vbmFtZTogT3BlbiBIZWxtIFdlYiBFZGl0b3Jcbi8vZGVzY3JpcHRpb246IEFkZHMgZWRpdG9yXG4vL21ldGEuYWN0aW9uOiBPcGVuIEhlbG0gV2ViIEVkaXRvclxuLy9pbnB1dDogc3RyaW5nIG1vbCB7IHNlbVR5cGU6IE1hY3JvbW9sZWN1bGUgfVxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5FZGl0b3IobW9sKSB7XG4gICAgbGV0IGRmID0gZ3Jvay5zaGVsbC50di5ncmlkLmRhdGFGcmFtZTtcbiAgICBsZXQgY29udmVydGVyID0gbmV3IE5vdGF0aW9uQ29udmVydGVyKGRmLmNvbHVtbnMuYnlTZW1UeXBlKCdNYWNyb21vbGVjdWxlJykpO1xuICAgIGNvbnN0IHJlc1N0ciA9IGNvbnZlcnRlci5jb252ZXJ0U3RyaW5nVG9IZWxtKG1vbCwgJy8nKTtcbiAgICBjb25zdCBtb25vbWVycyA9IGZpbmRNb25vbWVycyhyZXNTdHIpO1xuICAgIGlmIChtb25vbWVycy5zaXplID09IDApXG4gICAgICAgIHdlYkVkaXRvcih1bmRlZmluZWQsIHJlc1N0cik7XG4gICAgZWxzZVxuICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcoYE1vbm9tZXJzICR7QXJyYXkuZnJvbShtb25vbWVycykuam9pbignLCAnKX0gYXJlIGFic2VudCFgKTtcbn1cbi8vbmFtZTogUHJvcGVydGllc1xuLy90YWdzOiBwYW5lbCwgd2lkZ2V0c1xuLy9pbnB1dDogc3RyaW5nIGhlbG1TdHJpbmcge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG4vL291dHB1dDogd2lkZ2V0IHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNQYW5lbChoZWxtU3RyaW5nKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IGdyaWQgPSBncm9rLnNoZWxsLnR2LmdyaWQ7XG4gICAgICAgIGxldCBwYXJlbnQgPSBncmlkLnJvb3QucGFyZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgaG9zdCA9IHVpLmRpdihbXSk7XG4gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChob3N0KTtcbiAgICAgICAgbGV0IGVkaXRvciA9IG5ldyBKU0RyYXcyLkVkaXRvcihob3N0LCB7IHZpZXdvbmx5OiB0cnVlIH0pO1xuICAgICAgICBob3N0LnN0eWxlLndpZHRoID0gJzBweCc7XG4gICAgICAgIGhvc3Quc3R5bGUuaGVpZ2h0ID0gJzBweCc7XG4gICAgICAgIGVkaXRvci5zZXRIZWxtKGhlbG1TdHJpbmcpO1xuICAgICAgICBsZXQgZm9ybXVsYSA9IGVkaXRvci5nZXRGb3JtdWxhKHRydWUpO1xuICAgICAgICBsZXQgbW9sV2VpZ2h0ID0gTWF0aC5yb3VuZChlZGl0b3IuZ2V0TW9sV2VpZ2h0KCkgKiAxMDApIC8gMTAwO1xuICAgICAgICBsZXQgY29lZiA9IE1hdGgucm91bmQoZWRpdG9yLmdldEV4dGluY3Rpb25Db2VmZmljaWVudCh0cnVlKSAqIDEwMCkgLyAxMDA7XG4gICAgICAgIHBhcmVudC5sYXN0Q2hpbGQucmVtb3ZlKCk7XG4gICAgICAgIHJldHVybiBuZXcgREcuV2lkZ2V0KHVpLnRhYmxlRnJvbU1hcCh7XG4gICAgICAgICAgICAnZm9ybXVsYSc6IGZvcm11bGEucmVwbGFjZSgvPHN1Yj4vZywgJycpLnJlcGxhY2UoLzxcXC9zdWI+L2csICcnKSxcbiAgICAgICAgICAgICdtb2xlY3VsYXIgd2VpZ2h0JzogbW9sV2VpZ2h0LFxuICAgICAgICAgICAgJ2V4dGluY3Rpb24gY29lZmZpY2llbnQnOiBjb2VmLFxuICAgICAgICB9KSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiB3ZWJFZGl0b3IoY2VsbCwgdmFsdWUpIHtcbiAgICBsZXQgdmlldyA9IHVpLmRpdigpO1xuICAgIG9yZy5oZWxtLndlYmVkaXRvci5Nb2xWaWV3ZXIubW9sc2NhbGUgPSAwLjg7XG4gICAgbGV0IGFwcCA9IG5ldyBzY2lsLmhlbG0uQXBwKHZpZXcsIHtcbiAgICAgICAgc2hvd2Fib3V0OiBmYWxzZSxcbiAgICAgICAgbWV4Zm9udHNpemU6ICc5MCUnLFxuICAgICAgICBtZXhybmFwaW5vbnRhYjogdHJ1ZSxcbiAgICAgICAgdG9wbWFyZ2luOiAyMCxcbiAgICAgICAgbWV4bW9ub21lcnN0YWI6IHRydWUsXG4gICAgICAgIHNlcXVlbmNldmlld29ubHk6IGZhbHNlLFxuICAgICAgICBtZXhmYXZvcml0ZWZpcnN0OiB0cnVlLFxuICAgICAgICBtZXhmaWx0ZXI6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc2l6ZXMgPSBhcHAuY2FsY3VsYXRlU2l6ZXMoKTtcbiAgICBhcHAuY2FudmFzLnJlc2l6ZShzaXplcy5yaWdodHdpZHRoIC0gMTAwLCBzaXplcy50b3BoZWlnaHQgLSAyMTApO1xuICAgIHZhciBzID0geyB3aWR0aDogc2l6ZXMucmlnaHR3aWR0aCAtIDEwMCArICdweCcsIGhlaWdodDogc2l6ZXMuYm90dG9taGVpZ2h0ICsgJ3B4JyB9O1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHNjaWwuYXBwbHkoYXBwLnNlcXVlbmNlLnN0eWxlLCBzKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBzY2lsLmFwcGx5KGFwcC5ub3RhdGlvbi5zdHlsZSwgcyk7XG4gICAgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggKyAncHgnLCBoZWlnaHQ6IChzaXplcy5ib3R0b21oZWlnaHQgKyBhcHAudG9vbGJhcmhlaWdodCkgKyAncHgnIH07XG4gICAgLy9AdHMtaWdub3JlXG4gICAgc2NpbC5hcHBseShhcHAucHJvcGVydGllcy5wYXJlbnQuc3R5bGUsIHMpO1xuICAgIGFwcC5zdHJ1Y3R1cmV2aWV3LnJlc2l6ZShzaXplcy5yaWdodHdpZHRoLCBzaXplcy5ib3R0b21oZWlnaHQgKyBhcHAudG9vbGJhcmhlaWdodCk7XG4gICAgYXBwLm1leC5yZXNpemUoc2l6ZXMudG9waGVpZ2h0IC0gODApO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodHlwZW9mIGNlbGwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBhcHAuY2FudmFzLmhlbG0uc2V0U2VxdWVuY2UoY2VsbC5jZWxsLnZhbHVlLCAnSEVMTScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXBwLmNhbnZhcy5oZWxtLnNldFNlcXVlbmNlKHZhbHVlLCAnSEVMTScpO1xuICAgICAgICB9XG4gICAgfSwgMjAwKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICB1aS5kaWFsb2coeyBzaG93SGVhZGVyOiBmYWxzZSwgc2hvd0Zvb3RlcjogdHJ1ZSB9KVxuICAgICAgICAuYWRkKHZpZXcpXG4gICAgICAgIC5vbk9LKCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjZWxsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY2VsbC5jZWxsLnZhbHVlID0gYXBwLmNhbnZhcy5nZXRIZWxtKHRydWUpLnJlcGxhY2UoLzxcXC9zcGFuPi9nLCAnJykucmVwbGFjZSgvPHNwYW4gc3R5bGU9J2JhY2tncm91bmQ6I2JiZjsnPi9nLCAnJyk7XG4gICAgICAgIH1cbiAgICB9KS5zaG93KHsgbW9kYWw6IHRydWUsIGZ1bGxTY3JlZW46IHRydWUgfSk7XG59XG5mdW5jdGlvbiBhY2Nlc3NTZXJ2ZXIodXJsLCBrZXkpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZmV0Y2godXJsLCBwYXJhbXMpO1xuICAgICAgICBjb25zdCBqc29uID0geWllbGQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICByZXR1cm4ganNvbltrZXldO1xuICAgIH0pO1xufVxuLy9uYW1lOiBoZWxtVG9GYXN0YVxuLy9pbnB1dDogc3RyaW5nIGhlbG1TdHJpbmcge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG4vL291dHB1dDogc3RyaW5nIHJlc1xuZXhwb3J0IGZ1bmN0aW9uIGhlbG1Ub0Zhc3RhKGhlbG1TdHJpbmcpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgaHR0cDovL2xvY2FsaG9zdDo4MDgxL1dlYlNlcnZpY2Uvc2VydmljZS9GYXN0YS9Qcm9kdWNlLyR7aGVsbVN0cmluZ31gO1xuICAgICAgICByZXR1cm4geWllbGQgYWNjZXNzU2VydmVyKHVybCwgJ0Zhc3RhRmlsZScpO1xuICAgIH0pO1xufVxuLy9uYW1lOiBoZWxtVG9STkFcbi8vZGVzY3JpcHRpb246IGNvbnZlcnRzIHRvIHJuYSBhbmFsb2d1ZSBzZXF1ZW5jZVxuLy9pbnB1dDogc3RyaW5nIGhlbG1TdHJpbmcge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG4vL291dHB1dDogc3RyaW5nIHJlc1xuZXhwb3J0IGZ1bmN0aW9uIGhlbG1Ub1JOQShoZWxtU3RyaW5nKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS9XZWJTZXJ2aWNlL3NlcnZpY2UvRmFzdGEvQ29udmVydC9STkEvJHtoZWxtU3RyaW5nfWA7XG4gICAgICAgIHJldHVybiB5aWVsZCBhY2Nlc3NTZXJ2ZXIodXJsLCAnU2VxdWVuY2UnKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogaGVsbVRvUGVwdGlkZVxuLy9kZXNjcmlwdGlvbjogY29udmVydHMgdG8gcGVwdGlkZSBhbmFsb2d1ZSBzZXF1ZW5jZVxuLy9pbnB1dDogc3RyaW5nIGhlbG1TdHJpbmcge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG4vL291dHB1dDogc3RyaW5nIHJlc1xuZXhwb3J0IGZ1bmN0aW9uIGhlbG1Ub1BlcHRpZGUoaGVsbVN0cmluZykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vbG9jYWxob3N0OjgwODEvV2ViU2VydmljZS9zZXJ2aWNlL0Zhc3RhL0NvbnZlcnQvUEVQVElERS8ke2hlbG1TdHJpbmd9YDtcbiAgICAgICAgcmV0dXJuIHlpZWxkIGFjY2Vzc1NlcnZlcih1cmwsICdTZXF1ZW5jZScpO1xuICAgIH0pO1xufVxuLy9uYW1lOiBoZWxtVG9TbWlsZXNcbi8vZGVzY3JpcHRpb246IGNvbnZlcnRzIHRvIHNtaWxlc1xuLy9pbnB1dDogc3RyaW5nIGhlbG1TdHJpbmcge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG4vL291dHB1dDogc3RyaW5nIHNtaWxlcyB7c2VtVHlwZTogTW9sZWN1bGV9XG5leHBvcnQgZnVuY3Rpb24gaGVsbVRvU21pbGVzKGhlbG1TdHJpbmcpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgaHR0cDovL2xvY2FsaG9zdDo4MDgxL1dlYlNlcnZpY2Uvc2VydmljZS9TTUlMRVMvJHtoZWxtU3RyaW5nfWA7XG4gICAgICAgIHJldHVybiB5aWVsZCBhY2Nlc3NTZXJ2ZXIodXJsLCAnU01JTEVTJyk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRSUyhzbWlsZXMpIHtcbiAgICBjb25zdCBuZXdTID0gc21pbGVzLm1hdGNoKC8oPzw9XFxbKVteXFxdW10qKD89XSkvZ20pO1xuICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgIGxldCBlbCA9ICcnO1xuICAgIGxldCBkaWdpdDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld1MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG5ld1NbaV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKC9cXGQvLnRlc3QobmV3U1tpXSkpIHtcbiAgICAgICAgICAgICAgICBkaWdpdCA9IG5ld1NbaV1bbmV3U1tpXS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBuZXdTW2ldID0gbmV3U1tpXS5yZXBsYWNlKC9bMC05XS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuZXdTW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdTW2ldW2pdICE9ICc6JylcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsICs9IG5ld1NbaV1bal07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc1snUicgKyBkaWdpdF0gPSBlbDtcbiAgICAgICAgICAgICAgICBlbCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG4vL25hbWU6IGdldE1vbGZpbGVzXG4vL2lucHV0OiBjb2x1bW4gY29sIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9vdXRwdXQ6IGNvbHVtbiByZXMgXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9sZmlsZXMoY29sKSB7XG4gICAgbGV0IGdyaWQgPSBncm9rLnNoZWxsLnR2LmdyaWQ7XG4gICAgbGV0IHBhcmVudCA9IGdyaWQucm9vdC5wYXJlbnRFbGVtZW50O1xuICAgIGxldCByZXMgPSBERy5Db2x1bW4uc3RyaW5nKCdtb2xzJywgY29sLmxlbmd0aCk7XG4gICAgY29uc3QgaG9zdCA9IHVpLmRpdihbXSk7XG4gICAgcGFyZW50LmFwcGVuZENoaWxkKGhvc3QpO1xuICAgIGxldCBlZGl0b3IgPSBuZXcgSlNEcmF3Mi5FZGl0b3IoaG9zdCwgeyB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICBob3N0LnN0eWxlLndpZHRoID0gJzBweCc7XG4gICAgaG9zdC5zdHlsZS5oZWlnaHQgPSAnMHB4JztcbiAgICByZXMuaW5pdCgoaSkgPT4ge1xuICAgICAgICBlZGl0b3Iuc2V0SGVsbShjb2wuZ2V0KGkpKTtcbiAgICAgICAgbGV0IG1vbCA9IGVkaXRvci5nZXRNb2xmaWxlKCk7XG4gICAgICAgIHJldHVybiBtb2w7XG4gICAgfSk7XG4gICAgcGFyZW50Lmxhc3RDaGlsZC5yZW1vdmUoKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBoZWxtV2ViRWRpdG9yXG4vL291dHB1dDogb2JqZWN0XG5leHBvcnQgZnVuY3Rpb24gaGVsbVdlYkVkaXRvcigpIHtcbiAgICByZXR1cm4gbmV3IEhlbG1XZWJFZGl0b3IoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
2465
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msb0JBQW9CO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDTztBQUNQLGVBQWUsNERBQWtCO0FBQ2pDO0FBQ0EsY0FBYywwREFBZ0I7QUFDOUIsaUJBQWlCLGdEQUFNO0FBQ3ZCO0FBQ0EsNENBQTRDLGdCQUFnQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZUFBZSwyREFBYTtBQUM1QiIsInNvdXJjZXMiOlsid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbS5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcS1wYWxldHRlcy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvbWFjcm9tb2xlY3VsZS5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXIuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvdW5pdHMtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3RvLWNvbnNvbGUuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL3NyYy9jZWxsLXJlbmRlcmVyLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvaGVsbS13ZWItZWRpdG9yLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvdXRpbHMudHMiLCJ3ZWJwYWNrOi8vaGVsbS9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2hlbG0vZXh0ZXJuYWwgdmFyIFwiZ3Jva1wiIiwid2VicGFjazovL2hlbG0vZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9oZWxtL2V4dGVybmFsIHZhciBcInd1XCIiLCJ3ZWJwYWNrOi8vaGVsbS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9oZWxtL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2hlbG0vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2hlbG0vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9oZWxtL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vaGVsbS8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gZmxvYXQgZnJvbSAwIHRvIHJhbmdlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZSBNYXggZ2VuZXJhdGluZyB2YWx1ZS5cbiAqIEByZXR1cm4ge251bWJlcn0gQSByYW5kb20gZmxvYXQgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tRmxvYXQocmFuZ2UpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIHJhbmdlO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgc2luZ2xlIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGludGVnZXIgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tSW50KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IocmFuZG9tRmxvYXQocmFuZ2UpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtRnVaRzl0TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbUZ1Wkc5dExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hYUVVGWExFTkJRVU1zUzBGQllUdEpRVU4yUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1MwRkJZVHRKUVVOeVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUjJWdVpYSmhkR1Z6SUhOcGJtZHNaU0J5WVc1a2IyMGdabXh2WVhRZ1puSnZiU0F3SUhSdklISmhibWRsTGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCeVlXNW5aU0JOWVhnZ1oyVnVaWEpoZEdsdVp5QjJZV3gxWlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRU0J5WVc1a2IyMGdabXh2WVhRZ1oyVnVaWEpoZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21GdVpHOXRSbXh2WVhRb2NtRnVaMlU2SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCTllYUm9MbkpoYm1SdmJTZ3BJQ29nY21GdVoyVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnYVc1MFpXZGxjaUJtY205dElEQWdkRzhnY21GdVoyVXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJSEpoYm1kbElFMWhlQ0JuWlc1bGNtRjBhVzVuSUhaaGJIVmxMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCQklISmhibVJ2YlNCcGJuUmxaMlZ5SUdkbGJtVnlZWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpoYm1SdmJVbHVkQ2h5WVc1blpUb2diblZ0WW1WeUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndVpteHZiM0lvY21GdVpHOXRSbXh2WVhRb2NtRnVaMlVwS1R0Y2JuMWNiaUpkZlE9PSIsIi8qKlxuICogRGVub3RlcyBhIHZlY3RvciBvZiBmbG9hdGluZyBwb2l0IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yXG4gKiBAZXh0ZW5kcyB7RmxvYXQzMkFycmF5fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9yIGV4dGVuZHMgRmxvYXQzMkFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBhIHR3by1kaW1lbnNpb25hbCBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIE1hdHJpeFxuICogQGV4dGVuZHMge0FycmF5PFZlY3Rvcj59XG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRyaXggZXh0ZW5kcyBBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgY2FydGVzaWFuIGNvb3JkaW5hdGVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb29yZGluYXRlc1xuICogQGV4dGVuZHMge01hdHJpeH1cbiAqL1xuZXhwb3J0IGNsYXNzIENvb3JkaW5hdGVzIGV4dGVuZHMgTWF0cml4IHtcbn1cbi8qKlxuICogRGVub3RlcyBhbiBhcnJheSBvZiBhcmJpdHJhcnktdHlwZWQgdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yc1xuICogQGV4dGVuZHMge0FycmF5PGFueT59XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3JzIGV4dGVuZHMgQXJyYXkge1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pTMWtaV05zWVhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEZsQlFWazdRMEZCUnp0QlFVVXpRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRXRCUVdFN1EwRkJSenRCUVVVMVF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1YwRkJXU3hUUVVGUkxFMUJRVTA3UTBGQlJ6dEJRVVV4UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEV0QlFWVTdRMEZCUnlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIWmxZM1J2Y2lCdlppQm1iRzloZEdsdVp5QndiMmwwSUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nVm1WamRHOXlYRzRnS2lCQVpYaDBaVzVrY3lCN1JteHZZWFF6TWtGeWNtRjVmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVm1WamRHOXlJR1Y0ZEdWdVpITWdSbXh2WVhRek1rRnljbUY1SUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnRZWFJ5YVhndVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFMWhkSEpwZUZ4dUlDb2dRR1Y0ZEdWdVpITWdlMEZ5Y21GNVBGWmxZM1J2Y2o1OVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5Qk5ZWFJ5YVhnZ1pYaDBaVzVrY3lCQmNuSmhlVHhXWldOMGIzSStJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCallYSjBaWE5wWVc0Z1kyOXZjbVJwYm1GMFpYTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRU52YjNKa2FXNWhkR1Z6WEc0Z0tpQkFaWGgwWlc1a2N5QjdUV0YwY21sNGZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdRMjl2Y21ScGJtRjBaWE1nWlhoMFpXNWtjeUJOWVhSeWFYZ2dlMzFjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdGdUlHRnljbUY1SUc5bUlHRnlZbWwwY21GeWVTMTBlWEJsWkNCMlpXTjBiM0p6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQmpiR0Z6Y3lCV1pXTjBiM0p6WEc0Z0tpQkFaWGgwWlc1a2N5QjdRWEp5WVhrOFlXNTVQbjFjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZabFkzUnZjbk1nWlhoMFpXNWtjeUJCY25KaGVUeGhibmsrSUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJR1JwWTNScGIyNWhjbmtnWTI5dWRHRnBibWx1WnlCbWRXNWpkR2x2YmlCdmNIUnBiMjV6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQjBlWEJsSUU5d2RHbHZibk5jYmlBcUwxeHVaWGh3YjNKMElIUjVjR1VnVDNCMGFXOXVjeUE5SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nWVc1NWZUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR04xYzNSdmJTQmthWE4wWVc1alpTQnRaWFJ5YVdNZ1ltVjBkMlZsYmlCMGFHVWdkSGR2SUdkcGRtVnVJSFpsWTNSdmNuTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhSNWNHVWdSR2x6ZEdGdVkyVk5aWFJ5YVdOY2JpQXFJRUJ3WVhKaGJTQjdZVzU1ZlNCMk1TQlVhR1VnWm1seWMzUWdkbVZqZEc5eUxseHVJQ29nUUhCaGNtRnRJSHRoYm5sOUlIWXlJRlJvWlNCelpXTnZibVFnZG1WamRHOXlMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCRWFYTjBZVzVqWlNCaVpYUjNaV1Z1SUhSb1pYTmxJSFIzYnlCMlpXTjBiM0p6TGx4dUlDb3ZYRzVsZUhCdmNuUWdkSGx3WlNCRWFYTjBZVzVqWlUxbGRISnBZeUE5SUNoMk1Ub2dZVzU1TENCMk1qb2dZVzU1S1NBOVBpQW9iblZ0WW1WeUtUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0VnYzJsdGNHeGxJSE4wY21sdVp5QjBieUJ6ZEhKcGJtY2daR2xqZEdsdmJtRnllUzVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWRIbHdaU0JUZEhKcGJtZEVhV04wYVc5dVlYSjVYRzRnS2k5Y2JtVjRjRzl5ZENCMGVYQmxJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3VzJ0bGVUb2djM1J5YVc1blhUb2djM1J5YVc1bmZUdGNiaUpkZlE9PSIsImltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgcmFuZG9tRmxvYXQsIHJhbmRvbUludCB9IGZyb20gJy4vcmFuZG9tJztcbi8qKlxuICogQXNzZXJ0cyBhIGNvbmRpdGlvbiBieSB0aHJvd2luZyBhbiBFcnJvci5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtjb25kaXRpb249ZmFsc2VdIENvbmRpdGlvbiB0byBhc3NlcnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2U9J0Fzc2VydGlvbiBlcnJvci4nXSBNZXNzYWdlIHRvIG91dHB1dC5cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiA9IGZhbHNlLCBtZXNzYWdlID0gJ0Fzc2VydGlvbiBlcnJvci4nKSB7XG4gICAgaWYgKCFjb25kaXRpb24pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBuZXcgdHdvLWRpbWVuc2lvbmFsIGFycmF5IGFuZCBmaWxscyBpdCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIHJvd3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2YgY29sdW1ucykuXG4gKiBAcGFyYW0ge251bWJlcn0gW2ZpbGw9MF0gQSB2YWx1ZSB0byBmaWxsIHRoZSBjb29yZGluYXRlcyB3aXRoLlxuICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IEEgdHdvLWRpbWVuc2lvbmFsIGZpbGxlZCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5mdW5jdGlvbiBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMiwgZmlsbCA9IDApIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KGRpbWVuc2lvbjEpLmZpbGwoZmlsbCkubWFwKCgpID0+IChuZXcgVmVjdG9yKGRpbWVuc2lvbjIpLmZpbGwoZmlsbCkpKTtcbn1cbi8qKlxuICogVHJhbnNwb3NlIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4IFRoZSBtYXRyaXggdG8gYmUgdHJhbnNwb3NlZC5cbiAqIEByZXR1cm4ge01hdHJpeH0gVHJhbnNwb3NlZCBtYXRyaXguXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zcG9zZU1hdHJpeChtYXRyaXgpIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KG1hdHJpeFswXS5sZW5ndGgpLmZpbGwoMClcbiAgICAgICAgLm1hcCgoXywgaSkgPT4gKG5ldyBWZWN0b3IobWF0cml4Lmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGopID0+IChtYXRyaXhbal1baV0pKSkpO1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWN0b3JzIHdpdGggdGhlIHNlY29uZCBvbmUgdG8gYmUgbXVsdGlwbGllZCBieSB0aGUgZ2l2ZW4gcmF0aW8uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge251bWJlcn0gW211bHRpcGxpZXI9MV0gQSBtdWx0aXBsaWVyIHRvIGJlIHVzZWQgYmVmb3JlIHRoZSBzZWNvbmQgdmVjdG9yIGlzIGFkZGVkLlxuICogQHJldHVybiB7VmVjdG9yfSBOZXcgdmVjdG9yIGNvbnRhaW5lZCB0aGUgcmVzdWx0IG9mIG9wZXJhdGlvbiBwK211bHRpcGxpZXIqcS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckFkZChwLCBxLCBtdWx0aXBsaWVyID0gMSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IHAubGVuZ3RoO1xuICAgIGFzc2VydChuSXRlbXMgPT0gcS5sZW5ndGgsICdWZWN0b3IgbGVuZ3RocyBkbyBub3QgbWF0Y2guJyk7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwLmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHBbaV0gKyBtdWx0aXBsaWVyICogcVtpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1bXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gYmUgc3VtbWVkLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgdmVjdG9yJ3MgaXRlbXMgc3VtLlxuICovXG5mdW5jdGlvbiBpdGVtc1N1bSh2KSB7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsICs9IHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdXFhcmVzIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIHNxdWFyZS5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gQSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsJ3MgaXRlbXMgc3F1YXJlZC5cbiAqL1xuZnVuY3Rpb24gdmVjdG9yU3F1YXJlKHYpIHtcbiAgICBjb25zdCBuSXRlbXMgPSB2Lmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3Rvckxlbmd0aCh2KSB7XG4gICAgbGV0IHNxclN1bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKVxuICAgICAgICBzcXJTdW0gKz0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIE1hdGguc3FydChzcXJTdW0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckRvdFByb2R1Y3QodjEsIHYyKSB7XG4gICAgaWYgKHYxLmxlbmd0aCAhPSB2Mi5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgICBsZXQgcHJvZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2MS5sZW5ndGg7IGkrKylcbiAgICAgICAgcHJvZCArPSB2MVtpXSAqIHYyW2ldO1xuICAgIHJldHVybiBwcm9kO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2NhbGU9MS5dIE1heCB2YWx1ZSBnaXZlbiBieSByYW5kb20gZ2VuZXJhdG9yLlxuICogQHJldHVybiB7TWF0cml4fSBBIG5ldyBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50ICB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxsUmFuZG9tTWF0cml4KGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIHNjYWxlID0gMS4pIHtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW1lbnNpb24xOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkaW1lbnNpb24yOyArK2opXG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSByYW5kb21GbG9hdChzY2FsZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHJldHVybiB7bnVtYmVyfSBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gdmVjdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHAsIHEpIHtcbiAgICBjb25zdCBkaWZmID0gdmVjdG9yQWRkKHAsIHEsIC0xKTtcbiAgICBjb25zdCBzcWRpZmYgPSB2ZWN0b3JTcXVhcmUoZGlmZik7XG4gICAgY29uc3Qgc3FkaWZmU3VtbSA9IGl0ZW1zU3VtKHNxZGlmZik7XG4gICAgcmV0dXJuIE1hdGguc3FydChzcWRpZmZTdW1tKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGRpc3RhbmNlIG1hdHJpeCB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3RvcnN9IGRhdGEgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzLlxuICogQHBhcmFtIHtEaXN0YW5jZU1ldHJpY30gZGlzdGFuY2UgQ3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICogQHJldHVybiB7TWF0cml4fSBDYWxjdWxhdGVkIGN1c3RvbSBkaXN0YW5jZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAoZGF0YVtpXSA9PSBudWxsKSB8fCAoZGF0YVtqXSA9PSBudWxsKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuICogQHBhcmFtIHtib29sZWFufSBbcmV2ZXJzZT1mYWxzZV0gV2hldGhlciB0byByZXR1cm4gcmV2ZXJzZWQgb3JkZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1NVRkRiRVVzU1VGQlNTeEpRVUZKTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFWY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjRReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhWUVVGclFpeEZRVUZGTEZWQlFXdENMRVZCUVVVc1VVRkJaMElzUlVGQlJUdEpRVU42Uml4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUlhaRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOeVF6dEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxEQkNRVUV3UWl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8wbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNTVUZCWVN4RlFVRkZMRkZCUVhkQ08wbEJRM2hGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkdMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVFzYTBaQlFXdEdPMEZCUTJ4R0xFMUJRVTBzVlVGQlZTeFJRVUZSTEVOQlFVTXNTMEZCWVN4RlFVRkZMRWRCUVZjc1JVRkJSU3haUVVGWkxFZEJRVWNzUzBGQlN6dEpRVU4yUlN4TlFVRk5MRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSWFJETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXpkQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSWGhDTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxFOUJRVThzUTBGQlF5eE5RVUZoTEVWQlFVVXNUMEZCVHl4SFFVRkhMRXRCUVVzN1NVRkRjRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFWRXNSVUZCUlN4RFFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzWkhMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlRTeEZRVUZGTEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4eFFrRkJjVUk3U1VGRGJFVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExHMUNRVUZ0UWp0SlFVTjJSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eERRVUZETEVkQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpGRkxFOUJRVThzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpGQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRTFCUVdNc1JVRkJSU3hEUVVGVExFVkJRVVVzU1VGQmQwTTdTVUZEYkVjc1UwRkJVeXhMUVVGTExFTkJRVU1zVFVGQlowTXNSVUZCUlN4UFFVRTRRanRSUVVNM1JTeEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRjRUlzU1VGQlNTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUlhSQ0xFdEJRVXNzVFVGQlRTeFBRVUZQTEVsQlFVa3NUVUZCVFN4RlFVRkZPMWxCUXpWQ0xFMUJRVTBzWTBGQll5eEhRVUZITEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVONFF5eEpRVUZKTEZWQlFWVXNTVUZCU1N4SlFVRkpMRWxCUVVrc1kwRkJZeXhIUVVGSExGVkJRVlVzUlVGQlJUdG5Ra0ZEY2tRc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF6dG5Ra0ZEYmtJc1ZVRkJWU3hIUVVGSExHTkJRV01zUTBGQlF6dGhRVU0zUWp0VFFVTkdPMUZCUTBRc1QwRkJUeXhSUVVGUkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pETEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRk4wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNdlFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU55UWp0SlFVVkVMRTlCUVU4c1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdVVUZEZUVJc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVU5tTEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUVRoQ0xFVkJReTlETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZUTEVkQlFVY3NSVUZCUlN4TFFVRkxPMWxCUTNoRUxFOUJRVThzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRVQ3hKUVVGSkxFZEJRVWNzUlVGQlJUdFpRVU5RTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFrSXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU40UWp0TFFVTkdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3UjBGSFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1NVRkJXVHRKUVVOd1F5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRZaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGV2l4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZzUWl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVVZ3UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUlRkRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZGYmtNc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUTdPenM3TzBkQlMwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1lVRkJZU3hEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTzBsQlF6bERMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY2tVc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3VFdGMGNtbDRMQ0JXWldOMGIzSXNJRU52YjNKa2FXNWhkR1Z6TENCV1pXTjBiM0p6TENCRWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5MaTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNKaGJtUnZiVVpzYjJGMExDQnlZVzVrYjIxSmJuUjlJR1p5YjIwZ0p5NHZjbUZ1Wkc5dEp6dGNibHh1THlvcVhHNGdLaUJCYzNObGNuUnpJR0VnWTI5dVpHbDBhVzl1SUdKNUlIUm9jbTkzYVc1bklHRnVJRVZ5Y205eUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMk52Ym1ScGRHbHZiajFtWVd4elpWMGdRMjl1WkdsMGFXOXVJSFJ2SUdGemMyVnlkQzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmJXVnpjMkZuWlQwblFYTnpaWEowYVc5dUlHVnljbTl5TGlkZElFMWxjM05oWjJVZ2RHOGdiM1YwY0hWMExseHVJQ29nUUhSb2NtOTNjeUI3UlhKeWIzSjlYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMzTmxjblFvWTI5dVpHbDBhVzl1T2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlVzSUcxbGMzTmhaMlU2SUhOMGNtbHVaeUE5SUNkQmMzTmxjblJwYjI0Z1pYSnliM0l1SnlrZ2UxeHVJQ0JwWmlBb0lXTnZibVJwZEdsdmJpbGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYldWemMyRm5aU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QnVaWGNnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJR0Z5Y21GNUlHRnVaQ0JtYVd4c2N5QnBkQ0IzYVhSb0lIUm9aU0IyWVd4MVpTQm5hWFpsYmk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TVNCVWFHVWdabWx5YzNRZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCamIyOXlaR2x1WVhSbGN5QW9iblZ0WW1WeUlHOW1JSEp2ZDNNcExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiaklnVkdobElITmxZMjl1WkNCa2FXMWxibk5wYjI0Z2IyWWdkR2hsSUdOdmIzSmthVzVoZEdWeklDaHVkVzFpWlhJZ2IyWWdZMjlzZFcxdWN5a3VYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzJacGJHdzlNRjBnUVNCMllXeDFaU0IwYnlCbWFXeHNJSFJvWlNCamIyOXlaR2x1WVhSbGN5QjNhWFJvTGx4dUlDb2dRSEpsZEhWeWJpQjdRMjl2Y21ScGJtRjBaWE45SUVFZ2RIZHZMV1JwYldWdWMybHZibUZzSUdacGJHeGxaQ0IzYVhSb0lIUm9aU0IyWVd4MVpTQm5hWFpsYmk1Y2JpQXFJRUIwYjJSdklFMXBaMmgwSUdKbElITnNiM2NnYzJsdVkyVWdkWE5sWkNCQmNuSmhlUzV0WVhBdUlGQnliMkpoWW14NUlHNWxaV1J6SUhCbGNtWnZjbTFoYm1ObElISmxkbWx6YVc5dUxseHVJQ292WEc1bWRXNWpkR2x2YmlCcGJtbDBRMjl2Y21ScGJtRjBaWE1vWkdsdFpXNXphVzl1TVRvZ2JuVnRZbVZ5TENCa2FXMWxibk5wYjI0eU9pQnVkVzFpWlhJc0lHWnBiR3c2SUc1MWJXSmxjaUE5SURBcE9pQkRiMjl5WkdsdVlYUmxjeUI3WEc0Z0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb1pHbHRaVzV6YVc5dU1Ta3VabWxzYkNobWFXeHNLUzV0WVhBb0tDa2dQVDRnS0c1bGR5QldaV04wYjNJb1pHbHRaVzV6YVc5dU1pa3VabWxzYkNobWFXeHNLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJ5WVc1emNHOXpaU0J0WVhSeWFYZ3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHROWVhSeWFYaDlJRzFoZEhKcGVDQlVhR1VnYldGMGNtbDRJSFJ2SUdKbElIUnlZVzV6Y0c5elpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUZSeVlXNXpjRzl6WldRZ2JXRjBjbWw0TGx4dUlDb2dRSFJ2Wkc4Z1RXbG5hSFFnWW1VZ2MyeHZkeUJ6YVc1alpTQjFjMlZrSUVGeWNtRjVMbTFoY0M0Z1VISnZZbUZpYkhrZ2JtVmxaSE1nY0dWeVptOXliV0Z1WTJVZ2NtVjJhWE5wYjI0dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwY21GdWMzQnZjMlZOWVhSeWFYZ29iV0YwY21sNE9pQk5ZWFJ5YVhncE9pQk5ZWFJ5YVhnZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLRzFoZEhKcGVGc3dYUzVzWlc1bmRHZ3BMbVpwYkd3b01DbGNiaUFnSUNBdWJXRndLQ2hmTENCcEtTQTlQaUFvYm1WM0lGWmxZM1J2Y2lodFlYUnlhWGd1YkdWdVozUm9LUzVtYVd4c0tEQXBMbTFoY0Nnb1h5d2dhaWtnUFQ0Z0tHMWhkSEpwZUZ0cVhWdHBYU2twS1NrN1hHNTlYRzVjYmk4cUtseHVJQ29nUVdSa2N5QjBkMjhnZG1WamRHOXljeUIzYVhSb0lIUm9aU0J6WldOdmJtUWdiMjVsSUhSdklHSmxJRzExYkhScGNHeHBaV1FnWW5rZ2RHaGxJR2RwZG1WdUlISmhkR2x2TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCd0lGUm9aU0JtYVhKemRDQjJaV04wYjNJZ2RHOGdZV1JrTGx4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIRWdWR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdkRzhnWVdSa0xseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR0ZFd4MGFYQnNhV1Z5UFRGZElFRWdiWFZzZEdsd2JHbGxjaUIwYnlCaVpTQjFjMlZrSUdKbFptOXlaU0IwYUdVZ2MyVmpiMjVrSUhabFkzUnZjaUJwY3lCaFpHUmxaQzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1RtVjNJSFpsWTNSdmNpQmpiMjUwWVdsdVpXUWdkR2hsSUhKbGMzVnNkQ0J2WmlCdmNHVnlZWFJwYjI0Z2NDdHRkV3gwYVhCc2FXVnlLbkV1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKQlpHUW9jRG9nVm1WamRHOXlMQ0J4T2lCV1pXTjBiM0lzSUcxMWJIUnBjR3hwWlhJNklHNTFiV0psY2lBOUlERXBPaUJXWldOMGIzSWdlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0J3TG14bGJtZDBhRHRjYmx4dUlDQmhjM05sY25Rb2JrbDBaVzF6SUQwOUlIRXViR1Z1WjNSb0xDQW5WbVZqZEc5eUlHeGxibWQwYUhNZ1pHOGdibTkwSUcxaGRHTm9MaWNwTzF4dVhHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2NDNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSEJiYVYwZ0t5QnRkV3gwYVhCc2FXVnlJQ29nY1Z0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UzVnRjeUIwYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE11WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSFlnVkdobElIWmxZM1J2Y2lCMGJ5QmlaU0J6ZFcxdFpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUZSb1pTQjJaV04wYjNJbmN5QnBkR1Z0Y3lCemRXMHVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbDBaVzF6VTNWdEtIWTZJRlpsWTNSdmNpazZJRzUxYldKbGNpQjdYRzRnSUd4bGRDQjBiM1JoYkNBOUlEQTdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjJMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSFJ2ZEdGc0lDczlJSFpiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWNXRnlaWE1nZEdobElIWmxZM1J2Y2lkeklHbDBaVzF6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0IySUZSb1pTQjJaV04wYjNJZ2RHOGdjM0YxWVhKbExseHVJQ29nUUhKbGRIVnliaUI3Vm1WamRHOXlmU0JCSUc1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1sdVp5QjBhR1VnYjNKcFoybHVZV3duY3lCcGRHVnRjeUJ6Y1hWaGNtVmtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQjJaV04wYjNKVGNYVmhjbVVvZGpvZ1ZtVmpkRzl5S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2RpNXNaVzVuZEdnN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSFpiYVYwZ0tpQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFpsWTNSdmNreGxibWQwYUNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2MzRnlVM1Z0T2lCdWRXMWlaWElnUFNBd08xeHVJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUdrckt5bGNiaUFnSUNCemNYSlRkVzBnS3owZ2RsdHBYU0FxSUhaYmFWMDdYRzRnSUhKbGRIVnliaUJOWVhSb0xuTnhjblFvYzNGeVUzVnRLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb2RqRTZJRlpsWTNSdmNpd2dkakk2SUZabFkzUnZjaWs2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2gyTVM1c1pXNW5kR2dnSVQwZ2RqSXViR1Z1WjNSb0tWeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc5eVpHVnlJRzltSUhaaGJIVmxjeUJoY3lCcFppQjBhR1Y1SUdGeVpTQnpiM0owWldRdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ2RtRnNkV1Z6SUVsdWNIVjBJR0Z5Y21GNUxseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiY21WMlpYSnpaVDFtWVd4elpWMGdWMmhsZEdobGNpQjBieUJ5WlhSMWNtNGdjbVYyWlhKelpXUWdiM0prWlhJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnVkdobElHOXlaR1Z5SUdOdmJYQjFkR1ZrTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWEpuVTI5eWRDaDJZV3gxWlhNNklHRnVlVnRkTENCeVpYWmxjbk5sSUQwZ1ptRnNjMlVwT2lCdWRXMWlaWEpiWFNCN1hHNGdJR052Ym5OMElITnZjblJtYmlBOUlISmxkbVZ5YzJVZ1B5QW9ZVG9nWVc1NVcxMHNJR0k2SUdGdWVWdGRLU0E5UGlBb1lsc3dYU0F0SUdGYk1GMHBJRG9nS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrZ1BUNGdLR0ZiTUYwZ0xTQmlXekJkS1R0Y2JpQWdZMjl1YzNRZ1pHVmpiM0lnUFNBb2Rqb2dZVzU1TENCcE9pQnVkVzFpWlhJcElEMCtJRnQyTENCcFhUc2dMeThnYzJWMElHbHVaR1Y0SUhSdklIWmhiSFZsWEc0Z0lHTnZibk4wSUhWdVpHVmpiM0lnUFNBb1lUb2dZVzU1VzEwcElEMCtJR0ZiTVYwN0lDOHZJR3hsWVhabElHOXViSGtnYVc1a1pYaGNiaUFnWTI5dWMzUWdYMkZ5WjNOdmNuUWdQU0FvWVhKeU9pQmhibmxiWFNrZ1BUNGdZWEp5TG0xaGNDaGtaV052Y2lrdWMyOXlkQ2h6YjNKMFptNHBMbTFoY0NoMWJtUmxZMjl5S1R0Y2JpQWdjbVYwZFhKdUlGOWhjbWR6YjNKMEtIWmhiSFZsY3lrN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhNZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCa2FYTjBJR1oxYm1OMGFXOXVYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYkdWdVozUm9JSFJ2ZEdGc0lHNTFiV0psY2lCdlppQnZZbXBsWTNSelhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiaUJ1ZFcxaVpYSWdiMllnWkdsMlpYSnpaU0JsYkdWdFpXNTBjeUIwYnlCbWFXNWtYRzRnS2lCQWNHRnlZVzBnZXlocE1Ub2diblZ0WW1WeUxDQnBNam9nYm5WdFltVnlLU0E5UGlCdWRXMWlaWEo5SUdScGMzUWdZU0JtZFc1amRHbHZiaUIzYUdsamFDQmpZV3hqZFd4aGRHVnpJR1JwYzNSaGJtTmxJR0psZEhkbFpXNWNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBkMjhnYjJKcVpXTjBjeUIxYzJsdVp5QjBhR1ZwY2lCcGJtUmxlR1Z6WEc0Z0tpQkFjbVYwZFhKdWN5QjdiblZ0WW1WeVcxMTlJRlJvWlNCcGJtUmxlR1Z6SUc5bUlIUm9aU0J0YjNOMElHUnBkbVZ5YzJVZ2IySnFaV04wYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JtZFc1amRHbHZiaUJ0WVhoQ2VTaDJZV3gxWlhNNklFbDBaWEpoWW14bFNYUmxjbUYwYjNJOGJuVnRZbVZ5UGl3Z2IzSmtaWEpDZVRvZ0tHazZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlLU0I3WEc0Z0lDQWdiR1YwSUcxaGVGWmhiSFZsSUQwZ2JuVnNiRHRjYmlBZ0lDQnNaWFFnYldGNFQzSmtaWEpDZVNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdWc1pXMWxiblFnYjJZZ2RtRnNkV1Z6S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JsYkdWdFpXNTBUM0prWlhKQ2VTQTlJRzl5WkdWeVFua29aV3hsYldWdWRDazdYRzRnSUNBZ0lDQnBaaUFvYldGNFQzSmtaWEpDZVNBOVBTQnVkV3hzSUh4OElHVnNaVzFsYm5SUGNtUmxja0o1SUQ0Z2JXRjRUM0prWlhKQ2VTa2dlMXh1SUNBZ0lDQWdJQ0J0WVhoV1lXeDFaU0E5SUdWc1pXMWxiblE3WEc0Z0lDQWdJQ0FnSUcxaGVFOXlaR1Z5UW5rZ1BTQmxiR1Z0Wlc1MFQzSmtaWEpDZVR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHMWhlRlpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2MzVmljMlYwSUQwZ1czSmhibVJ2YlVsdWRDaHNaVzVuZEdnZ0xTQXhLVjA3WEc0Z0lHTnZibk4wSUdOdmJYQnNaVzFsYm5RZ1BTQnVaWGNnVTJWMEtDazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJR2xtSUNnaGMzVmljMlYwTG1sdVkyeDFaR1Z6S0drcEtWeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNWhaR1FvYVNrN1hHNGdJSDFjYmx4dUlDQjNhR2xzWlNBb2MzVmljMlYwTG14bGJtZDBhQ0E4SUc0cElIdGNiaUFnSUNCamIyNXpkQ0JwWkhnZ1BTQnRZWGhDZVNoY2JpQWdJQ0FnSUdOdmJYQnNaVzFsYm5RdWRtRnNkV1Z6S0NrZ1lYTWdTWFJsY21GaWJHVkpkR1Z5WVhSdmNqeHVkVzFpWlhJK0xGeHVJQ0FnSUNBZ0tHa3BJRDArSUUxaGRHZ3ViV2x1TG1Gd2NHeDVLRTFoZEdnc0lITjFZbk5sZEM1dFlYQW9ablZ1WTNScGIyNG9kbUZzTENCcGJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWkdsemRDaHBMQ0IyWVd3cE8xeHVJQ0FnSUNBZ2ZTa3BLVHRjYmlBZ0lDQnBaaUFvYVdSNEtTQjdYRzRnSUNBZ0lDQnpkV0p6WlhRdWNIVnphQ2hwWkhncE8xeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNWtaV3hsZEdVb2FXUjRLVHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlITjFZbk5sZER0Y2JuMWNibHh1THlvcVhHNGdLaUJTWlhSMWNtNXpJRzV2Y20xaGJHbDZaV1FnZG1WamRHOXlYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnWkdGMFlTQnVkVzFsY21sallXd2dZWEp5WVhsY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzV2Y20xaGJHbDZaU2hrWVhSaE9pQldaV04wYjNJcE9pQldaV04wYjNJZ2UxeHVJQ0JzWlhRZ2JXVmhiaUE5SURBN1hHNGdJR3hsZENCemRHUWdQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQnRaV0Z1SUNzOUlHUmhkR0ZiYVYwN1hHNWNiaUFnYldWaGJpQXZQU0JrWVhSaExteGxibWQwYUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdjM1JrSUNzOUlDaGtZWFJoVzJsZElDMGdiV1ZoYmlrZ0tpQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cE8xeHVYRzRnSUhOMFpDQTlJRTFoZEdndWMzRnlkQ2h6ZEdRZ0x5QmtZWFJoTG14bGJtZDBhQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrWVhSaExteGxibWQwYURzZ0t5dHBLVnh1SUNBZ0lHUmhkR0ZiYVYwZ1BTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDOGdjM1JrTzF4dVhHNGdJSEpsZEhWeWJpQmtZWFJoTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVpwYm1SeklITmxkQ0JrYVdabVpYSmxibU5sSUdKbGRIZGxaVzRnZEhkdklHeHBjM1J6TGx4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ1lTQlVhR1VnWm1seWMzUWdiR2x6ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHSWdWR2hsSUhObFkyOXVaQ0JzYVhOMExseHVJQ29nUUhKbGRIVnliaUI3WVc1NVcxMTlYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCelpYUkVhV1ptWlhKbGJtTmxLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2s2SUdGdWVWdGRJSHRjYmlBZ1kyOXVjM1FnWWxObGRDQTlJRzVsZHlCVFpYUW9ZaWs3WEc0Z0lISmxkSFZ5YmlCQmNuSmhlUzVtY205dEtHNWxkeUJUWlhRb1lTNW1hV3gwWlhJb0tIZ3BJRDArSUNGaVUyVjBMbWhoY3loNEtTa3BMblpoYkhWbGN5Z3BLVHRjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgTGVzaygpIHtcbiAgICAgICAgaWYgKHRoaXMubGVzayA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmxlc2sgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydHJywgJ0EnLCAnUycsICdUJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snTicsICdRJywgJ0gnXSwgJ21hZ2VudGEnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxlc2s7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgR3Jva0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3Jva0dyb3VwcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb2tHcm91cHMgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydDJywgJ1UnXSwgJ3llbGxvdyddLFxuICAgICAgICAgICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydSJywgJ0gnLCAnSyddLCAnbGlnaHRfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snUycsICdUJywgJ04nLCAnUSddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncm9rR3JvdXBzO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IFJhc01vbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmFzTW9sID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMucmFzTW9sID0gbmV3IEFtaW5vYWNpZHNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhc01vbDtcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgY29uc3QgcmVzTSA9IG0gaW4gQW1pbm9hY2lkc1BhbGV0dGVzLmFhU3lub255bXMgPyBBbWlub2FjaWRzUGFsZXR0ZXMuYWFTeW5vbnltc1ttXSA6IG07XG4gICAgICAgIGNvbnN0IHJlcyA9IHN1cGVyLmdldChyZXNNKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG4vKiogT25seSBzb21lIG9mIHRoZSBzeW5vbnltcy4gVGhlc2Ugd2VyZSBvYnRhaW5lZCBmcm9tIHRoZSBjbHVzdGVyZWQgb2xpZ29wZXB0aWRlIGRhdGFzZXQuICovXG5BbWlub2FjaWRzUGFsZXR0ZXMuYWFTeW5vbnltcyA9IHtcbiAgICAnTWVObGUnOiAnTCcsXG4gICAgJ01lQSc6ICdBJyxcbiAgICAnTWVHJzogJ0cnLFxuICAgICdNZUYnOiAnRicsXG59O1xuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHMge1xuICAgIHN0YXRpYyBnZXRQYWxldHRlKHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgICAgICAgICAgY2FzZSAnZ3Jvayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICAgICAgY2FzZSAnbGVzayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5MZXNrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBkaXZpZGVkIGFtaW5vIGFjaWQgd2l0aCBpdHMgY29udGVudCBpbiB0aGUgYnJhY2tldCwgaWYgdGhlIGNvbnRlbnQgaXMgbnVtYmVyLCB0aGVuIGl0cyBvbWl0dGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICAgKiBAcmV0dXJuIHtbc3RyaW5nLCBzdHJpbmddfSBvdXRlciBhbmQgaW5uZXIgY29udGVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRJbm5lck91dGVyKGMpIHtcbiAgICAgICAgbGV0IGlzSW5uZXIgPSAwO1xuICAgICAgICBsZXQgaW5uZXIgPSAnJztcbiAgICAgICAgbGV0IG91dGVyID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjKSB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PSAnKCcpXG4gICAgICAgICAgICAgICAgaXNJbm5lcisrO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnKScpXG4gICAgICAgICAgICAgICAgaXNJbm5lci0tO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgICAgICAgICBpbm5lciArPSBjaGFyO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91dGVyICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUludChpbm5lcikpID8gW291dGVyLCAnJ10gOiBbb3V0ZXIsIGlubmVyXTtcbiAgICB9XG4gICAgc3RhdGljIGdldENvbG9yQUFQaXZvdChtb25vbWVyID0gJycsIHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgLy9jb25zdCBjaGVtUGFsZXR0ZUluc3RhbmNlID0gQUFQYWxldHRlcy5Hcm9rR3JvdXBzKCk7XG4gICAgICAgIGNvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSB0aGlzLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICAgICAgbGV0IFtvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lcl0gPSB0aGlzLmdldElubmVyT3V0ZXIobW9ub21lcik7XG4gICAgICAgIG91dGVyTW9ub21lciA9IChvdXRlck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke291dGVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogb3V0ZXJNb25vbWVyKTtcbiAgICAgICAgaW5uZXJNb25vbWVyID0gKGlubmVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7aW5uZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBpbm5lck1vbm9tZXIpO1xuICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMSB8fCBtb25vbWVyWzFdID09ICcoJykge1xuICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2EgPSBtb25vbWVyWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAxXSA6XG4gICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAxXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lclswXSA9PSAnZCcgJiYgbW9ub21lclsxXSBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMiB8fCBtb25vbWVyWzJdID09ICcoJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9iID0gbW9ub21lclsxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDAsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAzIHx8IG1vbm9tZXJbM10gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDNdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKChfYyA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b0xvd2VyQ2FzZSgpKSA9PSBtb25vbWVyWzBdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMSwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSA0IHx8IG1vbm9tZXJbNF0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gdGhpcy5BQUZ1bGxOYW1lc1ttb25vbWVyLnN1YnN0cmluZygxLCAzKV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDRdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgNF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICAgIH1cbn1cbkFtaW5vYWNpZHMuU2VtVHlwZSA9ICdBbWlub2FjaWRzJztcbkFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50ID0gJ0FtaW5vYWNpZHNNdWx0aXBsZUFsaWdubWVudCc7XG5BbWlub2FjaWRzLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuQW1pbm9hY2lkcy5OYW1lcyA9IHtcbiAgICAnRyc6ICdHbHljaW5lJyxcbiAgICAnTCc6ICdMZXVjaW5lJyxcbiAgICAnWSc6ICdUeXJvc2luZScsXG4gICAgJ1MnOiAnU2VyaW5lJyxcbiAgICAnRSc6ICdHbHV0YW1pYyBhY2lkJyxcbiAgICAnUSc6ICdHbHV0YW1pbmUnLFxuICAgICdEJzogJ0FzcGFydGljIGFjaWQnLFxuICAgICdOJzogJ0FzcGFyYWdpbmUnLFxuICAgICdGJzogJ1BoZW55bGFsYW5pbmUnLFxuICAgICdBJzogJ0FsYW5pbmUnLFxuICAgICdLJzogJ0x5c2luZScsXG4gICAgJ1InOiAnQXJnaW5pbmUnLFxuICAgICdIJzogJ0hpc3RpZGluZScsXG4gICAgJ0MnOiAnQ3lzdGVpbmUnLFxuICAgICdWJzogJ1ZhbGluZScsXG4gICAgJ1AnOiAnUHJvbGluZScsXG4gICAgJ1cnOiAnVHJ5cHRvcGhhbicsXG4gICAgJ0knOiAnSXNvbGV1Y2luZScsXG4gICAgJ00nOiAnTWV0aGlvbmluZScsXG4gICAgJ1QnOiAnVGhyZW9uaW5lJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzID0ge1xuICAgICdHJzogJ05DQyg9TylPJyxcbiAgICAnTCc6ICdOW0NASF0oQ0MoQylDKUMoPU8pTycsXG4gICAgJ1knOiAnTkMoQ0MxPUNDPUMoTylDPUMxKUMoPU8pTycsXG4gICAgJ1MnOiAnTkMoQ08pQyg9TylPJyxcbiAgICAnRSc6ICdOW0NAQEhdKENDQyhPKT1PKUMoPU8pTycsXG4gICAgJ1EnOiAnTltDQEBIXShDQ0MoTik9TylDKD1PKU8nLFxuICAgICdEJzogJ05bQ0BASF0oQ0MoTyk9TylDKD1PKU8nLFxuICAgICdOJzogJ05bQ0BASF0oQ0MoTik9TylDKD1PKU8nLFxuICAgICdGJzogJ05DKENDMT1DQz1DQz1DMSlDKD1PKU8nLFxuICAgICdBJzogJ05bQ0BIXShDKUMoPU8pTycsXG4gICAgJ0snOiAnTkMoQ0NDQ04pQyg9TylPJyxcbiAgICAnUic6ICdOW0NASF0oQ0NDTkMoPU4pQylDKD1PKU8nLFxuICAgICdIJzogJ05DKENDMT1DTj1DW05dMSlDKD1PKU8nLFxuICAgICdDJzogJ05bQ0BASF0oQ1MpQyg9TylPJyxcbiAgICAnVic6ICdOQyhDKEMpQylDKD1PKU8nLFxuICAgICdQJzogJ04oQ0NDMSlDMUMoPU8pTycsXG4gICAgJ1cnOiAnTltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKUMoPU8pTycsXG4gICAgJ0knOiAnTltDQEhdKFtDQEhdKEMpQ0MpQyg9TylPJyxcbiAgICAnTSc6ICdOQyhDQ1NDKUMoPU8pTycsXG4gICAgJ1QnOiAnTkMoQyhPKUMpQyg9TylPJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzVHJ1bmNhdGVkID0ge1xuICAgICdHJzogJypDKicsXG4gICAgJ0wnOiAnQ0MoQylDW0NASF0oKikqJyxcbiAgICAnWSc6ICdDMT1DQyg9Q0M9QzFDQygqKSopTycsXG4gICAgJ1MnOiAnT0NDKCopQyonLFxuICAgICdFJzogJypbQ0BASF0oQ0NDKE8pPU8pKicsXG4gICAgJ1EnOiAnKk5bQ0BASF0oQ0NDKE4pPU8pKicsXG4gICAgJ0QnOiAnKltDQEBIXShDQyhPKT1PKSonLFxuICAgICdOJzogJypbQ0BASF0oQ0MoTik9TykqJyxcbiAgICAnRic6ICdDMT1DQz1DKEM9QzEpQ0MoKikqJyxcbiAgICAnQSc6ICdDW0NASF0oKikqJyxcbiAgICAnSyc6ICdDKENDTilDQygqKSonLFxuICAgICdSJzogJypbQ0BIXShDQ0NOQyg9TilDKSonLFxuICAgICdIJzogJ0MxPUMoTkM9TjEpQ0MoKikqJyxcbiAgICAnQyc6ICdDKFtDQEBIXSgqKSopUycsXG4gICAgJ1YnOiAnQ0MoQylDKCopKicsXG4gICAgJ1AnOiAnQzFDQ04oKilDMSonLFxuICAgICdXJzogJypbQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSkqJyxcbiAgICAnSSc6ICdDQ1tDQEhdKEMpW0NASF0oKikqJyxcbiAgICAnTSc6ICdDU0NDQygqKSonLFxuICAgICdUJzogJ0NDKE8pQygqKSonLFxufTtcbi8qKiBUT0RPOiBGdWxsP1xuICovXG5BbWlub2FjaWRzLkFBRnVsbE5hbWVzID0ge1xuICAgICdBbGEnOiAnQScsXG4gICAgJ0FyZyc6ICdSJyxcbiAgICAnQXNuJzogJ04nLFxuICAgICdBc3AnOiAnRCcsXG4gICAgJ0N5cyc6ICdDJyxcbiAgICAnR2xuJzogJ1EnLFxuICAgICdHbHUnOiAnRScsXG4gICAgJ0dseSc6ICdHJyxcbiAgICAnSGlzJzogJ0gnLFxuICAgICdJbGUnOiAnSScsXG4gICAgJ0xldSc6ICdMJyxcbiAgICAnTHlzJzogJ0snLFxuICAgICdNZXQnOiAnTScsXG4gICAgJ1BoZSc6ICdGJyxcbiAgICAnUHJvJzogJ1AnLFxuICAgICdTZXInOiAnUycsXG4gICAgJ1Rocic6ICdUJyxcbiAgICAnVHJwJzogJ1cnLFxuICAgICdUeXInOiAnWScsXG4gICAgJ1ZhbCc6ICdWJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZVzFwYm05aFkybGtjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltRnRhVzV2WVdOcFpITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUzBFc1QwRkJUeXhGUVVGaExHTkJRV01zUlVGQlF5eE5RVUZOTEdkQ1FVRm5RaXhEUVVGRE8wRkJSVEZFTEUxQlFVMHNUMEZCVHl4clFrRkJiVUlzVTBGQlVTeGpRVUZqTzBsQlJ6ZERMRTFCUVUwc1MwRkJTeXhKUVVGSk8xRkJRM0JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhMUVVGTExFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTTdaMEpCUXpOQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdaMEpCUTJoRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkROVVFzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETzJkQ1FVTTFRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJRenRuUWtGRGJrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFZRVUZWTEVOQlFVTTdZVUZEZWtJc1JVRkJSU3hMUVVGTExFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRUUVVNdlFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlNVMHNUVUZCVFN4TFFVRkxMRlZCUVZVN1VVRkRNVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRemxDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dG5Ra0ZEYWtNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRM1JDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETzJkQ1FVTnVRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZEZGtRc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1dVRkJXU3hEUVVGRE8yZENRVU12UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRla0lzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZGQlFWRXNRMEZCUXp0aFFVTnFReXhGUVVGRkxFdEJRVXNzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xTkJReTlDTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8wbEJRM3BDTEVOQlFVTTdTVUZKVFN4TlFVRk5MRXRCUVVzc1RVRkJUVHRSUVVOMFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3V1VGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxHdENRVUZyUWl4RFFVRkRPMmRDUVVOdVF5eDVSRUZCZVVRN1owSkJRM3BFTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRkZCUVZFc1JVRkJSU3hUUVVGVE8yRkJRM0JDTEVOQlFVTXNRMEZCUXp0VFFVTktPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEzSkNMRU5CUVVNN1NVRkZaU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU16UWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMlJpeE5RVUZOTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6VkNMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6czdRVUZGUkN3NFJrRkJPRVk3UVVGREwwVXNOa0pCUVZVc1IwRkJLMEk3U1VGRGRFUXNUMEZCVHl4RlFVRkZMRWRCUVVjN1NVRkRXaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3UTBGRFdDeERRVUZETzBGQlIwb3NUVUZCVFN4UFFVRlBMRlZCUVZVN1NVRnhSMlFzVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRnBRaXhOUVVGTk8xRkJRemxETEZGQlFWRXNUVUZCVFN4RlFVRkZPMWxCUTJoQ0xFdEJRVXNzVFVGQlRUdG5Ra0ZEVkN4UFFVRlBMR3RDUVVGclFpeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVTjJReXhMUVVGTExFMUJRVTA3WjBKQlExUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEYWtNN1owSkJRMFVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4NVFrRkJlVUlzVFVGQlRTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8xTkJRM0pGTzBsQlEwZ3NRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBrc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZUTzFGQlEyNURMRWxCUVVrc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFppeEpRVUZKTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkZaaXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTndRaXhKUVVGSkxFbEJRVWtzU1VGQlNTeEhRVUZITzJkQ1FVTmlMRTlCUVU4c1JVRkJSU3hEUVVGRE8ybENRVU5RTEVsQlFVa3NTVUZCU1N4SlFVRkpMRWRCUVVjN1owSkJRMnhDTEU5QlFVOHNSVUZCUlN4RFFVRkRPMmxDUVVOUUxFbEJRVWtzVDBGQlR6dG5Ra0ZEWkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRE96dG5Ra0ZGWkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRE8xTkJRMnBDTzFGQlJVUXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEyaEZMRU5CUVVNN1NVRkZUU3hOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETEZWQlFXdENMRVZCUVVVc1JVRkJSU3hUUVVGcFFpeE5RVUZOT3p0UlFVTjZSU3h6UkVGQmMwUTdVVUZEZEVRc1RVRkJUU3h0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlEzQkVMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzV1VGQldTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU12UkN4WlFVRlpMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTXpSaXhaUVVGWkxFZEJRVWNzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFpRVUZaTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVVelJpeEpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NUVUZCUVN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExEQkRRVUZGTEZkQlFWY3NSVUZCUnl4RFFVRkRPMWxCUTNwRExFOUJRVThzUzBGQlN5eEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03WjBKQlEyNURMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE1VUXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRlRVE3VVVGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUlN4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTzFsQlF6TkVMRWxCUVVrc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJUdG5Ra0ZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJ5eERRVUZETzJkQ1FVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yOUNRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNoRU8xTkJRMFk3VVVGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1dVRkRMME1zU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMmRDUVVNMVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzaEVMRTlCUVU4c1MwRkJTeXhKUVVGSkxHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN2IwSkJRMjVETEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRNVVFzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEZUVRN1UwRkRSanRSUVVWRUxFbEJRVWtzUTBGQlFTeE5RVUZCTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc01FTkJRVVVzVjBGQlZ5eEZRVUZGTEV0QlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRek5ETEVsQlFVa3NUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHRuUWtGREwwTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRk8yOUNRVU0xUXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNoRUxFOUJRVThzUzBGQlN5eEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03ZDBKQlEyNURMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenQzUWtGRE1VUXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJRM2hFTzJGQlEwWTdVMEZEUmp0UlFVVkVMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEZsQlFWa3NSVUZCUlN4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE9VUXNRMEZCUXpzN1FVRndUR1VzYTBKQlFVOHNSMEZCVnl4WlFVRlpMRU5CUVVNN1FVRkZMMElzYlVOQlFYZENMRWRCUVZjc05rSkJRVFpDTEVOQlFVTTdRVUZGTVVVc2VVSkJRV01zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJRenRCUVVVM1FpeG5Ra0ZCU3l4SFFVRnhRanRKUVVOMFF5eEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc1VVRkJVVHRKUVVOaUxFZEJRVWNzUlVGQlJTeGxRVUZsTzBsQlEzQkNMRWRCUVVjc1JVRkJSU3hYUVVGWE8wbEJRMmhDTEVkQlFVY3NSVUZCUlN4bFFVRmxPMGxCUTNCQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hsUVVGbE8wbEJRM0JDTEVkQlFVY3NSVUZCUlN4VFFVRlRPMGxCUTJRc1IwRkJSeXhGUVVGRkxGRkJRVkU3U1VGRFlpeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hYUVVGWE8wbEJRMmhDTEVkQlFVY3NSVUZCUlN4VlFVRlZPMGxCUTJZc1IwRkJSeXhGUVVGRkxGRkJRVkU3U1VGRFlpeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hYUVVGWE8wTkJRMnBDTEVOQlFVTTdRVUZGV1N4dFFrRkJVU3hIUVVGeFFqdEpRVU42UXl4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeHpRa0ZCYzBJN1NVRkRNMElzUjBGQlJ5eEZRVUZGTERKQ1FVRXlRanRKUVVOb1F5eEhRVUZITEVWQlFVVXNZMEZCWXp0SlFVTnVRaXhIUVVGSExFVkJRVVVzZVVKQlFYbENPMGxCUXpsQ0xFZEJRVWNzUlVGQlJTeDVRa0ZCZVVJN1NVRkRPVUlzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNkMEpCUVhkQ08wbEJRemRDTEVkQlFVY3NSVUZCUlN4M1FrRkJkMEk3U1VGRE4wSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBsQlEzUkNMRWRCUVVjc1JVRkJSU3d3UWtGQk1FSTdTVUZETDBJc1IwRkJSeXhGUVVGRkxIZENRVUYzUWp0SlFVTTNRaXhIUVVGSExFVkJRVVVzYlVKQlFXMUNPMGxCUTNoQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanRKUVVOMFFpeEhRVUZITEVWQlFVVXNiME5CUVc5RE8wbEJRM3BETEVkQlFVY3NSVUZCUlN3d1FrRkJNRUk3U1VGREwwSXNSMEZCUnl4RlFVRkZMR2RDUVVGblFqdEpRVU55UWl4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBOQlEzWkNMRU5CUVVNN1FVRkZXU3cwUWtGQmFVSXNSMEZCY1VJN1NVRkRiRVFzUjBGQlJ5eEZRVUZGTEV0QlFVczdTVUZEVml4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBsQlEzUkNMRWRCUVVjc1JVRkJSU3h6UWtGQmMwSTdTVUZETTBJc1IwRkJSeXhGUVVGRkxGVkJRVlU3U1VGRFppeEhRVUZITEVWQlFVVXNiMEpCUVc5Q08wbEJRM3BDTEVkQlFVY3NSVUZCUlN4eFFrRkJjVUk3U1VGRE1VSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2JVSkJRVzFDTzBsQlEzaENMRWRCUVVjc1JVRkJSU3h4UWtGQmNVSTdTVUZETVVJc1IwRkJSeXhGUVVGRkxGbEJRVms3U1VGRGFrSXNSMEZCUnl4RlFVRkZMR05CUVdNN1NVRkRia0lzUjBGQlJ5eEZRVUZGTEhGQ1FVRnhRanRKUVVNeFFpeEhRVUZITEVWQlFVVXNiVUpCUVcxQ08wbEJRM2hDTEVkQlFVY3NSVUZCUlN4blFrRkJaMEk3U1VGRGNrSXNSMEZCUnl4RlFVRkZMRmxCUVZrN1NVRkRha0lzUjBGQlJ5eEZRVUZGTEdGQlFXRTdTVUZEYkVJc1IwRkJSeXhGUVVGRkxDdENRVUVyUWp0SlFVTndReXhIUVVGSExFVkJRVVVzY1VKQlFYRkNPMGxCUXpGQ0xFZEJRVWNzUlVGQlJTeFhRVUZYTzBsQlEyaENMRWRCUVVjc1JVRkJSU3haUVVGWk8wTkJRMnhDTEVOQlFVTTdRVUZGUmp0SFFVTkhPMEZCUTFjc2MwSkJRVmNzUjBGQmNVSTdTVUZETlVNc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0RFFVTllMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCRVJ5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaR2NuTzF4dVhHNXBiWEJ2Y25RZ2UxTjBjbWx1WjBScFkzUnBiMjVoY25sOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdVMlZ4VUdGc1pYUjBaU3dnVTJWeFVHRnNaWFIwWlVKaGMyVjlJR1p5YjIwZ0p5NHZjMlZ4TFhCaGJHVjBkR1Z6Snp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsY3lCbGVIUmxibVJ6SUZObGNWQmhiR1YwZEdWQ1lYTmxJSHRjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nYkdWemF6b2dVMlZ4VUdGc1pYUjBaVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRDQk1aWE5yS0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxteGxjMnNnUFQwOUlIWnZhV1FnTUNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVzWlhOcklEMGdkR2hwY3k1dFlXdGxVR0ZzWlhSMFpTaGJYRzRnSUNBZ0lDQWdJRnRiSjBjbkxDQW5RU2NzSUNkVEp5d2dKMVFuWFN3Z0oyOXlZVzVuWlNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRESnl3Z0oxWW5MQ0FuU1Njc0lDZE1KeXdnSjFBbkxDQW5SaWNzSUNkWkp5d2dKMDBuTENBblZ5ZGRMQ0FuWVd4c1gyZHlaV1Z1SjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMDRuTENBblVTY3NJQ2RJSjEwc0lDZHRZV2RsYm5SaEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjBRbkxDQW5SU2RkTENBbmNtVmtKMTBzWEc0Z0lDQWdJQ0FnSUZ0Ykowc25MQ0FuVWlkZExDQW5ZV3hzWDJKc2RXVW5YU3hjYmlBZ0lDQWdJRjBzSUdaaGJITmxMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVzWlhOck8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1ozSnZhMGR5YjNWd2N6b2dVMlZ4VUdGc1pYUjBaVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRDQkhjbTlyUjNKdmRYQnpLQ2s2SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1keWIydEhjbTkxY0hNZ1BUMDlJSFp2YVdRZ01Da2dlMXh1SUNBZ0lDQWdkR2hwY3k1bmNtOXJSM0p2ZFhCeklEMGdkR2hwY3k1dFlXdGxVR0ZzWlhSMFpTaGJYRzRnSUNBZ0lDQWdJRnRiSjBNbkxDQW5WU2RkTENBbmVXVnNiRzkzSjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMGNuTENBblVDZGRMQ0FuY21Wa0oxMHNYRzRnSUNBZ0lDQWdJRnRiSjBFbkxDQW5WaWNzSUNkSkp5d2dKMHduTENBblRTY3NJQ2RHSnl3Z0oxa25MQ0FuVnlkZExDQW5ZV3hzWDJkeVpXVnVKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkoxSW5MQ0FuU0Njc0lDZExKMTBzSUNkc2FXZG9kRjlpYkhWbEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjBRbkxDQW5SU2RkTENBblpHRnlhMTlpYkhWbEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjFNbkxDQW5WQ2NzSUNkT0p5d2dKMUVuWFN3Z0oyOXlZVzVuWlNkZExGeHVJQ0FnSUNBZ1hTd2dabUZzYzJVc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtZHliMnRIY205MWNITTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5QnlZWE5OYjJ3NklGTmxjVkJoYkdWMGRHVTdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhRZ1VtRnpUVzlzS0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuSmhjMDF2YkNBOVBUMGdkbTlwWkNBd0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5KaGMwMXZiQ0E5SUc1bGR5QkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTW9lMXh1SUNBZ0lDQWdJQ0F2THlCb2RIUndPaTh2WVdOalpYTXVaVzV6TFd4NWIyNHVabkl2WW1sdmRHbGpMM0poYzNSdmNDOW9aV3h3TDJOdmJHOTFjaTVvZEcxY2JpQWdJQ0FnSUNBZ0owUW5PaUFuSTBVMk1FRXdRU2NzSUM4dklHRnpjQ3dnWVhOd1lYSjBhV01nWVdOcFpDd2dZWE53WEc0Z0lDQWdJQ0FnSUNkRkp6b2dKeU5GTmpCQk1FRW5MQ0F2THlCbmJIVXNJR2RzZFhSaGJXbGpJR0ZqYVdSY2JpQWdJQ0FnSUNBZ0owTW5PaUFuSTBVMlJUWXdNQ2NzSUM4dklHTjVjeXdnWTNsemRHVnBibVZjYmlBZ0lDQWdJQ0FnSjAwbk9pQW5JMFUyUlRZd01DY3NJQzh2SUcxbGRDd2diV1YwYUdsdmJtbHVaVnh1SUNBZ0lDQWdJQ0FuU3ljNklDY2pNVFExUVVaR0p5d2dMeThnYkhsekxDQnNlWE5wYm1WY2JpQWdJQ0FnSUNBZ0oxSW5PaUFuSXpFME5VRkdSaWNzSUM4dklHRnlaeXdnWVhKbmFXNXBibVZjYmlBZ0lDQWdJQ0FnSjFNbk9pQW5JMFpCT1RZd01DY3NJQzh2SUhObGNpd2djMlZ5YVc1bFhHNGdJQ0FnSUNBZ0lDZFVKem9nSnlOR1FUazJNREFuTENBdkx5QjBhSElzSUhSb2NtVnZibWx1WlZ4dUlDQWdJQ0FnSUNBblJpYzZJQ2NqTXpJek1rRkJKeXdnTHk4Z2NHaGxMQ0J3YUdWdWVXeGhiR0Z1YVc1bFhHNGdJQ0FnSUNBZ0lDZFpKem9nSnlNek1qTXlRVUVuTENBdkx5QjBlWElzSUhSNWNtOXphVzVsWEc0Z0lDQWdJQ0FnSUNkT0p6b2dKeU13TUVSRFJFTW5MQ0F2THlCaGMyNHNJR0Z6Y0dGeVlXZHBibVZjYmlBZ0lDQWdJQ0FnSjFFbk9pQW5JekF3UkVORVF5Y3NJQzh2SUdkc2Jpd2daMngxZEdGdGFXNWxYRzRnSUNBZ0lDQWdJQ2RISnpvZ0p5TkZRa1ZDUlVJbkxDQXZMeUJuYkhrc0lHZHNlV05wYm1WY2JpQWdJQ0FnSUNBZ0owd25PaUFuSXpCR09ESXdSaWNzSUM4dklHeGxkU3dnYkdWMVkybHVaVnh1SUNBZ0lDQWdJQ0FuVmljNklDY2pNRVk0TWpCR0p5d2dMeThnZG1Gc0xDQjJZV3hwYm1WY2JpQWdJQ0FnSUNBZ0owa25PaUFuSXpCR09ESXdSaWNzSUM4dklHbHNaU3dnYVhOdmJHVjFZMmx1WlZ4dUlDQWdJQ0FnSUNBblFTYzZJQ2NqUXpoRE9FTTRKeXdnTHk4Z1lXeGhMQ0JoYkdGdWFXNWxYRzRnSUNBZ0lDQWdJQ2RYSnpvZ0p5TkNORFZCUWpRbkxDQXZMeUIwY25Bc0lIUnllWEIwYjNCb1lXNWNiaUFnSUNBZ0lDQWdKMGduT2lBbkl6Z3lPREpFTWljc0lDOHZJR2hwY3l3Z2FHbHpkR2xrYVc1bFhHNGdJQ0FnSUNBZ0lDZFFKem9nSnlORVF6azJPREluTENBdkx5QndjbThzSUhCeWIyeHBibVZjYmlBZ0lDQWdJQ0FnSjI5MGFHVnljeWM2SUNjalFrVkJNRFpGSnl4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1eVlYTk5iMnc3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1VnWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnY21WelRTQTlJRzBnYVc0Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxtRmhVM2x1YjI1NWJYTWdQeUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11WVdGVGVXNXZibmx0YzF0dFhTQTZJRzA3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpJRDBnYzNWd1pYSXVaMlYwS0hKbGMwMHBPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1QyNXNlU0J6YjIxbElHOW1JSFJvWlNCemVXNXZibmx0Y3k0Z1ZHaGxjMlVnZDJWeVpTQnZZblJoYVc1bFpDQm1jbTl0SUhSb1pTQmpiSFZ6ZEdWeVpXUWdiMnhwWjI5d1pYQjBhV1JsSUdSaGRHRnpaWFF1SUNvdlhHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHRmhVM2x1YjI1NWJYTTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlJRDBnZTF4dUlDQWdJQ2ROWlU1c1pTYzZJQ2RNSnl3Z0x5OGdUbXhsSUMwZ2JtOXliR1YxWTJsdVpWeHVJQ0FnSUNkTlpVRW5PaUFuUVNjc1hHNGdJQ0FnSjAxbFJ5YzZJQ2RISnl4Y2JpQWdJQ0FuVFdWR0p6b2dKMFluTEZ4dUlDQjlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nUVcxcGJtOWhZMmxrY3lCN1hHNGdJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQlRaVzFVZVhCbE9pQnpkSEpwYm1jZ1BTQW5RVzFwYm05aFkybGtjeWM3WEc1Y2JpQWdjM1JoZEdsaklISmxZV1J2Ym14NUlGTmxiVlI1Y0dWTmRXeDBhWEJzWlVGc2FXZHViV1Z1ZERvZ2MzUnlhVzVuSUQwZ0owRnRhVzV2WVdOcFpITk5kV3gwYVhCc1pVRnNhV2R1YldWdWRDYzdYRzVjYmlBZ2MzUmhkR2xqSUhWdVpHVm1hVzVsWkVOdmJHOXlJRDBnSjNKbllpZ3hNREFzTVRBd0xERXdNQ2tuTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1RtRnRaWE02SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCN1hHNGdJQ0FnSjBjbk9pQW5SMng1WTJsdVpTY3NYRzRnSUNBZ0owd25PaUFuVEdWMVkybHVaU2NzWEc0Z0lDQWdKMWtuT2lBblZIbHliM05wYm1VbkxGeHVJQ0FnSUNkVEp6b2dKMU5sY21sdVpTY3NYRzRnSUNBZ0owVW5PaUFuUjJ4MWRHRnRhV01nWVdOcFpDY3NYRzRnSUNBZ0oxRW5PaUFuUjJ4MWRHRnRhVzVsSnl4Y2JpQWdJQ0FuUkNjNklDZEJjM0JoY25ScFl5QmhZMmxrSnl4Y2JpQWdJQ0FuVGljNklDZEJjM0JoY21GbmFXNWxKeXhjYmlBZ0lDQW5SaWM2SUNkUWFHVnVlV3hoYkdGdWFXNWxKeXhjYmlBZ0lDQW5RU2M2SUNkQmJHRnVhVzVsSnl4Y2JpQWdJQ0FuU3ljNklDZE1lWE5wYm1VbkxGeHVJQ0FnSUNkU0p6b2dKMEZ5WjJsdWFXNWxKeXhjYmlBZ0lDQW5TQ2M2SUNkSWFYTjBhV1JwYm1VbkxGeHVJQ0FnSUNkREp6b2dKME41YzNSbGFXNWxKeXhjYmlBZ0lDQW5WaWM2SUNkV1lXeHBibVVuTEZ4dUlDQWdJQ2RRSnpvZ0oxQnliMnhwYm1VbkxGeHVJQ0FnSUNkWEp6b2dKMVJ5ZVhCMGIzQm9ZVzRuTEZ4dUlDQWdJQ2RKSnpvZ0owbHpiMnhsZFdOcGJtVW5MRnh1SUNBZ0lDZE5Kem9nSjAxbGRHaHBiMjVwYm1VbkxGeHVJQ0FnSUNkVUp6b2dKMVJvY21WdmJtbHVaU2NzWEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJCUVZOdGFXeGxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUnljNklDZE9RME1vUFU4cFR5Y3NYRzRnSUNBZ0owd25PaUFuVGx0RFFFaGRLRU5ES0VNcFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkWkp6b2dKMDVES0VORE1UMURRejFES0U4cFF6MURNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZFRKem9nSjA1REtFTlBLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owVW5PaUFuVGx0RFFFQklYU2hEUTBNb1R5azlUeWxES0QxUEtVOG5MRnh1SUNBZ0lDZFJKem9nSjA1YlEwQkFTRjBvUTBOREtFNHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SQ2M2SUNkT1cwTkFRRWhkS0VOREtFOHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5UaWM2SUNkT1cwTkFRRWhkS0VOREtFNHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SaWM2SUNkT1F5aERRekU5UTBNOVEwTTlRekVwUXlnOVR5bFBKeXhjYmlBZ0lDQW5RU2M2SUNkT1cwTkFTRjBvUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RMSnpvZ0owNURLRU5EUTBOT0tVTW9QVThwVHljc1hHNGdJQ0FnSjFJbk9pQW5UbHREUUVoZEtFTkRRMDVES0QxT0tVTXBReWc5VHlsUEp5eGNiaUFnSUNBblNDYzZJQ2RPUXloRFF6RTlRMDQ5UTF0T1hURXBReWc5VHlsUEp5eGNiaUFnSUNBblF5YzZJQ2RPVzBOQVFFaGRLRU5US1VNb1BVOHBUeWNzWEc0Z0lDQWdKMVluT2lBblRrTW9ReWhES1VNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVUNjNklDZE9LRU5EUXpFcFF6RkRLRDFQS1U4bkxGeHVJQ0FnSUNkWEp6b2dKMDViUTBCQVNGMG9RMk14WXpKalkyTmpZekp1S0Z0SVhTbGpNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZEpKem9nSjA1YlEwQklYU2hiUTBCSVhTaERLVU5ES1VNb1BVOHBUeWNzWEc0Z0lDQWdKMDBuT2lBblRrTW9RME5UUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RVSnpvZ0owNURLRU1vVHlsREtVTW9QVThwVHljc1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCQlFWTnRhV3hsYzFSeWRXNWpZWFJsWkRvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2NxUXlvbkxGeHVJQ0FnSUNkTUp6b2dKME5ES0VNcFExdERRRWhkS0NvcEtpY3NYRzRnSUNBZ0oxa25PaUFuUXpFOVEwTW9QVU5EUFVNeFEwTW9LaWtxS1U4bkxGeHVJQ0FnSUNkVEp6b2dKMDlEUXlncUtVTXFKeXhjYmlBZ0lDQW5SU2M2SUNjcVcwTkFRRWhkS0VORFF5aFBLVDFQS1NvbkxGeHVJQ0FnSUNkUkp6b2dKeXBPVzBOQVFFaGRLRU5EUXloT0tUMVBLU29uTEZ4dUlDQWdJQ2RFSnpvZ0p5cGJRMEJBU0Ywb1EwTW9UeWs5VHlrcUp5eGNiaUFnSUNBblRpYzZJQ2NxVzBOQVFFaGRLRU5ES0U0cFBVOHBLaWNzWEc0Z0lDQWdKMFluT2lBblF6RTlRME05UXloRFBVTXhLVU5ES0NvcEtpY3NYRzRnSUNBZ0owRW5PaUFuUTF0RFFFaGRLQ29wS2ljc1hHNGdJQ0FnSjBzbk9pQW5ReWhEUTA0cFEwTW9LaWtxSnl4Y2JpQWdJQ0FuVWljNklDY3FXME5BU0Ywb1EwTkRUa01vUFU0cFF5a3FKeXhjYmlBZ0lDQW5TQ2M2SUNkRE1UMURLRTVEUFU0eEtVTkRLQ29wS2ljc1hHNGdJQ0FnSjBNbk9pQW5ReWhiUTBCQVNGMG9LaWtxS1ZNbkxGeHVJQ0FnSUNkV0p6b2dKME5ES0VNcFF5Z3FLU29uTEZ4dUlDQWdJQ2RRSnpvZ0owTXhRME5PS0NvcFF6RXFKeXhjYmlBZ0lDQW5WeWM2SUNjcVcwTkFRRWhkS0VOak1XTXlZMk5qWTJNeWJpaGJTRjBwWXpFcEtpY3NYRzRnSUNBZ0owa25PaUFuUTBOYlEwQklYU2hES1Z0RFFFaGRLQ29wS2ljc1hHNGdJQ0FnSjAwbk9pQW5RMU5EUTBNb0tpa3FKeXhjYmlBZ0lDQW5WQ2M2SUNkRFF5aFBLVU1vS2lrcUp5eGNiaUFnZlR0Y2JseHVJQ0F2S2lvZ1ZFOUVUem9nUm5Wc2JEOWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1FVRkdkV3hzVG1GdFpYTTZJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3WEc0Z0lDQWdKMEZzWVNjNklDZEJKeXhjYmlBZ0lDQW5RWEpuSnpvZ0oxSW5MRnh1SUNBZ0lDZEJjMjRuT2lBblRpY3NYRzRnSUNBZ0owRnpjQ2M2SUNkRUp5eGNiaUFnSUNBblEzbHpKem9nSjBNbkxGeHVJQ0FnSUNkSGJHNG5PaUFuVVNjc1hHNGdJQ0FnSjBkc2RTYzZJQ2RGSnl4Y2JpQWdJQ0FuUjJ4NUp6b2dKMGNuTEZ4dUlDQWdJQ2RJYVhNbk9pQW5TQ2NzWEc0Z0lDQWdKMGxzWlNjNklDZEpKeXhjYmlBZ0lDQW5UR1YxSnpvZ0owd25MRnh1SUNBZ0lDZE1lWE1uT2lBblN5Y3NYRzRnSUNBZ0owMWxkQ2M2SUNkTkp5eGNiaUFnSUNBblVHaGxKem9nSjBZbkxGeHVJQ0FnSUNkUWNtOG5PaUFuVUNjc1hHNGdJQ0FnSjFObGNpYzZJQ2RUSnl4Y2JpQWdJQ0FuVkdoeUp6b2dKMVFuTEZ4dUlDQWdJQ2RVY25Bbk9pQW5WeWNzWEc0Z0lDQWdKMVI1Y2ljNklDZFpKeXhjYmlBZ0lDQW5WbUZzSnpvZ0oxWW5MRnh1SUNCOU8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwVUdGc1pYUjBaU2h6WTJobGJXVTZJSE4wY21sdVp5QTlJQ2RuY205ckp5azZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJSE4zYVhSamFDQW9jMk5vWlcxbEtTQjdYRzRnSUNBZ1kyRnpaU0FuWjNKdmF5YzZYRzRnSUNBZ0lDQnlaWFIxY200Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxrZHliMnRIY205MWNITTdYRzRnSUNBZ1kyRnpaU0FuYkdWemF5YzZYRzRnSUNBZ0lDQnlaWFIxY200Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxreGxjMnM3WEc0Z0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1EyaGxiVkJoYkdWMGRHVTZJSE5qYUdWdFpTQmNYR0FrZTNOamFHVnRaWDFjWEdBZ1pHOWxjeUJ1YjNRZ1pYaHBjM1JnS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCa2FYWnBaR1ZrSUdGdGFXNXZJR0ZqYVdRZ2QybDBhQ0JwZEhNZ1kyOXVkR1Z1ZENCcGJpQjBhR1VnWW5KaFkydGxkQ3dnYVdZZ2RHaGxJR052Ym5SbGJuUWdhWE1nYm5WdFltVnlMQ0IwYUdWdUlHbDBjeUJ2YldsMGRHVmtYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JqSUhKaGR5QmhiV2x1YjF4dUlDQWdLaUJBY21WMGRYSnVJSHRiYzNSeWFXNW5MQ0J6ZEhKcGJtZGRmU0J2ZFhSbGNpQmhibVFnYVc1dVpYSWdZMjl1ZEdWdWRGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUkpibTVsY2s5MWRHVnlLR002SUhOMGNtbHVaeWs2SUZ0emRISnBibWNzSUhOMGNtbHVaMTBnZTF4dUlDQWdJR3hsZENCcGMwbHVibVZ5SUQwZ01EdGNiaUFnSUNCc1pYUWdhVzV1WlhJZ1BTQW5KenRjYmlBZ0lDQnNaWFFnYjNWMFpYSWdQU0FuSnp0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyaGhjaUJ2WmlCaktTQjdYRzRnSUNBZ0lDQnBaaUFvWTJoaGNpQTlQU0FuS0NjcFhHNGdJQ0FnSUNBZ0lHbHpTVzV1WlhJckt6dGNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tHTm9ZWElnUFQwZ0p5a25LVnh1SUNBZ0lDQWdJQ0JwYzBsdWJtVnlMUzA3WEc0Z0lDQWdJQ0JsYkhObElHbG1JQ2hwYzBsdWJtVnlLVnh1SUNBZ0lDQWdJQ0JwYm01bGNpQXJQU0JqYUdGeU8xeHVJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0J2ZFhSbGNpQXJQU0JqYUdGeU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUFoYVhOT1lVNG9jR0Z5YzJWSmJuUW9hVzV1WlhJcEtTQS9JRnR2ZFhSbGNpd2dKeWRkSURvZ1cyOTFkR1Z5TENCcGJtNWxjbDA3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEVOdmJHOXlRVUZRYVhadmRDaHRiMjV2YldWeU9pQnpkSEpwYm1jZ1BTQW5KeXdnYzJOb1pXMWxPaUFuWjNKdmF5Y2dQU0FuWjNKdmF5Y3BPaUJiYzNSeWFXNW5MQ0J6ZEhKcGJtY3NJSE4wY21sdVp5d2diblZ0WW1WeVhTQjdYRzRnSUNBZ0x5OWpiMjV6ZENCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEMGdRVUZRWVd4bGRIUmxjeTVIY205clIzSnZkWEJ6S0NrN1hHNGdJQ0FnWTI5dWMzUWdZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaU0E5SUhSb2FYTXVaMlYwVUdGc1pYUjBaU2h6WTJobGJXVXBPMXh1SUNBZ0lHeGxkQ0JiYjNWMFpYSk5iMjV2YldWeUxDQnBibTVsY2sxdmJtOXRaWEpkSUQwZ2RHaHBjeTVuWlhSSmJtNWxjazkxZEdWeUtHMXZibTl0WlhJcE8xeHVJQ0FnSUc5MWRHVnlUVzl1YjIxbGNpQTlJQ2h2ZFhSbGNrMXZibTl0WlhJdWJHVnVaM1JvSUQ0Z05pQS9JR0FrZTI5MWRHVnlUVzl1YjIxbGNpNXpiR2xqWlNnd0xDQXpLWDB1TGk1Z0lEb2diM1YwWlhKTmIyNXZiV1Z5S1R0Y2JpQWdJQ0JwYm01bGNrMXZibTl0WlhJZ1BTQW9hVzV1WlhKTmIyNXZiV1Z5TG14bGJtZDBhQ0ErSURZZ1B5QmdKSHRwYm01bGNrMXZibTl0WlhJdWMyeHBZMlVvTUN3Z015bDlMaTR1WUNBNklHbHVibVZ5VFc5dWIyMWxjaWs3WEc1Y2JpQWdJQ0JwWmlBb2JXOXViMjFsY2k1c1pXNW5kR2dnUFQwZ01TQjhmQ0J0YjI1dmJXVnlXekZkSUQwOUlDY29KeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZVzFwYm04Z1BTQnRiMjV2YldWeVd6QmRQeTUwYjFWd2NHVnlRMkZ6WlNncElUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCaGJXbHVieUJwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEOWNiaUFnSUNBZ0lDQWdXMk5vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlV1WjJWMEtHRnRhVzV2S1N3Z1lXMXBibThzSUdsdWJtVnlUVzl1YjIxbGNpd2dNVjBnT2x4dUlDQWdJQ0FnSUNCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJREZkTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodGIyNXZiV1Z5V3pCZElEMDlJQ2RrSnlBbUppQnRiMjV2YldWeVd6RmRJU0JwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ0lDQnBaaUFvYlc5dWIyMWxjaTVzWlc1bmRHZ2dQVDBnTWlCOGZDQnRiMjV2YldWeVd6SmRJRDA5SUNjb0p5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmhiV2x1YnlBOUlHMXZibTl0WlhKYk1WMC9MblJ2VlhCd1pYSkRZWE5sS0NraE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXMXBibThnYVc0Z1kyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTQS9YRzRnSUNBZ0lDQWdJQ0FnVzJOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVdVoyVjBLR0Z0YVc1dktTd2dZVzFwYm04c0lHbHVibVZ5VFc5dWIyMWxjaXdnTWwwZ09seHVJQ0FnSUNBZ0lDQWdJRnQwYUdsekxuVnVaR1ZtYVc1bFpFTnZiRzl5TENCdmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2l3Z01sMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREFzSURNcElHbHVJSFJvYVhNdVFVRkdkV3hzVG1GdFpYTXBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeklIeDhJRzF2Ym05dFpYSmJNMTBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0Z0YVc1dklEMGdkR2hwY3k1QlFVWjFiR3hPWVcxbGMxdHRiMjV2YldWeUxuTjFZbk4wY21sdVp5Z3dMQ0F6S1YwN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJXbHVieUJwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEOWNiaUFnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F6WFNBNlhHNGdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBelhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iVzl1YjIxbGNsc3dYVDh1ZEc5TWIzZGxja05oYzJVb0tTQTlQU0J0YjI1dmJXVnlXekJkS1NCN1hHNGdJQ0FnSUNCcFppQW9iVzl1YjIxbGNpNXpkV0p6ZEhKcGJtY29NU3dnTXlrZ2FXNGdkR2hwY3k1QlFVWjFiR3hPWVcxbGN5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXOXViMjFsY2k1c1pXNW5kR2dnUFQwZ05DQjhmQ0J0YjI1dmJXVnlXelJkSUQwOUlDY29KeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdGdGFXNXZJRDBnZEdocGN5NUJRVVoxYkd4T1lXMWxjMXR0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd4TENBektWMDdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z0YVc1dklHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUDF4dUlDQWdJQ0FnSUNBZ0lDQWdXMk5vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlV1WjJWMEtHRnRhVzV2S1N3Z1lXMXBibThzSUdsdWJtVnlUVzl1YjIxbGNpd2dORjBnT2x4dUlDQWdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBMFhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJREJkTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgQ2hyb21hdG9ncmFtKCkge1xuICAgICAgICBpZiAodGhpcy5jaHJvbWF0b2dyYW0gPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5jaHJvbWF0b2dyYW0gPSBuZXcgTnVjbGVvdGlkZXNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgJ0EnOiAnZ3JlZW4nLFxuICAgICAgICAgICAgICAgICdDJzogJ2JsdWUnLFxuICAgICAgICAgICAgICAgICdHJzogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAnVCc6ICdyZWQnLFxuICAgICAgICAgICAgICAgICdVJzogJ3JlZCcsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICdncmF5JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNocm9tYXRvZ3JhbTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXMge1xufVxuTnVjbGVvdGlkZXMuU2VtVHlwZSA9ICdOdWNsZW90aWRlcyc7XG5OdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnTnVjbGVvdGlkZXNNdWx0aXBsZUFsaWdubWVudCc7XG5OdWNsZW90aWRlcy5OYW1lcyA9IHtcbiAgICAnQSc6ICdBZGVuaW5lJyxcbiAgICAnQyc6ICdDeXRvc2luZScsXG4gICAgJ0cnOiAnR3VhbmluZScsXG4gICAgJ1QnOiAnVGh5bWluZScsXG4gICAgJ1UnOiAnVXJhY2lsJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liblZqYkdWdmRHbGtaWE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnVkV05zWlc5MGFXUmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGTFFTeFBRVUZQTEVWQlFXRXNZMEZCWXl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZGTVVRc1RVRkJUU3hQUVVGUExHMUNRVUZ2UWl4VFFVRlJMR05CUVdNN1NVRkhPVU1zVFVGQlRTeExRVUZMTEZsQlFWazdVVUZETlVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF6dG5Ra0ZETVVNc1IwRkJSeXhGUVVGRkxFOUJRVTg3WjBKQlExb3NSMEZCUnl4RlFVRkZMRTFCUVUwN1owSkJRMWdzUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFdEJRVXM3WjBKQlExWXNSMEZCUnl4RlFVRkZMRXRCUVVzN1owSkJRMVlzVVVGQlVTeEZRVUZGTEUxQlFVMDdZVUZEYWtJc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1NVRkRNMElzUTBGQlF6dERRVU5HTzBGQlJVUXNUVUZCVFN4UFFVRlBMRmRCUVZjN08wRkJRMDRzYlVKQlFVOHNSMEZCVnl4aFFVRmhMRU5CUVVNN1FVRkZhRU1zYjBOQlFYZENMRWRCUVZjc09FSkJRVGhDTEVOQlFVTTdRVUZGY0VVc2FVSkJRVXNzUjBGQmNVSTdTVUZEZEVNc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1VVRkJVVHREUVVOa0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZTFOMGNtbHVaMFJwWTNScGIyNWhjbmw5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1UyVnhVR0ZzWlhSMFpTd2dVMlZ4VUdGc1pYUjBaVUpoYzJWOUlHWnliMjBnSnk0dmMyVnhMWEJoYkdWMGRHVnpKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE1nWlhoMFpXNWtjeUJUWlhGUVlXeGxkSFJsUW1GelpTQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR05vY205dFlYUnZaM0poYlRvZ1UyVnhVR0ZzWlhSMFpUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZENCRGFISnZiV0YwYjJkeVlXMG9LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRJRDBnYm1WM0lFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTW9lMXh1SUNBZ0lDQWdJQ0FuUVNjNklDZG5jbVZsYmljc1hHNGdJQ0FnSUNBZ0lDZERKem9nSjJKc2RXVW5MRnh1SUNBZ0lDQWdJQ0FuUnljNklDZGliR0ZqYXljc0lDOHZJRzl5WVc1blpTQS9YRzRnSUNBZ0lDQWdJQ2RVSnpvZ0ozSmxaQ2NzWEc0Z0lDQWdJQ0FnSUNkVkp6b2dKM0psWkNjc1hHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5aM0poZVNjc1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5Qk9kV05zWlc5MGFXUmxjeUI3WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsT2lCemRISnBibWNnUFNBblRuVmpiR1Z2ZEdsa1pYTW5PMXh1WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUE5SUNkT2RXTnNaVzkwYVdSbGMwMTFiSFJwY0d4bFFXeHBaMjV0Wlc1MEp6dGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJRTVoYldWek9pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEJKem9nSjBGa1pXNXBibVVuTEZ4dUlDQWdJQ2RESnpvZ0owTjVkRzl6YVc1bEp5eGNiaUFnSUNBblJ5YzZJQ2RIZFdGdWFXNWxKeXhjYmlBZ0lDQW5WQ2M2SUNkVWFIbHRhVzVsSnl4Y2JpQWdJQ0FuVlNjNklDZFZjbUZqYVd3bkxGeHVJQ0I5TzF4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgbWFrZVBhbGV0dGUoZHQsIHNpbXBsaWZpZWQgPSBmYWxzZSwgUGFsZXR0ZVR5cGUgPSBTZXFQYWxldHRlQmFzZSkge1xuICAgICAgICBjb25zdCBwYWxldHRlID0ge307XG4gICAgICAgIGR0LmZvckVhY2goKGNwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYmpMaXN0ID0gY3BbMF07XG4gICAgICAgICAgICBjb25zdCBjb2xvdXIgPSBjcFsxXTtcbiAgICAgICAgICAgIG9iakxpc3QuZm9yRWFjaCgob2JqLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBwYWxldHRlW29ial0gPSB0aGlzLmNvbG91clBhbGV0dGVbY29sb3VyXVtzaW1wbGlmaWVkID8gMCA6IGluZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFsZXR0ZVR5cGUocGFsZXR0ZSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhbGV0dGUpIHtcbiAgICAgICAgdGhpcy5fcGFsZXR0ZSA9IHBhbGV0dGU7XG4gICAgfVxuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWxldHRlW21dO1xuICAgIH1cbn1cblNlcVBhbGV0dGVCYXNlLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuLyoqIFBhbGV0dGUgd2l0aCBzaGFkZXMgb2YgcHJpbWFyeSBjb2xvcnMgKi9cblNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUgPSB7XG4gICAgJ29yYW5nZSc6IFsncmdiKDI1NSwxODcsMTIwKScsICdyZ2IoMjQ1LDE2NywxMDApJywgJ3JnYigyMzUsMTM3LDcwKScsICdyZ2IoMjA1LCAxMTEsIDcxKSddLFxuICAgICdhbGxfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJywgJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJyxcbiAgICAgICAgJ3JnYigyNCwxMTAsNzkpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDE4MiwgMjIzLCAxMzgpJywgJ3JnYigxNTIsIDE5MywgMTM4KSddLFxuICAgICdhbGxfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTIyLCAxMDIsIDE4OSknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTQxLCAxMjQsIDIxNyknLFxuICAgICAgICAncmdiKDMxLCAxMjAsIDE1MCknXSxcbiAgICAnbWFnZW50YSc6IFsncmdiKDE2MiwxMDYsMTkyKScsICdyZ2IoMTk3LDE2NSwyMjQpJywgJ3JnYigyMDgsMTEzLDIxOCknXSxcbiAgICAncmVkJzogWydyZ2IoMjE0LDM5LDQwKScsICdyZ2IoMjU1LDE1MiwxNTApJ10sXG4gICAgJ3N0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigzMSwxMTksMTgwKSddLFxuICAgICdkYXJrX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdsaWdodF9ibHVlJzogWydyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTA4LCAyMTgsIDIyOSknLCAncmdiKDIzLDE5MCwyMjcpJ10sXG4gICAgJ2xpbGFjX2JsdWUnOiBbJ3JnYigxMjQsMTAyLDIxMSknLCAncmdiKDE0OSwxMzQsMjE3KScsICdyZ2IoOTcsIDgxLCAxNTApJ10sXG4gICAgJ2RhcmtfZ3JlZW4nOiBbJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJywgJ3JnYigyNCwxMTAsNzkpJ10sXG4gICAgJ2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdsaWdodF9ncmVlbic6IFsncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ3N0X2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigzOSwgMTc0LCA5NiknLCAncmdiKDc0LDE2MCw3NCknXSxcbiAgICAncGluayc6IFsncmdiKDI0NywxODIsMjEwKSddLFxuICAgICdicm93bic6IFsncmdiKDE0MCw4Niw3NSknLCAncmdiKDEwMiwgNjIsIDU0KSddLFxuICAgICdncmF5JzogWydyZ2IoMTI3LDEyNywxMjcpJywgJ3JnYigxOTksMTk5LDE5OSknLCAncmdiKDE5NiwxNTYsMTQ4KScsICdyZ2IoMjIyLCAyMjIsIDE4MCknXSxcbiAgICAneWVsbG93JzogWydyZ2IoMTg4LDE4OSwzNCknXSxcbiAgICAnd2hpdGUnOiBbJ3JnYigyMzAsMjMwLDIzMCknXSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4TFhCaGJHVjBkR1Z6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMlZ4TFhCaGJHVjBkR1Z6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFXbENRU3hOUVVGTkxFOUJRVThzWTBGQll6dEpRVEpDWml4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRWGRDTEVWQlEyNUVMRlZCUVZVc1IwRkJSeXhMUVVGTExFVkJRVVVzWTBGQmNVTXNZMEZCWXp0UlFVVjJSU3hOUVVGTkxFOUJRVThzUjBGQk9FSXNSVUZCUlN4RFFVRkRPMUZCUXpsRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSVHRaUVVOb1FpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGRFSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOc1JTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eEpRVUZKTEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOc1F5eERRVUZETzBsQlNVUXNXVUZCV1N4UFFVRm5RenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlJVMHNSMEZCUnl4RFFVRkRMRU5CUVZNN1VVRkRiRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRekZDTEVOQlFVTTdPMEZCYUVSaExEWkNRVUZqTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU03UVVGRmJFUXNORU5CUVRSRE8wRkJRemxDTERSQ1FVRmhMRWRCUVdkRE8wbEJRM3BFTEZGQlFWRXNSVUZCUlN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMRzFDUVVGdFFpeERRVUZETzBsQlF6RkdMRmRCUVZjc1JVRkJSU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFqdFJRVU53Unl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU51Uml4VlFVRlZMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMEk3VVVGREwwY3NiVUpCUVcxQ0xFTkJRVU03U1VGRGRFSXNVMEZCVXl4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRka1VzUzBGQlN5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkROME1zVTBGQlV5eEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2FVSkJRV2xDTEVOQlFVTTdTVUZEY2tVc1YwRkJWeXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTTdTVUZEY2tRc1dVRkJXU3hGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNN1NVRkRPVVlzV1VGQldTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkRkRVlzVDBGQlR5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkROME1zWVVGQllTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTVUZETDBVc1ZVRkJWU3hGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkRlRVlzVFVGQlRTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03U1VGRE5VSXNUMEZCVHl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGREwwTXNUVUZCVFN4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTVUZETVVZc1VVRkJVU3hGUVVGRkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1NVRkROMElzVDBGQlR5eEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03UTBGRE9VSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdkV2tnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDNWcEp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUM4dklGUm9aWEpsSUdGeVpTQjBiMjhnYlhWamFDQndjbTlpYkdWdElIZHBkR2dnYVc1a1pYaGxjaUJ3Y205d1pYSjBlU0JwYmlCMGVYQmxjMk55YVhCMExseHVJQ0F2THlBdktpcGNiaUFnTHk4Z0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMGdUVzl1YjIxbGNpQmphR0Z5WVdOMFpYSmNiaUFnTHk4Z0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkRiMnh2Y2x4dUlDQXZMeUFnS2k5Y2JpQWdMeThnVzIwNklITjBjbWx1WjEwNklITjBjbWx1Wnp0Y2JpQWdMeW9xSUUxdmJtOXRaWElnWTI5c2IzSmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUcwZ1RXOXViMjFsY2x4dUlDQWdLaTljYmlBZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaenRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZObGNWQmhiR1YwZEdWQ1lYTmxJR2x0Y0d4bGJXVnVkSE1nVTJWeFVHRnNaWFIwWlNCN1hHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2RXNWtaV1pwYm1Wa1EyOXNiM0lnUFNBbmNtZGlLREV3TUN3eE1EQXNNVEF3S1NjN1hHNWNiaUFnTHlvcUlGQmhiR1YwZEdVZ2QybDBhQ0J6YUdGa1pYTWdiMllnY0hKcGJXRnllU0JqYjJ4dmNuTWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJqYjJ4dmRYSlFZV3hsZEhSbE9pQjdJRnRyWlhrNklITjBjbWx1WjEwNklITjBjbWx1WjF0ZElIMGdQU0I3WEc0Z0lDQWdKMjl5WVc1blpTYzZJRnNuY21kaUtESTFOU3d4T0Rjc01USXdLU2NzSUNkeVoySW9NalExTERFMk55d3hNREFwSnl3Z0ozSm5ZaWd5TXpVc01UTTNMRGN3S1Njc0lDZHlaMklvTWpBMUxDQXhNVEVzSURjeEtTZGRMRnh1SUNBZ0lDZGhiR3hmWjNKbFpXNG5PaUJiSjNKbllpZzBOQ3d4TmpBc05EUXBKeXdnSjNKbllpZzNOQ3d4TmpBc056UXBKeXdnSjNKbllpZ3lNeXd4TURNc05UY3BKeXdnSjNKbllpZ3pNQ3d4TVRBc09UWXBKeXdnSjNKbllpZzJNQ3d4TXpFc09UVXBKeXhjYmlBZ0lDQWdJQ2R5WjJJb01qUXNNVEV3TERjNUtTY3NJQ2R5WjJJb01UVXlMREl5TXl3eE16Z3BKeXdnSjNKbllpZ3hPRElzSURJeU15d2dNVE00S1Njc0lDZHlaMklvTVRVeUxDQXhPVE1zSURFek9Da25YU3hjYmlBZ0lDQW5ZV3hzWDJKc2RXVW5PaUJiSjNKbllpZ3pNU3d4TVRrc01UZ3dLU2NzSUNkeVoySW9Nak1zTVRrd0xESXdOeWtuTENBbmNtZGlLREV5TWl3Z01UQXlMQ0F4T0RrcEp5d2dKM0puWWlneE5UZ3NNakU0TERJeU9Ta25MQ0FuY21kaUtERTBNU3dnTVRJMExDQXlNVGNwSnl4Y2JpQWdJQ0FnSUNkeVoySW9NekVzSURFeU1Dd2dNVFV3S1NkZExGeHVJQ0FnSUNkdFlXZGxiblJoSnpvZ1d5ZHlaMklvTVRZeUxERXdOaXd4T1RJcEp5d2dKM0puWWlneE9UY3NNVFkxTERJeU5Da25MQ0FuY21kaUtESXdPQ3d4TVRNc01qRTRLU2RkTEZ4dUlDQWdJQ2R5WldRbk9pQmJKM0puWWlneU1UUXNNemtzTkRBcEp5d2dKM0puWWlneU5UVXNNVFV5TERFMU1Da25YU3hjYmlBZ0lDQW5jM1JmWW14MVpTYzZJRnNuY21kaUtESXpMREU1TUN3eU1EY3BKeXdnSjNKbllpZ3hOVGdzTWpFNExESXlPU2tuTENBbmNtZGlLRE14TERFeE9Td3hPREFwSjEwc1hHNGdJQ0FnSjJSaGNtdGZZbXgxWlNjNklGc25jbWRpS0RNeExERXhPU3d4T0RBcEp5d2dKM0puWWlnek1Td2dNVEl3TENBeE5UQXBKMTBzWEc0Z0lDQWdKMnhwWjJoMFgySnNkV1VuT2lCYkozSm5ZaWd5TXl3eE9UQXNNakEzS1Njc0lDZHlaMklvTVRVNExESXhPQ3d5TWprcEp5d2dKM0puWWlneE1EZ3NJREl4T0N3Z01qSTVLU2NzSUNkeVoySW9Nak1zTVRrd0xESXlOeWtuWFN4Y2JpQWdJQ0FuYkdsc1lXTmZZbXgxWlNjNklGc25jbWRpS0RFeU5Dd3hNRElzTWpFeEtTY3NJQ2R5WjJJb01UUTVMREV6TkN3eU1UY3BKeXdnSjNKbllpZzVOeXdnT0RFc0lERTFNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOW5jbVZsYmljNklGc25jbWRpS0RJekxERXdNeXcxTnlrbkxDQW5jbWRpS0RNd0xERXhNQ3c1TmlrbkxDQW5jbWRpS0RZd0xERXpNU3c1TlNrbkxDQW5jbWRpS0RJMExERXhNQ3czT1NrblhTeGNiaUFnSUNBblozSmxaVzRuT2lCYkozSm5ZaWcwTkN3eE5qQXNORFFwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjJ4cFoyaDBYMmR5WldWdUp6b2dXeWR5WjJJb01UVXlMREl5TXl3eE16Z3BKeXdnSjNKbllpZ3hPRElzSURJeU15d2dNVE00S1Njc0lDZHlaMklvTVRVeUxDQXhPVE1zSURFek9Da25YU3hjYmlBZ0lDQW5jM1JmWjNKbFpXNG5PaUJiSjNKbllpZzBOQ3d4TmpBc05EUXBKeXdnSjNKbllpZ3hOVElzTWpJekxERXpPQ2tuTENBbmNtZGlLRE01TENBeE56UXNJRGsyS1Njc0lDZHlaMklvTnpRc01UWXdMRGMwS1NkZExGeHVJQ0FnSUNkd2FXNXJKem9nV3lkeVoySW9NalEzTERFNE1pd3lNVEFwSjEwc1hHNGdJQ0FnSjJKeWIzZHVKem9nV3lkeVoySW9NVFF3TERnMkxEYzFLU2NzSUNkeVoySW9NVEF5TENBMk1pd2dOVFFwSjEwc1hHNGdJQ0FnSjJkeVlYa25PaUJiSjNKbllpZ3hNamNzTVRJM0xERXlOeWtuTENBbmNtZGlLREU1T1N3eE9Ua3NNVGs1S1Njc0lDZHlaMklvTVRrMkxERTFOaXd4TkRncEp5d2dKM0puWWlneU1qSXNJREl5TWl3Z01UZ3dLU2RkTEZ4dUlDQWdJQ2Q1Wld4c2IzY25PaUJiSjNKbllpZ3hPRGdzTVRnNUxETTBLU2RkTEZ4dUlDQWdJQ2QzYUdsMFpTYzZJRnNuY21kaUtESXpNQ3d5TXpBc01qTXdLU2RkTEZ4dUlDQjlPMXh1WEc0Z0lIQnliM1JsWTNSbFpDQnpkR0YwYVdNZ2JXRnJaVkJoYkdWMGRHVW9aSFE2SUZ0emRISnBibWRiWFN3Z2MzUnlhVzVuWFZ0ZExGeHVJQ0FnSUhOcGJYQnNhV1pwWldRZ1BTQm1ZV3h6WlN3Z1VHRnNaWFIwWlZSNWNHVTZJSFI1Y0dWdlppQlRaWEZRWVd4bGRIUmxRbUZ6WlNBOUlGTmxjVkJoYkdWMGRHVkNZWE5sWEc0Z0lDa2dlMXh1SUNBZ0lHTnZibk4wSUhCaGJHVjBkR1U2SUhzZ1cydGxlVG9nYzNSeWFXNW5YVG9nYzNSeWFXNW5JSDBnUFNCN2ZUdGNiaUFnSUNCa2RDNW1iM0pGWVdOb0tDaGpjQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYjJKcVRHbHpkQ0E5SUdOd1d6QmRPMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyOXNiM1Z5SUQwZ1kzQmJNVjA3WEc0Z0lDQWdJQ0J2WW1wTWFYTjBMbVp2Y2tWaFkyZ29LRzlpYWl3Z2FXNWtLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lIQmhiR1YwZEdWYmIySnFYU0E5SUhSb2FYTXVZMjlzYjNWeVVHRnNaWFIwWlZ0amIyeHZkWEpkVzNOcGJYQnNhV1pwWldRZ1B5QXdJRG9nYVc1a1hUdGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVR0ZzWlhSMFpWUjVjR1VvY0dGc1pYUjBaU2s3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5d1lXeGxkSFJsT2lCN0lGdHRPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmVHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWh3WVd4bGRIUmxPaUI3SUZ0dE9pQnpkSEpwYm1kZE9pQnpkSEpwYm1jZ2ZTa2dlMXh1SUNBZ0lIUm9hWE11WDNCaGJHVjBkR1VnUFNCd1lXeGxkSFJsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDaHRPaUJ6ZEhKcGJtY3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl3WVd4bGRIUmxXMjFkTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuLyoqIG1ha2VzIHRoZSBjb2xvciBsZXNzIHdoaXRlLCBtYWtlcyB0aGUgdHJhbnNwYXJlbmN5IGVmZmVjdCBhbHdheXMgcGVyY2VwdGlibGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciB4IGNvb3JkaW5hdGUuXG4gKiAqL1xuZnVuY3Rpb24gY29ycmVjdENvbG9yKGNvbG9yKSB7XG4gICAgaWYgKGNvbG9yID09IG51bGwpXG4gICAgICAgIHJldHVybiAncmdiKDEwMCwxMDAsMTAwKSc7XG4gICAgY29uc3QgZGdDb2xvciA9IERHLkNvbG9yLmZyb21IdG1sKGNvbG9yKTtcbiAgICBjb25zdCBnID0gREcuQ29sb3IuZyhkZ0NvbG9yKTtcbiAgICBjb25zdCByID0gREcuQ29sb3IucihkZ0NvbG9yKTtcbiAgICBjb25zdCBiID0gREcuQ29sb3IuYihkZ0NvbG9yKTtcbiAgICAvLyBjYWxjdWxhdGUgZXVjbGlkZWFuIGRpc3RhbmNlIHRvIHdoaXRlXG4gICAgY29uc3QgZGlzdFRvQmxhY2sgPSBNYXRoLnNxcnQoTWF0aC5wb3coMCAtIHIsIDIpICsgTWF0aC5wb3coMCAtIGcsIDIpICsgTWF0aC5wb3coMCAtIGIsIDIpKTtcbiAgICAvLyBub3JtYWxpemUgdmVjdG9yIHIgZyBiXG4gICAgY29uc3Qgbm9ybVIgPSByIC8gZGlzdFRvQmxhY2s7XG4gICAgY29uc3Qgbm9ybUcgPSBnIC8gZGlzdFRvQmxhY2s7XG4gICAgY29uc3Qgbm9ybUIgPSBiIC8gZGlzdFRvQmxhY2s7XG4gICAgaWYgKGRpc3RUb0JsYWNrID4gMjEwKSB7XG4gICAgICAgIHJldHVybiBgcmdiKCR7bm9ybVIgKiAyMTB9LCR7bm9ybUcgKiAyMTB9LCR7bm9ybUIgKiAyMTB9KWA7XG4gICAgfVxuICAgIHJldHVybiBERy5Db2xvci50b1JnYihkZ0NvbG9yKTtcbn1cbmV4cG9ydCBjbGFzcyBTdHJpbmdVdGlscyB7XG4gICAgc3RhdGljIGhhc2hDb2RlKHMpIHtcbiAgICAgICAgbGV0IGhhc2ggPSAwO1xuICAgICAgICBpZiAocy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaHIgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgKyBjaHI7XG4gICAgICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYXNoO1xuICAgIH1cbn1cbmltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIFVua25vd25TZXFQYWxldHRlIHtcbn1cbmV4cG9ydCBjbGFzcyBHcmF5QWxsUGFsZXR0ZSBleHRlbmRzIFVua25vd25TZXFQYWxldHRlIHtcbiAgICBnZXQobSkge1xuICAgICAgICByZXR1cm4gJyM2NjY2NjYnO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVbmtub3duQ29sb3JQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIHN0YXRpYyBidWlsZFBhbGV0dGUoKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKFNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUpKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IFN0cmluZ1V0aWxzLmhhc2hDb2RlKG0pO1xuICAgICAgICBjb25zdCBwSSA9IGhhc2ggJSBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGUubGVuZ3RoO1xuICAgICAgICByZXR1cm4gY29ycmVjdENvbG9yKFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZVtwSV0pO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJSVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVVYwUXpzN1MwRkZTenRCUVVOTUxGTkJRVk1zV1VGQldTeERRVUZETEV0QlFXOUNPMGxCUTNoRExFbEJRVWtzUzBGQlN5eEpRVUZKTEVsQlFVazdVVUZEWml4UFFVRlBMR3RDUVVGclFpeERRVUZETzBsQlJUVkNMRTFCUVUwc1QwRkJUeXhIUVVGWExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRMnBFTEUxQlFVMHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpsQ0xFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlF6bENMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRemxDTEhkRFFVRjNRenRKUVVONFF5eE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkROVVlzZVVKQlFYbENPMGxCUTNwQ0xFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1NVRkRPVUlzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRmRCUVZjc1EwRkJRenRKUVVNNVFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRE8wbEJRemxDTEVsQlFVa3NWMEZCVnl4SFFVRkhMRWRCUVVjc1JVRkJSVHRSUVVOeVFpeFBRVUZQTEU5QlFVOHNTMEZCU3l4SFFVRkhMRWRCUVVjc1NVRkJTU3hMUVVGTExFZEJRVWNzUjBGQlJ5eEpRVUZKTEV0QlFVc3NSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJRenRMUVVNMVJEdEpRVU5FTEU5QlFVOHNSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEYWtNc1EwRkJRenRCUVVWRUxFMUJRVTBzVDBGQlR5eFhRVUZYTzBsQlEyWXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGVE8xRkJRemxDTEVsQlFVa3NTVUZCU1N4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJRenRaUVVOb1FpeFBRVUZQTEVsQlFVa3NRMEZCUXp0UlFVTmtMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzcERMRTFCUVUwc1IwRkJSeXhIUVVGWExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRjRU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUTJ4RExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl3eVFrRkJNa0k3VTBGRGRrTTdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03UTBGRFJqdEJRVVZFTEU5QlFVOHNSVUZCWVN4alFVRmpMRVZCUVVNc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVVXhSQ3hOUVVGTkxFOUJRV2RDTEdsQ1FVRnBRanREUVVWMFF6dEJRVVZFTEUxQlFVMHNUMEZCVHl4alFVRmxMRk5CUVZFc2FVSkJRV2xDTzBsQlF6VkRMRWRCUVVjc1EwRkJReXhEUVVGVE8xRkJRMnhDTEU5QlFVOHNVMEZCVXl4RFFVRkRPMGxCUTI1Q0xFTkJRVU03UTBGRFJqdEJRVWRFTEUxQlFVMHNUMEZCVHl4dFFrRkJiMElzVTBGQlVTeHBRa0ZCYVVJN1NVRkhhRVFzVFVGQlRTeERRVUZETEZsQlFWazdVVUZEZWtJc1RVRkJUU3hIUVVGSExFZEJRVWtzUlVGQlpTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zWTBGQll5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRVlzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlUwc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUVUZCVFN4SlFVRkpMRWRCUVZjc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTNReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnlSQ3hQUVVGUExGbEJRVmtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJSQ3hEUVVGRE96dEJRVmhoTERKQ1FVRlBMRWRCUVdFc2JVSkJRVzFDTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1FVRmpka1VzVFVGQlRTeFBRVUZQTEd0Q1FVRnRRaXhUUVVGUkxHTkJRV003U1VGSE4wTXNUVUZCVFN4TFFVRkxMRWxCUVVrN1VVRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMRXRCUVVzc1EwRkJRenRaUVVOMFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1kwRkJZeXhGUVVGRkxFTkJRVU03VVVGRGJrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZKVFN4TlFVRk5MRXRCUVVzc1MwRkJTenRSUVVOeVFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRXRCUVVzc1MwRkJTeXhEUVVGRE8xbEJRM1pDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3h0UWtGQmJVSXNSVUZCUlN4RFFVRkRPMUZCUTNwRExFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXp0SlFVTndRaXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc0dktpb2diV0ZyWlhNZ2RHaGxJR052Ykc5eUlHeGxjM01nZDJocGRHVXNJRzFoYTJWeklIUm9aU0IwY21GdWMzQmhjbVZ1WTNrZ1pXWm1aV04wSUdGc2QyRjVjeUJ3WlhKalpYQjBhV0pzWlZ4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTnZiRzl5SUhnZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUNvdlhHNW1kVzVqZEdsdmJpQmpiM0p5WldOMFEyOXNiM0lvWTI5c2IzSTZJSE4wY21sdVp5QjhJRzUxYkd3cE9pQnpkSEpwYm1jZ2UxeHVJQ0JwWmlBb1kyOXNiM0lnUFQwZ2JuVnNiQ2xjYmlBZ0lDQnlaWFIxY200Z0ozSm5ZaWd4TURBc01UQXdMREV3TUNrbk8xeHVYRzRnSUdOdmJuTjBJR1JuUTI5c2IzSTZJRzUxYldKbGNpQTlJRVJITGtOdmJHOXlMbVp5YjIxSWRHMXNLR052Ykc5eUtUdGNiaUFnWTI5dWMzUWdaeUE5SUVSSExrTnZiRzl5TG1jb1pHZERiMnh2Y2lrN1hHNGdJR052Ym5OMElISWdQU0JFUnk1RGIyeHZjaTV5S0dSblEyOXNiM0lwTzF4dUlDQmpiMjV6ZENCaUlEMGdSRWN1UTI5c2IzSXVZaWhrWjBOdmJHOXlLVHRjYmlBZ0x5OGdZMkZzWTNWc1lYUmxJR1YxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0IwYnlCM2FHbDBaVnh1SUNCamIyNXpkQ0JrYVhOMFZHOUNiR0ZqYXlBOUlFMWhkR2d1YzNGeWRDaE5ZWFJvTG5CdmR5Z3dJQzBnY2l3Z01pa2dLeUJOWVhSb0xuQnZkeWd3SUMwZ1p5d2dNaWtnS3lCTllYUm9MbkJ2ZHlnd0lDMGdZaXdnTWlrcE8xeHVJQ0F2THlCdWIzSnRZV3hwZW1VZ2RtVmpkRzl5SUhJZ1p5QmlYRzRnSUdOdmJuTjBJRzV2Y20xU0lEMGdjaUF2SUdScGMzUlViMEpzWVdOck8xeHVJQ0JqYjI1emRDQnViM0p0UnlBOUlHY2dMeUJrYVhOMFZHOUNiR0ZqYXp0Y2JpQWdZMjl1YzNRZ2JtOXliVUlnUFNCaUlDOGdaR2x6ZEZSdlFteGhZMnM3WEc0Z0lHbG1JQ2hrYVhOMFZHOUNiR0ZqYXlBK0lESXhNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmdjbWRpS0NSN2JtOXliVklnS2lBeU1UQjlMQ1I3Ym05eWJVY2dLaUF5TVRCOUxDUjdibTl5YlVJZ0tpQXlNVEI5S1dBN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUVSSExrTnZiRzl5TG5SdlVtZGlLR1JuUTI5c2IzSXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTNSeWFXNW5WWFJwYkhNZ2UxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHaGhjMmhEYjJSbEtITTZJSE4wY21sdVp5azZJRzUxYldKbGNpQjdYRzRnSUNBZ2JHVjBJR2hoYzJnNklHNTFiV0psY2lBOUlEQTdYRzRnSUNBZ2FXWWdLSE11YkdWdVozUm9JRDA5UFNBd0tWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdoaGMyZzdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FUb2diblZ0WW1WeUlEMGdNRHNnYVNBOElITXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR05vY2pvZ2JuVnRZbVZ5SUQwZ2N5NWphR0Z5UTI5a1pVRjBLR2twTzF4dUlDQWdJQ0FnYUdGemFDQTlJQ2dvYUdGemFDQThQQ0ExS1NBdElHaGhjMmdwSUNzZ1kyaHlPMXh1SUNBZ0lDQWdhR0Z6YUNCOFBTQXdPeUF2THlCRGIyNTJaWEowSUhSdklETXlZbWwwSUdsdWRHVm5aWEpjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdoaGMyZzdYRzRnSUgxY2JuMWNibHh1YVcxd2IzSjBJSHRUWlhGUVlXeGxkSFJsTENCVFpYRlFZV3hsZEhSbFFtRnpaWDBnWm5KdmJTQW5MaTl6WlhFdGNHRnNaWFIwWlhNbk8xeHVYRzVsZUhCdmNuUWdZV0p6ZEhKaFkzUWdZMnhoYzNNZ1ZXNXJibTkzYmxObGNWQmhiR1YwZEdVZ2FXMXdiR1Z0Wlc1MGN5QlRaWEZRWVd4bGRIUmxJSHRjYmlBZ2NIVmliR2xqSUdGaWMzUnlZV04wSUdkbGRDaHRPaUJ6ZEhKcGJtY3BPaUJ6ZEhKcGJtYzdYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJIY21GNVFXeHNVR0ZzWlhSMFpTQmxlSFJsYm1SeklGVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbElIdGNiaUFnY0hWaWJHbGpJR2RsZENodE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUhKbGRIVnliaUFuSXpZMk5qWTJOaWM3WEc0Z0lIMWNibjFjYmx4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlNCbGVIUmxibVJ6SUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCd1lXeGxkSFJsT2lCemRISnBibWRiWFNBOUlGVnVhMjV2ZDI1RGIyeHZjbEJoYkdWMGRHVXVZblZwYkdSUVlXeGxkSFJsS0NrN1hHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdZblZwYkdSUVlXeGxkSFJsS0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCamIyNXpkQ0J5WlhNZ1BTQW9XMTBnWVhNZ2MzUnlhVzVuVzEwcExtTnZibU5oZENndUxpNVBZbXBsWTNRdWRtRnNkV1Z6S0ZObGNWQmhiR1YwZEdWQ1lYTmxMbU52Ykc5MWNsQmhiR1YwZEdVcEtUdGNiaUFnSUNCeVpYUjFjbTRnY21Wek8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ2h0T2lCemRISnBibWNwT2lCemRISnBibWNnZTF4dUlDQWdJR052Ym5OMElHaGhjMmc2SUc1MWJXSmxjaUE5SUZOMGNtbHVaMVYwYVd4ekxtaGhjMmhEYjJSbEtHMHBPMXh1SUNBZ0lHTnZibk4wSUhCSklEMGdhR0Z6YUNBbElGVnVhMjV2ZDI1RGIyeHZjbEJoYkdWMGRHVXVjR0ZzWlhSMFpTNXNaVzVuZEdnN1hHNGdJQ0FnY21WMGRYSnVJR052Y25KbFkzUkRiMnh2Y2loVmJtdHViM2R1UTI5c2IzSlFZV3hsZEhSbExuQmhiR1YwZEdWYmNFbGRLVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJpbXBvcnQgeyBtb25vbWVyVG9TaG9ydCB9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG5jb25zdCB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbmNvbnN0IGdyYXlDb2xvciA9ICcjODA4MDgwJztcbmNvbnN0IGJsYWNrQ29sb3IgPSAncmdiKDAsMCwwKSc7XG5jb25zdCBtb25vbWVyVG9TaG9ydEZ1bmN0aW9uID0gbW9ub21lclRvU2hvcnQ7XG5leHBvcnQgdmFyIERyYXdTdHlsZTtcbihmdW5jdGlvbiAoRHJhd1N0eWxlKSB7XG4gICAgRHJhd1N0eWxlW1wiTVNBXCJdID0gXCJNU0FcIjtcbiAgICBEcmF3U3R5bGVbXCJjbGFzc2ljXCJdID0gXCJjbGFzc2ljXCI7XG59KShEcmF3U3R5bGUgfHwgKERyYXdTdHlsZSA9IHt9KSk7XG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBwcmludHMgYSBzdHJpbmcgYWxpZ25lZCB0byBsZWZ0IG9yIGNlbnRlcmVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB3IFdpZHRoLlxuICogQHBhcmFtIHtudW1iZXJ9IGggSGVpZ2h0LlxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICogQHBhcmFtIHtzdHJpbmd9IHMgU3RyaW5nIHRvIHByaW50LlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2xvcj11bmRlZmluZWRDb2xvcl0gU3RyaW5nIGNvbG9yLlxuICogQHBhcmFtIHtudW1iZXJ9IFtwaXZvdD0wXSBQaXJ2b3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsZWZ0PWZhbHNlXSBJcyBsZWZ0IGFsaWduZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gW3RyYW5zcGFyZW5jeVJhdGU9MC4wXSBUcmFuc3BhcmVuY3kgcmF0ZSB3aGVyZSAxLjAgaXMgZnVsbHkgdHJhbnNwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScnXSBJcyBzZXBhcmF0b3IgZm9yIHNlcXVlbmNlLlxuICogQHBhcmFtIHtib29sZWFufSBbbGFzdD1mYWxzZV0gSXMgY2hlY2tlciBpZiBlbGVtZW50IGxhc3Qgb3Igbm90LlxuICogQHBhcmFtIGRyYXdTdHlsZSBJcyBkcmF3IHN0eWxlLiBNU0EgLSBmb3IgbXVsdGljaGFyU2VxLCBjbGFzc2ljIC0gZm9yIG90aGVyIHNlcS5cbiAqIEBwYXJhbSBtYXhXb3JkIElzIGFycmF5IG9mIG1heCB3b3JkcyBmb3IgZWFjaCBsaW5lLlxuICogQHBhcmFtIHdvcmRJZHggSXMgaW5kZXggb2Ygd29yZCB3ZSBjdXJyZW50bHkgZHJhdy5cbiAqIEBwYXJhbSBncmlkQ2VsbCBJcyBncmlkIGNlbGwuXG4gKiBAcGFyYW0gcmVmZXJlbmNlU2VxdWVuY2UgSXMgcmVmZXJlbmNlIHNlcXVlbmNlIGZvciBkaWZmIG1vZGUuXG4gKiBAcGFyYW0gbWF4TGVuZ3RoT2ZNb25vbWVyIElzIG1heCBsZW5ndGggb2YgbW9ub21lci5cbiAqIEByZXR1cm4ge251bWJlcn0geCBjb29yZGluYXRlIHRvIHN0YXJ0IHByaW50aW5nIGF0LlxuICovXG5leHBvcnQgY29uc3QgcHJpbnRMZWZ0T3JDZW50ZXJlZCA9ICh4LCB5LCB3LCBoLCBnLCBzLCBjb2xvciA9IHVuZGVmaW5lZENvbG9yLCBwaXZvdCA9IDAsIGxlZnQgPSBmYWxzZSwgdHJhbnNwYXJlbmN5UmF0ZSA9IDEuMCwgc2VwYXJhdG9yID0gJycsIGxhc3QgPSBmYWxzZSwgZHJhd1N0eWxlID0gRHJhd1N0eWxlLmNsYXNzaWMsIG1heFdvcmQgPSB7fSwgd29yZElkeCA9IDAsIGdyaWRDZWxsID0gbnVsbCwgcmVmZXJlbmNlU2VxdWVuY2UgPSBbXSwgbWF4TGVuZ3RoT2ZNb25vbWVyID0gbnVsbCkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGcudGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgICBsZXQgY29sb3JQYXJ0ID0gcy5zdWJzdHJpbmcoMCk7XG4gICAgbGV0IGdyYXlQYXJ0ID0gbGFzdCA/ICcnIDogc2VwYXJhdG9yO1xuICAgIGlmIChkcmF3U3R5bGUgPT09IERyYXdTdHlsZS5NU0EpIHtcbiAgICAgICAgZ3JheVBhcnQgPSAnJztcbiAgICB9XG4gICAgbGV0IGNvbG9yQ29kZSA9IHRydWU7XG4gICAgbGV0IGNvbXBhcmVXaXRoQ3VycmVudCA9IHRydWU7XG4gICAgbGV0IGhpZ2hsaWdodERpZmZlcmVuY2UgPSAnZGlmZmVyZW5jZSc7XG4gICAgaWYgKChncmlkQ2VsbCAhPSBudWxsKSAmJiAoZ3JpZENlbGwuY2VsbC5jb2x1bW4gIT0gbnVsbCkpIHtcbiAgICAgICAgY29sb3JDb2RlID0gKF9hID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnY29sb3ItY29kZSddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0cnVlO1xuICAgICAgICBjb21wYXJlV2l0aEN1cnJlbnQgPSAoX2IgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi50ZW1wWydjb21wYXJlLXdpdGgtY3VycmVudCddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0cnVlO1xuICAgICAgICBoaWdobGlnaHREaWZmZXJlbmNlID0gKF9jID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnaGlnaGxpZ2h0LWRpZmZlcmVuY2UnXSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ2RpZmZlcmVuY2UnO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50TW9ub21lciA9IHJlZmVyZW5jZVNlcXVlbmNlW3dvcmRJZHhdO1xuICAgIGlmIChjb21wYXJlV2l0aEN1cnJlbnQgJiYgKHJlZmVyZW5jZVNlcXVlbmNlLmxlbmd0aCA+IDApICYmIChoaWdobGlnaHREaWZmZXJlbmNlID09PSAnZGlmZmVyZW5jZScpKSB7XG4gICAgICAgIHRyYW5zcGFyZW5jeVJhdGUgPSAoY29sb3JQYXJ0ID09IGN1cnJlbnRNb25vbWVyKSA/IDAuMyA6IHRyYW5zcGFyZW5jeVJhdGU7XG4gICAgfVxuICAgIGlmIChjb21wYXJlV2l0aEN1cnJlbnQgJiYgKHJlZmVyZW5jZVNlcXVlbmNlLmxlbmd0aCA+IDApICYmIChoaWdobGlnaHREaWZmZXJlbmNlID09PSAnZXF1YWwnKSkge1xuICAgICAgICB0cmFuc3BhcmVuY3lSYXRlID0gKGNvbG9yUGFydCAhPSBjdXJyZW50TW9ub21lcikgPyAwLjMgOiB0cmFuc3BhcmVuY3lSYXRlO1xuICAgIH1cbiAgICBpZiAobWF4TGVuZ3RoT2ZNb25vbWVyICE9IG51bGwpIHtcbiAgICAgICAgY29sb3JQYXJ0ID0gbW9ub21lclRvU2hvcnRGdW5jdGlvbihjb2xvclBhcnQsIG1heExlbmd0aE9mTW9ub21lcik7XG4gICAgfVxuICAgIGxldCB0ZXh0U2l6ZSA9IGcubWVhc3VyZVRleHQoY29sb3JQYXJ0ICsgZ3JheVBhcnQpO1xuICAgIGNvbnN0IGluZGVudCA9IDU7XG4gICAgbGV0IG1heENvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCkud2lkdGg7XG4gICAgbGV0IGNvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCkud2lkdGg7XG4gICAgY29uc3QgZHkgPSBoIC8gMiAtICh0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hBc2NlbnQgKyB0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hEZXNjZW50KSAvIDIgKyAxO1xuICAgIHRleHRTaXplID0gdGV4dFNpemUud2lkdGg7XG4gICAgaWYgKGRyYXdTdHlsZSA9PT0gRHJhd1N0eWxlLk1TQSkge1xuICAgICAgICBtYXhDb2xvclRleHRTaXplID0gbWF4V29yZFt3b3JkSWR4XTtcbiAgICAgICAgdGV4dFNpemUgPSBtYXhXb3JkW3dvcmRJZHhdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkcmF3KGR4MSwgZHgyKSB7XG4gICAgICAgIGNvbnN0IGRyYXdDb2xvciA9IGNvbG9yQ29kZSA/IGNvbG9yIDogYmxhY2tDb2xvcjtcbiAgICAgICAgZy5maWxsU3R5bGUgPSBkcmF3Q29sb3I7XG4gICAgICAgIGcuZ2xvYmFsQWxwaGEgPSB0cmFuc3BhcmVuY3lSYXRlO1xuICAgICAgICBpZiAoZHJhd1N0eWxlID09PSBEcmF3U3R5bGUuY2xhc3NpYykge1xuICAgICAgICAgICAgZy5maWxsVGV4dChjb2xvclBhcnQsIHggKyBkeDEsIHkgKyBkeSk7XG4gICAgICAgICAgICBnLmZpbGxTdHlsZSA9IGdyYXlDb2xvcjtcbiAgICAgICAgICAgIGcuZmlsbFRleHQoZ3JheVBhcnQsIHggKyBkeDIsIHkgKyBkeSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRyYXdTdHlsZSA9PT0gRHJhd1N0eWxlLk1TQSkge1xuICAgICAgICAgICAgZy5maWxsU3R5bGUgPSBkcmF3Q29sb3I7XG4gICAgICAgICAgICBnLmZpbGxUZXh0KGNvbG9yUGFydCwgeCArIGR4MSArICgobWF4V29yZFt3b3JkSWR4XSAtIGNvbG9yVGV4dFNpemUpIC8gMiksIHkgKyBkeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxlZnQgfHwgdGV4dFNpemUgPiB3KSB7XG4gICAgICAgIGRyYXcoaW5kZW50LCBpbmRlbnQgKyBtYXhDb2xvclRleHRTaXplKTtcbiAgICAgICAgcmV0dXJuIHggKyBtYXhDb2xvclRleHRTaXplICsgZy5tZWFzdXJlVGV4dChncmF5UGFydCkud2lkdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBkeCA9ICh3IC0gdGV4dFNpemUpIC8gMjtcbiAgICAgICAgZHJhdyhkeCwgZHggKyBtYXhDb2xvclRleHRTaXplKTtcbiAgICAgICAgcmV0dXJuIHggKyBkeCArIG1heENvbG9yVGV4dFNpemU7XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyVnNiQzF5Wlc1a1pYSmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltTmxiR3d0Y21WdVpHVnlaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlJVRXNUMEZCVHl4RlFVRkRMR05CUVdNc1JVRkJReXhOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUlM5RExFMUJRVTBzWTBGQll5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRE8wRkJRekZETEUxQlFVMHNVMEZCVXl4SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVNMVFpeE5RVUZOTEZWQlFWVXNSMEZCUnl4WlFVRlpMRU5CUVVNN1FVRkRhRU1zVFVGQlRTeHpRa0ZCYzBJc1IwRkJNRVFzWTBGQll5eERRVUZETzBGQlJYSkhMRTFCUVUwc1EwRkJUaXhKUVVGWkxGTkJSMWc3UVVGSVJDeFhRVUZaTEZOQlFWTTdTVUZEYmtJc2QwSkJRVmNzUTBGQlFUdEpRVU5ZTEdkRFFVRnRRaXhEUVVGQk8wRkJRM0pDTEVOQlFVTXNSVUZJVnl4VFFVRlRMRXRCUVZRc1UwRkJVeXhSUVVkd1FqdEJRVVZFT3pzN096czdPenM3T3pzN096czdPenM3T3pzN08wZEJjMEpITzBGQlEwZ3NUVUZCVFN4RFFVRkRMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NRMEZEYWtNc1EwRkJVeXhGUVVGRkxFTkJRVk1zUlVGQlJTeERRVUZUTEVWQlFVVXNRMEZCVXl4RlFVTXhReXhEUVVFeVFpeEZRVUZGTEVOQlFWTXNSVUZCUlN4UlFVRm5RaXhqUVVGakxFVkJRM1JGTEZGQlFXZENMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzUzBGQlN5eEZRVUZGTEcxQ1FVRXlRaXhIUVVGSExFVkJReTlFTEZsQlFXOUNMRVZCUVVVc1JVRkJSU3hQUVVGblFpeExRVUZMTEVWQlFVVXNXVUZCZFVJc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeFZRVUYxUXl4RlFVRkZMRVZCUVVVc1ZVRkJhMElzUTBGQlF5eEZRVUZGTEZkQlFTdENMRWxCUVVrc1JVRkJSU3h2UWtGQk9FSXNSVUZCUlN4RlFVRkZMSEZDUVVGdlF5eEpRVUZKTEVWQlFWVXNSVUZCUlRzN1NVRkRjRklzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1NVRkRkRUlzU1VGQlNTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU12UWl4SlFVRkpMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRM0pETEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3VVVGREwwSXNVVUZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRMUVVObU8wbEJRMFFzU1VGQlNTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUTNKQ0xFbEJRVWtzYTBKQlFXdENMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJRemxDTEVsQlFVa3NiVUpCUVcxQ0xFZEJRVWNzV1VGQldTeERRVUZETzBsQlEzWkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNSVUZCUlR0UlFVTjRSQ3hUUVVGVExFZEJRVWNzVFVGQlFTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEcxRFFVRkpMRWxCUVVrc1EwRkJRenRSUVVNMVJDeHJRa0ZCYTBJc1IwRkJSeXhOUVVGQkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4dFEwRkJTU3hKUVVGSkxFTkJRVU03VVVGREwwVXNiVUpCUVcxQ0xFZEJRVWNzVFVGQlFTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc2JVTkJRVWtzV1VGQldTeERRVUZETzB0QlJYcEdPMGxCUTBRc1RVRkJUU3hqUVVGakxFZEJRVmNzYVVKQlFXbENMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRE1VUXNTVUZCU1N4clFrRkJhMElzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeExRVUZMTEZsQlFWa3NRMEZCUXl4RlFVRkZPMUZCUTJ4SExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1UwRkJVeXhKUVVGSkxHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRPMHRCUXpORk8wbEJRMFFzU1VGQlNTeHJRa0ZCYTBJc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhMUVVGTExFOUJRVThzUTBGQlF5eEZRVUZGTzFGQlF6ZEdMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNVMEZCVXl4SlFVRkpMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETzB0QlF6TkZPMGxCUTBRc1NVRkJTU3hyUWtGQmEwSXNTVUZCU1N4SlFVRkpMRVZCUVVVN1VVRkRPVUlzVTBGQlV5eEhRVUZITEhOQ1FVRnpRaXhEUVVGRExGTkJRVk1zUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wdEJRMjVGTzBsQlIwUXNTVUZCU1N4UlFVRlJMRWRCUVZFc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eFRRVUZUTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkRlRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUldwQ0xFbEJRVWtzWjBKQlFXZENMRWRCUVVjc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1NVRkRkRVFzU1VGQlNTeGhRVUZoTEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdTVUZEYmtRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXh4UWtGQmNVSXNSMEZCUnl4UlFVRlJMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRemxHTEZGQlFWRXNSMEZCUnl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRekZDTEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3VVVGREwwSXNaMEpCUVdkQ0xFZEJRVWNzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNCRExGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1MwRkROMEk3U1VGRlJDeFRRVUZUTEVsQlFVa3NRMEZCUXl4SFFVRlhMRVZCUVVVc1IwRkJWenRSUVVOd1F5eE5RVUZOTEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTJwRUxFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUTNoQ0xFTkJRVU1zUTBGQlF5eFhRVUZYTEVkQlFVY3NaMEpCUVdkQ0xFTkJRVU03VVVGRGFrTXNTVUZCU1N4VFFVRlRMRXRCUVVzc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJUdFpRVU51UXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU4yUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExGTkJRVk1zUTBGQlF6dFpRVU40UWl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFRRVU4yUXp0UlFVTkVMRWxCUVVrc1UwRkJVeXhMUVVGTExGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVTdXVUZETDBJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFRRVUZUTEVOQlFVTTdXVUZEZUVJc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMR0ZCUVdFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRUUVVOdVJqdEpRVU5JTEVOQlFVTTdTVUZGUkN4SlFVRkpMRWxCUVVrc1NVRkJTU3hSUVVGUkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRGVFTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1owSkJRV2RDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZGTjBRN1UwRkJUVHRSUVVOTUxFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU01UWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xRkJRMmhETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhuUWtGQlowSXNRMEZCUXp0TFFVTnNRenRCUVVOSUxFTkJRVU1zUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtbHRjRzl5ZENCN2JXOXViMjFsY2xSdlUyaHZjblI5SUdaeWIyMGdKeTR2YldGamNtOXRiMnhsWTNWc1pTYzdYRzVjYm1OdmJuTjBJSFZ1WkdWbWFXNWxaRU52Ykc5eUlEMGdKM0puWWlneE1EQXNNVEF3TERFd01Da25PMXh1WTI5dWMzUWdaM0poZVVOdmJHOXlJRDBnSnlNNE1EZ3dPREFuTzF4dVkyOXVjM1FnWW14aFkydERiMnh2Y2lBOUlDZHlaMklvTUN3d0xEQXBKenRjYm1OdmJuTjBJRzF2Ym05dFpYSlViMU5vYjNKMFJuVnVZM1JwYjI0NklDaGhiV2x1YnpvZ2MzUnlhVzVuTENCdFlYaE1aVzVuZEdoUFprMXZibTl0WlhJNklHNTFiV0psY2lrZ1BUNGdjM1J5YVc1bklEMGdiVzl1YjIxbGNsUnZVMmh2Y25RN1hHNWNibVY0Y0c5eWRDQmxiblZ0SUVSeVlYZFRkSGxzWlNCN1hHNGdJRTFUUVNBOUlDZE5VMEVuTEZ4dUlDQmpiR0Z6YzJsaklEMGdKMk5zWVhOemFXTW5MRnh1ZlZ4dVhHNHZLaXBjYmlBcUlFRWdablZ1WTNScGIyNGdkR2hoZENCd2NtbHVkSE1nWVNCemRISnBibWNnWVd4cFoyNWxaQ0IwYnlCc1pXWjBJRzl5SUdObGJuUmxjbVZrTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0I0SUhnZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0I1SUhrZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0IzSUZkcFpIUm9MbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdnZ1NHVnBaMmgwTGx4dUlDb2dRSEJoY21GdElIdERZVzUyWVhOU1pXNWtaWEpwYm1kRGIyNTBaWGgwTWtSOUlHY2dRMkZ1ZG1GeklISmxibVJsY21sdVp5QmpiMjUwWlhoMExseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE1nVTNSeWFXNW5JSFJ2SUhCeWFXNTBMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0amIyeHZjajExYm1SbFptbHVaV1JEYjJ4dmNsMGdVM1J5YVc1bklHTnZiRzl5TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHdhWFp2ZEQwd1hTQlFhWEoyYjNRdVhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJRnRzWldaMFBXWmhiSE5sWFNCSmN5QnNaV1owSUdGc2FXZHVaV1F1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1czUnlZVzV6Y0dGeVpXNWplVkpoZEdVOU1DNHdYU0JVY21GdWMzQmhjbVZ1WTNrZ2NtRjBaU0IzYUdWeVpTQXhMakFnYVhNZ1puVnNiSGtnZEhKaGJuTndZWEpsYm5SY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJjMlZ3WVhKaGRHOXlQU2NuWFNCSmN5QnpaWEJoY21GMGIzSWdabTl5SUhObGNYVmxibU5sTGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJiR0Z6ZEQxbVlXeHpaVjBnU1hNZ1kyaGxZMnRsY2lCcFppQmxiR1Z0Wlc1MElHeGhjM1FnYjNJZ2JtOTBMbHh1SUNvZ1FIQmhjbUZ0SUdSeVlYZFRkSGxzWlNCSmN5QmtjbUYzSUhOMGVXeGxMaUJOVTBFZ0xTQm1iM0lnYlhWc2RHbGphR0Z5VTJWeExDQmpiR0Z6YzJsaklDMGdabTl5SUc5MGFHVnlJSE5sY1M1Y2JpQXFJRUJ3WVhKaGJTQnRZWGhYYjNKa0lFbHpJR0Z5Y21GNUlHOW1JRzFoZUNCM2IzSmtjeUJtYjNJZ1pXRmphQ0JzYVc1bExseHVJQ29nUUhCaGNtRnRJSGR2Y21SSlpIZ2dTWE1nYVc1a1pYZ2diMllnZDI5eVpDQjNaU0JqZFhKeVpXNTBiSGtnWkhKaGR5NWNiaUFxSUVCd1lYSmhiU0JuY21sa1EyVnNiQ0JKY3lCbmNtbGtJR05sYkd3dVhHNGdLaUJBY0dGeVlXMGdjbVZtWlhKbGJtTmxVMlZ4ZFdWdVkyVWdTWE1nY21WbVpYSmxibU5sSUhObGNYVmxibU5sSUdadmNpQmthV1ptSUcxdlpHVXVYRzRnS2lCQWNHRnlZVzBnYldGNFRHVnVaM1JvVDJaTmIyNXZiV1Z5SUVseklHMWhlQ0JzWlc1bmRHZ2diMllnYlc5dWIyMWxjaTVjYmlBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ2VDQmpiMjl5WkdsdVlYUmxJSFJ2SUhOMFlYSjBJSEJ5YVc1MGFXNW5JR0YwTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ2NISnBiblJNWldaMFQzSkRaVzUwWlhKbFpDQTlJQ2hjYmlBZ2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXNJSGM2SUc1MWJXSmxjaXdnYURvZ2JuVnRZbVZ5TEZ4dUlDQm5PaUJEWVc1MllYTlNaVzVrWlhKcGJtZERiMjUwWlhoME1rUXNJSE02SUhOMGNtbHVaeXdnWTI5c2IzSTZJSE4wY21sdVp5QTlJSFZ1WkdWbWFXNWxaRU52Ykc5eUxGeHVJQ0J3YVhadmREb2diblZ0WW1WeUlEMGdNQ3dnYkdWbWRDQTlJR1poYkhObExDQjBjbUZ1YzNCaGNtVnVZM2xTWVhSbE9pQnVkVzFpWlhJZ1BTQXhMakFzWEc0Z0lITmxjR0Z5WVhSdmNqb2djM1J5YVc1bklEMGdKeWNzSUd4aGMzUTZJR0p2YjJ4bFlXNGdQU0JtWVd4elpTd2daSEpoZDFOMGVXeGxPaUJFY21GM1UzUjViR1VnUFNCRWNtRjNVM1I1YkdVdVkyeGhjM05wWXl3Z2JXRjRWMjl5WkRvZ2V5QmJhVzVrWlhnNklITjBjbWx1WjEwNklHNTFiV0psY2lCOUlEMGdlMzBzSUhkdmNtUkpaSGc2SUc1MWJXSmxjaUE5SURBc0lHZHlhV1JEWld4c09pQkVSeTVIY21sa1EyVnNiQ0I4SUc1MWJHd2dQU0J1ZFd4c0xDQnlaV1psY21WdVkyVlRaWEYxWlc1alpUb2djM1J5YVc1blcxMGdQU0JiWFN3Z2JXRjRUR1Z1WjNSb1QyWk5iMjV2YldWeU9pQnVkVzFpWlhJZ2ZDQnVkV3hzSUQwZ2JuVnNiQ2s2SUc1MWJXSmxjaUE5UGlCN1hHNGdJR2N1ZEdWNGRFRnNhV2R1SUQwZ0ozTjBZWEowSnp0Y2JpQWdiR1YwSUdOdmJHOXlVR0Z5ZENBOUlITXVjM1ZpYzNSeWFXNW5LREFwTzF4dUlDQnNaWFFnWjNKaGVWQmhjblFnUFNCc1lYTjBJRDhnSnljZ09pQnpaWEJoY21GMGIzSTdYRzRnSUdsbUlDaGtjbUYzVTNSNWJHVWdQVDA5SUVSeVlYZFRkSGxzWlM1TlUwRXBJSHRjYmlBZ0lDQm5jbUY1VUdGeWRDQTlJQ2NuTzF4dUlDQjlYRzRnSUd4bGRDQmpiMnh2Y2tOdlpHVWdQU0IwY25WbE8xeHVJQ0JzWlhRZ1kyOXRjR0Z5WlZkcGRHaERkWEp5Wlc1MElEMGdkSEoxWlR0Y2JpQWdiR1YwSUdocFoyaHNhV2RvZEVScFptWmxjbVZ1WTJVZ1BTQW5aR2xtWm1WeVpXNWpaU2M3WEc0Z0lHbG1JQ2dvWjNKcFpFTmxiR3dnSVQwZ2JuVnNiQ2tnSmlZZ0tHZHlhV1JEWld4c0xtTmxiR3d1WTI5c2RXMXVJQ0U5SUc1MWJHd3BLU0I3WEc0Z0lDQWdZMjlzYjNKRGIyUmxJRDBnWjNKcFpFTmxiR3d1WTJWc2JDNWpiMngxYlc0dWRHVnRjRnNuWTI5c2IzSXRZMjlrWlNkZElEOC9JSFJ5ZFdVN1hHNGdJQ0FnWTI5dGNHRnlaVmRwZEdoRGRYSnlaVzUwSUQwZ1ozSnBaRU5sYkd3dVkyVnNiQzVqYjJ4MWJXNHVkR1Z0Y0ZzblkyOXRjR0Z5WlMxM2FYUm9MV04xY25KbGJuUW5YU0EvUHlCMGNuVmxPMXh1SUNBZ0lHaHBaMmhzYVdkb2RFUnBabVpsY21WdVkyVWdQU0JuY21sa1EyVnNiQzVqWld4c0xtTnZiSFZ0Ymk1MFpXMXdXeWRvYVdkb2JHbG5hSFF0WkdsbVptVnlaVzVqWlNkZElEOC9JQ2RrYVdabVpYSmxibU5sSnp0Y2JseHVJQ0I5WEc0Z0lHTnZibk4wSUdOMWNuSmxiblJOYjI1dmJXVnlPaUJ6ZEhKcGJtY2dQU0J5WldabGNtVnVZMlZUWlhGMVpXNWpaVnQzYjNKa1NXUjRYVHRjYmlBZ2FXWWdLR052YlhCaGNtVlhhWFJvUTNWeWNtVnVkQ0FtSmlBb2NtVm1aWEpsYm1ObFUyVnhkV1Z1WTJVdWJHVnVaM1JvSUQ0Z01Da2dKaVlnS0docFoyaHNhV2RvZEVScFptWmxjbVZ1WTJVZ1BUMDlJQ2RrYVdabVpYSmxibU5sSnlrcElIdGNiaUFnSUNCMGNtRnVjM0JoY21WdVkzbFNZWFJsSUQwZ0tHTnZiRzl5VUdGeWRDQTlQU0JqZFhKeVpXNTBUVzl1YjIxbGNpa2dQeUF3TGpNZ09pQjBjbUZ1YzNCaGNtVnVZM2xTWVhSbE8xeHVJQ0I5WEc0Z0lHbG1JQ2hqYjIxd1lYSmxWMmwwYUVOMWNuSmxiblFnSmlZZ0tISmxabVZ5Wlc1alpWTmxjWFZsYm1ObExteGxibWQwYUNBK0lEQXBJQ1ltSUNob2FXZG9iR2xuYUhSRWFXWm1aWEpsYm1ObElEMDlQU0FuWlhGMVlXd25LU2tnZTF4dUlDQWdJSFJ5WVc1emNHRnlaVzVqZVZKaGRHVWdQU0FvWTI5c2IzSlFZWEowSUNFOUlHTjFjbkpsYm5STmIyNXZiV1Z5S1NBL0lEQXVNeUE2SUhSeVlXNXpjR0Z5Wlc1amVWSmhkR1U3WEc0Z0lIMWNiaUFnYVdZZ0tHMWhlRXhsYm1kMGFFOW1UVzl1YjIxbGNpQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ1kyOXNiM0pRWVhKMElEMGdiVzl1YjIxbGNsUnZVMmh2Y25SR2RXNWpkR2x2YmloamIyeHZjbEJoY25Rc0lHMWhlRXhsYm1kMGFFOW1UVzl1YjIxbGNpazdYRzRnSUgxY2JseHVYRzRnSUd4bGRDQjBaWGgwVTJsNlpUb2dZVzU1SUQwZ1p5NXRaV0Z6ZFhKbFZHVjRkQ2hqYjJ4dmNsQmhjblFnS3lCbmNtRjVVR0Z5ZENrN1hHNGdJR052Ym5OMElHbHVaR1Z1ZENBOUlEVTdYRzVjYmlBZ2JHVjBJRzFoZUVOdmJHOXlWR1Y0ZEZOcGVtVWdQU0JuTG0xbFlYTjFjbVZVWlhoMEtHTnZiRzl5VUdGeWRDa3VkMmxrZEdnN1hHNGdJR3hsZENCamIyeHZjbFJsZUhSVGFYcGxJRDBnWnk1dFpXRnpkWEpsVkdWNGRDaGpiMnh2Y2xCaGNuUXBMbmRwWkhSb08xeHVJQ0JqYjI1emRDQmtlU0E5SUdnZ0x5QXlJQzBnS0hSbGVIUlRhWHBsTG1admJuUkNiM1Z1WkdsdVowSnZlRUZ6WTJWdWRDQXJJSFJsZUhSVGFYcGxMbVp2Ym5SQ2IzVnVaR2x1WjBKdmVFUmxjMk5sYm5RcElDOGdNaUFySURFN1hHNGdJSFJsZUhSVGFYcGxJRDBnZEdWNGRGTnBlbVV1ZDJsa2RHZzdYRzRnSUdsbUlDaGtjbUYzVTNSNWJHVWdQVDA5SUVSeVlYZFRkSGxzWlM1TlUwRXBJSHRjYmlBZ0lDQnRZWGhEYjJ4dmNsUmxlSFJUYVhwbElEMGdiV0Y0VjI5eVpGdDNiM0prU1dSNFhUdGNiaUFnSUNCMFpYaDBVMmw2WlNBOUlHMWhlRmR2Y21SYmQyOXlaRWxrZUYwN1hHNGdJSDFjYmx4dUlDQm1kVzVqZEdsdmJpQmtjbUYzS0dSNE1Ub2diblZ0WW1WeUxDQmtlREk2SUc1MWJXSmxjaWs2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk4wSUdSeVlYZERiMnh2Y2lBOUlHTnZiRzl5UTI5a1pTQS9JR052Ykc5eUlEb2dZbXhoWTJ0RGIyeHZjanRjYmlBZ0lDQm5MbVpwYkd4VGRIbHNaU0E5SUdSeVlYZERiMnh2Y2p0Y2JpQWdJQ0JuTG1kc2IySmhiRUZzY0doaElEMGdkSEpoYm5Od1lYSmxibU41VW1GMFpUdGNiaUFnSUNCcFppQW9aSEpoZDFOMGVXeGxJRDA5UFNCRWNtRjNVM1I1YkdVdVkyeGhjM05wWXlrZ2UxeHVJQ0FnSUNBZ1p5NW1hV3hzVkdWNGRDaGpiMnh2Y2xCaGNuUXNJSGdnS3lCa2VERXNJSGtnS3lCa2VTazdYRzRnSUNBZ0lDQm5MbVpwYkd4VGRIbHNaU0E5SUdkeVlYbERiMnh2Y2p0Y2JpQWdJQ0FnSUdjdVptbHNiRlJsZUhRb1ozSmhlVkJoY25Rc0lIZ2dLeUJrZURJc0lIa2dLeUJrZVNrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoa2NtRjNVM1I1YkdVZ1BUMDlJRVJ5WVhkVGRIbHNaUzVOVTBFcElIdGNiaUFnSUNBZ0lHY3VabWxzYkZOMGVXeGxJRDBnWkhKaGQwTnZiRzl5TzF4dUlDQWdJQ0FnWnk1bWFXeHNWR1Y0ZENoamIyeHZjbEJoY25Rc0lIZ2dLeUJrZURFZ0t5QW9LRzFoZUZkdmNtUmJkMjl5WkVsa2VGMGdMU0JqYjJ4dmNsUmxlSFJUYVhwbEtTQXZJRElwTENCNUlDc2daSGtwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdsbUlDaHNaV1owSUh4OElIUmxlSFJUYVhwbElENGdkeWtnZTF4dUlDQWdJR1J5WVhjb2FXNWtaVzUwTENCcGJtUmxiblFnS3lCdFlYaERiMnh2Y2xSbGVIUlRhWHBsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdlQ0FySUcxaGVFTnZiRzl5VkdWNGRGTnBlbVVnS3lCbkxtMWxZWE4xY21WVVpYaDBLR2R5WVhsUVlYSjBLUzUzYVdSMGFEdGNibHh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJR052Ym5OMElHUjRJRDBnS0hjZ0xTQjBaWGgwVTJsNlpTa2dMeUF5TzF4dUlDQWdJR1J5WVhjb1pIZ3NJR1I0SUNzZ2JXRjRRMjlzYjNKVVpYaDBVMmw2WlNrN1hHNGdJQ0FnY21WMGRYSnVJSGdnS3lCa2VDQXJJRzFoZUVOdmJHOXlWR1Y0ZEZOcGVtVTdYRzRnSUgxY2JuMDdYRzVjYmlKZGZRPT0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHd1IGZyb20gJ3d1JztcbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHZlY3Rvckxlbmd0aCwgdmVjdG9yRG90UHJvZHVjdCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IEFtaW5vYWNpZHNQYWxldHRlcyB9IGZyb20gJy4uL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXNQYWxldHRlcyB9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlcyB9IGZyb20gJy4uL3Vua25vd24nO1xuaW1wb3J0IHsgVW5pdHNIYW5kbGVyIH0gZnJvbSAnLi4vdXRpbHMvdW5pdHMtaGFuZGxlcic7XG47XG4vKiogU3RhdHMgb2Ygc2VxdWVuY2VzIHdpdGggc3BlY2lmaWVkIHNwbGl0dGVyIGZ1bmMsIHJldHVybnMgeyBmcmVxLCBzYW1lTGVuZ3RoIH0uXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sXG4gKiBAcGFyYW0ge251bWJlcn0gbWluTGVuZ3RoXG4gKiBAcGFyYW0ge1NwbGl0dGVyRnVuY30gc3BsaXR0ZXJcbiAqIEByZXR1cm4geyBTZXFDb2xTdGF0cyB9LCBzYW1lTGVuZ3RoOiBib29sZWFuIH0gc3RhdHMgb2YgY29sdW1uIHNlcXVlbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIHNwbGl0dGVyKSB7XG4gICAgY29uc3QgZnJlcSA9IHt9O1xuICAgIGxldCBzYW1lTGVuZ3RoID0gdHJ1ZTtcbiAgICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuICAgIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgICAgIGNvbnN0IG1TZXEgPSBzcGxpdHRlcihzZXEpO1xuICAgICAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgICAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgICAgIGVsc2UgaWYgKG1TZXEubGVuZ3RoICE9PSBmaXJzdExlbmd0aClcbiAgICAgICAgICAgIHNhbWVMZW5ndGggPSBmYWxzZTtcbiAgICAgICAgaWYgKG1TZXEubGVuZ3RoID49IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIG1TZXEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgICAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aCB9O1xufVxuZXhwb3J0IGNvbnN0IG1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG4vKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICogQHBhcmFtIHthbnl9IHNlcSBvYmplY3Qgd2l0aCBzZXF1ZW5jZVxuICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIG1vbm9tZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdHRlckFzRmFzdGEoc2VxKSB7XG4gICAgcmV0dXJuIHd1KHNlcS50b1N0cmluZygpLm1hdGNoQWxsKG1vbm9tZXJSZSkpXG4gICAgICAgIC5tYXAoKG1hKSA9PiB7XG4gICAgICAgIGxldCBtUmVzO1xuICAgICAgICBjb25zdCBtID0gbWFbMF07XG4gICAgICAgIGlmIChtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIG1SZXMgPSBtYVsxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1SZXMgPSBtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtUmVzO1xuICAgIH0pLnRvQXJyYXkoKTtcbn1cbi8qKiBHZXRzIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZSBieSBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvciwgbGltaXQgPSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKHNlcSkgPT4ge1xuICAgICAgICByZXR1cm4gc2VxLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG59XG5jb25zdCBoZWxtUmUgPSAvKFBFUFRJREUxfEROQTF8Uk5BMSlcXHsoW159XSspfS9nO1xuY29uc3QgaGVsbVBwMVJlID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcbi8qKiBTcGxpdHMgSGVsbSBzdHJpbmcgdG8gbW9ub21lcnMsIGJ1dCBkb2VzIG5vdCByZXBsYWNlIG1vbm9tZXIgbmFtZXMgdG8gb3RoZXIgbm90YXRpb24gKGUuZy4gZm9yIFJOQSkuXG4gKiBPbmx5IGZvciBsaW5lYXIgcG9seW1lcnMsIGRvZXMgbm90IHNwbGl0IFJOQSBmb3Igcmlib3NlIGFuZCBwaG9zcGhhdGUgbW9ub21lcnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VxIFNvdXJjZSBzdHJpbmcgb2YgSEVMTSBub3RhdGlvblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdHRlckFzSGVsbShzZXEpIHtcbiAgICBoZWxtUmUubGFzdEluZGV4ID0gMDtcbiAgICBjb25zdCBlYSA9IGhlbG1SZS5leGVjKHNlcS50b1N0cmluZygpKTtcbiAgICBjb25zdCBpblNlcSA9IGVhID8gZWFbMl0gOiBudWxsO1xuICAgIGNvbnN0IG1tUG9zdFByb2Nlc3MgPSAobW0pID0+IHtcbiAgICAgICAgaGVsbVBwMVJlLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHBwMU0gPSBoZWxtUHAxUmUuZXhlYyhtbSk7XG4gICAgICAgIGlmIChwcDFNICYmIHBwMU0ubGVuZ3RoID49IDIpXG4gICAgICAgICAgICByZXR1cm4gcHAxTVsxXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG1tO1xuICAgIH07XG4gICAgY29uc3QgbW1MaXN0ID0gaW5TZXEgPyBpblNlcS5zcGxpdCgnLicpIDogW107XG4gICAgcmV0dXJuIG1tTGlzdC5tYXAobW1Qb3N0UHJvY2Vzcyk7XG59XG4vKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1bml0c1xuICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICogQHBhcmFtIGxpbWl0XG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlcih1bml0cywgc2VwYXJhdG9yLCBsaW1pdCA9IHVuZGVmaW5lZCkge1xuICAgIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKSlcbiAgICAgICAgcmV0dXJuIHNwbGl0dGVyQXNGYXN0YTtcbiAgICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pKVxuICAgICAgICByZXR1cm4gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvciwgbGltaXQpO1xuICAgIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKSlcbiAgICAgICAgcmV0dXJuIHNwbGl0dGVyQXNIZWxtO1xuICAgIGVsc2VcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHVuaXRzICR7dW5pdHN9IC5gKTtcbiAgICAvLyBUT0RPOiBTcGxpdHRlciBmb3IgSEVMTVxufVxuLyoqIEdlbmVyYXRlIHNwbGl0dGVyIGZ1bmN0aW9uIGZvciBzZXF1ZW5jZSBjb2x1bW5cbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBjb2xcbiAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY30gU3BsaXR0ZXIgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNwbGl0dGVyRm9yQ29sdW1uKGNvbCkge1xuICAgIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdldCBzcGxpdHRlciBmb3Igc2VtVHlwZSBcIiR7REcuU0VNVFlQRS5NQUNST01PTEVDVUxFfVwiIG9ubHkuYCk7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IGNvbC5nZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLyk7XG4gICAgcmV0dXJuIGdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpO1xufVxuY29uc3QgbG9uZ01vbm9tZXJQYXJ0UmUgPSAvKFxcdyspL2c7XG4vKiogQ29udmVydCBsb25nIG1vbm9tZXIgbmFtZXMgdG8gc2hvcnQgb25lcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vbm9tZXJUb1Nob3J0KGFtaW5vLCBtYXhMZW5ndGhPZk1vbm9tZXIpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHNob3J0QW1pbm9NYXRjaCA9IGFtaW5vLm1hdGNoKGxvbmdNb25vbWVyUGFydFJlKTtcbiAgICBjb25zdCBuZWVkQWRkRG90cyA9IGFtaW5vLmxlbmd0aCA+IG1heExlbmd0aE9mTW9ub21lciB8fCAoKF9hID0gc2hvcnRBbWlub01hdGNoID09PSBudWxsIHx8IHNob3J0QW1pbm9NYXRjaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2hvcnRBbWlub01hdGNoLmxlbmd0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCkgPiAxO1xuICAgIGNvbnN0IHNob3J0QW1pbm8gPSAoX2IgPSBzaG9ydEFtaW5vTWF0Y2ggPT09IG51bGwgfHwgc2hvcnRBbWlub01hdGNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaG9ydEFtaW5vTWF0Y2hbMF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcgJztcbiAgICByZXR1cm4gIW5lZWRBZGREb3RzID8gc2hvcnRBbWlubyA6IHNob3J0QW1pbm8uc3Vic3RyaW5nKDAsIG1heExlbmd0aE9mTW9ub21lcikgKyAn4oCmJztcbn1cbi8qKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFscGhhYmV0KGFscGhhYmV0KSB7XG4gICAgc3dpdGNoIChhbHBoYWJldCkge1xuICAgICAgICBjYXNlIFwiRE5BXCIgLyogQUxQSEFCRVQuRE5BICovOlxuICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5EbmFGYXN0YUFscGhhYmV0O1xuICAgICAgICBjYXNlIFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOlxuICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5SbmFGYXN0YUFscGhhYmV0O1xuICAgICAgICBjYXNlIFwiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLzpcbiAgICAgICAgICAgIHJldHVybiBVbml0c0hhbmRsZXIuUGVwdGlkZUZhc3RhQWxwaGFiZXQ7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGFscGhhYmV0ICcke2FscGhhYmV0fScuYCk7XG4gICAgfVxufVxuLyoqIENhbGN1bGF0ZSBzaW1pbGFyaXR5IGluIGN1cnJlbnQgc2VxdWVuY2UgYW5kIGFscGhhYmV0LlxuICogQHBhcmFtIHtNb25vbWVyRnJlcXN9IGZyZXFcbiAqIEBwYXJhbSB7U2V0PHN0cmluZz59IGFscGhhYmV0XG4gKiBAcGFyYW0ge3N0cmluZ30gZ2FwU3ltYm9sXG4gKiBAcmV0dXJuIHtudW1iZXJ9IENvc2luZSBzaW1pbGFyaXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcSwgYWxwaGFiZXQsIGdhcFN5bWJvbCA9ICctJykge1xuICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5uZXcgU2V0KE9iamVjdC5rZXlzKGZyZXEpKSwgLi4uYWxwaGFiZXRdKTtcbiAgICBrZXlzLmRlbGV0ZShnYXBTeW1ib2wpO1xuICAgIGNvbnN0IGZyZXFBID0gW107XG4gICAgY29uc3QgYWxwaGFiZXRBID0gW107XG4gICAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICAgICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgICAgIGFscGhhYmV0QS5wdXNoKGFscGhhYmV0LmhhcyhtKSA/IDEgOiAwKTtcbiAgICB9XG4gICAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gICAgY29uc3QgZnJlcVYgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgICBjb25zdCBhbHBoYWJldFYgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gICAgcmV0dXJuIHZlY3RvckRvdFByb2R1Y3QoZnJlcVYsIGFscGhhYmV0VikgLyAodmVjdG9yTGVuZ3RoKGZyZXFWKSAqIHZlY3Rvckxlbmd0aChhbHBoYWJldFYpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RBbHBoYWJldChzdGF0cykge1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlcyA9IFtcbiAgICAgICAgW1wiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLywgVW5pdHNIYW5kbGVyLlBlcHRpZGVGYXN0YUFscGhhYmV0XSxcbiAgICAgICAgW1wiRE5BXCIgLyogQUxQSEFCRVQuRE5BICovLCBVbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldF0sXG4gICAgICAgIFtcIlJOQVwiIC8qIEFMUEhBQkVULlJOQSAqLywgVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXRdLFxuICAgIF07XG4gICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcCgoYykgPT4gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgIGNvbnN0IGFscGhhYmV0ID0gbWF4Q29zID4gMC42NSA/IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVswXSA6ICdVTic7XG4gICAgcmV0dXJuIGFscGhhYmV0O1xufVxuLyoqIFNlbGVjdHMgYSBzdWl0YWJsZSBwYWxldHRlIGJhc2VkIG9uIGNvbHVtbiBkYXRhXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sIENvbHVtbiB0byBsb29rIGZvciBhIHBhbGV0dGVcbiAqIEBwYXJhbSB7bnVtYmVyfSAgbWluTGVuZ3RoIG1pbmltdW0gbGVuZ3RoIG9mIHNlcXVlbmNlIHRvIGRldGVjdCBwYWxldHRlIChlbXB0eSBzdHJpbmdzIGFyZSBhbGxvd2VkKVxuICogQHJldHVybiB7U2VxUGFsZXR0ZX0gUGFsZXR0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbHBoYWJldCBvZiB0aGUgc2VxdWVuY2VzIGluIHRoZSBjb2x1bW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFBhbGV0dGUoc2VxQ29sLCBtaW5MZW5ndGggPSA1KSB7XG4gICAgbGV0IGFscGhhYmV0O1xuICAgIGlmIChzZXFDb2wuc2VtVHlwZSA9PSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpIHtcbiAgICAgICAgY29uc3QgdWggPSBuZXcgVW5pdHNIYW5kbGVyKHNlcUNvbCk7XG4gICAgICAgIGFscGhhYmV0ID0gdWguYWxwaGFiZXQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlckFzRmFzdGEpO1xuICAgICAgICBhbHBoYWJldCA9IGRldGVjdEFscGhhYmV0KHN0YXRzKTtcbiAgICB9XG4gICAgY29uc3QgcmVzID0gZ2V0UGFsZXR0ZUJ5VHlwZShhbHBoYWJldCk7XG4gICAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWxldHRlQnlUeXBlKHBhbGV0dGVUeXBlKSB7XG4gICAgc3dpdGNoIChwYWxldHRlVHlwZSkge1xuICAgICAgICBjYXNlICdQVCc6XG4gICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgIGNhc2UgJ05UJzpcbiAgICAgICAgY2FzZSAnRE5BJzpcbiAgICAgICAgY2FzZSAnUk5BJzpcbiAgICAgICAgICAgIHJldHVybiBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbTtcbiAgICAgICAgLy8gb3RoZXJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBVbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFNlcUNvbChkZikge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBzZW1UeXBlQ29sTGlzdCA9IGRmLmNvbHVtbnMuYnlTZW1UeXBlQWxsKERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSk7XG4gICAgbGV0IHJlc0NvbCA9IChfYSA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgICAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIHJldHVybiB1bml0cyA/IHVuaXRzLmluZGV4T2YoJ01TQScpICE9PSAtMSA6IGZhbHNlO1xuICAgIH0pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xuICAgIGlmICghcmVzQ29sICYmIHNlbVR5cGVDb2xMaXN0Lmxlbmd0aCA+IDApXG4gICAgICAgIHJlc0NvbCA9IHNlbVR5cGVDb2xMaXN0WzBdO1xuICAgIHJldHVybiByZXNDb2w7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liV0ZqY205dGIyeGxZM1ZzWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbTFoWTNKdmJXOXNaV04xYkdVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJSVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVU4wUXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hKUVVGSkxFTkJRVU03UVVGRmNFSXNUMEZCVHl4RlFVRkRMRTFCUVUwc1JVRkJReXhOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNaRkxFOUJRVThzUlVGQlF5eFpRVUZaTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVU1zVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVVdlJpeFBRVUZQTEVWQlFXRXNhMEpCUVd0Q0xFVkJRVU1zVFVGQlRTeGxRVUZsTEVOQlFVTTdRVUZETjBRc1QwRkJUeXhGUVVGakxHMUNRVUZ0UWl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEYUVVc1QwRkJUeXhGUVVGRExHdENRVUZyUWl4RlFVRkRMRTFCUVUwc1dVRkJXU3hEUVVGRE8wRkJRemxETEU5QlFVOHNSVUZCUXl4WlFVRlpMRVZCUVVNc1RVRkJUU3gzUWtGQmQwSXNRMEZCUXp0QlFUUkNia1FzUTBGQlF6dEJRVTFHT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRkZCUVZFc1EwRkJReXhOUVVGcFFpeEZRVUZGTEZOQlFXbENMRVZCUVVVc1VVRkJjMEk3U1VGRGJrWXNUVUZCVFN4SlFVRkpMRWRCUVRSQ0xFVkJRVVVzUTBGQlF6dEpRVU42UXl4SlFVRkpMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03U1VGRGRFSXNTVUZCU1N4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJSWFpDTEV0QlFVc3NUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExGVkJRVlVzUlVGQlJUdFJRVU51UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGTTBJc1NVRkJTU3hYUVVGWExFbEJRVWtzU1VGQlNUdFpRVU55UWl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dGhRVU4yUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ6dFpRVU5zUXl4VlFVRlZMRWRCUVVjc1MwRkJTeXhEUVVGRE8xRkJSWEpDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hUUVVGVExFVkJRVVU3V1VGRE5VSXNTMEZCU3l4TlFVRk5MRU5CUVVNc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEzQkNMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdiMEpCUTJRc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRaQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMkZCUTJRN1UwRkRSanRMUVVOR08wbEJRMFFzVDBGQlR5eEZRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETzBGQlF6bERMRU5CUVVNN1FVRkZSQ3hOUVVGTkxFTkJRVU1zVFVGQlRTeFRRVUZUTEVkQlFWY3NjVUpCUVhGQ0xFTkJRVU03UVVGRmRrUTdPenRIUVVkSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4SFFVRlJPMGxCUTNSRExFOUJRVThzUlVGQlJTeERRVUZ0UWl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMU5CUXpWRUxFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFXOUNMRVZCUVVVc1JVRkJSVHRSUVVNMVFpeEpRVUZKTEVsQlFWa3NRMEZCUXp0UlFVTnFRaXhOUVVGTkxFTkJRVU1zUjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRlRUlzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRaUVVOb1FpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMlE3WVVGQlRUdFpRVU5NTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRWanRSUVVORUxFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGFrSXNRMEZCUXp0QlFVVkVPenM3TzBkQlNVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2QwSkJRWGRDTEVOQlFVTXNVMEZCYVVJc1JVRkJSU3hSUVVFMFFpeFRRVUZUTzBsQlF5OUdMRTlCUVU4c1EwRkJReXhIUVVGWExFVkJRVVVzUlVGQlJUdFJRVU55UWl4UFFVRlBMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTNKRExFTkJRVU1zUTBGQlF6dEJRVU5LTEVOQlFVTTdRVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJWeXhwUTBGQmFVTXNRMEZCUXp0QlFVTjZSQ3hOUVVGTkxGTkJRVk1zUjBGQlZ5eG5Ra0ZCWjBJc1EwRkJRenRCUVVVelF6czdPenRIUVVsSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SFFVRlJPMGxCUTNKRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFMUJRVTBzUlVGQlJTeEhRVUV5UWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUXk5RUxFMUJRVTBzUzBGQlN5eEhRVUZyUWl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJSUzlETEUxQlFVMHNZVUZCWVN4SFFVRkhMRU5CUVVNc1JVRkJWU3hGUVVGVkxFVkJRVVU3VVVGRE0wTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTm9ReXhKUVVGSkxFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNN1dVRkRNVUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08xbEJSV1lzVDBGQlR5eEZRVUZGTEVOQlFVTTdTVUZEWkN4RFFVRkRMRU5CUVVNN1NVRkZSaXhOUVVGTkxFMUJRVTBzUjBGQllTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVOMlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03UVVGRGJrTXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxGZEJRVmNzUTBGQlF5eExRVUZoTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hSUVVFMFFpeFRRVUZUTzBsQlEycEhMRWxCUVVrc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEZWQlFWVXNPRUpCUVdkQ08xRkJRMmhFTEU5QlFVOHNaVUZCWlN4RFFVRkRPMU5CUTNCQ0xFbEJRVWtzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRlZCUVZVc2MwTkJRVzlDTzFGQlEzcEVMRTlCUVU4c2QwSkJRWGRDTEVOQlFVTXNVMEZCVXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xTkJReTlETEVsQlFVa3NTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzTkVKQlFXVTdVVUZEY0VRc1QwRkJUeXhqUVVGakxFTkJRVU03TzFGQlJYUkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYjBKQlFXOUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRmFrUXNNRUpCUVRCQ08wRkJRelZDTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNiMEpCUVc5Q0xFTkJRVU1zUjBGQll6dEpRVU5xUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhPMUZCUXpGRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNOa0pCUVRaQ0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4VFFVRlRMRU5CUVVNc1EwRkJRenRKUVVWc1JpeE5RVUZOTEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRlRU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc2EwTkJRV2RDTEVOQlFVTTdTVUZETjBNc1QwRkJUeXhYUVVGWExFTkJRVU1zUzBGQlN5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUTNaRExFTkJRVU03UVVGRlJDeE5RVUZOTEdsQ1FVRnBRaXhIUVVGWExGRkJRVkVzUTBGQlF6dEJRVVV6UXl3clEwRkJLME03UVVGREwwTXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhMUVVGaExFVkJRVVVzYTBKQlFUQkNPenRKUVVOMFJTeE5RVUZOTEdWQlFXVXNSMEZCTkVJc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wbEJRMmhHTEUxQlFVMHNWMEZCVnl4SFFVRlpMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzYTBKQlFXdENMRWxCUVVrc1EwRkJReXhOUVVGQkxHVkJRV1VzWVVGQlppeGxRVUZsTEhWQ1FVRm1MR1ZCUVdVc1EwRkJSU3hOUVVGTkxHMURRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOeVJ5eE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRkJMR1ZCUVdVc1lVRkJaaXhsUVVGbExIVkNRVUZtTEdWQlFXVXNRMEZCUnl4RFFVRkRMRU5CUVVNc2JVTkJRVWtzUjBGQlJ5eERRVUZETzBsQlF5OURMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZGtZc1EwRkJRenRCUVVWRUxFMUJRVTA3UVVGRFRpeE5RVUZOTEZWQlFWVXNWMEZCVnl4RFFVRkRMRkZCUVd0Q08wbEJRelZETEZGQlFWRXNVVUZCVVN4RlFVRkZPMUZCUTJ4Q08xbEJRMFVzVDBGQlR5eFpRVUZaTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGRrTTdXVUZEUlN4UFFVRlBMRmxCUVZrc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVTjJRenRaUVVORkxFOUJRVThzV1VGQldTeERRVUZETEc5Q1FVRnZRaXhEUVVGRE8xRkJRek5ETzFsQlEwVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXg1UWtGQmVVSXNVVUZCVVN4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVONFJEdEJRVU5JTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3h4UWtGQmNVSXNRMEZCUXl4SlFVRnJRaXhGUVVGRkxGRkJRWEZDTEVWQlFVVXNXVUZCYjBJc1IwRkJSenRKUVVOMFJ5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJVeXhEUVVGRExFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNelJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wbEJSWFpDTEUxQlFVMHNTMEZCU3l4SFFVRmhMRVZCUVVVc1EwRkJRenRKUVVNelFpeE5RVUZOTEZOQlFWTXNSMEZCWVN4RlFVRkZMRU5CUVVNN1NVRkRMMElzUzBGQlN5eE5RVUZOTEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1VVRkRjRUlzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONlF6dEpRVU5FTERCR1FVRXdSanRKUVVNeFJpeE5RVUZOTEV0QlFVc3NSMEZCVnl4SlFVRkpMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU40UXl4TlFVRk5MRk5CUVZNc1IwRkJWeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hQUVVGUExHZENRVUZuUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVSaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4TFFVRnJRanRKUVVNdlF5eE5RVUZOTEd0Q1FVRnJRaXhIUVVFMFFqdFJRVU5zUkN4NVFrRkJZeXhaUVVGWkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNN1VVRkRhRVFzTWtKQlFXVXNXVUZCV1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlF6ZERMREpDUVVGbExGbEJRVmtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRMUVVNNVF5eERRVUZETzBsQlJVWXNaMFJCUVdkRU8wbEJRMmhFTEUxQlFVMHNjVUpCUVhGQ0xFZEJRV0VzYTBKQlFXdENMRU5CUVVNc1IwRkJSeXhEUVVNMVJDeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJ4RUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPMGxCUTJ4RUxFMUJRVTBzVVVGQlVTeEhRVUZITEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExHdENRVUZyUWl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRja2NzVDBGQlR5eFJRVUZSTEVOQlFVTTdRVUZEYkVJc1EwRkJRenRCUVVWRU96czdPMGRCU1VjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWVVGQllTeERRVUZETEUxQlFXbENMRVZCUVVVc1dVRkJiMElzUTBGQlF6dEpRVU53UlN4SlFVRkpMRkZCUVdkQ0xFTkJRVU03U1VGRGNrSXNTVUZCU1N4TlFVRk5MRU5CUVVNc1QwRkJUeXhKUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RlFVRkZPMUZCUXpsRExFMUJRVTBzUlVGQlJTeEhRVUZwUWl4SlFVRkpMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5zUkN4UlFVRlJMRWRCUVVjc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF6dExRVU40UWp0VFFVRk5PMUZCUTB3c1RVRkJUU3hMUVVGTExFZEJRV2RDTEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxHVkJRV1VzUTBGQlF5eERRVUZETzFGQlEzaEZMRkZCUVZFc1IwRkJSeXhqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEYkVNN1NVRkZSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEpRVU4yUXl4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zVjBGQmJVSTdTVUZEYkVRc1VVRkJVU3hYUVVGWExFVkJRVVU3VVVGRGNrSXNTMEZCU3l4SlFVRkpPMWxCUTFBc1QwRkJUeXhyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNN1VVRkRka01zUzBGQlN5eEpRVUZKTEVOQlFVTTdVVUZEVml4TFFVRkxMRXRCUVVzc1EwRkJRenRSUVVOWUxFdEJRVXNzUzBGQlN6dFpRVU5TTEU5QlFVOHNiVUpCUVcxQ0xFTkJRVU1zV1VGQldTeERRVUZETzFGQlEzaERMRkZCUVZFN1VVRkRWanRaUVVORkxFOUJRVThzYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRMnBETzBGQlEwZ3NRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3haUVVGWkxFTkJRVU1zUlVGQlowSTdPMGxCUXpORExFMUJRVTBzWTBGQll5eEhRVUZITEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1NVRkRla1VzU1VGQlNTeE5RVUZOTEVkQlFYRkNMRTFCUVVFc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTNwRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTjRReXhQUVVGUExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRM0pFTEVOQlFVTXNRMEZCUXl4dFEwRkJTU3hKUVVGSkxFTkJRVU03U1VGRFdDeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMR05CUVdNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF6dFJRVU4wUXl4TlFVRk5MRWRCUVVjc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6ZENMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVhVzF3YjNKMElIZDFJR1p5YjIwZ0ozZDFKenRjYmx4dWFXMXdiM0owSUh0V1pXTjBiM0o5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN2RtVmpkRzl5VEdWdVozUm9MQ0IyWldOMGIzSkViM1JRY205a2RXTjBmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdWOUlHWnliMjBnSnk0dUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1cGJYQnZjblFnZTBGdGFXNXZZV05wWkhNc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZZVzFwYm05aFkybGtjeWM3WEc1cGJYQnZjblFnZTA1MVkyeGxiM1JwWkdWekxDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpmU0JtY205dElDY3VMaTl1ZFdOc1pXOTBhV1JsY3ljN1hHNXBiWEJ2Y25RZ2UxVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZkVzVyYm05M2JpYzdYRzVwYlhCdmNuUWdlMVZ1YVhSelNHRnVaR3hsY24wZ1puSnZiU0FuTGk0dmRYUnBiSE12ZFc1cGRITXRhR0Z1Wkd4bGNpYzdYRzVjYmx4dUx5b3FJR1Z1ZFcwZ2RIbHdaU0IwYnlCemFXMXdiR2xtZVNCelpYUjBhVzVuSUZ3aWRYTmxjaTFtY21sbGJtUnNlVndpSUc1dmRHRjBhVzl1SUdsbUlHNWxZMlZ6YzJGeWVTQXFMMXh1Wlhod2IzSjBJR052Ym5OMElHVnVkVzBnVGs5VVFWUkpUMDRnZTF4dUlDQkdRVk5VUVNBOUlDZG1ZWE4wWVNjc1hHNGdJRk5GVUVGU1FWUlBVaUE5SUNkelpYQmhjbUYwYjNJbkxGeHVJQ0JJUlV4TklEMGdKMmhsYkcwbkxGeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdaVzUxYlNCQlRFbEhUazFGVGxRZ2UxeHVJQ0JUUlZGZlRWTkJJRDBnSjFORlVTNU5VMEVuTEZ4dUlDQlRSVkVnUFNBblUwVlJKeXhjYm4xY2JseHVaWGh3YjNKMElHTnZibk4wSUdWdWRXMGdRVXhRU0VGQ1JWUWdlMXh1SUNCRVRrRWdQU0FuUkU1Qkp5eGNiaUFnVWs1QklEMGdKMUpPUVNjc1hHNGdJRkJVSUQwZ0oxQlVKeXhjYmlBZ1ZVNGdQU0FuVlU0bkxGeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdaVzUxYlNCVVFVZFRJSHRjYmlBZ1lXeHBaMjVsWkNBOUlDZGhiR2xuYm1Wa0p5eGNiaUFnWVd4d2FHRmlaWFFnUFNBbllXeHdhR0ZpWlhRbkxGeHVJQ0JoYkhCb1lXSmxkRk5wZW1VZ1BTQW5MbUZzY0doaFltVjBVMmw2WlNjc1hHNGdJR0ZzY0doaFltVjBTWE5OZFd4MGFXTm9ZWElnUFNBbkxtRnNjR2hoWW1WMFNYTk5kV3gwYVdOb1lYSW5MRnh1SUNCelpYQmhjbUYwYjNJZ1BTQW5jMlZ3WVhKaGRHOXlKeXhjYm4wN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZObGNVTnZiRk4wWVhSeklEMGdleUJtY21WeE9pQk5iMjV2YldWeVJuSmxjWE1zSUhOaGJXVk1aVzVuZEdnNklHSnZiMnhsWVc0Z2ZWeHVaWGh3YjNKMElIUjVjR1VnVTNCc2FYUjBaWEpHZFc1aklEMGdLSE5sY1RvZ2MzUnlhVzVuS1NBOVBpQnpkSEpwYm1kYlhUdGNibVY0Y0c5eWRDQjBlWEJsSUUxdmJtOXRaWEpHY21WeGN5QTlJSHNnVzIwNklITjBjbWx1WjEwNklHNTFiV0psY2lCOU8xeHVYRzR2S2lvZ1UzUmhkSE1nYjJZZ2MyVnhkV1Z1WTJWeklIZHBkR2dnYzNCbFkybG1hV1ZrSUhOd2JHbDBkR1Z5SUdaMWJtTXNJSEpsZEhWeWJuTWdleUJtY21WeExDQnpZVzFsVEdWdVozUm9JSDB1WEc0Z0tpQkFjR0Z5WVcwZ2UwUkhMa052YkhWdGJuMGdjMlZ4UTI5c1hHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiV2x1VEdWdVozUm9YRzRnS2lCQWNHRnlZVzBnZTFOd2JHbDBkR1Z5Um5WdVkzMGdjM0JzYVhSMFpYSmNiaUFxSUVCeVpYUjFjbTRnZXlCVFpYRkRiMnhUZEdGMGN5QjlMQ0J6WVcxbFRHVnVaM1JvT2lCaWIyOXNaV0Z1SUgwZ2MzUmhkSE1nYjJZZ1kyOXNkVzF1SUhObGNYVmxibU5sYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwVTNSaGRITW9jMlZ4UTI5c09pQkVSeTVEYjJ4MWJXNHNJRzFwYmt4bGJtZDBhRG9nYm5WdFltVnlMQ0J6Y0d4cGRIUmxjam9nVTNCc2FYUjBaWEpHZFc1aktUb2dVMlZ4UTI5c1UzUmhkSE1nZTF4dUlDQmpiMjV6ZENCbWNtVnhPaUI3SUZ0dE9pQnpkSEpwYm1kZE9pQnVkVzFpWlhJZ2ZTQTlJSHQ5TzF4dUlDQnNaWFFnYzJGdFpVeGxibWQwYUNBOUlIUnlkV1U3WEc0Z0lHeGxkQ0JtYVhKemRFeGxibWQwYUNBOUlHNTFiR3c3WEc1Y2JpQWdabTl5SUNoamIyNXpkQ0J6WlhFZ2IyWWdjMlZ4UTI5c0xtTmhkR1ZuYjNKcFpYTXBJSHRjYmlBZ0lDQmpiMjV6ZENCdFUyVnhJRDBnYzNCc2FYUjBaWElvYzJWeEtUdGNibHh1SUNBZ0lHbG1JQ2htYVhKemRFeGxibWQwYUNBOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnWm1seWMzUk1aVzVuZEdnZ1BTQnRVMlZ4TG14bGJtZDBhRHRjYmlBZ0lDQmxiSE5sSUdsbUlDaHRVMlZ4TG14bGJtZDBhQ0FoUFQwZ1ptbHljM1JNWlc1bmRHZ3BYRzRnSUNBZ0lDQnpZVzFsVEdWdVozUm9JRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQnBaaUFvYlZObGNTNXNaVzVuZEdnZ1BqMGdiV2x1VEdWdVozUm9LU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdiVk5sY1NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVNodElHbHVJR1p5WlhFcEtWeHVJQ0FnSUNBZ0lDQWdJR1p5WlhGYmJWMGdQU0F3TzF4dUlDQWdJQ0FnSUNCbWNtVnhXMjFkSUNzOUlERTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCN1puSmxjVG9nWm5KbGNTd2djMkZ0WlV4bGJtZDBhRG9nYzJGdFpVeGxibWQwYUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnRiMjV2YldWeVVtVTZJRkpsWjBWNGNDQTlJQzljWEZzb1hGeDNLeWxjWEYxOEtGeGNkeWw4S0MwcEwyYzdYRzVjYmk4cUtpQlRjR3hwZENCelpYRjFaVzVqWlNCbWIzSWdjMmx1WjJ4bElHTm9ZWEpoWTNSbGNpQnRiMjV2YldWeWN5d2djM0YxWVhKbElHSnlZV05yWlhSeklHMTFiSFJwWTJoaGNpQnRiMjV2YldWeUlHNWhiV1Z6SUc5eUlHZGhjQ0J6ZVcxaWIyd3VYRzRnS2lCQWNHRnlZVzBnZTJGdWVYMGdjMlZ4SUc5aWFtVmpkQ0IzYVhSb0lITmxjWFZsYm1ObFhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnWVhKeVlYa2diMllnYlc5dWIyMWxjbk5jYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITndiR2wwZEdWeVFYTkdZWE4wWVNoelpYRTZJR0Z1ZVNrNklITjBjbWx1WjF0ZElIdGNiaUFnY21WMGRYSnVJSGQxUEZKbFowVjRjRTFoZEdOb1FYSnlZWGsrS0hObGNTNTBiMU4wY21sdVp5Z3BMbTFoZEdOb1FXeHNLRzF2Ym05dFpYSlNaU2twWEc0Z0lDQWdMbTFoY0Nnb2JXRTZJRkpsWjBWNGNFMWhkR05vUVhKeVlYa3BJRDArSUh0Y2JpQWdJQ0FnSUd4bGRDQnRVbVZ6T2lCemRISnBibWM3WEc0Z0lDQWdJQ0JqYjI1emRDQnRPaUJ6ZEhKcGJtY2dQU0J0WVZzd1hUdGNiaUFnSUNBZ0lHbG1JQ2h0TG14bGJtZDBhQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdiVkpsY3lBOUlHMWhXekZkTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYlZKbGN5QTlJRzA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiVkpsY3p0Y2JpQWdJQ0I5S1M1MGIwRnljbUY1S0NrN1hHNTlYRzVjYmk4cUtpQkhaWFJ6SUcxbGRHaHZaQ0IwYnlCemNHeHBkQ0J6WlhGMVpXNWpaU0JpZVNCelpYQmhjbUYwYjNKY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpaWEJoY21GMGIzSmNiaUFxSUVCd1lYSmhiU0JzYVcxcGRGeHVJQ29nUUhKbGRIVnliaUI3VTNCc2FYUjBaWEpHZFc1amZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFUzQnNhWFIwWlhKWGFYUm9VMlZ3WVhKaGRHOXlLSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5MQ0JzYVcxcGREb2diblZ0WW1WeUlId2dkVzVrWldacGJtVmtJRDBnZFc1a1pXWnBibVZrS1RvZ1UzQnNhWFIwWlhKR2RXNWpJSHRjYmlBZ2NtVjBkWEp1SUNoelpYRTZJSE4wY21sdVp5a2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnpaWEV1YzNCc2FYUW9jMlZ3WVhKaGRHOXlMQ0JzYVcxcGRDazdYRzRnSUgwN1hHNTlYRzVjYm1OdmJuTjBJR2hsYkcxU1pUb2dVbVZuUlhod0lEMGdMeWhRUlZCVVNVUkZNWHhFVGtFeGZGSk9RVEVwWEZ4N0tGdGVmVjByS1gwdlp6dGNibU52Ym5OMElHaGxiRzFRY0RGU1pUb2dVbVZuUlhod0lEMGdMMXhjV3loYlhseGNXMXhjWFYwcktWMHZaenRjYmx4dUx5b3FJRk53YkdsMGN5QklaV3h0SUhOMGNtbHVaeUIwYnlCdGIyNXZiV1Z5Y3l3Z1luVjBJR1J2WlhNZ2JtOTBJSEpsY0d4aFkyVWdiVzl1YjIxbGNpQnVZVzFsY3lCMGJ5QnZkR2hsY2lCdWIzUmhkR2x2YmlBb1pTNW5MaUJtYjNJZ1VrNUJLUzVjYmlBcUlFOXViSGtnWm05eUlHeHBibVZoY2lCd2IyeDViV1Z5Y3l3Z1pHOWxjeUJ1YjNRZ2MzQnNhWFFnVWs1QklHWnZjaUJ5YVdKdmMyVWdZVzVrSUhCb2IzTndhR0YwWlNCdGIyNXZiV1Z5Y3k1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpaWEVnVTI5MWNtTmxJSE4wY21sdVp5QnZaaUJJUlV4TklHNXZkR0YwYVc5dVhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDFjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITndiR2wwZEdWeVFYTklaV3h0S0hObGNUb2dZVzU1S1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0JvWld4dFVtVXViR0Z6ZEVsdVpHVjRJRDBnTUR0Y2JpQWdZMjl1YzNRZ1pXRTZJRkpsWjBWNGNFVjRaV05CY25KaGVTQjhJRzUxYkd3Z1BTQm9aV3h0VW1VdVpYaGxZeWh6WlhFdWRHOVRkSEpwYm1jb0tTazdYRzRnSUdOdmJuTjBJR2x1VTJWeE9pQnpkSEpwYm1jZ2ZDQnVkV3hzSUQwZ1pXRWdQeUJsWVZzeVhTQTZJRzUxYkd3N1hHNWNiaUFnWTI5dWMzUWdiVzFRYjNOMFVISnZZMlZ6Y3lBOUlDaHRiVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JRDArSUh0Y2JpQWdJQ0JvWld4dFVIQXhVbVV1YkdGemRFbHVaR1Y0SUQwZ01EdGNiaUFnSUNCamIyNXpkQ0J3Y0RGTklEMGdhR1ZzYlZCd01WSmxMbVY0WldNb2JXMHBPMXh1SUNBZ0lHbG1JQ2h3Y0RGTklDWW1JSEJ3TVUwdWJHVnVaM1JvSUQ0OUlESXBYRzRnSUNBZ0lDQnlaWFIxY200Z2NIQXhUVnN4WFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCeVpYUjFjbTRnYlcwN1hHNGdJSDA3WEc1Y2JpQWdZMjl1YzNRZ2JXMU1hWE4wT2lCemRISnBibWRiWFNBOUlHbHVVMlZ4SUQ4Z2FXNVRaWEV1YzNCc2FYUW9KeTRuS1NBNklGdGRPMXh1SUNCeVpYUjFjbTRnYlcxTWFYTjBMbTFoY0NodGJWQnZjM1JRY205alpYTnpLVHRjYm4xY2JseHVMeW9xSUVkbGRDQnpjR3hwZEhSbGNpQnRaWFJvYjJRZ2RHOGdjM0JzYVhRZ2MyVnhkV1Z1WTJWeklIUnZJRzF2Ym05dFpYSnpYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZFc1cGRITmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6WlhCaGNtRjBiM0pjYmlBcUlFQndZWEpoYlNCc2FXMXBkRnh1SUNvZ1FISmxkSFZ5YmlCN1UzQnNhWFIwWlhKR2RXNWpmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1oyVjBVM0JzYVhSMFpYSW9kVzVwZEhNNklITjBjbWx1Wnl3Z2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jc0lHeHBiV2wwT2lCdWRXMWlaWElnZkNCMWJtUmxabWx1WldRZ1BTQjFibVJsWm1sdVpXUXBPaUJUY0d4cGRIUmxja1oxYm1NZ2UxeHVJQ0JwWmlBb2RXNXBkSE11ZEc5TWIzZGxja05oYzJVb0tTNXpkR0Z5ZEhOWGFYUm9LRTVQVkVGVVNVOU9Ma1pCVTFSQktTbGNiaUFnSUNCeVpYUjFjbTRnYzNCc2FYUjBaWEpCYzBaaGMzUmhPMXh1SUNCbGJITmxJR2xtSUNoMWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29UazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNLU2xjYmlBZ0lDQnlaWFIxY200Z1oyVjBVM0JzYVhSMFpYSlhhWFJvVTJWd1lYSmhkRzl5S0hObGNHRnlZWFJ2Y2l3Z2JHbHRhWFFwTzF4dUlDQmxiSE5sSUdsbUlDaDFibWwwY3k1MGIweHZkMlZ5UTJGelpTZ3BMbk4wWVhKMGMxZHBkR2dvVGs5VVFWUkpUMDR1U0VWTVRTa3BYRzRnSUNBZ2NtVjBkWEp1SUhOd2JHbDBkR1Z5UVhOSVpXeHRPMXh1SUNCbGJITmxYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVmJtVjRjR1ZqZEdWa0lIVnVhWFJ6SUNSN2RXNXBkSE45SUM1Z0tUdGNibHh1SUNBdkx5QlVUMFJQT2lCVGNHeHBkSFJsY2lCbWIzSWdTRVZNVFZ4dWZWeHVYRzR2S2lvZ1IyVnVaWEpoZEdVZ2MzQnNhWFIwWlhJZ1puVnVZM1JwYjI0Z1ptOXlJSE5sY1hWbGJtTmxJR052YkhWdGJseHVJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUdOdmJGeHVJQ29nUUhKbGRIVnliaUI3VTNCc2FYUjBaWEpHZFc1amZTQlRjR3hwZEhSbGNpQm1kVzVqZEdsdmJseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFUzQnNhWFIwWlhKR2IzSkRiMngxYlc0b1kyOXNPaUJFUnk1RGIyeDFiVzRwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNCcFppQW9ZMjlzTG5ObGJWUjVjR1VnSVQwOUlFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNsY2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRWRsZENCemNHeHBkSFJsY2lCbWIzSWdjMlZ0Vkhsd1pTQmNJaVI3UkVjdVUwVk5WRmxRUlM1TlFVTlNUMDFQVEVWRFZVeEZmVndpSUc5dWJIa3VZQ2s3WEc1Y2JpQWdZMjl1YzNRZ2RXNXBkSE1nUFNCamIyd3VaMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1wTzF4dUlDQmpiMjV6ZENCelpYQmhjbUYwYjNJZ1BTQmpiMnd1WjJWMFZHRm5LRlJCUjFNdWMyVndZWEpoZEc5eUtUdGNiaUFnY21WMGRYSnVJR2RsZEZOd2JHbDBkR1Z5S0hWdWFYUnpMQ0J6WlhCaGNtRjBiM0lwTzF4dWZWeHVYRzVqYjI1emRDQnNiMjVuVFc5dWIyMWxjbEJoY25SU1pUb2dVbVZuUlhod0lEMGdMeWhjWEhjcktTOW5PMXh1WEc0dktpb2dRMjl1ZG1WeWRDQnNiMjVuSUcxdmJtOXRaWElnYm1GdFpYTWdkRzhnYzJodmNuUWdiMjVsY3lBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMXZibTl0WlhKVWIxTm9iM0owS0dGdGFXNXZPaUJ6ZEhKcGJtY3NJRzFoZUV4bGJtZDBhRTltVFc5dWIyMWxjam9nYm5WdFltVnlLVG9nYzNSeWFXNW5JSHRjYmlBZ1kyOXVjM1FnYzJodmNuUkJiV2x1YjAxaGRHTm9PaUJTWldkRmVIQk5ZWFJqYUVGeWNtRjVJSHdnYm5Wc2JDQTlJR0Z0YVc1dkxtMWhkR05vS0d4dmJtZE5iMjV2YldWeVVHRnlkRkpsS1R0Y2JpQWdZMjl1YzNRZ2JtVmxaRUZrWkVSdmRITTZJR0p2YjJ4bFlXNGdQU0JoYldsdWJ5NXNaVzVuZEdnZ1BpQnRZWGhNWlc1bmRHaFBaazF2Ym05dFpYSWdmSHdnS0hOb2IzSjBRVzFwYm05TllYUmphRDh1YkdWdVozUm9JRDgvSURBcElENGdNVHRjYmlBZ1kyOXVjM1FnYzJodmNuUkJiV2x1YnlBOUlITm9iM0owUVcxcGJtOU5ZWFJqYUQ4dVd6QmRJRDgvSUNjZ0p6dGNiaUFnY21WMGRYSnVJQ0Z1WldWa1FXUmtSRzkwY3lBL0lITm9iM0owUVcxcGJtOGdPaUJ6YUc5eWRFRnRhVzV2TG5OMVluTjBjbWx1Wnlnd0xDQnRZWGhNWlc1bmRHaFBaazF2Ym05dFpYSXBJQ3NnSitLQXBpYzdYRzU5WEc1Y2JpOHFLaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRnNjR2hoWW1WMEtHRnNjR2hoWW1WME9pQkJURkJJUVVKRlZDazZJRk5sZER4emRISnBibWMrSUh0Y2JpQWdjM2RwZEdOb0lDaGhiSEJvWVdKbGRDa2dlMXh1SUNCallYTmxJRUZNVUVoQlFrVlVMa1JPUVRwY2JpQWdJQ0J5WlhSMWNtNGdWVzVwZEhOSVlXNWtiR1Z5TGtSdVlVWmhjM1JoUVd4d2FHRmlaWFE3WEc0Z0lHTmhjMlVnUVV4UVNFRkNSVlF1VWs1Qk9seHVJQ0FnSUhKbGRIVnliaUJWYm1sMGMwaGhibVJzWlhJdVVtNWhSbUZ6ZEdGQmJIQm9ZV0psZER0Y2JpQWdZMkZ6WlNCQlRGQklRVUpGVkM1UVZEcGNiaUFnSUNCeVpYUjFjbTRnVlc1cGRITklZVzVrYkdWeUxsQmxjSFJwWkdWR1lYTjBZVUZzY0doaFltVjBPMXh1SUNCa1pXWmhkV3gwT2x4dUlDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzV6ZFhCd2IzSjBaV1FnWVd4d2FHRmlaWFFnSnlSN1lXeHdhR0ZpWlhSOUp5NWdLVHRjYmlBZ2ZWeHVmVnh1WEc0dktpb2dRMkZzWTNWc1lYUmxJSE5wYldsc1lYSnBkSGtnYVc0Z1kzVnljbVZ1ZENCelpYRjFaVzVqWlNCaGJtUWdZV3h3YUdGaVpYUXVYRzRnS2lCQWNHRnlZVzBnZTAxdmJtOXRaWEpHY21WeGMzMGdabkpsY1Z4dUlDb2dRSEJoY21GdElIdFRaWFE4YzNSeWFXNW5QbjBnWVd4d2FHRmlaWFJjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCbllYQlRlVzFpYjJ4Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRMjl6YVc1bElITnBiV2xzWVhKcGRIbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRnNjR2hoWW1WMFUybHRhV3hoY21sMGVTaG1jbVZ4T2lCTmIyNXZiV1Z5Um5KbGNYTXNJR0ZzY0doaFltVjBPaUJUWlhROGMzUnlhVzVuUGl3Z1oyRndVM2x0WW05c09pQnpkSEpwYm1jZ1BTQW5MU2NwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCclpYbHpJRDBnYm1WM0lGTmxkRHh6ZEhKcGJtYytLRnN1TGk1dVpYY2dVMlYwS0U5aWFtVmpkQzVyWlhsektHWnlaWEVwS1N3Z0xpNHVZV3h3YUdGaVpYUmRLVHRjYmlBZ2EyVjVjeTVrWld4bGRHVW9aMkZ3VTNsdFltOXNLVHRjYmx4dUlDQmpiMjV6ZENCbWNtVnhRVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnWTI5dWMzUWdZV3h3YUdGaVpYUkJPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdhMlY1Y3lrZ2UxeHVJQ0FnSUdaeVpYRkJMbkIxYzJnb2JTQnBiaUJtY21WeElEOGdabkpsY1Z0dFhTQTZJREFwTzF4dUlDQWdJR0ZzY0doaFltVjBRUzV3ZFhOb0tHRnNjR2hoWW1WMExtaGhjeWh0S1NBL0lERWdPaUF3S1R0Y2JpQWdmVnh1SUNBdktpQlVhR1Z5WlNCM1pYSmxJR0VnWm1WM0lHbGtaV0Z6T2lCamFHa3RjM0YxWVhKbFpDd2djR1ZoY25OdmJpQmpiM0p5Wld4aGRHbHZiaUFvZG1GeWFXRnVZMlUvS1N3Z2MyTmhiR0Z5SUhCeWIyUjFZM1FnS2k5Y2JpQWdZMjl1YzNRZ1puSmxjVlk2SUZabFkzUnZjaUE5SUc1bGR5QldaV04wYjNJb1puSmxjVUVwTzF4dUlDQmpiMjV6ZENCaGJIQm9ZV0psZEZZNklGWmxZM1J2Y2lBOUlHNWxkeUJXWldOMGIzSW9ZV3h3YUdGaVpYUkJLVHRjYmlBZ2NtVjBkWEp1SUhabFkzUnZja1J2ZEZCeWIyUjFZM1FvWm5KbGNWWXNJR0ZzY0doaFltVjBWaWtnTHlBb2RtVmpkRzl5VEdWdVozUm9LR1p5WlhGV0tTQXFJSFpsWTNSdmNreGxibWQwYUNoaGJIQm9ZV0psZEZZcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdSbGRHVmpkRUZzY0doaFltVjBLSE4wWVhSek9pQlRaWEZEYjJ4VGRHRjBjeWs2SUhOMGNtbHVaeUI3WEc0Z0lHTnZibk4wSUdGc2NHaGhZbVYwUTJGdVpHbGtZWFJsY3pvZ1czTjBjbWx1Wnl3Z1UyVjBQSE4wY21sdVp6NWRXMTBnUFNCYlhHNGdJQ0FnVzBGTVVFaEJRa1ZVTGxCVUxDQlZibWwwYzBoaGJtUnNaWEl1VUdWd2RHbGtaVVpoYzNSaFFXeHdhR0ZpWlhSZExGeHVJQ0FnSUZ0QlRGQklRVUpGVkM1RVRrRXNJRlZ1YVhSelNHRnVaR3hsY2k1RWJtRkdZWE4wWVVGc2NHaGhZbVYwWFN4Y2JpQWdJQ0JiUVV4UVNFRkNSVlF1VWs1QkxDQlZibWwwYzBoaGJtUnNaWEl1VW01aFJtRnpkR0ZCYkhCb1lXSmxkRjBzWEc0Z0lGMDdYRzVjYmlBZ0x5OGdRMkZzWTNWc1lYUmxJR3hwYTJWc2FXaHZiMlJ6SUdadmNpQmhiSEJvWVdKbGRGOWpZVzVrYVdSaGRHVnpYRzRnSUdOdmJuTjBJR0ZzY0doaFltVjBRMkZ1Wkdsa1lYUmxjMU5wYlRvZ2JuVnRZbVZ5VzEwZ1BTQmhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTXViV0Z3S0Z4dUlDQWdJQ2hqS1NBOVBpQm5aWFJCYkhCb1lXSmxkRk5wYldsc1lYSnBkSGtvYzNSaGRITXVabkpsY1N3Z1kxc3hYU2twTzF4dUlDQmpiMjV6ZENCdFlYaERiM01nUFNCTllYUm9MbTFoZUNndUxpNWhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzBwTzF4dUlDQmpiMjV6ZENCaGJIQm9ZV0psZENBOUlHMWhlRU52Y3lBK0lEQXVOalVnUHlCaGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOYllXeHdhR0ZpWlhSRFlXNWthV1JoZEdWelUybHRMbWx1WkdWNFQyWW9iV0Y0UTI5ektWMWJNRjBnT2lBblZVNG5PMXh1SUNCeVpYUjFjbTRnWVd4d2FHRmlaWFE3WEc1OVhHNWNiaThxS2lCVFpXeGxZM1J6SUdFZ2MzVnBkR0ZpYkdVZ2NHRnNaWFIwWlNCaVlYTmxaQ0J2YmlCamIyeDFiVzRnWkdGMFlWeHVJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUhObGNVTnZiQ0JEYjJ4MWJXNGdkRzhnYkc5dmF5Qm1iM0lnWVNCd1lXeGxkSFJsWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ0lHMXBia3hsYm1kMGFDQnRhVzVwYlhWdElHeGxibWQwYUNCdlppQnpaWEYxWlc1alpTQjBieUJrWlhSbFkzUWdjR0ZzWlhSMFpTQW9aVzF3ZEhrZ2MzUnlhVzVuY3lCaGNtVWdZV3hzYjNkbFpDbGNiaUFxSUVCeVpYUjFjbTRnZTFObGNWQmhiR1YwZEdWOUlGQmhiR1YwZEdVZ1kyOXljbVZ6Y0c5dVpHbHVaeUIwYnlCMGFHVWdZV3h3YUdGaVpYUWdiMllnZEdobElITmxjWFZsYm1ObGN5QnBiaUIwYUdVZ1kyOXNkVzF1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndhV05yVlhCUVlXeGxkSFJsS0hObGNVTnZiRG9nUkVjdVEyOXNkVzF1TENCdGFXNU1aVzVuZEdnNklHNTFiV0psY2lBOUlEVXBPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdiR1YwSUdGc2NHaGhZbVYwT2lCemRISnBibWM3WEc0Z0lHbG1JQ2h6WlhGRGIyd3VjMlZ0Vkhsd1pTQTlQU0JFUnk1VFJVMVVXVkJGTGsxQlExSlBUVTlNUlVOVlRFVXBJSHRjYmlBZ0lDQmpiMjV6ZENCMWFEb2dWVzVwZEhOSVlXNWtiR1Z5SUQwZ2JtVjNJRlZ1YVhSelNHRnVaR3hsY2loelpYRkRiMndwTzF4dUlDQWdJR0ZzY0doaFltVjBJRDBnZFdndVlXeHdhR0ZpWlhRN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ1kyOXVjM1FnYzNSaGRITTZJRk5sY1VOdmJGTjBZWFJ6SUQwZ1oyVjBVM1JoZEhNb2MyVnhRMjlzTENCdGFXNU1aVzVuZEdnc0lITndiR2wwZEdWeVFYTkdZWE4wWVNrN1hHNGdJQ0FnWVd4d2FHRmlaWFFnUFNCa1pYUmxZM1JCYkhCb1lXSmxkQ2h6ZEdGMGN5azdYRzRnSUgxY2JseHVJQ0JqYjI1emRDQnlaWE1nUFNCblpYUlFZV3hsZEhSbFFubFVlWEJsS0dGc2NHaGhZbVYwS1R0Y2JpQWdjbVYwZFhKdUlISmxjenRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRkJoYkdWMGRHVkNlVlI1Y0dVb2NHRnNaWFIwWlZSNWNHVTZJSE4wY21sdVp5azZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQnpkMmwwWTJnZ0tIQmhiR1YwZEdWVWVYQmxLU0I3WEc0Z0lHTmhjMlVnSjFCVUp6cGNiaUFnSUNCeVpYUjFjbTRnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6TGtkeWIydEhjbTkxY0hNN1hHNGdJR05oYzJVZ0owNVVKenBjYmlBZ1kyRnpaU0FuUkU1Qkp6cGNiaUFnWTJGelpTQW5VazVCSnpwY2JpQWdJQ0J5WlhSMWNtNGdUblZqYkdWdmRHbGtaWE5RWVd4bGRIUmxjeTVEYUhKdmJXRjBiMmR5WVcwN1hHNGdJQ0FnTHk4Z2IzUm9aWEpjYmlBZ1pHVm1ZWFZzZERwY2JpQWdJQ0J5WlhSMWNtNGdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpMa052Ykc5eU8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndhV05yVlhCVFpYRkRiMndvWkdZNklFUkhMa1JoZEdGR2NtRnRaU2s2SUVSSExrTnZiSFZ0YmlCOElHNTFiR3dnZTF4dUlDQmpiMjV6ZENCelpXMVVlWEJsUTI5c1RHbHpkQ0E5SUdSbUxtTnZiSFZ0Ym5NdVlubFRaVzFVZVhCbFFXeHNLRVJITGxORlRWUlpVRVV1VFVGRFVrOU5UMHhGUTFWTVJTazdYRzRnSUd4bGRDQnlaWE5EYjJ3NklFUkhMa052YkhWdGJpQjhJRzUxYkd3Z1BTQnpaVzFVZVhCbFEyOXNUR2x6ZEM1bWFXNWtLQ2hqYjJ3cElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCMWJtbDBjeUE5SUdOdmJDNW5aWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeWs3WEc0Z0lDQWdjbVYwZFhKdUlIVnVhWFJ6SUQ4Z2RXNXBkSE11YVc1a1pYaFBaaWduVFZOQkp5a2dJVDA5SUMweElEb2dabUZzYzJVN1hHNGdJSDBwSUQ4L0lHNTFiR3c3WEc0Z0lHbG1JQ2doY21WelEyOXNJQ1ltSUhObGJWUjVjR1ZEYjJ4TWFYTjBMbXhsYm1kMGFDQStJREFwWEc0Z0lDQWdjbVZ6UTI5c0lEMGdjMlZ0Vkhsd1pVTnZiRXhwYzNSYk1GMDdYRzRnSUhKbGRIVnliaUJ5WlhORGIydzdYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgVW5pdHNIYW5kbGVyIH0gZnJvbSAnLi91bml0cy1oYW5kbGVyJztcbmltcG9ydCB7IGdldFNwbGl0dGVyRm9yQ29sdW1uLCBnZXRTdGF0cyB9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciBleHRlbmRzIFVuaXRzSGFuZGxlciB7XG4gICAgZ2V0IHNwbGl0dGVyKCkge1xuICAgICAgICBpZiAodGhpcy5fc3BsaXR0ZXIgPT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLl9zcGxpdHRlciA9IGdldFNwbGl0dGVyRm9yQ29sdW1uKHRoaXMuY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0dGVyO1xuICAgIH1cbiAgICB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIHRvSGVsbSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgTWFjcm9tb2xlY3VsZSBjb2x1bW4gZnJvbSBGQVNUQSB0byBTRVBBUkFUT1Igbm90YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgIEEgc3BlY2lmaWMgc2VwYXJhdG9yIHRvIGJlIHVzZWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmFzdGFHYXBTeW1ib2wgIEdhcCBzeW1ib2wgaW4gRkFTVEEsICctJyBieSBkZWZhdWx0XG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgQSBuZXcgY29sdW1uIGluIFNFUEFSQVRPUiBub3RhdGlvblxuICAgICAqL1xuICAgIGNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvciwgZmFzdGFHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYXN0YVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoZmFzdGFQb2x5bWVyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFzdGFNb25vbWVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZhc3RhTW9ub21lcnNBcnJheVtpXSA9PT0gZmFzdGFHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheVtpXSA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYXN0YU1vbm9tZXJzQXJyYXkuam9pbihzZXBhcmF0b3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLywgc2VwYXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSB3cmFwcGVyIHN0cmluZ3MgZm9yIEhFTE0sIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGVcbiAgICAgKiBtYWNyb21vbGVjdWxlIChwZXB0aWRlLCBETkEsIFJOQSlcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiB3cmFwcGVyc1xuICAgICAqL1xuICAgIGdldEhlbG1XcmFwcGVycygpIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gKHRoaXMuaXNEbmEoKSkgPyAnRE5BMXsnIDpcbiAgICAgICAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1JOQTF7JyA6XG4gICAgICAgICAgICAgICAgKHRoaXMuaXNQZXB0aWRlKCkpID8gJ1BFUFRJREUxeycgOlxuICAgICAgICAgICAgICAgICAgICAnVW5rbm93bic7IC8vIHRoaXMgY2FzZSBzaG91bGQgYmUgaGFuZGxlZCBhcyBleGNlcHRpb25hbFxuICAgICAgICBpZiAocHJlZml4ID09PSAnVW5rbm93bicpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgcGVwdGlkZSwgbm9yIG51Y2xlb3RpZGUnKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9ICd9JCQkJztcbiAgICAgICAgY29uc3QgbGVmdFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpKSA/ICdEKCcgOlxuICAgICAgICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUignIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgICAgIGNvbnN0IHJpZ2h0V3JhcHBlciA9ICh0aGlzLmlzRG5hKCkgfHwgdGhpcy5pc1JuYSgpKSA/ICcpUCcgOiAnJzsgLy8gbm8gd3JhcHBlciBmb3IgcGVwdGlkZXNcbiAgICAgICAgcmV0dXJuIFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdO1xuICAgIH1cbiAgICAvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgY29udmVydGluZyBzdHJpbmdzIHRvIEhFTE1cbiAgICBjb252ZXJ0VG9IZWxtSGVscGVyKHNvdXJjZVBvbHltZXIsIHNvdXJjZUdhcFN5bWJvbCwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJBcnJheSA9IHRoaXMuc3BsaXR0ZXIoc291cmNlUG9seW1lcik7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJIZWxtQXJyYXkgPSBtb25vbWVyQXJyYXkubWFwKChtbSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1tID09PSBzb3VyY2VHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xlZnRXcmFwcGVyfSR7bW19JHtyaWdodFdyYXBwZXJ9YDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBgJHtwcmVmaXh9JHttb25vbWVySGVsbUFycmF5LmpvaW4oJy4nKX0ke3Bvc3RmaXh9YDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIHN0cmluZyB3aXRoIFNFUEFSQVRPUi9GQVNUQSBub3RhdGlvbiB0byBIRUxNXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlUG9seW1lciAgQSBzdHJpbmcgdG8gYmUgY29udmVydGVkXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2wgIEFuIG9wdGlvbmFsIGdhcCBzeW1ib2wsIHNldCB0b1xuICAgICAqIGRlZmF1bHQgdmFsdWVzICgnLScgZm9yIEZBU1RBIGFuZCAnJyBmb3IgU0VQQVJBVE9SKSB1bmxlc3Mgc3BlY2lmaWVkXG4gICAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIHRhcmdldCBIRUxNIHN0cmluZ1xuICAgICAqL1xuICAgIGNvbnZlcnRTdHJpbmdUb0hlbG0oc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgY29sdW1uIHRvIEhFTE1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gc291cmNlR2FwU3ltYm9sXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIGNvbnZlcnRUb0hlbG0oc291cmNlR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBTRVBBUkFUT1IgY29sdW1uIHRvIEZBU1RBIG5vdGF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IGZhc3RhR2FwU3ltYm9sIE9wdGlvbmFsIGdhcCBzeW1ib2wgZm9yIEZBU1RBXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgQ29udmVydGVkIGNvbHVtblxuICAgICAqL1xuICAgIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKGZhc3RhR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoZmFzdGFHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICAgICAgICBmYXN0YUdhcFN5bWJvbCA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvclBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBzZXBhcmF0b3JzXG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihzZXBhcmF0b3JQb2x5bWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXBhcmF0b3JJdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNlcGFyYXRvckl0ZW1zQXJyYXlbaV07XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGZhc3RhR2FwU3ltYm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogIENvbnZlcnQgSEVMTSBzdHJpbmcgdG8gRkFTVEEvU0VQQVJBVE9SXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaGVsbVBvbHltZXIgICAgQSBzdHJpbmcgdG8gYmUgY29udmVydGVkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgICAqIFNFUEFSQVRPUilcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbnZlcnRlZCBzdHJpbmdcbiAgICAgKi9cbiAgICBjb252ZXJ0SGVsbVRvRmFzdGFTZXBhcmF0b3IoaGVsbVBvbHltZXIsIHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IsIHRndEdhcFN5bWJvbCkge1xuICAgICAgICBpZiAoIXRndEdhcFN5bWJvbCkge1xuICAgICAgICAgICAgdGd0R2FwU3ltYm9sID0gKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpID9cbiAgICAgICAgICAgICAgICBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQSA6XG4gICAgICAgICAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuU0VQQVJBVE9SO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGd0U2VwYXJhdG9yKSB7XG4gICAgICAgICAgICB0Z3RTZXBhcmF0b3IgPSAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgPyAnJyA6IHRoaXMuc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlbG1XcmFwcGVyc1JlID0gLyhSXFwofERcXCh8XFwpfFApL2c7XG4gICAgICAgIGNvbnN0IGlzTnVjbGVvdGlkZSA9IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ0ROQScpIHx8IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ1JOQScpO1xuICAgICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3IgaGVsbXNcbiAgICAgICAgY29uc3QgaGVsbUl0ZW1zQXJyYXkgPSB0aGlzLnNwbGl0dGVyKGhlbG1Qb2x5bWVyKTtcbiAgICAgICAgY29uc3QgdGd0TW9ub21lcnNBcnJheSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlbG1JdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IGhlbG1JdGVtc0FycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGlzTnVjbGVvdGlkZSlcbiAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS5yZXBsYWNlKGhlbG1XcmFwcGVyc1JlLCAnJyk7XG4gICAgICAgICAgICBpZiAoaXRlbSA9PT0gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTSkge1xuICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaCh0Z3RHYXBTeW1ib2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSAmJiBpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGUgY2FzZSBvZiBhIG11bHRpLWNoYXJhY3RlciBtb25vbWVyIGNvbnZlcnRlZCB0byBGQVNUQVxuICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqICBDb252ZXJ0IEhFTE0gY29sdW1uIHRvIEZBU1RBL1NFUEFSQVRPUlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgICAqIFNFUEFSQVRPUilcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yLCB0Z3RHYXBTeW1ib2wpIHtcbiAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBjb250YWluIGNhbGxzIG9mIGlzRG5hKCkgYW5kIGlzUm5hKCksIGZvclxuICAgICAgICAvLyBzb3VyY2UgaGVsbSBjb2x1bW5zIG1heSBjb250YWluIFJOQSwgRE5BIGFuZCBQVCBhY3Jvc3MgZGlmZmVyZW50IHJvd3NcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4odGd0Tm90YXRpb24pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlbG1Qb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbVRvRmFzdGFTZXBhcmF0b3IoaGVsbVBvbHltZXIsIHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IsIHRndEdhcFN5bWJvbCk7XG4gICAgICAgICAgICAvLyB3ZSBjYW5ub3QgdXNlIGlzRG5hKCkgb3IgaXNSbmEoKSBiZWNhdXNlIHNvdXJjZSBoZWxtIGNvbHVtbnMgY2FuXG4gICAgICAgICAgICAvLyBjb250YWluIEROQSwgUk5BIGFuZCBQVCBpbiBkaWZmZXJlbnQgY2VsbHMsIHNvIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAvLyB0YWdzIGNhbm5vdCBiZSBzZXQgZm9yIHRoZSB3aG9sZSBjb2x1bW5cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFRBR1MuYWxpZ25lZCBpcyBtYW5kYXRvcnkgZm9yIGNvbHVtbnMgb2YgTk9UQVRJT04uRkFTVEEgYW5kIE5PVEFUSU9OLlNFUEFSQVRPUlxuICAgICAgICBjb25zdCBzcGxpdHRlciA9IGdldFNwbGl0dGVyRm9yQ29sdW1uKG5ld0NvbHVtbik7XG4gICAgICAgIGNvbnN0IHN0YXRzID0gZ2V0U3RhdHMobmV3Q29sdW1uLCA1LCBzcGxpdHRlcik7XG4gICAgICAgIGNvbnN0IGFsaWduZWQgPSBzdGF0cy5zYW1lTGVuZ3RoID8gJ1NFUS5NU0EnIDogJ1NFUSc7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJhbGlnbmVkXCIgLyogVEFHUy5hbGlnbmVkICovLCBhbGlnbmVkKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgY29udmVydEhlbG1Ub1NlcGFyYXRvcigpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb3JldHVybiB0aGlzLmdldE5ld0NvbHVtbigpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pO1xuICAgIH1cbiAgICAvKiogRGlzcGF0Y2hlciBtZXRob2QgZm9yIG5vdGF0aW9uIGNvbnZlcnNpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tk9UQVRJT059IHRndE5vdGF0aW9uICAgTm90YXRpb24gd2Ugd2FudCB0byBjb252ZXJ0IHRvXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RTZXBhcmF0b3IgICBQb3NzaWJsZSBzZXBhcmF0b3JcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICAgICAgICAgICAgICAgIENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0KHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IgPSBudWxsKSB7XG4gICAgICAgIC8vIHBvc3NpYmxlIGV4Y2VwdGlvbnNcbiAgICAgICAgaWYgKHRoaXMubm90YXRpb24gPT09IHRndE5vdGF0aW9uKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0Z3Qgbm90YXRpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICBpZiAodGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yID09PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0Z3Qgc2VwYXJhdG9yIGlzIG5vdCBzcGVjaWZpZWQnKTtcbiAgICAgICAgaWYgKHRoaXMuaXNGYXN0YSgpICYmIHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHRndFNlcGFyYXRvcik7XG4gICAgICAgIGVsc2UgaWYgKCh0aGlzLmlzRmFzdGEoKSB8fCB0aGlzLmlzU2VwYXJhdG9yKCkpICYmIHRoaXMudG9IZWxtKHRndE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG0oKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzSGVsbSgpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpIC8vIHRoZSBjYXNlIG9mIEhFTE1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtKHRndE5vdGF0aW9uKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc0hlbG0oKSAmJiB0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtKHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgY29udmVyc2lvbiAnICtcbiAgICAgICAgICAgICAgICBgZnJvbSBzb3VyY2Ugbm90YXRpb24gJyR7dGhpcy5ub3RhdGlvbn0nIHRvIHRhcmdldCBub3RhdGlvbiAnJHt0Z3ROb3RhdGlvbn0nLmApO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihjb2wpIHtcbiAgICAgICAgc3VwZXIoY29sKTtcbiAgICAgICAgdGhpcy5fc3BsaXR0ZXIgPSBudWxsO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJtOTBZWFJwYjI0dFkyOXVkbVZ5ZEdWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYm05MFlYUnBiMjR0WTI5dWRtVnlkR1Z5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVZEJMRTlCUVU4c1MwRkJTeXhGUVVGRkxFMUJRVTBzYVVKQlFXbENMRU5CUVVNN1FVRkZkRU1zVDBGQlR5eEZRVUZETEZsQlFWa3NSVUZCUXl4TlFVRk5MR2xDUVVGcFFpeERRVUZETzBGQlF6ZERMRTlCUVU4c1JVRkJReXh2UWtGQmIwSXNSVUZCUlN4UlFVRlJMRVZCUVRSRExFMUJRVTBzYVVKQlFXbENMRU5CUVVNN1FVRkZNVWNzYVVaQlFXbEdPMEZCUTJwR0xFMUJRVTBzVDBGQlR5eHBRa0ZCYTBJc1UwRkJVU3haUVVGWk8wbEJSMnBFTEVsQlFXTXNVVUZCVVR0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEV0QlFVc3NTVUZCU1R0WlFVTjZRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEc5Q1FVRnZRaXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTnlSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTTdTVUZEZUVJc1EwRkJRenRKUVVWTkxFOUJRVThzUTBGQlF5eGpRVUYzUWl4SlFVRmhMRTlCUVU4c1kwRkJZeXhwUTBGQmJVSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZlRVlzVjBGQlZ5eERRVUZETEdOQlFYZENMRWxCUVdFc1QwRkJUeXhqUVVGakxIbERRVUYxUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWb1J5eE5RVUZOTEVOQlFVTXNZMEZCZDBJc1NVRkJZU3hQUVVGUExHTkJRV01zSzBKQlFXdENMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVGRHT3pzN096czdUMEZOUnp0SlFVTkxMSFZDUVVGMVFpeERRVUZETEZOQlFXbENMRVZCUVVVc2FVSkJRV2RETEVsQlFVazdVVUZEY2tZc1NVRkJTU3hqUVVGakxFdEJRVXNzU1VGQlNUdFpRVU42UWl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRPMUZCUlhwRExFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMSE5EUVVGdlFpeERRVUZETzFGQlEzaEVMSE5FUVVGelJEdFJRVU4wUkN4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVWQlFVVTdXVUZETjBJc1RVRkJUU3haUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRE1VTXNUVUZCVFN4clFrRkJhMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xbEJRM1pFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTJ4RUxFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzWTBGQll6dHZRa0ZETVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRk5CUVZNc1EwRkJRenRoUVVONlJUdFpRVU5FTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NkVU5CUVhGQ0xFTkJRVU03VVVGRGNFUXNVMEZCVXl4RFFVRkRMRTFCUVUwc2JVTkJRV2xDTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFOUJRVThzVTBGQlV5eERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOTExHVkJRV1U3VVVGRGNrSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGRrTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRM2hDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMjlDUVVOb1F5eFRRVUZUTEVOQlFVTXNRMEZCUXl3MlEwRkJOa003VVVGRk9VUXNTVUZCU1N4TlFVRk5MRXRCUVVzc1UwRkJVenRaUVVOMFFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR2xEUVVGcFF5eERRVUZETEVOQlFVTTdVVUZGY2tRc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEzWkNMRTFCUVUwc1YwRkJWeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzcERMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNNRUpCUVRCQ08xRkJRM2hFTEUxQlFVMHNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExEQkNRVUV3UWp0UlFVTXpSaXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEZkQlFWY3NSVUZCUlN4WlFVRlpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGRFUXNRMEZCUXp0SlFVVkVMRzFFUVVGdFJEdEpRVU16UXl4dFFrRkJiVUlzUTBGRGVrSXNZVUZCY1VJc1JVRkRja0lzWlVGQmRVSXNSVUZEZGtJc1RVRkJZeXhGUVVOa0xGZEJRVzFDTEVWQlEyNUNMRmxCUVc5Q0xFVkJRM0JDTEU5QlFXVTdVVUZGWml4TlFVRk5MRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFMUJRVTBzWjBKQlFXZENMRWRCUVdFc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRkZPMWxCUTJwRkxFbEJRVWtzUlVGQlJTeExRVUZMTEdWQlFXVTdaMEpCUTNoQ0xFOUJRVThzV1VGQldTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFbEJRVWtzUTBGQlF6czdaMEpCUldoRUxFOUJRVThzUjBGQlJ5eFhRVUZYTEVkQlFVY3NSVUZCUlN4SFFVRkhMRmxCUVZrc1JVRkJSU3hEUVVGRE8xRkJRMmhFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1QwRkJUeXhIUVVGSExFMUJRVTBzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NUMEZCVHl4RlFVRkZMRU5CUVVNN1NVRkROVVFzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRTU3h0UWtGQmJVSXNRMEZEZUVJc1lVRkJjVUlzUlVGRGNrSXNhMEpCUVdsRExFbEJRVWs3VVVGRmNrTXNTVUZCU1N4bFFVRmxMRXRCUVVzc1NVRkJTVHRaUVVNeFFpeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlF6RkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEZsQlFWa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTTdVVUZETlVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1lVRkJZU3hGUVVGRkxHVkJRV1VzUlVGQlJTeE5RVUZOTEVWQlFVVXNWMEZCVnl4RlFVRkZMRmxCUVZrc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU01Unl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTeXhoUVVGaExFTkJRVU1zYTBKQlFXbERMRWxCUVVrN1VVRkRla1FzU1VGQlNTeGxRVUZsTEV0QlFVc3NTVUZCU1R0WlFVTXhRaXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8xRkJSVEZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU03VVVGRk5VVXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzTkVKQlFXVXNRMEZCUXp0UlFVTnVSQ3gzUTBGQmQwTTdVVUZEZUVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlF6TkRMRTlCUVU4c1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMR0ZCUVdFc1JVRkJSU3hsUVVGblFpeEZRVUZGTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVc1dVRkJXU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlF5OUhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzTmtKQlFXZENMRU5CUVVNN1VVRkRMME1zVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMHNzZFVKQlFYVkNMRU5CUVVNc2FVSkJRV2RETEVsQlFVazdVVUZEYkVVc1NVRkJTU3hqUVVGakxFdEJRVXNzU1VGQlNUdFpRVU42UWl4alFVRmpMRWRCUVVjc1dVRkJXU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRXRCUVVzc1EwRkJRenRSUVVVM1JDeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3c0UWtGQlowSXNRMEZCUXp0UlFVTndSQ3gzUTBGQmQwTTdVVUZEZUVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRPVU1zYzBOQlFYTkRPMWxCUTNSRExFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xbEJRelZFTEUxQlFVMHNhMEpCUVd0Q0xFZEJRV0VzUlVGQlJTeERRVUZETzFsQlEzaERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMjVFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRzFDUVVGdFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1F5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGRk8yOUNRVU55UWl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWlN4RFFVRkRMRU5CUVVNN2FVSkJRekZETzNGQ1FVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdiMEpCUXpGQ0xIZERRVUYzUXp0dlFrRkRlRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU03YjBKQlEycERMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRwUWtGRGJFTTdjVUpCUVUwN2IwSkJRMHdzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJsQ1FVTXZRanRoUVVOR08xbEJRMFFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEY2tNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5d3JRa0ZCYVVJc1EwRkJRenRSUVVOb1JDeFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVE3T3pzN096czdPenRQUVZOSE8wbEJRMGtzTWtKQlFUSkNMRU5CUTJoRExGZEJRVzFDTEVWQlEyNUNMRmRCUVcxQ0xFVkJRMjVDTEZsQlFYRkNMRVZCUTNKQ0xGbEJRWEZDTzFGQlJYSkNMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3V1VGRGFrSXNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFhRVUYxUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUkN4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRek5ETEZsQlFWa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdVMEZEYWtRN1VVRkZSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzFsQlEycENMRmxCUVZrc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCZFVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dFRRVU01UlR0UlFVTkVMRTFCUVUwc1kwRkJZeXhIUVVGSExHbENRVUZwUWl4RFFVRkRPMUZCUTNwRExFMUJRVTBzV1VGQldTeEhRVUZITEZkQlFWY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzVjBGQlZ5eERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOd1JpeHBRMEZCYVVNN1VVRkRha01zVFVGQlRTeGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVU5zUkN4TlFVRk5MR2RDUVVGblFpeEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTjBReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1kwRkJZeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTTVReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkROMElzU1VGQlNTeFpRVUZaTzJkQ1FVTmtMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVNeFF5eEpRVUZKTEVsQlFVa3NTMEZCU3l4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTVUZCU1N4RlFVRkZPMmRDUVVOeVJDeG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQllTeERRVUZETEVOQlFVTTdZVUZEZEVNN2FVSkJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVhWQ0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRuUWtGRGJrVXNNa1JCUVRKRU8yZENRVU16UkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhIUVVGSExFZEJRVWNzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXp0blFrRkRha01zWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzJGQlEyaERPMmxDUVVGTk8yZENRVU5NTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTTNRanRUUVVOR08xRkJRMFFzVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRU96czdPenM3T3p0UFFWRkhPMGxCUTBzc1YwRkJWeXhEUVVGRExGZEJRVzFDTEVWQlFVVXNXVUZCY1VJc1JVRkJSU3haUVVGeFFqdFJRVU51Uml4dFJVRkJiVVU3VVVGRGJrVXNkMFZCUVhkRk8xRkJRM2hGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVjBGQmRVSXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxIZERRVUYzUXp0UlFVTjRReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCVnl4RlFVRkZMRVZCUVVVN1dVRkROMElzVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zTWtKQlFUSkNMRU5CUVVNc1YwRkJWeXhGUVVGRkxGZEJRVmNzUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNN1dVRkRPVVlzYlVWQlFXMUZPMWxCUTI1RkxHMUZRVUZ0UlR0WlFVTnVSU3d3UTBGQk1FTTdVVUZETlVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlNDeHBSa0ZCYVVZN1VVRkRha1lzVFVGQlRTeFJRVUZSTEVkQlFXbENMRzlDUVVGdlFpeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXk5RUxFMUJRVTBzUzBGQlN5eEhRVUZuUWl4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVTTFSQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTnlSQ3hUUVVGVExFTkJRVU1zVFVGQlRTd3JRa0ZCWlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVWNFF5eFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVThzYzBKQlFYTkNPMUZCUXpWQ0xHbEVRVUZwUkR0UlFVTnFSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFpRVUZaTEhORFFVRnZRaXhEUVVGRE8wbEJReTlETEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTlCUVU4c1EwRkJReXhYUVVGeFFpeEZRVUZGTEdWQlFUaENMRWxCUVVrN1VVRkRkRVVzYzBKQlFYTkNPMUZCUTNSQ0xFbEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNTMEZCU3l4WFFVRlhPMWxCUXk5Q0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zUTBGQlF6dFJRVU0zUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NXVUZCV1N4TFFVRkxMRWxCUVVrN1dVRkRlRVFzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4blEwRkJaME1zUTBGQlF5eERRVUZETzFGQlJYQkVMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzV1VGQldTeExRVUZMTEVsQlFVazdXVUZETVVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03WVVGREwwTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXp0WlFVTjZSU3hQUVVGUExFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVXNRMEZCUXp0aFFVTjZRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU4wUkN4UFFVRlBMRWxCUVVrc1EwRkJReXgxUWtGQmRVSXNSVUZCUlN4RFFVRkRPMkZCUTI1RExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNiVUpCUVcxQ08xbEJRM1JGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dGhRVU5zUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJRenRaUVVOeVJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1YwRkJWeXhGUVVGRkxGbEJRV0VzUTBGQlF5eERRVUZET3p0WlFVVndSQ3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETERKQ1FVRXlRanRuUWtGRGVrTXNlVUpCUVhsQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEhsQ1FVRjVRaXhYUVVGWExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlEzUkdMRU5CUVVNN1NVRkZSQ3haUVVGdFFpeEhRVUZqTzFGQlF5OUNMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVGRSVEN4alFVRlRMRWRCUVhkQ0xFbEJRVWtzUTBGQlF6dEpRVGhST1VNc1EwRkJRenREUVVOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9nUkc4Z2JtOTBJR05vWVc1blpTQjBhR1Z6WlNCcGJYQnZjblFnYkdsdVpYTWdkRzhnYldGMFkyZ2daWGgwWlhKdVlXd2diVzlrZFd4bGN5QnBiaUIzWldKd1lXTnJJR052Ym1acFozVnlZWFJwYjI0Z0tpOWNibWx0Y0c5eWRDQXFJR0Z6SUdkeWIyc2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMmR5YjJzbk8xeHVhVzF3YjNKMElDb2dZWE1nZFdrZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwzVnBKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibWx0Y0c5eWRDQjdWVzVwZEhOSVlXNWtiR1Z5ZlNCbWNtOXRJQ2N1TDNWdWFYUnpMV2hoYm1Sc1pYSW5PMXh1YVcxd2IzSjBJSHRuWlhSVGNHeHBkSFJsY2tadmNrTnZiSFZ0Yml3Z1oyVjBVM1JoZEhNc0lFNVBWRUZVU1U5T0xDQlRaWEZEYjJ4VGRHRjBjeXdnVTNCc2FYUjBaWEpHZFc1akxDQlVRVWRUZlNCbWNtOXRJQ2N1TDIxaFkzSnZiVzlzWldOMWJHVW5PMXh1WEc0dktpb2dRMnhoYzNNZ1ptOXlJR2hoYm1Sc2FXNW5JR052Ym5abGNuTnBiMjRnYjJZZ2JtOTBZWFJwYjI0Z2MzbHpkR1Z0Y3lCcGJpQk5ZV055YjIxdmJHVmpkV3hsSUdOdmJIVnRibk1nS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJPYjNSaGRHbHZia052Ym5abGNuUmxjaUJsZUhSbGJtUnpJRlZ1YVhSelNHRnVaR3hsY2lCN1hHNGdJSEJ5YVhaaGRHVWdYM053YkdsMGRHVnlPaUJUY0d4cGRIUmxja1oxYm1NZ2ZDQnVkV3hzSUQwZ2JuVnNiRHRjYmx4dUlDQndjbTkwWldOMFpXUWdaMlYwSUhOd2JHbDBkR1Z5S0NrNklGTndiR2wwZEdWeVJuVnVZeUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYM053YkdsMGRHVnlJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdkR2hwY3k1ZmMzQnNhWFIwWlhJZ1BTQm5aWFJUY0d4cGRIUmxja1p2Y2tOdmJIVnRiaWgwYUdsekxtTnZiSFZ0YmlrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzTndiR2wwZEdWeU8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklIUnZSbUZ6ZEdFb2RHRnlaMlYwVG05MFlYUnBiMjQ2SUU1UFZFRlVTVTlPS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMFlYSm5aWFJPYjNSaGRHbHZiaUE5UFQwZ1RrOVVRVlJKVDA0dVJrRlRWRUU3SUgxY2JseHVJQ0J3ZFdKc2FXTWdkRzlUWlhCaGNtRjBiM0lvZEdGeVoyVjBUbTkwWVhScGIyNDZJRTVQVkVGVVNVOU9LVG9nWW05dmJHVmhiaUI3SUhKbGRIVnliaUIwWVhKblpYUk9iM1JoZEdsdmJpQTlQVDBnVGs5VVFWUkpUMDR1VTBWUVFWSkJWRTlTT3lCOVhHNWNiaUFnY0hWaWJHbGpJSFJ2U0dWc2JTaDBZWEpuWlhST2IzUmhkR2x2YmpvZ1RrOVVRVlJKVDA0cE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUmhjbWRsZEU1dmRHRjBhVzl1SUQwOVBTQk9UMVJCVkVsUFRpNUlSVXhOT3lCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOdmJuWmxjblFnWVNCTllXTnliMjF2YkdWamRXeGxJR052YkhWdGJpQm1jbTl0SUVaQlUxUkJJSFJ2SUZORlVFRlNRVlJQVWlCdWIzUmhkR2x2Ymx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVndZWEpoZEc5eUlDQkJJSE53WldOcFptbGpJSE5sY0dGeVlYUnZjaUIwYnlCaVpTQjFjMlZrWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQm1ZWE4wWVVkaGNGTjViV0p2YkNBZ1IyRndJSE41YldKdmJDQnBiaUJHUVZOVVFTd2dKeTBuSUdKNUlHUmxabUYxYkhSY2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNBZ0lDQWdJQ0FnUVNCdVpYY2dZMjlzZFcxdUlHbHVJRk5GVUVGU1FWUlBVaUJ1YjNSaGRHbHZibHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JqYjI1MlpYSjBSbUZ6ZEdGVWIxTmxjR0Z5WVhSdmNpaHpaWEJoY21GMGIzSTZJSE4wY21sdVp5d2dabUZ6ZEdGSFlYQlRlVzFpYjJ3NklITjBjbWx1WnlCOElHNTFiR3dnUFNCdWRXeHNLVG9nUkVjdVEyOXNkVzF1SUh0Y2JpQWdJQ0JwWmlBb1ptRnpkR0ZIWVhCVGVXMWliMndnUFQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0JtWVhOMFlVZGhjRk41YldKdmJDQTlJSFJvYVhNdVpHVm1ZWFZzZEVkaGNGTjViV0p2YkR0Y2JseHVJQ0FnSUdOdmJuTjBJRzVsZDBOdmJIVnRiaUE5SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0U1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWlrN1hHNGdJQ0FnTHk4Z1lYTnphV2R1SUhSb1pTQjJZV3gxWlhNZ2RHOGdkR2hsSUc1bGQyeDVJR055WldGMFpXUWdaVzF3ZEhrZ1kyOXNkVzF1WEc0Z0lDQWdibVYzUTI5c2RXMXVMbWx1YVhRb0tHbGtlRG9nYm5WdFltVnlLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0JtWVhOMFlWQnZiSGx0WlhJZ1BTQjBhR2x6TG1OdmJIVnRiaTVuWlhRb2FXUjRLVHRjYmlBZ0lDQWdJR052Ym5OMElHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTQTlJSFJvYVhNdWMzQnNhWFIwWlhJb1ptRnpkR0ZRYjJ4NWJXVnlLVHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWm1GemRHRk5iMjV2YldWeWMwRnljbUY1TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNobVlYTjBZVTF2Ym05dFpYSnpRWEp5WVhsYmFWMGdQVDA5SUdaaGMzUmhSMkZ3VTNsdFltOXNLVnh1SUNBZ0lDQWdJQ0FnSUdaaGMzUmhUVzl1YjIxbGNuTkJjbkpoZVZ0cFhTQTlJRlZ1YVhSelNHRnVaR3hsY2k1ZlpHVm1ZWFZzZEVkaGNGTjViV0p2YkhORWFXTjBMbE5GVUVGU1FWUlBVanRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQm1ZWE4wWVUxdmJtOXRaWEp6UVhKeVlYa3VhbTlwYmloelpYQmhjbUYwYjNJcE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvUkVjdVZFRkhVeTVWVGtsVVV5d2dUazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNLVHRjYmlBZ0lDQnVaWGREYjJ4MWJXNHVjMlYwVkdGbktGUkJSMU11YzJWd1lYSmhkRzl5TENCelpYQmhjbUYwYjNJcE8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhkRGIyeDFiVzQ3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1IyVjBJSFJvWlNCM2NtRndjR1Z5SUhOMGNtbHVaM01nWm05eUlFaEZURTBzSUdSbGNHVnVaR2x1WnlCdmJpQjBhR1VnZEhsd1pTQnZaaUIwYUdWY2JpQWdJQ29nYldGamNtOXRiMnhsWTNWc1pTQW9jR1Z3ZEdsa1pTd2dSRTVCTENCU1RrRXBYRzRnSUNBcVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMXRkZlNCQmNuSmhlU0J2WmlCM2NtRndjR1Z5YzF4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCblpYUklaV3h0VjNKaGNIQmxjbk1vS1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0FnSUdOdmJuTjBJSEJ5WldacGVDQTlJQ2gwYUdsekxtbHpSRzVoS0NrcElEOGdKMFJPUVRGN0p5QTZYRzRnSUNBZ0lDQW9kR2hwY3k1cGMxSnVZU2dwS1NBL0lDZFNUa0V4ZXljZ09seHVJQ0FnSUNBZ0lDQW9kR2hwY3k1cGMxQmxjSFJwWkdVb0tTa2dQeUFuVUVWUVZFbEVSVEY3SnlBNlhHNGdJQ0FnSUNBZ0lDQWdKMVZ1YTI1dmQyNG5PeUF2THlCMGFHbHpJR05oYzJVZ2MyaHZkV3hrSUdKbElHaGhibVJzWldRZ1lYTWdaWGhqWlhCMGFXOXVZV3hjYmx4dUlDQWdJR2xtSUNod2NtVm1hWGdnUFQwOUlDZFZibXR1YjNkdUp5bGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblRtVnBkR2hsY2lCd1pYQjBhV1JsTENCdWIzSWdiblZqYkdWdmRHbGtaU2NwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjRzl6ZEdacGVDQTlJQ2Q5SkNRa0p6dGNiaUFnSUNCamIyNXpkQ0JzWldaMFYzSmhjSEJsY2lBOUlDaDBhR2x6TG1selJHNWhLQ2twSUQ4Z0owUW9KeUE2WEc0Z0lDQWdJQ0FvZEdocGN5NXBjMUp1WVNncEtTQS9JQ2RTS0NjZ09pQW5KenNnTHk4Z2JtOGdkM0poY0hCbGNpQm1iM0lnY0dWd2RHbGtaWE5jYmlBZ0lDQmpiMjV6ZENCeWFXZG9kRmR5WVhCd1pYSWdQU0FvZEdocGN5NXBjMFJ1WVNncElIeDhJSFJvYVhNdWFYTlNibUVvS1NrZ1B5QW5LVkFuSURvZ0p5YzdJQzh2SUc1dklIZHlZWEJ3WlhJZ1ptOXlJSEJsY0hScFpHVnpYRzRnSUNBZ2NtVjBkWEp1SUZ0d2NtVm1hWGdzSUd4bFpuUlhjbUZ3Y0dWeUxDQnlhV2RvZEZkeVlYQndaWElzSUhCdmMzUm1hWGhkTzF4dUlDQjlYRzVjYmlBZ0x5OGdRU0JvWld4d1pYSWdablZ1WTNScGIyNGdabTl5SUdOdmJuWmxjblJwYm1jZ2MzUnlhVzVuY3lCMGJ5QklSVXhOWEc0Z0lIQnlhWFpoZEdVZ1kyOXVkbVZ5ZEZSdlNHVnNiVWhsYkhCbGNpaGNiaUFnSUNCemIzVnlZMlZRYjJ4NWJXVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2MyOTFjbU5sUjJGd1UzbHRZbTlzT2lCemRISnBibWNzWEc0Z0lDQWdjSEpsWm1sNE9pQnpkSEpwYm1jc1hHNGdJQ0FnYkdWbWRGZHlZWEJ3WlhJNklITjBjbWx1Wnl4Y2JpQWdJQ0J5YVdkb2RGZHlZWEJ3WlhJNklITjBjbWx1Wnl4Y2JpQWdJQ0J3YjNOMFptbDRPaUJ6ZEhKcGJtZGNiaUFnS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0JqYjI1emRDQnRiMjV2YldWeVFYSnlZWGtnUFNCMGFHbHpMbk53YkdsMGRHVnlLSE52ZFhKalpWQnZiSGx0WlhJcE8xeHVJQ0FnSUdOdmJuTjBJRzF2Ym05dFpYSklaV3h0UVhKeVlYazZJSE4wY21sdVoxdGRJRDBnYlc5dWIyMWxja0Z5Y21GNUxtMWhjQ2dvYlcwNklITjBjbWx1WnlrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0cxdElEMDlQU0J6YjNWeVkyVkhZWEJUZVcxaWIyd3BYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQlZibWwwYzBoaGJtUnNaWEl1WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNUlSVXhOTzF4dUlDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lDUjdiR1ZtZEZkeVlYQndaWEo5Skh0dGJYMGtlM0pwWjJoMFYzSmhjSEJsY24xZ08xeHVJQ0FnSUgwcE8xeHVJQ0FnSUhKbGRIVnliaUJnSkh0d2NtVm1hWGg5Skh0dGIyNXZiV1Z5U0dWc2JVRnljbUY1TG1wdmFXNG9KeTRuS1gwa2UzQnZjM1JtYVhoOVlEdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYjI1MlpYSjBJR0VnYzNSeWFXNW5JSGRwZEdnZ1UwVlFRVkpCVkU5U0wwWkJVMVJCSUc1dmRHRjBhVzl1SUhSdklFaEZURTFjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhOdmRYSmpaVkJ2YkhsdFpYSWdJRUVnYzNSeWFXNW5JSFJ2SUdKbElHTnZiblpsY25SbFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaeUI4SUc1MWJHeDlJSE52ZFhKalpVZGhjRk41YldKdmJDQWdRVzRnYjNCMGFXOXVZV3dnWjJGd0lITjViV0p2YkN3Z2MyVjBJSFJ2WEc0Z0lDQXFJR1JsWm1GMWJIUWdkbUZzZFdWeklDZ25MU2NnWm05eUlFWkJVMVJCSUdGdVpDQW5KeUJtYjNJZ1UwVlFRVkpCVkU5U0tTQjFibXhsYzNNZ2MzQmxZMmxtYVdWa1hHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnSUZSb1pTQjBZWEpuWlhRZ1NFVk1UU0J6ZEhKcGJtZGNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmpiMjUyWlhKMFUzUnlhVzVuVkc5SVpXeHRLRnh1SUNBZ0lITnZkWEpqWlZCdmJIbHRaWEk2SUhOMGNtbHVaeXhjYmlBZ0lDQnpiM1Z5WTJWSFlYQlRlVzFpYjJ3NklITjBjbWx1WnlCOElHNTFiR3dnUFNCdWRXeHNYRzRnSUNrNklITjBjbWx1WnlCN1hHNGdJQ0FnYVdZZ0tITnZkWEpqWlVkaGNGTjViV0p2YkNBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUhOdmRYSmpaVWRoY0ZONWJXSnZiQ0E5SUhSb2FYTXVaR1ZtWVhWc2RFZGhjRk41YldKdmJEdGNiaUFnSUNCamIyNXpkQ0JiY0hKbFptbDRMQ0JzWldaMFYzSmhjSEJsY2l3Z2NtbG5hSFJYY21Gd2NHVnlMQ0J3YjNOMFptbDRYU0E5SUhSb2FYTXVaMlYwU0dWc2JWZHlZWEJ3WlhKektDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl1ZG1WeWRGUnZTR1ZzYlVobGJIQmxjaWh6YjNWeVkyVlFiMng1YldWeUxDQnpiM1Z5WTJWSFlYQlRlVzFpYjJ3c0lIQnlaV1pwZUN3Z2JHVm1kRmR5WVhCd1pYSXNJSEpwWjJoMFYzSmhjSEJsY2l3Z2NHOXpkR1pwZUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZG1WeWRDQmhJR052YkhWdGJpQjBieUJJUlV4TlhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bklId2diblZzYkgwZ2MyOTFjbU5sUjJGd1UzbHRZbTlzWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjFjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWTI5dWRtVnlkRlJ2U0dWc2JTaHpiM1Z5WTJWSFlYQlRlVzFpYjJ3NklITjBjbWx1WnlCOElHNTFiR3dnUFNCdWRXeHNLVG9nUkVjdVEyOXNkVzF1SUh0Y2JpQWdJQ0JwWmlBb2MyOTFjbU5sUjJGd1UzbHRZbTlzSUQwOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnYzI5MWNtTmxSMkZ3VTNsdFltOXNJRDBnZEdocGN5NWtaV1poZFd4MFIyRndVM2x0WW05c08xeHVYRzRnSUNBZ1kyOXVjM1FnVzNCeVpXWnBlQ3dnYkdWbWRGZHlZWEJ3WlhJc0lISnBaMmgwVjNKaGNIQmxjaXdnY0c5emRHWnBlRjBnUFNCMGFHbHpMbWRsZEVobGJHMVhjbUZ3Y0dWeWN5Z3BPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzZFcxdUlEMGdkR2hwY3k1blpYUk9aWGREYjJ4MWJXNG9UazlVUVZSSlQwNHVTRVZNVFNrN1hHNGdJQ0FnTHk4Z1lYTnphV2R1SUhSb1pTQjJZV3gxWlhNZ2RHOGdkR2hsSUdWdGNIUjVJR052YkhWdGJseHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1cGJtbDBLQ2hwWkhnNklHNTFiV0psY2lrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2MyOTFjbU5sVUc5c2VXMWxjaUE5SUhSb2FYTXVZMjlzZFcxdUxtZGxkQ2hwWkhncE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl1ZG1WeWRGUnZTR1ZzYlVobGJIQmxjaWh6YjNWeVkyVlFiMng1YldWeUxDQnpiM1Z5WTJWSFlYQlRlVzFpYjJ3aExDQndjbVZtYVhnc0lHeGxablJYY21Gd2NHVnlMQ0J5YVdkb2RGZHlZWEJ3WlhJc0lIQnZjM1JtYVhncE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvUkVjdVZFRkhVeTVWVGtsVVV5d2dUazlVUVZSSlQwNHVTRVZNVFNrN1hHNGdJQ0FnY21WMGRYSnVJRzVsZDBOdmJIVnRianRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGIyNTJaWEowSUZORlVFRlNRVlJQVWlCamIyeDFiVzRnZEc4Z1JrRlRWRUVnYm05MFlYUnBiMjVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWNnZkNCdWRXeHNmU0JtWVhOMFlVZGhjRk41YldKdmJDQlBjSFJwYjI1aGJDQm5ZWEFnYzNsdFltOXNJR1p2Y2lCR1FWTlVRVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVSeTVEYjJ4MWJXNTlJQ0JEYjI1MlpYSjBaV1FnWTI5c2RXMXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJR052Ym5abGNuUlRaWEJoY21GMGIzSlViMFpoYzNSaEtHWmhjM1JoUjJGd1UzbHRZbTlzT2lCemRISnBibWNnZkNCdWRXeHNJRDBnYm5Wc2JDazZJRVJITGtOdmJIVnRiaUI3WEc0Z0lDQWdhV1lnS0daaGMzUmhSMkZ3VTNsdFltOXNJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdabUZ6ZEdGSFlYQlRlVzFpYjJ3Z1BTQlZibWwwYzBoaGJtUnNaWEl1WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNUdRVk5VUVR0Y2JseHVJQ0FnSUdOdmJuTjBJRzVsZDBOdmJIVnRiaUE5SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0U1UFZFRlVTVTlPTGtaQlUxUkJLVHRjYmlBZ0lDQXZMeUJoYzNOcFoyNGdkR2hsSUhaaGJIVmxjeUIwYnlCMGFHVWdaVzF3ZEhrZ1kyOXNkVzF1WEc0Z0lDQWdibVYzUTI5c2RXMXVMbWx1YVhRb0tHbGtlRG9nYm5WdFltVnlLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J6WlhCaGNtRjBiM0pRYjJ4NWJXVnlJRDBnZEdocGN5NWpiMngxYlc0dVoyVjBLR2xrZUNrN1hHNGdJQ0FnSUNBdkx5QnBkR1Z0Y3lCallXNGdZbVVnYlc5dWIyMWxjbk1nYjNJZ2MyVndZWEpoZEc5eWMxeHVJQ0FnSUNBZ1kyOXVjM1FnYzJWd1lYSmhkRzl5U1hSbGJYTkJjbkpoZVNBOUlIUm9hWE11YzNCc2FYUjBaWElvYzJWd1lYSmhkRzl5VUc5c2VXMWxjaWs3WEc0Z0lDQWdJQ0JqYjI1emRDQm1ZWE4wWVUxdmJtOXRaWEp6UVhKeVlYazZJSE4wY21sdVoxdGRJRDBnVzEwN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElITmxjR0Z5WVhSdmNrbDBaVzF6UVhKeVlYa3ViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVhSbGJTQTlJSE5sY0dGeVlYUnZja2wwWlcxelFYSnlZWGxiYVYwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwZEdWdExteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0daaGMzUmhSMkZ3VTNsdFltOXNJU2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2FYUmxiUzVzWlc1bmRHZ2dQaUF4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnZEdobElHTmhjMlVnYjJZZ1lTQnRkV3gwYVMxamFHRnlZV04wWlhJZ2JXOXViMjFsY2x4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUcxdmJtOXRaWElnUFNBbld5Y2dLeUJwZEdWdElDc2dKMTBuTzF4dUlDQWdJQ0FnSUNBZ0lHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0cxdmJtOXRaWElwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0dsMFpXMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdabUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVMbXB2YVc0b0p5Y3BPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lHNWxkME52YkhWdGJpNXpaWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeXdnVGs5VVFWUkpUMDR1UmtGVFZFRXBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dJRU52Ym5abGNuUWdTRVZNVFNCemRISnBibWNnZEc4Z1JrRlRWRUV2VTBWUVFWSkJWRTlTWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCb1pXeHRVRzlzZVcxbGNpQWdJQ0JCSUhOMGNtbHVaeUIwYnlCaVpTQmpiMjUyWlhKMFpXUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhSbmRFNXZkR0YwYVc5dUlDQWdJRlJoY21kbGRDQnViM1JoZEdsdmJqb2dSa0ZUVkVFZ2IzSWdVMFZRUVZKQlZFOVNYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFozUlRaWEJoY21GMGIzSWdJQ0JQY0hScGIyNWhiQ0IwWVhKblpYUWdjMlZ3WVhKaGRHOXlJQ2htYjNJZ1NFVk1UU0F0UGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVp5QjhJRzUxYkd4OUlIUm5kRWRoY0ZONWJXSnZiQ0FnSUU5d2RHbHZibUZzSUhSaGNtZGxkQ0JuWVhBZ2MzbHRZbTlzWEc0Z0lDQXFJRk5GVUVGU1FWUlBVaWxjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkRiMjUyWlhKMFpXUWdjM1J5YVc1blhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1kyOXVkbVZ5ZEVobGJHMVViMFpoYzNSaFUyVndZWEpoZEc5eUtGeHVJQ0FnSUdobGJHMVFiMng1YldWeU9pQnpkSEpwYm1jc0lGeHVJQ0FnSUhSbmRFNXZkR0YwYVc5dU9pQnpkSEpwYm1jc0lGeHVJQ0FnSUhSbmRGTmxjR0Z5WVhSdmNqODZJSE4wY21sdVp5d2dYRzRnSUNBZ2RHZDBSMkZ3VTNsdFltOXNQem9nYzNSeWFXNW5YRzRnSUNrNklITjBjbWx1WnlCN1hHNGdJQ0FnYVdZZ0tDRjBaM1JIWVhCVGVXMWliMndwSUh0Y2JpQWdJQ0FnSUhSbmRFZGhjRk41YldKdmJDQTlJQ2gwYUdsekxuUnZSbUZ6ZEdFb2RHZDBUbTkwWVhScGIyNGdZWE1nVGs5VVFWUkpUMDRwS1NBL1hHNGdJQ0FnSUNBZ0lGVnVhWFJ6U0dGdVpHeGxjaTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExrWkJVMVJCSURwY2JpQWdJQ0FnSUNBZ1ZXNXBkSE5JWVc1a2JHVnlMbDlrWldaaGRXeDBSMkZ3VTNsdFltOXNjMFJwWTNRdVUwVlFRVkpCVkU5U08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hkR2QwVTJWd1lYSmhkRzl5S1NCN1hHNGdJQ0FnSUNCMFozUlRaWEJoY21GMGIzSWdQU0FvZEdocGN5NTBiMFpoYzNSaEtIUm5kRTV2ZEdGMGFXOXVJR0Z6SUU1UFZFRlVTVTlPS1NrZ1B5QW5KeUE2SUhSb2FYTXVjMlZ3WVhKaGRHOXlPMXh1SUNBZ0lIMWNiaUFnSUNCamIyNXpkQ0JvWld4dFYzSmhjSEJsY25OU1pTQTlJQzhvVWx4Y0tIeEVYRndvZkZ4Y0tYeFFLUzluTzF4dUlDQWdJR052Ym5OMElHbHpUblZqYkdWdmRHbGtaU0E5SUdobGJHMVFiMng1YldWeUxuTjBZWEowYzFkcGRHZ29KMFJPUVNjcElIeDhJR2hsYkcxUWIyeDViV1Z5TG5OMFlYSjBjMWRwZEdnb0oxSk9RU2NwTzF4dUlDQWdJQzh2SUdsMFpXMXpJR05oYmlCaVpTQnRiMjV2YldWeWN5QnZjaUJvWld4dGMxeHVJQ0FnSUdOdmJuTjBJR2hsYkcxSmRHVnRjMEZ5Y21GNUlEMGdkR2hwY3k1emNHeHBkSFJsY2lob1pXeHRVRzlzZVcxbGNpazdYRzRnSUNBZ1kyOXVjM1FnZEdkMFRXOXViMjFsY25OQmNuSmhlVG9nYzNSeWFXNW5XMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHaGxiRzFKZEdWdGMwRnljbUY1TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnNaWFFnYVhSbGJTQTlJR2hsYkcxSmRHVnRjMEZ5Y21GNVcybGRPMXh1SUNBZ0lDQWdhV1lnS0dselRuVmpiR1Z2ZEdsa1pTbGNiaUFnSUNBZ0lDQWdhWFJsYlNBOUlHbDBaVzB1Y21Wd2JHRmpaU2hvWld4dFYzSmhjSEJsY25OU1pTd2dKeWNwTzF4dUlDQWdJQ0FnYVdZZ0tHbDBaVzBnUFQwOUlGVnVhWFJ6U0dGdVpHeGxjaTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExraEZURTBwSUh0Y2JpQWdJQ0FnSUNBZ2RHZDBUVzl1YjIxbGNuTkJjbkpoZVM1d2RYTm9LSFJuZEVkaGNGTjViV0p2YkNFcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG5SdlJtRnpkR0VvZEdkMFRtOTBZWFJwYjI0Z1lYTWdUazlVUVZSSlQwNHBJQ1ltSUdsMFpXMHViR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJQ0FnSUNBdkx5QjBhR1VnWTJGelpTQnZaaUJoSUcxMWJIUnBMV05vWVhKaFkzUmxjaUJ0YjI1dmJXVnlJR052Ym5abGNuUmxaQ0IwYnlCR1FWTlVRVnh1SUNBZ0lDQWdJQ0JqYjI1emRDQnRiMjV2YldWeUlEMGdKMXNuSUNzZ2FYUmxiU0FySUNkZEp6dGNiaUFnSUNBZ0lDQWdkR2QwVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0cxdmJtOXRaWElwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdkMFRXOXViMjFsY25OQmNuSmhlUzV3ZFhOb0tHbDBaVzBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHZDBUVzl1YjIxbGNuTkJjbkpoZVM1cWIybHVLSFJuZEZObGNHRnlZWFJ2Y2lrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dJRU52Ym5abGNuUWdTRVZNVFNCamIyeDFiVzRnZEc4Z1JrRlRWRUV2VTBWUVFWSkJWRTlTWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFozUk9iM1JoZEdsdmJpQWdJQ0JVWVhKblpYUWdibTkwWVhScGIyNDZJRVpCVTFSQklHOXlJRk5GVUVGU1FWUlBVbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHZDBVMlZ3WVhKaGRHOXlJQ0FnVDNCMGFXOXVZV3dnZEdGeVoyVjBJSE5sY0dGeVlYUnZjaUFvWm05eUlFaEZURTBnTFQ1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtY2dmQ0J1ZFd4c2ZTQjBaM1JIWVhCVGVXMWliMndnSUNCUGNIUnBiMjVoYkNCMFlYSm5aWFFnWjJGd0lITjViV0p2YkZ4dUlDQWdLaUJUUlZCQlVrRlVUMUlwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjBnUTI5dWRtVnlkR1ZrSUdOdmJIVnRibHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JqYjI1MlpYSjBTR1ZzYlNoMFozUk9iM1JoZEdsdmJqb2djM1J5YVc1bkxDQjBaM1JUWlhCaGNtRjBiM0kvT2lCemRISnBibWNzSUhSbmRFZGhjRk41YldKdmJEODZJSE4wY21sdVp5azZJRVJITGtOdmJIVnRiaUI3WEc0Z0lDQWdMeThnVkdocGN5Qm1kVzVqZEdsdmJpQnRkWE4wSUc1dmRDQmpiMjUwWVdsdUlHTmhiR3h6SUc5bUlHbHpSRzVoS0NrZ1lXNWtJR2x6VW01aEtDa3NJR1p2Y2x4dUlDQWdJQzh2SUhOdmRYSmpaU0JvWld4dElHTnZiSFZ0Ym5NZ2JXRjVJR052Ym5SaGFXNGdVazVCTENCRVRrRWdZVzVrSUZCVUlHRmpjbTl6Y3lCa2FXWm1aWEpsYm5RZ2NtOTNjMXh1SUNBZ0lHTnZibk4wSUc1bGQwTnZiSFZ0YmlBOUlIUm9hWE11WjJWMFRtVjNRMjlzZFcxdUtIUm5kRTV2ZEdGMGFXOXVJR0Z6SUU1UFZFRlVTVTlPS1R0Y2JpQWdJQ0F2THlCaGMzTnBaMjRnZEdobElIWmhiSFZsY3lCMGJ5QjBhR1VnWlcxd2RIa2dZMjlzZFcxdVhHNGdJQ0FnYm1WM1EyOXNkVzF1TG1sdWFYUW9LR2xrZURvZ2JuVnRZbVZ5S1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCb1pXeHRVRzlzZVcxbGNpQTlJSFJvYVhNdVkyOXNkVzF1TG1kbGRDaHBaSGdwTzF4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEVobGJHMVViMFpoYzNSaFUyVndZWEpoZEc5eUtHaGxiRzFRYjJ4NWJXVnlMQ0IwWjNST2IzUmhkR2x2Yml3Z2RHZDBVMlZ3WVhKaGRHOXlMQ0IwWjNSSFlYQlRlVzFpYjJ3cE8xeHVJQ0FnSUNBZ0x5OGdkMlVnWTJGdWJtOTBJSFZ6WlNCcGMwUnVZU2dwSUc5eUlHbHpVbTVoS0NrZ1ltVmpZWFZ6WlNCemIzVnlZMlVnYUdWc2JTQmpiMngxYlc1eklHTmhibHh1SUNBZ0lDQWdMeThnWTI5dWRHRnBiaUJFVGtFc0lGSk9RU0JoYm1RZ1VGUWdhVzRnWkdsbVptVnlaVzUwSUdObGJHeHpMQ0J6YnlCMGFHVWdZMjl5Y21WemNHOXVaR2x1WjF4dUlDQWdJQ0FnTHk4Z2RHRm5jeUJqWVc1dWIzUWdZbVVnYzJWMElHWnZjaUIwYUdVZ2QyaHZiR1VnWTI5c2RXMXVYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQXZMeUJVUVVkVExtRnNhV2R1WldRZ2FYTWdiV0Z1WkdGMGIzSjVJR1p2Y2lCamIyeDFiVzV6SUc5bUlFNVBWRUZVU1U5T0xrWkJVMVJCSUdGdVpDQk9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSmNiaUFnSUNCamIyNXpkQ0J6Y0d4cGRIUmxjam9nVTNCc2FYUjBaWEpHZFc1aklEMGdaMlYwVTNCc2FYUjBaWEpHYjNKRGIyeDFiVzRvYm1WM1EyOXNkVzF1S1R0Y2JpQWdJQ0JqYjI1emRDQnpkR0YwY3pvZ1UyVnhRMjlzVTNSaGRITWdQU0JuWlhSVGRHRjBjeWh1WlhkRGIyeDFiVzRzSURVc0lITndiR2wwZEdWeUtUdGNiaUFnSUNCamIyNXpkQ0JoYkdsbmJtVmtJRDBnYzNSaGRITXVjMkZ0WlV4bGJtZDBhQ0EvSUNkVFJWRXVUVk5CSnlBNklDZFRSVkVuTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29WRUZIVXk1aGJHbG5ibVZrTENCaGJHbG5ibVZrS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ1WlhkRGIyeDFiVzQ3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUdOdmJuWmxjblJJWld4dFZHOVRaWEJoY21GMGIzSW9LVG9nUkVjdVEyOXNkVzF1SUh0Y2JpQWdJQ0F2THlCVVQwUlBPaUJwYlhCc1pXMWxiblJoZEdsdmNtVjBkWEp1SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVoyVjBUbVYzUTI5c2RXMXVLRTVQVkVGVVNVOU9MbE5GVUVGU1FWUlBVaWs3WEc0Z0lIMWNibHh1SUNBdktpb2dSR2x6Y0dGMFkyaGxjaUJ0WlhSb2IyUWdabTl5SUc1dmRHRjBhVzl1SUdOdmJuWmxjbk5wYjI1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdE9UMVJCVkVsUFRuMGdkR2QwVG05MFlYUnBiMjRnSUNCT2IzUmhkR2x2YmlCM1pTQjNZVzUwSUhSdklHTnZiblpsY25RZ2RHOWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWNnZkNCdWRXeHNmU0IwWjNSVFpYQmhjbUYwYjNJZ0lDQlFiM056YVdKc1pTQnpaWEJoY21GMGIzSmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFY3VRMjlzZFcxdWZTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCRGIyNTJaWEowWldRZ1kyOXNkVzF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWRtVnlkQ2gwWjNST2IzUmhkR2x2YmpvZ1RrOVVRVlJKVDA0c0lIUm5kRk5sY0dGeVlYUnZjam9nYzNSeWFXNW5JSHdnYm5Wc2JDQTlJRzUxYkd3cE9pQkVSeTVEYjJ4MWJXNGdlMXh1SUNBZ0lDOHZJSEJ2YzNOcFlteGxJR1Y0WTJWd2RHbHZibk5jYmlBZ0lDQnBaaUFvZEdocGN5NXViM1JoZEdsdmJpQTlQVDBnZEdkMFRtOTBZWFJwYjI0cFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjNSbmRDQnViM1JoZEdsdmJpQnBjeUJwYm5aaGJHbGtKeWs3WEc0Z0lDQWdhV1lnS0hSb2FYTXVkRzlUWlhCaGNtRjBiM0lvZEdkMFRtOTBZWFJwYjI0cElDWW1JSFJuZEZObGNHRnlZWFJ2Y2lBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduZEdkMElITmxjR0Z5WVhSdmNpQnBjeUJ1YjNRZ2MzQmxZMmxtYVdWa0p5azdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXBjMFpoYzNSaEtDa2dKaVlnZEdocGN5NTBiMU5sY0dGeVlYUnZjaWgwWjNST2IzUmhkR2x2YmlrZ0ppWWdkR2QwVTJWd1lYSmhkRzl5SUNFOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEVaaGMzUmhWRzlUWlhCaGNtRjBiM0lvZEdkMFUyVndZWEpoZEc5eUtUdGNiaUFnSUNCbGJITmxJR2xtSUNnb2RHaHBjeTVwYzBaaGMzUmhLQ2tnZkh3Z2RHaHBjeTVwYzFObGNHRnlZWFJ2Y2lncEtTQW1KaUIwYUdsekxuUnZTR1ZzYlNoMFozUk9iM1JoZEdsdmJpa3BYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjI1MlpYSjBWRzlJWld4dEtDazdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RHaHBjeTVwYzFObGNHRnlZWFJ2Y2lncElDWW1JSFJvYVhNdWRHOUdZWE4wWVNoMFozUk9iM1JoZEdsdmJpa3BYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjI1MlpYSjBVMlZ3WVhKaGRHOXlWRzlHWVhOMFlTZ3BPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIUm9hWE11YVhOSVpXeHRLQ2tnSmlZZ2RHaHBjeTUwYjBaaGMzUmhLSFJuZEU1dmRHRjBhVzl1S1NrZ0x5OGdkR2hsSUdOaGMyVWdiMllnU0VWTVRWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl1ZG1WeWRFaGxiRzBvZEdkMFRtOTBZWFJwYjI0cE8xeHVJQ0FnSUdWc2MyVWdhV1lnS0hSb2FYTXVhWE5JWld4dEtDa2dKaVlnZEdocGN5NTBiMU5sY0dGeVlYUnZjaWgwWjNST2IzUmhkR2x2YmlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjUyWlhKMFNHVnNiU2gwWjNST2IzUmhkR2x2Yml3Z2RHZDBVMlZ3WVhKaGRHOXlJU2s3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RPYjNRZ2MzVndjRzl5ZEdWa0lHTnZiblpsY25OcGIyNGdKeUFyWEc0Z0lDQWdJQ0FnSUdCbWNtOXRJSE52ZFhKalpTQnViM1JoZEdsdmJpQW5KSHQwYUdsekxtNXZkR0YwYVc5dWZTY2dkRzhnZEdGeVoyVjBJRzV2ZEdGMGFXOXVJQ2NrZTNSbmRFNXZkR0YwYVc5dWZTY3VZQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb1kyOXNPaUJFUnk1RGIyeDFiVzRwSUh0Y2JpQWdJQ0J6ZFhCbGNpaGpiMndwTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgZGV0ZWN0QWxwaGFiZXQsIGdldFNwbGl0dGVyRm9yQ29sdW1uLCBnZXRTdGF0cywgc3BsaXR0ZXJBc0Zhc3RhIH0gZnJvbSAnLi9tYWNyb21vbGVjdWxlJztcbi8qKiBDbGFzcyBmb3IgaGFuZGxpbmcgbm90YXRpb24gdW5pdHMgaW4gTWFjcm9tb2xlY3VsZSBjb2x1bW5zICovXG5leHBvcnQgY2xhc3MgVW5pdHNIYW5kbGVyIHtcbiAgICBzdGF0aWMgc2V0VW5pdHNUb0Zhc3RhQ29sdW1uKGNvbCkge1xuICAgICAgICBpZiAoY29sLnNlbVR5cGUgIT09IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFzdGEgY29sdW1uIG11c3QgYmUgTUFDUk9NT0xFQ1VMRScpO1xuICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKGNvbCwgNSwgc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICAgICAgY29uc3QgYWxpZ25lZCA9IHN0YXRzLnNhbWVMZW5ndGggPyAnU0VRLk1TQScgOiAnU0VRJztcbiAgICAgICAgY29uc3QgYWxwaGFiZXQgPSBkZXRlY3RBbHBoYWJldChzdGF0cyk7XG4gICAgICAgIGNvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKTtcbiAgICAgICAgY29sLnNldFRhZyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8sIGFsaWduZWQpO1xuICAgICAgICBjb2wuc2V0VGFnKFwiYWxwaGFiZXRcIiAvKiBUQUdTLmFscGhhYmV0ICovLCBhbHBoYWJldCk7XG4gICAgfVxuICAgIGdldCB1bml0cygpIHsgcmV0dXJuIHRoaXMuX3VuaXRzOyB9XG4gICAgZ2V0IGNvbHVtbigpIHsgcmV0dXJuIHRoaXMuX2NvbHVtbjsgfVxuICAgIGdldCBub3RhdGlvbigpIHsgcmV0dXJuIHRoaXMuX25vdGF0aW9uOyB9XG4gICAgZ2V0IGRlZmF1bHRHYXBTeW1ib2woKSB7IHJldHVybiB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sOyB9XG4gICAgZ2V0IHNlcGFyYXRvcigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSAoX2EgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMubm90YXRpb24gPT09IFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovICYmIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXBhcmF0b3IgaXMgbWFuZGF0b3J5ICBmb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScuYCk7XG4gICAgICAgIHJldHVybiBzZXBhcmF0b3I7XG4gICAgfVxuICAgIGdldCBhbGlnbmVkKCkge1xuICAgICAgICBjb25zdCBhbGlnbmVkID0gdGhpcy5jb2x1bW4uZ2V0VGFnKFwiYWxpZ25lZFwiIC8qIFRBR1MuYWxpZ25lZCAqLyk7XG4gICAgICAgIC8vIFRBR1MuYWxpZ25lZCBpcyBtYW5kYXRvcnkgZm9yIGNvbHVtbnMgb2YgTk9UQVRJT04uRkFTVEEgYW5kIE5PVEFUSU9OLlNFUEFSQVRPUlxuICAgICAgICBpZiAoIWFsaWduZWQgJiYgKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZyBhbGlnbmVkIG5vdCBzZXQnKTtcbiAgICAgICAgcmV0dXJuIGFsaWduZWQ7XG4gICAgfVxuICAgIC8qKiBBbHBoYWJldCBuYW1lICh1cHBlciBjYXNlKSAqL1xuICAgIGdldCBhbHBoYWJldCgpIHtcbiAgICAgICAgY29uc3QgYWxwaGFiZXQgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCJhbHBoYWJldFwiIC8qIFRBR1MuYWxwaGFiZXQgKi8pO1xuICAgICAgICAvLyBUQUdTLmFscGhhYmV0IGlzIG1hbmRhdG9yeSBmb3IgY29sdW1ucyBvZiBOT1RBVElPTi5GQVNUQSBhbmQgTk9UQVRJT04uU0VQQVJBVE9SXG4gICAgICAgIGlmICghYWxwaGFiZXQgJiYgKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZyBhbHBoYWJldCBub3Qgc2V0Jyk7XG4gICAgICAgIHJldHVybiBhbHBoYWJldDtcbiAgICB9XG4gICAgZ2V0QWxwaGFiZXRTaXplKCkge1xuICAgICAgICBpZiAodGhpcy5ub3RhdGlvbiA9PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovIHx8IHRoaXMuYWxwaGFiZXQgPT0gXCJVTlwiIC8qIEFMUEhBQkVULlVOICovKSB7XG4gICAgICAgICAgICBjb25zdCBhbHBoYWJldFNpemVTdHIgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCIuYWxwaGFiZXRTaXplXCIgLyogVEFHUy5hbHBoYWJldFNpemUgKi8pO1xuICAgICAgICAgICAgbGV0IGFscGhhYmV0U2l6ZTtcbiAgICAgICAgICAgIGlmIChhbHBoYWJldFNpemVTdHIpIHtcbiAgICAgICAgICAgICAgICBhbHBoYWJldFNpemUgPSBwYXJzZUludChhbHBoYWJldFNpemVTdHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGFscGhhYmV0U2l6ZSBvbiBkZW1hbmRcbiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdHRlciA9IGdldFNwbGl0dGVyRm9yQ29sdW1uKHRoaXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKHRoaXMuY29sdW1uLCAxLCBzcGxpdHRlcik7XG4gICAgICAgICAgICAgICAgYWxwaGFiZXRTaXplID0gT2JqZWN0LmtleXMoc3RhdHMuZnJlcSkubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFscGhhYmV0U2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5hbHBoYWJldCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJQVFwiIC8qIEFMUEhBQkVULlBUICovOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkROQVwiIC8qIEFMUEhBQkVULkROQSAqLzpcbiAgICAgICAgICAgICAgICBjYXNlIFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgICAgICAgICBjYXNlICdOVCc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5leHBlY3RlZCBhbHBoYWJldCAnTlQnLmApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYWxwaGFiZXQgJyR7dGhpcy5hbHBoYWJldH0nLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldEFscGhhYmV0SXNNdWx0aWNoYXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm5vdGF0aW9uID09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi8gfHwgdGhpcy5hbHBoYWJldCA9PSBcIlVOXCIgLyogQUxQSEFCRVQuVU4gKi8pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZ2V0VGFnKFwiLmFscGhhYmV0SXNNdWx0aWNoYXJcIiAvKiBUQUdTLmFscGhhYmV0SXNNdWx0aWNoYXIgKi8pID09ICd0cnVlJztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5ub3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLm5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMubm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICBpc1JuYSgpIHsgcmV0dXJuIHRoaXMuYWxwaGFiZXQgPT09IFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOyB9XG4gICAgaXNEbmEoKSB7IHJldHVybiB0aGlzLmFscGhhYmV0ID09PSBcIkROQVwiIC8qIEFMUEhBQkVULkROQSAqLzsgfVxuICAgIGlzUGVwdGlkZSgpIHsgcmV0dXJuIHRoaXMuYWxwaGFiZXQgPT09IFwiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLzsgfVxuICAgIGlzTXNhKCkgeyByZXR1cm4gdGhpcy5hbGlnbmVkID8gdGhpcy5hbGlnbmVkLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoJ01TQScpIDogZmFsc2U7IH1cbiAgICAvKiogQXNzb2NpYXRlIG5vdGF0aW9uIHR5cGVzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdW5pdHMgKi9cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOT1RBVElPTn0gICAgIE5vdGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5pdHMgdHlwZVxuICAgICAqL1xuICAgIGdldE5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy51bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKSlcbiAgICAgICAgICAgIHJldHVybiBcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi87XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKSlcbiAgICAgICAgICAgIHJldHVybiBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLztcbiAgICAgICAgZWxzZSBpZiAodGhpcy51bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLykpXG4gICAgICAgICAgICByZXR1cm4gXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJyR7dGhpcy5jb2x1bW4ubmFtZX0nIGhhcyB1bmV4cGVjdGVkIG5vdGF0aW9uICcke3RoaXMudW5pdHN9Jy5gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IGVtcHR5IGNvbHVtbiBvZiB0aGUgc3BlY2lmaWVkIG5vdGF0aW9uIHR5cGUgYW5kIHRoZSBzYW1lXG4gICAgICogbGVuZ3RoIGFzIGNvbHVtblxuICAgICAqXG4gICAgICogQHBhcmFtIHtOT1RBVElPTn0gdGFyZ2V0Tm90YXRpb25cbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59XG4gICAgICovXG4gICAgZ2V0TmV3Q29sdW1uKHRhcmdldE5vdGF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uO1xuICAgICAgICBjb25zdCBsZW4gPSBjb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBuYW1lID0gdGFyZ2V0Tm90YXRpb24udG9Mb3dlckNhc2UoKSArICcoJyArIGNvbC5uYW1lICsgJyknO1xuICAgICAgICBjb25zdCBuZXdDb2xOYW1lID0gY29sLmRhdGFGcmFtZS5jb2x1bW5zLmdldFVudXNlZE5hbWUobmFtZSk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCB0YXJnZXROb3RhdGlvbik7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5DRUxMX1JFTkRFUkVSLCAnTWFjcm9tb2xlY3VsZScpO1xuICAgICAgICBjb25zdCBzcmNBbGlnbmVkID0gY29sLmdldFRhZyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8pO1xuICAgICAgICBpZiAoc3JjQWxpZ25lZClcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJhbGlnbmVkXCIgLyogVEFHUy5hbGlnbmVkICovLCBzcmNBbGlnbmVkKTtcbiAgICAgICAgY29uc3Qgc3JjQWxwaGFiZXQgPSBjb2wuZ2V0VGFnKFwiYWxwaGFiZXRcIiAvKiBUQUdTLmFscGhhYmV0ICovKTtcbiAgICAgICAgaWYgKHNyY0FscGhhYmV0KVxuICAgICAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhcImFscGhhYmV0XCIgLyogVEFHUy5hbHBoYWJldCAqLywgc3JjQWxwaGFiZXQpO1xuICAgICAgICBsZXQgc3JjQWxwaGFiZXRTaXplID0gY29sLmdldFRhZyhcIi5hbHBoYWJldFNpemVcIiAvKiBUQUdTLmFscGhhYmV0U2l6ZSAqLyk7XG4gICAgICAgIGlmIChzcmNBbHBoYWJldFNpemUpXG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiLmFscGhhYmV0U2l6ZVwiIC8qIFRBR1MuYWxwaGFiZXRTaXplICovLCBzcmNBbHBoYWJldFNpemUpO1xuICAgICAgICBjb25zdCBzcmNBbHBoYWJldElzTXVsdGljaGFyID0gY29sLmdldFRhZyhcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovKTtcbiAgICAgICAgaWYgKHNyY0FscGhhYmV0SXNNdWx0aWNoYXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqLywgc3JjQWxwaGFiZXRJc011bHRpY2hhcik7XG4gICAgICAgIGlmICh0YXJnZXROb3RhdGlvbiA9PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKSB7XG4gICAgICAgICAgICBzcmNBbHBoYWJldFNpemUgPSB0aGlzLmdldEFscGhhYmV0U2l6ZSgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiLmFscGhhYmV0U2l6ZVwiIC8qIFRBR1MuYWxwaGFiZXRTaXplICovLCBzcmNBbHBoYWJldFNpemUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBlbXB0eSBjb2x1bW4gdXNpbmcgdGVtcGxhdGVDb2wgYXMgYSB0ZW1wbGF0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHRlbXBsYXRlQ29sICB0aGUgcHJvcGVydGllcyBhbmQgdW5pdHMgb2YgdGhpcyBjb2x1bW4gYXJlIHVzZWQgYXMgYVxuICAgICAqIHRlbXBsYXRlIHRvIGJ1aWxkIHRoZSBuZXcgb25lXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXROZXdDb2x1bW4odGVtcGxhdGVDb2wpIHtcbiAgICAgICAgY29uc3QgY29sID0gbmV3IFVuaXRzSGFuZGxlcih0ZW1wbGF0ZUNvbCk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vdGF0aW9uID0gY29sLm5vdGF0aW9uO1xuICAgICAgICByZXR1cm4gY29sLmdldE5ld0NvbHVtbih0YXJnZXROb3RhdGlvbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgaGVscGVyIGZ1bmN0aW9uIGNoZWNraW5nIHRoZSB2YWxpZGl0eSBvZiB0aGUgJ3VuaXRzJyBzdHJpbmdcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0cyAgdGhlIHN0cmluZyB0byBiZSB2YWxpZGF0ZWRcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgICAqL1xuICAgIHN0YXRpYyB1bml0c1N0cmluZ0lzVmFsaWQodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSB1bml0cy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBwcmVmaXhlcyA9IFtcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8sIFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovLCBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovXTtcbiAgICAgICAgY29uc3QgcG9zdGZpeGVzID0gWydybmEnLCAnZG5hJywgJ3B0J107XG4gICAgICAgIGNvbnN0IHByZWZpeENyaXRlcmlvbiA9IHByZWZpeGVzLnNvbWUoKHApID0+IHVuaXRzLnN0YXJ0c1dpdGgocC50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICAgIHJldHVybiBwcmVmaXhDcml0ZXJpb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCBhIG5ldyBjb2x1bW4gb2Ygc2VtYW50aWMgdHlwZSBNQUNST01PTEVDVUxFIGZyb20gdGhlIGxpc3Qgb2ZcbiAgICAgKiBzcGVjaWZpZWQgcGFyYW1ldGVyc1xuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9ICAgIGxlbiAgdGhlIGxlbmd0aCBvZiB0aGUgbmV3IGNvbHVtblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSAgICBuYW1lICB0aGUgbmFtZSBvZiB0aGUgbmV3IGNvbHVtblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSAgICB1bml0cyAgdGhlIHVuaXRzIG9mIHRoZSBuZXcgY29sdW1uXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXROZXdDb2x1bW5Gcm9tUGFyYW1zKGxlbiwgbmFtZSwgdW5pdHMpIHtcbiAgICAgICAgLy8gV0FSTklORzogaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBpcyBpbXBvc3NpYmxlIHRvIHZlcmlmeSB0aGUgdW5pcXVlbmVzc1xuICAgICAgICAvLyBvZiB0aGUgbmV3IGNvbHVtbidzIG5hbWVcbiAgICAgICAgLy8gVE9ETzogdmVyaWZ5IHRoZSB2YWxpZGl0eSBvZiB1bml0cyBwYXJhbWV0ZXJcbiAgICAgICAgaWYgKCFVbml0c0hhbmRsZXIudW5pdHNTdHJpbmdJc1ZhbGlkKHVuaXRzKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmb3JtYXQgb2YgXFwndW5pdHNcXCcgcGFyYW1ldGVyJyk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCB1bml0cyk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGNvbCkge1xuICAgICAgICB0aGlzLl9jb2x1bW4gPSBjb2w7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gdGhpcy5fY29sdW1uLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIGlmICh1bml0cyAhPT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuX3VuaXRzID0gdW5pdHM7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5pdHMgYXJlIG5vdCBzcGVjaWZpZWQgaW4gY29sdW1uJyk7XG4gICAgICAgIHRoaXMuX25vdGF0aW9uID0gdGhpcy5nZXROb3RhdGlvbigpO1xuICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sID0gKHRoaXMuaXNGYXN0YSgpKSA/IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBIDpcbiAgICAgICAgICAgICh0aGlzLmlzSGVsbSgpKSA/IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE0gOlxuICAgICAgICAgICAgICAgIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi50YWdzLmhhcyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Zhc3RhKCkgfHwgdGhpcy5pc1NlcGFyYXRvcigpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRm9yIGNvbHVtbiAnJHt0aGlzLmNvbHVtbi5uYW1lfScgb2Ygbm90YXRpb24gJyR7dGhpcy5ub3RhdGlvbn0nIGAgK1xuICAgICAgICAgICAgICAgICAgICBgdGFnICcke1wiYWxpZ25lZFwiIC8qIFRBR1MuYWxpZ25lZCAqL30nIGlzIG1hbmRhdG9yeS5gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAoIXRoaXMuY29sdW1uLnRhZ3MuaGFzKFRBR1MuYWxwaGFiZXRTaXplKSkge1xuICAgICAgICAvLyAgIGlmICh0aGlzLmlzSGVsbSgpKVxuICAgICAgICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgYCArXG4gICAgICAgIC8vICAgICAgIGB0YWcgJyR7VEFHUy5hbHBoYWJldFNpemV9JyBpcyBtYW5kYXRvcnkuYCk7XG4gICAgICAgIC8vICAgZWxzZSBpZiAoWydVTiddLmluY2x1ZGVzKHRoaXMuYWxwaGFiZXQpKVxuICAgICAgICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBhbHBoYWJldCAnJHt0aGlzLmFscGhhYmV0fScgYCArXG4gICAgICAgIC8vICAgICAgIGB0YWcgJyR7VEFHUy5hbHBoYWJldFNpemV9JyBpcyBtYW5kYXRvcnkuYCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi50YWdzLmhhcyhcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNIZWxtKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgYCArXG4gICAgICAgICAgICAgICAgICAgIGB0YWcgJyR7XCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqL30nIGlzIG1hbmRhdG9yeS5gKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKFsnVU4nXS5pbmNsdWRlcyh0aGlzLmFscGhhYmV0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvciBjb2x1bW4gJyR7dGhpcy5jb2x1bW4ubmFtZX0nIG9mIGFscGhhYmV0ICcke3RoaXMuYWxwaGFiZXR9JyBgICtcbiAgICAgICAgICAgICAgICAgICAgYHRhZyAnJHtcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovfScgaXMgbWFuZGF0b3J5LmApO1xuICAgICAgICB9XG4gICAgfVxufVxuVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QgPSB7XG4gICAgSEVMTTogJyonLFxuICAgIFNFUEFSQVRPUjogJycsXG4gICAgRkFTVEE6ICctJyxcbn07XG5Vbml0c0hhbmRsZXIuUGVwdGlkZUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFtcbiAgICAnRycsICdMJywgJ1knLCAnUycsICdFJywgJ1EnLCAnRCcsICdOJywgJ0YnLCAnQScsXG4gICAgJ0snLCAnUicsICdIJywgJ0MnLCAnVicsICdQJywgJ1cnLCAnSScsICdNJywgJ1QnLFxuXSk7XG5Vbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldCA9IG5ldyBTZXQoWydBJywgJ0MnLCAnRycsICdUJ10pO1xuVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFsnQScsICdDJywgJ0cnLCAnVSddKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRXNXBkSE10YUdGdVpHeGxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhWFJ6TFdoaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3hwUWtGQmFVSXNRMEZCUXp0QlFVVjBReXhQUVVGUExFVkJSVXdzWTBGQll5eEZRVU5rTEc5Q1FVRnZRaXhGUVVOd1FpeFJRVUZSTEVWQlIxSXNaVUZCWlN4RlFVZG9RaXhOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUlhwQ0xHbEZRVUZwUlR0QlFVTnFSU3hOUVVGTkxFOUJRVThzV1VGQldUdEpRV3RDYUVJc1RVRkJUU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWRCUVdNN1VVRkRhRVFzU1VGQlNTeEhRVUZITEVOQlFVTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllUdFpRVU14UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHOURRVUZ2UXl4RFFVRkRMRU5CUVVNN1VVRkZlRVFzVFVGQlRTeExRVUZMTEVkQlFXZENMRkZCUVZFc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxFMUJRVTBzVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUTNKRUxFMUJRVTBzVVVGQlVTeEhRVUZITEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWMlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5d3JRa0ZCYVVJc1EwRkJRenRSUVVNeFF5eEhRVUZITEVOQlFVTXNUVUZCVFN3clFrRkJaU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5zUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hwUTBGQlowSXNVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEpRVVZFTEVsQlFXTXNTMEZCU3l4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGY2tRc1NVRkJZeXhOUVVGTkxFdEJRV2RDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk1VUXNTVUZCVnl4UlFVRlJMRXRCUVdVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVXhSQ3hKUVVGWExHZENRVUZuUWl4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWNFJTeEpRVUZYTEZOQlFWTTdPMUZCUTJ4Q0xFMUJRVTBzVTBGQlV5eEhRVUYxUWl4TlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeHJRMEZCWjBJc2JVTkJRVWtzVTBGQlV5eERRVUZETzFGQlEzUkdMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzZVVOQlFYVkNMRWxCUVVrc1UwRkJVeXhMUVVGTExGTkJRVk03V1VGRGFrVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgxUTBGQmRVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU01Unl4UFFVRlBMRk5CUVZNc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlJVUXNTVUZCVnl4UFFVRlBPMUZCUTJoQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3c0UWtGQll5eERRVUZETzFGQlJXcEVMR2xHUVVGcFJqdFJRVU5xUml4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFpRVU53UkN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1VVRkZla01zVDBGQlR5eFBRVUZQTEVOQlFVTTdTVUZEYWtJc1EwRkJRenRKUVVWRUxHbERRVUZwUXp0SlFVTnFReXhKUVVGWExGRkJRVkU3VVVGRGFrSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEdkRFFVRmxMRU5CUVVNN1VVRkZia1FzYTBaQlFXdEdPMUZCUTJ4R0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMWxCUTNKRUxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zUTBGQlF6dFJRVVV4UXl4UFFVRlBMRkZCUVZFc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlJVMHNaVUZCWlR0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTERoQ1FVRnBRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTERCQ1FVRmxMRVZCUVVVN1dVRkRiRVVzVFVGQlRTeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxIbERRVUZ0UWl4RFFVRkRPMWxCUXpsRUxFbEJRVWtzV1VGQmIwSXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxHVkJRV1VzUlVGQlJUdG5Ra0ZEYmtJc1dVRkJXU3hIUVVGSExGRkJRVkVzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0aFFVTXhRenRwUWtGQlRUdG5Ra0ZEVEN4dFEwRkJiVU03WjBKQlEyNURMRTFCUVUwc1VVRkJVU3hIUVVGcFFpeHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdaMEpCUTJwRkxFMUJRVTBzUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0blFrRkRha1FzV1VGQldTeEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0aFFVTXZRenRaUVVORUxFOUJRVThzV1VGQldTeERRVUZETzFOQlEzSkNPMkZCUVUwN1dVRkRUQ3hSUVVGUkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdaMEpCUTNaQ08yOUNRVU5GTEU5QlFVOHNSVUZCUlN4RFFVRkRPMmRDUVVOYUxEaENRVUZyUWp0blFrRkRiRUk3YjBKQlEwVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRMWdzUzBGQlN5eEpRVUZKTzI5Q1FVTlFMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zTWtKQlFUSkNMRU5CUVVNc1EwRkJRenR2UWtGRE1VTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRMWc3YjBKQlEwVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgzUWtGQmQwSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hEUVVGRExFTkJRVU03WVVGRE5VUTdVMEZEUmp0SlFVTklMRU5CUVVNN1NVRkZUU3h6UWtGQmMwSTdVVUZETTBJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTdzRRa0ZCYVVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTd3dRa0ZCWlR0WlFVTm9SU3hQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4MVJFRkJNRUlzU1VGQlNTeE5RVUZOTEVOQlFVTTdPMWxCUlRsRUxFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkZUU3hQUVVGUExFdEJRV01zVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4cFEwRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGTDBRc1YwRkJWeXhMUVVGakxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNlVU5CUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJYWkZMRTFCUVUwc1MwRkJZeXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEN0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVUzUkN4TFFVRkxMRXRCUVdNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTdzJRa0ZCYVVJc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk0wUXNTMEZCU3l4TFFVRmpMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzTmtKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVE5FTEZOQlFWTXNTMEZCWXl4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxESkNRVUZuUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVVNVJDeExRVUZMTEV0QlFXTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZ5Unl3MFJFRkJORVE3U1VGRE5VUTdPMDlCUlVjN1NVRkRUeXhYUVVGWE8xRkJRMjVDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eFZRVUZWTERoQ1FVRm5RanRaUVVOeVJDeHZRMEZCYzBJN1lVRkRia0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzYzBOQlFXOUNPMWxCUXpsRUxEUkRRVUV3UWp0aFFVTjJRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1ZVRkJWU3cwUWtGQlpUdFpRVU42UkN4clEwRkJjVUk3TzFsQlJYSkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zVjBGQlZ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc09FSkJRVGhDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemRHTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRUeXhaUVVGWkxFTkJRVU1zWTBGQmQwSTdVVUZETjBNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTjRRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEdOQlFXTXNRMEZCUXl4WFFVRlhMRVZCUVVVc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRha1VzVFVGQlRTeFZRVUZWTEVkQlFVY3NSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUXpkRUxFMUJRVTBzVTBGQlV5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeFZRVUZWTEVWQlFVVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRVlzVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF6dFJRVU0zUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRE8xRkJRMmhFTEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkZla1FzVFVGQlRTeFZRVUZWTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc09FSkJRV01zUTBGQlF6dFJRVU0xUXl4SlFVRkpMRlZCUVZVN1dVRkRXaXhUUVVGVExFTkJRVU1zVFVGQlRTd3JRa0ZCWlN4VlFVRlZMRU5CUVVNc1EwRkJRenRSUVVVM1F5eE5RVUZOTEZkQlFWY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3huUTBGQlpTeERRVUZETzFGQlF6bERMRWxCUVVrc1YwRkJWenRaUVVOaUxGTkJRVk1zUTBGQlF5eE5RVUZOTEdsRFFVRm5RaXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVV2UXl4SlFVRkpMR1ZCUVdVc1IwRkJWeXhIUVVGSExFTkJRVU1zVFVGQlRTeDVRMEZCYlVJc1EwRkJRenRSUVVNMVJDeEpRVUZKTEdWQlFXVTdXVUZEYWtJc1UwRkJVeXhEUVVGRExFMUJRVTBzTUVOQlFXOUNMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJSWFpFTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVmNzUjBGQlJ5eERRVUZETEUxQlFVMHNkVVJCUVRCQ0xFTkJRVU03VVVGRE5VVXNTVUZCU1N4elFrRkJjMElzUzBGQlN5eFRRVUZUTzFsQlEzUkRMRk5CUVZNc1EwRkJReXhOUVVGTkxIZEVRVUV5UWl4elFrRkJjMElzUTBGQlF5eERRVUZETzFGQlJYSkZMRWxCUVVrc1kwRkJZeXc0UWtGQmFVSXNSVUZCUlR0WlFVTnVReXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRM0JFTEZOQlFWTXNRMEZCUXl4TlFVRk5MREJEUVVGdlFpeGxRVUZsTEVOQlFVTXNRMEZCUXp0VFFVTjBSRHRSUVVWRUxFOUJRVThzVTBGQlV5eERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZSRHM3T3pzN08wOUJUVWM3U1VGRFNTeE5RVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMRmRCUVhOQ08xRkJReTlETEUxQlFVMHNSMEZCUnl4SFFVRnBRaXhKUVVGSkxGbEJRVmtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTjRSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUTNCRExFOUJRVThzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRKUVVNeFF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNTMEZCWVR0UlFVTTFReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUXpWQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEdkSFFVRnRSQ3hEUVVGRE8xRkJRM0pGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVjJReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYUVZc1QwRkJUeXhsUVVGbExFTkJRVU03U1VGRGVrSXNRMEZCUXp0SlFVVkVPenM3T3pzN096dFBRVkZITzBsQlEwa3NUVUZCVFN4RFFVRkRMSE5DUVVGelFpeERRVU5zUXl4SFFVRlhMRVZCUTFnc1NVRkJXU3hGUVVOYUxFdEJRV0U3VVVGRllpdzBSVUZCTkVVN1VVRkROVVVzTWtKQlFUSkNPMUZCUXpOQ0xDdERRVUVyUXp0UlFVTXZReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU42UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIVkRRVUYxUXl4RFFVRkRMRU5CUVVNN1VVRkRNMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNNVJTeFRRVUZUTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETzFGQlF6ZERMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGRrTXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVVZFTEZsQlFXMUNMRWRCUVdNN1VVRkRMMElzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRia0lzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVNdlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4SlFVRkpPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRPenRaUVVWd1FpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRzFEUVVGdFF5eERRVUZETEVOQlFVTTdVVUZEZGtRc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1VVRkRjRU1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGbEJRVmtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU55Uml4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRekZFTEZsQlFWa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdVVUZGYkVRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc09FSkJRV01zUlVGQlJUdFpRVU4yUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMmRDUVVOMFF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR1ZCUVdVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEd0Q1FVRnJRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEpRVUZKTzI5Q1FVTm9SaXhSUVVGUkxEUkNRVUZaTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03VTBGRE5VTTdVVUZGUkN4clJFRkJhMFE3VVVGRGJFUXNkVUpCUVhWQ08xRkJRM1pDTERKR1FVRXlSanRSUVVNelJpeHhSRUZCY1VRN1VVRkRja1FzTmtOQlFUWkRPMUZCUXpkRExESkdRVUV5Ump0UlFVTXpSaXh4UkVGQmNVUTdVVUZEY2tRc1NVRkJTVHRSUVVWS0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExIVkVRVUV3UWl4RlFVRkZPMWxCUTI1RUxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0blFrRkRaaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEdWQlFXVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSk8yOUNRVU5vUml4UlFVRlJMSEZFUVVGM1FpeHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8ybENRVU5zUkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1owSkJRM0pETEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1pVRkJaU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NhMEpCUVd0Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVazdiMEpCUTJoR0xGRkJRVkVzY1VSQlFYZENMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdVMEZEZUVRN1NVRkRTQ3hEUVVGRE96dEJRV2hSZVVJc2JVTkJRWE5DTEVkQlFVYzdTVUZEYWtRc1NVRkJTU3hGUVVGRkxFZEJRVWM3U1VGRFZDeFRRVUZUTEVWQlFVVXNSVUZCUlR0SlFVTmlMRXRCUVVzc1JVRkJSU3hIUVVGSE8wTkJRMWdzUTBGQlF6dEJRVVZ4UWl4cFEwRkJiMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCVXp0SlFVTTFSQ3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSE8wbEJRMmhFTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVYzdRMEZEYWtRc1EwRkJReXhEUVVGRE8wRkJRMjlDTERaQ1FVRm5RaXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3cyUWtGQlowSXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMXh1SUNCQlRGQklRVUpGVkN4Y2JpQWdaR1YwWldOMFFXeHdhR0ZpWlhRc1hHNGdJR2RsZEZOd2JHbDBkR1Z5Um05eVEyOXNkVzF1TEZ4dUlDQm5aWFJUZEdGMGN5eGNiaUFnVGs5VVFWUkpUMDRzWEc0Z0lGTmxjVU52YkZOMFlYUnpMRnh1SUNCemNHeHBkSFJsY2tGelJtRnpkR0VzWEc0Z0lGTndiR2wwZEdWeVJuVnVZeXhjYmlBZ1ZFRkhVMXh1ZlNCbWNtOXRJQ2N1TDIxaFkzSnZiVzlzWldOMWJHVW5PMXh1WEc0dktpb2dRMnhoYzNNZ1ptOXlJR2hoYm1Sc2FXNW5JRzV2ZEdGMGFXOXVJSFZ1YVhSeklHbHVJRTFoWTNKdmJXOXNaV04xYkdVZ1kyOXNkVzF1Y3lBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZWdWFYUnpTR0Z1Wkd4bGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCeVpXRmtiMjVzZVNCZlkyOXNkVzF1T2lCRVJ5NURiMngxYlc0N0lDOHZJSFJvWlNCamIyeDFiVzRnZEc4Z1ltVWdZMjl1ZG1WeWRHVmtYRzRnSUhCeWIzUmxZM1JsWkNCZmRXNXBkSE02SUhOMGNtbHVaenNnTHk4Z2RXNXBkSE1zSUc5bUlIUm9aU0JtYjNKdElHWmhjM1JoTENCelpYQmhjbUYwYjNKY2JpQWdjSEp2ZEdWamRHVmtJRjl1YjNSaGRHbHZiam9nVGs5VVFWUkpUMDQ3SUM4dklHTjFjbkpsYm5RZ2JtOTBZWFJwYjI0Z0tIZHBkR2h2ZFhRZ09sTkZVVHBPVkN3Z1pYUmpMaWxjYmlBZ2NISnZkR1ZqZEdWa0lGOWtaV1poZFd4MFIyRndVM2x0WW05c09pQnpkSEpwYm1jN1hHNGdJSEJ5YjNSbFkzUmxaQ0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZENBOUlIdGNiaUFnSUNCSVJVeE5PaUFuS2ljc1hHNGdJQ0FnVTBWUVFWSkJWRTlTT2lBbkp5eGNiaUFnSUNCR1FWTlVRVG9nSnkwbkxGeHVJQ0I5TzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2NtVmhaRzl1YkhrZ1VHVndkR2xrWlVaaGMzUmhRV3h3YUdGaVpYUWdQU0J1WlhjZ1UyVjBQSE4wY21sdVp6NG9XMXh1SUNBZ0lDZEhKeXdnSjB3bkxDQW5XU2NzSUNkVEp5d2dKMFVuTENBblVTY3NJQ2RFSnl3Z0owNG5MQ0FuUmljc0lDZEJKeXhjYmlBZ0lDQW5TeWNzSUNkU0p5d2dKMGduTENBblF5Y3NJQ2RXSnl3Z0oxQW5MQ0FuVnljc0lDZEpKeXdnSjAwbkxDQW5WQ2NzWEc0Z0lGMHBPMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEpsWVdSdmJteDVJRVJ1WVVaaGMzUmhRV3h3YUdGaVpYUWdQU0J1WlhjZ1UyVjBQSE4wY21sdVp6NG9XeWRCSnl3Z0owTW5MQ0FuUnljc0lDZFVKMTBwTzF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhKbFlXUnZibXg1SUZKdVlVWmhjM1JoUVd4d2FHRmlaWFFnUFNCdVpYY2dVMlYwUEhOMGNtbHVaejRvV3lkQkp5d2dKME1uTENBblJ5Y3NJQ2RWSjEwcE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdjMlYwVlc1cGRITlViMFpoYzNSaFEyOXNkVzF1S0dOdmJEb2dSRWN1UTI5c2RXMXVLU0I3WEc0Z0lDQWdhV1lnS0dOdmJDNXpaVzFVZVhCbElDRTlQU0JFUnk1VFJVMVVXVkJGTGsxQlExSlBUVTlNUlVOVlRFVXBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owWmhjM1JoSUdOdmJIVnRiaUJ0ZFhOMElHSmxJRTFCUTFKUFRVOU1SVU5WVEVVbktUdGNibHh1SUNBZ0lHTnZibk4wSUhOMFlYUnpPaUJUWlhGRGIyeFRkR0YwY3lBOUlHZGxkRk4wWVhSektHTnZiQ3dnTlN3Z2MzQnNhWFIwWlhKQmMwWmhjM1JoS1R0Y2JpQWdJQ0JqYjI1emRDQmhiR2xuYm1Wa0lEMGdjM1JoZEhNdWMyRnRaVXhsYm1kMGFDQS9JQ2RUUlZFdVRWTkJKeUE2SUNkVFJWRW5PMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwSUQwZ1pHVjBaV04wUVd4d2FHRmlaWFFvYzNSaGRITXBPMXh1WEc0Z0lDQWdZMjlzTG5ObGRGUmhaeWhFUnk1VVFVZFRMbFZPU1ZSVExDQk9UMVJCVkVsUFRpNUdRVk5VUVNrN1hHNGdJQ0FnWTI5c0xuTmxkRlJoWnloVVFVZFRMbUZzYVdkdVpXUXNJR0ZzYVdkdVpXUXBPMXh1SUNBZ0lHTnZiQzV6WlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEN3Z1lXeHdhR0ZpWlhRcE8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR2RsZENCMWJtbDBjeWdwT2lCemRISnBibWNnZXlCeVpYUjFjbTRnZEdocGN5NWZkVzVwZEhNN0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1oyVjBJR052YkhWdGJpZ3BPaUJFUnk1RGIyeDFiVzRnZXlCeVpYUjFjbTRnZEdocGN5NWZZMjlzZFcxdU95QjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnViM1JoZEdsdmJpZ3BPaUJPVDFSQlZFbFBUaUI3SUhKbGRIVnliaUIwYUdsekxsOXViM1JoZEdsdmJqc2dmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdaR1ZtWVhWc2RFZGhjRk41YldKdmJDZ3BPaUJ6ZEhKcGJtY2dleUJ5WlhSMWNtNGdkR2hwY3k1ZlpHVm1ZWFZzZEVkaGNGTjViV0p2YkRzZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2MyVndZWEpoZEc5eUtDazZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaQ0I3WEc0Z0lDQWdZMjl1YzNRZ2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NXpaWEJoY21GMGIzSXBJRDgvSUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV1YjNSaGRHbHZiaUE5UFQwZ1RrOVVRVlJKVDA0dVUwVlFRVkpCVkU5U0lDWW1JSE5sY0dGeVlYUnZjaUE5UFQwZ2RXNWtaV1pwYm1Wa0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVFpYQmhjbUYwYjNJZ2FYTWdiV0Z1WkdGMGIzSjVJQ0JtYjNJZ1kyOXNkVzF1SUNja2UzUm9hWE11WTI5c2RXMXVMbTVoYldWOUp5QnZaaUJ1YjNSaGRHbHZiaUFuSkh0MGFHbHpMbTV2ZEdGMGFXOXVmU2N1WUNrN1hHNGdJQ0FnY21WMGRYSnVJSE5sY0dGeVlYUnZjanRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ1lXeHBaMjVsWkNncE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUdOdmJuTjBJR0ZzYVdkdVpXUWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NWhiR2xuYm1Wa0tUdGNibHh1SUNBZ0lDOHZJRlJCUjFNdVlXeHBaMjVsWkNCcGN5QnRZVzVrWVhSdmNua2dabTl5SUdOdmJIVnRibk1nYjJZZ1RrOVVRVlJKVDA0dVJrRlRWRUVnWVc1a0lFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVseHVJQ0FnSUdsbUlDZ2hZV3hwWjI1bFpDQW1KaUFvZEdocGN5NXBjMFpoYzNSaEtDa2dmSHdnZEdocGN5NXBjMU5sY0dGeVlYUnZjaWdwS1NsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVkdGbklHRnNhV2R1WldRZ2JtOTBJSE5sZENjcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdGc2FXZHVaV1E3WEc0Z0lIMWNibHh1SUNBdktpb2dRV3h3YUdGaVpYUWdibUZ0WlNBb2RYQndaWElnWTJGelpTa2dLaTljYmlBZ2NIVmliR2xqSUdkbGRDQmhiSEJvWVdKbGRDZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwSUQwZ2RHaHBjeTVqYjJ4MWJXNHVaMlYwVkdGbktGUkJSMU11WVd4d2FHRmlaWFFwTzF4dVhHNGdJQ0FnTHk4Z1ZFRkhVeTVoYkhCb1lXSmxkQ0JwY3lCdFlXNWtZWFJ2Y25rZ1ptOXlJR052YkhWdGJuTWdiMllnVGs5VVFWUkpUMDR1UmtGVFZFRWdZVzVrSUU1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWx4dUlDQWdJR2xtSUNnaFlXeHdhR0ZpWlhRZ0ppWWdLSFJvYVhNdWFYTkdZWE4wWVNncElIeDhJSFJvYVhNdWFYTlRaWEJoY21GMGIzSW9LU2twWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVJoWnlCaGJIQm9ZV0psZENCdWIzUWdjMlYwSnlrN1hHNWNiaUFnSUNCeVpYUjFjbTRnWVd4d2FHRmlaWFE3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFFXeHdhR0ZpWlhSVGFYcGxLQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVibTkwWVhScGIyNGdQVDBnVGs5VVFWUkpUMDR1U0VWTVRTQjhmQ0IwYUdsekxtRnNjR2hoWW1WMElEMDlJRUZNVUVoQlFrVlVMbFZPS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JoYkhCb1lXSmxkRk5wZW1WVGRISWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NWhiSEJvWVdKbGRGTnBlbVVwTzF4dUlDQWdJQ0FnYkdWMElHRnNjR2hoWW1WMFUybDZaVG9nYm5WdFltVnlPMXh1SUNBZ0lDQWdhV1lnS0dGc2NHaGhZbVYwVTJsNlpWTjBjaWtnZTF4dUlDQWdJQ0FnSUNCaGJIQm9ZV0psZEZOcGVtVWdQU0J3WVhKelpVbHVkQ2hoYkhCb1lXSmxkRk5wZW1WVGRISXBPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdMeThnWTJGc1kzVnNZWFJsSUdGc2NHaGhZbVYwVTJsNlpTQnZiaUJrWlcxaGJtUmNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MzQnNhWFIwWlhJNklGTndiR2wwZEdWeVJuVnVZeUE5SUdkbGRGTndiR2wwZEdWeVJtOXlRMjlzZFcxdUtIUm9hWE11WTI5c2RXMXVLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoZEhNZ1BTQm5aWFJUZEdGMGN5aDBhR2x6TG1OdmJIVnRiaXdnTVN3Z2MzQnNhWFIwWlhJcE8xeHVJQ0FnSUNBZ0lDQmhiSEJvWVdKbGRGTnBlbVVnUFNCUFltcGxZM1F1YTJWNWN5aHpkR0YwY3k1bWNtVnhLUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z1lXeHdhR0ZpWlhSVGFYcGxPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCemQybDBZMmdnS0hSb2FYTXVZV3h3YUdGaVpYUXBJSHRjYmlBZ0lDQWdJR05oYzJVZ1FVeFFTRUZDUlZRdVVGUTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQXlNRHRjYmlBZ0lDQWdJR05oYzJVZ1FVeFFTRUZDUlZRdVJFNUJPbHh1SUNBZ0lDQWdZMkZ6WlNCQlRGQklRVUpGVkM1U1RrRTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQTBPMXh1SUNBZ0lDQWdZMkZ6WlNBblRsUW5PbHh1SUNBZ0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1lGVnVaWGh3WldOMFpXUWdZV3h3YUdGaVpYUWdKMDVVSnk1Z0tUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlEUTdYRzRnSUNBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lGVnVaWGh3WldOMFpXUWdZV3h3YUdGaVpYUWdKeVI3ZEdocGN5NWhiSEJvWVdKbGRIMG5MbUFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSQmJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUtDazZJR0p2YjJ4bFlXNGdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtNXZkR0YwYVc5dUlEMDlJRTVQVkVGVVNVOU9Ma2hGVEUwZ2ZId2dkR2hwY3k1aGJIQm9ZV0psZENBOVBTQkJURkJJUVVKRlZDNVZUaWxjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmJIVnRiaTVuWlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUtTQTlQU0FuZEhKMVpTYzdYRzRnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdselJtRnpkR0VvS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMGFHbHpMbTV2ZEdGMGFXOXVJRDA5UFNCT1QxUkJWRWxQVGk1R1FWTlVRVHNnZlZ4dVhHNGdJSEIxWW14cFl5QnBjMU5sY0dGeVlYUnZjaWdwT2lCaWIyOXNaV0Z1SUhzZ2NtVjBkWEp1SUhSb2FYTXVibTkwWVhScGIyNGdQVDA5SUU1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWpzZ2ZWeHVYRzRnSUhCMVlteHBZeUJwYzBobGJHMG9LVG9nWW05dmJHVmhiaUI3SUhKbGRIVnliaUIwYUdsekxtNXZkR0YwYVc5dUlEMDlQU0JPVDFSQlZFbFBUaTVJUlV4Tk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselVtNWhLQ2s2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdocGN5NWhiSEJvWVdKbGRDQTlQVDBnUVV4UVNFRkNSVlF1VWs1Qk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselJHNWhLQ2s2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdocGN5NWhiSEJvWVdKbGRDQTlQVDBnUVV4UVNFRkNSVlF1UkU1Qk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselVHVndkR2xrWlNncE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUm9hWE11WVd4d2FHRmlaWFFnUFQwOUlFRk1VRWhCUWtWVUxsQlVPeUI5WEc1Y2JpQWdjSFZpYkdsaklHbHpUWE5oS0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTVoYkdsbmJtVmtJRDhnZEdocGN5NWhiR2xuYm1Wa0xuUnZWWEJ3WlhKRFlYTmxLQ2t1YVc1amJIVmtaWE1vSjAxVFFTY3BJRG9nWm1Gc2MyVTdJSDFjYmx4dUlDQXZLaW9nUVhOemIyTnBZWFJsSUc1dmRHRjBhVzl1SUhSNWNHVnpJSGRwZEdnZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ2RXNXBkSE1nS2k5Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDVQVkVGVVNVOU9mU0FnSUNBZ1RtOTBZWFJwYjI0Z1lYTnpiMk5wWVhSbFpDQjNhWFJvSUhSb1pTQjFibWwwY3lCMGVYQmxYRzRnSUNBcUwxeHVJQ0J3Y205MFpXTjBaV1FnWjJWMFRtOTBZWFJwYjI0b0tUb2dUazlVUVZSSlQwNGdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VjM1JoY25SelYybDBhQ2hPVDFSQlZFbFBUaTVHUVZOVVFTa3BYRzRnSUNBZ0lDQnlaWFIxY200Z1RrOVVRVlJKVDA0dVJrRlRWRUU3WEc0Z0lDQWdaV3h6WlNCcFppQW9kR2hwY3k1MWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29UazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNLU2xjYmlBZ0lDQWdJSEpsZEhWeWJpQk9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSTdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RHaHBjeTUxYm1sMGN5NTBiMHh2ZDJWeVEyRnpaU2dwTG5OMFlYSjBjMWRwZEdnb1RrOVVRVlJKVDA0dVNFVk1UU2twWEc0Z0lDQWdJQ0J5WlhSMWNtNGdUazlVUVZSSlQwNHVTRVZNVFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2FHRnpJSFZ1Wlhod1pXTjBaV1FnYm05MFlYUnBiMjRnSnlSN2RHaHBjeTUxYm1sMGMzMG5MbUFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaElHNWxkeUJsYlhCMGVTQmpiMngxYlc0Z2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCdWIzUmhkR2x2YmlCMGVYQmxJR0Z1WkNCMGFHVWdjMkZ0WlZ4dUlDQWdLaUJzWlc1bmRHZ2dZWE1nWTI5c2RXMXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VGs5VVFWUkpUMDU5SUhSaGNtZGxkRTV2ZEdGMGFXOXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMWNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0JuWlhST1pYZERiMngxYlc0b2RHRnlaMlYwVG05MFlYUnBiMjQ2SUU1UFZFRlVTVTlPS1RvZ1JFY3VRMjlzZFcxdUlIdGNiaUFnSUNCamIyNXpkQ0JqYjJ3Z1BTQjBhR2x6TG1OdmJIVnRianRjYmlBZ0lDQmpiMjV6ZENCc1pXNGdQU0JqYjJ3dWJHVnVaM1JvTzF4dUlDQWdJR052Ym5OMElHNWhiV1VnUFNCMFlYSm5aWFJPYjNSaGRHbHZiaTUwYjB4dmQyVnlRMkZ6WlNncElDc2dKeWduSUNzZ1kyOXNMbTVoYldVZ0t5QW5LU2M3WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzVG1GdFpTQTlJR052YkM1a1lYUmhSbkpoYldVdVkyOXNkVzF1Y3k1blpYUlZiblZ6WldST1lXMWxLRzVoYldVcE8xeHVJQ0FnSUdOdmJuTjBJRzVsZDBOdmJIVnRiaUE5SUVSSExrTnZiSFZ0Ymk1bWNtOXRUR2x6ZENnbmMzUnlhVzVuSnl3Z2JtVjNRMjlzVG1GdFpTd2dibVYzSUVGeWNtRjVLR3hsYmlrdVptbHNiQ2duSnlrcE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpXMVVlWEJsSUQwZ1JFY3VVMFZOVkZsUVJTNU5RVU5TVDAxUFRFVkRWVXhGTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29SRWN1VkVGSFV5NVZUa2xVVXl3Z2RHRnlaMlYwVG05MFlYUnBiMjRwTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29SRWN1VkVGSFV5NURSVXhNWDFKRlRrUkZVa1ZTTENBblRXRmpjbTl0YjJ4bFkzVnNaU2NwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjM0pqUVd4cFoyNWxaQ0E5SUdOdmJDNW5aWFJVWVdjb1ZFRkhVeTVoYkdsbmJtVmtLVHRjYmlBZ0lDQnBaaUFvYzNKalFXeHBaMjVsWkNsY2JpQWdJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvVkVGSFV5NWhiR2xuYm1Wa0xDQnpjbU5CYkdsbmJtVmtLVHRjYmx4dUlDQWdJR052Ym5OMElITnlZMEZzY0doaFltVjBJRDBnWTI5c0xtZGxkRlJoWnloVVFVZFRMbUZzY0doaFltVjBLVHRjYmlBZ0lDQnBaaUFvYzNKalFXeHdhR0ZpWlhRcFhHNGdJQ0FnSUNCdVpYZERiMngxYlc0dWMyVjBWR0ZuS0ZSQlIxTXVZV3h3YUdGaVpYUXNJSE55WTBGc2NHaGhZbVYwS1R0Y2JseHVJQ0FnSUd4bGRDQnpjbU5CYkhCb1lXSmxkRk5wZW1VNklITjBjbWx1WnlBOUlHTnZiQzVuWlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEZOcGVtVXBPMXh1SUNBZ0lHbG1JQ2h6Y21OQmJIQm9ZV0psZEZOcGVtVXBYRzRnSUNBZ0lDQnVaWGREYjJ4MWJXNHVjMlYwVkdGbktGUkJSMU11WVd4d2FHRmlaWFJUYVhwbExDQnpjbU5CYkhCb1lXSmxkRk5wZW1VcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYzNKalFXeHdhR0ZpWlhSSmMwMTFiSFJwWTJoaGNqb2djM1J5YVc1bklEMGdZMjlzTG1kbGRGUmhaeWhVUVVkVExtRnNjR2hoWW1WMFNYTk5kV3gwYVdOb1lYSXBPMXh1SUNBZ0lHbG1JQ2h6Y21OQmJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUlDRTlQU0IxYm1SbFptbHVaV1FwWEc0Z0lDQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRlJCUjFNdVlXeHdhR0ZpWlhSSmMwMTFiSFJwWTJoaGNpd2djM0pqUVd4d2FHRmlaWFJKYzAxMWJIUnBZMmhoY2lrN1hHNWNiaUFnSUNCcFppQW9kR0Z5WjJWMFRtOTBZWFJwYjI0Z1BUMGdUazlVUVZSSlQwNHVTRVZNVFNrZ2UxeHVJQ0FnSUNBZ2MzSmpRV3h3YUdGaVpYUlRhWHBsSUQwZ2RHaHBjeTVuWlhSQmJIQm9ZV0psZEZOcGVtVW9LUzUwYjFOMGNtbHVaeWdwTzF4dUlDQWdJQ0FnYm1WM1EyOXNkVzF1TG5ObGRGUmhaeWhVUVVkVExtRnNjR2hoWW1WMFUybDZaU3dnYzNKalFXeHdhR0ZpWlhSVGFYcGxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JtVjNRMjlzZFcxdU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpTQmhJRzVsZHlCbGJYQjBlU0JqYjJ4MWJXNGdkWE5wYm1jZ2RHVnRjR3hoZEdWRGIyd2dZWE1nWVNCMFpXMXdiR0YwWlZ4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUkhMa052YkhWdGJuMGdkR1Z0Y0d4aGRHVkRiMndnSUhSb1pTQndjbTl3WlhKMGFXVnpJR0Z1WkNCMWJtbDBjeUJ2WmlCMGFHbHpJR052YkhWdGJpQmhjbVVnZFhObFpDQmhjeUJoWEc0Z0lDQXFJSFJsYlhCc1lYUmxJSFJ2SUdKMWFXeGtJSFJvWlNCdVpYY2diMjVsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjFjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwVG1WM1EyOXNkVzF1S0hSbGJYQnNZWFJsUTI5c09pQkVSeTVEYjJ4MWJXNHBPaUJFUnk1RGIyeDFiVzRnZTF4dUlDQWdJR052Ym5OMElHTnZiRG9nVlc1cGRITklZVzVrYkdWeUlEMGdibVYzSUZWdWFYUnpTR0Z1Wkd4bGNpaDBaVzF3YkdGMFpVTnZiQ2s3WEc0Z0lDQWdZMjl1YzNRZ2RHRnlaMlYwVG05MFlYUnBiMjRnUFNCamIyd3VibTkwWVhScGIyNDdYRzRnSUNBZ2NtVjBkWEp1SUdOdmJDNW5aWFJPWlhkRGIyeDFiVzRvZEdGeVoyVjBUbTkwWVhScGIyNHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVFZ2FHVnNjR1Z5SUdaMWJtTjBhVzl1SUdOb1pXTnJhVzVuSUhSb1pTQjJZV3hwWkdsMGVTQnZaaUIwYUdVZ0ozVnVhWFJ6SnlCemRISnBibWRjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhWdWFYUnpJQ0IwYUdVZ2MzUnlhVzVuSUhSdklHSmxJSFpoYkdsa1lYUmxaRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCMWJtbDBjMU4wY21sdVowbHpWbUZzYVdRb2RXNXBkSE02SUhOMGNtbHVaeWs2SUdKdmIyeGxZVzRnZTF4dUlDQWdJSFZ1YVhSeklEMGdkVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmlBZ0lDQmpiMjV6ZENCd2NtVm1hWGhsY3lBOUlGdE9UMVJCVkVsUFRpNUdRVk5VUVN3Z1RrOVVRVlJKVDA0dVUwVlFRVkpCVkU5U0xDQk9UMVJCVkVsUFRpNUlSVXhOWFR0Y2JpQWdJQ0JqYjI1emRDQndiM04wWm1sNFpYTWdQU0JiSjNKdVlTY3NJQ2RrYm1FbkxDQW5jSFFuWFR0Y2JseHVJQ0FnSUdOdmJuTjBJSEJ5WldacGVFTnlhWFJsY21sdmJpQTlJSEJ5WldacGVHVnpMbk52YldVb0tIQXBJRDArSUhWdWFYUnpMbk4wWVhKMGMxZHBkR2dvY0M1MGIweHZkMlZ5UTJGelpTZ3BLU2s3WEc0Z0lDQWdjbVYwZFhKdUlIQnlaV1pwZUVOeWFYUmxjbWx2Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjV6ZEhKMVkzUWdZU0J1WlhjZ1kyOXNkVzF1SUc5bUlITmxiV0Z1ZEdsaklIUjVjR1VnVFVGRFVrOU5UMHhGUTFWTVJTQm1jbTl0SUhSb1pTQnNhWE4wSUc5bVhHNGdJQ0FxSUhOd1pXTnBabWxsWkNCd1lYSmhiV1YwWlhKelhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQWdJQ0JzWlc0Z0lIUm9aU0JzWlc1bmRHZ2diMllnZEdobElHNWxkeUJqYjJ4MWJXNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUNBZ0lHNWhiV1VnSUhSb1pTQnVZVzFsSUc5bUlIUm9aU0J1WlhjZ1kyOXNkVzF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQWdJQ0IxYm1sMGN5QWdkR2hsSUhWdWFYUnpJRzltSUhSb1pTQnVaWGNnWTI5c2RXMXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBUbVYzUTI5c2RXMXVSbkp2YlZCaGNtRnRjeWhjYmlBZ0lDQnNaVzQ2SUc1MWJXSmxjaXhjYmlBZ0lDQnVZVzFsT2lCemRISnBibWNzWEc0Z0lDQWdkVzVwZEhNNklITjBjbWx1WjF4dUlDQXBPaUJFUnk1RGIyeDFiVzRnZTF4dUlDQWdJQzh2SUZkQlVrNUpUa2M2SUdsdUlIUm9hWE1nYVcxd2JHVnRaVzUwWVhScGIyNGdhWE1nYVhNZ2FXMXdiM056YVdKc1pTQjBieUIyWlhKcFpua2dkR2hsSUhWdWFYRjFaVzVsYzNOY2JpQWdJQ0F2THlCdlppQjBhR1VnYm1WM0lHTnZiSFZ0YmlkeklHNWhiV1ZjYmlBZ0lDQXZMeUJVVDBSUE9pQjJaWEpwWm5rZ2RHaGxJSFpoYkdsa2FYUjVJRzltSUhWdWFYUnpJSEJoY21GdFpYUmxjbHh1SUNBZ0lHbG1JQ2doVlc1cGRITklZVzVrYkdWeUxuVnVhWFJ6VTNSeWFXNW5TWE5XWVd4cFpDaDFibWwwY3lrcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjBsdWRtRnNhV1FnWm05eWJXRjBJRzltSUZ4Y0ozVnVhWFJ6WEZ3bklIQmhjbUZ0WlhSbGNpY3BPMXh1SUNBZ0lHTnZibk4wSUc1bGQwTnZiSFZ0YmlBOUlFUkhMa052YkhWdGJpNW1jbTl0VEdsemRDZ25jM1J5YVc1bkp5d2dibUZ0WlN3Z2JtVjNJRUZ5Y21GNUtHeGxiaWt1Wm1sc2JDZ25KeWtwTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlcxVWVYQmxJRDBnUkVjdVUwVk5WRmxRUlM1TlFVTlNUMDFQVEVWRFZVeEZPMXh1SUNBZ0lHNWxkME52YkhWdGJpNXpaWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeXdnZFc1cGRITXBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9ZMjlzT2lCRVJ5NURiMngxYlc0cElIdGNiaUFnSUNCMGFHbHpMbDlqYjJ4MWJXNGdQU0JqYjJ3N1hHNGdJQ0FnWTI5dWMzUWdkVzVwZEhNZ1BTQjBhR2x6TGw5amIyeDFiVzR1ZEdGbmMxdEVSeTVVUVVkVExsVk9TVlJUWFR0Y2JpQWdJQ0JwWmlBb2RXNXBkSE1nSVQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0IwYUdsekxsOTFibWwwY3lBOUlIVnVhWFJ6TzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVlc1cGRITWdZWEpsSUc1dmRDQnpjR1ZqYVdacFpXUWdhVzRnWTI5c2RXMXVKeWs3WEc0Z0lDQWdkR2hwY3k1ZmJtOTBZWFJwYjI0Z1BTQjBhR2x6TG1kbGRFNXZkR0YwYVc5dUtDazdYRzRnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiQ0E5SUNoMGFHbHpMbWx6Um1GemRHRW9LU2tnUHlCVmJtbDBjMGhoYm1Sc1pYSXVYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZEM1R1FWTlVRU0E2WEc0Z0lDQWdJQ0FvZEdocGN5NXBjMGhsYkcwb0tTa2dQeUJWYm1sMGMwaGhibVJzWlhJdVgyUmxabUYxYkhSSFlYQlRlVzFpYjJ4elJHbGpkQzVJUlV4TklEcGNiaUFnSUNBZ0lDQWdWVzVwZEhOSVlXNWtiR1Z5TGw5a1pXWmhkV3gwUjJGd1UzbHRZbTlzYzBScFkzUXVVMFZRUVZKQlZFOVNPMXh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU52YkhWdGJpNTBZV2R6TG1oaGN5aFVRVWRUTG1Gc2FXZHVaV1FwS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1cGMwWmhjM1JoS0NrZ2ZId2dkR2hwY3k1cGMxTmxjR0Z5WVhSdmNpZ3BLVnh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRVp2Y2lCamIyeDFiVzRnSnlSN2RHaHBjeTVqYjJ4MWJXNHVibUZ0WlgwbklHOW1JRzV2ZEdGMGFXOXVJQ2NrZTNSb2FYTXVibTkwWVhScGIyNTlKeUJnSUN0Y2JpQWdJQ0FnSUNBZ0lDQmdkR0ZuSUNja2UxUkJSMU11WVd4cFoyNWxaSDBuSUdseklHMWhibVJoZEc5eWVTNWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJwWmlBb0lYUm9hWE11WTI5c2RXMXVMblJoWjNNdWFHRnpLRlJCUjFNdVlXeHdhR0ZpWlhSVGFYcGxLU2tnZTF4dUlDQWdJQzh2SUNBZ2FXWWdLSFJvYVhNdWFYTklaV3h0S0NrcFhHNGdJQ0FnTHk4Z0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdSbTl5SUdOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2IyWWdibTkwWVhScGIyNGdKeVI3ZEdocGN5NXViM1JoZEdsdmJuMG5JR0FnSzF4dUlDQWdJQzh2SUNBZ0lDQWdJR0IwWVdjZ0p5UjdWRUZIVXk1aGJIQm9ZV0psZEZOcGVtVjlKeUJwY3lCdFlXNWtZWFJ2Y25rdVlDazdYRzRnSUNBZ0x5OGdJQ0JsYkhObElHbG1JQ2hiSjFWT0oxMHVhVzVqYkhWa1pYTW9kR2hwY3k1aGJIQm9ZV0psZENrcFhHNGdJQ0FnTHk4Z0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdSbTl5SUdOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2IyWWdZV3h3YUdGaVpYUWdKeVI3ZEdocGN5NWhiSEJvWVdKbGRIMG5JR0FnSzF4dUlDQWdJQzh2SUNBZ0lDQWdJR0IwWVdjZ0p5UjdWRUZIVXk1aGJIQm9ZV0psZEZOcGVtVjlKeUJwY3lCdFlXNWtZWFJ2Y25rdVlDazdYRzRnSUNBZ0x5OGdmVnh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU52YkhWdGJpNTBZV2R6TG1oaGN5aFVRVWRUTG1Gc2NHaGhZbVYwU1hOTmRXeDBhV05vWVhJcEtTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXBjMGhsYkcwb0tTbGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkdiM0lnWTI5c2RXMXVJQ2NrZTNSb2FYTXVZMjlzZFcxdUxtNWhiV1Y5SnlCdlppQnViM1JoZEdsdmJpQW5KSHQwYUdsekxtNXZkR0YwYVc5dWZTY2dZQ0FyWEc0Z0lDQWdJQ0FnSUNBZ1lIUmhaeUFuSkh0VVFVZFRMbUZzY0doaFltVjBTWE5OZFd4MGFXTm9ZWEo5SnlCcGN5QnRZVzVrWVhSdmNua3VZQ2s3WEc0Z0lDQWdJQ0JsYkhObElHbG1JQ2hiSjFWT0oxMHVhVzVqYkhWa1pYTW9kR2hwY3k1aGJIQm9ZV0psZENrcFhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1JtOXlJR052YkhWdGJpQW5KSHQwYUdsekxtTnZiSFZ0Ymk1dVlXMWxmU2NnYjJZZ1lXeHdhR0ZpWlhRZ0p5UjdkR2hwY3k1aGJIQm9ZV0psZEgwbklHQWdLMXh1SUNBZ0lDQWdJQ0FnSUdCMFlXY2dKeVI3VkVGSFV5NWhiSEJvWVdKbGRFbHpUWFZzZEdsamFHRnlmU2NnYVhNZ2JXRnVaR0YwYjNKNUxtQXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGZ1bmN0aW9uIGVycm9yVG9Db25zb2xlKGVycikge1xuICAgIHZhciBfYTtcbiAgICBpZiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycgfHwgZXJyIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgfVxuICAgIGVsc2UgaWYgKCckdGhyb3duSnNFcnJvcicgaW4gZXJyKSB7XG4gICAgICAgIHJldHVybiBlcnJvclRvQ29uc29sZShlcnJbJyR0aHJvd25Kc0Vycm9yJ10pO1xuICAgIH1cbiAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4gKF9hID0gZXJyLnN0YWNrKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBlcnIubWVzc2FnZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBlcnIudG9TdHJpbmcoKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcmVjdFRvQ29uc29sZShyZWN0KSB7XG4gICAgcmV0dXJuIGAoeD0ke3JlY3QueH0sIHk9JHtyZWN0Lnl9LCB3PSR7cmVjdC53aWR0aH0sIGg9JHtyZWN0LmhlaWdodH0pYDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRHOHRZMjl1YzI5c1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SdkxXTnZibk52YkdVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTMEVzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SFFVRlJPenRKUVVOeVF5eEpRVUZKTEU5QlFVOHNSMEZCUnl4TFFVRkxMRkZCUVZFc1NVRkJTU3hIUVVGSExGbEJRVmtzVFVGQlRTeEZRVUZGTzFGQlEzQkVMRTlCUVU4c1IwRkJZU3hEUVVGRE8wdEJRM1JDTzFOQlFVMHNTVUZCU1N4blFrRkJaMElzU1VGQlNTeEhRVUZITEVWQlFVVTdVVUZEYkVNc1QwRkJUeXhqUVVGakxFTkJRVU1zUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU01UXp0VFFVRk5MRWxCUVVrc1IwRkJSeXhaUVVGWkxFdEJRVXNzUlVGQlJUdFJRVU12UWl4UFFVRlBMRTFCUVVNc1IwRkJZU3hEUVVGRExFdEJRVXNzYlVOQlFVc3NSMEZCWVN4RFFVRkRMRTlCUVU4c1EwRkJRenRMUVVOMlJEdFRRVUZOTzFGQlEwd3NUMEZCVHl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UzBGRGRrSTdRVUZEU0N4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eEpRVUZoTzBsQlEzcERMRTlCUVU4c1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNN1FVRkRla1VzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1Z5Y205eVZHOURiMjV6YjJ4bEtHVnljam9nWVc1NUtUb2djM1J5YVc1bklIdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCbGNuSWdQVDA5SUNkemRISnBibWNuSUh4OElHVnljaUJwYm5OMFlXNWpaVzltSUZOMGNtbHVaeWtnZTF4dUlDQWdJSEpsZEhWeWJpQmxjbklnWVhNZ2MzUnlhVzVuTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLQ2NrZEdoeWIzZHVTbk5GY25KdmNpY2dhVzRnWlhKeUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdWeWNtOXlWRzlEYjI1emIyeGxLR1Z5Y2xzbkpIUm9jbTkzYmtwelJYSnliM0luWFNrN1hHNGdJSDBnWld4elpTQnBaaUFvWlhKeUlHbHVjM1JoYm1ObGIyWWdSWEp5YjNJcElIdGNiaUFnSUNCeVpYUjFjbTRnS0dWeWNpQmhjeUJGY25KdmNpa3VjM1JoWTJzZ1B6OGdLR1Z5Y2lCaGN5QkZjbkp2Y2lrdWJXVnpjMkZuWlR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCeVpYUjFjbTRnWlhKeUxuUnZVM1J5YVc1bktDazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpsWTNSVWIwTnZibk52YkdVb2NtVmpkRG9nUkVjdVVtVmpkQ2s2SUhOMGNtbHVaeUI3WEc0Z0lISmxkSFZ5YmlCZ0tIZzlKSHR5WldOMExuaDlMQ0I1UFNSN2NtVmpkQzU1ZlN3Z2R6MGtlM0psWTNRdWQybGtkR2g5TENCb1BTUjdjbVZqZEM1b1pXbG5hSFI5S1dBN1hHNTlYRzRpWFgwPSIsImltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgZmluZE1vbm9tZXJzLCBwYXJzZUhlbG0sIGdldFBhcnRzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBwcmludExlZnRPckNlbnRlcmVkIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHsgZXJyb3JUb0NvbnNvbGUgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90by1jb25zb2xlJztcbmV4cG9ydCBjbGFzcyBIZWxtQ2VsbFJlbmRlcmVyIGV4dGVuZHMgREcuR3JpZENlbGxSZW5kZXJlciB7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiAnaGVsbSc7IH1cbiAgICBnZXQgY2VsbFR5cGUoKSB7IHJldHVybiAnaGVsbSc7IH1cbiAgICBnZXQgZGVmYXVsdFdpZHRoKCkgeyByZXR1cm4gNDAwOyB9XG4gICAgZ2V0IGRlZmF1bHRIZWlnaHQoKSB7IHJldHVybiAxMDA7IH1cbiAgICBvbk1vdXNlTW92ZShncmlkQ2VsbCwgZSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG1heExlbmd0aFdvcmRzU3VtID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnaGVsbS1zdW0tbWF4TGVuZ3RoV29yZHMnXTtcbiAgICAgICAgICAgIGNvbnN0IG1heEluZGV4ID0gT2JqZWN0LnZhbHVlcyhncmlkQ2VsbC5jZWxsLmNvbHVtbi50ZW1wWydoZWxtLW1heExlbmd0aFdvcmRzJ10pLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBhcmdzWCA9IGUub2Zmc2V0WCAtIGdyaWRDZWxsLmdyaWRDb2x1bW4ubGVmdCArIChncmlkQ2VsbC5ncmlkQ29sdW1uLmxlZnQgLSBncmlkQ2VsbC5ib3VuZHMueCk7XG4gICAgICAgICAgICBsZXQgbGVmdCA9IDA7XG4gICAgICAgICAgICBsZXQgcmlnaHQgPSBtYXhJbmRleDtcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgbWF4TGVuZ3RoV29yZHNTdW1bbWF4SW5kZXggKyAxXSA9IGFyZ3NYICsgMTtcbiAgICAgICAgICAgIGxldCBtaWQgPSAwO1xuICAgICAgICAgICAgaWYgKGFyZ3NYID4gbWF4TGVuZ3RoV29yZHNTdW1bMF0pIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pZCA9IE1hdGguZmxvb3IoKHJpZ2h0ICsgbGVmdCkgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NYID49IG1heExlbmd0aFdvcmRzU3VtW21pZF0gJiYgYXJnc1ggPD0gbWF4TGVuZ3RoV29yZHNTdW1bbWlkICsgMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1ggPCBtYXhMZW5ndGhXb3Jkc1N1bVttaWRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodCA9IG1pZCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1ggPiBtYXhMZW5ndGhXb3Jkc1N1bVttaWQgKyAxXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IG1pZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxlZnQgPSAoYXJnc1ggPj0gbWF4TGVuZ3RoV29yZHNTdW1bbGVmdF0pID8gbGVmdCArIDEgOiBsZWZ0O1xuICAgICAgICAgICAgY29uc3QgbW9ub21lcnMgPSBmaW5kTW9ub21lcnMoZ3JpZENlbGwuY2VsbC52YWx1ZSk7XG4gICAgICAgICAgICBsZXQgcyA9IChfYSA9IGdyaWRDZWxsLmNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgbGV0IHN1YlBhcnRzID0gcGFyc2VIZWxtKHMpO1xuICAgICAgICAgICAgbGV0IGFsbFBhcnRzID0gZ2V0UGFydHMoc3ViUGFydHMsIHMpO1xuICAgICAgICAgICAgbGV0IHRvb2x0aXBNZXNzYWdlID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbFBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXJzLmhhcyhhbGxQYXJ0c1tpXSkpXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBNZXNzYWdlW2ldID0gdWkuZGl2VihbXG4gICAgICAgICAgICAgICAgICAgICAgICB1aS5kaXZUZXh0KGBNb25vbWVyICR7YWxsUGFydHNbaV19IG5vdCBmb3VuZC5gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVpLmRpdlRleHQoJ09wZW4gdGhlIENvbnRleHQgUGFuZWwsIHRoZW4gZXhwYW5kIE1hbmFnZSBMaWJyYXJpZXMnKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICgoKChfYyA9IChfYiA9IHRvb2x0aXBNZXNzYWdlW2xlZnRdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2hpbGROb2Rlcy5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDApID4gMCkpXG4gICAgICAgICAgICAgICAgPyB1aS50b29sdGlwLnNob3codWkuZGl2KHRvb2x0aXBNZXNzYWdlW2xlZnRdKSwgZS54ICsgMTYsIGUueSArIDE2KVxuICAgICAgICAgICAgICAgIDogdWkudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc3QgZXJyTXNnID0gZXJyb3JUb0NvbnNvbGUoZXJyKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hlbG06IEhlbG1DZWxsUmVuZGVyZXIub25Nb3VzZU1vdmUoKSBlcnJvcjpcXG4nICsgZXJyTXNnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoZywgeCwgeSwgdywgaCwgZ3JpZENlbGwsIGNlbGxTdHlsZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBncmlkQ2VsbC5ncmlkUm93ICE9PSAtMSA/IGdyaWRDZWxsLmdyaWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuICAgICAgICBjb25zdCBncmF5Q29sb3IgPSAnIzgwODA4MCc7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJzID0gZmluZE1vbm9tZXJzKGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICBsZXQgcyA9IChfYSA9IGdyaWRDZWxsLmNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICBsZXQgc3ViUGFydHMgPSBwYXJzZUhlbG0ocyk7XG4gICAgICAgIGlmIChtb25vbWVycy5zaXplID09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10sIHsgc3R5bGU6IHsgd2lkdGg6IGAke3d9cHhgLCBoZWlnaHQ6IGAke2h9cHhgIH0gfSk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YWZvcm1hdCcsICdoZWxtJyk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YScsIGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICAgICAgZ3JpZENlbGwuZWxlbWVudCA9IGhvc3Q7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IG5ldyBKU0RyYXcyLkVkaXRvcihob3N0LCB7IHdpZHRoOiB3LCBoZWlnaHQ6IGgsIHNraW46ICd3OCcsIHZpZXdvbmx5OiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVycy5zaXplID4gMCkge1xuICAgICAgICAgICAgdyA9IGdyaWQgPyBNYXRoLm1pbihncmlkLmNhbnZhcy53aWR0aCAtIHgsIHcpIDogZy5jYW52YXMud2lkdGggLSB4O1xuICAgICAgICAgICAgZy5zYXZlKCk7XG4gICAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgZy5yZWN0KHgsIHksIHcsIGgpO1xuICAgICAgICAgICAgZy5jbGlwKCk7XG4gICAgICAgICAgICBnLmZvbnQgPSAnMTJweCBtb25vc3BhY2UnO1xuICAgICAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgICAgIGxldCB4MSA9IHg7XG4gICAgICAgICAgICBsZXQgbWF4TGVuZ3RoV29yZHMgPSB7fTtcbiAgICAgICAgICAgIGxldCBtYXhMZW5ndGhXb3JkU3VtID0ge307XG4gICAgICAgICAgICBsZXQgYWxsUGFydHMgPSBnZXRQYXJ0cyhzdWJQYXJ0cywgcyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbFBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoV29yZHNbaV0gPSBhbGxQYXJ0c1tpXS5sZW5ndGggKiA3O1xuICAgICAgICAgICAgICAgIGxldCBjb2xvciA9IG1vbm9tZXJzLmhhcyhhbGxQYXJ0c1tpXSkgPyAncmVkJyA6IGdyYXlDb2xvcjtcbiAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9IHVuZGVmaW5lZENvbG9yO1xuICAgICAgICAgICAgICAgIHgxID0gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4MSwgeSwgdywgaCwgZywgYWxsUGFydHNbaV0sIGNvbG9yLCAwLCB0cnVlLCAxLjApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF4TGVuZ3RoV29yZFN1bVswXSA9IG1heExlbmd0aFdvcmRzWzBdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhbGxQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG1heExlbmd0aFdvcmRTdW1baV0gPSBtYXhMZW5ndGhXb3JkU3VtW2kgLSAxXSArIG1heExlbmd0aFdvcmRzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcCA9IHtcbiAgICAgICAgICAgICAgICAnaGVsbS1zdW0tbWF4TGVuZ3RoV29yZHMnOiBtYXhMZW5ndGhXb3JkU3VtLFxuICAgICAgICAgICAgICAgICdoZWxtLW1heExlbmd0aFdvcmRzJzogbWF4TGVuZ3RoV29yZHNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBnLnJlc3RvcmUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCBqc29uU2RmTW9ub21lckxpYkRpY3QgPSB7XG4gICAgXCJtb25vbWVyVHlwZVwiOiBudWxsLFxuICAgIFwic21pbGVzXCI6IG51bGwsXG4gICAgXCJuYW1lXCI6IFwiTW9ub21lck5hbWVcIixcbiAgICBcImF1dGhvclwiOiBudWxsLFxuICAgIFwibW9sZmlsZVwiOiBcIm1vbGVjdWxlXCIsXG4gICAgXCJuYXR1cmFsQW5hbG9nXCI6IFwiTW9ub21lck5hdHVyYWxBbmFsb2dDb2RlXCIsXG4gICAgXCJyZ3JvdXBzXCI6IFwiTW9ub21lckNhcHNcIixcbiAgICBcImNyZWF0ZURhdGVcIjogbnVsbCxcbiAgICBcImlkXCI6IG51bGwsXG4gICAgXCJwb2x5bWVyVHlwZVwiOiBcIk1vbm9tZXJUeXBlXCIsXG4gICAgXCJzeW1ib2xcIjogXCJNb25vbWVyQ29kZVwiXG59O1xuZXhwb3J0IGNvbnN0IFNNSUxFUyA9ICdzbWlsZXMnO1xuZXhwb3J0IGNvbnN0IFJHUk9VUFMgPSBcInJncm91cHNcIjtcbmV4cG9ydCBjb25zdCBNT05PTUVSX1NZTUJPTCA9IFwic3ltYm9sXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0NBUF9HUk9VUF9TTUlMRVMgPSBcImNhcEdyb3VwU21pbGVzXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0FMVEVSX0lEID0gXCJhbHRlcm5hdGVJZFwiO1xuZXhwb3J0IGNvbnN0IFJHUk9VUF9DQVBfR1JPVVBfTkFNRSA9IFwiY2FwR3JvdXBOYW1lXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0xBQkVMID0gXCJsYWJlbFwiO1xuZXhwb3J0IGNvbnN0IFNERl9NT05PTUVSX05BTUUgPSBcIk1vbm9tZXJOYW1lXCI7XG4iLCJpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuZXhwb3J0IGNsYXNzIEhlbG1XZWJFZGl0b3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLncgPSAyMDA7XG4gICAgICAgIHRoaXMuaCA9IDEwMDtcbiAgICAgICAgdGhpcy5ob3N0ID0gdWkuZGl2KFtdLCB7IHN0eWxlOiB7IHdpZHRoOiBgJHt0aGlzLnd9cHhgLCBoZWlnaHQ6IGAke3RoaXMuaH1weGAgfSB9KTtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBuZXcgSlNEcmF3Mi5FZGl0b3IodGhpcy5ob3N0LCB7IHdpZHRoOiB0aGlzLncsIGhlaWdodDogdGhpcy5oLCB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcmVzaXplRWRpdG9yKHcsIGgpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0U2l6ZSh3LCBoKTtcbiAgICB9XG4gICAgY3JlYXRlV2ViRWRpdG9yKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvclZpZXcgPSB1aS5kaXYoKTtcbiAgICAgICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbFZpZXdlci5tb2xzY2FsZSA9IDAuODtcbiAgICAgICAgY29uc3Qgd2ViRWRpdG9yID0gbmV3IHNjaWwuaGVsbS5BcHAoZWRpdG9yVmlldywge1xuICAgICAgICAgICAgc2hvd2Fib3V0OiBmYWxzZSxcbiAgICAgICAgICAgIG1leGZvbnRzaXplOiAnOTAlJyxcbiAgICAgICAgICAgIG1leHJuYXBpbm9udGFiOiB0cnVlLFxuICAgICAgICAgICAgdG9wbWFyZ2luOiAyMCxcbiAgICAgICAgICAgIG1leG1vbm9tZXJzdGFiOiB0cnVlLFxuICAgICAgICAgICAgc2VxdWVuY2V2aWV3b25seTogZmFsc2UsXG4gICAgICAgICAgICBtZXhmYXZvcml0ZWZpcnN0OiB0cnVlLFxuICAgICAgICAgICAgbWV4ZmlsdGVyOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzaXplcyA9IHdlYkVkaXRvci5jYWxjdWxhdGVTaXplcygpO1xuICAgICAgICB3ZWJFZGl0b3IuY2FudmFzLnJlc2l6ZShzaXplcy5yaWdodHdpZHRoIC0gMTAwLCBzaXplcy50b3BoZWlnaHQgLSAyMTApO1xuICAgICAgICBsZXQgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggLSAxMDAgKyAncHgnLCBoZWlnaHQ6IHNpemVzLmJvdHRvbWhlaWdodCArICdweCcgfTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHNjaWwuYXBwbHkod2ViRWRpdG9yLnNlcXVlbmNlLnN0eWxlLCBzKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHNjaWwuYXBwbHkod2ViRWRpdG9yLm5vdGF0aW9uLnN0eWxlLCBzKTtcbiAgICAgICAgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggKyAncHgnLCBoZWlnaHQ6IChzaXplcy5ib3R0b21oZWlnaHQgKyB3ZWJFZGl0b3IudG9vbGJhcmhlaWdodCkgKyAncHgnIH07XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBzY2lsLmFwcGx5KHdlYkVkaXRvci5wcm9wZXJ0aWVzLnBhcmVudC5zdHlsZSwgcyk7XG4gICAgICAgIHdlYkVkaXRvci5zdHJ1Y3R1cmV2aWV3LnJlc2l6ZShzaXplcy5yaWdodHdpZHRoLCBzaXplcy5ib3R0b21oZWlnaHQgKyB3ZWJFZGl0b3IudG9vbGJhcmhlaWdodCk7XG4gICAgICAgIHdlYkVkaXRvci5tZXgucmVzaXplKHNpemVzLnRvcGhlaWdodCAtIDgwKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3ZWJFZGl0b3IuY2FudmFzLmhlbG0uc2V0U2VxdWVuY2UodmFsdWUsICdIRUxNJyk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICAgIHJldHVybiB7IGVkaXRvckRpdjogZWRpdG9yVmlldywgd2ViRWRpdG9yOiB3ZWJFZGl0b3IgfTtcbiAgICB9XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gZ2V0UGFydHMoc3ViUGFydHMsIHMpIHtcbiAgICBsZXQgaiA9IDA7XG4gICAgbGV0IGFsbFBhcnRzID0gW107XG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdWJQYXJ0cy5sZW5ndGg7ICsraykge1xuICAgICAgICBsZXQgaW5kZXhPZk1vbm9tZXIgPSBzLmluZGV4T2Yoc3ViUGFydHNba10pO1xuICAgICAgICBsZXQgaGVsbUJlZm9yZU1vbm9tZXIgPSBzLnNsaWNlKGosIGluZGV4T2ZNb25vbWVyKTtcbiAgICAgICAgYWxsUGFydHMucHVzaChoZWxtQmVmb3JlTW9ub21lcik7XG4gICAgICAgIGFsbFBhcnRzLnB1c2goc3ViUGFydHNba10pO1xuICAgICAgICBzID0gcy5zdWJzdHJpbmcoaW5kZXhPZk1vbm9tZXIgKyBzdWJQYXJ0c1trXS5sZW5ndGgpO1xuICAgIH1cbiAgICBhbGxQYXJ0cy5wdXNoKHMpO1xuICAgIHJldHVybiBhbGxQYXJ0cztcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhlbG0ocykge1xuICAgIHZhciBzZWN0aW9ucyA9IHNwbGl0KHMsICckJyk7XG4gICAgcyA9IHNlY3Rpb25zWzBdO1xuICAgIHZhciBtb25vbWVycyA9IFtdO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKSB7XG4gICAgICAgIHZhciBzZXFzID0gc3BsaXQocywgJ3wnKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXFzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRldGFjaEFubm90YXRpb24oc2Vxc1tpXSk7XG4gICAgICAgICAgICBzID0gZS5zdHI7XG4gICAgICAgICAgICB2YXIgcCA9IHMuaW5kZXhPZigneycpO1xuICAgICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKHAgKyAxKTtcbiAgICAgICAgICAgIHAgPSBzLmluZGV4T2YoJ30nKTtcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBwKTtcbiAgICAgICAgICAgIHZhciBzcyA9IHNwbGl0KHMsICcuJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBtb25vbWVyIG9mIHNzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIuaW5jbHVkZXMoJygnKSAmJiBtb25vbWVyLmluY2x1ZGVzKCcpJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gbW9ub21lci5yZXBsYWNlKC9bKCldL2csICcnKS5zcGxpdCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGVsIG9mIGVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb25vbWVycy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb25vbWVyLmluY2x1ZGVzKCdbJykgJiYgbW9ub21lci5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gbW9ub21lci5tYXRjaCgvKD88PVxcWykuKj8oPz1cXF0pL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgbW9ub21lcnMucHVzaChlbGVtZW50WzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1vbm9tZXJzLnB1c2gobW9ub21lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb25vbWVycztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTW9ub21lcnMoaGVsbVN0cmluZykge1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIGNvbnN0IHR5cGVzID0gT2JqZWN0LmtleXMob3JnLmhlbG0ud2ViZWRpdG9yLm1vbm9tZXJUeXBlTGlzdCgpKTtcbiAgICBjb25zdCBtb25vbWVycyA9IFtdO1xuICAgIGNvbnN0IG1vbm9tZXJfbmFtZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBtb25vbWVycy5wdXNoKG5ldyBzY2lsLmhlbG0uTW9ub21lcnMuZ2V0TW9ub21lclNldCh0eXBlc1tpXSkpO1xuICAgICAgICBPYmplY3Qua2V5cyhtb25vbWVyc1tpXSkuZm9yRWFjaChrID0+IHtcbiAgICAgICAgICAgIG1vbm9tZXJfbmFtZXMucHVzaChtb25vbWVyc1tpXVtrXS5pZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBzcGxpdF9zdHJpbmcgPSBwYXJzZUhlbG0oaGVsbVN0cmluZyk7XG4gICAgcmV0dXJuIG5ldyBTZXQoc3BsaXRfc3RyaW5nLmZpbHRlcih2YWwgPT4gIW1vbm9tZXJfbmFtZXMuaW5jbHVkZXModmFsKSkpO1xufVxuZnVuY3Rpb24gc3BsaXQocywgc2VwKSB7XG4gICAgdmFyIHJldCA9IFtdO1xuICAgIHZhciBmcmFnID0gJyc7XG4gICAgdmFyIHBhcmVudGhlc2VzID0gMDtcbiAgICB2YXIgYnJhY2tldCA9IDA7XG4gICAgdmFyIGJyYWNlcyA9IDA7XG4gICAgdmFyIHF1b3RlID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGMgPSBzLnN1YnN0cmluZyhpLCBpICsgMSk7XG4gICAgICAgIGlmIChjID09IHNlcCAmJiBicmFja2V0ID09IDAgJiYgcGFyZW50aGVzZXMgPT0gMCAmJiBicmFjZXMgPT0gMCAmJiBxdW90ZSA9PSAwKSB7XG4gICAgICAgICAgICByZXQucHVzaChmcmFnKTtcbiAgICAgICAgICAgIGZyYWcgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZyYWcgKz0gYztcbiAgICAgICAgICAgIGlmIChxdW90ZSA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFxcXCcgJiYgaSArIDEgPCBzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjMiA9IHMuc3Vic3RyaW5nKGksIGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgZnJhZyArPSBjMjtcbiAgICAgICAgICAgICAgICAgICAgYyArPSBjMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA9PSAnXFxcIicpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShpID4gMCAmJiBzLnN1YnN0cmluZyhpIC0gMSwgaSkgPT0gJ1xcXFwnKSlcbiAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSBxdW90ZSA9PSAwID8gMSA6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICdbJylcbiAgICAgICAgICAgICAgICArK2JyYWNrZXQ7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICddJylcbiAgICAgICAgICAgICAgICAtLWJyYWNrZXQ7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICcoJylcbiAgICAgICAgICAgICAgICArK3BhcmVudGhlc2VzO1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnKScpXG4gICAgICAgICAgICAgICAgLS1wYXJlbnRoZXNlcztcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ3snKVxuICAgICAgICAgICAgICAgICsrYnJhY2VzO1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnfScpXG4gICAgICAgICAgICAgICAgLS1icmFjZXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0LnB1c2goZnJhZyk7XG4gICAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIGRldGFjaEFubm90YXRpb24ocykge1xuICAgIHZhciByZXQgPSBfZGV0YWNoQXBwZW5kaXgocywgJ1xcXCInKTtcbiAgICBpZiAocmV0LnRhZyAhPSBudWxsKVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIHZhciByID0gX2RldGFjaEFwcGVuZGl4KHMsICdcXCcnKTtcbiAgICByZXR1cm4geyB0YWc6IHJldC50YWcsIHJlcGVhdDogci50YWcsIHN0cjogci5zdHIgfTtcbn1cbmZ1bmN0aW9uIF9kZXRhY2hBcHBlbmRpeChzLCBjKSB7XG4gICAgdmFyIHRhZyA9IG51bGw7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgaWYgKHNjaWwuVXRpbHMuZW5kc3dpdGgocywgYykpIHtcbiAgICAgICAgdmFyIHAgPSBzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlIChwID4gMCkge1xuICAgICAgICAgICAgcCA9IHMubGFzdEluZGV4T2YoYywgcCAtIDEpO1xuICAgICAgICAgICAgaWYgKHAgPD0gMCB8fCBzLnN1YnN0cmluZyhwIC0gMSwgcCkgIT0gJ1xcXFwnKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwID4gMCAmJiBwIDwgcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0YWcgPSBzLnN1YnN0cmluZyhwICsgMSwgcy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGFnICE9IG51bGwpXG4gICAgICAgIHRhZyA9IHRhZy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFwnICsgYywgJ2cnKSwgYyk7XG4gICAgcmV0dXJuIHsgdGFnOiB1bmVzY2FwZSh0YWcpLCBzdHI6IHMgfTtcbn1cbmZ1bmN0aW9uIHVuZXNjYXBlKHMpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxuICAgICAgICByZXR1cm4gcztcbiAgICByZXR1cm4gcy5yZXBsYWNlKC9bXFxcXF0uL2csIGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHN3aXRjaCAobSkge1xuICAgICAgICAgICAgY2FzZSAnXFxcXHInOlxuICAgICAgICAgICAgICAgIHJldHVybiAnXFxyJztcbiAgICAgICAgICAgIGNhc2UgJ1xcXFxuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1xcbic7XG4gICAgICAgICAgICBjYXNlICdcXFxcdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdcXHQnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gREc7IiwibW9kdWxlLmV4cG9ydHMgPSBncm9rOyIsIm1vZHVsZS5leHBvcnRzID0gdWk7IiwibW9kdWxlLmV4cG9ydHMgPSB3dTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG4vKiBEbyBub3QgY2hhbmdlIHRoZXNlIGltcG9ydCBsaW5lcyB0byBtYXRjaCBleHRlcm5hbCBtb2R1bGVzIGluIHdlYnBhY2sgY29uZmlndXJhdGlvbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFJHUk9VUF9DQVBfR1JPVVBfTkFNRSwgUkdST1VQX0xBQkVMLCBTTUlMRVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBIZWxtV2ViRWRpdG9yIH0gZnJvbSAnLi9oZWxtLXdlYi1lZGl0b3InO1xuaW1wb3J0IHsgSGVsbUNlbGxSZW5kZXJlciB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcic7XG5pbXBvcnQgeyBOb3RhdGlvbkNvbnZlcnRlciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgZmluZE1vbm9tZXJzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBlcnJvclRvQ29uc29sZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3RvLWNvbnNvbGUnO1xuZXhwb3J0IGNvbnN0IF9wYWNrYWdlID0gbmV3IERHLlBhY2thZ2UoKTtcbmxldCBtb25vbWVyTGliID0gbnVsbDtcbi8vdGFnczogaW5pdFxuZXhwb3J0IGZ1bmN0aW9uIGluaXRIZWxtKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBkb2pvLnJlYWR5KGZ1bmN0aW9uICgpIHsgcmVzb2x2ZShudWxsKTsgfSk7XG4gICAgICAgICAgICB9KSwgeWllbGQgZ3Jvay5mdW5jdGlvbnMuY2FsbCgnQmlvOmdldEJpb0xpYicpXSkudGhlbigoW18sIGxpYl0pID0+IHtcbiAgICAgICAgICAgIG1vbm9tZXJMaWIgPSBsaWI7XG4gICAgICAgICAgICByZXdyaXRlTGlicmFyaWVzKCk7IC8vIGluaXRIZWxtKClcbiAgICAgICAgICAgIG1vbm9tZXJMaWIub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJld3JpdGVMaWJyYXJpZXMoKTsgLy8gaW5pdEhlbG0oKVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb25UeXBlTGlzdCA9IG1vbm9tZXJMaWIuZ2V0VHlwZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnU3RyID0gJ01vbm9tZXIgbGliIHVwZGF0ZWQ6PGJyIC8+JyArIChtb25UeXBlTGlzdC5sZW5ndGggPT0gMCA/ICdlbXB0eScgOiBtb25UeXBlTGlzdC5tYXAoKG1vblR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHttb25UeXBlfSAke21vbm9tZXJMaWIuZ2V0TW9ub21lck5hbWVzQnlUeXBlKG1vblR5cGUpLmxlbmd0aH1gO1xuICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCc8YnIgLz4nKSk7XG4gICAgICAgICAgICAgICAgICAgIGdyb2suc2hlbGwuaW5mbyhtc2dTdHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVyck1zZyA9IGVycm9yVG9Db25zb2xlKGVycik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hlbG06IGluaXRIZWxtIG1vbm9tZXJMaWIub25DaGFuZ2VkKCkgZXJyb3I6XFxuJyArIGVyck1zZyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRocm93IGVycjsgLy8gUHJldmVudCBkaXNhYmxpbmcgZXZlbnQgaGFuZGxlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJld3JpdGVMaWJyYXJpZXMoKSB7XG4gICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbm9tZXJzLmNsZWFyKCk7XG4gICAgbW9ub21lckxpYi5nZXRUeXBlcygpLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICAgY29uc3QgbW1zID0gbW9ub21lckxpYi5nZXRNb25vbWVyTmFtZXNCeVR5cGUodHlwZSk7XG4gICAgICAgIG1tcy5mb3JFYWNoKChzeW1ib2wpID0+IHtcbiAgICAgICAgICAgIGxldCBpc0Jyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgbW9ub21lciA9IG1vbm9tZXJMaWIuZ2V0TW9ub21lcih0eXBlLCBzeW1ib2wpO1xuICAgICAgICAgICAgY29uc3Qgd2ViRWRpdG9yTW9ub21lciA9IHtcbiAgICAgICAgICAgICAgICBpZDogc3ltYm9sLFxuICAgICAgICAgICAgICAgIG06IG1vbm9tZXIubW9sZmlsZSxcbiAgICAgICAgICAgICAgICBuOiBtb25vbWVyLm5hbWUsXG4gICAgICAgICAgICAgICAgbmE6IG1vbm9tZXIubmF0dXJhbEFuYWxvZyxcbiAgICAgICAgICAgICAgICByczogbW9ub21lci5yZ3JvdXBzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB0eXBlOiBtb25vbWVyLnBvbHltZXJUeXBlLFxuICAgICAgICAgICAgICAgIG10OiBtb25vbWVyLm1vbm9tZXJUeXBlLFxuICAgICAgICAgICAgICAgIGF0OiB7fVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLnJncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIucnMgPSBtb25vbWVyLnJncm91cHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0ID0ge307XG4gICAgICAgICAgICAgICAgbW9ub21lci5yZ3JvdXBzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhdFtpdFtSR1JPVVBfTEFCRUxdXSA9IGl0W1JHUk9VUF9DQVBfR1JPVVBfTkFNRV07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgd2ViRWRpdG9yTW9ub21lci5hdCA9IGF0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobW9ub21lci5kYXRhW1NNSUxFU10gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIucnMgPSBPYmplY3Qua2V5cyhnZXRSUyhtb25vbWVyLmRhdGFbU01JTEVTXS50b1N0cmluZygpKSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIuYXQgPSBnZXRSUyhtb25vbWVyLmRhdGFbU01JTEVTXS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlzQnJva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNCcm9rZW4pXG4gICAgICAgICAgICAgICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbm9tZXJzLmFkZE9uZU1vbm9tZXIod2ViRWRpdG9yTW9ub21lcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIE9ic29sZXRlXG4gICAgbGV0IGdyaWQgPSBncm9rLnNoZWxsLnR2LmdyaWQ7XG4gICAgaWYgKGdyaWQpXG4gICAgICAgIGdyaWQuaW52YWxpZGF0ZSgpO1xufVxuLy9uYW1lOiBoZWxtQ2VsbFJlbmRlcmVyXG4vL3RhZ3M6IGNlbGxSZW5kZXJlclxuLy9tZXRhLmNlbGxUeXBlOiBoZWxtXG4vL21ldGEuY29sdW1uVGFnczogdW5pdHM9aGVsbVxuLy9vdXRwdXQ6IGdyaWRfY2VsbF9yZW5kZXJlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBoZWxtQ2VsbFJlbmRlcmVyKCkge1xuICAgIHJldHVybiBuZXcgSGVsbUNlbGxSZW5kZXJlcigpO1xufVxuZnVuY3Rpb24gY2hlY2tNb25vbWVyc0FuZE9wZW5XZWJFZGl0b3IoY2VsbCwgdmFsdWUsIHVuaXRzKSB7XG4gICAgY29uc3QgY2VsbFZhbHVlID0gdHlwZW9mIHVuaXRzID09PSAndW5kZWZpbmVkJyA/IGNlbGwudmFsdWUgOiB2YWx1ZTtcbiAgICBjb25zdCBtb25vbWVycyA9IGZpbmRNb25vbWVycyhjZWxsVmFsdWUpO1xuICAgIGlmIChtb25vbWVycy5zaXplID09IDApXG4gICAgICAgIHdlYkVkaXRvcihjZWxsLCB2YWx1ZSwgdW5pdHMpO1xuICAgIGVsc2VcbiAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBNb25vbWVycyAke0FycmF5LmZyb20obW9ub21lcnMpLmpvaW4oJywgJyl9IGFyZSBhYnNlbnQhIDxici8+YCArXG4gICAgICAgICAgICBgUGxlYXNlLCB1cGxvYWQgdGhlIG1vbm9tZXIgbGlicmFyeSEgPGJyLz5gICtcbiAgICAgICAgICAgIGA8YSBocmVmPVwiaHR0cHM6Ly9kYXRhZ3Jvay5haS9oZWxwL2RvbWFpbnMvYmlvL21hY3JvbW9sZWN1bGVzXCIgdGFyZ2V0PVwiX2JsYW5rXCI+TGVhcm4gbW9yZTwvYT5gKTtcbn1cbi8vdGFnczogY2VsbEVkaXRvclxuLy9kZXNjcmlwdGlvbjogTWFjcm9tb2xlY3VsZSAgXG4vL2lucHV0OiBncmlkX2NlbGwgY2VsbFxuLy9tZXRhLmNvbHVtblRhZ3M6IHF1YWxpdHk9TWFjcm9tb2xlY3VsZSwgdW5pdHM9aGVsbVxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRNb2xlY3VsZUNlbGwoY2VsbCkge1xuICAgIGNoZWNrTW9ub21lcnNBbmRPcGVuV2ViRWRpdG9yKGNlbGwuY2VsbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufVxuLy9uYW1lOiBPcGVuIEhlbG0gV2ViIEVkaXRvclxuLy9kZXNjcmlwdGlvbjogQWRkcyBlZGl0b3Jcbi8vbWV0YS5hY3Rpb246IE9wZW4gSGVsbSBXZWIgRWRpdG9yXG4vL2lucHV0OiBzdHJpbmcgbW9sIHsgc2VtVHlwZTogTWFjcm9tb2xlY3VsZSB9XG5leHBvcnQgZnVuY3Rpb24gb3BlbkVkaXRvcihtb2wpIHtcbiAgICBsZXQgZGYgPSBncm9rLnNoZWxsLnR2LmdyaWQuZGF0YUZyYW1lO1xuICAgIGxldCBjb2wgPSBkZi5jb2x1bW5zLmJ5U2VtVHlwZSgnTWFjcm9tb2xlY3VsZScpO1xuICAgIGxldCBjb252ZXJ0ZXIgPSBuZXcgTm90YXRpb25Db252ZXJ0ZXIoY29sKTtcbiAgICBjb25zdCByZXNTdHIgPSBjb252ZXJ0ZXIuY29udmVydFN0cmluZ1RvSGVsbShtb2wsICcvJyk7XG4gICAgY2hlY2tNb25vbWVyc0FuZE9wZW5XZWJFZGl0b3IoZGYuY3VycmVudENlbGwsIHJlc1N0ciwgY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKSk7XG59XG4vL25hbWU6IFByb3BlcnRpZXNcbi8vdGFnczogcGFuZWwsIHdpZGdldHNcbi8vaW5wdXQ6IHN0cmluZyBoZWxtU3RyaW5nIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9vdXRwdXQ6IHdpZGdldCByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzUGFuZWwoaGVsbVN0cmluZykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCBncmlkID0gZ3Jvay5zaGVsbC50di5ncmlkO1xuICAgICAgICBsZXQgcGFyZW50ID0gZ3JpZC5yb290LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10pO1xuICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaG9zdCk7XG4gICAgICAgIGxldCBlZGl0b3IgPSBuZXcgSlNEcmF3Mi5FZGl0b3IoaG9zdCwgeyB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICAgICAgaG9zdC5zdHlsZS53aWR0aCA9ICcwcHgnO1xuICAgICAgICBob3N0LnN0eWxlLmhlaWdodCA9ICcwcHgnO1xuICAgICAgICBlZGl0b3Iuc2V0SGVsbShoZWxtU3RyaW5nKTtcbiAgICAgICAgbGV0IGZvcm11bGEgPSBlZGl0b3IuZ2V0Rm9ybXVsYSh0cnVlKTtcbiAgICAgICAgbGV0IG1vbFdlaWdodCA9IE1hdGgucm91bmQoZWRpdG9yLmdldE1vbFdlaWdodCgpICogMTAwKSAvIDEwMDtcbiAgICAgICAgbGV0IGNvZWYgPSBNYXRoLnJvdW5kKGVkaXRvci5nZXRFeHRpbmN0aW9uQ29lZmZpY2llbnQodHJ1ZSkgKiAxMDApIC8gMTAwO1xuICAgICAgICBwYXJlbnQubGFzdENoaWxkLnJlbW92ZSgpO1xuICAgICAgICByZXR1cm4gbmV3IERHLldpZGdldCh1aS50YWJsZUZyb21NYXAoe1xuICAgICAgICAgICAgJ2Zvcm11bGEnOiBmb3JtdWxhLnJlcGxhY2UoLzxzdWI+L2csICcnKS5yZXBsYWNlKC88XFwvc3ViPi9nLCAnJyksXG4gICAgICAgICAgICAnbW9sZWN1bGFyIHdlaWdodCc6IG1vbFdlaWdodCxcbiAgICAgICAgICAgICdleHRpbmN0aW9uIGNvZWZmaWNpZW50JzogY29lZixcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gd2ViRWRpdG9yKGNlbGwsIHZhbHVlLCB1bml0cykge1xuICAgIGxldCB2aWV3ID0gdWkuZGl2KCk7XG4gICAgbGV0IGRmID0gZ3Jvay5zaGVsbC50di5ncmlkLmRhdGFGcmFtZTtcbiAgICBsZXQgY29udmVydGVyID0gbmV3IE5vdGF0aW9uQ29udmVydGVyKGRmLmNvbHVtbnMuYnlTZW1UeXBlKCdNYWNyb21vbGVjdWxlJykpO1xuICAgIG9yZy5oZWxtLndlYmVkaXRvci5Nb2xWaWV3ZXIubW9sc2NhbGUgPSAwLjg7XG4gICAgbGV0IGFwcCA9IG5ldyBzY2lsLmhlbG0uQXBwKHZpZXcsIHtcbiAgICAgICAgc2hvd2Fib3V0OiBmYWxzZSxcbiAgICAgICAgbWV4Zm9udHNpemU6ICc5MCUnLFxuICAgICAgICBtZXhybmFwaW5vbnRhYjogdHJ1ZSxcbiAgICAgICAgdG9wbWFyZ2luOiAyMCxcbiAgICAgICAgbWV4bW9ub21lcnN0YWI6IHRydWUsXG4gICAgICAgIHNlcXVlbmNldmlld29ubHk6IGZhbHNlLFxuICAgICAgICBtZXhmYXZvcml0ZWZpcnN0OiB0cnVlLFxuICAgICAgICBtZXhmaWx0ZXI6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc2l6ZXMgPSBhcHAuY2FsY3VsYXRlU2l6ZXMoKTtcbiAgICBhcHAuY2FudmFzLnJlc2l6ZShzaXplcy5yaWdodHdpZHRoIC0gMTAwLCBzaXplcy50b3BoZWlnaHQgLSAyMTApO1xuICAgIHZhciBzID0geyB3aWR0aDogc2l6ZXMucmlnaHR3aWR0aCAtIDEwMCArICdweCcsIGhlaWdodDogc2l6ZXMuYm90dG9taGVpZ2h0ICsgJ3B4JyB9O1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHNjaWwuYXBwbHkoYXBwLnNlcXVlbmNlLnN0eWxlLCBzKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBzY2lsLmFwcGx5KGFwcC5ub3RhdGlvbi5zdHlsZSwgcyk7XG4gICAgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggKyAncHgnLCBoZWlnaHQ6IChzaXplcy5ib3R0b21oZWlnaHQgKyBhcHAudG9vbGJhcmhlaWdodCkgKyAncHgnIH07XG4gICAgLy9AdHMtaWdub3JlXG4gICAgc2NpbC5hcHBseShhcHAucHJvcGVydGllcy5wYXJlbnQuc3R5bGUsIHMpO1xuICAgIGFwcC5zdHJ1Y3R1cmV2aWV3LnJlc2l6ZShzaXplcy5yaWdodHdpZHRoLCBzaXplcy5ib3R0b21oZWlnaHQgKyBhcHAudG9vbGJhcmhlaWdodCk7XG4gICAgYXBwLm1leC5yZXNpemUoc2l6ZXMudG9waGVpZ2h0IC0gODApO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgYXBwLmNhbnZhcy5oZWxtLnNldFNlcXVlbmNlKGNlbGwudmFsdWUsICdIRUxNJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhcHAuY2FudmFzLmhlbG0uc2V0U2VxdWVuY2UodmFsdWUsICdIRUxNJyk7XG4gICAgICAgIH1cbiAgICB9LCAyMDApO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHVpLmRpYWxvZyh7IHNob3dIZWFkZXI6IGZhbHNlLCBzaG93Rm9vdGVyOiB0cnVlIH0pXG4gICAgICAgIC5hZGQodmlldylcbiAgICAgICAgLm9uT0soKCkgPT4ge1xuICAgICAgICBsZXQgaGVsbVZhbHVlID0gYXBwLmNhbnZhcy5nZXRIZWxtKHRydWUpLnJlcGxhY2UoLzxcXC9zcGFuPi9nLCAnJykucmVwbGFjZSgvPHNwYW4gc3R5bGU9J2JhY2tncm91bmQ6I2JiZjsnPi9nLCAnJyk7XG4gICAgICAgIGlmICh0eXBlb2YgdW5pdHMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gaGVsbVZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IGNvbnZlcnRlZFJlcyA9IGNvbnZlcnRlci5jb252ZXJ0SGVsbVRvRmFzdGFTZXBhcmF0b3IoaGVsbVZhbHVlLCB1bml0cyk7XG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gY29udmVydGVkUmVzO1xuICAgICAgICB9XG4gICAgfSkuc2hvdyh7IG1vZGFsOiB0cnVlLCBmdWxsU2NyZWVuOiB0cnVlIH0pO1xufVxuZnVuY3Rpb24gZ2V0UlMoc21pbGVzKSB7XG4gICAgY29uc3QgbmV3UyA9IHNtaWxlcy5tYXRjaCgvKD88PVxcWylbXlxcXVtdKig/PV0pL2dtKTtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBsZXQgZWwgPSAnJztcbiAgICBsZXQgZGlnaXQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdTLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChuZXdTW2ldICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICgvXFxkLy50ZXN0KG5ld1NbaV0pKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQgPSBuZXdTW2ldW25ld1NbaV0ubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgbmV3U1tpXSA9IG5ld1NbaV0ucmVwbGFjZSgvWzAtOV0vZywgJycpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbmV3U1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3U1tpXVtqXSAhPSAnOicpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbCArPSBuZXdTW2ldW2pdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNbJ1InICsgZGlnaXRdID0gZWw7XG4gICAgICAgICAgICAgICAgZWwgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBnZXRNb2xmaWxlc1xuLy9pbnB1dDogY29sdW1uIGNvbCB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbi8vb3V0cHV0OiBjb2x1bW4gcmVzIFxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzKGNvbCkge1xuICAgIGxldCBncmlkID0gZ3Jvay5zaGVsbC50di5ncmlkO1xuICAgIGxldCBwYXJlbnQgPSBncmlkLnJvb3QucGFyZW50RWxlbWVudDtcbiAgICBsZXQgcmVzID0gREcuQ29sdW1uLnN0cmluZygnbW9scycsIGNvbC5sZW5ndGgpO1xuICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10pO1xuICAgIHBhcmVudC5hcHBlbmRDaGlsZChob3N0KTtcbiAgICBsZXQgZWRpdG9yID0gbmV3IEpTRHJhdzIuRWRpdG9yKGhvc3QsIHsgdmlld29ubHk6IHRydWUgfSk7XG4gICAgaG9zdC5zdHlsZS53aWR0aCA9ICcwcHgnO1xuICAgIGhvc3Quc3R5bGUuaGVpZ2h0ID0gJzBweCc7XG4gICAgcmVzLmluaXQoKGkpID0+IHtcbiAgICAgICAgZWRpdG9yLnNldEhlbG0oY29sLmdldChpKSk7XG4gICAgICAgIGxldCBtb2wgPSBlZGl0b3IuZ2V0TW9sZmlsZSgpO1xuICAgICAgICByZXR1cm4gbW9sO1xuICAgIH0pO1xuICAgIHBhcmVudC5sYXN0Q2hpbGQucmVtb3ZlKCk7XG4gICAgcmV0dXJuIHJlcztcbn1cbi8vbmFtZTogaGVsbVdlYkVkaXRvclxuLy9vdXRwdXQ6IG9iamVjdFxuZXhwb3J0IGZ1bmN0aW9uIGhlbG1XZWJFZGl0b3IoKSB7XG4gICAgcmV0dXJuIG5ldyBIZWxtV2ViRWRpdG9yKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=