tedious 14.3.0 → 14.6.0

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.
Files changed (100) hide show
  1. package/lib/all-headers.js +1 -1
  2. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +2 -2
  3. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +2 -2
  4. package/lib/always-encrypted/cek-entry.js +1 -1
  5. package/lib/always-encrypted/get-parameter-encryption-metadata.js +1 -1
  6. package/lib/always-encrypted/key-crypto.js +2 -2
  7. package/lib/always-encrypted/keystore-provider-azure-key-vault.js +2 -2
  8. package/lib/always-encrypted/symmetric-key-cache.js +1 -1
  9. package/lib/always-encrypted/symmetric-key.js +1 -1
  10. package/lib/always-encrypted/types.js +2 -2
  11. package/lib/always-encrypted/utils.js +1 -1
  12. package/lib/bulk-load-payload.js +1 -1
  13. package/lib/bulk-load.js +1 -1
  14. package/lib/collation.js +2 -2
  15. package/lib/connection.js +353 -264
  16. package/lib/connector.js +2 -2
  17. package/lib/data-type.js +1 -1
  18. package/lib/data-types/bigint.js +1 -1
  19. package/lib/data-types/binary.js +1 -1
  20. package/lib/data-types/bit.js +1 -1
  21. package/lib/data-types/bitn.js +1 -1
  22. package/lib/data-types/char.js +1 -1
  23. package/lib/data-types/date.js +1 -1
  24. package/lib/data-types/datetime.js +1 -1
  25. package/lib/data-types/datetime2.js +1 -1
  26. package/lib/data-types/datetimen.js +1 -1
  27. package/lib/data-types/datetimeoffset.js +1 -1
  28. package/lib/data-types/decimal.js +1 -1
  29. package/lib/data-types/decimaln.js +1 -1
  30. package/lib/data-types/float.js +1 -1
  31. package/lib/data-types/floatn.js +1 -1
  32. package/lib/data-types/image.js +1 -1
  33. package/lib/data-types/int.js +1 -1
  34. package/lib/data-types/intn.js +1 -1
  35. package/lib/data-types/money.js +1 -1
  36. package/lib/data-types/moneyn.js +1 -1
  37. package/lib/data-types/nchar.js +1 -1
  38. package/lib/data-types/ntext.js +1 -1
  39. package/lib/data-types/null.js +1 -1
  40. package/lib/data-types/numeric.js +1 -1
  41. package/lib/data-types/numericn.js +1 -1
  42. package/lib/data-types/nvarchar.js +1 -1
  43. package/lib/data-types/real.js +1 -1
  44. package/lib/data-types/smalldatetime.js +1 -1
  45. package/lib/data-types/smallint.js +1 -1
  46. package/lib/data-types/smallmoney.js +1 -1
  47. package/lib/data-types/sql-variant.js +1 -1
  48. package/lib/data-types/text.js +1 -1
  49. package/lib/data-types/time.js +1 -1
  50. package/lib/data-types/tinyint.js +1 -1
  51. package/lib/data-types/tvp.js +1 -1
  52. package/lib/data-types/udt.js +1 -1
  53. package/lib/data-types/uniqueidentifier.js +1 -1
  54. package/lib/data-types/varbinary.js +1 -1
  55. package/lib/data-types/varchar.js +1 -1
  56. package/lib/data-types/xml.js +1 -1
  57. package/lib/debug.js +1 -1
  58. package/lib/errors.js +1 -1
  59. package/lib/guid-parser.js +2 -2
  60. package/lib/incoming-message-stream.js +1 -1
  61. package/lib/instance-lookup.js +1 -1
  62. package/lib/library.js +1 -1
  63. package/lib/login7-payload.js +1 -1
  64. package/lib/message-io.js +1 -1
  65. package/lib/message.js +1 -1
  66. package/lib/metadata-parser.js +2 -2
  67. package/lib/ntlm-payload.js +1 -1
  68. package/lib/ntlm.js +1 -1
  69. package/lib/outgoing-message-stream.js +1 -1
  70. package/lib/packet.js +2 -2
  71. package/lib/prelogin-payload.js +1 -1
  72. package/lib/request.js +1 -1
  73. package/lib/rpcrequest-payload.js +1 -1
  74. package/lib/sender.js +1 -1
  75. package/lib/special-stored-procedure.js +1 -1
  76. package/lib/sqlbatch-payload.js +1 -1
  77. package/lib/tds-versions.js +1 -1
  78. package/lib/tedious.js +14 -14
  79. package/lib/token/colmetadata-token-parser.js +1 -1
  80. package/lib/token/done-token-parser.js +2 -2
  81. package/lib/token/env-change-token-parser.js +1 -1
  82. package/lib/token/feature-ext-ack-parser.js +1 -1
  83. package/lib/token/fedauth-info-parser.js +1 -1
  84. package/lib/token/handler.js +16 -3
  85. package/lib/token/infoerror-token-parser.js +2 -2
  86. package/lib/token/loginack-token-parser.js +1 -1
  87. package/lib/token/nbcrow-token-parser.js +1 -1
  88. package/lib/token/order-token-parser.js +1 -1
  89. package/lib/token/returnstatus-token-parser.js +1 -1
  90. package/lib/token/returnvalue-token-parser.js +1 -1
  91. package/lib/token/row-token-parser.js +1 -1
  92. package/lib/token/sspi-token-parser.js +1 -1
  93. package/lib/token/stream-parser.js +1 -1
  94. package/lib/token/token-stream-parser.js +1 -1
  95. package/lib/token/token.js +2 -2
  96. package/lib/tracking-buffer/writable-tracking-buffer.js +1 -1
  97. package/lib/transaction.js +3 -2
  98. package/lib/transient-error-lookup.js +1 -1
  99. package/lib/value-parser.js +1 -1
  100. package/package.json +32 -30
@@ -735,4 +735,4 @@ function readDateTimeOffset(parser, dataLength, scale, callback) {
735
735
  var _default = valueParse;
736
736
  exports.default = _default;
737
737
  module.exports = valueParse;
738
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YWx1ZS1wYXJzZXIudHMiXSwibmFtZXMiOlsiTlVMTCIsIk1BWCIsIlRIUkVFX0FORF9BX1RISVJEIiwiTU9ORVlfRElWSVNPUiIsIlBMUF9OVUxMIiwiQnVmZmVyIiwiZnJvbSIsIlVOS05PV05fUExQX0xFTiIsIkRFRkFVTFRfRU5DT0RJTkciLCJyZWFkVGlueUludCIsInBhcnNlciIsImNhbGxiYWNrIiwicmVhZFVJbnQ4IiwicmVhZFNtYWxsSW50IiwicmVhZEludDE2TEUiLCJyZWFkSW50IiwicmVhZEludDMyTEUiLCJyZWFkQmlnSW50IiwicmVhZEJpZ0ludDY0TEUiLCJ2YWx1ZSIsInRvU3RyaW5nIiwicmVhZFJlYWwiLCJyZWFkRmxvYXRMRSIsInJlYWRGbG9hdCIsInJlYWREb3VibGVMRSIsInJlYWRTbWFsbE1vbmV5IiwicmVhZE1vbmV5IiwiaGlnaCIsInJlYWRVSW50MzJMRSIsImxvdyIsInJlYWRCaXQiLCJ2YWx1ZVBhcnNlIiwibWV0YWRhdGEiLCJvcHRpb25zIiwidHlwZSIsIm5hbWUiLCJkYXRhTGVuZ3RoIiwiRXJyb3IiLCJjb2RlcGFnZSIsImNvbGxhdGlvbiIsInJlYWRNYXhDaGFycyIsInJlYWRVSW50MTZMRSIsInJlYWRDaGFycyIsInJlYWRNYXhOQ2hhcnMiLCJyZWFkTkNoYXJzIiwicmVhZE1heEJpbmFyeSIsInJlYWRCaW5hcnkiLCJ0ZXh0UG9pbnRlckxlbmd0aCIsInJlYWRCdWZmZXIiLCJfdGV4dFBvaW50ZXIiLCJfdGltZXN0YW1wIiwicmVhZFNtYWxsRGF0ZVRpbWUiLCJ1c2VVVEMiLCJyZWFkRGF0ZVRpbWUiLCJyZWFkVGltZSIsInNjYWxlIiwicmVhZERhdGUiLCJyZWFkRGF0ZVRpbWUyIiwicmVhZERhdGVUaW1lT2Zmc2V0IiwicmVhZE51bWVyaWMiLCJwcmVjaXNpb24iLCJyZWFkVW5pcXVlSWRlbnRpZmllciIsInJlYWRWYXJpYW50IiwiZGF0YSIsImxvd2VyQ2FzZUd1aWRzIiwiX3ByZWNpc2lvbiIsInNpZ24iLCJyZWFkVmFsdWUiLCJyZWFkVU51bWVyaWM2NExFIiwicmVhZFVOdW1lcmljOTZMRSIsInJlYWRVTnVtZXJpYzEyOExFIiwiY2FsbCIsIk1hdGgiLCJwb3ciLCJiYXNlVHlwZSIsIlRZUEUiLCJwcm9wQnl0ZXMiLCJfbWF4TGVuZ3RoIiwiX2NvbGxhdGlvbiIsImljb252IiwiZGVjb2RlIiwicmVhZE1heCIsImVxdWFscyIsInJlYWRNYXhVbmtub3duTGVuZ3RoIiwiY29uc29sZSIsIndhcm4iLCJleHBlY3RlZExlbmd0aCIsInJlYWRNYXhLbm93bkxlbmd0aCIsInRvdGFsTGVuZ3RoIiwiYWxsb2MiLCJvZmZzZXQiLCJuZXh0IiwiZG9uZSIsImNodW5rTGVuZ3RoIiwiY2h1bmsiLCJjb3B5IiwiY2h1bmtzIiwibGVuZ3RoIiwicHVzaCIsImNvbmNhdCIsImRheXMiLCJtaW51dGVzIiwiRGF0ZSIsIlVUQyIsInRocmVlSHVuZHJlZHRoc09mU2Vjb25kIiwibWlsbGlzZWNvbmRzIiwicm91bmQiLCJyZWFkVUludDI0TEUiLCJyZWFkVUludDQwTEUiLCJpIiwiZGF0ZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsInRpbWUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwibmFub3NlY29uZHNEZWx0YSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLElBQUksR0FBRyxDQUFDLEtBQUssRUFBTixJQUFZLENBQXpCO0FBQ0EsTUFBTUMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFOLElBQVksQ0FBeEI7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxJQUFLLElBQUksQ0FBbkM7QUFDQSxNQUFNQyxhQUFhLEdBQUcsS0FBdEI7QUFDQSxNQUFNQyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLENBQUMsSUFB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T0FQRDtBQVFELEtBVkQ7QUFXRCxHQVpPLENBQVI7QUFhRDs7ZUFFYy9FLFU7O0FBQ2Z5RixNQUFNLENBQUNDLE9BQVAsR0FBaUIxRixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIgZnJvbSAnLi90b2tlbi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IE1ldGFkYXRhLCByZWFkQ29sbGF0aW9uIH0gZnJvbSAnLi9tZXRhZGF0YS1wYXJzZXInO1xuaW1wb3J0IHsgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgeyBUWVBFIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xuXG5pbXBvcnQgaWNvbnYgZnJvbSAnaWNvbnYtbGl0ZSc7XG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5pbXBvcnQgeyBidWZmZXJUb0xvd2VyQ2FzZUd1aWQsIGJ1ZmZlclRvVXBwZXJDYXNlR3VpZCB9IGZyb20gJy4vZ3VpZC1wYXJzZXInO1xuXG5jb25zdCBOVUxMID0gKDEgPDwgMTYpIC0gMTtcbmNvbnN0IE1BWCA9ICgxIDw8IDE2KSAtIDE7XG5jb25zdCBUSFJFRV9BTkRfQV9USElSRCA9IDMgKyAoMSAvIDMpO1xuY29uc3QgTU9ORVlfRElWSVNPUiA9IDEwMDAwO1xuY29uc3QgUExQX05VTEwgPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuY29uc3QgVU5LTk9XTl9QTFBfTEVOID0gQnVmZmVyLmZyb20oWzB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkZdKTtcbmNvbnN0IERFRkFVTFRfRU5DT0RJTkcgPSAndXRmOCc7XG5cbmZ1bmN0aW9uIHJlYWRUaW55SW50KHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkVUludDgoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZWFkU21hbGxJbnQocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRJbnQxNkxFKGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVhZEludChwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZEludDMyTEUoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZWFkQmlnSW50KHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkQmlnSW50NjRMRSgodmFsdWUpID0+IHtcbiAgICBjYWxsYmFjayh2YWx1ZS50b1N0cmluZygpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRSZWFsKHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkRmxvYXRMRShjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlYWRGbG9hdChwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZERvdWJsZUxFKGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVhZFNtYWxsTW9uZXkocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRJbnQzMkxFKCh2YWx1ZSkgPT4ge1xuICAgIGNhbGxiYWNrKHZhbHVlIC8gTU9ORVlfRElWSVNPUik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkTW9uZXkocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRJbnQzMkxFKChoaWdoKSA9PiB7XG4gICAgcGFyc2VyLnJlYWRVSW50MzJMRSgobG93KSA9PiB7XG4gICAgICBjYWxsYmFjaygobG93ICsgKDB4MTAwMDAwMDAwICogaGlnaCkpIC8gTU9ORVlfRElWSVNPUik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkQml0KHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkVUludDgoKHZhbHVlKSA9PiB7XG4gICAgY2FsbGJhY2soISF2YWx1ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWx1ZVBhcnNlKHBhcnNlcjogUGFyc2VyLCBtZXRhZGF0YTogTWV0YWRhdGEsIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpOiB2b2lkIHtcbiAgY29uc3QgdHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICBjYXNlICdOdWxsJzpcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcblxuICAgIGNhc2UgJ1RpbnlJbnQnOlxuICAgICAgcmV0dXJuIHJlYWRUaW55SW50KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnU21hbGxJbnQnOlxuICAgICAgcmV0dXJuIHJlYWRTbWFsbEludChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgJ0ludCc6XG4gICAgICByZXR1cm4gcmVhZEludChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgICByZXR1cm4gcmVhZEJpZ0ludChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgJ0ludE4nOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuXG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRUaW55SW50KHBhcnNlciwgY2FsbGJhY2spO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiByZWFkU21hbGxJbnQocGFyc2VyLCBjYWxsYmFjayk7XG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRJbnQocGFyc2VyLCBjYWxsYmFjayk7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRCaWdJbnQocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhTGVuZ3RoICcgKyBkYXRhTGVuZ3RoICsgJyBmb3IgSW50TicpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ1JlYWwnOlxuICAgICAgcmV0dXJuIHJlYWRSZWFsKHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnRmxvYXQnOlxuICAgICAgcmV0dXJuIHJlYWRGbG9hdChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgJ0Zsb2F0Tic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG5cbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gcmVhZFJlYWwocGFyc2VyLCBjYWxsYmFjayk7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRGbG9hdChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGRhdGFMZW5ndGggJyArIGRhdGFMZW5ndGggKyAnIGZvciBGbG9hdE4nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjYXNlICdTbWFsbE1vbmV5JzpcbiAgICAgIHJldHVybiByZWFkU21hbGxNb25leShwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgJ01vbmV5JzpcbiAgICAgIHJldHVybiByZWFkTW9uZXkocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlICdNb25leU4nOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuXG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRTbWFsbE1vbmV5KHBhcnNlciwgY2FsbGJhY2spO1xuICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiByZWFkTW9uZXkocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhTGVuZ3RoICcgKyBkYXRhTGVuZ3RoICsgJyBmb3IgTW9uZXlOJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnQml0JzpcbiAgICAgIHJldHVybiByZWFkQml0KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnQml0Tic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG5cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gcmVhZEJpdChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGRhdGFMZW5ndGggJyArIGRhdGFMZW5ndGggKyAnIGZvciBCaXROJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnVmFyQ2hhcic6XG4gICAgY2FzZSAnQ2hhcic6XG4gICAgICBjb25zdCBjb2RlcGFnZSA9IG1ldGFkYXRhLmNvbGxhdGlvbiEuY29kZXBhZ2UhO1xuICAgICAgaWYgKG1ldGFkYXRhLmRhdGFMZW5ndGggPT09IE1BWCkge1xuICAgICAgICByZXR1cm4gcmVhZE1heENoYXJzKHBhcnNlciwgY29kZXBhZ2UsIGNhbGxiYWNrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQxNkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT09IE5VTEwpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWFkQ2hhcnMocGFyc2VyLCBkYXRhTGVuZ3RoISwgY29kZXBhZ2UsIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICBjYXNlICdOVmFyQ2hhcic6XG4gICAgY2FzZSAnTkNoYXInOlxuICAgICAgaWYgKG1ldGFkYXRhLmRhdGFMZW5ndGggPT09IE1BWCkge1xuICAgICAgICByZXR1cm4gcmVhZE1heE5DaGFycyhwYXJzZXIsIGNhbGxiYWNrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQxNkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGFMZW5ndGggPT09IE5VTEwpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWFkTkNoYXJzKHBhcnNlciwgZGF0YUxlbmd0aCEsIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICBjYXNlICdWYXJCaW5hcnknOlxuICAgIGNhc2UgJ0JpbmFyeSc6XG4gICAgICBpZiAobWV0YWRhdGEuZGF0YUxlbmd0aCA9PT0gTUFYKSB7XG4gICAgICAgIHJldHVybiByZWFkTWF4QmluYXJ5KHBhcnNlciwgY2FsbGJhY2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDE2TEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PT0gTlVMTCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlYWRCaW5hcnkocGFyc2VyLCBkYXRhTGVuZ3RoISwgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ1RleHQnOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKHRleHRQb2ludGVyTGVuZ3RoKSA9PiB7XG4gICAgICAgIGlmICh0ZXh0UG9pbnRlckxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnNlci5yZWFkQnVmZmVyKHRleHRQb2ludGVyTGVuZ3RoLCAoX3RleHRQb2ludGVyKSA9PiB7XG4gICAgICAgICAgcGFyc2VyLnJlYWRCdWZmZXIoOCwgKF90aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIHBhcnNlci5yZWFkVUludDMyTEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgcmVhZENoYXJzKHBhcnNlciwgZGF0YUxlbmd0aCEsIG1ldGFkYXRhLmNvbGxhdGlvbiEuY29kZXBhZ2UhLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ05UZXh0JzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KCh0ZXh0UG9pbnRlckxlbmd0aCkgPT4ge1xuICAgICAgICBpZiAodGV4dFBvaW50ZXJMZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJzZXIucmVhZEJ1ZmZlcih0ZXh0UG9pbnRlckxlbmd0aCwgKF90ZXh0UG9pbnRlcikgPT4ge1xuICAgICAgICAgIHBhcnNlci5yZWFkQnVmZmVyKDgsIChfdGltZXN0YW1wKSA9PiB7XG4gICAgICAgICAgICBwYXJzZXIucmVhZFVJbnQzMkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIHJlYWROQ2hhcnMocGFyc2VyLCBkYXRhTGVuZ3RoISwgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBjYXNlICdJbWFnZSc6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgodGV4dFBvaW50ZXJMZW5ndGgpID0+IHtcbiAgICAgICAgaWYgKHRleHRQb2ludGVyTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyc2VyLnJlYWRCdWZmZXIodGV4dFBvaW50ZXJMZW5ndGgsIChfdGV4dFBvaW50ZXIpID0+IHtcbiAgICAgICAgICBwYXJzZXIucmVhZEJ1ZmZlcig4LCAoX3RpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgcGFyc2VyLnJlYWRVSW50MzJMRSgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgICByZWFkQmluYXJ5KHBhcnNlciwgZGF0YUxlbmd0aCEsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnWG1sJzpcbiAgICAgIHJldHVybiByZWFkTWF4TkNoYXJzKHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnU21hbGxEYXRlVGltZSc6XG4gICAgICByZXR1cm4gcmVhZFNtYWxsRGF0ZVRpbWUocGFyc2VyLCBvcHRpb25zLnVzZVVUQywgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnRGF0ZVRpbWUnOlxuICAgICAgcmV0dXJuIHJlYWREYXRlVGltZShwYXJzZXIsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlICdEYXRlVGltZU4nOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuXG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRTbWFsbERhdGVUaW1lKHBhcnNlciwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gcmVhZERhdGVUaW1lKHBhcnNlciwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGRhdGFMZW5ndGggJyArIGRhdGFMZW5ndGggKyAnIGZvciBEYXRlVGltZU4nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjYXNlICdUaW1lJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZWFkVGltZShwYXJzZXIsIGRhdGFMZW5ndGghLCBtZXRhZGF0YS5zY2FsZSEsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnRGF0ZSc6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVhZERhdGUocGFyc2VyLCBvcHRpb25zLnVzZVVUQywgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ0RhdGVUaW1lMic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVhZERhdGVUaW1lMihwYXJzZXIsIGRhdGFMZW5ndGghLCBtZXRhZGF0YS5zY2FsZSEsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnRGF0ZVRpbWVPZmZzZXQnOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgaWYgKGRhdGFMZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlYWREYXRlVGltZU9mZnNldChwYXJzZXIsIGRhdGFMZW5ndGghLCBtZXRhZGF0YS5zY2FsZSEsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjYXNlICdOdW1lcmljTic6XG4gICAgY2FzZSAnRGVjaW1hbE4nOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgaWYgKGRhdGFMZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlYWROdW1lcmljKHBhcnNlciwgZGF0YUxlbmd0aCEsIG1ldGFkYXRhLnByZWNpc2lvbiEsIG1ldGFkYXRhLnNjYWxlISwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuXG4gICAgICAgICAgY2FzZSAweDEwOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRVbmlxdWVJZGVudGlmaWVyKHBhcnNlciwgb3B0aW9ucywgY2FsbGJhY2spO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzcHJpbnRmKCdVbnN1cHBvcnRlZCBndWlkIHNpemUgJWQnLCBkYXRhTGVuZ3RoISAtIDEpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjYXNlICdVRFQnOlxuICAgICAgcmV0dXJuIHJlYWRNYXhCaW5hcnkocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlICdWYXJpYW50JzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQzMkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVhZFZhcmlhbnQocGFyc2VyLCBvcHRpb25zLCBkYXRhTGVuZ3RoISwgY2FsbGJhY2spO1xuICAgICAgfSk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKHNwcmludGYoJ1VucmVjb2duaXNlZCB0eXBlICVzJywgdHlwZS5uYW1lKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZFVuaXF1ZUlkZW50aWZpZXIocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRCdWZmZXIoMHgxMCwgKGRhdGEpID0+IHtcbiAgICBjYWxsYmFjayhvcHRpb25zLmxvd2VyQ2FzZUd1aWRzID8gYnVmZmVyVG9Mb3dlckNhc2VHdWlkKGRhdGEpIDogYnVmZmVyVG9VcHBlckNhc2VHdWlkKGRhdGEpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWROdW1lcmljKHBhcnNlcjogUGFyc2VyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIF9wcmVjaXNpb246IG51bWJlciwgc2NhbGU6IG51bWJlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQ4KChzaWduKSA9PiB7XG4gICAgc2lnbiA9IHNpZ24gPT09IDEgPyAxIDogLTE7XG5cbiAgICBsZXQgcmVhZFZhbHVlO1xuICAgIGlmIChkYXRhTGVuZ3RoID09PSA1KSB7XG4gICAgICByZWFkVmFsdWUgPSBwYXJzZXIucmVhZFVJbnQzMkxFO1xuICAgIH0gZWxzZSBpZiAoZGF0YUxlbmd0aCA9PT0gOSkge1xuICAgICAgcmVhZFZhbHVlID0gcGFyc2VyLnJlYWRVTnVtZXJpYzY0TEU7XG4gICAgfSBlbHNlIGlmIChkYXRhTGVuZ3RoID09PSAxMykge1xuICAgICAgcmVhZFZhbHVlID0gcGFyc2VyLnJlYWRVTnVtZXJpYzk2TEU7XG4gICAgfSBlbHNlIGlmIChkYXRhTGVuZ3RoID09PSAxNykge1xuICAgICAgcmVhZFZhbHVlID0gcGFyc2VyLnJlYWRVTnVtZXJpYzEyOExFO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5zdXBwb3J0ZWQgbnVtZXJpYyBkYXRhTGVuZ3RoICVkJywgZGF0YUxlbmd0aCkpO1xuICAgIH1cblxuICAgIHJlYWRWYWx1ZS5jYWxsKHBhcnNlciwgKHZhbHVlKSA9PiB7XG4gICAgICBjYWxsYmFjaygodmFsdWUgKiBzaWduKSAvIE1hdGgucG93KDEwLCBzY2FsZSkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZFZhcmlhbnQocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMsIGRhdGFMZW5ndGg6IG51bWJlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoYmFzZVR5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlID0gVFlQRVtiYXNlVHlwZV07XG5cbiAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgocHJvcEJ5dGVzKSA9PiB7XG4gICAgICBkYXRhTGVuZ3RoID0gZGF0YUxlbmd0aCAtIHByb3BCeXRlcyAtIDI7XG5cbiAgICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgICAgICAgIHJldHVybiByZWFkVW5pcXVlSWRlbnRpZmllcihwYXJzZXIsIG9wdGlvbnMsIGNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdCaXQnOlxuICAgICAgICAgIHJldHVybiByZWFkQml0KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ1RpbnlJbnQnOlxuICAgICAgICAgIHJldHVybiByZWFkVGlueUludChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdTbWFsbEludCc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRTbWFsbEludChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdJbnQnOlxuICAgICAgICAgIHJldHVybiByZWFkSW50KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRCaWdJbnQocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICAgICAgY2FzZSAnU21hbGxEYXRlVGltZSc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRTbWFsbERhdGVUaW1lKHBhcnNlciwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdEYXRlVGltZSc6XG4gICAgICAgICAgcmV0dXJuIHJlYWREYXRlVGltZShwYXJzZXIsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG5cbiAgICAgICAgY2FzZSAnUmVhbCc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRSZWFsKHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ0Zsb2F0JzpcbiAgICAgICAgICByZXR1cm4gcmVhZEZsb2F0KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ1NtYWxsTW9uZXknOlxuICAgICAgICAgIHJldHVybiByZWFkU21hbGxNb25leShwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdNb25leSc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRNb25leShwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdEYXRlJzpcbiAgICAgICAgICByZXR1cm4gcmVhZERhdGUocGFyc2VyLCBvcHRpb25zLnVzZVVUQywgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ1RpbWUnOlxuICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChzY2FsZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWRUaW1lKHBhcnNlciwgZGF0YUxlbmd0aCwgc2NhbGUsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY2FzZSAnRGF0ZVRpbWUyJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoc2NhbGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUyKHBhcnNlciwgZGF0YUxlbmd0aCwgc2NhbGUsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY2FzZSAnRGF0ZVRpbWVPZmZzZXQnOlxuICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChzY2FsZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWREYXRlVGltZU9mZnNldChwYXJzZXIsIGRhdGFMZW5ndGgsIHNjYWxlLCBjYWxsYmFjayk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY2FzZSAnVmFyQmluYXJ5JzpcbiAgICAgICAgY2FzZSAnQmluYXJ5JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MTZMRSgoX21heExlbmd0aCkgPT4ge1xuICAgICAgICAgICAgcmVhZEJpbmFyeShwYXJzZXIsIGRhdGFMZW5ndGgsIGNhbGxiYWNrKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBjYXNlICdOdW1lcmljTic6XG4gICAgICAgIGNhc2UgJ0RlY2ltYWxOJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgocHJlY2lzaW9uKSA9PiB7XG4gICAgICAgICAgICBwYXJzZXIucmVhZFVJbnQ4KChzY2FsZSkgPT4ge1xuICAgICAgICAgICAgICByZWFkTnVtZXJpYyhwYXJzZXIsIGRhdGFMZW5ndGgsIHByZWNpc2lvbiwgc2NhbGUsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgICAgICBjYXNlICdDaGFyJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MTZMRSgoX21heExlbmd0aCkgPT4ge1xuICAgICAgICAgICAgcmVhZENvbGxhdGlvbihwYXJzZXIsIChjb2xsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgcmVhZENoYXJzKHBhcnNlciwgZGF0YUxlbmd0aCwgY29sbGF0aW9uLmNvZGVwYWdlISwgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY2FzZSAnTlZhckNoYXInOlxuICAgICAgICBjYXNlICdOQ2hhcic6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDE2TEUoKF9tYXhMZW5ndGgpID0+IHtcbiAgICAgICAgICAgIHJlYWRDb2xsYXRpb24ocGFyc2VyLCAoX2NvbGxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZWFkTkNoYXJzKHBhcnNlciwgZGF0YUxlbmd0aCwgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHlwZSEnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRCaW5hcnkocGFyc2VyOiBQYXJzZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICByZXR1cm4gcGFyc2VyLnJlYWRCdWZmZXIoZGF0YUxlbmd0aCwgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZWFkQ2hhcnMocGFyc2VyOiBQYXJzZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgY29kZXBhZ2U6IHN0cmluZywgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBpZiAoY29kZXBhZ2UgPT0gbnVsbCkge1xuICAgIGNvZGVwYWdlID0gREVGQVVMVF9FTkNPRElORztcbiAgfVxuXG4gIHJldHVybiBwYXJzZXIucmVhZEJ1ZmZlcihkYXRhTGVuZ3RoLCAoZGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKGljb252LmRlY29kZShkYXRhLCBjb2RlcGFnZSkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZE5DaGFycyhwYXJzZXI6IFBhcnNlciwgZGF0YUxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkQnVmZmVyKGRhdGFMZW5ndGgsIChkYXRhKSA9PiB7XG4gICAgY2FsbGJhY2soZGF0YS50b1N0cmluZygndWNzMicpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRNYXhCaW5hcnkocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcmV0dXJuIHJlYWRNYXgocGFyc2VyLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlYWRNYXhDaGFycyhwYXJzZXI6IFBhcnNlciwgY29kZXBhZ2U6IHN0cmluZywgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBpZiAoY29kZXBhZ2UgPT0gbnVsbCkge1xuICAgIGNvZGVwYWdlID0gREVGQVVMVF9FTkNPRElORztcbiAgfVxuXG4gIHJlYWRNYXgocGFyc2VyLCAoZGF0YSkgPT4ge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBjYWxsYmFjayhpY29udi5kZWNvZGUoZGF0YSwgY29kZXBhZ2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2sobnVsbCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZE1heE5DaGFycyhwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCkge1xuICByZWFkTWF4KHBhcnNlciwgKGRhdGEpID0+IHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgY2FsbGJhY2soZGF0YS50b1N0cmluZygndWNzMicpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2sobnVsbCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZE1heChwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogbnVsbCB8IEJ1ZmZlcikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZEJ1ZmZlcig4LCAodHlwZSkgPT4ge1xuICAgIGlmICh0eXBlLmVxdWFscyhQTFBfTlVMTCkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUuZXF1YWxzKFVOS05PV05fUExQX0xFTikpIHtcbiAgICAgIHJldHVybiByZWFkTWF4VW5rbm93bkxlbmd0aChwYXJzZXIsIGNhbGxiYWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbG93ID0gdHlwZS5yZWFkVUludDMyTEUoMCk7XG4gICAgICBjb25zdCBoaWdoID0gdHlwZS5yZWFkVUludDMyTEUoNCk7XG5cbiAgICAgIGlmIChoaWdoID49ICgyIDw8ICg1MyAtIDMyKSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdSZWFkIFVJbnQ2NExFID4gNTMgYml0cyA6IGhpZ2g9JyArIGhpZ2ggKyAnLCBsb3c9JyArIGxvdyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4cGVjdGVkTGVuZ3RoID0gbG93ICsgKDB4MTAwMDAwMDAwICogaGlnaCk7XG4gICAgICByZXR1cm4gcmVhZE1heEtub3duTGVuZ3RoKHBhcnNlciwgZXhwZWN0ZWRMZW5ndGgsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkTWF4S25vd25MZW5ndGgocGFyc2VyOiBQYXJzZXIsIHRvdGFsTGVuZ3RoOiBudW1iZXIsIGNhbGxiYWNrOiAodmFsdWU6IG51bGwgfCBCdWZmZXIpID0+IHZvaWQpIHtcbiAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyh0b3RhbExlbmd0aCwgMCk7XG5cbiAgbGV0IG9mZnNldCA9IDA7XG4gIGZ1bmN0aW9uIG5leHQoZG9uZTogYW55KSB7XG4gICAgcGFyc2VyLnJlYWRVSW50MzJMRSgoY2h1bmtMZW5ndGgpID0+IHtcbiAgICAgIGlmICghY2h1bmtMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUoKTtcbiAgICAgIH1cblxuICAgICAgcGFyc2VyLnJlYWRCdWZmZXIoY2h1bmtMZW5ndGgsIChjaHVuaykgPT4ge1xuICAgICAgICBjaHVuay5jb3B5KGRhdGEsIG9mZnNldCk7XG4gICAgICAgIG9mZnNldCArPSBjaHVua0xlbmd0aDtcblxuICAgICAgICBuZXh0KGRvbmUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZXh0KCgpID0+IHtcbiAgICBpZiAob2Zmc2V0ICE9PSB0b3RhbExlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJ0aWFsbHkgTGVuZ3RoLXByZWZpeGVkIEJ5dGVzIHVubWF0Y2hlZCBsZW5ndGhzIDogZXhwZWN0ZWQgJyArIHRvdGFsTGVuZ3RoICsgJywgYnV0IGdvdCAnICsgb2Zmc2V0ICsgJyBieXRlcycpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKGRhdGEpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZE1heFVua25vd25MZW5ndGgocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IG51bGwgfCBCdWZmZXIpID0+IHZvaWQpIHtcbiAgY29uc3QgY2h1bmtzOiBCdWZmZXJbXSA9IFtdO1xuXG4gIGxldCBsZW5ndGggPSAwO1xuICBmdW5jdGlvbiBuZXh0KGRvbmU6IGFueSkge1xuICAgIHBhcnNlci5yZWFkVUludDMyTEUoKGNodW5rTGVuZ3RoKSA9PiB7XG4gICAgICBpZiAoIWNodW5rTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICB9XG5cbiAgICAgIHBhcnNlci5yZWFkQnVmZmVyKGNodW5rTGVuZ3RoLCAoY2h1bmspID0+IHtcbiAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICBsZW5ndGggKz0gY2h1bmtMZW5ndGg7XG5cbiAgICAgICAgbmV4dChkb25lKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmV4dCgoKSA9PiB7XG4gICAgY2FsbGJhY2soQnVmZmVyLmNvbmNhdChjaHVua3MsIGxlbmd0aCkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZFNtYWxsRGF0ZVRpbWUocGFyc2VyOiBQYXJzZXIsIHVzZVVUQzogYm9vbGVhbiwgY2FsbGJhY2s6ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQxNkxFKChkYXlzKSA9PiB7XG4gICAgcGFyc2VyLnJlYWRVSW50MTZMRSgobWludXRlcykgPT4ge1xuICAgICAgbGV0IHZhbHVlO1xuICAgICAgaWYgKHVzZVVUQykge1xuICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5MDAsIDAsIDEgKyBkYXlzLCAwLCBtaW51dGVzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKDE5MDAsIDAsIDEgKyBkYXlzLCAwLCBtaW51dGVzKTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKHZhbHVlKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWREYXRlVGltZShwYXJzZXI6IFBhcnNlciwgdXNlVVRDOiBib29sZWFuLCBjYWxsYmFjazogKHZhbHVlOiBEYXRlKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkSW50MzJMRSgoZGF5cykgPT4ge1xuICAgIHBhcnNlci5yZWFkVUludDMyTEUoKHRocmVlSHVuZHJlZHRoc09mU2Vjb25kKSA9PiB7XG4gICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBNYXRoLnJvdW5kKHRocmVlSHVuZHJlZHRoc09mU2Vjb25kICogVEhSRUVfQU5EX0FfVEhJUkQpO1xuXG4gICAgICBsZXQgdmFsdWU7XG4gICAgICBpZiAodXNlVVRDKSB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5VVEMoMTkwMCwgMCwgMSArIGRheXMsIDAsIDAsIDAsIG1pbGxpc2Vjb25kcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSgxOTAwLCAwLCAxICsgZGF5cywgMCwgMCwgMCwgbWlsbGlzZWNvbmRzKTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2sodmFsdWUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuaW50ZXJmYWNlIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YSBleHRlbmRzIERhdGUge1xuICBuYW5vc2Vjb25kc0RlbHRhOiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIHJlYWRUaW1lKHBhcnNlcjogUGFyc2VyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIHNjYWxlOiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbiwgY2FsbGJhY2s6ICh2YWx1ZTogRGF0ZVdpdGhOYW5vc2Vjb25kc0RlbHRhKSA9PiB2b2lkKSB7XG4gIGxldCByZWFkVmFsdWU6IGFueTtcbiAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgY2FzZSAzOlxuICAgICAgcmVhZFZhbHVlID0gcGFyc2VyLnJlYWRVSW50MjRMRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHJlYWRWYWx1ZSA9IHBhcnNlci5yZWFkVUludDMyTEU7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICByZWFkVmFsdWUgPSBwYXJzZXIucmVhZFVJbnQ0MExFO1xuICB9XG5cbiAgcmVhZFZhbHVlIS5jYWxsKHBhcnNlciwgKHZhbHVlOiBudW1iZXIpID0+IHtcbiAgICBpZiAoc2NhbGUgPCA3KSB7XG4gICAgICBmb3IgKGxldCBpID0gc2NhbGU7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgdmFsdWUgKj0gMTA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGRhdGU7XG4gICAgaWYgKHVzZVVUQykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDAsIHZhbHVlIC8gMTAwMDApKSBhcyBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZSgxOTcwLCAwLCAxLCAwLCAwLCAwLCB2YWx1ZSAvIDEwMDAwKSBhcyBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGE7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkYXRlLCAnbmFub3NlY29uZHNEZWx0YScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6ICh2YWx1ZSAlIDEwMDAwKSAvIE1hdGgucG93KDEwLCA3KVxuICAgIH0pO1xuICAgIGNhbGxiYWNrKGRhdGUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZERhdGUocGFyc2VyOiBQYXJzZXIsIHVzZVVUQzogYm9vbGVhbiwgY2FsbGJhY2s6ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQyNExFKChkYXlzKSA9PiB7XG4gICAgaWYgKHVzZVVUQykge1xuICAgICAgY2FsbGJhY2sobmV3IERhdGUoRGF0ZS5VVEMoMjAwMCwgMCwgZGF5cyAtIDczMDExOCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2sobmV3IERhdGUoMjAwMCwgMCwgZGF5cyAtIDczMDExOCkpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWREYXRlVGltZTIocGFyc2VyOiBQYXJzZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgc2NhbGU6IG51bWJlciwgdXNlVVRDOiBib29sZWFuLCBjYWxsYmFjazogKHZhbHVlOiBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGEpID0+IHZvaWQpIHtcbiAgcmVhZFRpbWUocGFyc2VyLCBkYXRhTGVuZ3RoIC0gMywgc2NhbGUsIHVzZVVUQywgKHRpbWUpID0+IHsgLy8gVE9ETzogJ2lucHV0JyBpcyAndGltZScsIGJ1dCBUeXBlU2NyaXB0IGNhbm5vdCBmaW5kIFwidGltZS5uYW5vc2Vjb25kc0RlbHRhXCI7XG4gICAgcGFyc2VyLnJlYWRVSW50MjRMRSgoZGF5cykgPT4ge1xuICAgICAgbGV0IGRhdGU7XG4gICAgICBpZiAodXNlVVRDKSB7XG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQygyMDAwLCAwLCBkYXlzIC0gNzMwMTE4LCAwLCAwLCAwLCArdGltZSkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZSgyMDAwLCAwLCBkYXlzIC0gNzMwMTE4LCB0aW1lLmdldEhvdXJzKCksIHRpbWUuZ2V0TWludXRlcygpLCB0aW1lLmdldFNlY29uZHMoKSwgdGltZS5nZXRNaWxsaXNlY29uZHMoKSkgYXMgRGF0ZVdpdGhOYW5vc2Vjb25kc0RlbHRhO1xuICAgICAgfVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRhdGUsICduYW5vc2Vjb25kc0RlbHRhJywge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHRpbWUubmFub3NlY29uZHNEZWx0YVxuICAgICAgfSk7XG4gICAgICBjYWxsYmFjayhkYXRlKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWREYXRlVGltZU9mZnNldChwYXJzZXI6IFBhcnNlciwgZGF0YUxlbmd0aDogbnVtYmVyLCBzY2FsZTogbnVtYmVyLCBjYWxsYmFjazogKHZhbHVlOiBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGEpID0+IHZvaWQpIHtcbiAgcmVhZFRpbWUocGFyc2VyLCBkYXRhTGVuZ3RoIC0gNSwgc2NhbGUsIHRydWUsICh0aW1lKSA9PiB7XG4gICAgcGFyc2VyLnJlYWRVSW50MjRMRSgoZGF5cykgPT4ge1xuICAgICAgLy8gb2Zmc2V0XG4gICAgICBwYXJzZXIucmVhZEludDE2TEUoKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoMjAwMCwgMCwgZGF5cyAtIDczMDExOCwgMCwgMCwgMCwgK3RpbWUpKSBhcyBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGE7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkYXRlLCAnbmFub3NlY29uZHNEZWx0YScsIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZTogdGltZS5uYW5vc2Vjb25kc0RlbHRhXG4gICAgICAgIH0pO1xuICAgICAgICBjYWxsYmFjayhkYXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmFsdWVQYXJzZTtcbm1vZHVsZS5leHBvcnRzID0gdmFsdWVQYXJzZTtcbiJdfQ==
738
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMIiwiTUFYIiwiVEhSRUVfQU5EX0FfVEhJUkQiLCJNT05FWV9ESVZJU09SIiwiUExQX05VTEwiLCJCdWZmZXIiLCJmcm9tIiwiVU5LTk9XTl9QTFBfTEVOIiwiREVGQVVMVF9FTkNPRElORyIsInJlYWRUaW55SW50IiwicGFyc2VyIiwiY2FsbGJhY2siLCJyZWFkVUludDgiLCJyZWFkU21hbGxJbnQiLCJyZWFkSW50MTZMRSIsInJlYWRJbnQiLCJyZWFkSW50MzJMRSIsInJlYWRCaWdJbnQiLCJyZWFkQmlnSW50NjRMRSIsInZhbHVlIiwidG9TdHJpbmciLCJyZWFkUmVhbCIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0IiwicmVhZERvdWJsZUxFIiwicmVhZFNtYWxsTW9uZXkiLCJyZWFkTW9uZXkiLCJoaWdoIiwicmVhZFVJbnQzMkxFIiwibG93IiwicmVhZEJpdCIsInZhbHVlUGFyc2UiLCJtZXRhZGF0YSIsIm9wdGlvbnMiLCJ0eXBlIiwibmFtZSIsImRhdGFMZW5ndGgiLCJFcnJvciIsImNvZGVwYWdlIiwiY29sbGF0aW9uIiwicmVhZE1heENoYXJzIiwicmVhZFVJbnQxNkxFIiwicmVhZENoYXJzIiwicmVhZE1heE5DaGFycyIsInJlYWROQ2hhcnMiLCJyZWFkTWF4QmluYXJ5IiwicmVhZEJpbmFyeSIsInRleHRQb2ludGVyTGVuZ3RoIiwicmVhZEJ1ZmZlciIsIl90ZXh0UG9pbnRlciIsIl90aW1lc3RhbXAiLCJyZWFkU21hbGxEYXRlVGltZSIsInVzZVVUQyIsInJlYWREYXRlVGltZSIsInJlYWRUaW1lIiwic2NhbGUiLCJyZWFkRGF0ZSIsInJlYWREYXRlVGltZTIiLCJyZWFkRGF0ZVRpbWVPZmZzZXQiLCJyZWFkTnVtZXJpYyIsInByZWNpc2lvbiIsInJlYWRVbmlxdWVJZGVudGlmaWVyIiwicmVhZFZhcmlhbnQiLCJkYXRhIiwibG93ZXJDYXNlR3VpZHMiLCJfcHJlY2lzaW9uIiwic2lnbiIsInJlYWRWYWx1ZSIsInJlYWRVTnVtZXJpYzY0TEUiLCJyZWFkVU51bWVyaWM5NkxFIiwicmVhZFVOdW1lcmljMTI4TEUiLCJjYWxsIiwiTWF0aCIsInBvdyIsImJhc2VUeXBlIiwiVFlQRSIsInByb3BCeXRlcyIsIl9tYXhMZW5ndGgiLCJfY29sbGF0aW9uIiwiaWNvbnYiLCJkZWNvZGUiLCJyZWFkTWF4IiwiZXF1YWxzIiwicmVhZE1heFVua25vd25MZW5ndGgiLCJjb25zb2xlIiwid2FybiIsImV4cGVjdGVkTGVuZ3RoIiwicmVhZE1heEtub3duTGVuZ3RoIiwidG90YWxMZW5ndGgiLCJhbGxvYyIsIm9mZnNldCIsIm5leHQiLCJkb25lIiwiY2h1bmtMZW5ndGgiLCJjaHVuayIsImNvcHkiLCJjaHVua3MiLCJsZW5ndGgiLCJwdXNoIiwiY29uY2F0IiwiZGF5cyIsIm1pbnV0ZXMiLCJEYXRlIiwiVVRDIiwidGhyZWVIdW5kcmVkdGhzT2ZTZWNvbmQiLCJtaWxsaXNlY29uZHMiLCJyb3VuZCIsInJlYWRVSW50MjRMRSIsInJlYWRVSW50NDBMRSIsImkiLCJkYXRlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwidGltZSIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJuYW5vc2Vjb25kc0RlbHRhIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy92YWx1ZS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlciBmcm9tICcuL3Rva2VuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEsIHJlYWRDb2xsYXRpb24gfSBmcm9tICcuL21ldGFkYXRhLXBhcnNlcic7XG5pbXBvcnQgeyBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcbmltcG9ydCB7IFRZUEUgfSBmcm9tICcuL2RhdGEtdHlwZSc7XG5cbmltcG9ydCBpY29udiBmcm9tICdpY29udi1saXRlJztcbmltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcbmltcG9ydCB7IGJ1ZmZlclRvTG93ZXJDYXNlR3VpZCwgYnVmZmVyVG9VcHBlckNhc2VHdWlkIH0gZnJvbSAnLi9ndWlkLXBhcnNlcic7XG5cbmNvbnN0IE5VTEwgPSAoMSA8PCAxNikgLSAxO1xuY29uc3QgTUFYID0gKDEgPDwgMTYpIC0gMTtcbmNvbnN0IFRIUkVFX0FORF9BX1RISVJEID0gMyArICgxIC8gMyk7XG5jb25zdCBNT05FWV9ESVZJU09SID0gMTAwMDA7XG5jb25zdCBQTFBfTlVMTCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSBCdWZmZXIuZnJvbShbMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuY29uc3QgREVGQVVMVF9FTkNPRElORyA9ICd1dGY4JztcblxuZnVuY3Rpb24gcmVhZFRpbnlJbnQocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRVSW50OChjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlYWRTbWFsbEludChwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZEludDE2TEUoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZWFkSW50KHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkSW50MzJMRShjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlYWRCaWdJbnQocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRCaWdJbnQ2NExFKCh2YWx1ZSkgPT4ge1xuICAgIGNhbGxiYWNrKHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZFJlYWwocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRGbG9hdExFKGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVhZEZsb2F0KHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkRG91YmxlTEUoY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZWFkU21hbGxNb25leShwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZEludDMyTEUoKHZhbHVlKSA9PiB7XG4gICAgY2FsbGJhY2sodmFsdWUgLyBNT05FWV9ESVZJU09SKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRNb25leShwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZEludDMyTEUoKGhpZ2gpID0+IHtcbiAgICBwYXJzZXIucmVhZFVJbnQzMkxFKChsb3cpID0+IHtcbiAgICAgIGNhbGxiYWNrKChsb3cgKyAoMHgxMDAwMDAwMDAgKiBoaWdoKSkgLyBNT05FWV9ESVZJU09SKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRCaXQocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRVSW50OCgodmFsdWUpID0+IHtcbiAgICBjYWxsYmFjayghIXZhbHVlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHZhbHVlUGFyc2UocGFyc2VyOiBQYXJzZXIsIG1ldGFkYXRhOiBNZXRhZGF0YSwgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucywgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCk6IHZvaWQge1xuICBjb25zdCB0eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ051bGwnOlxuICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuXG4gICAgY2FzZSAnVGlueUludCc6XG4gICAgICByZXR1cm4gcmVhZFRpbnlJbnQocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlICdTbWFsbEludCc6XG4gICAgICByZXR1cm4gcmVhZFNtYWxsSW50KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnSW50JzpcbiAgICAgIHJldHVybiByZWFkSW50KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnQmlnSW50JzpcbiAgICAgIHJldHVybiByZWFkQmlnSW50KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnSW50Tic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG5cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gcmVhZFRpbnlJbnQocGFyc2VyLCBjYWxsYmFjayk7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRTbWFsbEludChwYXJzZXIsIGNhbGxiYWNrKTtcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gcmVhZEludChwYXJzZXIsIGNhbGxiYWNrKTtcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gcmVhZEJpZ0ludChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGRhdGFMZW5ndGggJyArIGRhdGFMZW5ndGggKyAnIGZvciBJbnROJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnUmVhbCc6XG4gICAgICByZXR1cm4gcmVhZFJlYWwocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlICdGbG9hdCc6XG4gICAgICByZXR1cm4gcmVhZEZsb2F0KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnRmxvYXROJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZGF0YUxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcblxuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiByZWFkUmVhbChwYXJzZXIsIGNhbGxiYWNrKTtcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gcmVhZEZsb2F0KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZGF0YUxlbmd0aCAnICsgZGF0YUxlbmd0aCArICcgZm9yIEZsb2F0TicpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ1NtYWxsTW9uZXknOlxuICAgICAgcmV0dXJuIHJlYWRTbWFsbE1vbmV5KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgY2FzZSAnTW9uZXknOlxuICAgICAgcmV0dXJuIHJlYWRNb25leShwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgJ01vbmV5Tic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG5cbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gcmVhZFNtYWxsTW9uZXkocGFyc2VyLCBjYWxsYmFjayk7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRNb25leShwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGRhdGFMZW5ndGggJyArIGRhdGFMZW5ndGggKyAnIGZvciBNb25leU4nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjYXNlICdCaXQnOlxuICAgICAgcmV0dXJuIHJlYWRCaXQocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlICdCaXROJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZGF0YUxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcblxuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiByZWFkQml0KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZGF0YUxlbmd0aCAnICsgZGF0YUxlbmd0aCArICcgZm9yIEJpdE4nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjYXNlICdWYXJDaGFyJzpcbiAgICBjYXNlICdDaGFyJzpcbiAgICAgIGNvbnN0IGNvZGVwYWdlID0gbWV0YWRhdGEuY29sbGF0aW9uIS5jb2RlcGFnZSE7XG4gICAgICBpZiAobWV0YWRhdGEuZGF0YUxlbmd0aCA9PT0gTUFYKSB7XG4gICAgICAgIHJldHVybiByZWFkTWF4Q2hhcnMocGFyc2VyLCBjb2RlcGFnZSwgY2FsbGJhY2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDE2TEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PT0gTlVMTCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlYWRDaGFycyhwYXJzZXIsIGRhdGFMZW5ndGghLCBjb2RlcGFnZSwgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6XG4gICAgICBpZiAobWV0YWRhdGEuZGF0YUxlbmd0aCA9PT0gTUFYKSB7XG4gICAgICAgIHJldHVybiByZWFkTWF4TkNoYXJzKHBhcnNlciwgY2FsbGJhY2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDE2TEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PT0gTlVMTCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlYWROQ2hhcnMocGFyc2VyLCBkYXRhTGVuZ3RoISwgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ1ZhckJpbmFyeSc6XG4gICAgY2FzZSAnQmluYXJ5JzpcbiAgICAgIGlmIChtZXRhZGF0YS5kYXRhTGVuZ3RoID09PSBNQVgpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRNYXhCaW5hcnkocGFyc2VyLCBjYWxsYmFjayk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MTZMRSgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhTGVuZ3RoID09PSBOVUxMKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVhZEJpbmFyeShwYXJzZXIsIGRhdGFMZW5ndGghLCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgY2FzZSAnVGV4dCc6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgodGV4dFBvaW50ZXJMZW5ndGgpID0+IHtcbiAgICAgICAgaWYgKHRleHRQb2ludGVyTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyc2VyLnJlYWRCdWZmZXIodGV4dFBvaW50ZXJMZW5ndGgsIChfdGV4dFBvaW50ZXIpID0+IHtcbiAgICAgICAgICBwYXJzZXIucmVhZEJ1ZmZlcig4LCAoX3RpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgcGFyc2VyLnJlYWRVSW50MzJMRSgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgICByZWFkQ2hhcnMocGFyc2VyLCBkYXRhTGVuZ3RoISwgbWV0YWRhdGEuY29sbGF0aW9uIS5jb2RlcGFnZSEsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnTlRleHQnOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKHRleHRQb2ludGVyTGVuZ3RoKSA9PiB7XG4gICAgICAgIGlmICh0ZXh0UG9pbnRlckxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnNlci5yZWFkQnVmZmVyKHRleHRQb2ludGVyTGVuZ3RoLCAoX3RleHRQb2ludGVyKSA9PiB7XG4gICAgICAgICAgcGFyc2VyLnJlYWRCdWZmZXIoOCwgKF90aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIHBhcnNlci5yZWFkVUludDMyTEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgcmVhZE5DaGFycyhwYXJzZXIsIGRhdGFMZW5ndGghLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ0ltYWdlJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KCh0ZXh0UG9pbnRlckxlbmd0aCkgPT4ge1xuICAgICAgICBpZiAodGV4dFBvaW50ZXJMZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJzZXIucmVhZEJ1ZmZlcih0ZXh0UG9pbnRlckxlbmd0aCwgKF90ZXh0UG9pbnRlcikgPT4ge1xuICAgICAgICAgIHBhcnNlci5yZWFkQnVmZmVyKDgsIChfdGltZXN0YW1wKSA9PiB7XG4gICAgICAgICAgICBwYXJzZXIucmVhZFVJbnQzMkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIHJlYWRCaW5hcnkocGFyc2VyLCBkYXRhTGVuZ3RoISwgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBjYXNlICdYbWwnOlxuICAgICAgcmV0dXJuIHJlYWRNYXhOQ2hhcnMocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlICdTbWFsbERhdGVUaW1lJzpcbiAgICAgIHJldHVybiByZWFkU21hbGxEYXRlVGltZShwYXJzZXIsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlICdEYXRlVGltZSc6XG4gICAgICByZXR1cm4gcmVhZERhdGVUaW1lKHBhcnNlciwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgJ0RhdGVUaW1lTic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG5cbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gcmVhZFNtYWxsRGF0ZVRpbWUocGFyc2VyLCBvcHRpb25zLnVzZVVUQywgY2FsbGJhY2spO1xuICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUocGFyc2VyLCBvcHRpb25zLnVzZVVUQywgY2FsbGJhY2spO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZGF0YUxlbmd0aCAnICsgZGF0YUxlbmd0aCArICcgZm9yIERhdGVUaW1lTicpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ1RpbWUnOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgaWYgKGRhdGFMZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlYWRUaW1lKHBhcnNlciwgZGF0YUxlbmd0aCEsIG1ldGFkYXRhLnNjYWxlISwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZWFkRGF0ZShwYXJzZXIsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnRGF0ZVRpbWUyJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUyKHBhcnNlciwgZGF0YUxlbmd0aCEsIG1ldGFkYXRhLnNjYWxlISwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjYXNlICdEYXRlVGltZU9mZnNldCc6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVhZERhdGVUaW1lT2Zmc2V0KHBhcnNlciwgZGF0YUxlbmd0aCEsIG1ldGFkYXRhLnNjYWxlISwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ051bWVyaWNOJzpcbiAgICBjYXNlICdEZWNpbWFsTic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVhZE51bWVyaWMocGFyc2VyLCBkYXRhTGVuZ3RoISwgbWV0YWRhdGEucHJlY2lzaW9uISwgbWV0YWRhdGEuc2NhbGUhLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnVW5pcXVlSWRlbnRpZmllcic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG5cbiAgICAgICAgICBjYXNlIDB4MTA6XG4gICAgICAgICAgICByZXR1cm4gcmVhZFVuaXF1ZUlkZW50aWZpZXIocGFyc2VyLCBvcHRpb25zLCBjYWxsYmFjayk7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHNwcmludGYoJ1Vuc3VwcG9ydGVkIGd1aWQgc2l6ZSAlZCcsIGRhdGFMZW5ndGghIC0gMSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ1VEVCc6XG4gICAgICByZXR1cm4gcmVhZE1heEJpbmFyeShwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgJ1ZhcmlhbnQnOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDMyTEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgaWYgKGRhdGFMZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZWFkVmFyaWFudChwYXJzZXIsIG9wdGlvbnMsIGRhdGFMZW5ndGghLCBjYWxsYmFjayk7XG4gICAgICB9KTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIHR5cGUgJXMnLCB0eXBlLm5hbWUpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkVW5pcXVlSWRlbnRpZmllcihwYXJzZXI6IFBhcnNlciwgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucywgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZEJ1ZmZlcigweDEwLCAoZGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKG9wdGlvbnMubG93ZXJDYXNlR3VpZHMgPyBidWZmZXJUb0xvd2VyQ2FzZUd1aWQoZGF0YSkgOiBidWZmZXJUb1VwcGVyQ2FzZUd1aWQoZGF0YSkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZE51bWVyaWMocGFyc2VyOiBQYXJzZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgX3ByZWNpc2lvbjogbnVtYmVyLCBzY2FsZTogbnVtYmVyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkVUludDgoKHNpZ24pID0+IHtcbiAgICBzaWduID0gc2lnbiA9PT0gMSA/IDEgOiAtMTtcblxuICAgIGxldCByZWFkVmFsdWU7XG4gICAgaWYgKGRhdGFMZW5ndGggPT09IDUpIHtcbiAgICAgIHJlYWRWYWx1ZSA9IHBhcnNlci5yZWFkVUludDMyTEU7XG4gICAgfSBlbHNlIGlmIChkYXRhTGVuZ3RoID09PSA5KSB7XG4gICAgICByZWFkVmFsdWUgPSBwYXJzZXIucmVhZFVOdW1lcmljNjRMRTtcbiAgICB9IGVsc2UgaWYgKGRhdGFMZW5ndGggPT09IDEzKSB7XG4gICAgICByZWFkVmFsdWUgPSBwYXJzZXIucmVhZFVOdW1lcmljOTZMRTtcbiAgICB9IGVsc2UgaWYgKGRhdGFMZW5ndGggPT09IDE3KSB7XG4gICAgICByZWFkVmFsdWUgPSBwYXJzZXIucmVhZFVOdW1lcmljMTI4TEU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihzcHJpbnRmKCdVbnN1cHBvcnRlZCBudW1lcmljIGRhdGFMZW5ndGggJWQnLCBkYXRhTGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgcmVhZFZhbHVlLmNhbGwocGFyc2VyLCAodmFsdWUpID0+IHtcbiAgICAgIGNhbGxiYWNrKCh2YWx1ZSAqIHNpZ24pIC8gTWF0aC5wb3coMTAsIHNjYWxlKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkVmFyaWFudChwYXJzZXI6IFBhcnNlciwgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucywgZGF0YUxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChiYXNlVHlwZSkgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBUWVBFW2Jhc2VUeXBlXTtcblxuICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChwcm9wQnl0ZXMpID0+IHtcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhTGVuZ3RoIC0gcHJvcEJ5dGVzIC0gMjtcblxuICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgY2FzZSAnVW5pcXVlSWRlbnRpZmllcic6XG4gICAgICAgICAgcmV0dXJuIHJlYWRVbmlxdWVJZGVudGlmaWVyKHBhcnNlciwgb3B0aW9ucywgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ0JpdCc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRCaXQocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICAgICAgY2FzZSAnVGlueUludCc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRUaW55SW50KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ1NtYWxsSW50JzpcbiAgICAgICAgICByZXR1cm4gcmVhZFNtYWxsSW50KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ0ludCc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRJbnQocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICAgICAgY2FzZSAnQmlnSW50JzpcbiAgICAgICAgICByZXR1cm4gcmVhZEJpZ0ludChwYXJzZXIsIGNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdTbWFsbERhdGVUaW1lJzpcbiAgICAgICAgICByZXR1cm4gcmVhZFNtYWxsRGF0ZVRpbWUocGFyc2VyLCBvcHRpb25zLnVzZVVUQywgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICAgICAgICByZXR1cm4gcmVhZERhdGVUaW1lKHBhcnNlciwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdSZWFsJzpcbiAgICAgICAgICByZXR1cm4gcmVhZFJlYWwocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICAgICAgY2FzZSAnRmxvYXQnOlxuICAgICAgICAgIHJldHVybiByZWFkRmxvYXQocGFyc2VyLCBjYWxsYmFjayk7XG5cbiAgICAgICAgY2FzZSAnU21hbGxNb25leSc6XG4gICAgICAgICAgcmV0dXJuIHJlYWRTbWFsbE1vbmV5KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ01vbmV5JzpcbiAgICAgICAgICByZXR1cm4gcmVhZE1vbmV5KHBhcnNlciwgY2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ0RhdGUnOlxuICAgICAgICAgIHJldHVybiByZWFkRGF0ZShwYXJzZXIsIG9wdGlvbnMudXNlVVRDLCBjYWxsYmFjayk7XG5cbiAgICAgICAgY2FzZSAnVGltZSc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKHNjYWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVhZFRpbWUocGFyc2VyLCBkYXRhTGVuZ3RoLCBzY2FsZSwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBjYXNlICdEYXRlVGltZTInOlxuICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChzY2FsZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWREYXRlVGltZTIocGFyc2VyLCBkYXRhTGVuZ3RoLCBzY2FsZSwgb3B0aW9ucy51c2VVVEMsIGNhbGxiYWNrKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBjYXNlICdEYXRlVGltZU9mZnNldCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDgoKHNjYWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVhZERhdGVUaW1lT2Zmc2V0KHBhcnNlciwgZGF0YUxlbmd0aCwgc2NhbGUsIGNhbGxiYWNrKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBjYXNlICdWYXJCaW5hcnknOlxuICAgICAgICBjYXNlICdCaW5hcnknOlxuICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQxNkxFKChfbWF4TGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICByZWFkQmluYXJ5KHBhcnNlciwgZGF0YUxlbmd0aCwgY2FsbGJhY2spO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNhc2UgJ051bWVyaWNOJzpcbiAgICAgICAgY2FzZSAnRGVjaW1hbE4nOlxuICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChwcmVjaXNpb24pID0+IHtcbiAgICAgICAgICAgIHBhcnNlci5yZWFkVUludDgoKHNjYWxlKSA9PiB7XG4gICAgICAgICAgICAgIHJlYWROdW1lcmljKHBhcnNlciwgZGF0YUxlbmd0aCwgcHJlY2lzaW9uLCBzY2FsZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY2FzZSAnVmFyQ2hhcic6XG4gICAgICAgIGNhc2UgJ0NoYXInOlxuICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQxNkxFKChfbWF4TGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICByZWFkQ29sbGF0aW9uKHBhcnNlciwgKGNvbGxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZWFkQ2hhcnMocGFyc2VyLCBkYXRhTGVuZ3RoLCBjb2xsYXRpb24uY29kZXBhZ2UhLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBjYXNlICdOVmFyQ2hhcic6XG4gICAgICAgIGNhc2UgJ05DaGFyJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MTZMRSgoX21heExlbmd0aCkgPT4ge1xuICAgICAgICAgICAgcmVhZENvbGxhdGlvbihwYXJzZXIsIChfY29sbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIHJlYWROQ2hhcnMocGFyc2VyLCBkYXRhTGVuZ3RoLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0eXBlIScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZEJpbmFyeShwYXJzZXI6IFBhcnNlciwgZGF0YUxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIHJldHVybiBwYXJzZXIucmVhZEJ1ZmZlcihkYXRhTGVuZ3RoLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlYWRDaGFycyhwYXJzZXI6IFBhcnNlciwgZGF0YUxlbmd0aDogbnVtYmVyLCBjb2RlcGFnZTogc3RyaW5nLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIGlmIChjb2RlcGFnZSA9PSBudWxsKSB7XG4gICAgY29kZXBhZ2UgPSBERUZBVUxUX0VOQ09ESU5HO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlci5yZWFkQnVmZmVyKGRhdGFMZW5ndGgsIChkYXRhKSA9PiB7XG4gICAgY2FsbGJhY2soaWNvbnYuZGVjb2RlKGRhdGEsIGNvZGVwYWdlKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkTkNoYXJzKHBhcnNlcjogUGFyc2VyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIGNhbGxiYWNrOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRCdWZmZXIoZGF0YUxlbmd0aCwgKGRhdGEpID0+IHtcbiAgICBjYWxsYmFjayhkYXRhLnRvU3RyaW5nKCd1Y3MyJykpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZE1heEJpbmFyeShwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkge1xuICByZXR1cm4gcmVhZE1heChwYXJzZXIsIGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVhZE1heENoYXJzKHBhcnNlcjogUGFyc2VyLCBjb2RlcGFnZTogc3RyaW5nLCBjYWxsYmFjazogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKSB7XG4gIGlmIChjb2RlcGFnZSA9PSBudWxsKSB7XG4gICAgY29kZXBhZ2UgPSBERUZBVUxUX0VOQ09ESU5HO1xuICB9XG5cbiAgcmVhZE1heChwYXJzZXIsIChkYXRhKSA9PiB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKGljb252LmRlY29kZShkYXRhLCBjb2RlcGFnZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhudWxsKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkTWF4TkNoYXJzKHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkKSB7XG4gIHJlYWRNYXgocGFyc2VyLCAoZGF0YSkgPT4ge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBjYWxsYmFjayhkYXRhLnRvU3RyaW5nKCd1Y3MyJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhudWxsKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkTWF4KHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHZhbHVlOiBudWxsIHwgQnVmZmVyKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkQnVmZmVyKDgsICh0eXBlKSA9PiB7XG4gICAgaWYgKHR5cGUuZXF1YWxzKFBMUF9OVUxMKSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgIH0gZWxzZSBpZiAodHlwZS5lcXVhbHMoVU5LTk9XTl9QTFBfTEVOKSkge1xuICAgICAgcmV0dXJuIHJlYWRNYXhVbmtub3duTGVuZ3RoKHBhcnNlciwgY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsb3cgPSB0eXBlLnJlYWRVSW50MzJMRSgwKTtcbiAgICAgIGNvbnN0IGhpZ2ggPSB0eXBlLnJlYWRVSW50MzJMRSg0KTtcblxuICAgICAgaWYgKGhpZ2ggPj0gKDIgPDwgKDUzIC0gMzIpKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1JlYWQgVUludDY0TEUgPiA1MyBiaXRzIDogaGlnaD0nICsgaGlnaCArICcsIGxvdz0nICsgbG93KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSBsb3cgKyAoMHgxMDAwMDAwMDAgKiBoaWdoKTtcbiAgICAgIHJldHVybiByZWFkTWF4S25vd25MZW5ndGgocGFyc2VyLCBleHBlY3RlZExlbmd0aCwgY2FsbGJhY2spO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRNYXhLbm93bkxlbmd0aChwYXJzZXI6IFBhcnNlciwgdG90YWxMZW5ndGg6IG51bWJlciwgY2FsbGJhY2s6ICh2YWx1ZTogbnVsbCB8IEJ1ZmZlcikgPT4gdm9pZCkge1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKHRvdGFsTGVuZ3RoLCAwKTtcblxuICBsZXQgb2Zmc2V0ID0gMDtcbiAgZnVuY3Rpb24gbmV4dChkb25lOiBhbnkpIHtcbiAgICBwYXJzZXIucmVhZFVJbnQzMkxFKChjaHVua0xlbmd0aCkgPT4ge1xuICAgICAgaWYgKCFjaHVua0xlbmd0aCkge1xuICAgICAgICByZXR1cm4gZG9uZSgpO1xuICAgICAgfVxuXG4gICAgICBwYXJzZXIucmVhZEJ1ZmZlcihjaHVua0xlbmd0aCwgKGNodW5rKSA9PiB7XG4gICAgICAgIGNodW5rLmNvcHkoZGF0YSwgb2Zmc2V0KTtcbiAgICAgICAgb2Zmc2V0ICs9IGNodW5rTGVuZ3RoO1xuXG4gICAgICAgIG5leHQoZG9uZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5leHQoKCkgPT4ge1xuICAgIGlmIChvZmZzZXQgIT09IHRvdGFsTGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnRpYWxseSBMZW5ndGgtcHJlZml4ZWQgQnl0ZXMgdW5tYXRjaGVkIGxlbmd0aHMgOiBleHBlY3RlZCAnICsgdG90YWxMZW5ndGggKyAnLCBidXQgZ290ICcgKyBvZmZzZXQgKyAnIGJ5dGVzJyk7XG4gICAgfVxuXG4gICAgY2FsbGJhY2soZGF0YSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkTWF4VW5rbm93bkxlbmd0aChwYXJzZXI6IFBhcnNlciwgY2FsbGJhY2s6ICh2YWx1ZTogbnVsbCB8IEJ1ZmZlcikgPT4gdm9pZCkge1xuICBjb25zdCBjaHVua3M6IEJ1ZmZlcltdID0gW107XG5cbiAgbGV0IGxlbmd0aCA9IDA7XG4gIGZ1bmN0aW9uIG5leHQoZG9uZTogYW55KSB7XG4gICAgcGFyc2VyLnJlYWRVSW50MzJMRSgoY2h1bmtMZW5ndGgpID0+IHtcbiAgICAgIGlmICghY2h1bmtMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUoKTtcbiAgICAgIH1cblxuICAgICAgcGFyc2VyLnJlYWRCdWZmZXIoY2h1bmtMZW5ndGgsIChjaHVuaykgPT4ge1xuICAgICAgICBjaHVua3MucHVzaChjaHVuayk7XG4gICAgICAgIGxlbmd0aCArPSBjaHVua0xlbmd0aDtcblxuICAgICAgICBuZXh0KGRvbmUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZXh0KCgpID0+IHtcbiAgICBjYWxsYmFjayhCdWZmZXIuY29uY2F0KGNodW5rcywgbGVuZ3RoKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkU21hbGxEYXRlVGltZShwYXJzZXI6IFBhcnNlciwgdXNlVVRDOiBib29sZWFuLCBjYWxsYmFjazogKHZhbHVlOiBEYXRlKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkVUludDE2TEUoKGRheXMpID0+IHtcbiAgICBwYXJzZXIucmVhZFVJbnQxNkxFKChtaW51dGVzKSA9PiB7XG4gICAgICBsZXQgdmFsdWU7XG4gICAgICBpZiAodXNlVVRDKSB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5VVEMoMTkwMCwgMCwgMSArIGRheXMsIDAsIG1pbnV0ZXMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoMTkwMCwgMCwgMSArIGRheXMsIDAsIG1pbnV0ZXMpO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2sodmFsdWUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZERhdGVUaW1lKHBhcnNlcjogUGFyc2VyLCB1c2VVVEM6IGJvb2xlYW4sIGNhbGxiYWNrOiAodmFsdWU6IERhdGUpID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRJbnQzMkxFKChkYXlzKSA9PiB7XG4gICAgcGFyc2VyLnJlYWRVSW50MzJMRSgodGhyZWVIdW5kcmVkdGhzT2ZTZWNvbmQpID0+IHtcbiAgICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IE1hdGgucm91bmQodGhyZWVIdW5kcmVkdGhzT2ZTZWNvbmQgKiBUSFJFRV9BTkRfQV9USElSRCk7XG5cbiAgICAgIGxldCB2YWx1ZTtcbiAgICAgIGlmICh1c2VVVEMpIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZShEYXRlLlVUQygxOTAwLCAwLCAxICsgZGF5cywgMCwgMCwgMCwgbWlsbGlzZWNvbmRzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKDE5MDAsIDAsIDEgKyBkYXlzLCAwLCAwLCAwLCBtaWxsaXNlY29uZHMpO1xuICAgICAgfVxuXG4gICAgICBjYWxsYmFjayh2YWx1ZSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5pbnRlcmZhY2UgRGF0ZVdpdGhOYW5vc2Vjb25kc0RlbHRhIGV4dGVuZHMgRGF0ZSB7XG4gIG5hbm9zZWNvbmRzRGVsdGE6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcmVhZFRpbWUocGFyc2VyOiBQYXJzZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgc2NhbGU6IG51bWJlciwgdXNlVVRDOiBib29sZWFuLCBjYWxsYmFjazogKHZhbHVlOiBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGEpID0+IHZvaWQpIHtcbiAgbGV0IHJlYWRWYWx1ZTogYW55O1xuICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICBjYXNlIDM6XG4gICAgICByZWFkVmFsdWUgPSBwYXJzZXIucmVhZFVJbnQyNExFO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgcmVhZFZhbHVlID0gcGFyc2VyLnJlYWRVSW50MzJMRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIHJlYWRWYWx1ZSA9IHBhcnNlci5yZWFkVUludDQwTEU7XG4gIH1cblxuICByZWFkVmFsdWUhLmNhbGwocGFyc2VyLCAodmFsdWU6IG51bWJlcikgPT4ge1xuICAgIGlmIChzY2FsZSA8IDcpIHtcbiAgICAgIGZvciAobGV0IGkgPSBzY2FsZTsgaSA8IDc7IGkrKykge1xuICAgICAgICB2YWx1ZSAqPSAxMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZGF0ZTtcbiAgICBpZiAodXNlVVRDKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoMTk3MCwgMCwgMSwgMCwgMCwgMCwgdmFsdWUgLyAxMDAwMCkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKDE5NzAsIDAsIDEsIDAsIDAsIDAsIHZhbHVlIC8gMTAwMDApIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRhdGUsICduYW5vc2Vjb25kc0RlbHRhJywge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogKHZhbHVlICUgMTAwMDApIC8gTWF0aC5wb3coMTAsIDcpXG4gICAgfSk7XG4gICAgY2FsbGJhY2soZGF0ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkRGF0ZShwYXJzZXI6IFBhcnNlciwgdXNlVVRDOiBib29sZWFuLCBjYWxsYmFjazogKHZhbHVlOiBEYXRlKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkVUludDI0TEUoKGRheXMpID0+IHtcbiAgICBpZiAodXNlVVRDKSB7XG4gICAgICBjYWxsYmFjayhuZXcgRGF0ZShEYXRlLlVUQygyMDAwLCAwLCBkYXlzIC0gNzMwMTE4KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhuZXcgRGF0ZSgyMDAwLCAwLCBkYXlzIC0gNzMwMTE4KSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZERhdGVUaW1lMihwYXJzZXI6IFBhcnNlciwgZGF0YUxlbmd0aDogbnVtYmVyLCBzY2FsZTogbnVtYmVyLCB1c2VVVEM6IGJvb2xlYW4sIGNhbGxiYWNrOiAodmFsdWU6IERhdGVXaXRoTmFub3NlY29uZHNEZWx0YSkgPT4gdm9pZCkge1xuICByZWFkVGltZShwYXJzZXIsIGRhdGFMZW5ndGggLSAzLCBzY2FsZSwgdXNlVVRDLCAodGltZSkgPT4geyAvLyBUT0RPOiAnaW5wdXQnIGlzICd0aW1lJywgYnV0IFR5cGVTY3JpcHQgY2Fubm90IGZpbmQgXCJ0aW1lLm5hbm9zZWNvbmRzRGVsdGFcIjtcbiAgICBwYXJzZXIucmVhZFVJbnQyNExFKChkYXlzKSA9PiB7XG4gICAgICBsZXQgZGF0ZTtcbiAgICAgIGlmICh1c2VVVEMpIHtcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKDIwMDAsIDAsIGRheXMgLSA3MzAxMTgsIDAsIDAsIDAsICt0aW1lKSkgYXMgRGF0ZVdpdGhOYW5vc2Vjb25kc0RlbHRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKDIwMDAsIDAsIGRheXMgLSA3MzAxMTgsIHRpbWUuZ2V0SG91cnMoKSwgdGltZS5nZXRNaW51dGVzKCksIHRpbWUuZ2V0U2Vjb25kcygpLCB0aW1lLmdldE1pbGxpc2Vjb25kcygpKSBhcyBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGE7XG4gICAgICB9XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGF0ZSwgJ25hbm9zZWNvbmRzRGVsdGEnLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogdGltZS5uYW5vc2Vjb25kc0RlbHRhXG4gICAgICB9KTtcbiAgICAgIGNhbGxiYWNrKGRhdGUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZERhdGVUaW1lT2Zmc2V0KHBhcnNlcjogUGFyc2VyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIHNjYWxlOiBudW1iZXIsIGNhbGxiYWNrOiAodmFsdWU6IERhdGVXaXRoTmFub3NlY29uZHNEZWx0YSkgPT4gdm9pZCkge1xuICByZWFkVGltZShwYXJzZXIsIGRhdGFMZW5ndGggLSA1LCBzY2FsZSwgdHJ1ZSwgKHRpbWUpID0+IHtcbiAgICBwYXJzZXIucmVhZFVJbnQyNExFKChkYXlzKSA9PiB7XG4gICAgICAvLyBvZmZzZXRcbiAgICAgIHBhcnNlci5yZWFkSW50MTZMRSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQygyMDAwLCAwLCBkYXlzIC0gNzMwMTE4LCAwLCAwLCAwLCArdGltZSkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRhdGUsICduYW5vc2Vjb25kc0RlbHRhJywge1xuICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgIHZhbHVlOiB0aW1lLm5hbm9zZWNvbmRzRGVsdGFcbiAgICAgICAgfSk7XG4gICAgICAgIGNhbGxiYWNrKGRhdGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2YWx1ZVBhcnNlO1xubW9kdWxlLmV4cG9ydHMgPSB2YWx1ZVBhcnNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQU4sSUFBWSxDQUF6QjtBQUNBLE1BQU1DLEdBQUcsR0FBRyxD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
package/package.json CHANGED
@@ -27,64 +27,66 @@
27
27
  "homepage": "https://github.com/tediousjs/tedious",
28
28
  "bugs": "https://github.com/tediousjs/tedious/issues",
29
29
  "license": "MIT",
30
- "version": "14.3.0",
30
+ "version": "14.6.0",
31
31
  "main": "./lib/tedious.js",
32
32
  "repository": {
33
33
  "type": "git",
34
34
  "url": "https://github.com/tediousjs/tedious.git"
35
35
  },
36
36
  "engines": {
37
- "node": ">= 12"
37
+ "node": ">=12.3.0"
38
38
  },
39
39
  "publishConfig": {
40
40
  "tag": "next"
41
41
  },
42
42
  "dependencies": {
43
- "@azure/identity": "^2.0.1",
44
- "@azure/keyvault-keys": "^4.3.0",
45
- "@js-joda/core": "^4.0.0",
43
+ "@azure/identity": "^2.0.4",
44
+ "@azure/keyvault-keys": "^4.4.0",
45
+ "@js-joda/core": "^5.2.0",
46
+ "@types/es-aggregate-error": "^1.0.2",
46
47
  "bl": "^5.0.0",
48
+ "es-aggregate-error": "^1.0.8",
47
49
  "iconv-lite": "^0.6.3",
48
- "jsbi": "^3.2.1",
50
+ "jsbi": "^4.3.0",
49
51
  "native-duplexpair": "^1.0.0",
50
- "node-abort-controller": "^3.0.0",
52
+ "node-abort-controller": "^3.0.1",
51
53
  "punycode": "^2.1.0",
52
54
  "sprintf-js": "^1.1.2"
53
55
  },
54
56
  "devDependencies": {
55
- "@babel/cli": "^7.15.4",
56
- "@babel/core": "^7.15.5",
57
- "@babel/node": "^7.15.4",
58
- "@babel/plugin-proposal-class-properties": "^7.14.5",
59
- "@babel/preset-env": "^7.15.4",
60
- "@babel/preset-typescript": "^7.15.0",
61
- "@babel/register": "^7.15.3",
62
- "@commitlint/cli": "^13.1.0",
63
- "@commitlint/config-conventional": "^13.1.0",
64
- "@commitlint/travis-cli": "^13.1.0",
65
- "@types/async": "^3.2.7",
66
- "@types/bl": "^5.0.1",
67
- "@types/chai": "^4.2.21",
57
+ "@babel/cli": "^7.17.10",
58
+ "@babel/core": "^7.17.10",
59
+ "@babel/node": "^7.17.10",
60
+ "@babel/plugin-proposal-class-properties": "^7.16.7",
61
+ "@babel/preset-env": "^7.17.10",
62
+ "@babel/preset-typescript": "^7.16.7",
63
+ "@babel/register": "^7.17.7",
64
+ "@commitlint/cli": "^16.2.4",
65
+ "@commitlint/config-conventional": "^16.2.4",
66
+ "@commitlint/travis-cli": "^16.2.4",
67
+ "@types/async": "^3.2.13",
68
+ "@types/bl": "^5.0.2",
69
+ "@types/chai": "^4.3.1",
68
70
  "@types/depd": "^1.1.32",
69
71
  "@types/lru-cache": "^5.1.0",
70
- "@types/mocha": "^9.0.0",
71
- "@types/node": "^12.20.25",
72
+ "@types/mocha": "^9.1.1",
73
+ "@types/node": "^12.20.50",
72
74
  "@types/sprintf-js": "^1.1.2",
73
- "@typescript-eslint/eslint-plugin": "^4.30.0",
74
- "@typescript-eslint/parser": "^4.30.0",
75
- "async": "^3.2.1",
76
- "babel-plugin-istanbul": "^6.0.0",
77
- "chai": "^4.3.4",
75
+ "@typescript-eslint/eslint-plugin": "^5.22.0",
76
+ "@typescript-eslint/parser": "^5.22.0",
77
+ "async": "^3.2.3",
78
+ "babel-plugin-istanbul": "^6.1.1",
79
+ "chai": "^4.3.6",
78
80
  "codecov": "^3.8.3",
79
81
  "eslint": "^7.32.0",
80
82
  "mitm": "^1.7.2",
81
- "mocha": "^9.1.1",
83
+ "mocha": "^9.2.2",
82
84
  "nyc": "^15.1.0",
83
85
  "rimraf": "^3.0.2",
84
86
  "semantic-release": "^17.4.7",
85
87
  "sinon": "^11.1.2",
86
- "typedoc": "^0.21.9",
87
- "typescript": "^4.4.2"
88
+ "typedoc": "^0.22.15",
89
+ "typescript": "^4.6.4"
88
90
  },
89
91
  "scripts": {
90
92
  "docs": "typedoc",