TypeScript/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map
Orta 20ecbb0f46
Allow Source Mapping inside destructuring assignment (#37298)
* Add support for source maps inside of destructured code

* Adds tests for the source maps inside destructured code
2020-04-03 17:23:02 -04:00

4 lines
23 KiB
Plaintext

//// [sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map]
{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts"],"names":[],"mappings":"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"}
//// https://sokra.github.io/source-map-visualization#base64,dmFyIHJvYm90QSA9IFsxLCAibW93ZXIiLCAibW93aW5nIl07DQp2YXIgcm9ib3RCID0gWzIsICJ0cmltbWVyIiwgInRyaW1taW5nIl07DQp2YXIgcm9ib3RzID0gW3JvYm90QSwgcm9ib3RCXTsNCmZ1bmN0aW9uIGdldFJvYm90cygpIHsNCiAgICByZXR1cm4gcm9ib3RzOw0KfQ0KdmFyIG11bHRpUm9ib3RBID0gWyJtb3dlciIsIFsibW93aW5nIiwgIiJdXTsNCnZhciBtdWx0aVJvYm90QiA9IFsidHJpbW1lciIsIFsidHJpbW1pbmciLCAiZWRnaW5nIl1dOw0KdmFyIG11bHRpUm9ib3RzID0gW211bHRpUm9ib3RBLCBtdWx0aVJvYm90Ql07DQpmdW5jdGlvbiBnZXRNdWx0aVJvYm90cygpIHsNCiAgICByZXR1cm4gbXVsdGlSb2JvdHM7DQp9DQpmb3IgKHZhciBfaSA9IDAsIHJvYm90c18xID0gcm9ib3RzOyBfaSA8IHJvYm90c18xLmxlbmd0aDsgX2krKykgew0KICAgIHZhciBfYSA9IHJvYm90c18xW19pXSwgX2IgPSBfYVsxXSwgbmFtZUEgPSBfYiA9PT0gdm9pZCAwID8gIm5vTmFtZSIgOiBfYjsNCiAgICBjb25zb2xlLmxvZyhuYW1lQSk7DQp9DQpmb3IgKHZhciBfYyA9IDAsIF9kID0gZ2V0Um9ib3RzKCk7IF9jIDwgX2QubGVuZ3RoOyBfYysrKSB7DQogICAgdmFyIF9lID0gX2RbX2NdLCBfZiA9IF9lWzFdLCBuYW1lQSA9IF9mID09PSB2b2lkIDAgPyAibm9OYW1lIiA6IF9mOw0KICAgIGNvbnNvbGUubG9nKG5hbWVBKTsNCn0NCmZvciAodmFyIF9nID0gMCwgX2ggPSBbcm9ib3RBLCByb2JvdEJdOyBfZyA8IF9oLmxlbmd0aDsgX2crKykgew0KICAgIHZhciBfaiA9IF9oW19nXSwgX2sgPSBfalsxXSwgbmFtZUEgPSBfayA9PT0gdm9pZCAwID8gIm5vTmFtZSIgOiBfazsNCiAgICBjb25zb2xlLmxvZyhuYW1lQSk7DQp9DQpmb3IgKHZhciBfbCA9IDAsIG11bHRpUm9ib3RzXzEgPSBtdWx0aVJvYm90czsgX2wgPCBtdWx0aVJvYm90c18xLmxlbmd0aDsgX2wrKykgew0KICAgIHZhciBfbSA9IG11bHRpUm9ib3RzXzFbX2xdLCBfbyA9IF9tWzFdLCBfcCA9IF9vID09PSB2b2lkIDAgPyBbInNraWxsMSIsICJza2lsbDIiXSA6IF9vLCBfcSA9IF9wWzBdLCBwcmltYXJ5U2tpbGxBID0gX3EgPT09IHZvaWQgMCA/ICJwcmltYXJ5IiA6IF9xLCBfciA9IF9wWzFdLCBzZWNvbmRhcnlTa2lsbEEgPSBfciA9PT0gdm9pZCAwID8gInNlY29uZGFyeSIgOiBfcjsNCiAgICBjb25zb2xlLmxvZyhwcmltYXJ5U2tpbGxBKTsNCn0NCmZvciAodmFyIF9zID0gMCwgX3QgPSBnZXRNdWx0aVJvYm90cygpOyBfcyA8IF90Lmxlbmd0aDsgX3MrKykgew0KICAgIHZhciBfdSA9IF90W19zXSwgX3YgPSBfdVsxXSwgX3cgPSBfdiA9PT0gdm9pZCAwID8gWyJza2lsbDEiLCAic2tpbGwyIl0gOiBfdiwgX3ggPSBfd1swXSwgcHJpbWFyeVNraWxsQSA9IF94ID09PSB2b2lkIDAgPyAicHJpbWFyeSIgOiBfeCwgX3kgPSBfd1sxXSwgc2Vjb25kYXJ5U2tpbGxBID0gX3kgPT09IHZvaWQgMCA/ICJzZWNvbmRhcnkiIDogX3k7DQogICAgY29uc29sZS5sb2cocHJpbWFyeVNraWxsQSk7DQp9DQpmb3IgKHZhciBfeiA9IDAsIF8wID0gW211bHRpUm9ib3RBLCBtdWx0aVJvYm90Ql07IF96IDwgXzAubGVuZ3RoOyBfeisrKSB7DQogICAgdmFyIF8xID0gXzBbX3pdLCBfMiA9IF8xWzFdLCBfMyA9IF8yID09PSB2b2lkIDAgPyBbInNraWxsMSIsICJza2lsbDIiXSA6IF8yLCBfNCA9IF8zWzBdLCBwcmltYXJ5U2tpbGxBID0gXzQgPT09IHZvaWQgMCA/ICJwcmltYXJ5IiA6IF80LCBfNSA9IF8zWzFdLCBzZWNvbmRhcnlTa2lsbEEgPSBfNSA9PT0gdm9pZCAwID8gInNlY29uZGFyeSIgOiBfNTsNCiAgICBjb25zb2xlLmxvZyhwcmltYXJ5U2tpbGxBKTsNCn0NCmZvciAodmFyIF82ID0gMCwgcm9ib3RzXzIgPSByb2JvdHM7IF82IDwgcm9ib3RzXzIubGVuZ3RoOyBfNisrKSB7DQogICAgdmFyIF83ID0gcm9ib3RzXzJbXzZdWzBdLCBudW1iZXJCID0gXzcgPT09IHZvaWQgMCA/IC0xIDogXzc7DQogICAgY29uc29sZS5sb2cobnVtYmVyQik7DQp9DQpmb3IgKHZhciBfOCA9IDAsIF85ID0gZ2V0Um9ib3RzKCk7IF84IDwgXzkubGVuZ3RoOyBfOCsrKSB7DQogICAgdmFyIF8xMCA9IF85W184XVswXSwgbnVtYmVyQiA9IF8xMCA9PT0gdm9pZCAwID8gLTEgOiBfMTA7DQogICAgY29uc29sZS5sb2cobnVtYmVyQik7DQp9DQpmb3IgKHZhciBfMTEgPSAwLCBfMTIgPSBbcm9ib3RBLCByb2JvdEJdOyBfMTEgPCBfMTIubGVuZ3RoOyBfMTErKykgew0KICAgIHZhciBfMTMgPSBfMTJbXzExXVswXSwgbnVtYmVyQiA9IF8xMyA9PT0gdm9pZCAwID8gLTEgOiBfMTM7DQogICAgY29uc29sZS5sb2cobnVtYmVyQik7DQp9DQpmb3IgKHZhciBfMTQgPSAwLCBtdWx0aVJvYm90c18yID0gbXVsdGlSb2JvdHM7IF8xNCA8IG11bHRpUm9ib3RzXzIubGVuZ3RoOyBfMTQrKykgew0KICAgIHZhciBfMTUgPSBtdWx0aVJvYm90c18yW18xNF1bMF0sIG5hbWVCID0gXzE1ID09PSB2b2lkIDAgPyAibm9OYW1lIiA6IF8xNTsNCiAgICBjb25zb2xlLmxvZyhuYW1lQik7DQp9DQpmb3IgKHZhciBfMTYgPSAwLCBfMTcgPSBnZXRNdWx0aVJvYm90cygpOyBfMTYgPCBfMTcubGVuZ3RoOyBfMTYrKykgew0KICAgIHZhciBfMTggPSBfMTdbXzE2XVswXSwgbmFtZUIgPSBfMTggPT09IHZvaWQgMCA/ICJub05hbWUiIDogXzE4Ow0KICAgIGNvbnNvbGUubG9nKG5hbWVCKTsNCn0NCmZvciAodmFyIF8xOSA9IDAsIF8yMCA9IFttdWx0aVJvYm90QSwgbXVsdGlSb2JvdEJdOyBfMTkgPCBfMjAubGVuZ3RoOyBfMTkrKykgew0KICAgIHZhciBfMjEgPSBfMjBbXzE5XVswXSwgbmFtZUIgPSBfMjEgPT09IHZvaWQgMCA/ICJub05hbWUiIDogXzIxOw0KICAgIGNvbnNvbGUubG9nKG5hbWVCKTsNCn0NCmZvciAodmFyIF8yMiA9IDAsIHJvYm90c18zID0gcm9ib3RzOyBfMjIgPCByb2JvdHNfMy5sZW5ndGg7IF8yMisrKSB7DQogICAgdmFyIF8yMyA9IHJvYm90c18zW18yMl0sIF8yNCA9IF8yM1swXSwgbnVtYmVyQTIgPSBfMjQgPT09IHZvaWQgMCA/IC0xIDogXzI0LCBfMjUgPSBfMjNbMV0sIG5hbWVBMiA9IF8yNSA9PT0gdm9pZCAwID8gIm5vTmFtZSIgOiBfMjUsIF8yNiA9IF8yM1syXSwgc2tpbGxBMiA9IF8yNiA9PT0gdm9pZCAwID8gInNraWxsIiA6IF8yNjsNCiAgICBjb25zb2xlLmxvZyhuYW1lQTIpOw0KfQ0KZm9yICh2YXIgXzI3ID0gMCwgXzI4ID0gZ2V0Um9ib3RzKCk7IF8yNyA8IF8yOC5sZW5ndGg7IF8yNysrKSB7DQogICAgdmFyIF8yOSA9IF8yOFtfMjddLCBfMzAgPSBfMjlbMF0sIG51bWJlckEyID0gXzMwID09PSB2b2lkIDAgPyAtMSA6IF8zMCwgXzMxID0gXzI5WzFdLCBuYW1lQTIgPSBfMzEgPT09IHZvaWQgMCA/ICJub05hbWUiIDogXzMxLCBfMzIgPSBfMjlbMl0sIHNraWxsQTIgPSBfMzIgPT09IHZvaWQgMCA/ICJza2lsbCIgOiBfMzI7DQogICAgY29uc29sZS5sb2cobmFtZUEyKTsNCn0NCmZvciAodmFyIF8zMyA9IDAsIF8zNCA9IFtyb2JvdEEsIHJvYm90Ql07IF8zMyA8IF8zNC5sZW5ndGg7IF8zMysrKSB7DQogICAgdmFyIF8zNSA9IF8zNFtfMzNdLCBfMzYgPSBfMzVbMF0sIG51bWJlckEyID0gXzM2ID09PSB2b2lkIDAgPyAtMSA6IF8zNiwgXzM3ID0gXzM1WzFdLCBuYW1lQTIgPSBfMzcgPT09IHZvaWQgMCA/ICJub05hbWUiIDogXzM3LCBfMzggPSBfMzVbMl0sIHNraWxsQTIgPSBfMzggPT09IHZvaWQgMCA/ICJza2lsbCIgOiBfMzg7DQogICAgY29uc29sZS5sb2cobmFtZUEyKTsNCn0NCmZvciAodmFyIF8zOSA9IDAsIG11bHRpUm9ib3RzXzMgPSBtdWx0aVJvYm90czsgXzM5IDwgbXVsdGlSb2JvdHNfMy5sZW5ndGg7IF8zOSsrKSB7DQogICAgdmFyIF80MCA9IG11bHRpUm9ib3RzXzNbXzM5XSwgXzQxID0gXzQwWzBdLCBuYW1lTUEgPSBfNDEgPT09IHZvaWQgMCA/ICJub05hbWUiIDogXzQxLCBfNDIgPSBfNDBbMV0sIF80MyA9IF80MiA9PT0gdm9pZCAwID8gWyJza2lsbDEiLCAic2tpbGwyIl0gOiBfNDIsIF80NCA9IF80M1swXSwgcHJpbWFyeVNraWxsQSA9IF80NCA9PT0gdm9pZCAwID8gInByaW1hcnkiIDogXzQ0LCBfNDUgPSBfNDNbMV0sIHNlY29uZGFyeVNraWxsQSA9IF80NSA9PT0gdm9pZCAwID8gInNlY29uZGFyeSIgOiBfNDU7DQogICAgY29uc29sZS5sb2cobmFtZU1BKTsNCn0NCmZvciAodmFyIF80NiA9IDAsIF80NyA9IGdldE11bHRpUm9ib3RzKCk7IF80NiA8IF80Ny5sZW5ndGg7IF80NisrKSB7DQogICAgdmFyIF80OCA9IF80N1tfNDZdLCBfNDkgPSBfNDhbMF0sIG5hbWVNQSA9IF80OSA9PT0gdm9pZCAwID8gIm5vTmFtZSIgOiBfNDksIF81MCA9IF80OFsxXSwgXzUxID0gXzUwID09PSB2b2lkIDAgPyBbInNraWxsMSIsICJza2lsbDIiXSA6IF81MCwgXzUyID0gXzUxWzBdLCBwcmltYXJ5U2tpbGxBID0gXzUyID09PSB2b2lkIDAgPyAicHJpbWFyeSIgOiBfNTIsIF81MyA9IF81MVsxXSwgc2Vjb25kYXJ5U2tpbGxBID0gXzUzID09PSB2b2lkIDAgPyAic2Vjb25kYXJ5IiA6IF81MzsNCiAgICBjb25zb2xlLmxvZyhuYW1lTUEpOw0KfQ0KZm9yICh2YXIgXzU0ID0gMCwgXzU1ID0gW211bHRpUm9ib3RBLCBtdWx0aVJvYm90Ql07IF81NCA8IF81NS5sZW5ndGg7IF81NCsrKSB7DQogICAgdmFyIF81NiA9IF81NVtfNTRdLCBfNTcgPSBfNTZbMF0sIG5hbWVNQSA9IF81NyA9PT0gdm9pZCAwID8gIm5vTmFtZSIgOiBfNTcsIF81OCA9IF81NlsxXSwgXzU5ID0gXzU4ID09PSB2b2lkIDAgPyBbInNraWxsMSIsICJza2lsbDIiXSA6IF81OCwgXzYwID0gXzU5WzBdLCBwcmltYXJ5U2tpbGxBID0gXzYwID09PSB2b2lkIDAgPyAicHJpbWFyeSIgOiBfNjAsIF82MSA9IF81OVsxXSwgc2Vjb25kYXJ5U2tpbGxBID0gXzYxID09PSB2b2lkIDAgPyAic2Vjb25kYXJ5IiA6IF82MTsNCiAgICBjb25zb2xlLmxvZyhuYW1lTUEpOw0KfQ0KZm9yICh2YXIgXzYyID0gMCwgcm9ib3RzXzQgPSByb2JvdHM7IF82MiA8IHJvYm90c180Lmxlbmd0aDsgXzYyKyspIHsNCiAgICB2YXIgXzYzID0gcm9ib3RzXzRbXzYyXSwgXzY0ID0gXzYzWzBdLCBudW1iZXJBMyA9IF82NCA9PT0gdm9pZCAwID8gLTEgOiBfNjQsIHJvYm90QUluZm8gPSBfNjMuc2xpY2UoMSk7DQogICAgY29uc29sZS5sb2cobnVtYmVyQTMpOw0KfQ0KZm9yICh2YXIgXzY1ID0gMCwgXzY2ID0gZ2V0Um9ib3RzKCk7IF82NSA8IF82Ni5sZW5ndGg7IF82NSsrKSB7DQogICAgdmFyIF82NyA9IF82NltfNjVdLCBfNjggPSBfNjdbMF0sIG51bWJlckEzID0gXzY4ID09PSB2b2lkIDAgPyAtMSA6IF82OCwgcm9ib3RBSW5mbyA9IF82Ny5zbGljZSgxKTsNCiAgICBjb25zb2xlLmxvZyhudW1iZXJBMyk7DQp9DQpmb3IgKHZhciBfNjkgPSAwLCBfNzAgPSBbcm9ib3RBLCByb2JvdEJdOyBfNjkgPCBfNzAubGVuZ3RoOyBfNjkrKykgew0KICAgIHZhciBfNzEgPSBfNzBbXzY5XSwgXzcyID0gXzcxWzBdLCBudW1iZXJBMyA9IF83MiA9PT0gdm9pZCAwID8gLTEgOiBfNzIsIHJvYm90QUluZm8gPSBfNzEuc2xpY2UoMSk7DQogICAgY29uc29sZS5sb2cobnVtYmVyQTMpOw0KfQ0KLy8jIHNvdXJjZU1hcHBpbmdVUkw9c291cmNlTWFwVmFsaWRhdGlvbkRlc3RydWN0dXJpbmdGb3JPZkFycmF5QmluZGluZ1BhdHRlcm5EZWZhdWx0VmFsdWVzLmpzLm1hcA==,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlTWFwVmFsaWRhdGlvbkRlc3RydWN0dXJpbmdGb3JPZkFycmF5QmluZGluZ1BhdHRlcm5EZWZhdWx0VmFsdWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic291cmNlTWFwVmFsaWRhdGlvbkRlc3RydWN0dXJpbmdGb3JPZkFycmF5QmluZGluZ1BhdHRlcm5EZWZhdWx0VmFsdWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLElBQUksTUFBTSxHQUFVLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMzQyxJQUFJLE1BQU0sR0FBVSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDL0MsSUFBSSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUIsU0FBUyxTQUFTO0lBQ2QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELElBQUksV0FBVyxHQUFzQixDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9ELElBQUksV0FBVyxHQUFzQixDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLElBQUksV0FBVyxHQUFHLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzdDLFNBQVMsY0FBYztJQUNuQixPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDO0FBRUQsS0FBaUMsVUFBTSxFQUFOLGlCQUFNLEVBQU4sb0JBQU0sRUFBTixJQUFNLEVBQUU7SUFBaEMsSUFBQSxpQkFBb0IsRUFBakIsVUFBZ0IsRUFBaEIsS0FBSyxtQkFBRyxRQUFRLEtBQUE7SUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUN0QjtBQUNELEtBQWlDLFVBQVcsRUFBWCxLQUFBLFNBQVMsRUFBRSxFQUFYLGNBQVcsRUFBWCxJQUFXLEVBQUU7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SUFFN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUN2QjtBQUVELEtBQTJDLFdBQU0sRUFBTixpQkFBTSxFQUFOLHFCQUFNLEVBQU4sS0FBTSxFQUFFO0lBQTFDLElBQUEsbUJBQThCLEVBQTdCLFlBQWEsRUFBYixRQUFRLG9CQUFHLENBQUMsQ0FBQyxNQUFBLEVBQUssVUFBVSxlQUFBO0lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDekI7QUFDRCxLQUEyQyxXQUFXLEVBQVgsTUFBQSxTQUFTLEVBQUUsRUFBWCxnQkFBVyxFQUFYLEtBQVcsRUFBRTtJQUEvQyxJQUFBLGNBQThCLEVBQTdCLFlBQWEsRUFBYixRQUFRLG9CQUFHLENBQUMsQ0FBQyxNQUFBLEVBQUssVUFBVSxlQUFBO0lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDekI7QUFDRCxLQUEyQyxXQUFnQixFQUFoQixPQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBaEIsZ0JBQWdCLEVBQWhCLEtBQWdCLEVBQUU7SUFBcEQsSUFBQSxjQUE4QixFQUE3QixZQUFhLEVBQWIsUUFBUSxvQkFBRyxDQUFDLENBQUMsTUFBQSxFQUFLLFVBQVUsZUFBQTtJQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0NBQ3pCIn0=,ZGVjbGFyZSB2YXIgY29uc29sZTogewogICAgbG9nKG1zZzogYW55KTogdm9pZDsKfQp0eXBlIFJvYm90ID0gW251bWJlciwgc3RyaW5nLCBzdHJpbmddOwp0eXBlIE11bHRpU2tpbGxlZFJvYm90ID0gW3N0cmluZywgW3N0cmluZywgc3RyaW5nXV07CgpsZXQgcm9ib3RBOiBSb2JvdCA9IFsxLCAibW93ZXIiLCAibW93aW5nIl07CmxldCByb2JvdEI6IFJvYm90ID0gWzIsICJ0cmltbWVyIiwgInRyaW1taW5nIl07CmxldCByb2JvdHMgPSBbcm9ib3RBLCByb2JvdEJdOwpmdW5jdGlvbiBnZXRSb2JvdHMoKSB7CiAgICByZXR1cm4gcm9ib3RzOwp9CgpsZXQgbXVsdGlSb2JvdEE6IE11bHRpU2tpbGxlZFJvYm90ID0gWyJtb3dlciIsIFsibW93aW5nIiwgIiJdXTsKbGV0IG11bHRpUm9ib3RCOiBNdWx0aVNraWxsZWRSb2JvdCA9IFsidHJpbW1lciIsIFsidHJpbW1pbmciLCAiZWRnaW5nIl1dOwpsZXQgbXVsdGlSb2JvdHMgPSBbbXVsdGlSb2JvdEEsIG11bHRpUm9ib3RCXTsKZnVuY3Rpb24gZ2V0TXVsdGlSb2JvdHMoKSB7CiAgICByZXR1cm4gbXVsdGlSb2JvdHM7Cn0KCmZvciAobGV0IFssIG5hbWVBID0gIm5vTmFtZSJdIG9mIHJvYm90cykgewogICAgY29uc29sZS5sb2cobmFtZUEpOwp9CmZvciAobGV0IFssIG5hbWVBID0gIm5vTmFtZSJdIG9mIGdldFJvYm90cygpKSB7CiAgICBjb25zb2xlLmxvZyhuYW1lQSk7Cn0KZm9yIChsZXQgWywgbmFtZUEgPSAibm9OYW1lIl0gb2YgW3JvYm90QSwgcm9ib3RCXSkgewogICAgY29uc29sZS5sb2cobmFtZUEpOwp9CmZvciAobGV0IFssIFsKICAgIHByaW1hcnlTa2lsbEEgPSAicHJpbWFyeSIsCiAgICBzZWNvbmRhcnlTa2lsbEEgPSAic2Vjb25kYXJ5IgpdID0gWyJza2lsbDEiLCAic2tpbGwyIl1dIG9mIG11bHRpUm9ib3RzKSB7CiAgICBjb25zb2xlLmxvZyhwcmltYXJ5U2tpbGxBKTsKfQpmb3IgKGxldCBbLCBbCiAgICBwcmltYXJ5U2tpbGxBID0gInByaW1hcnkiLAogICAgc2Vjb25kYXJ5U2tpbGxBID0gInNlY29uZGFyeSIKXSA9IFsic2tpbGwxIiwgInNraWxsMiJdXSBvZiBnZXRNdWx0aVJvYm90cygpKSB7CiAgICBjb25zb2xlLmxvZyhwcmltYXJ5U2tpbGxBKTsKfQpmb3IgKGxldCBbLCBbCiAgICBwcmltYXJ5U2tpbGxBID0gInByaW1hcnkiLAogICAgc2Vjb25kYXJ5U2tpbGxBID0gInNlY29uZGFyeSIKXSA9IFsic2tpbGwxIiwgInNraWxsMiJdXSBvZiBbbXVsdGlSb2JvdEEsIG11bHRpUm9ib3RCXSkgewogICAgY29uc29sZS5sb2cocHJpbWFyeVNraWxsQSk7Cn0KCmZvciAobGV0IFtudW1iZXJCID0gLTFdIG9mIHJvYm90cykgewogICAgY29uc29sZS5sb2cobnVtYmVyQik7Cn0KZm9yIChsZXQgW251bWJlckIgPSAtMV0gb2YgZ2V0Um9ib3RzKCkpIHsKICAgIGNvbnNvbGUubG9nKG51bWJlckIpOwp9CmZvciAobGV0IFtudW1iZXJCID0gLTFdIG9mIFtyb2JvdEEsIHJvYm90Ql0pIHsKICAgIGNvbnNvbGUubG9nKG51bWJlckIpOwp9CmZvciAobGV0IFtuYW1lQiA9ICJub05hbWUiXSBvZiBtdWx0aVJvYm90cykgewogICAgY29uc29sZS5sb2cobmFtZUIpOwp9CmZvciAobGV0IFtuYW1lQiA9ICJub05hbWUiXSBvZiBnZXRNdWx0aVJvYm90cygpKSB7CiAgICBjb25zb2xlLmxvZyhuYW1lQik7Cn0KZm9yIChsZXQgW25hbWVCID0gIm5vTmFtZSJdIG9mIFttdWx0aVJvYm90QSwgbXVsdGlSb2JvdEJdKSB7CiAgICBjb25zb2xlLmxvZyhuYW1lQik7Cn0KCmZvciAobGV0IFtudW1iZXJBMiA9IC0xLCBuYW1lQTIgPSAibm9OYW1lIiwgc2tpbGxBMiA9ICJza2lsbCJdIG9mIHJvYm90cykgewogICAgY29uc29sZS5sb2cobmFtZUEyKTsKfQpmb3IgKGxldCBbbnVtYmVyQTIgPSAtMSwgbmFtZUEyID0gIm5vTmFtZSIsIHNraWxsQTIgPSAic2tpbGwiXSBvZiBnZXRSb2JvdHMoKSkgewogICAgY29uc29sZS5sb2cobmFtZUEyKTsKfQpmb3IgKGxldCBbbnVtYmVyQTIgPSAtMSwgbmFtZUEyID0gIm5vTmFtZSIsIHNraWxsQTIgPSAic2tpbGwiXSBvZiBbcm9ib3RBLCByb2JvdEJdKSB7CiAgICBjb25zb2xlLmxvZyhuYW1lQTIpOwp9CmZvciAobGV0IFtuYW1lTUEgPSAibm9OYW1lIiwgWwogICAgcHJpbWFyeVNraWxsQSA9ICJwcmltYXJ5IiwKICAgIHNlY29uZGFyeVNraWxsQSA9ICJzZWNvbmRhcnkiCl0gPSBbInNraWxsMSIsICJza2lsbDIiXV0gb2YgbXVsdGlSb2JvdHMpIHsKICAgIGNvbnNvbGUubG9nKG5hbWVNQSk7Cn0KZm9yIChsZXQgW25hbWVNQSA9ICJub05hbWUiLCBbCiAgICBwcmltYXJ5U2tpbGxBID0gInByaW1hcnkiLAogICAgc2Vjb25kYXJ5U2tpbGxBID0gInNlY29uZGFyeSIKXSA9IFsic2tpbGwxIiwgInNraWxsMiJdXSBvZiBnZXRNdWx0aVJvYm90cygpKSB7CiAgICBjb25zb2xlLmxvZyhuYW1lTUEpOwp9CmZvciAobGV0IFtuYW1lTUEgPSAibm9OYW1lIiwgWwogICAgcHJpbWFyeVNraWxsQSA9ICJwcmltYXJ5IiwKICAgIHNlY29uZGFyeVNraWxsQSA9ICJzZWNvbmRhcnkiCl0gPSBbInNraWxsMSIsICJza2lsbDIiXV0gb2YgW211bHRpUm9ib3RBLCBtdWx0aVJvYm90Ql0pIHsKICAgIGNvbnNvbGUubG9nKG5hbWVNQSk7Cn0KCmZvciAobGV0IFtudW1iZXJBMyA9IC0xLCAuLi5yb2JvdEFJbmZvXSBvZiByb2JvdHMpIHsKICAgIGNvbnNvbGUubG9nKG51bWJlckEzKTsKfQpmb3IgKGxldCBbbnVtYmVyQTMgPSAtMSwgLi4ucm9ib3RBSW5mb10gb2YgZ2V0Um9ib3RzKCkpIHsKICAgIGNvbnNvbGUubG9nKG51bWJlckEzKTsKfQpmb3IgKGxldCBbbnVtYmVyQTMgPSAtMSwgLi4ucm9ib3RBSW5mb10gb2YgW3JvYm90QSwgcm9ib3RCXSkgewogICAgY29uc29sZS5sb2cobnVtYmVyQTMpOwp9